@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
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# MIT License
|
|
3
|
+
# Copyright (c) 2026 Sebastien Rousseau
|
|
4
|
+
# See LICENSE file for details.
|
|
5
|
+
|
|
6
|
+
# Script: doctor.sh
|
|
7
|
+
# Description: Diagnostics tool for the dotfiles environment.
|
|
8
|
+
# Checks dependencies, paths, and configuration integrity.
|
|
9
|
+
|
|
10
|
+
set -e
|
|
11
|
+
|
|
12
|
+
GREEN='\033[0;32m'
|
|
13
|
+
RED='\033[0;31m'
|
|
14
|
+
YELLOW='\033[1;33m'
|
|
15
|
+
NC='\033[0m' # No Color
|
|
16
|
+
|
|
17
|
+
echo "🩺 Dotfiles Doctor - System Diagnostics"
|
|
18
|
+
echo "-------------------------------------"
|
|
19
|
+
|
|
20
|
+
Errors=0
|
|
21
|
+
Warnings=0
|
|
22
|
+
|
|
23
|
+
log_success() { echo -e "${GREEN}✅ $1${NC}"; }
|
|
24
|
+
log_fail() { echo -e "${RED}❌ $1${NC}"; Errors=$((Errors + 1)); }
|
|
25
|
+
log_warn() { echo -e "${YELLOW}⚠️ $1${NC}"; Warnings=$((Warnings + 1)); }
|
|
26
|
+
|
|
27
|
+
# 1. Check Dependencies
|
|
28
|
+
echo "Checking Core Dependencies..."
|
|
29
|
+
for cmd in git curl chezmoi starship rg bat; do
|
|
30
|
+
if command -v "$cmd" &>/dev/null; then
|
|
31
|
+
log_success "Found $cmd: $(command -v "$cmd")"
|
|
32
|
+
else
|
|
33
|
+
log_fail "Missing $cmd"
|
|
34
|
+
fi
|
|
35
|
+
done
|
|
36
|
+
|
|
37
|
+
# 2. Check XDG Compliance
|
|
38
|
+
echo -e "\nChecking Environment..."
|
|
39
|
+
if [[ -z "$XDG_CONFIG_HOME" ]]; then
|
|
40
|
+
log_warn "XDG_CONFIG_HOME is not set (Defaulting to ~/.config)"
|
|
41
|
+
else
|
|
42
|
+
log_success "XDG_CONFIG_HOME=$XDG_CONFIG_HOME"
|
|
43
|
+
fi
|
|
44
|
+
|
|
45
|
+
if [[ -z "$PIPX_HOME" ]]; then
|
|
46
|
+
log_warn "PIPX_HOME is not set (Check paths configuration)"
|
|
47
|
+
else
|
|
48
|
+
log_success "PIPX_HOME=$PIPX_HOME"
|
|
49
|
+
fi
|
|
50
|
+
|
|
51
|
+
# 3. Check Chezmoi State
|
|
52
|
+
echo -e "\nChecking Chezmoi State..."
|
|
53
|
+
if chezmoi verify &>/dev/null; then
|
|
54
|
+
log_success "Chezmoi state is synchronized"
|
|
55
|
+
else
|
|
56
|
+
log_fail "Chezmoi state has drifted (Run 'dot drift' to see details)"
|
|
57
|
+
fi
|
|
58
|
+
|
|
59
|
+
# 4. Check Critical Files
|
|
60
|
+
echo -e "\nChecking Critical Files..."
|
|
61
|
+
if [[ -f "$HOME/.zshrc" ]]; then
|
|
62
|
+
log_success "Found .zshrc"
|
|
63
|
+
else
|
|
64
|
+
log_fail "Missing .zshrc"
|
|
65
|
+
fi
|
|
66
|
+
|
|
67
|
+
# Summary
|
|
68
|
+
echo -e "\n-------------------------------------"
|
|
69
|
+
if [[ $Errors -eq 0 ]]; then
|
|
70
|
+
if [[ $Warnings -eq 0 ]]; then
|
|
71
|
+
echo -e "${GREEN}All systems healthy! 🚀${NC}"
|
|
72
|
+
else
|
|
73
|
+
echo -e "${YELLOW}System healthy with $Warnings warnings.${NC}"
|
|
74
|
+
fi
|
|
75
|
+
else
|
|
76
|
+
echo -e "${RED}Found $Errors errors and $Warnings warnings.${NC}"
|
|
77
|
+
echo "Run 'dot heal' to attempt auto-repair."
|
|
78
|
+
exit 1
|
|
79
|
+
fi
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
|
|
3
|
+
# 🅳🅾🆃🅵🅸🅻🅴🆂 (v0.2.471) - <https://dotfiles.io>
|
|
4
|
+
# Made with ♥ in London, UK by Sebastien Rousseau
|
|
5
|
+
# Copyright (c) 2015-2025. All rights reserved
|
|
6
|
+
# License: MIT
|
|
7
|
+
|
|
8
|
+
## 🅸🅼🅿🅾🆁🆃🆂 - Importing constants and functions.
|
|
9
|
+
|
|
10
|
+
# shellcheck disable=SC1091
|
|
11
|
+
. "./lib/configurations/default/constants.sh"
|
|
12
|
+
|
|
13
|
+
## 🅼🅰🅸🅽 - Main function.
|
|
14
|
+
|
|
15
|
+
if [[ "$1" = "backup" ]]; then
|
|
16
|
+
# shellcheck disable=SC2154
|
|
17
|
+
echo "${RED}❭${NC} Backing up.${NC}"
|
|
18
|
+
. "./scripts/backup.sh" &&
|
|
19
|
+
echo "${RED}❭${NC} Backup completed.${NC}"
|
|
20
|
+
|
|
21
|
+
elif [[ "$1" = "clean" ]]; then
|
|
22
|
+
|
|
23
|
+
# shellcheck disable=SC2154
|
|
24
|
+
echo "${RED}❭${NC} Removes any previous setup directories.${NC}"
|
|
25
|
+
. "./scripts/clean.sh" &&
|
|
26
|
+
clean
|
|
27
|
+
|
|
28
|
+
elif [[ "$1" = "copy" ]]; then
|
|
29
|
+
|
|
30
|
+
# shellcheck disable=SC2154
|
|
31
|
+
echo "${RED}❭${NC} Copying dotfiles.${NC}"
|
|
32
|
+
. "./scripts/copy.sh" &&
|
|
33
|
+
echo "${RED}❭${NC} Copying completed.${NC}"
|
|
34
|
+
|
|
35
|
+
elif [[ "$1" = "download" ]]; then
|
|
36
|
+
|
|
37
|
+
# shellcheck disable=SC2154
|
|
38
|
+
echo "${RED}❭${NC} Downloading ${GREEN}Dotfiles v${DF_VERSION}${NC}."
|
|
39
|
+
. "./scripts/download.sh" &&
|
|
40
|
+
echo "${RED}❭${NC} Download completed.${NC}"
|
|
41
|
+
|
|
42
|
+
elif [[ "$1" = "help" ]]; then
|
|
43
|
+
. "./scripts/help.sh" &&
|
|
44
|
+
echo "${RED}❭${NC} Help menu.${NC}"
|
|
45
|
+
|
|
46
|
+
elif [[ "$1" = "assemble" ]]; then
|
|
47
|
+
|
|
48
|
+
# shellcheck disable=SC2154
|
|
49
|
+
echo "${RED}❭${NC} Installing ${GREEN}Dotfiles v${VERSION}${NC}."
|
|
50
|
+
. "./scripts/assemble.sh" &&
|
|
51
|
+
echo "${RED}❭${NC} Installation completed.${NC}"
|
|
52
|
+
|
|
53
|
+
elif [[ "$1" = "unpack" ]]; then
|
|
54
|
+
|
|
55
|
+
# shellcheck disable=SC2154
|
|
56
|
+
echo "${RED}❭${NC} Unpacking ${GREEN}Dotfiles v${DF_VERSION}${NC}."
|
|
57
|
+
. "./scripts/unpack.sh" &&
|
|
58
|
+
echo "${RED}❭${NC} Unpacking completed.${NC}"
|
|
59
|
+
|
|
60
|
+
else
|
|
61
|
+
. "./scripts/help.sh" &&
|
|
62
|
+
echo "${RED}❭${NC} Help menu.${NC}"
|
|
63
|
+
fi
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
|
|
3
|
+
# 🅳🅾🆃🅵🅸🅻🅴🆂 (v0.2.471) - <https://dotfiles.io>
|
|
4
|
+
# Made with ♥ in London, UK by Sebastien Rousseau
|
|
5
|
+
# Copyright (c) 2015-2025. All rights reserved
|
|
6
|
+
# License: MIT
|
|
7
|
+
|
|
8
|
+
## 🆅🅰🆁🅸🅰🅱🅻🅴🆂 - Set Dotfiles variable.
|
|
9
|
+
DF_DOTFILESDIR="${HOME}/.dotfiles" # Location of dotfiles.
|
|
10
|
+
export DF_DOTFILESDIR # Exporting Location of dotfiles.
|
|
11
|
+
|
|
12
|
+
# shellcheck disable=SC1091
|
|
13
|
+
. "./lib/configurations/default/constants.sh"
|
|
14
|
+
|
|
15
|
+
## 🅳🅾🆆🅽🅻🅾🅰🅳 - Download the dotfiles on your system.
|
|
16
|
+
download() {
|
|
17
|
+
# shellcheck disable=SC2154
|
|
18
|
+
echo "${RED}❭${NC} Downloading ${GREEN}Dotfiles v${DF_VERSION}${NC} on your system at ${GREEN}${DF_DOWNLOADDIR}${NC}..."
|
|
19
|
+
|
|
20
|
+
# Download the dotfiles with curl.
|
|
21
|
+
# shellcheck disable=SC2154
|
|
22
|
+
# curl -0 https://github.com/sebastienrousseau/dotfiles/archive/refs/tags/v"${DF_VERSION}".tar.gz -o "${DF_DOWNLOADDIR}"/dotfiles-"${DF_VERSION}".tar.gz
|
|
23
|
+
|
|
24
|
+
# Download the dotfiles with wget.
|
|
25
|
+
# shellcheck disable=SC2154
|
|
26
|
+
wget --no-check-certificate --content-disposition https://github.com/sebastienrousseau/dotfiles/archive/refs/tags/v"${DF_VERSION}".zip -O "${DF_DOWNLOADDIR}/v${DF_VERSION}.zip"
|
|
27
|
+
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
args=$* # Arguments passed to script.
|
|
31
|
+
export args="${args}" # Exporting arguments.
|
|
32
|
+
if [[ ${args} = "download" ]]; then
|
|
33
|
+
echo "$*"
|
|
34
|
+
download
|
|
35
|
+
fi
|
package/scripts/help.sh
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
|
|
3
|
+
# 🅳🅾🆃🅵🅸🅻🅴🆂 (v0.2.471) - <https://dotfiles.io>
|
|
4
|
+
# Made with ♥ in London, UK by Sebastien Rousseau
|
|
5
|
+
# Copyright (c) 2015-2025. All rights reserved
|
|
6
|
+
# License: MIT
|
|
7
|
+
|
|
8
|
+
## 🆅🅰🆁🅸🅰🅱🅻🅴🆂 - Set Dotfiles variable.
|
|
9
|
+
DF_DOTFILESDIR="${HOME}/.dotfiles" # Location of dotfiles.
|
|
10
|
+
export DF_DOTFILESDIR # Exporting Location of dotfiles.
|
|
11
|
+
|
|
12
|
+
# shellcheck disable=SC1091
|
|
13
|
+
. "./lib/configurations/default/constants.sh"
|
|
14
|
+
|
|
15
|
+
echo ""
|
|
16
|
+
# shellcheck disable=SC2154
|
|
17
|
+
echo "${RED}❭${NC} Starting help menu."
|
|
18
|
+
echo ""
|
|
19
|
+
|
|
20
|
+
## 🅷🅴🅻🅿 🅼🅴🅽🆄 - Display help menu.
|
|
21
|
+
help() {
|
|
22
|
+
|
|
23
|
+
# shellcheck disable=SC1091
|
|
24
|
+
. "./scripts/banner.sh"
|
|
25
|
+
|
|
26
|
+
cat <<EOF
|
|
27
|
+
USAGE:
|
|
28
|
+
|
|
29
|
+
pnpm run $(echo -e "\033[1;96m[COMMAND]\033[0m\n")
|
|
30
|
+
|
|
31
|
+
COMMANDS:
|
|
32
|
+
|
|
33
|
+
$(echo -e "\033[1;96mbackup\033[0m\n") - Backup your current dotfiles.
|
|
34
|
+
$(echo -e "\033[1;96mclean\033[0m\n") - Removes any previous setup.
|
|
35
|
+
$(echo -e "\033[1;96mcopy\033[0m\n") - Copy the dotfiles on your system.
|
|
36
|
+
$(echo -e "\033[1;96mdownload\033[0m\n") - Download the dotfiles on your system.
|
|
37
|
+
$(echo -e "\033[1;96mbuild\033[0m\n") - Run the full installation process.
|
|
38
|
+
$(echo -e "\033[1;96munpack\033[0m\n") - Extract the dotfiles to your system.
|
|
39
|
+
$(echo -e "\033[1;96mhelp\033[0m\n") - Display the help menu.
|
|
40
|
+
|
|
41
|
+
DOCUMENTATION:
|
|
42
|
+
|
|
43
|
+
$(echo -e "\033[4;36mhttps://dotfiles.io\033[0m\n")
|
|
44
|
+
|
|
45
|
+
LICENSE:
|
|
46
|
+
|
|
47
|
+
This project is licensed under the MIT License.
|
|
48
|
+
|
|
49
|
+
EOF
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
args=$* # Arguments passed to script.
|
|
53
|
+
export args="${args}" # Exporting arguments.
|
|
54
|
+
if [[ ${args} = "help" ]]; then
|
|
55
|
+
echo "$*"
|
|
56
|
+
help
|
|
57
|
+
fi
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# MIT License
|
|
3
|
+
# Copyright (c) 2026 Sebastien Rousseau
|
|
4
|
+
# See LICENSE file for details.
|
|
5
|
+
|
|
6
|
+
# Script: lock-configs.sh
|
|
7
|
+
# Description: Toggles immutability flags on critical configuration files.
|
|
8
|
+
# Usage: lock-configs [lock|unlock]
|
|
9
|
+
|
|
10
|
+
set -e
|
|
11
|
+
|
|
12
|
+
ACTION="${1:-lock}"
|
|
13
|
+
CRITICAL_FILES=(
|
|
14
|
+
"$HOME/.zshrc"
|
|
15
|
+
"$HOME/.bashrc"
|
|
16
|
+
"$HOME/.profile"
|
|
17
|
+
)
|
|
18
|
+
|
|
19
|
+
# Determine OS command for immutability
|
|
20
|
+
if [[ "$OSTYPE" == "darwin"* ]]; then
|
|
21
|
+
LOCK_CMD="chflags uchg"
|
|
22
|
+
UNLOCK_CMD="chflags nouchg"
|
|
23
|
+
CHECK_CMD="ls -lO"
|
|
24
|
+
else
|
|
25
|
+
# Linux (requires root usually, but we'll try)
|
|
26
|
+
if command -v chattr >/dev/null; then
|
|
27
|
+
LOCK_CMD="sudo chattr +i"
|
|
28
|
+
UNLOCK_CMD="sudo chattr -i"
|
|
29
|
+
CHECK_CMD="lsattr"
|
|
30
|
+
else
|
|
31
|
+
echo "❌ 'chattr' not found. Cannot set immutability on Linux without it."
|
|
32
|
+
exit 1
|
|
33
|
+
fi
|
|
34
|
+
fi
|
|
35
|
+
|
|
36
|
+
if [[ "$ACTION" == "lock" ]]; then
|
|
37
|
+
echo "🔒 Locking critical configuration files..."
|
|
38
|
+
CMD="$LOCK_CMD"
|
|
39
|
+
elif [[ "$ACTION" == "unlock" ]]; then
|
|
40
|
+
echo "🔓 Unlocking critical configuration files..."
|
|
41
|
+
CMD="$UNLOCK_CMD"
|
|
42
|
+
else
|
|
43
|
+
echo "Usage: $0 [lock|unlock]"
|
|
44
|
+
exit 1
|
|
45
|
+
fi
|
|
46
|
+
|
|
47
|
+
for file in "${CRITICAL_FILES[@]}"; do
|
|
48
|
+
if [[ -f "$file" ]]; then
|
|
49
|
+
echo "Processing: $file"
|
|
50
|
+
$CMD "$file" || echo "⚠️ Failed to modify flags for $file (permission denied?)"
|
|
51
|
+
fi
|
|
52
|
+
done
|
|
53
|
+
|
|
54
|
+
echo "Done. Environment state:"
|
|
55
|
+
for file in "${CRITICAL_FILES[@]}"; do
|
|
56
|
+
[[ -f "$file" ]] && $CHECK_CMD "$file"
|
|
57
|
+
done
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# Script: package.sh
|
|
3
|
+
# Description: Bundles the dotfiles for distribution or backup.
|
|
4
|
+
# Generates a standard .tar.gz archive and validates structure.
|
|
5
|
+
|
|
6
|
+
set -e
|
|
7
|
+
|
|
8
|
+
VERSION="${1:-v0.2.471}"
|
|
9
|
+
DIST_DIR="dist"
|
|
10
|
+
ARCHIVE_NAME="dotfiles-${VERSION}.tar.gz"
|
|
11
|
+
|
|
12
|
+
echo "📦 Packaging Dotfiles (${VERSION})..."
|
|
13
|
+
|
|
14
|
+
# Create dist directory
|
|
15
|
+
mkdir -p "$DIST_DIR"
|
|
16
|
+
|
|
17
|
+
# Create artifact manifest
|
|
18
|
+
echo "Manifest generated at $(date)" > "$DIST_DIR/MANIFEST.txt"
|
|
19
|
+
echo "Version: ${VERSION}" >> "$DIST_DIR/MANIFEST.txt"
|
|
20
|
+
echo "Commit: $(git rev-parse HEAD)" >> "$DIST_DIR/MANIFEST.txt"
|
|
21
|
+
|
|
22
|
+
# Archive core files (excluding sensitive data/git)
|
|
23
|
+
# Using git archive for clean export if possible, fallback to tar
|
|
24
|
+
if git rev-parse --is-inside-work-tree >/dev/null 2>&1; then
|
|
25
|
+
echo " -> EXPORT: Using git archive..."
|
|
26
|
+
git archive --format=tar.gz \
|
|
27
|
+
--output="$DIST_DIR/$ARCHIVE_NAME" \
|
|
28
|
+
--prefix="dotfiles-${VERSION}/" \
|
|
29
|
+
HEAD
|
|
30
|
+
else
|
|
31
|
+
echo " -> EXPORT: Using tar (fallback)..."
|
|
32
|
+
tar --exclude='.git' \
|
|
33
|
+
--exclude='dist' \
|
|
34
|
+
--exclude='secrets' \
|
|
35
|
+
-czf "$DIST_DIR/$ARCHIVE_NAME" .
|
|
36
|
+
fi
|
|
37
|
+
|
|
38
|
+
echo " -> CHECKSUM: Generating sha256..."
|
|
39
|
+
if command -v shasum >/dev/null; then
|
|
40
|
+
shasum -a 256 "$DIST_DIR/$ARCHIVE_NAME" > "$DIST_DIR/${ARCHIVE_NAME}.sha256"
|
|
41
|
+
else
|
|
42
|
+
sha256sum "$DIST_DIR/$ARCHIVE_NAME" > "$DIST_DIR/${ARCHIVE_NAME}.sha256"
|
|
43
|
+
fi
|
|
44
|
+
|
|
45
|
+
echo "✅ Package created at ${DIST_DIR}/${ARCHIVE_NAME}"
|
|
46
|
+
echo " Size: $(du -h "$DIST_DIR/$ARCHIVE_NAME" | cut -f1)"
|
package/scripts/ssh.sh
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
|
|
3
|
+
# 🅳🅾🆃🅵🅸🅻🅴🆂 (v0.2.471) - <https://dotfiles.io>
|
|
4
|
+
# Made with ♥ in London, UK by Sebastien Rousseau
|
|
5
|
+
# Copyright (c) 2015-2025. All rights reserved
|
|
6
|
+
# License: MIT
|
|
7
|
+
|
|
8
|
+
## 🆂🆂🅷 - Generate a new SSH key and add it to the ssh-agent
|
|
9
|
+
|
|
10
|
+
EMAIL=$1
|
|
11
|
+
|
|
12
|
+
# check if email is set
|
|
13
|
+
if [[ -z "${EMAIL}" ]]; then
|
|
14
|
+
echo "No email argument supplied"
|
|
15
|
+
exit 1
|
|
16
|
+
fi
|
|
17
|
+
|
|
18
|
+
# create default .ssh directory if it doesn’t exist
|
|
19
|
+
# https://docs.github.com/en/authentication/connecting-to-github-with-ssh/checking-for-existing-ssh-keys
|
|
20
|
+
if [[ ! -d "${HOME}/.ssh/" ]]; then
|
|
21
|
+
mkdir "${HOME}/.ssh/"
|
|
22
|
+
chmod 700 "${HOME}/.ssh/"
|
|
23
|
+
fi
|
|
24
|
+
|
|
25
|
+
# check if ssh key already exists
|
|
26
|
+
# https://docs.github.com/en/authentication/connecting-to-github-with-ssh/checking-for-existing-ssh-keys
|
|
27
|
+
if [[ -f "${HOME}/.ssh/id_ed25519" ]]; then
|
|
28
|
+
echo "SSH Key already exists. Skipping SSH Key Generation."
|
|
29
|
+
exit 0
|
|
30
|
+
fi
|
|
31
|
+
|
|
32
|
+
# generate ssh key using ed25519 algorithm
|
|
33
|
+
# https://docs.github.com/en/authentication/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent
|
|
34
|
+
# -C set email, -N empty passcode, -q quiet
|
|
35
|
+
ssh-keygen -q -t ed25519 -C "${EMAIL}" -f "${HOME}"/.ssh/id_ed25519 -N ""
|
|
36
|
+
|
|
37
|
+
# start ssh-agent in the background
|
|
38
|
+
ssha="ssh-agent -s"
|
|
39
|
+
eval "${ssha}"
|
|
40
|
+
|
|
41
|
+
# Create config file if it doesn't exist
|
|
42
|
+
touch ~/.ssh/config
|
|
43
|
+
printf "Host *\n AddKeysToAgent yes\n UseKeychain yes\n IdentityFile ~/.ssh/id_ed25519" | tee ~/.ssh/config
|
|
44
|
+
|
|
45
|
+
# add ssh key
|
|
46
|
+
sudo ssh-add -K "${HOME}"/.ssh/id_ed25519
|
|
47
|
+
|
|
48
|
+
# print public key to add
|
|
49
|
+
echo "SSH Key created and added to agent. Add public key to remote (GitHub, GitLab, etc.)"
|
|
50
|
+
echo "Public Key:"
|
|
51
|
+
cat "${HOME}"/.ssh/id_ed25519.pub
|
|
52
|
+
|
|
53
|
+
# adding your SSH key to your GitHub account
|
|
54
|
+
# https://docs.github.com/en/github/authenticating-to-github/adding-a-new-ssh-key-to-your-github-account
|
|
55
|
+
echo "run 'pbcopy < ~/.ssh/id_ed25519.pub' and paste that into GitHub"
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# Script: teleport.sh
|
|
3
|
+
# Description: Deploys dotfiles to a remote host ephemerally.
|
|
4
|
+
# Usage: ./teleport.sh user@hostname
|
|
5
|
+
|
|
6
|
+
set -e
|
|
7
|
+
|
|
8
|
+
TARGET="$1"
|
|
9
|
+
|
|
10
|
+
if [[ -z "$TARGET" ]]; then
|
|
11
|
+
echo "Usage: $0 user@host"
|
|
12
|
+
exit 1
|
|
13
|
+
fi
|
|
14
|
+
|
|
15
|
+
echo "🚀 Teleporting dotfiles to ${TARGET}..."
|
|
16
|
+
|
|
17
|
+
# 1. Archive the current state
|
|
18
|
+
# 2. Pipe to SSH
|
|
19
|
+
# 3. Extract in remote home directory
|
|
20
|
+
chezmoi archive | ssh "$TARGET" "tar xz -C ~"
|
|
21
|
+
|
|
22
|
+
echo "✅ Teleport successful!"
|
|
23
|
+
echo " Note: Changes are applied to files, but shell may need restart or sourcing."
|
|
@@ -10,14 +10,14 @@ set -e
|
|
|
10
10
|
|
|
11
11
|
echo "Testing alias syntax..."
|
|
12
12
|
|
|
13
|
-
ALIAS_DIR="$HOME/.
|
|
13
|
+
ALIAS_DIR="$HOME/.local/share/chezmoi/.chezmoitemplates/aliases"
|
|
14
14
|
|
|
15
15
|
find "$ALIAS_DIR" -name "*.aliases.sh" | while read -r file; do
|
|
16
16
|
# Check for syntax errors using bash -n
|
|
17
17
|
if bash -n "$file"; then
|
|
18
|
-
echo " Checked: $(basename "$file")"
|
|
18
|
+
echo "✅ Checked: $(basename "$file")"
|
|
19
19
|
else
|
|
20
|
-
echo " Syntax Error: $(basename "$file")"
|
|
20
|
+
echo "❌ Syntax Error: $(basename "$file")"
|
|
21
21
|
exit 1
|
|
22
22
|
fi
|
|
23
23
|
done
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
set -uo pipefail
|
|
3
|
+
|
|
4
|
+
# Colors for output
|
|
5
|
+
GREEN='\033[0;32m'
|
|
6
|
+
RED='\033[0;31m'
|
|
7
|
+
NC='\033[0m' # No Color
|
|
8
|
+
|
|
9
|
+
echo "----------------------------------------------------------------"
|
|
10
|
+
echo "🔥 Running Dotfiles Smoke Tests..."
|
|
11
|
+
echo "----------------------------------------------------------------"
|
|
12
|
+
|
|
13
|
+
failed=0
|
|
14
|
+
|
|
15
|
+
check_cmd() {
|
|
16
|
+
local cmd=$1
|
|
17
|
+
if command -v "$cmd" >/dev/null 2>&1; then
|
|
18
|
+
if [ "$cmd" = "tmux" ]; then
|
|
19
|
+
local version
|
|
20
|
+
version=$($cmd -V 2>/dev/null || echo "v?")
|
|
21
|
+
else
|
|
22
|
+
local version
|
|
23
|
+
version=$($cmd --version 2>/dev/null || echo "v?")
|
|
24
|
+
fi
|
|
25
|
+
echo -e "${GREEN}✔ Found: $cmd ($version)${NC}"
|
|
26
|
+
else
|
|
27
|
+
echo -e "${RED}✘ Missing: $cmd${NC}"
|
|
28
|
+
failed=1
|
|
29
|
+
fi
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
check_cask() {
|
|
33
|
+
local app=$1
|
|
34
|
+
# Skip GUI checks in CI or on Linux
|
|
35
|
+
if [[ "${CI:-}" == "true" ]] || [[ "$(uname -s)" == "Linux" ]]; then
|
|
36
|
+
echo -e "${GREEN}○ Skipping GUI App: $app (CI/Linux detected)${NC}"
|
|
37
|
+
return 0
|
|
38
|
+
fi
|
|
39
|
+
|
|
40
|
+
if [ -d "/Applications/$app.app" ] || [ -d "${HOME}/Applications/$app.app" ]; then
|
|
41
|
+
echo -e "${GREEN}✔ Found App: $app${NC}"
|
|
42
|
+
else
|
|
43
|
+
# Fallback check for CLI tools installed via cask (e.g. ghostty might be CLI accessible)
|
|
44
|
+
if command -v "$app" >/dev/null 2>&1; then
|
|
45
|
+
echo -e "${GREEN}✔ Found App (CLI): $app${NC}"
|
|
46
|
+
else
|
|
47
|
+
echo -e "${RED}✘ Missing App: $app${NC}"
|
|
48
|
+
failed=1
|
|
49
|
+
fi
|
|
50
|
+
fi
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
echo "Testing Core Toolchain..."
|
|
54
|
+
check_cmd git
|
|
55
|
+
check_cmd chezmoi
|
|
56
|
+
check_cmd age
|
|
57
|
+
check_cmd zsh
|
|
58
|
+
|
|
59
|
+
if [ -n "${DOTFILES_CI_SKIP_EXTRAS:-}" ]; then
|
|
60
|
+
echo "Skipping optional tool checks (CI mode detected)"
|
|
61
|
+
else
|
|
62
|
+
echo "Testing Modern Replacements..."
|
|
63
|
+
check_cmd rg
|
|
64
|
+
check_cmd eza
|
|
65
|
+
check_cmd bat
|
|
66
|
+
check_cmd fzf
|
|
67
|
+
check_cmd zoxide
|
|
68
|
+
|
|
69
|
+
echo "Testing Roadmap Additions..."
|
|
70
|
+
check_cmd gh
|
|
71
|
+
check_cmd nvim
|
|
72
|
+
check_cmd tmux
|
|
73
|
+
check_cmd yazi
|
|
74
|
+
check_cmd zellij
|
|
75
|
+
fi
|
|
76
|
+
|
|
77
|
+
echo "Testing GUI Apps (Casks)..."
|
|
78
|
+
check_cask "Ghostty"
|
|
79
|
+
check_cask "Zed"
|
|
80
|
+
|
|
81
|
+
echo "----------------------------------------------------------------"
|
|
82
|
+
if [ $failed -eq 0 ]; then
|
|
83
|
+
echo -e "${GREEN}✅ All Smoke Tests Passed!${NC}"
|
|
84
|
+
exit 0
|
|
85
|
+
else
|
|
86
|
+
echo -e "${RED}❌ Some tests failed.${NC}"
|
|
87
|
+
exit 1
|
|
88
|
+
fi
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
|
|
3
|
+
# 🅳🅾🆃🅵🅸🅻🅴🆂 (v0.2.471) - <https://dotfiles.io>
|
|
4
|
+
# Made with ♥ in London, UK by Sebastien Rousseau
|
|
5
|
+
# Copyright (c) 2015-2025. All rights reserved
|
|
6
|
+
# License: MIT
|
|
7
|
+
|
|
8
|
+
## 🆅🅰🆁🅸🅰🅱🅻🅴🆂 - Set Dotfiles variable.
|
|
9
|
+
DF_DOTFILESDIR="${HOME}/.dotfiles" # Location of dotfiles.
|
|
10
|
+
export DF_DOTFILESDIR # Exporting Location of dotfiles.
|
|
11
|
+
|
|
12
|
+
# shellcheck disable=SC1091
|
|
13
|
+
. "./lib/configurations/default/constants.sh"
|
|
14
|
+
|
|
15
|
+
## 🆄🅽🅿🅰🅲🅺 - Unpack the dotfiles on your system.
|
|
16
|
+
unpack() {
|
|
17
|
+
# shellcheck disable=SC2154
|
|
18
|
+
echo "${RED}❭${NC} Unpacking ${GREEN}Dotfiles v${VERSION}${NC}."
|
|
19
|
+
|
|
20
|
+
# shellcheck disable=SC2154
|
|
21
|
+
unzip -qq -u "${DF_DOWNLOADDIR}"/v"${DF_VERSION}".zip -d "${DF_DOWNLOADDIR}"
|
|
22
|
+
|
|
23
|
+
# shellcheck disable=SC2154
|
|
24
|
+
mv "${DF_DOWNLOADDIR}/dotfiles-${DF_VERSION}/lib/" "${DF_DOTFILESDIR}"
|
|
25
|
+
|
|
26
|
+
# shellcheck disable=SC2154
|
|
27
|
+
rm "${DF_DOWNLOADDIR}/v${DF_VERSION}.zip"
|
|
28
|
+
}
|
|
@@ -6,28 +6,28 @@
|
|
|
6
6
|
# Script: verify_state.sh
|
|
7
7
|
# Description: Final verification of the dotfiles environment state.
|
|
8
8
|
|
|
9
|
-
set -
|
|
9
|
+
set -e
|
|
10
10
|
|
|
11
|
-
echo " Starting Final Environment Verification..."
|
|
11
|
+
echo "🔍 Starting Final Environment Verification..."
|
|
12
12
|
|
|
13
13
|
Errors=0
|
|
14
14
|
|
|
15
15
|
check_file() {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
16
|
+
if [[ ! -f "$1" ]]; then
|
|
17
|
+
echo "❌ Missing file: $1"
|
|
18
|
+
Errors=$((Errors + 1))
|
|
19
|
+
else
|
|
20
|
+
echo "✅ Found file: $1"
|
|
21
|
+
fi
|
|
22
22
|
}
|
|
23
23
|
|
|
24
24
|
check_alias_in_config() {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
25
|
+
if ! grep -q "$1" "$HOME/.config/shell/aliases.sh"; then
|
|
26
|
+
echo "❌ Missing alias definition '$1' in built config"
|
|
27
|
+
Errors=$((Errors + 1))
|
|
28
|
+
else
|
|
29
|
+
echo "✅ Verified alias: $1"
|
|
30
|
+
fi
|
|
31
31
|
}
|
|
32
32
|
|
|
33
33
|
# 1. Verify Docs
|
|
@@ -35,9 +35,9 @@ check_file ".chezmoitemplates/aliases/security/README.md"
|
|
|
35
35
|
check_file ".chezmoitemplates/aliases/legal/README.md"
|
|
36
36
|
|
|
37
37
|
# 2. Verify Scripts
|
|
38
|
-
check_file "scripts/
|
|
39
|
-
check_file "scripts/
|
|
40
|
-
check_file "scripts/
|
|
38
|
+
check_file "scripts/lock-configs.sh"
|
|
39
|
+
check_file "scripts/detect-collisions.py"
|
|
40
|
+
check_file "scripts/test-aliases.sh"
|
|
41
41
|
|
|
42
42
|
# 3. Verify Generated Config Content (Key Features)
|
|
43
43
|
# Security
|
|
@@ -52,9 +52,9 @@ check_alias_in_config "add-headers"
|
|
|
52
52
|
check_file ".github/workflows/security-release.yml"
|
|
53
53
|
|
|
54
54
|
if [[ $Errors -eq 0 ]]; then
|
|
55
|
-
|
|
56
|
-
|
|
55
|
+
echo "🎉 Verification Passed! All systems nominal."
|
|
56
|
+
exit 0
|
|
57
57
|
else
|
|
58
|
-
|
|
59
|
-
|
|
58
|
+
echo "⚠️ Verification Failed with $Errors errors."
|
|
59
|
+
exit 1
|
|
60
60
|
fi
|
|
@@ -8,18 +8,3 @@ dependencies = []
|
|
|
8
8
|
[build-system]
|
|
9
9
|
requires = ["hatchling"]
|
|
10
10
|
build-backend = "hatchling.build"
|
|
11
|
-
|
|
12
|
-
[tool.ruff]
|
|
13
|
-
line-length = 88
|
|
14
|
-
target-version = "py310"
|
|
15
|
-
select = ["E", "F", "I", "UP", "B"]
|
|
16
|
-
ignore = ["E203", "E501"]
|
|
17
|
-
|
|
18
|
-
[tool.black]
|
|
19
|
-
line-length = 88
|
|
20
|
-
target-version = ["py310"]
|
|
21
|
-
|
|
22
|
-
[tool.pyright]
|
|
23
|
-
typeCheckingMode = "standard"
|
|
24
|
-
pythonVersion = "3.10"
|
|
25
|
-
reportMissingTypeStubs = "none"
|