aboutsummaryrefslogtreecommitdiff
path: root/CLAUDE.md
diff options
context:
space:
mode:
authorCraig Jennings <c@cjennings.net>2026-06-02 12:16:38 -0500
committerCraig Jennings <c@cjennings.net>2026-06-02 12:16:38 -0500
commitb10cba594db836c0747066addad48bda4d30cd02 (patch)
tree063119a623fa3f7139feda4ef302896d8f5f934c /CLAUDE.md
parent49c2ba9c4510bf6e1acd306687473bc8ba9ad8dd (diff)
downloadarchsetup-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.md67
1 files changed, 33 insertions, 34 deletions
diff --git a/CLAUDE.md b/CLAUDE.md
index 9b90e25..b3c965d 100644
--- a/CLAUDE.md
+++ b/CLAUDE.md
@@ -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.