# arch-system-hyprland

Reproducible Arch Linux + Hyprland install

## Layers

| Dir           | Layer             | Runs where            |
|---------------|-------------------|-----------------------|
| `01-install/` | base install      | live ISO (root)       |
| `02-system/`  | root provisioning | installed system      |
| `03-user/`    | user provisioning | installed system      |
| `04-secrets/` | share credentials | interactive prompts   |

Opt-in, run-once scripts that aren't part of the auto-provision loop live in an
`optional/` dir under their layer:
- `02-system/optional/kvm-bridge.sh` — libvirt LAN bridge (root)
- `03-user/optional/rme-proaudio.sh` — RME Fireface pro-audio routing (user)

## Rebuild a machine

Boot the official Arch ISO, get online, then clone this repo and run it:

```sh
# 1. boot the official Arch ISO, connect (iwctl for wifi; wired is automatic),
#    then fetch this repo:
git clone <repo-url> arch-system-hyprland && cd arch-system-hyprland

# 2. set target + options, then install the base:
vim system.conf                    # DISK, hostname, GPU, desktop/laptop…
./01-install/run.sh                # partitions + base install

# 3. reboot, log in, then provision:
sudo ~/arch-system-hyprland/02-system/run.sh
~/arch-system-hyprland/03-user/run.sh

# 4. (optional) enter share credentials interactively
sudo ~/arch-system-hyprland/04-secrets/run.sh
```

### Post Install

- install openframeworks
	- `tar -xf of_v0.12.0_linux64gcc6_release.tar.gz`
	- sudo run both scripts from unpacked archive: scripts/linux/archlinux/
		- ensure that all pacman packages installed there are avail. offline
	- install custom glfw-git from AUR, change in PKGBUILD:
		- line 44, set `DGLFW_BUILD_WAYLAND=OFF`, otherwise of doesnt show window
	- `mkdir ~/ofx && cp -r of_v0.12.0_linux64gcc6_release ~/ofx/`
	- cd into the new dir under ~/ofx/, run
		- `scripts/linux/compileOF.sh -j8`		
		- `scripts/linux/compilePG.sh -j8`
			- say yes to install the projectGenerator, then add `export PG_OF_PATH=/home/tobias/ofx/of_v0.12.0_linux64gcc6_release` to ~/.profile manually
		- optional: `scripts/linux/buildAllExamples.sh -j8`
		- rm example debug files `find ./examples -wholename "*bin/*_debug" -type f -print0 | xargs -0 /bin/rm -f`
	- the of dir must reside in the user folder because of permissions in /opt. copying to opt would work, but every time a new addon gets used by a project (the standard ones in /addons) new obj files are created in the ofx folder, which fails because users shall not have write perms in opt, so every make would have to be run as root at least once.. not a good solution.

- install davinci resolve manually
- install bitwig studio manually
- agisoft metashape manually
- configure wine manually

- configure yabridge manually
	```
	yabridgectl add "$HOME/.wine-vst/drive_c/Program Files/Steinberg/VstPlugins"
	yabridgectl add "$HOME/.wine-vst/drive_c/Program Files/Common Files/VST3"
	yabridgectl add "$HOME/.wine-vst/drive_c/Program Files/Common Files/CLAP"
	yabridgectl sync
	```

- copy vcvrack modules
- copy arduino libraries
- copy processing libraries
- install firefox extensions manually
    - ublock origin
    - floccus
    - Dark Reader
	- KeePassXC-Browser

- edit hyprland config to adjust for monitor setup, including color profiles under ~/.local/share/icc


## Package lists
`02-system/packages/pacman.txt` (native, system layer) and `03-user/packages/aur.txt`
(AUR, user layer) are the source of truth — edit them directly, or refresh from a
running machine:
```sh
pacman -Qqen > 02-system/packages/pacman.txt   # native explicit
pacman -Qqem > 03-user/packages/aur.txt        # explicit AUR
```
GPU drivers live in `graphics-amd.txt` / `graphics-intel.txt`, installed per the
`GPU=` set in `system.conf` (kept out of `pacman.txt` so a machine only gets its
own GPU's packages).

