Skip to main content

Development Setup for Linux

Please read carefully and execute all commands in order.

GitHub Account

  1. Create an account: https://github.com/join
  2. Add your name + profile picture: https://github.com/settings/profile
  3. Enable 2FA
Important Note

👉 All commands in this guide are run in your terminal

Open your terminal (Ctrl + Alt + T on most systems)

👉 This guide assumes you are using a Debian-based distribution (Ubuntu, Linux Mint, etc.)

Update system packages

sudo apt update && sudo apt upgrade -y

Install essential tools

sudo apt install -y build-essential curl file git

Oh My Zsh

Install zsh:

sudo apt install zsh -y

Then install Oh My Zsh:

sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

Press Y if prompted.

Visual Studio Code

Install VS Code:

sudo snap install code --classic

👉 If snap is not available, install from: https://code.visualstudio.com

Open VS Code

code .

VS Code Extensions

code --install-extension dbaeumer.vscode-eslint
code --install-extension esbenp.prettier-vscode
code --install-extension ms-python.python
code --install-extension ms-python.vscode-pylance
code --install-extension ms-toolsai.jupyter
code --install-extension alexcvzz.vscode-sqlite

Disable AI Features (for now)

Open VS Code:

  1. Ctrl + Shift + P
  2. Search: aifeatures
  3. Enable Disable and hide built-in AI features

GitHub CLI (gh) Setup (SSH)

Copy and paste these command into the terminal:

sudo apt install gh -y

1. Login with gh

Login. DO NOT edit the email field:

gh auth login -s 'user:email' --git-protocol ssh -w

2. You’ll be asked a few questions:

“What account do you want to log into?”

  • Choose: GitHub.com

“What is your preferred protocol?”

  • Use the arrow keys to choose: SSH

Why?

  • No passwords when pushing
  • More stable long-term workflow

“Generate a new SSH key?”

  • Press Enter (Yes)

👉 If you already have a key:

  • Select your existing key instead

“Enter a passphrase”

  • Optional, but recommended if you're security conscious
  • This protects your key if your machine is compromised
  • Press enter with the field blank to proceed without a passphrase

“Title for your SSH key”

  • Default is fine (e.g. GitHub CLI), press enter

3. Browser authentication

You’ll see:

! First copy your one-time code: XXXX-XXXX
  • Copy the code
  • Press Enter
  • Browser opens → paste code → approve access

👉 This creates a secure auth token stored locally (GitHub CLI)

4. Verify everything worked

gh auth status

You should see:

✓ Logged in to github.com as <your-username>

Python (pyenv)

Install dependencies:

sudo apt install -y make build-essential libssl-dev zlib1g-dev \
libbz2-dev libreadline-dev libsqlite3-dev llvm libncurses5-dev \
libncursesw5-dev xz-utils tk-dev libffi-dev liblzma-dev

Install pyenv

curl https://pyenv.run | bash

Add to shell:

echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc
echo 'command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc
echo 'eval "$(pyenv init -)"' >> ~/.zshrc
exec zsh

Install Python

pyenv install 3.12
pyenv global 3.12

Check

python --version

Python Tools

pip install --upgrade pip
pip install virtualenv pipx
pipx ensurepath

Node.js (nvm)

Install nvm:

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
exec zsh

Install Node

nvm install 20
nvm use 20

Check

node -v
npm -v

SQLite

sudo apt install sqlite3 -y
sqlite3 --version

PostgreSQL

sudo apt install postgresql postgresql-contrib -y

Start service:

sudo service postgresql start

Test:

psql -U postgres

Exit:

\q

Final Check

python --version
node -v
npm -v
psql --version
sqlite3 --version
git --version

You’re Done!

Your machine is now ready for: