18.10 Workstation
Work-in-progress
This page is currently under development.
Why Ansible?
Workstation setup is a recurring configuration-management task: the same packages, defaults, accounts, and documentation links need to be applied consistently across notebooks and external drives. Ansible is useful here because the desired setup can be documented as code, reviewed in Git, rerun after changes, and reused as the setup evolves. Large-scale engineering organizations use this pattern for routine configuration enforcement; for example, Uber describes Ansible playbooks for daily backup, generation, and push workflows in its corporate network setup: How Ansible Automation Powers the Uber Corporate Network at a Global Scale.
The setup for a typical workstation includes the following:
- An Ubuntu Operating System
- Setup on a notebook (PhD students)
- Setup on an external hard drive (student assistants), together with a QR-code linking to a video on how to use the “system”
The following apps are pre-installed based on a shell script:
- General
- First-steps file (on desktop), covering git config, ssh, gpg, github account, and a link to the handbook (onboarding section)
- Instead of a pre-installed E-Mail client, we recommend the web interface? (Thunderbird currently requires a paid owl extension)
- Browser: Handbook as the default page
- Paper Docker container
- Via apt
- Back-in-time
- Docker Engine
- Git
- Python
- R
- Visual Studio Code
- Zoom
- Zotero (with chrome plugin)
- Via flatpak
- LibreOffice
- KeepassXC
- Obsidian (with chrome plugin)
- OBS Studio
- Via Pip
- Jupyter
Shell script:
# Remove snap
# list all snaps
snap list
# some snaps are dependent on other snaps, snap will tell you which one shall be removed first
## first, remove all packages with Notes "-"
sudo snap remove --purge firefox
sudo snap remove --purge firmware-updater
sudo snap remove --purge gnome-3-38-2004
sudo snap remove --purge gnome-42-2204
sudo snap remove --purge gtk-common-themes
sudo snap remove --purge snap-store
sudo snap remove --purge snapd-desktop-integration
## second, remove all packages with Notes "base"
sudo snap remove --purge bare
sudo snap remove --purge core20
sudo snap remove --purge core22
## last, remove all packages with Notes "snapd"
sudo snap remove --purge snapd
# remove the snapd package itself, including configuration files
sudo apt purge snapd
sudo apt remove --purge gnome-software-plugin-snap
#sudo apt autoremove --purge snapd gnome-software-plugin-snap
# remove residual directories
rm -rf ~/snap
sudo rm -rf /snap
sudo rm -rf /var/snap
sudo rm -rf /var/lib/snapd
sudo rm -rf /var/cache/snapd/
# prevent snapd to be installed again
sudo apt-mark hold snapd
# prevent Ubuntu from automatically reinstalling snapd in the future
cat <<EOF | sudo tee /etc/apt/preferences.d/nosnap.pref
# To prevent repository packages from triggering the installation of Snap,
# this file forbids snapd from being installed by APT.
# For more information: https://linuxmint-user-guide.readthedocs.io/en/latest/snap.html
Package: snapd
Pin: release a=*
Pin-Priority: -10
EOF
#--------------------------------------------------------------------------------------------#
# disable all pre-installed (Ubuntu) gnome-extensions to enhance system stability
gnome-extensions disable ding@rastersoft.com
gnome-extensions disable tiling-assistant@ubuntu.com
gnome-extensions disable ubuntu-appindicators@ubuntu.com
gnome-extensions disable ubuntu-dock@ubuntu.com
## restore maximize and unmaximize shortcut in Ubuntu 24.04 (by default deactivated due to tiling-assistant@ubuntu.com)
gsettings set org.gnome.desktop.wm.keybindings maximize "['<Super>Up']"
gsettings set org.gnome.desktop.wm.keybindings unmaximize "['<Super>Down']"
#--------------------------------------------------------------------------------------------#
# set up flatpak
sudo apt install flatpak
flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo
sudo apt install gnome-software-plugin-flatpak
# sudo reboot
#--------------------------------------------------------------------------------------------#
# install GUI apps from flathub
flatpak install flathub md.obsidian.Obsidian
flatpak install flathub com.obsproject.Studio
flatpak install flathub org.libreoffice.LibreOffice
flatpak install flathub org.keepassxc.KeePassXC
#--------------------------------------------------------------------------------------------#
# Create a default folder structure
Setup
To set up an external hard drive, …