You will find below the instructions to set up your computer for Le Wagon AI Software Development course on Bazzite.
Please read them carefully and execute all commands in the following order.
Bazzite is not Ubuntu. It is a Fedora Atomic / Universal Blue image, so do not replace apt commands with host dnf commands. On Bazzite, prefer:
- Bazzite Portal and
ujustfor Bazzite-maintained setup tasks. - Bazaar / Flatpak for graphical applications.
- Homebrew for command-line tools.
- Distrobox for Linux development environments that need a traditional package manager.
rpm-ostreeonly as a last resort for system-level packages.
Have you signed up to GitHub? If not, do it right away.
Please upload a picture and put your name correctly on your GitHub account. This is important as we'll use an internal dashboard with your avatar. Please do this now, before you continue with this guide.
Please enable Two-Factor Authentication (2FA). This is important for security and is required for many GitHub workflows.
First update your Bazzite installation:
ujust updateReboot if the update asks you to:
systemctl rebootInstall VS Code through the Universal Blue Homebrew cask:
eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"
brew tap ublue-os/tap
brew install --cask visual-studio-code-linuxNow launch VS Code from the terminal:
codeIf a VS Code window opens, you can continue. Otherwise, ask a teacher for help.
Install the course extensions:
code --install-extension ms-vscode.sublime-keybindings
code --install-extension emmanuelbeziat.vscode-great-icons
code --install-extension github.github-vscode-theme
code --install-extension MS-vsliveshare.vsliveshare
code --install-extension shopify.ruby-lsp
code --install-extension dbaeumer.vscode-eslint
code --install-extension Rubymaniac.vscode-paste-and-indent
code --install-extension alexcvzz.vscode-sqlite
code --install-extension anteprimorac.html-end-tag-labels
code --install-extension rayhanw.erb-helpersVS Code includes powerful AI features, which are a great tool once you already know how to code.
For the start of the bootcamp, disable these features:
- In VS Code, open the Command Palette with
Ctrl+Shift+P. - Start typing
aifeaturesuntil you see "Chat: Learn How to Hide AI features". Click on it. - Tick the option "Disable and hide built-in AI features ...".
Visual Studio Live Share is a VS Code extension which allows you to share your code editor for debugging and pair-programming.
Launch VS Code:
codeClick the Live Share icon in the bottom-left area, click "Share", and sign in with GitHub.
Check your locale:
localectl statusIf LANG is not en_US.UTF-8, set it with:
sudo localectl set-locale LANG=en_US.UTF-8Reset your terminal after changing the locale.
Homebrew is the preferred package manager for command-line tools on Bazzite. Enable it in your current terminal:
eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"Install the useful command-line tools from the Ubuntu setup:
brew update
brew install curl git imagemagick jq unzip vim tree ncdu htop tig gh rbenv ruby-build sqlite pkgconf libpq postgresql@16 gcc make zshExpose Homebrew's compiler and GNU make for Ruby builds and native gems:
mkdir -p ~/.local/bin
GCC_MAJOR="$(brew list --versions gcc | awk '{ split($2, version, "."); print version[1] }')"
ln -sf "$(brew --prefix gcc)/bin/gcc-$GCC_MAJOR" ~/.local/bin/gcc
ln -sf "$(brew --prefix gcc)/bin/g++-$GCC_MAJOR" ~/.local/bin/g++
export PATH="$HOME/.local/bin:$(brew --prefix make)/libexec/gnubin:$PATH"Bazzite does not ship zsh in the base image and does not provide the chsh
command, so the Ubuntu instructions do not apply. zsh was installed with
Homebrew in the previous step. Register that zsh as a valid login shell and
set it as your default with usermod (Bazzite does ship usermod):
ZSH_PATH="$(brew --prefix)/bin/zsh"
grep -qxF "$ZSH_PATH" /etc/shells || echo "$ZSH_PATH" | sudo tee -a /etc/shells
sudo usermod -s "$ZSH_PATH" "$USER"Log out and log back in, then verify:
echo $SHELLYou should see a path ending in zsh.
Install Oh My Zsh:
sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"If asked "Do you want to change your default shell to zsh?", press Y.
The gh command was installed with Homebrew. Check it:
gh --versionLogin to GitHub with SSH:
Do not edit the user:email text in this command.
gh auth login -s 'user:email' -w --git-protocol sshWhen gh asks questions:
- For "Generate a new SSH key to add to your GitHub account?", press
Enter. - For "Enter a passphrase for your new SSH key (Optional)", most people should press
Enterto skip. - For "Title for your SSH key", press
Enter.
Check that you are authenticated:
gh auth statusSet a variable for your GitHub username:
export GITHUB_USERNAME=`gh api user | jq -r '.login'`echo $GITHUB_USERNAMEFork and clone the Le Wagon dotfiles:
mkdir -p ~/code/$GITHUB_USERNAME && cd $_gh repo fork lewagon/dotfiles --cloneRun the dotfiles installer:
cd ~/code/$GITHUB_USERNAME/dotfilesmkdir -p ~/.config/Code/Userzsh install.shThe dotfiles installer replaces your shell configuration with the Le Wagon defaults. Add the Bazzite/Homebrew paths back to your new .zshrc before running the git setup, so the change is committed to your dotfiles fork:
grep -q '/home/linuxbrew/.linuxbrew/bin/brew shellenv' ~/.zshrc || cat <<'EOF' >> ~/.zshrc
# Bazzite / Homebrew paths
eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"
export PATH="$HOME/.local/bin:$(brew --prefix make)/libexec/gnubin:$PATH"
EOFReset your terminal:
exec zshCheck the emails registered with your GitHub account:
gh api user/emails | jq -r '.[].email'Run the git installer:
cd ~/code/$GITHUB_USERNAME/dotfiles && zsh git_setup.shUse one of the emails listed by the previous command.
Reset your terminal:
exec zshIf you created your SSH key with a passphrase, add the ssh-agent plugin to Oh My Zsh.
Open your .zshrc file:
code ~/.zshrcFind the line starting with plugins= and add ssh-agent to the plugin list. Save the file, then reset the terminal:
exec zshClean up any previous Ruby version manager:
rvm implode && rm -rf ~/.rvm
# If you got "zsh: command not found: rvm", carry on.
rm -rf ~/.rbenvConfigure rbenv in your shell:
grep -q 'rbenv init' ~/.zshrc || echo 'eval "$(rbenv init - zsh)"' >> ~/.zshrcexec zshInstall Ruby:
rbenv install 3.3.5Set it as the default Ruby:
rbenv global 3.3.5Reset your terminal and check your Ruby version:
exec zshruby -vYou should see something starting with ruby 3.3.5.
Update bundler:
gem update bundlerInstall the course gems:
gem install colored faker http pry-byebug rake rails:8.1.1 rest-client rspec rubocop-performance sqlite3:2.8.1 activerecord:8.1.1 ruby-lspNever install gems with sudo gem install.
Install nvm:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bashexec zshCheck nvm:
nvm -vInstall Node.js:
nvm install 20.17.0Check Node.js:
node -vIf you see v20.17.0, clear the cache:
nvm cache clearInstall Yarn with Corepack:
corepack enable
yarn set version stableIf you see an error, run:
npm install -g corepack
corepack enable
yarn set version stableReset your terminal:
exec zshCheck Yarn:
yarn -vSQLite was installed with Homebrew. Check it:
sqlite3 -versionStart PostgreSQL with Homebrew:
brew services start postgresql@16Add PostgreSQL command-line tools to your shell:
grep -q 'postgresql@16' ~/.zshrc || echo 'export PATH="$(brew --prefix postgresql@16)/bin:$PATH"' >> ~/.zshrcexec zshCheck PostgreSQL:
psql --versionCreate your default local database if it does not already exist:
createdb "$USER" || trueRun the Le Wagon setup check:
exec zshcurl -Ls https://raw.githubusercontent.com/lewagon/setup/master/check.rb > _.rb && ruby _.rb && rm _.rb || rm _.rbThis checker expects zsh, Ruby 3.3.5, Git 2.0 or newer, GitHub SSH authentication, VS Code as the git editor, and the course Ruby gems. It does not check for Ubuntu specifically.
If you get a green "Awesome! Your computer is now ready!", then you're good.
You should have received an email from Le Wagon inviting you to sign up on Kitt.
When submitting your onboarding form on Kitt, you should have received two additional invitations:
- One from Slack, inviting you to the Le Wagon Alumni Slack community.
- One from GitHub, inviting you to the
lewagonteam.
Accept both invitations. If you have not received them, contact your teaching team.
Install Slack from Flathub:
flatpak install -y flathub com.slack.SlackLaunch Slack from your applications menu and sign in to the lewagon-alumni organization.
Make sure you upload a profile picture.
To test your camera and microphone:
- Open Slack.
- Click your profile picture in the top right.
- Select
Preferences. - Click
Audio & video. - Under
Troubleshooting, clickRun an audio, video and screensharing test.
The Ubuntu setup installs H264 codecs manually. Bazzite already ships multimedia codec support, so there is no equivalent command to run here.
The terminal tools from the Ubuntu setup were installed earlier with Homebrew:
tree --version
ncdu --version
htop --version
tig --versionThe Ubuntu setup manually raises the inotify watch limit. Bazzite already ships this setting. You can verify it with:
sysctl fs.inotify.max_user_watchesYou should see fs.inotify.max_user_watches = 524288.
Pin these applications to your dock:
- Your terminal
- Your file explorer
- VS Code
- Your Internet browser
- Slack
If a Linux tool expects Ubuntu specifically, create an Ubuntu Distrobox instead of changing the Bazzite host:
distrobox create --name ubuntu --image ghcr.io/ublue-os/ubuntu-toolbox:latest --yesEnter it with:
distrobox enter ubuntuInside that container, apt is valid. On the Bazzite host, keep using ujust, Flatpak, Homebrew, Distrobox, and rpm-ostree.
- Bazzite software installation model
- Bazzite ujust commands
- Bazzite Homebrew guidance
- Bazzite Distrobox guidance
- Bazzite package layering guidance
Your computer is now set up for Le Wagon AI Software Development course on Bazzite.
Verified end-to-end on a fresh Bazzite 44.20260515.0 (Kinoite/KDE) install
(QEMU/Proxmox VM, installed from bazzite-stable-live-amd64.iso). Changes applied
from confirmed reproductions:
zshadded to the Homebrew install line. Bazzite ships neitherzshnor thechshcommand in the base image, so the original flow (nozshinstall +chsh -s /usr/bin/zsh) broke every later step (Oh My Zsh, dotfiles,exec zsh,rbenv init - zsh,check.rb).- Replaced
chsh -s /usr/bin/zshwith a Bazzite-correct default-shell change: add the Homebrewzshto/etc/shellsand switch withsudo usermod -s(usermodis present on Bazzite;chshis not). Confirmed working. - nvm installer no longer piped to
zsh(| zsh→| bash); the old command failed becausezshwas not yet available. - Inotify check now uses
sysctl fs.inotify.max_user_watchesinstead ofcat-ing a fixed sysctl filename (the path/filename is not stable; the value524288is correct).
Confirmed working as written (no change needed): ujust update, Homebrew
bootstrap + shellenv, brew tap ublue-os/tap + visual-studio-code-linux
cask, the full brew install formula list, the gcc/g++ symlink + PATH trick,
rbenv + Ruby 3.3.5 source build, gh, brew services start postgresql@16
(+ createdb), nvm/Node 20.17.0, Corepack/Yarn, and the Slack Flatpak
(com.slack.Slack is installable despite Bazzite's filtered Flathub).
Still verifying: course gem install line and check.rb.