#!/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