diff options
| author | Craig Jennings <c@cjennings.net> | 2026-06-02 12:16:38 -0500 |
|---|---|---|
| committer | Craig Jennings <c@cjennings.net> | 2026-06-02 12:16:38 -0500 |
| commit | b10cba594db836c0747066addad48bda4d30cd02 (patch) | |
| tree | 063119a623fa3f7139feda4ef302896d8f5f934c /CLAUDE.md | |
| parent | 49c2ba9c4510bf6e1acd306687473bc8ba9ad8dd (diff) | |
| download | archsetup-b10cba594db836c0747066addad48bda4d30cd02.tar.gz archsetup-b10cba594db836c0747066addad48bda4d30cd02.zip | |
refactor: drop in-repo dotfiles/, move stow tooling to the dotfiles repo
Since the installer clones DOTFILES_REPO into ~/.dotfiles and stows from there, the in-repo dotfiles/ tree was dead weight. Nothing reads it at install time. I removed it (831 files) now that both machines are migrated.
The Makefile's stow / restow / reset / unstow / import targets and the dotfile-script unit suites moved to the dotfiles repo. They sit alongside the scripts they manage and run standalone (cd ~/.dotfiles && make ...). This Makefile keeps the VM-integration targets and the installer-helper suite (safe-rm-rf).
I updated CLAUDE.md and README.md so stow operations run from ~/.dotfiles, and the dotfile-management, theme, and unit-test sections point at the standalone repo. The README was already describing the old in-repo model from before the installer switched to cloning. This brings it in line.
Diffstat (limited to 'CLAUDE.md')
| -rw-r--r-- | CLAUDE.md | 67 |
1 files changed, 33 insertions, 34 deletions
@@ -8,14 +8,9 @@ Arch Linux installation and configuration scripts with dotfiles managed via GNU archsetup Main installation script archsetup.conf.example Configuration template init Bootstrap script for live ISO -Makefile GNU Stow operations for dotfile management +Makefile VM integration testing + project dependencies todo.org Active task list -dotfiles/ In-repo dotfiles (common/, dwm/, hyprland/), being migrated - to a standalone repo — see "Dotfiles Repository" below. - Retained until velox moves to ~/.dotfiles (ratio, this - machine, is already migrated), then removed. - scripts/ Utility scripts (wireguard, post-install, wipedisk, etc.) assets/ Reference documents and archived files color-themes/ Theme palettes, generation scripts @@ -31,17 +26,22 @@ vm-images/ VM disk images for testing ## Makefile Targets ``` -make stow dwm # Fresh install (common + dwm) -make stow hyprland # Fresh install (common + hyprland) -make restow dwm # Refresh links after git pull -make reset hyprland # Fix conflicts, keep repo version -make unstow dwm # Remove all symlinks -make import common # fzf select → import to common/ -make import dwm # fzf select → import to dwm/ -make import hyprland # fzf select → import to hyprland/ +make deps # Install VM-testing dependencies +make test-unit # Run fast unit tests for installer helpers (no VM) +make test # Run full VM integration test (creates base VM if needed) +make test-keep # Run test and keep the VM up for manual poking +make test-vm-base # Create the base VM only +``` +Dotfile stow operations live in the dotfiles repo's own Makefile, not here. +Run them from `~/.dotfiles`: +``` +cd ~/.dotfiles && make stow hyprland # common + hyprland +cd ~/.dotfiles && make restow hyprland # refresh links after git pull +cd ~/.dotfiles && make reset hyprland # fix conflicts, keep repo version +cd ~/.dotfiles && make unstow hyprland # remove symlinks +cd ~/.dotfiles && make import common # fzf select → import to common/ +cd ~/.dotfiles && make test # run the dotfile-script unit suites ``` -Override the stow source with `DOTFILES=`, e.g. `make stow hyprland DOTFILES=~/.dotfiles` -to stow from the standalone dotfiles repo instead of the in-repo `dotfiles/`. ## Dotfiles Repository @@ -65,25 +65,24 @@ DOTFILES_DIR= # defaults to the target user's ~/.dotfiles Pull dotfile changes after install: ``` cd ~/.dotfiles && git pull -cd ~/code/archsetup && make restow hyprland DOTFILES=~/.dotfiles +cd ~/.dotfiles && make restow hyprland ``` -Migrating an existing machine off the in-repo `dotfiles/`: +Setting up a new machine by hand (outside the installer): ``` git clone https://git.cjennings.net/dotfiles.git ~/.dotfiles -cd ~/code/archsetup -make unstow hyprland # remove old symlinks (→ archsetup/dotfiles) -make stow hyprland DOTFILES=~/.dotfiles # recreate them (→ ~/.dotfiles) +cd ~/.dotfiles && make stow hyprland ``` -**Quit Hyprland first.** Unstowing while Hyprland runs makes it write a stub -`hyprland.conf` into the gap, which then blocks the restow. Migrate from a TTY, -or with the session stopped. +**Quit Hyprland before an unstow/restow.** Unstowing while Hyprland runs makes +it write a stub `hyprland.conf` into the gap, which then blocks the restow. Do +it from a TTY, or with the session stopped. ## Dotfile Script Counts +The scripts live in the dotfiles repo (`~/.dotfiles`), not here: ``` -dotfiles/common/.local/bin/ → 33 universal scripts -dotfiles/dwm/.local/bin/ → 8 X11/DWM scripts -dotfiles/hyprland/.local/bin/ → 7 Hyprland scripts +~/.dotfiles/common/.local/bin/ → 33 universal scripts +~/.dotfiles/dwm/.local/bin/ → 8 X11/DWM scripts +~/.dotfiles/hyprland/.local/bin/ → 7 Hyprland scripts ``` ## Shell Configuration @@ -107,17 +106,17 @@ Full palette reference: `assets/color-themes/dupre/dupre-palette.org` - **Icons**: Papirus-Dark - **Cursors**: Bibata-Modern-Ice (size 24) - **Font**: BerkeleyMono Nerd Font (13pt terminal, 14px waybar) -- **Theme configs**: `dotfiles/hyprland/.config/themes/dupre/` +- **Theme configs**: `~/.dotfiles/hyprland/.config/themes/dupre/` ## Key Configuration Files -- `dotfiles/hyprland/.config/hypr/hyprland.conf` - Main Hyprland config -- `dotfiles/hyprland/.config/themes/dupre/` - Dupre theme files (foot, fuzzel, waybar, dunst, hyprlock, Xresources) -- `dotfiles/common/.profile.d/` - Shell environment scripts -- `dotfiles/common/.config/qt5ct/qt5ct.conf` - Qt5 theming -- `dotfiles/common/.config/qt6ct/qt6ct.conf` - Qt6 theming +- `~/.dotfiles/hyprland/.config/hypr/hyprland.conf` - Main Hyprland config +- `~/.dotfiles/hyprland/.config/themes/dupre/` - Dupre theme files (foot, fuzzel, waybar, dunst, hyprlock, Xresources) +- `~/.dotfiles/common/.profile.d/` - Shell environment scripts +- `~/.dotfiles/common/.config/qt5ct/qt5ct.conf` - Qt5 theming +- `~/.dotfiles/common/.config/qt6ct/qt6ct.conf` - Qt6 theming ## Notes -- Desktop file overrides go in `dotfiles/hyprland/.local/share/applications/` +- Desktop file overrides go in `~/.dotfiles/hyprland/.local/share/applications/` - MPD is configured but mpv handles audio file associations - Firewall is ufw (configured in `archsetup`, default-deny incoming, explicit allow list). Tailscale traffic **does** traverse ufw on ratio — a probe from a tailnet IP is still blocked unless a rule covers the port. Don't assume tailnet-only services bypass the firewall; they need an explicit ufw rule like any other. - This machine is **ratio**; **velox** is a laptop. Both run Hyprland (Wayland). archsetup still supports dwm/X11, but no current machine uses it. |
