Welcome to my NixOS configurations repository! This is where I manage the setup for my personal machines using Nix Flakes.
- Hostname:
zoidberg - Configuration File: ./hosts/zoidberg
- Machine: Dell XPS 17 9700
- Specs: 32GB RAM | 1TB SSD
- Hostname:
hermes - Configuration File: ./hosts/hermes
- Machine: HP Pavilion TG01-0004ng
- Specs: Ryzen 7 3700X | 16GB RAM | 1TB + 512GB SSD | RTX 2060, 8GB
- Hostname:
farnsworth - Configuration File: ./hosts/farnsworth
- Machine: Fujitsu Futro S720
Feel free to explore the configurations and see how everything is set up!
A dev shell is provided in flake.nix so you can run the repository checks with all required tools (nix, git, ripgrep, alejandra, statix) available.
Enter the shell:
# Default shell (same toolset as nixos-dots)
nix develop
# Explicit shell name
nix develop .#nixos-dotsRun the Nix workflow from the shell:
scripts/nix-dev-check.shOr run it without entering an interactive shell:
nix develop .#nixos-dots --command scripts/nix-dev-check.shflake.nix is intentionally thin. It declares inputs, enables flake-parts.flakeModules.modules, then imports every top-level module under modules and hosts through import-tree.
The important invariant is that every .nix file under those imported roots is a flake-parts module. Feature files publish lower-level modules as stable names such as flake.modules.nixos.vpn or flake.modules.homeManager."profile-desktop". Other files compose those features by name through config.flake.modules, not by importing their filesystem paths.
The dendritic layer is organized by concern:
modules/repodefines repository-level options, package sets, and developer shells.modules/configurationsassembles public outputs from host and home registrations.hosts/*publish host metadata,dots.nixosHosts.<name>registrations, and split host modules by concern.modules/nixospublish flattened NixOS feature modules.modules/hmpublish Home Manager user, profile, and integration modules.
If a raw helper file is ever needed under an imported tree, place it under a path segment beginning with _; import-tree ignores those paths by default.
gpg --keyserver keyserver.ubuntu.com --recv-keys 741eda0a1f942978d0e612ed938036d74671d8d5