My dotfiles for my NixOS setup, managed with GNU Stow.
Each top-level dir is a stow package. Its tree mirrors what gets symlinked into $HOME:
<pkg>/.config/<app>/... → ~/.config/<app>/...
Apply / remove / restow:
stow -t ~ <pkg>
stow -D -t ~ <pkg>
stow -R -t ~ <pkg>| Pkg | App | Notes |
|---|---|---|
fish |
fish shell | Vi keys, zoxide-shadowed cd, FZF widgets, custom yt_chat / yt_summarize functions wrapping the claude CLI. |
niri |
niri Wayland compositor | config.kdl includes split files under dms/ (binds, outputs, windowrules, …). Driven by DMS. |
DankMaterialShell |
DMS niri shell | Settings, themes, plugin metadata. |
nvim |
Neovim | LazyVim base. User plugins in lua/plugins/, config in lua/config/. |
wezterm |
WezTerm | wezterm.lua loads keys.lua + dank-theme. |
qutebrowser |
qutebrowser | Multi-file config split across appearance, privacy, filepicker, binds, search_engines. Themes under themes/. See deps below. |
mpv |
mpv | mpv.conf + input.conf. |
syncthing/— Shared.stglobalignoreacross all Syncthing folders/hosts. Symlinked, not stowed — seesyncthing/README.md.screenshots/— Preview images.
| qutebrowser (everforest) | menu |
|---|---|
![]() |
![]() |
Detach videos (download + play locally):
Bitwarden:
- rofi
- tldextract
- pyperclip
- bitwarden-cli
Note
Bitwarden setup still flaky — slow, doesn't autofill on many sites. Testing rbw workaround
Adblock:
- adblock
- Run
:adblock-updatein qutebrowser to refresh lists.
Spellcheck (en-US):
"$(find "$(nix-store --query --outputs "$(which qutebrowser)")" -iname 'dictcli.py' | head -1)" install en-US
