bryant1410/dotfiles

My dotfiles.

★ 5Forks 0ShellGitHub ↗Compare
bashcondadotbotdotfilesgitlatexmkvim

README

Santiago's dotfiles

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.

Prerequisites

  • 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 zip

Installation

First 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/

./install

This is specialized on Linux, but may also work in other *nix envs.

Update the submodules

Run:

git submodule foreach git pull origin master

Main Computer

These 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.yaml

This is specialized on Ubuntu.

Post-installation Steps

  1. Steam may be shown as it failed because it actually is waiting for a user to continue from some GUI.

  2. A Dropbox-related window may appear. Follow its steps to finish Dropbox's installation.

  3. Set "JetBrains Mono Regular" as the font for the system Terminal, Sublime, VS Code, and Guake. Enable the font ligatures wherever possible.

  4. Enable settings sync in the JetBrains IDEs.

  5. Add Guake to the list of Startup Applications.

  6. 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.
  7. Symlink Pictures to Dropbox/Pictures:

    rmdir ~/Pictures/
    ln -s Dropbox/Pictures ~/Pictures
  8. 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
  9. Make Calibre use the library in Dropbox/Calibre Library.

  10. Log out and log back in for Docker to work without sudo.

  11. Set up the local bashrc and netrc file:

    pushd ~
    ln -s ~/Dropbox/.bashrc.local
    ln -s ~/Dropbox/.netrc
    popd
  12. 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.

  13. 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
  14. Free the key binding Ctrl + . so it can be used by IntelliJ.

  15. Set up the SSH keys for GitHub.

  16. Test WebGL on Chrome (you should get 50-60 FPS). If not, force hardware-accelerated rendering in Google Chrome.

  17. Allow ImageMagick to write PDFs.

  18. Increase the inotify watches limit:

    echo fs.inotify.max_user_watches = 1048576 | sudo tee /etc/sysctl.d/idea.conf
    sudo sysctl -p --system
  19. Enable pasting with the mouse's middle click:

    gsettings set org.gnome.desktop.interface gtk-enable-primary-paste true
  20. Enable the NTSYNC driver.

  21. Enable a system-level key binding for Guake.

  22. 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-daily fires 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 use Persistent=false so a missed run waits for the next window instead of firing at boot; apt-idle-upgrade.timer covers 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-livepatch handles kernel CVEs live. Tunables are at the top of the script.

About the Git Configuration

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.

If bash gets slow to load

To debug the ~/.bashrc file when opening a new terminal gets slow, see this gist.

Contributors

bryant1410

Issues