Lightweight dotfiles managed with GNU Stow. The previous Ansible playbook has been removed in favour of a small set of stowable packages.
- git
- GNU Stow
- Arch:
sudo pacman -Sy --needed stow - Debian/Ubuntu:
sudo apt install stow - macOS:
brew install stow
- Arch:
The helper ./bin/bootstrap installs the baseline toolchain (fzf, bat, ripgrep,
fd/fd-find, eza, lsd, nodejs/npm, texlive, tmux, neovim, uv, zoxide, zsh, etc.)
using the detected package manager.
Preview the commands before running them:
./bin/bootstrap --dry-runWhen you're satisfied, drop --dry-run to install. Package lists live in
packages/pacman.txt (primary Arch list), packages/apt.txt (Debian servers),
and packages/brew.txt (macOS). Edit the list for the platform you care about.
If a package is unavailable on your platform (e.g. uv on older Debian releases),
bootstrap will skip it with a warning so the rest can still install.
After packages finish, bootstrap will also install the dlvhdr/gh-dash
GitHub CLI extension when gh is available (a dry run just prints the command).
packages/is ignored by Stow via.stow-local-ignore, so it won't ever get linked into your home directory.
sudo systemctl enable --now keyd.service
sudo systemctl start keyd
sudo systemctl restart keyd
Optional AutoHotkey helpers live in the windows/ahk package (caps-to-esc-and-ctrl.ahk,
alternative-lock.ahk). On Windows or from WSL you can drop them into place with:
./bin/dotfiles windows --target /mnt/c/Users/<username>That will create C:\Users\<username>\ahk\. Copy the scripts into your AutoHotkey
startup folder or include them from your main .ahk entrypoint.
Run ./bin/setup-gnome to configure the workspaces, apply the Super-key shortcuts,
and install the browser connector that GNOME Extensions expects. Pass
--workspaces 6 (for example) to change the default count, --dry-run-install
to preview the package command, or --skip-browser if you already have it.
The underlying helpers now live in bin/gnome/ so you can run them individually:
./bin/gnome/workspaces— sets a fixed workspace count (defaults to five) and wiresSuper+number/Super+Shift+numberfor switching or moving. Use this when you only want the workspace tweaks../bin/gnome/super-shortcuts— calls the workspace helper first, then adds the Super-based app launchers and extra bindings../bin/gnome/install-browser-connector— installsgnome-browser-connector(orchrome-gnome-shellon older Ubuntu releases) using pacman, apt, or dnf.
Right now I'm using https://github.com/vinceliuice/MacTahoe-gtk-theme
With the extensions:
- Dash to Dock: but remember to disable in behavior "Use keyboard shortcuts to activate apps"
- User Themes: and here select the MacTahoe theme as well as in tweaks
- Blur my Shell: but it's not working on my Gnome version
The goal is to keep these combos consistent across GNOME, Hyprland, XFCE, KDE, etc.:
Super+<number>→ focus workspace (five by default)Super+Shift+<number>→ move window to workspaceSuper+Enter→ open Ghostty (falls back to wezterm, kitty, alacritty, gnome-terminal)Super+B→ open Zen Browser (falls back to firefox, chromium, brave)Super+E→ open the file manager (nautilus, thenthunar,dolphin)Super+W→ close the focused window (D-Bus method with CLI fallbacks)Caps Lock(via keyd) →Escwhen tapped,Ctrlwhen heldLeft Shift+Right Shift(via keyd) →Caps Lock
git clone https://github.com/LittleHaku/dotfiles.git
cd dotfiles
./bin/dotfilesBy default the helper stows the main packages (bash, ghostty, git, nvim,
tmux, wezterm, zsh, btop, gh-dash) into $HOME. Pass specific package
names to only link a subset:
./bin/dotfiles zsh tmux
./bin/dotfiles --unstow tmux # remove a package
./bin/dotfiles --dry-run --verbose # preview actions
./bin/dotfiles --overwrite # backup conflicts then replace them
./bin/dotfiles --keep-existing # skip packages blocked by existing filesYou can also run Stow manually if you prefer:
stow --target="$HOME" zsh
stow --target="$HOME" nvimbash→.bashrc,.bash_profilegit→.gitconfigghostty→~/.config/ghosttygh-dash→~/.config/gh-dash/config.ymlnvim→~/.config/nvimtmux→~/.config/tmux/tmux.confwezterm→~/.config/wezterm/wezterm.luazsh→.zshrcbtop→~/.config/btop/btop.confkeyd→/etc/keyd/default.conf(sudo stow --target /etc/keyd keyd)windows/ahk→~/ahk/*.ahk(optional AutoHotkey helpers)
- Run
./bin/dotfiles --target /tmp/test-hometo verify changes without touching your actual home folder. - Conflicting files are reported by Stow. Pass
--overwriteto move them into.dotfiles-backups/<timestamp>/before symlinking, or--keep-existingto leave them untouched and skip that package. Use--backup-dir <path>to control where backups are stored. - Feel free to add new packages following the same structure: create a directory at the repository root and place files exactly where they should appear in your home directory.