2.0 KiB
2.0 KiB
hosts/ - NixOS Host Configurations
Host-specific NixOS system configurations. Each m3-* directory is a complete host.
Structure
hosts/
├── common/ # Shared by ALL hosts
│ ├── extraServices/ # Toggle-able services (ollama, podman, flatpak)
│ ├── users/ # User definitions
│ ├── ports.nix # Central port registry
│ └── default.nix # Overlays, nix settings, home-manager integration
└── m3-*/ # Per-host configurations
├── default.nix # Entry point (imports common + enables extraServices)
├── configuration.nix # Core system (boot, networking, stateVersion)
├── hardware-configuration.nix
├── programs.nix # Host-specific packages
├── secrets.nix # Agenix secret declarations
└── services/ # Service configs
└── containers/ # OCI container definitions (m3-atlas only has many)
Adding a New Host
- Create
hosts/m3-<name>/with required files - Add to
flake.nixnixosConfigurations - Create matching
home/m3tam3re/m3-<name>.nix
Host Quick Reference
| Host | extraServices | Has disko | Key services/ files |
|---|---|---|---|
| m3-atlas | podman | Yes | traefik, postgres, gitea, containers/* |
| m3-helios | - | Yes | adguard, traefik, containers/homarr |
| m3-ares | podman | No | wireguard, tailscale, sound |
| m3-kratos | podman, ollama | No | wireguard, tailscale, sound |
| m3-aether | - | Yes | cloud-init (minimal) |
extraServices Pattern
Enable in host's default.nix:
extraServices = {
podman.enable = true;
ollama.enable = true;
flatpak.enable = false;
virtualisation.enable = false;
};
Port Allocation
ALWAYS check common/ports.nix before adding new services. Register new ports there.
Secrets Declaration
Each host's secrets.nix declares only secrets it needs:
age.secrets.service-name = {
file = ../../secrets/service-name.age;
owner = "optional-user";
};