Files
provision/README.md
2026-02-05 20:37:02 -08:00

201 lines
5.2 KiB
Markdown

# Provision
Simple, idempotent provisioning for macOS and Linux desktop computers.
## Quick Start
### Fresh Debian/Ubuntu System
```bash
# 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
```bash
# 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:
```bash
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
```bash
# 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/elementaryOS (via apt)
- Arch Linux (via pacman + AUR)
## After Installation
```bash
# 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/`:
```bash
./scripts/update-xdm.sh
sudo systemctl restart xdm
```
## Customization
All configuration files are in `config/`. After editing, re-link:
```bash
./config/link-dotfiles.sh
```
## Fresh Debian Installation
For a brand new Debian system where you don't have sudo access:
```bash
# 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](https://jnsgr.uk/2025/06/from-nixos-to-ubuntu/):
- **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.