From 2d63dc0fd320d3914221459f11d545a9f61c6449 Mon Sep 17 00:00:00 2001 From: Ronny Standtke Date: Sat, 16 Aug 2025 22:31:38 +0200 Subject: [PATCH 01/55] first steps for Debian 13 --- config/package-lists/commandline.list.chroot | 4 ++-- .../debian_contrib-default.list.chroot | 4 ++-- .../debian_main-core.list.chroot | 19 +++++++++---------- .../debian_main-default.list.chroot | 5 +---- .../debian_main-mini.list.chroot | 11 +++++------ .../debian_main-standard.list.chroot | 5 ++--- config/package-lists/education.list.chroot | 2 +- config/package-lists/games.list.chroot | 2 +- config/package-lists/gnome-core.list.chroot | 4 ++-- config/package-lists/kde.list.chroot | 6 +++--- .../lernstick-cinnamon.list.chroot | 2 +- .../package-lists/lernstick-core.list.chroot | 6 +++--- .../lernstick-education.list.chroot | 2 +- .../package-lists/lernstick-kde.list.chroot | 2 +- .../package-lists/lernstick-lxde.list.chroot | 2 +- .../package-lists/lernstick-mini.list.chroot | 5 ++--- .../lernstick-standard.list.chroot | 4 ++-- functions.sh | 5 ++--- 18 files changed, 41 insertions(+), 49 deletions(-) diff --git a/config/package-lists/commandline.list.chroot b/config/package-lists/commandline.list.chroot index 555c5b0f..aff3cb08 100644 --- a/config/package-lists/commandline.list.chroot +++ b/config/package-lists/commandline.list.chroot @@ -11,10 +11,11 @@ bash-completion bind9-host btop command-not-found -deborphan +#deborphan debtree dialog duf +fastfetch hexyl htop icnsutils @@ -27,7 +28,6 @@ less mc mtools ncdu -neofetch nethogs netpbm nvitop diff --git a/config/package-lists/debian_contrib-default.list.chroot b/config/package-lists/debian_contrib-default.list.chroot index df40f444..39a50de0 100644 --- a/config/package-lists/debian_contrib-default.list.chroot +++ b/config/package-lists/debian_contrib-default.list.chroot @@ -6,5 +6,5 @@ # ################################################################################ -virtualbox -virtualbox-qt +#virtualbox +#virtualbox-qt diff --git a/config/package-lists/debian_main-core.list.chroot b/config/package-lists/debian_main-core.list.chroot index a6bf0623..5f58dddc 100644 --- a/config/package-lists/debian_main-core.list.chroot +++ b/config/package-lists/debian_main-core.list.chroot @@ -18,7 +18,7 @@ avahi-utils cifs-utils console-setup cryptsetup-initramfs -cryptsetup-run +cryptsetup davfs2 dfrs #ecryptfs-utils @@ -42,7 +42,7 @@ fonts-ubuntu-console gdm3 gedit gedit-plugins -gedit-plugin-text-size +#gedit-plugin-text-size gnome-clocks gstreamer1.0-alsa gstreamer1.0-libav @@ -60,8 +60,8 @@ i965-va-driver #icedtea-8-plugin keyutils libbluray-bdj -libcanberra-gtk0 -libcanberra-gtk-module +libcanberra-gtk3-0 +libcanberra-gtk3-module libgl1-mesa-dri libva-glx2 live-tools @@ -80,7 +80,7 @@ mesa-vulkan-drivers modemmanager mokutil nala -network-manager-fortisslvpn +#network-manager-fortisslvpn #network-manager-iodine network-manager-l2tp network-manager-openconnect @@ -105,8 +105,7 @@ rfkill rng-tools5 rsync smbclient -smbios-utils -software-properties-gtk +#software-properties-gtk spice-vdagent squashfs-tools sshfs @@ -136,7 +135,7 @@ xserver-xorg-input-evdev #xserver-xorg-input-joystick (DON'T install, it breaks gamepads!) xserver-xorg-input-kbd xserver-xorg-input-mouse -xserver-xorg-input-mutouch +#xserver-xorg-input-mutouch #xserver-xorg-input-synaptics xserver-xorg-input-wacom xserver-xorg-input-xwiimote @@ -145,11 +144,11 @@ xserver-xorg-video-amdgpu xserver-xorg-video-cirrus xserver-xorg-video-dummy xserver-xorg-video-glide -xserver-xorg-video-ivtv +#xserver-xorg-video-ivtv xserver-xorg-video-mach64 xserver-xorg-video-mga xserver-xorg-video-neomagic -xserver-xorg-video-openchrome +#xserver-xorg-video-openchrome xserver-xorg-video-qxl xserver-xorg-video-r128 xserver-xorg-video-savage diff --git a/config/package-lists/debian_main-default.list.chroot b/config/package-lists/debian_main-default.list.chroot index 8b732d66..e41d51d1 100644 --- a/config/package-lists/debian_main-default.list.chroot +++ b/config/package-lists/debian_main-default.list.chroot @@ -4,14 +4,11 @@ # standard and exam version, but are *NOT* needed in all customized exam # versions. # -# * synaptic needs apt-xapian-index for quicksearch -# ################################################################################ -apt-xapian-index clamtk eog-plugins -epoptes-client +#epoptes-client firefox-esr firefox-esr-l10n-de firefox-esr-l10n-en-gb diff --git a/config/package-lists/debian_main-mini.list.chroot b/config/package-lists/debian_main-mini.list.chroot index ddb5859f..39147158 100644 --- a/config/package-lists/debian_main-mini.list.chroot +++ b/config/package-lists/debian_main-mini.list.chroot @@ -37,7 +37,7 @@ dmz-cursor-theme dolphin #dolphin-nextcloud dolphin-owncloud -epoptes +#epoptes #ffplay flac fritzing @@ -75,7 +75,7 @@ jmtpfs jstest-gtk keepassxc kfind -kipi-plugins +#kipi-plugins kmag kmousetool konq-plugins @@ -135,7 +135,7 @@ qtqr rawtherapee samba samplerate-programs -sane +#sane sane-utils #scrcpy sddm @@ -145,7 +145,7 @@ sonic-pi spice-webdavd subversion swh-plugins -synfigstudio +#synfigstudio tesseract-ocr-deu tesseract-ocr-eng tesseract-ocr-fra @@ -164,12 +164,11 @@ thunderbird-l10n-ru thunderbird-l10n-sq totem-plugins vim-gtk3 -vinagre #vym wireshark xournal xsane -youtube-dl +yt-dlp zenmap zint-qt zsync diff --git a/config/package-lists/debian_main-standard.list.chroot b/config/package-lists/debian_main-standard.list.chroot index c6501f3d..0fd8c142 100644 --- a/config/package-lists/debian_main-standard.list.chroot +++ b/config/package-lists/debian_main-standard.list.chroot @@ -3,7 +3,7 @@ colobot enigma exe-thumbnailer extremetuxracer -geogebra-classic +#geogebra-classic geogebra-gnome gimp gimp-data @@ -15,8 +15,7 @@ gimp-help-es gimp-help-fr gimp-help-it gimp-help-ru -gimp-plugin-registry -#gimp-python +#gimp-plugin-registry gimp-texturize kstars kstars-data diff --git a/config/package-lists/education.list.chroot b/config/package-lists/education.list.chroot index c3b89b82..5361e482 100644 --- a/config/package-lists/education.list.chroot +++ b/config/package-lists/education.list.chroot @@ -16,7 +16,7 @@ pianobooster pspp #pymol pysiogame -speedcrunch +#speedcrunch step tipp10 tuxmath diff --git a/config/package-lists/games.list.chroot b/config/package-lists/games.list.chroot index b6e34def..246a1440 100644 --- a/config/package-lists/games.list.chroot +++ b/config/package-lists/games.list.chroot @@ -9,7 +9,7 @@ armagetronad blockout2 crack-attack dossizola -fb-music-high +#fb-music-high foobillardplus freeciv-client-gtk4 freeciv-server diff --git a/config/package-lists/gnome-core.list.chroot b/config/package-lists/gnome-core.list.chroot index 7c29e50b..20c49b4a 100644 --- a/config/package-lists/gnome-core.list.chroot +++ b/config/package-lists/gnome-core.list.chroot @@ -6,16 +6,16 @@ ################################################################################ gnome-core +gnome-shell-extension-appindicator gnome-shell-extension-dashtodock gnome-shell-extension-dash-to-panel gnome-shell-extension-desktop-icons-ng #gnome-shell-extension-draw-on-your-screen gnome-shell-extension-gpaste gnome-shell-extensions -gnome-shell-extension-top-icons-plus nautilus #nautilus-wipe -network-manager-fortisslvpn-gnome +#network-manager-fortisslvpn-gnome network-manager-gnome #network-manager-iodine-gnome network-manager-l2tp-gnome diff --git a/config/package-lists/kde.list.chroot b/config/package-lists/kde.list.chroot index b2aae6cf..0031fcd4 100644 --- a/config/package-lists/kde.list.chroot +++ b/config/package-lists/kde.list.chroot @@ -16,14 +16,14 @@ kde-config-cddb kde-config-cron kde-config-gtk-style kde-config-gtk-style-preview -kde-config-systemd +#kde-config-systemd kdegraphics-thumbnailers kdenetwork-filesharing kde-style-qtcurve-qt5 kdf kdialog kfourinline -kgamma5 +kgamma khelpcenter kio-audiocd kiriki @@ -33,7 +33,7 @@ klines kmahjongg kmenuedit kmines -knotes +#knotes konsole kpat kreversi diff --git a/config/package-lists/lernstick-cinnamon.list.chroot b/config/package-lists/lernstick-cinnamon.list.chroot index 931acbc0..5b8e9e07 100644 --- a/config/package-lists/lernstick-cinnamon.list.chroot +++ b/config/package-lists/lernstick-cinnamon.list.chroot @@ -1,2 +1,2 @@ -lernstick-cinnamon-screensaver +#lernstick-cinnamon-screensaver lernstick-nemo diff --git a/config/package-lists/lernstick-core.list.chroot b/config/package-lists/lernstick-core.list.chroot index 1254b84f..021fd141 100644 --- a/config/package-lists/lernstick-core.list.chroot +++ b/config/package-lists/lernstick-core.list.chroot @@ -15,7 +15,7 @@ lernstick-config lernstick-distro-info-data lernstick-execute-jar lernstick-htop -lernstick-imagemagick +#lernstick-imagemagick lernstick-libinput-quirks lernstick-mc lernstick-menu @@ -24,9 +24,9 @@ lernstick-onboard #lernstick-openjdk-8-jre lernstick-python-apt-common lernstick-ranger -lernstick-software-properties-gtk +#lernstick-software-properties-gtk lernstick-speech-dispatcher -lernstick-systemd +#lernstick-systemd lernstick-texlive-base lernstick-theme lernstick-vim-common diff --git a/config/package-lists/lernstick-education.list.chroot b/config/package-lists/lernstick-education.list.chroot index 3cdc3af6..01615a5c 100644 --- a/config/package-lists/lernstick-education.list.chroot +++ b/config/package-lists/lernstick-education.list.chroot @@ -23,7 +23,7 @@ lernstick-pspp #lernstick-pymol #lernstick-schatz-der-kulturen lernstick-sikore -lernstick-speedcrunch +#lernstick-speedcrunch lernstick-step lernstick-tipp10 lernstick-toporopa diff --git a/config/package-lists/lernstick-kde.list.chroot b/config/package-lists/lernstick-kde.list.chroot index 87c98871..274da7a0 100644 --- a/config/package-lists/lernstick-kde.list.chroot +++ b/config/package-lists/lernstick-kde.list.chroot @@ -15,7 +15,7 @@ lernstick-klickety lernstick-klines lernstick-kmahjongg lernstick-kmines -lernstick-knotes +#lernstick-knotes lernstick-konsole lernstick-kpat lernstick-kreversi diff --git a/config/package-lists/lernstick-lxde.list.chroot b/config/package-lists/lernstick-lxde.list.chroot index eb7cc521..ef5eb5a9 100644 --- a/config/package-lists/lernstick-lxde.list.chroot +++ b/config/package-lists/lernstick-lxde.list.chroot @@ -5,7 +5,7 @@ lernstick-gpicview lernstick-lxtask lernstick-lxterminal lernstick-obconf -lernstick-parcellite +#lernstick-parcellite lernstick-pcmanfm lernstick-usermode lernstick-xarchiver diff --git a/config/package-lists/lernstick-mini.list.chroot b/config/package-lists/lernstick-mini.list.chroot index bfcff8dc..b57e7858 100644 --- a/config/package-lists/lernstick-mini.list.chroot +++ b/config/package-lists/lernstick-mini.list.chroot @@ -5,7 +5,7 @@ # ################################################################################ -dlcopy +#dlcopy jbackpack-full #lernstick-amarok #lernstick-amarok-utils @@ -21,7 +21,6 @@ lernstick-fritzing lernstick-fsview #lernstick-gdebi-kde lernstick-gnome-characters -lernstick-gnome-dictionary lernstick-gnome-logs lernstick-gnome-screenshot lernstick-gnome-software @@ -61,7 +60,7 @@ lernstick-terminology lernstick-totem lernstick-transmission-gtk lernstick-usertemplate -lernstickwelcome +#lernstickwelcome lernstick-xjadeo lernstick-xlogo-online lernstick-xsane diff --git a/config/package-lists/lernstick-standard.list.chroot b/config/package-lists/lernstick-standard.list.chroot index 66e1ed4c..ddc40ddc 100644 --- a/config/package-lists/lernstick-standard.list.chroot +++ b/config/package-lists/lernstick-standard.list.chroot @@ -3,7 +3,7 @@ bluej lernstick-bluej lernstick-colobot lernstick-geogebra -lernstick-geogebra-classic +#lernstick-geogebra-classic lernstick-gimp #lernstick-gimp-draw-arrow-plugin lernstick-greenfoot @@ -18,7 +18,7 @@ lernstick-tuxpaint #lernstick-virtualbox lernstick-wine lernstick-winetricks -libreoffice-kf5 +libreoffice-kf6 libreoffice-plasma live-enigma minetest-mod-3d-armor diff --git a/functions.sh b/functions.sh index 9584dd81..2bc2ae80 100755 --- a/functions.sh +++ b/functions.sh @@ -97,10 +97,9 @@ build_image() --chroot-squashfs-compression-level 22 \ --chroot-squashfs-compression-type zstd \ --debootstrap-options "--include=ca-certificates,openssl" \ - --distribution bookworm \ + --distribution trixie \ --firmware-chroot false \ --iso-volume "lernstick${ISO_SUFFIX} ${TODAY}" \ - --linux-packages linux-image-6.12.9+bpo \ --mirror-binary ${MIRROR_SYSTEM} \ --mirror-binary-security ${MIRROR_SECURITY_SYSTEM} \ --mirror-bootstrap ${MIRROR_BUILD} \ @@ -108,7 +107,7 @@ build_image() --source ${SOURCE} \ --updates true \ --verbose - #--linux-packages linux-image-6.1.0-0.deb11.7 \ + #--linux-packages linux-image-6.12.9+bpo \ # let's hope that we are no longer encountering machines that just freeze with isohybrid images: # https://lists.debian.org/debian-live/2011/08/msg00144.html # if this is still a problem we need to change back from the default of "iso-hybrid" to plain "iso" From 2b6333f79180792dfcf545ca119555f9c8355895 Mon Sep 17 00:00:00 2001 From: Ronny Standtke Date: Sun, 17 Aug 2025 01:29:31 +0200 Subject: [PATCH 02/55] first debian13 ISO build --- config/package-lists/debian_main_amd64.list.chroot | 8 -------- config/package-lists/lernstick-drivers.list.chroot | 10 +++++----- functions.sh | 2 +- 3 files changed, 6 insertions(+), 14 deletions(-) delete mode 100644 config/package-lists/debian_main_amd64.list.chroot diff --git a/config/package-lists/debian_main_amd64.list.chroot b/config/package-lists/debian_main_amd64.list.chroot deleted file mode 100644 index 1569e65d..00000000 --- a/config/package-lists/debian_main_amd64.list.chroot +++ /dev/null @@ -1,8 +0,0 @@ -################################################################################ -# -# * virtualbox and other dkms based modules needs linux-headers-*, otherwise -# these kernel modules can not be compiled -# -################################################################################ - -linux-headers-6.12.9+bpo-amd64 diff --git a/config/package-lists/lernstick-drivers.list.chroot b/config/package-lists/lernstick-drivers.list.chroot index b6662e43..4fd5acff 100644 --- a/config/package-lists/lernstick-drivers.list.chroot +++ b/config/package-lists/lernstick-drivers.list.chroot @@ -1,5 +1,5 @@ -broadcom-sta-modules-6.12.9+bpo-amd64-signed -nvidia-kernel-535.216.01-6.12.9+bpo-amd64-signed -rtl88x2bu-modules-6.12.9+bpo-amd64-signed -v4l2loopback-modules-6.12.9+bpo-amd64-signed -virtualbox-modules-6.12.9+bpo-amd64-signed +#broadcom-sta-modules-6.12.9+bpo-amd64-signed +#nvidia-kernel-535.216.01-6.12.9+bpo-amd64-signed +#rtl88x2bu-modules-6.12.9+bpo-amd64-signed +#v4l2loopback-modules-6.12.9+bpo-amd64-signed +#virtualbox-modules-6.12.9+bpo-amd64-signed diff --git a/functions.sh b/functions.sh index 2bc2ae80..dfeae4a7 100755 --- a/functions.sh +++ b/functions.sh @@ -124,7 +124,7 @@ build_image() mv ${ISO_FILE} ${IMAGE} # we must update the zsync file because we renamed the iso file echo "Updating zsync file..." | tee -a logfile.txt - rm *.zsync + rm -f *.zsync zsyncmake -C ${IMAGE} -u ${IMAGE} echo "Creating MD5 for iso..." | tee -a logfile.txt md5sum ${IMAGE} > ${IMAGE}.md5 From 24bc55b052f140acbad527d7ff4bdb0549d7d6a1 Mon Sep 17 00:00:00 2001 From: Ronny Standtke Date: Sun, 17 Aug 2025 01:35:47 +0200 Subject: [PATCH 03/55] disabled onedrive because of https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1101407 --- config/package-lists/debian_main-mini.list.chroot | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/package-lists/debian_main-mini.list.chroot b/config/package-lists/debian_main-mini.list.chroot index 39147158..18e99be6 100644 --- a/config/package-lists/debian_main-mini.list.chroot +++ b/config/package-lists/debian_main-mini.list.chroot @@ -122,7 +122,7 @@ obs-transition-table obs-vintage-filter okular okular-extra-backends -onedrive +#onedrive disabled because of https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1101407 owncloud-client photofilmstrip qelectrotech From 9963b36cca752acf78a5408563722ba4fb2bc733 Mon Sep 17 00:00:00 2001 From: Ronny Standtke Date: Sun, 17 Aug 2025 02:01:10 +0200 Subject: [PATCH 04/55] updated uninstall hook --- config/hooks/live/uninstall_packages.chroot | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/config/hooks/live/uninstall_packages.chroot b/config/hooks/live/uninstall_packages.chroot index beca6951..ea97326b 100755 --- a/config/hooks/live/uninstall_packages.chroot +++ b/config/hooks/live/uninstall_packages.chroot @@ -7,15 +7,11 @@ # system so we have to remove them here right afer installing them... apt-get purge -y \ blueman \ - exim4-base \ - exim4-config \ - exim4-daemon-light \ gnome-robots \ gnome-system-tools \ gucharmap \ hexchat \ - minidlna \ - nextcloud-desktop-doc \ + malcontent-gui \ plasma-discover \ plasma-discover-common \ system-tools-backends \ From 3f880b93b7a0247c882619d52f1e4a5ff9b03864 Mon Sep 17 00:00:00 2001 From: Ronny Standtke Date: Sun, 17 Aug 2025 03:06:54 +0200 Subject: [PATCH 05/55] updated version number in title and ISO name --- functions.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/functions.sh b/functions.sh index dfeae4a7..86a2a3f8 100755 --- a/functions.sh +++ b/functions.sh @@ -77,7 +77,7 @@ build_image() # GRUB GRUB_THEME_DIR="config/includes.binary/boot/grub/themes/lernstick" cp templates/theme.txt ${GRUB_THEME_DIR} - sed -i "s|title-text.*|title-text: \"Lernstick Debian 12 (Version ${TODAY})\"|1" \ + sed -i "s|title-text.*|title-text: \"Lernstick Debian 13 (Version ${TODAY})\"|1" \ ${GRUB_THEME_DIR}/theme.txt # update configuration @@ -119,7 +119,7 @@ build_image() ISO_FILE="live-image-amd64.hybrid.iso" if [ -f ${ISO_FILE} ] then - PREFIX="lernstick_debian12${ISO_SUFFIX}_${TODAY}" + PREFIX="lernstick_debian13${ISO_SUFFIX}_${TODAY}" IMAGE="${PREFIX}.iso" mv ${ISO_FILE} ${IMAGE} # we must update the zsync file because we renamed the iso file From d3e369e46a11fdf323a61c88395275c5fae1f957 Mon Sep 17 00:00:00 2001 From: Ronny Standtke Date: Wed, 20 Aug 2025 12:12:53 +0200 Subject: [PATCH 06/55] renamed archives for Debian 13 --- config/archives/{lernstick-12.key => lernstick-13.key} | 0 config/archives/{lernstick-12.list => lernstick-13.list} | 4 ++++ 2 files changed, 4 insertions(+) rename config/archives/{lernstick-12.key => lernstick-13.key} (100%) rename config/archives/{lernstick-12.list => lernstick-13.list} (88%) diff --git a/config/archives/lernstick-12.key b/config/archives/lernstick-13.key similarity index 100% rename from config/archives/lernstick-12.key rename to config/archives/lernstick-13.key diff --git a/config/archives/lernstick-12.list b/config/archives/lernstick-13.list similarity index 88% rename from config/archives/lernstick-12.list rename to config/archives/lernstick-13.list index 3d8a8d45..805b1eca 100644 --- a/config/archives/lernstick-12.list +++ b/config/archives/lernstick-13.list @@ -1,3 +1,7 @@ +# Lernstick specific packages +deb [arch=amd64,arm64] http://packages.lernstick.ch/lernstick lernstick-13 main contrib non-free +deb-src http://packages.lernstick.ch/lernstick lernstick-13 main contrib non-free + # Lernstick specific packages deb [arch=amd64,arm64] http://packages.lernstick.ch/lernstick lernstick-12 main contrib non-free deb-src http://packages.lernstick.ch/lernstick lernstick-12 main contrib non-free From bae4090461c380ef647df44b96d6f3ab9910db73 Mon Sep 17 00:00:00 2001 From: Ronny Standtke Date: Wed, 20 Aug 2025 12:13:50 +0200 Subject: [PATCH 07/55] removed eog (replaced by loupe) --- config/package-lists/debian_main-default.list.chroot | 1 - config/package-lists/lernstick-default.list.chroot | 1 - 2 files changed, 2 deletions(-) diff --git a/config/package-lists/debian_main-default.list.chroot b/config/package-lists/debian_main-default.list.chroot index e41d51d1..aaba4d40 100644 --- a/config/package-lists/debian_main-default.list.chroot +++ b/config/package-lists/debian_main-default.list.chroot @@ -7,7 +7,6 @@ ################################################################################ clamtk -eog-plugins #epoptes-client firefox-esr firefox-esr-l10n-de diff --git a/config/package-lists/lernstick-default.list.chroot b/config/package-lists/lernstick-default.list.chroot index 6646f0b4..53526c74 100644 --- a/config/package-lists/lernstick-default.list.chroot +++ b/config/package-lists/lernstick-default.list.chroot @@ -8,7 +8,6 @@ jitsi-meet-electron lernstick-baobab -lernstick-eog lernstick-evince lernstick-file-roller lernstick-firefox-addons From 238bb574bf8ddecfbf2101869c2e72a0fa8e8707 Mon Sep 17 00:00:00 2001 From: Ronny Standtke Date: Wed, 20 Aug 2025 16:36:47 +0200 Subject: [PATCH 08/55] updated package lists for Debian 13 --- config/package-lists/debian_main-core.list.chroot | 7 +------ .../package-lists/debian_main-default.list.chroot | 1 - config/package-lists/debian_main-mini.list.chroot | 13 ------------- config/package-lists/education.list.chroot | 1 - config/package-lists/gnome-core.list.chroot | 1 + config/package-lists/gnome-default.list.chroot | 2 +- config/package-lists/kde.list.chroot | 2 -- config/package-lists/lernstick-core.list.chroot | 2 +- .../package-lists/lernstick-education.list.chroot | 1 - .../package-lists/lernstick-gnome-core.list.chroot | 2 +- .../package-lists/lernstick-gnome-mini.list.chroot | 1 - config/package-lists/lernstick-kde.list.chroot | 1 - config/package-lists/lernstick-lxde.list.chroot | 2 +- config/package-lists/lernstick-mini.list.chroot | 9 --------- config/package-lists/lernstick-standard.list.chroot | 1 - config/package-lists/lernstick-xfce.list.chroot | 1 + config/package-lists/libreoffice-core.list.chroot | 1 - config/package-lists/xfce.list.chroot | 5 ++--- 18 files changed, 9 insertions(+), 44 deletions(-) diff --git a/config/package-lists/debian_main-core.list.chroot b/config/package-lists/debian_main-core.list.chroot index 5f58dddc..641bdf2a 100644 --- a/config/package-lists/debian_main-core.list.chroot +++ b/config/package-lists/debian_main-core.list.chroot @@ -40,9 +40,6 @@ fonts-roboto fonts-ubuntu fonts-ubuntu-console gdm3 -gedit -gedit-plugins -#gedit-plugin-text-size gnome-clocks gstreamer1.0-alsa gstreamer1.0-libav @@ -50,9 +47,7 @@ gstreamer1.0-plugins-bad gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-ugly -# gstreamer1.0-vaapi crashes Xorg on a Lenovo Ideapad 3 14ARE05, see: -# https://bugs.launchpad.net/ubuntu/+source/xorg-server/+bug/1861609 -#gstreamer1.0-vaapi +gstreamer1.0-vaapi gtkman haveged i2c-tools diff --git a/config/package-lists/debian_main-default.list.chroot b/config/package-lists/debian_main-default.list.chroot index aaba4d40..3a0a84d1 100644 --- a/config/package-lists/debian_main-default.list.chroot +++ b/config/package-lists/debian_main-default.list.chroot @@ -28,6 +28,5 @@ gtkhash lshw-gtk menulibre seahorse -#shutter synaptic virt-manager diff --git a/config/package-lists/debian_main-mini.list.chroot b/config/package-lists/debian_main-mini.list.chroot index 18e99be6..6f2c5692 100644 --- a/config/package-lists/debian_main-mini.list.chroot +++ b/config/package-lists/debian_main-mini.list.chroot @@ -16,7 +16,6 @@ amsynth #apper arandr -#ardesia blop bluetooth bluez-cups @@ -38,7 +37,6 @@ dolphin #dolphin-nextcloud dolphin-owncloud #epoptes -#ffplay flac fritzing fritzing-parts @@ -50,7 +48,6 @@ gparted graphviz gstreamer1.0-packagekit gwakeonlan -#handbrake-gtk heif-thumbnailer hugin hunspell-de-at @@ -83,14 +80,6 @@ konqueror krename #ktimetracker #lilypond -# mypaint is currently not co-installable with gimp, see -# https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=894757 -# https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=897909 -# https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=906144 -# Therefore we can install mypaint only from flathub -#mypaint -#mypaint-data -#mypaint-data-extras myspell-es myspell-fa mystiq @@ -141,7 +130,6 @@ sane-utils sddm smb4k sonic-pi -#spamassassin spice-webdavd subversion swh-plugins @@ -164,7 +152,6 @@ thunderbird-l10n-ru thunderbird-l10n-sq totem-plugins vim-gtk3 -#vym wireshark xournal xsane diff --git a/config/package-lists/education.list.chroot b/config/package-lists/education.list.chroot index 5361e482..5cd7fcb4 100644 --- a/config/package-lists/education.list.chroot +++ b/config/package-lists/education.list.chroot @@ -3,7 +3,6 @@ avogadro #bkchem chemtool -#childsplay jfractionlab kalgebra kgeography diff --git a/config/package-lists/gnome-core.list.chroot b/config/package-lists/gnome-core.list.chroot index 20c49b4a..d3998aa1 100644 --- a/config/package-lists/gnome-core.list.chroot +++ b/config/package-lists/gnome-core.list.chroot @@ -13,6 +13,7 @@ gnome-shell-extension-desktop-icons-ng #gnome-shell-extension-draw-on-your-screen gnome-shell-extension-gpaste gnome-shell-extensions +gnome-shell-extension-workspace-indicator nautilus #nautilus-wipe #network-manager-fortisslvpn-gnome diff --git a/config/package-lists/gnome-default.list.chroot b/config/package-lists/gnome-default.list.chroot index 7a670224..25d18b05 100644 --- a/config/package-lists/gnome-default.list.chroot +++ b/config/package-lists/gnome-default.list.chroot @@ -10,6 +10,6 @@ clamtk-gnome #eiciel # breaks l10n in nautilus font-manager gnome-tweaks -#nautilus-font-manager +nautilus-font-manager #nautilus-gtkhash seahorse-nautilus diff --git a/config/package-lists/kde.list.chroot b/config/package-lists/kde.list.chroot index 0031fcd4..a37035a0 100644 --- a/config/package-lists/kde.list.chroot +++ b/config/package-lists/kde.list.chroot @@ -38,8 +38,6 @@ konsole kpat kreversi ksudoku -#ksysguard -#ksysguardd ksystemlog ktorrent kwalletmanager diff --git a/config/package-lists/lernstick-core.list.chroot b/config/package-lists/lernstick-core.list.chroot index 021fd141..40680f3f 100644 --- a/config/package-lists/lernstick-core.list.chroot +++ b/config/package-lists/lernstick-core.list.chroot @@ -15,7 +15,7 @@ lernstick-config lernstick-distro-info-data lernstick-execute-jar lernstick-htop -#lernstick-imagemagick +lernstick-imagemagick lernstick-libinput-quirks lernstick-mc lernstick-menu diff --git a/config/package-lists/lernstick-education.list.chroot b/config/package-lists/lernstick-education.list.chroot index 01615a5c..e896b5ac 100644 --- a/config/package-lists/lernstick-education.list.chroot +++ b/config/package-lists/lernstick-education.list.chroot @@ -21,7 +21,6 @@ lernstick-orthografietrainer lernstick-phet lernstick-pspp #lernstick-pymol -#lernstick-schatz-der-kulturen lernstick-sikore #lernstick-speedcrunch lernstick-step diff --git a/config/package-lists/lernstick-gnome-core.list.chroot b/config/package-lists/lernstick-gnome-core.list.chroot index bfc7e62a..5a721bd2 100644 --- a/config/package-lists/lernstick-gnome-core.list.chroot +++ b/config/package-lists/lernstick-gnome-core.list.chroot @@ -5,7 +5,7 @@ # ################################################################################ -gnome-shell-extension-draw-on-your-screen2 +#gnome-shell-extension-draw-on-your-screen2 #gnome-shell-extension-unblank #gnome-shell-extension-unlock-dialog-background lernstick-gpaste-2 diff --git a/config/package-lists/lernstick-gnome-mini.list.chroot b/config/package-lists/lernstick-gnome-mini.list.chroot index 0da4f82a..5712d082 100644 --- a/config/package-lists/lernstick-gnome-mini.list.chroot +++ b/config/package-lists/lernstick-gnome-mini.list.chroot @@ -5,7 +5,6 @@ # ################################################################################ -lernstick-gedit lernstick-gnome-calculator lernstick-gnome-font-viewer #lernstick-hamster-applet diff --git a/config/package-lists/lernstick-kde.list.chroot b/config/package-lists/lernstick-kde.list.chroot index 274da7a0..fb5c25ee 100644 --- a/config/package-lists/lernstick-kde.list.chroot +++ b/config/package-lists/lernstick-kde.list.chroot @@ -20,7 +20,6 @@ lernstick-konsole lernstick-kpat lernstick-kreversi lernstick-ksudoku -#lernstick-ksysguard lernstick-ksystemlog lernstick-ktorrent lernstick-kwalletmanager diff --git a/config/package-lists/lernstick-lxde.list.chroot b/config/package-lists/lernstick-lxde.list.chroot index ef5eb5a9..dfdc1e72 100644 --- a/config/package-lists/lernstick-lxde.list.chroot +++ b/config/package-lists/lernstick-lxde.list.chroot @@ -1,7 +1,7 @@ lernstick-galculator lernstick-gnome-system-tools lernstick-gpicview -#lernstick-lxmusic +lernstick-lxmusic lernstick-lxtask lernstick-lxterminal lernstick-obconf diff --git a/config/package-lists/lernstick-mini.list.chroot b/config/package-lists/lernstick-mini.list.chroot index b57e7858..c6532729 100644 --- a/config/package-lists/lernstick-mini.list.chroot +++ b/config/package-lists/lernstick-mini.list.chroot @@ -11,7 +11,6 @@ jbackpack-full #lernstick-amarok-utils #lernstick-apper lernstick-arandr -#lernstick-avidemux-qt lernstick-brasero lernstick-calibre lernstick-dconf-editor @@ -25,7 +24,6 @@ lernstick-gnome-logs lernstick-gnome-screenshot lernstick-gnome-software lernstick-gparted -#lernstick-handbrake-gtk lernstick-hugin lernstick-info lernstick-konqueror @@ -35,12 +33,6 @@ lernstick-mein-klett lernstick-menu-xdg lernstick-mille-feuilles lernstick-mount-exchange -# mypaint is currently not co-installable with gimp, see -# https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=894757 -# https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=897909 -# https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=906144 -# Therefore we can install mypaint only from flathub -#lernstick-mypaint #lernstick-nitroshare lernstick-okular lernstick-openclipart @@ -68,4 +60,3 @@ lernstick-xscreensaver #lernstick-zenmap lernstick-zynaddsubfx #tuxedo-wmi-dkms -#xlogo-ide diff --git a/config/package-lists/lernstick-standard.list.chroot b/config/package-lists/lernstick-standard.list.chroot index 2c64ebdb..aeed80b1 100644 --- a/config/package-lists/lernstick-standard.list.chroot +++ b/config/package-lists/lernstick-standard.list.chroot @@ -1,5 +1,4 @@ bluej -#gdevelop geogebra5 geogebra6 lernstick-bluej diff --git a/config/package-lists/lernstick-xfce.list.chroot b/config/package-lists/lernstick-xfce.list.chroot index 9585a14a..2b117a72 100644 --- a/config/package-lists/lernstick-xfce.list.chroot +++ b/config/package-lists/lernstick-xfce.list.chroot @@ -1,5 +1,6 @@ lernstick-mousepad #lernstick-orage +lernstick-pavucontrol lernstick-ristretto lernstick-thunar lernstick-thunar-volman diff --git a/config/package-lists/libreoffice-core.list.chroot b/config/package-lists/libreoffice-core.list.chroot index 802eeaf4..c1be289a 100644 --- a/config/package-lists/libreoffice-core.list.chroot +++ b/config/package-lists/libreoffice-core.list.chroot @@ -44,6 +44,5 @@ libreoffice-style-elementary libreoffice-style-karasa-jaga libreoffice-style-sifr libreoffice-style-sukapura -#libreoffice-style-tango libreoffice-templatepack libreoffice-writer diff --git a/config/package-lists/xfce.list.chroot b/config/package-lists/xfce.list.chroot index a8881757..70598d6e 100644 --- a/config/package-lists/xfce.list.chroot +++ b/config/package-lists/xfce.list.chroot @@ -14,8 +14,8 @@ xfce4-cpugraph-plugin xfce4-datetime-plugin xfce4-indicator-plugin xfce4-mailwatch-plugin -#xfce4-notes -#xfce4-notes-plugin +xfce4-notes +xfce4-notes-plugin xfce4-notifyd xfce4-places-plugin xfce4-power-manager @@ -24,7 +24,6 @@ xfce4-sensors-plugin xfce4-systemload-plugin xfce4-taskmanager xfce4-terminal -#xfce4-volumed xfce4-weather-plugin xfce4-whiskermenu-plugin xfce4-xkb-plugin From 1e997f32ec2a56f412bba11912675a4f88fd6b68 Mon Sep 17 00:00:00 2001 From: Ronny Standtke Date: Wed, 20 Aug 2025 20:32:49 +0200 Subject: [PATCH 09/55] uninstall eog (replaced by loupe) --- config/hooks/live/uninstall_packages.chroot | 1 + 1 file changed, 1 insertion(+) diff --git a/config/hooks/live/uninstall_packages.chroot b/config/hooks/live/uninstall_packages.chroot index ea97326b..64b6ef17 100755 --- a/config/hooks/live/uninstall_packages.chroot +++ b/config/hooks/live/uninstall_packages.chroot @@ -7,6 +7,7 @@ # system so we have to remove them here right afer installing them... apt-get purge -y \ blueman \ + eog \ gnome-robots \ gnome-system-tools \ gucharmap \ From bd11c370d86519792221dff37bf563ca104619c3 Mon Sep 17 00:00:00 2001 From: Ronny Standtke Date: Wed, 20 Aug 2025 23:19:30 +0200 Subject: [PATCH 10/55] made script more robust --- functions.sh | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/functions.sh b/functions.sh index 86a2a3f8..d88d6651 100755 --- a/functions.sh +++ b/functions.sh @@ -43,6 +43,11 @@ cache_cleanup() do BASE_NAME=$(basename ${FILE}) PACKAGE_NAME=$(echo ${BASE_NAME} | sed 's/_.*//') + if ! ls ${DIR}/${PACKAGE_NAME}_* > /dev/null 2>&1 + then + echo "package $PACKAGE_NAME not found" + break + fi VERSIONS=$(ls ${DIR}/${PACKAGE_NAME}_*) COUNTER=$(echo ${VERSIONS} | wc -w) if [ ${COUNTER} -gt 1 ] From 1ec212214714f7843c9b7e6c9cb948dd5206cdbc Mon Sep 17 00:00:00 2001 From: Ronny Standtke Date: Wed, 20 Aug 2025 23:19:59 +0200 Subject: [PATCH 11/55] added lernstick-diodon to lernstick-lxde package list --- config/package-lists/lernstick-lxde.list.chroot | 1 + 1 file changed, 1 insertion(+) diff --git a/config/package-lists/lernstick-lxde.list.chroot b/config/package-lists/lernstick-lxde.list.chroot index dfdc1e72..8ca4e98f 100644 --- a/config/package-lists/lernstick-lxde.list.chroot +++ b/config/package-lists/lernstick-lxde.list.chroot @@ -1,3 +1,4 @@ +lernstick-diodon lernstick-galculator lernstick-gnome-system-tools lernstick-gpicview From 57b34c52e637d4c0a625686f93fad36e7e966dc4 Mon Sep 17 00:00:00 2001 From: Ronny Standtke Date: Wed, 20 Aug 2025 23:26:14 +0200 Subject: [PATCH 12/55] updated Debian version in xmlboot --- templates/xmlboot.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/xmlboot.config b/templates/xmlboot.config index 25d67ca8..af57a915 100644 --- a/templates/xmlboot.config +++ b/templates/xmlboot.config @@ -251,7 +251,7 @@ - Lernstick Debian 12 + Lernstick Debian 13 (Version YYYY-MM-DD) From d1c45dd9acfe758790593a43684ef6de286439c7 Mon Sep 17 00:00:00 2001 From: Ronny Standtke Date: Thu, 21 Aug 2025 13:18:26 +0200 Subject: [PATCH 13/55] removed lernstick-gimp from standard list (no longer needed in Debian 13) --- config/package-lists/lernstick-standard.list.chroot | 1 - 1 file changed, 1 deletion(-) diff --git a/config/package-lists/lernstick-standard.list.chroot b/config/package-lists/lernstick-standard.list.chroot index aeed80b1..d7943c49 100644 --- a/config/package-lists/lernstick-standard.list.chroot +++ b/config/package-lists/lernstick-standard.list.chroot @@ -3,7 +3,6 @@ geogebra5 geogebra6 lernstick-bluej lernstick-colobot -lernstick-gimp #lernstick-gimp-draw-arrow-plugin lernstick-greenfoot lernstick-kstars From 1079a8f089c7b70ae3c5471176c03784f6916c36 Mon Sep 17 00:00:00 2001 From: Ronny Standtke Date: Thu, 21 Aug 2025 21:17:10 +0200 Subject: [PATCH 14/55] re-enabled lernstick-zenmap --- config/package-lists/lernstick-mini.list.chroot | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/package-lists/lernstick-mini.list.chroot b/config/package-lists/lernstick-mini.list.chroot index c6532729..24fe4241 100644 --- a/config/package-lists/lernstick-mini.list.chroot +++ b/config/package-lists/lernstick-mini.list.chroot @@ -57,6 +57,6 @@ lernstick-xjadeo lernstick-xlogo-online lernstick-xsane lernstick-xscreensaver -#lernstick-zenmap +lernstick-zenmap lernstick-zynaddsubfx #tuxedo-wmi-dkms From 29e9fd2b26bf422587d80e7848daa63f51fef5da Mon Sep 17 00:00:00 2001 From: Ronny Standtke Date: Thu, 21 Aug 2025 23:15:47 +0200 Subject: [PATCH 15/55] added lernstick-virt-manager to default list --- config/package-lists/lernstick-default.list.chroot | 1 + 1 file changed, 1 insertion(+) diff --git a/config/package-lists/lernstick-default.list.chroot b/config/package-lists/lernstick-default.list.chroot index 53526c74..864326e5 100644 --- a/config/package-lists/lernstick-default.list.chroot +++ b/config/package-lists/lernstick-default.list.chroot @@ -23,4 +23,5 @@ lernstick-master-pdf-editor lernstick-menulibre #lernstick-shutter lernstick-synaptic +lernstick-virt-manager master-pdf-editor-5 From 3e008fc0efdcaed25c789de72d0d5f063fefb1fe Mon Sep 17 00:00:00 2001 From: Ronny Standtke Date: Fri, 22 Aug 2025 15:04:27 +0200 Subject: [PATCH 16/55] re-enabled dlcopy --- config/package-lists/lernstick-mini.list.chroot | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/package-lists/lernstick-mini.list.chroot b/config/package-lists/lernstick-mini.list.chroot index 24fe4241..807fee66 100644 --- a/config/package-lists/lernstick-mini.list.chroot +++ b/config/package-lists/lernstick-mini.list.chroot @@ -5,7 +5,7 @@ # ################################################################################ -#dlcopy +dlcopy jbackpack-full #lernstick-amarok #lernstick-amarok-utils From 4a0c20f886ba84139403664abfc3a216e920bf5d Mon Sep 17 00:00:00 2001 From: Ronny Standtke Date: Fri, 22 Aug 2025 20:31:06 +0200 Subject: [PATCH 17/55] re-enabled lernstickwelcome --- config/package-lists/lernstick-mini.list.chroot | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/package-lists/lernstick-mini.list.chroot b/config/package-lists/lernstick-mini.list.chroot index 807fee66..744d3895 100644 --- a/config/package-lists/lernstick-mini.list.chroot +++ b/config/package-lists/lernstick-mini.list.chroot @@ -52,7 +52,7 @@ lernstick-terminology lernstick-totem lernstick-transmission-gtk lernstick-usertemplate -#lernstickwelcome +lernstickwelcome lernstick-xjadeo lernstick-xlogo-online lernstick-xsane From 478167f3d9f08b2eb9254dc7020f0e3632403ad0 Mon Sep 17 00:00:00 2001 From: Ronny Standtke Date: Sat, 23 Aug 2025 15:15:51 +0200 Subject: [PATCH 18/55] replaced Minetest Debian packages with Luanti Flatpak --- config/hooks/live/enable-flathub.container | 1 + .../lernstick-standard.list.chroot | 28 ------------------- 2 files changed, 1 insertion(+), 28 deletions(-) diff --git a/config/hooks/live/enable-flathub.container b/config/hooks/live/enable-flathub.container index c56cbe6d..277f50c7 100755 --- a/config/hooks/live/enable-flathub.container +++ b/config/hooks/live/enable-flathub.container @@ -124,6 +124,7 @@ flatpak -y install \ org.kde.parley \ org.kde.picmi \ org.ksnip.ksnip \ + org.luanti.luanti \ org.mixxx.Mixxx \ org.mobsya.ThymioSuite \ org.musescore.MuseScore \ diff --git a/config/package-lists/lernstick-standard.list.chroot b/config/package-lists/lernstick-standard.list.chroot index d7943c49..836cef03 100644 --- a/config/package-lists/lernstick-standard.list.chroot +++ b/config/package-lists/lernstick-standard.list.chroot @@ -7,9 +7,6 @@ lernstick-colobot lernstick-greenfoot lernstick-kstars lernstick-languagetool-server -#lernstick-minetest-game-carbone-ng -lernstick-minetest-game-tutorial -#lernstick-minetest-mod-dreambuilder lernstick-playonlinux lernstick-stellarium lernstick-tuxpaint @@ -19,31 +16,6 @@ lernstick-winetricks libreoffice-kf6 libreoffice-plasma live-enigma -minetest-mod-3d-armor -minetest-mod-basic-materials -minetest-mod-character-creator -minetest-mod-craftguide -#minetest-mod-currency -minetest-mod-ethereal -minetest-mod-homedecor -minetest-mod-infinite-chest -minetest-mod-lucky-block -minetest-mod-maidroid -minetest-mod-mesecons -minetest-mod-meshport -minetest-mod-moreblocks -minetest-mod-moreores -minetest-mod-nether -minetest-mod-pipeworks -minetest-mod-protector -minetest-mod-quartz -minetest-mod-skyblock -minetest-mod-throwing-arrows -minetest-mod-unifieddyes -minetest-mod-unified-inventory -minetest-mod-worldedit -#minetest-mod-xdecor in bookworm throws an error message: could not load image "xpanes_space.png" -#minetest-mod-xdecor #omnitux #tigerjython wine-gecko From b395ee8086d48806c2842f51d61d667014b5e162 Mon Sep 17 00:00:00 2001 From: Ronny Standtke Date: Sat, 23 Aug 2025 18:20:36 +0200 Subject: [PATCH 19/55] added gimp-help-pt-br --- config/package-lists/debian_main-standard.list.chroot | 1 + 1 file changed, 1 insertion(+) diff --git a/config/package-lists/debian_main-standard.list.chroot b/config/package-lists/debian_main-standard.list.chroot index b85d97ad..8e0c995c 100644 --- a/config/package-lists/debian_main-standard.list.chroot +++ b/config/package-lists/debian_main-standard.list.chroot @@ -12,6 +12,7 @@ gimp-help-en gimp-help-es gimp-help-fr gimp-help-it +gimp-help-pt-br gimp-help-ru #gimp-plugin-registry gimp-texturize From ee7e62fafc06844a329f3457bc46d1f6615eedb3 Mon Sep 17 00:00:00 2001 From: Ronny Standtke Date: Fri, 26 Sep 2025 13:30:37 +0200 Subject: [PATCH 20/55] updated backports instructions --- backports.txt | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/backports.txt b/backports.txt index 9ae154f3..859fc039 100644 --- a/backports.txt +++ b/backports.txt @@ -1,10 +1,10 @@ -# bookworm (64 Bit) -sudo pbuilder --login --basetgz /var/cache/pbuilder/base-bookworm-bpo.tar.gz --bindmounts /home/debian12/lernstick/backports/bookworm +# trixie (64 Bit) +sudo pbuilder --login --basetgz /var/cache/pbuilder/base-trixie-bpo.tar.gz --bindmounts /home/debian13/lernstick/backports/trixie -# bookworm (32 Bit) -sudo pbuilder --login --architecture i386 --basetgz /var/cache/pbuilder/base-bookworm32-bpo.tar.gz --bindmounts /home/debian12/lernstick/backports/bookworm +# trixie (32 Bit) +sudo pbuilder --login --architecture i386 --basetgz /var/cache/pbuilder/base-trixie32-bpo.tar.gz --bindmounts /home/debian13/lernstick/backports/trixie -# bookworm +# trixie apt update; apt --yes upgrade; apt --yes install devscripts fakeroot pbuilder sudo; /usr/lib/pbuilder/pbuilder-satisfydepends --continue-fail From 9b5b0677c93a4205dcfe96dbe24cf146f4fc655f Mon Sep 17 00:00:00 2001 From: Ronny Standtke Date: Fri, 26 Sep 2025 13:31:50 +0200 Subject: [PATCH 21/55] updated pbuilder script for trixie --- scripts/create_pbuilder_chroots.sh | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/scripts/create_pbuilder_chroots.sh b/scripts/create_pbuilder_chroots.sh index 4abf96ec..c77a7ab1 100755 --- a/scripts/create_pbuilder_chroots.sh +++ b/scripts/create_pbuilder_chroots.sh @@ -1,18 +1,18 @@ #!/bin/sh -BIND_MOUNT=/home/debian12/lernstick/backports/bookworm/ -LS_KEYRING=/tmp/lernstick-12.gpg -OTHER_MIRRORS="deb https://security.debian.org/debian-security bookworm-security main contrib non-free|deb https://packages.lernstick.ch/lernstick lernstick-12-backports main contrib non-free|deb https://packages.lernstick.ch/lernstick lernstick-12-backports-staging main contrib non-free|deb https://packages.lernstick.ch/lernstick lernstick-12-thirdparty-staging main contrib non-free|deb https://packages.lernstick.ch/lernstick lernstick-12-staging main contrib non-free" +BIND_MOUNT=/home/debian13/lernstick/backports/trixie/ +LS_KEYRING=/tmp/lernstick-13.gpg +OTHER_MIRRORS="deb https://security.debian.org/debian-security trixie-security main contrib non-free non-free-firmware|deb https://packages.lernstick.ch/lernstick lernstick-13-backports main contrib non-free non-free-firmware|deb https://packages.lernstick.ch/lernstick lernstick-13-backports-staging main contrib non-free non-free-firmware|deb https://packages.lernstick.ch/lernstick lernstick-13-thirdparty-staging main contrib non-free non-free-firmware|deb https://packages.lernstick.ch/lernstick lernstick-13-staging main contrib non-free non-free-firmware" # pbuilder needs the "dearmored" version of our keyfile -gpg --yes --output $LS_KEYRING --dearmor $(dirname $0)/../config/archives/lernstick-12.key +gpg --yes --output $LS_KEYRING --dearmor $(dirname $0)/../config/archives/lernstick-13.key # main version (Bullseye 64 Bit) pbuilder create \ - --basetgz /var/cache/pbuilder/base-bookworm-bpo.tar.gz \ + --basetgz /var/cache/pbuilder/base-trixie-bpo.tar.gz \ --bindmounts $BIND_MOUNT \ --components "main contrib non-free non-free-firmware" \ - --distribution bookworm \ + --distribution trixie \ --extrapackages ca-certificates \ --keyring $LS_KEYRING \ --othermirror "$OTHER_MIRRORS" @@ -20,10 +20,10 @@ pbuilder create \ # second version for backporting 32 Bit packages (e.g. wine) pbuilder create \ --architecture i386 \ - --basetgz /var/cache/pbuilder/base-bookworm32-bpo.tar.gz \ + --basetgz /var/cache/pbuilder/base-trixie32-bpo.tar.gz \ --bindmounts $BIND_MOUNT \ --components "main contrib non-free non-free-firmware" \ - --distribution bookworm \ + --distribution trixie \ --extrapackages ca-certificates \ --keyring $LS_KEYRING \ --othermirror "$OTHER_MIRRORS" From b55e675d02d629f5ef840594fe6a0b145bd26bb0 Mon Sep 17 00:00:00 2001 From: Ronny Standtke Date: Fri, 26 Sep 2025 13:32:41 +0200 Subject: [PATCH 22/55] added more lernstick-13 archives --- config/archives/lernstick-13.list | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/config/archives/lernstick-13.list b/config/archives/lernstick-13.list index 805b1eca..162d2dbe 100644 --- a/config/archives/lernstick-13.list +++ b/config/archives/lernstick-13.list @@ -2,6 +2,26 @@ deb [arch=amd64,arm64] http://packages.lernstick.ch/lernstick lernstick-13 main contrib non-free deb-src http://packages.lernstick.ch/lernstick lernstick-13 main contrib non-free +# Backports done by the Lernstick team of other packages +deb [arch=i386,amd64] http://packages.lernstick.ch/lernstick lernstick-13-backports main contrib non-free non-free-firmware +deb-src http://packages.lernstick.ch/lernstick lernstick-13-backports main contrib non-free non-free-firmware + +# Third party packages +deb [arch=i386,amd64] http://packages.lernstick.ch/lernstick lernstick-13-thirdparty main contrib non-free +deb-src http://packages.lernstick.ch/lernstick lernstick-13-thirdparty main contrib non-free + +# Staging packages (distribution set to "not automatic") +deb [arch=amd64,arm64] http://packages.lernstick.ch/lernstick lernstick-13-staging main contrib non-free +deb-src http://packages.lernstick.ch/lernstick lernstick-13-staging main contrib non-free + +# Staging distribution for backports (set to "not automatic") +deb [arch=i386,amd64] http://packages.lernstick.ch/lernstick lernstick-13-backports-staging main contrib non-free non-free-firmware +deb-src http://packages.lernstick.ch/lernstick lernstick-13-backports-staging main contrib non-free non-free-firmware + +# Staging distribution for third party packages (distribution set to "not automatic") +deb [arch=i386,amd64] http://packages.lernstick.ch/lernstick lernstick-13-thirdparty-staging main contrib non-free +deb-src http://packages.lernstick.ch/lernstick lernstick-13-thirdparty-staging main contrib non-free + # Lernstick specific packages deb [arch=amd64,arm64] http://packages.lernstick.ch/lernstick lernstick-12 main contrib non-free deb-src http://packages.lernstick.ch/lernstick lernstick-12 main contrib non-free From 1693833c90248bdb20f89282eec64107cda926b7 Mon Sep 17 00:00:00 2001 From: Ronny Standtke Date: Fri, 26 Sep 2025 14:05:51 +0200 Subject: [PATCH 23/55] re-added virtualbox packages --- config/package-lists/debian_contrib-default.list.chroot | 4 ++-- config/package-lists/lernstick-standard.list.chroot | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/config/package-lists/debian_contrib-default.list.chroot b/config/package-lists/debian_contrib-default.list.chroot index 39a50de0..df40f444 100644 --- a/config/package-lists/debian_contrib-default.list.chroot +++ b/config/package-lists/debian_contrib-default.list.chroot @@ -6,5 +6,5 @@ # ################################################################################ -#virtualbox -#virtualbox-qt +virtualbox +virtualbox-qt diff --git a/config/package-lists/lernstick-standard.list.chroot b/config/package-lists/lernstick-standard.list.chroot index 836cef03..bf044eab 100644 --- a/config/package-lists/lernstick-standard.list.chroot +++ b/config/package-lists/lernstick-standard.list.chroot @@ -10,7 +10,7 @@ lernstick-languagetool-server lernstick-playonlinux lernstick-stellarium lernstick-tuxpaint -#lernstick-virtualbox +lernstick-virtualbox lernstick-wine lernstick-winetricks libreoffice-kf6 From a75bbfe619d418465c1edddbb00bc982e54d15e8 Mon Sep 17 00:00:00 2001 From: Ronny Standtke Date: Fri, 26 Sep 2025 15:08:21 +0200 Subject: [PATCH 24/55] added gnome-shell-extension-gjs-osk to lernstick-gnome-core package list --- config/package-lists/lernstick-gnome-core.list.chroot | 1 + 1 file changed, 1 insertion(+) diff --git a/config/package-lists/lernstick-gnome-core.list.chroot b/config/package-lists/lernstick-gnome-core.list.chroot index 5a721bd2..ae912a76 100644 --- a/config/package-lists/lernstick-gnome-core.list.chroot +++ b/config/package-lists/lernstick-gnome-core.list.chroot @@ -6,6 +6,7 @@ ################################################################################ #gnome-shell-extension-draw-on-your-screen2 +gnome-shell-extension-gjs-osk #gnome-shell-extension-unblank #gnome-shell-extension-unlock-dialog-background lernstick-gpaste-2 From 9eb0fa181f8ec8aa08d5a780c8a8ec32b8df604f Mon Sep 17 00:00:00 2001 From: Ronny Standtke Date: Sat, 1 Nov 2025 18:07:30 +0100 Subject: [PATCH 25/55] updated for Debian 13 --- config/archives/lernstick-13.list | 24 ------- config/hooks/live/enable-flathub.container | 2 +- .../debian_contrib-core.list.chroot | 2 +- .../debian_main-standard.list.chroot | 2 +- .../package-lists/debian_non-free.list.chroot | 68 +++++++++---------- .../lernstick-drivers.list.chroot | 10 +-- functions.sh | 9 +-- 7 files changed, 43 insertions(+), 74 deletions(-) diff --git a/config/archives/lernstick-13.list b/config/archives/lernstick-13.list index 162d2dbe..07eee84d 100644 --- a/config/archives/lernstick-13.list +++ b/config/archives/lernstick-13.list @@ -21,27 +21,3 @@ deb-src http://packages.lernstick.ch/lernstick lernstick-13-backports-staging ma # Staging distribution for third party packages (distribution set to "not automatic") deb [arch=i386,amd64] http://packages.lernstick.ch/lernstick lernstick-13-thirdparty-staging main contrib non-free deb-src http://packages.lernstick.ch/lernstick lernstick-13-thirdparty-staging main contrib non-free - -# Lernstick specific packages -deb [arch=amd64,arm64] http://packages.lernstick.ch/lernstick lernstick-12 main contrib non-free -deb-src http://packages.lernstick.ch/lernstick lernstick-12 main contrib non-free - -# Backports done by the Lernstick team of other packages -deb [arch=i386,amd64] http://packages.lernstick.ch/lernstick lernstick-12-backports main contrib non-free non-free-firmware -deb-src http://packages.lernstick.ch/lernstick lernstick-12-backports main contrib non-free non-free-firmware - -# Third party packages -deb [arch=i386,amd64] http://packages.lernstick.ch/lernstick lernstick-12-thirdparty main contrib non-free -deb-src http://packages.lernstick.ch/lernstick lernstick-12-thirdparty main contrib non-free - -# Staging packages (distribution set to "not automatic") -deb [arch=amd64,arm64] http://packages.lernstick.ch/lernstick lernstick-12-staging main contrib non-free -deb-src http://packages.lernstick.ch/lernstick lernstick-12-staging main contrib non-free - -# Staging distribution for backports (set to "not automatic") -deb [arch=i386,amd64] http://packages.lernstick.ch/lernstick lernstick-12-backports-staging main contrib non-free non-free-firmware -deb-src http://packages.lernstick.ch/lernstick lernstick-12-backports-staging main contrib non-free non-free-firmware - -# Staging distribution for third party packages (distribution set to "not automatic") -deb [arch=i386,amd64] http://packages.lernstick.ch/lernstick lernstick-12-thirdparty-staging main contrib non-free -deb-src http://packages.lernstick.ch/lernstick lernstick-12-thirdparty-staging main contrib non-free diff --git a/config/hooks/live/enable-flathub.container b/config/hooks/live/enable-flathub.container index 277f50c7..bbfa5368 100755 --- a/config/hooks/live/enable-flathub.container +++ b/config/hooks/live/enable-flathub.container @@ -25,7 +25,7 @@ flatpak remote-add --if-not-exists flathub-beta https://flathub.org/beta-repo/fl echo "installing flatpak nvidia drivers..." # install one package after the other so that an installation failure in one # package doesn't stop the installation of subsequent packages -for i in "535-216-01" +for i in "550-163-01" do flatpak -y install org.freedesktop.Platform.GL.nvidia-$i done diff --git a/config/package-lists/debian_contrib-core.list.chroot b/config/package-lists/debian_contrib-core.list.chroot index a9146bab..aea384c9 100644 --- a/config/package-lists/debian_contrib-core.list.chroot +++ b/config/package-lists/debian_contrib-core.list.chroot @@ -7,6 +7,6 @@ firmware-b43-installer firmware-b43legacy-installer -nvidia-settings=535.216.01-1~bpo12+1 +nvidia-settings=550.163.01-1 virtualbox-guest-utils virtualbox-guest-x11 diff --git a/config/package-lists/debian_main-standard.list.chroot b/config/package-lists/debian_main-standard.list.chroot index 8e0c995c..e113672b 100644 --- a/config/package-lists/debian_main-standard.list.chroot +++ b/config/package-lists/debian_main-standard.list.chroot @@ -6,7 +6,7 @@ extremetuxracer gimp gimp-data gimp-data-extras -gimp-gap +#gimp-gap gimp-help-de gimp-help-en gimp-help-es diff --git a/config/package-lists/debian_non-free.list.chroot b/config/package-lists/debian_non-free.list.chroot index f74c384f..d045a12c 100644 --- a/config/package-lists/debian_non-free.list.chroot +++ b/config/package-lists/debian_non-free.list.chroot @@ -19,7 +19,7 @@ firmware-misc-nonfree firmware-myricom firmware-netronome firmware-netxen -firmware-nvidia-gsp=535.216.01-1~deb12u1 +firmware-nvidia-gsp=550.163.01-2 firmware-qlogic firmware-realtek firmware-siano @@ -27,39 +27,39 @@ firmware-sof-signed firmware-ti-connectivity firmware-zd1211 intel-microcode -libcuda1=535.216.01-1~deb12u1 -libegl-nvidia0=535.216.01-1~deb12u1 -libgl1-nvidia-glvnd-glx=535.216.01-1~deb12u1 -libgles-nvidia1=535.216.01-1~deb12u1 -libgles-nvidia2=535.216.01-1~deb12u1 -libglx-nvidia0=535.216.01-1~deb12u1 -libnvcuvid1=535.216.01-1~deb12u1 -libnvidia-allocator1=535.216.01-1~deb12u1 -libnvidia-cfg1=535.216.01-1~deb12u1 -libnvidia-eglcore=535.216.01-1~deb12u1 -libnvidia-encode1=535.216.01-1~deb12u1 -libnvidia-glcore=535.216.01-1~deb12u1 -libnvidia-glvkspirv=535.216.01-1~deb12u1 -libnvidia-ml1=535.216.01-1~deb12u1 -libnvidia-pkcs11-openssl3=535.216.01-1~deb12u1 -libnvidia-ptxjitcompiler1=535.216.01-1~deb12u1 -libnvidia-rtcore=535.216.01-1~deb12u1 -libnvoptix1=535.216.01-1~deb12u1 -nvidia-alternative=535.216.01-1~deb12u1 +libcuda1=550.163.01-2 +libegl-nvidia0=550.163.01-2 +libgl1-nvidia-glvnd-glx=550.163.01-2 +libgles-nvidia1=550.163.01-2 +libgles-nvidia2=550.163.01-2 +libglx-nvidia0=550.163.01-2 +libnvcuvid1=550.163.01-2 +libnvidia-allocator1=550.163.01-2 +libnvidia-cfg1=550.163.01-2 +libnvidia-eglcore=550.163.01-2 +libnvidia-encode1=550.163.01-2 +libnvidia-glcore=550.163.01-2 +libnvidia-glvkspirv=550.163.01-2 +libnvidia-ml1=550.163.01-2 +libnvidia-pkcs11-openssl3=550.163.01-2 +libnvidia-ptxjitcompiler1=550.163.01-2 +libnvidia-rtcore=550.163.01-2 +libnvoptix1=550.163.01-2 +nvidia-alternative=550.163.01-2 nvidia-container-toolkit -nvidia-cuda-mps=535.216.01-1~deb12u1 -nvidia-detect=535.216.01-1~deb12u1 -nvidia-driver=535.216.01-1~deb12u1 -nvidia-driver-bin=535.216.01-1~deb12u1 -nvidia-driver-libs=535.216.01-1~deb12u1 -nvidia-egl-common=535.216.01-1~deb12u1 -nvidia-egl-icd=535.216.01-1~deb12u1 -nvidia-kernel-support=535.216.01-1~deb12u1 -nvidia-legacy-check=535.216.01-1~deb12u1 -nvidia-smi=535.216.01-1~deb12u1 -nvidia-suspend-common=535.216.01-1~deb12u1 -nvidia-vdpau-driver=535.216.01-1~deb12u1 -nvidia-vulkan-common=535.216.01-1~deb12u1 +nvidia-cuda-mps=550.163.01-2 +nvidia-detect=550.163.01-2 +nvidia-driver=550.163.01-2 +nvidia-driver-bin=550.163.01-2 +nvidia-driver-libs=550.163.01-2 +nvidia-egl-common=550.163.01-2 +nvidia-egl-icd=550.163.01-2 +nvidia-kernel-support=550.163.01-2 +nvidia-legacy-check=550.163.01-2 +nvidia-smi=550.163.01-2 +nvidia-suspend-common=550.163.01-2 +nvidia-vdpau-driver=550.163.01-2 +nvidia-vulkan-common=550.163.01-2 p7zip-rar phoronix-test-suite -xserver-xorg-video-nvidia=535.216.01-1~deb12u1 +xserver-xorg-video-nvidia=550.163.01-2 diff --git a/config/package-lists/lernstick-drivers.list.chroot b/config/package-lists/lernstick-drivers.list.chroot index 4fd5acff..503d9247 100644 --- a/config/package-lists/lernstick-drivers.list.chroot +++ b/config/package-lists/lernstick-drivers.list.chroot @@ -1,5 +1,5 @@ -#broadcom-sta-modules-6.12.9+bpo-amd64-signed -#nvidia-kernel-535.216.01-6.12.9+bpo-amd64-signed -#rtl88x2bu-modules-6.12.9+bpo-amd64-signed -#v4l2loopback-modules-6.12.9+bpo-amd64-signed -#virtualbox-modules-6.12.9+bpo-amd64-signed +broadcom-sta-modules-6.16.3+deb13-amd64-signed +nvidia-kernel-550.163.01-6.16.3+deb13-amd64-signed +rtl88x2bu-modules-6.16.3+deb13-amd64-signed +v4l2loopback-modules-6.16.3+deb13-amd64-signed +virtualbox-modules-6.16.3+deb13-amd64-signed diff --git a/functions.sh b/functions.sh index d88d6651..c9b1fdcf 100755 --- a/functions.sh +++ b/functions.sh @@ -105,6 +105,7 @@ build_image() --distribution trixie \ --firmware-chroot false \ --iso-volume "lernstick${ISO_SUFFIX} ${TODAY}" \ + --linux-packages linux-image-6.16.3+deb13 \ --mirror-binary ${MIRROR_SYSTEM} \ --mirror-binary-security ${MIRROR_SECURITY_SYSTEM} \ --mirror-bootstrap ${MIRROR_BUILD} \ @@ -112,11 +113,6 @@ build_image() --source ${SOURCE} \ --updates true \ --verbose - #--linux-packages linux-image-6.12.9+bpo \ - # let's hope that we are no longer encountering machines that just freeze with isohybrid images: - # https://lists.debian.org/debian-live/2011/08/msg00144.html - # if this is still a problem we need to change back from the default of "iso-hybrid" to plain "iso" - # --binary-images iso \ # build image (and produce a log file) lb build 2>&1 | tee logfile.txt @@ -168,7 +164,4 @@ build_image() then mv logfile.txt "${BUILD_DIR}" fi - - # hello, wake up!!! :-) - #eject } From fe16395396670591f9cf023c46f2c547a52f577f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Berkel?= Date: Fri, 7 Nov 2025 19:03:38 +0100 Subject: [PATCH 26/55] Update debian_main-core.list.chroot add rocminfo and screenkey --- config/package-lists/debian_main-core.list.chroot | 2 ++ 1 file changed, 2 insertions(+) diff --git a/config/package-lists/debian_main-core.list.chroot b/config/package-lists/debian_main-core.list.chroot index 641bdf2a..ed2a0094 100644 --- a/config/package-lists/debian_main-core.list.chroot +++ b/config/package-lists/debian_main-core.list.chroot @@ -98,7 +98,9 @@ ppp projecteur rfkill rng-tools5 +rocminfo rsync +screenkey smbclient #software-properties-gtk spice-vdagent From 21df8181494d136cfc7ff851e0da2ff348a9deb3 Mon Sep 17 00:00:00 2001 From: Ronny Standtke Date: Sat, 8 Nov 2025 15:52:12 +0100 Subject: [PATCH 27/55] added hook for disabling systemd services --- config/hooks/live/disable_services.chroot | 5 +++++ 1 file changed, 5 insertions(+) create mode 100755 config/hooks/live/disable_services.chroot diff --git a/config/hooks/live/disable_services.chroot b/config/hooks/live/disable_services.chroot new file mode 100755 index 00000000..356ed79b --- /dev/null +++ b/config/hooks/live/disable_services.chroot @@ -0,0 +1,5 @@ +#!/bin/sh + +# disabled nmbd in Debian 13 because of a timeout +# https://bugs-devel.debian.org/cgi-bin/bugreport.cgi?bug=1090974 +systemctl disable nmbd From dc6991f41888626db3d8cb4cf25c27030961747c Mon Sep 17 00:00:00 2001 From: Ronny Standtke Date: Mon, 10 Nov 2025 01:23:34 +0100 Subject: [PATCH 28/55] uninstall firmware-marvell-prestera --- config/hooks/live/uninstall_packages.chroot | 1 + 1 file changed, 1 insertion(+) diff --git a/config/hooks/live/uninstall_packages.chroot b/config/hooks/live/uninstall_packages.chroot index 64b6ef17..9e759242 100755 --- a/config/hooks/live/uninstall_packages.chroot +++ b/config/hooks/live/uninstall_packages.chroot @@ -8,6 +8,7 @@ apt-get purge -y \ blueman \ eog \ + firmware-marvell-prestera \ gnome-robots \ gnome-system-tools \ gucharmap \ From 404bb600b0bbe17fff35efa8340902f3aa8f9bce Mon Sep 17 00:00:00 2001 From: Ronny Standtke Date: Mon, 10 Nov 2025 07:13:34 +0100 Subject: [PATCH 29/55] updated build scripts to Debian 13 --- build_binary_release.sh | 6 +++--- build_source_release.sh | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/build_binary_release.sh b/build_binary_release.sh index bde7a86d..a5c675a9 100755 --- a/build_binary_release.sh +++ b/build_binary_release.sh @@ -7,19 +7,19 @@ fi clear # build edu version -git checkout debian12 +git checkout debian13 ./build_tmpfs.sh ./build_edu-mini_iso.sh ./build_tmpfs.sh ./build_edu_iso.sh # build exam version -git checkout exam-debian12 +git checkout exam-debian13 ./build_tmpfs.sh ./build_exam_iso.sh # checkout main repo -git checkout debian12 +git checkout debian13 # final shutdown? if [ -n "$SHUTDOWN_AFTER_BUILDING" ] diff --git a/build_source_release.sh b/build_source_release.sh index 8012879c..6864a147 100755 --- a/build_source_release.sh +++ b/build_source_release.sh @@ -7,19 +7,19 @@ fi clear # build edu version -git checkout debian12 +git checkout debian13 ./build_tmpfs.sh ./build_edu-mini_iso.sh ./build_tmpfs.sh ./build_source.sh # build exam version -git checkout exam-debian12 +git checkout exam-debian13 ./build_tmpfs.sh ./build_source.sh # cleanup -git checkout debian12 +git checkout debian13 # final shutdown? if [ -n "$SHUTDOWN_AFTER_BUILDING" ] From e6c9886eac1b95aeecbd4058f69f4c5c77124c0d Mon Sep 17 00:00:00 2001 From: Ronny Standtke Date: Mon, 10 Nov 2025 21:06:56 +0100 Subject: [PATCH 30/55] added more gnome shell extensions --- config/package-lists/gnome-core.list.chroot | 1 + config/package-lists/gnome-mini.list.chroot | 2 ++ 2 files changed, 3 insertions(+) diff --git a/config/package-lists/gnome-core.list.chroot b/config/package-lists/gnome-core.list.chroot index d3998aa1..b446759d 100644 --- a/config/package-lists/gnome-core.list.chroot +++ b/config/package-lists/gnome-core.list.chroot @@ -13,6 +13,7 @@ gnome-shell-extension-desktop-icons-ng #gnome-shell-extension-draw-on-your-screen gnome-shell-extension-gpaste gnome-shell-extensions +gnome-shell-extension-tiling-assistant gnome-shell-extension-workspace-indicator nautilus #nautilus-wipe diff --git a/config/package-lists/gnome-mini.list.chroot b/config/package-lists/gnome-mini.list.chroot index 0054427c..e822f197 100644 --- a/config/package-lists/gnome-mini.list.chroot +++ b/config/package-lists/gnome-mini.list.chroot @@ -2,6 +2,8 @@ # in the exam version. gnome-firmware +gnome-shell-extension-gsconnect +gnome-shell-extension-gsconnect-browsers #hamster-applet nautilus-admin #nautilus-nextcloud From e5f3d39e127483e0c28cec6505a0d3a2925f3e94 Mon Sep 17 00:00:00 2001 From: Ronny Standtke Date: Mon, 10 Nov 2025 21:52:14 +0100 Subject: [PATCH 31/55] re-added GNOME shell extensions --- config/package-lists/lernstick-gnome-core.list.chroot | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/config/package-lists/lernstick-gnome-core.list.chroot b/config/package-lists/lernstick-gnome-core.list.chroot index ae912a76..a7fb3386 100644 --- a/config/package-lists/lernstick-gnome-core.list.chroot +++ b/config/package-lists/lernstick-gnome-core.list.chroot @@ -5,9 +5,9 @@ # ################################################################################ -#gnome-shell-extension-draw-on-your-screen2 +gnome-shell-extension-draw-on-gnome gnome-shell-extension-gjs-osk -#gnome-shell-extension-unblank -#gnome-shell-extension-unlock-dialog-background +gnome-shell-extension-unblank +gnome-shell-extension-unlock-dialog-background lernstick-gpaste-2 lernstick-nautilus From 8fbd15950be8493ce613c834f23eb922c9a77aeb Mon Sep 17 00:00:00 2001 From: Ronny Standtke Date: Tue, 11 Nov 2025 15:29:00 +0100 Subject: [PATCH 32/55] re-added geogebra-gnome --- config/package-lists/debian_main-default.list.chroot | 1 + 1 file changed, 1 insertion(+) diff --git a/config/package-lists/debian_main-default.list.chroot b/config/package-lists/debian_main-default.list.chroot index 3a0a84d1..46fec4dc 100644 --- a/config/package-lists/debian_main-default.list.chroot +++ b/config/package-lists/debian_main-default.list.chroot @@ -22,6 +22,7 @@ firefox-esr-l10n-sq #fslint #gconf-editor gdebi +geogebra-gnome gnome-nettool gnome-system-monitor gtkhash From ccdf95d041aa08331a4edbc8e842f8fc5cb3bb6d Mon Sep 17 00:00:00 2001 From: Ronny Standtke Date: Sat, 22 Nov 2025 17:16:16 +0100 Subject: [PATCH 33/55] added unciv --- config/hooks/live/enable-flathub.container | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/config/hooks/live/enable-flathub.container b/config/hooks/live/enable-flathub.container index bbfa5368..2070b4f3 100755 --- a/config/hooks/live/enable-flathub.container +++ b/config/hooks/live/enable-flathub.container @@ -61,6 +61,7 @@ flatpak -y install \ io.github.adrienverge.PhotoCollage \ io.github.flattool.Warehouse \ io.github.pwr_solaar.solaar \ + io.github.yairm210.unciv \ io.sourceforge.pentobi \ net.hhoney.rota \ net.lutris.Lutris \ @@ -140,9 +141,7 @@ flatpak -y install \ org.x.Warpinator \ xyz.ketok.Speedtest # io.lmms.LMMS \ -# net.minetest.Minetest \ # org.denemo.Denemo \ # org.gimp.GIMP \ # org.speed_dreams.SpeedDreams \ # org.supertuxproject.SuperTux \ -# xyz.ketok.Speedtest From 677df18ef41c9be52a22982e8f6815aab2842498 Mon Sep 17 00:00:00 2001 From: Ronny Standtke Date: Sun, 7 Dec 2025 16:50:13 +0100 Subject: [PATCH 34/55] build with current kernel and nvidia packages --- .../package-lists/debian_non-free.list.chroot | 68 +++++++++---------- .../lernstick-drivers.list.chroot | 10 +-- functions.sh | 2 +- 3 files changed, 40 insertions(+), 40 deletions(-) diff --git a/config/package-lists/debian_non-free.list.chroot b/config/package-lists/debian_non-free.list.chroot index d045a12c..70f02f7d 100644 --- a/config/package-lists/debian_non-free.list.chroot +++ b/config/package-lists/debian_non-free.list.chroot @@ -19,7 +19,7 @@ firmware-misc-nonfree firmware-myricom firmware-netronome firmware-netxen -firmware-nvidia-gsp=550.163.01-2 +firmware-nvidia-gsp=550.163.01-4bpo13+1 firmware-qlogic firmware-realtek firmware-siano @@ -27,39 +27,39 @@ firmware-sof-signed firmware-ti-connectivity firmware-zd1211 intel-microcode -libcuda1=550.163.01-2 -libegl-nvidia0=550.163.01-2 -libgl1-nvidia-glvnd-glx=550.163.01-2 -libgles-nvidia1=550.163.01-2 -libgles-nvidia2=550.163.01-2 -libglx-nvidia0=550.163.01-2 -libnvcuvid1=550.163.01-2 -libnvidia-allocator1=550.163.01-2 -libnvidia-cfg1=550.163.01-2 -libnvidia-eglcore=550.163.01-2 -libnvidia-encode1=550.163.01-2 -libnvidia-glcore=550.163.01-2 -libnvidia-glvkspirv=550.163.01-2 -libnvidia-ml1=550.163.01-2 -libnvidia-pkcs11-openssl3=550.163.01-2 -libnvidia-ptxjitcompiler1=550.163.01-2 -libnvidia-rtcore=550.163.01-2 -libnvoptix1=550.163.01-2 -nvidia-alternative=550.163.01-2 +libcuda1=550.163.01-4bpo13+1 +libegl-nvidia0=550.163.01-4bpo13+1 +libgl1-nvidia-glvnd-glx=550.163.01-4bpo13+1 +libgles-nvidia1=550.163.01-4bpo13+1 +libgles-nvidia2=550.163.01-4bpo13+1 +libglx-nvidia0=550.163.01-4bpo13+1 +libnvcuvid1=550.163.01-4bpo13+1 +libnvidia-allocator1=550.163.01-4bpo13+1 +libnvidia-cfg1=550.163.01-4bpo13+1 +libnvidia-eglcore=550.163.01-4bpo13+1 +libnvidia-encode1=550.163.01-4bpo13+1 +libnvidia-glcore=550.163.01-4bpo13+1 +libnvidia-glvkspirv=550.163.01-4bpo13+1 +libnvidia-ml1=550.163.01-4bpo13+1 +libnvidia-pkcs11-openssl3=550.163.01-4bpo13+1 +libnvidia-ptxjitcompiler1=550.163.01-4bpo13+1 +libnvidia-rtcore=550.163.01-4bpo13+1 +libnvoptix1=550.163.01-4bpo13+1 +nvidia-alternative=550.163.01-4bpo13+1 nvidia-container-toolkit -nvidia-cuda-mps=550.163.01-2 -nvidia-detect=550.163.01-2 -nvidia-driver=550.163.01-2 -nvidia-driver-bin=550.163.01-2 -nvidia-driver-libs=550.163.01-2 -nvidia-egl-common=550.163.01-2 -nvidia-egl-icd=550.163.01-2 -nvidia-kernel-support=550.163.01-2 -nvidia-legacy-check=550.163.01-2 -nvidia-smi=550.163.01-2 -nvidia-suspend-common=550.163.01-2 -nvidia-vdpau-driver=550.163.01-2 -nvidia-vulkan-common=550.163.01-2 +nvidia-cuda-mps=550.163.01-4bpo13+1 +nvidia-detect=550.163.01-4bpo13+1 +nvidia-driver=550.163.01-4bpo13+1 +nvidia-driver-bin=550.163.01-4bpo13+1 +nvidia-driver-libs=550.163.01-4bpo13+1 +nvidia-egl-common=550.163.01-4bpo13+1 +nvidia-egl-icd=550.163.01-4bpo13+1 +nvidia-kernel-support=550.163.01-4bpo13+1 +nvidia-legacy-check=550.163.01-4bpo13+1 +nvidia-smi=550.163.01-4bpo13+1 +nvidia-suspend-common=550.163.01-4bpo13+1 +nvidia-vdpau-driver=550.163.01-4bpo13+1 +nvidia-vulkan-common=550.163.01-4bpo13+1 p7zip-rar phoronix-test-suite -xserver-xorg-video-nvidia=550.163.01-2 +xserver-xorg-video-nvidia=550.163.01-4bpo13+1 diff --git a/config/package-lists/lernstick-drivers.list.chroot b/config/package-lists/lernstick-drivers.list.chroot index 503d9247..01348038 100644 --- a/config/package-lists/lernstick-drivers.list.chroot +++ b/config/package-lists/lernstick-drivers.list.chroot @@ -1,5 +1,5 @@ -broadcom-sta-modules-6.16.3+deb13-amd64-signed -nvidia-kernel-550.163.01-6.16.3+deb13-amd64-signed -rtl88x2bu-modules-6.16.3+deb13-amd64-signed -v4l2loopback-modules-6.16.3+deb13-amd64-signed -virtualbox-modules-6.16.3+deb13-amd64-signed +broadcom-sta-modules-6.17.8+deb13-amd64-signed +nvidia-kernel-550.163.01-6.17.8+deb13-amd64-signed +rtl88x2bu-modules-6.17.8+deb13-amd64-signed +v4l2loopback-modules-6.17.8+deb13-amd64-signed +virtualbox-modules-6.17.8+deb13-amd64-signed diff --git a/functions.sh b/functions.sh index c9b1fdcf..829b6f16 100755 --- a/functions.sh +++ b/functions.sh @@ -105,7 +105,7 @@ build_image() --distribution trixie \ --firmware-chroot false \ --iso-volume "lernstick${ISO_SUFFIX} ${TODAY}" \ - --linux-packages linux-image-6.16.3+deb13 \ + --linux-packages linux-image-6.17.8+deb13 \ --mirror-binary ${MIRROR_SYSTEM} \ --mirror-binary-security ${MIRROR_SECURITY_SYSTEM} \ --mirror-bootstrap ${MIRROR_BUILD} \ From df6a81f3caa0ac63c596938c607de6849fdae7a7 Mon Sep 17 00:00:00 2001 From: Ronny Standtke Date: Sun, 7 Dec 2025 18:27:15 +0100 Subject: [PATCH 35/55] fixed nvidia packages version --- .../package-lists/debian_non-free.list.chroot | 68 +++++++++---------- 1 file changed, 34 insertions(+), 34 deletions(-) diff --git a/config/package-lists/debian_non-free.list.chroot b/config/package-lists/debian_non-free.list.chroot index 70f02f7d..4cb0b229 100644 --- a/config/package-lists/debian_non-free.list.chroot +++ b/config/package-lists/debian_non-free.list.chroot @@ -19,7 +19,7 @@ firmware-misc-nonfree firmware-myricom firmware-netronome firmware-netxen -firmware-nvidia-gsp=550.163.01-4bpo13+1 +firmware-nvidia-gsp=550.163.01-4~bpo13+1 firmware-qlogic firmware-realtek firmware-siano @@ -27,39 +27,39 @@ firmware-sof-signed firmware-ti-connectivity firmware-zd1211 intel-microcode -libcuda1=550.163.01-4bpo13+1 -libegl-nvidia0=550.163.01-4bpo13+1 -libgl1-nvidia-glvnd-glx=550.163.01-4bpo13+1 -libgles-nvidia1=550.163.01-4bpo13+1 -libgles-nvidia2=550.163.01-4bpo13+1 -libglx-nvidia0=550.163.01-4bpo13+1 -libnvcuvid1=550.163.01-4bpo13+1 -libnvidia-allocator1=550.163.01-4bpo13+1 -libnvidia-cfg1=550.163.01-4bpo13+1 -libnvidia-eglcore=550.163.01-4bpo13+1 -libnvidia-encode1=550.163.01-4bpo13+1 -libnvidia-glcore=550.163.01-4bpo13+1 -libnvidia-glvkspirv=550.163.01-4bpo13+1 -libnvidia-ml1=550.163.01-4bpo13+1 -libnvidia-pkcs11-openssl3=550.163.01-4bpo13+1 -libnvidia-ptxjitcompiler1=550.163.01-4bpo13+1 -libnvidia-rtcore=550.163.01-4bpo13+1 -libnvoptix1=550.163.01-4bpo13+1 -nvidia-alternative=550.163.01-4bpo13+1 +libcuda1=550.163.01-4~bpo13+1 +libegl-nvidia0=550.163.01-4~bpo13+1 +libgl1-nvidia-glvnd-glx=550.163.01-4~bpo13+1 +libgles-nvidia1=550.163.01-4~bpo13+1 +libgles-nvidia2=550.163.01-4~bpo13+1 +libglx-nvidia0=550.163.01-4~bpo13+1 +libnvcuvid1=550.163.01-4~bpo13+1 +libnvidia-allocator1=550.163.01-4~bpo13+1 +libnvidia-cfg1=550.163.01-4~bpo13+1 +libnvidia-eglcore=550.163.01-4~bpo13+1 +libnvidia-encode1=550.163.01-4~bpo13+1 +libnvidia-glcore=550.163.01-4~bpo13+1 +libnvidia-glvkspirv=550.163.01-4~bpo13+1 +libnvidia-ml1=550.163.01-4~bpo13+1 +libnvidia-pkcs11-openssl3=550.163.01-4~bpo13+1 +libnvidia-ptxjitcompiler1=550.163.01-4~bpo13+1 +libnvidia-rtcore=550.163.01-4~bpo13+1 +libnvoptix1=550.163.01-4~bpo13+1 +nvidia-alternative=550.163.01-4~bpo13+1 nvidia-container-toolkit -nvidia-cuda-mps=550.163.01-4bpo13+1 -nvidia-detect=550.163.01-4bpo13+1 -nvidia-driver=550.163.01-4bpo13+1 -nvidia-driver-bin=550.163.01-4bpo13+1 -nvidia-driver-libs=550.163.01-4bpo13+1 -nvidia-egl-common=550.163.01-4bpo13+1 -nvidia-egl-icd=550.163.01-4bpo13+1 -nvidia-kernel-support=550.163.01-4bpo13+1 -nvidia-legacy-check=550.163.01-4bpo13+1 -nvidia-smi=550.163.01-4bpo13+1 -nvidia-suspend-common=550.163.01-4bpo13+1 -nvidia-vdpau-driver=550.163.01-4bpo13+1 -nvidia-vulkan-common=550.163.01-4bpo13+1 +nvidia-cuda-mps=550.163.01-4~bpo13+1 +nvidia-detect=550.163.01-4~bpo13+1 +nvidia-driver=550.163.01-4~bpo13+1 +nvidia-driver-bin=550.163.01-4~bpo13+1 +nvidia-driver-libs=550.163.01-4~bpo13+1 +nvidia-egl-common=550.163.01-4~bpo13+1 +nvidia-egl-icd=550.163.01-4~bpo13+1 +nvidia-kernel-support=550.163.01-4~bpo13+1 +nvidia-legacy-check=550.163.01-4~bpo13+1 +nvidia-smi=550.163.01-4~bpo13+1 +nvidia-suspend-common=550.163.01-4~bpo13+1 +nvidia-vdpau-driver=550.163.01-4~bpo13+1 +nvidia-vulkan-common=550.163.01-4~bpo13+1 p7zip-rar phoronix-test-suite -xserver-xorg-video-nvidia=550.163.01-4bpo13+1 +xserver-xorg-video-nvidia=550.163.01-4~bpo13+1 From 85cb941f53d6f4de2727f264e84f9b5da005b559 Mon Sep 17 00:00:00 2001 From: Ronny Standtke Date: Sun, 25 Jan 2026 20:30:06 +0100 Subject: [PATCH 36/55] added hook for cleaning up the uv cache --- config/hooks/live/clean_uv_cache.chroot | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100755 config/hooks/live/clean_uv_cache.chroot diff --git a/config/hooks/live/clean_uv_cache.chroot b/config/hooks/live/clean_uv_cache.chroot new file mode 100755 index 00000000..08cdc653 --- /dev/null +++ b/config/hooks/live/clean_uv_cache.chroot @@ -0,0 +1,11 @@ +#!/bin/sh + +# If we install packages with uv, we will have many files in the uv cache. +# This can be huge, just clean the cache. + +if [ -e /usr/local/bin/uv ] +then + /usr/local/bin/uv cache clean +else + echo "WARNING: command uv not found" +fi From 37498522cadb7e91834dce5fa0393b2ea75cf19a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Berkel?= Date: Wed, 4 Mar 2026 09:52:36 +0100 Subject: [PATCH 37/55] updated to kernel 6.18.5 --- config/package-lists/lernstick-drivers.list.chroot | 10 +++++----- functions.sh | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/config/package-lists/lernstick-drivers.list.chroot b/config/package-lists/lernstick-drivers.list.chroot index 01348038..4086d7ff 100644 --- a/config/package-lists/lernstick-drivers.list.chroot +++ b/config/package-lists/lernstick-drivers.list.chroot @@ -1,5 +1,5 @@ -broadcom-sta-modules-6.17.8+deb13-amd64-signed -nvidia-kernel-550.163.01-6.17.8+deb13-amd64-signed -rtl88x2bu-modules-6.17.8+deb13-amd64-signed -v4l2loopback-modules-6.17.8+deb13-amd64-signed -virtualbox-modules-6.17.8+deb13-amd64-signed +broadcom-sta-modules-6.18.5+deb13-amd64-signed +nvidia-kernel-550.163.01-6.18.5+deb13-amd64-signed +rtl88x2bu-modules-6.18.5+deb13-amd64-signed +v4l2loopback-modules-6.18.5+deb13-amd64-signed +virtualbox-modules-6.18.5+deb13-amd64-signed diff --git a/functions.sh b/functions.sh index 829b6f16..0fb7338c 100755 --- a/functions.sh +++ b/functions.sh @@ -105,7 +105,7 @@ build_image() --distribution trixie \ --firmware-chroot false \ --iso-volume "lernstick${ISO_SUFFIX} ${TODAY}" \ - --linux-packages linux-image-6.17.8+deb13 \ + --linux-packages linux-image-6.18.5+deb13 \ --mirror-binary ${MIRROR_SYSTEM} \ --mirror-binary-security ${MIRROR_SECURITY_SYSTEM} \ --mirror-bootstrap ${MIRROR_BUILD} \ From 73a0b688437e28ac4e8302e0e63eb75f191254d6 Mon Sep 17 00:00:00 2001 From: Ronny Standtke Date: Fri, 13 Mar 2026 18:18:05 +0100 Subject: [PATCH 38/55] re-enabled scrcpy (available as backport) --- config/package-lists/debian_main-mini.list.chroot | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/package-lists/debian_main-mini.list.chroot b/config/package-lists/debian_main-mini.list.chroot index 6f2c5692..667fc34f 100644 --- a/config/package-lists/debian_main-mini.list.chroot +++ b/config/package-lists/debian_main-mini.list.chroot @@ -126,7 +126,7 @@ samba samplerate-programs #sane sane-utils -#scrcpy +scrcpy sddm smb4k sonic-pi From f3dee9bfdbe30bf74b68f11055715d408e12d16d Mon Sep 17 00:00:00 2001 From: Ronny Standtke Date: Sat, 28 Mar 2026 23:51:36 +0100 Subject: [PATCH 39/55] updated to kernel 6.18.15 --- config/package-lists/lernstick-drivers.list.chroot | 10 +++++----- functions.sh | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/config/package-lists/lernstick-drivers.list.chroot b/config/package-lists/lernstick-drivers.list.chroot index 4086d7ff..0d41167c 100644 --- a/config/package-lists/lernstick-drivers.list.chroot +++ b/config/package-lists/lernstick-drivers.list.chroot @@ -1,5 +1,5 @@ -broadcom-sta-modules-6.18.5+deb13-amd64-signed -nvidia-kernel-550.163.01-6.18.5+deb13-amd64-signed -rtl88x2bu-modules-6.18.5+deb13-amd64-signed -v4l2loopback-modules-6.18.5+deb13-amd64-signed -virtualbox-modules-6.18.5+deb13-amd64-signed +broadcom-sta-modules-6.18.15+deb13-amd64-signed +nvidia-kernel-550.163.01-6.18.15+deb13-amd64-signed +rtl88x2bu-modules-6.18.15+deb13-amd64-signed +v4l2loopback-modules-6.18.15+deb13-amd64-signed +virtualbox-modules-6.18.15+deb13-amd64-signed diff --git a/functions.sh b/functions.sh index 0fb7338c..c62d8e7a 100755 --- a/functions.sh +++ b/functions.sh @@ -105,7 +105,7 @@ build_image() --distribution trixie \ --firmware-chroot false \ --iso-volume "lernstick${ISO_SUFFIX} ${TODAY}" \ - --linux-packages linux-image-6.18.5+deb13 \ + --linux-packages linux-image-6.18.15+deb13 \ --mirror-binary ${MIRROR_SYSTEM} \ --mirror-binary-security ${MIRROR_SECURITY_SYSTEM} \ --mirror-bootstrap ${MIRROR_BUILD} \ From 60255e58d91fc5e90bfa40f7f0c407b2c878d405 Mon Sep 17 00:00:00 2001 From: Ronny Standtke Date: Wed, 8 Apr 2026 10:08:27 +0200 Subject: [PATCH 40/55] re-enabled lernstick-systemd --- config/package-lists/lernstick-core.list.chroot | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/package-lists/lernstick-core.list.chroot b/config/package-lists/lernstick-core.list.chroot index 40680f3f..780e4ed0 100644 --- a/config/package-lists/lernstick-core.list.chroot +++ b/config/package-lists/lernstick-core.list.chroot @@ -26,7 +26,7 @@ lernstick-python-apt-common lernstick-ranger #lernstick-software-properties-gtk lernstick-speech-dispatcher -#lernstick-systemd +lernstick-systemd lernstick-texlive-base lernstick-theme lernstick-vim-common From 5a0086fb3ebf9961d04ae2b88a81f04296419ef9 Mon Sep 17 00:00:00 2001 From: Sebastian Date: Thu, 9 Apr 2026 09:17:24 +0200 Subject: [PATCH 41/55] Add proxam-exam-client integration, build pipeline, firewall config --- .github/workflows/build-iso.yml | 83 +++++++++++++++++++ build_proxam_exam_iso.sh | 77 +++++++++++++++++ .../live/install-proxam-exam-client.chroot | 52 ++++++++++++ .../etc/lernstick-exam-client.conf | 20 +++++ .../lernstick-firewall/proxy.d/proxam.conf | 8 ++ .../etc/lernstickWelcome | 1 + 6 files changed, 241 insertions(+) create mode 100644 .github/workflows/build-iso.yml create mode 100755 build_proxam_exam_iso.sh create mode 100755 config/hooks/live/install-proxam-exam-client.chroot create mode 100644 config/includes.chroot_after_packages/etc/lernstick-exam-client.conf create mode 100644 config/includes.chroot_after_packages/etc/lernstick-firewall/proxy.d/proxam.conf diff --git a/.github/workflows/build-iso.yml b/.github/workflows/build-iso.yml new file mode 100644 index 00000000..1076eabc --- /dev/null +++ b/.github/workflows/build-iso.yml @@ -0,0 +1,83 @@ +name: Build ProXam Exam ISO + +on: + push: + tags: + - 'v*' + workflow_dispatch: + inputs: + debug: + description: 'Enable debug output' + required: false + default: 'false' + +jobs: + build: + runs-on: ubuntu-latest + container: + image: debian:trixie + options: --privileged # required for live-build chroot operations + + steps: + - name: Install live-build and dependencies + run: | + apt-get update + apt-get install -y --no-install-recommends \ + live-build \ + rsync \ + zsync \ + gfxboot \ + libhtml-parser-perl \ + wget \ + ca-certificates \ + git \ + debootstrap \ + squashfs-tools \ + xorriso \ + isolinux \ + syslinux \ + syslinux-common \ + grub-efi-amd64-bin \ + grub-pc-bin \ + mtools \ + dosfstools + + - name: Checkout + uses: actions/checkout@v4 + + - name: Create constants file + run: | + cat > constants < Building ProXam Exam ISO (suffix: ${ISO_SUFFIX})" +echo "==> Build started: $(date)" + +# Override distribution to trixie for debian13 branch +build_image_proxam() +{ + TODAY=$(date +%Y-%m-%d) + + rm -f config/binary config/bootstrap config/build config/chroot config/common config/source + lb clean + + lb config \ + --apt-indices false \ + --apt-recommends true \ + --architectures amd64 \ + --archive-areas "main contrib non-free non-free-firmware" \ + --bootloaders "syslinux,grub-efi" \ + --chroot-squashfs-compression-level 22 \ + --chroot-squashfs-compression-type zstd \ + --debootstrap-options "--include=ca-certificates,openssl" \ + --distribution trixie \ + --firmware-chroot false \ + --iso-volume "proxam-exam ${TODAY}" \ + --mirror-binary "${MIRROR_SYSTEM}" \ + --mirror-binary-security "${MIRROR_SECURITY_SYSTEM}" \ + --mirror-bootstrap "${MIRROR_BUILD}" \ + --security true \ + --source false \ + --updates true \ + --verbose + + lb build 2>&1 | tee logfile.txt + + ISO_FILE="live-image-amd64.hybrid.iso" + if [ -f "${ISO_FILE}" ]; then + PREFIX="proxam-exam_debian13${ISO_SUFFIX}_${TODAY}" + IMAGE="${PREFIX}.iso" + mv "${ISO_FILE}" "${IMAGE}" + rm -f ./*.zsync + zsyncmake -C "${IMAGE}" -u "${IMAGE}" + md5sum "${IMAGE}" > "${IMAGE}.md5" + + if [ -d "${BUILD_DIR}" ]; then + mv "${PREFIX}"* "${BUILD_DIR}" + mv logfile.txt "${BUILD_DIR}" + fi + + echo "==> ISO built successfully: ${IMAGE}" + else + echo "ERROR: ISO was not built. Check logfile.txt for details." | tee -a logfile.txt + exit 1 + fi +} + +build_image_proxam diff --git a/config/hooks/live/install-proxam-exam-client.chroot b/config/hooks/live/install-proxam-exam-client.chroot new file mode 100755 index 00000000..2add0d7c --- /dev/null +++ b/config/hooks/live/install-proxam-exam-client.chroot @@ -0,0 +1,52 @@ +#!/bin/sh +# Install proxam-exam-client from the latest GitHub Release. +# Runs inside the chroot during ISO build. +set -e + +GITHUB_REPO="Wojtasik-Lang-Consulting/proxam-exam-client" +DEB_NAME="proxam-exam-client" +TMPDIR="/tmp/proxam-exam-client-install" + +echo "==> Installing ${DEB_NAME} from GitHub Releases ..." + +# Fetch the download URL of the latest .deb release asset +LATEST_URL=$(wget -qO- "https://api.github.com/repos/${GITHUB_REPO}/releases/latest" \ + | grep "browser_download_url" \ + | grep "\.deb" \ + | head -1 \ + | cut -d '"' -f 4) + +if [ -z "${LATEST_URL}" ]; then + echo "ERROR: Could not find a .deb release for ${GITHUB_REPO}." >&2 + echo " Make sure at least one tagged release with a .deb asset exists." >&2 + exit 1 +fi + +echo "==> Downloading: ${LATEST_URL}" +mkdir -p "${TMPDIR}" +wget -q -O "${TMPDIR}/${DEB_NAME}.deb" "${LATEST_URL}" + +echo "==> Installing dependencies ..." +apt-get install -y --no-install-recommends \ + wget \ + python3 \ + zenity \ + coreutils \ + iptables \ + ffmpeg \ + logkeys \ + screen \ + xdotool \ + python3-wxgtk-webview4.0 \ + python3-packaging \ + python3-requests \ + avahi-utils \ + rdiff-backup + +echo "==> Installing ${DEB_NAME}.deb ..." +dpkg -i "${TMPDIR}/${DEB_NAME}.deb" || apt-get install -f -y + +echo "==> Cleaning up ..." +rm -rf "${TMPDIR}" + +echo "==> ${DEB_NAME} installed successfully." diff --git a/config/includes.chroot_after_packages/etc/lernstick-exam-client.conf b/config/includes.chroot_after_packages/etc/lernstick-exam-client.conf new file mode 100644 index 00000000..e89e0b77 --- /dev/null +++ b/config/includes.chroot_after_packages/etc/lernstick-exam-client.conf @@ -0,0 +1,20 @@ +# ProXam Exam Client — Serverkonfiguration +# +# Diese Datei wird von searchExamServer gelesen wenn kein mDNS-Server +# gefunden wird. IP und Host auf den ProXam-Server anpassen. +# +# Für mDNS-Discovery (Schule mit lokalem Server): diese Datei löschen oder +# auskommentieren — der Client scannt dann das Netzwerk automatisch. + +gladosIp="0.0.0.0" +gladosHost="api.proxam.at" +gladosPort=443 +gladosProto="https" +gladosDesc="ProXam Prüfungsserver" + +actionDownload='glados/index.php/ticket/download/{token}' +actionFinish='glados/index.php/ticket/finish/{token}' +actionNotify='glados/index.php/ticket/notify/{token}?state={state}' +actionSSHKey='glados/index.php/ticket/ssh-key' +actionMd5='glados/index.php/ticket/md5/{token}' +actionConfig='glados/index.php/ticket/config/{token}' diff --git a/config/includes.chroot_after_packages/etc/lernstick-firewall/proxy.d/proxam.conf b/config/includes.chroot_after_packages/etc/lernstick-firewall/proxy.d/proxam.conf new file mode 100644 index 00000000..6b0ee19e --- /dev/null +++ b/config/includes.chroot_after_packages/etc/lernstick-firewall/proxy.d/proxam.conf @@ -0,0 +1,8 @@ +# ProXam Firewall Whitelist +# Erlaubt HTTP/HTTPS-Zugriff auf den ProXam-Backend-Server. +# Wird von lernstick-firewall (Squid-Proxy) eingelesen. +# +# Format: ^proto://host (Regex-Präfix) +# Diese Datei wird beim Start von searchExamServer automatisch befüllt. +# Der Eintrag hier dient als Fallback/Basis-Whitelist. +^https://api\.proxam\.at diff --git a/config/includes.chroot_after_packages/etc/lernstickWelcome b/config/includes.chroot_after_packages/etc/lernstickWelcome index 2914e54a..0ce79500 100644 --- a/config/includes.chroot_after_packages/etc/lernstickWelcome +++ b/config/includes.chroot_after_packages/etc/lernstickWelcome @@ -1,3 +1,4 @@ AutoStartInstaller=true ShowNotUsedInfo=true ShowReadOnlyInfo=true +SearchExamServer=true From f82e2af1e95bdb43d0a75905d35d158799debfd4 Mon Sep 17 00:00:00 2001 From: Sebastian Date: Thu, 9 Apr 2026 09:57:21 +0200 Subject: [PATCH 42/55] Fix: add systemd-container to ISO build workflow --- .github/workflows/build-iso.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/build-iso.yml b/.github/workflows/build-iso.yml index 1076eabc..f3020207 100644 --- a/.github/workflows/build-iso.yml +++ b/.github/workflows/build-iso.yml @@ -24,6 +24,7 @@ jobs: apt-get update apt-get install -y --no-install-recommends \ live-build \ + systemd-container \ rsync \ zsync \ gfxboot \ From 9ea90bfb52fa1b408e4b168df0a35ed4137a7b84 Mon Sep 17 00:00:00 2001 From: Sebastian Date: Thu, 9 Apr 2026 20:16:15 +0200 Subject: [PATCH 43/55] fix: run ISO build natively on ubuntu-latest (fix systemd-nspawn in container) --- .github/workflows/build-iso.yml | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/.github/workflows/build-iso.yml b/.github/workflows/build-iso.yml index f3020207..379d03c7 100644 --- a/.github/workflows/build-iso.yml +++ b/.github/workflows/build-iso.yml @@ -14,15 +14,12 @@ on: jobs: build: runs-on: ubuntu-latest - container: - image: debian:trixie - options: --privileged # required for live-build chroot operations steps: - name: Install live-build and dependencies run: | - apt-get update - apt-get install -y --no-install-recommends \ + sudo apt-get update + sudo apt-get install -y --no-install-recommends \ live-build \ systemd-container \ rsync \ @@ -63,7 +60,7 @@ jobs: - name: Build ISO run: | chmod +x build_proxam_exam_iso.sh - ./build_proxam_exam_iso.sh + sudo ./build_proxam_exam_iso.sh - name: Upload ISO artifact uses: actions/upload-artifact@v4 From 60557bf02d5b1b028efe25d14e8fa426ed3e0ece Mon Sep 17 00:00:00 2001 From: Sebastian Date: Fri, 10 Apr 2026 23:33:10 +0200 Subject: [PATCH 44/55] fix: build proxam-exam-client .deb from source in CI, remove logkeys dependency --- .github/workflows/build-iso.yml | 99 +++++++++++++------ .../live/install-proxam-exam-client.chroot | 83 +++++++++------- 2 files changed, 116 insertions(+), 66 deletions(-) diff --git a/.github/workflows/build-iso.yml b/.github/workflows/build-iso.yml index 379d03c7..f940d543 100644 --- a/.github/workflows/build-iso.yml +++ b/.github/workflows/build-iso.yml @@ -16,36 +16,18 @@ jobs: runs-on: ubuntu-latest steps: - - name: Install live-build and dependencies - run: | - sudo apt-get update - sudo apt-get install -y --no-install-recommends \ - live-build \ - systemd-container \ - rsync \ - zsync \ - gfxboot \ - libhtml-parser-perl \ - wget \ - ca-certificates \ - git \ - debootstrap \ - squashfs-tools \ - xorriso \ - isolinux \ - syslinux \ - syslinux-common \ - grub-efi-amd64-bin \ - grub-pc-bin \ - mtools \ - dosfstools + - name: Checkout proxam-lernstick + uses: actions/checkout@v4 - - name: Checkout + - name: Checkout proxam-exam-client uses: actions/checkout@v4 + with: + repository: Wojtasik-Lang-Consulting/proxam-exam-client + path: proxam-exam-client-src - name: Create constants file run: | - cat > constants < constants <<'EOF' BUILD_DIR="" TMPFS="" TMPFS_IMAGE="" @@ -57,10 +39,71 @@ jobs: SOURCE="false" EOF - - name: Build ISO + - name: Build proxam-exam-client .deb and place in packages.chroot + # Build the .deb from source inside a Trixie container so the package + # is available to live-build via config/packages.chroot/ — no GitHub + # Release required and no network access needed inside the chroot. + run: | + mkdir -p config/packages.chroot + docker run --rm \ + -v "${{ github.workspace }}/proxam-exam-client-src:/src" \ + -v "${{ github.workspace }}/config/packages.chroot:/out" \ + debian:trixie \ + bash -c " + set -e + apt-get update -qq + apt-get install -y --no-install-recommends \ + build-essential \ + devscripts \ + debhelper \ + config-package-dev \ + gettext \ + fakeroot \ + dpkg-dev + cp -r /src /build + cd /build + dpkg-buildpackage -us -uc -b + cp /proxam-exam-client_*.deb /out/ + ls -la /out/ + " + + - name: Build ISO (privileged Debian container) + # live-build uses systemd-nspawn to run chroot hooks. + # systemd-nspawn requires kernel namespaces → must run in a + # --privileged container so it has full access to host kernel features. + # Using docker run directly (instead of GitHub Actions container: block) + # lets us pass --privileged and --cgroupns=host which the container: block omits. run: | - chmod +x build_proxam_exam_iso.sh - sudo ./build_proxam_exam_iso.sh + docker run --privileged --cgroupns=host \ + -v "${{ github.workspace }}:/build" \ + -w /build \ + debian:trixie \ + bash -c " + set -e + apt-get update -qq + apt-get install -y --no-install-recommends \ + live-build \ + systemd-container \ + rsync \ + zsync \ + gfxboot \ + libhtml-parser-perl \ + wget \ + ca-certificates \ + git \ + debootstrap \ + squashfs-tools \ + xorriso \ + isolinux \ + syslinux \ + syslinux-common \ + grub-efi-amd64-bin \ + grub-pc-bin \ + mtools \ + dosfstools + chmod +x build_proxam_exam_iso.sh + ./build_proxam_exam_iso.sh + " - name: Upload ISO artifact uses: actions/upload-artifact@v4 diff --git a/config/hooks/live/install-proxam-exam-client.chroot b/config/hooks/live/install-proxam-exam-client.chroot index 2add0d7c..e8d2cebe 100755 --- a/config/hooks/live/install-proxam-exam-client.chroot +++ b/config/hooks/live/install-proxam-exam-client.chroot @@ -1,52 +1,59 @@ #!/bin/sh -# Install proxam-exam-client from the latest GitHub Release. -# Runs inside the chroot during ISO build. +# Install proxam-exam-client during ISO build. +# If the package was already installed by live-build from config/packages.chroot/, +# this hook only installs any extra runtime dependencies not declared in the .deb. +# As a fallback it downloads the latest release from GitHub. set -e GITHUB_REPO="Wojtasik-Lang-Consulting/proxam-exam-client" DEB_NAME="proxam-exam-client" TMPDIR="/tmp/proxam-exam-client-install" -echo "==> Installing ${DEB_NAME} from GitHub Releases ..." - -# Fetch the download URL of the latest .deb release asset -LATEST_URL=$(wget -qO- "https://api.github.com/repos/${GITHUB_REPO}/releases/latest" \ - | grep "browser_download_url" \ - | grep "\.deb" \ - | head -1 \ - | cut -d '"' -f 4) - -if [ -z "${LATEST_URL}" ]; then - echo "ERROR: Could not find a .deb release for ${GITHUB_REPO}." >&2 - echo " Make sure at least one tagged release with a .deb asset exists." >&2 - exit 1 +# If already installed (e.g. via config/packages.chroot/), skip download +if dpkg -l "${DEB_NAME}" 2>/dev/null | grep -q "^ii"; then + echo "==> ${DEB_NAME} already installed, skipping download." +else + echo "==> Installing ${DEB_NAME} from GitHub Releases ..." + + LATEST_URL=$(wget -qO- "https://api.github.com/repos/${GITHUB_REPO}/releases/latest" \ + | grep "browser_download_url" \ + | grep "\.deb" \ + | head -1 \ + | cut -d '"' -f 4) + + if [ -z "${LATEST_URL}" ]; then + echo "ERROR: Could not find a .deb release for ${GITHUB_REPO}." >&2 + echo " Either push a tagged release or place the .deb in config/packages.chroot/." >&2 + exit 1 + fi + + echo "==> Downloading: ${LATEST_URL}" + mkdir -p "${TMPDIR}" + wget -q -O "${TMPDIR}/${DEB_NAME}.deb" "${LATEST_URL}" + + echo "==> Installing ${DEB_NAME}.deb ..." + apt-get install -y --no-install-recommends \ + wget \ + python3 \ + zenity \ + coreutils \ + iptables \ + ffmpeg \ + screen \ + xdotool \ + python3-wxgtk-webview4.0 \ + python3-packaging \ + python3-requests \ + avahi-utils \ + rdiff-backup + dpkg -i "${TMPDIR}/${DEB_NAME}.deb" || apt-get install -f -y + + rm -rf "${TMPDIR}" fi -echo "==> Downloading: ${LATEST_URL}" -mkdir -p "${TMPDIR}" -wget -q -O "${TMPDIR}/${DEB_NAME}.deb" "${LATEST_URL}" - -echo "==> Installing dependencies ..." +# Install extra runtime deps not in the .deb's Depends (avahi-utils, rdiff-backup) apt-get install -y --no-install-recommends \ - wget \ - python3 \ - zenity \ - coreutils \ - iptables \ - ffmpeg \ - logkeys \ - screen \ - xdotool \ - python3-wxgtk-webview4.0 \ - python3-packaging \ - python3-requests \ avahi-utils \ rdiff-backup -echo "==> Installing ${DEB_NAME}.deb ..." -dpkg -i "${TMPDIR}/${DEB_NAME}.deb" || apt-get install -f -y - -echo "==> Cleaning up ..." -rm -rf "${TMPDIR}" - echo "==> ${DEB_NAME} installed successfully." From 036c2dfae1db5aeed0695cff05d47869bb3aacde Mon Sep 17 00:00:00 2001 From: Sebastian Date: Sat, 11 Apr 2026 08:56:36 +0200 Subject: [PATCH 45/55] fix: free up runner disk space before ISO build (xorriso out of space) --- .github/workflows/build-iso.yml | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/.github/workflows/build-iso.yml b/.github/workflows/build-iso.yml index f940d543..35694652 100644 --- a/.github/workflows/build-iso.yml +++ b/.github/workflows/build-iso.yml @@ -16,6 +16,37 @@ jobs: runs-on: ubuntu-latest steps: + - name: Free up disk space + # GitHub Actions runners come with ~14 GB total but only ~3–4 GB free after + # preinstalled software. The ISO build needs ~10+ GB. We remove toolchains + # and SDKs we don't need to reclaim ~25 GB of space. + run: | + echo "==> Disk space before cleanup:" + df -h / + sudo rm -rf \ + /usr/share/dotnet \ + /usr/local/lib/android \ + /opt/ghc \ + /opt/hostedtoolcache \ + /usr/local/share/powershell \ + /usr/share/swift \ + /usr/local/.ghcup \ + /usr/lib/jvm \ + /usr/local/graalvm \ + /usr/local/share/chromium \ + /usr/local/share/edge_driver \ + /usr/local/share/gecko_driver \ + /usr/local/share/vcpkg \ + /usr/share/miniconda \ + /usr/local/aws-cli \ + /usr/local/aws-sam-cli \ + /opt/az \ + "$AGENT_TOOLSDIRECTORY" || true + sudo apt-get clean + docker image prune -af || true + echo "==> Disk space after cleanup:" + df -h / + - name: Checkout proxam-lernstick uses: actions/checkout@v4 From 9ea82e4f354bd3f131f4e860f71fb25ea9c92e70 Mon Sep 17 00:00:00 2001 From: FilipWjk Date: Sat, 11 Apr 2026 14:03:41 +0200 Subject: [PATCH 46/55] (refactor): update configuration for ProXam Exam Client to use server parameters --- .../etc/lernstick-exam-client.conf | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/config/includes.chroot_after_packages/etc/lernstick-exam-client.conf b/config/includes.chroot_after_packages/etc/lernstick-exam-client.conf index e89e0b77..15ad21ab 100644 --- a/config/includes.chroot_after_packages/etc/lernstick-exam-client.conf +++ b/config/includes.chroot_after_packages/etc/lernstick-exam-client.conf @@ -6,15 +6,15 @@ # Für mDNS-Discovery (Schule mit lokalem Server): diese Datei löschen oder # auskommentieren — der Client scannt dann das Netzwerk automatisch. -gladosIp="0.0.0.0" -gladosHost="api.proxam.at" -gladosPort=443 -gladosProto="https" -gladosDesc="ProXam Prüfungsserver" +serverIp="0.0.0.0" +serverHost="api.proxam.at" +serverPort=443 +serverProto="https" +serverDesc="ProXam Prüfungsserver" -actionDownload='glados/index.php/ticket/download/{token}' -actionFinish='glados/index.php/ticket/finish/{token}' -actionNotify='glados/index.php/ticket/notify/{token}?state={state}' -actionSSHKey='glados/index.php/ticket/ssh-key' -actionMd5='glados/index.php/ticket/md5/{token}' -actionConfig='glados/index.php/ticket/config/{token}' +actionDownload='proxam/ticket/download/{token}' +actionFinish='proxam/ticket/finish/{token}' +actionNotify='proxam/ticket/notify/{token}?state={state}' +actionSSHKey='proxam/ticket/ssh-key' +actionMd5='proxam/ticket/md5/{token}' +actionConfig='proxam/ticket/config/{token}' From 33e6cfcd964c2c9548c9edef03a2d1928b366756 Mon Sep 17 00:00:00 2001 From: FilipWjk Date: Tue, 14 Apr 2026 19:28:00 +0200 Subject: [PATCH 47/55] feat: add support for Moodle + RDP ISO variant with associated scripts and configurations --- .github/workflows/build-iso.yml | 49 +++++++++-- README.md | 19 ++++ build_proxam_moodle_rdp_iso.sh | 86 +++++++++++++++++++ templates/proxam-moodle-rdp/lernstickWelcome | 4 + .../proxam-firewall-whitelist.conf | 12 +++ .../proxam-moodle-rdp-launcher | 66 ++++++++++++++ .../proxam-moodle-rdp/proxam-moodle-rdp.conf | 5 ++ .../proxam-moodle-rdp.desktop | 9 ++ 8 files changed, 243 insertions(+), 7 deletions(-) create mode 100644 build_proxam_moodle_rdp_iso.sh create mode 100644 templates/proxam-moodle-rdp/lernstickWelcome create mode 100644 templates/proxam-moodle-rdp/proxam-firewall-whitelist.conf create mode 100644 templates/proxam-moodle-rdp/proxam-moodle-rdp-launcher create mode 100644 templates/proxam-moodle-rdp/proxam-moodle-rdp.conf create mode 100644 templates/proxam-moodle-rdp/proxam-moodle-rdp.desktop diff --git a/.github/workflows/build-iso.yml b/.github/workflows/build-iso.yml index 35694652..cc9d68e2 100644 --- a/.github/workflows/build-iso.yml +++ b/.github/workflows/build-iso.yml @@ -6,6 +6,14 @@ on: - 'v*' workflow_dispatch: inputs: + iso_variant: + description: 'ISO variant to build' + required: true + default: 'proxam-exam' + type: choice + options: + - proxam-exam + - moodle-rdp debug: description: 'Enable debug output' required: false @@ -96,6 +104,33 @@ jobs: dpkg-buildpackage -us -uc -b cp /proxam-exam-client_*.deb /out/ ls -la /out/ + + - name: Select ISO variant + run: | + if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then + ISO_VARIANT="${{ github.event.inputs.iso_variant }}" + else + ISO_VARIANT="proxam-exam" + fi + + case "${ISO_VARIANT}" in + proxam-exam) + echo "ISO_VARIANT=${ISO_VARIANT}" >> "$GITHUB_ENV" + echo "ISO_BUILD_SCRIPT=build_proxam_exam_iso.sh" >> "$GITHUB_ENV" + echo "ISO_ARTIFACT_NAME=proxam-exam-iso" >> "$GITHUB_ENV" + echo "ISO_FILE_GLOB=proxam-exam_debian13_proxam_exam_*" >> "$GITHUB_ENV" + ;; + moodle-rdp) + echo "ISO_VARIANT=${ISO_VARIANT}" >> "$GITHUB_ENV" + echo "ISO_BUILD_SCRIPT=build_proxam_moodle_rdp_iso.sh" >> "$GITHUB_ENV" + echo "ISO_ARTIFACT_NAME=proxam-moodle-rdp-iso" >> "$GITHUB_ENV" + echo "ISO_FILE_GLOB=lernstick_debian13_moodle_rdp_*" >> "$GITHUB_ENV" + ;; + *) + echo "Unsupported ISO variant: ${ISO_VARIANT}" >&2 + exit 1 + ;; + esac " - name: Build ISO (privileged Debian container) @@ -132,17 +167,17 @@ jobs: grub-pc-bin \ mtools \ dosfstools - chmod +x build_proxam_exam_iso.sh - ./build_proxam_exam_iso.sh + chmod +x "${ISO_BUILD_SCRIPT}" + ./${ISO_BUILD_SCRIPT} " - name: Upload ISO artifact uses: actions/upload-artifact@v4 with: - name: proxam-exam-iso + name: ${{ env.ISO_ARTIFACT_NAME }} path: | - proxam-exam_debian13_proxam_exam_*.iso - proxam-exam_debian13_proxam_exam_*.md5 + ${{ env.ISO_FILE_GLOB }}.iso + ${{ env.ISO_FILE_GLOB }}.md5 retention-days: 14 - name: Create GitHub Release @@ -150,6 +185,6 @@ jobs: uses: softprops/action-gh-release@v2 with: files: | - proxam-exam_debian13_proxam_exam_*.iso - proxam-exam_debian13_proxam_exam_*.md5 + ${{ env.ISO_FILE_GLOB }}.iso + ${{ env.ISO_FILE_GLOB }}.md5 generate_release_notes: true diff --git a/README.md b/README.md index eb409ed8..09dd0a42 100644 --- a/README.md +++ b/README.md @@ -8,3 +8,22 @@ packages needed on a Debian system to run this script: * live-build * rsync * zsync + +## Additional ISO variants + +### Minimal Moodle + RDP ISO + +Use `./build_proxam_moodle_rdp_iso.sh` to create a stripped-down GNOME-based image +for Moodle exams and Windows Remote Desktop access. + +This build profile: +- keeps only the shared core package lists required to boot the Lernstick image +- removes the default desktop, education and flatpak package sets +- skips the ProXam exam-client installation hook +- adds Firefox ESR, Remmina and a small launcher that opens Moodle in kiosk mode + or starts the RDP client + +Before distributing the image, adjust the generated config file inside the image: +- `/etc/proxam-moodle-rdp.conf` +- set `MOODLE_URL` to your Moodle course or quiz URL +- optionally set `REMMINA_PROFILE` to a pre-provisioned `.remmina` profile path diff --git a/build_proxam_moodle_rdp_iso.sh b/build_proxam_moodle_rdp_iso.sh new file mode 100644 index 00000000..08b858ca --- /dev/null +++ b/build_proxam_moodle_rdp_iso.sh @@ -0,0 +1,86 @@ +#!/bin/bash + +set -e + +ISO_SUFFIX="_moodle_rdp" +SOURCE="false" + +. ./functions.sh +check_and_source_constants + +if [ -d "${TMPFS_IMAGE_MOUNT}" ] +then + cd "${TMPFS_IMAGE_MOUNT}" +else + echo "The tmpfs directory \"${TMPFS_IMAGE_MOUNT}\" doesn't exist." + echo "Do you want to run the build without a tmpfs? (y/n)" + read answer + if [ "${answer}" != "y" ] + then + exit 0 + fi +fi + +if [ -n "${BUILD_DIR}" ] && [ ! -d "${BUILD_DIR}" ] +then + echo "ERROR: build directory ${BUILD_DIR} doesn't exist." + echo "Please check the BUILD_DIR definition in your constants file." + exit 0 +fi + +prepare_moodle_rdp_profile() +{ + echo "==> Preparing minimal Moodle + RDP profile" + + find config/package-lists -maxdepth 1 -type f -name '*.list.chroot' \ + ! -name 'commandline.list.chroot' \ + ! -name 'debian_contrib-core.list.chroot' \ + ! -name 'debian_main-core.list.chroot' \ + ! -name 'debian_non-free.list.chroot' \ + ! -name 'gnome-core.list.chroot' \ + ! -name 'grub-efi.list.chroot' \ + ! -name 'lernstick-core.list.chroot' \ + ! -name 'lernstick-drivers.list.chroot' \ + ! -name 'lernstick-gnome-core.list.chroot' \ + -delete + + rm -f \ + config/hooks/live/enable-flathub.container \ + config/hooks/live/install-proxam-exam-client.chroot \ + config/includes.chroot_after_packages/etc/xdg/autostart/clipit-startup.desktop \ + config/includes.chroot_after_packages/etc/lernstick-exam-client.conf \ + config/includes.chroot_after_packages/etc/lernstick-firewall/proxy.d/proxam.conf + + cat > config/package-lists/proxam-moodle-rdp.list.chroot <<'EOF' +firefox-esr +firefox-esr-l10n-de +firefox-esr-l10n-en-gb +remmina +remmina-plugin-rdp +zenity +EOF + + mkdir -p config/includes.chroot_after_packages/etc/xdg/autostart + mkdir -p config/includes.chroot_after_packages/etc + mkdir -p config/includes.chroot_after_packages/etc/lernstick-firewall/proxy.d + mkdir -p config/includes.chroot_after_packages/usr/local/bin + mkdir -p config/includes.chroot_after_packages/usr/share/applications + + install -m 0644 templates/proxam-moodle-rdp/lernstickWelcome \ + config/includes.chroot_after_packages/etc/lernstickWelcome + install -m 0644 templates/proxam-moodle-rdp/proxam-firewall-whitelist.conf \ + config/includes.chroot_after_packages/etc/lernstick-firewall/proxy.d/proxam.conf + install -m 0644 templates/proxam-moodle-rdp/proxam-moodle-rdp.conf \ + config/includes.chroot_after_packages/etc/proxam-moodle-rdp.conf + install -m 0755 templates/proxam-moodle-rdp/proxam-moodle-rdp-launcher \ + config/includes.chroot_after_packages/usr/local/bin/proxam-moodle-rdp-launcher + install -m 0644 templates/proxam-moodle-rdp/proxam-moodle-rdp.desktop \ + config/includes.chroot_after_packages/etc/xdg/autostart/proxam-moodle-rdp.desktop + install -m 0644 templates/proxam-moodle-rdp/proxam-moodle-rdp.desktop \ + config/includes.chroot_after_packages/usr/share/applications/proxam-moodle-rdp.desktop +} + +init_build +prepare_moodle_rdp_profile +configure +build_image \ No newline at end of file diff --git a/templates/proxam-moodle-rdp/lernstickWelcome b/templates/proxam-moodle-rdp/lernstickWelcome new file mode 100644 index 00000000..6e50ee33 --- /dev/null +++ b/templates/proxam-moodle-rdp/lernstickWelcome @@ -0,0 +1,4 @@ +AutoStartInstaller=false +ShowNotUsedInfo=false +ShowReadOnlyInfo=true +SearchExamServer=false \ No newline at end of file diff --git a/templates/proxam-moodle-rdp/proxam-firewall-whitelist.conf b/templates/proxam-moodle-rdp/proxam-firewall-whitelist.conf new file mode 100644 index 00000000..4f0f18a7 --- /dev/null +++ b/templates/proxam-moodle-rdp/proxam-firewall-whitelist.conf @@ -0,0 +1,12 @@ +# ProXam platform whitelist for lernstick-firewall (Squid proxy). +# Format: ^proto://host + +# Public marketing website. +^https://proxam\.at +^https://www\.proxam\.at + +# Moodle instance used for exam access. +^https://moodle\.proxam\.at + +# ProXam backend API and student/admin endpoints. +^https://api\.proxam\.at \ No newline at end of file diff --git a/templates/proxam-moodle-rdp/proxam-moodle-rdp-launcher b/templates/proxam-moodle-rdp/proxam-moodle-rdp-launcher new file mode 100644 index 00000000..7b6313bd --- /dev/null +++ b/templates/proxam-moodle-rdp/proxam-moodle-rdp-launcher @@ -0,0 +1,66 @@ +#!/bin/bash + +set -e + +CONFIG_FILE="/etc/proxam-moodle-rdp.conf" +MOODLE_URL="" +REMMINA_PROFILE="" + +if [ -f "${CONFIG_FILE}" ] +then + . "${CONFIG_FILE}" +fi + +open_moodle() +{ + if [ -z "${MOODLE_URL}" ] + then + zenity --error \ + --title="Moodle URL missing" \ + --text="Set MOODLE_URL in /etc/proxam-moodle-rdp.conf before starting the exam browser." + return + fi + + firefox-esr --kiosk "${MOODLE_URL}" & + wait $! || true +} + +open_remote_desktop() +{ + if [ -n "${REMMINA_PROFILE}" ] && [ -f "${REMMINA_PROFILE}" ] + then + remmina -c "${REMMINA_PROFILE}" & + else + remmina & + fi + + wait $! || true +} + +while true +do + CHOICE="$(zenity --list \ + --title="Exam Launcher" \ + --text="Select the application you want to use." \ + --column="Application" \ + "Moodle Exam" \ + "Windows Remote Desktop" \ + "Quit" \ + --height=260 \ + --width=420)" || exit 0 + + case "${CHOICE}" in + "Moodle Exam") + open_moodle + ;; + "Windows Remote Desktop") + open_remote_desktop + ;; + "Quit") + exit 0 + ;; + *) + exit 0 + ;; + esac +done \ No newline at end of file diff --git a/templates/proxam-moodle-rdp/proxam-moodle-rdp.conf b/templates/proxam-moodle-rdp/proxam-moodle-rdp.conf new file mode 100644 index 00000000..d9ce85a5 --- /dev/null +++ b/templates/proxam-moodle-rdp/proxam-moodle-rdp.conf @@ -0,0 +1,5 @@ +# Moodle page opened by the launcher in kiosk mode. +MOODLE_URL="https://moodle.proxam.at" + +# Optional Remmina profile. Leave empty to open the normal connection manager. +REMMINA_PROFILE="" \ No newline at end of file diff --git a/templates/proxam-moodle-rdp/proxam-moodle-rdp.desktop b/templates/proxam-moodle-rdp/proxam-moodle-rdp.desktop new file mode 100644 index 00000000..61fcc556 --- /dev/null +++ b/templates/proxam-moodle-rdp/proxam-moodle-rdp.desktop @@ -0,0 +1,9 @@ +[Desktop Entry] +Type=Application +Version=1.0 +Name=Exam Launcher +Comment=Open Moodle in kiosk mode or start Windows Remote Desktop +Exec=/usr/local/bin/proxam-moodle-rdp-launcher +Terminal=false +Categories=Education;Network; +X-GNOME-Autostart-enabled=true \ No newline at end of file From e4ba5a135f877f454cbed5114526ebdeb893d6ed Mon Sep 17 00:00:00 2001 From: FilipWjk Date: Tue, 14 Apr 2026 19:43:22 +0200 Subject: [PATCH 48/55] fix(ci): restore missing closing quote in .deb build step --- .github/workflows/build-iso.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-iso.yml b/.github/workflows/build-iso.yml index cc9d68e2..cde1a6eb 100644 --- a/.github/workflows/build-iso.yml +++ b/.github/workflows/build-iso.yml @@ -104,6 +104,7 @@ jobs: dpkg-buildpackage -us -uc -b cp /proxam-exam-client_*.deb /out/ ls -la /out/ + " - name: Select ISO variant run: | @@ -131,7 +132,6 @@ jobs: exit 1 ;; esac - " - name: Build ISO (privileged Debian container) # live-build uses systemd-nspawn to run chroot hooks. From cd6c8f104f0b5271036c36acd4cda25e5247e5c6 Mon Sep 17 00:00:00 2001 From: FilipWjk Date: Tue, 14 Apr 2026 19:47:34 +0200 Subject: [PATCH 49/55] fix(ci): remove interactive tmpfs prompt from moodle-rdp build script --- build_proxam_moodle_rdp_iso.sh | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/build_proxam_moodle_rdp_iso.sh b/build_proxam_moodle_rdp_iso.sh index 08b858ca..9fe59c73 100644 --- a/build_proxam_moodle_rdp_iso.sh +++ b/build_proxam_moodle_rdp_iso.sh @@ -11,21 +11,16 @@ check_and_source_constants if [ -d "${TMPFS_IMAGE_MOUNT}" ] then cd "${TMPFS_IMAGE_MOUNT}" -else - echo "The tmpfs directory \"${TMPFS_IMAGE_MOUNT}\" doesn't exist." - echo "Do you want to run the build without a tmpfs? (y/n)" - read answer - if [ "${answer}" != "y" ] - then - exit 0 - fi +elif [ -n "${TMPFS_IMAGE_MOUNT}" ] +then + echo "WARNING: tmpfs directory \"${TMPFS_IMAGE_MOUNT}\" doesn't exist, building without tmpfs." fi if [ -n "${BUILD_DIR}" ] && [ ! -d "${BUILD_DIR}" ] then echo "ERROR: build directory ${BUILD_DIR} doesn't exist." echo "Please check the BUILD_DIR definition in your constants file." - exit 0 + exit 1 fi prepare_moodle_rdp_profile() From a9a51b21c85702b539cbbf2d07c8d3e94a7e36f8 Mon Sep 17 00:00:00 2001 From: FilipWjk Date: Tue, 14 Apr 2026 21:34:41 +0200 Subject: [PATCH 50/55] fix(moodle-rdp): install lernstick-firewall and enable on boot The whitelist config was present but the firewall package wasn't installed, so no traffic filtering was active. Add lernstick-firewall to the package list, enable it on boot, and allow outbound RDP (3389) through iptables since Squid only handles HTTP/HTTPS. --- build_proxam_moodle_rdp_iso.sh | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/build_proxam_moodle_rdp_iso.sh b/build_proxam_moodle_rdp_iso.sh index 9fe59c73..5bc1066c 100644 --- a/build_proxam_moodle_rdp_iso.sh +++ b/build_proxam_moodle_rdp_iso.sh @@ -50,11 +50,36 @@ prepare_moodle_rdp_profile() firefox-esr firefox-esr-l10n-de firefox-esr-l10n-en-gb +lernstick-firewall remmina remmina-plugin-rdp zenity EOF + # Enable the firewall on boot so the Squid whitelist is enforced + # before the user can open a browser. + # Also allow outbound RDP (TCP 3389) which bypasses Squid (not HTTP). + cat > config/hooks/live/enable-proxam-firewall.chroot <<'HOOK' +#!/bin/sh +set -e +systemctl enable lernstick-firewall || true + +# Allow outbound RDP connections through the firewall. +# lernstick-firewall only handles HTTP/HTTPS via Squid; RDP needs a +# direct iptables exception applied at boot. +mkdir -p /etc/NetworkManager/dispatcher.d +cat > /etc/NetworkManager/dispatcher.d/90-proxam-rdp-allow <<'DISPATCH' +#!/bin/sh +# Allow outbound RDP (TCP 3389) — applied on every interface up event. +if [ "$2" = "up" ]; then + iptables -C OUTPUT -p tcp --dport 3389 -m comment --comment "proxam-moodle-rdp" -j ACCEPT 2>/dev/null \ + || iptables -I OUTPUT -p tcp --dport 3389 -m comment --comment "proxam-moodle-rdp" -j ACCEPT +fi +DISPATCH +chmod +x /etc/NetworkManager/dispatcher.d/90-proxam-rdp-allow +HOOK + chmod +x config/hooks/live/enable-proxam-firewall.chroot + mkdir -p config/includes.chroot_after_packages/etc/xdg/autostart mkdir -p config/includes.chroot_after_packages/etc mkdir -p config/includes.chroot_after_packages/etc/lernstick-firewall/proxy.d From 03b6fb0563400b5f8f6937716377fe4b4247d628 Mon Sep 17 00:00:00 2001 From: FilipWjk Date: Wed, 15 Apr 2026 14:52:14 +0200 Subject: [PATCH 51/55] fix(moodle-rdp): remove GNOME initial setup wizard and suppress dialogs --- build_proxam_moodle_rdp_iso.sh | 20 ++++++++++++++++++++ templates/proxam-moodle-rdp/lernstickWelcome | 2 +- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/build_proxam_moodle_rdp_iso.sh b/build_proxam_moodle_rdp_iso.sh index 5bc1066c..5608b545 100644 --- a/build_proxam_moodle_rdp_iso.sh +++ b/build_proxam_moodle_rdp_iso.sh @@ -80,6 +80,26 @@ chmod +x /etc/NetworkManager/dispatcher.d/90-proxam-rdp-allow HOOK chmod +x config/hooks/live/enable-proxam-firewall.chroot + # Disable GNOME initial setup ("Preview Linux System" dialog) and tour. + # gnome-initial-setup is pulled in by gnome-core and shows a wizard on + # first login that lets users explore the desktop — unwanted in exam mode. + cat > config/hooks/live/disable-gnome-initial-setup.chroot <<'HOOK' +#!/bin/sh +set -e +# Remove gnome-initial-setup if installed (pulled by gnome-core) +apt-get remove --purge -y gnome-initial-setup gnome-tour 2>/dev/null || true +# Also disable via XDG autostart override in case it gets reinstalled +mkdir -p /etc/xdg/autostart +for DESKTOP in gnome-initial-setup-copy-worker.desktop gnome-initial-setup-first-login.desktop gnome-tour.desktop; do + if [ -f "/etc/xdg/autostart/${DESKTOP}" ]; then + printf '[Desktop Entry]\nHidden=true\n' > "/etc/xdg/autostart/${DESKTOP}" + else + printf '[Desktop Entry]\nType=Application\nName=Disabled\nHidden=true\n' > "/etc/xdg/autostart/${DESKTOP}" + fi +done +HOOK + chmod +x config/hooks/live/disable-gnome-initial-setup.chroot + mkdir -p config/includes.chroot_after_packages/etc/xdg/autostart mkdir -p config/includes.chroot_after_packages/etc mkdir -p config/includes.chroot_after_packages/etc/lernstick-firewall/proxy.d diff --git a/templates/proxam-moodle-rdp/lernstickWelcome b/templates/proxam-moodle-rdp/lernstickWelcome index 6e50ee33..9224ecd2 100644 --- a/templates/proxam-moodle-rdp/lernstickWelcome +++ b/templates/proxam-moodle-rdp/lernstickWelcome @@ -1,4 +1,4 @@ AutoStartInstaller=false ShowNotUsedInfo=false -ShowReadOnlyInfo=true +ShowReadOnlyInfo=false SearchExamServer=false \ No newline at end of file From 0354ff9049b00128423bc3d2224482bc59869973 Mon Sep 17 00:00:00 2001 From: FilipWjk Date: Thu, 16 Apr 2026 19:52:16 +0200 Subject: [PATCH 52/55] feat(moodle-rdp): add student file download and file manager to launcher --- build_proxam_moodle_rdp_iso.sh | 5 ++ .../proxam-moodle-rdp/proxam-download-files | 73 +++++++++++++++++++ .../proxam-moodle-rdp-launcher | 57 ++++++++++++++- .../proxam-moodle-rdp/proxam-moodle-rdp.conf | 3 + 4 files changed, 137 insertions(+), 1 deletion(-) create mode 100644 templates/proxam-moodle-rdp/proxam-download-files diff --git a/build_proxam_moodle_rdp_iso.sh b/build_proxam_moodle_rdp_iso.sh index 5608b545..afaf41fe 100644 --- a/build_proxam_moodle_rdp_iso.sh +++ b/build_proxam_moodle_rdp_iso.sh @@ -47,10 +47,13 @@ prepare_moodle_rdp_profile() config/includes.chroot_after_packages/etc/lernstick-firewall/proxy.d/proxam.conf cat > config/package-lists/proxam-moodle-rdp.list.chroot <<'EOF' +curl firefox-esr firefox-esr-l10n-de firefox-esr-l10n-en-gb +jq lernstick-firewall +nautilus remmina remmina-plugin-rdp zenity @@ -114,6 +117,8 @@ HOOK config/includes.chroot_after_packages/etc/proxam-moodle-rdp.conf install -m 0755 templates/proxam-moodle-rdp/proxam-moodle-rdp-launcher \ config/includes.chroot_after_packages/usr/local/bin/proxam-moodle-rdp-launcher + install -m 0755 templates/proxam-moodle-rdp/proxam-download-files \ + config/includes.chroot_after_packages/usr/local/bin/proxam-download-files install -m 0644 templates/proxam-moodle-rdp/proxam-moodle-rdp.desktop \ config/includes.chroot_after_packages/etc/xdg/autostart/proxam-moodle-rdp.desktop install -m 0644 templates/proxam-moodle-rdp/proxam-moodle-rdp.desktop \ diff --git a/templates/proxam-moodle-rdp/proxam-download-files b/templates/proxam-moodle-rdp/proxam-download-files new file mode 100644 index 00000000..92152adc --- /dev/null +++ b/templates/proxam-moodle-rdp/proxam-download-files @@ -0,0 +1,73 @@ +#!/bin/bash +# Download approved student files from the ProXam backend to ~/Desktop/Exam-Files/. +# Usage: proxam-download-files +# +# Requires: curl, jq +# API: +# GET /proxam/ticket/student-files/:token → [{id, filename, size, mimeType}] +# GET /proxam/ticket/student-files/:token/:fileId → file download + +set -e + +CONFIG_FILE="/etc/proxam-moodle-rdp.conf" +API_URL="" + +if [ -f "${CONFIG_FILE}" ]; then + . "${CONFIG_FILE}" +fi + +# Fall back to default API URL if not set in config. +: "${API_URL:=https://api.proxam.at}" + +TOKEN="${1}" +DEST_DIR="${HOME}/Desktop/Exam-Files" + +if [ -z "${TOKEN}" ]; then + echo "Usage: proxam-download-files " >&2 + exit 1 +fi + +# Fetch file list (JSON array). +FILE_LIST="$(curl -sf --max-time 15 \ + "${API_URL}/proxam/ticket/student-files/${TOKEN}")" || { + echo "ERROR: Could not reach the ProXam server or token is invalid." >&2 + exit 1 +} + +COUNT="$(echo "${FILE_LIST}" | jq 'length')" +if [ "${COUNT}" -eq 0 ]; then + echo "No approved files found for this ticket." + exit 0 +fi + +mkdir -p "${DEST_DIR}" + +echo "Downloading ${COUNT} file(s) to ${DEST_DIR} ..." + +DOWNLOADED=0 +FAILED=0 + +echo "${FILE_LIST}" | jq -c '.[]' | while IFS= read -r ENTRY; do + FILE_ID="$(echo "${ENTRY}" | jq -r '.id')" + FILENAME="$(echo "${ENTRY}" | jq -r '.filename')" + SIZE="$(echo "${ENTRY}" | jq -r '.size')" + + # Sanitize filename — remove path separators to prevent directory traversal. + SAFE_NAME="$(basename "${FILENAME}")" + if [ -z "${SAFE_NAME}" ] || [ "${SAFE_NAME}" = "." ] || [ "${SAFE_NAME}" = ".." ]; then + SAFE_NAME="file_${FILE_ID}" + fi + + echo " → ${SAFE_NAME} (${SIZE} bytes)" + + if curl -sf --max-time 120 \ + -o "${DEST_DIR}/${SAFE_NAME}" \ + "${API_URL}/proxam/ticket/student-files/${TOKEN}/${FILE_ID}"; then + DOWNLOADED=$((DOWNLOADED + 1)) + else + echo " FAILED to download ${SAFE_NAME}" >&2 + FAILED=$((FAILED + 1)) + fi +done + +echo "Done. Files saved to ${DEST_DIR}" diff --git a/templates/proxam-moodle-rdp/proxam-moodle-rdp-launcher b/templates/proxam-moodle-rdp/proxam-moodle-rdp-launcher index 7b6313bd..f8d2f266 100644 --- a/templates/proxam-moodle-rdp/proxam-moodle-rdp-launcher +++ b/templates/proxam-moodle-rdp/proxam-moodle-rdp-launcher @@ -11,6 +11,16 @@ then . "${CONFIG_FILE}" fi +DOWNLOAD_DIR="${HOME}/Desktop/Exam-Files" + +ask_token() +{ + zenity --entry \ + --title="Ticket Token" \ + --text="Enter your exam ticket token:" \ + --width=420 || true +} + open_moodle() { if [ -z "${MOODLE_URL}" ] @@ -37,6 +47,43 @@ open_remote_desktop() wait $! || true } +download_files() +{ + TOKEN="$(ask_token)" + if [ -z "${TOKEN}" ] + then + return + fi + + # Run download in a terminal so the student sees progress. + OUTPUT="$(proxam-download-files "${TOKEN}" 2>&1)" || true + + if [ -d "${DOWNLOAD_DIR}" ] && [ "$(ls -A "${DOWNLOAD_DIR}" 2>/dev/null)" ] + then + zenity --info \ + --title="Download Complete" \ + --text="Files saved to:\n${DOWNLOAD_DIR}\n\n${OUTPUT}" \ + --width=480 + # Open the file manager at the download directory. + nautilus "${DOWNLOAD_DIR}" & + else + zenity --warning \ + --title="No Files" \ + --text="${OUTPUT:-No approved files found or download failed.}" \ + --width=480 + fi +} + +open_file_manager() +{ + if [ -d "${DOWNLOAD_DIR}" ] + then + nautilus "${DOWNLOAD_DIR}" & + else + nautilus "${HOME}/Desktop" & + fi +} + while true do CHOICE="$(zenity --list \ @@ -44,15 +91,23 @@ do --text="Select the application you want to use." \ --column="Application" \ "Moodle Exam" \ + "Download Exam Files" \ + "Open Files" \ "Windows Remote Desktop" \ "Quit" \ - --height=260 \ + --height=340 \ --width=420)" || exit 0 case "${CHOICE}" in "Moodle Exam") open_moodle ;; + "Download Exam Files") + download_files + ;; + "Open Files") + open_file_manager + ;; "Windows Remote Desktop") open_remote_desktop ;; diff --git a/templates/proxam-moodle-rdp/proxam-moodle-rdp.conf b/templates/proxam-moodle-rdp/proxam-moodle-rdp.conf index d9ce85a5..9350e203 100644 --- a/templates/proxam-moodle-rdp/proxam-moodle-rdp.conf +++ b/templates/proxam-moodle-rdp/proxam-moodle-rdp.conf @@ -1,5 +1,8 @@ # Moodle page opened by the launcher in kiosk mode. MOODLE_URL="https://moodle.proxam.at" +# ProXam backend API URL for file downloads. +API_URL="https://api.proxam.at" + # Optional Remmina profile. Leave empty to open the normal connection manager. REMMINA_PROFILE="" \ No newline at end of file From a0a2860677e965b22eb4433611a6c1de72ea127f Mon Sep 17 00:00:00 2001 From: FilipWjk Date: Thu, 16 Apr 2026 20:17:33 +0200 Subject: [PATCH 53/55] refactor(moodle-rdp): use Moodle auth instead of token for file downloads --- .../proxam-moodle-rdp/proxam-download-files | 107 ++++++++++++------ .../proxam-moodle-rdp-launcher | 34 ++++-- 2 files changed, 96 insertions(+), 45 deletions(-) diff --git a/templates/proxam-moodle-rdp/proxam-download-files b/templates/proxam-moodle-rdp/proxam-download-files index 92152adc..4571e854 100644 --- a/templates/proxam-moodle-rdp/proxam-download-files +++ b/templates/proxam-moodle-rdp/proxam-download-files @@ -1,11 +1,14 @@ #!/bin/bash # Download approved student files from the ProXam backend to ~/Desktop/Exam-Files/. -# Usage: proxam-download-files +# Authenticates via Moodle credentials through the student portal API. +# +# Usage: proxam-download-files # # Requires: curl, jq # API: -# GET /proxam/ticket/student-files/:token → [{id, filename, size, mimeType}] -# GET /proxam/ticket/student-files/:token/:fileId → file download +# POST /student/auth → {token (JWT), tickets[{token, exam}]} +# GET /proxam/ticket/student-files/:token → [{id, filename, size, mimeType}] +# GET /proxam/ticket/student-files/:token/:fileId → file download set -e @@ -16,58 +19,90 @@ if [ -f "${CONFIG_FILE}" ]; then . "${CONFIG_FILE}" fi -# Fall back to default API URL if not set in config. : "${API_URL:=https://api.proxam.at}" -TOKEN="${1}" +USERNAME="${1}" +PASSWORD="${2}" DEST_DIR="${HOME}/Desktop/Exam-Files" -if [ -z "${TOKEN}" ]; then - echo "Usage: proxam-download-files " >&2 +if [ -z "${USERNAME}" ] || [ -z "${PASSWORD}" ]; then + echo "Usage: proxam-download-files " >&2 exit 1 fi -# Fetch file list (JSON array). -FILE_LIST="$(curl -sf --max-time 15 \ - "${API_URL}/proxam/ticket/student-files/${TOKEN}")" || { - echo "ERROR: Could not reach the ProXam server or token is invalid." >&2 +# Authenticate with Moodle credentials via ProXam student portal. +AUTH_RESPONSE="$(curl -sf --max-time 15 \ + -X POST \ + -H "Content-Type: application/json" \ + -d "$(jq -n --arg u "${USERNAME}" --arg p "${PASSWORD}" \ + '{username: $u, password: $p}')" \ + "${API_URL}/student/auth")" || { + echo "ERROR: Authentication failed. Check your Moodle username and password." >&2 exit 1 } -COUNT="$(echo "${FILE_LIST}" | jq 'length')" -if [ "${COUNT}" -eq 0 ]; then - echo "No approved files found for this ticket." +# Check for error in response. +AUTH_ERROR="$(echo "${AUTH_RESPONSE}" | jq -r '.message // empty')" +if [ -n "${AUTH_ERROR}" ]; then + echo "ERROR: ${AUTH_ERROR}" >&2 + exit 1 +fi + +FULLNAME="$(echo "${AUTH_RESPONSE}" | jq -r '.fullname // "Student"')" +echo "Logged in as: ${FULLNAME}" + +# Extract all ticket tokens. +TICKETS="$(echo "${AUTH_RESPONSE}" | jq -c '.tickets[]')" +if [ -z "${TICKETS}" ]; then + echo "No exam tickets found for your account." exit 0 fi mkdir -p "${DEST_DIR}" +TOTAL_DOWNLOADED=0 -echo "Downloading ${COUNT} file(s) to ${DEST_DIR} ..." - -DOWNLOADED=0 -FAILED=0 +# For each ticket, download approved files into an exam subfolder. +echo "${TICKETS}" | while IFS= read -r TICKET; do + TICKET_TOKEN="$(echo "${TICKET}" | jq -r '.token')" + EXAM_NAME="$(echo "${TICKET}" | jq -r '.exam.name // "Exam"')" -echo "${FILE_LIST}" | jq -c '.[]' | while IFS= read -r ENTRY; do - FILE_ID="$(echo "${ENTRY}" | jq -r '.id')" - FILENAME="$(echo "${ENTRY}" | jq -r '.filename')" - SIZE="$(echo "${ENTRY}" | jq -r '.size')" + # Fetch file list for this ticket. + FILE_LIST="$(curl -sf --max-time 15 \ + "${API_URL}/proxam/ticket/student-files/${TICKET_TOKEN}")" || continue - # Sanitize filename — remove path separators to prevent directory traversal. - SAFE_NAME="$(basename "${FILENAME}")" - if [ -z "${SAFE_NAME}" ] || [ "${SAFE_NAME}" = "." ] || [ "${SAFE_NAME}" = ".." ]; then - SAFE_NAME="file_${FILE_ID}" + COUNT="$(echo "${FILE_LIST}" | jq 'length')" + if [ "${COUNT}" -eq 0 ]; then + continue fi - echo " → ${SAFE_NAME} (${SIZE} bytes)" - - if curl -sf --max-time 120 \ - -o "${DEST_DIR}/${SAFE_NAME}" \ - "${API_URL}/proxam/ticket/student-files/${TOKEN}/${FILE_ID}"; then - DOWNLOADED=$((DOWNLOADED + 1)) - else - echo " FAILED to download ${SAFE_NAME}" >&2 - FAILED=$((FAILED + 1)) - fi + # Sanitize exam name for directory. + SAFE_EXAM="$(echo "${EXAM_NAME}" | tr -cs '[:alnum:] ._-' '_' | head -c 100)" + EXAM_DIR="${DEST_DIR}/${SAFE_EXAM}" + mkdir -p "${EXAM_DIR}" + + echo "Exam: ${EXAM_NAME} — ${COUNT} file(s)" + + echo "${FILE_LIST}" | jq -c '.[]' | while IFS= read -r ENTRY; do + FILE_ID="$(echo "${ENTRY}" | jq -r '.id')" + FILENAME="$(echo "${ENTRY}" | jq -r '.filename')" + SIZE="$(echo "${ENTRY}" | jq -r '.size')" + + # Sanitize filename to prevent directory traversal. + SAFE_NAME="$(basename "${FILENAME}")" + if [ -z "${SAFE_NAME}" ] || [ "${SAFE_NAME}" = "." ] || [ "${SAFE_NAME}" = ".." ]; then + SAFE_NAME="file_${FILE_ID}" + fi + + echo " → ${SAFE_NAME} (${SIZE} bytes)" + + if curl -sf --max-time 120 \ + -o "${EXAM_DIR}/${SAFE_NAME}" \ + "${API_URL}/proxam/ticket/student-files/${TICKET_TOKEN}/${FILE_ID}"; then + TOTAL_DOWNLOADED=$((TOTAL_DOWNLOADED + 1)) + else + echo " FAILED to download ${SAFE_NAME}" >&2 + fi + done done echo "Done. Files saved to ${DEST_DIR}" diff --git a/templates/proxam-moodle-rdp/proxam-moodle-rdp-launcher b/templates/proxam-moodle-rdp/proxam-moodle-rdp-launcher index f8d2f266..b7d710b9 100644 --- a/templates/proxam-moodle-rdp/proxam-moodle-rdp-launcher +++ b/templates/proxam-moodle-rdp/proxam-moodle-rdp-launcher @@ -13,12 +13,17 @@ fi DOWNLOAD_DIR="${HOME}/Desktop/Exam-Files" -ask_token() +ask_moodle_credentials() { - zenity --entry \ - --title="Ticket Token" \ - --text="Enter your exam ticket token:" \ - --width=420 || true + # Returns "username|password" or empty on cancel. + CREDENTIALS="$(zenity --forms \ + --title="Moodle Login" \ + --text="Enter your Moodle credentials to download exam files." \ + --add-entry="Username" \ + --add-password="Password" \ + --separator="|" \ + --width=420)" || true + echo "${CREDENTIALS}" } open_moodle() @@ -49,14 +54,25 @@ open_remote_desktop() download_files() { - TOKEN="$(ask_token)" - if [ -z "${TOKEN}" ] + CREDENTIALS="$(ask_moodle_credentials)" + if [ -z "${CREDENTIALS}" ] then return fi - # Run download in a terminal so the student sees progress. - OUTPUT="$(proxam-download-files "${TOKEN}" 2>&1)" || true + USERNAME="$(echo "${CREDENTIALS}" | cut -d'|' -f1)" + PASSWORD="$(echo "${CREDENTIALS}" | cut -d'|' -f2)" + + if [ -z "${USERNAME}" ] || [ -z "${PASSWORD}" ] + then + zenity --error \ + --title="Login Error" \ + --text="Username and password are required." \ + --width=380 + return + fi + + OUTPUT="$(proxam-download-files "${USERNAME}" "${PASSWORD}" 2>&1)" || true if [ -d "${DOWNLOAD_DIR}" ] && [ "$(ls -A "${DOWNLOAD_DIR}" 2>/dev/null)" ] then From 21352190de380b08b5ad8ee2d2aa3330de773971 Mon Sep 17 00:00:00 2001 From: FilipWjk Date: Thu, 16 Apr 2026 21:48:03 +0200 Subject: [PATCH 54/55] feat(moodle-rdp): add additional applications and pre-build MIME caches for improved file handling --- build_proxam_moodle_rdp_iso.sh | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/build_proxam_moodle_rdp_iso.sh b/build_proxam_moodle_rdp_iso.sh index afaf41fe..4bbfe703 100644 --- a/build_proxam_moodle_rdp_iso.sh +++ b/build_proxam_moodle_rdp_iso.sh @@ -48,11 +48,17 @@ prepare_moodle_rdp_profile() cat > config/package-lists/proxam-moodle-rdp.list.chroot <<'EOF' curl +eog +evince firefox-esr firefox-esr-l10n-de firefox-esr-l10n-en-gb jq lernstick-firewall +libreoffice-calc +libreoffice-impress +libreoffice-writer +libreoffice-l10n-de nautilus remmina remmina-plugin-rdp @@ -103,6 +109,19 @@ done HOOK chmod +x config/hooks/live/disable-gnome-initial-setup.chroot + # Pre-build MIME database, desktop file cache, and icon cache so that + # file type associations (open .png with eog, .pdf with evince, .docx + # with LibreOffice) work immediately on first boot without a restart. + cat > config/hooks/live/rebuild-mime-caches.chroot <<'HOOK' +#!/bin/sh +set -e +update-mime-database /usr/share/mime 2>/dev/null || true +update-desktop-database /usr/share/applications 2>/dev/null || true +gtk-update-icon-cache -f /usr/share/icons/hicolor 2>/dev/null || true +glib-compile-schemas /usr/share/glib-2.0/schemas 2>/dev/null || true +HOOK + chmod +x config/hooks/live/rebuild-mime-caches.chroot + mkdir -p config/includes.chroot_after_packages/etc/xdg/autostart mkdir -p config/includes.chroot_after_packages/etc mkdir -p config/includes.chroot_after_packages/etc/lernstick-firewall/proxy.d From f1ab2e061a711a153d3402ce602783edef8305d7 Mon Sep 17 00:00:00 2001 From: FilipWjk Date: Sun, 19 Apr 2026 09:48:47 +0200 Subject: [PATCH 55/55] feat(moodle-rdp): enhance file download script to support email and token authentication --- .../proxam-moodle-rdp/proxam-download-files | 77 ++++++++++++++----- .../proxam-moodle-rdp-launcher | 68 +++++++++++----- 2 files changed, 107 insertions(+), 38 deletions(-) diff --git a/templates/proxam-moodle-rdp/proxam-download-files b/templates/proxam-moodle-rdp/proxam-download-files index 4571e854..e3e80a7a 100644 --- a/templates/proxam-moodle-rdp/proxam-download-files +++ b/templates/proxam-moodle-rdp/proxam-download-files @@ -1,12 +1,14 @@ #!/bin/bash # Download approved student files from the ProXam backend to ~/Desktop/Exam-Files/. -# Authenticates via Moodle credentials through the student portal API. +# Authenticates via Moodle credentials OR email+token through the student portal API. # -# Usage: proxam-download-files +# Usage: proxam-download-files --moodle +# proxam-download-files --token # # Requires: curl, jq # API: # POST /student/auth → {token (JWT), tickets[{token, exam}]} +# POST /student/auth/token → {token (JWT), tickets[{token, exam}]} # GET /proxam/ticket/student-files/:token → [{id, filename, size, mimeType}] # GET /proxam/ticket/student-files/:token/:fileId → file download @@ -21,25 +23,62 @@ fi : "${API_URL:=https://api.proxam.at}" -USERNAME="${1}" -PASSWORD="${2}" +MODE="${1}" +ARG1="${2}" +ARG2="${3}" DEST_DIR="${HOME}/Desktop/Exam-Files" -if [ -z "${USERNAME}" ] || [ -z "${PASSWORD}" ]; then - echo "Usage: proxam-download-files " >&2 - exit 1 -fi - -# Authenticate with Moodle credentials via ProXam student portal. -AUTH_RESPONSE="$(curl -sf --max-time 15 \ - -X POST \ - -H "Content-Type: application/json" \ - -d "$(jq -n --arg u "${USERNAME}" --arg p "${PASSWORD}" \ - '{username: $u, password: $p}')" \ - "${API_URL}/student/auth")" || { - echo "ERROR: Authentication failed. Check your Moodle username and password." >&2 - exit 1 -} +case "${MODE}" in + --moodle) + if [ -z "${ARG1}" ] || [ -z "${ARG2}" ]; then + echo "Usage: proxam-download-files --moodle " >&2 + exit 1 + fi + AUTH_RESPONSE="$(curl -sf --max-time 15 \ + -X POST \ + -H "Content-Type: application/json" \ + -d "$(jq -n --arg u "${ARG1}" --arg p "${ARG2}" \ + '{username: $u, password: $p}')" \ + "${API_URL}/student/auth")" || { + echo "ERROR: Authentication failed. Check your Moodle username and password." >&2 + exit 1 + } + ;; + --token) + if [ -z "${ARG1}" ] || [ -z "${ARG2}" ]; then + echo "Usage: proxam-download-files --token " >&2 + exit 1 + fi + AUTH_RESPONSE="$(curl -sf --max-time 15 \ + -X POST \ + -H "Content-Type: application/json" \ + -d "$(jq -n --arg e "${ARG1}" --arg t "${ARG2}" \ + '{email: $e, token: $t}')" \ + "${API_URL}/student/auth/token")" || { + echo "ERROR: Authentication failed. Check your email and token." >&2 + exit 1 + } + ;; + *) + # Legacy: positional args = Moodle mode + USERNAME="${MODE}" + PASSWORD="${ARG1}" + if [ -z "${USERNAME}" ] || [ -z "${PASSWORD}" ]; then + echo "Usage: proxam-download-files --moodle " >&2 + echo " proxam-download-files --token " >&2 + exit 1 + fi + AUTH_RESPONSE="$(curl -sf --max-time 15 \ + -X POST \ + -H "Content-Type: application/json" \ + -d "$(jq -n --arg u "${USERNAME}" --arg p "${PASSWORD}" \ + '{username: $u, password: $p}')" \ + "${API_URL}/student/auth")" || { + echo "ERROR: Authentication failed. Check your Moodle username and password." >&2 + exit 1 + } + ;; +esac # Check for error in response. AUTH_ERROR="$(echo "${AUTH_RESPONSE}" | jq -r '.message // empty')" diff --git a/templates/proxam-moodle-rdp/proxam-moodle-rdp-launcher b/templates/proxam-moodle-rdp/proxam-moodle-rdp-launcher index b7d710b9..644da6e6 100644 --- a/templates/proxam-moodle-rdp/proxam-moodle-rdp-launcher +++ b/templates/proxam-moodle-rdp/proxam-moodle-rdp-launcher @@ -26,6 +26,19 @@ ask_moodle_credentials() echo "${CREDENTIALS}" } +ask_token_credentials() +{ + # Returns "email|token" or empty on cancel. + CREDENTIALS="$(zenity --forms \ + --title="Token Login" \ + --text="Enter your email and exam token." \ + --add-entry="E-Mail" \ + --add-entry="Token" \ + --separator="|" \ + --width=420)" || true + echo "${CREDENTIALS}" +} + open_moodle() { if [ -z "${MOODLE_URL}" ] @@ -54,25 +67,42 @@ open_remote_desktop() download_files() { - CREDENTIALS="$(ask_moodle_credentials)" - if [ -z "${CREDENTIALS}" ] - then - return - fi - - USERNAME="$(echo "${CREDENTIALS}" | cut -d'|' -f1)" - PASSWORD="$(echo "${CREDENTIALS}" | cut -d'|' -f2)" - - if [ -z "${USERNAME}" ] || [ -z "${PASSWORD}" ] - then - zenity --error \ - --title="Login Error" \ - --text="Username and password are required." \ - --width=380 - return - fi - - OUTPUT="$(proxam-download-files "${USERNAME}" "${PASSWORD}" 2>&1)" || true + AUTH_MODE="$(zenity --list \ + --title="Download Exam Files" \ + --text="How do you want to log in?" \ + --column="Method" \ + "Moodle Login" \ + "Email + Token" \ + --height=220 \ + --width=380)" || return + + case "${AUTH_MODE}" in + "Moodle Login") + CREDENTIALS="$(ask_moodle_credentials)" + if [ -z "${CREDENTIALS}" ]; then return; fi + USERNAME="$(echo "${CREDENTIALS}" | cut -d'|' -f1)" + PASSWORD="$(echo "${CREDENTIALS}" | cut -d'|' -f2)" + if [ -z "${USERNAME}" ] || [ -z "${PASSWORD}" ]; then + zenity --error --title="Login Error" --text="Username and password are required." --width=380 + return + fi + OUTPUT="$(proxam-download-files --moodle "${USERNAME}" "${PASSWORD}" 2>&1)" || true + ;; + "Email + Token") + CREDENTIALS="$(ask_token_credentials)" + if [ -z "${CREDENTIALS}" ]; then return; fi + EMAIL="$(echo "${CREDENTIALS}" | cut -d'|' -f1)" + TOKEN="$(echo "${CREDENTIALS}" | cut -d'|' -f2)" + if [ -z "${EMAIL}" ] || [ -z "${TOKEN}" ]; then + zenity --error --title="Login Error" --text="Email and token are required." --width=380 + return + fi + OUTPUT="$(proxam-download-files --token "${EMAIL}" "${TOKEN}" 2>&1)" || true + ;; + *) + return + ;; + esac if [ -d "${DOWNLOAD_DIR}" ] && [ "$(ls -A "${DOWNLOAD_DIR}" 2>/dev/null)" ] then