Personal dotfiles managed with GNU Stow. Includes configs for i3, neovim, tmux, zsh, kitty, and more. Also contains bootc image definitions for running Arch Linux on Hetzner Cloud.
git clone https://github.com/bupd/dotfiles.git ~/dotfiles
cd ~/dotfiles
./check_dependencies.sh
stow --adopt .dotfiles/
.config/
nvim/ # Neovim (NvChad) config
tmux/ # Tmux config (prefix: Ctrl-j, vim-tmux-navigator)
i3/ # i3 window manager
i3status/ # i3 status bar
kitty/ # Kitty terminal
lazygit/ # Lazygit config
xremap/ # Key remapping
yt-dlp/ # yt-dlp config
bootc/ # Arch Linux bootc image for Hetzner Cloud (not stowed)
Containerfile # Custom image (packages, users, dotfiles)
Containerfile.base # bootcrew/arch-bootc base image
scripts/ # Build, flash, verify, post-boot scripts
keyboard/ # Corne V3 keyboard layout
scripts/ # Utility scripts
sessionizer # Tmux session picker (Ctrl-f in tmux)
.p10k.zsh # Powerlevel10k theme config
.zshenv # Zsh environment
.zshrc # Zsh config (zinit, p10k, fzf-tab) - not stowed
.xinitrc # X11 init
The bootc/ directory contains everything needed to build and deploy an immutable Arch Linux image to a Hetzner Cloud VPS using bootc.
cd ~/dotfiles/bootc
# Build and push image
./scripts/build.sh <registry> <username> <password>
# Generate bootable disk image and push via oras
./scripts/generate-disk.sh <registry> <username> <password>
# Flash from Hetzner rescue mode
./scripts/flash-disk.sh <registry> <username> <password>
# Verify before rebooting
./scripts/verify-disk.sh
# Update the running server
sudo bootc upgrade && sudo rebootSee bupd/arch-bootc-hetzner for full documentation.
.config- Configuration directoryAGENT-CONFIG.md- AI agent configuration guidei3- i3 window manager configurationi3status- i3status configurationkeyboard- Corne V3 keyboard layout configurationkitty- Kitty terminal emulator configurationlazygit- Lazygit TUI configurationnvim- Neovim configurationpactl.sh- Script for managing PulseAudiopactlVmic.sh- Script for managing PulseAudio virtual microphonepicom.conf- Picom (compositor) configurationpowerkill.sh- Script to handle power-related actionsscripts- Directory containing various utility scripts (see below)sessionizer- Script for TMUX session managementstreamStart.sh- Script to set up PulseAudio sinks for streamingstreamKill.sh- Script to tear down streaming audio setuptheme.conf- Theme configurationtmux- Tmux terminal multiplexer configurationxremap- Key remapping configurationyt-dlp- yt-dlp download configurationytdl-sub- ytdl-sub subscription downloader configuration.xinitrc- X11 initialization script.zshrc- Zsh shell configuration
Utility scripts in the scripts/ directory:
airdopes- Bluetooth pairing/connect automation for Airdopes earbudsbatch-delete.sh- Delete files listed in a text file (one path per line)cputemp- Display CPU and NVMe temperatures with color-coded output for i3statusimages.sh- Pull, tag, and push a set of Docker images to a local registryload-scripts- Copy scripts to /usr/bin for system-wide accessnewver-checker- Run nvchecker across subdirectories to check for new package versionsnvim-migrate.sh- Migrate NvChad v2 custom config to the v3 starter templaterm-harbor-clean.sh- Clean up Harbor-related build artifactsrm-node_modules.sh- Recursively find and delete all node_modules directoriesstt-start.sh- Start nerd-dictation speech-to-text with Vosk modelstt-stop.sh- Stop nerd-dictation speech-to-textwatchtime- Calculate total video duration in a directory tree
| Tool | Config |
|---|---|
| Neovim | NvChad + custom plugins (LSP, DAP, telescope, treesitter) |
| Tmux | tpm, vim-navigator, resurrect, sessionizer |
| Zsh | zinit, powerlevel10k, fzf-tab, syntax-highlighting |
| i3 | Window manager with custom keybindings |
| Kitty | Terminal emulator |
| Lazygit | Git TUI |
MIT. See LICENSE for details.
