Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
58 changes: 58 additions & 0 deletions .github/workflows/lint.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
name: Lint

on:
push:
branches: [main]
pull_request:

jobs:
shellcheck:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Run ShellCheck
uses: ludeeus/action-shellcheck@2.0.0
with:
scandir: .
severity: warning
ignore_paths: macOS

json-validate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Validate JSON files
run: |
failed=0
for f in $(find . -name '*.json' -not -path './.git/*'); do
if ! jq empty "$f" 2>/dev/null; then
echo "❌ Invalid JSON: $f"
failed=1
else
echo "✓ $f"
fi
done
exit $failed

zsh-syntax:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Install zsh
run: sudo apt-get update && sudo apt-get install -y zsh

- name: Run zsh -n on zsh scripts
run: |
failed=0
for f in $(find . -not -path './.git/*' \( \( -name '*.sh' -path '*/macOS/*' \) -o -name '*.zsh' -o -name 'zshrc.example' \)); do
if zsh -n "$f" 2>&1; then
echo "✓ $f"
else
echo "❌ Syntax error: $f"
failed=1
fi
done
exit $failed
23 changes: 23 additions & 0 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
repos:
- repo: https://github.com/shellcheck-py/shellcheck-py
rev: v0.10.0.1
hooks:
- id: shellcheck
args: [--severity=warning]
exclude: ^macOS/

- repo: local
hooks:
- id: zsh-syntax-check
name: zsh -n (syntax check)
language: system
entry: zsh -n
types: [file]
files: (^macOS/.*\.sh$|\.zsh$|zshrc\.example$)

- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v5.0.0
hooks:
- id: check-json
- id: end-of-file-fixer
- id: trailing-whitespace
45 changes: 45 additions & 0 deletions TODO.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
# TODO

## macOS zshrc modernization

Port the linux-desktop zsh enhancements to the macOS config. See
[macOS/zshrc-upgrade.md](macOS/zshrc-upgrade.md) for the full plan.

- [ ] Switch from manual Homebrew plugin sourcing to antidote
- [ ] Add eza aliases with `--icons --group-directories-first`
- [ ] Add RPROMPT with command duration
- [ ] Add colorized man pages via bat
- [ ] Add zsh-notify for desktop notifications on long commands
- [ ] Add fish-style abbreviations via zsh-abbr
- [ ] Add zsh-history-substring-search with Up/Down keybindings
- [ ] Add grouped completion descriptions
- [ ] Add path underlining in syntax highlighting
- [ ] Add zoxide init
- [ ] Add FZF keybindings and completion (Homebrew paths)
- [ ] Create macOS zsh_plugins.txt

## linux-desktop (personal) — CachyOS / Arch

Test and validate the linux-desktop setup on the personal CachyOS desktop
(Arch-based, yay as AUR helper). The package JSON already has Arch support
(`package_manager.arch`, `arch_name` overrides) but nothing has been tested.

- [ ] Create an Arch-aware setup script (or extend `setup.sh` with distro detection)
- [ ] Verify all `arch_name` overrides resolve to real AUR/pacman packages
- [ ] Test antidote, zsh-notify, eza icons, and zoxide on CachyOS
- [ ] Handle CachyOS defaults that may conflict (e.g., existing fish config)
- [ ] Add personal-only packages: discord, spotify, steam, bolt-launcher, notion
- [ ] Test `--personal` flag end-to-end
- [ ] Create PR for CachyOS support

## linux-server — Raspberry Pi 4

Set up the Raspberry Pi 4 headless server config under `linux-server/`.

- [ ] Audit existing linux-server/ files and update as needed
- [ ] Create or update packages JSON for the Pi (arm64, Debian-based)
- [ ] Create setup script for headless server (no GUI packages, no snap)
- [ ] Zsh config (server variant — no Ghostty, no fastfetch on launch, no desktop notifications)
- [ ] Tailscale, Docker, SSH hardening
- [ ] Homepage dashboard config (already exists under linux-server/homepage/)
- [ ] Test on Raspberry Pi 4
4 changes: 4 additions & 0 deletions linux-desktop/ghostty.config
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# Ghostty Config

theme = Dark Pastel
shell-integration = zsh
Loading
Loading