Personal dotfiles managed with chezmoi for a CachyOS (Arch-based) Linux workstation running Hyprland.
- Fish shell - primary shell with numbered conf.d, custom functions, vi mode + CopyQ clipboard
- Neovim - NvChad base, lazy.nvim plugins, chezmoi integration with age encryption
- Hyprland - compositor config, waybar, walker, gtklock, hypridle, hyprpaper, swayosd
- Ghostty - primary terminal (ported from Kitty)
- Kitty - still configured, with pass_keys and smart_scroll plugins
- tmux - prefix C-a, tpm plugins, zsh as default shell
- Git - conditional includes (personal/work), GPG signing, delta pager, difftastic, mergiraf
- Systemd - user services and timers (atuin-daemon, git-maintenance, topgrade)
Standalone tools that live in the repo but are not deployed as dotfiles:
- tooling/win11-usb/ - QEMU-based Windows 11 USB creator for flashing firmware on devices with no Linux update path (ASMedia USB4, NZXT CAM, Razer Synapse). Builds a bootable Windows environment entirely from Linux using UEFI Secure Boot, TPM 2.0, and unattended install, then writes it to USB with
qemu-img convert -O raw.
Sensitive files use age encryption (.age suffix). Chezmoi handles decryption during chezmoi apply. Requires age keys configured in ~/.config/chezmoi/chezmoi.toml.
- PC - AMD Ryzen 9 9950X, Radeon RX 9060 XT
- Laptop - Intel i7-1270P (ThinkPad Carbon X1)
PC is source of truth. Package lists are split: pkglist.txt (common), pkglist-pc.txt, pkglist-laptop.txt.
chezmoi init --apply https://github.com/jetm/dotfiles.git
chezmoi apply # apply dotfiles
chezmoi diff # preview changes