docs: document the audit improvements; fix remaining stale work refs
Update the home README (editor plugins + format-on-save, btop/lazygit/ hyperfine/sd, git aliases, tmux extrakto, fonts/emoji coverage), KEYBINDINGS (telescope/trouble/comment), and the top README (shared module layers + nix-flake-check CI). Correct the last work/default.nix reference in default.nix. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -16,8 +16,11 @@ Defined in the host table in [`flake.nix`](./flake.nix):
|
|||||||
| `lyrathorpe-mac` | `aarch64-darwin` | macOS (nix-darwin) |
|
| `lyrathorpe-mac` | `aarch64-darwin` | macOS (nix-darwin) |
|
||||||
|
|
||||||
Shared layers: `lyrathorpe/home` (home-manager: shell, git, editor),
|
Shared layers: `lyrathorpe/home` (home-manager: shell, git, editor),
|
||||||
`system/modules/common-nixos.nix` (all NixOS hosts), and
|
`system/modules/common-nixos.nix` (all NixOS hosts: fonts, nix-ld, caches),
|
||||||
`system/modules/laptop.nix` (the physical laptops).
|
`system/modules/workstation.nix` (physical graphical hosts: audio, thermald,
|
||||||
|
earlyoom, fwupd), `system/modules/laptop.nix` (laptops: Wi-Fi, Bluetooth, power,
|
||||||
|
lid), and `system/modules/ssh.nix` (key-only sshd). The x86 hosts also pull
|
||||||
|
`nixos-hardware` profiles.
|
||||||
|
|
||||||
## Applying
|
## Applying
|
||||||
|
|
||||||
@@ -74,5 +77,6 @@ A dev shell and a formatting/lint gate are wired through the flake:
|
|||||||
|
|
||||||
## CI
|
## CI
|
||||||
|
|
||||||
[`.gitea/workflows/ci.yaml`](./.gitea/workflows/ci.yaml) gates `nixfmt`
|
[`.gitea/workflows/ci.yaml`](./.gitea/workflows/ci.yaml) runs `nix flake check`
|
||||||
formatting and evaluates every NixOS and Darwin host configuration on push/PR.
|
(formatting, `deadnix`, `statix`, the pre-commit hooks) and evaluates every
|
||||||
|
NixOS and Darwin host configuration on push/PR.
|
||||||
|
|||||||
@@ -177,6 +177,11 @@ across vim splits and tmux panes seamlessly. Everything else is stock vim, plus:
|
|||||||
| ---------------------- | --------------------------------------------------------- |
|
| ---------------------- | --------------------------------------------------------- |
|
||||||
| `,``,` | Toggle the file tree (nvim-tree) — comma pressed twice |
|
| `,``,` | Toggle the file tree (nvim-tree) — comma pressed twice |
|
||||||
| `Ctrl`+`h`/`j`/`k`/`l` | Move between vim splits / tmux panes (vim-tmux-navigator) |
|
| `Ctrl`+`h`/`j`/`k`/`l` | Move between vim splits / tmux panes (vim-tmux-navigator) |
|
||||||
|
| `<leader>ff` | Find files (telescope) |
|
||||||
|
| `<leader>fg` | Live grep (telescope) |
|
||||||
|
| `<leader>fb` | Switch buffer (telescope) |
|
||||||
|
| `<leader>xx` | Diagnostics list (trouble) |
|
||||||
|
| `gc` / `gcc` | Toggle comment (selection / line) |
|
||||||
| `gd` | Go to definition (LSP) |
|
| `gd` | Go to definition (LSP) |
|
||||||
| `gr` | List references (LSP) |
|
| `gr` | List references (LSP) |
|
||||||
| `K` | Hover documentation (LSP) |
|
| `K` | Hover documentation (LSP) |
|
||||||
@@ -184,7 +189,9 @@ across vim splits and tmux panes seamlessly. Everything else is stock vim, plus:
|
|||||||
| `<leader>ca` | Code action (LSP) |
|
| `<leader>ca` | Code action (LSP) |
|
||||||
|
|
||||||
LSP covers Nix, Lua, Python and Terraform (the work box adds C# and Helm);
|
LSP covers Nix, Lua, Python and Terraform (the work box adds C# and Helm);
|
||||||
completion (nvim-cmp) appears as you type. `:Git` opens fugitive.
|
completion (nvim-cmp) appears as you type. Files are formatted on save
|
||||||
|
(conform-nvim). `:Git` opens fugitive; gitsigns shows gutter signs. which-key
|
||||||
|
pops up after `<leader>` to show the rest.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
+44
-28
@@ -44,15 +44,18 @@ and the C#/Helm language servers).
|
|||||||
| `eza` | modern `ls` (drives the ls aliases) |
|
| `eza` | modern `ls` (drives the ls aliases) |
|
||||||
| `bat` | syntax-highlighting pager (Catppuccin Mocha theme); behaves like `cat` when piped; also the `MANPAGER` |
|
| `bat` | syntax-highlighting pager (Catppuccin Mocha theme); behaves like `cat` when piped; also the `MANPAGER` |
|
||||||
| `ripgrep` / `fd` | fast search (`rg`) and find (`fd`); also back `fzf` |
|
| `ripgrep` / `fd` | fast search (`rg`) and find (`fd`); also back `fzf` |
|
||||||
| `jq` / `btop` | JSON processor; resource monitor |
|
| `jq` | JSON processor |
|
||||||
| `gh` / `tea` | GitHub and Gitea (`code.emmathe.dev`) CLIs; `gh` uses SSH |
|
| `gh` / `tea` | GitHub and Gitea (`code.emmathe.dev`) CLIs; `gh` uses SSH |
|
||||||
| `nix-index` | `command-not-found`: an unknown command tells you which Nix package provides it (prebuilt DB, no manual indexing) |
|
| `nix-index` | `command-not-found`: an unknown command tells you which Nix package provides it (prebuilt DB, no manual indexing) |
|
||||||
| `comma` (`,`) | run an uninstalled program once: `, cowsay hi` |
|
| `comma` (`,`) | run an uninstalled program once: `, cowsay hi` |
|
||||||
| `nh` | nicer `nixos-rebuild`/`home-manager` with diffs; `$NH_FLAKE` set to the repo. No scheduled GC (it could reap paths a running generation still references) — collect garbage manually with `nh clean all` / `nix-collect-garbage -d` |
|
| `nh` | nicer `nixos-rebuild`/`home-manager` with diffs; `$NH_FLAKE` set to the repo. No scheduled GC (it could reap paths a running generation still references) — collect garbage manually with `nh clean all` / `nix-collect-garbage -d` |
|
||||||
|
| `btop` | resource monitor, themed Catppuccin Mocha (vendored theme) |
|
||||||
|
| `lazygit` | git TUI for staging/rebasing, themed to match (`git.nix`) |
|
||||||
|
| `hyperfine` / `sd` | command-line benchmarking; saner find-and-replace than sed |
|
||||||
|
|
||||||
**Theming:** `fzf`, `bat` and `git`'s `delta` pager are all Catppuccin Mocha,
|
**Theming:** `fzf`, `bat`, `btop`, `lazygit` and `git`'s `delta` pager are all
|
||||||
driven from the shared `../catppuccin-mocha.nix` palette / the catppuccin/bat
|
Catppuccin Mocha, driven from the shared `../catppuccin-mocha.nix` palette / the
|
||||||
theme.
|
catppuccin upstream themes.
|
||||||
|
|
||||||
**Env & defaults:** `xdg.enable` on; `PAGER`/`MANPAGER` (bat) set in `default.nix`
|
**Env & defaults:** `xdg.enable` on; `PAGER`/`MANPAGER` (bat) set in `default.nix`
|
||||||
(the editor owns `$EDITOR`/`$VISUAL`); `xdg.mimeApps` maps web→Firefox,
|
(the editor owns `$EDITOR`/`$VISUAL`); `xdg.mimeApps` maps web→Firefox,
|
||||||
@@ -80,17 +83,22 @@ non-interactive shells. Escape hatch: `NO_TMUX=1 <terminal>` opens a bare shell.
|
|||||||
| Clipboard | `set-clipboard on`; foot `terminal-features` advertise truecolor/sync/OSC52/title/cursor |
|
| Clipboard | `set-clipboard on`; foot `terminal-features` advertise truecolor/sync/OSC52/title/cursor |
|
||||||
|
|
||||||
**Plugins:** `sensible`, `vim-tmux-navigator` (Ctrl-h/j/k/l across vim ↔ tmux),
|
**Plugins:** `sensible`, `vim-tmux-navigator` (Ctrl-h/j/k/l across vim ↔ tmux),
|
||||||
`yank`, `catppuccin` (Mocha statusline), `resurrect` + `continuum`
|
`yank`, `extrakto` (`prefix`+`Tab`: fzf-grab paths/URLs/text from the pane into
|
||||||
|
the prompt), `catppuccin` (Mocha statusline), `resurrect` + `continuum`
|
||||||
(sessions auto-save and restore across reboots). The statusline draws Nerd-Font
|
(sessions auto-save and restore across reboots). The statusline draws Nerd-Font
|
||||||
glyphs — see Fonts.
|
glyphs — see Fonts.
|
||||||
|
|
||||||
## Fonts
|
## Fonts
|
||||||
|
|
||||||
**JetBrainsMono Nerd Font** is installed on every host (in `common-nixos.nix`,
|
**JetBrainsMono Nerd Font**, **Noto Sans** and **Noto Color Emoji** are
|
||||||
because tmux runs everywhere; the Mac installs it to `/Library/Fonts` via the
|
installed on every host (in `common-nixos.nix`, because tmux/terminals run
|
||||||
Darwin config). foot uses it as its main font automatically. iTerm2's font is a
|
everywhere; the Mac installs the Nerd Font to `/Library/Fonts` via the Darwin
|
||||||
GUI setting — set it to _JetBrainsMono Nerd Font_ (Settings → Profiles → Text →
|
config). `fonts.fontconfig.defaultFonts` maps the generic families so anything
|
||||||
Font) so the tmux statusline glyphs render instead of `?`.
|
asking for `monospace` gets the Nerd Font (with emoji fallback) — this also
|
||||||
|
gives the WSL box emoji/sans coverage it otherwise lacked. foot uses the Nerd
|
||||||
|
Font as its main font automatically. iTerm2's font is a GUI setting — set it to
|
||||||
|
_JetBrainsMono Nerd Font_ (Settings → Profiles → Text → Font) so the tmux
|
||||||
|
statusline glyphs render instead of `?`.
|
||||||
|
|
||||||
## Editor (Neovim)
|
## Editor (Neovim)
|
||||||
|
|
||||||
@@ -99,17 +107,23 @@ declaratively with **nixvim**, so the same plugins and config are baked in on
|
|||||||
every host. Migrated from plain vim; the practical gain is a real LSP stack in
|
every host. Migrated from plain vim; the practical gain is a real LSP stack in
|
||||||
place of the old (inert) ALE.
|
place of the old (inert) ALE.
|
||||||
|
|
||||||
| Feature | Notes |
|
| Feature | Notes |
|
||||||
| ------------- | -------------------------------------------------------------------------------------- |
|
| -------------- | -------------------------------------------------------------------------------------- |
|
||||||
| Colorscheme | Catppuccin Mocha (matches the terminal and the rest of the desktop) |
|
| Colorscheme | Catppuccin Mocha (matches the terminal and the rest of the desktop) |
|
||||||
| File tree | nvim-tree, toggled with `,,` (comma twice; was nerdtree) |
|
| File tree | nvim-tree, toggled with `,,` (comma twice; was nerdtree) |
|
||||||
| Indent guides | indent-blankline, on by default (was vim-indent-guides) |
|
| Fuzzy finder | telescope (+fzf-native): `<leader>ff` files, `<leader>fg` grep, `<leader>fb` buffers |
|
||||||
| Git | fugitive (`:Git …`) |
|
| Format on save | conform-nvim (nixfmt, stylua, ruff, shfmt, prettier, gofumpt; LSP fallback otherwise) |
|
||||||
| Pane nav | vim-tmux-navigator — `Ctrl`+`h/j/k/l` moves across vim splits and tmux panes |
|
| Git | fugitive (`:Git …`) + gitsigns gutter signs/blame |
|
||||||
| Syntax | tree-sitter (nix, lua, bash, markdown, groovy) — replaces `syntax enable` |
|
| Diagnostics | inline + trouble list (`<leader>xx`) |
|
||||||
| LSP | nvim-cmp completion + servers `nil` (Nix), `lua_ls`, `pyright` (Python), `terraformls` |
|
| Completion | nvim-cmp (LSP/buffer/path) with luasnip snippet expansion |
|
||||||
| Indentation | 2-wide hard tabs (`noexpandtab`, `tabstop`/`shiftwidth` = 2); line numbers on |
|
| Indent guides | indent-blankline, on by default (was vim-indent-guides) |
|
||||||
| Filetypes | `*Jenkinsfile` → groovy |
|
| Statusline | lualine (Catppuccin theme) |
|
||||||
|
| Editing | which-key hints, comment (`gc`/`gcc`), autopairs, treesitter textobjects |
|
||||||
|
| Pane nav | vim-tmux-navigator — `Ctrl`+`h/j/k/l` moves across vim splits and tmux panes |
|
||||||
|
| Syntax | tree-sitter (nix, lua, bash, markdown, groovy, c#, python, terraform, yaml) |
|
||||||
|
| LSP | nvim-cmp completion + servers `nil` (Nix), `lua_ls`, `pyright` (Python), `terraformls` |
|
||||||
|
| Indentation | 2-wide hard tabs (`noexpandtab`, `tabstop`/`shiftwidth` = 2); line numbers on |
|
||||||
|
| Filetypes | `*Jenkinsfile` → groovy |
|
||||||
|
|
||||||
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
|
||||||
@@ -121,14 +135,16 @@ host-specific ones go in that host's module — the work box (`work.nix`) adds
|
|||||||
## git
|
## git
|
||||||
|
|
||||||
Pager is **delta**. **commitizen** is installed on every host; `cz` defaults to
|
Pager is **delta**. **commitizen** is installed on every host; `cz` defaults to
|
||||||
Conventional Commits.
|
Conventional Commits. **lazygit** (themed) is the TUI. The commit-graph is kept
|
||||||
|
current (`gc`/`fetch.writeCommitGraph`) so `lg` stays fast.
|
||||||
|
|
||||||
| Aliases | |
|
| Aliases | |
|
||||||
| ------------------------ | ----------------------------------------------------------------- |
|
| ------------------------ | ------------------------------------------------------------------ |
|
||||||
| `st` `co` `sw` `br` `ci` | status / checkout / switch / branch / commit |
|
| `st` `co` `sw` `br` `ci` | status / checkout / switch / branch / commit |
|
||||||
| `last` `unstage` | last commit / unstage |
|
| `last` `unstage` | last commit / unstage |
|
||||||
| `lg` | graph log, all branches |
|
| `amend` `fixup` `undo` | amend-no-edit / `commit --fixup` / soft-reset HEAD~1 (keep staged) |
|
||||||
| `cz` `cc` | `git cz <sub>` (e.g. `git cz c`) and `git cc` → commitizen prompt |
|
| `lg` | graph log, all branches |
|
||||||
|
| `cz` `cc` | `git cz <sub>` (e.g. `git cz c`) and `git cc` → commitizen prompt |
|
||||||
|
|
||||||
| Behaviour | |
|
| Behaviour | |
|
||||||
| -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
| -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# Base home-manager profile, shared by every host (graphical or headless).
|
# Base home-manager profile, shared by every host (graphical or headless).
|
||||||
# Graphical hosts additionally import ./desktop.nix; the work host imports
|
# Graphical hosts additionally import ./desktop.nix; the work host imports
|
||||||
# ../../system/modules/work/default.nix. See the host table in flake.nix.
|
# ./work.nix. See the host table in flake.nix.
|
||||||
{ ... }:
|
{ ... }:
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
|
|||||||
Reference in New Issue
Block a user