@sebastienrousseau/dotfiles 0.2.481 → 0.2.500
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/CHANGELOG.md +122 -32
- package/LICENSE +1 -1
- package/README.md +211 -242
- package/docs/.vitepress/reports/localization-readability-audit.md +69 -0
- package/docs/AI.md +102 -0
- package/docs/COPYRIGHT +2 -2
- package/docs/NAMING_CONVENTIONS.md +95 -0
- package/docs/README.md +58 -249
- package/docs/adr/ADR-004-cli-architecture.md +2 -2
- package/docs/adr/ADR-006-shell-selection.md +2 -2
- package/docs/adr/ADR-007-multi-shell-parity.md +53 -0
- package/docs/adr/ADR-008-alias-system-architecture.md +85 -0
- package/docs/adr/README.md +2 -3
- package/docs/architecture/ARCHITECTURE.md +113 -0
- package/docs/architecture/INTEROP.md +36 -0
- package/docs/architecture/REPO_LAYOUT.md +237 -0
- package/docs/architecture/WALKTHROUGH.md +82 -0
- package/docs/architecture/fleet-deployment.md +73 -0
- package/docs/archive/EUXIS_2026_REVIEW.md +119 -0
- package/docs/archive/MILESTONE_v0.2.493.md +43 -0
- package/docs/{PLAN.md → archive/PLAN.md} +1 -1
- package/docs/guides/INSTALL.md +140 -0
- package/docs/{NEOVIM_IDE_GUIDE.md → guides/NEOVIM_IDE_GUIDE.md} +12 -12
- package/docs/guides/THEMING.md +222 -0
- package/docs/{TROUBLESHOOTING.md → guides/TROUBLESHOOTING.md} +36 -0
- package/docs/{WSL2_NIX_TROUBLESHOOTING.md → guides/WSL2_NIX_TROUBLESHOOTING.md} +8 -8
- package/docs/index.md +39 -0
- package/docs/interop/A2A.md +32 -0
- package/docs/manual/00-introduction.md +85 -0
- package/docs/manual/01-concepts/01-architecture.md +134 -0
- package/docs/manual/01-concepts/02-trust-model.md +178 -0
- package/docs/manual/01-concepts/03-theme-engine.md +182 -0
- package/docs/manual/01-concepts/04-fleet.md +142 -0
- package/docs/manual/01-concepts/05-self-healing.md +197 -0
- package/docs/manual/02-tutorials/01-first-install.md +192 -0
- package/docs/manual/02-tutorials/02-add-wallpaper.md +211 -0
- package/docs/manual/02-tutorials/03-create-profile.md +238 -0
- package/docs/manual/02-tutorials/04-encrypt-secret.md +275 -0
- package/docs/manual/02-tutorials/05-deploy-fleet.md +279 -0
- package/docs/manual/03-reference/01-dot-cli.md +413 -0
- package/docs/manual/03-reference/02-config-files.md +259 -0
- package/docs/manual/03-reference/03-environment.md +120 -0
- package/docs/manual/03-reference/04-templates.md +184 -0
- package/docs/manual/03-reference/05-feature-flags.md +118 -0
- package/docs/manual/04-cookbook/01-recipes.md +281 -0
- package/docs/manual/04-cookbook/02-troubleshooting.md +319 -0
- package/docs/manual/04-cookbook/03-faq.md +167 -0
- package/docs/manual/05-appendices/A-platform-matrix.md +97 -0
- package/docs/manual/05-appendices/B-security-checklist.md +78 -0
- package/docs/manual/05-appendices/C-glossary.md +36 -0
- package/docs/manual/05-appendices/D-bibliography.md +54 -0
- package/docs/manual/05-appendices/E-license.md +34 -0
- package/docs/manual/_toc.yml +58 -0
- package/docs/manual/command-index.md +58 -0
- package/docs/manual/concept-index.md +164 -0
- package/docs/operations/ATTESTATION.md +39 -0
- package/docs/operations/MAINTENANCE.md +59 -0
- package/docs/operations/MIGRATION.md +101 -0
- package/docs/operations/OPERATIONS.md +164 -0
- package/docs/operations/RELIABILITY.md +116 -0
- package/docs/{ROADMAP.md → operations/ROADMAP.md} +11 -11
- package/docs/operations/TESTING.md +195 -0
- package/docs/operations/TRACEABILITY.md +31 -0
- package/docs/operations/TRUSTED_AGENT_WORKSTATION.md +61 -0
- package/docs/operations/VERSION_SYNC.md +344 -0
- package/docs/{ALIASES.md → reference/ALIASES.md} +2 -6
- package/docs/reference/ALIASES_CHEATSHEET.md +28 -0
- package/docs/reference/ALIASES_DEPRECATIONS.md +9 -0
- package/docs/reference/FEATURES.md +62 -0
- package/docs/reference/FONTS.md +108 -0
- package/docs/reference/PROFILES.md +65 -0
- package/docs/{SCREENSHOTS.md → reference/SCREENSHOTS.md} +26 -25
- package/docs/reference/SCRIPTS.md +67 -0
- package/docs/reference/SUPPORT_MATRIX.md +74 -0
- package/docs/reference/THEMES.md +113 -0
- package/docs/reference/TOOLS.md +105 -0
- package/docs/reference/UTILS.md +151 -0
- package/docs/security/AI_ACT_COMPLIANCE.md +90 -0
- package/docs/security/AUTOMATION_SECRETS.md +22 -0
- package/docs/security/COMPLIANCE.md +453 -0
- package/docs/security/ENCRYPTION.md +52 -0
- package/docs/security/FMEA.md +155 -0
- package/docs/security/INCIDENT_RESPONSE.md +575 -0
- package/docs/security/KEYS.md +45 -0
- package/docs/security/MCP_POLICY.md +69 -0
- package/docs/security/POLICY_RELEASES.md +33 -0
- package/docs/security/README.md +24 -0
- package/docs/security/SECRETS.md +146 -0
- package/docs/security/SECURITY.md +41 -0
- package/docs/security/SECURITY_CHECKLIST.md +44 -0
- package/docs/security/SOUP_REGISTER.md +32 -0
- package/docs/security/THREAT_MODEL.md +120 -0
- package/docs/security/VERIFICATION_VALIDATION.md +224 -0
- package/docs/themes/README.md +3 -17
- package/docs/themes/VISUAL_INTEGRITY_REPORT.md +26 -0
- package/docs/themes/hero-shot.svg +78 -0
- package/dot_config/.module-manifest.json +69 -0
- package/dot_config/ai/identity.md +20 -0
- package/dot_config/ai/patterns/architect.md +14 -0
- package/dot_config/ai/patterns/hardener.md +13 -0
- package/dot_config/ai/patterns/refactor.md +13 -0
- package/dot_config/aider/aider.conf.yml +1 -1
- package/dot_config/alacritty/alacritty.toml.tmpl +41 -469
- package/dot_config/atuin/config.toml +18 -1
- package/dot_config/bat/config +16 -1
- package/dot_config/claude/mcp_servers.json +3 -32
- package/dot_config/dotfiles/agent-card.json +29 -0
- package/dot_config/dotfiles/agent-profiles.json +92 -0
- package/dot_config/dotfiles/boot/README.md +1 -1
- package/dot_config/dotfiles/grub/README.md +1 -1
- package/dot_config/dotfiles/lock/README.md +1 -1
- package/dot_config/dotfiles/mcp-lock.json +33 -0
- package/dot_config/dotfiles/mcp-policy.json +52 -0
- package/dot_config/dotfiles/mcp-registry.json +47 -0
- package/dot_config/dotfiles/model-registry.json +20 -0
- package/dot_config/dotfiles/policy-bundles.json +38 -0
- package/dot_config/dotfiles/prompt-registry.json +16 -0
- package/dot_config/dotfiles/versions.env +18 -0
- package/dot_config/environment.d/50-ssh-agent.conf +2 -0
- package/dot_config/environment.d/90-wayland.conf +19 -0
- package/dot_config/firefox/user.js.tmpl +58 -0
- package/dot_config/fish/completions/dot-theme-sync.fish.tmpl +9 -0
- package/dot_config/fish/completions/dot.fish.tmpl +115 -0
- package/dot_config/fish/conf.d/000-perf-cache.fish +56 -0
- package/dot_config/fish/conf.d/aliases.fish.tmpl +77 -0
- package/dot_config/fish/conf.d/env.fish.tmpl +48 -0
- package/dot_config/fish/conf.d/functions.fish.tmpl +22 -0
- package/dot_config/fish/conf.d/init.fish.tmpl +151 -0
- package/dot_config/fish/config.fish.tmpl +44 -0
- package/dot_config/fish/fish_plugins +1 -0
- package/dot_config/fish/functions/_.fish +3 -0
- package/dot_config/fish/functions/_cached_eval.fish +58 -0
- package/dot_config/fish/functions/als.fish +46 -0
- package/dot_config/fish/functions/bg-upgrade.fish +7 -0
- package/dot_config/fish/functions/c.fish +3 -0
- package/dot_config/fish/functions/cat.fish +9 -0
- package/dot_config/fish/functions/d.fish +7 -0
- package/dot_config/fish/functions/dot.fish +34 -0
- package/dot_config/fish/functions/h.fish +3 -0
- package/dot_config/fish/functions/l.fish +7 -0
- package/dot_config/fish/functions/la.fish +7 -0
- package/dot_config/fish/functions/ll.fish +7 -0
- package/dot_config/fish/functions/log_error.fish +13 -0
- package/dot_config/fish/functions/log_info.fish +13 -0
- package/dot_config/fish/functions/lr.fish +7 -0
- package/dot_config/fish/functions/lra.fish +7 -0
- package/dot_config/fish/functions/ls.fish +7 -0
- package/dot_config/fish/functions/lt.fish +7 -0
- package/dot_config/fish/functions/lta.fish +7 -0
- package/dot_config/fish/functions/notify-run.fish +11 -0
- package/dot_config/fish/functions/q.fish +3 -0
- package/dot_config/fish/functions/silent-run.fish +7 -0
- package/dot_config/fish/functions/yy.fish +8 -0
- package/dot_config/fontconfig/fonts.conf.tmpl +13 -0
- package/dot_config/foot/foot.ini.tmpl +33 -0
- package/dot_config/fuzzel/fuzzel.ini.tmpl +18 -0
- package/dot_config/fzf/fzf.zsh +48 -0
- package/dot_config/ghostty/config.tmpl +69 -565
- package/dot_config/git/allowed_signers.tmpl +18 -0
- package/dot_config/git/commit-template +10 -0
- package/dot_config/gnupg/{gpg-agent.conf.tmpl → gpg-agent.conf} +3 -3
- package/dot_config/goose/config.yaml +2 -2
- package/dot_config/gtk-3.0/gtk.css.tmpl +59 -180
- package/dot_config/gtk-3.0/settings.ini.tmpl +5 -44
- package/dot_config/gtk-4.0/gtk.css.tmpl +79 -136
- package/dot_config/gtk-4.0/settings.ini.tmpl +5 -8
- package/dot_config/ipython/profile_default/ipython_config.py +19 -0
- package/dot_config/just/justfile +18 -0
- package/dot_config/kanshi/config.tmpl +22 -0
- package/dot_config/kitty/kitty.conf.tmpl +44 -508
- package/dot_config/lazygit/config.yml +18 -6
- package/dot_config/mako/config +47 -0
- package/dot_config/micro/settings.json +3 -0
- package/dot_config/mimeapps.list +77 -0
- package/dot_config/mise/config.toml +63 -5
- package/dot_config/mongosh/mongoshrc.js +1 -0
- package/dot_config/mpv/input.conf +47 -0
- package/dot_config/mpv/mpv.conf +47 -0
- package/dot_config/niri/config.kdl.tmpl +327 -0
- package/dot_config/nushell/aliases.nu +18 -0
- package/dot_config/nushell/completions.nu.tmpl +52 -0
- package/dot_config/nushell/config.nu.tmpl +86 -0
- package/dot_config/nushell/env.nu.tmpl +94 -0
- package/dot_config/nushell/functions.nu.tmpl +17 -0
- package/dot_config/nvim/init.lua +14 -0
- package/dot_config/nvim/lazy-lock.json +45 -14
- package/dot_config/nvim/lua/config/autocmds.lua +45 -1
- package/dot_config/nvim/lua/config/keymaps.lua +13 -8
- package/dot_config/nvim/lua/config/lazy.lua +22 -12
- package/dot_config/nvim/lua/config/options.lua +1 -0
- package/dot_config/nvim/lua/plugins/ai.lua +75 -0
- package/dot_config/nvim/lua/plugins/coding.lua +11 -29
- package/dot_config/nvim/lua/plugins/completion.lua +60 -0
- package/dot_config/nvim/lua/plugins/dap.lua +215 -4
- package/dot_config/nvim/lua/plugins/editor.lua +6 -10
- package/dot_config/nvim/lua/plugins/git.lua +1 -0
- package/dot_config/nvim/lua/plugins/lsp.lua +16 -81
- package/dot_config/nvim/lua/plugins/markdown.lua +1 -0
- package/dot_config/nvim/lua/plugins/rust.lua +1 -0
- package/dot_config/nvim/lua/plugins/sessions.lua +1 -0
- package/dot_config/nvim/lua/plugins/ui.lua +23 -51
- package/dot_config/paru/paru.conf +10 -0
- package/dot_config/powershell/Microsoft.PowerShell_profile.ps1.tmpl +81 -0
- package/dot_config/pueue/pueue.yml +34 -0
- package/dot_config/raycast/README.md +1 -1
- package/dot_config/ripgrep/ripgreprc +21 -0
- package/dot_config/shell/00-core-paths.sh.tmpl +62 -24
- package/dot_config/shell/05-core-safety.sh +47 -0
- package/dot_config/shell/10-secrets.sh +40 -0
- package/dot_config/shell/40-fzf-defaults.sh.tmpl +16 -0
- package/dot_config/shell/40-ls-colors.sh +48 -0
- package/dot_config/shell/50-logic-functions-core.sh.tmpl +10 -0
- package/dot_config/shell/51-logic-functions-extra.sh.tmpl +64 -0
- package/dot_config/shell/90-ux-aliases.sh.tmpl +90 -5
- package/dot_config/shell/91-ux-aliases-lazy.sh.tmpl +33 -2
- package/dot_config/shell/Brewfile.cli +8 -0
- package/dot_config/shell/README.md +9 -9
- package/dot_config/shell/als_data.txt.tmpl +65 -0
- package/dot_config/shell/custom/auto_ls.zsh +20 -0
- package/dot_config/shell/custom/context_suggest.zsh +50 -50
- package/dot_config/shell/custom/error_analysis.zsh +29 -29
- package/dot_config/starship.toml.tmpl +85 -7
- package/dot_config/swaylock/config +43 -0
- package/dot_config/systemd/user/dotfiles-maintenance.service +8 -0
- package/dot_config/systemd/user/dotfiles-maintenance.timer +11 -0
- package/dot_config/systemd/user/pueued.service +12 -0
- package/dot_config/systemd/user/ssh-agent.service +12 -0
- package/dot_config/tmux/tmux.conf.tmpl +80 -38
- package/dot_config/topgrade.toml.tmpl +54 -0
- package/dot_config/user-dirs.dirs +9 -0
- package/dot_config/vscode/settings.json.tmpl +9 -50
- package/dot_config/waybar/config.jsonc.tmpl +90 -0
- package/dot_config/waybar/style.css.tmpl +211 -0
- package/dot_config/wezterm/wezterm.lua.tmpl +31 -203
- package/dot_config/xdg-desktop-portal/niri-portals.conf +5 -0
- package/dot_config/yazi/keymap.toml +67 -0
- package/dot_config/yazi/theme.toml +102 -0
- package/dot_config/zathura/zathurarc +52 -0
- package/dot_config/zellij/{config.kdl → config.kdl.tmpl} +1 -1
- package/dot_config/zsh/dot_zprofile +1 -7
- package/dot_config/zsh/dot_zshenv +2 -3
- package/dot_config/zsh/dot_zshrc.tmpl +368 -69
- package/dot_config/zsh/rc.d/00-alias-shims.zsh +77 -0
- package/dot_config/zsh/rc.d/05-ssh-agent.zsh +17 -4
- package/dot_config/zsh/rc.d/10-env.zsh.tmpl +4 -4
- package/dot_config/zsh/rc.d/20-zinit.zsh +65 -0
- package/dot_config/zsh/rc.d/30-options.zsh.tmpl +101 -30
- package/dot_config/zsh/rc.d/99-alias-wrapper.zsh +32 -0
- package/dot_local/bin/__pycache__/executable_dot-load-benchmark-ptycpython-312.pyc +0 -0
- package/dot_local/bin/executable_ai-update +195 -0
- package/dot_local/bin/executable_ai_core +113 -91
- package/dot_local/bin/executable_antigravity +11 -0
- package/dot_local/bin/executable_b64 +61 -36
- package/dot_local/bin/executable_bm +77 -0
- package/dot_local/bin/executable_cb +39 -0
- package/dot_local/bin/executable_dot +543 -132
- package/dot_local/bin/executable_dot-ai +36 -0
- package/dot_local/bin/executable_dot-bootstrap +77 -0
- package/dot_local/bin/executable_dot-launch-or-focus +52 -0
- package/dot_local/bin/executable_dot-load-benchmark +31 -0
- package/dot_local/bin/executable_dot-load-benchmark-pty +77 -0
- package/dot_local/bin/executable_dot-theme-sync +952 -0
- package/dot_local/bin/executable_dot_completion +2 -0
- package/dot_local/bin/executable_dtags +28 -0
- package/dot_local/bin/executable_epoch +43 -38
- package/dot_local/bin/executable_extract +32 -99
- package/dot_local/bin/executable_gbd +52 -0
- package/dot_local/bin/executable_gd +42 -0
- package/dot_local/bin/executable_git-ai-commit +35 -20
- package/dot_local/bin/executable_git-ai-diff +33 -18
- package/dot_local/bin/executable_gl +101 -0
- package/dot_local/bin/executable_hash +56 -18
- package/dot_local/bin/executable_hashsum +160 -0
- package/dot_local/bin/executable_hex +44 -8
- package/dot_local/bin/executable_jsonv +34 -10
- package/dot_local/bin/executable_jwt +22 -6
- package/dot_local/bin/executable_kill-port +18 -2
- package/dot_local/bin/executable_lorem +21 -6
- package/dot_local/bin/executable_mkscript +35 -0
- package/dot_local/bin/executable_monitor +56 -0
- package/dot_local/bin/{executable_ip → executable_myip} +16 -2
- package/dot_local/bin/executable_notify +22 -0
- package/dot_local/bin/executable_open +36 -0
- package/dot_local/bin/executable_pw +27 -0
- package/dot_local/bin/executable_rec-start +46 -0
- package/dot_local/bin/executable_rec-stop +35 -0
- package/dot_local/bin/executable_regex +49 -13
- package/dot_local/bin/executable_start-niri +8 -0
- package/dot_local/bin/executable_tmux-sessionizer +276 -149
- package/dot_local/bin/executable_tour +112 -74
- package/dot_local/bin/executable_up +21 -0
- package/dot_local/bin/executable_update +45 -11
- package/dot_local/bin/executable_uuid +37 -7
- package/dot_local/bin/executable_win +32 -0
- package/dot_local/bin/executable_yamlv +25 -7
- package/dot_local/share/bash-completion/completions/dot +62 -44
- package/dot_local/share/icons/hicolor/128x128/apps/rousseau.png +0 -0
- package/dot_local/share/icons/hicolor/16x16/apps/rousseau.png +0 -0
- package/dot_local/share/icons/hicolor/24x24/apps/rousseau.png +0 -0
- package/dot_local/share/icons/hicolor/256x256/apps/rousseau.png +0 -0
- package/dot_local/share/icons/hicolor/32x32/apps/rousseau.png +0 -0
- package/dot_local/share/icons/hicolor/48x48/apps/rousseau.png +0 -0
- package/dot_local/share/icons/hicolor/512x512/apps/rousseau.png +0 -0
- package/dot_local/share/icons/hicolor/64x64/apps/rousseau.png +0 -0
- package/dot_local/share/icons/hicolor/96x96/apps/rousseau.png +0 -0
- package/dot_local/share/icons/hicolor/scalable/apps/rousseau.png +0 -0
- package/dot_local/share/man/man1/dot.1 +149 -0
- package/dot_local/share/mise/plugins/kiro-cli/bin/executable_download +64 -0
- package/dot_local/share/mise/plugins/kiro-cli/bin/executable_install +18 -0
- package/dot_local/share/mise/plugins/kiro-cli/bin/executable_list-all +13 -0
- package/dot_local/share/wayland-sessions/niri.desktop.tmpl +6 -0
- package/dot_local/share/zsh/completions/_dot +283 -0
- package/install.sh +297 -210
- package/package.json +17 -5
- package/scripts/ci/check-copyright-headers.sh +96 -0
- package/scripts/ci/guard-gitleaks-checkout.sh +57 -0
- package/scripts/ci/install-chezmoi-verified.sh +64 -0
- package/scripts/ci/validate-ci-config.sh +41 -39
- package/scripts/demo/record.sh +3 -2
- package/scripts/diagnostics/a2a-conformance.sh +162 -0
- package/scripts/diagnostics/alias-governance.sh +137 -0
- package/scripts/diagnostics/aliases-cheatsheet.sh +73 -0
- package/scripts/diagnostics/aliases-manifest.sh +31 -0
- package/scripts/diagnostics/benchmark.sh +209 -29
- package/scripts/diagnostics/conflicts.sh +72 -0
- package/scripts/diagnostics/doctor-unified.sh +38 -0
- package/scripts/diagnostics/doctor.sh +491 -65
- package/scripts/diagnostics/drift-dashboard.sh +17 -6
- package/scripts/diagnostics/health.sh +351 -110
- package/scripts/diagnostics/history-analysis.sh +12 -4
- package/scripts/diagnostics/mcp-doctor.sh +575 -0
- package/scripts/diagnostics/perf.sh +225 -0
- package/scripts/diagnostics/scorecard.sh +118 -0
- package/scripts/diagnostics/secret-governance.sh +58 -0
- package/scripts/diagnostics/security-score.sh +139 -93
- package/scripts/diagnostics/smoke-test.sh +87 -0
- package/scripts/diagnostics/snapshot.sh +89 -0
- package/scripts/diagnostics/verify.sh +107 -0
- package/scripts/diagnostics/verify_state.sh +2 -2
- package/scripts/diagnostics/version-locks.sh +79 -0
- package/scripts/diagnostics/workstation-attestation.sh +181 -0
- package/scripts/docs/build-manual.sh +883 -0
- package/scripts/docs/check-manual.sh +213 -0
- package/scripts/dot/commands/agent.sh +465 -0
- package/scripts/dot/commands/ai.sh +416 -0
- package/scripts/dot/commands/aliases.sh +250 -0
- package/scripts/dot/commands/appearance.sh +21 -4
- package/scripts/dot/commands/core.sh +59 -4
- package/scripts/dot/commands/diagnostics.sh +132 -3
- package/scripts/dot/commands/fleet.sh +399 -0
- package/scripts/dot/commands/lint.sh +177 -0
- package/scripts/dot/commands/manual.sh +168 -0
- package/scripts/dot/commands/meta.sh +148 -17
- package/scripts/dot/commands/patterns.sh +54 -0
- package/scripts/dot/commands/restore.sh +57 -35
- package/scripts/dot/commands/secrets.sh +151 -9
- package/scripts/dot/commands/security.sh +3 -0
- package/scripts/dot/commands/tools.sh +268 -27
- package/scripts/dot/data/alias-deprecations.tsv +2 -0
- package/scripts/dot/lib/bento.sh +49 -0
- package/scripts/dot/lib/log.sh +194 -0
- package/scripts/dot/lib/platform.sh +98 -0
- package/scripts/dot/lib/ui.sh +507 -0
- package/scripts/dot/lib/utils.sh +318 -18
- package/scripts/fonts/install-nerd-fonts.sh +19 -10
- package/scripts/fonts/patch-fonts.sh +1 -0
- package/scripts/git-hooks/install.sh +11 -0
- package/scripts/git-hooks/pre-commit +12 -0
- package/scripts/git-hooks/pre-commit-audit.sh +145 -0
- package/scripts/git-hooks/pre-push +29 -0
- package/scripts/git-hooks/prepare-commit-msg +29 -0
- package/scripts/lib/secrets_provider.sh +158 -0
- package/scripts/maintenance/check-updates.sh +131 -0
- package/scripts/ops/ai-setup.sh +55 -0
- package/scripts/ops/bundle.sh +77 -0
- package/scripts/ops/chaos.sh +49 -0
- package/scripts/ops/chezmoi-apply.sh +245 -17
- package/scripts/ops/chezmoi-diff.sh +1 -0
- package/scripts/ops/chezmoi-remove.sh +2 -0
- package/scripts/ops/chezmoi-update.sh +34 -2
- package/scripts/ops/heal-chezmoi.sh +51 -0
- package/scripts/ops/heal-system.sh +128 -0
- package/scripts/ops/heal-tools.sh +340 -0
- package/scripts/ops/heal.sh +98 -342
- package/scripts/ops/post-apply-repair.sh +106 -0
- package/scripts/ops/prewarm.sh +127 -0
- package/scripts/ops/release.sh +252 -0
- package/scripts/ops/rollback.sh +86 -28
- package/scripts/ops/setup.sh +137 -0
- package/scripts/ops/teleport.sh +2 -1
- package/scripts/qa/coverage-baseline.sh +60 -0
- package/scripts/qa/docs-coverage.sh +111 -0
- package/scripts/qa/reliability-audit.sh +138 -0
- package/scripts/qa/traceability-coverage.sh +116 -0
- package/scripts/qa/validate-examples.sh +26 -0
- package/scripts/qa/wsl-contract.sh +11 -0
- package/scripts/release/package-policy-bundles.sh +125 -0
- package/scripts/secrets/age-init.sh +1 -0
- package/scripts/secrets/create-secrets-file.sh +1 -0
- package/scripts/secrets/encrypt-ssh-key.sh +1 -0
- package/scripts/security/backup.sh +44 -4
- package/scripts/security/dns-doh.sh +36 -14
- package/scripts/security/encryption-check.sh +27 -12
- package/scripts/security/enforce-policies.sh +11 -16
- package/scripts/security/firewall.sh +76 -20
- package/scripts/security/lock-configs.sh +2 -2
- package/scripts/security/lock-screen.sh +40 -18
- package/scripts/security/manage-secrets.sh +42 -29
- package/scripts/security/ssh-cert.sh +203 -0
- package/scripts/security/telemetry-kill.sh +40 -18
- package/scripts/security/usb-safety.sh +37 -15
- package/scripts/theme/apply-gnome-theme.sh +87 -56
- package/scripts/theme/extract-theme.py +677 -0
- package/scripts/theme/install-boot-logo.sh +1 -0
- package/scripts/theme/install-catppuccin-themes.sh +57 -33
- package/scripts/theme/install-cursors.sh +1 -0
- package/scripts/theme/install-file-icons.sh +1 -0
- package/scripts/theme/install-grub-theme.sh +11 -1
- package/scripts/theme/install-lock-icon.sh +1 -0
- package/scripts/theme/merge-wallpaper.sh +141 -0
- package/scripts/theme/rebuild-themes.sh +309 -0
- package/scripts/theme/switch.sh +308 -137
- package/scripts/theme/wallpaper-rotate.sh +66 -12
- package/scripts/theme/wallpaper-sync.sh +386 -31
- package/scripts/tools/cmatrix.sh +1 -0
- package/scripts/tools/detect-collisions.py +1 -1
- package/scripts/tools/emoji-picker.sh +4 -1
- package/scripts/tools/figlet-banner.sh +1 -0
- package/scripts/tools/log-rotate.sh +2 -1
- package/scripts/tools/lolcat-wrap.sh +1 -0
- package/scripts/tools/pipes.sh +1 -0
- package/scripts/tuning/linux.sh +23 -13
- package/scripts/tuning/macos.sh +13 -4
- package/scripts/uninstall.sh +85 -0
- package/scripts/version-sync.sh +487 -0
- package/templates/chezmoi-data/geekom-a9.toml.example +21 -0
- package/templates/chezmoi-data/mac-m1.toml.example +16 -0
- package/templates/chezmoi-data/mac-t2-linux.toml.example +21 -0
- package/templates/chezmoi-data/surface-pro-7p.toml.example +21 -0
- package/templates/projects/go/.github/workflows/ci.yml +31 -0
- package/templates/projects/go/README.md +1 -1
- package/templates/projects/go/cmd/__PROJECT_NAME__/main.go +1 -0
- package/templates/projects/go/go.sum +0 -0
- package/templates/projects/molecule/README.md +1 -1
- package/templates/projects/node/.github/workflows/ci.yml +30 -0
- package/templates/projects/node/README.md +1 -1
- package/templates/projects/node/package-lock.json +12 -0
- package/templates/projects/node/src/index.js +1 -0
- package/templates/projects/packer/README.md +1 -1
- package/templates/projects/python/.github/workflows/ci.yml +34 -0
- package/templates/projects/python/README.md +1 -1
- package/templates/projects/python/src/__PROJECT_NAME__/__init__.py +1 -0
- package/templates/projects/python/tests/test_basic.py +1 -0
- package/docs/ARCHITECTURE.md +0 -229
- package/docs/COMPLIANCE.md +0 -47
- 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/OPERATIONS.md +0 -130
- package/docs/PR_DESCRIPTION.md +0 -149
- package/docs/SECRETS.md +0 -76
- package/docs/SECURITY.md +0 -30
- package/docs/SECURITY_CHECKLIST.md +0 -25
- package/docs/TASK.md +0 -99
- package/docs/TESTING.md +0 -190
- package/docs/TOOLS.md +0 -146
- package/docs/UTILS.md +0 -105
- package/docs/WALKTHROUGH.md +0 -165
- package/dot_config/clippy.toml +0 -55
- package/dot_config/dotfiles/versions.env.tmpl +0 -19
- package/dot_config/firefox/user.js +0 -8
- package/dot_config/git/config.tmpl +0 -77
- package/dot_config/go/aliases.sh +0 -61
- package/dot_config/go/env.sh +0 -24
- package/dot_config/ice/README.md +0 -13
- package/dot_config/ipython/profile_default/ipython_config.py.tmpl +0 -5
- package/dot_config/lsd/config.yaml +0 -19
- package/dot_config/nvim/snippets/all.lua +0 -9
- package/dot_config/nvim/snippets/python.lua +0 -16
- package/dot_config/shell/00-container-detect.sh +0 -53
- 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/90-theme-switch.sh +0 -70
- package/dot_config/topgrade/topgrade.toml.tmpl +0 -42
- package/dot_config/waybar/style.css +0 -8
- package/dot_config/zsh/rc.d/20-zinit.zsh.tmpl +0 -22
- package/dot_local/bin/executable_zig-install +0 -89
- package/dot_local/bin/voice_ops +0 -7
- package/scripts/ops/health-check.sh +0 -380
- 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-aliases.sh +0 -25
- 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/docs/{LEGACY_ROADMAP.md → archive/LEGACY_ROADMAP.md} +0 -0
- /package/docs/{REPO_AUDIT.md → archive/REPO_AUDIT.md} +0 -0
- /package/docs/{KEY_ROTATION.md → security/KEY_ROTATION.md} +0 -0
- /package/dot_config/ansible/{ansible.cfg.tmpl → ansible.cfg} +0 -0
- /package/dot_config/docker/{config.json.tmpl → config.json} +0 -0
- /package/dot_config/k9s/{config.yaml.tmpl → config.yaml} +0 -0
- /package/dot_config/pypoetry/{config.toml.tmpl → config.toml} +0 -0
- /package/dot_config/{pyrightconfig.json.tmpl → pyrightconfig.json} +0 -0
- /package/dot_config/tflint/{tflint.hcl.tmpl → tflint.hcl} +0 -0
- /package/dot_config/yarn/{yarnrc.yml.tmpl → yarnrc.yml} +0 -0
- /package/dot_config/zsh/rc.d/{40-bell.zsh.tmpl → 40-bell.zsh} +0 -0
- /package/dot_config/zsh/rc.d/{50-login-fortune.zsh.tmpl → 50-login-fortune.zsh} +0 -0
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
# Euxis 2026 Architecture & Product Review
|
|
2
|
+
|
|
3
|
+
This review translates the current dotfiles CLI stack into an Apple-tier product strategy:
|
|
4
|
+
high power, near-zero cognitive load, and cross-platform parity (macOS, Linux, WSL).
|
|
5
|
+
|
|
6
|
+
## Current state (what is already strong)
|
|
7
|
+
|
|
8
|
+
- Unified entrypoint (`dot`) with modular command routing.
|
|
9
|
+
- Good safety baseline (strict mode, governance, preflight checks).
|
|
10
|
+
- Broad CI coverage with strong shell quality gates.
|
|
11
|
+
- WSL support already exists but is distributed across scripts.
|
|
12
|
+
|
|
13
|
+
## Gaps to close for Apple-tier quality
|
|
14
|
+
|
|
15
|
+
### Performance and responsiveness
|
|
16
|
+
|
|
17
|
+
- `dot doctor` scans broad filesystem paths and can feel slow on large homes.
|
|
18
|
+
- Platform detection logic is duplicated across scripts.
|
|
19
|
+
- Source directory resolution repeats file system probes in hot paths.
|
|
20
|
+
|
|
21
|
+
### UX and cognitive load
|
|
22
|
+
|
|
23
|
+
- Cross-platform behavior is implicit, not surfaced as a simple product contract.
|
|
24
|
+
- Users still need to understand host/guest boundaries (especially WSL).
|
|
25
|
+
- Onboarding signal is fragmented across docs and command help.
|
|
26
|
+
|
|
27
|
+
### Product parity
|
|
28
|
+
|
|
29
|
+
- No single abstraction layer for path conversion and host-native opening.
|
|
30
|
+
- No first-class “platform parity” diagnostics in one section.
|
|
31
|
+
|
|
32
|
+
## Implemented in this branch
|
|
33
|
+
|
|
34
|
+
### 1) Platform abstraction layer
|
|
35
|
+
|
|
36
|
+
Added `scripts/dot/lib/platform.sh` with:
|
|
37
|
+
|
|
38
|
+
- `dot_platform_id`
|
|
39
|
+
- `dot_host_os`
|
|
40
|
+
- `dot_is_wsl`
|
|
41
|
+
- `dot_path_to_unix`
|
|
42
|
+
- `dot_path_to_native`
|
|
43
|
+
- `dot_open_path`
|
|
44
|
+
|
|
45
|
+
This centralizes platform semantics and removes per-script drift.
|
|
46
|
+
|
|
47
|
+
### 2) Hot-path optimization in shared utils
|
|
48
|
+
|
|
49
|
+
Updated `scripts/dot/lib/utils.sh`:
|
|
50
|
+
|
|
51
|
+
- sources `platform.sh`
|
|
52
|
+
- adds process-local source dir cache (`_DOT_SOURCE_DIR_CACHE`)
|
|
53
|
+
- avoids repeated filesystem checks in repeated command flows
|
|
54
|
+
|
|
55
|
+
### 3) Faster, clearer diagnostics
|
|
56
|
+
|
|
57
|
+
Updated `scripts/diagnostics/doctor.sh`:
|
|
58
|
+
|
|
59
|
+
- new **Platform** section (runtime + host + WSL bridge/fallback checks)
|
|
60
|
+
- warns when running in `/mnt/*` under WSL (high IO latency path)
|
|
61
|
+
- scoped symlink scan to standard roots only (`~/.config`, `~/.local`, `~/.ssh`)
|
|
62
|
+
- adds explicit `dot` command resolution check
|
|
63
|
+
|
|
64
|
+
### 4) Onboarding clarity
|
|
65
|
+
|
|
66
|
+
Updated `README.md`:
|
|
67
|
+
|
|
68
|
+
- added “60-second onboarding” with a clear success state
|
|
69
|
+
|
|
70
|
+
### 5) Test coverage for new abstraction
|
|
71
|
+
|
|
72
|
+
Added `scripts/tests/unit/test_dot_lib_platform.sh`:
|
|
73
|
+
|
|
74
|
+
- existence + syntax + function presence + return contract checks
|
|
75
|
+
|
|
76
|
+
## File-by-file next refactors (high ROI)
|
|
77
|
+
|
|
78
|
+
1. `scripts/dot/commands/tools.sh`
|
|
79
|
+
- Split `cmd_aliases` into submodule file.
|
|
80
|
+
- Replace repeated `command -v` checks with cached capability map.
|
|
81
|
+
|
|
82
|
+
2. `dot_config/zsh/dot_zshrc.tmpl`
|
|
83
|
+
- Add startup budget guard (record startup time; warn >400ms).
|
|
84
|
+
- Move optional integrations behind capability checks generated once/session.
|
|
85
|
+
|
|
86
|
+
3. `scripts/ops/health-check.sh`
|
|
87
|
+
- Import `platform.sh`, unify WSL/macOS/Linux branch logic.
|
|
88
|
+
- Emit machine-readable JSON summary for UI frontends.
|
|
89
|
+
|
|
90
|
+
4. `scripts/diagnostics/perf.sh`
|
|
91
|
+
- Add percentile reporting (P50/P95 over 10 runs).
|
|
92
|
+
- Add regression threshold with actionable remediation hints.
|
|
93
|
+
|
|
94
|
+
## Product roadmap (prioritized)
|
|
95
|
+
|
|
96
|
+
### P0 (1-2 weeks)
|
|
97
|
+
|
|
98
|
+
- Platform abstraction adoption across all dot commands.
|
|
99
|
+
- Bounded diagnostic scans everywhere (`find` scope + timeout).
|
|
100
|
+
- “Single-screen health” command output format harmonization.
|
|
101
|
+
|
|
102
|
+
### P1 (2-4 weeks)
|
|
103
|
+
|
|
104
|
+
- Local state model for predictive UX (`~/.local/state/dotfiles/session.json`).
|
|
105
|
+
- Adaptive hints (“next best action”) based on detected failures.
|
|
106
|
+
- Non-blocking diagnostics execution with staged rendering.
|
|
107
|
+
|
|
108
|
+
### P2 (4-8 weeks)
|
|
109
|
+
|
|
110
|
+
- Optional Rust helper binary for path/process abstraction and fast JSON output.
|
|
111
|
+
- WASM-compatible policy engine for deterministic config validation.
|
|
112
|
+
- Cross-device state sync model (privacy-first, local-first defaults).
|
|
113
|
+
|
|
114
|
+
## Apple-tier UX bar (acceptance criteria)
|
|
115
|
+
|
|
116
|
+
- First successful install + health check in under 90 seconds.
|
|
117
|
+
- `dot doctor` completes in under 700ms on warmed cache.
|
|
118
|
+
- No user-facing distinction between macOS/Linux/WSL for core commands.
|
|
119
|
+
- All failures return one-line remediation with direct command to fix.
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# Milestone v0.2.493 Scope
|
|
2
|
+
|
|
3
|
+
This milestone keeps scope intentionally small and operationally focused.
|
|
4
|
+
|
|
5
|
+
## Goals
|
|
6
|
+
|
|
7
|
+
- Make post-merge verification a first-class workflow (`dot verify`).
|
|
8
|
+
- Keep protected-branch CI deterministic (no unsigned bot commits on `master`).
|
|
9
|
+
- Improve day-2 operator confidence with explicit verification guidance.
|
|
10
|
+
|
|
11
|
+
## In Scope
|
|
12
|
+
|
|
13
|
+
- [x] Add `dot verify` command routing in diagnostics module.
|
|
14
|
+
- `scripts/dot/commands/diagnostics.sh`
|
|
15
|
+
- `dot_local/bin/executable_dot`
|
|
16
|
+
- [x] Add verification runner script.
|
|
17
|
+
- `scripts/diagnostics/verify.sh`
|
|
18
|
+
- Runs:
|
|
19
|
+
- `dot doctor`
|
|
20
|
+
- `dot status`
|
|
21
|
+
- `chezmoi diff`
|
|
22
|
+
- [x] Update completion surfaces for new command.
|
|
23
|
+
- `dot_local/share/bash-completion/completions/dot`
|
|
24
|
+
- `dot_local/bin/executable_dot_completion`
|
|
25
|
+
- [x] Harden sync-versions behavior for protected `master`.
|
|
26
|
+
- `.github/workflows/sync-versions.yml`
|
|
27
|
+
- `master` now verifies only; auto-sync commit job runs on non-master branches.
|
|
28
|
+
- [x] Update docs and command references.
|
|
29
|
+
- `README.md`
|
|
30
|
+
- `docs/README.md`
|
|
31
|
+
- `docs/OPERATIONS.md`
|
|
32
|
+
|
|
33
|
+
## Out of Scope
|
|
34
|
+
|
|
35
|
+
- New security controls beyond existing baseline.
|
|
36
|
+
- Major CLI redesign or command namespace reshuffle.
|
|
37
|
+
- Release process automation changes outside sync-versions policy hardening.
|
|
38
|
+
|
|
39
|
+
## Exit Criteria
|
|
40
|
+
|
|
41
|
+
- `dot verify` returns non-zero on drift/issues and zero when healthy.
|
|
42
|
+
- `sync-versions` workflow no longer attempts commits to protected `master`.
|
|
43
|
+
- Relevant unit tests and targeted command tests pass.
|
|
@@ -85,7 +85,7 @@ Establish a "Trust Layer" for the dotfiles ecosystem, ensuring supply chain secu
|
|
|
85
85
|
|
|
86
86
|
## Changes
|
|
87
87
|
- **SLSA & SBOM**: Implemented `security-release.yml` for provenance and SBOM generation.
|
|
88
|
-
- **Signing**: Created `enable-signing` wizard alias for
|
|
88
|
+
- **Signing**: Created `enable-signing` wizard alias for streamlined GPG/SSH configuration.
|
|
89
89
|
- **Immutability**: Created `lock-configs.sh` script and `lock-configs`/`unlock-configs` aliases.
|
|
90
90
|
|
|
91
91
|
- **Immutability**: Created `lock-configs.sh` script and `lock-configs`/`unlock-configs` aliases.
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
# Install
|
|
2
|
+
|
|
3
|
+
Set up on macOS, Linux, or WSL in 3 to 5 minutes.
|
|
4
|
+
|
|
5
|
+
**You will need:** `git` and `curl`.
|
|
6
|
+
|
|
7
|
+
**Default shell:** Fish. You can change it after you install.
|
|
8
|
+
|
|
9
|
+
## Install
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
bash -c "$(
|
|
13
|
+
curl -fsSL https://raw.githubusercontent.com/sebastienrousseau/dotfiles/master/install.sh
|
|
14
|
+
)"
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
Then restart your terminal or run `exec $SHELL`.
|
|
18
|
+
|
|
19
|
+
## Verify
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
dot --version # Confirm installation
|
|
23
|
+
dot doctor # Check shell, git, and tools
|
|
24
|
+
dot help # Browse available commands
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## Choose a shell
|
|
28
|
+
|
|
29
|
+
Fish is the default shell. To switch to Zsh or Nushell, edit `~/.dotfiles/.chezmoidata.toml`:
|
|
30
|
+
|
|
31
|
+
```toml
|
|
32
|
+
default_shell = "zsh"
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
Supported values: `zsh`, `fish`, `nushell`.
|
|
36
|
+
|
|
37
|
+
Then apply the change:
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
dot apply
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## Feature flags
|
|
44
|
+
|
|
45
|
+
Turn optional tools on or off after setup. Edit `.chezmoidata.toml`:
|
|
46
|
+
|
|
47
|
+
```toml
|
|
48
|
+
[features]
|
|
49
|
+
zsh = true # Zsh shell configuration
|
|
50
|
+
fish = true # Fish shell configuration
|
|
51
|
+
nushell = true # Nushell configuration
|
|
52
|
+
nvim = true # Neovim IDE configuration
|
|
53
|
+
tmux = true # Terminal multiplexer
|
|
54
|
+
nix = true # Nix package manager integration
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
## Update
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
dot update
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
## Next steps
|
|
64
|
+
|
|
65
|
+
1. Run `dot learn` to take a guided tour.
|
|
66
|
+
2. Add your own tweaks in `~/.config/shell/custom/`.
|
|
67
|
+
3. Read the [Utilities and `dot` CLI](../reference/UTILS.md) reference.
|
|
68
|
+
|
|
69
|
+
---
|
|
70
|
+
|
|
71
|
+
## Advanced
|
|
72
|
+
|
|
73
|
+
### Local source install
|
|
74
|
+
|
|
75
|
+
Clone the repo first, then run the installer from your local copy:
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
git clone https://github.com/sebastienrousseau/dotfiles.git ~/.dotfiles
|
|
79
|
+
cd ~/.dotfiles
|
|
80
|
+
./install.sh
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
### Minimal install
|
|
84
|
+
|
|
85
|
+
Install only shells and core tools. This skips editor and terminal extras:
|
|
86
|
+
|
|
87
|
+
```bash
|
|
88
|
+
./install.sh --minimal
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
### Non-interactive install
|
|
92
|
+
|
|
93
|
+
Use this mode for CI or scripts that run without user input:
|
|
94
|
+
|
|
95
|
+
```bash
|
|
96
|
+
DOTFILES_SILENT=1 DOTFILES_NONINTERACTIVE=1 \
|
|
97
|
+
bash -c "$(
|
|
98
|
+
curl -fsSL https://raw.githubusercontent.com/sebastienrousseau/dotfiles/master/install.sh
|
|
99
|
+
)"
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
### Nix
|
|
103
|
+
|
|
104
|
+
```bash
|
|
105
|
+
nix develop ~/.dotfiles/nix
|
|
106
|
+
nix profile install ~/.dotfiles/nix#dot-utils
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
### Offline bundle
|
|
110
|
+
|
|
111
|
+
On a machine with internet access, create a bundle:
|
|
112
|
+
|
|
113
|
+
```bash
|
|
114
|
+
dot bundle ~/Downloads
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
Copy the archive to the target machine. Then unpack and install:
|
|
118
|
+
|
|
119
|
+
```bash
|
|
120
|
+
tar --zstd -xf dotfiles_offline_bundle_*.tar.zst -P
|
|
121
|
+
cd ~/.dotfiles
|
|
122
|
+
./install.sh --force
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
### Uninstall
|
|
126
|
+
|
|
127
|
+
```bash
|
|
128
|
+
chezmoi purge
|
|
129
|
+
rm -rf ~/.dotfiles
|
|
130
|
+
rm -rf ~/.local/share/chezmoi ~/.local/share/dotfiles.log
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
### Signed contributions
|
|
134
|
+
|
|
135
|
+
All commits must be signed. See [Contributing](../../CONTRIBUTING.md) for details.
|
|
136
|
+
|
|
137
|
+
---
|
|
138
|
+
|
|
139
|
+
- [Troubleshooting](TROUBLESHOOTING.md)
|
|
140
|
+
- [Support matrix](../reference/SUPPORT_MATRIX.md)
|
|
@@ -1,28 +1,28 @@
|
|
|
1
1
|
# Neovim
|
|
2
2
|
|
|
3
|
-
##
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
- **
|
|
7
|
-
- **
|
|
8
|
-
- **UI**: A beautiful and functional UI with a dashboard, status line, buffer line, and file explorer.
|
|
3
|
+
## Modern Core
|
|
4
|
+
- **Requirement**: Neovim >= 0.11.2. The config checks this at startup.
|
|
5
|
+
- **Configuration**: Modular, lazy-loaded configuration based on `lazy.nvim`.
|
|
6
|
+
- **Completion**: `blink.cmp` for fast, keystroke-level completion with LSP, snippets, and path sources.
|
|
7
|
+
- **UI**: Snacks.nvim dashboard, notifications, status line, buffer line, and file explorer.
|
|
9
8
|
- **LSP**: Full LSP support for diagnostics, code actions, and more, managed by `mason.nvim`.
|
|
10
9
|
|
|
11
|
-
|
|
12
|
-
- **Rust**: Out-of-the-box support
|
|
13
|
-
- **Python**: Full support
|
|
10
|
+
## Language Support
|
|
11
|
+
- **Rust**: Out-of-the-box support with `rustaceanvim`.
|
|
12
|
+
- **Python**: Full support with `basedpyright`, `ruff`, and `venv-selector`.
|
|
14
13
|
- **Web**: Support for web development with `prettier` and `eslint`.
|
|
15
14
|
|
|
16
|
-
|
|
15
|
+
## AI Integration
|
|
17
16
|
- **Copilot**: `copilot.lua` for code completion. Run `:Copilot auth` to sign in.
|
|
18
17
|
- **Copilot Chat**: AI sidebar for asking questions and getting help (`<leader>cc`).
|
|
19
18
|
|
|
20
|
-
|
|
19
|
+
## VS Code Parity
|
|
21
20
|
- **Problem Panel**: `trouble.nvim` for a VS Code-like problems panel (`<leader>xx`).
|
|
22
21
|
- **Search & Replace**: `nvim-spectre` for project-wide search and replace (`<leader>S`).
|
|
23
|
-
- **Auto-Pairs**: Automatically closes brackets and pairs.
|
|
22
|
+
- **Auto-Pairs**: Automatically closes brackets and pairs (via `blink.cmp` auto-brackets).
|
|
24
23
|
- **TODOs**: Highlights `TODO` and `FIXME` comments.
|
|
25
24
|
- **Session**: Auto-restores your last session.
|
|
25
|
+
- **Snippets**: Native `vim.snippet` engine (Neovim 0.11+).
|
|
26
26
|
|
|
27
27
|
## Keybindings
|
|
28
28
|
| Key | Action |
|
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
# Theming Guide
|
|
2
|
+
|
|
3
|
+
The dotfiles ship a wallpaper-driven theme system that generates terminal color palettes directly from wallpaper images using K-Means clustering in CIELAB color space. One command changes the terminal, editor, window manager, GTK, desktop environment, wallpaper, and browser-facing color mode in under a second.
|
|
4
|
+
|
|
5
|
+
Themes are not hand-crafted — they are extracted from whatever wallpapers are available on the system.
|
|
6
|
+
|
|
7
|
+
## How Themes Work
|
|
8
|
+
|
|
9
|
+
Wallpapers are the source of truth. The system discovers wallpapers from two locations:
|
|
10
|
+
|
|
11
|
+
1. **System wallpapers** — platform-native (macOS `/System/Library/Desktop Pictures/`, Linux `/usr/share/backgrounds/`)
|
|
12
|
+
2. **Custom wallpapers** — user-provided in `~/Pictures/Wallpapers/` (custom overrides system)
|
|
13
|
+
|
|
14
|
+
`extract-theme.py` extracts dominant colors from each wallpaper using K-Means clustering in CIELAB color space, then generates a full terminal palette (16 ANSI colors, accent, bg/fg, panel, border) with WCAG contrast enforcement.
|
|
15
|
+
|
|
16
|
+
`rebuild-themes.sh` orchestrates discovery → extraction → assembly into `.chezmoidata/themes.toml`. Themes are cached in `~/.cache/dotfiles/themes/` and only regenerated when wallpapers change.
|
|
17
|
+
|
|
18
|
+
The `theme` key in `.chezmoidata.toml` controls the active theme. Every template references the active theme's data through `{{ $t := index .themes .theme }}`.
|
|
19
|
+
|
|
20
|
+
## Switching Themes
|
|
21
|
+
|
|
22
|
+
### Interactive Picker
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
dot theme
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
Opens an fzf picker listing every paired wallpaper theme (themes that have both `-dark` and `-light` variants). Two columns: **WALLPAPER** name and **SOURCE** (System or Custom). The current theme is marked with `✓` and `◀`. Select one and press Enter.
|
|
29
|
+
|
|
30
|
+
### Direct Switch
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
dot theme tahoe-dark
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
Sets the theme immediately. Regenerates configs and reloads running applications.
|
|
37
|
+
|
|
38
|
+
### Rebuild Themes
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
dot theme rebuild # incremental (uses cache for unchanged wallpapers)
|
|
42
|
+
dot theme rebuild --force # full regeneration
|
|
43
|
+
dot theme rebuild --list # discover wallpapers without rebuilding
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
Discovers wallpapers from system + custom paths, runs K-Means extraction in parallel (4 jobs), caches generated themes in `~/.cache/dotfiles/themes/`, and writes `.chezmoidata/themes.toml`. Custom wallpapers override system wallpapers on name collision.
|
|
47
|
+
|
|
48
|
+
### Under the Hood: dot-theme-sync
|
|
49
|
+
|
|
50
|
+
`dot-theme-sync` handles the full switching pipeline:
|
|
51
|
+
|
|
52
|
+
1. Writes the new theme name into `.chezmoidata.toml` (and `chezmoi.toml` if present).
|
|
53
|
+
If those files drift, `dot-theme-sync` now resynchronizes them before rendering because `chezmoi.toml` `[data]` overrides the source data file.
|
|
54
|
+
2. Runs a targeted `chezmoi apply` on theme-dependent config files only -- much faster than a full apply.
|
|
55
|
+
3. Signals running applications to reload and coordinates browser-facing theme state:
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
dot-theme-sync # Reload current theme
|
|
59
|
+
dot-theme-sync macos-wave-light # Switch to a new theme
|
|
60
|
+
dot-theme-sync --full # Full chezmoi apply instead of targeted
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
## What Changes
|
|
64
|
+
|
|
65
|
+
Each theme switch touches these applications:
|
|
66
|
+
|
|
67
|
+
| Application | Mechanism | What Changes |
|
|
68
|
+
| :--- | :--- | :--- |
|
|
69
|
+
| **Ghostty** | `chezmoi apply` + macOS app-support sync + DBus `reload-config` or runtime signal fallback | Background, foreground, all 16 ANSI colors, cursor |
|
|
70
|
+
| **Tmux** | `chezmoi apply` + `source-file` | Status bar colors, pane borders, mode indicators |
|
|
71
|
+
| **Niri** | `chezmoi apply` + `load-config-file` IPC | Window borders, focus ring, inactive tint |
|
|
72
|
+
| **Desktop (macOS)** | `osascript` + `defaults write` + `killall` | System appearance (Light/Dark), accent color, highlight color; forces SystemUIServer/Dock/cfprefsd refresh |
|
|
73
|
+
| **Wallpaper (macOS)** | `osascript` System Events | Desktop wallpaper set across all displays |
|
|
74
|
+
| **Wallpaper (Linux)** | `gsettings` / `dms` / `swaybg` / `feh` | HEIC auto-converted to PNG; `picture-uri` and `picture-uri-dark` set separately |
|
|
75
|
+
| **Desktop (Linux/GNOME)** | `chezmoi apply` + `gsettings` | Theme name, icon theme, color scheme preference |
|
|
76
|
+
| **Safari / Chrome / Edge** | Native browser appearance follows desktop theme | Browser chrome stays aligned when using the default/native browser theme |
|
|
77
|
+
| **Firefox** | `chezmoi apply` on `~/.config/firefox/user.js` | Website color scheme preference follows the active dot theme; link that file into a Firefox profile to enforce it |
|
|
78
|
+
| **DMS** | `sed -i` on settings.json + IPC | Stock theme mapped to accent family, dark/light mode |
|
|
79
|
+
| **Neovim** | `--remote-expr` Lua eval over socket | Colorscheme, style variant, background mode |
|
|
80
|
+
| **VS Code** | `chezmoi apply` on `settings.json` | `workbench.colorTheme` value |
|
|
81
|
+
| **Alacritty** | `chezmoi apply` | Full color block regeneration |
|
|
82
|
+
| **Kitty** | `chezmoi apply` | Full color block regeneration |
|
|
83
|
+
| **WezTerm** | `chezmoi apply` | Color scheme in Lua config |
|
|
84
|
+
|
|
85
|
+
## Dark/Light Toggle
|
|
86
|
+
|
|
87
|
+
```bash
|
|
88
|
+
dot theme toggle
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
Toggles between the dark and light variant of the current theme family. A theme named `macos-tahoe-dark` toggles to `macos-tahoe-light`, and vice versa.
|
|
92
|
+
|
|
93
|
+
## Theme Families
|
|
94
|
+
|
|
95
|
+
Available themes depend on your system. Run `dot theme list` to see what's discovered. On macOS Sonoma, you'll see ~150+ themes from system wallpapers. Custom wallpapers in `~/Pictures/Wallpapers/` add more.
|
|
96
|
+
|
|
97
|
+
### Rebuilding themes
|
|
98
|
+
|
|
99
|
+
When wallpapers change (new system update, new custom wallpapers), regenerate:
|
|
100
|
+
|
|
101
|
+
```bash
|
|
102
|
+
dot theme rebuild # Regenerate (uses cache for unchanged wallpapers)
|
|
103
|
+
dot theme rebuild --force # Force full regeneration
|
|
104
|
+
dot theme rebuild --list # List discovered wallpapers without rebuilding
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
## What works without wallpapers
|
|
108
|
+
|
|
109
|
+
Theme switching is a two-tier system:
|
|
110
|
+
|
|
111
|
+
**Core (always works)** — ships in the repo, no setup needed:
|
|
112
|
+
- Terminal colors (Ghostty, Alacritty, Kitty, WezTerm, tmux)
|
|
113
|
+
- Editor themes (Neovim colorscheme, VS Code)
|
|
114
|
+
- macOS dark/light mode and accent color
|
|
115
|
+
- Linux GNOME color-scheme, GTK theme, icon theme
|
|
116
|
+
- Browser color mode (Safari, Chrome, Firefox)
|
|
117
|
+
|
|
118
|
+
**Wallpapers (optional)** — user-provided, enhances the theme:
|
|
119
|
+
- Desktop wallpaper matched to the active theme
|
|
120
|
+
- Requires `~/Pictures/Wallpapers/` with files named `macos-NAME-dark.heic`
|
|
121
|
+
|
|
122
|
+
If no wallpapers are present, `dot theme` applies all core changes and skips the wallpaper step. No errors, no manual config.
|
|
123
|
+
|
|
124
|
+
## Wallpapers (optional)
|
|
125
|
+
|
|
126
|
+
Wallpapers are not shipped in the repo. Each user sources their own and places them in `~/Pictures/Wallpapers/`:
|
|
127
|
+
|
|
128
|
+
```
|
|
129
|
+
macos-tahoe-dark.heic
|
|
130
|
+
macos-tahoe-light.heic
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
The naming convention is `macos-NAME-APPEARANCE.heic` (or `.jpg`/`.png`). The theme picker marks themes with matching wallpapers as `[W]`.
|
|
134
|
+
|
|
135
|
+
### Wallpaper guidelines
|
|
136
|
+
|
|
137
|
+
- **Resolution**: 6016x6016 recommended (matches Apple's native resolution)
|
|
138
|
+
- **Format**: `.heic` preferred on macOS, `.png`/`.jpg` also supported
|
|
139
|
+
- **Brightness**: dark/light pairs targeting a golden ratio (1.618) relationship give balanced contrast across displays
|
|
140
|
+
|
|
141
|
+
### Platform behavior
|
|
142
|
+
|
|
143
|
+
| Platform | Wallpaper support | Mechanism |
|
|
144
|
+
|---|---|---|
|
|
145
|
+
| **macOS** | `.heic`, `.jpg`, `.png` | `osascript` (all desktops) |
|
|
146
|
+
| **Linux (GNOME)** | `.png`, `.jpg` (`.heic` auto-converted) | `gsettings picture-uri` + `picture-uri-dark` |
|
|
147
|
+
| **Linux (Wayland)** | `.png`, `.jpg` (`.heic` auto-converted) | `swaybg`, `feh`, or Niri/DMS IPC |
|
|
148
|
+
| **WSL** | Not applicable | No compositor; terminal colors still apply |
|
|
149
|
+
|
|
150
|
+
On Linux, `.heic` files are automatically converted to `.png` using `magick`, `heif-convert`, or `convert` (whichever is available). The `.png` is cached and only regenerated when the source `.heic` changes.
|
|
151
|
+
|
|
152
|
+
### Using your OS default wallpapers
|
|
153
|
+
|
|
154
|
+
If you don't provide custom wallpapers, your OS keeps its current desktop wallpaper. The theme still applies all color changes (terminal, editor, accent, dark/light mode). This is the expected default for most users.
|
|
155
|
+
|
|
156
|
+
## Build Artifacts
|
|
157
|
+
|
|
158
|
+
All build caches (Cargo, Go, pip, uv, Zig) are redirected to `/tmp/builds/` via environment variables in `mise.toml` and `cargo/config.toml`. The directory is created on shell init via `fish/conf.d/env.fish`. Build artifacts are cleared on reboot.
|
|
159
|
+
|
|
160
|
+
## Troubleshooting
|
|
161
|
+
|
|
162
|
+
### Theme switch did not apply
|
|
163
|
+
|
|
164
|
+
Run a full apply to force all configs:
|
|
165
|
+
|
|
166
|
+
```bash
|
|
167
|
+
dot-theme-sync --full
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
### Ghostty did not reload
|
|
171
|
+
|
|
172
|
+
Ghostty reloads via DBus (`com.mitchellh.ghostty` / `reload-config`). If DBus is unavailable, the fallback sends `SIGUSR2` to the main process and also matches the macOS app bundle path when needed. Verify Ghostty is running:
|
|
173
|
+
|
|
174
|
+
```bash
|
|
175
|
+
pgrep -x ghostty
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
On macOS, Ghostty may also read `~/Library/Application Support/com.mitchellh.ghostty/config`. `dot-theme-sync` now mirrors the regenerated XDG config into that location before reloading so the app-support override cannot keep an older palette active.
|
|
179
|
+
|
|
180
|
+
### Neovim did not change colors
|
|
181
|
+
|
|
182
|
+
`dot-theme-sync` finds Neovim server sockets at `/tmp/nvim*/0` and `$XDG_RUNTIME_DIR/nvim.*.0`. If Neovim runs with a custom `--listen` path, the auto-discovery misses it. Restart Neovim to pick up the new theme from the regenerated config.
|
|
183
|
+
|
|
184
|
+
### GTK theme looks wrong
|
|
185
|
+
|
|
186
|
+
GTK theme names must match installed themes exactly. Catppuccin themes use names like `catppuccin-mocha-blue-standard+default`. Install the matching GTK theme package or fall back to `Adwaita-dark` / `Adwaita`.
|
|
187
|
+
|
|
188
|
+
### macOS accent or appearance did not update
|
|
189
|
+
|
|
190
|
+
`dot-theme-sync` applies macOS appearance using `osascript` and accent via:
|
|
191
|
+
|
|
192
|
+
```bash
|
|
193
|
+
defaults write -g AppleAccentColor -int <value>
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
`dot-theme-sync` now kills `cfprefsd`, `SystemUIServer`, `Dock`, and `System Settings` after writing accent/highlight defaults to force an immediate refresh. If the UI still does not update, close and reopen System Settings.
|
|
197
|
+
|
|
198
|
+
### Browser theme did not change
|
|
199
|
+
|
|
200
|
+
Safari, Chrome, and Edge are coordinated through the desktop theme, so custom browser themes can override what `dot-theme-sync` is trying to align. Switch those browsers back to their native/default theme if you want them to track macOS or GTK automatically.
|
|
201
|
+
|
|
202
|
+
Firefox uses the managed file at `~/.config/firefox/user.js`. Link that file into your active Firefox profile as `user.js` if you want `dot-theme-sync` to control website `prefers-color-scheme` behavior:
|
|
203
|
+
|
|
204
|
+
```bash
|
|
205
|
+
ln -sf ~/.config/firefox/user.js ~/.mozilla/firefox/<profile>/user.js
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
### tmux shows old colors
|
|
209
|
+
|
|
210
|
+
Tmux reloads via `source-file`. If TPM plugins override colors, run:
|
|
211
|
+
|
|
212
|
+
```bash
|
|
213
|
+
tmux source-file ~/.config/tmux/tmux.conf
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
### Checking the active theme
|
|
217
|
+
|
|
218
|
+
```bash
|
|
219
|
+
grep '^theme = ' ~/.dotfiles/.chezmoidata.toml
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
This prints the current theme name. Cross-reference with `dot theme list` for available options.
|
|
@@ -13,6 +13,7 @@ Quick checks for common issues.
|
|
|
13
13
|
- Re-run `chezmoi apply` to re-sync state.
|
|
14
14
|
- Check for merge conflicts: `chezmoi diff`
|
|
15
15
|
- If hooks fail, check `~/.local/share/dotfiles.log` for details.
|
|
16
|
+
- For non-interactive sessions, force apply to avoid TTY prompts: `DOTFILES_NONINTERACTIVE=1 dot apply --force`
|
|
16
17
|
|
|
17
18
|
**Problem:** Packages fail to install
|
|
18
19
|
- macOS: Verify Homebrew is installed and up to date (`brew update`)
|
|
@@ -31,6 +32,19 @@ Quick checks for common issues.
|
|
|
31
32
|
- Source your shell config: `source ~/.zshrc`
|
|
32
33
|
- Verify the relevant tool is installed
|
|
33
34
|
|
|
35
|
+
**Problem:** `dot doctor` prints a directory listing instead of diagnostics
|
|
36
|
+
- This usually means `dot` was shadowed by a navigation alias in the current shell session.
|
|
37
|
+
- Check resolution: `type -a dot`
|
|
38
|
+
- Fix current session: `unalias dot 2>/dev/null || true && exec zsh`
|
|
39
|
+
- Validate after reload: `dot doctor`
|
|
40
|
+
|
|
41
|
+
**Problem:** Zsh reports it cannot write `.zwc` files
|
|
42
|
+
- Cause: stale read-only zsh cache files after an upgrade.
|
|
43
|
+
- Remove stale caches:
|
|
44
|
+
- `find ~/.config/shell ~/.config/zsh -type f -name '*.zwc' -delete`
|
|
45
|
+
- Reload shell: `exec zsh`
|
|
46
|
+
- Re-run health checks: `dot doctor`
|
|
47
|
+
|
|
34
48
|
**Problem:** Shell crashes on startup
|
|
35
49
|
- Temporarily move `~/.zshrc` and retry to isolate the fault
|
|
36
50
|
- Check for syntax errors: `zsh -n ~/.zshrc`
|
|
@@ -88,6 +102,28 @@ Quick checks for common issues.
|
|
|
88
102
|
- Review shell history size in atuin config
|
|
89
103
|
- Disable unused plugins
|
|
90
104
|
|
|
105
|
+
## Common infrastructure failures
|
|
106
|
+
|
|
107
|
+
**Problem:** Nix isn't installed or commands not found
|
|
108
|
+
- Ensure you have followed the installation guide: `curl -L https://nixos.org/nix/install | sh`
|
|
109
|
+
- On Linux, you might need to enable experimental features in `~/.config/nix/nix.conf`:
|
|
110
|
+
`experimental-features = nix-command flakes`
|
|
111
|
+
- Verify the daemon is running: `ps aux | grep nix-daemon`
|
|
112
|
+
|
|
113
|
+
**Problem:** Systemd isn't available (mostly WSL2)
|
|
114
|
+
- Dotfiles functions that rely on systemd (like `pueue` management) will fallback to direct execution.
|
|
115
|
+
- To enable systemd in WSL2, add this to `/etc/wsl.conf` (requires Windows 11 or latest WSL):
|
|
116
|
+
```ini
|
|
117
|
+
[boot]
|
|
118
|
+
systemd=true
|
|
119
|
+
```
|
|
120
|
+
- Restart WSL: `wsl.exe --shutdown`
|
|
121
|
+
|
|
122
|
+
**Problem:** GPG or SSH signing fails
|
|
123
|
+
- Check if your key is present: `gpg --list-secret-keys` or `ssh-add -l`
|
|
124
|
+
- Ensure `GPG_TTY` is set (dotfiles does this automatically in `rc.d`).
|
|
125
|
+
- For hardware keys (Yubikey), ensure `pcscd` is running on Linux.
|
|
126
|
+
|
|
91
127
|
## Advanced Troubleshooting
|
|
92
128
|
|
|
93
129
|
### WSL2 and Nix Integration Issues
|