Dotfiles¶
The dots/ tree holds all user-space
configuration. Its children are symlinked into ~/.config/ with
config.lib.file.mkOutOfStoreSymlink (see Impermanence), so edits
apply live without a rebuild.
dots/
├── .memory/ # memd project memory (state/decisions/mistakes/todo + inbox)
├── .model/ # agent-scaffold guides (CLAUDE.md etc.)
├── cava/ # audio visualizer: shaders + gradient themes
├── fastfetch/ # system info fetch (config.jsonc)
├── fuzzel/ # application launcher (fuzzel.ini + theme)
├── htop/ # process viewer (htoprc)
├── color-engine/ # JSON theme engine: apply_theme.py + themes/
├── kitty/ # terminal: kitty.conf + tab_bar.py + current.conf
├── kitty_colorschemes/ # extra kitty colorschemes
├── niri/ # niri compositor: config.kdl, scripts, quake terminal
├── noctalia/ # Noctalia v5 shell: config.toml + palettes/volnix.json
├── starship/ # prompt (starship.toml)
└── wlogout/ # Wayland logout menu (layout + style.css)
Most of these are detailed in the Desktop section. A quick reference:
| Dotfile | Notable settings |
|---|---|
niri/ |
Keybinds, window rules, startup apps, IPC scripts, and Kitty quake terminal |
noctalia/ |
Noctalia v5 shell config (config.toml) + color-engine palette (palettes/volnix.json) |
color-engine/ |
JSON theme engine (apply_theme.py); themes mapped to Noctalia, Kitty, and Starship |
kitty/ |
PunkMono Nerd Font, fish shell, custom bottom tab bar, listen_on unix:@mykitty for live theming |
fuzzel/ |
Google Sans Flex, overlay layer, rounded borders |
wlogout/ |
Six session actions (lock, logout, suspend, hibernate, reboot, shutdown) |
cava/ |
Spectrum shaders + an 8-stop tricolor gradient theme |
starship/ |
Two-line powerline prompt, neon palette, cmd_duration notifications |
fastfetch/ |
Auto logo, full module list (os/host/kernel/cpu/gpu/memory/…) |
Independent dotfiles history¶
dots/ can be published with its own history without a separate repository, using git subtree. The
Makefile wraps the workflow:
make dots-log # history scoped to dots/ (no remote needed)
make dots-split # regenerate the dots-history projection branch
make dots-remote URL=<git-url> # add the standalone 'dotfiles' remote (once)
make dots-push # publish dots/ to dotfiles/main
make dots-pull # merge changes back into dots/
No secrets in dots/
dots/ is public — only declarative config is tracked. Runtime credentials and agent state (for
example ~/.gemini) live outside the repo as persisted $HOME directories, never in dots/.