# 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.