Add linux-desktop setup: packages, dotfiles, installer, and CI - #14
Merged
Conversation
Single file covers both Ubuntu (work) and Arch (personal) desktops using distro-keyed package_manager maps and environment arrays instead of binary work flags. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- setup.sh: Ubuntu installer with --work/--personal/--optional/--dry-run flags, environment-aware package filtering, antidote plugin manager - zshrc.example: fish-like zsh config (substring search, abbreviations, zoxide, path underlining, RPROMPT duration, eza icons) - zsh_plugins.txt: antidote plugin list - ghostty.config: shared with macOS - .github/workflows/lint.yml: shellcheck + JSON validation CI - Fix git-xet install URL, VS Code snap name, docker now optional Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- .pre-commit-config.yaml: shellcheck, check-json, end-of-file-fixer, trailing-whitespace — excludes macOS/ (zsh scripts unsupported) - CI lint.yml: exclude macOS/ from shellcheck to match - Fix missing trailing newlines in macOS/zshrc.example and bookmarks.yaml Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Mirrors the shellcheck approach: pre-commit runs zsh -n locally on macOS .sh files, .zsh files, and zshrc.example; CI runs the same check in a new zsh-syntax job. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
npm_install used "$(env_filter) as $ef" which evaluated .environment on the top-level array instead of per-element, causing a jq error silently swallowed by 2>/dev/null. Inline the filter like the other helpers. Also re-source nvm before the npm section since shell state from the earlier nvm install block can be lost. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
ulises-c
marked this pull request as ready for review
May 13, 2026 22:37
- octave: add environment ["work"] - notion: add environment ["personal"] - hf, git-xet: add environment ["personal"] - vlc: remove personal tag (install everywhere) - claude-desktop: switch to aaddrick/claude-desktop-debian apt repo for Ubuntu instead of non-existent official .deb Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- eza aliases: CachyOS-style ls with -al, --color=always, --icons, --group-directories-first on all eza aliases (ls, ll, la, lt) - Colorized man pages via bat (MANPAGER) - zsh-notify plugin via antidote for desktop notifications on long-running commands (30s threshold, focus-aware via xdotool) - Added libnotify-bin and xdotool to packages JSON Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Document the plan to port linux-desktop zsh enhancements (antidote, eza icons, RPROMPT duration, bat man pages, zsh-notify, abbreviations, substring search, zoxide, fzf) to the macOS config. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Full linux-desktop configuration targeting the Ubuntu 24.04 work laptop, with a distro-aware schema that also supports Arch/CachyOS.
package_managermap (ubuntu/arch),environmentarrays (work/personal), priority levels, and per-distro name overrides (ubuntu_name/arch_name)--work/--personal/--optional/--dry-runflags; handles apt, snap, pipx, npm, curl, and custom installers; installs pyenv + Python, nvm + Node, dotfiles, and sets zsh as default shellzsh -nsyntax check, JSON validation, trailing whitespace, and end-of-file fixer in both GitHub Actions and local pre-commit hooksnpm_installjq query evaluatedenv_filterat array level instead of per-element; nvm not re-sourced before npm install sectionNew files
linux-desktop/linux_desktop_packages.jsonlinux-desktop/setup.shlinux-desktop/zshrc.examplelinux-desktop/zsh_plugins.txtlinux-desktop/ghostty.config.github/workflows/lint.yml.pre-commit-config.yamlTest plan
setup.sh --workrun on Ubuntu 24.04 work laptop — all packages installedsetup.sh --dry-runverified no side effectspre-commit run --all-filespasses all hooks🤖 Generated with Claude Code