This commit is contained in:
2026-09-20 10:35:29 +02:00
parent c5eba35273
commit 8c65841361
6 changed files with 118 additions and 32 deletions
+9 -8
View File
@@ -42,8 +42,8 @@ Run `make <target>` from the repository root. Each target first runs the relevan
| Target | What it does |
|--------|--------------|
| `make term` | Runs `term/setup.sh` (installs terminal packages, sets fish as default shell, clones tmuxifier), then `stow term` |
| `make basic` | Runs `install_basic_pcks.sh`, stows `nvim`, runs `nextcloud.sh` |
| `make term` | Runs `term/setup.sh` (installs terminal packages, sets fish as default shell, clones tmuxifier), then `stow term`. Pulls in `basic`. |
| `make basic` | Runs `basic/setup.sh`: enables multilib, updates the system, installs `yay` if missing, installs the `basic/packages.txt` packages, and sets up Docker (enables/starts the service, adds your user to the `docker` group, verifies the service) |
| `make hypr` | `make basic`, installs Hyprland packages, stows `hypr`, runs the Hyprland setup scripts (`ensure-env.sh`, `portal-host-override.sh`, `fix_dolphin_file_associations.sh`) |
| `make kreation` | `make basic`, installs VST runtime, stows `kreation` |
| `make buntes-monster` | Everything (`basic` + `hypr` + `kreation`), then wires up symlinks |
@@ -64,11 +64,12 @@ Add/remove packages on separate lines. Lines starting with `#` are ignored, and
@npm # install via npm -g
```
The default section is `@pacman`. Any AUR dependency (`yay`) is bootstrapped automatically by `term/setup.sh`.
The default section is `@pacman`. The AUR helper `yay` is bootstrapped automatically by `basic/setup.sh`.
## What the install scripts do
- **`term/setup.sh`** – enables multilib, updates the system, installs `yay` if missing, reads `term/packages.txt` and installs all packages with `--needed` (skips already-installed ones), sets `fish` as the default shell (`chsh -s /usr/bin/fish`), clones `tmuxifier`, adds the `git` yazi plugin, and runs `sudo updatedb`. It is idempotent and safe to re-run.
- **`basic/setup.sh`** – enables multilib, updates the system (`pacman -Syu`), ensures `yay` is installed, reads `basic/packages.txt` and installs all packages with `--needed` (skips already-installed ones), and sets up Docker (`sudo systemctl enable --now docker`, adds the current user to the `docker` group, checks the service). Idempotent and safe to re-run.
- **`term/setup.sh`** – reads `term/packages.txt` and installs all packages (pacman/AUR via `yay --needed`, npm via `sudo npm install -g`), sets `fish` as the default shell (`chsh`), clones `tmuxifier`, adds the `git` yazi plugin (skips if already present), and runs `sudo updatedb`. Idempotent and safe to re-run.
## Stow: resolving conflicts with existing paths
@@ -140,15 +141,15 @@ There are **two tiers**:
| `make test-stow` | `stow --simulate` for every stow-able package; fails if a package the Makefile stows doesn't exist (e.g. `stow nvim` — nvim lives under `term/`). | No |
| `make test-shellcheck` | Runs shellcheck over all tracked scripts (shellcheck must be installed). | No |
| `make test-lint-docker` | Builds the `/dev` stage (`archlinux:latest` + shellcheck) and runs `test/lint.sh` inside it. | Yes |
| `make test-smoke` | Builds the `/test` stage, runs the container's dry probes (`make -n` over every target, `stow --simulate` over every Makefile-stowed package, `test/lint.sh`), **and by default installs the real pacman packages** (`REAL_SMOKE=1`) then verifies them. | Yes |
| `make test-smoke` | Builds the `/test` stage, runs the container's dry probes (`make -n` over every target, `stow --simulate` over every Makefile-stowed package, `test/lint.sh`), **and by default installs the real term pacman + npm packages** (`REAL_SMOKE=1`) then verifies them. Every `@pacman` entry is also pre-resolved against the repo DB, and the install is re-run to prove idempotency. | Yes |
| `make test` | `test-lint` + `test-smoke` (the real install runs). | Partially |
### Docker smoke details
```bash
make test-smoke # real pacman install of the term packages + verify
make test-smoke # real pacman + npm install of the term packages + verify
make test-smoke REAL_SMOKE=0 # dry probes only (fast, no installs)
make test-smoke RUN_SMOKE=1 RUN_FULL=1 # + AUR/npm + hypr/kreation/buntes-monster
make test-smoke RUN_SMOKE=1 RUN_FULL=1 # + AUR + hypr/kreation/buntes-monster
make test-smoke SKIP_NET=1 # skip anything that contacts the network
```
@@ -162,7 +163,7 @@ The container:
- stubs host-dependent commands as no-ops so nothing talks to a real systemd/dbus
inside the container (`systemctl`, `updatedb`, `kbuildsycoca6`,
`dbus-update-activation-environment`, `chsh`), and routes `yay` through
`pacman` for the pacman-only smoke.
`pacman` for the AUR-free smoke.
In the `REAL_SMOKE=1` (default) install path, the harness additionally
**verifies the installed packages** (`test/verify_packages.sh`):