Personal NixOS system configuration, managed as a flake with home-manager.
- OS: NixOS (flake-based,
nixos-unstable) - Host:
theseus— a Framework 16 (AMD) - Window manager: Hyprland, with wayle as the bar/shell
- Shell: zsh
- Terminal: kitty
- Editor: Zed
- Browser: Zen
- Launcher: Vicinae
- Theming: wallpaper-derived Material You palette via matugen, templated out to GTK, Hyprland, Vicinae, and Zen
.
├── flake.nix # Flake inputs/outputs, nixosConfigurations
├── hosts/
│ └── theseus/ # Host-specific system configuration
│ ├── configuration.nix
│ └── hardware-configuration.nix
├── home/
│ └── angad/
│ └── home.nix # Home-manager entry point
├── modules/
│ ├── cli/ # git, kitty, zsh, ssh, cli-tools
│ ├── gui/ # apps, gtk, zed-editor, zen-browser
│ ├── wm/ # hyprland, wayle, easyeffects
│ └── colors/ # matugen-based theme generator + templates
└── wallpapers/
Each module is a self-contained home-manager/NixOS module, imported from home.nix or configuration.nix. Adding a new tool or app usually means adding/editing a module under modules/ and wiring it in.
modules/colors generates a color scheme from wallpaper.jpg using matugen, then feeds the resulting JSON through processor.py (Jinja2) to render theme files for GTK3/4, Hyprland, Vicinae, and Zen's userChrome/userContent. Swap the wallpaper to regenerate the whole system's palette.
Rebuild the system after making changes:
rebuild # alias for: sudo nixos-rebuild switch --flake ~/.dotfilesA direnv/shell.nix dev shell is provided for editing (nixd, nil, lua) — run direnv allow in the repo root.
- Create
hosts/<hostname>/configuration.nix(andhardware-configuration.nixfromnixos-generate-config). - Add a new entry under
nixosConfigurationsinflake.nix, pointing at the new host and a home-manager user config.
GPL-3.0 — see LICENSE.
This README was generated by AI.
I promise I did the rest though.