This guide provides instructions for setting up a developer workstation using Debian 12 "Bookworm" or 13 "Trixie" (currently unreleased). The ansible playbook automates the installation of software and configurations. Your version of Debian is detected, and the best package options are chosen for you.
While the software and setup choices are mainly aimed towards developers, it is also suitable for general use.
Before running the playbook, follow these steps to install Debian:
You can use the testing installer until Trixie is released this summer:
If you already have a clean install of Bookworm and want to update to Trixie before using this playbook:
- Check you have about 5 gig free disk space with
df -h
sudo apt-get update && sudo apt-get dist-upgrade --autoremove -y
sudo sed -i 's/bookworm/trixie/g' /etc/apt/sources.list
sudo apt-get update && sudo apt-get dist-upgrade --autoremove -y
Note
There is a bug in the Debian 12 installer, if you use the default guided partitioner, you will get a swap partition of only 1 GB regardless of how much RAM you have. To get an uncapped swap partition size, in the grub menu before the Debian installer runs, follow these steps:
-
Press "e" to edit the default installation option.
-
In the line that says
linux /install.amd/vmlinuz vga=788 --- quiet
, add the following separated by a space aftervmlinuz
:partman-auto/cap-ram=n
-
Press Ctrl-x or F10 to continue.
Note
- Do not provide any details for the root account, your user account will then have administrative rights.
- Leave Gnome as the default desktop environment.
- If you installed from a DVD ISO use the Software & Updates application or the terminal to remove
cdrom
from/etc/apt/sources.list
. Look in Other Software:
-
Open the terminal and run the following command to install Ansible, git, and Flatpak:
sudo apt install ansible git flatpak
-
Clone this repository and navigate to it:
git clone https://github.com/David-Else/developer-workstation-setup-script-debian cd developer-workstation-setup-script-debian
-
Customize the software selection by modifying
packages.yml
according to your preferences. -
Run the main installation playbook:
Note
When prompted for the BECOME
password in Ansible, enter your user password. Your account must have administrative privileges.
You can add --check
for a test run or --diff, -vv
to see more info.
ansible-playbook ./install-playbook.yml -K
-
To enable the preview feature in the
nnn
file manager, run it once with the-a
flag to create the FIFO file. -
Install showmethekey:
cd extras unzip showmethekey-1.12.0-compiled.zip cd showmethekey-1.12.0 sudo ./install-show-me-the-key.sh
-
Install Firefox extensions:
firefox https://addons.mozilla.org/en-GB/firefox/addon/ublock-origin/ \ https://addons.mozilla.org/en-US/firefox/addon/surfingkeys_ff/ \ https://addons.mozilla.org/en-US/firefox/addon/leechblock-ng/ \ https://addons.mozilla.org/en-US/firefox/addon/keepassxc-browser/ &
-
Compile tt terminal typing test from source:
git clone https://github.com/lemnos/tt cd tt make && sudo make install
-
Update MPV config file for Debian 13 by uncommenting sections intended for the new version.
-
Change the visudo editor to vim:
sudo update-alternatives --config editor
-
Install Rust and AIChat:
set -o pipefail &&
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y &&
. "$HOME/.cargo/env" &&
rustup component add rust-analyzer &&
cargo install aichat --version 0.29.0
sudo cp ./extras/_aichat /usr/share/zsh/vendor-completions/
sudo reboot
Depending on your software selection, hardware, and personal preferences, you may want to make the following changes:
You can confirm the allowed sample rate settings were changed by the playbook with pw-metadata -n settings
and watch the sample rates change per application running pw-top
.
Note
More info can be found at: docs.pipewire.org configuration-file-pipewireconf
To perform general tweaks, follow these steps:
-
Set Helix to open in Kitty, the desktop file should use absolute paths if it lives in
~/.local/share/applications/
:Exec=/home/user/.local/kitty.app/bin/kitty --single-instance /home/david/.cargo/bin/hx %F Icon=/home/user/.icons/helix.png
-
Configure Git email and name:
git config --global user.email "[email protected]" git config --global user.name "Your Name"
Enable GPG signing for commits:
git config --global user.signingkey key git config --global commit.gpgsign true
-
Install extras:
gh extension install yusukebe/gh-markdown-preview gh extension install dlvhdr/gh-dash hx ~/.config/gh-dash/config.yml # diff: "delta"
-
sudo apt install v4l2loopback-dkms v4l2loopback-utils
for virtual video devices
If you would like to use Code for things that Helix still struggles with (like debugging), and still use all the modal keyboard shortcuts, I suggest installing silverquark.dancehelix
or asvetliakov.vscode-neovim
and using these settings:
You might also like to install ms-vscode.live-server
for live debugging in Code or the browser.
If you get no bootable device found after installing Debian, try https://itsfoss.com/no-bootable-device-found-ubuntu/. Basically, add shimx64.efi
as trusted EFI file to be executed.
Note
Bonus: If you are using gnome-boxes don't forget to install spice-vdagent
only on the guest AND restart the virtual machine to get copy and paste working. You can check it is running with sudo systemctl status spice-vdagent
and enable at boot if needed with sudo systemctl enable spice-vdagent
.