feat: nomarchy.lib.mkFlake — one-call downstream wrapper + hardware profiles
Downstream users now own only system.nix and home.nix; their flake.nix is generated once from the template and never hand-edited. mkFlake (lib.nix) wires both layers and maps hardwareProfile = "<name>" to nixos-hardware modules (new input, pinned here, nixpkgs follows ours; unknown names fail with did-you-mean suggestions). Flake checks evaluate the template through mkFlake — including a real profile — so drift fails `nix flake check`. Also from the live-VM testing session: install the home-manager CLI in the live ISO and pin flake inputs transitively (offline theme switching needs stylix's own inputs too), plus swww→awww doc updates. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
40
README.md
40
README.md
@@ -23,7 +23,7 @@ partial.
|
||||
│ Stylix → GTK, Qt, cursors, fonts │
|
||||
└───────────────────────────────────┬──────────────────────────────────────┘
|
||||
▼
|
||||
wallpaper via swww (the one runtime piece:
|
||||
wallpaper via awww (the one runtime piece:
|
||||
applied post-switch + at session start, `bg next` cycles)
|
||||
```
|
||||
|
||||
@@ -34,6 +34,7 @@ Flat on purpose. Two module trees, one options file each, no hidden layers.
|
||||
```
|
||||
.
|
||||
├── flake.nix # inputs + the downstream API (exports below)
|
||||
├── lib.nix # nomarchy.lib.mkFlake — one-call downstream wrapper
|
||||
├── theme-state.json # ★ THE single source of truth (git-tracked!)
|
||||
├── themes/ # 21 presets: <slug>.json + optional <slug>/ assets
|
||||
│ ├── nord.json # palette (required, works alone)
|
||||
@@ -94,8 +95,30 @@ mkdir my-machine && cd my-machine
|
||||
nix flake init -t github:YOUR-USER/nomarchy
|
||||
```
|
||||
|
||||
You own three files: `system.nix`, `home.nix`, and **your own
|
||||
`theme-state.json`**. Two deliberately separate rebuild paths:
|
||||
You own two files day-to-day: `system.nix` and `home.nix` (plus
|
||||
`theme-state.json`, written by the CLI). Your `flake.nix` is set up once —
|
||||
later by the installer — and never hand-edited; it's a single call:
|
||||
|
||||
```nix
|
||||
outputs = { nomarchy, ... }:
|
||||
nomarchy.lib.mkFlake {
|
||||
src = ./.;
|
||||
username = "me";
|
||||
hardwareProfile = "framework-13-7040-amd"; # optional, nixos-hardware name
|
||||
};
|
||||
```
|
||||
|
||||
| `mkFlake` arg | Default | Purpose |
|
||||
|---|---|---|
|
||||
| `src` | — (required) | Your flake directory (`./.`) |
|
||||
| `username` | — (required) | Login name; flows into `system.nix` and names the HM config |
|
||||
| `hardwareProfile` | `null` | A [nixos-hardware](https://github.com/NixOS/nixos-hardware) module name (pinned + tested by Nomarchy; unknown names fail with suggestions) |
|
||||
| `system` | `"x86_64-linux"` | Platform |
|
||||
|
||||
(Power users can skip `mkFlake` and wire `nixosModules.nomarchy` /
|
||||
`homeModules.nomarchy` / `overlays.default` by hand — the wrapper is sugar.)
|
||||
|
||||
Two deliberately separate rebuild paths:
|
||||
|
||||
```sh
|
||||
sudo nixos-rebuild switch --flake .#default # system: rare
|
||||
@@ -141,9 +164,10 @@ fonts. No runtime patching means no partial states, and `home-manager
|
||||
generations` is also your theme history. Waybar even restyles in place: it
|
||||
re-reads `style.css` when the symlink flips.
|
||||
|
||||
The **wallpaper** is the one runtime piece (swww is imperative; nothing in
|
||||
Nix consumes the path): applied at session start and after every switch via
|
||||
a tiny activation hook, cycled instantly with `bg next`.
|
||||
The **wallpaper** is the one runtime piece (awww — nixpkgs' swww — is
|
||||
imperative; nothing in Nix consumes the path): applied at session start and
|
||||
after every switch via a tiny activation hook, cycled instantly with
|
||||
`bg next`.
|
||||
|
||||
### Per-theme app assets (`themes/<slug>/`)
|
||||
|
||||
@@ -192,6 +216,6 @@ workspaces · `Print` region screenshot.
|
||||
re-copy on every state write is the main eval tax), then pre-built theme
|
||||
variants if still needed
|
||||
- Plymouth + SDDM/greeter theming from the same JSON
|
||||
- Interactive installer on the live ISO (disko BTRFS+LUKS, hardware
|
||||
profiles) — port from old_distro
|
||||
- Interactive installer on the live ISO (disko BTRFS+LUKS, DMI →
|
||||
`hardwareProfile` autodetection feeding `mkFlake`) — port from old_distro
|
||||
- `hyprlock`/`hypridle`, swayosd, launch-or-focus UX scripts
|
||||
|
||||
Reference in New Issue
Block a user