3.4 KiB
3.4 KiB
NixOS configuration instructions
Desktop
- TODO: Verify this path after the NixOS configuration is migrated.
When adding a graphical application, add a
window-rewriteicon mapping inmodules/desktop/session/waybar.nix. The workspace indicator uses this mapping to show an application icon instead of the generic default glyph. Match the mapping on the window class. Runhyprctl clients -j | jq -r '.[].class' | sort -uto list classes in the running session. - TODO: Verify this path after the NixOS configuration is migrated.
Set Hyprland session environment variables in
modules/desktop/session/hyprland/default.nixwithenv = KEY,VALUE.home.sessionVariablesdo not reach the Hyprland session because UWSM does not sourcehm-session-vars.sh. Source cursor values fromconfig.stylix.cursor. SetXCURSOR_*andHYPRCURSOR_*to the same theme for Bibata.
Firefox
- Manage Firefox search engines through
programs.firefox.searchwithforce = true. Hide built-in engines with<engine>.metaData.hidden = truebecause omission does not remove them. Use current engine ids, such asdefault = "ddg"instead of"DuckDuckGo". Decode the builtsearch.json.mozlz4withmozlz4a -d <search.json.mozlz4>to check the result. - Avoid Home Manager Firefox extension settings unless the whole profile can use the legacy extension-storage backend.
Any non-empty
profiles.<name>.extensions.settings.<id>.settingssetsextensions.webextensions.ExtensionStorageIDB.enabled = falsefor the whole profile.
Neovim
- Nixvim's flake input follows the root nixpkgs source, but its Home Manager module does not reuse the host's
pkgsinstance. Keepprograms.nixvim.nixpkgs.useGlobalPackages = true. That setting makes Nixvim use the shared package set without warning that its source default changed.
AI tooling
- Use produced literals for Herdr key names that include shifted punctuation.
For example, use
prefix+<instead ofprefix+shift+comma. - Put global Pi extension sources in
configs/nixos/modules/shell/pi/extensions/. Home Manager deploys them to~/.pi/agent/extensions/. - Treat Home Manager-managed Pi extension, prompt, and skill directories as generated output. Do not edit those directories except for throwaway development or local experiments. Promote finished work into the NixOS configuration before treating it as deployed.
Gotchas
- Guest modules are host-agnostic wiring, while host files own deployment-specific service configuration such as served volumes and host paths.
For example,
guests/copyparty.nixshould expose options and translate them into guest mounts/service settings, whilehosts/pikachu/default.nixchooses/inbox,/media, and their backing paths. Guest addresses and routes are host-level configuration because a guest module can be used on multiple hosts. sops.secrets.<name>.ownermust name a user known on the decrypting host. Do not set the owner to a guest-only service user unless the host also declares that user. Use a host-visible owner plus a shared group mode when the guest service can read the decrypted secret file through its group.- Pikachu deploys from the monorepo checkout copied to
~/dev. Do not use the old~/wrk/dotfilespath for remote rebuild commands. - Do not hand-author
hardware-configuration.nixfor a host that has not been generated on that machine. Generate it on the target system or live ISO, then stage it before evaluating the flake.