System registry
All systems are registered insystems/default.nix:
Host defaults
Each host entry accepts these options:System architecture. Use
"aarch64" for ARM-based systems.System class determining which modules are loaded. Options:
"nixos", "darwin", "wsl", "iso"Additional modules to import beyond the class defaults.
Special arguments passed to all modules for this host.
Current systems
The configuration currently manages these systems:amaterasu - Desktop workstation
amaterasu - Desktop workstation
Type: Desktop (NixOS)
Architecture: x86_64
Main user: isabelA powerful desktop dual booting Windows 11. Configured with:
Architecture: x86_64
Main user: isabelA powerful desktop dual booting Windows 11. Configured with:
- Intel CPU and NVIDIA GPU
- Dual monitor setup (144Hz + standard)
- Secure boot with TPM
- Full graphical workstation environment
athena - Legacy laptop
athena - Legacy laptop
Type: Hybrid (NixOS)
Architecture: x86_64
Main user: isabelThe oldest laptop in the fleet. Still supported by the flake but barely in use.
Architecture: x86_64
Main user: isabelThe oldest laptop in the fleet. Still supported by the flake but barely in use.
aphrodite - Cloud server
aphrodite - Cloud server
Type: Server (NixOS)
Architecture: x86_64
Main user: isabelHosts most tgirl.cloud services.
Architecture: x86_64
Main user: isabelHosts most tgirl.cloud services.
minerva - Personal server
minerva - Personal server
Type: Server (NixOS)
Architecture: x86_64
Main user: isabelThe original server, hosting most personal services.
Architecture: x86_64
Main user: isabelThe original server, hosting most personal services.
skadi - Oracle server
skadi - Oracle server
Type: Server (NixOS)
Architecture: aarch64
Main user: isabelOracle free tier server. Used for PDS and aarch64 builds.
Architecture: aarch64
Main user: isabelOracle free tier server. Used for PDS and aarch64 builds.
tatsumaki - MacBook Air
tatsumaki - MacBook Air
Type: Laptop (macOS)
Architecture: aarch64
Main user: isabelUniversity-provided MacBook Air, primarily used at university.
Architecture: aarch64
Main user: isabelUniversity-provided MacBook Air, primarily used at university.
valkyrie - WSL instance
valkyrie - WSL instance
Type: WSL2 (NixOS)
Architecture: x86_64
Main user: isabelWSL2 instance installed on amaterasu for Windows integration.
Architecture: x86_64
Main user: isabelWSL2 instance installed on amaterasu for Windows integration.
lilith - Installation ISO
lilith - Installation ISO
Type: ISO image (NixOS)
Architecture: x86_64
Main user: n/aBootable ISO image for installing NixOS on new systems.
Architecture: x86_64
Main user: n/aBootable ISO image for installing NixOS on new systems.
Host configuration
Each host has a directory insystems/ containing host-specific configuration:
Example host configuration
Here’s the configuration foramaterasu:
Configuration structure
Host configurations use thegarden.* namespace for all custom options:
Profiles
Profiles enable high-level feature sets:Profiles are mutually exclusive in some cases. For example,
graphical and headless shouldn’t both be enabled.Device configuration
Hardware-specific settings:System configuration
System-level settings:Hardware configuration
Hardware-specific configuration is typically in a separatehardware.nix file:
User configuration
Host-specific user settings:Adding a new system
To add a new system to the configuration:System classes
Different system classes have different capabilities:nixos
Full NixOS systemsComplete NixOS configuration with all modules available. Used for desktops, laptops, and servers.
darwin
macOS systemsmacOS configuration using nix-darwin. Supports Homebrew integration and macOS-specific settings.
wsl
WSL2 instancesNixOS on WSL2. Treated as a nixos subclass with WSL-specific modules for Windows integration.
iso
Installation imagesBootable ISO images for installing NixOS. Includes installer tools and minimal configuration.
Class-specific modules
TheperClass function in systems/default.nix determines which modules are loaded:
class = "nixos"→ loadsmodules/nixos/default.nixclass = "darwin"→ loadsmodules/darwin/default.nixclass = "wsl"→ loadsmodules/wsl/default.nix(but inherits from nixos)class = "iso"→ loadsmodules/iso/default.nix
Multi-architecture support
The framework supports both x86_64 and aarch64:- Which packages are available
- How the system is built
- Cross-compilation requirements
Next steps
Module system
Learn about the module system and how to extend it
Architecture overview
Review the overall architecture