64 lines
1.9 KiB
Bash
64 lines
1.9 KiB
Bash
#!/bin/sh
|
|
|
|
set -xe
|
|
|
|
settle() {
|
|
udevadm trigger --subsystem-match=block
|
|
udevadm settle
|
|
}
|
|
|
|
lsblk
|
|
echo 'Enter the name of the device to WIPE and install (something like "sda"):'
|
|
read DRIVE_ID
|
|
|
|
echo 'Enter a passphrase to encrypt the disk:'
|
|
read -s DRIVE_PASSPHRASE
|
|
|
|
echo "Creating partition table..."
|
|
parted -s "/dev/${DRIVE_ID}" -- mklabel gpt
|
|
|
|
echo "Creating EFI system partition..."
|
|
parted -s "/dev/${DRIVE_ID}" -- mkpart ESP 1MiB 1GiB
|
|
parted -s "/dev/${DRIVE_ID}" -- set 1 boot on
|
|
mkfs.fat -F32 "/dev/${DRIVE_ID}1" -n NIX_BOOT
|
|
|
|
echo "Creating encrypted root partition..."
|
|
parted -s "/dev/${DRIVE_ID}" -- mkpart luks 1GiB 100%
|
|
echo "$DRIVE_PASSPHRASE" | cryptsetup --batch-mode luksFormat --label CRYPT_ROOT "/dev/${DRIVE_ID}2"
|
|
settle
|
|
echo "$DRIVE_PASSPHRASE" | cryptsetup luksOpen /dev/disk/by-label/CRYPT_ROOT "crypt_root"
|
|
|
|
echo "Creating btrfs partition..."
|
|
mkfs.btrfs --quiet --label NIX_ROOT /dev/mapper/"crypt_root"
|
|
MNTPOINT=$(mktemp -d)
|
|
mount /dev/mapper/"crypt_root" "$MNTPOINT"
|
|
|
|
echo "Creating subvolumes..."
|
|
btrfs subvolume create "$MNTPOINT"/@nixos
|
|
btrfs subvolume create "$MNTPOINT"/@home
|
|
btrfs subvolume create "$MNTPOINT"/@swap
|
|
|
|
echo "Closing btrfs partition..."
|
|
umount -Rl "$MNTPOINT"
|
|
rm -rf "$MNTPOINT"
|
|
|
|
echo "Mounting root btrfs submodule to '$MNTPOINT' ..."
|
|
MNTPOINT=$(mktemp -d)
|
|
mount /dev/disk/by-label/NIX_ROOT "$MNTPOINT" -o subvol=@nixos,noatime,compress=zstd
|
|
|
|
echo "Creating and mounting EFI system partition mountpoint..."
|
|
mkdir -p "$MNTPOINT/boot"
|
|
mount /dev/disk/by-label/NIX_BOOT "$MNTPOINT/boot"
|
|
|
|
echo "Creating home partition mountpoint..."
|
|
mkdir -p "$MNTPOINT/home"
|
|
mount /dev/disk/by-label/NIX_ROOT "$MNTPOINT/home" -o subvol=@home,noatime,compress=zstd
|
|
|
|
echo "Swapfile"
|
|
mkdir -p "$MNTPOINT/swap"
|
|
mount /dev/disk/by-label/NIX_ROOT "$MNTPOINT/swap" -o subvol=@swap,noatime
|
|
|
|
# echo "Installing system..."
|
|
nixos-generate-config --root "$MNTPOINT"
|
|
# nixos-install --root "$MNTPOINT"
|