Personal NixOS and Home Manager configurations for multiple systems, managed with Nix flakes.
This repository contains declarative configurations for my development environments and systems:
- Khazad-dum: Framework 16" laptop running Arch Linux with Home Manager, featuring Hyprland and GNOME
- Valinor: NixOS homelab server with full system configuration
- Flake-based configuration for reproducibility
- Modular design with reusable components
- Home Manager integration for user environment management
- Secrets management with sops-nix
- Custom Neovim configuration via nixvim
- Hyprland window manager setup with hyprlock
- Terminal multiplexer (Zellij) and emulator (Alacritty) configurations
- Shell environment with custom tooling (ashell)
- Nix with flakes enabled
- For Home Manager configurations:
nhutility (Nix Helper) - For secrets: sops-nix setup with appropriate keys
# Build configuration
nh home build -c Khazad-dum
# Build and activate
nh home switch -c Khazad-dum# Build system configuration
nh os build
# Build and activate
nh os switch# Update all flake inputs
nix flake update
# Update specific input
nix flake lock --update-input nixpkgs# Clean old generations and optimize Nix store
nh clean all
# Clean only user profile
nh clean user
# Clean only system profile
nh clean systemnix-config/
├── flake.nix # Main flake configuration
├── flake.lock # Locked dependency versions
├── .sops.yaml # Secrets configuration
├── hosts/ # Host-specific configurations
│ ├── khazad-dum/ # Framework laptop
│ │ ├── home.nix # Home Manager entry point
│ │ ├── modules.nix # Enabled modules
│ │ ├── packages.nix # User packages
│ │ └── services.nix # User services
│ └── valinor/ # NixOS server
│ ├── configuration.nix
│ ├── hardware-configuration.nix
│ ├── packages.nix
│ ├── services.nix
│ ├── systemd.nix
│ ├── users.nix
│ ├── locales.nix
│ └── home-manager/
├── modules/ # Shared modules
│ ├── home-manager/ # Home Manager modules
│ │ ├── alacritty.nix # Terminal emulator
│ │ ├── ashell.nix # Shell environment
│ │ ├── git.nix # Git configuration
│ │ ├── hyprland.nix # Hyprland WM
│ │ ├── hyprlock.nix # Lockscreen
│ │ ├── ssh.nix # SSH client
│ │ ├── swaync/ # Notifications
│ │ └── zellij/ # Terminal multiplexer
│ ├── nh.nix # nh utility
│ ├── nvidia.nix # NVIDIA drivers
│ └── passthrough.nix # GPU passthrough
└── secrets/ # Encrypted secrets
Framework 16" laptop configuration running on Arch Linux (non-NixOS) with Home Manager.
Environment:
- OS: Arch Linux
- WM: Hyprland (primary) / GNOME
- Display Manager: GDM or hyprlock
- Terminal: Alacritty
- Shell: Custom ashell configuration
- Multiplexer: Zellij
- Editor: Neovim (nixvim)
Special Features:
- nixGL for OpenGL support on non-NixOS
- Hyprland keybinds including suspend/hibernate
- Notification system with swaync
NixOS server configuration for homelab/production use.
Environment:
- OS: NixOS
- Purpose: Server/homelab
- Configuration: Full system + Home Manager
| Input | Version | Description |
|---|---|---|
| nixpkgs | 25.05 | Stable NixOS packages |
| nixpkgs-unstable | unstable | Latest packages |
| home-manager | 25.05 | Stable Home Manager |
| home-manager-unstable | unstable | Latest Home Manager |
| sops-nix | latest | Secrets management |
| nixvim | custom | Personal Neovim config |
| nixGL | latest | OpenGL for non-NixOS |
| zjstatus | latest | Zellij status bar |
Secrets are encrypted using sops-nix:
- Configure age keys in
.sops.yaml - Store encrypted secrets in
secrets/ - Reference secrets in configurations
- Secrets are automatically decrypted at build time
- Edit configuration files
- Test build without activating:
nh home build -c Khazad-dum # or nh os build - Review changes
- Activate configuration:
nh home switch -c Khazad-dum # or nh os switch - Commit to version control
- Create module in
modules/home-manager/ormodules/ - Import module in host configuration
- Configure module options as needed
- Create/edit secret file
- Encrypt with sops:
sops secrets/filename.yaml
- Reference in configuration
- Rebuild system
See LICENSE file for details.