2025-12-30 19:51:28 -08:00
2025-11-23 09:07:39 -08:00
2025-12-30 19:51:28 -08:00
2025-11-23 09:07:39 -08:00
2025-12-30 17:14:33 -08:00

Provision

Simple, idempotent provisioning for macOS and Linux desktop computers.

Quick Start

Fresh Debian/Ubuntu System

# As root
apt-get update && apt-get install -y curl git sudo
adduser yourusername sudo

# Log out and back in, then as regular user:
curl -fsSL https://git.sdf.org/jchenry/provision/raw/branch/main/bootstrap | bash

macOS or Existing Linux System

# macOS (install Xcode CLI tools first)
xcode-select --install

# Clone and run
git clone https://git.sdf.org/jchenry/provision.git ~/.workspace/src/git.sdf.org/jchenry/provision
cd ~/.workspace/src/git.sdf.org/jchenry/provision
./provision

Or use the bootstrap script:

curl -fsSL https://git.sdf.org/jchenry/provision/raw/branch/main/bootstrap | bash

What Gets Installed

CLI Tools

  • Essentials: git, curl, wget, tmux, jq
  • Modern tools: fzf, ripgrep, starship, zoxide, eza, fd, gh
  • X11 utilities (Linux only): twm, slock, xsetroot, feh, xclock, xload, xdm

GUI Applications

  • VSCodium (with extensions)
  • 1Password
  • Obsidian
  • Google Chrome
  • Todoist

Development

  • Go: Latest version installed to /usr/local/go
  • Plan9port: Built from source to /usr/local/plan9

Configuration Files

  • Bash (with Go & Plan9 paths)
  • Tmux (with plugin manager)
  • Starship prompt
  • Git (with global gitignore)
  • X11/TWM window manager (Linux only)
    • Dracula color scheme
    • 1.5x DPI scaling
    • Custom XDM login screen

Usage

# Full provision
./provision

# Skip components
./provision --skip-apps   # Skip GUI applications
./provision --skip-go     # Skip Go installation
./provision --skip-p9     # Skip Plan9 installation
./provision --help        # Show help

Structure

provision/
├── provision           # Main script
├── bootstrap           # Bootstrap script for fresh systems
├── lib/                # Utilities
│   ├── common.sh      # Platform detection, logging
│   └── package.sh     # Package manager abstraction
├── scripts/            # Installation scripts
│   ├── packages.sh    # CLI tools
│   ├── apps.sh        # GUI applications
│   ├── golang.sh      # Go from tar.gz
│   ├── plan9port.sh   # Plan9 from source
│   ├── user-setup.sh  # User account setup
│   └── update-xdm.sh  # Update XDM configuration
└── config/             # Configuration files
    ├── link-dotfiles.sh
    ├── bashrc
    ├── tmux.conf
    ├── starship.toml
    ├── gitconfig
    ├── gitignore_global
    ├── vscode-extensions.txt
    ├── xinitrc          # X11 init with TWM
    ├── xsession         # XDM session
    ├── Xresources       # X11 resources (Dracula theme, DPI)
    ├── twmrc            # TWM window manager config
    └── xdm/             # XDM customizations
        ├── Xresources   # Login screen appearance
        ├── Xsetup       # Pre-login setup
        └── Xstartup     # Post-login setup

Supported Platforms

  • macOS (via Homebrew)
  • Debian/Ubuntu (via apt)
  • Arch Linux (via pacman + AUR)

After Installation

# 1. Restart your shell
exec $SHELL

# 2. Edit git config
nano ~/.gitconfig  # Set your name and email

# 3. Install tmux plugins
# In tmux, press: Ctrl+a then I

# 4. (Optional) Enable XDM on Linux
sudo systemctl enable --now xdm

X11/TWM Configuration (Linux)

The provision system sets up a complete X11 environment with TWM:

  • Display Manager: XDM with Dracula-themed login screen
  • Window Manager: TWM with custom configuration
  • DPI Scaling: 1.5x by default (configurable in xinitrc/xsession/Xresources)
  • Color Scheme: Dracula palette throughout
  • Applications: Menu-based launcher in TWM

Adjusting DPI Scaling

Edit config/Xresources, config/xinitrc, and config/xsession to change scaling:

  • 96 = 1x (standard)
  • 144 = 1.5x (default)
  • 192 = 2x

Updating XDM Configuration

After modifying XDM files in config/xdm/:

./scripts/update-xdm.sh
sudo systemctl restart xdm

Customization

All configuration files are in config/. After editing, re-link:

./config/link-dotfiles.sh

Fresh Debian Installation

For a brand new Debian system where you don't have sudo access:

# 1. As root, install prerequisites and add user to sudo
su -
apt-get update && apt-get install -y curl git sudo
adduser yourusername sudo
exit

# 2. Log out and log back in (important!)

# 3. As regular user, run bootstrap
curl -fsSL https://git.sdf.org/jchenry/provision/raw/branch/main/bootstrap | bash

The bootstrap script will:

  • Check prerequisites (git, sudo access)
  • Clone the repository
  • Run the provision script
  • Provide helpful error messages if anything is missing

Philosophy

Based on the "JFUI" (Just Use It) approach from this blog post:

  • Simple: 4 main scripts instead of 20+
  • Fast: Parallel installs where possible
  • Idempotent: Safe to re-run anytime
  • Self-contained: All config files included, no external dotfiles repo
  • Flexible: Skip any component with flags

Total: ~600 lines of shell script.

Description
No description provided
Readme 85 KiB
Languages
Shell 96.7%
C 3.3%