#! /usr/bin/env nix-shell #! nix-shell -i bash -p bash grep curl systemd git git-lfs set -euo pipefail grep -q 'NAME=NixOS' /etc/*-release || { echo -e "\033[1m\e[31mYOU ARE NOT ON NIXOS, YOU SHOULDN'T BE RUNNING THIS SCRIPT\033[0m" exit 1 } mkdir -p ~/.config/nix echo "experimental-features = nix-command flakes pipe-operators" >>~/.config/nix/nix.conf lsblk echo "Which disk do you want to install to (eg /dev/sda)? " && read INSTALL_DISK systemd-ask-password "Enter your disk encryption password:" >/tmp/secret.key systemd-ask-password "Please confirm your password:" >/tmp/secret2.key [ $(cat /tmp/secret.key) = $(cat /tmp/secret2.key) ] || { echo "Passwords don't match, please try again" exit 1 } echo "What is your desired host (eg enceladus)? " && read NEW_HOSTNAME curl https://codeberg.org/da157/nix-config/raw/branch/main/hosts/nixos/$NEW_HOSTNAME/disko.nix \ -o /tmp/disko.nix nix --experimental-features "nix-command flakes" run github:nix-community/disko \ -- -m destroy,format,mount /tmp/disko.nix \ --arg disk \"$INSTALL_DISK\" || { echo "Disk formating failed, exiting" exit 1 } mkdir -p /mnt/etc/nixos git clone https://codeberg.org/da157/nix-config.git /mnt/etc/nixos cd /mnt/etc/nixos read -p "Do you want to replace $NEW_HOSTNAME's hardware.nix? (y/n) " a [ "$a" = "y" ] && { nixos-generate-config \ --root /mnt \ --show-hardware-config \ --no-filesystems \ >/mnt/etc/nixos/hosts/nixos/$NEW_HOSTNAME/hardware.nix git add ./hosts/nixos/$NEW_HOSTNAME/hardware.nix } nixos-install \ --root "/mnt" \ --flake "git+file:///mnt/etc/nixos#$NEW_HOSTNAME" mv ~/.config/sops/age/keys.txt /mnt/home/da157/.config/sops/age/keys.txt