Cross-platform dotfiles for Linux development environments. Works on Arch, Debian/Ubuntu, Rocky Linux/RHEL, Proxmox, and WSL2.
curl -fsSL https://raw.githubusercontent.com/Unintendedsideeffects/Dotfiles/master/.dotfiles/bin/quick-install.sh | bashThis clones the repo as a bare git repository to ~/.cfg, backs up any conflicting files to ~/.local/backups/dotfiles/, installs shell configuration, and launches the bootstrap menu.
To reinstall over an existing setup:
curl -fsSL https://raw.githubusercontent.com/Unintendedsideeffects/Dotfiles/master/.dotfiles/bin/quick-install.sh | bash -s -- --reinstallUses the bare git repository technique. The config alias is set up automatically:
config status # Check for changes
config add .zshrc # Stage a file
config commit -m "..." # Commit
config push # Push to remote| Category | Tools |
|---|---|
| Shell | Zsh, antidote, starship, atuin history |
| Navigation | zoxide, yazi, ranger |
| Editors | Neovim (Lua config), Cursor |
| Multiplexers | zellij, tmux (flexoki themed) |
| Terminal | ghostty config |
| CLI | ripgrep, fd, bat, eza, fzf, delta |
| GUI (Linux) | i3, sway, rofi, dunst, picom |
Distro support: Arch (pacman/yay), Debian/Ubuntu (apt), Rocky/RHEL (dnf), WSL2 (systemd, wslu).
Run ~/.dotfiles/bin/bootstrap.sh to launch the bootstrap menu. It uses a TUI when a terminal is available and falls back to shell prompts otherwise. Available options adapt to your platform:
| Option | Description | Availability |
|---|---|---|
| Install Packages | Curated toolsets, auto-detects distro + Nerd Fonts, starship, atuin, eza on Debian/Proxmox | All |
| AUR Setup | Installs yay |
Arch only |
| Locale Setup | UTF-8 locale (needed for Starship/glyphs) | All |
| Git Config | Global user/email and credentials | All |
| Claude Code | Statusline integration for Claude CLI | All |
| Tailscale | Installs and configures Tailscale VPN | All |
| WSL Setup | Fixes wsl.conf, enables systemd |
WSL only |
| GUI Autologin | Auto-start for X11/Wayland | All |
| Headless GUI | Xvfb/WM/VNC for remote GUI apps | Arch only |
| Headless Obsidian | Xvfb/Openbox/VNC for Obsidian on servers | Arch only |
| Validate | Environment health check | All |
Uses the official AppImage with a local wrapper and systemd services.
sudo .dotfiles/bin/install-obsidian-headless.sh \
-u "$USER" \
-o 1.12.4 \
-v "$HOME/Code/Obsidian/ObsidianVault"Installs ~/Applications/Obsidian-<version>.AppImage, wrapper scripts in ~/.local/bin/, and systemd services for Xvfb, the window manager, x11vnc, Obsidian, and ob sync.
Post-install:
- Open Obsidian over VNC and enable
Settings -> General -> Command line interface ob login --email <email>ob sync-setup --vault <name-or-id> --path <vault-path> --device-name <name>sudo systemctl enable --now obsidian-headless-sync.service
- Shell:
~/.zshrc.localfor machine-specific overrides - Git:
~/.gitconfig.localfor private settings (auto-created by bootstrap) - Packages:
.dotfiles/pkglists/*.txt
# Docker (Arch)
docker build -t dotfiles-test .
# Baseline repository validation
bash .dotfiles/bin/test-all.sh
# Dev container (Debian trixie full install)
# Open in VS Code / Codespaces with the .devcontainer config
# The post-create hook runs the full quick-install + bootstrap verification.
# Re-run the Debian install check manually inside the container
bash .devcontainer/run-debian-install-check.sh