These are my dotfiles and specific computer configuration steps. Feel free to borrow what you find useful, but consider many steps are tailored to me.
It uses dotbot.
- cURL
- Git
- Python and Pip
- Wget
- zip and unzip (for SDKMAN!)
You can install them in Ubuntu 24.04 with:
sudo apt install curl git python-is-python3 python3 unzip wget zipFirst check the existing dotfiles in the system home directory and delete them. Then:
cd ~/
git clone --recurse-submodules https://github.com/bryant1410/dotfiles .dotfiles
cd .dotfiles/
./installThis is specialized on Linux, but may also work in other *nix envs.
Run:
git submodule foreach git pull origin masterThese are additional steps for a computer I actively use (a "main" one), has Ubuntu and I have sudo access. It requires Python 3.5+. Run:
sudo ./install -p dotbot-apt/apt.py -p dotbot-snap/snap.py -c main_run_with_sudo.conf.yaml
./install -c main_run_without_sudo.conf.yamlThis is specialized on Ubuntu.
-
Steam may be shown as it failed because it actually is waiting for a user to continue from some GUI.
-
A Dropbox-related window may appear. Follow its steps to finish Dropbox's installation.
-
Set "JetBrains Mono Regular" as the font for the system Terminal, Sublime, VS Code, and Guake. Enable the font ligatures wherever possible.
-
Enable settings sync in the JetBrains IDEs.
-
Add Guake to the list of Startup Applications.
-
Install and set up Prey:
TEMP_DEB=$(mktemp) && wget -O "$TEMP_DEB" 'https://downloads.preyproject.com/prey-client-releases/node-client/1.13.4/prey_1.13.4_amd64.deb' && sudo dpkg --skip-same-version -i "$TEMP_DEB" && rm -f "$TEMP_DEB" sudo apt --fix-broken -y install # Install Prey dependencies.
-
Symlink
PicturestoDropbox/Pictures:rmdir ~/Pictures/ ln -s Dropbox/Pictures ~/Pictures
-
Symlink the Sublime user packages to the ones in
Dropbox/Sublime(see more in https://stackoverflow.com/a/11399206/1165181):rm -rf ~/.config/sublime-text/Packages/User ln -s ~/Dropbox/Sublime/Packages/User ~/.config/sublime-text/Packages/User
-
Make Calibre use the library in
Dropbox/Calibre Library. -
Log out and log back in for Docker to work without sudo.
-
Set up the local bashrc and netrc file:
pushd ~ ln -s ~/Dropbox/.bashrc.local ln -s ~/Dropbox/.netrc popd
-
Set up an echo cancellation mic for PulseAudio:
cat <<EOF | sudo tee -a /etc/pulse/default.pa .ifexists module-echo-cancel.so load-module module-echo-cancel aec_method=webrtc source_name=echo_cancelled source_properties=device.description=EchoCancelled sink_name=echo_cancelled_sink set-default-source echo_cancelled set-default-sink echo_cancelled_sink .endif EOF pulseaudio -k sudo addgroup $USER audio # To load the config at boot time.
If using PipeWire, follow the steps to install NoiseTorch.
-
Run the following to include some common SSH configs:
if ! grep -q 'Include ~/Dropbox/ssh_config' ~/.ssh/config; then echo 'Include ~/Dropbox/ssh_config' >> ~/.ssh/config fi
-
Free the key binding Ctrl + . so it can be used by IntelliJ.
-
Test WebGL on Chrome (you should get 50-60 FPS). If not, force hardware-accelerated rendering in Google Chrome.
-
Increase the inotify watches limit:
echo fs.inotify.max_user_watches = 1048576 | sudo tee /etc/sysctl.d/idea.conf sudo sysctl -p --system
-
Enable pasting with the mouse's middle click:
gsettings set org.gnome.desktop.interface gtk-enable-primary-paste true
-
Enable a system-level key binding for Guake.
-
Enable automatic updates, confined to hours I'm not using the machine:
sudo ./setup-auto-updates
Ubuntu already installs security updates unattended, but at 6am — and
apt-dailyfires at any hour, since its default jitter is 12h. This adds regular-updates, moves apt to 03:00, and narrows snaps to 03:00–05:00 plus a midday catch-up (a refresh with nothing pending is a no-op, so midday only acts on what the night missed). Timers usePersistent=falseso a missed run waits for the next window instead of firing at boot;apt-idle-upgrade.timercovers the gap, upgrading at a random moment once the desktop has been idle 20 min and the last run is 2 days old. Reboots stay manual —canonical-livepatchhandles kernel CVEs live. Tunables are at the top of the script.
I save the git config in a 2nd user-specific path (~/.config/git/config), so I can override stuff in the local machine (in ~/.gitconfig), such as the email.
To debug the ~/.bashrc file when opening a new terminal gets slow, see this gist.