This contains all of my dot files and step-by-step instructions on how to build an Arch distribution similar to mine. Most configurations are detailed with comments. All dot files are purposefully compact with little ricing.
Aside from referencing the configuration files directly, you can use stow to automatically install any one or multiple of the configurations in this repository. This repository uses GNU Stow for managing symlinks.
# Packages are 'installed' by merely symlinking the files to their destinations
sudo pacman -S stow
# Clone the repository
git clone https://github.com/NathanielInman/dotfiles.git ~/Sites/dot-files
cd ~/Sites/dot-files
# List available packages
./install.sh -l
# Install all packages
./install.sh -a
# Install specific packages
./install.sh nvim zsh starship
# Uninstall a package
./install.sh -u nvim
# Restow after pulling updates
./install.sh -r nvim| Package | Description |
|---|---|
biome |
Global Biome formatter/linter config |
chrome |
Chrome Wayland flags (chrome-flags.conf) |
git |
Git configuration (delta pager) |
hyprland |
Wayland compositor (Lua config), lock, idle |
kitty |
Terminal emulator |
nushell |
Modern shell |
nvim |
Standalone lazy.nvim NeoVim config |
starship |
Shell prompt |
swaync |
Notification center |
t3code |
T3 Code color theme |
task |
Taskwarrior + vit config |
topgrade |
Upgrade-everything config |
vim |
Vim configuration |
walker |
Application launcher |
waybar |
Status bar |
zsh |
Zsh + Oh-My-Zsh config |
System-level files that can't be stowed (because they live outside $HOME) are tracked under etc/, usr/ and scripts/ as copies. Install them via ./install.sh -s, which prompts for each one. Currently covers:
etc/pacman.d/hooks/hyprpm.hook: rebuilds hyprpm plugins automatically after Hyprland upgrades so boot doesn't complain about outdated plugin headers.scripts/hypr-launch->/usr/local/bin/hypr-launch: sets the NVIDIA/Wayland env and execs Hyprland's ownstart-hyprlandwatchdog on tty1 login.etc/nvidia/nvidia-application-profiles-rc.d/50-limit-free-buffer-pool-in-wayland-compositors.json: stops the NVIDIA driver hoarding VRAM freed by Hyprland.etc/udev/rules.d/50-bt-adapter-no-autosuspend.rules: keeps the UB500 Bluetooth dongle from autosuspending.usr/local/bin/bt-force-central+etc/systemd/system/bt-force-central.service+etc/udev/rules.d/51-bt-force-central.rules: forces the PC to the central role on new Bluetooth links (fixes headset audio stutter).etc/systemd/system/rime-umount.service: unmounts the Rime CIFS share early on shutdown so it doesn't hang.scripts/openvpn3-tun-dns+etc/systemd/system/openvpn3-tun-dns@.service: VPN DNS hook (see below).
usr/share/applications/ holds .desktop overrides (mostly NoDisplay=true to hide unwanted apps from walker); copy them to /usr/share/applications/ by hand.
scripts/ holds the cron helpers (set up via crontab -e, see docs/setting-up-archlinux.md) and a few other tools:
cron-git-notes-auto-update.sh/cron-git-tasks-auto-update.sh: keep thenotesandtasksrepos synced hourly.cron-sites-nightly-backup.sh: a 3am safety net so no uncommitted work in~/Sitesis ever lost to a dead disk. Owned repos get an atomic commit + push on the current branch; every other dirty repo is snapshotted non-destructively to abackup/auto/<host>/<branch>ref on its remote. Full write-up: docs/sites-nightly-backup.md.openvpn3-tun-dns: attaches the DigitalTurbine CloudConnexa DNS resolver to thetun0link on every VPN connect (viaopenvpn3-tun-dns@tun0.service), becauseopenvpn3doesn't apply the pushed DNS itself and internal hosts won't otherwise resolve. Full write-up: docs/openvpn3-vpn-dns.md.statusline-command.sh: custom Claude Code statusline (see docs/setting-up-archlinux.md).
Tip
Clicking on the Arch, NeoVim, Zsh and PragmataPro icons below leads to this repository's setup docs or config for that tool.
I'm a software engineer who makes Roguelikes for fun, enjoys WebGL, javascript, golang & rust.
![]() |
![]() |


