Debian 11/12/13 Installation (GNOME) #
Info As of 2025-08, stock version of Debian 12/13 gives a stable system on my laptop without the need for special drivers and too much customization. For now, I am dual booting Debian 12 and 13, after a while I will likely fully switch to the version 13.
Changes in Debian 13 #
Follow the same installation procedure as for Debian 12. Most of the installation steps are the same except for minor improvements, such as in Debian 13, installation of “non-free firmware” is pre-selected by default.
Due to GNOME version being newer, not all previously used GNOME extensions are needed.
Installing the Base System #
Non-graphical vs GUI Installer #
In the live-CD boot menu choose “Expert Install” (not the graphical one), this provides the most flexible install process.
Note
One particular difference between non-graphical and GUI instllers is that the non-graphical one allows setting a simple user password (which I change post-setup anyway) and focus more on the system configuration. I sometimes forget that there are these small differences that makes selecting non-graphical installer more convenient.
Filesystem #
Do not use the default partitioning. This is important for several reasons:
- On my laptop, I have the stock Windows 11 (runs ASUS diagnostic software), and I preper the new installation would not affect it or other existing Linux distros.
- The default partitioning creates a swap partition, which I like to set up manually.
- BTRFS subvolumes and mount options in
/ettc/fstabare not very optimal (this was even more critical in Fedora, see Fedora 33/35/37 installation notes).
General points:
- Unless there are specific reasons, use
btrfsfor the primary partition. - Mount options:
noatime- reduce unnecesary writes;space_cache=v2- I think this is default now, but specifying it does not hurt;ssd- this is detected and applied automatically;discard=async- improves write/delete performance;subvol=@subvol_name- to make sure the right subvolume is used, it could be less preferable on the system partition, e.g., if at some point we plan to load into a snapshot, in which case it is better leave this option out and rely on the “default” subvolume which can be set without the need to create temporary subvolumes and editfstabto load into a snapshot.
- Create following subvolumes:
@rootfsor@;@home;@snapshots, this can be left unmounted unlesssnapperwith hooks is used;@var_cachemount at/var/cache(disable CoW);@var_logmount at/var/log(disable CoW);- (optional)
@var_lib_libvirtmount at@var/lib/libvirt(disable CoW); - (optional) for docker images and containers if they are going to be used heavily.
Post Install #
Set Timezone #
Check the current timezone:
timedatectl
If during the installation timezone was set to US East or similar (this could have been done when selecting US keyboard layout and locale), set the correct timezone with:
timedatectl set-timezone Asia/Tokyo
Packages (system-wide) #
Useful packages to be installed system wide:
ca-certificates git git-lfs gpg htop pv rsync smartmontools tilix tmux vim wgetgparted(although, this is a GUI app, I think it should be installed from debian repos)- rclone from rclone.org/install
Flatpak:
flatpak gnome-software-plugin-flatpak- then configure the Flathub repo
Dev:
build-essentialautoconf automake cmake
Userspace docker prerequisites:
dbus-user-session slirp4netns uidmapdocker-ce-rootless-extras
On Asus laptop, we may want to install asusctl. But on Debian, we have to compile it locally.
For that, in addition to Dev, we also need:
cmake libclang-dev libfontconfig-dev libudev-dev libxkbcommon-dev- Rust compiler from rustup.rs
Flatpak apps #
System Management:
ca.desrt.dconf-editorDconf Editorcom.github.tchx84.FlatsealFlatsealcom.mattjakeman.ExtensionManagerExtension Manager
Dev / Productivity:
com.github.jeromerobert.pdfarrangerPDF Arranger (could be a good alternative to PDF Chain)com.google.ChromeGoogle Chromecom.mattermost.DesktopMattermostcom.meetfranz.FranzFranzcom.opera.OperaOperacom.slack.SlackSlack (but using web-based app is more secure)com.teamspeak.TeamSpeakTeamSpeak5com.usebruno.BrunoBrunocom.vscodium.codiumVSCodium (only as a backup)md.obsidian.ObsidianObsidianme.mitya57.ReTextReText (after install: disable home dir access, network access)net.sourceforge.pdfchainPDF Chain (recently, not so good reviews, so maybe worth looking around for a good open-source alternative)org.chromium.ChromiumChromium Web Browserorg.dbgate.DbGateDbGate (again, web-based admin panels work fine many cases)org.gnome.ConnectionsConnectionsorg.gnome.EvinceDocument Viewerorg.kde.kileKile (TeX/LaTeX editor by KDE)org.kde.okularOkularorg.mozilla.firefoxFirefoxorg.mozilla.ThunderbirdThunderbird (only if there are issues integrating 3rd-party providers into Gmail)org.tug.texworksTexWorksorg.virt_manager.virt-managerVirtual Machine Manager (only if there’s a need to uselibvirt)us.zoom.ZoomZoom
Flathub apps by Developer:
Audio / Video:
org.audacityteam.AudacityAudacityorg.kde.kdenliveKdenliveorg.videolan.VLCVLCcom.obsproject.StudioOBS Studio- `` ****
GNOME Extensions #
Use the “Extension Manager” app to manage extensions. Available both in the official Debian repos and Flathub (the Flatpak version seems to work well). App logo: blue puzzle piece.
(note that the older, app with a green logo is not user-friendly and it can be used only to manage already installed extensions, does not have a feature to search and install new extensions)
Requirements for these changes depending of the system. Later versions of GNOME often include additional functionality that deprecates the need for some of the extensions.
Some of the useful extensions:
AltTab Mod(qol, when there are multiple VSCode and Firefox windows)Blur my Shell(visual, like MacOS)Caffeine(qol)ddterm(qol, quake)gTile(qol)Top Bar Organizer(qol)User Avatar In Quick Settings(visual)vitals(visual+qol)