- Installation
- Shell actor environment variables
- Update
- Automatic functionality after setup
- Installation notes for programs
Note
The steps below are bootstrapping prerequisites that must be completed before dotfiles can
manage the environment. Once Homebrew and dotbot are installed and the repo is cloned,
everything else is driven by dotfiles [CONFIG_NAME].
-
Set up the GitHub folder:
mkdir -p ~/github.com/davidsneighbour -
Install git if not already installed:
sudo apt install git
-
Clone this repository with submodules (SSH key must be set up first):
git clone --recurse-submodules git@github.com:davidsneighbour/dotfiles.git ~/github.com/davidsneighbour/dotfiles cd ~/github.com/davidsneighbour/dotfiles
-
Install Homebrew (Linuxbrew):
bash configs/installs/20-brew.sh eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"
-
Install dotbot via Homebrew — required before running
dotfiles:brew install dotbot
-
Install Node.js dependencies:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash source ~/.bashrc nvm install 24 nvm use 24 npm install
-
Run
dotfilesto set up symlinks, tools, and host-specific config. Thedotfilescommand lives inbashrc/helpers/dotfilesand is added to PATH automatically once the bashrc symlink is in place. During the very first run, invoke it directly:bash bashrc/helpers/dotfiles
For named configs (host-specific, AI tooling, protected symlinks, etc.):
bash bashrc/helpers/dotfiles ai bash bashrc/helpers/dotfiles protected bash bashrc/helpers/dotfiles host-locutus
After the initial run the symlink
~/.dotfiles → ~/github.com/davidsneighbour/dotfilesand the sourced bashrc are in place, so subsequent runs use the short form:dotfiles dotfiles ai dotfiles protected
Run
dotfiles --helpfor the full option list, ordotfiles --listto pick a config interactively viagum.
The interactive Bash setup defines a mutually exclusive actor identity with two exported variables:
HUMAN(default:true)LLM(default:false)
Rules enforced during Bash startup:
- If
LLM=trueis already set before loading Bash config, thenHUMAN=false. - If
HUMAN=falseis already set before loading Bash config, thenLLM=true. - If neither mode is explicitly set, Bash defaults to
HUMAN=trueandLLM=false.
For automation agents and LLM-based tooling: export LLM=true before sourcing ~/.bashrc or before running commands that rely on this Bash configuration.
Run consecutive updates:
git pull
dotfiles
dotfiles protected
git submodule update --recursive --remote --merge --forceUpdating dotbot submodules is a bit tricky and might not work all times. Running into issues don't waste time on solving it and run the following commands to reset the submodule and pull the latest changes:
cd broken-submodule-path
git merge --abort
git pull
git checkout main| key binding | function |
|---|---|
| SUPER+A | open Alan |
| SUPER+W | open VSCode workspace selection, keep single window |
| SUPER+E | open VSCode workspace selection, add new window |
| SUPER+N | open Netflix |
| SUPER+C | open Chrome user profile selection (or browser) |
| SUPER+T | open Terminal |
| SUPER+F | open file manager in Home directory |
| SUPER+SHIFT+S | open Sublime Text |
| SUPER+Q | open Todoist |
Install the Flatpak version instead of the snap or deb version. The deb version requires manual installation of a downloaded .deb file to update the app.
Warning
Don't try to get fancy. Use Chrome and set up as Chrome app. Their "app" works only on Gnome.