Signed-off-by: debianpepper <pdpdebdevuan@protonmail.com>
This commit is contained in:
debianpepper 2024-05-24 14:14:37 +09:00
parent 4804e73815
commit 7a1f867467
25 changed files with 173 additions and 551 deletions

View File

@ -0,0 +1,3 @@
#!/bin/bash
# run the main Hooks python module
python3 /usr/lib/python3/dist-packages/pepperpy/hooks_live.py

View File

@ -1,101 +0,0 @@
#!/bin/sh
. /lib/live/config.sh
## live-config(7) - System Configuration Components
## Copyright (C) 2016-2020 The Debian Live team
## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch>
##
## This program comes with ABSOLUTELY NO WARRANTY; for details see COPYING.
## This is free software, and you are welcome to redistribute it
## under certain conditions; see COPYING for details.
#set -e
Cmdline ()
{
# Reading kernel command line
for _PARAMETER in ${LIVE_CONFIG_CMDLINE}
do
case "${_PARAMETER}" in
live-config.user-default-groups=*|user-default-groups=*)
LIVE_USER_DEFAULT_GROUPS="${_PARAMETER#*user-default-groups=}"
;;
live-config.user-fullname=*|user-fullname=*)
LIVE_USER_FULLNAME="${_PARAMETER#*user-fullname=}"
;;
live-config.username=*|username=*)
LIVE_USERNAME="${_PARAMETER#*username=}"
;;
esac
done
}
Init ()
{
# Checking if package is installed or already configured
if ! pkg_is_installed "user-setup" || \
component_was_executed "user-setup"
then
exit 0
fi
echo -n " user-setup"
}
Config ()
{
# Checking if package is already configured differently
if grep -q "^${LIVE_USERNAME}:" /etc/passwd
then
exit 0
fi
# Adjust formating of groups
if [ -n "${LIVE_USER_DEFAULT_GROUPS}" ]
then
LIVE_USER_DEFAULT_GROUPS="$(echo ${LIVE_USER_DEFAULT_GROUPS} | sed -e 's|,| |g')"
fi
# Make sure user is not in sudo group if sudo is disabled
case "${LIVE_CONFIG_NOROOT}" in
true)
LIVE_USER_DEFAULT_GROUPS="$(echo ${LIVE_USER_DEFAULT_GROUPS} | sed -e 's|sudo||')"
;;
esac
# Default password is: live
# passwords can be generated with 'echo "live" | mkpasswd -s',
# a blank password is 'U6aMy0wojraho'.
# _PASSWORD="8Ab05sVQ4LLps"
_PASSWORD="U6aMy0wojraho"
cat > /tmp/live-config.cfg << EOF
user-setup passwd/make-user boolean true
user-setup passwd/root-password-crypted string *
user-setup passwd/user-password-crypted string ${_PASSWORD}
user-setup passwd/user-default-groups string ${LIVE_USER_DEFAULT_GROUPS}
user-setup passwd/user-fullname string ${LIVE_USER_FULLNAME}
user-setup passwd/username string ${LIVE_USERNAME}
user-setup passwd/user-uid string 1000
EOF
debconf-set-selections < /tmp/live-config.cfg
rm -f /tmp/live-config.cfg
# Workaround for bug in shadow
set +e
/usr/lib/user-setup/user-setup-apply 2>&1 \
| grep -v "Shadow passwords are now on"
set -e
# Creating state file
touch /var/lib/live/config/user-setup
}
Cmdline
Init
Config

View File

@ -1,12 +0,0 @@
#!/bin/sh
# set the plymouth on boot
plymouth-set-default-theme -R joy
#Remove it first
rm -f /etc/alternatives/desktop-theme
# Then re-add it
ln -s /usr/share/desktop-base/joy-theme /etc/alternatives/desktop-theme

View File

@ -1,9 +0,0 @@
#!/bin/sh
# set installer permissions
chmod 755 /usr/bin/install-peppermint
chmod 755 /usr/share/applications/Install-peppermint.desktop
f=Install-peppermint.desktop ; gio set -t string $f metadata::xfce-exe-checksum "$(sha256sum $f | awk '{print $1}')"
chmod 755 -R /boot/grub/themes
cd /opt
curl -LO https://calamares.io/deploycala.py
python3 deploycala.py

View File

@ -1,6 +0,0 @@
#!/bin/sh
# Remove the grub symlink for the background
rm -f /etc/alternatives/desktop-grub
# Then recreate it with the Pep Background
ln -s /usr/share/desktop-base/active-theme/grub/pep-grub-16x9.png /etc/alternatives/desktop-grub

View File

@ -1,12 +0,0 @@
#!/bin/bash
### Error checking added to "lint-trap" section.
### Missing files no longer cause builds to fail.
# Remove software
# apt remove -y firefox-esr
# apt remove -y termit
apt --purge --yes autoremove gnome-keyring nvidia-tesla-470-alternative systemsettings imagemagick

View File

@ -1,61 +0,0 @@
#!/bin/bash
#git is needed for the git repos
apt install git --yes
#install pip3, needed for additional python modules
apt install --yes python3-pip
apt install --yes python3.11-venv
# Install the Luakit browser (used for pep tools)
apt install --yes luakit
# Install Plank
apt install --yes plank
# set the plymouth on boot
plymouth-set-default-theme -R lines
# install the re keyring
dpkg -i /opt/pepconf/deb-multimedia-keyring_2016.8.1_all.deb
# install the Wallpapers
apt install --yes pepermint-wallpapers
# Install desktop-base
apt install --yes desktop-base
# Set the desktop base theme
# Remove it first
rm -f /etc/alternatives/desktop-theme
# Then re-add it
ln -s /usr/share/desktop-base/lines-theme /etc/alternatives/desktop-theme
# Remove the grub symlink for the background
rm -f /etc/alternatives/desktop-grub
# Then recreate it with the Pep Background
ln -s /usr/share/desktop-base/active-theme/grub/pep-grub-16x9.png /etc/alternatives/desktop-grub
# This will install hblock - a local ad-blocker utility
# https://github.com/hectorm/hblock
# This does not enable it. The user has the choice to turn it on
# by enabling it in PepHub or by typing 'hblock -S builtin' in terminal
curl https://raw.githubusercontent.com/hectorm/hblock/master/hblock --output /tmp/hblock
[ "$(sha256sum /tmp/hblock)" == "4031d86cd04fd7c6cb1b7e9acb1ffdbe9a3f84f693bfb287c68e1f1fa2c14c3b" ]
mv /tmp/hblock /usr/local/bin/hblock
chown 0:0 /usr/local/bin/hblock
chmod 755 /usr/local/bin/hblock
hblock -S none -D none exit 0
# check to see if this is the main line if it is then
# take care of raspi
if [ -e /usr/share/peppermint/pep_id ]
then
apt remove raspi-firmware -y
apt purge raspi-firmware -y
apt autoremove -y
else
echo "not there"
fi

View File

@ -1,37 +0,0 @@
#!/bin/bash
# Installing symlinks in the chroot
# We might be changing directories with each symlink.
# Don't assume each instance will be from ~/ for the root user.
# Workaround for using snapd on debian. Thank You - @stevesveryown.
[ ! -e /etc/skel/.local/share ] && mkdir -p /etc/skel/.local/share
#[ ! -e /var/lib/snapd/desktop/applications ] &&
#mkdir -p /var/lib/snapd/desktop/applications &&
#chmod 777 /var/lib/snapd/desktop/applications
#ln -s /var/lib/snapd/desktop/applications /etc/skel/.local/share/applications
ln -s snap /usr/bin/snap-store
# This fixes the 'Right-Click doesn't open terminal in nemo' issue.
ln -s xfce4-terminal /usr/bin/gnome-terminal
# This work-around lets ICE find Chromium (cromium-browser) in /usr/bin .
# No similar work-arounds were needed for FF, FF-ESR, Chrome or Vivaldi .
ln -s chromium /usr/bin/chromium-browser
# These are for the 3 installer scripts - icons.sh, themes.sh & walls.sh
# In 0610- we set the permissions to 777 on the DIRECTORY, not the contents.
ln -s icons /usr/share/pepicons
ln -s themes /usr/share/pepthemes
ln -s backgrounds /usr/share/pepwallpaper
# A better version of vi and vim than vim-tiny
rm /etc/alternatives/vi
ln -s ../../etc/alternatives/vim /usr/bin/vim
ln -s ../../usr/bin/vim.tiny /etc/alternatives/vim
ln -s ../../usr/bin/busybox /etc/alternatives/vi
# Put a .png at ~/.face from within /etc/skel
#ln -s /usr/share/pixmaps/logo.png /etc/skel/.face

View File

@ -1,54 +0,0 @@
#!/bin/bash
# As we progress, we may find additional files REQUIRING special permissions.
# Set write permissions for these files and directories in the chroot here.
# This allows write access to the Welcome Screen database to users in the "cdrom" group.
# IF this a system wide file, one user can disable or turn it off for *ALL* accounts.
# If this is meant to be on a per user basis, put the .db in ${HOME}/.config .
# Or rewrite welcome.py to write to the .db WHICH user requested to disable this feature.
# Set Permissions on desktop files
# Desktop links
chmod 755 /usr/share/applications/Pephub.desktop
chmod 755 /usr/share/applications/Welcome.desktop
chmod 755 /usr/share/applications/plank.desktop
chmod 755 /usr/share/applications/kumo.desktop
chmod 755 /usr/share/applications/Install-peppermint.desktop
# Executables
chmod 755 /usr/local/bin/hub
chmod 755 /usr/local/bin/xDaily
chmod 755 /usr/local/bin/kumo
chmod 755 /usr/local/bin/welcome
chmod 755 /usr/bin/install-peppermint
# Set permissions on the Python libs
chmod 755 -R /usr/lib/python3/dist-packages/tendo
chmod 755 -R /usr/lib/python3/dist-packages/tendo-0.3.0.dist-info
chmod 755 -R /usr/lib/python3/dist-packages/ttkbootstrap
chmod 755 -R /usr/lib/python3/dist-packages/ttkbootstrap-1.10.1.dist-info
chmod 755 -R /usr/lib/python3/dist-packages/ttkcreator
# Set permissions on the lines theme
chmod 755 -R /usr/share/desktop-base/lines-theme
# Set Grub Themes Permission
chmod 755 -R /boot/grub/themes
# Set the Calamares Permissions]
chmod 755 -R /etc/calamares
### After installation, additional groups to add new users to.
grep -B99 "#EXTRA_GROUPS=" /etc/adduser.conf > /etc/adduser.conf.new
grep "#EXTRA_GROUPS=" /etc/adduser.conf | cut -c2- >> /etc/adduser.conf.new
grep -B3 "#ADD_EXTRA_GROUPS=" /etc/adduser.conf >> /etc/adduser.conf.new
grep "#ADD_EXTRA_GROUPS=" /etc/adduser.conf | cut -c2- >> /etc/adduser.conf.new
grep -B3 "#NAME_REGEX=" /etc/adduser.conf >> /etc/adduser.conf.new
# These are for the 3 installer scripts - icons.sh, themes.sh & walls.sh
# In 0600- we created symlinks to these directories. This makes them writable.
chmod 755 -R /usr/share/icons
chmod 755 -R /usr/share/themes
chmod 755 -R /usr/share/backgrounds
chmod 755 -R /usr/share/pixmaps
# Quick patch from https://www.zdnet.com/article/major-linux-policykit-security-vulnerability-uncovered-pwnkit/
#chmod 0755 /usr/bin/pkexec # Their patch didn't work "pkexec must be setuid root"

View File

@ -1,39 +0,0 @@
#!/bin/bash
### Error checking added to "lint-trap" section.
### Missing files no longer cause builds to fail.
### Do NOT remove these files.
# /usr/share/lightdm/lightdm.conf.d/01_debian.conf
## This section is the "lint-trap" to remove files and/or
## directories not associated with or required by PepOS.
## Followed by \ , add files to be removed, one per line.
for i in \
/usr/bin/install-debian \
/usr/share/applications/install-debian.desktop \
/usr/share/applications/xfburn.desktop \
/usr/share/applications/luakit.desktop \
/root/.cache/pip \
do [ -e $i ] &&
rm -rf ${i} ||
echo " The path ${i} was not found and couldn't be removed."
done
### This might be better in an OS-tweaks hook script.
# Lowers the footprint in RAM by 200 MB at the small expense of added size to the ISO.
update-icon-caches /usr/share/icons/*
### Setting --apt-recommends and --apt-suggests defaults to '0'
echo -e "# Changing these values to \"1\" may quickly fill up a small partition" > /etc/apt/apt.conf.d/99No-Recommends
echo -e "APT::Install-Recommends \"0\";\nAPT::Install-Suggests \"0\";" >> /etc/apt/apt.conf.d/99No-Recommends
### Fixes the "Not installing grub for UEFI Secure Boot" in all versions , after the default was changed.
#sed s/keyutils/"keyutils --install-recommends"/ /usr/sbin/bootloader-config > /tmp/bootloader-config
echo -e "$(grep -A1 -B20 "Installing grub-efi (uefi)..." /usr/sbin/bootloader-config) --install-recommends" > /tmp/bootloader-config
echo -e "$(grep -A2 "else" /usr/sbin/bootloader-config) --install-recommends\nfi" >> /tmp/bootloader-config
chmod +x /tmp/bootloader-config && mv /tmp/bootloader-config /usr/sbin/bootloader-config

View File

@ -1,7 +0,0 @@
#!/bin/bash
#John's note: this will not harm the other architectures.
rm live/initrd.img
rm live/vmlinuz
cp live/initrd.img-* live/initrd.img
cp live/vmlinuz-* live/vmlinuz

View File

@ -1,12 +0,0 @@
#!/bin/bash
### Error checking added to "lint-trap" section.
### Missing files no longer cause builds to fail.
# Remove software
# apt remove -y firefox-esr
# apt remove -y termit
apt --purge --yes autoremove gnome-keyring nvidia-tesla-470-alternative systemsettings imagemagick

View File

@ -1,61 +0,0 @@
#!/bin/bash
#git is needed for the git repos
apt install git --yes
#install pip3, needed for additional python modules
apt install --yes python3-pip
apt install --yes python3.11-venv
# Install the Luakit browser (used for pep tools)
apt install --yes luakit
# Install Plank
apt install --yes plank
# set the plymouth on boot
plymouth-set-default-theme -R lines
# install the re keyring
dpkg -i /opt/pepconf/deb-multimedia-keyring_2016.8.1_all.deb
# install the Wallpapers
apt install --yes pepermint-wallpapers
# Install desktop-base
apt install --yes desktop-base
# Set the desktop base theme
# Remove it first
rm -f /etc/alternatives/desktop-theme
# Then re-add it
ln -s /usr/share/desktop-base/lines-theme /etc/alternatives/desktop-theme
# Remove the grub symlink for the background
rm -f /etc/alternatives/desktop-grub
# Then recreate it with the Pep Background
ln -s /usr/share/desktop-base/active-theme/grub/pep-grub-16x9.png /etc/alternatives/desktop-grub
# This will install hblock - a local ad-blocker utility
# https://github.com/hectorm/hblock
# This does not enable it. The user has the choice to turn it on
# by enabling it in PepHub or by typing 'hblock -S builtin' in terminal
curl https://raw.githubusercontent.com/hectorm/hblock/master/hblock --output /tmp/hblock
[ "$(sha256sum /tmp/hblock)" == "4031d86cd04fd7c6cb1b7e9acb1ffdbe9a3f84f693bfb287c68e1f1fa2c14c3b" ]
mv /tmp/hblock /usr/local/bin/hblock
chown 0:0 /usr/local/bin/hblock
chmod 755 /usr/local/bin/hblock
hblock -S none -D none exit 0
# check to see if this is the main line if it is then
# take care of raspi
if [ -e /usr/share/peppermint/pep_id ]
then
apt remove raspi-firmware -y
apt purge raspi-firmware -y
apt autoremove -y
else
echo "not there"
fi

View File

@ -1,37 +0,0 @@
#!/bin/bash
# Installing symlinks in the chroot
# We might be changing directories with each symlink.
# Don't assume each instance will be from ~/ for the root user.
# Workaround for using snapd on debian. Thank You - @stevesveryown.
[ ! -e /etc/skel/.local/share ] && mkdir -p /etc/skel/.local/share
#[ ! -e /var/lib/snapd/desktop/applications ] &&
#mkdir -p /var/lib/snapd/desktop/applications &&
#chmod 777 /var/lib/snapd/desktop/applications
#ln -s /var/lib/snapd/desktop/applications /etc/skel/.local/share/applications
ln -s snap /usr/bin/snap-store
# This fixes the 'Right-Click doesn't open terminal in nemo' issue.
ln -s xfce4-terminal /usr/bin/gnome-terminal
# This work-around lets ICE find Chromium (cromium-browser) in /usr/bin .
# No similar work-arounds were needed for FF, FF-ESR, Chrome or Vivaldi .
ln -s chromium /usr/bin/chromium-browser
# These are for the 3 installer scripts - icons.sh, themes.sh & walls.sh
# In 0610- we set the permissions to 777 on the DIRECTORY, not the contents.
ln -s icons /usr/share/pepicons
ln -s themes /usr/share/pepthemes
ln -s backgrounds /usr/share/pepwallpaper
# A better version of vi and vim than vim-tiny
rm /etc/alternatives/vi
ln -s ../../etc/alternatives/vim /usr/bin/vim
ln -s ../../usr/bin/vim.tiny /etc/alternatives/vim
ln -s ../../usr/bin/busybox /etc/alternatives/vi
# Put a .png at ~/.face from within /etc/skel
#ln -s /usr/share/pixmaps/logo.png /etc/skel/.face

View File

@ -1,54 +0,0 @@
#!/bin/bash
# As we progress, we may find additional files REQUIRING special permissions.
# Set write permissions for these files and directories in the chroot here.
# This allows write access to the Welcome Screen database to users in the "cdrom" group.
# IF this a system wide file, one user can disable or turn it off for *ALL* accounts.
# If this is meant to be on a per user basis, put the .db in ${HOME}/.config .
# Or rewrite welcome.py to write to the .db WHICH user requested to disable this feature.
# Set Permissions on desktop files
# Desktop links
chmod 755 /usr/share/applications/Pephub.desktop
chmod 755 /usr/share/applications/Welcome.desktop
chmod 755 /usr/share/applications/plank.desktop
chmod 755 /usr/share/applications/kumo.desktop
chmod 755 /usr/share/applications/Install-peppermint.desktop
# Executables
chmod 755 /usr/local/bin/hub
chmod 755 /usr/local/bin/xDaily
chmod 755 /usr/local/bin/kumo
chmod 755 /usr/local/bin/welcome
chmod 755 /usr/bin/install-peppermint
# Set permissions on the Python libs
chmod 755 -R /usr/lib/python3/dist-packages/tendo
chmod 755 -R /usr/lib/python3/dist-packages/tendo-0.3.0.dist-info
chmod 755 -R /usr/lib/python3/dist-packages/ttkbootstrap
chmod 755 -R /usr/lib/python3/dist-packages/ttkbootstrap-1.10.1.dist-info
chmod 755 -R /usr/lib/python3/dist-packages/ttkcreator
# Set permissions on the lines theme
chmod 755 -R /usr/share/desktop-base/lines-theme
# Set Grub Themes Permission
chmod 755 -R /boot/grub/themes
# Set the Calamares Permissions]
chmod 755 -R /etc/calamares
### After installation, additional groups to add new users to.
grep -B99 "#EXTRA_GROUPS=" /etc/adduser.conf > /etc/adduser.conf.new
grep "#EXTRA_GROUPS=" /etc/adduser.conf | cut -c2- >> /etc/adduser.conf.new
grep -B3 "#ADD_EXTRA_GROUPS=" /etc/adduser.conf >> /etc/adduser.conf.new
grep "#ADD_EXTRA_GROUPS=" /etc/adduser.conf | cut -c2- >> /etc/adduser.conf.new
grep -B3 "#NAME_REGEX=" /etc/adduser.conf >> /etc/adduser.conf.new
# These are for the 3 installer scripts - icons.sh, themes.sh & walls.sh
# In 0600- we created symlinks to these directories. This makes them writable.
chmod 755 -R /usr/share/icons
chmod 755 -R /usr/share/themes
chmod 755 -R /usr/share/backgrounds
chmod 755 -R /usr/share/pixmaps
# Quick patch from https://www.zdnet.com/article/major-linux-policykit-security-vulnerability-uncovered-pwnkit/
#chmod 0755 /usr/bin/pkexec # Their patch didn't work "pkexec must be setuid root"

View File

@ -1,39 +0,0 @@
#!/bin/bash
### Error checking added to "lint-trap" section.
### Missing files no longer cause builds to fail.
### Do NOT remove these files.
# /usr/share/lightdm/lightdm.conf.d/01_debian.conf
## This section is the "lint-trap" to remove files and/or
## directories not associated with or required by PepOS.
## Followed by \ , add files to be removed, one per line.
for i in \
/usr/bin/install-debian \
/usr/share/applications/install-debian.desktop \
/usr/share/applications/xfburn.desktop \
/usr/share/applications/luakit.desktop \
/root/.cache/pip \
do [ -e $i ] &&
rm -rf ${i} ||
echo " The path ${i} was not found and couldn't be removed."
done
### This might be better in an OS-tweaks hook script.
# Lowers the footprint in RAM by 200 MB at the small expense of added size to the ISO.
update-icon-caches /usr/share/icons/*
### Setting --apt-recommends and --apt-suggests defaults to '0'
echo -e "# Changing these values to \"1\" may quickly fill up a small partition" > /etc/apt/apt.conf.d/99No-Recommends
echo -e "APT::Install-Recommends \"0\";\nAPT::Install-Suggests \"0\";" >> /etc/apt/apt.conf.d/99No-Recommends
### Fixes the "Not installing grub for UEFI Secure Boot" in all versions , after the default was changed.
#sed s/keyutils/"keyutils --install-recommends"/ /usr/sbin/bootloader-config > /tmp/bootloader-config
echo -e "$(grep -A1 -B20 "Installing grub-efi (uefi)..." /usr/sbin/bootloader-config) --install-recommends" > /tmp/bootloader-config
echo -e "$(grep -A2 "else" /usr/sbin/bootloader-config) --install-recommends\nfi" >> /tmp/bootloader-config
chmod +x /tmp/bootloader-config && mv /tmp/bootloader-config /usr/sbin/bootloader-config

View File

@ -1,7 +0,0 @@
#!/bin/bash
#John's note: this will not harm the other architectures.
rm live/initrd.img
rm live/vmlinuz
cp live/initrd.img-* live/initrd.img
cp live/vmlinuz-* live/vmlinuz

View File

@ -0,0 +1,9 @@
#!/bin/bash
# run the main Hooks python module
python3 /usr/lib/python3/dist-packages/pepperpy/hooks.py
### Setting --apt-recommends and --apt-suggests defaults to '0'
echo -e "# Changing these values to \"1\" may quickly fill up a small partition" > /etc/apt/apt.conf.d/99No-Recommends
echo -e "APT::Install-Recommends \"0\";\nAPT::Install-Suggests \"0\";" >> /etc/apt/apt.conf.d/99No-Recommends

View File

@ -0,0 +1,9 @@
#!/bin/bash
# run the main Hooks python module
python3 /usr/lib/python3/dist-packages/pepperpy/hooks.py
### Setting --apt-recommends and --apt-suggests defaults to '0'
echo -e "# Changing these values to \"1\" may quickly fill up a small partition" > /etc/apt/apt.conf.d/99No-Recommends
echo -e "APT::Install-Recommends \"0\";\nAPT::Install-Suggests \"0\";" >> /etc/apt/apt.conf.d/99No-Recommends

View File

@ -3,7 +3,7 @@
*
* License: SPDX-License-Identifier: GPL-3.0-or-later
*
* This hook is the central one used for all the buiold
* This hook is the central one used for all the builds
* Add things as needed
"""
import os
@ -49,11 +49,11 @@ def setup_plymouth_theme_grub():
"""
Set the plymouth boot theme and desktop theme, as well as grub
"""
os.system('plymouth-set-default-theme -R lines')
os.system('plymouth-set-default-theme -R joy')
os.system('rm -f /etc/alternatives/desktop-theme')
os.system('rm -f /etc/alternatives/desktop-grub')
theme_source = "/usr/share/desktop-base/lines-theme"
theme_source = "/usr/share/desktop-base/joy-theme"
theme_destination = "/etc/alternatives/desktop-theme"
theme_command = f"ln -s {theme_source} {theme_destination}"
os.system(theme_command)

View File

@ -0,0 +1,149 @@
"""
* Author: "PeppermintOS Team(peppermintosteam@proton.me)
*
* License: SPDX-License-Identifier: GPL-3.0-or-later
*
* This hook is the central one used for the live session
* Add things as needed
"""
import os
import subprocess
def cmdline():
""" Function to read kernel command line parameters """
global LIVE_USER_DEFAULT_GROUPS, LIVE_USER_FULLNAME, LIVE_USERNAME
LIVE_USER_DEFAULT_GROUPS = ""
LIVE_USER_FULLNAME = ""
LIVE_USERNAME = ""
# Read kernel command line parameters
with open("/proc/cmdline", "r") as f:
cmdline_params = f.read().split()
for param in cmdline_params:
if "live-config.user-default-groups=" in param or "user-default-groups=" in param:
LIVE_USER_DEFAULT_GROUPS = param.split('=')[-1]
elif "live-config.user-fullname=" in param or "user-fullname=" in param:
LIVE_USER_FULLNAME = param.split('=')[-1]
elif "live-config.username=" in param or "username=" in param:
LIVE_USERNAME = param.split('=')[-1]
def pkg_is_installed(pkg_name):
""" Function to check if a package is installed """
result = subprocess.run(['dpkg', '-s', pkg_name], stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
return result.returncode == 0
def component_was_executed(component_name):
""" Function to check if a component was executed """
return os.path.exists(f"/var/lib/live/config/{component_name}")
def init():
""" Initialization function """
if not pkg_is_installed("user-setup") or component_was_executed("user-setup"):
exit(0)
print(" user-setup", end='')
def config():
""" Configuration function """
global LIVE_USER_DEFAULT_GROUPS
# Check if user is already configured
with open("/etc/passwd", "r") as f:
if any(LIVE_USERNAME in line for line in f):
exit(0)
# Adjust formatting of groups
if LIVE_USER_DEFAULT_GROUPS:
LIVE_USER_DEFAULT_GROUPS = LIVE_USER_DEFAULT_GROUPS.replace(",", " ")
# Make sure user is not in sudo group if sudo is disabled
if os.getenv("LIVE_CONFIG_NOROOT") == "true":
LIVE_USER_DEFAULT_GROUPS = LIVE_USER_DEFAULT_GROUPS.replace("sudo", "")
# Default password is 'U6aMy0wojraho' (blank password)
_PASSWORD = "U6aMy0wojraho"
# Write configuration to temporary file
with open("/tmp/live-config.cfg", "w") as f:
f.write(f"""user-setup passwd/make-user boolean true
user-setup passwd/root-password-crypted string *
user-setup passwd/user-password-crypted string {_PASSWORD}
user-setup passwd/user-default-groups string {LIVE_USER_DEFAULT_GROUPS}
user-setup passwd/user-fullname string {LIVE_USER_FULLNAME}
user-setup passwd/username string {LIVE_USERNAME}
user-setup passwd/user-uid string 1000
""")
# Apply configuration
subprocess.run(['debconf-set-selections', '<', '/tmp/live-config.cfg'],
shell=True)
os.remove("/tmp/live-config.cfg")
# Workaround for bug in shadow
result = subprocess.run(['/usr/lib/user-setup/user-setup-apply'],
stderr=subprocess.PIPE)
for line in result.stderr.decode().split('\n'):
if "Shadow passwords are now on" not in line:
print(line)
# Creating state file
with open("/var/lib/live/config/user-setup", "w") as f:
f.write("")
def set_plymouth():
"""
1. set the plymouth on boot
2. Remove the defauly theme
3. Re added the new default theme
"""
source = '/usr/share/desktop-base/joy-theme'
destination = '/etc/alternatives/desktop-theme'
os.system('plymouth-set-default-theme -R joy')
os.system('rm -f /etc/alternatives/desktop-theme')
os.system(f'ln -sf {source} {destination}')
def set_installer_permissions():
"""
set permmissions needed for general install
"""
source = '/usr/share/desktop-base/joy-theme'
destination = '/etc/alternatives/desktop-theme'
makelnk = f'ln -sf {source} {destination}'
os.system('chmod 755 /usr/bin/install-peppermint')
os.system('chmod 755 /usr/share/applications/Install-peppermint.desktop')
os.system(makelnk)
os.system('chmod 755 -R /boot/grub/themes')
os.system('cd /opt')
os.system('curl -LO https://calamares.io/deploycala.py')
os.system('python3 deploycala.py')
def other_misc_settings():
"""
Other settings as needed
"""
source ="/usr/share/desktop-base/active-theme/grub/pep-grub-16x9.png"
destination = "/etc/alternatives/desktop-grub"
makelnk = f'ln -sf {source} {destination}'
# Remove the grub symlink for the background
os.system('rm -f /etc/alternatives/desktop-grub')
# Then recreate it with the Pep Background
os.system(makelnk)
# Main execution
cmdline()
init()
config()
set_plymouth()
set_installer_permissions()