about summary refs log tree commit diff
path: root/users/glittershark/system/system/default.nix
diff options
context:
space:
mode:
authorGriffin Smith <grfn@gws.fyi>2020-07-03T00·02-0400
committerglittershark <grfn@gws.fyi>2020-07-03T00·07+0000
commit6cabc4289c13776aa61ebcb81f15db830c63ebf7 (patch)
tree0cf3e82098339a1cea0ea649f6182db601857165 /users/glittershark/system/system/default.nix
parent5c96703765ba68b10f0bba8200d801e1ed09fe5e (diff)
feat(gs:system): steal tazjin's rebuilder script r/1181
gonna use this instead of nixos-rebuild switch, in part to get away from
global nixpkgs pins.

Change-Id: I46e2951660465790adfdf75e6e3413b5c2dfd7c7
Reviewed-on: https://cl.tvl.fyi/c/depot/+/886
Reviewed-by: glittershark <grfn@gws.fyi>
Reviewed-by: BuildkiteCI
Tested-by: BuildkiteCI
Diffstat (limited to 'users/glittershark/system/system/default.nix')
-rw-r--r--users/glittershark/system/system/default.nix31
1 files changed, 30 insertions, 1 deletions
diff --git a/users/glittershark/system/system/default.nix b/users/glittershark/system/system/default.nix
index dc9e9a7596..75e93d533b 100644
--- a/users/glittershark/system/system/default.nix
+++ b/users/glittershark/system/system/default.nix
@@ -1,7 +1,36 @@
 { depot, ... }:
 
-{
+rec {
   chupacabra = (depot.third_party.nixos {
     configuration = import ./machines/chupacabra.nix;
   }).system;
+
+  rebuilder =
+    let
+      depotPath = "/home/grfn/code/depot";
+
+      caseFor = hostname: ''
+        ${hostname})
+          echo "Rebuilding NixOS for //users/glittershark/nixos/${hostname}"
+          system=$(nix-build -E '(import ${depotPath} {}).users.glittershark.system.system.${hostname}' --no-out-link)
+          ;;
+      '';
+    in depot.third_party.writeShellScriptBin "rebuilder" ''
+      set -ue
+      if [[ $EUID -ne 0 ]]; then
+        echo "Oh no! Only root is allowed to rebuild the system!" >&2
+        exit 1
+      fi
+
+      case $HOSTNAME in
+      ${caseFor "chupacabra"}
+      *)
+        echo "$HOSTNAME is not a known NixOS host!" >&2
+        exit 1
+        ;;
+      esac
+
+      nix-env -p /nix/var/nix/profiles/system --set $system
+      $system/bin/switch-to-configuration switch
+    '';
 }