From 7bfef82350cff961727cd45eb36cd7d2c287991c Mon Sep 17 00:00:00 2001 From: debianpepper Date: Tue, 21 May 2024 13:35:35 +0900 Subject: [PATCH] Updated: Move to python hooks First run to see if the singl python hook woll work --- .../normal/deb_64/0520-removeapps.hook.chroot | 12 - .../hooks/normal/deb_64/0540-misc.hook.chroot | 55 +---- .../deb_64/0600-OS-symlinks.hook.chroot | 37 --- .../deb_64/0610-set-permissions.hook.chroot | 52 ---- .../deb_64/0950-final-cleanup.hook.chroot | 39 --- .../deb_64/6050-rename-kernel.hook.binary | 16 -- iso_configs/pylibraries/pepperpy/hooks.py | 233 +++++++++++++++++- python_modules/conf.py | 2 +- 8 files changed, 231 insertions(+), 215 deletions(-) delete mode 100755 iso_configs/hooks/normal/deb_64/0520-removeapps.hook.chroot delete mode 100755 iso_configs/hooks/normal/deb_64/0600-OS-symlinks.hook.chroot delete mode 100755 iso_configs/hooks/normal/deb_64/0610-set-permissions.hook.chroot delete mode 100755 iso_configs/hooks/normal/deb_64/0950-final-cleanup.hook.chroot delete mode 100644 iso_configs/hooks/normal/deb_64/6050-rename-kernel.hook.binary diff --git a/iso_configs/hooks/normal/deb_64/0520-removeapps.hook.chroot b/iso_configs/hooks/normal/deb_64/0520-removeapps.hook.chroot deleted file mode 100755 index 79f0fede..00000000 --- a/iso_configs/hooks/normal/deb_64/0520-removeapps.hook.chroot +++ /dev/null @@ -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 - - - diff --git a/iso_configs/hooks/normal/deb_64/0540-misc.hook.chroot b/iso_configs/hooks/normal/deb_64/0540-misc.hook.chroot index 4d0b3549..83074fc6 100755 --- a/iso_configs/hooks/normal/deb_64/0540-misc.hook.chroot +++ b/iso_configs/hooks/normal/deb_64/0540-misc.hook.chroot @@ -1,58 +1,5 @@ #!/bin/bash - -# Install the Min browser (used for pep tools) -wget -P /opt https://github.com/minbrowser/min/releases/download/v1.32.1/min-1.32.1-amd64.deb -dpkg -i /opt/min-1.32.1-amd64.deb -apt-get install -f -rm /usr/share/applications/min.desktop - - +# run the main Hooks python module python3 /usr/lib/python3/dist-packages/pepperpy/hooks.py -# Install Plank -apt install --yes plank - - -# set the plymouth on boot -plymouth-set-default-theme -R lines - - -# install the Wallpapers -apt install --yes pepermint-wallpapers - - -# 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 diff --git a/iso_configs/hooks/normal/deb_64/0600-OS-symlinks.hook.chroot b/iso_configs/hooks/normal/deb_64/0600-OS-symlinks.hook.chroot deleted file mode 100755 index 29870c0f..00000000 --- a/iso_configs/hooks/normal/deb_64/0600-OS-symlinks.hook.chroot +++ /dev/null @@ -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 - diff --git a/iso_configs/hooks/normal/deb_64/0610-set-permissions.hook.chroot b/iso_configs/hooks/normal/deb_64/0610-set-permissions.hook.chroot deleted file mode 100755 index c6f1558a..00000000 --- a/iso_configs/hooks/normal/deb_64/0610-set-permissions.hook.chroot +++ /dev/null @@ -1,52 +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/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/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" - - diff --git a/iso_configs/hooks/normal/deb_64/0950-final-cleanup.hook.chroot b/iso_configs/hooks/normal/deb_64/0950-final-cleanup.hook.chroot deleted file mode 100755 index 877fb9a3..00000000 --- a/iso_configs/hooks/normal/deb_64/0950-final-cleanup.hook.chroot +++ /dev/null @@ -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 - diff --git a/iso_configs/hooks/normal/deb_64/6050-rename-kernel.hook.binary b/iso_configs/hooks/normal/deb_64/6050-rename-kernel.hook.binary deleted file mode 100644 index 2147845e..00000000 --- a/iso_configs/hooks/normal/deb_64/6050-rename-kernel.hook.binary +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/bash - -# These commands are typically used in the context of updating the -# initial ramdisk image and the kernel image for a live Linux system. -# The steps can be summarized as follows: -# Removal of the current boot files: initrd.img and vmlinuz are -# removed to clear out the old versions. -# Copying the updated versions: New versions of these files, -# which match the patterns initrd.img-* and vmlinuz-*, are copied -# to the standard names initrd.img and vmlinuz. - -rm live/initrd.img -rm live/vmlinuz - -cp live/initrd.img-* live/initrd.img -cp live/vmlinuz-* live/vmlinuz diff --git a/iso_configs/pylibraries/pepperpy/hooks.py b/iso_configs/pylibraries/pepperpy/hooks.py index bd7490f1..55fa9a4c 100644 --- a/iso_configs/pylibraries/pepperpy/hooks.py +++ b/iso_configs/pylibraries/pepperpy/hooks.py @@ -1,7 +1,232 @@ +""" +* Author: "PeppermintOS Team(peppermintosteam@proton.me) +* +* License: SPDX-License-Identifier: GPL-3.0-or-later +* +* This hook is the central one used for all the buiold +* Add things as needed +""" import os -# Update the package lists -os.system('sudo apt update') -# Install KeePassXC -os.system('sudo apt install -y keepassxc') +def apt_install_packages(): + """ + The place where installing apt packaged is preffered during the + hook run ran ther then the general build + """ + os.system('apt update') + os.system('apt install --yes pepermint-wallpapers') + + +def remove_packages_from_the_build(): + """ + Uninstall unwanted packaged from the build + """ + os.system('apt --purge --yes autoremove imagemagick-6.q16') + + +def install_min_browser(): + """ + This minimum browser is used for kumo this will download + the .deb install stall the package, then remove the unneeded + files. + """ + url = ( + "https://github.com/minbrowser/min/releases/download/" + "v1.32.1/min-1.32.1-amd64.deb" + ) + destination = "/opt" + wget_command = f"wget -P {destination} {url}" + os.system(wget_command) + os.system('dpkg -i /opt/min-1.32.1-amd64.deb') + os.system('apt-get install -f') + os.system('rm /usr/share/applications/min.desktop') + os.system('rm /opt/min-1.32.1-amd64.deb') + + +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('rm -f /etc/alternatives/desktop-theme') + os.system('rm -f /etc/alternatives/desktop-grub') + + theme_source = "/usr/share/desktop-base/lines-theme" + theme_destination = "/etc/alternatives/desktop-theme" + theme_command = f"ln -s {theme_source} {theme_destination}" + os.system(theme_command) + + grub_source = ( + "/usr/share/desktop-base/active-theme/grub/" + "pep-grub-16x9.png" + ) + grub_destination = "/etc/alternatives/desktop-grub" + grub_command = f"ln -s {grub_source} {grub_destination}" + os.system(grub_command) + + +def hblock_setup(): + """ + Install hblock to the system + """ + hb_url = "https://raw.githubusercontent.com/hectorm/hblock/master/hblock" + hb_output = "/tmp/hblock" + hb_command = f"curl {hb_url} --output {hb_output}" + os.system(hb_command) + file_path = "/tmp/hblock" + expected_hash = "4031d86cd04fd7c6cb1b7e9acb1ffdbe9a3f84f693bfb287c68e1f1fa2c14c3b" + sh_command = f'[ "$(sha256sum {file_path})" == "{expected_hash}" ]' + os.system(sh_command) + os.system('mv /tmp/hblock /usr/local/bin/hblock') + os.system('chown 0:0 /usr/local/bin/hblock') + os.system('chmod 755 /usr/local/bin/hblock') + os.system('hblock -S none -D none exit 0') + + +def manage_raspi_firmware(): + """ + Manage when the raspi firmware, is removed. + """ + if os.path.exists("/usr/share/peppermint/pep_id"): + os.system("apt remove raspi-firmware -y") + os.system("apt purge raspi-firmware -y") + os.system("apt autoremove -y") + else: + print("not there") + + +def manage_symlinks(): + """ + Symlink management + """ + # Workaround for using snapd on debian. Thank You - @stevesveryown. + os.system('[ ! -e /etc/skel/.local/share ] && mkdir -p /etc/skel/.local/share') + os.system('ln -s snap /usr/bin/snap-store') + # 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. + os.system('ln -s icons /usr/share/pepicons') + os.system('ln -s themes /usr/share/pepthemes') + os.system('ln -s backgrounds /usr/share/pepwallpaper') + + +def set_vi_vim(): + """ + Setting the better version of vim + """ + # A better version of vi and vim than vim-tiny + os.system('rm /etc/alternatives/vi') + os.system('ln -s ../../etc/alternatives/vim /usr/bin/vim') + os.system('ln -s ../../usr/bin/vim.tiny /etc/alternatives/vim') + os.system('ln -s ../../usr/bin/busybox /etc/alternatives/vi') + + +def setting_permissions(): + """ + 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 + os.system('chmod 755 /usr/share/applications/Welcome.desktop') + os.system('chmod 755 /usr/share/applications/plank.desktop') + os.system('chmod 755 /usr/share/applications/kumo.desktop') + os.system('chmod 755 /usr/share/applications/Install-peppermint.desktop') + # Executables + os.system('chmod 755 /usr/local/bin/xDaily') + os.system('chmod 755 /usr/local/bin/kumo') + os.system('chmod 755 /usr/local/bin/welcome') + os.system('chmod 755 /usr/bin/install-peppermint') + # Set permissions on the Python libs + os.system('chmod 755 -R /usr/lib/python3/dist-packages/tendo') + os.system('chmod 755 -R /usr/lib/python3/dist-packages/tendo-0.3.0.dist-info') + os.system('chmod 755 -R /usr/lib/python3/dist-packages/ttkbootstrap') + os.system('chmod 755 -R /usr/lib/python3/dist-packages/ttkbootstrap-1.10.1.dist-info') + os.system('chmod 755 -R /usr/lib/python3/dist-packages/ttkcreator') + # Set permissions on the lines theme + os.system('chmod 755 -R /usr/share/desktop-base/lines-theme') + # Set Grub Themes Permission + os.system('chmod 755 -R /boot/grub/themes') + # Set the Calamares Permissions] + os.system('chmod 755 -R /etc/calamares') + ### After installation, additional groups to add new users to. + os.system('grep -B99 "#EXTRA_GROUPS=" /etc/adduser.conf' + + '> /etc/adduser.conf.new') + os.system('grep "#EXTRA_GROUPS=" /etc/adduser.conf' + + ' | cut -c2-' + + '>> /etc/adduser.conf.new' + ) + os.system('grep -B3 "#ADD_EXTRA_GROUPS=" /etc/adduser.conf >> /etc/adduser.conf.new') + os.system('grep "#ADD_EXTRA_GROUPS=" /etc/adduser.conf | cut -c2- >> /etc/adduser.conf.new') + os.system('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. + os.system('chmod 755 -R /usr/share/icons') + os.system('chmod 755 -R /usr/share/themes') + os.system('chmod 755 -R /usr/share/backgrounds') + os.system('chmod 755 -R /usr/share/pixmaps') + + +def final_cleanup(): + """ + 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. + """ + files_to_remove = [ "/usr/bin/install-debian", + "/usr/share/applications/install-debian.desktop", + "/usr/share/applications/xfburn.desktop", + "/usr/share/applications/luakit.desktop", + "/root/.cache/pip" + ] + for file_path in files_to_remove: + if os.path.exists(file_path): + os.system(f"rm -rf {file_path}") + print(f" Removed: {file_path}") + else: + print(f" The path {file_path} was not found and couldn't be removed.") + ### 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. + os.system('update-icon-caches /usr/share/icons/*') + ### Setting --apt-recommends and --apt-suggests defaults to '0' + os.system('echo -e "# Changing these values to \"1\" may quickly fill up a small partition" > /etc/apt/apt.conf.d/99No-Recommends') + os.system('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 + os.system('echo -e "$(grep -A1 -B20 "Installing grub-efi (uefi)..." /usr/sbin/bootloader-config) --install-recommends" > /tmp/bootloader-config') + os.system('echo -e "$(grep -A2 "else" /usr/sbin/bootloader-config) --install-recommends\nfi" >> /tmp/bootloader-config') + os.system('chmod +x /tmp/bootloader-config && mv /tmp/bootloader-config /usr/sbin/bootloader-confi') + + +def rename_kernel(): + """ + These commands are typically used in the context of updating the + initial ramdisk image and the kernel image for a live Linux system. + The steps can be summarized as follows: + Removal of the current boot files: initrd.img and vmlinuz are + removed to clear out the old versions. + Copying the updated versions: New versions of these files, + which match the patterns initrd.img-* and vmlinuz-*, are copied + to the standard names initrd.img and vmlinuz. + """ + os.system('rm live/initrd.img') + os.system('rm live/vmlinuz') + os.system('cp live/initrd.img-* live/initrd.img') + os.system('cp live/vmlinuz-* live/vmlinuz') + + + +apt_install_packages() +remove_packages_from_the_build() +install_min_browser() +setup_plymouth_theme_grub() +hblock_setup() +manage_raspi_firmware() +manage_symlinks() +set_vi_vim() +setting_permissions() +final_cleanup() +rename_kernel() diff --git a/python_modules/conf.py b/python_modules/conf.py index d48ef70d..339ae2b3 100644 --- a/python_modules/conf.py +++ b/python_modules/conf.py @@ -354,9 +354,9 @@ GENERAL_SHARED_LIST = ('alsa-utils\n' 'libgtk2.0-0\n' 'libgtk2.0-common\n' 'nala\n' - 'neofetch\n' 'network-manager-gnome\n' 'ntp\n' + 'plank\n' 'pulseaudio-module-bluetooth\n' 'python3-pip\n' 'python3-tk\n'