42 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			42 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
| { depot, lib, ... }:
 | |
| 
 | |
| let
 | |
|   inherit (builtins) foldl';
 | |
| 
 | |
|   systemFor = configs: (depot.third_party.nixos {
 | |
|     configuration = lib.fix(config:
 | |
|       foldl' lib.recursiveUpdate {} (map (c: c config) configs)
 | |
|     );
 | |
|   }).system;
 | |
| 
 | |
|   rebuilder = 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
 | |
|     nugget)
 | |
|       echo "Rebuilding NixOS for //ops/nixos/nugget"
 | |
|       system=$(nix-build -E '(import <depot> {}).ops.nixos.nuggetSystem' --no-out-link)
 | |
|       ;;
 | |
|     camden)
 | |
|       echo "Rebuilding NixOS for //ops/nixos/camden"
 | |
|       system=$(nix-build -E '(import <depot> {}).ops.nixos.camdenSystem' --no-out-link)
 | |
|       ;;
 | |
|     *)
 | |
|       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
 | |
|   '';
 | |
| in {
 | |
|   inherit rebuilder;
 | |
| 
 | |
|   nuggetSystem = systemFor [ depot.ops.nixos.nugget ];
 | |
|   camdenSystem = systemFor [ depot.ops.nixos.camden ];
 | |
| }
 |