A portable snapshot of this laptop's configuration, built to be replayed on a
fresh CachyOS install. Run install.sh (or hand the repo + CLAUDE.md to a
Claude agent on the new machine).
git clone <this-repo-url> ~/dotfiles # or copy the folder over via USB/scp
cd ~/dotfiles
./install.sh # packages + dotfiles + plugin managersinstall.sh is idempotent and backs up anything it would overwrite to
~/.config-backups/dotfiles-<timestamp>/.
| Path | Contents |
|---|---|
packages/pacman-explicit.txt |
208 explicitly-installed native packages (pacman -Qqen) |
packages/aur.txt |
10 AUR packages (pacman -Qqem, plus pokemon-colorscripts-git — the fish-greeting script, installed as a dep so it didn't show in the -e listing) |
home/ |
Top-level dotfiles → $HOME (.bashrc, .zshrc, .profile, .gitconfig, .taskrc, .gtkrc-2.0, .nvmrc, .notify-osd, .fehbg) |
config/ |
Selected ~/.config subtrees (see below) |
local-bin/lock |
Gruvbox-themed i3lock-color lock-screen wrapper → ~/.local/bin/lock |
screenlayout/dual.sh |
xrandr dual-monitor layout (eDP-1 + HDMI-1) → ~/.screenlayout/ |
claude/ |
Claude Code rules/ + settings.json (optional — see notes) |
- i3 (
config/i3/) — Gruvbox Dark Hard, gaps, JetBrainsMono Nerd Font, includeswallpaper.png - i3status-rust (
config/i3status-rust/) — the i3 bar's status command - polybar (
config/polybar/) — alternate bar (config +launch.sh+ scripts) - picom — compositor · dunst — notifications · rofi — launcher
- gtk-3.0 / gtk-4.0 / .gtkrc-2.0 / Kvantum / qt5ct — Gruvbox GTK/Qt theming
- gsimplecal, Thunar, xfce4, easyeffects, systemd (user units),
mimeapps.list,user-dirs.dirs
- alacritty — terminal · fish — shell (tide prompt + fisher plugins; state files excluded)
- tmux (
tmux.confonly — plugins reinstalled by tpm) · nvim (lazy.nvim;lazy-lock.jsonpins versions) - btop, micro (settings + keybindings + colorschemes), lazygit, atuin (
config.tomlonly)
The package lists are authoritative, but the i3 config + lock script specifically need these to be present, so verify after install:
i3-wm i3status-rust i3lock-color polybar rofi alacritty picom dunst
redshift feh maim xclip pamixer alsa-utils playerctl brightnessctl
dex polkit-gnome easyeffects xob gnome-calculator xorg-xrandr
pavucontrol gsimplecal ttf-jetbrains-mono-nerd
Quick check:
for p in i3status-rs rofi alacritty picom dunst feh maim xclip pamixer \
playerctl brightnessctl dex xob i3lock; do
command -v "$p" >/dev/null && echo "ok $p" || echo "MISSING $p"
done- Display manager / startx — log into the i3 session.
- tmux plugins — open tmux, press
prefix + I. - nvim plugins — first launch auto-installs via lazy.nvim.
- fish default shell —
chsh -s "$(command -v fish)". - Reload i3 —
Mod+Shift+r(wallpaper + bar appear). - The screenlayout assumes eDP-1 (laptop) + HDMI-1. If the new laptop's
outputs differ, edit
~/.screenlayout/dual.sh(xrandr --queryto list them).
Deliberately excluded — they contain secrets or per-machine state:
~/.ssh(keys),~/.config/gh(GitHub OAuth token — re-rungh auth login)- Pilot Shell:
~/.pilot/.license,.hmac_key, sessions, logs — install Pilot Shell separately and re-activate your license (pilot activate <key>) ~/.claude/.credentials.json, history, projects, sessions (onlyrules/+settings.jsonare kept)- atuin sync key/session (
~/.local/share/atuin/— runatuin loginto re-sync) - fish universal variables / history; shell histories
- Browser / email / DB-client profiles: google-chrome, mozilla, evolution, obsidian, beekeeper-studio, pgadmin4, dbclient (these are data, not config)
claude/is included as a backup of hand-written rules. On a machine where you install Pilot Shell, it manages~/.claude/rulesitself — only runINSTALL_CLAUDE=1 ./install.shif you want these as a standalone reference.- The package list came from CachyOS, so it resolves against CachyOS repos. If one
renamed/removed package aborts the whole
pacmanbatch, drop it frompackages/pacman-explicit.txtand re-run, or install in smaller chunks.