Not saying my practice is the best one, but here’s what I do:
EFI system partition is mounted on /boot
kernel is held here. In case of distros like NixOS etc that keep around old kernels, a small ESP might run out of space. I make mine at least 1GB.
the rest of the disk is one luks2 volume
inside the encrypted volume, there’s a BTRFS volume
there’s a subvolume for /home
and a subvolume for every distro I have (which is usually 1, but sometimes I tinker or switch)
Kernel command line parameters specify the btrfs subvol with the right distro to boot.
for NixOS, you need a bootloader (to choose the right kernel). Systemd-boot works well, and its configuration is easily readable. I never figured out how to work with GRUB2, its configuration is just too confusing.
or if you like Arch, dispense with bootloaders and just use EFISTUB. You can put kernel cmdline params into EFI bootloader options with efibootmgr.
Simple yet complete. Efficient, and extensible - for example, now that everything is a subvolume, I can easily snapshot it, then create backups with rsync off the snapshot, to avoid inconsistent state between backed-up files.
Not saying my practice is the best one, but here’s what I do:
efibootmgr
.Simple yet complete. Efficient, and extensible - for example, now that everything is a subvolume, I can easily snapshot it, then create backups with rsync off the snapshot, to avoid inconsistent state between backed-up files.