From 24cac3f698e20494001eea46cfcaca0bbcff3604 Mon Sep 17 00:00:00 2001 From: Adam Green Date: Sun, 25 Jan 2026 12:07:08 +1300 Subject: [PATCH 01/21] feat: soft remove nix, add brewfile --- Makefile | 4 +-- brew/Brewfile | 66 +++++++++++++++++++++++++++++++++++++++++ dotfiles/common/.zshenv | 6 ++-- dotfiles/common/.zshrc | 6 ++-- 4 files changed, 73 insertions(+), 9 deletions(-) create mode 100644 brew/Brewfile diff --git a/Makefile b/Makefile index 8f1ba26..0890210 100644 --- a/Makefile +++ b/Makefile @@ -78,6 +78,4 @@ setup-brew: brew update; brew upgrade brew-pkgs: setup-brew - brew install hadolint vale actionlint mactex pandoc fzf keychain wordnet entr - brew install koekeishiya/formulae/yabai - brew install koekeishiya/formulae/skhd + brew bundle --file ~/dotfiles/brew/Brewfile --no-upgrade diff --git a/brew/Brewfile b/brew/Brewfile new file mode 100644 index 0000000..6bb427d --- /dev/null +++ b/brew/Brewfile @@ -0,0 +1,66 @@ +tap "hudochenkov/sshpass" +tap "koekeishiya/formulae" +tap "nikitabobko/tap" + +brew "neovim" +brew "tmux" +brew "lsd" +brew "xz" +brew "bzip2" +brew "cairo" +brew "cmake" +brew "deno" +brew "difftastic" +brew "duckdb" +brew "pango" +brew "ffmpeg" +brew "fish" +brew "flyctl" +brew "glow" +brew "golangci-lint" +brew "gopls" +brew "hugo" +brew "imagemagick" +brew "keychain" +brew "libffi" +brew "ltex-ls" +brew "lua-language-server" +brew "marksman" +brew "open-mpi" +brew "openjdk@17" +brew "pkgconf" +brew "stow" +brew "swig" +brew "syncthing", restart_service: :changed +brew "weasyprint" +brew "wordnet" +brew "hadolint" +brew "vale" +brew "actionlint" +brew "pandoc" +brew "fzf" +brew "entr" +brew "yamllint" +brew "yarn" +brew "zlib" +brew "ripgrep" +brew "starship" +brew "zoxide" +brew "gh" +brew "hudochenkov/sshpass/sshpass" +brew "koekeishiya/formulae/skhd" +brew "koekeishiya/formulae/yabai" +cask "amethyst" +cask "darktable" +cask "dockdoor" +cask "font-hack-nerd-font" +cask "mactex" +cask "claude-code" +go "github.com/air-verse/air" +go "github.com/kisielk/errcheck" +go "golang.org/x/tools/cmd/godoc" +go "github.com/jackyzha0/hugo-obsidian" +go "github.com/endocode/shelldoc/cmd/shelldoc" +go "github.com/a-h/templ/cmd/templ" +go "github.com/traefik/yaegi/cmd/yaegi" +cargo "prosemd-lsp" diff --git a/dotfiles/common/.zshenv b/dotfiles/common/.zshenv index 449d153..ba8a691 100644 --- a/dotfiles/common/.zshenv +++ b/dotfiles/common/.zshenv @@ -1,7 +1,7 @@ bash $HOME/dotfiles/scripts/trace.sh "$0" -if [ -e '/nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh' ]; then - . '/nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh' -fi +# if [ -e '/nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh' ]; then +# . '/nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh' +# fi export EDITOR=$(which nvim) export XDG_CONFIG_HOME=$HOME/dotfiles if command -v launchctl >/dev/null 2>&1; then diff --git a/dotfiles/common/.zshrc b/dotfiles/common/.zshrc index 4efc670..9fa51ef 100644 --- a/dotfiles/common/.zshrc +++ b/dotfiles/common/.zshrc @@ -70,9 +70,9 @@ source ~/dotfiles/macos/pyenv-flags export IPYTHONDIR="$HOME/dotfiles/.ipython" # need a fancy npm setup when npm manages nix - requires a .npmrc with a prefix -export PATH=~/.npm-packages/bin:$PATH -export NODE_PATH=~/.npm-packages/lib/node_modules -export PATH="/nix/var/nix/profiles/default/bin:$HOME/.nix-profile/bin:$PATH" +# export PATH=~/.npm-packages/bin:$PATH +# export NODE_PATH=~/.npm-packages/lib/node_modules +# export PATH="/nix/var/nix/profiles/default/bin:$HOME/.nix-profile/bin:$PATH" pyenv_init starship_init From 956890c06f7809919fd37156636fb18910436788 Mon Sep 17 00:00:00 2001 From: Adam Green Date: Sun, 25 Jan 2026 12:28:16 +1300 Subject: [PATCH 02/21] feat: fill out Brewfile, add mise --- README.md | 2 +- brew/Brewfile | 114 +++++++++++++++++++++++++++------------- dotfiles/common/.zshenv | 1 + mise/config.toml | 26 +++++++++ 4 files changed, 106 insertions(+), 37 deletions(-) create mode 100644 mise/config.toml diff --git a/README.md b/README.md index 4a7bb6f..d86c1bb 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ Setup and configuration for my terminal based developer workflow (MacOS/Ubuntu): - Neovim for text editing - Stow for dotfiles management -This repo should be cloned into `$HOME` and set as `$XDG_CONFIG_HOME`. +This repo should be cloned into `$HOME` and set as `$XDG_CONFIG_HOME`. Many tools rely on setting this for the config stored in this repo to work. For other config that requires files in `$HOME` (such as `$HOME/.bashrc`) Stow is used to symlimk files. You can setup your machine using commands in `Makefile`. Commonly setting up a machine involves: diff --git a/brew/Brewfile b/brew/Brewfile index 6bb427d..7269ddd 100644 --- a/brew/Brewfile +++ b/brew/Brewfile @@ -1,66 +1,108 @@ tap "hudochenkov/sshpass" tap "koekeishiya/formulae" tap "nikitabobko/tap" +tap "efm-langserver/tap" +# Core tools +brew "bash" +brew "git" brew "neovim" brew "tmux" +brew "zsh" + +# GNU utils +brew "coreutils" +brew "findutils" +brew "grep" +brew "gnu-sed" +brew "make" + +# Shell & terminal +brew "bat" +brew "direnv" +brew "mise" +brew "fd" +brew "fzf" +brew "htop" +brew "jq" brew "lsd" -brew "xz" -brew "bzip2" -brew "cairo" +brew "ripgrep" +brew "starship" +brew "tig" +brew "tree" +brew "wget" +brew "zoxide" + +# Language servers & linters +brew "actionlint" +brew "codespell" +brew "efm-langserver/tap/efm-langserver" +brew "golangci-lint" +brew "gopls" +brew "hadolint" +brew "ltex-ls" +brew "lua-language-server" +brew "marksman" +brew "shellcheck" +brew "shellharden" +brew "stylua" +brew "vale" +brew "yamllint" + +# Dev tools brew "cmake" brew "deno" brew "difftastic" -brew "duckdb" +brew "entr" +brew "gh" +brew "just" +brew "lazydocker" +brew "lazygit" +brew "llvm" +brew "stow" + +# Build deps & libs +brew "bzip2" +brew "cairo" +brew "gtk4" +brew "libffi" +brew "open-mpi" +brew "openjdk@17" brew "pango" +brew "pkgconf" +brew "swig" +brew "xz" +brew "zlib" + +# Apps & utilities +brew "cbonsai" +brew "csvlens" +brew "duckdb" brew "ffmpeg" brew "fish" brew "flyctl" brew "glow" -brew "golangci-lint" -brew "gopls" +brew "go-task" +brew "httpie" brew "hugo" brew "imagemagick" brew "keychain" -brew "libffi" -brew "ltex-ls" -brew "lua-language-server" -brew "marksman" -brew "open-mpi" -brew "openjdk@17" -brew "pkgconf" -brew "stow" -brew "swig" +brew "pandoc" brew "syncthing", restart_service: :changed brew "weasyprint" brew "wordnet" -brew "hadolint" -brew "vale" -brew "actionlint" -brew "pandoc" -brew "fzf" -brew "entr" -brew "yamllint" brew "yarn" -brew "zlib" -brew "ripgrep" -brew "starship" -brew "zoxide" -brew "gh" + +# Taps brew "hudochenkov/sshpass/sshpass" brew "koekeishiya/formulae/skhd" brew "koekeishiya/formulae/yabai" + +# Casks cask "amethyst" +cask "claude-code" cask "darktable" cask "dockdoor" +cask "font-fira-code-nerd-font" cask "font-hack-nerd-font" cask "mactex" -cask "claude-code" -go "github.com/air-verse/air" -go "github.com/kisielk/errcheck" -go "golang.org/x/tools/cmd/godoc" -go "github.com/jackyzha0/hugo-obsidian" -go "github.com/endocode/shelldoc/cmd/shelldoc" -go "github.com/a-h/templ/cmd/templ" -go "github.com/traefik/yaegi/cmd/yaegi" -cargo "prosemd-lsp" diff --git a/dotfiles/common/.zshenv b/dotfiles/common/.zshenv index ba8a691..2b95f36 100644 --- a/dotfiles/common/.zshenv +++ b/dotfiles/common/.zshenv @@ -2,6 +2,7 @@ bash $HOME/dotfiles/scripts/trace.sh "$0" # if [ -e '/nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh' ]; then # . '/nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh' # fi +eval "$(mise activate zsh)" export EDITOR=$(which nvim) export XDG_CONFIG_HOME=$HOME/dotfiles if command -v launchctl >/dev/null 2>&1; then diff --git a/mise/config.toml b/mise/config.toml new file mode 100644 index 0000000..d062b90 --- /dev/null +++ b/mise/config.toml @@ -0,0 +1,26 @@ +[settings] +experimental = true +always_keep_download = false +always_keep_install = false +legacy_version_file = true + +[tools] +go = "1.24" +node = "22" +ruby = "3.3" +lua = "latest" +zig = "latest" +rust = "latest" + +# Go tools +"go:github.com/air-verse/air" = "latest" +"go:github.com/kisielk/errcheck" = "latest" +"go:golang.org/x/tools/cmd/godoc" = "latest" +"go:github.com/jackyzha0/hugo-obsidian" = "latest" +"go:github.com/endocode/shelldoc/cmd/shelldoc" = "latest" +"go:github.com/a-h/templ/cmd/templ" = "latest" +"go:github.com/traefik/yaegi/cmd/yaegi" = "latest" +"go:honnef.co/go/tools/cmd/staticcheck" = "latest" + +# Cargo tools +"cargo:prosemd-lsp" = "latest" From c9766ff3c2628533fdead958a5c5e5f422755054 Mon Sep 17 00:00:00 2001 From: Adam Green Date: Sun, 25 Jan 2026 12:36:37 +1300 Subject: [PATCH 03/21] feat: brewfile working --- Makefile | 20 +++----------------- brew/Brewfile | 3 +-- fzf/setup.sh | 1 + tmux/setup.sh | 1 + zsh/setup.sh | 1 + 5 files changed, 7 insertions(+), 19 deletions(-) diff --git a/Makefile b/Makefile index 0890210..5624fca 100644 --- a/Makefile +++ b/Makefile @@ -9,15 +9,15 @@ setup-common: bash ./fzf/setup.sh setup-macos: export OS=macos -setup-macos: brew-pkgs nix-pkgs dotfiles setup-common +setup-macos: brew-pkgs dotfiles setup-common bash ./macos/setup.sh setup-ubuntu: export OS=ubuntu -setup-ubuntu: dotfiles nix-pkgs dotfiles setup-common +setup-ubuntu: dotfiles setup-common bash ./ubuntu/setup.sh setup-wsl: export OS=wsl -setup-wsl: dotfiles nix-pkgs dotfiles setup-common +setup-wsl: dotfiles setup-common setup-stow: bash ./stow/setup.sh @@ -31,9 +31,6 @@ dotfiles: setup-stow stow "$(STOW_ARGS)" yabai ln -sf ~/dotfiles/fish ~/.config/fish\ -test: nix-pkgs - . ./nix/load-"$(OS)".sh && bash ./tests/*.sh - .PHONY: setup-uv python js setup-uv: @@ -60,17 +57,6 @@ setup-vim: git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim "vim" +PluginInstall +qall -.PHONY: setup-nix nix-pkgs - -setup-nix: - curl -L https://nixos.org/nix/install | sh - . ./nix/load-"$(OS)".sh && nix-channel --add https://nixos.org/channels/nixpkgs-unstable unstable - . ./nix/load-"$(OS)".sh && nix-channel --update - -NIX_ARGS=--extra-experimental-features nix-command --extra-experimental-features flakes -nix-pkgs: setup-nix - . ./nix/load-"$(OS)".sh && cd nix && nix flake update "$(NIX_ARGS)" && (nix profile upgrade "$(NIX_ARGS)" nix || nix profile install "$(NIX_ARGS)" .) - .PHONY: setup-brew brew-pkgs setup-brew: diff --git a/brew/Brewfile b/brew/Brewfile index 7269ddd..4cd00df 100644 --- a/brew/Brewfile +++ b/brew/Brewfile @@ -1,7 +1,6 @@ tap "hudochenkov/sshpass" tap "koekeishiya/formulae" tap "nikitabobko/tap" -tap "efm-langserver/tap" # Core tools brew "bash" @@ -36,7 +35,7 @@ brew "zoxide" # Language servers & linters brew "actionlint" brew "codespell" -brew "efm-langserver/tap/efm-langserver" +brew "efm-langserver" brew "golangci-lint" brew "gopls" brew "hadolint" diff --git a/fzf/setup.sh b/fzf/setup.sh index 1fde20e..9a0431e 100644 --- a/fzf/setup.sh +++ b/fzf/setup.sh @@ -1,2 +1,3 @@ +#!/usr/bin/env bash git clone --depth 1 https://github.com/junegunn/fzf.git ~/.fzf ~/.fzf/install --key-bindings --completion --no-update-rc diff --git a/tmux/setup.sh b/tmux/setup.sh index c188a1f..69a9b0b 100644 --- a/tmux/setup.sh +++ b/tmux/setup.sh @@ -1,4 +1,5 @@ #!/usr/bin/env bash +# tmux is installed with homebrew URL=https://github.com/tmux-plugins/tpm FOLDER=~/.tmux/plugins/tpm if [ ! -d "$FOLDER" ] ; then diff --git a/zsh/setup.sh b/zsh/setup.sh index 850c1b7..52eb2bc 100644 --- a/zsh/setup.sh +++ b/zsh/setup.sh @@ -1 +1,2 @@ +#!/usr/bin/env bash git clone --recursive https://github.com/sorin-ionescu/prezto.git "${ZDOTDIR:-${XDG_CONFIG_HOME:-$HOME/.config}/zsh}/.zprezto" From 6567e52478d473658c39c2180041e0e6cc95af44 Mon Sep 17 00:00:00 2001 From: Adam Green Date: Sun, 25 Jan 2026 12:42:28 +1300 Subject: [PATCH 04/21] feat --- .github/workflows/test.yml | 1 + Makefile | 1 + mise/config.toml | 1 - scripts/setup-extras.sh | 1 + 4 files changed, 3 insertions(+), 1 deletion(-) create mode 100644 scripts/setup-extras.sh diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 9518a04..18f72f6 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -9,6 +9,7 @@ jobs: XDG_CONFIG_HOME: ${{ github.workspace }} steps: - uses: actions/checkout@v3 + - run: make setup-ubuntu macos: runs-on: macos-latest env: diff --git a/Makefile b/Makefile index 5624fca..610bf3d 100644 --- a/Makefile +++ b/Makefile @@ -7,6 +7,7 @@ setup-common: bash ./tmux/setup.sh bash ./zsh/setup.sh bash ./fzf/setup.sh + bash ./scripts/setup-extras.sh setup-macos: export OS=macos setup-macos: brew-pkgs dotfiles setup-common diff --git a/mise/config.toml b/mise/config.toml index d062b90..319ed3e 100644 --- a/mise/config.toml +++ b/mise/config.toml @@ -17,7 +17,6 @@ rust = "latest" "go:github.com/kisielk/errcheck" = "latest" "go:golang.org/x/tools/cmd/godoc" = "latest" "go:github.com/jackyzha0/hugo-obsidian" = "latest" -"go:github.com/endocode/shelldoc/cmd/shelldoc" = "latest" "go:github.com/a-h/templ/cmd/templ" = "latest" "go:github.com/traefik/yaegi/cmd/yaegi" = "latest" "go:honnef.co/go/tools/cmd/staticcheck" = "latest" diff --git a/scripts/setup-extras.sh b/scripts/setup-extras.sh new file mode 100644 index 0000000..14ddc4b --- /dev/null +++ b/scripts/setup-extras.sh @@ -0,0 +1 @@ +go get -u github.com/endocode/shelldoc/cmd/shelldoc From 8fa467b411a800745ac862251eb9eb0fd377a3a2 Mon Sep 17 00:00:00 2001 From: Adam Green Date: Sun, 25 Jan 2026 12:53:02 +1300 Subject: [PATCH 05/21] feat: working --- Makefile | 9 +++------ README.md | 34 ++++++++++++++++++++-------------- brew/Brewfile | 9 +++++++-- 3 files changed, 30 insertions(+), 22 deletions(-) diff --git a/Makefile b/Makefile index 610bf3d..4e23b4d 100644 --- a/Makefile +++ b/Makefile @@ -10,7 +10,7 @@ setup-common: bash ./scripts/setup-extras.sh setup-macos: export OS=macos -setup-macos: brew-pkgs dotfiles setup-common +setup-macos: brew-pkgs dotfiles setup-common setup-python bash ./macos/setup.sh setup-ubuntu: export OS=ubuntu @@ -32,18 +32,15 @@ dotfiles: setup-stow stow "$(STOW_ARGS)" yabai ln -sf ~/dotfiles/fish ~/.config/fish\ -.PHONY: setup-uv python js +.PHONY: setup-uv python setup-uv: bash ./python/setup-uv.sh -python: setup-uv +setup-python: setup-uv cd ~ && ~/.local/bin/uv venv --python 3.11.9 ~/.local/bin/uv pip install -r ./python/pyproject.toml -js: - npm install -g remark-cli remark-lint remark-preset-lint-consistent remark-preset-lint-markdown-style-guide remark-preset-lint-recommended remark-stringify jsonlint jshint sql-language-server @tailwindcss/language-server markserv - .PHONY: clean-nvim setup-vim clean-nvim: diff --git a/README.md b/README.md index d86c1bb..ac36005 100644 --- a/README.md +++ b/README.md @@ -3,8 +3,9 @@ Setup and configuration for my terminal based developer workflow (MacOS/Ubuntu): - Zsh for a shell -- Nix for package management of shell programs -- uv for Python +- Homebrew for shell tools +- mise for programming language runtimes (except Python) +- uv for Python runtime and virtual environments - Neovim for text editing - Stow for dotfiles management @@ -12,9 +13,10 @@ This repo should be cloned into `$HOME` and set as `$XDG_CONFIG_HOME`. Many tool You can setup your machine using commands in `Makefile`. Commonly setting up a machine involves: -- Installing packages with Nix or Homebrew +- Installing packages with Homebrew - Setting up symlinks with Stow - Setting up tmux & Zsh +- Installing language runtimes with mise ## Use @@ -30,20 +32,24 @@ This will also setup dependencies with Nix. ### macOS -Setup an macOS machine: +Setup a macOS machine: ```shell-session $ make setup-macos ``` -This will also setup dependencies with Nix. +This will: +- Install Homebrew if not already installed +- Install all packages from the Brewfile +- Setup dotfiles with Stow +- Configure tmux, Zsh, and fzf ### Python Install `uv` and setup a global Python installation in a virtual environment: ```bash -$ make python +$ make setup-python ``` ## Components @@ -70,21 +76,21 @@ You can run the setup without bootstrapping Stow with: $ make dotfiles OS=macos -o setup-stow ``` -### Nix +### Homebrew -Install packages with Nix from a Nix Flake - I use Nix for things like direnv and Neovim: +Install packages with Homebrew from the Brewfile: ```shell-session -$ make nix-pkgs +$ make brew-pkgs ``` -This will setup dependencies with Nix from `./nix/flake.nix`. +This will: +- Install Homebrew if not already installed +- Install all packages defined in `./brew/Brewfile` -It will also install Nix itself. Nix doesn't like to be installed multiple times - you can avoid this step with: +### mise -```shell-session -$ make nix-pkgs -o setup-nix -``` +mise is used for managing programming language runtime versions (Python, Node.js, Go, etc.). It's automatically installed via the Brewfile and activated in Zsh via an `eval`. ### Neovim diff --git a/brew/Brewfile b/brew/Brewfile index 4cd00df..c60fb02 100644 --- a/brew/Brewfile +++ b/brew/Brewfile @@ -39,18 +39,21 @@ brew "efm-langserver" brew "golangci-lint" brew "gopls" brew "hadolint" +brew "jsonlint" brew "ltex-ls" brew "lua-language-server" brew "marksman" brew "shellcheck" brew "shellharden" +brew "sql-language-server" brew "stylua" +brew "tailwindcss-language-server" brew "vale" brew "yamllint" # Dev tools brew "cmake" -brew "deno" +# brew "deno" brew "difftastic" brew "entr" brew "gh" @@ -90,7 +93,7 @@ brew "pandoc" brew "syncthing", restart_service: :changed brew "weasyprint" brew "wordnet" -brew "yarn" +# brew "yarn" # Taps brew "hudochenkov/sshpass/sshpass" @@ -105,3 +108,5 @@ cask "dockdoor" cask "font-fira-code-nerd-font" cask "font-hack-nerd-font" cask "mactex" + +brew "markdownlint-cli" From bd179c65fbaac1ce08eb85e2104b76bb9c87b39a Mon Sep 17 00:00:00 2001 From: Adam Green Date: Sun, 25 Jan 2026 13:00:35 +1300 Subject: [PATCH 06/21] feat --- brew/Brewfile | 1 + dotfiles/macos/.zshrc | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/brew/Brewfile b/brew/Brewfile index c60fb02..206350a 100644 --- a/brew/Brewfile +++ b/brew/Brewfile @@ -110,3 +110,4 @@ cask "font-hack-nerd-font" cask "mactex" brew "markdownlint-cli" +cask "copilot-cli" diff --git a/dotfiles/macos/.zshrc b/dotfiles/macos/.zshrc index b3d4167..10775da 100644 --- a/dotfiles/macos/.zshrc +++ b/dotfiles/macos/.zshrc @@ -1,6 +1,6 @@ source $HOME/dotfiles/dotfiles/common/.zshrc export DYLD_FALLBACK_LIBRARY_PATH=/opt/homebrew/lib -eval "$(gh copilot alias -- zsh)" +# eval "$(gh copilot alias -- zsh)" [ -f ~/.fzf.zsh ] && source ~/.fzf.zsh . "$HOME/.local/bin/env" eval "$(keychain --eval --quiet --agents ssh ~/.ssh/github-air ~/.ssh/macbook-pro)" From f9664ab081fca8efcf4e98b15e47b277c70d42e9 Mon Sep 17 00:00:00 2001 From: Adam Green Date: Sun, 25 Jan 2026 13:21:19 +1300 Subject: [PATCH 07/21] feat --- dotfiles/common/.zshenv | 2 +- dotfiles/common/.zshrc | 31 ++++++++++++++++++++++++++++--- dotfiles/macos/.zshrc | 15 +++++++++++---- 3 files changed, 40 insertions(+), 8 deletions(-) diff --git a/dotfiles/common/.zshenv b/dotfiles/common/.zshenv index 2b95f36..84f2e5d 100644 --- a/dotfiles/common/.zshenv +++ b/dotfiles/common/.zshenv @@ -2,7 +2,7 @@ bash $HOME/dotfiles/scripts/trace.sh "$0" # if [ -e '/nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh' ]; then # . '/nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh' # fi -eval "$(mise activate zsh)" +# Moved mise activation to .zshrc for interactive shells only (performance optimization) export EDITOR=$(which nvim) export XDG_CONFIG_HOME=$HOME/dotfiles if command -v launchctl >/dev/null 2>&1; then diff --git a/dotfiles/common/.zshrc b/dotfiles/common/.zshrc index 9fa51ef..f111d26 100644 --- a/dotfiles/common/.zshrc +++ b/dotfiles/common/.zshrc @@ -54,7 +54,8 @@ atuin_init() { fpath=($HOME/dotfiles/zsh/custom-autocomplete/ $fpath) autoload -U compinit -compinit +# Use cached completion dump for faster loading (skip security check) +compinit -C autoload -Uz $HOME/dotfiles/zsh/custom-autocomplete/todo export HISTFILE=~/.zsh_history @@ -78,9 +79,33 @@ pyenv_init starship_init flyctl_init -eval "$(zoxide init zsh)" +# Lazy-load mise for faster startup (only initialize on first use) +mise() { + unfunction mise + eval "$(command mise activate zsh)" + mise "$@" +} + +# Lazy-load zoxide (only initialize on first use of z/zi commands) +z() { + unfunction z zi 2>/dev/null + eval "$(zoxide init zsh)" + z "$@" +} +zi() { + unfunction z zi 2>/dev/null + eval "$(zoxide init zsh)" + zi "$@" +} + eval "$(ssh-agent)" &>/dev/null &>/dev/null -eval "$(direnv hook zsh)" + +# Lazy-load direnv (only initialize on first cd) +direnv() { + unfunction direnv + eval "$(command direnv hook zsh)" + direnv "$@" +} # done twice for a reason pretzo_init diff --git a/dotfiles/macos/.zshrc b/dotfiles/macos/.zshrc index 10775da..6fd1c8b 100644 --- a/dotfiles/macos/.zshrc +++ b/dotfiles/macos/.zshrc @@ -3,8 +3,15 @@ export DYLD_FALLBACK_LIBRARY_PATH=/opt/homebrew/lib # eval "$(gh copilot alias -- zsh)" [ -f ~/.fzf.zsh ] && source ~/.fzf.zsh . "$HOME/.local/bin/env" -eval "$(keychain --eval --quiet --agents ssh ~/.ssh/github-air ~/.ssh/macbook-pro)" + +# Cache keychain eval to avoid subprocess on every startup +if [ -z "$SSH_AUTH_SOCK" ]; then + eval "$(keychain --eval --quiet --agents ssh ~/.ssh/github-air ~/.ssh/macbook-pro)" +fi + eval "$(/opt/homebrew/bin/brew shellenv)" -quote -echo "" -quote + +# Skip quote display for faster startup (can be called manually with 'quote' command) +# quote +# echo "" +# quote From e2300d4cacc503a3d7ca27643dda6d54f38d3906 Mon Sep 17 00:00:00 2001 From: Adam Green Date: Sun, 25 Jan 2026 13:22:15 +1300 Subject: [PATCH 08/21] feat --- dotfiles/macos/.zshrc | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/dotfiles/macos/.zshrc b/dotfiles/macos/.zshrc index 6fd1c8b..28f6208 100644 --- a/dotfiles/macos/.zshrc +++ b/dotfiles/macos/.zshrc @@ -4,11 +4,7 @@ export DYLD_FALLBACK_LIBRARY_PATH=/opt/homebrew/lib [ -f ~/.fzf.zsh ] && source ~/.fzf.zsh . "$HOME/.local/bin/env" -# Cache keychain eval to avoid subprocess on every startup -if [ -z "$SSH_AUTH_SOCK" ]; then - eval "$(keychain --eval --quiet --agents ssh ~/.ssh/github-air ~/.ssh/macbook-pro)" -fi - +eval "$(keychain --eval --quiet --agents ssh ~/.ssh/github-air ~/.ssh/macbook-pro)" eval "$(/opt/homebrew/bin/brew shellenv)" # Skip quote display for faster startup (can be called manually with 'quote' command) From f169a143c6e1e7919361e1235fdec87983addd07 Mon Sep 17 00:00:00 2001 From: Adam Green Date: Sun, 25 Jan 2026 13:24:32 +1300 Subject: [PATCH 09/21] feat --- nvim/lua/plugins/semshi.lua | 111 ++++++++++++++++++++++++++++++++++++ 1 file changed, 111 insertions(+) create mode 100644 nvim/lua/plugins/semshi.lua diff --git a/nvim/lua/plugins/semshi.lua b/nvim/lua/plugins/semshi.lua new file mode 100644 index 0000000..a8ad64a --- /dev/null +++ b/nvim/lua/plugins/semshi.lua @@ -0,0 +1,111 @@ +return { + { + "wookayin/semshi", -- Maintained fork with Python 3.13 support + ft = "python", -- Only load for Python files + build = ":UpdateRemotePlugins", + init = function() + -- Disable default builtin highlighting (let semshi handle it) + vim.g["semshi#no_default_builtin_highlight"] = true + + -- Simplify markup for better integration with semshi + vim.g["semshi#simplify_markup"] = true + + -- Mark selected nodes (same name and scope as cursor) + vim.g["semshi#mark_selected_nodes"] = 1 + + -- Show error signs in the sign column + vim.g["semshi#error_sign"] = true + vim.g["semshi#error_sign_delay"] = 1.5 + + -- Update all highlights for every change (more reliable) + vim.g["semshi#always_update_all_highlights"] = false + + -- Tolerate syntax errors while typing + vim.g["semshi#tolerate_syntax_errors"] = true + + -- Prefer self.foo over self when selecting + vim.g["semshi#self_to_attribute"] = true + + -- Filetypes to enable semshi on + vim.g["semshi#filetypes"] = { "python" } + end, + config = function() + -- Custom highlights (optimized for dark backgrounds) + vim.api.nvim_create_autocmd("FileType", { + pattern = "python", + callback = function() + vim.cmd([[ + hi semshiLocal ctermfg=209 guifg=#ff875f + hi semshiGlobal ctermfg=214 guifg=#ffaf00 + hi semshiImported ctermfg=214 guifg=#ffaf00 cterm=bold gui=bold + hi semshiParameter ctermfg=75 guifg=#5fafff + hi semshiParameterUnused ctermfg=117 guifg=#87d7ff cterm=underline gui=underline + hi semshiFree ctermfg=218 guifg=#ffafd7 + hi semshiBuiltin ctermfg=207 guifg=#ff5fff + hi semshiAttribute ctermfg=49 guifg=#00ffaf + hi semshiSelf ctermfg=249 guifg=#b2b2b2 + hi semshiUnresolved ctermfg=226 guifg=#ffff00 cterm=underline gui=underline + hi semshiSelected ctermfg=231 guifg=#ffffff ctermbg=161 guibg=#d7005f + + hi semshiErrorSign ctermfg=231 guifg=#ffffff ctermbg=160 guibg=#d70000 + hi semshiErrorChar ctermfg=231 guifg=#ffffff ctermbg=160 guibg=#d70000 + sign define semshiError text=E> texthl=semshiErrorSign + ]]) + end, + }) + + -- Persist highlights across colorscheme changes + vim.api.nvim_create_autocmd("ColorScheme", { + callback = function() + vim.cmd([[ + hi semshiLocal ctermfg=209 guifg=#ff875f + hi semshiGlobal ctermfg=214 guifg=#ffaf00 + hi semshiImported ctermfg=214 guifg=#ffaf00 cterm=bold gui=bold + hi semshiParameter ctermfg=75 guifg=#5fafff + hi semshiParameterUnused ctermfg=117 guifg=#87d7ff cterm=underline gui=underline + hi semshiFree ctermfg=218 guifg=#ffafd7 + hi semshiBuiltin ctermfg=207 guifg=#ff5fff + hi semshiAttribute ctermfg=49 guifg=#00ffaf + hi semshiSelf ctermfg=249 guifg=#b2b2b2 + hi semshiUnresolved ctermfg=226 guifg=#ffff00 cterm=underline gui=underline + hi semshiSelected ctermfg=231 guifg=#ffffff ctermbg=161 guibg=#d7005f + + hi semshiErrorSign ctermfg=231 guifg=#ffffff ctermbg=160 guibg=#d70000 + hi semshiErrorChar ctermfg=231 guifg=#ffffff ctermbg=160 guibg=#d70000 + ]]) + end, + }) + + -- Keymaps for semshi (only in Python files) + vim.api.nvim_create_autocmd("FileType", { + pattern = "python", + callback = function() + local opts = { noremap = true, silent = true, buffer = true } + + -- Rename symbol under cursor + vim.keymap.set("n", "rr", ":Semshi rename", opts) + + -- Navigate between related names + vim.keymap.set("n", "", ":Semshi goto name next", opts) + vim.keymap.set("n", "", ":Semshi goto name prev", opts) + + -- Navigate between classes + vim.keymap.set("n", "c", ":Semshi goto class next", opts) + vim.keymap.set("n", "C", ":Semshi goto class prev", opts) + + -- Navigate between functions + vim.keymap.set("n", "f", ":Semshi goto function next", opts) + vim.keymap.set("n", "F", ":Semshi goto function prev", opts) + + -- Jump to unresolved names and unused parameters + vim.keymap.set("n", "gu", ":Semshi goto unresolved first", opts) + vim.keymap.set("n", "gp", ":Semshi goto parameterUnused first", opts) + + -- Error navigation + vim.keymap.set("n", "ee", ":Semshi error", opts) + vim.keymap.set("n", "ge", ":Semshi goto error", opts) + end, + }) + end, + }, +} From 2c7d3b703753da6d740ee30e6994e74e63dc150e Mon Sep 17 00:00:00 2001 From: Adam Green Date: Sun, 25 Jan 2026 13:28:59 +1300 Subject: [PATCH 10/21] feat --- dygma/L4.json | 801 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 801 insertions(+) create mode 100644 dygma/L4.json diff --git a/dygma/L4.json b/dygma/L4.json new file mode 100644 index 0000000..fa9cbb9 --- /dev/null +++ b/dygma/L4.json @@ -0,0 +1,801 @@ +{ + "device": { + "vendor": "Dygma", + "product": "Defy", + "keyboardType": "wireless", + "displayName": "Dygma Defy wireless", + "urls": [ + { + "name": "Homepage", + "url": "https://www.dygma.com/defy/" + } + ] + }, + "language": "en-GB", + "layerNames": [ + { + "id": 0, + "name": "L1" + }, + { + "id": 1, + "name": "L2" + }, + { + "id": 2, + "name": "L3" + }, + { + "id": 3, + "name": "L4" + }, + { + "id": 4, + "name": "L5" + }, + { + "id": 5, + "name": "L6" + }, + { + "id": 6, + "name": "L7" + }, + { + "id": 7, + "name": "L8" + }, + { + "id": 8, + "name": "L9" + }, + { + "id": 9, + "name": "L10" + } + ], + "keymap": [ + { + "keyCode": 65535, + "label": "", + "extraLabel": "TRANS", + "verbose": "Transparent" + }, + { + "keyCode": 65535, + "label": "", + "extraLabel": "TRANS", + "verbose": "Transparent" + }, + { + "keyCode": 65535, + "label": "", + "extraLabel": "TRANS", + "verbose": "Transparent" + }, + { + "keyCode": 65535, + "label": "", + "extraLabel": "TRANS", + "verbose": "Transparent" + }, + { + "keyCode": 65535, + "label": "", + "extraLabel": "TRANS", + "verbose": "Transparent" + }, + { + "keyCode": 65535, + "label": "", + "extraLabel": "TRANS", + "verbose": "Transparent" + }, + { + "keyCode": 65535, + "label": "", + "extraLabel": "TRANS", + "verbose": "Transparent" + }, + { + "keyCode": 65535, + "label": "", + "extraLabel": "TRANS", + "verbose": "Transparent" + }, + { + "keyCode": 65535, + "label": "", + "extraLabel": "TRANS", + "verbose": "Transparent" + }, + { + "keyCode": 65535, + "label": "", + "extraLabel": "TRANS", + "verbose": "Transparent" + }, + { + "keyCode": 65535, + "label": "", + "extraLabel": "TRANS", + "verbose": "Transparent" + }, + { + "keyCode": 65535, + "label": "", + "extraLabel": "TRANS", + "verbose": "Transparent" + }, + { + "keyCode": 65535, + "label": "", + "extraLabel": "TRANS", + "verbose": "Transparent" + }, + { + "keyCode": 65535, + "label": "", + "extraLabel": "TRANS", + "verbose": "Transparent" + }, + { + "keyCode": 65535, + "label": "", + "extraLabel": "TRANS", + "verbose": "Transparent" + }, + { + "keyCode": 65535, + "label": "", + "extraLabel": "TRANS", + "verbose": "Transparent" + }, + { + "keyCode": 65535, + "label": "", + "extraLabel": "TRANS", + "verbose": "Transparent" + }, + { + "keyCode": 65535, + "label": "", + "extraLabel": "TRANS", + "verbose": "Transparent" + }, + { + "keyCode": 65535, + "label": "", + "extraLabel": "TRANS", + "verbose": "Transparent" + }, + { + "keyCode": 65535, + "label": "", + "extraLabel": "TRANS", + "verbose": "Transparent" + }, + { + "keyCode": 65535, + "label": "", + "extraLabel": "TRANS", + "verbose": "Transparent" + }, + { + "keyCode": 65535, + "label": "", + "extraLabel": "TRANS", + "verbose": "Transparent" + }, + { + "keyCode": 65535, + "label": "", + "extraLabel": "TRANS", + "verbose": "Transparent" + }, + { + "keyCode": 65535, + "label": "", + "extraLabel": "TRANS", + "verbose": "Transparent" + }, + { + "keyCode": 65535, + "label": "", + "extraLabel": "TRANS", + "verbose": "Transparent" + }, + { + "keyCode": 65535, + "label": "", + "extraLabel": "TRANS", + "verbose": "Transparent" + }, + { + "keyCode": 58, + "label": "F1" + }, + { + "keyCode": 59, + "label": "F2" + }, + { + "keyCode": 60, + "label": "F3" + }, + { + "keyCode": 61, + "label": "F4" + }, + { + "keyCode": 65535, + "label": "", + "extraLabel": "TRANS", + "verbose": "Transparent" + }, + { + "keyCode": 65535, + "label": "", + "extraLabel": "TRANS", + "verbose": "Transparent" + }, + { + "keyCode": 65535, + "label": "", + "extraLabel": "TRANS", + "verbose": "Transparent" + }, + { + "keyCode": 65535, + "label": "", + "extraLabel": "TRANS", + "verbose": "Transparent" + }, + { + "keyCode": 65535, + "label": "", + "extraLabel": "TRANS", + "verbose": "Transparent" + }, + { + "keyCode": 65535, + "label": "", + "extraLabel": "TRANS", + "verbose": "Transparent" + }, + { + "keyCode": 65535, + "label": "", + "extraLabel": "TRANS", + "verbose": "Transparent" + }, + { + "keyCode": 65535, + "label": "", + "extraLabel": "TRANS", + "verbose": "Transparent" + }, + { + "keyCode": 65535, + "label": "", + "extraLabel": "TRANS", + "verbose": "Transparent" + }, + { + "keyCode": 65535, + "label": "", + "extraLabel": "TRANS", + "verbose": "Transparent" + }, + { + "keyCode": 65535, + "label": "", + "extraLabel": "TRANS", + "verbose": "Transparent" + }, + { + "keyCode": 65535, + "label": "", + "extraLabel": "TRANS", + "verbose": "Transparent" + }, + { + "keyCode": 62, + "label": "F5" + }, + { + "keyCode": 63, + "label": "F6" + }, + { + "keyCode": 64, + "label": "F7" + }, + { + "keyCode": 65, + "label": "F8" + }, + { + "keyCode": 65535, + "label": "", + "extraLabel": "TRANS", + "verbose": "Transparent" + }, + { + "keyCode": 65535, + "label": "", + "extraLabel": "TRANS", + "verbose": "Transparent" + }, + { + "keyCode": 65535, + "label": "", + "extraLabel": "TRANS", + "verbose": "Transparent" + }, + { + "keyCode": 65535, + "label": "", + "extraLabel": "TRANS", + "verbose": "Transparent" + }, + { + "keyCode": 65535, + "label": "", + "extraLabel": "TRANS", + "verbose": "Transparent" + }, + { + "keyCode": 65535, + "label": "", + "extraLabel": "TRANS", + "verbose": "Transparent" + }, + { + "keyCode": 65535, + "label": "", + "extraLabel": "TRANS", + "verbose": "Transparent" + }, + { + "keyCode": 65535, + "label": "", + "extraLabel": "TRANS", + "verbose": "Transparent" + }, + { + "keyCode": 65535, + "label": "", + "extraLabel": "TRANS", + "verbose": "Transparent" + }, + { + "keyCode": 65535, + "label": "", + "extraLabel": "TRANS", + "verbose": "Transparent" + }, + { + "keyCode": 65535, + "label": "", + "extraLabel": "TRANS", + "verbose": "Transparent" + }, + { + "keyCode": 65535, + "label": "", + "extraLabel": "TRANS", + "verbose": "Transparent" + }, + { + "keyCode": 65535, + "label": "", + "extraLabel": "TRANS", + "verbose": "Transparent" + }, + { + "keyCode": 65535, + "label": "", + "extraLabel": "TRANS", + "verbose": "Transparent" + }, + { + "keyCode": 65535, + "label": "", + "extraLabel": "TRANS", + "verbose": "Transparent" + }, + { + "keyCode": 65535, + "label": "", + "extraLabel": "TRANS", + "verbose": "Transparent" + }, + { + "keyCode": 65535, + "label": "", + "extraLabel": "TRANS", + "verbose": "Transparent" + }, + { + "keyCode": 65535, + "label": "", + "extraLabel": "TRANS", + "verbose": "Transparent" + }, + { + "keyCode": 65535, + "label": "", + "extraLabel": "TRANS", + "verbose": "Transparent" + }, + { + "keyCode": 65535, + "label": "", + "extraLabel": "TRANS", + "verbose": "Transparent" + }, + { + "keyCode": 65535, + "label": "", + "extraLabel": "TRANS", + "verbose": "Transparent" + }, + { + "keyCode": 65535, + "label": "", + "extraLabel": "TRANS", + "verbose": "Transparent" + }, + { + "keyCode": 65535, + "label": "", + "extraLabel": "TRANS", + "verbose": "Transparent" + }, + { + "keyCode": 65535, + "label": "", + "extraLabel": "TRANS", + "verbose": "Transparent" + }, + { + "keyCode": 65535, + "label": "", + "extraLabel": "TRANS", + "verbose": "Transparent" + }, + { + "keyCode": 65535, + "label": "", + "extraLabel": "TRANS", + "verbose": "Transparent" + }, + { + "keyCode": 65535, + "label": "", + "extraLabel": "TRANS", + "verbose": "Transparent" + }, + { + "keyCode": 65535, + "label": "", + "extraLabel": "TRANS", + "verbose": "Transparent" + }, + { + "keyCode": 65535, + "label": "", + "extraLabel": "TRANS", + "verbose": "Transparent" + }, + { + "keyCode": 65535, + "label": "", + "extraLabel": "TRANS", + "verbose": "Transparent" + }, + { + "keyCode": 65535, + "label": "", + "extraLabel": "TRANS", + "verbose": "Transparent" + }, + { + "keyCode": 65535, + "label": "", + "extraLabel": "TRANS", + "verbose": "Transparent" + }, + { + "keyCode": 65535, + "label": "", + "extraLabel": "TRANS", + "verbose": "Transparent" + }, + { + "keyCode": 65535, + "label": "", + "extraLabel": "TRANS", + "verbose": "Transparent" + } + ], + "colormap": [ + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 2, + 2, + 2, + 2, + 15, + 15, + 15, + 2, + 2, + 2, + 2, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15 + ], + "palette": [ + { + "r": 208, + "g": 2, + "b": 27, + "rgb": "rgb(208, 2, 27)" + }, + { + "r": 245, + "g": 166, + "b": 35, + "rgb": "rgb(245, 166, 35)" + }, + { + "r": 208, + "g": 2, + "b": 27, + "rgb": "rgb(208, 2, 27)" + }, + { + "r": 80, + "g": 227, + "b": 194, + "rgb": "rgb(80, 227, 194)" + }, + { + "r": 139, + "g": 87, + "b": 42, + "rgb": "rgb(139, 87, 42)" + }, + { + "r": 65, + "g": 117, + "b": 5, + "rgb": "rgb(65, 117, 5)" + }, + { + "r": 189, + "g": 16, + "b": 224, + "rgb": "rgb(189, 16, 224)" + }, + { + "r": 74, + "g": 144, + "b": 226, + "rgb": "rgb(74, 144, 226)" + }, + { + "r": 184, + "g": 233, + "b": 134, + "rgb": "rgb(184, 233, 134)" + }, + { + "r": 126, + "g": 211, + "b": 33, + "rgb": "rgb(126, 211, 33)" + }, + { + "r": 0, + "g": 0, + "b": 0, + "rgb": "rgb(0, 0, 0)" + }, + { + "r": 0, + "g": 0, + "b": 0, + "rgb": "rgb(0, 0, 0)" + }, + { + "r": 0, + "g": 0, + "b": 0, + "rgb": "rgb(0, 0, 0)" + }, + { + "r": 0, + "g": 0, + "b": 0, + "rgb": "rgb(0, 0, 0)" + }, + { + "r": 0, + "g": 0, + "b": 0, + "rgb": "rgb(0, 0, 0)" + }, + { + "r": 0, + "g": 0, + "b": 0, + "rgb": "rgb(0, 0, 0)" + } + ] +} \ No newline at end of file From b73d017eabfc7e262baf05a910453f6987fd2e53 Mon Sep 17 00:00:00 2001 From: Adam Green Date: Mon, 26 Jan 2026 00:48:24 +1300 Subject: [PATCH 11/21] feat --- dotfiles/.gitignore | 1 + nvim/lazy-lock.json | 32 ++++++++++++++++---------------- scripts/aliases.sh | 4 ++-- scripts/funcs.sh | 1 - 4 files changed, 19 insertions(+), 19 deletions(-) diff --git a/dotfiles/.gitignore b/dotfiles/.gitignore index 3980959..93393e6 100644 --- a/dotfiles/.gitignore +++ b/dotfiles/.gitignore @@ -37,3 +37,4 @@ pre temp temp.* temp +**/.mypy_cache diff --git a/nvim/lazy-lock.json b/nvim/lazy-lock.json index 0895625..1ac4dd8 100644 --- a/nvim/lazy-lock.json +++ b/nvim/lazy-lock.json @@ -1,43 +1,43 @@ { - "CopilotChat.nvim": { "branch": "main", "commit": "df5376c132382dd47e3e552612940cbf25b3580c" }, - "LuaSnip": { "branch": "master", "commit": "3732756842a2f7e0e76a7b0487e9692072857277" }, + "CopilotChat.nvim": { "branch": "main", "commit": "07dcc188bc488b2dafa9324bd42088640bee3d19" }, + "LuaSnip": { "branch": "master", "commit": "dae4f5aaa3574bd0c2b9dd20fb9542a02c10471c" }, "Vim-Jinja2-Syntax": { "branch": "master", "commit": "2c17843b074b06a835f88587e1023ceff7e2c7d1" }, "barbar.nvim": { "branch": "master", "commit": "539d73def39c9172b4d4d769f14090e08f37b29d" }, "blink-cmp-copilot": { "branch": "main", "commit": "439cff78780c033aa23cf061d7315314b347e3c1" }, "blink-cmp-dictionary": { "branch": "master", "commit": "944b3b215b01303672d4213758db7c5c5a1e3c92" }, "blink-emoji.nvim": { "branch": "master", "commit": "066013e4c98a9318408ee3f1ca2dbcb6fa3e4c06" }, - "blink-ripgrep.nvim": { "branch": "main", "commit": "b181a42925e5bec11030516124b0123c2a297abb" }, + "blink-ripgrep.nvim": { "branch": "main", "commit": "274eb06080a786a1c8c3d35093be269310e9f49f" }, "blink.cmp": { "branch": "main", "commit": "b19413d214068f316c78978b08264ed1c41830ec" }, "blink.compat": { "branch": "main", "commit": "2ed6d9a28b07fa6f3bface818470605f8896408c" }, "bullets.vim": { "branch": "master", "commit": "89294b8930e660936374fb763ac48a1ac51dd29c" }, - "conform.nvim": { "branch": "master", "commit": "328c2f1dda56f933d3337a1316e1020ba30ba6aa" }, + "conform.nvim": { "branch": "master", "commit": "c2526f1cde528a66e086ab1668e996d162c75f4f" }, "copilot-cmp": { "branch": "master", "commit": "15fc12af3d0109fa76b60b5cffa1373697e261d1" }, - "copilot.lua": { "branch": "master", "commit": "e78d1ffebdf6ccb6fd8be4e6898030c1cf5f9b64" }, + "copilot.lua": { "branch": "master", "commit": "2d7511494245129aa6c2176f9c71cc2bc1360ed9" }, "dbtpal": { "branch": "main", "commit": "981eab51609362712c64e3cf3fb773fe11f859b9" }, "diffview.nvim": { "branch": "main", "commit": "4516612fe98ff56ae0415a259ff6361a89419b0a" }, "emmet-vim": { "branch": "master", "commit": "e98397144982d1e75b20d94d55a82de3ec8f648d" }, - "friendly-snippets": { "branch": "main", "commit": "572f5660cf05f8cd8834e096d7b4c921ba18e175" }, + "friendly-snippets": { "branch": "main", "commit": "6cd7280adead7f586db6fccbd15d2cac7e2188b9" }, "git-conflict.nvim": { "branch": "main", "commit": "4bbfdd92d547d2862a75b4e80afaf30e73f7bbb4" }, - "gitsigns.nvim": { "branch": "main", "commit": "5813e4878748805f1518cee7abb50fd7205a3a48" }, + "gitsigns.nvim": { "branch": "main", "commit": "abf82a65f185bd54adc0679f74b7d6e1ada690c9" }, "indent-blankline.nvim": { "branch": "master", "commit": "005b56001b2cb30bfa61b7986bc50657816ba4ba" }, "lazy.nvim": { "branch": "main", "commit": "306a05526ada86a7b30af95c5cc81ffba93fef97" }, "leap.nvim": { "branch": "main", "commit": "f19d43590c4b6d31188ee1ea2954d2b7558a9e11" }, "lualine.nvim": { "branch": "master", "commit": "47f91c416daef12db467145e16bed5bbfe00add8" }, "markdown-preview.nvim": { "branch": "master", "commit": "a923f5fc5ba36a3b17e289dc35dc17f66d0548ee" }, - "mini.icons": { "branch": "main", "commit": "ff2e4f1d29f659cc2bad0f9256f2f6195c6b2428" }, - "mini.nvim": { "branch": "main", "commit": "b7231b65d15611a99168bc5a94a84cb8e4c85c21" }, + "mini.icons": { "branch": "main", "commit": "efc85e42262cd0c9e1fdbf806c25cb0be6de115c" }, + "mini.nvim": { "branch": "main", "commit": "9b935c218ddba02e5dc75c94f90143bce1f7c646" }, "nvim-autopairs": { "branch": "master", "commit": "c2a0dd0d931d0fb07665e1fedb1ea688da3b80b4" }, - "nvim-bqf": { "branch": "main", "commit": "ba2b365969d7c2c6301d48e13aeee59568765529" }, + "nvim-bqf": { "branch": "main", "commit": "daa1a130632dc2b05a9a73538bac058dfa4e0b86" }, "nvim-colorizer.lua": { "branch": "master", "commit": "a065833f35a3a7cc3ef137ac88b5381da2ba302e" }, - "nvim-lint": { "branch": "master", "commit": "7a64f4067065c16a355d40d0d599b8ca6b25de6d" }, - "nvim-lspconfig": { "branch": "master", "commit": "c4f67bf85b01a57e3c130352c0a0e453ab8cd5b9" }, + "nvim-lint": { "branch": "master", "commit": "ca6ea12daf0a4d92dc24c5c9ae22a1f0418ade37" }, + "nvim-lspconfig": { "branch": "master", "commit": "419b082102fa813739588dd82e19a8b6b2442855" }, "nvim-treesitter": { "branch": "master", "commit": "42fc28ba918343ebfd5565147a42a26580579482" }, "nvim-treesitter-context": { "branch": "master", "commit": "64dd4cf3f6fd0ab17622c5ce15c91fc539c3f24a" }, "nvim-treesitter-textobjects": { "branch": "master", "commit": "5ca4aaa6efdcc59be46b95a3e876300cfead05ef" }, - "nvim-ts-autotag": { "branch": "main", "commit": "c4ca798ab95b316a768d51eaaaee48f64a4a46bc" }, + "nvim-ts-autotag": { "branch": "main", "commit": "db15f2e0df2f5db916e511e3fffb682ef2f6354f" }, "nvim-web-devicons": { "branch": "master", "commit": "f66cdfef5e84112045b9ebc3119fee9bddb3c687" }, "obsidian.nvim": { "branch": "main", "commit": "ae1f76a75c7ce36866e1d9342a8f6f5b9c2caf9b" }, - "oil.nvim": { "branch": "master", "commit": "cbcb3f997f6f261c577b943ec94e4ef55108dd95" }, + "oil.nvim": { "branch": "master", "commit": "f55b25e493a7df76371cfadd0ded5004cb9cd48a" }, "peek.nvim": { "branch": "master", "commit": "5820d937d5414baea5f586dc2a3d912a74636e5b" }, "plenary.nvim": { "branch": "master", "commit": "b9fd5226c2f76c951fc8ed5923d85e4de065e509" }, "semshi": { "branch": "master", "commit": "7f18bedc70cbb7aa68dcc6df5e730d88e4527622" }, @@ -45,9 +45,9 @@ "telescope-git-file-history.nvim": { "branch": "master", "commit": "e7d495319f2a04df96402057a6992ea970f8914d" }, "telescope-makefile": { "branch": "master", "commit": "f35425d7d53d92a04215c3714a5819811d2842c3" }, "telescope-ui-select.nvim": { "branch": "master", "commit": "6e51d7da30bd139a6950adf2a47fda6df9fa06d2" }, - "telescope.nvim": { "branch": "master", "commit": "3d757e586ff0bfc85bdb7b46c9d3d932147a0cde" }, + "telescope.nvim": { "branch": "master", "commit": "ad7d9580338354ccc136e5b8f0aa4f880434dcdc" }, "trouble.nvim": { "branch": "main", "commit": "bd67efe408d4816e25e8491cc5ad4088e708a69a" }, - "undotree": { "branch": "master", "commit": "0f1c9816975b5d7f87d5003a19c53c6fd2ff6f7f" }, + "undotree": { "branch": "master", "commit": "178d19e00a643f825ea11d581b1684745d0c4eda" }, "vim": { "branch": "master", "commit": "d4b0823100c702af127cba8dd5595a8f599041ec" }, "vim-argwrap": { "branch": "master", "commit": "03615d1eed248408567bc8fa6a5a8c94ef3cd170" }, "vim-bufkill": { "branch": "master", "commit": "3113181d0c1bfb8719f3ddcd2e2f35a8d763d1e5" }, diff --git a/scripts/aliases.sh b/scripts/aliases.sh index 41c21c1..699bcdc 100755 --- a/scripts/aliases.sh +++ b/scripts/aliases.sh @@ -21,12 +21,12 @@ alias back='cd -' alias c='clear' alias cll='clear && ll' alias cls='clear && ls' -alias ctree='clear && tree' + +# alias tree='fd --type f | tree --fromfile' # lsd alias ll='lsd --almost-all --group-directories-first' alias ls='lsd --almost-all --long --icon always --git --date relative --group-directories-first -a' -alias tree='lsd --almost-all --tree' # program customization alias bat='bat --color=always --paging=always' diff --git a/scripts/funcs.sh b/scripts/funcs.sh index 615c85d..646a071 100644 --- a/scripts/funcs.sh +++ b/scripts/funcs.sh @@ -140,7 +140,6 @@ delete_env() { # utilities for viewing files - json() { cat $1 | jq | less } From 2f50b53623592f757056d1b71537793ff6c384a7 Mon Sep 17 00:00:00 2001 From: Adam Green Date: Mon, 26 Jan 2026 00:51:38 +1300 Subject: [PATCH 12/21] fix --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 4e23b4d..7500a10 100644 --- a/Makefile +++ b/Makefile @@ -27,7 +27,7 @@ setup-stow: STOW_ARGS=-vv dotfiles: setup-stow - stow "$(STOW_ARGS)" -d dotfiles -t "$(HOME)"$(OS) + stow "$(STOW_ARGS)" -d dotfiles -t "$(HOME)" "$(OS)" stow "$(STOW_ARGS)" dotfiles stow "$(STOW_ARGS)" yabai ln -sf ~/dotfiles/fish ~/.config/fish\ From 3594cebc895272bd949a625712e4b6a307680e24 Mon Sep 17 00:00:00 2001 From: Adam Green Date: Mon, 26 Jan 2026 00:54:18 +1300 Subject: [PATCH 13/21] fix --- .github/workflows/test.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 18f72f6..ab35557 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -9,6 +9,7 @@ jobs: XDG_CONFIG_HOME: ${{ github.workspace }} steps: - uses: actions/checkout@v3 + - run: rm ~/.bashrc ~/.bash_profile - run: make setup-ubuntu macos: runs-on: macos-latest From bed9235153b606ef84db0271bc6c0c0a0374cac3 Mon Sep 17 00:00:00 2001 From: Adam Green Date: Mon, 26 Jan 2026 00:55:25 +1300 Subject: [PATCH 14/21] fix --- scripts/setup-extras.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/setup-extras.sh b/scripts/setup-extras.sh index 14ddc4b..fe3880c 100644 --- a/scripts/setup-extras.sh +++ b/scripts/setup-extras.sh @@ -1 +1 @@ -go get -u github.com/endocode/shelldoc/cmd/shelldoc +# go get -u github.com/endocode/shelldoc/cmd/shelldoc From 5045be52a7d7ae4ee815bbcd6304bdf58a2f75bc Mon Sep 17 00:00:00 2001 From: Adam Green Date: Mon, 26 Jan 2026 00:57:27 +1300 Subject: [PATCH 15/21] fix --- Makefile | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Makefile b/Makefile index 7500a10..5d332e2 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,7 @@ default: @echo "hello ^^" -.PHONY: setup-macos setup-ubuntu setup-wsl setup-common setup-stow +.PHONY: setup-common setup-macos setup-ubuntu setup-wsl setup-common: bash ./tmux/setup.sh @@ -14,18 +14,18 @@ setup-macos: brew-pkgs dotfiles setup-common setup-python bash ./macos/setup.sh setup-ubuntu: export OS=ubuntu -setup-ubuntu: dotfiles setup-common +setup-ubuntu: brew-pkgs dotfiles setup-common bash ./ubuntu/setup.sh setup-wsl: export OS=wsl setup-wsl: dotfiles setup-common +.PHONY: setup-stow dotfiles + +STOW_ARGS=-vv setup-stow: bash ./stow/setup.sh -.PHONY: dotfiles test - -STOW_ARGS=-vv dotfiles: setup-stow stow "$(STOW_ARGS)" -d dotfiles -t "$(HOME)" "$(OS)" stow "$(STOW_ARGS)" dotfiles From 9a787cdebf214a5abf4928662c59312bb040f60c Mon Sep 17 00:00:00 2001 From: Adam Green Date: Mon, 26 Jan 2026 01:01:32 +1300 Subject: [PATCH 16/21] fix --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index ab35557..49fd7db 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -10,7 +10,7 @@ jobs: steps: - uses: actions/checkout@v3 - run: rm ~/.bashrc ~/.bash_profile - - run: make setup-ubuntu + - run: make setup-ubuntu -o brew-pkgs macos: runs-on: macos-latest env: From d1bcfea650a07245e63d161835ca72f32f8717af Mon Sep 17 00:00:00 2001 From: Adam Green Date: Tue, 27 Jan 2026 00:53:32 +1300 Subject: [PATCH 17/21] feat --- dotfiles/macos/.zshrc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dotfiles/macos/.zshrc b/dotfiles/macos/.zshrc index 28f6208..7647f71 100644 --- a/dotfiles/macos/.zshrc +++ b/dotfiles/macos/.zshrc @@ -4,7 +4,7 @@ export DYLD_FALLBACK_LIBRARY_PATH=/opt/homebrew/lib [ -f ~/.fzf.zsh ] && source ~/.fzf.zsh . "$HOME/.local/bin/env" -eval "$(keychain --eval --quiet --agents ssh ~/.ssh/github-air ~/.ssh/macbook-pro)" +eval "$(keychain --eval --quiet ~/.ssh/github-air ~/.ssh/macbook-pro)" eval "$(/opt/homebrew/bin/brew shellenv)" # Skip quote display for faster startup (can be called manually with 'quote' command) From 259ce19bfe1071219bb68c7fa9035a63c561bae3 Mon Sep 17 00:00:00 2001 From: Adam Green Date: Sun, 1 Feb 2026 02:25:45 +1300 Subject: [PATCH 18/21] feat --- dotfiles/common/setup-path.sh | 1 + fish/config.fish | 3 +++ 2 files changed, 4 insertions(+) diff --git a/dotfiles/common/setup-path.sh b/dotfiles/common/setup-path.sh index e1bc15c..21b5fe4 100644 --- a/dotfiles/common/setup-path.sh +++ b/dotfiles/common/setup-path.sh @@ -5,4 +5,5 @@ export PATH="$HOME/dotfiles/scripts:$PATH" export PATH="$HOME/personal/area/scripts:$PATH" export PATH="$HOME/go/bin:$PATH" export PATH="$HOME/.local/bin:$PATH" +export PATH="$HOME/.npm-packages/bin:$PATH" export GOPATH="$HOME/go" diff --git a/fish/config.fish b/fish/config.fish index 9c2a829..05118fc 100644 --- a/fish/config.fish +++ b/fish/config.fish @@ -17,6 +17,9 @@ alias 's'='search' # Add homebrew to PATH set -gx PATH /opt/homebrew/bin $PATH +# Add npm global packages to PATH +set -gx PATH ~/.npm-packages/bin $PATH + # Disable fish greeting message set -g fish_greeting From 321df52ef81320a1f6c0a3f2dd5730c25e2ff528 Mon Sep 17 00:00:00 2001 From: Adam Green Date: Sun, 1 Feb 2026 02:27:34 +1300 Subject: [PATCH 19/21] docs --- README.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index ac36005..68d0bea 100644 --- a/README.md +++ b/README.md @@ -2,12 +2,12 @@ Setup and configuration for my terminal based developer workflow (MacOS/Ubuntu): -- Zsh for a shell -- Homebrew for shell tools -- mise for programming language runtimes (except Python) -- uv for Python runtime and virtual environments -- Neovim for text editing -- Stow for dotfiles management +- **Zsh** for a shell +- **Homebrew** for shell tools +- **mise** for programming language runtimes (except Python) +- **uv** for Python runtime and virtual environments +- **Neovim** for text editing +- **Stow** for dotfiles symlinking This repo should be cloned into `$HOME` and set as `$XDG_CONFIG_HOME`. Many tools rely on setting this for the config stored in this repo to work. For other config that requires files in `$HOME` (such as `$HOME/.bashrc`) Stow is used to symlimk files. From aed2d40df77d2573b57c4f28da9d4cbca22fe63b Mon Sep 17 00:00:00 2001 From: Adam Green Date: Tue, 3 Feb 2026 00:26:03 +1300 Subject: [PATCH 20/21] fix --- .github/workflows/test.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 49fd7db..6f880ed 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -10,7 +10,7 @@ jobs: steps: - uses: actions/checkout@v3 - run: rm ~/.bashrc ~/.bash_profile - - run: make setup-ubuntu -o brew-pkgs + - run: make setup-ubuntu macos: runs-on: macos-latest env: @@ -18,3 +18,5 @@ jobs: NIXPKGS_ALLOW_BROKEN: 1 steps: - uses: actions/checkout@v3 + - run: rm ~/.bashrc ~/.bash_profile + - run: make setup-macos From fc72ee1a7ce6b281af022919d8ce21eec09163dc Mon Sep 17 00:00:00 2001 From: Adam Green Date: Tue, 3 Feb 2026 00:27:37 +1300 Subject: [PATCH 21/21] fix --- .github/workflows/test.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 6f880ed..88b4727 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -10,7 +10,8 @@ jobs: steps: - uses: actions/checkout@v3 - run: rm ~/.bashrc ~/.bash_profile - - run: make setup-ubuntu + # not brew packages as it's annoying to do the $PATH changes after install.... + - run: make setup-ubuntu -o brew-pkgs macos: runs-on: macos-latest env: @@ -19,4 +20,5 @@ jobs: steps: - uses: actions/checkout@v3 - run: rm ~/.bashrc ~/.bash_profile - - run: make setup-macos + # not brew packages as it's annoying to do the $PATH changes after install.... + - run: make setup-macos -o brew-pkgs