A modular, flake-based NixOS configuration featuring declarative disk partitioning, hardened security, and gaming/productivity optimizations.
- Desktop Environment: KDE Plasma 6 (via Wayland) with SDDM.
- Bootloader: Limine Bootloader with SecureBoot support.
- Declarative Partitioning: Disko for automated GPT, LUKS2 encryption, Btrfs subvolumes, and swap setup.
- Kernel: CachyOS Kernel with architecture optimizations and performance tweaks (
vm.max_map_countandnofilelimits tuned for gaming). - Hardened Networking & DNS: AdGuard DNS-over-TLS only via Unbound, nftables, MAC address randomization.
- Hardened Firefox: Enterprise policy profile with telemetry completely disabled, uBlock Origin, Multi-Account Containers, and privacy enhancements.
- Virtualization: Podman, Docker, and QEMU/KVM (
libvirtd) with TPM emulation (swtpm) and virtiofs. - Package Management: Home Manager, Flakes, Flatpak integration (
nix-flatpak), and nix-ld for unpatched binaries.
-
Boot into the NixOS Live USB.
-
Verify target disk ID: Ensure the disk ID in hosts/desktop/disko.nix matches your target drive:
ls -l /dev/disk/by-id/
-
Partition, format, and mount with Disko:
sudo nix --extra-experimental-features "nix-command flakes" run github:nix-community/disko/latest -- --mode disko --flake github:fumoctl/FumoNix#fumonix-desktop(Or clone the repo locally and use
--flake .#fumonix-desktop) -
Install NixOS:
sudo nixos-install --flake github:fumoctl/FumoNix#fumonix-desktop
-
Reboot:
reboot
- Boot into the NixOS Live USB on the target machine.
- Generate hardware configuration (without storage mounts):
(The
nixos-generate-config --no-filesystems --show-hardware-config
--no-filesystemsflag avoids hardcoding mounts and UUIDs since Disko manages storage). - Create the new host configuration:
- Create
hosts/<hostname>/:hardware-configuration.nix(paste the output from step 2).disko.nix(specify the target disk ID and partition scheme).containers.nix(host-specific container and Podman configuration).default.nix(import../common/default.nix,./hardware-configuration.nix,./disko.nix, and./containers.nix).
- Add the host definition under
nixosConfigurations.<hostname>in flake.nix.
- Create
- Partition and Install:
sudo nix --extra-experimental-features "nix-command flakes" run github:nix-community/disko/latest -- --mode disko --flake .#<hostname> sudo nixos-install --flake .#<hostname> reboot
cd FumoNix
sudo nixos-rebuild switch --flake .#fumonix-<hostname>sudo nixos-rebuild boot --flake .#fumonix-<hostname>cd FumoNix
nix flake update
sudo nixos-rebuild switch --flake .#fumonix-<hostname>