Skip to content

Instantly share code, notes, and snippets.

@igor-ramazanov
Last active July 26, 2023 09:05
Show Gist options
  • Save igor-ramazanov/812573fb07382c349afe33bdd334a628 to your computer and use it in GitHub Desktop.
Save igor-ramazanov/812573fb07382c349afe33bdd334a628 to your computer and use it in GitHub Desktop.
Partition and format NVMe SSD drive for Amnesaic NixOS setup
#!/usr/bin/env bash
set -xeuo pipefail
DISK=/dev/nvme0n1
parted $DISK -- mklabel gpt
parted $DISK -- mkpart ESP fat32 1MB 512MB
parted $DISK -- set 1 esp on
parted $DISK -- mkpart primary linux-swap 512MB 32GB
parted $DISK -- mkpart primary 32GB 100%
cryptsetup --verify-passphrase -v luksFormat "$DISK"p3
cryptsetup open "$DISK"p3 enc
mkfs.fat -F 32 -n boot "$DISK"p1
mkswap -L swap "$DISK"p2
swapon "$DISK"p2
mkfs.btrfs /dev/mapper/enc
mount -t btrfs /dev/mapper/enc /mnt
btrfs subvolume create /mnt/root
btrfs subvolume create /mnt/home
btrfs subvolume create /mnt/nix
btrfs subvolume create /mnt/persist
btrfs subvolume create /mnt/log
btrfs subvolume snapshot -r /mnt/root /mnt/root-blank
btrfs subvolume snapshot -r /mnt/home /mnt/home-blank
umount /mnt
mount -o subvol=root,compress=zstd,noatime /dev/mapper/enc /mnt
mkdir /mnt/home
mount -o subvol=home,compress=zstd,noatime /dev/mapper/enc /mnt/home
mkdir /mnt/nix
mount -o subvol=nix,compress=zstd,noatime /dev/mapper/enc /mnt/nix
mkdir /mnt/persist
mount -o subvol=persist,compress=zstd,noatime /dev/mapper/enc /mnt/persist
mkdir -p /mnt/var/log
mount -o subvol=log,compress=zstd,noatime /dev/mapper/enc /mnt/var/log
mkdir /mnt/boot
mount "$DISK"p1 /mnt/boot
nixos-generate-config --root /mnt
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment