My NixOS configuration (mirror)
Nix 100.0%
230 1 0

Clone this repository

https://tangled.org/matthew-hre.com/flake https://tangled.org/did:plc:jb2t76xy3xkgzeddixkzvntp/flake
git@tangled.org:matthew-hre.com/flake git@tangled.org:did:plc:jb2t76xy3xkgzeddixkzvntp/flake

For self-hosted knots, clone URLs may differ based on your setup.

Download tar.gz
README.md

My NixOS Configuration#

NixOS Unstable Niri

screenshot

This is my NixOS configuration for both my desktop and laptop.

This config is a nightmare. I would not wish this upon my worst enemies. Please, for the love of god, do not use this as a template for your own NixOS configuration. This is directed to the 9 people who have this repo starred.

Overview#

donkeykong (Desktop) toad (Laptop, Framework 13")
DE / WM Niri Niri
Bar and Notifications Custom Quickshell Custom Quickshell
Launcher Vicinae Vicinae
Shell fish + Tide fish + Tide
Editor Helix + Zed Helix + Zed
Terminal Ghostty Ghostty
Browser Helium Helium

Quickshell#

The Wayland bar on toad is powered by Quickshell, a Qt6/QML-based shell toolkit. My config lives in a separate repo: matthew-hre/quickshell-config. It's launched at startup by Niri and handles my notifications.

Editors#

Helix is the primary terminal editor, configured with Dracula, inlay hints, and LSP messages enabled. Zed handles GUI editing — it's built from source via the flake input and wrapped in an FHS environment (for extension deps like openssl/zlib). Both share a common set of language servers managed in home/editors/language-servers.nix.

Structure#

.
├── home/           # User-level configuration (Home Manager)
│   ├── configs/    # CLI tools (bat, btop, git, yazi, direnv, etc.)
│   ├── editors/    # Editor configs (Helix, Zed, NVF, VSCode)
│   ├── shell/      # Shell setup (fish + Tide, Ghostty)
│   └── wayland/    # Wayland environment (Niri, Quickshell, etc.)
├── hosts/          # Per-machine configuration
│   ├── donkeykong/     # Desktop — Niri + Quickshell
│   └── toad/       # Laptop — Niri + Quickshell
├── lib/            # Helper functions (mkHost)
├── system/         # System-level modules
│   ├── hardware/   # AMD GPU/CPU, Bluetooth, fingerprint reader, fwupd
│   ├── programs/   # Discord, Steam, fonts, Niri, XDG
│   └── services/   # greetd, PipeWire, Docker, OpenSSH, power mgmt, VPN
└── users/          # User account definitions

Hosts are built with a mkHost helper in lib/ that wires up Home Manager, injects flake inputs as specialArgs, and merges per-host modules. The formatter is alejandra, enforced via a pre-commit hook.

Systems#

donkeykong (Desktop)#

  • CPU: AMD Ryzen 7 9700X
  • GPU: AMD Radeon RX 7800 XT
  • RAM: 32 GB DDR5
  • Storage: 1 TB NVMe SSD Boot + 2 TB NVMe SSD Steam Drive
  • Display: 32" UltraWide 1440p Monitor + 27" 1440p Monitor

toad (Laptop)#

  • Model: Framework Laptop 13" (2024)
  • CPU: AMD Ryzen 7 7840U
  • GPU: Integrated
  • RAM: 32 GB DDR5
  • Storage: 1 TB NVMe SSD