https://github.com/ali5ter/carrybag-lite
π Portable bash environment β single-file config, automated bootstrap for macOS and Debian-based Linux
https://github.com/ali5ter/carrybag-lite
ai-tools bash bootstrap cli debian dotfiles linux macos nvm pyenv raspberry-pi shell starship terminal
Last synced: about 8 hours ago
JSON representation
π Portable bash environment β single-file config, automated bootstrap for macOS and Debian-based Linux
- Host: GitHub
- URL: https://github.com/ali5ter/carrybag-lite
- Owner: ali5ter
- License: mit
- Created: 2019-10-19T15:31:48.000Z (over 6 years ago)
- Default Branch: main
- Last Pushed: 2026-04-23T21:56:54.000Z (3 days ago)
- Last Synced: 2026-04-23T23:28:09.932Z (3 days ago)
- Topics: ai-tools, bash, bootstrap, cli, debian, dotfiles, linux, macos, nvm, pyenv, raspberry-pi, shell, starship, terminal
- Language: Shell
- Homepage:
- Size: 278 KB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# CarryBag Lite
```text
___ ___ _ _ _
/ __|__ _ _ _ _ _ _ _| _ ) __ _ __ _ | | (_) |_ ___
| (__/ _` | '_| '_| || | _ \/ _` / _` | | |__| | _/ -_)
\___\__,_|_| |_| \_, |___/\__,_\__, | |____|_|\__\___|
|__/ |___/
```
**CarryBag is my collection of dot files, custom functions and theme settings
used to create a bash shell environment I can carry from machine to machine.**
One file, no fuss, less mess.
Tested on macOS Tahoe and Debian-based Linux (Bookworm/Trixie), including Raspberry Pi OS.
## Features
- β¨ Single-file configuration (`bash_profile`)
- π Automated bootstrap for macOS and Debian-based Linux
- π Python version management (pyenv)
- π¦ Node version management (nvm)
- β Starship prompt with custom themes
- π Directory jumper (zoxide)
- π History search via fzf (Ctrl-R)
- π¨ Syntax highlighting (bat)
- π Automatic daily package updates
- π€ AI tools: Claude Code, Gemini CLI, and Codex CLI β all sharing the same coding standards from a single source
## Quick Install
### Option 1: Automated Bootstrap (Recommended)
```bash
# macOS
git clone https://github.com/ali5ter/carrybag-lite.git ~/Documents/projects/carrybag-lite
# Linux
git clone https://github.com/ali5ter/carrybag-lite.git ~/src/carrybag-lite
# Run installer
cd carrybag-lite
./bootstrap/install.sh
```
This installs all dependencies (including pfb), links configuration, and sets up tools.
### Option 2: Manual Install
For macOS, install latest bash first:
```bash
brew install bash
chsh -s $(brew --prefix)/bin/bash
```
Then link the configuration:
```bash
cp ~/.bash_profile ~/.bash_profile.$(date +"%Y%m%d%H%M%S")
ln -sf $PWD/bash_profile ~/.bash_profile
```
## What Gets Installed
**Common (macOS and Linux):**
- `git`, `vim`, `shellcheck`, `watch`
- `jq`, `yq`, `bat`, `tree`, `fzf`, `figlet`
- `starship` (prompt), `fzf` (history + fuzzy search), `z` (directory jumper)
- Nerd Fonts, Claude Code
**macOS only:**
- `bash` (latest), `bash-completion`, `node`, `go`
- `btop`, `ncdu`, `nmap`, `wakeonlan`
- GUI apps: iTerm2, Visual Studio Code, Figma, 1Password, Dropbox, CleanMyMac
**Linux only:**
- `curl`, `wget`, `gnupg`, `fontconfig`, `nodejs`, `npm`
- `btop`, `ncdu` (system monitoring)
- `gemini-cli`, `codex` (AI tools, installed via npm)
- ufw firewall configuration
- Login banner with hostname and system info
**Raspberry Pi extras:**
- `rpi-connect-lite` (remote management)
- Ethernet-over-WiFi priority configuration
**Optional (prompted during bootstrap):**
- `pyenv` (Python version management)
- `docker`
## AI Tools Configuration
The bootstrap installs Claude Code, Gemini CLI, and Codex CLI, and wires up shared
development standards so all three tools operate from the same principles.
### Shared development standards
`claude/CLAUDE.md` is the single source of truth for coding standards and project conventions.
It is automatically loaded by Claude Code as the user-level instruction file. The same file is
shared with Codex CLI via a symlink so all AI tools enforce the same standards:
| Tool | Config location | Source |
| --- | --- | --- |
| Claude Code | `~/.claude/CLAUDE.md` | symlinked from `claude/CLAUDE.md` |
| Codex CLI | `~/.codex/AGENTS.md` | symlinked from `claude/CLAUDE.md` |
| Gemini CLI | `~/.gemini/GEMINI.md` | symlinked from `claude/CLAUDE.md` |
### Claude Code
The full `claude/` directory is symlinked to `~/.claude/` during bootstrap, providing:
- **`CLAUDE.md`** β seven development principles loaded automatically into every session
- **`settings.json`** β preferences including statusline, always-thinking mode, and enabled plugins
- **`statusline-command.sh`** β custom statusline showing hostname, directory, git branch, model, and token usage
Enabled plugins (pre-configured in `settings.json`):
- [`claude-workflow-skills`](https://github.com/ali5ter/claude-workflow-skills) β `/promote`,
`/audit-plugin`, `/audit-standards` workflow skills
- [`obsidian-project-documentation`](https://github.com/ali5ter/obsidian-project-assistant) β automatic
project documentation in Obsidian
- [`over-50s-health`](https://github.com/ali5ter/over-50s-health-advisor) β health and fitness advisor
Plugins are distributed via the `ali5ter` Claude Code plugin marketplace. After bootstrapping,
install them with:
```text
/plugin marketplace add ali5ter/claude-plugins
/plugin install claude-workflow-skills@ali5ter
/plugin install obsidian-project-documentation@ali5ter
/plugin install over-50s-health@ali5ter
```
### Codex CLI
`codex/install.sh` symlinks `claude/CLAUDE.md` β `~/.codex/AGENTS.md`. Codex reads `AGENTS.md`
as its user-level instruction file, so it operates from the same seven principles as Claude Code
without any duplication.
### Gemini CLI
`gemini/install.sh` symlinks `claude/CLAUDE.md` β `~/.gemini/GEMINI.md`. Gemini CLI reads
`GEMINI.md` as its user-level instruction file (verified with `/memory show` inside a Gemini
session), applying the same seven development principles as Claude Code and Codex.
## Additional Tools
### Machine Migration
Transfer configurations from old machine to new:
```bash
./bootstrap/migrate.sh
```
### Bulk Git Repository Updates
Update all git repositories in a directory in one pass, with optional parallel
mode (`--parallel`). See [tools/README.md](tools/README.md) for full details.
### Local and Remote Sync
Sync a directory to a local drive or a remote host over SSH, with custom port
and key support (`--port`, `--key`). See [tools/README.md](tools/README.md)
for full details.
## Testing in a Raspberry Piβlike Docker Container
Test the bootstrap process inside a simulated Raspberry Pi ARM64 environment:
```bash
./test_rpi.sh
```
This script will:
- mount the repo under `/root/src/carrybag-lite`
- install pfb inside the container via the official curl installer
- simulate Piβstyle network interfaces (`wlan0`, `eth1`)
- run `bootstrap/install.sh`
- keep the container alive for inspection
To inspect the running container:
```bash
docker exec -it carrybag-test bash
```
To stop and remove the test container:
```bash
docker rm -f carrybag-test
```
## Customization
Add personal overrides without modifying `bash_profile`:
```bash
# Create local overrides file
echo "alias myalias='echo hello'" >> ~/.bashrc_local
```
The `bash_profile` automatically sources `~/.bashrc_local` if it exists.
## Documentation
See [tools/README.md](tools/README.md) for the utility script reference.
## License
MIT