aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--.github/copilot-instructions.md30
-rw-r--r--README.md10
2 files changed, 25 insertions, 15 deletions
diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md
index f350fe6..daaaff9 100644
--- a/.github/copilot-instructions.md
+++ b/.github/copilot-instructions.md
@@ -2,35 +2,37 @@
## Repository overview
-This is a personal dotfiles repository for an Arch Linux system. Configuration files are organized to mirror their filesystem targets and deployed via GNU Stow symlinks.
+This is a personal dotfiles repository for an Arch Linux system, managed with [chezmoi](https://www.chezmoi.io/).
## Architecture
-- `home/` mirrors `$HOME` — everything under it maps 1:1 to the home directory (e.g. `home/.config/nvim/` → `~/.config/nvim/`). Deployed with `stow -R --no-folding --adopt`.
-- `etc/` contains system-level configs (`/etc/` targets) that can be deployed via stow symlinks — systemd units, pacman hooks, sysctl tunables, kernel module loading.
-- `etc2/` also targets `/etc/` but holds configs for tools that refuse to follow symlinks (e.g. reflector). These must be manually copied to their target paths.
-- `meta/` contains Arch Linux PKGBUILDs that bundle groups of packages into metapackages (e.g. `sommerfeld-base`, `sommerfeld-dev`). Each subdirectory is a standalone PKGBUILD recipe with a `.SRCINFO` and pre-built `.pkg.tar.zst` artifacts.
+The repo root is a chezmoi source directory. Files targeting `$HOME` use chezmoi naming conventions (`dot_`, `private_`, `executable_` prefixes). Deploy with `chezmoi apply -v`.
-- `firefox/` contains Firefox/LibreWolf hardening overrides (`user-overrides.js`) and custom CSS (`chrome/userChrome.css`). Deployed via stow into the browser's user profile directory (e.g. `~/.librewolf/<profile>/`).
+- `dot_config/`, `private_dot_gnupg/`, `private_dot_ssh/`, etc. — chezmoi source state mapping to `$HOME`. Prefix meanings: `dot_` → leading `.`, `private_` → restricted permissions, `executable_` → `+x` bit.
+- `etc/` contains system-level configs (`/etc/` targets) — systemd units, pacman hooks, sysctl tunables, kernel module loading. Deployed by `run_onchange_after_deploy-etc.sh`.
+- `etc2/` also targets `/etc/` but holds configs for tools that refuse symlinks (e.g. reflector). Also deployed by the etc run script.
+- `meta/` contains Arch Linux PKGBUILDs that bundle groups of packages into metapackages (e.g. `sommerfeld-base`, `sommerfeld-dev`). Each subdirectory is a standalone PKGBUILD recipe with a `.SRCINFO` and pre-built `.pkg.tar.zst` artifacts.
+- `firefox/` contains Firefox/LibreWolf hardening overrides (`user-overrides.js`) and custom CSS (`chrome/userChrome.css`). Deployed by `run_onchange_after_deploy-firefox.sh`.
- `create-efi.sh` is an interactive EFI boot entry creation script using `efibootmgr`.
+- `.chezmoiignore` excludes non-home files (`etc/`, `meta/`, `firefox/`, docs) from deployment to `$HOME`.
## Window manager
-Sway (Wayland compositor, i3-compatible). Config lives in `home/.config/sway/config`. Uses vanilla sway defaults for all standard WM operations with personal keybinds layered on top for media, volume, screenshots, lock screen, notifications, and display mode switching. The status bar is waybar (`home/.config/waybar/`), notifications via mako (`home/.config/mako/config`), and the launcher is fuzzel (`home/.config/fuzzel/fuzzel.ini`).
+Sway (Wayland compositor, i3-compatible). Config lives in `dot_config/sway/config`. Uses vanilla sway defaults for all standard WM operations with personal keybinds layered on top for media, volume, screenshots, lock screen, notifications, and display mode switching. The status bar is waybar (`dot_config/waybar/`), notifications via mako (`dot_config/mako/config`), and the launcher is fuzzel (`dot_config/fuzzel/fuzzel.ini`).
## Terminal multiplexer
-Zellij is the terminal multiplexer. Config lives in `home/.config/zellij/config.kdl`. Most features are built-in defaults (session resurrection, mouse mode, clipboard). The `vim-zellij-navigator` WASM plugin enables seamless Ctrl h/j/k/l navigation between zellij panes and neovim splits (paired with `smart-splits.nvim` on the neovim side).
+Zellij is the terminal multiplexer. Config lives in `dot_config/zellij/config.kdl`. Most features are built-in defaults (session resurrection, mouse mode, clipboard). The `vim-zellij-navigator` WASM plugin enables seamless Ctrl h/j/k/l navigation between zellij panes and neovim splits (paired with `smart-splits.nvim` on the neovim side).
## Shell configuration
Zsh-only setup with three files:
-- `home/.zshenv` — bootstrap: sets `ZDOTDIR=$HOME/.config/zsh` so all zsh config lives under XDG.
-- `home/.config/zsh/.zprofile` — login shell: environment variables, XDG dirs, PATH, tool configs, secrets via `pass`.
-- `home/.config/zsh/.zshrc` — interactive shell: options, completion, keybindings, aliases, plugins.
+- `dot_zshenv` — bootstrap: sets `ZDOTDIR=$HOME/.config/zsh` so all zsh config lives under XDG.
+- `dot_config/zsh/dot_zprofile` — login shell: environment variables, XDG dirs, PATH, tool configs, secrets via `pass`.
+- `dot_config/zsh/dot_zshrc` — interactive shell: options, completion, keybindings, aliases, plugins.
-Additionally, `home/.config/sh/inputrc` provides readline config for non-zsh tools (python REPL, etc.).
+Additionally, `dot_config/sh/inputrc` provides readline config for non-zsh tools (python REPL, etc.).
## Key conventions
@@ -42,9 +44,9 @@ Additionally, `home/.config/sh/inputrc` provides readline config for non-zsh too
## Editing guidelines
-When modifying configs, preserve the stow-compatible directory structure — paths under `home/` must exactly match their `$HOME` targets. Do not introduce files that break the 1:1 mapping.
+When modifying configs, use chezmoi naming conventions: `dot_` prefix for dotfiles, `private_` for restricted-permission dirs/files, `executable_` for scripts. To add a new config file, use `chezmoi add <target-path>`.
-When editing shell config, all zsh configuration goes in `.config/zsh/` — do not create files in `home/.config/sh/` (only `inputrc` remains there).
+When editing shell config, all zsh configuration goes in `dot_config/zsh/` — do not create files in `dot_config/sh/` (only `inputrc` remains there).
## Keybinds reference
diff --git a/README.md b/README.md
index 9a5992c..c434b03 100644
--- a/README.md
+++ b/README.md
@@ -1,3 +1,11 @@
# dotfiles
-My linux config and rc files
+My Arch Linux configuration, managed with [chezmoi](https://www.chezmoi.io/).
+
+## Setup
+
+```sh
+chezmoi init --source ~/dotfiles
+chezmoi apply -v
+```
+