commit 5367ca5949ef6ab161aae14e67fa59384a4aaffc
parent 2d7eabdb564f0c4476123d779e2487bfe51b08f7
Author: Katja Ramona Sophie Kwast (zaphyra) <git@zaphyra.eu>
Date: Wed, 17 Jun 2026 00:13:23 +0200
parent 2d7eabdb564f0c4476123d779e2487bfe51b08f7
Author: Katja Ramona Sophie Kwast (zaphyra) <git@zaphyra.eu>
Date: Wed, 17 Jun 2026 00:13:23 +0200
replace deploy-rs with cursed stuff
3 files changed, 58 insertions(+), 89 deletions(-)
diff --git a/default.nix b/default.nix @@ -14,57 +14,46 @@ let in { + self = import ./.; + outPath = ./.; + inherit npins + lib overlays nixosConfigurations ; - nixosModules = import ./nixosModules { inherit lib; }; - formatter = lib.zpha.forAllSystems { inherit (npins) nixpkgs; body = pkgs: pkgs.nixfmt; }; + nixosModules = import ./nixosModules { inherit lib; }; + packages = lib.zpha.forAllSystems { overlays = overlays.default; body = pkgs: - lib.mergeAttrsList [ - (import ./packages pkgs) - (lib.flip lib.mapAttrs' nixosConfigurations ( - machineName: nixosConfiguration: - lib.nameValuePair "setupDisk-${machineName}" ( - pkgs.zpha.setupDisk.override { - systemConfig = nixosConfiguration.config; - } - ) - )) - ]; - }; - - deploy = { - activationTimeout = 600; - confirmTimeout = 240; - nodes = lib.flip builtins.mapAttrs nixosConfigurations ( - _: nixosConfiguration: - let - inherit (nixosConfiguration) config pkgs; - in - { - hostname = config.networking.fqdn; - sshUser = "root"; - sshOpts = [ - "-p" - (toString (lib.head config.services.openssh.ports)) - ]; - profiles.system = { - user = "root"; - path = pkgs.zpha.deployrsActivator.override { systemConfig = config; }; - }; - } - ); + (import ./packages pkgs) + // (builtins.listToAttrs ( + lib.flatten [ + (lib.flip lib.mapAttrsToList nixosConfigurations ( + machineName: nixosConfiguration: [ + (lib.nameValuePair "deploySystem-${machineName}" ( + pkgs.zpha.deploySystem.override { + systemConfig = nixosConfiguration.config; + } + )) + (lib.nameValuePair "setupDisk-${machineName}" ( + pkgs.zpha.setupDisk.override { + systemConfig = nixosConfiguration.config; + } + )) + ] + )) + ] + )); }; }
diff --git a/packages/deploySystem/package.nix b/packages/deploySystem/package.nix @@ -0,0 +1,33 @@ +{ + systemConfig ? null, + lib, + writeShellScriptBin, + coreutils, + openssh, + nix, +}: + +if systemConfig != null then + writeShellScriptBin "deploySystem-${systemConfig.networking.hostName}" '' + set -euo pipefail + + export PATH=${ + lib.makeBinPath [ + coreutils + openssh + nix + ] + } + + export NIX_SSHOPTS="''${NIX_SSHOPTS:=""} -p${toString (lib.head systemConfig.services.openssh.ports)}" + + if [[ `uname -n` != '${systemConfig.networking.hostName}' ]]; + then + nix copy --no-check-sigs --to 'ssh-ng://root@${systemConfig.networking.fqdn}?compress=1' ${systemConfig.system.build.toplevel} + fi + + ssh -t $NIX_SSHOPTS root@${systemConfig.networking.fqdn} "nix-env -p /nix/var/nix/profiles/system -i ${systemConfig.system.build.toplevel}" + ssh -t $NIX_SSHOPTS root@${systemConfig.networking.fqdn} "/nix/var/nix/profiles/system/bin/switch-to-configuration ''${1:-"switch"}" + '' +else + writeShellScriptBin "deploySystem-none" "echo 'No system config given!'"
diff --git a/packages/deployrsActivator/package.nix b/packages/deployrsActivator/package.nix @@ -1,53 +0,0 @@ -{ - systemConfig ? null, - lib, - buildEnv, - writeTextFile, - writeScriptBin, - runtimeShell, - deploy-rs, -}: - -if systemConfig != null then - buildEnv { - name = "activatable-${systemConfig.system.build.toplevel.name}"; - paths = [ - systemConfig.system.build.toplevel - (writeTextFile { - name = "${systemConfig.system.build.toplevel.name}-activate-path"; - text = '' - #!${runtimeShell} - set -euo pipefail - - if [[ "''${DRY_ACTIVATE:-}" == "1" ]] - then - $PROFILE/bin/switch-to-configuration dry-activate - elif [[ "''${BOOT:-}" == "1" ]] - then - $PROFILE/bin/switch-to-configuration boot - else - # work around https://github.com/NixOS/nixpkgs/issues/73404 - cd /tmp - - $PROFILE/bin/switch-to-configuration switch - - # https://github.com/serokell/deploy-rs/issues/31 - ${lib.optionalString systemConfig.boot.loader.systemd-boot.enable "sed -i '/^default /d' ${systemConfig.boot.loader.efi.efiSysMountPoint}/loader/loader.conf"} - fi - ''; - executable = true; - destination = "/deploy-rs-activate"; - }) - (writeTextFile { - name = "${systemConfig.system.build.toplevel.name}-activate-rs"; - destination = "/activate-rs"; - executable = true; - text = '' - #!${runtimeShell} - exec ${deploy-rs}/bin/activate "$@" - ''; - }) - ]; - } -else - writeScriptBin "activate" "echo 'No system config given!'"