[Sync] Lua Hyprland chain, licence cleanup
This commit is contained in:
1 parent
93b4f695ce
commit
47166d877f
183 files changed
+5618
-5839
No files matched your search
@@ -13,7 +13,7 @@ common/ # shared everywhere (mirrors $HOME): fish, nvim, bat, btop, tmux, pi,
|
||||
gui/ # GUI configs shared by graphical hosts: hypr, waybar, kitty, alacritty, mpv, zellij
|
||||
wm/ # desktop: 4K monitors, NVIDIA, cloud LLM (duskadiy), work aliases
|
||||
lw/ # laptop: no NVIDIA, roaming VPNs, network/LLM tools
|
||||
fl/ # KDE Plasma box: a few Hyprland overrides + llamacpp, evremap
|
||||
fl/ # KDE Plasma box (no Hyprland session): llamacpp, whisper, evremap
|
||||
bin/ # tooling (not a stow package): install.sh companions
|
||||
install.sh
|
||||
```
|
||||
@@ -22,6 +22,8 @@ A **headless** (terminal-only) machine has no overlay package — it runs `commo
|
||||
headless with `touch ~/.config/dots-headless` (a machine-local, hostname-independent marker); it then
|
||||
skips `gui` too, so the same terminal-only setup replicates across any number of machines. In other
|
||||
words `common` *is* the headless baseline; `gui` and the host packages layer graphical machines on top.
|
||||
Run it as a bare `./install.sh` — never `./install.sh common` (`common`/`gui` are layers, not hosts,
|
||||
and install.sh refuses them).
|
||||
|
||||
### How it deploys
|
||||
|
||||
@@ -68,9 +70,8 @@ cd ~/.dots
|
||||
`./install.sh -h` lists all options: `-n` dry-run, `-a` adopt (first run), `-D` unstow (revert),
|
||||
`-h` help. GUI hosts also need **HyDE installed** first — see *HyDE dependency* below.
|
||||
|
||||
Once per machine afterwards: `bat cache --build` (registers the repo's custom bat themes —
|
||||
without it every `bat` run warns `Unknown theme 'onedark'`), and `:Lazy restore` inside nvim
|
||||
(`restore` obeys the shared `lazy-lock.json` pins; `sync`/`update` would rewrite them).
|
||||
Once per machine afterwards: `:Lazy restore` inside nvim (`restore` obeys the shared
|
||||
`lazy-lock.json` pins; `sync`/`update` would rewrite them).
|
||||
nvim's treesitter (`main` branch) builds parsers via the `tree-sitter` CLI — `pacman -S
|
||||
tree-sitter-cli` first, or `:TSInstallAll` fails with `ENOENT ... 'tree-sitter'`.
|
||||
|
||||
@@ -125,32 +126,40 @@ Because configs are symlinks into the repo, **you almost never run `install.sh`
|
||||
|
||||
| Difference | Mechanism |
|
||||
|---|---|
|
||||
| Monitors | `<h>/.config/hypr/monitors.conf` (sourced by the shared `hyprland.conf`) |
|
||||
| NVIDIA | `wm/.config/hypr/nvidia.conf`, pulled in by wm's `host.conf` (fl/lw have no NVIDIA) |
|
||||
| Monitors | `<h>/.config/hypr/host.lua` (`hl.monitor` + workspace pins; loaded by the shared `hyprland.lua`) |
|
||||
| NVIDIA | the NVIDIA block in `wm/.config/hypr/host.lua` (lw has no NVIDIA) |
|
||||
| Shell aliases | shared `config.fish` sources `~/.config/fish/host.fish` (per host) |
|
||||
| Bash extras | shared `.bashrc` sources `~/.bashrc.host` (optional, per host) |
|
||||
| fl's Hyprland | overrides ~9 hypr files (`hyprland.conf`, keybinds, windowrules, theme colors, monitors); inherits the rest from `gui` |
|
||||
| Unique apps | in the owning host overlay (fl: llamacpp/evremap; lw: xremap) |
|
||||
|
||||
`aichat`, `pi`, and `opencode` share one config in `common` (LAN-first, with the cloud provider also
|
||||
listed so any host can switch). `lw` carries a host overlay of all three that adds its local CPU
|
||||
llama.cpp models — mirror edits between the common and `lw` copies. The opencode tree is documented
|
||||
listed so any host can switch). `lw` and `wm` each carry a host overlay of all three that adds their
|
||||
own llama.cpp models (lw: CPU; wm: the GTX 1080 Ti router, plus the duskadiy default) — mirror
|
||||
edits between the common copy and both overlays. The opencode tree is documented
|
||||
in `common/.config/opencode/README.md`.
|
||||
|
||||
## HyDE dependency (important for GUI hosts)
|
||||
|
||||
The Hyprland config is [HyDE](https://github.com/HyDE-Project/HyDE)-based. `gui/.config/hypr/*` is
|
||||
your customization layer, but it **sources HyDE's framework**:
|
||||
`source = ~/.local/share/hyde/hyprland.conf` — which defines `$mainMod` and other variables. So a GUI
|
||||
host must have **HyDE installed**, or Hyprland fails to start (`source globbing error` +
|
||||
`invalid mod $mainMod`).
|
||||
The Hyprland config is [HyDE](https://github.com/HyDE-Project/HyDE)-based, since 2026-08-21 through
|
||||
HyDE 26.x's **Lua chain** (live on wm since then and on lw since 2026-11; merged into `main`
|
||||
2026-11-09 — see `LUA-PORT.md`). The repo pins `HYPRLAND_CONFIG` at
|
||||
`~/.local/share/hypr/hyde.lua` in two files — `gui/.config/fish/conf.d/00-hypr-config.fish`
|
||||
(SDDM/fish session path) and `gui/.config/uwsm/env-hyprland.d/10-dots.sh` (uwsm path) — and hyde.lua
|
||||
loads HyDE's `lua/` modules, then the repo's override `gui/.config/hypr/hyprland.lua`, which pulls in
|
||||
`dots_rules.lua` + `dots_binds.lua` (split out of it) and the per-host `host.lua`. So a GUI host must have **HyDE installed** — it ships `hyde.lua` and the
|
||||
modules, both overwritten on HyDE updates; the dots layer lives only in `~/.config/hypr/*.lua`, which
|
||||
survives them. `LUA-PORT.md` has the full map, flip recipe and rollback.
|
||||
|
||||
That file used to be generated-and-untracked, but **HyDE 26.x deploys neither it nor `hyde.conf`**,
|
||||
so since the 2026-08-14 audit both are **tracked pins** in `gui/.local/share/hyde/` — the one
|
||||
deliberate exception to the generated-files-are-never-tracked rule below, interim until the Lua port.
|
||||
After pulling that audit, a machine must run **`./bin/hyde-materialize.sh` before `./install.sh`**:
|
||||
the newly-untracked files leave dangling stow symlinks otherwise, and hypr/hyprlock treat a missing
|
||||
`source =` as a hard parse error.
|
||||
The legacy hyprlang chain (`gui/.config/hypr/*.conf`, plus the two `~/.local/share/hyde/
|
||||
{hyprland,hyde}.conf` framework copies HyDE 26.x stopped shipping) was **retired 2026-09-10**
|
||||
(`LUA-PORT.md` step 8) once the Lua soak closed — nothing reads a `.conf` in Lua mode. One line
|
||||
survives: `gui/.local/share/hyde/hyde.conf` keeps `$default.FONT`, the fallback HyDE's rofi/menu
|
||||
scripts resolve FONT through (`get_hyprConf`) when the theme's `hypr.theme` names no font. Rolling
|
||||
back to hyprlang now means restoring those files from history (`git restore --source=bddbbf3 -- gui/.config/hypr wm/.config/hypr lw/.config/hypr gui/.local/share/hyde`), `./install.sh <host>`,
|
||||
repointing the two pins and relogging; d851213 is the last hyprlang `main` (the port merged
|
||||
2026-11-09). After pulling the 2026-08-14 audit, a machine must run
|
||||
**`./bin/hyde-materialize.sh` before `./install.sh`**: the newly-untracked files leave dangling stow
|
||||
symlinks otherwise, and hypr/hyprlock treat a missing `source =` as a hard parse error.
|
||||
|
||||
- Install/update HyDE with its own installer (`~/HyDE/Scripts/install.sh`); it also pulls the
|
||||
required apps (`xdg-desktop-portal-hyprland`, `xdg-desktop-portal-gtk`, `hyprpolkitagent`).
|
||||
@@ -172,8 +181,8 @@ track neither. HyDE-managed customization goes via:
|
||||
**The custom cava rig is NOT HyDE-managed**: `layouts/custom.jsonc` + `layouts/custom.css` form a
|
||||
self-contained two-bar config run by `wbar` (`gui/.local/bin/wbar`) as the supervised systemd
|
||||
user unit `dots-waybar.service` (`Restart=always` — waybar 0.15.0 dies on every DP-2 link
|
||||
drop/return, and as a bare process nothing relaunched it). The `exec-once` in `userprefs.conf`,
|
||||
the Ctrl+Alt+W / Super+Shift+R binds and the `wbar` command all go through it; **never `killall
|
||||
drop/return, and as a bare process nothing relaunched it). `hc.start.bar` in `hyprland.lua`, the
|
||||
Ctrl+Alt+W / Super+Shift+R binds and the `wbar` command all go through it; **never `killall
|
||||
waybar`** — systemd brings it back in seconds and a raw relaunch beside it means two bars
|
||||
(`wbar toggle|restart|reload|stop`). **Never route it through `hyde-shell waybar --set`** — waybar.py would clobber the repo's files as above. HyDE only reads
|
||||
from `layouts/`, which is what makes them safe to track. On a rig host, HyDE's own bar must be
|
||||
@@ -181,10 +190,10 @@ disabled once, or **two bars appear at every login** — and the launcher differ
|
||||
|
||||
- current HyDE: systemd user unit `hyde-<XDG_SESSION_DESKTOP>-bar.service` (auto-restarting) —
|
||||
`systemctl --user stop <unit>; systemctl --user mask <unit>`.
|
||||
- older (pre-unit) HyDE, e.g. wm's: `exec-once = $start.BAR` in HyDE's generated `hyprland.conf`
|
||||
— neutralized by `$start.BAR=` in `gui/.config/hypr/hyde.conf` (empty = unset; hyde.conf is
|
||||
sourced before that exec-once). Current HyDE's `variables.conf` re-sets `$start.BAR`, so that
|
||||
line stops working after an update — see HYDE-UPDATE.md step 4.
|
||||
- older (pre-unit) HyDE: `exec-once = $start.BAR` in HyDE's generated `hyprland.conf` — the
|
||||
hyprlang-era dots blanked it with `$start.BAR=` in `gui/.config/hypr/hyde.conf`; that file went
|
||||
with the chain (LUA-PORT.md step 8), and under Lua the lever is `hc.start.bar` in
|
||||
`hyprland.lua`, which launches the rig itself — see HYDE-UPDATE.md step 4.
|
||||
|
||||
Note: the Arch `waybar` build has **no native `cava`** module — the rig uses the script module
|
||||
`custom/cava` running `cava-waybar.sh` (self-contained, no HyDE dependency).
|
||||
@@ -225,11 +234,31 @@ The repo is GPL-3.0 (`LICENSE`). What that does and doesn't cover:
|
||||
[HyDE](https://github.com/HyDE-Project/HyDE)** (and, further back, legacy Hyprdots). HyDE is
|
||||
itself GPL-3.0, so the derivation and this repo's licence agree — no conflict, and the
|
||||
Hyprdots-era ASCII banners in those files are left in place as attribution.
|
||||
- **`common/.config/aichat/dark.tmTheme`** is *One Half Dark* by Son A. Pham, **MIT**. The
|
||||
licence header at the top of that file is the attribution — don't strip it.
|
||||
- **Colour themes**: the repo ships no third-party theme files, so it needs no notices file.
|
||||
Each app gets its theme from somewhere else:
|
||||
- **kitty**: HyDE renders `theme.conf` from the current HyDE theme. `kitty.conf` adds only
|
||||
this repo's own background, foreground and tab bar.
|
||||
- **aichat**: *One Half Dark* (MIT, by Son A. Pham) is downloaded from upstream at install
|
||||
time by `bin/dots-themes-fetch.sh`, pinned by commit and checksum.
|
||||
- **cava**: it writes its own shaders and themes.
|
||||
- **zellij and bat**: their gruvbox-dark and OneHalfDark themes are built in.
|
||||
|
||||
The pi, opencode and alacritty themes are the repo's own files. They hold colour values from
|
||||
the Catppuccin Mocha and SynthWave '84 palettes (both MIT, by Catppuccin and Robb Owen),
|
||||
mapped onto each app's keys. Credit, gladly given: a set of colour values isn't a copy of
|
||||
either licensed theme. Keep it that way: a theme file copied in brings its licence notice
|
||||
with it.
|
||||
- **`gui/.local/share/icons/dots-icons/`** ships only its `index.theme`. Its tray/status icons
|
||||
are symlinks into each host's own *Tela-circle-dracula* (by vinceliuice, installed by HyDE),
|
||||
made at install time by `bin/dots-icons-link.sh`. Tela-circle publishes no licence, so the
|
||||
repo doesn't redistribute its SVGs.
|
||||
- **`common/.config/fastfetch/pngs/`** holds project and distro marks (Arch, the Open Source
|
||||
Initiative and Open Source Hardware logos, …). Trademarks aren't relicensable, so GPL-3 does
|
||||
not extend to them; they are bundled as nominative use, the way most dotfiles repos do.
|
||||
- **`gui/.config/hypr/hyprlock/assets/`** — the lock screen background and logo. EXIF is
|
||||
stripped, so the files carry no provenance; confirm these are yours to redistribute before
|
||||
publishing, or swap them for something you know the origin of.
|
||||
Initiative and Open Source Hardware logos). Trademarks aren't relicensable, so GPL-3 does
|
||||
not extend to them; they are bundled as nominative use, the way most dotfiles repos do. The
|
||||
dmz.rs rabbit (`dmz-rabbit*.png`) and the decentrala.org network logo (`network*.png`) are
|
||||
the community's own marks, used with permission. `neonom.png` is the repo owner's own render
|
||||
of the Om glyph, offered as **CC0**.
|
||||
- **`gui/.config/hypr/hyprlock/assets/`** — the lock screen background and logo are AI-generated
|
||||
by the repo owner (February 2026). They sit outside the GPL-3 grant and are offered as **CC0**.
|
||||
The keyhole in `background.jpg` is an AI-altered rendition of the Open Source Initiative mark,
|
||||
used purely decoratively; no affiliation with or endorsement by the OSI is implied.
|
||||
Reference in new issue
Block a user