Bootstrap - sets up the Desktop Install - sets up my software scripts/ - specific software setups
Minimal Dotfiles
A deliberately minimal dotfile configuration.
Philosophy
Over the years I have grown tired of tweaking config files for every component of my desktop. This repository contains only the essentials.
Start with a minimal Debian 13 (Trixie) install — SSH server and system essentials only, no desktop environment. Run bootstrap.sh followed by install.sh to get up and running. For additional tooling, see the scripts/ folder.
What's Inside
.
├── config/
│ ├── alacritty/ # Alacritty terminal configuration
│ ├── fish/ # Fish shell configuration
│ ├── gitu/ # Git TUI settings
│ ├── kanata/ # Keyboard remapping
│ ├── lf/ # Terminal file manager
│ ├── nvim/ # Neovim setup
│ └── tmux/ # Tmux configuration
├── scripts/
│ ├── setup_docker # Docker install recipe
│ └── setup_golang # Golang + go tools install recipe
├── bootstrap.sh # Fresh system setup (run once, before install.sh)
└── install.sh # Dotfile symlinks and package installation
Desktop Bootstrap
Start with a minimal Debian 13 (Trixie) install — SSH server and system essentials only, no desktop environment.
Then run the bootstrap script to set up DMS, Helium, and GTK theming:
./bootstrap.sh
Once complete, restore personal files from backup (SSH keys, documents, projects, fonts, wallpapers, local binaries/scripts), then continue with the steps below.
Software Installation
Clone this repository and run the install script:
Install Options
# Interactive mode (with confirmations)
./install.sh
# Only create symlinks
./install.sh -l
# Only install packages
./install.sh -i
What Gets Installed
The script installs essential development tools via apt:
- CLI Tools:
wget,curl,fzf,fd-find,ripgrep,tree,btop,direnv,bat,jq,lf,unzip - Development:
build-essential,make,bear,valgrind - Shell:
fish - Terminal:
alacritty - Multiplexer:
tmux - Other:
ca-certificates,gnupg,libfuse2
Symlinks Created
~/.tmux.conf→./config/tmux/.tmux.conf~/.config/alacritty→./config/alacritty~/.config/fish→./config/fish~/.config/kanata→./config/kanata~/.config/nvim→./config/nvim~/.config/gitu→./config/gitu~/.config/lf→./config/lf
Scripts
Self-contained recipes for tooling that goes beyond the core install. Each script can be run independently as needed:
./scripts/setup_docker
./scripts/setup_golang
./scripts/setup_kanata
These are not run automatically by install.sh — they are opt-in.
This setup prioritizes stability and simplicity over customization. DankMaterialShell with niri handles the heavy lifting for tiling and aesthetics.