Personal configuration for macOS and Linux (Arch, Fedora, Void), managed with Make and GNU Stow. XDG Base Directory compliant throughout.
- Shell: Zsh with Antidote for plugin management and Starship prompt.
- Package Manager: Homebrew (
packages/Brewfile) on macOS; pacman/paru, dnf, or xbps on Linux. - Terminal: Ghostty with Catppuccin Mocha theme.
- Editor: Neovim, managed separately at victortennekes/nvim.
- Git: Delta for diffs, commit signing via Bitwarden SSH agent (macOS).
- Core Utils:
bat,eza,fd,fzf,ripgrep,zoxide,jq. - TUIs:
lazygit,btop,yazi,k9s,fastfetch. - Linux Desktop: Niri (tiling Wayland compositor) with Noctalia theme.
- Git
- macOS: Command Line Tools (
xcode-select --install) - Linux:
sudoaccess
git clone https://github.com/victortennekes/dotfiles.git ~/.dotfiles
cd ~/.dotfiles
make installmake install auto-detects the OS via uname -s, then routes by distro on Linux:
| Platform | Package manager | Package manifest |
|---|---|---|
| macOS | Homebrew | packages/Brewfile |
| Arch | pacman + paru | packages/arch |
| Fedora | dnf + flatpak | packages/fedora |
| Void | xbps | packages/void |
Work-only packages (dbt, terraform, k9s, Slack, …) are gated by hostname
prefix PC- on all platforms. Override with IS_WORK=true make install.
| Command | Description |
|---|---|
make install |
Full setup: packages + symlinks (per OS/distro) |
make update |
Pull dotfiles, update packages, re-link configs |
make dump |
macOS: export current brew packages to Brewfile |
make lint |
Validate zsh, JSON, and install scripts |
make clean |
Remove all stow symlinks |
.dotfiles/
├── packages/
│ ├── Brewfile # macOS (brew, casks, mas)
│ ├── arch # Arch Linux (pacman + paru + npm + curl)
│ ├── fedora # Fedora (dnf + copr + flatpak + cargo + npm + curl)
│ └── void # Void Linux (xbps + runit)
├── config/ # Cross-platform app configs → ~/.config/
│ ├── bat/
│ ├── btop/
│ ├── fastfetch/
│ ├── ghostty/
│ ├── git/
│ ├── k9s/
│ ├── lazygit/
│ ├── mise/
│ ├── nvim/
│ ├── yazi/
│ └── zsh/
├── darwin/ # macOS-only configs → ~/.config/
│ └── karabiner/
├── linux/ # Linux-only configs → ~/.config/
│ ├── niri/
│ └── noctalia/
├── home/ # Home-level dotfiles → ~/
│ └── .zshenv
├── system/ # System-level config (gamemode, libinput, tlp)
│ └── etc/
├── scripts/
│ ├── install # Symlink dotfiles via stow
│ ├── install-arch # Arch package installer
│ ├── install-fedora # Fedora package installer
│ ├── install-void # Void package installer
│ ├── clean # Remove stow symlinks
│ ├── macos-defaults # Apply macOS system defaults
│ └── lib/
│ └── common.sh # Shared shell helpers
└── Makefile- Clipboard. The
clipzsh function dispatches topbcopyon macOS,wl-copyon Wayland, orxclipon X11. - SSH agent. macOS uses Bitwarden's containerized socket; on Linux fall
back to
ssh-agentor run Bitwarden CLI separately. - Keyboard remapping. macOS uses Karabiner (
darwin/); Linux equivalent (kanata) is not currently configured. - Nerd Fonts. Brew cask installs them on macOS; on Arch/Fedora install via
getnfor drop fonts into~/.local/share/fonts. - macOS defaults. Run
scripts/macos-defaultsafter first install to apply sensible system preferences.