From 37fa170409c1d245d1371c479715314c173d956e Mon Sep 17 00:00:00 2001 From: roottool Date: Sun, 19 Jul 2026 17:20:15 +0900 Subject: [PATCH 1/4] fix: correct mise install ordering and eza completion mismatch `mise install` ran before `chezmoi apply`, so `~/.config/mise/config.toml` (rendered from config.toml.tmpl) didn't exist yet and nothing was actually installed. Also, dot_zshrc hardcoded a Homebrew path for eza completions, but eza is now managed by mise, not Brewfile. --- dot_zshrc | 7 ++----- install-packages.sh | 4 +++- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/dot_zshrc b/dot_zshrc index aa29263..f7802ac 100644 --- a/dot_zshrc +++ b/dot_zshrc @@ -19,12 +19,9 @@ fi ## sheldon eval "$(sheldon source)" -## eza +## Homebrew completions if type brew &>/dev/null; then - export FPATH="/home/linuxbrew/.linuxbrew/bin/eza/completions/zsh:$FPATH" - FPATH="$(brew --prefix)/share/zsh/site-functions:${FPATH}" - autoload -Uz compinit - compinit + export FPATH="$(brew --prefix)/share/zsh/site-functions:${FPATH}" fi ## fzf diff --git a/install-packages.sh b/install-packages.sh index b7f38e5..a15a50e 100755 --- a/install-packages.sh +++ b/install-packages.sh @@ -71,7 +71,6 @@ brew bundle --file ./Brewfile ## Install mise /bin/bash -c "$(curl https://mise.run | sh)" -mise install # Change the default shell to zsh sudo sh -c "echo '/home/linuxbrew/.linuxbrew/bin/zsh' >> /etc/shells" @@ -80,6 +79,9 @@ chsh -s /home/linuxbrew/.linuxbrew/bin/zsh # Set up by Chezmoi chezmoi init --source-path . --apply +# Install mise-managed tools (requires ~/.config/mise/config.toml rendered by chezmoi apply above) +mise install + # Create the flag file to indicate the script has been executed touch "$FLAG_FILE" From 3c3bf66231352a537b49548a813eb689b5ee12c6 Mon Sep 17 00:00:00 2001 From: roottool Date: Sun, 19 Jul 2026 17:24:59 +0900 Subject: [PATCH 2/4] docs: clarify mise/Brewfile ownership split and validate mise config in CI The policy for which tools go through mise vs Homebrew was undocumented, so it's now spelled out in the README. Also added a CI step in the test job that validates the mise config.toml rendered by `chezmoi apply` is syntactically valid TOML. --- .github/workflows/ci.yaml | 4 ++++ README.md | 12 ++++++++++++ 2 files changed, 16 insertions(+) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 9b1709e..3d0bde4 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -100,6 +100,10 @@ jobs: persist-credentials: false - name: Install dotfiles run: sh -c "$(curl -fsLS chezmoi.io/get)" -- init --source-path . --apply + - name: Validate rendered mise config + run: | + test -f "$HOME/.config/mise/config.toml" + python3 -c "import tomllib; tomllib.load(open('$HOME/.config/mise/config.toml', 'rb'))" gatekeeper: name: Merge Gatekeeper diff --git a/README.md b/README.md index 3d727da..35c98c3 100644 --- a/README.md +++ b/README.md @@ -23,6 +23,15 @@ This dotfiles repository is intended to be used for Debian or Ubuntu under WSL2. - [mise](https://mise.jdx.dev) - [Docker](https://www.docker.com) +## 📦 Package management policy + +This repository uses two package managers with distinct roles: + +- **[Homebrew](https://brew.sh)** ([`Brewfile`](Brewfile)): system-level tools, build dependencies, and CLI tools that don't need per-project version pinning (e.g. `gcc`, `cmake`, `sheldon`, `starship`, `zsh`). +- **[mise](https://mise.jdx.dev)** ([`dot_config/mise/config.toml.tmpl`](dot_config/mise/config.toml.tmpl)): language runtimes and CLI tools that benefit from version management (e.g. `node`, `rust`, `eza`, `ripgrep`, `fzf`). + +When adding a new tool, prefer mise if it's a versioned runtime or a tool you might want to pin per-project; use Homebrew otherwise. + ## 🔰 How to use 1. Clone this repository @@ -43,6 +52,9 @@ This dotfiles repository is intended to be used for Debian or Ubuntu under WSL2. ``` 6. Reboot your distribution + + mise-managed tools (see "Package management policy" above) become available automatically once the install script finishes running `mise install`; no manual `mise trust` step is needed since the config lives in the global `~/.config/mise/config.toml`. + 7. Make a GPG key for GitHub. If you want to manipulate Git in the GUI within VS Code, do the following. From aad2ba3ee0a02d111e42359e9e189e79b4c66838 Mon Sep 17 00:00:00 2001 From: roottool Date: Sun, 19 Jul 2026 17:34:33 +0900 Subject: [PATCH 3/4] style: wrap README lines to satisfy markdownlint MD013 CI flagged the mise/Brewfile policy paragraphs added in the previous commit for exceeding the 80-character line-length limit. --- README.md | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 35c98c3..13aa735 100644 --- a/README.md +++ b/README.md @@ -27,10 +27,16 @@ This dotfiles repository is intended to be used for Debian or Ubuntu under WSL2. This repository uses two package managers with distinct roles: -- **[Homebrew](https://brew.sh)** ([`Brewfile`](Brewfile)): system-level tools, build dependencies, and CLI tools that don't need per-project version pinning (e.g. `gcc`, `cmake`, `sheldon`, `starship`, `zsh`). -- **[mise](https://mise.jdx.dev)** ([`dot_config/mise/config.toml.tmpl`](dot_config/mise/config.toml.tmpl)): language runtimes and CLI tools that benefit from version management (e.g. `node`, `rust`, `eza`, `ripgrep`, `fzf`). +- **[Homebrew](https://brew.sh)** ([`Brewfile`](Brewfile)): system-level tools, + build dependencies, and CLI tools that don't need per-project version + pinning (e.g. `gcc`, `cmake`, `sheldon`, `starship`, `zsh`). +- **[mise](https://mise.jdx.dev)** + ([`dot_config/mise/config.toml.tmpl`](dot_config/mise/config.toml.tmpl)): + language runtimes and CLI tools that benefit from version management (e.g. + `node`, `rust`, `eza`, `ripgrep`, `fzf`). -When adding a new tool, prefer mise if it's a versioned runtime or a tool you might want to pin per-project; use Homebrew otherwise. +When adding a new tool, prefer mise if it's a versioned runtime or a tool you +might want to pin per-project; use Homebrew otherwise. ## 🔰 How to use @@ -53,7 +59,10 @@ When adding a new tool, prefer mise if it's a versioned runtime or a tool you mi 6. Reboot your distribution - mise-managed tools (see "Package management policy" above) become available automatically once the install script finishes running `mise install`; no manual `mise trust` step is needed since the config lives in the global `~/.config/mise/config.toml`. + mise-managed tools (see "Package management policy" above) become + available automatically once the install script finishes running + `mise install`; no manual `mise trust` step is needed since the config + lives in the global `~/.config/mise/config.toml`. 7. Make a GPG key for GitHub. From 58137b5369aec7769b09f56b4c9fed8126dac665 Mon Sep 17 00:00:00 2001 From: roottool Date: Sun, 19 Jul 2026 17:35:30 +0900 Subject: [PATCH 4/4] fix: split FPATH declare/assign to satisfy shellcheck SC2155 `export FPATH="$(brew --prefix)/..."` masked brew's return value, which shellcheck flags (SC2155). Split into a plain assignment followed by `export FPATH`. --- dot_zshrc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/dot_zshrc b/dot_zshrc index f7802ac..2bfb7df 100644 --- a/dot_zshrc +++ b/dot_zshrc @@ -21,7 +21,8 @@ eval "$(sheldon source)" ## Homebrew completions if type brew &>/dev/null; then - export FPATH="$(brew --prefix)/share/zsh/site-functions:${FPATH}" + FPATH="$(brew --prefix)/share/zsh/site-functions:${FPATH}" + export FPATH fi ## fzf