diff --git a/livebox.yml b/livebox.yml
index 4f229fd..771607b 100644
--- a/livebox.yml
+++ b/livebox.yml
@@ -15,6 +15,7 @@
## > menuentry 'Chainload Menu from LiveBox' {
## > configfile (tftp,livebox.lan)/d-i/n-a/grub/grub.cfg
## > }
+##
---
- name: apply configuration to the livebox
hosts: all
@@ -37,6 +38,12 @@
- iso: 'debian-live-11.3.0-amd64-standard+nonfree.iso'
name: 'standard-cli'
live_url: 'https://cdimage.debian.org/cdimage/unofficial/non-free/cd-including-firmware/11.3.0-live+nonfree/amd64/iso-hybrid/'
+
+ # The edulive role generates customized Debian-Live images.
+ # Make sure you have sufficient disk space available (~30GiB?).
+ build_images:
+ - gnome-edu
+
di_dist: "{{ ansible_distribution_release }}"
di_version: "{{ ansible_distribution_major_version }}"
di_pkg: "debian-installer-{{ di_version }}-netboot-amd64"
@@ -65,3 +72,4 @@
- netbootinstaller
- aptcacher
- debianlive
+ - edulive
diff --git a/roles/debianlive/tasks/main.yml b/roles/debianlive/tasks/main.yml
index 23dcd11..bdbdff8 100644
--- a/roles/debianlive/tasks/main.yml
+++ b/roles/debianlive/tasks/main.yml
@@ -38,11 +38,16 @@
line: "/var/lib/tftpboot/d-i/n-live/ *(ro,crossmnt,no_subtree_check)"
notify: export nfs
-- name: configure ipxe boot menu address
+- name: configure ipxe boot menu address and headline
replace:
path: /etc/di-netboot-assistant/ipxemenu.HEAD
- regexp: '^(set 210:string tftp://\${next-server}/)$'
- replace: '#\1\nset 210:string http://{{ ansible_default_ipv4.address }}/'
+ regexp: "{{ item.reg }}"
+ replace: "{{ item.rep }}"
+ loop:
+ - reg: '^(set 210:string tftp://\${next-server}/)$'
+ rep: '#\1\nset 210:string http://{{ ansible_default_ipv4.address }}/'
+ - reg: '^#(item --gap -- -- Customized Boot Entries.*)$'
+ rep: '\1'
notify: rebuild di-netboot menu
- name: configure grub boot menu addresses
@@ -57,7 +62,7 @@
- name: prepare debian live nfs boot entry title
lineinfile:
path: /etc/di-netboot-assistant/ipxemenu.HEAD
- insertafter: '^menu iPXE Boot Menu'
+ insertafter: '-- Customized Boot Entries --'
line: "item {{ item.name }} Debian GNU/Linux {{ item.name }} NFS"
loop:
"{{ live_images }}"
diff --git a/roles/edulive/defaults/main.yml b/roles/edulive/defaults/main.yml
new file mode 100644
index 0000000..5834054
--- /dev/null
+++ b/roles/edulive/defaults/main.yml
@@ -0,0 +1 @@
+build_dir: /opt/live-build/
diff --git a/roles/edulive/files/gnome-edu/README b/roles/edulive/files/gnome-edu/README
new file mode 100644
index 0000000..83e60e3
--- /dev/null
+++ b/roles/edulive/files/gnome-edu/README
@@ -0,0 +1,2 @@
+This config space is based on:
+ https://salsa.debian.org/live-team/live-images/-/tree/debian/images/gnome-desktop
\ No newline at end of file
diff --git a/roles/edulive/files/gnome-edu/auto/build b/roles/edulive/files/gnome-edu/auto/build
new file mode 100755
index 0000000..f8d8346
--- /dev/null
+++ b/roles/edulive/files/gnome-edu/auto/build
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+set -e
+
+lb build noauto "${@}" 2>&1 | tee build.log
diff --git a/roles/edulive/files/gnome-edu/auto/clean b/roles/edulive/files/gnome-edu/auto/clean
new file mode 100755
index 0000000..4b8ccaa
--- /dev/null
+++ b/roles/edulive/files/gnome-edu/auto/clean
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+set -e
+
+lb clean noauto "${@}"
+
+rm -f config/binary config/bootstrap config/chroot config/common config/source
+rm -f config/control
+
+rm -f build.log
diff --git a/roles/edulive/files/gnome-edu/auto/config b/roles/edulive/files/gnome-edu/auto/config
new file mode 100755
index 0000000..96e38d3
--- /dev/null
+++ b/roles/edulive/files/gnome-edu/auto/config
@@ -0,0 +1,18 @@
+#!/bin/sh
+
+set -e
+
+lb config noauto \
+ --clean \
+ --cache false \
+ --net-tarball false \
+ --ignore-system-defaults \
+ --distribution bullseye \
+ --binary-images netboot \
+ --mode debian \
+ --backports true \
+ --linux-packages linux-image \
+ --archive-areas "main contrib non-free" \
+ --mirror-bootstrap http://localhost:3142/deb.debian.org/debian/ \
+ --mirror-chroot-security http://localhost:3142/security.debian.org/debian-security/ \
+"${@}"
diff --git a/roles/edulive/files/gnome-edu/config/hooks/0001-plymouth-theme.hook.chroot b/roles/edulive/files/gnome-edu/config/hooks/0001-plymouth-theme.hook.chroot
new file mode 100755
index 0000000..16095e0
--- /dev/null
+++ b/roles/edulive/files/gnome-edu/config/hooks/0001-plymouth-theme.hook.chroot
@@ -0,0 +1,8 @@
+#!/bin/sh
+
+set -e
+
+if [ -e /usr/sbin/plymouth-set-default-theme ] && [ -e /usr/share/plymouth/themes/lines ]
+then
+ plymouth-set-default-theme lines
+fi
diff --git a/roles/edulive/files/gnome-edu/config/hooks/live/0010-disable-kexec-tools.hook.chroot b/roles/edulive/files/gnome-edu/config/hooks/live/0010-disable-kexec-tools.hook.chroot
new file mode 120000
index 0000000..996f766
--- /dev/null
+++ b/roles/edulive/files/gnome-edu/config/hooks/live/0010-disable-kexec-tools.hook.chroot
@@ -0,0 +1 @@
+/usr/share/live/build/hooks/live/0010-disable-kexec-tools.hook.chroot
\ No newline at end of file
diff --git a/roles/edulive/files/gnome-edu/config/hooks/live/0050-disable-sysvinit-tmpfs.hook.chroot b/roles/edulive/files/gnome-edu/config/hooks/live/0050-disable-sysvinit-tmpfs.hook.chroot
new file mode 120000
index 0000000..5ddf090
--- /dev/null
+++ b/roles/edulive/files/gnome-edu/config/hooks/live/0050-disable-sysvinit-tmpfs.hook.chroot
@@ -0,0 +1 @@
+/usr/share/live/build/hooks/live/0050-disable-sysvinit-tmpfs.hook.chroot
\ No newline at end of file
diff --git a/roles/edulive/files/gnome-edu/config/hooks/live/0500-desktop.hook.chroot b/roles/edulive/files/gnome-edu/config/hooks/live/0500-desktop.hook.chroot
new file mode 100755
index 0000000..a051368
--- /dev/null
+++ b/roles/edulive/files/gnome-edu/config/hooks/live/0500-desktop.hook.chroot
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+set -e
+
+echo 'pref("browser.startup.homepage", "https://www.startpage.com");' >> /etc/firefox-esr/firefox-esr.js
+echo 'pref("network.proxy.type", 4);' >> /etc/firefox-esr/firefox-esr.js
+
+dconf update
+
+#sed -i "s/^/#/" /etc/xdg/user-dirs.defaults
+
+sed -i "s/^#WaylandEnable=false$/WaylandEnable=false/" /etc/gdm3/daemon.conf
+
+## workaround https://bugzilla.gnome.org/show_bug.cgi?id=730587
+#dpkg-divert --divert /usr/bin/gnome-keyring-daemon.bak --rename /usr/bin/gnome-keyring-daemon
diff --git a/roles/edulive/files/gnome-edu/config/hooks/live/0600-wireshark.hook.chroot b/roles/edulive/files/gnome-edu/config/hooks/live/0600-wireshark.hook.chroot
new file mode 100755
index 0000000..13ce126
--- /dev/null
+++ b/roles/edulive/files/gnome-edu/config/hooks/live/0600-wireshark.hook.chroot
@@ -0,0 +1,5 @@
+#!/bin/sh
+set -e
+
+## allow everybody to run wireshark:
+chmod 0755 /usr/bin/dumpcap
diff --git a/roles/edulive/files/gnome-edu/config/hooks/normal/0020-create-mtab-symlink.hook.chroot b/roles/edulive/files/gnome-edu/config/hooks/normal/0020-create-mtab-symlink.hook.chroot
new file mode 120000
index 0000000..58123fc
--- /dev/null
+++ b/roles/edulive/files/gnome-edu/config/hooks/normal/0020-create-mtab-symlink.hook.chroot
@@ -0,0 +1 @@
+/usr/share/live/build/hooks/normal/0020-create-mtab-symlink.hook.chroot
\ No newline at end of file
diff --git a/roles/edulive/files/gnome-edu/config/hooks/normal/0030-enable-cryptsetup.hook.chroot b/roles/edulive/files/gnome-edu/config/hooks/normal/0030-enable-cryptsetup.hook.chroot
new file mode 120000
index 0000000..c5ab625
--- /dev/null
+++ b/roles/edulive/files/gnome-edu/config/hooks/normal/0030-enable-cryptsetup.hook.chroot
@@ -0,0 +1 @@
+/usr/share/live/build/hooks/normal/0030-enable-cryptsetup.hook.chroot
\ No newline at end of file
diff --git a/roles/edulive/files/gnome-edu/config/hooks/normal/0040-create-locales-files.hook.chroot b/roles/edulive/files/gnome-edu/config/hooks/normal/0040-create-locales-files.hook.chroot
new file mode 120000
index 0000000..036e7e0
--- /dev/null
+++ b/roles/edulive/files/gnome-edu/config/hooks/normal/0040-create-locales-files.hook.chroot
@@ -0,0 +1 @@
+/usr/share/live/build/hooks/normal/0040-create-locales-files.hook.chroot
\ No newline at end of file
diff --git a/roles/edulive/files/gnome-edu/config/hooks/normal/0100-remove-adjtime-configuration.hook.chroot b/roles/edulive/files/gnome-edu/config/hooks/normal/0100-remove-adjtime-configuration.hook.chroot
new file mode 120000
index 0000000..b0ccdb6
--- /dev/null
+++ b/roles/edulive/files/gnome-edu/config/hooks/normal/0100-remove-adjtime-configuration.hook.chroot
@@ -0,0 +1 @@
+/usr/share/live/build/hooks/normal/0100-remove-adjtime-configuration.hook.chroot
\ No newline at end of file
diff --git a/roles/edulive/files/gnome-edu/config/hooks/normal/0110-remove-backup-files.hook.chroot b/roles/edulive/files/gnome-edu/config/hooks/normal/0110-remove-backup-files.hook.chroot
new file mode 120000
index 0000000..8b68c5c
--- /dev/null
+++ b/roles/edulive/files/gnome-edu/config/hooks/normal/0110-remove-backup-files.hook.chroot
@@ -0,0 +1 @@
+/usr/share/live/build/hooks/normal/0110-remove-backup-files.hook.chroot
\ No newline at end of file
diff --git a/roles/edulive/files/gnome-edu/config/hooks/normal/0120-remove-dbus-machine-id.hook.chroot b/roles/edulive/files/gnome-edu/config/hooks/normal/0120-remove-dbus-machine-id.hook.chroot
new file mode 120000
index 0000000..4d55b27
--- /dev/null
+++ b/roles/edulive/files/gnome-edu/config/hooks/normal/0120-remove-dbus-machine-id.hook.chroot
@@ -0,0 +1 @@
+/usr/share/live/build/hooks/normal/0120-remove-dbus-machine-id.hook.chroot
\ No newline at end of file
diff --git a/roles/edulive/files/gnome-edu/config/hooks/normal/0130-remove-gnome-icon-cache.hook.chroot b/roles/edulive/files/gnome-edu/config/hooks/normal/0130-remove-gnome-icon-cache.hook.chroot
new file mode 120000
index 0000000..54f6a9b
--- /dev/null
+++ b/roles/edulive/files/gnome-edu/config/hooks/normal/0130-remove-gnome-icon-cache.hook.chroot
@@ -0,0 +1 @@
+/usr/share/live/build/hooks/normal/0130-remove-gnome-icon-cache.hook.chroot
\ No newline at end of file
diff --git a/roles/edulive/files/gnome-edu/config/hooks/normal/0140-remove-log-files.hook.chroot b/roles/edulive/files/gnome-edu/config/hooks/normal/0140-remove-log-files.hook.chroot
new file mode 120000
index 0000000..2b99cec
--- /dev/null
+++ b/roles/edulive/files/gnome-edu/config/hooks/normal/0140-remove-log-files.hook.chroot
@@ -0,0 +1 @@
+/usr/share/live/build/hooks/normal/0140-remove-log-files.hook.chroot
\ No newline at end of file
diff --git a/roles/edulive/files/gnome-edu/config/hooks/normal/0150-remove-mdadm-configuration.hook.chroot b/roles/edulive/files/gnome-edu/config/hooks/normal/0150-remove-mdadm-configuration.hook.chroot
new file mode 120000
index 0000000..0c3cd2f
--- /dev/null
+++ b/roles/edulive/files/gnome-edu/config/hooks/normal/0150-remove-mdadm-configuration.hook.chroot
@@ -0,0 +1 @@
+/usr/share/live/build/hooks/normal/0150-remove-mdadm-configuration.hook.chroot
\ No newline at end of file
diff --git a/roles/edulive/files/gnome-edu/config/hooks/normal/0160-remove-openssh-server-host-keys.hook.chroot b/roles/edulive/files/gnome-edu/config/hooks/normal/0160-remove-openssh-server-host-keys.hook.chroot
new file mode 120000
index 0000000..e57b8d2
--- /dev/null
+++ b/roles/edulive/files/gnome-edu/config/hooks/normal/0160-remove-openssh-server-host-keys.hook.chroot
@@ -0,0 +1 @@
+/usr/share/live/build/hooks/normal/0160-remove-openssh-server-host-keys.hook.chroot
\ No newline at end of file
diff --git a/roles/edulive/files/gnome-edu/config/hooks/normal/0170-remove-python-py.hook.chroot b/roles/edulive/files/gnome-edu/config/hooks/normal/0170-remove-python-py.hook.chroot
new file mode 120000
index 0000000..858a942
--- /dev/null
+++ b/roles/edulive/files/gnome-edu/config/hooks/normal/0170-remove-python-py.hook.chroot
@@ -0,0 +1 @@
+/usr/share/live/build/hooks/normal/0170-remove-python-py.hook.chroot
\ No newline at end of file
diff --git a/roles/edulive/files/gnome-edu/config/hooks/normal/0180-remove-systemd-machine-id.hook.chroot b/roles/edulive/files/gnome-edu/config/hooks/normal/0180-remove-systemd-machine-id.hook.chroot
new file mode 120000
index 0000000..6cecf66
--- /dev/null
+++ b/roles/edulive/files/gnome-edu/config/hooks/normal/0180-remove-systemd-machine-id.hook.chroot
@@ -0,0 +1 @@
+/usr/share/live/build/hooks/normal/0180-remove-systemd-machine-id.hook.chroot
\ No newline at end of file
diff --git a/roles/edulive/files/gnome-edu/config/hooks/normal/0190-remove-temporary-files.hook.chroot b/roles/edulive/files/gnome-edu/config/hooks/normal/0190-remove-temporary-files.hook.chroot
new file mode 120000
index 0000000..ada76d9
--- /dev/null
+++ b/roles/edulive/files/gnome-edu/config/hooks/normal/0190-remove-temporary-files.hook.chroot
@@ -0,0 +1 @@
+/usr/share/live/build/hooks/normal/0190-remove-temporary-files.hook.chroot
\ No newline at end of file
diff --git a/roles/edulive/files/gnome-edu/config/hooks/normal/0195-remove-ssl-cert-snakeoil.hook.chroot b/roles/edulive/files/gnome-edu/config/hooks/normal/0195-remove-ssl-cert-snakeoil.hook.chroot
new file mode 120000
index 0000000..9fc0723
--- /dev/null
+++ b/roles/edulive/files/gnome-edu/config/hooks/normal/0195-remove-ssl-cert-snakeoil.hook.chroot
@@ -0,0 +1 @@
+/usr/share/live/build/hooks/normal/0195-remove-ssl-cert-snakeoil.hook.chroot
\ No newline at end of file
diff --git a/roles/edulive/files/gnome-edu/config/hooks/normal/0200-remove-udev-persistent-cd-rules.hook.chroot b/roles/edulive/files/gnome-edu/config/hooks/normal/0200-remove-udev-persistent-cd-rules.hook.chroot
new file mode 120000
index 0000000..f893dcc
--- /dev/null
+++ b/roles/edulive/files/gnome-edu/config/hooks/normal/0200-remove-udev-persistent-cd-rules.hook.chroot
@@ -0,0 +1 @@
+/usr/share/live/build/hooks/normal/0200-remove-udev-persistent-cd-rules.hook.chroot
\ No newline at end of file
diff --git a/roles/edulive/files/gnome-edu/config/hooks/normal/0300-remove-udev-persistent-net-rules.hook.chroot b/roles/edulive/files/gnome-edu/config/hooks/normal/0300-remove-udev-persistent-net-rules.hook.chroot
new file mode 120000
index 0000000..a6ee33d
--- /dev/null
+++ b/roles/edulive/files/gnome-edu/config/hooks/normal/0300-remove-udev-persistent-net-rules.hook.chroot
@@ -0,0 +1 @@
+/usr/share/live/build/hooks/normal/0300-remove-udev-persistent-net-rules.hook.chroot
\ No newline at end of file
diff --git a/roles/edulive/files/gnome-edu/config/hooks/normal/0400-update-apt-file-cache.hook.chroot b/roles/edulive/files/gnome-edu/config/hooks/normal/0400-update-apt-file-cache.hook.chroot
new file mode 120000
index 0000000..380fdcf
--- /dev/null
+++ b/roles/edulive/files/gnome-edu/config/hooks/normal/0400-update-apt-file-cache.hook.chroot
@@ -0,0 +1 @@
+/usr/share/live/build/hooks/normal/0400-update-apt-file-cache.hook.chroot
\ No newline at end of file
diff --git a/roles/edulive/files/gnome-edu/config/hooks/normal/0410-update-apt-xapian-index.hook.chroot b/roles/edulive/files/gnome-edu/config/hooks/normal/0410-update-apt-xapian-index.hook.chroot
new file mode 120000
index 0000000..dd7150e
--- /dev/null
+++ b/roles/edulive/files/gnome-edu/config/hooks/normal/0410-update-apt-xapian-index.hook.chroot
@@ -0,0 +1 @@
+/usr/share/live/build/hooks/normal/0410-update-apt-xapian-index.hook.chroot
\ No newline at end of file
diff --git a/roles/edulive/files/gnome-edu/config/hooks/normal/0420-update-glx-alternative.hook.chroot b/roles/edulive/files/gnome-edu/config/hooks/normal/0420-update-glx-alternative.hook.chroot
new file mode 120000
index 0000000..4da25f8
--- /dev/null
+++ b/roles/edulive/files/gnome-edu/config/hooks/normal/0420-update-glx-alternative.hook.chroot
@@ -0,0 +1 @@
+/usr/share/live/build/hooks/normal/0420-update-glx-alternative.hook.chroot
\ No newline at end of file
diff --git a/roles/edulive/files/gnome-edu/config/hooks/normal/0430-update-mlocate-database.hook.chroot b/roles/edulive/files/gnome-edu/config/hooks/normal/0430-update-mlocate-database.hook.chroot
new file mode 120000
index 0000000..13b49d7
--- /dev/null
+++ b/roles/edulive/files/gnome-edu/config/hooks/normal/0430-update-mlocate-database.hook.chroot
@@ -0,0 +1 @@
+/usr/share/live/build/hooks/normal/0430-update-mlocate-database.hook.chroot
\ No newline at end of file
diff --git a/roles/edulive/files/gnome-edu/config/hooks/normal/0440-update-nvidia-alternative.hook.chroot b/roles/edulive/files/gnome-edu/config/hooks/normal/0440-update-nvidia-alternative.hook.chroot
new file mode 120000
index 0000000..0a65196
--- /dev/null
+++ b/roles/edulive/files/gnome-edu/config/hooks/normal/0440-update-nvidia-alternative.hook.chroot
@@ -0,0 +1 @@
+/usr/share/live/build/hooks/normal/0440-update-nvidia-alternative.hook.chroot
\ No newline at end of file
diff --git a/roles/edulive/files/gnome-edu/config/hooks/normal/0500-reproducible-glibc.hook.chroot b/roles/edulive/files/gnome-edu/config/hooks/normal/0500-reproducible-glibc.hook.chroot
new file mode 120000
index 0000000..9d4f095
--- /dev/null
+++ b/roles/edulive/files/gnome-edu/config/hooks/normal/0500-reproducible-glibc.hook.chroot
@@ -0,0 +1 @@
+/usr/share/live/build/hooks/normal/0500-reproducible-glibc.hook.chroot
\ No newline at end of file
diff --git a/roles/edulive/files/gnome-edu/config/includes.chroot/etc/dconf/db/gdm.d/00-login-screen b/roles/edulive/files/gnome-edu/config/includes.chroot/etc/dconf/db/gdm.d/00-login-screen
new file mode 100644
index 0000000..23408bc
--- /dev/null
+++ b/roles/edulive/files/gnome-edu/config/includes.chroot/etc/dconf/db/gdm.d/00-login-screen
@@ -0,0 +1,8 @@
+[org/gnome/login-screen]
+disable-user-list=true
+logo='/usr/share/desktop-base/debian-logos/logo-text-64.png'
+
+[org/gnome/settings-daemon/plugins/power]
+power-button-action='interactive'
+sleep-inactive-ac-timeout=600
+sleep-inactive-ac-type='interactive'
diff --git a/roles/edulive/files/gnome-edu/config/includes.chroot/etc/dconf/db/local.d/defaults b/roles/edulive/files/gnome-edu/config/includes.chroot/etc/dconf/db/local.d/defaults
new file mode 100644
index 0000000..ffde793
--- /dev/null
+++ b/roles/edulive/files/gnome-edu/config/includes.chroot/etc/dconf/db/local.d/defaults
@@ -0,0 +1,34 @@
+[org/gnome/shell]
+enabled-extensions=['apps-menu@gnome-shell-extensions.gcampax.github.com', 'window-list@gnome-shell-extensions.gcampax.github.com', 'places-menu@gnome-shell-extensions.gcampax.github.com', 'drive-menu@gnome-shell-extensions.gcampax.github.com', 'dash-to-dock@micxgx.gmail.com']
+
+[org/gnome/desktop/input-sources]
+sources=[('xkb', 'de'), ('xkb', 'us')]
+
+[org/gnome/desktop/wm/preferences]
+button-layout='appmenu:minimize,maximize,close'
+
+[org/gnome/desktop/peripherals/touchpad]
+natural-scroll=false
+edge-scrolling-enabled=true
+tap-to-click=true
+
+[org/gnome/nautilus/preferences]
+default-folder-viewer='list-view'
+
+[org/gnome/nautilus/list-view]
+use-tree-view=true
+
+[org/gnome/settings-daemon/plugins/power]
+power-button-action='interactive'
+sleep-inactive-battery-timeout=600
+sleep-inactive-battery-type='hibernate'
+sleep-inactive-ac-timeout=6000
+sleep-inactive-ac-type='nothing'
+
+[org/gnome/desktop/screensaver]
+lock-enabled=false
+
+[org/gnome/desktop/interface]
+clock-show-date=true
+clock-show-seconds=true
+clock-show-weekday=true
diff --git a/roles/edulive/files/gnome-edu/config/includes.chroot/etc/dconf/profile/gdm b/roles/edulive/files/gnome-edu/config/includes.chroot/etc/dconf/profile/gdm
new file mode 100644
index 0000000..c165d75
--- /dev/null
+++ b/roles/edulive/files/gnome-edu/config/includes.chroot/etc/dconf/profile/gdm
@@ -0,0 +1,3 @@
+user-db:user
+system-db:gdm
+file-db:/usr/share/gdm/greeter.dconf-defaults
diff --git a/roles/edulive/files/gnome-edu/config/includes.chroot/etc/dconf/profile/user b/roles/edulive/files/gnome-edu/config/includes.chroot/etc/dconf/profile/user
new file mode 100644
index 0000000..aca0641
--- /dev/null
+++ b/roles/edulive/files/gnome-edu/config/includes.chroot/etc/dconf/profile/user
@@ -0,0 +1,2 @@
+user-db:user
+system-db:local
diff --git a/roles/edulive/files/gnome-edu/config/includes.chroot/etc/libvirt/qemu/netboot.xml b/roles/edulive/files/gnome-edu/config/includes.chroot/etc/libvirt/qemu/netboot.xml
new file mode 100644
index 0000000..6a993f9
--- /dev/null
+++ b/roles/edulive/files/gnome-edu/config/includes.chroot/etc/libvirt/qemu/netboot.xml
@@ -0,0 +1,151 @@
+
+
+
+ netboot
+ 60ea84db-de6c-493c-8e3f-8e9a99ee19c2
+
+
+
+
+
+ 2097152
+ 2097152
+ 2
+
+ hvm
+ /usr/share/OVMF/OVMF_CODE.fd
+ /var/lib/libvirt/qemu/nvram/netboot_VARS.fd
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ destroy
+ restart
+ destroy
+
+
+
+
+
+ /usr/bin/qemu-system-x86_64
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ /dev/urandom
+
+
+
+
diff --git a/roles/edulive/files/gnome-edu/config/includes.chroot/etc/libvirt/qemu/networks/autostart/default.xml b/roles/edulive/files/gnome-edu/config/includes.chroot/etc/libvirt/qemu/networks/autostart/default.xml
new file mode 120000
index 0000000..8339868
--- /dev/null
+++ b/roles/edulive/files/gnome-edu/config/includes.chroot/etc/libvirt/qemu/networks/autostart/default.xml
@@ -0,0 +1 @@
+../default.xml
\ No newline at end of file
diff --git a/roles/edulive/files/gnome-edu/config/includes.chroot/etc/libvirt/qemu/networks/autostart/intern.xml b/roles/edulive/files/gnome-edu/config/includes.chroot/etc/libvirt/qemu/networks/autostart/intern.xml
new file mode 120000
index 0000000..08b61d4
--- /dev/null
+++ b/roles/edulive/files/gnome-edu/config/includes.chroot/etc/libvirt/qemu/networks/autostart/intern.xml
@@ -0,0 +1 @@
+../intern.xml
\ No newline at end of file
diff --git a/roles/edulive/files/gnome-edu/config/includes.chroot/etc/libvirt/qemu/networks/intern.xml b/roles/edulive/files/gnome-edu/config/includes.chroot/etc/libvirt/qemu/networks/intern.xml
new file mode 100644
index 0000000..a0e5425
--- /dev/null
+++ b/roles/edulive/files/gnome-edu/config/includes.chroot/etc/libvirt/qemu/networks/intern.xml
@@ -0,0 +1,14 @@
+
+
+
+ intern
+ 399d67ae-263b-4aeb-995d-fe0a44f00132
+
+
+
+
diff --git a/roles/edulive/files/gnome-edu/config/includes.chroot/etc/sysctl.d/sysctl.conf b/roles/edulive/files/gnome-edu/config/includes.chroot/etc/sysctl.d/sysctl.conf
new file mode 100644
index 0000000..c038e6d
--- /dev/null
+++ b/roles/edulive/files/gnome-edu/config/includes.chroot/etc/sysctl.d/sysctl.conf
@@ -0,0 +1,3 @@
+# Uncomment the following to stop low-level messages on console
+kernel.printk = 3 4 1 3
+
diff --git a/roles/edulive/files/gnome-edu/config/includes.chroot/lib/live/config/0001-VM-MAC b/roles/edulive/files/gnome-edu/config/includes.chroot/lib/live/config/0001-VM-MAC
new file mode 100755
index 0000000..784d836
--- /dev/null
+++ b/roles/edulive/files/gnome-edu/config/includes.chroot/lib/live/config/0001-VM-MAC
@@ -0,0 +1,11 @@
+#!/bin/sh
+# Fix deployed VM config
+
+set -eu
+
+NIC="$(ip link | grep "^2: " | cut -d ' ' -f2 | sed "s/://")"
+MAC="$(ip link | grep -A1 "^2: " | grep -oE "[[:xdigit:]]{2}:[[:xdigit:]]{2}:[[:xdigit:]]{2} " \
+ | sed "s/ //g")"
+
+sed -i -e "s/VMMAC/$MAC/g" -e "s/INTERFACE/$NIC/g" /etc/libvirt/qemu/netboot.xml
+
diff --git a/roles/edulive/files/gnome-edu/config/package-lists/desktop.list.chroot b/roles/edulive/files/gnome-edu/config/package-lists/desktop.list.chroot
new file mode 100644
index 0000000..705dc8f
--- /dev/null
+++ b/roles/edulive/files/gnome-edu/config/package-lists/desktop.list.chroot
@@ -0,0 +1,11 @@
+task-gnome-desktop
+
+gnome-shell-extension-dashtodock
+gnome-shell-extension-dash-to-panel
+
+plymouth
+plymouth-x11
+
+gstreamer1.0-vaapi
+i965-va-driver
+auto-apt-proxy
diff --git a/roles/edulive/files/gnome-edu/config/package-lists/live-systems.list.chroot b/roles/edulive/files/gnome-edu/config/package-lists/live-systems.list.chroot
new file mode 100644
index 0000000..d73ed96
--- /dev/null
+++ b/roles/edulive/files/gnome-edu/config/package-lists/live-systems.list.chroot
@@ -0,0 +1,2 @@
+live-manual
+live-tools
diff --git a/roles/edulive/files/gnome-edu/config/package-lists/live.list.chroot b/roles/edulive/files/gnome-edu/config/package-lists/live.list.chroot
new file mode 100644
index 0000000..1e6ef96
--- /dev/null
+++ b/roles/edulive/files/gnome-edu/config/package-lists/live.list.chroot
@@ -0,0 +1,3 @@
+live-boot
+live-config
+live-config-systemd
diff --git a/roles/edulive/files/gnome-edu/config/package-lists/localization.list.chroot b/roles/edulive/files/gnome-edu/config/package-lists/localization.list.chroot
new file mode 100644
index 0000000..f952ab0
--- /dev/null
+++ b/roles/edulive/files/gnome-edu/config/package-lists/localization.list.chroot
@@ -0,0 +1,2 @@
+task-english
+task-german
diff --git a/roles/edulive/files/gnome-edu/config/package-lists/school.list.chroot b/roles/edulive/files/gnome-edu/config/package-lists/school.list.chroot
new file mode 100644
index 0000000..2c90ba9
--- /dev/null
+++ b/roles/edulive/files/gnome-edu/config/package-lists/school.list.chroot
@@ -0,0 +1,100 @@
+#
+# This file is linked to all desktop configurations.
+# Put desktop specific packages in the desktop specific file.
+#
+#webext-ublock-origin-firefox
+#webext-ublock-origin-chromium
+webext-ublock-origin
+webext-privacy-badger
+
+vim
+emacs
+vlc
+gimp
+inkscape
+bluefish
+
+openboard
+xournal
+
+freecad
+librecad
+kicad
+
+git
+mc
+tmux
+wireshark
+nmap
+netcat-openbsd
+net-tools
+thonny
+spyder
+ghex
+
+codeblocks
+gprolog
+qtcreator
+obs-studio
+
+mu-editor
+dia
+vym
+shellcheck
+xterm
+
+tree
+console-setup
+virt-manager
+sway
+
+task-german-desktop
+
+ssh-askpass-gnome
+keepassxc
+
+#nextcloud-desktop
+#nautilus-nextcloud
+#thunderbird
+#thunderbird-l10n-de
+
+#texlive
+#texlive-latex-extra
+#texlive-lang-german
+#texlive-science
+
+pdf-presenter-console
+
+libreoffice/bullseye-backports
+libreoffice-core/bullseye-backports
+libreoffice-common/bullseye-backports
+libreoffice-writer/bullseye-backports
+libreoffice-calc/bullseye-backports
+libreoffice-impress/bullseye-backports
+libreoffice-base/bullseye-backports
+libreoffice-base-drivers/bullseye-backports
+libreoffice-math/bullseye-backports
+libreoffice-report-builder-bin/bullseye-backports
+libreoffice-style-colibre/bullseye-backports
+libreoffice-gnome/bullseye-backports
+libreoffice-gtk3/bullseye-backports
+libreoffice-style-elementary/bullseye-backports
+libreoffice-help-common/bullseye-backports
+libreoffice-help-de/bullseye-backports
+libreoffice-java-common/bullseye-backports
+libreoffice-l10n-de/bullseye-backports
+libreoffice-nlpsolver/bullseye-backports
+libreoffice-report-builder/bullseye-backports
+libreoffice-script-provider-bsh/bullseye-backports
+libreoffice-script-provider-js/bullseye-backports
+libreoffice-script-provider-python/bullseye-backports
+libreoffice-sdbc-firebird/bullseye-backports
+libreoffice-sdbc-hsqldb/bullseye-backports
+libreoffice-sdbc-mysql/bullseye-backports
+libreoffice-sdbc-postgresql/bullseye-backports
+libreoffice-wiki-publisher/bullseye-backports
+
+python3-uno/bullseye-backports
+libuno-sal3/bullseye-backports
+fonts-opensymbol/bullseye-backports
+ure/bullseye-backports
diff --git a/roles/edulive/files/gnome-edu/config/package-lists/standard.list.chroot b/roles/edulive/files/gnome-edu/config/package-lists/standard.list.chroot
new file mode 100644
index 0000000..094fbcf
--- /dev/null
+++ b/roles/edulive/files/gnome-edu/config/package-lists/standard.list.chroot
@@ -0,0 +1,4 @@
+! Packages Priority standard
+
+task-laptop
+task-ssh-server
diff --git a/roles/edulive/files/gnome-edu/config/preseed/wireshark.cfg.chroot b/roles/edulive/files/gnome-edu/config/preseed/wireshark.cfg.chroot
new file mode 100644
index 0000000..f885636
--- /dev/null
+++ b/roles/edulive/files/gnome-edu/config/preseed/wireshark.cfg.chroot
@@ -0,0 +1 @@
+wireshark-common wireshark-common/install-setuid boolean true
diff --git a/roles/edulive/handlers/main.yml b/roles/edulive/handlers/main.yml
new file mode 100644
index 0000000..e56de9a
--- /dev/null
+++ b/roles/edulive/handlers/main.yml
@@ -0,0 +1,5 @@
+---
+- name: run the image build script
+ command:
+ cmd: livebuilder.sh
+ listen: run build script
diff --git a/roles/edulive/tasks/main.yml b/roles/edulive/tasks/main.yml
new file mode 100644
index 0000000..7da654e
--- /dev/null
+++ b/roles/edulive/tasks/main.yml
@@ -0,0 +1,66 @@
+---
+- name: install packages
+ apt:
+ name:
+ - live-build
+ state: latest # noqa package-latest
+
+- name: prepare live-build directory
+ file:
+ path: "{{ build_dir }}"
+ state: directory
+ mode: 0755
+
+- name: copy build script
+ template:
+ src: livebuilder.sh
+ dest: /usr/local/sbin/
+ mode: 0755
+
+- name: copy live-build configuration
+ copy:
+ src: "{{ item }}"
+ dest: "{{ build_dir }}"
+ local_follow: false
+ mode: preserve
+ loop: "{{ build_images }}"
+ notify: run build script
+
+- name: prepare debian live nfs boot entry title
+ lineinfile:
+ path: /etc/di-netboot-assistant/ipxemenu.HEAD
+ insertafter: '-- Customized Boot Entries --'
+ line: "item {{ item }} Debian GNU/Linux {{ item }} NFS"
+ loop:
+ "{{ build_images }}"
+ notify: rebuild di-netboot menu
+
+- name: prepare debian live boot loader ipxe
+ blockinfile:
+ path: /etc/di-netboot-assistant/ipxemenu.HEAD
+ marker: "# {mark} ANSIBLE MANAGED BLOCK {{ item }}"
+ block: |
+ :{{ item }}
+ echo Booting Debian GNU/Linux EDU LIVE
+ kernel ${210:string}d-i/n-live/{{ item }}/live/vmlinuz \
+ initrd=initrd.img-5.10.0-13-amd64 {{ boot_params|join(' ') }} \
+ nfsroot={{ ansible_default_ipv4.address }}:/var/lib/tftpboot/d-i/n-live/{{ item }}/
+ initrd ${210:string}d-i/n-live/{{ item }}/live/initrd.img
+ boot
+ loop: "{{ build_images }}"
+ notify: rebuild di-netboot menu
+
+- name: prepare debian live boot loader grub
+ blockinfile:
+ path: /etc/di-netboot-assistant/grub.cfg.HEAD
+ insertbefore: "^menuentry 'Boot from local disk..'"
+ marker: "# {mark} ANSIBLE MANAGED BLOCK {{ item }}"
+ block: |
+ menuentry 'Debian GNU/Linux Live {{ item }}' {
+ linux (http,{{ ansible_default_ipv4.address }})/d-i/n-live/{{ item }}/live/vmlinuz \
+ {{ boot_params|join(' ') }} \
+ nfsroot={{ ansible_default_ipv4.address }}:/var/lib/tftpboot/d-i/n-live/{{ item }}/
+ initrd (http,{{ ansible_default_ipv4.address }})/d-i/n-live/{{ item }}/live/initrd.img
+ }
+ loop: "{{ build_images }}"
+ notify: rebuild di-netboot menu
diff --git a/roles/edulive/templates/livebuilder.sh b/roles/edulive/templates/livebuilder.sh
new file mode 100644
index 0000000..d8ef679
--- /dev/null
+++ b/roles/edulive/templates/livebuilder.sh
@@ -0,0 +1,27 @@
+#!/usr/bin/bash
+#
+# build live images and copy kernel, initramfs and squashfs
+#
+
+set -eu
+
+BUILDD="{{ build_dir }}"
+
+run_build(){
+ local DEST="/var/lib/tftpboot/d-i/n-live/$1/live/"
+ cd "$BUILDD/$1"
+ [[ -d "$DEST" ]] || mkdir -vp "$DEST"
+
+ lb clean && lb config && lb build
+
+ for FILE in vmlinuz initrd.img filesystem.squashfs ; do
+ ln -vf "$BUILDD/$1/binary/live/$FILE" "$DEST"
+ done
+}
+
+## main:
+
+for IMG in {{ build_images|join(' ') }} ; do
+ echo "=========== Building image $IMG ==========="
+ run_build $IMG
+done
diff --git a/roles/edulive/templates/main.yml b/roles/edulive/templates/main.yml
new file mode 100644
index 0000000..cd5450e
--- /dev/null
+++ b/roles/edulive/templates/main.yml
@@ -0,0 +1,54 @@
+---
+- name: install packages
+ apt:
+ name:
+ - live-build
+ state: latest # noqa package-latest
+
+- name: prepare live-build directory
+ file:
+ path: /opt/live-build/
+ state: directory
+ mode: 0755
+
+- name: copy build script
+ template:
+ src: livebuilder.sh
+ dest: /usr/local/sbin/
+ mode: 0755
+
+- name: copy live-build configuration
+ copy:
+ src: gnome-edu
+ dest: /opt/live-build/
+ local_follow: false
+ notify: build image
+
+- name: prepare debian live boot loader ipxe
+ blockinfile:
+ path: /etc/di-netboot-assistant/ipxemenu.HEAD
+ marker: "# {mark} ANSIBLE MANAGED BLOCK gnome-edu"
+ block: |
+ :gnome-edu
+ echo Booting Debian GNU/Linux EDU LIVE
+ kernel ${210:string}d-i/n-live/gnome-edu/live/vmlinuz \
+ initrd=initrd.img-5.10.0-13-amd64 {{ boot_params|join(' ') }} \
+ nfsroot={{ ansible_default_ipv4.address }}:/var/lib/tftpboot/d-i/n-live/gnome-edu/
+ initrd ${210:string}d-i/n-live/gnome-edu/live/initrd.img
+ boot
+ notify: rebuild di-netboot menu
+
+- name: prepare debian live boot loader grub
+ blockinfile:
+ path: /etc/di-netboot-assistant/grub.cfg.HEAD
+ insertbefore: "^menuentry 'Boot from local disk..'"
+ marker: "# {mark} ANSIBLE MANAGED BLOCK gnome-edu"
+ block: |
+ menuentry 'Debian GNU/Linux Live gnome-edu' {
+ linux (http,{{ ansible_default_ipv4.address }})/d-i/n-live/gnome-edu/live/vmlinuz \
+ {{ boot_params|join(' ') }} \
+ nfsroot={{ ansible_default_ipv4.address }}:/var/lib/tftpboot/d-i/n-live/gnome-edu/
+ initrd (http,{{ ansible_default_ipv4.address }})/d-i/n-live/gnome-edu/live/initrd.img
+ }
+ notify: rebuild di-netboot menu
+