The full post-install automation script. Run it after a fresh Debian Testing netinst and it builds out the Fluxbox workstation described in Appendix B — or any slice of it you choose.
How it works
Each piece of the setup is a component: an ID, a description,
a list of apt packages to install, an optional hook function, and a list of
profiles that enable it by default. Add a line to COMPONENT_SPECS,
and you automatically get a CLI flag, an interactive prompt, a config-file key,
and profile inclusion — nothing else to wire up.
Every component can be toggled independently of its profile defaults using
--no-id, --enable-id, or --with-id flags.
Components with a hook function run post-install logic beyond just
apt-get install.
| ID | Description | Profiles |
|---|---|---|
| cinnamon-clean | Purge Cinnamon packages (runs hook, no apt install) | workstation · full · minimal · guardrails |
| guardrails | APT guardrails — no Recommends/Suggests, no Cinnamon in apt preferences | workstation · full · minimal · guardrails |
| x | Xorg + Fluxbox core (xorg, xinit, xterm, fonts-dejavu-core, xbacklight) | workstation · full · minimal |
| network | NetworkManager + loopback-only /etc/network/interfaces |
workstation · full · minimal |
| utils | Thunar file manager, arandr display tool, numlockx | workstation · full · minimal |
| bt-batt | Blueman Bluetooth applet + cbatticon battery tray | workstation · full |
| audio | PipeWire stack (pipewire-audio, wireplumber, pavucontrol, pasystray) | workstation · full |
| audio-alsa | ALSA stack (alsa-utils, alsa-tools, alsa-oss) — use --alsa |
not in any profile by default |
| printing | CUPS + system-config-printer GUI | workstation · full |
| browsers | Chromium + Firefox ESR | workstation · full |
| extras | evince, VLC, LibreOffice, xtrlock, xfburn, simple-scan, Calibre | full |
| config | Fluxbox config skeleton (menu, keys, startup, .xinitrc) per target user | workstation · full · minimal |
| dev-tools | git, vim, tmux, htop, build-essential, curl | workstation · full |
| media-graphics | GIMP + Inkscape | full |
| media-audio | Audacity | full |
| dosbox | DOSBox Staging | full |
| casual-games | ScummVM, Xboard + GnuChess, XMahjongg, XGalaga | full |
Running it
The script requires sudo for all profiles except --dry-run,
which you can run as your normal user to preview the plan without touching the system.
By default it targets $SUDO_USER — the user who invoked sudo —
for the Fluxbox config skeleton.
sudo ./config-deb.sh
sudo ./config-deb.sh --user josh
./config-deb.sh --profile full --dry-run
sudo ./config-deb.sh --user myuser --profile full
sudo ./config-deb.sh --user myuser --profile minimal
sudo ./config-deb.sh --profile guardrails
sudo ./config-deb.sh --profile full --no-printing --no-audio
sudo ./config-deb.sh --profile workstation --alsa
sudo ./config-deb.sh --interactive
Config file
Per-user defaults can be set in ~/.config/debian-fluxbox-setup.conf
(the home of whoever invoked sudo). Supported keys: PROFILE=
and any component ID set to true or false.
CLI flags override config file settings.
The Script
The source below is the exact file. Use the copy button to grab it,
or the download link to save it directly.
Once downloaded, make it executable with chmod +x config-deb.sh.