I don’t have very many packages installed. The major ones are: cryptsetup (luks), efibootmgr, fish (my favourite shell), gptfdisk, grub-efi, htop, iproute2 (busybox ip is limited), lsblk (for block UUIDs), lvm2, nfs-utils, smartmontools, vim, zfs, util-linux (again, to replace busybox tools) .. a few others.
I tried out ZFS a few years ago and it’s been very stable. I like how it does snapshots which makes backups way easier (if you move a folder, rsync will want to delete and recreate all the files. With zfs snapshots, it will send a diff of only the metadata). Since zfs-0.8 now supports native encryption, I no longer need zfs+luks. The boot drive is still ext4+luks. I hope to have a guide on the install soon.
For drives, I just have two primary (storage-main, 18TB, storage-alt 12TB) and their backups (14TB and 10TB). I was super minimalist for a while and wanted to carry everything on just one hard drive. So I’ll usually spend more for large drives and do full backups, rather than try to do RAID + some other backup solution.
Right now it’s just NFS4. I had samba running on my old one for the Windows box and I’ll probably set that up again. I’ve been meaning to implement NFS4+krb encryption; hope to get a guide up on that soon too.
When you use ZFS, why have a separate OS disk? You can just boot from your ZFS RAID. I don’t know how well Ubuntu supports this, but on FreeBSD it’s a breeze.
I’m not using RAID. I just have two main storage drives (an 18TB and a 12TB) and two backups (a 14TB and a 10TB respectively). I’m using Alpine Linux. I haven’t tried to boot to encrypted ZFS on Linux yet, but that might be a good project for the future. For right now, I just find it easier to keep my OS drive and storage drives separate. There’s very little on the OS drive. With Alpine Linux, I’m using 1.3G of the 128GB M.2 SSD in there.