pkgs/nixfiles: move nixfiles-auto-install to pkg
This commit is contained in:
		
							
								
								
									
										9
									
								
								pkgs/nixfiles/nixfiles-auto-install.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								pkgs/nixfiles/nixfiles-auto-install.nix
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,9 @@ | ||||
| { pkgs, ... }: | ||||
|  | ||||
| pkgs.writeShellApplication { | ||||
|   name = "nixfiles-auto-install"; | ||||
|   text = builtins.readFile ./nixfiles-auto-install.sh; | ||||
|   runtimeInputs = with pkgs; [ | ||||
|     nixfiles-generate-config | ||||
|   ]; | ||||
| } | ||||
							
								
								
									
										65
									
								
								pkgs/nixfiles/nixfiles-auto-install.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										65
									
								
								pkgs/nixfiles/nixfiles-auto-install.sh
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,65 @@ | ||||
| #!/usr/bin/env bash | ||||
|  | ||||
| set -euo pipefail | ||||
|  | ||||
| hostname=host${RANDOM} | ||||
|  | ||||
| echo "[I] Deploying with hostname ${hostname}" | ||||
|  | ||||
| device="" | ||||
| for dev in "/dev/vda" "/dev/sda"; do | ||||
|   if [[ -b $dev ]]; then | ||||
|     device=$dev | ||||
|     break | ||||
|   fi | ||||
| done | ||||
|  | ||||
| while [[ $# -gt 0 ]]; do | ||||
|   case $1 in | ||||
|   --hostname) | ||||
|     hostname=$2 | ||||
|     shift | ||||
|     shift | ||||
|     ;; | ||||
|   *) | ||||
|     echo "unknown option: $1" | ||||
|     exit 1 | ||||
|     ;; | ||||
|   esac | ||||
| done | ||||
|  | ||||
| echo "[I] Formatting disk" | ||||
|  | ||||
| if [[ -z $device ]]; then | ||||
|   echo "[E] No device to install to" | ||||
|   exit 1 | ||||
| fi | ||||
|  | ||||
| echo "[I] Using ${device}" | ||||
|  | ||||
| parted --script $device mklabel gpt | ||||
| parted --script $device disk_set pmbr_boot on | ||||
|  | ||||
| parted --script $device mkpart boot 0% 512M | ||||
| parted --script $device set 1 bios_grub on | ||||
|  | ||||
| parted --script $device mkpart root 512M 100% | ||||
|  | ||||
| echo "[I] Creating file system" | ||||
|  | ||||
| mkfs.ext4 -F ${device}2 | ||||
|  | ||||
| echo "[I] Mount file system" | ||||
|  | ||||
| mount ${device}2 /mnt | ||||
|  | ||||
| echo "[I] Generate NixOS configuration" | ||||
|  | ||||
| nixfiles-generate-config --root /mnt --hostname "${hostname}" | ||||
|  | ||||
| sed -i "s~# boot\.loader\.grub\.device = \"/dev/sda\";~boot\.loader\.grub\.device = \"${device}\";~g" "/mnt/etc/nixos/hosts/${hostname}/configuration.nix" | ||||
|  | ||||
| echo "[I] Install NixOS" | ||||
|  | ||||
| nixos-install --flake "/mnt/etc/nixos#${hostname}" --root /mnt --no-root-password | ||||
|  | ||||
		Reference in New Issue
	
	Block a user