Published on October 12, 2024 · Reading time: 3 minutes
This weekend, I reinstalled Debian. Here’s how I’ve quickly (like, 2 hours or so) restored my main PC to a working state:
Installation
I’m installing Debian on an existing encrypted volume group with a separate
/home
partition, using minimal netinst ISO and a wired network connection, in
UEFI mode with secure boot disabled. Debian installer can’t decrypt disks, but
it is possible to do this in another virtual terminal and then configure
/etc/crypttab
manually later on, as described
in this blog post.
As a side note, this was possible on Ubuntu as well, but not only has Canonical not published any netinst images for the recent 24.04 LTS, they have not implemented ANY support for decrypted disks in their new Flutter installer, rendering this distro unusable for any serious work.
During the setup, I’ve decided to enable non-free repositories and backports and
selected only a minimal set of packages (no GUI). After the reboot, I’ve run
apt-get install gnome-core
to install only the required components of GNOME
desktop, without games and extra apps. This adds NetworkManager as a dependency,
so I’ve had to remove the old /etc/network/interfaces
file.
You may want to install other packages as well, such as cups (printing service), file-roller (archive manager), gnome-calendar, gnome-clocks, gnome-weather, simple-scan and so on.
UX improvements
Debian 12 ships with GNOME 43, which has some GTK3 apps, some GTK4 apps, and
some libadwaita-based apps. Thankfully, there is an
adw-gtk3 project that makes
theming more consistent. Copy theme files to ~/.local/share/themes
and enable
it using a gnome-tweaks app.
I don’t really like the Cantarell font, mostly because it’s too thin. Inter (the one used on this very website) looks much better and can be installed from the fonts-inter package.
If you need your PC for anything productive, disable attaching modal windows using the Tweaks app. Oh, and add minimize and maximize buttons if you wish.
Some useful extensions can be installed from the gnome-shell-extension-manager app. Make sure to remove gnome-shell-extension-prefs because it is redundant in this case.
Software selection
Firefox: Removed firefox-esr and installed a standard version from Firefox APT repo. From a security standpoint, it’s better to run the latest browser’s version directly from Mozilla.
Chromium: Installed from the main repo, it may be slightly out-of-date because it’s maintained by Debian, but I use this browser only for testing.
Epiphany: Installed from the main repo. Once again, its engine is based on Safari 17, but I need it only for testing.
Nemo: Nautilus, the default file manager of GNOME, is very unstable in this release, and Nemo is a good replacement.
LibreOffice: Installed libreoffice-{writer,calc,gnome,gtk4} from backports. Added Polish language support: task-polish, hunspell-pl.
VLC: Removed totem (GNOME video player) and installed VLC. Missing thumbnails can be restored by ffmpegthumbnailer package.
KiCad: Installed from backports.
Docker: Installed Docker Engine based on official instructions.
VirtualBox: Installed VirtualBox 7.0 based on official instructions. I don’t like the new UI of VirtualBox 7.1, so I’ll stick with the older version for now.
Python: Python 3.11 is installed by default, and sadly there are no newer versions in Debian repos. You can try to install deadsnakes PPA, even if it is meant to be used with Ubuntu. pip can be installed from python3-pip package.
Node.js: Installed Node 20.x from NodeSource, based on manual installation instructions.
Other software can be installed from the main repo, backports, third-party repos, or Flathub.
Check out other blog posts:
-
Making framebuf text 10x faster in CircuitPython
2024-12-23
Finding a cause of slow text rendering and optimizing it for monochrome LCD and OLED displays.
-
Tracking libadwaita adoption in Fedora (updated)
2024-10-29
The complete list of software preinstalled in Fedora, including apps using the libadwaita library.
-
Creating ST7565 driver for CircuitPython
2024-05-30
Analyzing original framebuf driver and implementing modern version for displayio compositor.