#!/bin/bash # Variables ESP=/dev/nvme0n1p1 ROOT=/dev/nvme0n1p2 SWAPFILESIZE=2G # Optimization: Added discard=async for NVMe, removed redundant nodiratime MOUNT_OPTIONS="noatime,compress=zstd,space_cache=v2,discard=async,ssd" # 1. Format the partition mkfs.btrfs -L ROOT $ROOT -f # 2. Create Flat Subvolume Layout mount $ROOT /mnt btrfs sub create /mnt/@ btrfs sub create /mnt/@home btrfs sub create /mnt/@pkg btrfs sub create /mnt/@snapshots btrfs sub create /mnt/@vm btrfs sub create /mnt/@log btrfs sub create /mnt/@swap umount /mnt # 3. Mount Root Subvolume mount -o $MOUNT_OPTIONS,subvol=@ $ROOT /mnt # 4. Create Mount Points mkdir -p /mnt/{boot,home,var/cache/pacman/pkg,var/log,var/lib/libvirt,.snapshots,btrfs} # 5. Mount Other Subvolumes mount -o $MOUNT_OPTIONS,subvol=@home $ROOT /mnt/home mount -o $MOUNT_OPTIONS,subvol=@pkg $ROOT /mnt/var/cache/pacman/pkg mount -o $MOUNT_OPTIONS,subvol=@snapshots $ROOT /mnt/.snapshots mount -o $MOUNT_OPTIONS,subvol=@log $ROOT /mnt/var/log mount -o $MOUNT_OPTIONS,subvolid=5 $ROOT /mnt/btrfs # 6. Specialized Subvolume Mounting (NoCOW for VMs) mount -o $MOUNT_OPTIONS,subvol=@vm $ROOT /mnt/var/lib/libvirt chattr +C /mnt/var/lib/libvirt # Disable Copy-on-Write for VM performance # 7. Mount ESP mount $ESP /mnt/boot # 8. Create Swapfile on Btrfs # btrfs-progs automatically handles NoCOW and compression exclusion for swapfiles btrfs filesystem mkswapfile --size $SWAPFILESIZE --uuid clear /mnt/btrfs/@swap/swapfile swapon /mnt/btrfs/@swap/swapfile pacstrap -K /mnt base linux linux-firmware intel-ucode sof-firmware networkmanager man-db man-pages neovim grub efibootmgr zsh sudo