Updated: Move to python hooks
First run to see if the singl python hook woll work
This commit is contained in:
parent
6e53ed85d5
commit
7bfef82350
|
@ -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
|
||||
|
||||
|
||||
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
@ -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"
|
||||
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
|
@ -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()
|
||||
|
|
|
@ -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'
|
||||
|
|
Loading…
Reference in New Issue