My personal NixOS setup with flake, flake-parts and home-manager
README.md

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.