diff options
Diffstat (limited to 'users/glittershark')
-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 |