From 731cab73b54223a7ccfeec293b1f57c0477a5823 Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Fri, 18 Nov 2022 15:12:59 -0500
Subject: linhes-dev: add LinHES9_iso for building ISO

---
 linhes/linhes-dev/LinHES9_iso/.gitignore           |   3 +
 linhes/linhes-dev/LinHES9_iso/build_iso.sh         | 292 +++++++++++++++++++++
 .../etc/calamares/branding/LinHES/branding.desc    | 227 ++++++++++++++++
 .../branding/LinHES/lang/calamares-default_ar.ts   |  17 ++
 .../branding/LinHES/lang/calamares-default_en.ts   |  17 ++
 .../branding/LinHES/lang/calamares-default_eo.ts   |  17 ++
 .../branding/LinHES/lang/calamares-default_fr.ts   |  17 ++
 .../branding/LinHES/lang/calamares-default_nl.ts   |  17 ++
 .../etc/calamares/branding/LinHES/languages.png    | Bin 0 -> 86002 bytes
 .../branding/LinHES/languages.png.license          |   2 +
 .../etc/calamares/branding/LinHES/show.qml         |  97 +++++++
 .../etc/calamares/branding/LinHES/squid.png        | Bin 0 -> 8313 bytes
 .../calamares/branding/LinHES/squid.png.license    |   2 +
 .../etc/calamares/branding/LinHES/stylesheet.qss   | 263 +++++++++++++++++++
 .../airootfs/etc/calamares/modules/finished.conf   |  47 ++++
 .../airootfs/etc/calamares/modules/initcpio.conf   |  26 ++
 .../airootfs/etc/calamares/modules/packages.conf   | 222 ++++++++++++++++
 .../airootfs/etc/calamares/modules/partition.conf  | 255 ++++++++++++++++++
 .../etc/calamares/modules/preservefiles.conf       |  67 +++++
 .../airootfs/etc/calamares/modules/removeuser.conf |  13 +
 .../etc/calamares/modules/shellprocess-before.conf |  78 ++++++
 .../etc/calamares/modules/shellprocess-final.conf  |  85 ++++++
 .../airootfs/etc/calamares/modules/unpackfs.conf   |  96 +++++++
 .../airootfs/etc/calamares/modules/users.conf      | 217 +++++++++++++++
 .../airootfs/etc/calamares/modules/welcome.conf    | 121 +++++++++
 .../cust_skel/airootfs/etc/calamares/settings.conf | 243 +++++++++++++++++
 .../cust_skel/airootfs/etc/lightdm/lightdm.conf    | 164 ++++++++++++
 .../LinHES9_iso/cust_skel/airootfs/etc/os-release  |  10 +
 .../LinHES9_iso/cust_skel/airootfs/etc/pacman.conf | 105 ++++++++
 .../etc/polkit-1/rules.d/49-nopasswd_global.rules  |   9 +
 .../airootfs/etc/sddm.conf.d/autologin.conf        |   3 +
 .../cust_skel/airootfs/etc/skel/.config/dolphinrc  |  26 ++
 .../airootfs/etc/skel/.config/kscreenlockerrc      |   6 +
 .../plasma-org.kde.plasma.desktop-appletsrc        | 120 +++++++++
 .../etc/skel/.local/share/dolphin/dolphinstaterc   |  14 +
 .../LinHES9_iso/cust_skel/airootfs/etc/sudoers     |  96 +++++++
 .../etc/systemd/system/display-manager.service     |   1 +
 .../cust_skel/airootfs/root/customize_airootfs.sh  |   8 +
 .../cust_skel/airootfs/usr/bin/calamares_polkit    |   6 +
 .../airootfs/usr/share/LinHES/calamares.desktop    | 252 ++++++++++++++++++
 .../loader/entries/01-archiso-x86_64-linux.conf    |   7 +
 .../entries/02-archiso-x86_64-speech-linux.conf    |   7 +
 .../cust_skel/efiboot/loader/loader.conf           |   2 +
 .../linhes-dev/LinHES9_iso/cust_skel/grub/grub.cfg |  46 ++++
 .../LinHES9_iso/cust_skel/packages.x86_64          | 158 +++++++++++
 .../linhes-dev/LinHES9_iso/cust_skel/pacman.conf   | 105 ++++++++
 .../linhes-dev/LinHES9_iso/cust_skel/profiledef.sh |  25 ++
 .../cust_skel/syslinux/archiso_head.cfg            |  28 ++
 .../cust_skel/syslinux/archiso_pxe-linux.cfg       |  32 +++
 .../LinHES9_iso/cust_skel/syslinux/archiso_pxe.cfg |   5 +
 .../cust_skel/syslinux/archiso_sys-linux.cfg       |  20 ++
 .../LinHES9_iso/cust_skel/syslinux/archiso_sys.cfg |   8 +
 .../cust_skel/syslinux/archiso_tail.cfg            |  35 +++
 .../LinHES9_iso/cust_skel/syslinux/splash.png      | Bin 0 -> 36027 bytes
 .../LinHES9_iso/cust_skel/syslinux/syslinux.cfg    |  11 +
 55 files changed, 3750 insertions(+)
 create mode 100644 linhes/linhes-dev/LinHES9_iso/.gitignore
 create mode 100755 linhes/linhes-dev/LinHES9_iso/build_iso.sh
 create mode 100644 linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/calamares/branding/LinHES/branding.desc
 create mode 100644 linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/calamares/branding/LinHES/lang/calamares-default_ar.ts
 create mode 100644 linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/calamares/branding/LinHES/lang/calamares-default_en.ts
 create mode 100644 linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/calamares/branding/LinHES/lang/calamares-default_eo.ts
 create mode 100644 linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/calamares/branding/LinHES/lang/calamares-default_fr.ts
 create mode 100644 linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/calamares/branding/LinHES/lang/calamares-default_nl.ts
 create mode 100644 linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/calamares/branding/LinHES/languages.png
 create mode 100644 linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/calamares/branding/LinHES/languages.png.license
 create mode 100644 linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/calamares/branding/LinHES/show.qml
 create mode 100644 linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/calamares/branding/LinHES/squid.png
 create mode 100644 linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/calamares/branding/LinHES/squid.png.license
 create mode 100644 linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/calamares/branding/LinHES/stylesheet.qss
 create mode 100644 linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/calamares/modules/finished.conf
 create mode 100644 linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/calamares/modules/initcpio.conf
 create mode 100644 linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/calamares/modules/packages.conf
 create mode 100644 linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/calamares/modules/partition.conf
 create mode 100644 linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/calamares/modules/preservefiles.conf
 create mode 100644 linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/calamares/modules/removeuser.conf
 create mode 100644 linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/calamares/modules/shellprocess-before.conf
 create mode 100644 linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/calamares/modules/shellprocess-final.conf
 create mode 100644 linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/calamares/modules/unpackfs.conf
 create mode 100644 linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/calamares/modules/users.conf
 create mode 100644 linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/calamares/modules/welcome.conf
 create mode 100644 linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/calamares/settings.conf
 create mode 100644 linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/lightdm/lightdm.conf
 create mode 100644 linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/os-release
 create mode 100644 linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/pacman.conf
 create mode 100644 linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/polkit-1/rules.d/49-nopasswd_global.rules
 create mode 100644 linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/sddm.conf.d/autologin.conf
 create mode 100644 linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/skel/.config/dolphinrc
 create mode 100644 linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/skel/.config/kscreenlockerrc
 create mode 100644 linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/skel/.config/plasma-org.kde.plasma.desktop-appletsrc
 create mode 100644 linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/skel/.local/share/dolphin/dolphinstaterc
 create mode 100644 linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/sudoers
 create mode 120000 linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/systemd/system/display-manager.service
 create mode 100755 linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/root/customize_airootfs.sh
 create mode 100755 linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/usr/bin/calamares_polkit
 create mode 100755 linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/usr/share/LinHES/calamares.desktop
 create mode 100644 linhes/linhes-dev/LinHES9_iso/cust_skel/efiboot/loader/entries/01-archiso-x86_64-linux.conf
 create mode 100644 linhes/linhes-dev/LinHES9_iso/cust_skel/efiboot/loader/entries/02-archiso-x86_64-speech-linux.conf
 create mode 100644 linhes/linhes-dev/LinHES9_iso/cust_skel/efiboot/loader/loader.conf
 create mode 100644 linhes/linhes-dev/LinHES9_iso/cust_skel/grub/grub.cfg
 create mode 100644 linhes/linhes-dev/LinHES9_iso/cust_skel/packages.x86_64
 create mode 100644 linhes/linhes-dev/LinHES9_iso/cust_skel/pacman.conf
 create mode 100644 linhes/linhes-dev/LinHES9_iso/cust_skel/profiledef.sh
 create mode 100644 linhes/linhes-dev/LinHES9_iso/cust_skel/syslinux/archiso_head.cfg
 create mode 100644 linhes/linhes-dev/LinHES9_iso/cust_skel/syslinux/archiso_pxe-linux.cfg
 create mode 100644 linhes/linhes-dev/LinHES9_iso/cust_skel/syslinux/archiso_pxe.cfg
 create mode 100644 linhes/linhes-dev/LinHES9_iso/cust_skel/syslinux/archiso_sys-linux.cfg
 create mode 100644 linhes/linhes-dev/LinHES9_iso/cust_skel/syslinux/archiso_sys.cfg
 create mode 100644 linhes/linhes-dev/LinHES9_iso/cust_skel/syslinux/archiso_tail.cfg
 create mode 100644 linhes/linhes-dev/LinHES9_iso/cust_skel/syslinux/splash.png
 create mode 100644 linhes/linhes-dev/LinHES9_iso/cust_skel/syslinux/syslinux.cfg

diff --git a/linhes/linhes-dev/LinHES9_iso/.gitignore b/linhes/linhes-dev/LinHES9_iso/.gitignore
new file mode 100644
index 0000000..ee2a1ba
--- /dev/null
+++ b/linhes/linhes-dev/LinHES9_iso/.gitignore
@@ -0,0 +1,3 @@
+arch_skel
+out
+work
diff --git a/linhes/linhes-dev/LinHES9_iso/build_iso.sh b/linhes/linhes-dev/LinHES9_iso/build_iso.sh
new file mode 100755
index 0000000..2db92cf
--- /dev/null
+++ b/linhes/linhes-dev/LinHES9_iso/build_iso.sh
@@ -0,0 +1,292 @@
+#!/bin/bash
+
+# Revision: 2022.06.15
+# (GNU/General Public License version 3.0)
+# by Cecil Watson for LinHES.
+# based on work by eznix (https://sourceforge.net/projects/ezarch/)
+
+# ----------------------------------------
+# Define Variables
+# ----------------------------------------
+
+LCLST="en_US"
+# Format is language_COUNTRY where language is lower case two letter code
+# and country is upper case two letter code, separated with an underscore
+
+KEYMP="us"
+# Use lower case two letter country code
+
+KEYMOD="pc105"
+# pc105 and pc104 are modern standards, all others need to be researched
+
+MYUSERNM="km"
+# use all lowercase letters only
+
+MYUSRPASSWD="[REDACTED]
+# Pick a password of your choice
+
+RTPASSWD="[REDACTED]
+# Pick a root password
+
+MYHOSTNM="linhes"
+# Pick a hostname for the machine
+
+# ----------------------------------------
+# Functions
+# ----------------------------------------
+
+# Test for root user
+rootuser () {
+  if [[ "$EUID" = 0 ]]; then
+    continue
+  else
+    echo "Please Run As Root or sudo"
+    sleep 2
+    exit
+  fi
+}
+
+# Display line error
+handlerror () {
+clear
+set -uo pipefail
+trap 's=$?; echo "$0: Error on line "$LINENO": $BASH_COMMAND"; exit $s' ERR
+}
+
+# Clean up working directories
+cleanup () {
+[[ -d ./arch_skel ]] && rm -r ./arch_skel
+[[ -d ./work ]] && rm -r ./work
+sleep 2
+}
+
+# Requirements and preparation
+_isInstalled() {
+    package="$1";
+    check="$(sudo pacman -Qs --color always "${package}" | grep "local" | grep "${package} ")";
+    if [ -n "${check}" ] ; then
+        echo 0; #'0' means 'true' in Bash
+        return; #true
+    fi;
+    echo 1; #'1' means 'false' in Bash
+    return; #false
+}
+
+prereqs() {
+
+    # The packages that are not installed will be added to this array.
+    toInstall=();
+
+    for pkg; do
+        # If the package IS installed, skip it.
+        if [[ $(_isInstalled "${pkg}") == 0 ]]; then
+            echo "${pkg} is already installed.";
+            continue;
+        fi;
+
+        #Otherwise, add it to the list of packages to install.
+        toInstall+=("${pkg}");
+    done;
+
+    # If no packages were added to the "${toInstall[@]}" array,
+    #     don't do anything and stop this function.
+    if [[ "${toInstall[@]}" == "" ]] ; then
+        echo "All packages are already installed.";
+        return;
+    fi;
+
+    # Otherwise, install all the packages that have been added to the "${toInstall[@]}" array.
+    printf "Packages not installed:\n%s\n" "${toInstall[@]}";
+    sudo pacman -S --needed --noconfirm "${toInstall[@]}";
+}
+
+# Copy Arch profile to working directory
+cp_releng () {
+cp -r /usr/share/archiso/configs/releng/ ./arch_skel
+rm -r ./arch_skel/efiboot
+rm -r ./arch_skel/syslinux
+}
+
+# Copy cust_repo to opt
+cp_repo () {
+if [ -d "./cust_repo" ]
+then
+    cp -r ./cust_repo /opt/repo
+fi
+}
+
+# Remove ezrepo from opt
+rm_repo () {
+if [ -d "/opt/repo" ]
+then
+    rm -r /opt/repo
+fi
+}
+
+# Delete automatic login
+nalogin () {
+rm -r ./arch_skel/airootfs/etc/systemd/system/getty@tty1.service.d
+}
+
+# Remove cloud-init, hyper-v, qemu-guest, vmtoolsd, sshd, & iwd services
+rmunitsd () {
+rm ./arch_skel/airootfs/etc/systemd/system/multi-user.target.wants/hv_fcopy_daemon.service
+rm ./arch_skel/airootfs/etc/systemd/system/multi-user.target.wants/hv_kvp_daemon.service
+rm ./arch_skel/airootfs/etc/systemd/system/multi-user.target.wants/hv_vss_daemon.service
+rm ./arch_skel/airootfs/etc/systemd/system/multi-user.target.wants/qemu-guest-agent.service
+rm ./arch_skel/airootfs/etc/systemd/system/multi-user.target.wants/vmtoolsd.service
+rm ./arch_skel/airootfs/etc/systemd/system/multi-user.target.wants/vmware-vmblock-fuse.service
+rm ./arch_skel/airootfs/etc/systemd/system/multi-user.target.wants/sshd.service
+rm ./arch_skel/airootfs/etc/systemd/system/multi-user.target.wants/iwd.service
+rm -r ./arch_skel/airootfs/etc/systemd/system/cloud-init.target.wants
+}
+
+# Add Bluetooth, cups, haveged, NetworkManager, & sddm systemd links
+addnmlinks () {
+mkdir -p ./arch_skel/airootfs/etc/systemd/system/network-online.target.wants
+mkdir -p ./arch_skel/airootfs/etc/systemd/system/multi-user.target.wants
+mkdir -p ./arch_skel/airootfs/etc/systemd/system/bluetooth.target.wants
+mkdir -p ./arch_skel/airootfs/etc/systemd/system/printer.target.wants
+mkdir -p ./arch_skel/airootfs/etc/systemd/system/sockets.target.wants
+mkdir -p ./arch_skel/airootfs/etc/systemd/system/timers.target.wants
+mkdir -p ./arch_skel/airootfs/etc/systemd/system/sysinit.target.wants
+ln -sf /usr/lib/systemd/system/NetworkManager-wait-online.service ./arch_skel/airootfs/etc/systemd/system/network-online.target.wants/NetworkManager-wait-online.service
+ln -sf /usr/lib/systemd/system/NetworkManager-dispatcher.service ./arch_skel/airootfs/etc/systemd/system/dbus-org.freedesktop.nm-dispatcher.service
+ln -sf /usr/lib/systemd/system/NetworkManager.service ./arch_skel/airootfs/etc/systemd/system/multi-user.target.wants/NetworkManager.service
+ln -sf /usr/lib/systemd/system/bluetooth.service ./arch_skel/airootfs/etc/systemd/system/bluetooth.target.wants/bluetooth.service
+ln -sf /usr/lib/systemd/system/haveged.service ./arch_skel/airootfs/etc/systemd/system/sysinit.target.wants/haveged.service
+ln -sf /usr/lib/systemd/system/cups.service ./arch_skel/airootfs/etc/systemd/system/printer.target.wants/cups.service
+ln -sf /usr/lib/systemd/system/cups.socket ./arch_skel/airootfs/etc/systemd/system/sockets.target.wants/cups.socket
+ln -sf /usr/lib/systemd/system/cups.path ./arch_skel/airootfs/etc/systemd/system/multi-user.target.wants/cups.path
+ln -sf /usr/lib/systemd/system/bluetooth.service ./arch_skel/airootfs/etc/systemd/system/dbus-org.bluez.service
+ln -sf /usr/lib/systemd/system/lightdm.service ./arch_skel/airootfs/etc/systemd/system/display-manager.service
+}
+
+# Copy files to customize the ISO
+cpmyfiles () {
+cp ./cust_skel/packages.x86_64 ./arch_skel/
+cp ./cust_skel/pacman.conf ./arch_skel/
+cp ./cust_skel/profiledef.sh ./arch_skel/
+cp -r ./cust_skel/grub ./arch_skel/
+cp -r ./cust_skel/efiboot ./arch_skel/
+cp -r ./cust_skel/syslinux ./arch_skel/
+cp -r ./cust_skel/airootfs ./arch_skel/
+}
+
+# Set hostname
+sethostname () {
+echo "${MYHOSTNM}" > ./arch_skel/airootfs/etc/hostname
+}
+
+# Create passwd file
+# Changed user to 1000 from 1010
+crtpasswd () {
+echo "root:x:0:0:root:/root:/usr/bin/bash
+"${MYUSERNM}":x:1000:1000::/home/"${MYUSERNM}":/bin/bash" > ./arch_skel/airootfs/etc/passwd
+}
+
+# Create group file
+# Changed user to 1000 from 1010
+crtgroup () {
+echo "root:x:0:root
+sys:x:3:"${MYUSERNM}"
+adm:x:4:"${MYUSERNM}"
+wheel:x:10:"${MYUSERNM}"
+log:x:19:"${MYUSERNM}"
+network:x:90:"${MYUSERNM}"
+floppy:x:94:"${MYUSERNM}"
+scanner:x:96:"${MYUSERNM}"
+power:x:98:"${MYUSERNM}"
+rfkill:x:850:"${MYUSERNM}"
+users:x:985:"${MYUSERNM}"
+video:x:860:"${MYUSERNM}"
+storage:x:870:"${MYUSERNM}"
+optical:x:880:"${MYUSERNM}"
+lp:x:840:"${MYUSERNM}"
+audio:x:890:"${MYUSERNM}"
+autologin:x:965:"${MYUSERNM}"
+"${MYUSERNM}":x:1000:" > ./arch_skel/airootfs/etc/group
+}
+
+# Create shadow file
+crtshadow () {
+usr_hash=$(openssl passwd -6 "${MYUSRPASSWD}")
+root_hash=$(openssl passwd -6 "${RTPASSWD}")
+echo "root:"${root_hash}":14871::::::
+"${MYUSERNM}":"${usr_hash}":14871::::::" > ./arch_skel/airootfs/etc/shadow
+}
+
+# create gshadow file
+crtgshadow () {
+echo "root:!*::root
+"${MYUSERNM}":!*::" > ./arch_skel/airootfs/etc/gshadow
+}
+
+# Set the keyboard layout
+setkeylayout () {
+echo "KEYMAP="${KEYMP}"" > ./arch_skel/airootfs/etc/vconsole.conf
+}
+
+# Create 00-keyboard.conf file
+crtkeyboard () {
+mkdir -p ./arch_skel/airootfs/etc/X11/xorg.conf.d
+echo "Section \"InputClass\"
+        Identifier \"system-keyboard\"
+        MatchIsKeyboard \"on\"
+        Option \"XkbLayout\" \""${KEYMP}"\"
+        Option \"XkbModel\" \""${KEYMOD}"\"
+EndSection" > ./arch_skel/airootfs/etc/X11/xorg.conf.d/00-keyboard.conf
+}
+
+# Fix 40-locale-gen.hook and create locale.conf
+crtlocalec () {
+sed -i "s/en_US/"${LCLST}"/g" ./arch_skel/airootfs/etc/pacman.d/hooks/40-locale-gen.hook
+echo "LANG="${LCLST}".UTF-8" > ./arch_skel/airootfs/etc/locale.conf
+}
+
+# Start mkarchiso
+runmkarchiso () {
+mkarchiso -v -w ./work -o ./out ./arch_skel
+}
+
+# ----------------------------------------
+# Run Functions
+# ----------------------------------------
+
+rootuser
+handlerror
+prereqs "archlinux-keyring" "archiso" "mkinitcpio-archiso"
+cleanup
+cp_releng
+addnmlinks
+cp_repo
+nalogin
+rmunitsd
+cpmyfiles
+sethostname
+crtpasswd
+crtgroup
+crtshadow
+crtgshadow
+setkeylayout
+crtkeyboard
+crtlocalec
+runmkarchiso
+rm_repo
+
+
+# Disclaimer:
+#
+# THIS SOFTWARE IS PROVIDED BY EZNIX “AS IS” AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL EZNIX BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+# BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+# POSSIBILITY OF SUCH DAMAGE.
+#
+# END
+#
diff --git a/linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/calamares/branding/LinHES/branding.desc b/linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/calamares/branding/LinHES/branding.desc
new file mode 100644
index 0000000..e0393af
--- /dev/null
+++ b/linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/calamares/branding/LinHES/branding.desc
@@ -0,0 +1,227 @@
+# SPDX-FileCopyrightText: no
+# SPDX-License-Identifier: CC0-1.0
+#
+# Product branding information. This influences some global
+# user-visible aspects of Calamares, such as the product
+# name, window behavior, and the slideshow during installation.
+#
+# Additional styling can be done using the stylesheet.qss
+# file, also in the branding directory.
+---
+componentName:  LinHES
+
+
+### WELCOME / OVERALL WORDING
+#
+# These settings affect some overall phrasing and looks,
+# which are most visible in the welcome page.
+
+# This selects between different welcome texts. When false, uses
+# the traditional "Welcome to the %1 installer.", and when true,
+# uses "Welcome to the Calamares installer for %1." This allows
+# to distinguish this installer from other installers for the
+# same distribution.
+welcomeStyleCalamares:   false
+
+# Should the welcome image (productWelcome, below) be scaled
+# up beyond its natural size? If false, the image does not grow
+# with the window but remains the same size throughout (this
+# may have surprising effects on HiDPI monitors).
+welcomeExpandingLogo:   true
+
+### WINDOW CONFIGURATION
+#
+# The settings here affect the placement of the Calamares
+# window through hints to the window manager and initial
+# sizing of the Calamares window.
+
+# Size and expansion policy for Calamares.
+#  - "normal" or unset, expand as needed, use *windowSize*
+#  - "fullscreen", start as large as possible, ignore *windowSize*
+#  - "noexpand", don't expand automatically, use *windowSize*
+windowExpanding:    normal
+
+# Size of Calamares window, expressed as w,h. Both w and h
+# may be either pixels (suffix px) or font-units (suffix em).
+#   e.g.    "800px,600px"
+#           "60em,480px"
+# This setting is ignored if "fullscreen" is selected for
+# *windowExpanding*, above. If not set, use constants defined
+# in CalamaresUtilsGui, 800x520.
+windowSize: 1024px,735px
+
+# Placement of Calamares window. Either "center" or "free".
+# Whether "center" actually works does depend on the window
+# manager in use (and only makes sense if you're not using
+# *windowExpanding* set to "fullscreen").
+windowPlacement: center
+
+### PANELS CONFIGURATION
+#
+# Calamares has a main content area, and two panels (navigation
+# and progress / sidebar). The panels can be controlled individually,
+# or switched off. If both panels are switched off, the layout of
+# the main content area loses its margins, on the assumption that
+# you're doing something special.
+
+# Kind of sidebar (panel on the left, showing progress).
+#  - "widget" or unset, use traditional sidebar (logo, items)
+#  - "none", hide it entirely
+#  - "qml", use calamares-sidebar.qml from branding folder
+# In addition, you **may** specify a side, separated by a comma,
+# from the kind. Valid sides are:
+#  - "left" (if not specified, uses this)
+#  - "right"
+#  - "top"
+#  - "bottom"
+# For instance, "widget,right" is valid; so is "qml", which defaults
+# to putting the sidebar on the left. Also valid is "qml,top".
+# While "widget,top" is valid, the widgets code is **not** flexible
+# and results will be terrible.
+sidebar: widget
+
+# Kind of navigation (button panel on the bottom).
+#  - "widget" or unset, use traditional navigation
+#  - "none", hide it entirely
+#  - "qml", use calamares-navigation.qml from branding folder
+# In addition, you **may** specify a side, separated by a comma,
+# from the kind. The same sides are valid as for *sidebar*,
+# except the default is *bottom*.
+navigation: widget
+
+
+### STRINGS, IMAGES AND COLORS
+#
+# This section contains the "branding proper" of names
+# and images, rather than global-look settings.
+
+# These are strings shown to the user in the user interface.
+# There is no provision for translating them -- since they
+# are names, the string is included as-is.
+#
+# The four Url strings are the Urls used by the buttons in
+# the welcome screen, and are not shown to the user. Clicking
+# on the "Support" button, for instance, opens the link supportUrl.
+# If a Url is empty, the corresponding button is not shown.
+#
+# bootloaderEntryName is how this installation / distro is named
+# in the boot loader (e.g. in the GRUB menu).
+#
+# These strings support substitution from /etc/os-release
+# if KDE Frameworks 5.58 are available at build-time. When
+# enabled, @{var-name} is replaced by the equivalent value
+# from os-release. All the supported var-names are in all-caps,
+# and are listed on the FreeDesktop.org site,
+#       https://www.freedesktop.org/software/systemd/man/os-release.html
+# Note that ANSI_COLOR and CPE_NAME don't make sense here, and
+# are not supported (the rest are). Remember to quote the string
+# if it contains substitutions, or you'll get YAML exceptions.
+#
+# The *Url* entries are used on the welcome page, and they
+# are visible as buttons there if the corresponding *show* keys
+# are set to "true" (they can also be overridden).
+strings:
+    productName:         LinHES
+    shortProductName:    LinHES
+    version:             9alpha1
+    shortVersion:        9alpha1
+    versionedName:       LinHES
+    shortVersionedName:  LinHES
+    bootloaderEntryName: LinHES9
+
+# These images are loaded from the branding module directory.
+#
+# productBanner is an optional image, which if present, will be shown
+#       on the welcome page of the application, above the welcome text.
+#       It is intended to have a width much greater than height.
+#       It is displayed at 64px height (also on HiDPI).
+#       Recommended size is 64px tall, and up to 460px wide.
+# productIcon is used as the window icon, and will (usually) be used
+#       by the window manager to represent the application. This image
+#       should be square, and may be displayed by the window manager
+#       as small as 16x16 (but possibly larger).
+# productLogo is used as the logo at the top of the left-hand column
+#       which shows the steps to be taken. The image should be square,
+#       and is displayed at 80x80 pixels (also on HiDPI).
+# productWallpaper is an optional image, which if present, will replace
+#       the normal solid background on every page of the application.
+#       It can be any size and proportion,
+#       and will be tiled to fit the entire window.
+#       For a non-tiled wallpaper, the size should be the same as
+#       the overall window, see *windowSize* above (800x520).
+# productWelcome is shown on the welcome page of the application in
+#       the middle of the window, below the welcome text. It can be
+#       any size and proportion, and will be scaled to fit inside
+#       the window. Use `welcomeExpandingLogo` to make it non-scaled.
+#       Recommended size is 320x150.
+#
+# These filenames can also use substitutions from os-release (see above).
+images:
+    # productBanner:       "banner.png"
+    productIcon:         "squid.png"
+    productLogo:         "squid.png"
+    # productWallpaper:    "wallpaper.png"
+    # productWelcome:      ""
+
+# Colors for text and background components.
+#
+#  - sidebarBackground is the background of the sidebar
+#  - sidebarText is the (foreground) text color
+#  - sidebarTextHighlight sets the background of the selected (current) step.
+#    Optional, and defaults to the application palette.
+#  - sidebarSelect is the text color of the selected step.
+#
+# These colors can **also** be set through the stylesheet, if the
+# branding component also ships a stylesheet.qss. Then they are
+# the corresponding CSS attributes of #sidebarApp.
+style:
+   sidebarBackground:    "#292F34"
+   sidebarText:          "#FFFFFF"
+   sidebarTextSelect:    "#292F34"
+   sidebarTextHighlight: "#D35400"
+
+### SLIDESHOW
+#
+# The slideshow is displayed during execution steps (e.g. when the
+# installer is actually writing to disk and doing other slow things).
+
+# The slideshow can be a QML file (recommended) which can display
+# arbitrary things -- text, images, animations, or even play a game --
+# during the execution step. The QML **is** abruptly stopped when the
+# execution step is done, though, so maybe a game isn't a great idea.
+#
+# The slideshow can also be a sequence of images (not recommended unless
+# you don't want QML at all in your Calamares). The images are displayed
+# at a rate of 1 every 2 seconds during the execution step.
+#
+# To configure a QML file, list a single filename:
+#   slideshow:               "show.qml"
+# To configure images, like the filenames (here, as an inline list):
+#   slideshow: [ "/etc/calamares/slideshow/0.png", "/etc/logo.png" ]
+slideshow:               "show.qml"
+
+# There are two available APIs for a QML slideshow:
+#  - 1 (the default) loads the entire slideshow when the installation-
+#      slideshow page is shown and starts the QML then. The QML
+#      is never stopped (after installation is done, times etc.
+#      continue to fire).
+#  - 2 loads the slideshow on startup and calls onActivate() and
+#      onLeave() in the root object. After the installation is done,
+#      the show is stopped (first by calling onLeave(), then destroying
+#      the QML components).
+#
+# An image slideshow does not need to have the API defined.
+slideshowAPI: 2
+
+
+# These options are to customize online uploading of logs to pastebins:
+#  - type : Defines the kind of pastebin service to be used. Currently
+#           it accepts two values:
+#           - none    :    disables the pastebin functionality
+#           - fiche   :    use fiche pastebin server
+#  - url  : Defines the address of pastebin service to be used.
+#           Takes string as input. Important bits are the host and port,
+#           the scheme is not used.
+uploadServer :
+    type :    "fiche"
+    url :     "http://termbin.com:9999"
diff --git a/linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/calamares/branding/LinHES/lang/calamares-default_ar.ts b/linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/calamares/branding/LinHES/lang/calamares-default_ar.ts
new file mode 100644
index 0000000..3c4fe09
--- /dev/null
+++ b/linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/calamares/branding/LinHES/lang/calamares-default_ar.ts
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="ar">
+<context>
+    <name>show</name>
+    <message>
+        <location filename="../show.qml" line="64"/>
+        <source>This is a second Slide element.</source>
+        <translation>عرض الثاني</translation>
+    </message>
+    <message>
+        <location filename="../show.qml" line="68"/>
+        <source>This is a third Slide element.</source>
+        <translation>عرض الثالث</translation>
+    </message>
+</context>
+</TS>
diff --git a/linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/calamares/branding/LinHES/lang/calamares-default_en.ts b/linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/calamares/branding/LinHES/lang/calamares-default_en.ts
new file mode 100644
index 0000000..b02dbd5
--- /dev/null
+++ b/linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/calamares/branding/LinHES/lang/calamares-default_en.ts
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="en">
+<context>
+    <name>show</name>
+    <message>
+        <location filename="../show.qml" line="64"/>
+        <source>This is a second Slide element.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../show.qml" line="68"/>
+        <source>This is a third Slide element.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+</TS>
diff --git a/linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/calamares/branding/LinHES/lang/calamares-default_eo.ts b/linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/calamares/branding/LinHES/lang/calamares-default_eo.ts
new file mode 100644
index 0000000..7d1ef4e
--- /dev/null
+++ b/linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/calamares/branding/LinHES/lang/calamares-default_eo.ts
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="eo">
+<context>
+    <name>show</name>
+    <message>
+        <location filename="../show.qml" line="64"/>
+        <source>This is a second Slide element.</source>
+        <translation>Ĉi tio estas la dua gliteja.</translation>
+    </message>
+    <message>
+        <location filename="../show.qml" line="68"/>
+        <source>This is a third Slide element.</source>
+        <translation>Ĉi tio estas la tria gliteja.</translation>
+    </message>
+</context>
+</TS>
diff --git a/linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/calamares/branding/LinHES/lang/calamares-default_fr.ts b/linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/calamares/branding/LinHES/lang/calamares-default_fr.ts
new file mode 100644
index 0000000..ec5e041
--- /dev/null
+++ b/linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/calamares/branding/LinHES/lang/calamares-default_fr.ts
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="fr">
+<context>
+    <name>show</name>
+    <message>
+        <location filename="../show.qml" line="64"/>
+        <source>This is a second Slide element.</source>
+        <translation>Ceci est la deuxieme affiche.</translation>
+    </message>
+    <message>
+        <location filename="../show.qml" line="68"/>
+        <source>This is a third Slide element.</source>
+        <translation>La troisième affice ce trouve ici.</translation>
+    </message>
+</context>
+</TS>
diff --git a/linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/calamares/branding/LinHES/lang/calamares-default_nl.ts b/linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/calamares/branding/LinHES/lang/calamares-default_nl.ts
new file mode 100644
index 0000000..19fd583
--- /dev/null
+++ b/linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/calamares/branding/LinHES/lang/calamares-default_nl.ts
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="nl">
+<context>
+    <name>show</name>
+    <message>
+        <location filename="../show.qml" line="64"/>
+        <source>This is a second Slide element.</source>
+        <translation>Dit is het tweede Dia element.</translation>
+    </message>
+    <message>
+        <location filename="../show.qml" line="68"/>
+        <source>This is a third Slide element.</source>
+        <translation>Dit is het derde Dia element.</translation>
+    </message>
+</context>
+</TS>
diff --git a/linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/calamares/branding/LinHES/languages.png b/linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/calamares/branding/LinHES/languages.png
new file mode 100644
index 0000000..5331652
Binary files /dev/null and b/linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/calamares/branding/LinHES/languages.png differ
diff --git a/linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/calamares/branding/LinHES/languages.png.license b/linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/calamares/branding/LinHES/languages.png.license
new file mode 100644
index 0000000..ea82645
--- /dev/null
+++ b/linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/calamares/branding/LinHES/languages.png.license
@@ -0,0 +1,2 @@
+SPDX-FileCopyrightText: 2015 Teo Mrnjavac <teo@kde.org>
+SPDX-License-Identifier: GPL-3.0-or-later
diff --git a/linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/calamares/branding/LinHES/show.qml b/linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/calamares/branding/LinHES/show.qml
new file mode 100644
index 0000000..b0632dc
--- /dev/null
+++ b/linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/calamares/branding/LinHES/show.qml
@@ -0,0 +1,97 @@
+/* === This file is part of Calamares - <https://calamares.io> ===
+ *
+ *   SPDX-FileCopyrightText: 2015 Teo Mrnjavac <teo@kde.org>
+ *   SPDX-FileCopyrightText: 2018 Adriaan de Groot <groot@kde.org>
+ *   SPDX-License-Identifier: GPL-3.0-or-later
+ *
+ *   Calamares is Free Software: see the License-Identifier above.
+ *
+ */
+
+import QtQuick 2.0;
+import calamares.slideshow 1.0;
+
+Presentation
+{
+    id: presentation
+
+    function nextSlide() {
+        console.log("QML Component (default slideshow) Next slide");
+        presentation.goToNextSlide();
+    }
+
+    Timer {
+        id: advanceTimer
+        interval: 5000
+        running: presentation.activatedInCalamares
+        repeat: true
+        onTriggered: nextSlide()
+    }
+
+    Slide {
+
+    anchors.fill: parent
+    anchors.verticalCenterOffset: 0
+
+    Image {
+        id: background1
+        source: ""
+        width: parent.width; height: parent.height
+        horizontalAlignment: Image.AlignCenter
+        verticalAlignment: Image.AlignTop
+        fillMode: Image.Stretch
+        anchors.fill: parent
+    	}
+
+    Text {
+        anchors.horizontalCenter: background.horizontalCenter
+        anchors.top: background.bottom
+        text: "Welcome to"
+        wrapMode: Text.WordWrap
+        width: presentation.width
+        horizontalAlignment: Text.Center
+    	}
+    }
+
+    Slide {
+
+    anchors.fill: parent
+    anchors.verticalCenterOffset: 0
+
+    Image {
+        id: background2
+        source: ""
+        width: parent.width; height: parent.height
+        horizontalAlignment: Image.AlignCenter
+        verticalAlignment: Image.AlignTop
+        fillMode: Image.Stretch
+        anchors.fill: parent
+    	}
+
+    Text {
+        anchors.horizontalCenter: background.horizontalCenter
+        anchors.top: background.bottom
+        text: "LinHES: The Linux Entertainment System"
+        wrapMode: Text.WordWrap
+        width: presentation.width
+        horizontalAlignment: Text.Center
+    	}
+    }
+
+
+    // When this slideshow is loaded as a V1 slideshow, only
+    // activatedInCalamares is set, which starts the timer (see above).
+    //
+    // In V2, also the onActivate() and onLeave() methods are called.
+    // These example functions log a message (and re-start the slides
+    // from the first).
+    function onActivate() {
+        console.log("QML Component (default slideshow) activated");
+        presentation.currentSlide = 0;
+    }
+
+    function onLeave() {
+        console.log("QML Component (default slideshow) deactivated");
+    }
+
+}
diff --git a/linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/calamares/branding/LinHES/squid.png b/linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/calamares/branding/LinHES/squid.png
new file mode 100644
index 0000000..452e445
Binary files /dev/null and b/linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/calamares/branding/LinHES/squid.png differ
diff --git a/linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/calamares/branding/LinHES/squid.png.license b/linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/calamares/branding/LinHES/squid.png.license
new file mode 100644
index 0000000..cc08e1f
--- /dev/null
+++ b/linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/calamares/branding/LinHES/squid.png.license
@@ -0,0 +1,2 @@
+SPDX-FileCopyrightText: 2014 Teo Mrnjavac <teo@kde.org>
+SPDX-License-Identifier: GPL-3.0-or-later
diff --git a/linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/calamares/branding/LinHES/stylesheet.qss b/linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/calamares/branding/LinHES/stylesheet.qss
new file mode 100644
index 0000000..d3d0c2d
--- /dev/null
+++ b/linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/calamares/branding/LinHES/stylesheet.qss
@@ -0,0 +1,263 @@
+/*
+
+A branding component can ship a stylesheet (like this one)
+which is applied to parts of the Calamares user-interface.
+In principle, all parts can be styled through CSS.
+Missing parts should be filed as issues.
+
+The IDs are based on the object names in the C++ code.
+You can use the Debug Dialog to find out object names:
+  - Open the debug dialog
+  - Choose tab *Tools*
+  - Click *Widget Tree* button
+The list of object names is printed in the log.
+
+Documentation for styling Qt Widgets through a stylesheet
+can be found at
+    https://doc.qt.io/qt-5/stylesheet-examples.html
+    https://doc.qt.io/qt-5/stylesheet-reference.html
+In Calamares, styling widget classes is supported (e.g.
+using `QComboBox` as a selector).
+
+This example stylesheet has all the actual styling commented out.
+The examples are not exhaustive.
+
+*/
+
+
+/* ########## MAIN APPLICATION WINDOW ########## */
+
+#mainApp {
+}
+
+#mainText{
+	font : bold 16px;
+}
+
+#sidebarApp {
+
+}
+
+#logoApp {
+}
+
+#sidebarMenuApp {
+	padding: 3px;
+	background-color: #292F34;
+}
+
+QWidget {
+	font: 16px;
+}
+
+QTextEdit, QListView {
+}
+QDialogButtonBox {
+}
+QAbstractSpinBox {
+}
+QListWidget::item:alternate {
+}
+
+
+#debugButton {
+	font: bold 8px;
+	color: #FFFFFF;
+}
+
+
+/* ########## TOOLTIP ########## */
+
+
+
+QPushButton {
+    font : 16px;
+}
+
+QDialogButtonBox {
+	dialogbuttonbox-buttons-have-icons: 0;
+}
+
+
+/* ########## QLIST VIEW ########## */
+
+QListView {
+		font: 16px;
+}
+
+
+/* ########## QLINE EDIT ########## */
+
+QLineEdit#LE_TestKeyboard {
+	font: 16px;
+}
+
+QLineEdit#m_passphraseLineEdit, QLineEdit#vgName,
+QLineEdit#m_confirmLineEdit {
+	font: 16px;
+}
+
+QLineEdit#textBoxUserVerifiedPassword, QLineEdit#textBoxVerifiedRootPassword {
+	font: 16px;
+}
+
+QLineEdit#textBoxFullName, QLineEdit#textBoxLoginName, QLineEdit#textBoxHostName,
+QLineEdit#textBoxUserPassword, QLineEdit#textBoxRootPassword {
+	font: 16px;
+}
+
+#textBoxFullName, #textBoxLoginName, #textBoxHostName, #textBoxUserPassword,
+#textBoxRootPassword, #textBoxAutoLogin, #vgName {
+	font: 16px;
+}
+
+#textBoxUserVerifiedPassword, #textBoxVerifiedRootPassword,
+#LE_TestKeyboard, #m_confirmLineEdit, #m_passphraseLineEdit {
+	font: 16px;
+}
+
+/* ##########PARTITION ########## */
+
+#partResizerWidget {
+	font: 16px;
+}
+
+/* ########## PAGE_USERSETUP ########## */
+
+ #labelWhatIsYourName {
+	font: 16px;
+}
+ #textBoxFullName {
+	font: 16px;
+}
+ #labelFullName {
+	font: 16px;
+}
+ #labelFullNameError {
+	font: 16px;
+}
+ #username_label_2 {
+	font: 16px;
+}
+ #textBoxLoginName {
+	font: 16px;
+}
+ #labelUsername {
+	font: 16px;
+}
+ #labelUsernameError {
+	font: 16px;
+}
+ #hostname_label_2 {
+	font: 16px;
+}
+ #textBoxHostName {
+	font: 16px;
+}
+ #labelHostname {
+	font: 16px;
+}
+ #labelHostnameError {
+	font: 16px;
+}
+ #password_label_2 {
+	font: 16px;
+}
+ #textBoxUserPassword {
+	font: 16px;
+}
+ #textBoxUserVerifiedPassword {
+	font: 16px;
+}
+ #labelUserPassword {
+	font: 16px;
+}
+ #labelUserPasswordError {
+	font: 16px;
+}
+ #checkBoxRequireStrongPassword {
+	font: 16px;
+}
+ #checkBoxDoAutoLogin {
+	font: 16px;
+}
+ #checkBoxReusePassword {
+	font: 16px;
+}
+ #labelChooseRootPassword {
+	font: 16px;
+}
+ #textBoxRootPassword {
+	font: 16px;
+}
+ #textBoxVerifiedRootPassword {
+	font: 16px;
+}
+ #labelRootPassword {
+	font: 16px;
+}
+ #labelRootPasswordError {
+	font: 16px;
+}
+
+/* ########## COMBO BOX ########## */
+
+QComboBox {
+	font: 16px;
+}
+
+#mountPointComboBox::drop-down {
+	font: 16px;
+}
+
+/* ########## SPIN BOX ########## */
+
+QSpinBox {
+	font: 16px;
+}
+
+QLineEdit {
+	font: 16px;
+}
+
+/* ########## TREE VIEW ########## */
+
+QTreeView {
+	font: 16px;
+	show-decoration-selected: 0;
+}
+
+QTreeView::item {
+	padding: 2px;
+}
+
+QTreeView::branch:has-siblings:!adjoins-item {
+}
+QTreeView::branch:has-siblings:adjoins-item {
+}
+QTreeView::branch:!has-children:!has-siblings:adjoins-item {
+}
+QTreeView::branch:has-children:!has-siblings:closed,
+QTreeView::branch:closed:has-children:has-siblings {
+}
+QTreeView::branch:open:has-children:!has-siblings,
+QTreeView::branch:open:has-children:has-siblings  {
+}
+
+/* ########## CHECK BOX ########## */
+
+QCheckBox {
+}
+QCheckBox::indicator:unchecked {
+}
+QCheckBox::indicator:checked {
+}
+QItemSelectionModel::Select {
+}
+
+/* ########## HEADER VIEW ########## */
+
+QHeaderView::section {
+  font : 16px;
+}
+
diff --git a/linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/calamares/modules/finished.conf b/linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/calamares/modules/finished.conf
new file mode 100644
index 0000000..b0647fe
--- /dev/null
+++ b/linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/calamares/modules/finished.conf
@@ -0,0 +1,47 @@
+# SPDX-FileCopyrightText: no
+# SPDX-License-Identifier: CC0-1.0
+#
+# Configuration for the "finished" page, which is usually shown only at
+# the end of the installation (successful or not).
+---
+# DEPRECATED
+#
+# The finished page can hold a "restart system now" checkbox.
+# If this is false, no checkbox is shown and the system is not restarted
+# when Calamares exits.
+# restartNowEnabled: true
+
+# DEPRECATED
+#
+# Initial state of the checkbox "restart now". Only relevant when the
+# checkbox is shown by restartNowEnabled.
+# restartNowChecked: false
+
+# Behavior of the "restart system now" button.
+#
+# There are four usable values:
+#   - never
+#       Does not show the button and does not restart.
+#       This matches the old behavior with restartNowEnabled=false.
+#   - user-unchecked
+#       Shows the button, defaults to unchecked, restarts if it is checked.
+#       This matches the old behavior with restartNowEnabled=true and restartNowChecked=false.
+#   - user-checked
+#       Shows the button, defaults to checked, restarts if it is checked.
+#       This matches the old behavior with restartNowEnabled=true and restartNowChecked=true.
+#   - always
+#       Shows the button, checked, but the user cannot change it.
+#       This is new behavior.
+#
+# The three combinations of legacy values are still supported.
+restartNowMode: user-checked
+
+# If the checkbox is shown, and the checkbox is checked, then when
+# Calamares exits from the finished-page it will run this command.
+# If not set, falls back to "shutdown -r now".
+restartNowCommand: "systemctl -i reboot"
+
+# When the last page is (successfully) reached, send a DBus notification
+# to the desktop that the installation is done. This works only if the
+# user as whom Calamares is run, can reach the regular desktop session bus.
+notifyOnFinished: false
diff --git a/linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/calamares/modules/initcpio.conf b/linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/calamares/modules/initcpio.conf
new file mode 100644
index 0000000..d2a1268
--- /dev/null
+++ b/linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/calamares/modules/initcpio.conf
@@ -0,0 +1,26 @@
+# SPDX-FileCopyrightText: no
+# SPDX-License-Identifier: CC0-1.0
+#
+# Run mkinitcpio(8) with the given preset value
+---
+# This key defines the kernel to be loaded.
+# It can have the following values:
+#  - the name of a single mkinitcpio preset
+#  - empty or unset
+#  - the literal string "all"
+#
+# If kernel is set to "all" or empty/unset then mkinitpio is called for all
+# kernels.  Otherwise it is called with a single preset with the value
+# contained in kernel.
+#
+kernel: linux
+
+# Set this to true to turn off mitigations for lax file
+# permissions on initramfs (which, in turn, can compromise
+# your LUKS encryption keys, CVS-2019-13179).
+#
+# If your initramfs are stored in the EFI partition or another non-POSIX
+# filesystem, this has no effect as the file permissions cannot be changed.
+# In this case, ensure the partition is mounted securely.
+#
+be_unsafe: false
diff --git a/linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/calamares/modules/packages.conf b/linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/calamares/modules/packages.conf
new file mode 100644
index 0000000..9fa3b31
--- /dev/null
+++ b/linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/calamares/modules/packages.conf
@@ -0,0 +1,222 @@
+# SPDX-FileCopyrightText: no
+# SPDX-License-Identifier: CC0-1.0
+#
+# The configuration for the package manager starts with the
+# *backend* key, which picks one of the backends to use.
+# In `main.py` there is a base class `PackageManager`.
+# Implementations must subclass that and set a (class-level)
+# property *backend* to the name of the backend (e.g. "dummy").
+# That property is used to match against the *backend* key here.
+#
+# You will have to add such a class for your package manager.
+# It is fairly simple Python code. The API is described in the
+# abstract methods in class `PackageManager`. Mostly, the only
+# trick is to figure out the correct commands to use, and in particular,
+# whether additional switches are required or not. Some package managers
+# have more installer-friendly defaults than others, e.g., DNF requires
+# passing --disablerepo=* -C to allow removing packages without Internet
+# connectivity, and it also returns an error exit code if the package did
+# not exist to begin with.
+---
+#
+# Which package manager to use, options are:
+#  - apk         - Alpine Linux package manager
+#  - apt         - APT frontend for DEB and RPM
+#  - dnf         - DNF, the new RPM frontend
+#  - entropy     - Sabayon package manager (is being deprecated)
+#  - luet        - Sabayon package manager (next-gen)
+#  - packagekit  - PackageKit CLI tool
+#  - pacman      - Pacman
+#  - pamac       - Manjaro package manager
+#  - portage     - Gentoo package manager
+#  - yum         - Yum RPM frontend
+#  - zypp        - Zypp RPM frontend
+#
+# Not actually a package manager, but suitable for testing:
+#  - dummy       - Dummy manager, only logs
+#
+backend: pacman
+
+#
+# Often package installation needs an internet connection.
+# Since you may allow system installation without a connection
+# and want to offer OPTIONAL package installation, it's
+# possible to have no internet, yet have this packages module
+# enabled in settings.
+#
+# You can skip the whole module when there is no internet
+# by setting "skip_if_no_internet" to true.
+#
+# You can run a package-manager specific update procedure
+# before installing packages (for instance, to update the
+# list of packages and dependencies); this is done only if there
+# is an internet connection.
+#
+# Set "update_db" to 'true' for refreshing the database on the
+# target system. On target installations, which got installed by
+# unsquashing, a full system update may be needed. Otherwise
+# post-installing additional packages may result in conflicts.
+# Therefore set also "update_system" to 'true'.
+#
+skip_if_no_internet: false
+update_db: false
+update_system: false
+
+# pacman specific options
+#
+# *num_retries* should be a positive integer which specifies the
+# number of times the call to pacman will be retried in the event of a
+# failure.  If it is missing, it will be set to 0.
+#
+# *disable_download_timeout* is a boolean that, when true, includes
+# the flag --disable-download-timeout on calls to pacman.  When missing,
+# false is assumed.
+#
+# *needed_only* is a boolean that includes the pacman argument --needed
+# when set to true.  If missing, false is assumed.
+pacman:
+    num_retries: 0
+    disable_download_timeout: false
+    needed_only: false
+
+#
+# List of maps with package operations such as install or remove.
+# Distro developers can provide a list of packages to remove
+# from the installed system (for instance packages meant only
+# for the live system).
+#
+# A job implementing a distro specific logic to determine other
+# packages that need to be installed or removed can run before
+# this one. Distro developers may want to install locale packages
+# or remove drivers not needed on the installed system.
+# Such a job would populate a list of dictionaries in the global
+# storage called "packageOperations" and that list is processed
+# after the static list in the job configuration (i.e. the list
+# that is in this configuration file).
+#
+# Allowed package operations are:
+#  - *install*, *try_install*: will call the package manager to
+#       install one or more packages. The install target will
+#       abort the whole installation if package-installation
+#       fails, while try_install carries on. Packages may be
+#       listed as (localized) names, or as (localized) package-data.
+#       See below for the description of the format.
+# - *localInstall*: this is used to call the package manager
+#       to install a package from a path-to-a-package. This is
+#       useful if you have a static package archive on the install media.
+#       The *pacman* package manager is the only one to specially support
+#       this operation (all others treat this the same as *install*).
+# - *remove*, *try_remove*: will call the package manager to
+#       remove one or more packages. The remove target will
+#       abort the whole installation if package-removal fails,
+#       while try_remove carries on. Packages may be listed as
+#       (localized) names.
+# One additional key is recognized, to help netinstall out:
+# - *source*: ignored, does get logged
+# Any other key is ignored, and logged as a warning.
+#
+# There are two formats for naming packages: as a name or as package-data,
+# which is an object notation providing package-name, as well as pre- and
+# post-install scripts.
+#
+# Here are both formats, for installing vi. The first one just names the
+# package for vi (using the naming of the installed package manager), while
+# the second contains three data-items; the pre-script is run before invoking
+# the package manager, and the post-script runs once it is done.
+#
+# - install
+#   - vi
+#   - package: vi
+#     pre-script: touch /tmp/installing-vi
+#     post-script: rm -f /tmp/installing-vi
+#
+# The pre- and post-scripts are optional, but you cannot leave both out
+# if you do use the *package* key: using "package: vi" with neither script
+# option will trick Calamares into trying to install a package named
+# "package: vi", which is unlikely to work.
+#
+# The pre- and post-scripts are **not** executed by a shell unless you
+# explicitly invoke `/bin/sh` in them. The command-lines are passed
+# to exec(), which does not understand shell syntax. In other words:
+#
+#     pre-script: ls | wc -l
+#
+# Will fail, because `|` is passed as a command-line argument to ls,
+# as are `wc`, and `-l`. No shell pipeline is set up, and ls is likely
+# to complain. Invoke the shell explicitly:
+#
+#     pre-script: /bin/sh -c \"ls | wc -l\"
+#
+# The above note on shell-expansion applies to versions up-to-and-including
+# Calamares 3.2.12, but will change in future.
+#
+# Any package name may be localized; this is used to install localization
+# packages for software based on the selected system locale. By including
+# the string `LOCALE` in the package name, the following happens:
+#
+# - if the system locale is English (any variety), then the package is not
+#   installed at all,
+# - otherwise `$LOCALE` or `${LOCALE}` is replaced by the 'lower-cased' BCP47
+#   name of the 'language' part of the selected system locale (not the
+#   country/region/dialect part), e.g. selecting "nl_BE" will use "nl"
+#   here.
+#
+# Take care that just plain `LOCALE` will not be replaced, so `foo-LOCALE` will
+# be left unchanged, while `foo-$LOCALE` will be changed. However, `foo-LOCALE`
+# **will** be removed from the list of packages (i.e. not installed), if
+# English is selected. If a non-English locale is selected, then `foo-LOCALE`
+# will be installed, unchanged (no language-name-substitution occurs).
+#
+# The following installs localizations for vi, if they are relevant; if
+# there is no localization, installation continues normally.
+#
+# - install
+#   - vi-$LOCALE
+#   - package: vi-${LOCALE}
+#     pre-script: touch /tmp/installing-vi
+#     post-script: rm -f /tmp/installing-vi
+#
+# When installing packages, Calamares will invoke the package manager
+# with a list of package names if it can; package-data prevents this because
+# of the scripts that need to run. In other words, this:
+#
+# - install:
+#   - vi
+#   - binutils
+#   - package: wget
+#     pre-script: touch /tmp/installing-wget
+#
+# This will invoke the package manager three times, once for each package,
+# because not all of them are simple package names. You can speed up the
+# process if you have only a few pre-scripts, by using multiple install targets:
+#
+# - install:
+#   - vi
+#   - binutils
+# - install:
+#   - package: wget
+#     pre-script: touch /tmp/installing-wget
+#
+# This will call the package manager once with the package-names "vi" and
+# "binutils", and then a second time for "wget". When installing large numbers
+# of packages, this can lead to a considerable time savings.
+#
+operations:
+  - try_remove:
+    - plasma-framework
+    - kpmcore
+    - yaml-cpp
+    - mkinitcpio-archiso
+    - boost-libs
+    - ckbcomp
+    - hwinfo
+    - qt5-xmlpatterns
+    - squashfs-tools
+    - kconfig
+    - kcoreaddons
+    - kiconthemes
+    - ki18n
+    - kio
+    - solid
+    - qt5-svg
+    - calamares
diff --git a/linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/calamares/modules/partition.conf b/linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/calamares/modules/partition.conf
new file mode 100644
index 0000000..e9425ad
--- /dev/null
+++ b/linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/calamares/modules/partition.conf
@@ -0,0 +1,255 @@
+# SPDX-FileCopyrightText: no
+# SPDX-License-Identifier: CC0-1.0
+#
+# This setting specifies the mount point of the EFI system partition. Some
+# distributions (Fedora, Debian, Manjaro, etc.) use /boot/efi, others (KaOS,
+# etc.) use just /boot.
+#
+# Defaults to "/boot/efi", may be empty (but weird effects ensue)
+efiSystemPartition:     "/boot/efi"
+
+# This optional setting specifies the size of the EFI system partition.
+# If nothing is specified, the default size of 300MiB will be used.
+#
+# This size applies both to automatic partitioning and the checks
+# during manual partitioning. A minimum of 32MiB is enforced,
+# 300MiB is the default, M is treated as MiB, and if you really want
+# one-million (10^6) bytes, use MB.
+#
+# efiSystemPartitionSize:     300M
+
+# This optional setting specifies the name of the EFI system partition (see
+# PARTLABEL; gpt only; requires KPMCore >= 4.2.0).
+# If nothing is specified, the partition name is left unset.
+# efiSystemPartitionName:     EFI
+
+# In autogenerated partitioning, allow the user to select a swap size?
+# If there is exactly one choice, no UI is presented, and the user
+# cannot make a choice -- this setting is used. If there is more than
+# one choice, a UI is presented.
+#
+# Legacy settings *neverCreateSwap* and *ensureSuspendToDisk* correspond
+# to values of *userSwapChoices* as follows:
+#    - *neverCreateSwap* is true, means [none]
+#    - *neverCreateSwap* is false, *ensureSuspendToDisk* is false, [small]
+#    - *neverCreateSwap* is false, *ensureSuspendToDisk* is true, [suspend]
+#
+# Autogenerated swap sizes are as follows:
+#    - *suspend*: Swap is always at least total memory size,
+#      and up to 4GiB RAM follows the rule-of-thumb 2 * memory;
+#      from 4GiB to 8 GiB it stays steady at 8GiB, and over 8 GiB memory
+#      swap is the size of main memory.
+#    - *small*: Follows the rules above, but Swap is at
+#      most 8GiB, and no more than 10% of available disk.
+# In both cases, a fudge factor (usually 10% extra) is applied so that there
+# is some space for administrative overhead (e.g. 8 GiB swap will allocate
+# 8.8GiB on disk in the end).
+#
+# If *file* is enabled here, make sure to have the *fstab* module
+# as well (later in the exec phase) so that the swap file is
+# actually created.
+userSwapChoices:
+    - none      # Create no swap, use no swap
+    - small     # Up to 4GB
+    - suspend   # At least main memory size
+    # - reuse     # Re-use existing swap, but don't create any (unsupported right now)
+    - file      # To swap file instead of partition
+
+# This optional setting specifies the name of the swap partition (see
+# PARTLABEL; gpt only; requires KPMCore >= 4.2.0).
+# If nothing is specified, the partition name is left unset.
+# swapPartitionName:      swap
+
+# LEGACY SETTINGS (these will generate a warning)
+# ensureSuspendToDisk:    true
+# neverCreateSwap:        false
+
+# Correctly draw nested (e.g. logical) partitions as such.
+drawNestedPartitions:   false
+
+# Show/hide partition labels on manual partitioning page.
+alwaysShowPartitionLabels: true
+
+# Allow manual partitioning.
+#
+# When set to false, this option hides the "Manual partitioning" button,
+# limiting the user's choice to "Erase", "Replace" or "Alongside".
+# This can be useful when using a custom partition layout we don't want
+# the user to modify.
+#
+# If nothing is specified, manual partitioning is enabled.
+#allowManualPartitioning:   true
+
+# Initial selection on the Choice page
+#
+# There are four radio buttons (in principle: erase, replace, alongside, manual),
+# and you can pick which of them, if any, is initially selected. For most
+# installers, "none" is the right choice: it makes the user pick something specific,
+# rather than accidentally being able to click past an important choice (in particular,
+# "erase" is a dangerous choice).
+#
+# The default is "none"
+#
+initialPartitioningChoice: none
+#
+# Similarly, some of the installation choices may offer a choice of swap;
+# the available choices depend on *userSwapChoices*, above, and this
+# setting can be used to pick a specific one.
+#
+# The default is "none" (no swap) if that is one of the enabled options, otherwise
+# one of the items from the options.
+initialSwapChoice: none
+
+# Default partition table type, used when a "erase" disk is made.
+#
+# When erasing a disk, a new partition table is created on disk.
+# In other cases, e.g. Replace and Alongside, as well as when using
+# manual partitioning, this partition table exists already on disk
+# and it is left unmodified.
+#
+# Suggested values: gpt, msdos
+# If nothing is specified, Calamares defaults to "gpt" if system is
+# efi or "msdos".
+#
+# Names are case-sensitive and defined by KPMCore.
+# defaultPartitionTableType: msdos
+
+# Requirement for partition table type
+#
+# Restrict the installation on disks that match the type of partition
+# tables that are specified.
+#
+# Possible values: msdos, gpt. Names are case-sensitive and defined by KPMCore.
+#
+# If nothing is specified, Calamares defaults to both "msdos" and "gpt".
+#
+# requiredPartitionTableType: gpt
+# requiredPartitionTableType:
+#     - msdos
+#     - gpt
+
+# Default filesystem type, used when a "new" partition is made.
+#
+# When replacing a partition, the existing filesystem inside the
+# partition is retained. In other cases, e.g. Erase and Alongside,
+# as well as when using manual partitioning and creating a new
+# partition, this filesystem type is pre-selected. Note that
+# editing a partition in manual-creation mode will not automatically
+# change the filesystem type to this default value -- it is not
+# creating a new partition.
+#
+# Suggested values: ext2, ext3, ext4, reiser, xfs, jfs, btrfs
+# If nothing is specified, Calamares defaults to "ext4".
+#
+# Names are case-sensitive and defined by KPMCore.
+defaultFileSystemType:  "ext4"
+
+# Selectable filesystem type, used when "erase" is done.
+#
+# When erasing the disk, the *defaultFileSystemType* is used (see
+# above), but it is also possible to give users a choice:
+# list suitable filesystems here. A drop-down is provided
+# to pick which is the filesystems will be used.
+#
+# The value *defaultFileSystemType* is added to this list (with a warning)
+# if not present; the default pick is the *defaultFileSystemType*.
+#
+# If not specified at all, uses *defaultFileSystemType* without a
+# warning (this matches traditional no-choice-available behavior best).
+availableFileSystemTypes:  ["ext4","ext3","btrfs","f2fs","jfs","reiser","xfs"]
+
+# Show/hide LUKS related functionality in automated partitioning modes.
+# Disable this if you choose not to deploy early unlocking support in GRUB2
+# and/or your distribution's initramfs solution.
+#
+# BIG FAT WARNING:
+#
+# This option is unsupported, as it cuts out a crucial security feature.
+# Disabling LUKS and shipping Calamares without a correctly configured GRUB2
+# and initramfs is considered suboptimal use of the Calamares software. The
+# Calamares team will not provide user support for any potential issue that
+# may arise as a consequence of setting this option to false.
+# It is strongly recommended that system integrators put in the work to support
+# LUKS unlocking support in GRUB2 and initramfs/dracut/mkinitcpio/etc.
+# For more information on setting up GRUB2 for Calamares with LUKS, see
+# https://github.com/calamares/calamares/wiki/Deploy-LUKS
+#
+# If nothing is specified, LUKS is enabled in automated modes.
+#enableLuksAutomatedPartitioning:    true
+
+# Partition layout.
+#
+# This optional setting specifies a custom partition layout.
+#
+# If nothing is specified, the default partition layout is a single partition
+# for root that uses 100% of the space and uses the filesystem defined by
+# defaultFileSystemType.
+#
+# Note: the EFI system partition is prepend automatically to the layout if
+# needed; the swap partition is appended to the layout if enabled (small of
+# suspend).
+#
+# Otherwise, the partition layout is defined as follow:
+#
+# partitionLayout:
+#     - name: "rootfs"
+#       type: "4f68bce3-e8cd-4db1-96e7-fbcaf984b709"
+#       filesystem: "ext4"
+#       mountPoint: "/"
+#       size: 20%
+#       minSize: 500M
+#       maxSize: 10G
+#       attributes: 0xffff000000000003
+#     - name: "home"
+#       type: "933ac7e1-2eb4-4f13-b844-0e14e2aef915"
+#       filesystem: "ext4"
+#       mountPoint: "/home"
+#       size: 3G
+#       minSize: 1.5G
+#       features:
+#         64bit: false
+#         casefold: true
+#     - name: "data"
+#       filesystem: "fat32"
+#       mountPoint: "/data"
+#       features:
+#         sector-size: 4096
+#         sectors-per-cluster: 128
+#       size: 100%
+#
+# There can be any number of partitions, each entry having the following attributes:
+#   - name: filesystem label
+#           and
+#           partition name (gpt only; since KPMCore 4.2.0)
+#   - uuid: partition uuid (optional parameter; gpt only; requires KPMCore >= 4.2.0)
+#   - type: partition type (optional parameter; gpt only; requires KPMCore >= 4.2.0)
+#   - attributes: partition attributes (optional parameter; gpt only; requires KPMCore >= 4.2.0)
+#   - filesystem: filesystem type (optional parameter)
+#       - if not set at all, treat as "unformatted"
+#       - if "unformatted", no filesystem will be created
+#       - if "unknown" (or an unknown FS name, like "elephant") then the
+#         default filesystem type, or the user's choice, will be applied instead
+#         of "unknown" (e.g. the user might pick ext4, or xfs).
+#   - mountPoint: partition mount point (optional parameter; not mounted if unset)
+#   - size: partition size in bytes (append 'K', 'M' or 'G' for KiB, MiB or GiB)
+#           or
+#           % of the available drive space if a '%' is appended to the value
+#   - minSize: minimum partition size (optional parameter)
+#   - maxSize: maximum partition size (optional parameter)
+#   - features: filesystem features (optional parameter; requires KPMCore >= 4.2.0)
+#       name: boolean or integer or string
+
+# Checking for available storage
+#
+# This overlaps with the setting of the same name in the welcome module's
+# requirements section. If nothing is set by the welcome module, this
+# value is used instead. It is still a problem if there is no required
+# size set at all, and the replace and resize options will not be offered
+# if no required size is set.
+#
+# The value is in Gibibytes (GiB).
+#
+# BIG FAT WARNING: except for OEM-phase-0 use, you should be using
+#                  the welcome module, **and** configure this value in
+#                  `welcome.conf`, not here.
+# requiredStorage: 3.5
diff --git a/linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/calamares/modules/preservefiles.conf b/linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/calamares/modules/preservefiles.conf
new file mode 100644
index 0000000..379d2fc
--- /dev/null
+++ b/linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/calamares/modules/preservefiles.conf
@@ -0,0 +1,67 @@
+# SPDX-FileCopyrightText: no
+# SPDX-License-Identifier: CC0-1.0
+#
+# Configuration for the preserve-files job
+#
+# The *files* key contains a list of files to preserve. Each element of
+# the list should have one of these forms:
+#
+# - an absolute path (probably within the host system). This will be preserved
+#   as the same path within the target system (chroot). If, globally,
+#   *dontChroot* is true, then these items will be ignored (since the
+#   destination is the same as the source).
+# - a map with a *dest* key. The *dest* value is a path interpreted in the
+#   target system (if the global *dontChroot* is true, then the host is the
+#   target as well). Relative paths are not recommended. There are two
+#   ways to select the source data for the file:
+#   - *from*, which must have one of the values, below; it is used to
+#     preserve files whose pathname is known to Calamares internally.
+#   - *src*, to refer to a path interpreted in the host system. Relative
+#     paths are not recommended, and are interpreted relative to where
+#     Calamares is being run.
+#   Exactly one of the two source keys (either *from* or *src*) must be set.
+#
+#   Special values for the key *from* are:
+#     - *log*, for the complete log file (up to the moment the preservefiles
+#       module is run),
+#     - *config*, for a JSON dump of the contents of global storage.
+#       Note that this may contain sensitive information, and should be
+#       given restrictive permissions.
+#
+#  A map with a *dest* key can have these additional fields:
+#   - *perm*, is a colon-separated tuple of <user>:<group>:<mode>
+#     where <mode> is in octal (e.g. 4777 for wide-open, 0400 for read-only
+#     by owner). If set, the file's ownership and permissions are set to
+#     those values within the target system; if not set, no permissions
+#     are changed.
+#   - *optional*, is a boolean; if this is set to `true` then failure to
+#     preserve the file will **not** be counted as a failure of the
+#     module, and installation will proceed. Set this for files that might
+#     not exist in the host system (e.g. nvidia configuration files that
+#     are created in some boot scenarios and not in others).
+#
+# The target path (*dest*) is modified as follows:
+#   - `@@ROOT@@` is replaced by the path to the target root (may be /).
+#     There is never any reason to use this, since the *dest* is already
+#     interpreted in the target system.
+#   - `@@USER@@` is replaced by the username entered by on the user
+#       page (may be empty, for instance if no user page is enabled)
+#
+#
+#
+files:
+  - from: log
+    dest: /var/log/Calamares.log
+    perm: root:root:644
+  - from: config
+    dest: /var/log/Calamares-install.json
+    perm: root:root:644
+# - src: /var/log/nvidia.conf
+#   dest: /var/log/Calamares-nvidia.conf
+#   optional: true
+
+# The *perm* key contains a default value to apply to all files listed
+# above that do not have a *perm* key of their own. If not set,
+# root:root:0400 (highly restrictive) is used.
+#
+# perm: "root:root:0400"
diff --git a/linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/calamares/modules/removeuser.conf b/linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/calamares/modules/removeuser.conf
new file mode 100644
index 0000000..0b5b39c
--- /dev/null
+++ b/linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/calamares/modules/removeuser.conf
@@ -0,0 +1,13 @@
+# SPDX-FileCopyrightText: no
+# SPDX-License-Identifier: CC0-1.0
+#
+# Removes a single user (with userdel) from the system.
+# This is typically used in OEM setups or if the live user
+# spills into the target system.
+#
+# The module never fails; if userdel fails, this is logged
+# but the module still reports success and installation / setup
+# continues as normal.
+---
+# Username in the target system to be removed.
+username: km
diff --git a/linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/calamares/modules/shellprocess-before.conf b/linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/calamares/modules/shellprocess-before.conf
new file mode 100644
index 0000000..aaf0243
--- /dev/null
+++ b/linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/calamares/modules/shellprocess-before.conf
@@ -0,0 +1,78 @@
+# SPDX-FileCopyrightText: no
+# SPDX-License-Identifier: CC0-1.0
+#
+# Configuration for the shell process job.
+#
+# Executes a list of commands found under the key *script*.
+# If the top-level key *dontChroot* is true, then the commands
+# are executed in the context of the live system, otherwise
+# in the context of the target system. In all of the commands,
+# the following variable expansions will take place:
+#  - `ROOT` is replaced by the root mount point of the **target**
+#    system from the point of view of the command (when run in the target
+#    system, e.g. when *dontChroot* is false, that will be `/`).
+#  - `USER` is replaced by the username, set on the user page.
+#
+# Variables are written as `${var}`, e.g. `${ROOT}`.
+#
+# The (global) timeout for the command list can be set with
+# the *timeout* key. The value is a time in seconds, default
+# is 30 seconds if not set. The timeout **must** be tuned, either
+# globally or per-command (see below in the description of *script*),
+# to the load or expected running-time of the command.
+#
+#  - Setting a timeout of 30 for a `touch` command is probably exessive
+#  - Setting a timeout of 1 for a `touch` command might be low,
+#    on a slow disk where touch needs to be loaded from CDROM
+#  - Setting a timeout of 30 for a 1GB download is definitely low
+#  - Setting a timeout of 3600 for a 1GB download is going to leave
+#    the user in uncertainty for a loooong time.
+#
+# If a command starts with "-" (a single minus sign), then the
+# return value of the command following the - is ignored; otherwise,
+# a failing command will abort the installation. This is much like
+# make's use of - in a command.
+#
+# The value of *script* may be:
+#   - a single string; this is one command that is executed.
+#   - a single object (this is not useful).
+#   - a list of items; these are executed one at a time, by
+#     separate shells (/bin/sh -c is invoked for each command).
+#     Each list item may be:
+#     - a single string; this is one command that is executed.
+#     - a single object, specifying a key *command* and (optionally)
+#       a key *timeout* to set the timeout for this specific
+#       command differently from the global setting.
+#
+# Using a single object is not useful because the same effect can
+# be obtained with a single string and a global timeout, but when
+# there are multiple commands to execute, one of them might have
+# a different timeout than the others.
+#
+# To change the description of the job, set the *name* entries in *i18n*.
+---
+# Set to true to run in host, rather than target system
+dontChroot: false
+# Tune this for the commands you're actually running
+timeout: 999
+
+# Script may be a single string (because false returns an error exit
+# code, this will trigger a failure in the installation):
+#
+# script: "/usr/bin/false"
+
+# Script may be a list of strings (because false returns an error exit
+# code, **but** the command starts with a "-", the error exit is
+# ignored and installation continues):
+#
+# script:
+#     - "-/usr/bin/false"
+#     - "/bin/ls"
+#     - "/usr/bin/true"
+
+# Script may be a list of items (if the touch command fails, it is
+# ignored; the slowloris command has a different timeout from the
+# other commands in the list):
+script:
+    - "-/usr/bin/pacman-key --init"
+    - "-/usr/bin/pacman-key --populate"
\ No newline at end of file
diff --git a/linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/calamares/modules/shellprocess-final.conf b/linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/calamares/modules/shellprocess-final.conf
new file mode 100644
index 0000000..65be5e1
--- /dev/null
+++ b/linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/calamares/modules/shellprocess-final.conf
@@ -0,0 +1,85 @@
+# SPDX-FileCopyrightText: no
+# SPDX-License-Identifier: CC0-1.0
+#
+# Configuration for the shell process job.
+#
+# Executes a list of commands found under the key *script*.
+# If the top-level key *dontChroot* is true, then the commands
+# are executed in the context of the live system, otherwise
+# in the context of the target system. In all of the commands,
+# the following variable expansions will take place:
+#  - `ROOT` is replaced by the root mount point of the **target**
+#    system from the point of view of the command (when run in the target
+#    system, e.g. when *dontChroot* is false, that will be `/`).
+#  - `USER` is replaced by the username, set on the user page.
+#
+# Variables are written as `${var}`, e.g. `${ROOT}`.
+#
+# The (global) timeout for the command list can be set with
+# the *timeout* key. The value is a time in seconds, default
+# is 30 seconds if not set. The timeout **must** be tuned, either
+# globally or per-command (see below in the description of *script*),
+# to the load or expected running-time of the command.
+#
+#  - Setting a timeout of 30 for a `touch` command is probably exessive
+#  - Setting a timeout of 1 for a `touch` command might be low,
+#    on a slow disk where touch needs to be loaded from CDROM
+#  - Setting a timeout of 30 for a 1GB download is definitely low
+#  - Setting a timeout of 3600 for a 1GB download is going to leave
+#    the user in uncertainty for a loooong time.
+#
+# If a command starts with "-" (a single minus sign), then the
+# return value of the command following the - is ignored; otherwise,
+# a failing command will abort the installation. This is much like
+# make's use of - in a command.
+#
+# The value of *script* may be:
+#   - a single string; this is one command that is executed.
+#   - a single object (this is not useful).
+#   - a list of items; these are executed one at a time, by
+#     separate shells (/bin/sh -c is invoked for each command).
+#     Each list item may be:
+#     - a single string; this is one command that is executed.
+#     - a single object, specifying a key *command* and (optionally)
+#       a key *timeout* to set the timeout for this specific
+#       command differently from the global setting.
+#
+# Using a single object is not useful because the same effect can
+# be obtained with a single string and a global timeout, but when
+# there are multiple commands to execute, one of them might have
+# a different timeout than the others.
+#
+# To change the description of the job, set the *name* entries in *i18n*.
+---
+# Set to true to run in host, rather than target system
+dontChroot: false
+# Tune this for the commands you're actually running
+timeout: 999
+
+# Script may be a single string (because false returns an error exit
+# code, this will trigger a failure in the installation):
+#
+# script: "/usr/bin/false"
+
+# Script may be a list of strings (because false returns an error exit
+# code, **but** the command starts with a "-", the error exit is
+# ignored and installation continues):
+#
+# script:
+#     - "-/usr/bin/false"
+#     - "/bin/ls"
+#     - "/usr/bin/true"
+
+# Script may be a list of items (if the touch command fails, it is
+# ignored; the slowloris command has a different timeout from the
+# other commands in the list):
+script:
+    - "-rm @@ROOT@@/etc/sudoers.d/g_wheel"
+    - "-rm -r @@ROOT@@/etc/systemd/system/getty@tty1.service.d"
+    - "-rm -r @@ROOT@@/etc/systemd/system/multi-user.target.wants/pacman-init.service"
+    - "-rm -r @@ROOT@@/etc/systemd/system/pacman-init.service"
+    - "-rm @@ROOT@@/etc/systemd/system/etc-pacman.d-gnupg.mount"
+    - "-rm @@ROOT@@/root/.automated_script.sh"
+    - "-rm @@ROOT@@/root/.zlogin"
+    - "-rm @@ROOT@@/etc/polkit-1/rules.d/49-nopasswd_global.rules"
+#    - "-rm @@ROOT@@/etc/systemd/system/display-manager.service"
diff --git a/linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/calamares/modules/unpackfs.conf b/linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/calamares/modules/unpackfs.conf
new file mode 100644
index 0000000..6bf2ff2
--- /dev/null
+++ b/linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/calamares/modules/unpackfs.conf
@@ -0,0 +1,96 @@
+# SPDX-FileCopyrightText: no
+# SPDX-License-Identifier: CC0-1.0
+#
+# Unsquash / unpack a filesystem. Multiple sources are supported, and
+# they may be squashed or plain filesystems.
+#
+# Configuration:
+#
+#   from globalstorage: rootMountPoint
+#   from job.configuration: the path to where to mount the source image(s)
+#       for copying an ordered list of unpack mappings for image file <->
+#       target dir relative to rootMountPoint.
+
+---
+# Each list item is unpacked, in order, to the target system.
+#
+# Each list item has the following **mandatory** attributes:
+#   - *source* path relative to the live / intstalling system to the image
+#   - *sourcefs* the type of the source files; valid entries are
+#       - `ext4` (copies the filesystem contents)
+#       - `squashfs` (unsquashes)
+#       - `file` (copies a file or directory)
+#       - (may be others if mount supports it)
+#   - *destination* path relative to rootMountPoint (so in the target
+#       system) where this filesystem is unpacked. It may be an
+#       empty string, which effectively is / (the root) of the target
+#       system.
+#
+# Each list item **optionally** can include the following attributes:
+#   - *exclude* is a list of values that is expanded into --exclude
+#       arguments for rsync (each entry in exclude gets its own --exclude).
+#   - *excludeFile* is a single file that is passed to rsync as an
+#       --exclude-file argument. This should be a full pathname
+#       inside the **host** filesystem.
+#   - *weight* is useful when the entries take wildly different
+#       times to unpack (e.g. with a squashfs, and one single file)
+#       and the total weight of this module should be distributed
+#       differently between the entries. (This is only relevant when
+#       there is more than one entry; by default all the entries
+#       have the same weight, 1)
+#
+# EXAMPLES
+#
+# Usually you list a filesystem image to unpack; you can use
+# squashfs or an ext4 image. An empty destination is equivalent to "/",
+# the root of the target system. The destination directory must exist
+# in the target system.
+#
+#   -   source: "/path/to/filesystem.sqfs"
+#       sourcefs: "squashfs"
+#       destination: ""
+#
+# Multiple entries are unpacked in-order; if there is more than one
+# item then only the first must exist beforehand -- it's ok to
+# create directories with one unsquash and then to use those
+# directories as a target from a second unsquash.
+#
+#   -   source: "/path/to/another/filesystem.img"
+#       sourcefs: "ext4"
+#       destination: ""
+#   -   source: "/path/to/another/filesystem2.img"
+#       sourcefs: "ext4"
+#       destination: "/usr/lib/extra"
+#
+# You can list filesystem source paths relative to the Calamares run
+# directory, if you use -d (this is only useful for testing, though).
+#
+#    -   source: ./example.sqfs
+#        sourcefs: squashfs
+#        destination: ""
+#
+# You can list individual files (copied one-by-one), or directories
+# (the files inside this directory are copied directly to the destination,
+# so no "dummycpp/" subdirectory is created in this example).
+# Do note that the target directory must exist already (e.g. from
+# extracting some other filesystem).
+#
+#    -   source: ../CHANGES
+#        sourcefs: file
+#        destination: "/tmp/derp"
+#    -   source: ../src/modules/dummycpp
+#        sourcefs: file
+#        destination: "/tmp/derp"
+#
+# The *destination* and *source* are handed off to rsync, so the semantics
+# of trailing slashes apply. In order to *rename* a file as it is
+# copied, specify one single file (e.g. CHANGES) and a full pathname
+# for its destination name, as in the example below.
+
+unpack:
+    -   source: "/run/archiso/bootmnt/arch/x86_64/airootfs.sfs"
+        sourcefs: "squashfs"
+        destination: ""
+    -   source: "/run/archiso/bootmnt/arch/boot/x86_64/vmlinuz-linux"
+        sourcefs: "file"
+        destination: "/boot/vmlinuz-linux"
diff --git a/linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/calamares/modules/users.conf b/linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/calamares/modules/users.conf
new file mode 100644
index 0000000..57213a7
--- /dev/null
+++ b/linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/calamares/modules/users.conf
@@ -0,0 +1,217 @@
+# SPDX-FileCopyrightText: no
+# SPDX-License-Identifier: CC0-1.0
+#
+# Configuration for the one-user-system user module.
+#
+# Besides these settings, the users module also places the following
+# keys into the Global Storage area, based on user input in the view step.
+#
+# - hostname
+# - username
+# - password (obscured)
+# - autologinUser (if enabled, set to username)
+#
+# These Global Storage keys are set when the configuration for this module
+# is read and when they are modified in the UI.
+---
+# Used as default groups for the created user.
+# Adjust to your Distribution defaults.
+#
+# Each entry in the *defaultGroups* list is either:
+#   - a string, naming a group; this is a **non**-system group
+#     which does not need to exist in the target system; if it
+#     does not exist, it will be created.
+#   - an entry with subkeys *name*, *must_exist* and *system*;
+#     if the group *must_exist* and does not, an error is thrown
+#     and the installation fails.
+#
+#     The group is created if it does not exist, and it is
+#     created as a system group (GID < 1000) or user group
+#     (GID >= 1000) depending on the value of *system*.
+defaultGroups:
+    - name: users
+      must_exist: true
+      system: true
+    - lp
+    - video
+    - network
+    - storage
+    - name: wheel
+      must_exist: false
+      system: true
+    - audio
+
+# Some Distributions require a 'autologin' group for the user.
+# Autologin causes a user to become automatically logged in to
+# the desktop environment on boot.
+# Disable when your Distribution does not require such a group.
+autologinGroup:  autologin
+# You can control the initial state for the 'autologin checkbox' here.
+# Possible values are:
+#  - true to check or
+#  - false to uncheck
+# These set the **initial** state of the checkbox.
+doAutologin:     true
+
+# When *sudoersGroup* is set to a non-empty string, Calamares creates a
+# sudoers file for the user. This file is located at:
+#     `/etc/sudoers.d/10-installer`
+# Remember to add the (value of) *sudoersGroup* to *defaultGroups*.
+#
+# If your Distribution already sets up a group of sudoers in its packaging,
+# remove this setting (delete or comment out the line below). Otherwise,
+# the setting will be duplicated in the `/etc/sudoers.d/10-installer` file,
+# potentially confusing users.
+sudoersGroup:    wheel
+# If set to `false` (the default), writes a sudoers file with `(ALL)`
+# so that the command can be run as any user. If set to `true`, writes
+# `(ALL:ALL)` so that any user and any group can be chosen.
+sudoersConfigureWithGroup: true
+
+# Setting this to false, causes the root account to be disabled.
+# When disabled, hides the "Use the same password for administrator"
+# checkbox. Also hides the "Choose a password" and associated text-inputs.
+setRootPassword: [REDACTED]
+
+# You can control the initial state for the 'reuse password for root'
+# checkbox here. Possible values are:
+#  - true to check or
+#  - false to uncheck
+#
+# When checked, the user password is used for the root account too.
+#
+# NOTE: *doReusePassword* requires *setRootPassword* to be enabled.
+doReusePassword: [REDACTED]
+
+# These are optional password-requirements that a distro can enforce
+# on the user. The values given in this sample file set only very weak
+# validation settings.
+#
+# - nonempty rejects empty passwords
+# - there are no length validations
+# - libpwquality (if it is enabled at all) has no length of class
+#   restrictions, although it will still reject palindromes and
+#   dictionary words with these settings.
+#
+# Checks may be listed multiple times; each is checked separately,
+# and no effort is done to ensure that the checks are consistent
+# (e.g. specifying a maximum length less than the minimum length
+# will annoy users).
+#
+# The libpwquality check relies on the (optional) libpwquality library.
+# Its value is a list of configuration statements that could also
+# be found in pwquality.conf, and these are handed off to the
+# libpwquality parser for evaluation. The check is ignored if
+# libpwquality is not available at build time (generates a warning in
+# the log). The Calamares password check rejects passwords with a
+# score of < 40 with the given libpwquality settings.
+#
+# (additional checks may be implemented in CheckPWQuality.cpp and
+# wired into UsersPage.cpp)
+#
+#  - To disable specific password validations:
+#    comment out the relevant 'passwordRequirements' keys below.
+#  - To disable all password validations:
+#    set both 'allowWeakPasswords' and 'allowWeakPasswordsDefault' to true.
+#    (That will show the box *Allow weak passwords* in the user-
+#    interface, and check it by default).
+#passwordRequirements:
+#    nonempty: true
+#    minLength: -1  # Password at least this many characters
+#    maxLength: -1  # Password at most this many characters
+#    libpwquality:
+#        - minlen=0
+#        - minclass=0
+
+# You can control the visibility of the 'strong passwords' checkbox here.
+# Possible values are:
+#  - true to show or
+#  - false to hide  (default)
+# the checkbox. This checkbox allows the user to choose to disable
+# password-strength-checks. By default the box is **hidden**, so
+# that you have to pick a password that satisfies the checks.
+allowWeakPasswords: false
+# You can control the initial state for the 'strong passwords' checkbox here.
+# Possible values are:
+#  - true to uncheck or
+#  - false to check (default)
+# the checkbox by default. Since the box is labeled to enforce strong
+# passwords, in order to **allow** weak ones by default, the box needs
+# to be unchecked.
+allowWeakPasswordsDefault: true
+
+# User settings
+#
+# The user can enter a username, but there are some other
+# hidden settings for the user which are configurable in Calamares.
+#
+# Key *user* has the following sub-keys:
+#
+# - *shell* Shell to be used for the regular user of the target system.
+#   There are three possible kinds of settings:
+#    - unset (i.e. commented out, the default), act as if set to /bin/bash
+#    - empty (explicit), don't pass shell information to useradd at all
+#      and rely on a correct configuration file in /etc/default/useradd
+#    - set, non-empty, use that path as shell. No validation is done
+#      that the shell actually exists or is executable.
+# - *forbidden_names* Login names that may not be used. This list always
+#   contains "root" and "nobody", but may be extended to list other special
+#   names for a given distro (eg. "video", or "mysql" might not be a valid
+#   end-user login name).
+user:
+  shell: /bin/bash
+  forbidden_names: [ root ]
+
+# Hostname settings
+#
+# The user can enter a hostname; this is configured into the system
+# in some way. There are settings for how a hostname is guessed (as
+# a default / suggestion) and where (or how) the hostname is set in
+# the target system.
+#
+# Key *hostname* has the following sub-keys:
+#
+# - *location* How the hostname is set in the target system:
+#   - *None*, to not set the hostname at all
+#   - *EtcFile*, to write to `/etc/hostname` directly
+#   - *Etc*, identical to above
+#   - *Hostnamed*, to use systemd hostnamed(1) over DBus
+#   - *Transient*, to remove `/etc/hostname` from the target
+#   The default is *EtcFile*. Setting this to *None* or *Transient* will
+#   hide the hostname field.
+# - *writeHostsFile* Should /etc/hosts be written with a hostname for
+#   this machine (also adds localhost and some ipv6 standard entries).
+#   Defaults to *true*.
+# - *template* Is a simple template for making a suggestion for the
+#   hostname, based on user data. The default is "${first}-${product}".
+#   This is used only if the hostname field is shown. KMacroExpander is
+#   used; write `${key}` where `key` is one of the following:
+#   - *first* User's first name (whatever is first in the User Name field,
+#     which is first-in-order but not necessarily a "first name" as in
+#     "given name" or "name by which you call someone"; beware of western bias)
+#   - *name* All the text in the User Name field.
+#   - *login* The login name (which may be suggested based on User Name)
+#   - *product* The hardware product, based on DMI data
+#   - *product2* The product as described by Qt
+#   - *cpu* CPU name
+#   - *host* Current hostname (which may be a transient hostname)
+#   Literal text in the template is preserved. Calamares tries to map
+#   `${key}` values to something that will fit in a hostname, but does not
+#   apply the same to literal text in the template. Do not use invalid
+#   characters in the literal text, or no suggeston will be done.
+# - *forbidden_names* lists hostnames that may not be used. This list
+#   always contains "localhost", but may list others that are unsuitable
+#   or broken in special ways.
+hostname:
+  location: EtcFile
+  writeHostsFile: true
+  #template: "alci-${cpu}"
+  forbidden_names: [ localhost ]
+
+presets:
+    fullName:
+        # value: "OEM User"
+        editable: true
+    loginName:
+        # value: "oem"
+        editable: true
diff --git a/linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/calamares/modules/welcome.conf b/linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/calamares/modules/welcome.conf
new file mode 100644
index 0000000..490b627
--- /dev/null
+++ b/linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/calamares/modules/welcome.conf
@@ -0,0 +1,121 @@
+# SPDX-FileCopyrightText: no
+# SPDX-License-Identifier: CC0-1.0
+#
+# Configuration for the welcome module. The welcome page
+# displays some information from the branding file.
+# Which parts it displays can be configured through
+# the show* variables.
+#
+# In addition to displaying the welcome page, this module
+# can check requirements for installation.
+---
+# Display settings for various buttons on the welcome page.
+# The URLs themselves come from `branding.desc`. Each button
+# is show if the corresponding *show<buttonname>* setting
+# here is "true". If the setting is "false", the button is hidden.
+# Empty or not-set is interpreted as "false".
+#
+# TODO:3.3 Remove the URL fallback here; URLs only in `branding.desc`
+#
+# The setting can also be a full URL which will then be used
+# instead of the one from the branding file.
+showSupportUrl:         false
+showKnownIssuesUrl:     false
+showReleaseNotesUrl:    false
+# TODO:3.3 Move to branding, keep only a bool here
+showDonateUrl:          false
+
+# Requirements checking. These are general, generic, things
+# that are checked. They may not match with the actual requirements
+# imposed by other modules in the system.
+requirements:
+    # Amount of available disk, in GiB. Floating-point is allowed here.
+    # Note that this does not account for *usable* disk, so it is possible
+    # to satisfy this requirement, yet have no space to install to.
+    requiredStorage:    6
+
+    # Amount of available RAM, in GiB. Floating-point is allowed here.
+    requiredRam:        1.0
+
+    # To check for internet connectivity, Calamares does a HTTP GET
+    # on this URL; on success (e.g. HTTP code 200) internet is OK.
+    # Use a privacy-respecting URL here, preferably in your distro's domain.
+    #
+    # The URL is only used if "internet" is in the *check* list below.
+    internetCheckUrl:   http://example.com
+    #
+    # This may be a single URL, or a list or URLs, in which case the
+    # URLs will be checked one-by-one; if any of them returns data,
+    # internet is assumed to be OK. This can be used to check via
+    # a number of places, where some domains may be down or blocked.
+    #
+    # To use a list of URLs, just use YAML list syntax (e.g.
+    #
+    # internetCheckUrl:
+    #     - http://www.kde.org
+    #     - http://www.freebsd.org
+    #
+    # or short-form
+    #
+    # internetCheckUrl: [ http://www.kde.org, http://www.freebsd.org ]
+
+    # List conditions to check. Each listed condition will be
+    # probed in some way, and yields true or false according to
+    # the host system satisfying the condition.
+    #
+    # This sample file lists all the conditions that are known.
+    check:
+        - storage
+        - ram
+        - power
+        - internet
+        - root
+        - screen
+
+    # List conditions that **must** be satisfied (from the list
+    # of conditions, above) for installation to proceed.
+    # If any of these conditions are not met, the user cannot
+    # continue past the welcome page.
+    required:
+        - storage
+        - ram
+        # - root
+
+# GeoIP checking
+#
+# This can be used to pre-select a language based on the country
+# the user is currently in. It *assumes* that there's internet
+# connectivity, though. Configuration is like in the locale module,
+# but remember to use a URL that returns full data **and** to
+# use a selector that will pick the country, not the timezone.
+#
+# To disable GeoIP checking, either comment-out the entire geoip section,
+# or set the *style* key to an unsupported format (e.g. `none`).
+# Also, note the analogous feature in `src/modules/locale/locale.conf`,
+# which is where you will find complete documentation.
+#
+# For testing, the *style* may be set to `fixed`, any URL that
+# returns data (e.g. `http://example.com`) and then *selector*
+# sets the data that is actually returned (e.g. "DE" to simulate
+# the machine being in Germany).
+#
+# NOTE: the *selector* must pick the country code from the GeoIP
+#       data. Timezone, city, or other data will not be recognized.
+#
+geoip:
+    style:    "none"
+    url:      "https://geoip.kde.org/v1/ubiquity"  # extended XML format
+    selector: "CountryCode"  # blank uses default, which is wrong
+
+# User interface
+#
+# The "select language" icon is an international standard, but it
+# might not theme very well with your desktop environment.
+# Fill in an icon name (following FreeDesktop standards) to
+# use that named icon instead of the usual one.
+#
+# Leave blank or unset to use the international standard.
+#
+# Known icons in this space are "set-language" and "config-language".
+#
+# languageIcon: set-language
diff --git a/linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/calamares/settings.conf b/linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/calamares/settings.conf
new file mode 100644
index 0000000..e7cba3e
--- /dev/null
+++ b/linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/calamares/settings.conf
@@ -0,0 +1,243 @@
+# SPDX-FileCopyrightText: no
+# SPDX-License-Identifier: CC0-1.0
+#
+# Configuration file for Calamares
+#
+# This is the top-level configuration file for Calamares.
+# It specifies what modules will be used, as well as some
+# overall characteristics -- is this a setup program, or
+# an installer. More specific configuration is devolved
+# to the branding file (for the UI) and the individual
+# module configuration files (for functionality).
+---
+# Modules can be job modules (with different interfaces) and QtWidgets view
+# modules. They could all be placed in a number of different paths.
+# "modules-search" is a list of strings, each of these can either be a full
+# path to a directory or the keyword "local".
+#
+# "local" means:
+#   - modules in $LIBDIR/calamares/modules, with
+#   - settings in SHARE/calamares/modules or /etc/calamares/modules.
+# In debug-mode (e.g. calamares -d) "local" also adds some paths
+# that make sense from inside the build-directory, so that you
+# can build-and-run with the latest modules immediately.
+#
+# Strings other than "local" are taken as paths and interpreted
+# relative to wherever Calamares is started. It is therefore **strongly**
+# recommended to use only absolute paths here. This is mostly useful
+# if your distro has forks of standard Calamares modules, but also
+# uses some form of upstream packaging which might overwrite those
+# forked modules -- then you can keep modules somewhere outside of
+# the "regular" module tree.
+#
+#
+# YAML: list of strings.
+modules-search: [ local ]
+
+# Instances section. This section is optional, and it defines custom instances
+# for modules of any kind. An instance entry has these keys:
+# - *module* name, which matches the module name from the module descriptor
+#   (usually the name of the directory under `src/modules/`, but third-
+#   party modules may diverge.
+# - *id* (optional) an identifier to distinguish this instance from
+#   all the others. If none is given, the name of the module is used.
+#   Together, the module and id form an instance key (see below).
+# - *config* (optional) a filename for the configuration. If none is
+#   given, *module*`.conf` is used (e.g. `welcome.conf` for the welcome
+#   module)
+# - *weight* (optional) In the *exec* phase of the sequence, progress
+#   is reported as jobs are completed. The jobs from a single module
+#   together contribute the full weight of that module. The overall
+#   progress (0 .. 100%) is divided up according to the weight of each
+#   module. Give modules that take a lot of time to complete, a larger
+#   weight to keep the overall progress moving along steadily. This
+#   weight overrides a weight given in the module descriptor. If no weight
+#   is given, uses the value from the module descriptor, or 1 if there
+#   isn't one there either.
+#
+# The primary goal of this mechanism is to allow loading multiple instances
+# of the same module, with different configuration. If you don't need this,
+# the instances section can safely be left empty.
+#
+# Module name plus instance name makes an instance key, e.g.
+# "webview@owncloud", where "webview" is the module name (for the webview
+# viewmodule) and "owncloud" is the instance name. In the *sequence*
+# section below, use instance-keys to name instances (instead of just
+# a module name, for modules which have only a single instance).
+#
+# Every module implicitly has an instance with the instance name equal
+# to its module name, e.g. "welcome@welcome". In the *sequence* section,
+# mentioning a module without a full instance key (e.g. "welcome")
+# means that implicit module.
+#
+# An instance may specify its configuration file (e.g. `webview-home.conf`).
+# The implicit instances all have configuration files named `<module>.conf`.
+# This (implict) way matches the source examples, where the welcome
+# module contains an example `welcome.conf`. Specify a *config* for
+# any module (also implicit instances) to change which file is used.
+#
+# For more information on running module instances, run Calamares in debug
+# mode and check the Modules page in the Debug information interface.
+#
+# A module that is often used with instances is shellprocess, which will
+# run shell commands specified in the configuration file. By configuring
+# more than one instance of the module, multiple shell sessions can be run
+# during install.
+#
+# YAML: list of maps of string:string key-value pairs.
+#instances:
+#- id:       owncloud
+#  module:   webview
+#  config:   owncloud.conf
+
+# Sequence section. This section describes the sequence of modules, both
+# viewmodules and jobmodules, as they should appear and/or run.
+#
+# A jobmodule instance key (or name) can only appear in an exec phase, whereas
+# a viewmodule instance key (or name) can appear in both exec and show phases.
+# There is no limit to the number of show or exec phases. However, the same
+# module instance key should not appear more than once per phase, and
+# deployers should take notice that the global storage structure is persistent
+# throughout the application lifetime, possibly influencing behavior across
+# phases. A show phase defines a sequence of viewmodules (and therefore
+# pages). These viewmodules can offer up jobs for the execution queue.
+#
+# An exec phase displays a progress page (with brandable slideshow). This
+# progress page iterates over the modules listed in the *immediately
+# preceding* show phase, and enqueues their jobs, as well as any other jobs
+# from jobmodules, in the order defined in the current exec phase.
+#
+# It then executes the job queue and clears it. If a viewmodule offers up a
+# job for execution, but the module name (or instance key) isn't listed in the
+# immediately following exec phase, this job will not be executed.
+#
+# YAML: list of lists of strings.
+
+instances:
+- id:       before
+  module:   shellprocess
+  config:   shellprocess-before.conf
+- id:       final
+  module:   shellprocess
+  config:   shellprocess-final.conf
+
+
+sequence:
+- show:
+  - welcome
+#  - notesqml
+  - locale
+  - keyboard
+  - partition
+  - users
+#  - tracking
+  - summary
+- exec:
+  - partition
+#  - zfs
+  - mount
+  - unpackfs
+  - machineid
+  - fstab
+  - locale
+  - keyboard
+  - localecfg
+  - luksbootkeyfile
+  - luksopenswaphookcfg
+  - initcpiocfg
+  - initcpio
+  - removeuser
+  - users
+  - displaymanager
+  - networkcfg
+  - hwclock
+#  - services-systemd
+  - shellprocess@before
+  - packages
+  - grubcfg
+  - bootloader
+  - shellprocess@final
+  - preservefiles
+  - umount
+- show:
+#  - webview@owncloud
+  - finished
+
+# A branding component is a directory, either in SHARE/calamares/branding or
+# in /etc/calamares/branding (the latter takes precedence). The directory must
+# contain a YAML file branding.desc which may reference additional resources
+# (such as images) as paths relative to the current directory.
+#
+# A branding component can also ship a QML slideshow for execution pages,
+# along with translation files.
+#
+# Only the name of the branding component (directory) should be specified
+# here, Calamares then takes care of finding it and loading the contents.
+#
+# YAML: string.
+branding: LinHES
+
+# If this is set to true, Calamares will show an "Are you sure?" prompt right
+# before each execution phase, i.e. at points of no return. If this is set to
+# false, no prompt is shown. Default is false, but Calamares will complain if
+# this is not explicitly set.
+#
+# YAML: boolean.
+prompt-install: false
+
+# If this is set to true, Calamares will execute all target environment
+# commands in the current environment, without chroot. This setting should
+# only be used when setting up Calamares as a post-install configuration tool,
+# as opposed to a full operating system installer.
+#
+# Some official Calamares modules are not expected to function with this
+# setting. (e.g. partitioning seems like a bad idea, since that is expected to
+# have been done already)
+#
+# Default is false (for a normal installer), but Calamares will complain if
+# this is not explicitly set.
+#
+# YAML: boolean.
+dont-chroot: false
+
+# If this is set to true, Calamares refers to itself as a "setup program"
+# rather than an "installer". Defaults to the value of dont-chroot, but
+# Calamares will complain if this is not explicitly set.
+oem-setup: false
+
+# If this is set to true, the "Cancel" button will be disabled entirely.
+# The button is also hidden from view.
+#
+# This can be useful if when e.g. Calamares is used as a post-install
+# configuration tool and you require the user to go through all the
+# configuration steps.
+#
+# Default is false, but Calamares will complain if this is not explicitly set.
+#
+# YAML: boolean.
+disable-cancel: false
+
+# If this is set to true, the "Cancel" button will be disabled once
+# you start the 'Installation', meaning there won't be a way to cancel
+# the Installation until it has finished or installation has failed.
+#
+# Default is false, but Calamares will complain if this is not explicitly set.
+#
+# YAML: boolean.
+disable-cancel-during-exec: false
+
+# If this is set to true, the "Next" and "Back" button will be hidden once
+# you start the 'Installation'.
+#
+# Default is false, but Calamares will complain if this is not explicitly set.
+#
+# YAML: boolean.
+hide-back-and-next-during-exec: false
+
+# If this is set to true, then once the end of the sequence has
+# been reached, the quit (done) button is clicked automatically
+# and Calamares will close. Default is false: the user will see
+# that the end of installation has been reached, and that things are ok.
+#
+#
+quit-at-end: false
diff --git a/linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/lightdm/lightdm.conf b/linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/lightdm/lightdm.conf
new file mode 100644
index 0000000..f43b26c
--- /dev/null
+++ b/linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/lightdm/lightdm.conf
@@ -0,0 +1,164 @@
+[Seat:*]
+#
+# General configuration
+#
+# start-default-seat = True to always start one seat if none are defined in the configuration
+# greeter-user = User to run greeter as
+# minimum-display-number = Minimum display number to use for X servers
+# minimum-vt = First VT to run displays on
+# lock-memory = True to prevent memory from being paged to disk
+# user-authority-in-system-dir = True if session authority should be in the system location
+# guest-account-script = Script to be run to setup guest account
+# logind-check-graphical = True to on start seats that are marked as graphical by logind
+# log-directory = Directory to log information to
+# run-directory = Directory to put running state in
+# cache-directory = Directory to cache to
+# sessions-directory = Directory to find sessions
+# remote-sessions-directory = Directory to find remote sessions
+# greeters-directory = Directory to find greeters
+# backup-logs = True to move add a .old suffix to old log files when opening new ones
+# dbus-service = True if LightDM provides a D-Bus service to control it
+#
+[LightDM]
+#start-default-seat=true
+#greeter-user=lightdm
+#minimum-display-number=0
+#minimum-vt=7 # Setting this to a value < 7 implies security issues, see FS#46799
+#lock-memory=true
+#user-authority-in-system-dir=false
+#guest-account-script=guest-account
+#logind-check-graphical=false
+#log-directory=/var/log/lightdm
+run-directory=/run/lightdm
+#cache-directory=/var/cache/lightdm
+#sessions-directory=/usr/share/lightdm/sessions:/usr/share/xsessions:/usr/share/wayland-sessions
+#remote-sessions-directory=/usr/share/lightdm/remote-sessions
+#greeters-directory=$XDG_DATA_DIRS/lightdm/greeters:$XDG_DATA_DIRS/xgreeters
+#backup-logs=true
+#dbus-service=true
+
+#
+# Seat configuration
+#
+# Seat configuration is matched against the seat name glob in the section, for example:
+# [Seat:*] matches all seats and is applied first.
+# [Seat:seat0] matches the seat named "seat0".
+# [Seat:seat-thin-client*] matches all seats that have names that start with "seat-thin-client".
+#
+# type = Seat type (local, xremote)
+# pam-service = PAM service to use for login
+# pam-autologin-service = PAM service to use for autologin
+# pam-greeter-service = PAM service to use for greeters
+# xserver-command = X server command to run (can also contain arguments e.g. X -special-option)
+# xmir-command = Xmir server command to run (can also contain arguments e.g. Xmir -special-option)
+# xserver-config = Config file to pass to X server
+# xserver-layout = Layout to pass to X server
+# xserver-allow-tcp = True if TCP/IP connections are allowed to this X server
+# xserver-share = True if the X server is shared for both greeter and session
+# xserver-hostname = Hostname of X server (only for type=xremote)
+# xserver-display-number = Display number of X server (only for type=xremote)
+# xdmcp-manager = XDMCP manager to connect to (implies xserver-allow-tcp=true)
+# xdmcp-port = XDMCP UDP/IP port to communicate on
+# xdmcp-key = Authentication key to use for XDM-AUTHENTICATION-1 (stored in keys.conf)
+# greeter-session = Session to load for greeter
+# greeter-hide-users = True to hide the user list
+# greeter-allow-guest = True if the greeter should show a guest login option
+# greeter-show-manual-login = True if the greeter should offer a manual login option
+# greeter-show-remote-login = True if the greeter should offer a remote login option
+# user-session = Session to load for users
+# allow-user-switching = True if allowed to switch users
+# allow-guest = True if guest login is allowed
+# guest-session = Session to load for guests (overrides user-session)
+# session-wrapper = Wrapper script to run session with
+# greeter-wrapper = Wrapper script to run greeter with
+# guest-wrapper = Wrapper script to run guest sessions with
+# display-setup-script = Script to run when starting a greeter session (runs as root)
+# display-stopped-script = Script to run after stopping the display server (runs as root)
+# greeter-setup-script = Script to run when starting a greeter (runs as root)
+# session-setup-script = Script to run when starting a user session (runs as root)
+# session-cleanup-script = Script to run when quitting a user session (runs as root)
+# autologin-guest = True to log in as guest by default
+# autologin-user = User to log in with by default (overrides autologin-guest)
+# autologin-user-timeout = Number of seconds to wait before loading default user
+# autologin-session = Session to load for automatic login (overrides user-session)
+# autologin-in-background = True if autologin session should not be immediately activated
+# exit-on-failure = True if the daemon should exit if this seat fails
+#
+[Seat:*]
+#type=local
+#pam-service=lightdm
+#pam-autologin-service=lightdm-autologin
+#pam-greeter-service=lightdm-greeter
+#xserver-command=X
+#xmir-command=Xmir
+#xserver-config=
+#xserver-layout=
+#xserver-allow-tcp=false
+#xserver-share=true
+#xserver-hostname=
+#xserver-display-number=
+#xdmcp-manager=
+#xdmcp-port=177
+#xdmcp-key=
+greeter-session=lightdm-gtk-greeter
+#greeter-hide-users=false
+#greeter-allow-guest=true
+#greeter-show-manual-login=false
+#greeter-show-remote-login=true
+user-session=xfce
+#allow-user-switching=true
+#allow-guest=true
+#guest-session=
+session-wrapper=/etc/lightdm/Xsession
+#greeter-wrapper=
+#guest-wrapper=
+#display-setup-script=
+#display-stopped-script=
+#greeter-setup-script=
+#session-setup-script=
+#session-cleanup-script=
+#autologin-guest=false
+autologin-user=km
+#autologin-user-timeout=0
+#autologin-in-background=false
+autologin-session=xfce
+#exit-on-failure=false
+
+#
+# XDMCP Server configuration
+#
+# enabled = True if XDMCP connections should be allowed
+# port = UDP/IP port to listen for connections on
+# listen-address = Host/address to listen for XDMCP connections (use all addresses if not present)
+# key = Authentication key to use for XDM-AUTHENTICATION-1 or blank to not use authentication (stored in keys.conf)
+# hostname = Hostname to report to XDMCP clients (defaults to system hostname if unset)
+#
+# The authentication key is a 56 bit DES key specified in hex as 0xnnnnnnnnnnnnnn.  Alternatively
+# it can be a word and the first 7 characters are used as the key.
+#
+[XDMCPServer]
+#enabled=false
+#port=177
+#listen-address=
+#key=
+#hostname=
+
+#
+# VNC Server configuration
+#
+# enabled = True if VNC connections should be allowed
+# command = Command to run Xvnc server with
+# port = TCP/IP port to listen for connections on
+# listen-address = Host/address to listen for VNC connections (use all addresses if not present)
+# width = Width of display to use
+# height = Height of display to use
+# depth = Color depth of display to use
+#
+[VNCServer]
+#enabled=false
+#command=Xvnc
+#port=5900
+#listen-address=
+#width=1024
+#height=768
+#depth=8
diff --git a/linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/os-release b/linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/os-release
new file mode 100644
index 0000000..5d74377
--- /dev/null
+++ b/linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/os-release
@@ -0,0 +1,10 @@
+NAME="LinHES: The Linux Entertainment System"
+PRETTY_NAME="LinHES"
+ID=linhes
+BUILD_ID=rolling
+ANSI_COLOR="38;2;23;147;209"
+HOME_URL="https://linhes.org/"
+DOCUMENTATION_URL="https://linhes.org/projects/linhes/wiki"
+SUPPORT_URL="https://forums.linhes.org/"
+BUG_REPORT_URL="https://linhes.org/projects/linhes/issues"
+LOGO=linhes-logo
diff --git a/linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/pacman.conf b/linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/pacman.conf
new file mode 100644
index 0000000..cb24f8c
--- /dev/null
+++ b/linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/pacman.conf
@@ -0,0 +1,105 @@
+#
+# /etc/pacman.conf
+#
+# See the pacman.conf(5) manpage for option and repository directives
+
+#
+# GENERAL OPTIONS
+#
+[options]
+# The following paths are commented out with their default values listed.
+# If you wish to use different paths, uncomment and update the paths.
+#RootDir     = /
+#DBPath      = /var/lib/pacman/
+#CacheDir    = /var/cache/pacman/pkg/
+#LogFile     = /var/log/pacman.log
+#GPGDir      = /etc/pacman.d/gnupg/
+#HookDir     = /etc/pacman.d/hooks/
+HoldPkg     = pacman glibc
+#XferCommand = /usr/bin/curl -L -C - -f -o %o %u
+#XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u
+#CleanMethod = KeepInstalled
+Architecture = auto
+
+# Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup
+#IgnorePkg   =
+#IgnoreGroup =
+
+#NoUpgrade   =
+#NoExtract   =
+
+# Misc options
+#UseSyslog
+#Color
+#NoProgressBar
+# We cannot check disk space from within a chroot environment
+#CheckSpace
+#VerbosePkgLists
+ParallelDownloads = 5
+
+# By default, pacman accepts packages signed by keys that its local keyring
+# trusts (see pacman-key and its man page), as well as unsigned packages.
+SigLevel    = Required DatabaseOptional
+LocalFileSigLevel = Optional
+#RemoteFileSigLevel = Required
+
+# NOTE: You must run `pacman-key --init` before first using pacman; the local
+# keyring can then be populated with the keys of all official Arch Linux
+# packagers with `pacman-key --populate archlinux`.
+
+#
+# REPOSITORIES
+#   - can be defined here or included from another file
+#   - pacman will search repositories in the order defined here
+#   - local/custom mirrors can be added here or in separate files
+#   - repositories listed first will take precedence when packages
+#     have identical names, regardless of version number
+#   - URLs will have $repo replaced by the name of the current repo
+#   - URLs will have $arch replaced by the name of the architecture
+#
+# Repository entries are of the format:
+#       [repo-name]
+#       Server = ServerName
+#       Include = IncludePath
+#
+# The header [repo-name] is crucial - it must be present and
+# uncommented to enable the repo.
+#
+
+# The testing repositories are disabled by default. To enable, uncomment the
+# repo name header and Include lines. You can add preferred servers immediately
+# after the header, and they will be used before the default mirrors.
+
+#[testing]
+#Include = /etc/pacman.d/mirrorlist
+
+[core]
+Include = /etc/pacman.d/mirrorlist
+
+[extra]
+Include = /etc/pacman.d/mirrorlist
+
+#[community-testing]
+#Include = /etc/pacman.d/mirrorlist
+
+[community]
+Include = /etc/pacman.d/mirrorlist
+
+# If you want to run 32 bit applications on your x86_64 system,
+# enable the multilib repositories as required here.
+
+#[multilib-testing]
+#Include = /etc/pacman.d/mirrorlist
+
+#[multilib]
+#Include = /etc/pacman.d/mirrorlist
+
+# An example of a custom package repository.  See the pacman manpage for
+# tips on creating your own repositories.
+#[custom]
+#SigLevel = Optional TrustAll
+#Server = file:///home/custompkgs
+
+[linhes-testing]
+SigLevel = Optional TrustAll
+Server = http://linhes.org/repo/$arch/$repo/
diff --git a/linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/polkit-1/rules.d/49-nopasswd_global.rules b/linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/polkit-1/rules.d/49-nopasswd_global.rules
new file mode 100644
index 0000000..afc8670
--- /dev/null
+++ b/linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/polkit-1/rules.d/49-nopasswd_global.rules
@@ -0,0 +1,9 @@
+/* Allow members of the wheel group to execute any actions
+ * without password authentication, similar to "sudo NOPASSWD:"
+ */
+polkit.addRule(function(action, subject) {
+    if (subject.isInGroup("wheel")) {
+        return polkit.Result.YES;
+    }
+});
+
diff --git a/linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/sddm.conf.d/autologin.conf b/linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/sddm.conf.d/autologin.conf
new file mode 100644
index 0000000..6ed2275
--- /dev/null
+++ b/linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/sddm.conf.d/autologin.conf
@@ -0,0 +1,3 @@
+[Autologin]
+User=km
+Session=plasma
diff --git a/linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/skel/.config/dolphinrc b/linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/skel/.config/dolphinrc
new file mode 100644
index 0000000..9682f1e
--- /dev/null
+++ b/linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/skel/.config/dolphinrc
@@ -0,0 +1,26 @@
+MenuBar=Disabled
+
+[CompactMode]
+FontWeight=50
+
+[DetailsMode]
+FontWeight=50
+PreviewSize=16
+
+[General]
+ShowFullPath=true
+Version=201
+ViewPropsTimestamp=2022,6,17,10,18,48.021
+
+[IconsMode]
+FontWeight=50
+
+[KFileDialog Settings]
+Places Icons Auto-resize=false
+Places Icons Static Size=22
+
+[MainWindow]
+ToolBarsMovable=Disabled
+
+[PreviewSettings]
+Plugins=appimagethumbnail,audiothumbnail,comicbookthumbnail,cursorthumbnail,djvuthumbnail,ebookthumbnail,exrthumbnail,imagethumbnail,jpegthumbnail,kraorathumbnail,opendocumentthumbnail,svgthumbnail,windowsexethumbnail,windowsimagethumbnail,directorythumbnail,fontthumbnail
diff --git a/linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/skel/.config/kscreenlockerrc b/linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/skel/.config/kscreenlockerrc
new file mode 100644
index 0000000..c578cbc
--- /dev/null
+++ b/linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/skel/.config/kscreenlockerrc
@@ -0,0 +1,6 @@
+[$Version]
+update_info=kscreenlocker.upd:0.1-autolock
+
+[Daemon]
+Autolock=false
+LockOnResume=false
diff --git a/linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/skel/.config/plasma-org.kde.plasma.desktop-appletsrc b/linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/skel/.config/plasma-org.kde.plasma.desktop-appletsrc
new file mode 100644
index 0000000..eb81fe5
--- /dev/null
+++ b/linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/skel/.config/plasma-org.kde.plasma.desktop-appletsrc
@@ -0,0 +1,120 @@
+[ActionPlugins][0]
+RightButton;NoModifier=org.kde.contextmenu
+wheel:Vertical;NoModifier=org.kde.switchdesktop
+
+[ActionPlugins][1]
+RightButton;NoModifier=org.kde.contextmenu
+
+[Containments][1]
+ItemGeometries-800x600=
+ItemGeometriesHorizontal=
+activityId=03488176-3216-460f-af69-0f26f3069f9f
+formfactor=0
+immutability=1
+lastScreen=0
+location=0
+plugin=org.kde.plasma.folder
+wallpaperplugin=org.kde.image
+
+[Containments][1][Wallpaper][org.kde.image][General]
+Image=file:///usr/share/wallpapers/Next/contents/images/1024x768.jpg
+
+[Containments][2]
+activityId=
+formfactor=2
+immutability=1
+lastScreen=0
+location=4
+plugin=org.kde.panel
+wallpaperplugin=org.kde.image
+
+[Containments][2][Applets][14]
+immutability=1
+plugin=org.kde.plasma.digitalclock
+
+[Containments][2][Applets][15]
+immutability=1
+plugin=org.kde.plasma.showdesktop
+
+[Containments][2][Applets][3]
+immutability=1
+plugin=org.kde.plasma.kickoff
+
+[Containments][2][Applets][3][Configuration]
+PreloadWeight=100
+
+[Containments][2][Applets][3][Configuration][General]
+favoritesPortedToKAstats=true
+
+[Containments][2][Applets][3][Configuration][Shortcuts]
+global=Alt+F1
+
+[Containments][2][Applets][3][Shortcuts]
+global=Alt+F1
+
+[Containments][2][Applets][4]
+immutability=1
+plugin=org.kde.plasma.pager
+
+[Containments][2][Applets][5]
+immutability=1
+plugin=org.kde.plasma.icontasks
+
+[Containments][2][Applets][5][Configuration][General]
+launchers=applications:systemsettings.desktop,preferred://filemanager
+
+[Containments][2][Applets][6]
+immutability=1
+plugin=org.kde.plasma.marginsseparator
+
+[Containments][2][Applets][7]
+immutability=1
+plugin=org.kde.plasma.systemtray
+
+[Containments][2][Applets][7][Configuration]
+PreloadWeight=55
+SystrayContainmentId=8
+
+[Containments][2][General]
+AppletOrder=3;4;5;6;7;14;15
+
+[Containments][8]
+activityId=
+formfactor=2
+immutability=1
+lastScreen=0
+location=4
+plugin=org.kde.plasma.private.systemtray
+wallpaperplugin=org.kde.image
+
+[Containments][8][Applets][10]
+immutability=1
+plugin=org.kde.plasma.devicenotifier
+
+[Containments][8][Applets][11]
+immutability=1
+plugin=org.kde.plasma.keyboardlayout
+
+[Containments][8][Applets][12]
+immutability=1
+plugin=org.kde.plasma.manage-inputmethod
+
+[Containments][8][Applets][13]
+immutability=1
+plugin=org.kde.plasma.notifications
+
+[Containments][8][Applets][16]
+immutability=1
+plugin=org.kde.plasma.networkmanagement
+
+[Containments][8][Applets][9]
+immutability=1
+plugin=org.kde.plasma.clipboard
+
+[Containments][8][General]
+extraItems=org.kde.plasma.battery,org.kde.plasma.clipboard,org.kde.plasma.devicenotifier,org.kde.plasma.keyboardlayout,org.kde.plasma.manage-inputmethod,org.kde.plasma.mediacontroller,org.kde.plasma.networkmanagement,org.kde.plasma.notifications
+knownItems=org.kde.plasma.battery,org.kde.plasma.clipboard,org.kde.plasma.devicenotifier,org.kde.plasma.keyboardlayout,org.kde.plasma.manage-inputmethod,org.kde.plasma.mediacontroller,org.kde.plasma.networkmanagement,org.kde.plasma.notifications
+
+[ScreenMapping]
+itemsOnDisabledScreens=
+screenMapping=desktop:/calamares.desktop,0,03488176-3216-460f-af69-0f26f3069f9f
diff --git a/linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/skel/.local/share/dolphin/dolphinstaterc b/linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/skel/.local/share/dolphin/dolphinstaterc
new file mode 100644
index 0000000..f065a7c
--- /dev/null
+++ b/linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/skel/.local/share/dolphin/dolphinstaterc
@@ -0,0 +1,14 @@
+[SettingsDialog]
+Virtual1 Height 800x600=438
+Virtual1 Width 800x600=540
+
+[State]
+State=AAAA/wAAAAD9AAAAAwAAAAAAAAC7AAABa/wCAAAAAvsAAAAWAGYAbwBsAGQAZQByAHMARABvAGMAawAAAABMAAAA/wAAAAoBAAAD+wAAABQAcABsAGEAYwBlAHMARABvAGMAawEAAABMAAABawAAAF0BAAADAAAAAQAAALgAAAFk/AIAAAAB+wAAABAAaQBuAGYAbwBEAG8AYwBrAAAAAEwAAAFkAAAACgEAAAMAAAADAAAC+AAAAHD8AQAAAAH7AAAAGAB0AGUAcgBtAGkAbgBhAGwARABvAGMAawAAAAAAAAAC+AAAAAoBAAADAAABjAAAAWsAAAAEAAAABAAAAAgAAAAI/AAAAAEAAAACAAAAAQAAABYAbQBhAGkAbgBUAG8AbwBsAEIAYQByAQAAAAD/////AAAAAAAAAAA=
+Virtual1 Height 1280x800=412
+Virtual1 Height 800x600=439
+Virtual1 Width 1280x800=630
+Virtual1 Width 800x600=584
+Virtual1 XPosition 1280x800=381
+Virtual1 XPosition 800x600=34
+Virtual1 YPosition 1280x800=56
+Virtual1 YPosition 800x600=29
diff --git a/linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/sudoers b/linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/sudoers
new file mode 100644
index 0000000..3507926
--- /dev/null
+++ b/linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/sudoers
@@ -0,0 +1,96 @@
+## sudoers file.
+##
+## This file MUST be edited with the 'visudo' command as root.
+## Failure to use 'visudo' may result in syntax or file permission errors
+## that prevent sudo from running.
+##
+## See the sudoers man page for the details on how to write a sudoers file.
+##
+
+##
+## Host alias specification
+##
+## Groups of machines. These may include host names (optionally with wildcards),
+## IP addresses, network numbers or netgroups.
+# Host_Alias	WEBSERVERS = www1, www2, www3
+
+##
+## User alias specification
+##
+## Groups of users.  These may consist of user names, uids, Unix groups,
+## or netgroups.
+# User_Alias	ADMINS = millert, dowdy, mikef
+
+##
+## Cmnd alias specification
+##
+## Groups of commands.  Often used to group related commands together.
+# Cmnd_Alias	PROCESSES = /usr/bin/nice, /bin/kill, /usr/bin/renice, \
+# 			    /usr/bin/pkill, /usr/bin/top
+# Cmnd_Alias	REBOOT = /sbin/halt, /sbin/reboot, /sbin/poweroff
+
+##
+## Defaults specification
+##
+## You may wish to keep some of the following environment variables
+## when running commands via sudo.
+##
+## Locale settings
+# Defaults env_keep += "LANG LANGUAGE LINGUAS LC_* _XKB_CHARSET"
+##
+## Run X applications through sudo; HOME is used to find the
+## .Xauthority file.  Note that other programs use HOME to find   
+## configuration files and this may lead to privilege escalation!
+# Defaults env_keep += "HOME"
+##
+## X11 resource path settings
+# Defaults env_keep += "XAPPLRESDIR XFILESEARCHPATH XUSERFILESEARCHPATH"
+##
+## Desktop path settings
+# Defaults env_keep += "QTDIR KDEDIR"
+##
+## Allow sudo-run commands to inherit the callers' ConsoleKit session
+# Defaults env_keep += "XDG_SESSION_COOKIE"
+##
+## Uncomment to enable special input methods.  Care should be taken as
+## this may allow users to subvert the command being run via sudo.
+# Defaults env_keep += "XMODIFIERS GTK_IM_MODULE QT_IM_MODULE QT_IM_SWITCHER"
+##
+## Uncomment to use a hard-coded PATH instead of the user's to find commands
+# Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
+##
+## Uncomment to send mail if the user does not enter the correct password.
+# Defaults mail_badpass
+##
+## Uncomment to enable logging of a command's output, except for
+## sudoreplay and reboot.  Use sudoreplay to play back logged sessions.
+# Defaults log_output
+# Defaults!/usr/bin/sudoreplay !log_output
+# Defaults!/usr/local/bin/sudoreplay !log_output
+# Defaults!REBOOT !log_output
+
+##
+## Runas alias specification
+##
+
+##
+## User privilege specification
+##
+root ALL=(ALL) ALL
+
+## Uncomment to allow members of group wheel to execute any command
+%wheel ALL=(ALL) ALL
+
+## Same thing without a password
+# %wheel ALL=(ALL) NOPASSWD: ALL
+
+## Uncomment to allow members of group sudo to execute any command
+# %sudo	ALL=(ALL) ALL
+
+## Uncomment to allow any user to run sudo if they know the password
+## of the user they are running the command as (root by default).
+# Defaults targetpw  # Ask for the password of the target user
+# ALL ALL=(ALL) ALL  # WARNING: only use this together with 'Defaults targetpw'
+
+## Read drop-in files from /etc/sudoers.d
+@includedir /etc/sudoers.d
diff --git a/linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/systemd/system/display-manager.service b/linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/systemd/system/display-manager.service
new file mode 120000
index 0000000..56f1df2
--- /dev/null
+++ b/linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/etc/systemd/system/display-manager.service
@@ -0,0 +1 @@
+/usr/lib/systemd/system/sddm.service
\ No newline at end of file
diff --git a/linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/root/customize_airootfs.sh b/linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/root/customize_airootfs.sh
new file mode 100755
index 0000000..521f3d8
--- /dev/null
+++ b/linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/root/customize_airootfs.sh
@@ -0,0 +1,8 @@
+#!/bin/bash
+
+set -e -u
+
+mkdir /home/km/Desktop
+cp /usr/share/LinHES/calamares.desktop /home/km/Desktop
+chmod +x /home/km/Desktop/calamares.desktop
+chown km:users /home/km/Desktop
diff --git a/linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/usr/bin/calamares_polkit b/linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/usr/bin/calamares_polkit
new file mode 100755
index 0000000..9bce0f8
--- /dev/null
+++ b/linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/usr/bin/calamares_polkit
@@ -0,0 +1,6 @@
+#!/bin/bash
+if [ $(which pkexec) ]; then
+	pkexec --disable-internal-agent "/usr/bin/calamares" "$@"
+else
+	/usr/bin/calamares "$@"
+fi
diff --git a/linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/usr/share/LinHES/calamares.desktop b/linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/usr/share/LinHES/calamares.desktop
new file mode 100755
index 0000000..5d3405c
--- /dev/null
+++ b/linhes/linhes-dev/LinHES9_iso/cust_skel/airootfs/usr/share/LinHES/calamares.desktop
@@ -0,0 +1,252 @@
+[Desktop Entry]
+Categories=Qt;System;
+Comment[en_US]=Calamares — System Installer
+Comment=Calamares — System Installer
+Comment[ar]=كالامارس - مثبت النظام
+Comment[as]=কেলামাৰেচ — চিছটেম​ ইনস্তলাৰ
+Comment[ast]=Calamares — Instalador del sistema
+Comment[az]=Calamares Sistem Quraşdırıcısı
+Comment[az_AZ]=Calamares — Sistem Quraşdırıcısı
+Comment[be]=Calamares — усталёўшчык сістэмы
+Comment[bg]=„Calamares“ – Системен инсталатор
+Comment[bn]=ক্যালামারেস - সিস্টেম ইনস্টলার
+Comment[ca]=Calamares — Instal·lador de sistema
+Comment[cs_CZ]=Calamares – instalátor operačních systémů
+Comment[da]=Calamares — Systeminstallationsprogram
+Comment[de]=Calamares - Installation des Betriebssystems
+Comment[el]=Calamares — Εγκατάσταση συστήματος
+Comment[en_GB]=Calamares — System Installer
+Comment[eo]=Calamares — Sistema Instalilo
+Comment[es]=Calamares — Instalador del sistema
+Comment[es_MX]=Calamares - Instalador del sistema
+Comment[et]=Calamares — süsteemipaigaldaja
+Comment[eu]=Calamares - sistema instalatzailea
+Comment[fa]=کالامارس — نصب‌کننده سامانه
+Comment[fi_FI]=Calamares — Järjestelmän asentaja
+Comment[fr]=Calamares - Installateur système
+Comment[fur]=Calamares — Program di instalazion dal sisteme
+Comment[gl]=Calamares — Instalador de sistemas
+Comment[he]=Calamares - אשף התקנה
+Comment[hi]=Calamares — सिस्टम इंस्टॉलर
+Comment[hr]=Calamares — Instalacija sustava
+Comment[hu]=Calamares – Rendszertelepítő
+Comment[id]=Calamares — Pemasang Sistem
+Comment[ie]=Calamares — Installator del sistema
+Comment[is]=Calamares — Kerfis uppsetning
+Comment[it_IT]=Calamares — Programma d'installazione del sistema
+Comment[ja]=Calamares — システムインストーラー
+Comment[ko]=깔라마레스 — 시스템 설치 관리자
+Comment[lt]=Calamares — Sistemos diegimo programa
+Comment[mk]=Calamares - Системен Инсталер
+Comment[ml]=കലാമാരേസ് - സിസ്റ്റം ഇൻസ്റ്റാളർ
+Comment[nb]=Calamares-systeminstallatør
+Comment[ne_NP]=Calamares - सिस्टम इन्स्टलर
+Comment[nl]=Calamares — Installatieprogramma
+Comment[pl]=Calamares — Instalator systemu
+Comment[pt_BR]=Calamares — Instalador de Sistema
+Comment[pt_PT]=Instalador de Sistema - Calamares
+Comment[ro]=Calamares — Instalator de sistem
+Comment[ru]=Calamares - Установщик системы
+Comment[si]=Calamares - පද්ධති ස්ථාපකය
+Comment[sk]=Calamares — Inštalátor systému
+Comment[sq]=Calamares — Instalues Sistemi
+Comment[sr]=Каламарес — инсталатер система
+Comment[sv]=Calamares — Systeminstallerare
+Comment[tg]=Calamares — Насбкунандаи низомӣ
+Comment[tr_TR]=Calamares — Sistem Yükleyici
+Comment[uk]=Calamares - Встановлювач системи
+Comment[vi]=Calamares — Bộ cài đặt hệ thống
+Comment[zh_CN]=Calamares — 系统安装程序
+Comment[zh_TW]=Calamares ── 系統安裝程式
+Exec=sh /usr/bin/calamares_polkit %f
+GenericName[en_US]=System Installer
+GenericName=System Installer
+GenericName[ar]=مثبت النظام
+GenericName[as]=চিছটেম ইনস্তলাৰ
+GenericName[ast]=Instalador del sistema
+GenericName[az]=Sistem Quraşdırıcısı
+GenericName[az_AZ]=Sistem quraşdırcısı
+GenericName[be]=Усталёўшчык сістэмы
+GenericName[bg]=Системен инсталатор
+GenericName[bn]=সিস্টেম ইনস্টলার
+GenericName[ca]=Instal·lador de sistema
+GenericName[cs_CZ]=Instalátor systému
+GenericName[da]=Systeminstallationsprogram
+GenericName[de]=Installation des Betriebssystems
+GenericName[el]=Εγκατάσταση συστήματος
+GenericName[en_GB]=System Installer
+GenericName[eo]=Sistema Instalilo
+GenericName[es]=Instalador del sistema
+GenericName[es_MX]=Instalador del sistema
+GenericName[et]=Süsteemipaigaldaja
+GenericName[eu]=Sistema instalatzailea
+GenericName[fa]=نصب‌کننده سامانه
+GenericName[fi_FI]=Järjestelmän asennusohjelma
+GenericName[fr]=Installateur système
+GenericName[fur]=Program di instalazion dal sisteme
+GenericName[gl]=Instalador de sistemas
+GenericName[he]=אשף התקנה
+GenericName[hi]=सिस्टम इंस्टॉलर
+GenericName[hr]=Instalacija sustava
+GenericName[hu]=Rendszertelepítő
+GenericName[id]=Pemasang
+GenericName[ie]=Installator del sistema
+GenericName[is]=Kerfis uppsetning
+GenericName[it_IT]=Programma d'installazione del sistema
+GenericName[ja]=システムインストーラー
+GenericName[ko]=시스템 설치 관리자
+GenericName[lt]=Sistemos diegimas į kompiuterį
+GenericName[mk]=Системен Инсталер
+GenericName[ml]=സിസ്റ്റം ഇൻസ്റ്റാളർ
+GenericName[nb]=Systeminstallatør
+GenericName[ne_NP]=सिस्टम इन्स्टलर
+GenericName[nl]=Installatieprogramma
+GenericName[pl]=Instalator systemu
+GenericName[pt_BR]=Instalador de Sistema
+GenericName[pt_PT]=Instalador de Sistema
+GenericName[ro]=Instalator de sistem
+GenericName[ru]=Установщик системы
+GenericName[si]=පද්ධති ස්ථාපකය
+GenericName[sk]=Inštalátor systému
+GenericName[sq]=Instalues Sistemi
+GenericName[sr]=Инсталатер система
+GenericName[sv]=Systeminstallerare
+GenericName[tg]=Насбкунандаи низомӣ
+GenericName[tr_TR]=Sistem Yükleyici
+GenericName[uk]=Встановлювач системи
+GenericName[vi]=Bộ cài đặt hệ thống
+GenericName[zh_CN]=系统安装程序
+GenericName[zh_TW]=系統安裝程式
+Icon=qvidcap
+Icon[ar]=كالامارس
+Icon[as]=কেলামাৰেচ
+Icon[ast]=calamares
+Icon[az]=calamares
+Icon[az_AZ]=calamares
+Icon[be]=calamares
+Icon[bg]=calamares
+Icon[bn]=ক্যালামারেস
+Icon[ca]=calamares
+Icon[cs_CZ]=calamares
+Icon[da]=calamares
+Icon[de]=calamares
+Icon[el]=calamares
+Icon[en_GB]=calamares
+Icon[eo]=calamares
+Icon[es]=calamares
+Icon[es_MX]=calamares
+Icon[et]=calamares
+Icon[eu]=calamares
+Icon[fa]=کالامارس
+Icon[fi_FI]=calamares
+Icon[fr]=calamares
+Icon[fur]=calamares
+Icon[gl]=calamares
+Icon[he]=calamares
+Icon[hi]=calamares
+Icon[hr]=calamares
+Icon[hu]=calamares
+Icon[id]=calamares
+Icon[ie]=calamares
+Icon[is]=calamares
+Icon[it_IT]=calamares
+Icon[ja]=calamares
+Icon[ko]=깔라마레스
+Icon[lt]=calamares
+Icon[mk]=calamares
+Icon[ml]=കലാമാരേസ്
+Icon[nb]=calamares
+Icon[ne_NP]=Calamares
+Icon[nl]=calamares
+Icon[pl]=calamares
+Icon[pt_BR]=calamares
+Icon[pt_PT]=calamares
+Icon[ro]=calamares
+Icon[ru]=calamares
+Icon[si]=කැලමරේස්
+Icon[sk]=calamares
+Icon[sq]=calamares
+Icon[sr]=calamares
+Icon[sv]=calamares
+Icon[tg]=calamares
+Icon[tr_TR]=calamares
+Icon[uk]=calamares
+Icon[vi]=calamares
+Icon[zh_CN]=calamares
+Icon[zh_TW]=calamares
+Keywords=calamares;system;installer;
+MimeType=
+Name[en_US]=Install LinHES
+Name=Install LinHES
+Name[ar]=تثبيت النظام
+Name[as]=চিছটেম ইনস্তল কৰক
+Name[ast]=Instalar el sistema
+Name[az]=Sistemi Quraşdırmaq
+Name[az_AZ]=Sistemi quraşdırmaq
+Name[be]=Усталяваць сістэму
+Name[bg]=Инсталирай системата
+Name[bn]=সিস্টেম ইনস্টল করুন
+Name[ca]=Instal·la el sistema
+Name[cs_CZ]=Nainstalovat systém
+Name[da]=Installér system
+Name[de]=System installieren
+Name[el]=Εγκατάσταση συστήματος
+Name[en_GB]=Install System
+Name[eo]=Instali Sistemo
+Name[es]=Instalar el sistema
+Name[es_MX]=Instalar el Sistema
+Name[es_PR]=Instalar el sistema
+Name[et]=Paigalda süsteem
+Name[eu]=Sistema instalatu
+Name[fa]=نصب سامانه
+Name[fi_FI]=Asenna järjestelmä
+Name[fr]=Installer le système
+Name[fur]=Instale il sisteme
+Name[gl]=Instalación do Sistema
+Name[he]=התקנת מערכת
+Name[hi]=सिस्टम इंस्टॉल करें
+Name[hr]=Instaliraj sustav
+Name[hu]=Rendszer telepítése
+Name[id]=Instal Sistem
+Name[ie]=Installar li sistema
+Name[is]=Setja upp kerfið
+Name[it_IT]=Installa il sistema
+Name[ja]=システムをインストール
+Name[ko]=시스템 설치
+Name[lt]=Įdiegti Sistemą
+Name[mk]=Инсталирај го системот
+Name[ml]=സിസ്റ്റം ഇൻസ്റ്റാൾ ചെയ്യുക
+Name[nb]=Installer System
+Name[ne_NP]=सिस्टम इन्स्टल गर्नुहोस्
+Name[nl]=Installeer systeem
+Name[pl]=Zainstaluj system
+Name[pt_BR]=Sistema de Instalação
+Name[pt_PT]=Instalar Sistema
+Name[ro]=Instalează sistemul
+Name[ru]=Установить систему
+Name[si]=පද්ධතිය ස්ථාපනය කරන්න
+Name[sk]=Inštalovať systém
+Name[sl]=Namesti sistem
+Name[sq]=Instalo Sistemin
+Name[sr@latin]=Instaliraj sistem
+Name[sr]=Инсталирај систем
+Name[sv]=Installera system
+Name[tg]=Насбкунии низом
+Name[th]=ติดตั้งระบบ
+Name[tr_TR]=Sistemi Yükle
+Name[uk]=Встановити Систему
+Name[vi]=Cài đặt hệ thống
+Name[zh_CN]=安装系统
+Name[zh_TW]=安裝系統
+Path=
+StartupNotify=true
+Terminal=false
+TerminalOptions=
+TryExec=calamares
+Type=Application
+Version=1.0
+X-AppStream-Ignore=true
+X-DBUS-ServiceName=
+X-DBUS-StartupType=
+X-KDE-SubstituteUID=false
+X-KDE-Username=
diff --git a/linhes/linhes-dev/LinHES9_iso/cust_skel/efiboot/loader/entries/01-archiso-x86_64-linux.conf b/linhes/linhes-dev/LinHES9_iso/cust_skel/efiboot/loader/entries/01-archiso-x86_64-linux.conf
new file mode 100644
index 0000000..8388f5b
--- /dev/null
+++ b/linhes/linhes-dev/LinHES9_iso/cust_skel/efiboot/loader/entries/01-archiso-x86_64-linux.conf
@@ -0,0 +1,7 @@
+title   LinHES (x86_64, UEFI)
+sort-key 01
+linux   /%INSTALL_DIR%/boot/x86_64/vmlinuz-linux
+initrd  /%INSTALL_DIR%/boot/intel-ucode.img
+initrd  /%INSTALL_DIR%/boot/amd-ucode.img
+initrd  /%INSTALL_DIR%/boot/x86_64/initramfs-linux.img
+options archisobasedir=%INSTALL_DIR% archisolabel=%ARCHISO_LABEL% cow_spacesize=4G
diff --git a/linhes/linhes-dev/LinHES9_iso/cust_skel/efiboot/loader/entries/02-archiso-x86_64-speech-linux.conf b/linhes/linhes-dev/LinHES9_iso/cust_skel/efiboot/loader/entries/02-archiso-x86_64-speech-linux.conf
new file mode 100644
index 0000000..cd8a0f9
--- /dev/null
+++ b/linhes/linhes-dev/LinHES9_iso/cust_skel/efiboot/loader/entries/02-archiso-x86_64-speech-linux.conf
@@ -0,0 +1,7 @@
+title   LinHES (x86_64, UEFI) with speech
+sort-key 02
+linux   /%INSTALL_DIR%/boot/x86_64/vmlinuz-linux
+initrd  /%INSTALL_DIR%/boot/intel-ucode.img
+initrd  /%INSTALL_DIR%/boot/amd-ucode.img
+initrd  /%INSTALL_DIR%/boot/x86_64/initramfs-linux.img
+options archisobasedir=%INSTALL_DIR% archisolabel=%ARCHISO_LABEL% accessibility=on cow_spacesize=4G
diff --git a/linhes/linhes-dev/LinHES9_iso/cust_skel/efiboot/loader/loader.conf b/linhes/linhes-dev/LinHES9_iso/cust_skel/efiboot/loader/loader.conf
new file mode 100644
index 0000000..ae63487
--- /dev/null
+++ b/linhes/linhes-dev/LinHES9_iso/cust_skel/efiboot/loader/loader.conf
@@ -0,0 +1,2 @@
+timeout 15
+default 01-archiso-x86_64-linux.conf
diff --git a/linhes/linhes-dev/LinHES9_iso/cust_skel/grub/grub.cfg b/linhes/linhes-dev/LinHES9_iso/cust_skel/grub/grub.cfg
new file mode 100644
index 0000000..0a0b11c
--- /dev/null
+++ b/linhes/linhes-dev/LinHES9_iso/cust_skel/grub/grub.cfg
@@ -0,0 +1,46 @@
+insmod part_gpt
+insmod part_msdos
+insmod fat
+insmod iso9660
+
+insmod all_video
+
+insmod font
+
+if loadfont "${prefix}/fonts/unicode.pf2" ; then
+    insmod gfxterm
+    set gfxmode="auto"
+    terminal_input console
+    terminal_output gfxterm
+fi
+
+# GRUB init tune for accessibility
+#
+# Morse translation table:
+# "." is "500 1 300 1"
+# "-" is "600 3 300 1"
+# " " is "100 2"
+# "/" is "100 5"
+#
+# Message: "s for blind"
+play 500 500 1 300 1 500 1 300 1 500 1 300 1 100 5 500 1 300 1 500 1 300 1 100 2 500 1 300 1 500 1 300 1 600 3 300 1 500 1 300 1 100 5 600 3 300 1 500 1 300 1 500 1 300 1 500 1 300 1 100 2 500 1 300 1 600 3 300 1 500 1 300 1 500 1 300 1 100 2 500 1 300 1 500 1 300 1 100 2 500 1 300 1 500 1 300 1 100 2 600 3 300 1 500 1 300 1 100 2 600 3 300 1 500 1 300 1 500 1 300 1
+
+menuentry "LinHES install medium (x86_64, UEFI)" {
+    set gfxpayload=keep
+    search --no-floppy --set=root --label %ARCHISO_LABEL%
+    linux /%INSTALL_DIR%/boot/x86_64/vmlinuz-linux archisobasedir=%INSTALL_DIR% archisolabel=%ARCHISO_LABEL% 
+    initrd /%INSTALL_DIR%/boot/intel-ucode.img /%INSTALL_DIR%/boot/amd-ucode.img /%INSTALL_DIR%/boot/x86_64/initramfs-linux.img
+}
+
+menuentry "LinHES install medium with speakup screen reader (x86_64, UEFI)" --hotkey=s {
+    set gfxpayload=keep
+    search --no-floppy --set=root --label %ARCHISO_LABEL%
+    linux /%INSTALL_DIR%/boot/x86_64/vmlinuz-linux archisobasedir=%INSTALL_DIR% archisolabel=%ARCHISO_LABEL% accessibility=on
+    initrd /%INSTALL_DIR%/boot/intel-ucode.img /%INSTALL_DIR%/boot/amd-ucode.img /%INSTALL_DIR%/boot/x86_64/initramfs-linux.img
+}
+
+menuentry "UEFI Shell" {
+	insmod chain
+        search --no-floppy --set=root --label %ARCHISO_LABEL%
+	chainloader /shellia32.efi
+}
diff --git a/linhes/linhes-dev/LinHES9_iso/cust_skel/packages.x86_64 b/linhes/linhes-dev/LinHES9_iso/cust_skel/packages.x86_64
new file mode 100644
index 0000000..8c440b6
--- /dev/null
+++ b/linhes/linhes-dev/LinHES9_iso/cust_skel/packages.x86_64
@@ -0,0 +1,158 @@
+alsa-utils
+amd-ucode
+arch-install-scripts
+#archinstall
+b43-fwcutter
+base
+bind
+brltty
+broadcom-wl
+btrfs-progs
+#clonezilla
+#cloud-init
+cryptsetup
+#darkhttpd
+#ddrescue
+dhclient
+dhcpcd
+diffutils
+dmidecode
+dmraid
+dnsmasq
+dosfstools
+e2fsprogs
+edk2-shell
+efibootmgr
+#espeakup
+ethtool
+exfatprogs
+f2fs-tools
+fatresize
+#fsarchiver
+gnu-netcat
+gpart
+gpm
+gptfdisk
+grml-zsh-config
+grub
+hdparm
+hyperv
+intel-ucode
+#ipw2100-fw
+#ipw2200-fw
+#irssi
+iw
+iwd
+#jfsutils
+kitty-terminfo
+less
+lftp
+libfido2
+libusb-compat
+linux
+#linux-atm
+linux-firmware
+linux-firmware-marvell
+#livecd-sounds
+lsscsi
+lvm2
+lynx
+man-db
+man-pages
+#mc
+mdadm
+memtest86+
+mkinitcpio
+mkinitcpio-archiso
+mkinitcpio-nfs-utils
+#modemmanager
+mtools
+nano
+nbd
+ndisc6
+nfs-utils
+#nilfs-utils
+#nmap
+ntfs-3g
+nvme-cli
+#open-iscsi
+open-vm-tools
+openconnect
+openssh
+openvpn
+partclone
+parted
+partimage
+pcsclite
+ppp
+pptpclient
+pv
+qemu-guest-agent
+refind
+reflector
+reiserfsprogs
+rp-pppoe
+rsync
+rxvt-unicode-terminfo
+screen
+sdparm
+sg3_utils
+smartmontools
+sof-firmware
+squashfs-tools
+sudo
+syslinux
+systemd-resolvconf
+#tcpdump
+terminus-font
+testdisk
+tmux
+tpm2-tss
+udftools
+usb_modeswitch
+usbmuxd
+usbutils
+vim
+virtualbox-guest-utils-nox
+vpnc
+wireless-regdb
+wireless_tools
+wpa_supplicant
+wvdial
+xfsprogs
+xl2tpd
+zsh
+######################
+# LinHES 9 additions #
+######################
+bash-completion
+calamares
+networkmanager
+network-manager-applet
+os-prober
+pipewire
+pipewire-alsa
+pipewire-pulse
+wireplumber
+xdg-user-dirs
+xf86-video-fbdev
+xf86-video-vesa
+xf86-video-vmware
+xorg-server
+####################
+# XFCE             #  
+####################
+#lightdm
+#lightdm-gtk-greeter
+#xfce4
+#xfce4-goodies
+####################
+# Plasma           #
+####################
+dolphin
+konsole
+kscreen
+plasma-desktop
+plasma-nm
+sddm
+systemsettings
diff --git a/linhes/linhes-dev/LinHES9_iso/cust_skel/pacman.conf b/linhes/linhes-dev/LinHES9_iso/cust_skel/pacman.conf
new file mode 100644
index 0000000..cb24f8c
--- /dev/null
+++ b/linhes/linhes-dev/LinHES9_iso/cust_skel/pacman.conf
@@ -0,0 +1,105 @@
+#
+# /etc/pacman.conf
+#
+# See the pacman.conf(5) manpage for option and repository directives
+
+#
+# GENERAL OPTIONS
+#
+[options]
+# The following paths are commented out with their default values listed.
+# If you wish to use different paths, uncomment and update the paths.
+#RootDir     = /
+#DBPath      = /var/lib/pacman/
+#CacheDir    = /var/cache/pacman/pkg/
+#LogFile     = /var/log/pacman.log
+#GPGDir      = /etc/pacman.d/gnupg/
+#HookDir     = /etc/pacman.d/hooks/
+HoldPkg     = pacman glibc
+#XferCommand = /usr/bin/curl -L -C - -f -o %o %u
+#XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u
+#CleanMethod = KeepInstalled
+Architecture = auto
+
+# Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup
+#IgnorePkg   =
+#IgnoreGroup =
+
+#NoUpgrade   =
+#NoExtract   =
+
+# Misc options
+#UseSyslog
+#Color
+#NoProgressBar
+# We cannot check disk space from within a chroot environment
+#CheckSpace
+#VerbosePkgLists
+ParallelDownloads = 5
+
+# By default, pacman accepts packages signed by keys that its local keyring
+# trusts (see pacman-key and its man page), as well as unsigned packages.
+SigLevel    = Required DatabaseOptional
+LocalFileSigLevel = Optional
+#RemoteFileSigLevel = Required
+
+# NOTE: You must run `pacman-key --init` before first using pacman; the local
+# keyring can then be populated with the keys of all official Arch Linux
+# packagers with `pacman-key --populate archlinux`.
+
+#
+# REPOSITORIES
+#   - can be defined here or included from another file
+#   - pacman will search repositories in the order defined here
+#   - local/custom mirrors can be added here or in separate files
+#   - repositories listed first will take precedence when packages
+#     have identical names, regardless of version number
+#   - URLs will have $repo replaced by the name of the current repo
+#   - URLs will have $arch replaced by the name of the architecture
+#
+# Repository entries are of the format:
+#       [repo-name]
+#       Server = ServerName
+#       Include = IncludePath
+#
+# The header [repo-name] is crucial - it must be present and
+# uncommented to enable the repo.
+#
+
+# The testing repositories are disabled by default. To enable, uncomment the
+# repo name header and Include lines. You can add preferred servers immediately
+# after the header, and they will be used before the default mirrors.
+
+#[testing]
+#Include = /etc/pacman.d/mirrorlist
+
+[core]
+Include = /etc/pacman.d/mirrorlist
+
+[extra]
+Include = /etc/pacman.d/mirrorlist
+
+#[community-testing]
+#Include = /etc/pacman.d/mirrorlist
+
+[community]
+Include = /etc/pacman.d/mirrorlist
+
+# If you want to run 32 bit applications on your x86_64 system,
+# enable the multilib repositories as required here.
+
+#[multilib-testing]
+#Include = /etc/pacman.d/mirrorlist
+
+#[multilib]
+#Include = /etc/pacman.d/mirrorlist
+
+# An example of a custom package repository.  See the pacman manpage for
+# tips on creating your own repositories.
+#[custom]
+#SigLevel = Optional TrustAll
+#Server = file:///home/custompkgs
+
+[linhes-testing]
+SigLevel = Optional TrustAll
+Server = http://linhes.org/repo/$arch/$repo/
diff --git a/linhes/linhes-dev/LinHES9_iso/cust_skel/profiledef.sh b/linhes/linhes-dev/LinHES9_iso/cust_skel/profiledef.sh
new file mode 100644
index 0000000..4d0ec24
--- /dev/null
+++ b/linhes/linhes-dev/LinHES9_iso/cust_skel/profiledef.sh
@@ -0,0 +1,25 @@
+#!/usr/bin/env bash
+# shellcheck disable=SC2034
+
+iso_name="LinHES"
+iso_label="LinHES_$(date +%Y%m)"
+iso_publisher="LinHES <https://linhes.org>"
+iso_application="LinHES Live/Installation CD"
+iso_version="R9_$(date +%Y.%m.%d)"
+install_dir="arch"
+buildmodes=('iso')
+bootmodes=('bios.syslinux.mbr' 'bios.syslinux.eltorito'
+	   'uefi-ia32.grub.esp' 'uefi-x64.systemd-boot.esp'
+	   'uefi-ia32.grub.eltorito' 'uefi-x64.systemd-boot.eltorito')
+arch="x86_64"
+pacman_conf="pacman.conf"
+airootfs_image_type="squashfs"
+airootfs_image_tool_options=('-comp' 'xz' '-Xbcj' 'x86' '-b' '1M' '-Xdict-size' '1M')
+file_permissions=(
+  ["/etc/shadow"]="0:0:400"
+  ["/root"]="0:0:750"
+  ["/root/.automated_script.sh"]="0:0:755"
+  ["/usr/local/bin/choose-mirror"]="0:0:755"
+  ["/usr/local/bin/Installation_guide"]="0:0:755"
+  ["/usr/local/bin/livecd-sound"]="0:0:755"
+)
diff --git a/linhes/linhes-dev/LinHES9_iso/cust_skel/syslinux/archiso_head.cfg b/linhes/linhes-dev/LinHES9_iso/cust_skel/syslinux/archiso_head.cfg
new file mode 100644
index 0000000..d505018
--- /dev/null
+++ b/linhes/linhes-dev/LinHES9_iso/cust_skel/syslinux/archiso_head.cfg
@@ -0,0 +1,28 @@
+SERIAL 0 115200
+UI vesamenu.c32
+MENU TITLE LinHES: The Linux Home Entertainment System
+MENU BACKGROUND splash.png
+
+MENU WIDTH 78
+MENU MARGIN 4
+MENU ROWS 7
+MENU VSHIFT 10
+MENU TABMSGROW 14
+MENU CMDLINEROW 14
+MENU HELPMSGROW 16
+MENU HELPMSGENDROW 29
+
+# Refer to http://syslinux.zytor.com/wiki/index.php/Doc/menu
+
+MENU COLOR border       30;44   #40ffffff #a0000000 std
+MENU COLOR title        1;36;44 #9033ccff #a0000000 std
+MENU COLOR sel          7;37;40 #e0ffffff #20ffffff all
+MENU COLOR unsel        37;44   #50ffffff #a0000000 std
+MENU COLOR help         37;40   #c0ffffff #a0000000 std
+MENU COLOR timeout_msg  37;40   #80ffffff #00000000 std
+MENU COLOR timeout      1;37;40 #c0ffffff #00000000 std
+MENU COLOR msg07        37;40   #90ffffff #a0000000 std
+MENU COLOR tabmsg       31;40   #30ffffff #00000000 std
+
+MENU CLEAR
+MENU IMMEDIATE
diff --git a/linhes/linhes-dev/LinHES9_iso/cust_skel/syslinux/archiso_pxe-linux.cfg b/linhes/linhes-dev/LinHES9_iso/cust_skel/syslinux/archiso_pxe-linux.cfg
new file mode 100644
index 0000000..61d116c
--- /dev/null
+++ b/linhes/linhes-dev/LinHES9_iso/cust_skel/syslinux/archiso_pxe-linux.cfg
@@ -0,0 +1,32 @@
+LABEL arch64_nbd
+TEXT HELP
+Boot LinHES using NBD.
+It allows you to install Ezarcher Linux or perform system maintenance.
+ENDTEXT
+MENU LABEL LinHES (x86_64, NBD)
+LINUX /%INSTALL_DIR%/boot/x86_64/vmlinuz-linux
+INITRD /%INSTALL_DIR%/boot/intel-ucode.img,/%INSTALL_DIR%/boot/amd-ucode.img,/%INSTALL_DIR%/boot/x86_64/initramfs-linux.img
+APPEND archisobasedir=%INSTALL_DIR% archisolabel=%ARCHISO_LABEL% archiso_nbd_srv=${pxeserver} checksum verify cow_spacesize=4G copytoram=no
+SYSAPPEND 3
+
+LABEL arch64_nfs
+TEXT HELP
+Boot LinHES using NFS.
+It allows you to install LinHES or perform system maintenance.
+ENDTEXT
+MENU LABEL LinHES (x86_64, NFS)
+LINUX /%INSTALL_DIR%/boot/x86_64/vmlinuz-linux
+INITRD /%INSTALL_DIR%/boot/intel-ucode.img,/%INSTALL_DIR%/boot/amd-ucode.img,/%INSTALL_DIR%/boot/x86_64/initramfs-linux.img
+APPEND archisobasedir=%INSTALL_DIR% archiso_nfs_srv=${pxeserver}:/run/archiso/bootmnt checksum verify cow_spacesize=4G
+SYSAPPEND 3
+
+LABEL arch64_http
+TEXT HELP
+Boot LinHES using HTTP.
+It allows you to install LinHES or perform system maintenance.
+ENDTEXT
+MENU LABEL LinHES (x86_64, HTTP)
+LINUX /%INSTALL_DIR%/boot/x86_64/vmlinuz-linux
+INITRD /%INSTALL_DIR%/boot/intel-ucode.img,/%INSTALL_DIR%/boot/amd-ucode.img,/%INSTALL_DIR%/boot/x86_64/initramfs-linux.img
+APPEND archisobasedir=%INSTALL_DIR% archiso_http_srv=http://${pxeserver}/ checksum verify cow_spacesize=4G copytoram=no
+SYSAPPEND 3
diff --git a/linhes/linhes-dev/LinHES9_iso/cust_skel/syslinux/archiso_pxe.cfg b/linhes/linhes-dev/LinHES9_iso/cust_skel/syslinux/archiso_pxe.cfg
new file mode 100644
index 0000000..b4c9a80
--- /dev/null
+++ b/linhes/linhes-dev/LinHES9_iso/cust_skel/syslinux/archiso_pxe.cfg
@@ -0,0 +1,5 @@
+INCLUDE archiso_head.cfg
+
+INCLUDE archiso_pxe-linux.cfg
+
+INCLUDE archiso_tail.cfg
diff --git a/linhes/linhes-dev/LinHES9_iso/cust_skel/syslinux/archiso_sys-linux.cfg b/linhes/linhes-dev/LinHES9_iso/cust_skel/syslinux/archiso_sys-linux.cfg
new file mode 100644
index 0000000..e0887f2
--- /dev/null
+++ b/linhes/linhes-dev/LinHES9_iso/cust_skel/syslinux/archiso_sys-linux.cfg
@@ -0,0 +1,20 @@
+LABEL arch64
+TEXT HELP
+Boot LinHES install medium on BIOS.
+It allows you to install LinHES or perform system maintenance.
+ENDTEXT
+MENU LABEL LinHES (x86_64, BIOS)
+LINUX /%INSTALL_DIR%/boot/x86_64/vmlinuz-linux
+INITRD /%INSTALL_DIR%/boot/intel-ucode.img,/%INSTALL_DIR%/boot/amd-ucode.img,/%INSTALL_DIR%/boot/x86_64/initramfs-linux.img
+APPEND archisobasedir=%INSTALL_DIR% archisolabel=%ARCHISO_LABEL% cow_spacesize=4G copytoram=no
+
+# Accessibility boot option
+LABEL arch64speech
+TEXT HELP
+Boot LinHES install medium on BIOS with speakup screen reader.
+It allows you to install LinHES or perform system maintenance with speech feedback.
+ENDTEXT
+MENU LABEL LinHES (x86_64, BIOS) with ^speech
+LINUX /%INSTALL_DIR%/boot/x86_64/vmlinuz-linux
+INITRD /%INSTALL_DIR%/boot/intel-ucode.img,/%INSTALL_DIR%/boot/amd-ucode.img,/%INSTALL_DIR%/boot/x86_64/initramfs-linux.img
+APPEND archisobasedir=%INSTALL_DIR% archisolabel=%ARCHISO_LABEL% accessibility=on cow_spacesize=4G copytoram=no
diff --git a/linhes/linhes-dev/LinHES9_iso/cust_skel/syslinux/archiso_sys.cfg b/linhes/linhes-dev/LinHES9_iso/cust_skel/syslinux/archiso_sys.cfg
new file mode 100644
index 0000000..d93bcfe
--- /dev/null
+++ b/linhes/linhes-dev/LinHES9_iso/cust_skel/syslinux/archiso_sys.cfg
@@ -0,0 +1,8 @@
+INCLUDE archiso_head.cfg
+
+DEFAULT arch64
+TIMEOUT 150
+
+INCLUDE archiso_sys-linux.cfg
+
+INCLUDE archiso_tail.cfg
diff --git a/linhes/linhes-dev/LinHES9_iso/cust_skel/syslinux/archiso_tail.cfg b/linhes/linhes-dev/LinHES9_iso/cust_skel/syslinux/archiso_tail.cfg
new file mode 100644
index 0000000..e5339a2
--- /dev/null
+++ b/linhes/linhes-dev/LinHES9_iso/cust_skel/syslinux/archiso_tail.cfg
@@ -0,0 +1,35 @@
+LABEL existing
+TEXT HELP
+Boot an existing operating system.
+Press TAB to edit the disk and partition number to boot.
+ENDTEXT
+MENU LABEL Boot existing OS
+COM32 chain.c32
+APPEND hd0 0
+
+# http://www.memtest.org/
+LABEL memtest
+MENU LABEL Run Memtest86+ (RAM test)
+LINUX /%INSTALL_DIR%/boot/memtest
+
+# http://hdt-project.org/
+LABEL hdt
+MENU LABEL Hardware Information (HDT)
+COM32 hdt.c32
+APPEND modules_alias=hdt/modalias.gz pciids=hdt/pciids.gz
+
+LABEL reboot
+TEXT HELP
+Reboot computer.
+The computer's firmware must support APM.
+ENDTEXT
+MENU LABEL Reboot
+COM32 reboot.c32
+
+LABEL poweroff
+TEXT HELP
+Power off computer.
+The computer's firmware must support APM.
+ENDTEXT
+MENU LABEL Power Off
+COM32 poweroff.c32
diff --git a/linhes/linhes-dev/LinHES9_iso/cust_skel/syslinux/splash.png b/linhes/linhes-dev/LinHES9_iso/cust_skel/syslinux/splash.png
new file mode 100644
index 0000000..f8cc839
Binary files /dev/null and b/linhes/linhes-dev/LinHES9_iso/cust_skel/syslinux/splash.png differ
diff --git a/linhes/linhes-dev/LinHES9_iso/cust_skel/syslinux/syslinux.cfg b/linhes/linhes-dev/LinHES9_iso/cust_skel/syslinux/syslinux.cfg
new file mode 100644
index 0000000..cbda72f
--- /dev/null
+++ b/linhes/linhes-dev/LinHES9_iso/cust_skel/syslinux/syslinux.cfg
@@ -0,0 +1,11 @@
+DEFAULT select
+
+LABEL select
+COM32 whichsys.c32
+APPEND -pxe- pxe -sys- sys -iso- sys
+
+LABEL pxe
+CONFIG archiso_pxe.cfg
+
+LABEL sys
+CONFIG archiso_sys.cfg
-- 
cgit v0.12

