Skip to content

Latest commit

 

History

History
165 lines (119 loc) · 4.85 KB

File metadata and controls

165 lines (119 loc) · 4.85 KB

Setup notes

Installation

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 dotfiles to set up symlinks, tools, and host-specific config. The dotfiles command lives in bashrc/helpers/dotfiles and 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/dotfiles and the sourced bashrc are in place, so subsequent runs use the short form:

    dotfiles
    dotfiles ai
    dotfiles protected

    Run dotfiles --help for the full option list, or dotfiles --list to pick a config interactively via gum.

Shell actor environment variables

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=true is already set before loading Bash config, then HUMAN=false.
  • If HUMAN=false is already set before loading Bash config, then LLM=true.
  • If neither mode is explicitly set, Bash defaults to HUMAN=true and LLM=false.

For automation agents and LLM-based tooling: export LLM=true before sourcing ~/.bashrc or before running commands that rely on this Bash configuration.

Update

Run consecutive updates:

git pull
dotfiles
dotfiles protected
git submodule update --recursive --remote --merge --force

Updating 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

Automatic functionality after setup

Installed programs and systems

Shortcuts/Keybindings

Custom shortcuts that are set up (work in progress)

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

Installation notes for programs

Communication tools

Discord

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.

Productivity tools

Todoist

Warning

Don't try to get fancy. Use Chrome and set up as Chrome app. Their "app" works only on Gnome.