NixOS configuration #
Public NixOS configuration using flake-parts, NixOS modules, and Home Manager.
Host layout #
flake.nix delegates NixOS host construction to hosts/default.nix. Each host entry uses mkHost for common host facts such as system architecture, GUI capability, and DHCP interface:
kimura = mkHost {
name = "kimura";
system = "aarch64-linux";
hostDir = ./kimura;
mainUser = "rezmuh";
hasGui = true;
dhcpInterface = "enp2s0";
};
Each host directory is expected to provide:
hosts/<name>/default.nix
hosts/<name>/hardware-configuration.nix
hosts/<name>/default.nix is for host-specific tweaks. Shared system defaults live in modules/system/default.nix.
Host GUI capability #
mkHost sets the NixOS options:
my.host.mainUser = "rezmuh";
my.host.hasGui = true;
The main user module is imported from users/<mainUser>/default.nix, and root plus mainUser are configured as trusted Nix users.
GUI hosts install and enable Niri, greetd/regreet, graphics, PipeWire, desktop packages, and GUI Home Manager modules. Headless hosts keep those modules disabled.
Local secrets #
Private values are intentionally not committed. Keep API credentials in local shell files or another secret manager, not in Nix source files.