No description
- Nix 95.7%
- Shell 3.1%
- CSS 1.2%
Adds a "pictures" folder to both hosts' syncthing configuration,
mirroring the same shape as the existing shared folders (~/.config/nix,
~/Development, ~/Dotfiles, ~/Documents). Scope is intentionally
narrower than the other four: only kaylee ↔ river ↔ nas (no serenity
because macOS' Photos.app already manages that library separately —
adding it would double-store every image and confuse the two syncs).
- staggered versioning, 30 days retention, 1 h clean interval
(same defaults as Development / Documents).
- ignorePerms = true so the kaylee/river permission model doesn't
trip on macOS-era metadata that may already be in the tree.
If serenity ever wants in later, add "serenity" to the devices list
on both hosts in the same shape.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
||
|---|---|---|
| .devenv | ||
| home | ||
| hosts | ||
| modules | ||
| packages | ||
| secrets | ||
| tests/zfs-usb-key | ||
| .gitignore | ||
| .sops.yaml | ||
| .stignore | ||
| AGENTS.md | ||
| CONTRIBUTING.md | ||
| flake.lock | ||
| flake.nix | ||
| nix.conf | ||
| packages.nix | ||
| README.md | ||
NixOS Configuration
Personal NixOS and nix-darwin configuration managed with flakes.
Hosts
river (NixOS Desktop)
- Platform: x86_64-linux
- Hardware: ASUS TUF X870-PLUS WIFI motherboard with AMD Ryzen CPU
- GPU: NVIDIA RTX (proprietary drivers)
- Storage: ZFS with encryption
- Desktop: Hyprland (Wayland compositor)
- Display: Multi-monitor setup (DP-3 primary at 2560x1440, DP-2 secondary at 1920x1080)
serenity (macOS Laptop)
- Platform: aarch64-darwin
- OS: macOS with nix-darwin
- Window Manager: AeroSpace
Quick Start
Build and Switch
The repository includes a smart switch function that detects your OS and runs the appropriate rebuild command:
# Automatically detects platform and rebuilds
switch
# Or use platform-specific commands:
# NixOS:
sudo nixos-rebuild switch --flake ~/.config/nix
# macOS (nix-darwin):
sudo darwin-rebuild switch --flake ~/.config/nix
Update Flake Inputs
cd ~/.config/nix
nix flake update
switch
Secrets Management
Secrets are managed using sops-nix with age encryption.
Key Locations
- NixOS:
/home/ben/.config/sops/age/keys.txt - macOS:
/Users/ben/Library/Application Support/sops/age/keys.txt
Editing Secrets
# Edit shared secrets
sops secrets/shared/secrets.yaml
# Edit host-specific secrets
sops secrets/river/secrets.yaml
Available Secrets
anthropic_api_key- Claude API keyhomebrew_github_api_token- GitHub token for Homebrewgemini_api_key- Google Gemini API keyrclone_gdrive_token- Google Drive OAuth token for rclone
Repository Structure
.
├── flake.nix # Main flake configuration
├── home/ # Home Manager modules
│ ├── hyprland.nix # Wayland compositor config
│ ├── waybar.nix # Status bar config
│ ├── waybar-scripts.nix # Waybar helper scripts
│ ├── syncthing.nix # File synchronization
│ ├── session.nix # Session paths and variables
│ ├── zsh.nix # Shell configuration
│ └── ... # Other home modules
├── hosts/ # Host-specific configurations
│ ├── river/ # NixOS desktop
│ │ ├── configuration.nix
│ │ ├── hardware-configuration.nix
│ │ ├── home.nix
│ │ └── secrets.nix
│ └── serenity/ # macOS laptop
│ ├── configuration.nix
│ └── home.nix
├── packages.nix # Common packages
└── secrets/ # Encrypted secrets (sops)
└── shared/
└── secrets.yaml
Key Features
System Monitoring
- Prometheus: System metrics collection via vmagent
- Node Exporter: CPU, memory, disk metrics
- NVIDIA GPU Exporter: GPU metrics (NVIDIA cards)
- Custom Fan Control: Dynamic fan curve based on CPU temperature
Desktop Environment (river)
- Compositor: Hyprland with blur, animations, and multi-monitor support
- Status Bar: Waybar with custom scripts
- Application Launcher: Rofi and Walker
- Notifications: SwayNC (swaync)
- Terminal: Ghostty
- File Manager: Nemo
- Theming: Catppuccin Mocha
Development Tools
- Editor: Neovim
- Shell: Zsh with oh-my-zsh
- Multiplexer: Tmux with tmuxinator
- Version Managers: mise (replaces asdf)
- Fuzzy Finder: fzf
- Directory Jumper: z-lua
Syncthing Folders
The following directories are synced between hosts:
~/.config/nix- This configuration repository~/Development- Development projects~/Dotfiles- Additional dotfiles
Custom Waybar Scripts
Located in home/waybar/scripts/, packaged as proper derivations:
power-menu.sh- Power options (suspend, shutdown, reboot, logout)audio-output-menu.sh- Audio output device switcherusb-monitor.sh- USB device notificationsusb-menu.sh- USB device menugamma-control.sh- Screen color temperature control
Hyprland Keybindings
See home/hyprland.nix for full list. Some highlights:
Super + Return- TerminalSuper + B- BrowserSuper + S- Power menuSuper + A- Audio output menuSuper + V- Clipboard managerSuper + [1-9]- Switch workspace
Contributing
See CONTRIBUTING.md for guidelines on:
- Code style and formatting
- Path handling (use
${config.home.homeDirectory}) - Secret management
- Module organization
License
Personal configuration - use at your own risk.