zaphyra's git: nixfiles

zaphyra's nixfiles

commit 5367ca5949ef6ab161aae14e67fa59384a4aaffc
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(-)
M
default.nix
|
61
+++++++++++++++++++++++++------------------------------------
A
packages/deploySystem/package.nix
|
33
+++++++++++++++++++++++++++++++++
D
packages/deployrsActivator/package.nix
|
53
-----------------------------------------------------
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!'"