@sebastienrousseau/dotfiles 0.2.481 → 0.2.499
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/docs/ARCHITECTURE.md +29 -196
- package/docs/COMPLIANCE.md +10 -10
- package/docs/COPYRIGHT +3 -4
- package/docs/OPERATIONS.md +38 -65
- package/docs/PLAN.md +3 -3
- package/docs/PR_DESCRIPTION.md +85 -84
- package/docs/ROADMAP.md +11 -11
- package/docs/ROADMAP_legacy.md +556 -0
- package/docs/SECURITY_CHECKLIST.md +1 -1
- package/docs/TASK.md +4 -4
- package/docs/WALKTHROUGH.md +33 -152
- package/package.json +17 -5
- package/scripts/backup.sh +142 -0
- package/scripts/banner.sh +20 -0
- package/scripts/benchmark.sh +20 -0
- package/scripts/build.sh +41 -0
- package/scripts/clean.sh +31 -0
- package/scripts/compile.sh +54 -0
- package/scripts/copy.sh +108 -0
- package/scripts/{tools/detect-collisions.py → detect-collisions.py} +1 -1
- package/scripts/doctor.sh +79 -0
- package/scripts/dotfiles.sh +63 -0
- package/scripts/download.sh +35 -0
- package/scripts/help.sh +57 -0
- package/scripts/lock-configs.sh +57 -0
- package/scripts/package.sh +46 -0
- package/scripts/ssh.sh +55 -0
- package/scripts/teleport.sh +23 -0
- package/scripts/{tests/test-aliases.sh → test-aliases.sh} +3 -3
- package/scripts/test_smoke.sh +88 -0
- package/scripts/unpack.sh +28 -0
- package/scripts/{diagnostics/verify_state.sh → verify_state.sh} +21 -21
- package/templates/projects/go/README.md +0 -4
- package/templates/projects/node/README.md +0 -4
- package/templates/projects/python/README.md +0 -4
- package/templates/projects/python/pyproject.toml +0 -15
- package/CHANGELOG.md +0 -285
- package/LICENSE +0 -1283
- package/README.md +0 -315
- package/docs/ALIASES.md +0 -128
- package/docs/FEATURES.md +0 -166
- package/docs/FONTS.md +0 -147
- package/docs/INSTALL.md +0 -119
- package/docs/KEYS.md +0 -40
- package/docs/KEY_ROTATION.md +0 -219
- package/docs/LEGACY_ROADMAP.md +0 -142
- package/docs/NEOVIM_IDE_GUIDE.md +0 -52
- package/docs/README.md +0 -269
- package/docs/REPO_AUDIT.md +0 -23
- package/docs/SCREENSHOTS.md +0 -116
- package/docs/SECRETS.md +0 -76
- package/docs/SECURITY.md +0 -30
- package/docs/TESTING.md +0 -190
- package/docs/TOOLS.md +0 -146
- package/docs/TROUBLESHOOTING.md +0 -112
- package/docs/UTILS.md +0 -105
- package/docs/WSL2_NIX_TROUBLESHOOTING.md +0 -723
- package/docs/adr/ADR-001-ci-cd-pipeline.md +0 -101
- package/docs/adr/ADR-002-shell-performance.md +0 -121
- package/docs/adr/ADR-003-security-first.md +0 -140
- package/docs/adr/ADR-004-cli-architecture.md +0 -157
- package/docs/adr/ADR-005-chezmoi-choice.md +0 -89
- package/docs/adr/ADR-006-shell-selection.md +0 -115
- package/docs/adr/README.md +0 -33
- package/docs/themes/README.md +0 -20
- package/dot_config/aider/aider.conf.yml +0 -32
- package/dot_config/alacritty/alacritty.toml.tmpl +0 -483
- package/dot_config/ansible/ansible.cfg.tmpl +0 -11
- package/dot_config/atuin/config.toml +0 -23
- package/dot_config/bat/config +0 -8
- package/dot_config/brave-flags.conf.tmpl +0 -7
- package/dot_config/btop/btop.conf +0 -16
- package/dot_config/btop/themes/tokyonight.theme +0 -34
- package/dot_config/bun/bunfig.toml.tmpl +0 -33
- package/dot_config/claude/mcp_servers.json +0 -49
- package/dot_config/clippy.toml +0 -55
- package/dot_config/containers/containers.conf +0 -14
- package/dot_config/curl/dot_curlrc +0 -18
- package/dot_config/dlv/config.yml +0 -39
- package/dot_config/docker/config.json.tmpl +0 -15
- package/dot_config/dotfiles/boot/README.md +0 -11
- package/dot_config/dotfiles/grub/README.md +0 -11
- package/dot_config/dotfiles/lock/README.md +0 -11
- package/dot_config/dotfiles/versions.env.tmpl +0 -19
- package/dot_config/duf/duf.conf +0 -6
- package/dot_config/duti/defaults.duti +0 -5
- package/dot_config/emoji/emoji.txt +0 -34
- package/dot_config/fastfetch/config.jsonc +0 -28
- package/dot_config/firefox/user.js +0 -8
- package/dot_config/flatpak/flatpak.list +0 -4
- package/dot_config/fontconfig/fonts.conf.tmpl +0 -44
- package/dot_config/gem/gemrc +0 -9
- package/dot_config/gh/config.yml +0 -12
- package/dot_config/ghostty/config.tmpl +0 -661
- package/dot_config/git/attributes +0 -12
- package/dot_config/git/config.tmpl +0 -77
- package/dot_config/git/ignore +0 -27
- package/dot_config/gnupg/gpg-agent.conf.tmpl +0 -11
- package/dot_config/go/aliases.sh +0 -61
- package/dot_config/go/env.sh +0 -24
- package/dot_config/go/golangci.yml +0 -118
- package/dot_config/go/gopls.json +0 -30
- package/dot_config/goose/config.yaml +0 -29
- package/dot_config/gtk-3.0/gtk.css.tmpl +0 -305
- package/dot_config/gtk-3.0/settings.ini.tmpl +0 -66
- package/dot_config/gtk-4.0/gtk.css.tmpl +0 -309
- package/dot_config/gtk-4.0/settings.ini.tmpl +0 -21
- package/dot_config/htop/htoprc +0 -20
- package/dot_config/ice/README.md +0 -13
- package/dot_config/inputrc +0 -2
- package/dot_config/ipython/profile_default/ipython_config.py.tmpl +0 -5
- package/dot_config/just/justfile +0 -104
- package/dot_config/k9s/config.yaml.tmpl +0 -65
- package/dot_config/k9s/skins/catppuccin-mocha.yaml +0 -116
- package/dot_config/karabiner/karabiner.json +0 -14
- package/dot_config/kitty/kitty.conf.tmpl +0 -517
- package/dot_config/lazydocker/config.yml +0 -186
- package/dot_config/lazygit/config.yml +0 -23
- package/dot_config/lsd/config.yaml +0 -19
- package/dot_config/mas/masapps.txt +0 -5
- package/dot_config/minikube/config.json +0 -13
- package/dot_config/mise/config.toml +0 -41
- package/dot_config/mongosh/mongoshrc.js +0 -67
- package/dot_config/mycli/myclirc +0 -67
- package/dot_config/nano/nanorc +0 -28
- package/dot_config/ncdu/config +0 -12
- package/dot_config/nvim/init.lua +0 -4
- package/dot_config/nvim/lazy-lock.json +0 -27
- package/dot_config/nvim/lua/config/autocmds.lua +0 -63
- package/dot_config/nvim/lua/config/keymaps.lua +0 -87
- package/dot_config/nvim/lua/config/lazy.lua +0 -34
- package/dot_config/nvim/lua/config/options.lua +0 -48
- package/dot_config/nvim/lua/plugins/coding.lua +0 -234
- package/dot_config/nvim/lua/plugins/dap.lua +0 -201
- package/dot_config/nvim/lua/plugins/editor.lua +0 -59
- package/dot_config/nvim/lua/plugins/git.lua +0 -9
- package/dot_config/nvim/lua/plugins/lsp.lua +0 -221
- package/dot_config/nvim/lua/plugins/markdown.lua +0 -17
- package/dot_config/nvim/lua/plugins/rust.lua +0 -33
- package/dot_config/nvim/lua/plugins/sessions.lua +0 -32
- package/dot_config/nvim/lua/plugins/ui.lua +0 -537
- package/dot_config/nvim/snippets/all.lua +0 -9
- package/dot_config/nvim/snippets/python.lua +0 -16
- package/dot_config/pip/pip.conf.tmpl +0 -32
- package/dot_config/pypoetry/config.toml.tmpl +0 -6
- package/dot_config/pyrightconfig.json.tmpl +0 -5
- package/dot_config/raycast/README.md +0 -13
- package/dot_config/redis/redisclirc +0 -41
- package/dot_config/shell/00-container-detect.sh +0 -53
- package/dot_config/shell/00-core-paths.sh.tmpl +0 -95
- package/dot_config/shell/05-core-safety.sh.tmpl +0 -13
- package/dot_config/shell/40-ls-colors.sh.tmpl +0 -31
- package/dot_config/shell/50-logic-functions.sh.tmpl +0 -10
- package/dot_config/shell/90-theme-switch.sh +0 -70
- package/dot_config/shell/90-ux-aliases.sh.tmpl +0 -35
- package/dot_config/shell/91-ux-aliases-lazy.sh.tmpl +0 -23
- package/dot_config/shell/Brewfile +0 -207
- package/dot_config/shell/Brewfile.cask +0 -92
- package/dot_config/shell/Brewfile.cli +0 -119
- package/dot_config/shell/README.md +0 -267
- package/dot_config/shell/custom/context_suggest.zsh +0 -68
- package/dot_config/shell/custom/error_analysis.zsh +0 -45
- package/dot_config/sops/dot_sops.yaml +0 -23
- package/dot_config/starship.toml.tmpl +0 -124
- package/dot_config/task/Taskfile.yml +0 -86
- package/dot_config/tflint/tflint.hcl.tmpl +0 -9
- package/dot_config/tmux/tmux.conf.tmpl +0 -181
- package/dot_config/topgrade/topgrade.toml.tmpl +0 -42
- package/dot_config/vscode/extensions.txt +0 -11
- package/dot_config/vscode/settings.json.tmpl +0 -123
- package/dot_config/waybar/style.css +0 -8
- package/dot_config/wezterm/wezterm.lua.tmpl +0 -236
- package/dot_config/wget/wgetrc +0 -12
- package/dot_config/yarn/yarnrc.yml.tmpl +0 -36
- package/dot_config/yazi/yazi.toml +0 -40
- package/dot_config/zellij/config.kdl +0 -79
- package/dot_config/zsh/dot_zprofile +0 -13
- package/dot_config/zsh/dot_zshenv +0 -6
- package/dot_config/zsh/dot_zshrc.tmpl +0 -199
- package/dot_config/zsh/rc.d/05-ssh-agent.zsh +0 -5
- package/dot_config/zsh/rc.d/10-env.zsh.tmpl +0 -28
- package/dot_config/zsh/rc.d/20-zinit.zsh.tmpl +0 -22
- package/dot_config/zsh/rc.d/30-options.zsh.tmpl +0 -123
- package/dot_config/zsh/rc.d/40-bell.zsh.tmpl +0 -20
- package/dot_config/zsh/rc.d/50-login-fortune.zsh.tmpl +0 -9
- package/dot_local/bin/executable_ai_core +0 -130
- package/dot_local/bin/executable_b64 +0 -59
- package/dot_local/bin/executable_dot +0 -178
- package/dot_local/bin/executable_dot_completion +0 -55
- package/dot_local/bin/executable_epoch +0 -62
- package/dot_local/bin/executable_extract +0 -108
- package/dot_local/bin/executable_git-ai-commit +0 -160
- package/dot_local/bin/executable_git-ai-diff +0 -154
- package/dot_local/bin/executable_hash +0 -123
- package/dot_local/bin/executable_hex +0 -79
- package/dot_local/bin/executable_ip +0 -37
- package/dot_local/bin/executable_jsonv +0 -54
- package/dot_local/bin/executable_jwt +0 -78
- package/dot_local/bin/executable_kill-port +0 -59
- package/dot_local/bin/executable_lorem +0 -103
- package/dot_local/bin/executable_regex +0 -96
- package/dot_local/bin/executable_tmux-sessionizer +0 -187
- package/dot_local/bin/executable_tour +0 -137
- package/dot_local/bin/executable_update +0 -108
- package/dot_local/bin/executable_uuid +0 -57
- package/dot_local/bin/executable_yamlv +0 -39
- package/dot_local/bin/executable_zig-install +0 -89
- package/dot_local/bin/voice_ops +0 -7
- package/dot_local/share/bash-completion/completions/dot +0 -54
- package/dot_local/share/zsh/completions/.keep +0 -0
- package/install.sh +0 -255
- package/scripts/ci/validate-ci-config.sh +0 -222
- package/scripts/demo/record.sh +0 -41
- package/scripts/diagnostics/benchmark.sh +0 -201
- package/scripts/diagnostics/doctor.sh +0 -115
- package/scripts/diagnostics/drift-dashboard.sh +0 -26
- package/scripts/diagnostics/health.sh +0 -356
- package/scripts/diagnostics/history-analysis.sh +0 -77
- package/scripts/diagnostics/security-score.sh +0 -392
- package/scripts/dot/commands/appearance.sh +0 -63
- package/scripts/dot/commands/core.sh +0 -130
- package/scripts/dot/commands/diagnostics.sh +0 -100
- package/scripts/dot/commands/meta.sh +0 -117
- package/scripts/dot/commands/restore.sh +0 -209
- package/scripts/dot/commands/secrets.sh +0 -81
- package/scripts/dot/commands/security.sh +0 -73
- package/scripts/dot/commands/tools.sh +0 -228
- package/scripts/dot/lib/utils.sh +0 -72
- package/scripts/fonts/install-nerd-fonts.sh +0 -59
- package/scripts/fonts/patch-fonts.sh +0 -34
- package/scripts/ops/chezmoi-apply.sh +0 -42
- package/scripts/ops/chezmoi-diff.sh +0 -14
- package/scripts/ops/chezmoi-remove.sh +0 -43
- package/scripts/ops/chezmoi-update.sh +0 -16
- package/scripts/ops/heal.sh +0 -466
- package/scripts/ops/health-check.sh +0 -380
- package/scripts/ops/rollback.sh +0 -531
- package/scripts/ops/teleport.sh +0 -32
- package/scripts/secrets/age-init.sh +0 -69
- package/scripts/secrets/create-secrets-file.sh +0 -44
- package/scripts/secrets/encrypt-ssh-key.sh +0 -42
- package/scripts/security/backup.sh +0 -17
- package/scripts/security/dns-doh.sh +0 -29
- package/scripts/security/encryption-check.sh +0 -39
- package/scripts/security/enforce-policies.sh +0 -339
- package/scripts/security/firewall.sh +0 -34
- package/scripts/security/lock-configs.sh +0 -57
- package/scripts/security/lock-screen.sh +0 -33
- package/scripts/security/manage-secrets.sh +0 -415
- package/scripts/security/telemetry-kill.sh +0 -28
- package/scripts/security/usb-safety.sh +0 -29
- package/scripts/tests/README.md +0 -241
- package/scripts/tests/benchmark.sh +0 -91
- package/scripts/tests/framework/assertions.sh +0 -283
- package/scripts/tests/framework/mocks.sh +0 -201
- package/scripts/tests/framework/test_runner.sh +0 -189
- package/scripts/tests/integration/test_install.sh +0 -237
- package/scripts/tests/performance/benchmark_runner.sh +0 -156
- package/scripts/tests/performance/regression_check.sh +0 -73
- package/scripts/tests/performance/stress_test.sh +0 -65
- package/scripts/tests/test-docker.sh +0 -48
- package/scripts/tests/unit/test_ai_aliases.sh +0 -158
- package/scripts/tests/unit/test_ai_cli_checks.sh +0 -47
- package/scripts/tests/unit/test_backup.sh +0 -227
- package/scripts/tests/unit/test_case_functions.sh +0 -238
- package/scripts/tests/unit/test_cd_aliases.sh +0 -367
- package/scripts/tests/unit/test_dot_cli.sh +0 -217
- package/scripts/tests/unit/test_encode64.sh +0 -67
- package/scripts/tests/unit/test_environment.sh +0 -78
- package/scripts/tests/unit/test_extract.sh +0 -163
- package/scripts/tests/unit/test_framework_edge_cases.sh +0 -113
- package/scripts/tests/unit/test_genpass.sh +0 -298
- package/scripts/tests/unit/test_install_edge_cases.sh +0 -167
- package/scripts/tests/unit/test_installers.sh +0 -172
- package/scripts/tests/unit/test_keygen.sh +0 -68
- package/scripts/tests/unit/test_logging.sh +0 -96
- package/scripts/tests/unit/test_os_detection_comprehensive.sh +0 -388
- package/scripts/tests/unit/test_package_managers_comprehensive.sh +0 -321
- package/scripts/tests/unit/test_prependpath.sh +0 -66
- package/scripts/tests/unit/test_prependpath_refactored.sh +0 -89
- package/scripts/tests/unit/test_rd.sh +0 -230
- package/scripts/tests/unit/test_security_fixes.sh +0 -130
- package/scripts/tests/unit/test_security_scripts.sh +0 -87
- package/scripts/tests/unit/test_template_validation.sh +0 -238
- package/scripts/tests/unit/test_utility_functions.sh +0 -144
- package/scripts/tests/unit/test_wave1_alias_split.sh +0 -132
- package/scripts/tests/unit/test_wave1_ci_pinning.sh +0 -61
- package/scripts/tests/unit/test_wave1_gitleaks_config.sh +0 -52
- package/scripts/tests/unit/test_wave1_heal_fixes.sh +0 -97
- package/scripts/tests/unit/test_wave1_install_gpg.sh +0 -35
- package/scripts/tests/unit/test_wave1_zshenv_path.sh +0 -89
- package/scripts/tests/unit/test_wave1_zshrc_lazy_hook.sh +0 -115
- package/scripts/tests/unit/test_wave2_dot_new_guard.sh +0 -75
- package/scripts/tests/unit/test_zipf.sh +0 -76
- package/scripts/theme/apply-gnome-theme.sh +0 -297
- package/scripts/theme/install-boot-logo.sh +0 -61
- package/scripts/theme/install-catppuccin-themes.sh +0 -346
- package/scripts/theme/install-cursors.sh +0 -24
- package/scripts/theme/install-file-icons.sh +0 -25
- package/scripts/theme/install-grub-theme.sh +0 -51
- package/scripts/theme/install-lock-icon.sh +0 -29
- package/scripts/theme/switch.sh +0 -250
- package/scripts/theme/wallpaper-rotate.sh +0 -82
- package/scripts/theme/wallpaper-sync.sh +0 -42
- package/scripts/tools/cmatrix.sh +0 -20
- package/scripts/tools/emoji-picker.sh +0 -45
- package/scripts/tools/figlet-banner.sh +0 -17
- package/scripts/tools/log-rotate.sh +0 -29
- package/scripts/tools/lolcat-wrap.sh +0 -18
- package/scripts/tools/pipes.sh +0 -47
- package/scripts/tuning/linux.sh +0 -175
- package/scripts/tuning/macos.sh +0 -46
- package/templates/projects/molecule/README.md +0 -7
- package/templates/projects/molecule/converge.yml +0 -7
- package/templates/projects/molecule/molecule.yml +0 -16
- package/templates/projects/packer/README.md +0 -15
- package/templates/projects/packer/main.pkr.hcl +0 -15
package/README.md
DELETED
|
@@ -1,315 +0,0 @@
|
|
|
1
|
-
<p align="right">
|
|
2
|
-
<img src="https://kura.pro/dotfiles/v2/images/logos/dotfiles.svg" alt="Dotfiles logo" width="64" />
|
|
3
|
-
</p>
|
|
4
|
-
|
|
5
|
-
# Dotfiles — A Fast, Idempotent Shell Environment
|
|
6
|
-
|
|
7
|
-
[](https://github.com/sebastienrousseau/dotfiles/actions)
|
|
8
|
-
[](https://github.com/sebastienrousseau/dotfiles/releases/tag/v0.2.481)
|
|
9
|
-
[](LICENSE)
|
|
10
|
-
[](https://github.com/sebastienrousseau/dotfiles/releases)
|
|
11
|
-
[](https://github.com/sebastienrousseau/dotfiles/commits)
|
|
12
|
-
|
|
13
|
-
---
|
|
14
|
-
|
|
15
|
-
## Overview
|
|
16
|
-
|
|
17
|
-
Set up your development environment in minutes and keep it consistent across every machine. Dotfiles is a cross‑platform shell distribution managed by [Chezmoi](https://github.com/twpayne/chezmoi) that works on macOS, Linux, and WSL. It is **idempotent** by design: run it once or a hundred times, and the result is always the same.
|
|
18
|
-
|
|
19
|
-
Git + templates + guarded scripts = a reproducible shell.
|
|
20
|
-
|
|
21
|
-
---
|
|
22
|
-
|
|
23
|
-
## Table of contents
|
|
24
|
-
|
|
25
|
-
- [Why dotfiles](#why-dotfiles)
|
|
26
|
-
- [Safety](#safety)
|
|
27
|
-
- [Get started](#get-started)
|
|
28
|
-
- [Discover](#discover)
|
|
29
|
-
- [Install details](#install-details)
|
|
30
|
-
- [Make it yours](#make-it-yours)
|
|
31
|
-
- [Reference](#reference)
|
|
32
|
-
- [How it works](#how-it-works)
|
|
33
|
-
- [Roadmap](#roadmap)
|
|
34
|
-
- [Contribute](#contribute)
|
|
35
|
-
- [Changelog](#changelog)
|
|
36
|
-
- [License](#license)
|
|
37
|
-
|
|
38
|
-
---
|
|
39
|
-
|
|
40
|
-
## Why dotfiles
|
|
41
|
-
|
|
42
|
-
Dotfiles takes an infrastructure‑oriented approach to managing your shell. It is designed for developers who work across multiple machines and value **daily usability, reproducibility, and auditability.**
|
|
43
|
-
|
|
44
|
-
- **The Stack.** Zsh, Neovim, tmux, and AI CLI tools configured with sane defaults so you can start working immediately.
|
|
45
|
-
- **Unified Control.** The `dot` CLI wraps common workflows such as syncing, upgrading, and managing secrets.
|
|
46
|
-
- **Safety First.** Every system or security change requires explicit opt‑in.
|
|
47
|
-
- **Clean Slate.** Source files, generated configs, and system state stay cleanly separated.
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
## Safety
|
|
51
|
-
|
|
52
|
-
This is **infrastructure**, not an ad‑hoc shell script.
|
|
53
|
-
|
|
54
|
-
- No destructive actions without explicit opt‑in.
|
|
55
|
-
- No background daemons install automatically.
|
|
56
|
-
- No system settings change by default.
|
|
57
|
-
- System‑level behavior requires explicit opt‑in through environment variables.
|
|
58
|
-
- Dotfiles logs all privileged actions to `~/.local/share/dotfiles.log`.
|
|
59
|
-
|
|
60
|
-
---
|
|
61
|
-
|
|
62
|
-
## Get started
|
|
63
|
-
|
|
64
|
-
> [!IMPORTANT]
|
|
65
|
-
> The installer automatically backs up any existing dotfiles that chezmoi will overwrite (to `~/.dotfiles.bak.<timestamp>/`). It bootstraps `chezmoi` and applies this repo. OS packages install through Chezmoi hooks during the first apply.
|
|
66
|
-
|
|
67
|
-
```bash
|
|
68
|
-
# Works on macOS, Linux, and WSL
|
|
69
|
-
sh -c "$(curl -fsSL https://raw.githubusercontent.com/sebastienrousseau/dotfiles/v0.2.481/install.sh)"
|
|
70
|
-
exec zsh
|
|
71
|
-
```
|
|
72
|
-
|
|
73
|
-
For non‑interactive installs (servers and CI):
|
|
74
|
-
```bash
|
|
75
|
-
DOTFILES_NONINTERACTIVE=1 sh -c "$(curl -fsSL https://raw.githubusercontent.com/sebastienrousseau/dotfiles/v0.2.481/install.sh)"
|
|
76
|
-
```
|
|
77
|
-
|
|
78
|
-
---
|
|
79
|
-
|
|
80
|
-
## Discover
|
|
81
|
-
|
|
82
|
-
- [Installation Guide](docs/INSTALL.md) — Prerequisites and supported platforms.
|
|
83
|
-
- [Operations Guide](docs/OPERATIONS.md) — Common workflows and platform notes.
|
|
84
|
-
- [Security Guide](docs/SECURITY.md) — Hardening matrix and logging.
|
|
85
|
-
- [Secrets Guide](docs/SECRETS.md) — Age setup and encrypted files.
|
|
86
|
-
- [Tools Catalog](docs/TOOLS.md) — Core tools and optional utilities.
|
|
87
|
-
- [Dot Utils](docs/UTILS.md) — Aliases and dot CLI helpers.
|
|
88
|
-
- [Troubleshooting](docs/TROUBLESHOOTING.md) — Fixes for common issues.
|
|
89
|
-
|
|
90
|
-
---
|
|
91
|
-
|
|
92
|
-
## Install details
|
|
93
|
-
|
|
94
|
-
**Prerequisites**
|
|
95
|
-
- Required: `git`, `curl`
|
|
96
|
-
- Optional: Homebrew (macOS), `apt-get` (Linux/WSL), Nix (toolchain)
|
|
97
|
-
|
|
98
|
-
**Update**
|
|
99
|
-
```bash
|
|
100
|
-
dot update
|
|
101
|
-
```
|
|
102
|
-
|
|
103
|
-
**Non‑interactive apply**
|
|
104
|
-
```bash
|
|
105
|
-
DOTFILES_NONINTERACTIVE=1 dot apply
|
|
106
|
-
```
|
|
107
|
-
|
|
108
|
-
## Make it yours
|
|
109
|
-
|
|
110
|
-
- [Operations](docs/OPERATIONS.md)
|
|
111
|
-
- [Secrets](docs/SECRETS.md)
|
|
112
|
-
- [Security](docs/SECURITY.md)
|
|
113
|
-
- [Troubleshooting](docs/TROUBLESHOOTING.md)
|
|
114
|
-
|
|
115
|
-
---
|
|
116
|
-
|
|
117
|
-
## Reference
|
|
118
|
-
|
|
119
|
-
Run `dot --help` or `dot <command> --help` for inline documentation.
|
|
120
|
-
|
|
121
|
-
| Command | Description | Category |
|
|
122
|
-
|---|---|---|
|
|
123
|
-
| `dot apply` | Apply dotfiles (chezmoi apply) | Core |
|
|
124
|
-
| `dot sync` | Alias of apply | Core |
|
|
125
|
-
| `dot update` | Pull latest changes and apply | Core |
|
|
126
|
-
| `dot add` | Add a file to chezmoi source | Core |
|
|
127
|
-
| `dot diff` | Show chezmoi diff (excludes scripts) | Core |
|
|
128
|
-
| `dot status` | Show configuration drift | Core |
|
|
129
|
-
| `dot remove` | Safely remove a managed file | Core |
|
|
130
|
-
| `dot cd` | Print source directory path | Core |
|
|
131
|
-
| `dot upgrade` | Update flake, plugins, and dotfiles | Core |
|
|
132
|
-
| `dot edit` | Open chezmoi source in your editor | Core |
|
|
133
|
-
| `dot docs` | Show repo README | Core |
|
|
134
|
-
| `dot --version` | Show version information | Core |
|
|
135
|
-
| `dot help` | Show help | Core |
|
|
136
|
-
| `dot drift` | Drift dashboard (chezmoi status) | Diagnostics |
|
|
137
|
-
| `dot history` | Shell history analysis | Diagnostics |
|
|
138
|
-
| `dot doctor` | Check system health and configuration | Diagnostics |
|
|
139
|
-
| `dot health` | Comprehensive health dashboard (37 checks) | Diagnostics |
|
|
140
|
-
| `dot security-score` | Security assessment with grading | Diagnostics |
|
|
141
|
-
| `dot benchmark` | Shell startup benchmark (`--detailed`, `--profile`) | Diagnostics |
|
|
142
|
-
| `dot restore` | Restore from backup or git ref | Diagnostics |
|
|
143
|
-
| `dot theme` | Switch terminal theme (dark/light) | UX |
|
|
144
|
-
| `dot wallpaper` | Apply a wallpaper from your library | UX |
|
|
145
|
-
| `dot keys` | Show keybindings catalog | UX |
|
|
146
|
-
| `dot learn` | Interactive tour of tools (requires `gum`) | UX |
|
|
147
|
-
| `dot fonts` | Install Nerd Fonts | UX |
|
|
148
|
-
| `dot sandbox` | Launch a safe sandbox preview | Tools |
|
|
149
|
-
| `dot tools` | Show tools or install through Nix | Tools |
|
|
150
|
-
| `dot tools install` | Enter Nix development shell | Tools |
|
|
151
|
-
| `dot new` | Create a new project from a template | Tools |
|
|
152
|
-
| `dot log-rotate` | Rotate `~/.local/share/dotfiles.log` | Tools |
|
|
153
|
-
| `dot secrets-init` | Initialise age key for secrets | Secrets |
|
|
154
|
-
| `dot secrets` | Edit encrypted secrets | Secrets |
|
|
155
|
-
| `dot secrets-create` | Create an encrypted secrets file | Secrets |
|
|
156
|
-
| `dot ssh-key` | Encrypt an SSH key locally with age | Secrets |
|
|
157
|
-
| `dot backup` | Create a compressed backup of your home directory | Security |
|
|
158
|
-
| `dot firewall` | Apply firewall hardening (opt‑in) | Security |
|
|
159
|
-
| `dot telemetry` | Disable OS telemetry (opt‑in) | Security |
|
|
160
|
-
| `dot dns-doh` | Enable DNS‑over‑HTTPS (opt‑in) | Security |
|
|
161
|
-
| `dot encrypt-check` | Check disk encryption status | Security |
|
|
162
|
-
| `dot lock-screen` | Enforce lock‑screen idle settings (opt‑in) | Security |
|
|
163
|
-
| `dot usb-safety` | Disable automount for removable media | Security |
|
|
164
|
-
|
|
165
|
-
### Developer CLI Tools
|
|
166
|
-
|
|
167
|
-
These utilities are installed to `~/.local/bin/`:
|
|
168
|
-
|
|
169
|
-
| Tool | Description |
|
|
170
|
-
|------|-------------|
|
|
171
|
-
| `jsonv` | JSON validator and formatter |
|
|
172
|
-
| `yamlv` | YAML validator |
|
|
173
|
-
| `epoch` | Unix timestamp converter |
|
|
174
|
-
| `b64` | Base64 encoder/decoder |
|
|
175
|
-
| `jwt` | JWT token decoder |
|
|
176
|
-
| `hex` | Hex viewer/converter |
|
|
177
|
-
| `regex` | Regex tester |
|
|
178
|
-
| `lorem` | Lorem ipsum generator |
|
|
179
|
-
| `uuid` | UUID generator |
|
|
180
|
-
| `hash` | MD5/SHA hash calculator |
|
|
181
|
-
| `ip` | Show public/local IP addresses |
|
|
182
|
-
| `kill-port` | Kill process by port |
|
|
183
|
-
| `extract` | Universal archive extraction |
|
|
184
|
-
| `update` | Update all system packages |
|
|
185
|
-
|
|
186
|
-
**Examples**
|
|
187
|
-
|
|
188
|
-
```bash
|
|
189
|
-
# Initialise secrets (prints a public key)
|
|
190
|
-
DOTFILES_NONINTERACTIVE=1 dot secrets-init
|
|
191
|
-
# Output: Age key created at ~/.config/chezmoi/key.txt
|
|
192
|
-
```
|
|
193
|
-
|
|
194
|
-
### Security changes
|
|
195
|
-
|
|
196
|
-
These scripts are **opt‑in** and run only when you set the matching environment variable.
|
|
197
|
-
All security changes are logged to `~/.local/share/dotfiles.log`.
|
|
198
|
-
|
|
199
|
-
| Script | macOS | Linux |
|
|
200
|
-
|---|---|---|
|
|
201
|
-
| `dot firewall` | Enables macOS firewall and stealth mode via `socketfilterfw` | Configures UFW defaults and OpenSSH allow |
|
|
202
|
-
| `dot telemetry` | Writes `DiagnosticMessagesHistory.plist` flags | Disables `whoopsie`, `apport`, `popularity-contest` |
|
|
203
|
-
| `dot dns-doh` | No system change (browser‑level only) | Enables DoH via `resolvectl` with Cloudflare DNS |
|
|
204
|
-
| `dot lock-screen` | `com.apple.screensaver` defaults and idleTime | GNOME `gsettings` lock and idle timeout |
|
|
205
|
-
| `dot usb-safety` | No system change (manual UI) | GNOME `gsettings` automount off |
|
|
206
|
-
| `dot encrypt-check` | Reads FileVault status via `fdesetup` | Detects LUKS via `lsblk` |
|
|
207
|
-
|
|
208
|
-
### Nix
|
|
209
|
-
|
|
210
|
-
Nix is **optional**. The repo does **not** install the Nix daemon.
|
|
211
|
-
|
|
212
|
-
- Use `nix develop` to enter a reproducible shell environment.
|
|
213
|
-
- Use `dot tools` to see the curated utilities overview.
|
|
214
|
-
- No toggle replaces Homebrew or Apt with Nix automatically.
|
|
215
|
-
|
|
216
|
-
---
|
|
217
|
-
|
|
218
|
-
### Install guide
|
|
219
|
-
|
|
220
|
-
See [docs/INSTALL.md](docs/INSTALL.md) for prerequisites, supported platforms, and the full install flow.
|
|
221
|
-
|
|
222
|
-
<p align="right"><a href="#dotfiles--your-shell-everywhere">↑ Back to Top</a></p>
|
|
223
|
-
|
|
224
|
-
## How it works
|
|
225
|
-
|
|
226
|
-
If Mermaid does not render, the flow is: `install.sh` → `Chezmoi` → `~/.dotfiles` → `~/.config + ~/.local`.
|
|
227
|
-
|
|
228
|
-
```mermaid
|
|
229
|
-
flowchart LR
|
|
230
|
-
A["install.sh"] --> B["Chezmoi"]
|
|
231
|
-
B --> C["~/.dotfiles (source)"]
|
|
232
|
-
B --> D["~/.config + ~/.local (targets)"]
|
|
233
|
-
E["dot CLI"] --> B
|
|
234
|
-
E --> F["scripts/*"]
|
|
235
|
-
```
|
|
236
|
-
|
|
237
|
-
### Shell startup flow
|
|
238
|
-
|
|
239
|
-
```
|
|
240
|
-
.zshenv ─▶ .zshrc ─▶ rc.d/{10..50} ─▶ shell/{00,05,40,50,90} ─▶ [precmd: 91-lazy] ─▶ tool init
|
|
241
|
-
│ │ │ │ │ │
|
|
242
|
-
│ │ │ │ │ ├─ atuin
|
|
243
|
-
XDG zinit options, paths, safety, tool-specific ├─ starship
|
|
244
|
-
PATH plugins lazy fnm/nvm functions, aliases (deferred) ├─ zoxide
|
|
245
|
-
core aliases (eager) └─ fzf
|
|
246
|
-
```
|
|
247
|
-
|
|
248
|
-
Core aliases (~40KB) load at startup. Tool-specific aliases (~137KB) load after the first prompt via a `precmd` hook — keeping shell startup fast while still providing full alias coverage. See [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md) for the full startup sequence and ordering conventions.
|
|
249
|
-
|
|
250
|
-
**Repository Layout**
|
|
251
|
-
|
|
252
|
-
```text
|
|
253
|
-
~/.dotfiles/
|
|
254
|
-
├── dot_config/ # Maps to ~/.config/ (app configs)
|
|
255
|
-
│ ├── nvim/ # Neovim config (Lua)
|
|
256
|
-
│ ├── zsh/ # Zsh config (modular)
|
|
257
|
-
│ ├── tmux/ # Tmux config
|
|
258
|
-
│ ├── shell/ # Shell logic (aliases, functions, paths)
|
|
259
|
-
│ ├── wezterm/ alacritty/ kitty/ ghostty/
|
|
260
|
-
│ ├── btop/ fastfetch/ atuin/ yazi/ ...
|
|
261
|
-
│ └── docker/ containers/ ...
|
|
262
|
-
├── dot_local/ # Maps to ~/.local/ (CLI tools)
|
|
263
|
-
│ └── bin/ # dot CLI and helpers
|
|
264
|
-
├── dot_etc/ # System configs (sudoers, sysctl, Chrome policies; may require sudo)
|
|
265
|
-
├── dot_ssh/ # SSH config templates
|
|
266
|
-
├── templates/ # Project scaffolds used by `dot new`
|
|
267
|
-
├── scripts/ # Install, security, theme, diagnostics
|
|
268
|
-
├── install/ # Chezmoi run_onchange and run_before hooks
|
|
269
|
-
├── nix/ # Optional Nix shell environment
|
|
270
|
-
├── docs/ # Guides, keys, roadmap, architecture
|
|
271
|
-
└── install.sh # Bootstrap installer
|
|
272
|
-
```
|
|
273
|
-
|
|
274
|
-
---
|
|
275
|
-
|
|
276
|
-
## Roadmap
|
|
277
|
-
|
|
278
|
-
Track progress on [GitHub Issues](https://github.com/sebastienrousseau/dotfiles/issues) and [Milestones](https://github.com/sebastienrousseau/dotfiles/milestones).
|
|
279
|
-
|
|
280
|
-
---
|
|
281
|
-
|
|
282
|
-
## Contribute
|
|
283
|
-
|
|
284
|
-
Please read [CONTRIBUTING.md](.github/CONTRIBUTING.md) before opening a pull request.
|
|
285
|
-
|
|
286
|
-
For security issues, see [SECURITY.md](.github/SECURITY.md).
|
|
287
|
-
|
|
288
|
-
---
|
|
289
|
-
|
|
290
|
-
## Troubleshooting
|
|
291
|
-
|
|
292
|
-
See [docs/TROUBLESHOOTING.md](docs/TROUBLESHOOTING.md).
|
|
293
|
-
|
|
294
|
-
---
|
|
295
|
-
|
|
296
|
-
## Changelog
|
|
297
|
-
|
|
298
|
-
See [CHANGELOG.md](CHANGELOG.md).
|
|
299
|
-
|
|
300
|
-
---
|
|
301
|
-
|
|
302
|
-
## License
|
|
303
|
-
|
|
304
|
-
This project is licensed under the **MIT License**. See [LICENSE](LICENSE).
|
|
305
|
-
|
|
306
|
-
Some bundled third‑party dependencies are licensed under GPL‑3.0; the LICENSE file lists them explicitly.
|
|
307
|
-
|
|
308
|
-
---
|
|
309
|
-
|
|
310
|
-
<div align="center">
|
|
311
|
-
|
|
312
|
-
🎨 Designed by **[Sebastien Rousseau](https://sebastienrousseau.com/)**
|
|
313
|
-
🚀 Engineered with **[Euxis](https://euxis.co/)** — Enterprise Unified eXecution Intelligence System
|
|
314
|
-
|
|
315
|
-
</div>
|
package/docs/ALIASES.md
DELETED
|
@@ -1,128 +0,0 @@
|
|
|
1
|
-
# Aliases
|
|
2
|
-
|
|
3
|
-
This page lists all shell aliases that the dotfiles provide.
|
|
4
|
-
|
|
5
|
-
## Organization
|
|
6
|
-
|
|
7
|
-
The repo organizes aliases in `~/.dotfiles/.chezmoitemplates/aliases/` by category. Each category has its own directory containing a `<name>.aliases.sh` file.
|
|
8
|
-
|
|
9
|
-
## Categories
|
|
10
|
-
|
|
11
|
-
### Navigation
|
|
12
|
-
|
|
13
|
-
| Alias | Command | Description |
|
|
14
|
-
|-------|---------|-------------|
|
|
15
|
-
| `..` | `cd ..` | Go up one directory |
|
|
16
|
-
| `...` | `cd ../..` | Go up two directories |
|
|
17
|
-
| `....` | `cd ../../..` | Go up three directories |
|
|
18
|
-
| `-` | `cd -` | Go to previous directory |
|
|
19
|
-
|
|
20
|
-
### Git
|
|
21
|
-
|
|
22
|
-
| Alias | Command | Description |
|
|
23
|
-
|-------|---------|-------------|
|
|
24
|
-
| `g` | `git` | Git shorthand |
|
|
25
|
-
| `ga` | `git add` | Stage files |
|
|
26
|
-
| `gaa` | `git add --all` | Stage all files |
|
|
27
|
-
| `gc` | `git commit` | Commit |
|
|
28
|
-
| `gcm` | `git commit -m` | Commit with message |
|
|
29
|
-
| `gco` | `git checkout` | Checkout |
|
|
30
|
-
| `gd` | `git diff` | Show diff |
|
|
31
|
-
| `gf` | `git fetch` | Fetch |
|
|
32
|
-
| `gl` | `git pull` | Pull |
|
|
33
|
-
| `gp` | `git push` | Push |
|
|
34
|
-
| `gst` | `git status` | Status |
|
|
35
|
-
| `lg` | `git log --graph --oneline` | Graph log |
|
|
36
|
-
| `lgui` | `lazygit` | Open lazygit |
|
|
37
|
-
|
|
38
|
-
### Docker
|
|
39
|
-
|
|
40
|
-
| Alias | Command | Description |
|
|
41
|
-
|-------|---------|-------------|
|
|
42
|
-
| `d` | `docker` | Docker shorthand |
|
|
43
|
-
| `dco` | `docker compose` | Docker Compose |
|
|
44
|
-
| `dps` | `docker ps` | List containers |
|
|
45
|
-
| `dpsa` | `docker ps -a` | List all containers |
|
|
46
|
-
| `di` | `docker images` | List images |
|
|
47
|
-
| `dexec` | `docker exec -it` | Execute in container |
|
|
48
|
-
| `denter` | `docker exec -it <container> /bin/bash` | Enter container |
|
|
49
|
-
| `dlogsf` | `docker logs -f` | Follow logs |
|
|
50
|
-
| `dl` | `docker logs` | Show logs |
|
|
51
|
-
| `dprune` | `docker system prune` | Clean up |
|
|
52
|
-
| `dprunea` | `docker system prune -a` | Clean up all |
|
|
53
|
-
| `lzd` | `lazydocker` | Open lazydocker |
|
|
54
|
-
|
|
55
|
-
### Kubernetes
|
|
56
|
-
|
|
57
|
-
| Alias | Command | Description |
|
|
58
|
-
|-------|---------|-------------|
|
|
59
|
-
| `k` | `kubectl` | kubectl shorthand |
|
|
60
|
-
| `kg` | `kubectl get` | Get resources |
|
|
61
|
-
| `kgp` | `kubectl get pods` | Get pods |
|
|
62
|
-
| `kga` | `kubectl get all` | Get all resources |
|
|
63
|
-
| `kd` | `kubectl describe` | Describe resource |
|
|
64
|
-
| `kdel` | `kubectl delete` | Delete resource |
|
|
65
|
-
| `kl` | `kubectl logs` | View logs |
|
|
66
|
-
| `kex` | `kubectl exec -it` | Execute in pod |
|
|
67
|
-
| `kaf` | `kubectl apply -f` | Apply from file |
|
|
68
|
-
| `kctx` | `kubectx` | Switch context |
|
|
69
|
-
| `kn` | `kubens` | Switch namespace |
|
|
70
|
-
| `klog` | `stern` | Multi-pod logs |
|
|
71
|
-
| `klint` | `kube-linter lint` | Lint manifests |
|
|
72
|
-
| `ksec` | `kubesec scan` | Security scan |
|
|
73
|
-
| `mk` | `minikube` | Minikube shorthand |
|
|
74
|
-
| `k9` | `k9s` | Open k9s |
|
|
75
|
-
|
|
76
|
-
### Modern replacements
|
|
77
|
-
|
|
78
|
-
| Alias | Command | Description |
|
|
79
|
-
|-------|---------|-------------|
|
|
80
|
-
| `ls` | `eza` | Modern ls |
|
|
81
|
-
| `ll` | `eza -la` | Long list |
|
|
82
|
-
| `la` | `eza -a` | List all |
|
|
83
|
-
| `lt` | `eza --tree` | Tree view |
|
|
84
|
-
| `cat` | `bat` | Syntax highlighted cat |
|
|
85
|
-
|
|
86
|
-
### File operations
|
|
87
|
-
|
|
88
|
-
| Alias | Command | Description |
|
|
89
|
-
|-------|---------|-------------|
|
|
90
|
-
| `cp` | `cp -iv` | Interactive verbose copy |
|
|
91
|
-
| `mv` | `mv -iv` | Interactive verbose move |
|
|
92
|
-
| `rm` | `rm -iv` | Interactive verbose remove |
|
|
93
|
-
| `mkdir` | `mkdir -pv` | Create dirs with parents |
|
|
94
|
-
|
|
95
|
-
### System
|
|
96
|
-
|
|
97
|
-
| Alias | Command | Description |
|
|
98
|
-
|-------|---------|-------------|
|
|
99
|
-
| `ports` | `netstat -tulanp` | Show open ports |
|
|
100
|
-
| `myip` | `curl ifconfig.me` | Show public IP |
|
|
101
|
-
| `path` | `echo $PATH \| tr ':' '\n'` | Show PATH entries |
|
|
102
|
-
|
|
103
|
-
### Dotfiles
|
|
104
|
-
|
|
105
|
-
| Alias | Command | Description |
|
|
106
|
-
|-------|---------|-------------|
|
|
107
|
-
| `dot` | `~/.local/bin/dot` | Dotfiles CLI |
|
|
108
|
-
| `dotcd` | `cd ~/.dotfiles` | Go to dotfiles |
|
|
109
|
-
| `dotedit` | `$EDITOR ~/.dotfiles` | Edit dotfiles |
|
|
110
|
-
|
|
111
|
-
## Adding custom aliases
|
|
112
|
-
|
|
113
|
-
1. Create a new file in the appropriate category:
|
|
114
|
-
```bash
|
|
115
|
-
vim ~/.dotfiles/.chezmoitemplates/aliases/mycategory/mycategory.aliases.sh
|
|
116
|
-
```
|
|
117
|
-
|
|
118
|
-
2. Define your aliases:
|
|
119
|
-
```bash
|
|
120
|
-
# shellcheck shell=bash
|
|
121
|
-
# My Custom Aliases
|
|
122
|
-
alias myalias='my-command'
|
|
123
|
-
```
|
|
124
|
-
|
|
125
|
-
3. Apply changes:
|
|
126
|
-
```bash
|
|
127
|
-
chezmoi apply
|
|
128
|
-
```
|
package/docs/FEATURES.md
DELETED
|
@@ -1,166 +0,0 @@
|
|
|
1
|
-
# Feature Flags
|
|
2
|
-
|
|
3
|
-
Feature flags control which components and configurations are enabled in your dotfiles setup. They are defined in `.chezmoidata.toml` and used throughout template files to conditionally include or exclude functionality.
|
|
4
|
-
|
|
5
|
-
## Configuration
|
|
6
|
-
|
|
7
|
-
Feature flags are configured in the `.chezmoidata.toml` file:
|
|
8
|
-
|
|
9
|
-
```toml
|
|
10
|
-
[features]
|
|
11
|
-
zsh = true
|
|
12
|
-
nvim = true
|
|
13
|
-
tmux = true
|
|
14
|
-
gui = true
|
|
15
|
-
secrets = true
|
|
16
|
-
```
|
|
17
|
-
|
|
18
|
-
## Available Feature Flags
|
|
19
|
-
|
|
20
|
-
| Flag | Default | Purpose | Dependencies | Impact |
|
|
21
|
-
|------|---------|---------|--------------|---------|
|
|
22
|
-
| `zsh` | `true` | Enable Zsh shell configuration and optimizations | - | Controls Zsh-specific configs, aliases, and shell enhancements |
|
|
23
|
-
| `nvim` | `true` | Enable Neovim editor configuration | - | Manages Neovim configs, plugins, and editor-specific settings |
|
|
24
|
-
| `tmux` | `true` | Enable tmux terminal multiplexer configuration | - | Controls tmux configs, key bindings, and session management |
|
|
25
|
-
| `gui` | `true` | Enable GUI application configurations | Desktop environment | Manages GUI app configs, window managers, and desktop settings |
|
|
26
|
-
| `secrets` | `true` | Enable secrets management and encryption tools | GPG, Age, SSH keys | Controls access to encrypted configs and secure credential storage |
|
|
27
|
-
|
|
28
|
-
## How Feature Flags Work
|
|
29
|
-
|
|
30
|
-
### Template Processing
|
|
31
|
-
|
|
32
|
-
Feature flags are processed in the Zsh configuration template (`dot_config/zsh/dot_zshrc.tmpl`) where they:
|
|
33
|
-
|
|
34
|
-
1. **Set defaults**: If not explicitly defined, all features default to `true`
|
|
35
|
-
2. **Export environment variables**: Active features are exported as `DOTFILES_FEATURES`
|
|
36
|
-
3. **Enable conditional loading**: Allow selective inclusion of shell configurations
|
|
37
|
-
|
|
38
|
-
### Example Usage
|
|
39
|
-
|
|
40
|
-
```bash
|
|
41
|
-
# In template files, feature flags are referenced as:
|
|
42
|
-
{{- $features := default (dict "zsh" true "nvim" true "tmux" true "gui" true "secrets" true) .features -}}
|
|
43
|
-
|
|
44
|
-
# Export enabled features to environment
|
|
45
|
-
export DOTFILES_FEATURES="{{ join "," $enabled }}"
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
### Runtime Access
|
|
49
|
-
|
|
50
|
-
Once processed, you can check active features in your shell:
|
|
51
|
-
|
|
52
|
-
```bash
|
|
53
|
-
# View all enabled features
|
|
54
|
-
echo $DOTFILES_FEATURES
|
|
55
|
-
|
|
56
|
-
# Check if a specific feature is enabled
|
|
57
|
-
if [[ "$DOTFILES_FEATURES" == *"nvim"* ]]; then
|
|
58
|
-
echo "Neovim configuration is active"
|
|
59
|
-
fi
|
|
60
|
-
```
|
|
61
|
-
|
|
62
|
-
## Modifying Feature Flags
|
|
63
|
-
|
|
64
|
-
### Enable/Disable Features
|
|
65
|
-
|
|
66
|
-
Edit `.chezmoidata.toml`:
|
|
67
|
-
|
|
68
|
-
```toml
|
|
69
|
-
[features]
|
|
70
|
-
zsh = true
|
|
71
|
-
nvim = true
|
|
72
|
-
tmux = false # Disable tmux configuration
|
|
73
|
-
gui = false # Disable GUI configurations
|
|
74
|
-
secrets = true
|
|
75
|
-
```
|
|
76
|
-
|
|
77
|
-
### Apply Changes
|
|
78
|
-
|
|
79
|
-
After modifying feature flags, apply the changes:
|
|
80
|
-
|
|
81
|
-
```bash
|
|
82
|
-
chezmoi apply
|
|
83
|
-
```
|
|
84
|
-
|
|
85
|
-
### Profile-Specific Overrides
|
|
86
|
-
|
|
87
|
-
For machine-specific configurations, you can override feature flags in your local chezmoi config (`~/.config/chezmoi/chezmoi.toml`):
|
|
88
|
-
|
|
89
|
-
```toml
|
|
90
|
-
[data.features]
|
|
91
|
-
gui = false # Override: disable GUI on this machine
|
|
92
|
-
```
|
|
93
|
-
|
|
94
|
-
## Feature Flag Dependencies
|
|
95
|
-
|
|
96
|
-
### Core Dependencies
|
|
97
|
-
|
|
98
|
-
- **zsh**: Core shell functionality - recommended to keep enabled
|
|
99
|
-
- **nvim**: Independent - can be disabled if using alternative editors
|
|
100
|
-
- **tmux**: Independent - can be disabled if not using terminal multiplexer
|
|
101
|
-
|
|
102
|
-
### Conditional Dependencies
|
|
103
|
-
|
|
104
|
-
- **gui**: Requires desktop environment; automatically ignored on headless systems
|
|
105
|
-
- **secrets**: Required for encrypted configurations; disable only if not using secure storage
|
|
106
|
-
|
|
107
|
-
## Architecture Notes
|
|
108
|
-
|
|
109
|
-
### Default Behavior
|
|
110
|
-
|
|
111
|
-
The feature flag system uses a **fail-safe default** approach:
|
|
112
|
-
- If `.chezmoidata.toml` is missing features, all flags default to `true`
|
|
113
|
-
- This ensures the dotfiles work out-of-the-box without configuration
|
|
114
|
-
|
|
115
|
-
### Performance Impact
|
|
116
|
-
|
|
117
|
-
- **Enabled features**: Include additional configurations and may load more shell plugins
|
|
118
|
-
- **Disabled features**: Reduce startup time and memory usage by excluding unnecessary components
|
|
119
|
-
|
|
120
|
-
### Template Resolution
|
|
121
|
-
|
|
122
|
-
Feature flags are resolved during chezmoi template processing, not at runtime. This means:
|
|
123
|
-
- Changes require `chezmoi apply` to take effect
|
|
124
|
-
- No runtime performance penalty for checking feature status
|
|
125
|
-
- Configurations are pre-compiled based on active features
|
|
126
|
-
|
|
127
|
-
## Troubleshooting
|
|
128
|
-
|
|
129
|
-
### Check Current Features
|
|
130
|
-
|
|
131
|
-
```bash
|
|
132
|
-
# View active features
|
|
133
|
-
echo $DOTFILES_FEATURES
|
|
134
|
-
|
|
135
|
-
# View profile and theme
|
|
136
|
-
echo "Profile: $DOTFILES_PROFILE"
|
|
137
|
-
echo "Theme: $DOTFILES_THEME"
|
|
138
|
-
```
|
|
139
|
-
|
|
140
|
-
### Verify Configuration
|
|
141
|
-
|
|
142
|
-
```bash
|
|
143
|
-
# Check chezmoi data
|
|
144
|
-
chezmoi data
|
|
145
|
-
|
|
146
|
-
# Test template processing
|
|
147
|
-
chezmoi execute-template '{{ .features.zsh }}'
|
|
148
|
-
```
|
|
149
|
-
|
|
150
|
-
### Reset to Defaults
|
|
151
|
-
|
|
152
|
-
If you encounter issues, reset to default configuration:
|
|
153
|
-
|
|
154
|
-
```toml
|
|
155
|
-
[features]
|
|
156
|
-
zsh = true
|
|
157
|
-
nvim = true
|
|
158
|
-
tmux = true
|
|
159
|
-
gui = true
|
|
160
|
-
secrets = true
|
|
161
|
-
```
|
|
162
|
-
|
|
163
|
-
---
|
|
164
|
-
|
|
165
|
-
**Last Updated**: 2026-01-31
|
|
166
|
-
**Dotfiles Version**: v0.2.480
|