DerGrumpfs Nix Configuration
A unified Nix flake managing NixOS desktops, a macOS machine via nix-darwin, and a home server cluster — all sharing a common Home Manager configuration.
Author: Phil Keier
Machines
| Hostname | Platform | Architecture | Type |
|---|---|---|---|
| cyper-desktop | NixOS | x86_64-linux | Desktop workstation |
| cyper-mac | macOS | x86_64-darwin | nix-darwin + Homebrew |
| cyper-controller | NixOS | x86_64-linux | Home server (runs all services) |
| cyper-node-1 | NixOS | x86_64-linux | Server node |
| cyper-node-2 | NixOS | x86_64-linux | Server node |
Prerequisites
NixOS
Nix is available out of the box. Enable flakes in your configuration.
macOS
Install Nix using the Determinate Systems installer.
Note: Homebrew is managed declaratively via nix-homebrew — if already installed it will auto-migrate, otherwise it is installed automatically.
Quick Start
Clone
git clone https://github.com/DerGrumpf/nix ~/.config/nix
cd ~/.config/nix
Customize
Replace placeholders in home/git.nix:
DerGrumpf→ your Git usernamephil.keier@hotmail.com→ your Git email
Update secrets/keys.txt.age and .sops.yaml with your age public key.
Apply
# NixOS
sudo nixos-rebuild switch --flake .#cyper-desktop
# macOS
darwin-rebuild switch --flake .#cyper-mac
# Or use the shell alias (auto-detects hostname and platform)
nix-switch
Check (without building)
nix-check
# expands to: nix flake check --no-build (NixOS)
# or: nix eval ...darwinConfigurations.(hostname).config... (macOS)
Project Structure
graph TD
flake[flake.nix] --> desktop[nixosConfigurations<br/>cyper-desktop]
flake --> servers[nixosConfigurations<br/>cyper-controller / node-1 / node-2]
flake --> mac[darwinConfigurations<br/>cyper-mac]
desktop --> nixos[nixos/<br/>NixOS system modules]
desktop --> hd[hosts/cyper-desktop/<br/>hardware + config]
desktop --> home[home/<br/>shared Home Manager]
servers --> nixos
servers --> roles[nixos/roles/<br/>Gitea · Matrix · Vaultwarden<br/>AdGuard · Searxng · Unifi<br/>Monitoring · Filebrowser]
servers --> hc[hosts/cyper-*/]
mac --> darwin[darwin/<br/>macOS system modules]
mac --> hm[hosts/cyper-mac/]
mac --> home
home --> shared[shared<br/>packages · git · shell · python<br/>nixvim · nixcord · spicetify<br/>floorp · obsidian · ssh]
home --> deskmod[desktop/]
deskmod --> dlinux[Linux only<br/>hyprland · niri · waybar<br/>rofi · gtk · qt · xdg · waypaper]
deskmod --> dmac[macOS only<br/>sketchybar]
Secrets
Secrets are managed with sops-nix and age encryption.
The age key must exist at ~/.config/sops/age/keys.txt on every host. To edit secrets:
sops secrets/secrets.yaml
Never edit .age files directly.
Shell Aliases (Fish)
| Alias | Expands to |
|---|---|
nix-switch |
sudo nixos-rebuild switch --flake ~/.config/nix#(hostname -s) |
nix-check |
nix flake check --no-build (or darwin eval equivalent) |
ls |
eza --icons=always |
la |
eza -la --icons=always |
tree |
eza --icons=always -T |
f |
nvim $(fzf) |
grep |
rg |
cp |
rsync -ah --progress |
l |
LLM prompt via Groq → rendered with glow |
Useful Links
Description
Languages
Nix
91.5%
Lua
4.1%
Shell
2%
CSS
1.8%
Python
0.6%