Merge pull request 'docs: publish the prose documentation to docs.lyrapup.pet' (#96) from docs/publish-to-docs-site into main
CI / flake (push) Successful in 4m9s
CI / flake (push) Successful in 4m9s
Reviewed-on: #96
This commit was merged in pull request #96.
This commit is contained in:
@@ -42,6 +42,17 @@ prettier formats `*.md`, so **documentation edits must be run through `nix fmt`*
|
|||||||
exactly like code. prettier re-aligns Markdown tables in particular; hand-editing
|
exactly like code. prettier re-aligns Markdown tables in particular; hand-editing
|
||||||
a table almost always leaves it non-conformant and fails the `formatting` check.
|
a table almost always leaves it non-conformant and fails the `formatting` check.
|
||||||
|
|
||||||
|
Prose documentation lives in `docs/` and is **published** to
|
||||||
|
<https://docs.lyrapup.pet/nixfiles/> by the separate `docs-site` repo, which
|
||||||
|
clones this one at build time. Two consequences when editing docs:
|
||||||
|
|
||||||
|
- A markdown file outside `docs/` (other than the root `README.md`) is not
|
||||||
|
synced and will never appear on the site. Put new prose in `docs/`.
|
||||||
|
- Links must follow the rules in the README's "Documentation" section: absolute
|
||||||
|
Gitea URLs to source files, relative links between `docs/` pages, and
|
||||||
|
absolute `docs.lyrapup.pet` URLs from the root README into `docs/`. The site
|
||||||
|
builds non-strict, so a broken link is silent.
|
||||||
|
|
||||||
The CI `formatting` step runs on **every** PR — including docs- and config-only
|
The CI `formatting` step runs on **every** PR — including docs- and config-only
|
||||||
changes — so a Markdown/YAML/JSON edit is format-checked before merge, not just
|
changes — so a Markdown/YAML/JSON edit is format-checked before merge, not just
|
||||||
after it lands on `main`. (The heavier `deadnix`/`statix`/`pre-commit` lints and
|
after it lands on `main`. (The heavier `deadnix`/`statix`/`pre-commit` lints and
|
||||||
|
|||||||
@@ -5,16 +5,16 @@ single flake.
|
|||||||
|
|
||||||
## Hosts
|
## Hosts
|
||||||
|
|
||||||
Defined in the host table in [`flake.nix`](./flake.nix):
|
Defined in the host table in [`flake.nix`](https://code.emmathe.dev/lyrathorpe/nixfiles/src/branch/main/flake.nix):
|
||||||
|
|
||||||
| Configuration | System | Machine |
|
| Configuration | System | Machine |
|
||||||
| --------------------- | ---------------- | ----------------------------------------------------------------------------------------------------------- |
|
| --------------------- | ---------------- | ---------------------------------------------------------------------------------------------------------------------------------- |
|
||||||
| `lyrathorpe-mbp` | `aarch64-linux` | MacBook Pro (Apple Silicon, Asahi) |
|
| `lyrathorpe-mbp` | `aarch64-linux` | MacBook Pro (Apple Silicon, Asahi) |
|
||||||
| `lyrathorpe-t400` | `x86_64-linux` | ThinkPad T400 — [install notes](./hosts/T400/README.md) |
|
| `lyrathorpe-t400` | `x86_64-linux` | ThinkPad T400 — [install notes](https://docs.lyrapup.pet/nixfiles/hosts/t400/) |
|
||||||
| `lyrathorpe-macpro31` | `x86_64-linux` | Mac Pro 3,1, desktop — [install notes](./hosts/MacPro31/README.md) |
|
| `lyrathorpe-macpro31` | `x86_64-linux` | Mac Pro 3,1, desktop — [install notes](https://docs.lyrapup.pet/nixfiles/hosts/macpro31/) |
|
||||||
| `emmathorpe-edaas` | `x86_64-linux` | Work WSL box (NixOS-WSL) — [notes](./hosts/EDaaS/README.md) |
|
| `emmathorpe-edaas` | `x86_64-linux` | Work WSL box (NixOS-WSL) — [notes](https://docs.lyrapup.pet/nixfiles/hosts/edaas/) |
|
||||||
| `lyrathorpe-rpi5` | `aarch64-linux` | Raspberry Pi 5 headless server: Docker host + nginx reverse proxy — [install notes](./hosts/RPi5/README.md) |
|
| `lyrathorpe-rpi5` | `aarch64-linux` | Raspberry Pi 5 headless server: Docker host + nginx reverse proxy — [install notes](https://docs.lyrapup.pet/nixfiles/hosts/rpi5/) |
|
||||||
| `lyrathorpe-mac` | `aarch64-darwin` | macOS (nix-darwin) — [notes](./hosts/Darwin/README.md) |
|
| `lyrathorpe-mac` | `aarch64-darwin` | macOS (nix-darwin) — [notes](https://docs.lyrapup.pet/nixfiles/hosts/darwin/) |
|
||||||
|
|
||||||
Shared layers: `home` (home-manager: shell, git, editor),
|
Shared layers: `home` (home-manager: shell, git, editor),
|
||||||
`modules/common-nixos.nix` (all NixOS hosts: fonts, nix-ld, caches),
|
`modules/common-nixos.nix` (all NixOS hosts: fonts, nix-ld, caches),
|
||||||
@@ -31,6 +31,7 @@ flake.nix # inputs, mkHost/mkDarwinHost, the host tables, dev shell
|
|||||||
flake.lock # pinned input revisions (Renovate keeps this fresh)
|
flake.lock # pinned input revisions (Renovate keeps this fresh)
|
||||||
modules/ # reusable NixOS system modules (see "Module catalogue")
|
modules/ # reusable NixOS system modules (see "Module catalogue")
|
||||||
home/ # home-manager profile: shell, git, editor, claude, secret-service, desktop, sway
|
home/ # home-manager profile: shell, git, editor, claude, secret-service, desktop, sway
|
||||||
|
docs/ # all prose documentation; published to docs.lyrapup.pet (see "Documentation")
|
||||||
users/ # identity registry + per-user home extras (see "Users")
|
users/ # identity registry + per-user home extras (see "Users")
|
||||||
hosts/<Name>/ # per-machine config: configuration.nix + hardware-configuration.nix
|
hosts/<Name>/ # per-machine config: configuration.nix + hardware-configuration.nix
|
||||||
lib/ # small pure helpers (currently the Catppuccin Mocha palette)
|
lib/ # small pure helpers (currently the Catppuccin Mocha palette)
|
||||||
@@ -50,7 +51,7 @@ host's table entry.
|
|||||||
|
|
||||||
## Module catalogue
|
## Module catalogue
|
||||||
|
|
||||||
Reusable NixOS modules under [`modules/`](./modules). "Imported by" says how a
|
Reusable NixOS modules under [`modules/`](https://code.emmathe.dev/lyrathorpe/nixfiles/src/branch/main/modules). "Imported by" says how a
|
||||||
module reaches a host: **baseModules** (every NixOS host, via `flake.nix`),
|
module reaches a host: **baseModules** (every NixOS host, via `flake.nix`),
|
||||||
**host table** (listed explicitly per host in `flake.nix`), or **transitively**
|
**host table** (listed explicitly per host in `flake.nix`), or **transitively**
|
||||||
(pulled in by another module's `imports`).
|
(pulled in by another module's `imports`).
|
||||||
@@ -86,7 +87,7 @@ declares what it is and the shared modules derive from that:
|
|||||||
are level 1). Ignored on non-x86_64 hosts.
|
are level 1). Ignored on non-x86_64 hosts.
|
||||||
- `features.claudeCode.enable` — derived: on unless the host is below
|
- `features.claudeCode.enable` — derived: on unless the host is below
|
||||||
x86-64-v2, because Claude Code's Node runtime needs SSE4.2/POPCNT.
|
x86-64-v2, because Claude Code's Node runtime needs SSE4.2/POPCNT.
|
||||||
[`home/claude.nix`](./home/claude.nix) reads it through home-manager's
|
[`home/claude.nix`](https://code.emmathe.dev/lyrathorpe/nixfiles/src/branch/main/home/claude.nix) reads it through home-manager's
|
||||||
`osConfig` and installs nothing (CLI, `CLAUDE.md`, output style, memory
|
`osConfig` and installs nothing (CLI, `CLAUDE.md`, output style, memory
|
||||||
symlink) when it is off. Hosts with no such option — the Darwin host and the
|
symlink) when it is off. Hosts with no such option — the Darwin host and the
|
||||||
standalone `homeConfigurations` — fall back to enabled.
|
standalone `homeConfigurations` — fall back to enabled.
|
||||||
@@ -101,12 +102,12 @@ editing every host.
|
|||||||
|
|
||||||
Identity is data, kept separate from the reusable modules:
|
Identity is data, kept separate from the reusable modules:
|
||||||
|
|
||||||
- [`users/registry.nix`](./users/registry.nix) — one entry per user (display
|
- [`users/registry.nix`](https://code.emmathe.dev/lyrathorpe/nixfiles/src/branch/main/users/registry.nix) — one entry per user (display
|
||||||
name, email, supplementary groups, authorized + signing keys). This is the
|
name, email, supplementary groups, authorized + signing keys). This is the
|
||||||
single source of identity; no user data is hardcoded in the modules.
|
single source of identity; no user data is hardcoded in the modules.
|
||||||
- Each host's table entry declares a `users` set keyed by username; every entry
|
- Each host's table entry declares a `users` set keyed by username; every entry
|
||||||
lists that user's home-module composition (the shared `./home` bundle plus any
|
lists that user's home-module composition (the shared `./home` bundle plus any
|
||||||
per-user modules, e.g. [`users/emmathorpe/work.nix`](./users/emmathorpe/work.nix))
|
per-user modules, e.g. [`users/emmathorpe/work.nix`](https://code.emmathe.dev/lyrathorpe/nixfiles/src/branch/main/users/emmathorpe/work.nix))
|
||||||
and optional per-host-user system bits such as `linger`.
|
and optional per-host-user system bits such as `linger`.
|
||||||
- `mkHost` builds each account from the registry and injects the matching
|
- `mkHost` builds each account from the registry and injects the matching
|
||||||
identity into that user's home config as the `identity` module arg. A host can
|
identity into that user's home config as the `identity` module arg. A host can
|
||||||
@@ -114,13 +115,13 @@ Identity is data, kept separate from the reusable modules:
|
|||||||
|
|
||||||
Per-user home extras live under `users/<name>/`:
|
Per-user home extras live under `users/<name>/`:
|
||||||
|
|
||||||
- [`users/lyrathorpe/home.nix`](./users/lyrathorpe/home.nix) — personal extras
|
- [`users/lyrathorpe/home.nix`](https://code.emmathe.dev/lyrathorpe/nixfiles/src/branch/main/users/lyrathorpe/home.nix) — personal extras
|
||||||
(an ssh host shortcut, gammastep coordinates); imported on Lyra's hosts.
|
(an ssh host shortcut, gammastep coordinates); imported on Lyra's hosts.
|
||||||
- [`users/emmathorpe/work.nix`](./users/emmathorpe/work.nix) — the work
|
- [`users/emmathorpe/work.nix`](https://code.emmathe.dev/lyrathorpe/nixfiles/src/branch/main/users/emmathorpe/work.nix) — the work
|
||||||
toolchain (kubectl/helm/az/etc.), work-only LSP servers, the corporate ssh
|
toolchain (kubectl/helm/az/etc.), work-only LSP servers, the corporate ssh
|
||||||
handling, and the headless Secret Service that gcx needs for its keychain
|
handling, and the headless Secret Service that gcx needs for its keychain
|
||||||
tokens (see [`home/secret-service.nix`](./home/secret-service.nix)); imports
|
tokens (see [`home/secret-service.nix`](https://code.emmathe.dev/lyrathorpe/nixfiles/src/branch/main/home/secret-service.nix)); imports
|
||||||
[`users/emmathorpe/renovate-review.nix`](./users/emmathorpe/renovate-review.nix),
|
[`users/emmathorpe/renovate-review.nix`](https://code.emmathe.dev/lyrathorpe/nixfiles/src/branch/main/users/emmathorpe/renovate-review.nix),
|
||||||
the daily headless Renovate-PR review timer (EDaaS only).
|
the daily headless Renovate-PR review timer (EDaaS only).
|
||||||
|
|
||||||
### Portable home (off-NixOS / external consumers)
|
### Portable home (off-NixOS / external consumers)
|
||||||
@@ -179,20 +180,20 @@ automatically.
|
|||||||
## Shell environment & keybindings
|
## Shell environment & keybindings
|
||||||
|
|
||||||
- Interactive shell features (zsh, tmux, git, ssh, CLI tools, auto-tmux):
|
- Interactive shell features (zsh, tmux, git, ssh, CLI tools, auto-tmux):
|
||||||
[`home/README.md`](./home/README.md).
|
[`docs/shell.md`](https://docs.lyrapup.pet/nixfiles/shell/).
|
||||||
- Which classic utilities are shadowed by modern replacements, and the flag
|
- Which classic utilities are shadowed by modern replacements, and the flag
|
||||||
differences that will bite:
|
differences that will bite:
|
||||||
[`home/README.md` → "Replacing the classics"](./home/README.md#replacing-the-classics).
|
[`docs/shell.md` → "Replacing the classics"](https://docs.lyrapup.pet/nixfiles/shell/#replacing-the-classics).
|
||||||
- All Sway / tmux / foot / zsh keyboard shortcuts:
|
- All Sway / tmux / foot / zsh keyboard shortcuts:
|
||||||
[`home/KEYBINDINGS.md`](./home/KEYBINDINGS.md).
|
[`docs/keybindings.md`](https://docs.lyrapup.pet/nixfiles/keybindings/).
|
||||||
|
|
||||||
## Login / greeter
|
## Login / greeter
|
||||||
|
|
||||||
Graphical (Sway) hosts log in through a Wayland greeter — `greetd` running
|
Graphical (Sway) hosts log in through a Wayland greeter — `greetd` running
|
||||||
ReGreet inside the `cage` kiosk compositor — implemented in
|
ReGreet inside the `cage` kiosk compositor — implemented in
|
||||||
[`modules/sway.nix`](./modules/sway.nix), gated on
|
[`modules/sway.nix`](https://code.emmathe.dev/lyrathorpe/nixfiles/src/branch/main/modules/sway.nix), gated on
|
||||||
`features.swayDesktop.enable` (the option is declared in
|
`features.swayDesktop.enable` (the option is declared in
|
||||||
[`modules/features.nix`](./modules/features.nix), so headless hosts
|
[`modules/features.nix`](https://code.emmathe.dev/lyrathorpe/nixfiles/src/branch/main/modules/features.nix), so headless hosts
|
||||||
can leave it off without importing `modules/sway.nix`). The greeter is forced to Dvorak
|
can leave it off without importing `modules/sway.nix`). The greeter is forced to Dvorak
|
||||||
to match the console and Sway session. Headless hosts (the WSL work box and the
|
to match the console and Sway session. Headless hosts (the WSL work box and the
|
||||||
Raspberry Pi server) keep plain TTY login. The target account needs a password
|
Raspberry Pi server) keep plain TTY login. The target account needs a password
|
||||||
@@ -212,6 +213,38 @@ To refresh them, copy the firmware extracted during the Asahi install (from
|
|||||||
[Asahi NixOS docs](https://github.com/tpwrules/nixos-apple-silicon)) into
|
[Asahi NixOS docs](https://github.com/tpwrules/nixos-apple-silicon)) into
|
||||||
`modules/firmware/` and commit with `git add -f`.
|
`modules/firmware/` and commit with `git add -f`.
|
||||||
|
|
||||||
|
## Documentation
|
||||||
|
|
||||||
|
All prose documentation lives in [`docs/`](https://code.emmathe.dev/lyrathorpe/nixfiles/src/branch/main/docs); this README is the overview. The pages are
|
||||||
|
published to **<https://docs.lyrapup.pet/nixfiles/>** by the
|
||||||
|
[`docs-site`](https://code.emmathe.dev/lyrathorpe/docs-site) repository, which clones this repo on
|
||||||
|
every build (on its own push, nightly, or on demand) and assembles the tree:
|
||||||
|
|
||||||
|
```
|
||||||
|
README.md -> docs/nixfiles/index.md # this file becomes the section landing page
|
||||||
|
docs/ -> docs/nixfiles/ # everything here, ordering from docs/.pages
|
||||||
|
```
|
||||||
|
|
||||||
|
Nothing is pushed from this side and there is no build step here — editing a
|
||||||
|
page and merging is all that is required. Files outside `docs/` (bar this
|
||||||
|
README) are **not** synced, so a doc kept next to the code it describes will
|
||||||
|
never appear on the site.
|
||||||
|
|
||||||
|
### Linking rules
|
||||||
|
|
||||||
|
The site has no copy of the source tree, and this README is republished at a
|
||||||
|
different depth from the rest of `docs/`. Both facts break naive relative
|
||||||
|
links, so:
|
||||||
|
|
||||||
|
| Link from | To | Use |
|
||||||
|
| ----------------- | ----------------------- | ---------------------------------------------------------------- |
|
||||||
|
| anywhere | a source file or dir | absolute `https://code.emmathe.dev/.../src/branch/main/…` |
|
||||||
|
| a page in `docs/` | another page in `docs/` | relative (`./keybindings.md`) — correct in Gitea and on the site |
|
||||||
|
| this README | a page in `docs/` | absolute `https://docs.lyrapup.pet/nixfiles/…` |
|
||||||
|
|
||||||
|
`mkdocs build` runs non-strict on the docs-site side, so a broken link fails
|
||||||
|
silently rather than failing the build. Check links by hand when moving a page.
|
||||||
|
|
||||||
## Development
|
## Development
|
||||||
|
|
||||||
A dev shell and a formatting/lint gate are wired through the flake:
|
A dev shell and a formatting/lint gate are wired through the flake:
|
||||||
@@ -227,7 +260,7 @@ A dev shell and a formatting/lint gate are wired through the flake:
|
|||||||
|
|
||||||
## CI
|
## CI
|
||||||
|
|
||||||
[`.gitea/workflows/ci.yaml`](./.gitea/workflows/ci.yaml) runs `nix flake check`
|
[`.gitea/workflows/ci.yaml`](https://code.emmathe.dev/lyrathorpe/nixfiles/src/branch/main/.gitea/workflows/ci.yaml) runs `nix flake check`
|
||||||
(formatting, `deadnix`, `statix`, the pre-commit hooks) and evaluates every
|
(formatting, `deadnix`, `statix`, the pre-commit hooks) and evaluates every
|
||||||
NixOS and Darwin host configuration on push/PR. It always runs (no `paths:`
|
NixOS and Darwin host configuration on push/PR. It always runs (no `paths:`
|
||||||
filter) so the required check never hangs pending; the heavy Nix steps are
|
filter) so the required check never hangs pending; the heavy Nix steps are
|
||||||
|
|||||||
+10
@@ -0,0 +1,10 @@
|
|||||||
|
# Section ordering for the MkDocs awesome-pages plugin on docs.lyrapup.pet.
|
||||||
|
# `index.md` is this repository's root README, copied in by the docs-site build
|
||||||
|
# before this directory is synced over the top. The trailing `...` picks up any
|
||||||
|
# page added later, so a new file needs no edit here.
|
||||||
|
nav:
|
||||||
|
- index.md
|
||||||
|
- shell.md
|
||||||
|
- keybindings.md
|
||||||
|
- hosts
|
||||||
|
- ...
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
title: Hosts
|
||||||
@@ -11,7 +11,7 @@ The day-to-day work environment. It layers the corporate Kubernetes / Helm /
|
|||||||
Terraform / cloud toolchain and a couple of work-only editor language servers on
|
Terraform / cloud toolchain and a couple of work-only editor language servers on
|
||||||
top of the shared home profile. The system config here is thin — it is mostly
|
top of the shared home profile. The system config here is thin — it is mostly
|
||||||
WSL plumbing; the user-facing tooling lives in
|
WSL plumbing; the user-facing tooling lives in
|
||||||
[`../../users/emmathorpe/work.nix`](../../users/emmathorpe/work.nix).
|
[`../../users/emmathorpe/work.nix`](https://code.emmathe.dev/lyrathorpe/nixfiles/src/branch/main/users/emmathorpe/work.nix).
|
||||||
|
|
||||||
## WSL specifics
|
## WSL specifics
|
||||||
|
|
||||||
@@ -34,7 +34,7 @@ WSL plumbing; the user-facing tooling lives in
|
|||||||
The host-table entry sets `users.emmathorpe.linger = true` so the user's
|
The host-table entry sets `users.emmathorpe.linger = true` so the user's
|
||||||
`systemd --user` instance stays alive without an open login session. That keeps
|
`systemd --user` instance stays alive without an open login session. That keeps
|
||||||
the daily headless **Renovate PR review** timer firing — defined in
|
the daily headless **Renovate PR review** timer firing — defined in
|
||||||
[`../../users/emmathorpe/renovate-review.nix`](../../users/emmathorpe/renovate-review.nix)
|
[`../../users/emmathorpe/renovate-review.nix`](https://code.emmathe.dev/lyrathorpe/nixfiles/src/branch/main/users/emmathorpe/renovate-review.nix)
|
||||||
(imported only from `work.nix`, so it exists on this machine alone). See that
|
(imported only from `work.nix`, so it exists on this machine alone). See that
|
||||||
file's header for the auth (Vertex AI ADC), triage policy, and caveats.
|
file's header for the auth (Vertex AI ADC), triage policy, and caveats.
|
||||||
|
|
||||||
@@ -53,7 +53,7 @@ name is not activatable".
|
|||||||
Home-manager's own `services.gnome-keyring` does not work here: it is
|
Home-manager's own `services.gnome-keyring` does not work here: it is
|
||||||
`WantedBy=graphical-session-pre.target`, which never activates on this headless
|
`WantedBy=graphical-session-pre.target`, which never activates on this headless
|
||||||
box, and it cannot unlock the keyring. See
|
box, and it cannot unlock the keyring. See
|
||||||
[`../../home/secret-service.nix`](../../home/secret-service.nix) for the full
|
[`../../home/secret-service.nix`](https://code.emmathe.dev/lyrathorpe/nixfiles/src/branch/main/home/secret-service.nix) for the full
|
||||||
rationale and the security trade-off of an auto-unlocked keyring.
|
rationale and the security trade-off of an auto-unlocked keyring.
|
||||||
|
|
||||||
Only the `secrets` component is started. The `ssh` component is deliberately off
|
Only the `secrets` component is started. The `ssh` component is deliberately off
|
||||||
@@ -31,7 +31,7 @@ Partition the disk GPT with an ESP (vfat).
|
|||||||
|
|
||||||
The stock card (**ATI Radeon HD 2600 XT** or **NVIDIA GeForce 8800 GT**,
|
The stock card (**ATI Radeon HD 2600 XT** or **NVIDIA GeForce 8800 GT**,
|
||||||
depending on the unit) has been replaced with an **NVIDIA Quadro P400** (Pascal,
|
depending on the unit) has been replaced with an **NVIDIA Quadro P400** (Pascal,
|
||||||
GP108). Everything driver-related lives in [`nvidia.nix`](./nvidia.nix):
|
GP108). Everything driver-related lives in [`nvidia.nix`](https://code.emmathe.dev/lyrathorpe/nixfiles/src/branch/main/hosts/MacPro31/nvidia.nix):
|
||||||
|
|
||||||
- **Driver branch 580** (`nvidiaPackages.legacy_580`), _not_ the nixpkgs default
|
- **Driver branch 580** (`nvidiaPackages.legacy_580`), _not_ the nixpkgs default
|
||||||
(`production`, currently 595.x). 580 is the last branch that supports
|
(`production`, currently 595.x). 580 is the last branch that supports
|
||||||
@@ -48,7 +48,7 @@ GP108). Everything driver-related lives in [`nvidia.nix`](./nvidia.nix):
|
|||||||
The driver is unfree, so it is **not in the binary cache**: the kernel module is
|
The driver is unfree, so it is **not in the binary cache**: the kernel module is
|
||||||
compiled on the machine, which on these 2008 Xeons is slow — budget for a long
|
compiled on the machine, which on these 2008 Xeons is slow — budget for a long
|
||||||
first rebuild and again after every kernel bump. The package names are
|
first rebuild and again after every kernel bump. The package names are
|
||||||
allowlisted in `unfreePackages` in [`flake.nix`](../../flake.nix).
|
allowlisted in `unfreePackages` in [`flake.nix`](https://code.emmathe.dev/lyrathorpe/nixfiles/src/branch/main/flake.nix).
|
||||||
|
|
||||||
Note the Mac Pro shows no EFI boot screen with a stock PC card (no Apple EFI
|
Note the Mac Pro shows no EFI boot screen with a stock PC card (no Apple EFI
|
||||||
ROM): the machine boots blind until KMS brings the display up. That is expected,
|
ROM): the machine boots blind until KMS brings the display up. That is expected,
|
||||||
@@ -113,7 +113,7 @@ it, so that should not happen).
|
|||||||
The dual Harpertown Xeons are **x86-64-v1** (SSE4.1, but no SSE4.2/POPCNT) and
|
The dual Harpertown Xeons are **x86-64-v1** (SSE4.1, but no SSE4.2/POPCNT) and
|
||||||
the Node runtime Claude Code ships on requires x86-64-v2. `configuration.nix`
|
the Node runtime Claude Code ships on requires x86-64-v2. `configuration.nix`
|
||||||
declares `features.cpu.microarchLevel = 1`, which switches the tool off through
|
declares `features.cpu.microarchLevel = 1`, which switches the tool off through
|
||||||
the fleet-wide gate in [`../../modules/features.nix`](../../modules/features.nix)
|
the fleet-wide gate in [`../../modules/features.nix`](https://code.emmathe.dev/lyrathorpe/nixfiles/src/branch/main/modules/features.nix)
|
||||||
— see the root README. Forcing `features.claudeCode.enable` on here is an
|
— see the root README. Forcing `features.claudeCode.enable` on here is an
|
||||||
evaluation error, not a broken install.
|
evaluation error, not a broken install.
|
||||||
|
|
||||||
@@ -4,13 +4,13 @@ Every keyboard shortcut configured across this desktop, and where it is defined.
|
|||||||
Everything here is managed declaratively through Nix — edit the listed file and
|
Everything here is managed declaratively through Nix — edit the listed file and
|
||||||
rebuild, never the generated dotfiles.
|
rebuild, never the generated dotfiles.
|
||||||
|
|
||||||
| Area | Defined in |
|
| Area | Defined in |
|
||||||
| ----------------- | --------------------------------------------------------------------------------------------------------------------- |
|
| ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||||
| Sway (compositor) | [`sway.nix`](./sway.nix) `config.keybindings` + `config.modes`, plus the home-manager Sway module's built-in defaults |
|
| Sway (compositor) | [`sway.nix`](https://code.emmathe.dev/lyrathorpe/nixfiles/src/branch/main/home/sway.nix) `config.keybindings` + `config.modes`, plus the home-manager Sway module's built-in defaults |
|
||||||
| tmux | [`shell.nix`](./shell.nix) `programs.tmux` |
|
| tmux | [`shell.nix`](https://code.emmathe.dev/lyrathorpe/nixfiles/src/branch/main/home/shell.nix) `programs.tmux` |
|
||||||
| zsh line editor | [`shell.nix`](./shell.nix) `programs.zsh.historySubstringSearch` |
|
| zsh line editor | [`shell.nix`](https://code.emmathe.dev/lyrathorpe/nixfiles/src/branch/main/home/shell.nix) `programs.zsh.historySubstringSearch` |
|
||||||
| Neovim | [`editor.nix`](./editor.nix) `programs.nixvim` |
|
| Neovim | [`editor.nix`](https://code.emmathe.dev/lyrathorpe/nixfiles/src/branch/main/home/editor.nix) `programs.nixvim` |
|
||||||
| foot (terminal) | foot package defaults — only colours are themed (in `sway.nix`) |
|
| foot (terminal) | foot package defaults — only colours are themed (in `sway.nix`) |
|
||||||
|
|
||||||
**Conventions**
|
**Conventions**
|
||||||
|
|
||||||
@@ -4,21 +4,21 @@ Everything the shell, terminal multiplexer, git and ssh do beyond their defaults
|
|||||||
and where each is defined. All of it is managed declaratively through
|
and where each is defined. All of it is managed declaratively through
|
||||||
home-manager — edit the listed file and rebuild, never the generated dotfiles.
|
home-manager — edit the listed file and rebuild, never the generated dotfiles.
|
||||||
|
|
||||||
Keyboard shortcuts have their own reference: [`KEYBINDINGS.md`](./KEYBINDINGS.md).
|
Keyboard shortcuts have their own reference: [`keybindings.md`](./keybindings.md).
|
||||||
|
|
||||||
| Area | Defined in |
|
| Area | Defined in |
|
||||||
| -------------------------------------- | ----------------------------------------------------- |
|
| -------------------------------------- | --------------------------------------------------------------------------------------------------------------------- |
|
||||||
| zsh, CLI tools, tmux, ssh, auto-tmux | [`shell.nix`](./shell.nix) |
|
| zsh, CLI tools, tmux, ssh, auto-tmux | [`shell.nix`](https://code.emmathe.dev/lyrathorpe/nixfiles/src/branch/main/home/shell.nix) |
|
||||||
| git (+ delta, commitizen) | [`git.nix`](./git.nix) |
|
| git (+ delta, commitizen) | [`git.nix`](https://code.emmathe.dev/lyrathorpe/nixfiles/src/branch/main/home/git.nix) |
|
||||||
| Neovim (nixvim) + LSP | [`editor.nix`](./editor.nix) |
|
| Neovim (nixvim) + LSP | [`editor.nix`](https://code.emmathe.dev/lyrathorpe/nixfiles/src/branch/main/home/editor.nix) |
|
||||||
| Claude Code (CLAUDE.md, style, memory) | [`claude.nix`](./claude.nix) |
|
| Claude Code (CLAUDE.md, style, memory) | [`claude.nix`](https://code.emmathe.dev/lyrathorpe/nixfiles/src/branch/main/home/claude.nix) |
|
||||||
| GUI apps, GTK/Firefox theming, cursor | [`desktop.nix`](./desktop.nix) (graphical hosts only) |
|
| GUI apps, GTK/Firefox theming, cursor | [`desktop.nix`](https://code.emmathe.dev/lyrathorpe/nixfiles/src/branch/main/home/desktop.nix) (graphical hosts only) |
|
||||||
|
|
||||||
Shared by every host via [`default.nix`](./default.nix); the work box also layers
|
Shared by every host via [`default.nix`](https://code.emmathe.dev/lyrathorpe/nixfiles/src/branch/main/home/default.nix); the work box also layers
|
||||||
[`work.nix`](../users/emmathorpe/work.nix) on top (its own ssh config, extra
|
[`work.nix`](https://code.emmathe.dev/lyrathorpe/nixfiles/src/branch/main/users/emmathorpe/work.nix) on top (its own ssh config, extra
|
||||||
packages, kubecolor, and the C#/Helm language servers). The committer identity (name, email,
|
packages, kubecolor, and the C#/Helm language servers). The committer identity (name, email,
|
||||||
signing key) comes from the user registry
|
signing key) comes from the user registry
|
||||||
([`../users/registry.nix`](../users/registry.nix)), not this module.
|
([`../users/registry.nix`](https://code.emmathe.dev/lyrathorpe/nixfiles/src/branch/main/users/registry.nix)), not this module.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -257,7 +257,7 @@ place of the old (inert) ALE.
|
|||||||
|
|
||||||
Leader is `Space`. LSP keymaps (`gd`, `gr`, `K`, `<leader>rn`, `<leader>ca`) and
|
Leader is `Space`. LSP keymaps (`gd`, `gr`, `K`, `<leader>rn`, `<leader>ca`) and
|
||||||
the file-tree toggle are listed in
|
the file-tree toggle are listed in
|
||||||
[`KEYBINDINGS.md`](./KEYBINDINGS.md#neovim). Add a universal language server by
|
[`keybindings.md`](./keybindings.md#neovim). Add a universal language server by
|
||||||
enabling it under `programs.nixvim.plugins.lsp.servers` in `editor.nix`;
|
enabling it under `programs.nixvim.plugins.lsp.servers` in `editor.nix`;
|
||||||
host-specific ones go in that host's module — the work box (`work.nix`) adds
|
host-specific ones go in that host's module — the work box (`work.nix`) adds
|
||||||
`omnisharp` (C#) and `helm_ls` (Helm), kept off the personal machines.
|
`omnisharp` (C#) and `helm_ls` (Helm), kept off the personal machines.
|
||||||
@@ -310,7 +310,7 @@ forced off there) but still runs the agent.
|
|||||||
|
|
||||||
## Claude Code
|
## Claude Code
|
||||||
|
|
||||||
Managed declaratively by [`claude.nix`](./claude.nix) on every host whose CPU
|
Managed declaratively by [`claude.nix`](https://code.emmathe.dev/lyrathorpe/nixfiles/src/branch/main/home/claude.nix) on every host whose CPU
|
||||||
can run it (the CLI is `pkgs.claude-code`, tracked to unstable via the flake
|
can run it (the CLI is `pkgs.claude-code`, tracked to unstable via the flake
|
||||||
overlay).
|
overlay).
|
||||||
|
|
||||||
@@ -332,7 +332,7 @@ and the standalone `homeConfigurations` — keep it enabled.
|
|||||||
break.
|
break.
|
||||||
|
|
||||||
**Memory is sourced from this repo.** The files in
|
**Memory is sourced from this repo.** The files in
|
||||||
[`claude/memory/`](./claude/memory) are the source of truth; they are symlinked
|
[`claude/memory/`](https://code.emmathe.dev/lyrathorpe/nixfiles/src/branch/main/home/claude/memory) are the source of truth; they are symlinked
|
||||||
read-only into `~/.claude/memory`, so recall works but the runtime "save a
|
read-only into `~/.claude/memory`, so recall works but the runtime "save a
|
||||||
memory" path does not. To add/change/remove a memory, edit `claude/memory/`
|
memory" path does not. To add/change/remove a memory, edit `claude/memory/`
|
||||||
(one file per memory + the `MEMORY.md` index) and rebuild — `CLAUDE.md` tells
|
(one file per memory + the `MEMORY.md` index) and rebuild — `CLAUDE.md` tells
|
||||||
+2
-2
@@ -31,7 +31,7 @@ in
|
|||||||
# are aliased over the original name (see shellAliases below); the rest keep
|
# are aliased over the original name (see shellAliases below); the rest keep
|
||||||
# their own name so nothing changes shape under a script's feet. The alias
|
# their own name so nothing changes shape under a script's feet. The alias
|
||||||
# map and the flag-compatibility differences are documented in
|
# map and the flag-compatibility differences are documented in
|
||||||
# ./README.md, "Replacing the classics".
|
# ../docs/shell.md, "Replacing the classics".
|
||||||
pkgs.dust # du: tree-shaped, size-sorted disk usage
|
pkgs.dust # du: tree-shaped, size-sorted disk usage
|
||||||
pkgs.dysk # df: mounted filesystems (duf is unmaintained upstream)
|
pkgs.dysk # df: mounted filesystems (duf is unmaintained upstream)
|
||||||
pkgs.procs # ps: process list with tree, ports and container columns
|
pkgs.procs # ps: process list with tree, ports and container columns
|
||||||
@@ -165,7 +165,7 @@ in
|
|||||||
# Shadow the classics with their modern equivalents. Only read-only
|
# Shadow the classics with their modern equivalents. Only read-only
|
||||||
# commands are shadowed: a wrong flag costs a retype, never data. The
|
# commands are shadowed: a wrong flag costs a retype, never data. The
|
||||||
# flag vocabularies are NOT compatible (`du -sh`, `df -h`, `ps aux` all
|
# flag vocabularies are NOT compatible (`du -sh`, `df -h`, `ps aux` all
|
||||||
# fail here) -- see ./README.md, "Replacing the classics".
|
# fail here) -- see ../docs/shell.md, "Replacing the classics".
|
||||||
#
|
#
|
||||||
# Blast radius is bounded by where these live: shellAliases lands in
|
# Blast radius is bounded by where these live: shellAliases lands in
|
||||||
# .zshrc, so only interactive zsh sees them. Scripts, `sudo <cmd>` and
|
# .zshrc, so only interactive zsh sees them. Scripts, `sudo <cmd>` and
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
# Apple Mac Pro 3,1 (Early 2008, dual Xeon Harpertown, x86_64). Desktop host:
|
# Apple Mac Pro 3,1 (Early 2008, dual Xeon Harpertown, x86_64). Desktop host:
|
||||||
# shared graphical/wired options live in ../../modules/desktop.nix; only
|
# shared graphical/wired options live in ../../modules/desktop.nix; only
|
||||||
# host-specific settings are here. Install notes (EFI booting, GPU, partitions):
|
# host-specific settings are here. Install notes (EFI booting, GPU, partitions):
|
||||||
# see ./README.md.
|
# see ../../docs/hosts/macpro31.md.
|
||||||
{ ... }:
|
{ ... }:
|
||||||
|
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
# ./docker.nix (Docker host with a network socket) and ./reverse-proxy.nix
|
# ./docker.nix (Docker host with a network socket) and ./reverse-proxy.nix
|
||||||
# (native nginx). The raspberry-pi-5 nixos-hardware profile (kernel, firmware,
|
# (native nginx). The raspberry-pi-5 nixos-hardware profile (kernel, firmware,
|
||||||
# device tree) and key-only sshd (../../modules/ssh.nix) are layered on in the
|
# device tree) and key-only sshd (../../modules/ssh.nix) are layered on in the
|
||||||
# flake host table. Install notes: see ./README.md.
|
# flake host table. Install notes: see ../../docs/hosts/rpi5.md.
|
||||||
{ ... }:
|
{ ... }:
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
# evaluates in CI before the Pi is provisioned. The machine will not boot from
|
# evaluates in CI before the Pi is provisioned. The machine will not boot from
|
||||||
# it as-is. On first install, regenerate this file on the device with
|
# it as-is. On first install, regenerate this file on the device with
|
||||||
# nixos-generate-config --root /mnt
|
# nixos-generate-config --root /mnt
|
||||||
# and replace this placeholder with the output (commit it). See ./README.md.
|
# and replace this placeholder with the output (commit it). See ../../docs/hosts/rpi5.md.
|
||||||
#
|
#
|
||||||
# Like every hardware-configuration.nix in this repo, this file is excluded from
|
# Like every hardware-configuration.nix in this repo, this file is excluded from
|
||||||
# the formatter and linters (see the pre-commit/treefmt excludes in flake.nix).
|
# the formatter and linters (see the pre-commit/treefmt excludes in flake.nix).
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# ThinkPad T400 (NixOS). Shared laptop options live in ../../modules/laptop.nix;
|
# ThinkPad T400 (NixOS). Shared laptop options live in ../../modules/laptop.nix;
|
||||||
# only host-specific settings are here. Install notes (boot variants, GPU,
|
# only host-specific settings are here. Install notes (boot variants, GPU,
|
||||||
# partitions): see ./README.md.
|
# partitions): see ../../docs/hosts/t400.md.
|
||||||
{ config, ... }:
|
{ config, ... }:
|
||||||
|
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user