pkgs/nixfiles: expose nixfiles-generate-config as pkg
This commit is contained in:
		
							
								
								
									
										10
									
								
								pkgs/nixfiles/nixfiles-generate-config.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								pkgs/nixfiles/nixfiles-generate-config.nix
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,10 @@ | ||||
| { pkgs, ... }: | ||||
|  | ||||
| pkgs.writeShellApplication { | ||||
|   name = "nixfiles-generate-config"; | ||||
|   text = builtins.readFile ./nixfiles-generate-config.sh; | ||||
|   runtimeInputs = with pkgs; [ | ||||
|     git | ||||
|   ]; | ||||
|   checkPhase = ""; | ||||
| } | ||||
							
								
								
									
										46
									
								
								pkgs/nixfiles/nixfiles-generate-config.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										46
									
								
								pkgs/nixfiles/nixfiles-generate-config.sh
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,46 @@ | ||||
| #!/usr/bin/env bash | ||||
| set -euo pipefail | ||||
|  | ||||
| hostname=$(hostname --short) | ||||
| root="" | ||||
| ngcroot="" | ||||
|  | ||||
| while [[ $# -gt 0 ]]; do | ||||
| case $1 in | ||||
| --root) | ||||
|   root=$2 | ||||
|   ngcroot="--root ${root}" | ||||
|   shift | ||||
|   shift | ||||
|   ;; | ||||
| --hostname) | ||||
|   hostname=$2 | ||||
|   shift | ||||
|   shift | ||||
|   ;; | ||||
| *) | ||||
|   echo "unknown option: $1" | ||||
|   exit 1 | ||||
|   ;; | ||||
| esac | ||||
| done | ||||
|  | ||||
| mkdir -p "${root}/etc/nixos" | ||||
|  | ||||
| if [[ ! -d "${root}/etc/nixos/.git" ]]; then | ||||
| git clone https://git.clerie.de/clerie/nixfiles.git "${root}/etc/nixos" | ||||
| git -C "${root}/etc/nixos" remote set-url origin gitea@git.clerie.de:clerie/nixfiles.git | ||||
| fi | ||||
|  | ||||
| mkdir -p "${root}/etc/nixos/hosts/${hostname}" | ||||
|  | ||||
| nixos-generate-config ${ngcroot} --dir "${root}/etc/nixos/hosts/${hostname}" | ||||
|  | ||||
| # make sure host is added to flake.nix | ||||
| if ! grep -q "${hostname} = generateNixosSystem \"${hostname}\";" "${root}/etc/nixos/flake.nix"; then | ||||
| sed -i "s/\(\s*\)_iso = generateNixosSystem \"_iso\";/\1${hostname} = generateNixosSystem \"${hostname}\";\n&/g" "${root}/etc/nixos/flake.nix" | ||||
| fi | ||||
|  | ||||
| sed -i "s/\%HOSTNAME\%/${hostname}/g" "${root}/etc/nixos/hosts/${hostname}/configuration.nix" | ||||
|  | ||||
| git -C "${root}/etc/nixos" add "${root}/etc/nixos/hosts/${hostname}" | ||||
		Reference in New Issue
	
	Block a user