universe/hosts/Infini-DESKTOP
Infinidoge f1b6619bd7 tweak(Infini-DESKTOP): enable empty minecraft-servers service
Keeping it enabled means that the module will keep the group and user
reserved, reducing the issues with needing to relog to access files due
to the group having been just created.
2023-03-30 12:29:48 -04:00
..
bare_install.bash feat(Infini-DESKTOP): migrate to opt-in state 2023-03-30 12:29:47 -04:00
default.nix tweak(Infini-DESKTOP): enable empty minecraft-servers service 2023-03-30 12:29:48 -04:00
hardware-configuration.nix feat(info): add info.model, fill in for hosts 2023-03-30 12:29:48 -04:00
install.bash refactor(setup): improve handling of partition prefix 2023-03-30 12:29:48 -04:00
mount.bash refactor(setup): improve handling of partition prefix 2023-03-30 12:29:48 -04:00
prep.bash typo(setup): mmount -> mount 2023-03-30 12:29:48 -04:00
readme.org typo(setup): mmount -> mount 2023-03-30 12:29:48 -04:00

Infini-DESKTOP Setup

Partition Scheme

Position Label FS Type Size Type
1 boot vfat / fat32 511M EFI System Partition
2 Infini-DESKTOP btrfs Rest Root Partition
3 swap swap 48G Swap Space

Configuration

Setup for my main desktop computer, using an Nvidia GPU and the desktop form factor from hardware/form.

Setup Scripts

<<boilerplate>>

<<mount_check>>

<<partitioning>>

<<filesystems>>

<<subvolumes>>
<<mount>>

<<installing>>

<<install_extra>>

<<cleanup>>
<<boilerplate>>

<<mount_check>>

<<mounting>>
<<installing>>

Script Boilerplate

DISK=$1
PART=$DISK$2

sudo mkdir -p /mnt
if mountpoint -q -- "/mnt"; then
    echo "ERROR: /mnt is a mounted filesystem, aborting"
    exit 1
fi

Partitioning

echo "LOG: Partitioning $DISK"
sudo parted $DISK -- mktable gpt
sudo parted $DISK -s -- mkpart ESP fat32 1MiB 512MiB
sudo parted $DISK -s -- mkpart primary btrfs 512MiB -48GiB
sudo parted $DISK -s -- mkpart primary linux-swap -48GiB 100%
sudo parted $DISK -s -- set 1 esp on

Making Filesystems

echo "LOG: Making filesystems"
echo "- Making fat32 filesystem on ${PART}1"
sudo mkfs.fat -F 32 -n boot "${PART}1"
echo "- Making btrfs filesystem on ${PART}2"
sudo mkfs.btrfs "${PART}2" -L "Infini-DESKTOP" -f
echo "- Making swap space on ${PART}3"
sudo mkswap -L swap "${PART}3"

Making Subvolumes

echo "LOG: Making subvolumes on ${PART}2"
sudo mount "${PART}2" /mnt
sudo btrfs subvolume create /mnt/root
sudo btrfs subvolume create /mnt/root/home
sudo mkdir -p /mnt/root/etc
sudo btrfs subvolume create /mnt/root/etc/nixos
sudo btrfs subvolume create /mnt/boot
sudo btrfs subvolume create /mnt/nix
sudo btrfs subvolume create /mnt/nix/store
sudo umount /mnt

Mounting Volumes

echo "LOG: Mounting tmpfs"
sudo mount -t tmpfs root /mnt

echo "LOG: - Mounting persistent directories"
sudo mkdir -p /mnt/persist /mnt/nix /mnt/boot
sudo mount -o subvol=root,autodefrag,noatime "${PART}2" /mnt/persist
sudo mount -o subvol=nix,autodefrag,noatime "${PART}2" /mnt/nix
sudo mount -o subvol=boot,autodefrag,noatime "${PART}2" /mnt/boot

echo "LOG: - - Mounting persistent subdirectories"
sudo mkdir -p /mnt/home
sudo mount --bind /mnt/persist/home /mnt/home

echo "LOG: - Mounting EFI System Partition"
sudo mkdir -p /mnt/boot/efi
sudo mount "${PART}1" /mnt/boot/efi

Installing

echo "LOG: Installing NixOS"
sudo nixos-install --flake /etc/nixos#Infini-DESKTOP --no-root-password

Extra (Install)

echo "LOG: Cloning configuration"
sudo chown -R infinidoge /mnt/persist/etc/nixos
git clone --no-hardlinks --progress https://gitlab.com/infinidoge/universe.git /mnt/persist/etc/nixos

echo "LOG: Installing Doom Emacs"
sudo mkdir -p /mnt/persist/home/infinidoge/.config/emacs
git clone --no-hardlinks --progress --depth 1 https://github.com/hlissner/doom-emacs /mnt/persist/home/infinidoge/.config/emacs
HOME=/mnt/persist/home/infinidoge /mnt/persist/home/infinidoge/.config/emacs/bin/doom -y install --no-config

Cleanup

echo "LOG: Unmounting all"
sudo umount -R /mnt