A home for all of my dotfiles
  • Lua 45%
  • Shell 24.6%
  • Python 22.7%
  • Roff 7.7%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
ieris19 b3c9a6bbe9
Updated VSCodium settings
I've been using it a bit more lately, so I've made a few setting tweaks
2026-10-19 15:05:50 +02:00
dotfiles-manager dotfiles-manager now uses subcommands instead of flags 2026-10-04 22:31:18 +02:00
ghostty/dot-config/ghostty Split the dotfiles into individual packages 2026-08-02 11:46:00 +02:00
git Removed hardcoded git tools 2026-08-13 23:17:52 +02:00
helix/dot-config/helix Split the dotfiles into individual packages 2026-08-02 11:46:00 +02:00
nvim/dot-config/nvim Split the dotfiles into individual packages 2026-08-02 11:46:00 +02:00
scripts/dot-local/bin Improved binary file detection for whitespace fixer 2026-08-13 13:12:00 +02:00
shell Moved session setup until late in the initialization 2026-08-24 23:19:46 +02:00
ssh Added my private forge to the git ssh config 2026-10-18 18:01:15 +02:00
vscodium Updated VSCodium settings 2026-10-19 15:05:50 +02:00
zsh Moved session setup until late in the initialization 2026-08-24 23:19:46 +02:00
.dotfilesignore Large improvements to dotfiles-manager 2026-10-04 21:25:12 +02:00
.gitignore Added a CLI for managing the dotfiles 2026-08-12 23:18:50 +02:00
.stowrc Large improvements to dotfiles-manager 2026-10-04 21:25:12 +02:00
dotfiles-cli.md Large improvements to dotfiles-manager 2026-10-04 21:25:12 +02:00
README.md Added a CLI for managing the dotfiles 2026-08-12 23:18:50 +02:00

Dotfiles

Personal dotfiles, managed with GNU Stow.

Structure

In order to leverage the capabilities of stow, and to avoid a noisy home directory, I have split into Stow packages so a given machine only installs what it needs:

  • shell: bash entry point plus shared shell scripts (snippets, env vars, aliases, ssh-agent setup). Should work everywhere, mostly POSIX compliant, certainly compliant with modern bash.
  • zsh: zsh entry point, zinit plugin manager, oh-my-posh prompt. Desktop/interactive use; if you install shell alongside it, it will source the shared scripts from there.
  • git: gitconfig and the allowed-signers file for verifying signed commits. Also includes lazygit config, even if it's not in every system, it's just a tiny text file.
  • nvim: Neovim config.
  • helix: Helix config.
  • ghostty: Ghostty terminal config.
  • vscodium: VSCodium user settings and extensions list.
  • dotfiles-manager: the dotfiles.py CLI itself, an interactive picker (or non-interactive flags) on top of stow, plus a per-machine manifest of what's installed. Requires Python. See dotfiles-cli.md for the full reference.

Install

git clone <repo-url> ~/.dotfiles
cd ~/.dotfiles
stow -R <packages   # -R removes first stows later, clears stale links
stow -D <package>   # Delete a dotfile package

Or stow dotfiles-manager to get a dotfiles.py command on PATH that wraps the same stow calls, which provides a TUI, a CLI and can be piped from curl to python to even clone the repo for you in the first place

Man page

dotfiles-cli.md documents the CLI, after editing the docs, remember to regenerate it with the following command:

pandoc -s -t man -M title=DOTFILES -M section=1 -M date="$(date +'%B %Y')" \
  -o dotfiles-manager/dot-local/share/man/man1/dotfiles.py.1 dotfiles-cli.md

man looks pages up by the exact command name, so the page has to be named dotfiles.py.1 to match the dotfiles.py command, not dotfiles.1. Once the package is stowed, ~/.local/share/man is already on MANPATH by default on most systems, so man dotfiles.py works with no further setup.

Requirements

  • stow
  • git
  • python3 (optional, for the CLI)

Each package configures specific programs, those programs are obviously required for the package to have any effect, zsh/ needs zsh installed and configured, it only applies a zshrc, it doesn't install the program.

An exception to this is zinit and oh-my-posh, which are automatically pulled when first executing zshrc

In addition, the shell package will configure aliases and environments for additional programs that may or may not be installed. These aren't required but will be configured if present