Files
nixfiles/docs/hosts/t400.md
T
Emma Thorpe dcc13f94e0
CI / flake (push) Skipped
CI / flake (pull_request) Successful in 4m21s
docs: move prose documentation into docs/ so the docs site publishes it
The docs-site build syncs this repo's README.md and docs/ into the site
tree; nothing else is copied. All prose apart from the README therefore lived
outside the sync and never appeared on https://docs.lyrapup.pet/nixfiles/, and
the one page that did publish carried 18 link targets that resolved to nothing.

Moves:

  home/README.md           -> docs/shell.md
  home/KEYBINDINGS.md      -> docs/keybindings.md
  hosts/<Name>/README.md   -> docs/hosts/<name>.md

docs/.pages and docs/hosts/.pages give the awesome-pages plugin an explicit
order; new pages are picked up by the trailing '...' without an edit.

Links are rewritten so a single URL is correct in both Gitea and the published
site: absolute Gitea source URLs for .nix files and directories, relative links
between pages under docs/, and absolute docs.lyrapup.pet URLs from the root
README, which the build republishes at a different depth from the rest of the
tree. In-code comments that pointed at a moved README are updated to the new
path.

The README gains a Documentation section covering the sync contract and the
linking rules, and CLAUDE.md carries the short version so future edits do not
reintroduce unsynced pages or dead links.

Verified by reproducing the docs-site assembly locally against its pinned
toolchain (mkdocs 1.6.1, mkdocs-material 9.7.7, awesome-pages 2.10.1): pages
render at the URLs used above and in the declared order.
2026-08-19 17:38:50 +01:00

3.4 KiB

ThinkPad T400 — install notes

Flake host: lyrathorpe-t400. Files: configuration.nix, the boot-*.nix variants, and hardware-configuration.nix.

Hardware configuration

hardware-configuration.nix here is a hand-written placeholder. On the real machine, run nixos-generate-config, replace the file, and commit it. It assumes by-label partitions — root nixos (ext4) and swap — so either label them at install time or swap in the generated UUIDs.

Bootloader — import the module matching the flashed firmware

configuration.nix imports exactly one boot module. Default is boot-bios.nix; switch by commenting it out and uncommenting the relevant alternative.

Firmware Module Notes
Stock Lenovo BIOS, or coreboot + SeaBIOS payload boot-bios.nix GRUB on the MBR. Set device to the real install disk (/dev/sda by default). MBR/legacy layout.
coreboot + GRUB payload boot-coreboot-grub.nix GRUB is config-only (device = "nodev"); NixOS does not write to a disk. Your coreboot grub.cfg (in the flash chip) must search for and configfile the on-disk /boot/grub/grub.cfg, or chainload the disk's GRUB.
coreboot + Tianocore/edk2 (UEFI) payload boot-coreboot-uefi.nix systemd-boot. canTouchEfiVariables = true (coreboot honours NVRAM writes). The module declares its own ESP (/boot vfat, label ESP) — when you regenerate hardware-configuration.nix, do not let it also define /boot. Create + label an ESP vfat partition (GPT).

Graphics

This unit has the optional discrete ATI Mobility Radeon HD 3470 (RV620). The open radeon KMS driver is loaded in the initrd for early modesetting; firmware comes from enableRedistributableFirmware.

The T400 has switchable graphics (discrete ATI + Intel GMA 4500MHD). Select Discrete in the firmware's graphics setting so only the ATI is live. If you run Integrated instead, the Intel i915 driver takes over with no config change and radeon stays idle.

Login

Graphical login via a Wayland greeter — greetd running ReGreet inside the cage kiosk compositor — configured centrally in ../../modules/sway.nix for every Sway host (gated on features.swayDesktop.enable). The greeter is forced to the Dvorak layout to match the console and Sway session. Set the user password (passwd lyrathorpe) after install, or the greeter cannot authenticate. Requires working radeon/i915 KMS (see Graphics).

Apply

sudo nixos-rebuild switch --flake .#lyrathorpe-t400