#!/usr/bin/env sh sudo -i loadkeys de lsblk # Disk selection DEFAULT_DISK="/dev/sda" read -p "Disk to install to [${DEFAULT_DISK}]: " DISK DISK="${DISK:-$DEFAULT_DISK}" if [ ! -b "${DISK}" ]; then echo "Error: ${DISK} is not a valid block device." exit 1 fi echo "Using disk: ${DISK}" # Partitioning read -p "Create partitions table? DELETES ALL DATA! (j/N): " ANSWER if [ "${ANSWER}" = "j" ] || [ "${ANSWER}" = "J" ]; then # GPT-partition table parted "${DISK}" -- mklabel gpt # EFI-partition (512 MB) parted "${DISK}" -- mkpart esp fat32 1MB 512MB parted "${DISK}" -- set 1 esp on # Swap-partition (8 GB) parted "${DISK}" -- mkpart swap linux-swap 512MB 8626MB # Root-partition (ca. 45 GB) parted "${DISK}" -- mkpart root ext4 8636MB 40000MB # Home-partition (Rest) parted "${DISK}" -- mkpart home ext4 40000MB 100% fi # Check results parted "${DISK}" -- print mkfs.fat -F 32 -n boot ${DISK}1 mkswap -L swap ${DISK}2 mkfs.ext4 -L nixos ${DISK}3 read -p "Format Home-partition? Deletes all userdata! (j/N): " ANSWER if [ "${ANSWER}" = "j" ] || [ "${ANSWER}" = "J" ]; then # Format home-partition mkfs.ext4 -L home ${DISK}4 fi # Mount partitions mount /dev/disk/by-label/nixos /mnt mkdir /mnt/boot mount -o umask=077 /dev/disk/by-label/boot /mnt/boot mkdir -p /mnt/home mount /dev/disk/by-label/home /mnt/home # Activate swap swapon /dev/disk/by-label/swap nixos-generate-config --root /mnt nixos-install # If root password wasn't set because the installation needed to be restarted. read -p "Set Root-password with nixos-enter? (j/N): " answer if [ "$answer" = "j" ] || [ "$answer" = "J" ]; then nixos-enter --root '/mnt' passwd fi