Skip to content

Add linux-desktop setup: packages, dotfiles, installer, and CI - #14

Merged
ulises-c merged 10 commits into
mainfrom
claude/recursing-thompson-4e5a5f
May 13, 2026
Merged

Add linux-desktop setup: packages, dotfiles, installer, and CI#14
ulises-c merged 10 commits into
mainfrom
claude/recursing-thompson-4e5a5f

Conversation

@ulises-c

@ulises-c ulises-c commented May 13, 2026

Copy link
Copy Markdown
Owner

Summary

Full linux-desktop configuration targeting the Ubuntu 24.04 work laptop, with a distro-aware schema that also supports Arch/CachyOS.

  • Package JSON — 57 packages with package_manager map (ubuntu/arch), environment arrays (work/personal), priority levels, and per-distro name overrides (ubuntu_name/arch_name)
  • Setup script — automated Ubuntu installer with --work/--personal/--optional/--dry-run flags; handles apt, snap, pipx, npm, curl, and custom installers; installs pyenv + Python, nvm + Node, dotfiles, and sets zsh as default shell
  • Zsh config — fish-like zsh via antidote plugin manager: autosuggestions, syntax highlighting, history substring search, abbreviations, completions, eza with icons, zoxide, fzf, command duration in RPROMPT, path underlining
  • CI + pre-commit — shellcheck, zsh -n syntax check, JSON validation, trailing whitespace, and end-of-file fixer in both GitHub Actions and local pre-commit hooks
  • Ghostty config — Dark Pastel theme with zsh shell integration
  • Bug fixesnpm_install jq query evaluated env_filter at array level instead of per-element; nvm not re-sourced before npm install section

New files

  • linux-desktop/linux_desktop_packages.json
  • linux-desktop/setup.sh
  • linux-desktop/zshrc.example
  • linux-desktop/zsh_plugins.txt
  • linux-desktop/ghostty.config
  • .github/workflows/lint.yml
  • .pre-commit-config.yaml

Test plan

  • setup.sh --work run on Ubuntu 24.04 work laptop — all packages installed
  • setup.sh --dry-run verified no side effects
  • zsh prompt, antidote plugins, and Ghostty confirmed working
  • pre-commit run --all-files passes all hooks
  • CI lint jobs (shellcheck, json-validate, zsh-syntax) pass

🤖 Generated with Claude Code

ulises-c and others added 6 commits May 12, 2026 17:14
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 ulises-c changed the title Add linux-desktop packages JSON with distro-aware schema Add linux-desktop setup: packages, dotfiles, installer, and CI May 13, 2026
@ulises-c
ulises-c marked this pull request as ready for review May 13, 2026 22:37
ulises-c and others added 4 commits May 13, 2026 15:44
- 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>
@ulises-c
ulises-c merged commit c1a0599 into main May 13, 2026
3 checks passed
@ulises-c
ulises-c deleted the claude/recursing-thompson-4e5a5f branch May 13, 2026 22:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant