diff --git a/packages/default.nix b/packages/default.nix index d839330..5fd2e37 100644 --- a/packages/default.nix +++ b/packages/default.nix @@ -2,6 +2,7 @@ inputs, lib, config, + self, ... }: { options.fleet.overlays = let @@ -23,12 +24,17 @@ statix.overlays.default nil.overlays.default alejandra.overlays.default + (final: _: { + inherit (disko.packages.${final.system}) disko; + inherit (self.packages.${final.system}) deploy; + }) ]; }; config.perSystem = { system, lib, + pkgs, ... }: { _module.args.pkgs = @@ -36,5 +42,15 @@ (legacyPackages: legacyPackages.extend) inputs.nixpkgsUnstable.legacyPackages.${system} config.fleet.overlays; + + packages = + lib.mapAttrs' + (name: value: { + inherit name; + value = pkgs.callPackage "${self}/packages/${name}" {}; + }) + (lib.filterAttrs + (_: type: type == "directory") + (builtins.readDir "${self}/packages")); }; } diff --git a/packages/deploy/default.nix b/packages/deploy/default.nix new file mode 100644 index 0000000..e7cfd57 --- /dev/null +++ b/packages/deploy/default.nix @@ -0,0 +1,10 @@ +{ + nixos-rebuild, + writeShellApplication, + ... +}: +writeShellApplication { + name = "deploy"; + text = builtins.readFile ./deploy.sh; + runtimeInputs = [nixos-rebuild]; +} diff --git a/packages/deploy/deploy.sh b/packages/deploy/deploy.sh new file mode 100644 index 0000000..a1ded14 --- /dev/null +++ b/packages/deploy/deploy.sh @@ -0,0 +1,6 @@ +host=${1-mothership} + +nixos-rebuild switch \ + --flake ".#${host}" \ + --target-host "root@${host}.fleet" \ + "${@:2}" diff --git a/shell/default.nix b/shell/default.nix index 8363f3c..0054176 100644 --- a/shell/default.nix +++ b/shell/default.nix @@ -13,6 +13,8 @@ deadnix statix alejandra + disko + deploy ]; shellHook = '' export RULES="$(git rev-parse --show-toplevel)/secrets/default.nix";