Everything runs Catppuccin Mocha, dark, with mauve (#cba6f7) as the accent —
no per-app themes, no light mode. fastfetch and other TUI apps without a theme
of their own inherit the palette from ghostty's ANSI overrides.
Touch points (a flavor switch touches exactly these):
| App | File | Carries color |
|---|---|---|
| ghostty | common/.config/ghostty/common.conf |
theme = |
| zed | common/.config/zed/settings.json |
theme, icon_theme |
| nvim | common/.config/nvim/lua/plugins/colorscheme.lua |
flavour |
| herdr | common/.config/herdr/config.toml |
theme.name |
| btop | common/.config/btop/btop.conf |
vendored theme file |
| waybar | linux/.config/waybar/mocha.css |
@import in style.css |
| fuzzel | linux/.config/fuzzel/catppuccin-mocha.ini |
include= in fuzzel.ini |
| swaylock | linux/.config/swaylock/config |
whole file |
| niri | linux/.config/niri/cfg/layout.kdl |
focus-ring colors |
Vendored files are verbatim from the official catppuccin ports — don't hand-edit
them. Future direction: a theme script here flips the waybar @import and
fuzzel include to sibling flavor files and rewrites the few remaining
references. Deliberately no home-manager; catppuccin/nix's home-manager modules
were considered and rejected for that reason.
GNU stow dotfiles for all machines, organized into per-scope packages:
| Machine | OS | Managed by | Stow packages |
|---|---|---|---|
| Odin (home Mac) | macOS | nix-darwin via everything-nix | common mac personal |
| Thor (home PC) | NixOS | NixOS via everything-nix | common linux personal |
| Ivaldi (server) | NixOS | NixOS via everything-nix | common linux personal (optional) |
System-level config (packages, fonts, services) for the nix machines lives in
~/everything-nix — this repo only manages $HOME dotfiles.
common/ stowed everywhere — zsh modules (~/.config/zsh), starship, ghostty,
nvim, btop, fastfetch, wezterm, zed, pnpm, git ignore, herdr
mac/ stowed on macOS — gnupg (pinentry-mac), zsh extras (darwin.zsh),
reproducible launchers for terminal apps
linux/ stowed on Linux — niri, zsh extras (linux.zsh)
personal/ stowed on personal machines — personal pi agent-system
zsh has no native XDG support, so a two-line ~/.zshenv bootstrap points
ZDOTDIR at ~/.config/zsh; every other zsh file — .zshrc, modules and
all — lives there. .zshrc sources the shared modules, then the platform
extras and any optional work.zsh supplied by an external Stow package, so
the installed packages decide the machine's behavior.
Odin and Thor: git, zsh, stow. Ivaldi's user package set is deferred
until its server role is designed.
Odin / Thor: CLI tools (stow, starship, zoxide, fzf, lsd, ghostty, pnpm, …) are installed by everything-nix. Thor's Wayland desktop packages (Waybar, Fuzzel, and Swaylock) are installed by its host configuration. Ivaldi's package set is intentionally deferred. Two gaps to be aware of:
neovimandbatare not in everything-nix yet; the nvim config here is inert and thecatalias degrades gracefully until you add them
~/.gitconfig is machine-local so each machine can use the appropriate
identity:
git config --global user.name "Andrei Kukharau"
git config --global user.email "contact@druce.dev"
git config --global init.defaultBranch mainClone this repository to ~/.dotfiles, then stow the packages for the machine:
git clone git@github.com:drucedev/dotfiles.git ~/.dotfiles
cd ~/.dotfiles
stow --no-folding common mac personal # adjust per machine, see table aboveOn macOS, install the Cliamp Spotlight/Finder launcher after stowing. This
creates a real app bundle in ~/Applications and opens Cliamp in Ghostty:
install-macos-appsRun the command again after changing its app metadata or launcher. Cliamp must
be available on the login shell's PATH, and Ghostty must be installed in
/Applications.
--no-folding makes stow create real directories and link only files, so
apps that write state into ~/.config/... never write into this repo. Use
the same flag if you ever unstow (stow -D --no-folding ...).
Machines stowed before the modular ~/.config/zsh layout still carry
~/.zshrc, ~/.zprofile, ~/.aliases and possibly ~/.zshrc.darwin or
~/.zshrc.linux as stow symlinks. After pulling this repo they dangle (the
package files are gone), and a dangling ~/.zshrc would shadow nothing but
still clutter — remove them, restow, and clean up the stale pre-XDG history
file:
cd ~/.dotfiles && git pull
rm -f ~/.zshrc ~/.zprofile ~/.aliases ~/.zshrc.darwin ~/.zshrc.linux \
~/.zsh_history
stow --no-folding <packages> # see table above
./test/zsh.sh # sandboxed, safe to run anywhereThen open a new shell.
The personal Pi agent-system directory is self-contained because Pi treats the
real directory containing definitions.json as a trust boundary.
Then open a new shell. zinit clones itself and its plugins on first run.
Verify the shell with test/zsh.sh — it builds a sandbox home, so it is
safe to run on any machine.
fastfetchexpects an optional logo at~/Pictures/logo.png; missing file just means no logo.- Ghostty keeps shared settings in
common/.config/ghostty/common.conf; the macOS and Linux packages provide the platform wrapper. macOS starts Ghostty maximized, while Linux leaves window state to the compositor. - The
uualias upgrades the whole machine and differs per package manager: nix-darwin rebuild on macOS and NixOS rebuild on Linux.