This guide will walk you through installing common engineering tools on your system. If you haven't read the computer setup guide yet, start there. This guide is written for Ubuntu derivatives using the BASH shell.
-
Update your system.
sudo apt-get update sudo apt-get upgrade -y sudo apt-get autoremove
-
Terminator - iTerm2-like terminal emulator for Linux
sudo apt-get install -y terminator
- Check
Terminator
> right-click >Preferences
>Profiles
>Scrolling
>Infinite Scrollback
. - I like to invert the titlebar colors so "focused" is blue (
#0076C9
) or green (#3FBC6C
), and "receiving" is red (#C80003
). It is just less aggressive and more plesant to look at. These settings are inTerminator
> right-click >Preferences
>General
>Terminal Titlebar
.
- Check
-
Vim - CLI text editor and related utilities
sudo apt-get install -y vim vim-common
-
VScode - GUI text editor
sudo apt-get install -y code
- GitLens - VScode extension to view files in the context of their
git
history - Dark+ Pure Black (OLED) - Optional extension to make the existing Dark+ theme distributed with VScode use true black, for OLED displays
- GitLens - VScode extension to view files in the context of their
-
Zap - a package manager for
*.AppImage
programssudo wget https://github.com/srevinsaju/zap/releases/download/continuous/zap-amd64 -O /usr/local/bin/zap sudo chmod +x /usr/local/bin/zap
-
Bitwarden - secure, open-source password manager
curl -fSL 'https://vault.bitwarden.com/download/?app=desktop&platform=linux&variant=appimage' -o ~/Downloads/Bitwarden.AppImage zap install bitwarden ~/Downloads/Bitwarden.AppImage
Fix missing logo.
sed -E "s_(Icon=).*$$_\1/home/$USERNAME/.local/share/zap/v2/icons/bitwarden.png_" -i ~/.local/share/applications/bitwarden.desktop
-
Joplin - open-source, Evernote-like note taking app
zap install --from 'https://github.com/laurent22/joplin/releases/download/v2.8.8/Joplin-2.8.8.AppImage' joplin
Fix missing logo.
sed -E "s_(Icon=).*$$_\1/home/$USERNAME/.local/share/zap/v2/icons/joplin.png_" -i ~/.local/share/applications/joplin.desktop
-
Telegram Desktop - psuedo-secure instant messaging application
sudo flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo flatpak install flathub org.telegram.desktop
Log into and configure Telegram Desktop.
-
Brave - privacy-focused Chromium-based web browser with builtin ad and tracker blocking
sudo apt-get install -y apt-transport-https curl sudo curl -fsSLo /usr/share/keyrings/brave-browser-archive-keyring.gpg https://brave-browser-apt-release.s3.brave.com/brave-browser-archive-keyring.gpg
Configure Brave, including logging into or creating a work sync profile, if you wish.
-
Firefox - a privacy-focused web browser not built on software from an advertisement juggernaut
sudo apt-get install -y firefox
Configure Firefox, including logging into or creating a work Mozilla account, if you wish.
-
pip - package manager for Python
sudo apt-get install -y python3-pip python3-venv
-
docker - container engine, like virtual machines but lighter
sudo apt-get install -y ca-certificates curl gnupg lsb-release sudo mkdir -p /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o ~/Downloads/docker.gpg cat ~/Downloads/docker.gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg # note: this command will only work on Ubuntu and Ubuntu derivatives echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(source /etc/upstream-release/lsb-release 2>/dev/null && echo "$DISTRIB_CODENAME" || lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list sudo apt-get update sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin sudo service docker start sudo docker run hello-world
- Download Ubuntu docker images.
docker pull ubuntu:18.04 docker pull ubuntu:20.04 docker pull ubuntu:22.04
- Download Ubuntu docker images.
-
VirtualBox - type 2 hypervisor for running computers inside computers as a program
sudo apt-get install -y virtualbox
-
qBittorrent - open-source bittorrent client
- Optionally, install this OLED-dark theme.
- Download Ubuntu
*.iso
images for VirtualBox.
-
Caffeine - keep your computer awake
sudo apt-get install -y caffeine
Make the caffeine indicator appear in the system tray on startup.
ln -s /usr/share/applications/caffeine-indicator.desktop ~/.config/autostart/caffeine-indicator.desktop
-
git - open-source, distributed version control software
sudo apt-get install -y git
- Install git.
brew install git
- Generate an SSH Key and associate it with your GitHub account.
- Generate an ed25519 SSH key using your work email.
ssh-keygen -t ed25519 -f ~/.ssh/github.key -C [email protected]
- Enter a strong passphrase.
- Convenient local JavaScript diceware generator, trust at your own risk. We recommend using Bitwarden to generate the password or passphrase.
- Check that SSH daemon is running
ssh-agent -s 1>/dev/null && echo 'SSH daemon is running' || echo 'SSH daemon is not running'
- Add new key to keystore.
ssh-add ~/.ssh/github.key
- Copy your public key to clipboard.
cat ~/.ssh/github.key.pub
- In your browser, go to: GitHub > Settings > SSH and GPG keys > New SSH key
- Paste your public key into
Key
. - Give your SSH key a meaningful title, for example "ENF" followed by your computer hostname.
- Click
Add SSH Key
. - Test it.
- Connect to GitHub via SSH.
ssh -T [email protected]
- Accept the GitHub RSA fingerprint.
yes
- You should see:
You've successfully authenticated, but GitHub does not provide shell access.
- Connect to GitHub via SSH.
- Generate an ed25519 SSH key using your work email.
- Generate an ed25519 GPG Key and associate it with your GitHub account.
- Generate the key using your work email.
- Start GPG.
gpg --expert --full-generate-key
- Select
ECC and ECC
.
9
,[Enter]
- Use an ed25519 key.
1
,[Enter]
- Set your desired key expiration period.
0
,[Enter]
y
,[Enter]
- Enter your name as you want it to appear next to your contributions in our open-source commit history.
- Enter either your work email address, or your GitHub no-reply email address.
- This email address MUST match one of the emails attached to your GitHub account.
- Enter your computer's hostname for the comment.
- Confirm the settings.
o
(letter 'o' key) - Enter a strong passphrase, twice.
- Convenient local JavaScript diceware generator, trust at your own risk. We recommend using Bitwarden to generate the password or passphrase.
- Start GPG.
- Associate your GPG key with your GitHub account.
- Copy your public key to the clipboard.
gpg --armor --export "$(gpg --list-secret-keys --keyid-format LONG | grep sec | awk '{print $2}' | cut -d '/' -f '2')"
- In your browser, go to: GitHub > Settings > SSH and GPG keys > New GPG key
- Paste your public key into
Key
. - Click
Add GPG Key
.
- Copy your public key to the clipboard.
- Generate the key using your work email.
- Configure your shell.
- Configure
gpg
to usegpg-agent
, similar tossh-agent
.echo 'use-agent' > ~/.gnupg/gpg.conf
- Configure
gpg-agent
to use the keychain to store the GPG passphrase.echo 'pinentry-program /usr/bin/pinentry-gnome3' > ~/.gnupg/gpg-agent.conf
- Reload the
gpg-agent
daemon with the new settings.echo RELOADAGENT | gpg-connect-agent
- Load your keys in all shells.
cat << 'BASH' >> ~/.bashrc ### GitHub ### export GPG_TTY=$(tty) BASH source ~/.bashrc
- Configure
- Store your GPG passphrase in the keyring.
- Invoke a
pinentry-gnome3
password prompt.echo '1234' | gpg -o /dev/null --local-user "$(gpg --list-secret-keys --keyid-format LONG | grep sec | awk '{print $2}' | cut -d '/' -f '2')" -as - && echo 'Looks good! Can we sign code next time?' || echo 'Oh noes! We could not authenticate!'
- Check
Save in Keychain
. - Enter your GPG passphrase created earlier.
- Click
OK
.
- Invoke a
- Configure git.
- Add your work email address.
git config --global user.email [email protected]
- Add your real name.
git config --global user.name 'First Last'
- Point git to your GPG key.
git config --global user.signingkey "$(gpg --list-secret-keys --keyid-format LONG | grep sec | awk '{print $2}' | cut -d '/' -f '2')"
- Configure git to sign all commits pushed from this user account on this computer.
git config --global commit.gpgsign true
- Configure git to use your preferred editor.
git config --global core.editor 'vim'
- Configure git to use SSH for all submodules, even if the repo defines them with HTTPS.
cat << 'BASH' >> ~/.gitconfig [url "ssh://[email protected]/"] insteadOf = https://github.com/ BASH
- Add your work email address.
- Verify that your work email is associated with your GitHub account.
GitHub > Settings > Emails
- If your work email is not associated with your GitHub account, your activity on GitHub (pull requests, issues, comments) will appear to come from a different account than your commits and pushes made from this device.
- Performing this association later can retroactively associate commits with your account.
- Install git.
-
Beyond Compare - side-by-side comparison, editing, and merging of text, hex, binaries, Office documents, pictures, MP3s, archives, and folders; with support for git integration and cloud locations such as FTP, SFTP, Dropbox, or buckets
- Install Beyond Compare.
sudo apt-get install -y bcompare
- Configure git for diffs with Beyond Compare.
git config --global diff.tool bc3 git config --global difftool.bc3.trustExitCode true
- The behavior of `git diff` cannot be changed, you use `git difftool` to diff with Beyond Compare.
- Configure git for resolving merge conflicts with Beyond Compare.
git config --global merge.tool bc3 git config --global mergetool.bc3.trustExitCode true
- Invoke `git mergetool` when you want to use Beyond Compare to resolve merge conflicts.
- Install Beyond Compare.
-
git-imerge - branch merge conflict resolution tool
pip install git-imerge
-
bpkg - BASH package manager
curl -fsSL 'https://raw.githubusercontent.com/bpkg/bpkg/master/setup.sh' -o ~/Downloads/bpkg-install.sh chmod +x ~/Downloads/bpkg-install.sh ~/Downloads/bpkg-install.sh
-
Make a work directory.
mkdir -p ~/Work