1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
# Dotfiles Repository Notes
This is a personal dotfiles repository for an Arch Linux host and an Ubuntu
remote-dev VM. The repo root is a chezmoi source directory.
## Layout
- Home-directory targets use chezmoi naming conventions: `dot_` for leading
dots, `private_` for restricted permissions, and `executable_` for scripts.
- `etc/` contains host `/etc` source files deployed by the repo's onchange
script.
- `meta/` contains flat package lists. Keep one package per line and use short
comments only when they help future maintenance.
- `systemd-units/` tracks enabled system and user units in plain text.
- `firefox/` and `thunderbird/` hold browser and mail profile source files.
- `nix/` owns Home-Manager profiles and the repo development shell.
- `.githooks/` contains hooks installed by the repo recipes.
## Package Ownership
- Pacman owns system-coupled pieces.
- Home-Manager owns user-leaf tools.
- Project compilers, linkers, and language runtimes belong in per-project Nix
dev shells via direnv.
- Do not add global Home-Manager packages that shadow the system build
toolchain (`gcc`, `clang`, `ld`, `make`, `pkg-config`, language runtimes,
etc.) unless the user explicitly asks for that tradeoff.
- On the Arch host, keep GPU/OpenGL Wayland apps in pacman unless they have
been smoke-tested from Nix against the host graphics stack.
## Chezmoi Roles
- `host`: user dotfiles plus host-only `/etc`, Firefox/LibreWolf, and Flatpak
integration hooks.
- `vm`: user dotfiles, skipping host-only `/etc` and Firefox/LibreWolf hooks.
- Machine-specific dotfile behavior belongs in chezmoi templates keyed by
`machineRole`.
- The VM Home-Manager profile installs packages and session variables only. Do
not add ordinary dotfiles to `xdg.configFile` or `home.file` in `nix/vm.nix`.
## Config Conventions
- Keep comments in config files operational. Prefer section labels and short
purpose notes over migration history.
- Add new user config through chezmoi source naming.
- Zsh config lives in `dot_config/zsh/` and `dot_zshenv`. Do not add new shell
config under `dot_config/sh/`; only `inputrc` belongs there.
- `KEYBINDS.md` documents non-default keybinds across neovim, zellij, zsh,
ghostty, and sway. Update it in the same change when keybinds change.
|