Skip to content

ImBIOS/environment

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 

ImBIOS Environment

Platform: Linux Shell: Zsh Package Manager: apt Prompt: Starship License: MIT

Portable Zsh dotfiles, shell configuration, and system package tracking for Ubuntu/Debian.

Inspired by thdxr/environment. Uses GNU Stow to manage dotfiles, modular shell scripts for Zsh configuration, and per-machine package lists for reproducible Ubuntu setups across multiple servers and workstations.

Features

  • Modular Zsh setup -- shell config split into small, composable files under custom/
  • System package tracking -- record which apt packages belong to each machine, install them reproducibly
  • Multi-machine support -- shared package groups (base, dev, network, desktop) plus per-machine overrides
  • Zero bloat -- no frameworks, no oh-my-zsh, no heavy plugins. Just Zsh + zplug + Starship
  • Secrets separated -- tokens and machine-specific config live in ~/.zshrc.local (gitignored)
  • One-command bootstrap -- install script handles dependencies and deploys dotfiles

Structure

environment/
├── home/                    # Dotfiles managed with GNU Stow (symlinked to ~)
│   ├── .zshrc               # Clean, modular zshrc
│   ├── .gitconfig           # Git config
│   └── .config/
│       └── starship.toml    # Starship prompt theme
├── custom/                  # Modular shell config sourced by .zshrc (in order)
│   ├── 00-environment       # PATH, env vars (Go, Bun, pnpm, fnm, etc.)
│   ├── 01-history           # History settings
│   ├── 02-aliases           # General aliases
│   ├── 03-git               # Git shortcuts
│   ├── 04-functions         # Shell functions
│   └── 05-completions       # SDKMAN, Conda, Homebrew, etc.
├── packages/                # System package tracking per machine
│   ├── install              # Install all tracked packages for a host
│   ├── analyze              # Find installed packages not in any group
│   ├── clean                # Remove orphaned dependencies
│   └── group/               # Package lists by group and machine codename
│       ├── base             # Core packages (all machines)
│       ├── dev              # Development tools
│       ├── network          # Cloud/networking tools
│       ├── desktop          # GUI packages
│       ├── baltimore/       # Laptop (x86_64)
│       └── enterprise/      # ARM dev server
├── install                  # Bootstrap script (installs deps + deploys dotfiles)
└── .gitignore

Quick Start

git clone git@github.com:ImBIOS/environment.git ~/dev/environment
~/dev/environment/install
# Edit ~/.zshrc.local with your secrets and machine-specific config
source ~/.zshrc

The install script handles everything:

  • Installs system dependencies (stow, zsh, zplug, fzf, starship, fnm, bun, pnpm, uv, rustup, gh, and more)
  • Deploys dotfiles to your home directory via stow
  • Creates a ~/.zshrc.local template for your secrets if it doesn't exist

Package Management

Track and reproduce apt packages across machines.

# Install all tracked packages for current machine
~/dev/environment/packages/install

# Install for a specific machine by codename
~/dev/environment/packages/install enterprise

# Find installed packages not tracked in any group
~/dev/environment/packages/analyze

# Remove orphaned dependencies
~/dev/environment/packages/clean

Adding a New Machine

  1. Create a group directory with its codename:

    mkdir ~/dev/environment/packages/group/<codename>
  2. Run analyze on that machine to find untracked packages

  3. Add the codename to the table below

Machine Codenames

Codename Machine Arch Role
baltimore Local laptop x86_64 Desktop + development
enterprise Oracle ARM server aarch64 Dev server + Docker Swarm manager

Secrets

Secrets and machine-specific config go in ~/.zshrc.local (not tracked in git). The install script creates a template if it doesn't exist.

Included Tools

Tool Purpose
Zsh Shell
zplug Zsh plugin manager
Starship Cross-shell prompt
fzf Fuzzy finder
GNU Stow Dotfile symlinks
fnm Node.js version manager
Bun JavaScript runtime
pnpm Node package manager
uv Python package manager
Rustup Rust toolchain installer

License

MIT

About

Portable Zsh dotfiles, shell configuration, and system package tracking for Ubuntu/Debian. Uses GNU Stow, Starship, zplug, and per-machine apt package lists.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Contributors

Languages