diff options
author | Griffin Smith <grfn@gws.fyi> | 2020-07-03T00·02-0400 |
---|---|---|
committer | glittershark <grfn@gws.fyi> | 2020-07-03T00·07+0000 |
commit | 6cabc4289c13776aa61ebcb81f15db830c63ebf7 (patch) | |
tree | 0cf3e82098339a1cea0ea649f6182db601857165 | |
parent | 5c96703765ba68b10f0bba8200d801e1ed09fe5e (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
-rw-r--r-- | users/glittershark/system/system/default.nix | 31 | ||||
-rw-r--r-- | users/glittershark/system/system/modules/common.nix | 7 |
2 files changed, 37 insertions, 1 deletions
diff --git a/users/glittershark/system/system/default.nix b/users/glittershark/system/system/default.nix index dc9e9a75961d..75e93d533bdd 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 + ''; } diff --git a/users/glittershark/system/system/modules/common.nix b/users/glittershark/system/system/modules/common.nix index c7f5055a8215..1d578e36f656 100644 --- a/users/glittershark/system/system/modules/common.nix +++ b/users/glittershark/system/system/modules/common.nix @@ -1,5 +1,11 @@ { config, lib, pkgs, ... }: +let + + depot = import ../../../../.. {}; + +in + { imports = [ @@ -35,6 +41,7 @@ libnotify file lm_sensors + depot.users.glittershark.system.system.rebuilder ]; # Some programs need SUID wrappers, can be configured further or are |