@quickcall/all-configs 0.0.0-stage → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +15 -2
- package/bin/all-configs.js +44 -0
- package/package.json +20 -4
- package/runtime/allconfigs/__init__.py +1 -0
- package/runtime/allconfigs/__main__.py +42 -0
- package/runtime/allconfigs/__pycache__/__init__.cpython-312.pyc +0 -0
- package/runtime/allconfigs/__pycache__/__main__.cpython-312.pyc +0 -0
- package/runtime/allconfigs/__pycache__/modules.cpython-312.pyc +0 -0
- package/runtime/allconfigs/__pycache__/probe.cpython-312.pyc +0 -0
- package/runtime/allconfigs/__pycache__/runner.cpython-312.pyc +0 -0
- package/runtime/allconfigs/modules.py +221 -0
- package/runtime/allconfigs/probe.py +60 -0
- package/runtime/install.sh +74 -0
- package/runtime/lib/common.sh +147 -0
- package/runtime/lib/uninstall.sh +35 -0
- package/runtime/modules/aldente/install.sh +23 -0
- package/runtime/modules/aldente/module.toml +11 -0
- package/runtime/modules/aliases/aliases.sh +31 -0
- package/runtime/modules/aliases/install.sh +36 -0
- package/runtime/modules/aliases/module.toml +7 -0
- package/runtime/modules/aqua-voice/install.sh +23 -0
- package/runtime/modules/aqua-voice/module.toml +11 -0
- package/runtime/modules/betterdisplay/install.sh +23 -0
- package/runtime/modules/betterdisplay/module.toml +11 -0
- package/runtime/modules/bitwarden/install.sh +19 -0
- package/runtime/modules/bitwarden/module.toml +11 -0
- package/runtime/modules/browsers/install.sh +33 -0
- package/runtime/modules/browsers/module.toml +11 -0
- package/runtime/modules/bun/install.sh +72 -0
- package/runtime/modules/bun/module.toml +7 -0
- package/runtime/modules/caveman/install.sh +79 -0
- package/runtime/modules/caveman/module.toml +7 -0
- package/runtime/modules/claude/install.sh +22 -0
- package/runtime/modules/claude/module.toml +7 -0
- package/runtime/modules/codex/install.sh +20 -0
- package/runtime/modules/codex/module.toml +7 -0
- package/runtime/modules/docker/install.sh +19 -0
- package/runtime/modules/docker/module.toml +11 -0
- package/runtime/modules/external-skills/install.sh +30 -0
- package/runtime/modules/external-skills/module.toml +4 -0
- package/runtime/modules/ffmpeg/install.sh +13 -0
- package/runtime/modules/ffmpeg/module.toml +11 -0
- package/runtime/modules/fonts/install.sh +62 -0
- package/runtime/modules/fonts/module.toml +8 -0
- package/runtime/modules/ghostty/config +44 -0
- package/runtime/modules/ghostty/install.sh +64 -0
- package/runtime/modules/ghostty/module.toml +9 -0
- package/runtime/modules/ghostty/themes/ayu-dark +22 -0
- package/runtime/modules/ghostty/themes/catppuccin-frappe +23 -0
- package/runtime/modules/ghostty/themes/catppuccin-latte +23 -0
- package/runtime/modules/ghostty/themes/catppuccin-latte.conf +23 -0
- package/runtime/modules/ghostty/themes/catppuccin-macchiato +23 -0
- package/runtime/modules/ghostty/themes/catppuccin-mocha +23 -0
- package/runtime/modules/ghostty/themes/visual-studio-light +27 -0
- package/runtime/modules/ghostty/themes/vscode-light +24 -0
- package/runtime/modules/ghostty/themes/vscode-light-soft +24 -0
- package/runtime/modules/ghostty/xterm-ghostty.terminfo +81 -0
- package/runtime/modules/github/install.sh +101 -0
- package/runtime/modules/github/module.toml +8 -0
- package/runtime/modules/hf/install.sh +98 -0
- package/runtime/modules/hf/module.toml +7 -0
- package/runtime/modules/karabiner/README.md +146 -0
- package/runtime/modules/karabiner/agents.md +39 -0
- package/runtime/modules/karabiner/app_launchers.json +236 -0
- package/runtime/modules/karabiner/custom_delete_mapping.json +13 -0
- package/runtime/modules/karabiner/fn_to_control.json +9 -0
- package/runtime/modules/karabiner/install.sh +60 -0
- package/runtime/modules/karabiner/karabiner.json +866 -0
- package/runtime/modules/karabiner/keychron-modifier-swap.sh +80 -0
- package/runtime/modules/karabiner/module.toml +8 -0
- package/runtime/modules/karabiner/remap_caps_lock_shift_super.json +23 -0
- package/runtime/modules/karabiner/remap_escape_to_control.json +49 -0
- package/runtime/modules/karabiner/rename_caps_lock_to_super.json +23 -0
- package/runtime/modules/karabiner/right_shift_mouse_click.json +44 -0
- package/runtime/modules/karabiner/swap_esc_delete.json +10 -0
- package/runtime/modules/karabiner/troubleshooting.md +242 -0
- package/runtime/modules/karabiner/vim_arrow_keys.json +477 -0
- package/runtime/modules/keepingyouawake/install.sh +23 -0
- package/runtime/modules/keepingyouawake/module.toml +11 -0
- package/runtime/modules/keycastr/install.sh +23 -0
- package/runtime/modules/keycastr/module.toml +11 -0
- package/runtime/modules/multi-github/install.sh +179 -0
- package/runtime/modules/multi-github/module.toml +4 -0
- package/runtime/modules/ncdu/install.sh +13 -0
- package/runtime/modules/ncdu/module.toml +11 -0
- package/runtime/modules/node/install.sh +73 -0
- package/runtime/modules/node/module.toml +11 -0
- package/runtime/modules/nvim/.neoconf.json +15 -0
- package/runtime/modules/nvim/init.lua +2 -0
- package/runtime/modules/nvim/install.sh +142 -0
- package/runtime/modules/nvim/lazy-lock.json +35 -0
- package/runtime/modules/nvim/lazyvim.json +10 -0
- package/runtime/modules/nvim/lua/config/autocmds.lua +18 -0
- package/runtime/modules/nvim/lua/config/keymaps.lua +10 -0
- package/runtime/modules/nvim/lua/config/lazy.lua +53 -0
- package/runtime/modules/nvim/lua/config/options.lua +3 -0
- package/runtime/modules/nvim/lua/plugins/image.lua +9 -0
- package/runtime/modules/nvim/lua/plugins/markdown.lua +56 -0
- package/runtime/modules/nvim/lua/plugins/noice.lua +17 -0
- package/runtime/modules/nvim/lua/plugins/rose-pine.lua +16 -0
- package/runtime/modules/nvim/lua/plugins/snacks.lua +20 -0
- package/runtime/modules/nvim/module.toml +8 -0
- package/runtime/modules/nvim/stylua.toml +3 -0
- package/runtime/modules/p10k/install.sh +46 -0
- package/runtime/modules/p10k/module.toml +8 -0
- package/runtime/modules/p10k/p10k.zsh +1711 -0
- package/runtime/modules/pi/install.sh +77 -0
- package/runtime/modules/pi/module.toml +8 -0
- package/runtime/modules/pi/packages +5 -0
- package/runtime/modules/pi/settings.json +21 -0
- package/runtime/modules/presentify/install.sh +25 -0
- package/runtime/modules/presentify/module.toml +7 -0
- package/runtime/modules/rectangle/RectangleConfig.json +353 -0
- package/runtime/modules/rectangle/install.sh +64 -0
- package/runtime/modules/rectangle/module.toml +11 -0
- package/runtime/modules/shortcat/install.sh +19 -0
- package/runtime/modules/shortcat/module.toml +11 -0
- package/runtime/modules/skills/install.sh +25 -0
- package/runtime/modules/skills/module.toml +4 -0
- package/runtime/modules/skills/skills-lock.json +35 -0
- package/runtime/modules/slack/install.sh +23 -0
- package/runtime/modules/slack/module.toml +11 -0
- package/runtime/modules/spotify/install.sh +23 -0
- package/runtime/modules/spotify/module.toml +11 -0
- package/runtime/modules/ssh-keygen/install.sh +130 -0
- package/runtime/modules/ssh-keygen/module.toml +4 -0
- package/runtime/modules/statusline/install.sh +69 -0
- package/runtime/modules/statusline/module.toml +7 -0
- package/runtime/modules/statusline/statusline.sh +168 -0
- package/runtime/modules/statusline/turn-counter.sh +11 -0
- package/runtime/modules/superfile/cheatsheet.md +127 -0
- package/runtime/modules/superfile/config.toml +181 -0
- package/runtime/modules/superfile/hotkeys.toml +96 -0
- package/runtime/modules/superfile/install.sh +73 -0
- package/runtime/modules/superfile/module.toml +7 -0
- package/runtime/modules/tailscale/install.sh +29 -0
- package/runtime/modules/tailscale/module.toml +11 -0
- package/runtime/modules/tinycast/install.sh +68 -0
- package/runtime/modules/tinycast/module.toml +7 -0
- package/runtime/modules/tinycast/settings.json +226 -0
- package/runtime/modules/tmux/.tmux.conf.local +168 -0
- package/runtime/modules/tmux/README.md +50 -0
- package/runtime/modules/tmux/install.sh +57 -0
- package/runtime/modules/tmux/installer.mjs +191 -0
- package/runtime/modules/tmux/module.toml +8 -0
- package/runtime/modules/tmux/shell-helpers.sh +20 -0
- package/runtime/modules/tmux/uninstall.sh +134 -0
- package/runtime/modules/uv/install.sh +72 -0
- package/runtime/modules/uv/module.toml +7 -0
- package/runtime/modules/vlc/install.sh +23 -0
- package/runtime/modules/vlc/module.toml +11 -0
- package/runtime/modules/vscode/install.sh +33 -0
- package/runtime/modules/vscode/keybindings.json +74 -0
- package/runtime/modules/vscode/module.toml +8 -0
- package/runtime/modules/vscode/settings.json +426 -0
- package/runtime/modules/vscode/tasks.json +1 -0
- package/runtime/modules/yt-dlp/install.sh +13 -0
- package/runtime/modules/yt-dlp/module.toml +11 -0
- package/runtime/modules/zed/install.sh +43 -0
- package/runtime/modules/zed/module.toml +8 -0
- package/runtime/modules/zed/settings.json +208 -0
- package/runtime/modules/zoxide/install.sh +41 -0
- package/runtime/modules/zoxide/module.toml +11 -0
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# Remove packages through the platform package manager.
|
|
3
|
+
#
|
|
4
|
+
# lib/uninstall.sh <package>...
|
|
5
|
+
#
|
|
6
|
+
# Package names come from the [uninstall] table of a module.toml
|
|
7
|
+
# (`brew` on macOS, `packages` on Linux); the TUI resolves them.
|
|
8
|
+
# Config-only modules have no [uninstall] table and are never passed here,
|
|
9
|
+
# so this script cannot delete a tool that a config module merely configures.
|
|
10
|
+
set -e
|
|
11
|
+
|
|
12
|
+
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
13
|
+
source "$ROOT_DIR/lib/common.sh" || { echo "Error: lib/common.sh not found" >&2; exit 1; }
|
|
14
|
+
|
|
15
|
+
if [[ $# -eq 0 ]]; then
|
|
16
|
+
fail "Usage: ${0##*/} <package>..."
|
|
17
|
+
exit 1
|
|
18
|
+
fi
|
|
19
|
+
|
|
20
|
+
status=0
|
|
21
|
+
for pkg in "$@"; do
|
|
22
|
+
if [[ ! "$pkg" =~ ^[A-Za-z0-9@._+-]+$ ]]; then
|
|
23
|
+
fail "invalid package name: $pkg"
|
|
24
|
+
status=1
|
|
25
|
+
continue
|
|
26
|
+
fi
|
|
27
|
+
step "Uninstalling $pkg"
|
|
28
|
+
if pkg_uninstall "$pkg"; then
|
|
29
|
+
ok "$pkg uninstalled"
|
|
30
|
+
else
|
|
31
|
+
fail "$pkg not uninstalled"
|
|
32
|
+
status=1
|
|
33
|
+
fi
|
|
34
|
+
done
|
|
35
|
+
exit "$status"
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
set -e
|
|
3
|
+
|
|
4
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
5
|
+
ROOT_DIR="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
|
6
|
+
source "$ROOT_DIR/lib/common.sh"
|
|
7
|
+
|
|
8
|
+
step "Installing AlDente"
|
|
9
|
+
|
|
10
|
+
if [[ "$PLATFORM" != "mac" ]]; then
|
|
11
|
+
warn "AlDente module currently supports macOS only"
|
|
12
|
+
exit 0
|
|
13
|
+
fi
|
|
14
|
+
|
|
15
|
+
if command -v brew &>/dev/null; then
|
|
16
|
+
brew_install_cask aldente
|
|
17
|
+
else
|
|
18
|
+
warn "Homebrew not found; skipping AlDente app install"
|
|
19
|
+
fi
|
|
20
|
+
|
|
21
|
+
echo ""
|
|
22
|
+
echo -e " ${GRN}Done!${R}"
|
|
23
|
+
echo ""
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# sagarsrc — personal shell aliases & functions
|
|
2
|
+
|
|
3
|
+
# ll: detailed listing — eza (dirs first, colors, sizes, git status)
|
|
4
|
+
if command -v eza >/dev/null 2>&1; then
|
|
5
|
+
alias ll='eza -l --group-directories-first --git --icons=auto'
|
|
6
|
+
alias la='eza -la --group-directories-first --git --icons=auto'
|
|
7
|
+
else
|
|
8
|
+
alias ll='ls -lhG'
|
|
9
|
+
fi
|
|
10
|
+
|
|
11
|
+
# reload: re-source the running shell's rc file
|
|
12
|
+
if [[ -n "$ZSH_VERSION" ]]; then
|
|
13
|
+
alias reload='source ~/.zshrc'
|
|
14
|
+
elif [[ -n "$BASH_VERSION" ]]; then
|
|
15
|
+
alias reload='source ~/.bashrc'
|
|
16
|
+
fi
|
|
17
|
+
|
|
18
|
+
# vi/vim -> neovim
|
|
19
|
+
if command -v nvim >/dev/null 2>&1; then
|
|
20
|
+
alias vi='nvim'
|
|
21
|
+
alias vim='nvim'
|
|
22
|
+
fi
|
|
23
|
+
|
|
24
|
+
# ckdir: create a directory (with parents) and cd into it
|
|
25
|
+
ckdir() {
|
|
26
|
+
if [[ $# -eq 0 ]]; then
|
|
27
|
+
echo "usage: ckdir <directory>" >&2
|
|
28
|
+
return 1
|
|
29
|
+
fi
|
|
30
|
+
mkdir -p "$1" && cd "$1"
|
|
31
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
set -e
|
|
3
|
+
|
|
4
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
5
|
+
ROOT_DIR="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
|
6
|
+
source "$ROOT_DIR/lib/common.sh"
|
|
7
|
+
|
|
8
|
+
step "Installing shell aliases"
|
|
9
|
+
|
|
10
|
+
SRC="$SCRIPT_DIR/aliases.sh"
|
|
11
|
+
DEST="$HOME/.aliases"
|
|
12
|
+
|
|
13
|
+
# Symlink ~/.aliases -> repo file
|
|
14
|
+
if [[ -L "$DEST" && "$(readlink "$DEST")" == "$SRC" ]]; then
|
|
15
|
+
ok "~/.aliases already linked"
|
|
16
|
+
else
|
|
17
|
+
if [[ -e "$DEST" && ! -L "$DEST" ]]; then
|
|
18
|
+
warn "Existing ~/.aliases found — backing up to ~/.aliases.bak"
|
|
19
|
+
mv "$DEST" "$DEST.bak"
|
|
20
|
+
fi
|
|
21
|
+
ln -sfn "$SRC" "$DEST"
|
|
22
|
+
ok "~/.aliases → $SRC"
|
|
23
|
+
fi
|
|
24
|
+
|
|
25
|
+
# Make sure the shell sources it
|
|
26
|
+
for rc in "$HOME/.zshrc" "$HOME/.bashrc"; do
|
|
27
|
+
[[ -f "$rc" ]] || continue
|
|
28
|
+
if ! grep -Fq '.aliases' "$rc" 2>/dev/null; then
|
|
29
|
+
printf '\n# shell aliases & functions\n[[ -f ~/.aliases ]] && source ~/.aliases\n' >> "$rc"
|
|
30
|
+
ok "sourcing added to $(basename "$rc")"
|
|
31
|
+
else
|
|
32
|
+
ok "~/.aliases already sourced in $(basename "$rc")"
|
|
33
|
+
fi
|
|
34
|
+
done
|
|
35
|
+
|
|
36
|
+
ok "aliases installed — restart your shell or run: source ~/.aliases"
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
set -e
|
|
3
|
+
|
|
4
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
5
|
+
ROOT_DIR="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
|
6
|
+
source "$ROOT_DIR/lib/common.sh"
|
|
7
|
+
|
|
8
|
+
step "Installing Aqua Voice"
|
|
9
|
+
|
|
10
|
+
if [[ "$PLATFORM" != "mac" ]]; then
|
|
11
|
+
warn "Aqua Voice module currently supports macOS only"
|
|
12
|
+
exit 0
|
|
13
|
+
fi
|
|
14
|
+
|
|
15
|
+
if command -v brew &>/dev/null; then
|
|
16
|
+
brew_install_cask aqua-voice
|
|
17
|
+
else
|
|
18
|
+
warn "Homebrew not found; skipping Aqua Voice app install"
|
|
19
|
+
fi
|
|
20
|
+
|
|
21
|
+
echo ""
|
|
22
|
+
echo -e " ${GRN}Done!${R}"
|
|
23
|
+
echo ""
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
set -e
|
|
3
|
+
|
|
4
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
5
|
+
ROOT_DIR="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
|
6
|
+
source "$ROOT_DIR/lib/common.sh"
|
|
7
|
+
|
|
8
|
+
step "Installing BetterDisplay"
|
|
9
|
+
|
|
10
|
+
if [[ "$PLATFORM" != "mac" ]]; then
|
|
11
|
+
warn "BetterDisplay module currently supports macOS only"
|
|
12
|
+
exit 0
|
|
13
|
+
fi
|
|
14
|
+
|
|
15
|
+
if command -v brew &>/dev/null; then
|
|
16
|
+
brew_install_cask betterdisplay
|
|
17
|
+
else
|
|
18
|
+
warn "Homebrew not found; skipping BetterDisplay app install"
|
|
19
|
+
fi
|
|
20
|
+
|
|
21
|
+
echo ""
|
|
22
|
+
echo -e " ${GRN}Done!${R}"
|
|
23
|
+
echo ""
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
set -e
|
|
3
|
+
|
|
4
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
5
|
+
ROOT_DIR="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
|
6
|
+
source "$ROOT_DIR/lib/common.sh"
|
|
7
|
+
|
|
8
|
+
step "Installing Bitwarden"
|
|
9
|
+
|
|
10
|
+
if [[ "$PLATFORM" != "mac" ]]; then
|
|
11
|
+
warn "Bitwarden module currently supports macOS only"
|
|
12
|
+
exit 0
|
|
13
|
+
fi
|
|
14
|
+
|
|
15
|
+
brew_install_cask bitwarden
|
|
16
|
+
|
|
17
|
+
echo ""
|
|
18
|
+
echo -e " ${GRN}Done!${R}"
|
|
19
|
+
echo ""
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
set -e
|
|
3
|
+
|
|
4
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
5
|
+
ROOT_DIR="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
|
6
|
+
source "$ROOT_DIR/lib/common.sh"
|
|
7
|
+
|
|
8
|
+
step "Installing browsers"
|
|
9
|
+
|
|
10
|
+
if [[ "$PLATFORM" != "mac" ]]; then
|
|
11
|
+
warn "Browsers module currently supports macOS only"
|
|
12
|
+
exit 0
|
|
13
|
+
fi
|
|
14
|
+
|
|
15
|
+
if ! command -v brew &>/dev/null; then
|
|
16
|
+
step "Homebrew not found — installing"
|
|
17
|
+
NONINTERACTIVE=1 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
|
|
18
|
+
ok "Homebrew installed"
|
|
19
|
+
else
|
|
20
|
+
ok "Homebrew ${D}$(command -v brew)${R}"
|
|
21
|
+
fi
|
|
22
|
+
|
|
23
|
+
step "Installing Brave"
|
|
24
|
+
brew_install_cask brave-browser
|
|
25
|
+
ok "Brave installed"
|
|
26
|
+
|
|
27
|
+
step "Installing Google Chrome"
|
|
28
|
+
brew_install_cask google-chrome
|
|
29
|
+
ok "Google Chrome installed"
|
|
30
|
+
|
|
31
|
+
echo ""
|
|
32
|
+
echo -e " ${GRN}Done!${R}"
|
|
33
|
+
echo ""
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
name = "browsers"
|
|
2
|
+
description = "Brave and Google Chrome via Homebrew"
|
|
3
|
+
platforms = ["mac"]
|
|
4
|
+
kind = "app"
|
|
5
|
+
|
|
6
|
+
[detect]
|
|
7
|
+
brew = ["brave-browser", "google-chrome"]
|
|
8
|
+
apps = ["Brave Browser", "Google Chrome"]
|
|
9
|
+
|
|
10
|
+
[uninstall]
|
|
11
|
+
brew = ["brave-browser", "google-chrome"]
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
set -euo pipefail
|
|
3
|
+
|
|
4
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
5
|
+
ROOT_DIR="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
|
6
|
+
source "$ROOT_DIR/lib/common.sh"
|
|
7
|
+
|
|
8
|
+
usage() {
|
|
9
|
+
cat << USAGE
|
|
10
|
+
Usage: ${0##*/} [options]
|
|
11
|
+
|
|
12
|
+
Options:
|
|
13
|
+
-h, --help Show this help
|
|
14
|
+
USAGE
|
|
15
|
+
exit 0
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
while [[ $# -gt 0 ]]; do
|
|
19
|
+
case "$1" in
|
|
20
|
+
-h|--help) usage ;;
|
|
21
|
+
*) fail "Unknown option: $1"; exit 1 ;;
|
|
22
|
+
esac
|
|
23
|
+
done
|
|
24
|
+
|
|
25
|
+
step "Installing Bun"
|
|
26
|
+
|
|
27
|
+
if command -v bun &>/dev/null; then
|
|
28
|
+
ok "bun ${D}$(bun --version)${R}"
|
|
29
|
+
else
|
|
30
|
+
warn "bun not found — installing via official installer"
|
|
31
|
+
curl -fsSL https://bun.sh/install | bash
|
|
32
|
+
export PATH="$HOME/.bun/bin:$HOME/.local/bin:$PATH"
|
|
33
|
+
fi
|
|
34
|
+
|
|
35
|
+
for rc in "$HOME/.profile" "$HOME/.zshrc" "$HOME/.bashrc"; do
|
|
36
|
+
[[ -f "$rc" ]] || touch "$rc"
|
|
37
|
+
python3 - "$rc" <<'PY'
|
|
38
|
+
from pathlib import Path
|
|
39
|
+
import sys
|
|
40
|
+
path = Path(sys.argv[1])
|
|
41
|
+
lines = path.read_text().splitlines() if path.exists() else []
|
|
42
|
+
out = []
|
|
43
|
+
i = 0
|
|
44
|
+
while i < len(lines):
|
|
45
|
+
line = lines[i]
|
|
46
|
+
if line.strip() == '# bun':
|
|
47
|
+
i += 1
|
|
48
|
+
while i < len(lines) and (
|
|
49
|
+
lines[i].startswith('export BUN_INSTALL=') or
|
|
50
|
+
lines[i].startswith('export PATH="$HOME/.bun/bin:$PATH"') or
|
|
51
|
+
lines[i].startswith('export PATH="$BUN_INSTALL/bin:$PATH"') or
|
|
52
|
+
lines[i].startswith('case ":$PATH:" in') or
|
|
53
|
+
lines[i].startswith(' *":$HOME/.bun/bin:"*) ;;') or
|
|
54
|
+
lines[i].startswith(' *) export PATH="$HOME/.bun/bin:$PATH" ;;') or
|
|
55
|
+
lines[i].startswith('esac') or
|
|
56
|
+
lines[i].strip() == ''
|
|
57
|
+
):
|
|
58
|
+
i += 1
|
|
59
|
+
continue
|
|
60
|
+
out.append(line)
|
|
61
|
+
i += 1
|
|
62
|
+
text = '\n'.join(out).rstrip() + '\n\n# bun\ncase ":$PATH:" in\n *":$HOME/.bun/bin:"*) ;;\n *) export PATH="$HOME/.bun/bin:$PATH" ;;\nesac\n'
|
|
63
|
+
path.write_text(text)
|
|
64
|
+
PY
|
|
65
|
+
ok "ensured ~/.bun/bin PATH in $(basename "$rc")"
|
|
66
|
+
done
|
|
67
|
+
|
|
68
|
+
ok "bun ${D}$(bun --version)${R}"
|
|
69
|
+
|
|
70
|
+
echo ""
|
|
71
|
+
echo -e " ${GRN}Done!${R}"
|
|
72
|
+
echo ""
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
set -euo pipefail
|
|
3
|
+
|
|
4
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
5
|
+
ROOT_DIR="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
|
6
|
+
source "$ROOT_DIR/lib/common.sh"
|
|
7
|
+
|
|
8
|
+
step "Installing caveman (Claude Code plugin)"
|
|
9
|
+
|
|
10
|
+
# ─── Requires claude CLI ───
|
|
11
|
+
|
|
12
|
+
if ! command -v claude &>/dev/null; then
|
|
13
|
+
warn "claude CLI not found — installing Claude first"
|
|
14
|
+
bash "$ROOT_DIR/modules/claude/install.sh"
|
|
15
|
+
fi
|
|
16
|
+
|
|
17
|
+
if ! command -v claude &>/dev/null; then
|
|
18
|
+
fail "claude CLI still not found after install"
|
|
19
|
+
exit 1
|
|
20
|
+
fi
|
|
21
|
+
|
|
22
|
+
if yes | claude plugin marketplace add JuliusBrussee/caveman; then
|
|
23
|
+
ok "caveman marketplace added"
|
|
24
|
+
else
|
|
25
|
+
warn "caveman marketplace add failed or already exists"
|
|
26
|
+
fi
|
|
27
|
+
|
|
28
|
+
plugin_log="$(mktemp)"
|
|
29
|
+
if yes | claude plugin install caveman@caveman >"$plugin_log" 2>&1; then
|
|
30
|
+
ok "caveman installed"
|
|
31
|
+
else
|
|
32
|
+
if grep -q "Validation errors: agents: Invalid input" "$plugin_log"; then
|
|
33
|
+
warn "caveman plugin skipped — upstream manifest invalid"
|
|
34
|
+
else
|
|
35
|
+
warn "caveman plugin install failed; open Claude Code and run plugin install manually"
|
|
36
|
+
tail -20 "$plugin_log" || true
|
|
37
|
+
fi
|
|
38
|
+
fi
|
|
39
|
+
rm -f "$plugin_log"
|
|
40
|
+
|
|
41
|
+
step "Installing caveman skill (claude-code, codex, pi)"
|
|
42
|
+
|
|
43
|
+
if ! command -v npx &>/dev/null; then
|
|
44
|
+
warn "npx not found — installing node first"
|
|
45
|
+
bash "$ROOT_DIR/modules/node/install.sh"
|
|
46
|
+
fi
|
|
47
|
+
|
|
48
|
+
npx --yes skills add JuliusBrussee/caveman --skill caveman --agent claude-code --agent codex --agent pi -g -y
|
|
49
|
+
|
|
50
|
+
step "Setting caveman ultra defaults"
|
|
51
|
+
|
|
52
|
+
CAVEMAN_CONFIG_DIR="${XDG_CONFIG_HOME:-$HOME/.config}/caveman"
|
|
53
|
+
CLAUDE_DIR="${CLAUDE_CONFIG_DIR:-$HOME/.claude}"
|
|
54
|
+
PI_AGENT_DIR="${PI_CODING_AGENT_DIR:-$HOME/.pi/agent}"
|
|
55
|
+
|
|
56
|
+
mkdir -p "$CAVEMAN_CONFIG_DIR" "$CLAUDE_DIR" "$PI_AGENT_DIR"
|
|
57
|
+
|
|
58
|
+
cat > "$CAVEMAN_CONFIG_DIR/config.json" <<'JSON'
|
|
59
|
+
{
|
|
60
|
+
"defaultMode": "ultra"
|
|
61
|
+
}
|
|
62
|
+
JSON
|
|
63
|
+
ok "Claude caveman default ${D}→ ultra${R}"
|
|
64
|
+
|
|
65
|
+
printf 'ultra\n' > "$CLAUDE_DIR/.caveman-active"
|
|
66
|
+
ok "Claude caveman active flag ${D}→ ultra${R}"
|
|
67
|
+
|
|
68
|
+
cat > "$PI_AGENT_DIR/caveman.json" <<'JSON'
|
|
69
|
+
{
|
|
70
|
+
"defaultLevel": "ultra",
|
|
71
|
+
"showStatus": true
|
|
72
|
+
}
|
|
73
|
+
JSON
|
|
74
|
+
ok "Pi caveman default ${D}→ ultra${R}"
|
|
75
|
+
|
|
76
|
+
echo ""
|
|
77
|
+
echo -e " ${GRN}Done!${R} Caveman defaults to ${CYN}ultra${R} in Claude and Pi"
|
|
78
|
+
echo -e " ${D}Stop: /caveman off or 'normal mode'${R}"
|
|
79
|
+
echo ""
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
set -e
|
|
3
|
+
|
|
4
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
5
|
+
ROOT_DIR="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
|
6
|
+
source "$ROOT_DIR/lib/common.sh"
|
|
7
|
+
|
|
8
|
+
step "Installing Claude Code"
|
|
9
|
+
|
|
10
|
+
if command -v claude &>/dev/null; then
|
|
11
|
+
ok "claude ${D}$(claude --version 2>/dev/null) → $(command -v claude)${R}"
|
|
12
|
+
warn "already installed — run 'claude update' to upgrade"
|
|
13
|
+
else
|
|
14
|
+
warn "claude not found — installing"
|
|
15
|
+
curl -fsSL https://claude.ai/install.sh | bash
|
|
16
|
+
ok "Claude Code installed"
|
|
17
|
+
fi
|
|
18
|
+
|
|
19
|
+
echo ""
|
|
20
|
+
echo -e " ${GRN}Done!${R} Run ${CYN}claude${R} to start"
|
|
21
|
+
echo -e " ${D}Login: claude auth login${R}"
|
|
22
|
+
echo ""
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
set -e
|
|
3
|
+
|
|
4
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
5
|
+
ROOT_DIR="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
|
6
|
+
source "$ROOT_DIR/lib/common.sh"
|
|
7
|
+
|
|
8
|
+
step "Installing Codex"
|
|
9
|
+
|
|
10
|
+
if command -v curl &>/dev/null; then
|
|
11
|
+
curl -fsSL https://chatgpt.com/codex/install.sh | CODEX_NON_INTERACTIVE=1 sh
|
|
12
|
+
ok "Codex installed"
|
|
13
|
+
else
|
|
14
|
+
fail "curl is required to install Codex"
|
|
15
|
+
exit 1
|
|
16
|
+
fi
|
|
17
|
+
|
|
18
|
+
echo ""
|
|
19
|
+
echo -e " ${GRN}Done!${R}"
|
|
20
|
+
echo ""
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
set -e
|
|
3
|
+
|
|
4
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
5
|
+
ROOT_DIR="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
|
6
|
+
source "$ROOT_DIR/lib/common.sh"
|
|
7
|
+
|
|
8
|
+
step "Installing Docker Desktop"
|
|
9
|
+
|
|
10
|
+
if [[ "$PLATFORM" != "mac" ]]; then
|
|
11
|
+
warn "Docker module currently supports macOS only"
|
|
12
|
+
exit 0
|
|
13
|
+
fi
|
|
14
|
+
|
|
15
|
+
brew_install_cask docker
|
|
16
|
+
|
|
17
|
+
echo ""
|
|
18
|
+
echo -e " ${GRN}Done!${R} Open Docker Desktop once to finish setup"
|
|
19
|
+
echo ""
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
set -euo pipefail
|
|
3
|
+
|
|
4
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
5
|
+
ROOT_DIR="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
|
6
|
+
source "$ROOT_DIR/lib/common.sh"
|
|
7
|
+
|
|
8
|
+
step "Installing external UI skills (hallmark, taste, impeccable)"
|
|
9
|
+
|
|
10
|
+
if ! command -v npx &>/dev/null; then
|
|
11
|
+
warn "npx not found — installing node first"
|
|
12
|
+
bash "$ROOT_DIR/modules/node/install.sh"
|
|
13
|
+
fi
|
|
14
|
+
|
|
15
|
+
AGENTS="--agent claude-code --agent codex --agent pi"
|
|
16
|
+
|
|
17
|
+
# hallmark — anti-AI-slop design skill
|
|
18
|
+
npx --yes skills add nutlope/hallmark $AGENTS -g -y
|
|
19
|
+
|
|
20
|
+
# taste — design taste skill
|
|
21
|
+
npx --yes skills add leonxlnx/taste-skill --skill design-taste-frontend $AGENTS -g -y
|
|
22
|
+
|
|
23
|
+
# impeccable — has its own installer
|
|
24
|
+
npx impeccable install --scope=global --yes
|
|
25
|
+
|
|
26
|
+
ok "External UI skills installed"
|
|
27
|
+
|
|
28
|
+
echo ""
|
|
29
|
+
echo -e " ${GRN}Done!${R}"
|
|
30
|
+
echo ""
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
set -e
|
|
3
|
+
|
|
4
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
5
|
+
ROOT_DIR="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
|
6
|
+
source "$ROOT_DIR/lib/common.sh"
|
|
7
|
+
|
|
8
|
+
step "Installing ffmpeg"
|
|
9
|
+
ensure_cmd ffmpeg
|
|
10
|
+
|
|
11
|
+
echo ""
|
|
12
|
+
echo -e " ${GRN}Done!${R}"
|
|
13
|
+
echo ""
|