diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..3ecb8fc --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,6 @@ +{ + "[python]": { + "editor.defaultFormatter": "ms-python.autopep8" + }, + "python.formatting.provider": "none" +} diff --git a/01_prepare.sh b/01_prepare.sh index 11abf96..0501591 100755 --- a/01_prepare.sh +++ b/01_prepare.sh @@ -1,9 +1,8 @@ #!/bin/bash -sudo pacman -Sw --noconfirm --cachedir "/disk/github/active/make_iso/melawy-archiso/airootfs/opt/extra-drivers" r8168 +sudo pacman -Sw --noconfirm --cachedir "./airootfs/opt/extra-drivers" r8168 -sudo pacman -Sw --noconfirm --cachedir "/disk/github/active/make_iso/melawy-archiso/airootfs/usr/share/packages" dracut \ -dracut-hook \ +sudo pacman -Sw --noconfirm --cachedir "./airootfs/usr/share/packages" dracut \ grub \ kernel-install-for-dracut \ libxvmc \ @@ -14,4 +13,5 @@ linux-xanmod-anbox \ linux-xanmod-anbox-headers \ os-prober \ refind \ +update-grub \ xf86-video-intel diff --git a/03_boot.sh b/03_boot.sh new file mode 100644 index 0000000..89bdea4 --- /dev/null +++ b/03_boot.sh @@ -0,0 +1,29 @@ +#!/bin/bash + +#qemu-system-x86_64 -boot d -cdrom ./out/melawy-linux-2023.10.02-x86_64.iso -usb -vga virtio -display spice-app -full-screen -net nic -net user -m 8192 -smbios type=0,uefi=on -smp cpus=4 -enable-kvm -bios /usr/share/ovmf/x64/OVMF.fd + +cp -av -- '/usr/share/edk2-ovmf/x64/OVMF_VARS.fd' "./out/" + +qemu-system-x86_64 \ +-boot order=d,menu=on,reboot-timeout=5000 \ +-cdrom ./out/melawy-linux-2023.10.02-x86_64.iso \ +-smbios type=0,uefi=on \ +-smp cpus=4 \ +-m 8192 \ +-usb \ +-k en-us \ +-name archiso,process=archiso_0 \ +-display sdl,gl=on,show-cursor=on,window-close=on \ +-vga virtio \ +-full-screen \ +-audiodev pa,id=snd0 \ +-device ich9-intel-hda \ +-device hda-output,audiodev=snd0 \ +-device virtio-net-pci,romfile=,netdev=net0 -netdev user,id=net0,hostfwd=tcp::60022-:22 \ +-machine type=q35,smm=on,accel=kvm,usb=on,pcspk-audiodev=snd0 \ +-global ICH9-LPC.disable_s3=1 \ +-enable-kvm \ +-drive "if=pflash,format=raw,unit=0,file=/usr/share/edk2-ovmf/x64/OVMF_CODE.fd,read-only=on" \ +-drive "if=pflash,format=raw,unit=1,file=./out/OVMF_VARS.fd" \ +-global "driver=cfi.pflash01,property=secure,value=off" \ +-serial stdio diff --git a/airootfs/etc/NetworkManager/NetworkManager.conf b/airootfs/etc/NetworkManager/NetworkManager.conf new file mode 100644 index 0000000..eed717a --- /dev/null +++ b/airootfs/etc/NetworkManager/NetworkManager.conf @@ -0,0 +1,5 @@ +# Configuration file for NetworkManager. +# See "man 5 NetworkManager.conf" for details. + +[device] +wifi.scan-rand-mac-address=no diff --git a/airootfs/etc/dev-rel b/airootfs/etc/dev-rel new file mode 100644 index 0000000..1bb79be --- /dev/null +++ b/airootfs/etc/dev-rel @@ -0,0 +1,3 @@ +ISO_RELEASE=08-12-2023 +ISO_CODENAME=MelawyLinux +ISO_BUILD=08-12-2023 diff --git a/airootfs/etc/environment b/airootfs/etc/environment old mode 100644 new mode 100755 index fe6bd67..93e2951 --- a/airootfs/etc/environment +++ b/airootfs/etc/environment @@ -3,7 +3,6 @@ # # Syntax: simple "KEY=VAL" pairs on separate lines # -#QT_QPA_PLATFORMTHEME=qt5ct -#QT_STYLE_OVERRIDE=kvantum BROWSER=firefox EDITOR=nano +ZPOOL_VDEV_NAME_PATH=1 diff --git a/airootfs/etc/fonts/local.conf b/airootfs/etc/fonts/local.conf new file mode 100644 index 0000000..5130e09 --- /dev/null +++ b/airootfs/etc/fonts/local.conf @@ -0,0 +1,122 @@ +<?xml version='1.0'?> +<!DOCTYPE fontconfig SYSTEM 'fonts.dtd'> +<fontconfig> + + <match target="font"> + <edit name="autohint" mode="assign"> + <bool>true</bool> + </edit> + <edit name="hinting" mode="assign"> + <bool>true</bool> + </edit> + <edit mode="assign" name="hintstyle"> + <const>hintslight</const> + </edit> + <edit mode="assign" name="lcdfilter"> + <const>lcddefault</const> + </edit> + </match> + + <!-- Default sans-serif font --> + <match target="pattern"> + <test qual="any" name="family"><string>-apple-system</string></test> + <!--<test qual="any" name="lang"><string>ja</string></test>--> + <edit name="family" mode="prepend" binding="same"><string>Tex Gyre Heros</string></edit> + </match> + <match target="pattern"> + <test qual="any" name="family"><string>Helvetica Neue</string></test> + <!--<test qual="any" name="lang"><string>ja</string></test>--> + <edit name="family" mode="prepend" binding="same"><string>Tex Gyre Heros</string></edit> + </match> + <match target="pattern"> + <test qual="any" name="family"><string>Helvetica</string></test> + <!--<test qual="any" name="lang"><string>ja</string></test>--> + <edit name="family" mode="prepend" binding="same"><string>Tex Gyre Heros</string></edit> + </match> + <match target="pattern"> + <test qual="any" name="family"><string>arial</string></test> + <!--<test qual="any" name="lang"><string>ja</string></test>--> + <edit name="family" mode="prepend" binding="same"><string>Tex Gyre Heros</string></edit> + </match> + <match target="pattern"> + <test qual="any" name="family"><string>sans-serif</string></test> + <!--<test qual="any" name="lang"><string>ja</string></test>--> + <edit name="family" mode="prepend" binding="same"><string>Tex Gyre Heros</string></edit> + </match> + + <!-- Default serif fonts --> + <match target="pattern"> + <test qual="any" name="family"><string>serif</string></test> + <edit name="family" mode="prepend" binding="same"><string>Libertinus Serif</string></edit> + <edit name="family" mode="prepend" binding="same"><string>Noto Serif</string></edit> + <edit name="family" mode="prepend" binding="same"><string>Noto Color Emoji</string></edit> + <edit name="family" mode="append" binding="same"><string>IPAPMincho</string></edit> + <edit name="family" mode="append" binding="same"><string>HanaMinA</string></edit> + </match> + + <!-- Default monospace fonts --> + <match target="pattern"> + <test qual="any" name="family"><string>SFMono-Regular</string></test> + <edit name="family" mode="prepend" binding="same"><string>DM Mono</string></edit> + <edit name="family" mode="prepend" binding="same"><string>Space Mono</string></edit> + <edit name="family" mode="append" binding="same"><string>Inconsolatazi4</string></edit> + <edit name="family" mode="append" binding="same"><string>IPAGothic</string></edit> + </match> + <match target="pattern"> + <test qual="any" name="family"><string>Menlo</string></test> + <edit name="family" mode="prepend" binding="same"><string>DM Mono</string></edit> + <edit name="family" mode="prepend" binding="same"><string>Space Mono</string></edit> + <edit name="family" mode="append" binding="same"><string>Inconsolatazi4</string></edit> + <edit name="family" mode="append" binding="same"><string>IPAGothic</string></edit> + </match> + <match target="pattern"> + <test qual="any" name="family"><string>monospace</string></test> + <edit name="family" mode="prepend" binding="same"><string>DM Mono</string></edit> + <edit name="family" mode="prepend" binding="same"><string>Space Mono</string></edit> + <edit name="family" mode="append" binding="same"><string>Inconsolatazi4</string></edit> + <edit name="family" mode="append" binding="same"><string>IPAGothic</string></edit> + </match> + + <!-- Fallback fonts preference order --> + <alias> + <family>sans-serif</family> + <prefer> + <family>Noto Sans</family> + <family>Noto Color Emoji</family> + <family>Noto Emoji</family> + <family>Open Sans</family> + <family>Droid Sans</family> + <family>Ubuntu</family> + <family>Roboto</family> + <family>NotoSansCJK</family> + <family>Source Han Sans JP</family> + <family>IPAPGothic</family> + <family>VL PGothic</family> + <family>Koruri</family> + </prefer> + </alias> + <alias> + <family>serif</family> + <prefer> + <family>Noto Serif</family> + <family>Noto Color Emoji</family> + <family>Noto Emoji</family> + <family>Droid Serif</family> + <family>Roboto Slab</family> + <family>IPAPMincho</family> + </prefer> + </alias> + <alias> + <family>monospace</family> + <prefer> + <family>Noto Sans Mono</family> + <family>Noto Color Emoji</family> + <family>Noto Emoji</family> + <family>Inconsolatazi4</family> + <family>Ubuntu Mono</family> + <family>Droid Sans Mono</family> + <family>Roboto Mono</family> + <family>IPAGothic</family> + </prefer> + </alias> +</fontconfig> diff --git a/airootfs/etc/group b/airootfs/etc/group index 2f50b54..93e6a62 100644 --- a/airootfs/etc/group +++ b/airootfs/etc/group @@ -1,16 +1,17 @@ root:x:0:root sys:x:3:bin,liveuser +adm:x:4:liveuser +wheel:x:10:liveuser +uucp:x:14:liveuser network:x:90:liveuser power:x:98:liveuser -adm:x:999:liveuser -wheel:x:998:liveuser -uucp:x:987:liveuser -optical:x:990:liveuser -rfkill:x:983:liveuser -video:x:986:liveuser -storage:x:988:liveuser -audio:x:995:liveuser -users:x:985:liveuser nopasswdlogin:x:966:liveuser autologin:x:967:liveuser -liveuser:x:1000: \ No newline at end of file +rfkill:x:983:liveuser +users:x:985:liveuser +video:x:986:liveuser +storage:x:988:liveuser +optical:x:990:liveuser +audio:x:995:liveuser +liveuser:x:1000: +liveuser:x:1000:liveuser diff --git a/airootfs/etc/gshadow b/airootfs/etc/gshadow index 8bf2275..91db3d8 100644 --- a/airootfs/etc/gshadow +++ b/airootfs/etc/gshadow @@ -1,10 +1,10 @@ -root:::root +root:!*::root sys:!!::liveuser -network:!!::liveuser -power:!!::liveuser adm:!!::liveuser wheel:!!::liveuser uucp:!!::liveuser +network:!!::liveuser +power:!!::liveuser optical:!!::liveuser rfkill:!!::liveuser video:!!::liveuser @@ -13,4 +13,4 @@ audio:!!::liveuser users:!!::liveuser nopasswdlogin:!::liveuser autologin:!::liveuser -liveuser:!:: +liveuser:!*:: diff --git a/airootfs/etc/hostname b/airootfs/etc/hostname index 51fbdc7..ca976d5 100644 --- a/airootfs/etc/hostname +++ b/airootfs/etc/hostname @@ -1 +1,3 @@ +# +# SPDX-License-Identifier: GPL-3.0-or-later Melawy-Linux diff --git a/airootfs/etc/locale.conf b/airootfs/etc/locale.conf index f318dbb..8f62933 100644 --- a/airootfs/etc/locale.conf +++ b/airootfs/etc/locale.conf @@ -1,3 +1,6 @@ +# +# SPDX-License-Identifier: GPL-3.0-or-later + LANG=ru_RU.UTF-8 LC_ADDRESS=ru_RU.UTF-8 LC_IDENTIFICATION=ru_RU.UTF-8 diff --git a/airootfs/etc/makepkg.conf b/airootfs/etc/makepkg.conf index 8b5003e..4fe6679 100644 --- a/airootfs/etc/makepkg.conf +++ b/airootfs/etc/makepkg.conf @@ -136,7 +136,7 @@ DBGSRCDIR="/usr/src/debug" # COMPRESSGZ=(gzip -c -f -n) COMPRESSBZ2=(bzip2 -c -f) -COMPRESSXZ=(xz -c -z --threads=0 -9 -e -) +COMPRESSXZ=(xz -vv -c -z --threads=0 -9 -e -) COMPRESSZST=(zstd -c -z -q -) COMPRESSLRZ=(lrzip -q) COMPRESSLZO=(lzop -q) diff --git a/airootfs/etc/melawy-linux-release b/airootfs/etc/melawy-linux-release new file mode 100644 index 0000000..f4fd41e --- /dev/null +++ b/airootfs/etc/melawy-linux-release @@ -0,0 +1,4 @@ +LSB_VERSION=1.4 +DISTRIB_ID=MelawyLinux +DISTRIB_RELEASE=rolling +DISTRIB_DESCRIPTION="MelawyLinux" diff --git a/airootfs/etc/mkinitcpio.conf b/airootfs/etc/mkinitcpio.conf index 1541dca..8123c43 100644 --- a/airootfs/etc/mkinitcpio.conf +++ b/airootfs/etc/mkinitcpio.conf @@ -3,7 +3,7 @@ # The following modules are loaded before any boot hooks are # run. Advanced users may wish to specify all system modules # in this array. For instance: -# MODULES=(piix ide_disk reiserfs) +# MODULES=(usbhid xhci_hcd piix ide_disk reiserfs) MODULES=(vmd) # BINARIES @@ -49,21 +49,27 @@ FILES=() # ## NOTE: If you have /usr on a separate partition, you MUST include the # usr, fsck and shutdown hooks. -HOOKS=(base udev modconf kms keyboard keymap consolefont memdisk archiso archiso_loop_mnt archiso_pxe_common archiso_pxe_nbd archiso_pxe_http archiso_pxe_nfs block filesystems plymouth) +HOOKS=(base udev modconf kms keymap consolefont memdisk archiso archiso_loop_mnt archiso_pxe_common archiso_pxe_nbd archiso_pxe_http archiso_pxe_nfs block filesystems keyboard plymouth) #HOOKS=(base systemd systemd-tool modconf kms memdisk archiso archiso_loop_mnt archiso_pxe_common archiso_pxe_nbd archiso_pxe_http archiso_pxe_nfs block filesystems keyboard sd-vconsole plymouth sd-shutdown) # COMPRESSION -# Use this to compress the initramfs image. By default, gzip compression +# Use this to compress the initramfs image. By default, zstd compression # is used. Use 'cat' to create an uncompressed image. +#COMPRESSION="zstd" #COMPRESSION="gzip" #COMPRESSION="bzip2" #COMPRESSION="lzma" #COMPRESSION="xz" #COMPRESSION="lzop" #COMPRESSION="lz4" -COMPRESSION="zstd" # COMPRESSION_OPTIONS # Additional options for the compressor #COMPRESSION_OPTIONS=() + +# MODULES_DECOMPRESS +# Decompress kernel modules during initramfs creation. +# Enable to speedup boot process, disable to save RAM +# during early userspace. Switch (yes/no). +#MODULES_DECOMPRESS="yes" diff --git a/airootfs/etc/modprobe.d/iwlwifi.conf b/airootfs/etc/modprobe.d/iwlwifi.conf new file mode 100644 index 0000000..c920c66 --- /dev/null +++ b/airootfs/etc/modprobe.d/iwlwifi.conf @@ -0,0 +1 @@ +options iwlwifi bt_coex_active=0 swcrypto=1 11n_disable=8 diff --git a/airootfs/etc/modprobe.d/nvidia-utils.conf b/airootfs/etc/modprobe.d/nvidia-utils.conf new file mode 100644 index 0000000..017b682 --- /dev/null +++ b/airootfs/etc/modprobe.d/nvidia-utils.conf @@ -0,0 +1 @@ +# THIS IS A STUB TO OVERRIDE THE NVIDIA-UTILS PACKAGE, DO NOT TOUCH. diff --git a/airootfs/etc/modules-load.d/nvidia-utils.conf b/airootfs/etc/modules-load.d/nvidia-utils.conf new file mode 100644 index 0000000..017b682 --- /dev/null +++ b/airootfs/etc/modules-load.d/nvidia-utils.conf @@ -0,0 +1 @@ +# THIS IS A STUB TO OVERRIDE THE NVIDIA-UTILS PACKAGE, DO NOT TOUCH. diff --git a/airootfs/etc/modules-load.d/zfs.conf b/airootfs/etc/modules-load.d/zfs.conf new file mode 100644 index 0000000..73304bc --- /dev/null +++ b/airootfs/etc/modules-load.d/zfs.conf @@ -0,0 +1 @@ +zfs diff --git a/airootfs/etc/motd b/airootfs/etc/motd old mode 100644 new mode 100755 index 4d9eda1..f86ea98 --- a/airootfs/etc/motd +++ b/airootfs/etc/motd @@ -1,11 +1,29 @@ -To install [38;2;23;147;209mArch Linux[0m follow the installation guide: -https://wiki.archlinux.org/title/Installation_guide +This ISO is based on Arch-ISO modified hugely to provide Installation Environment for MelawyOS. +https://endeavouros.com -For Wi-Fi, authenticate to the wireless network using the [35miwctl[0m utility. -For mobile broadband (WWAN) modems, connect with the [35mmmcli[0m utility. -Ethernet, WLAN and WWAN interfaces using DHCP should work automatically. +MelawyOS-archiso Sources: +https://github.com/Melawy -After connecting to the internet, the installation guide can be accessed -via the convenience script [35mInstallation_guide[0m. +Arch-ISO Source: +https://gitlab.archlinux.org/archlinux/archiso -[41m [41m [41m [40m [44m [40m [41m [46m [45m [41m [46m [43m [41m [44m [45m [40m [44m [40m [41m [44m [41m [41m [46m [42m [41m [44m [43m [41m [45m [40m [40m [44m [40m [41m [44m [42m [41m [46m [44m [41m [46m [47m [0m +Calamares as our installer: +https://github.com/calamares/calamares + +Live environment will start now and let you install MelawyOS to disk, or tryout KDE-Desktop from Live-Session. + +Bugs can be reported here: +https://github.com/Melawy + +Getting help at the forum: https://github.com/Melawy +Help-Chat is available on telegram: https://t.me/Melawy_chat +News is available on telegram: https://t.me/Melawy_news + +Our journey wouldn't be made possible without the donates: +https://www.tinkoff.ru/cf/7OmVoFjdFNI + +Thank you for donating your trust in us! + +Welcome to your Melawy + +------------------ diff --git a/airootfs/etc/os-release b/airootfs/etc/os-release new file mode 100644 index 0000000..da9432a --- /dev/null +++ b/airootfs/etc/os-release @@ -0,0 +1,10 @@ +NAME="MelawyLinux" +PRETTY_NAME="MelawyLinux" +ID=MelawyLinux +ID_LIKE=arch +BUILD_ID=rolling +ANSI_COLOR="38;2;23;147;209" +HOME_URL="https://melawy.ru/" +LOGO=MelawyLinux +IMAGE_ID=MelawyLinux +IMAGE_VERSION=08-12-2023 diff --git a/airootfs/etc/pacman.conf b/airootfs/etc/pacman.conf index 38af6bc..dcdc795 100644 --- a/airootfs/etc/pacman.conf +++ b/airootfs/etc/pacman.conf @@ -1,67 +1,126 @@ +# # /etc/pacman.conf -# -# +# # See the pacman.conf(5) manpage for option and repository directives -# -# SPDX-License-Identifier: GPL-3.0-or-later -# +# # GENERAL OPTIONS -# +# [options] -# 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/wget --passive-ftp -c -O %o %u -# XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u -# CleanMethod = KeepInstalled +# 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 -# IgnorePkg = -# IgnoreGroup = -# NoUpgrade = -# NoExtract = -# UseSyslog -# NoProgressBar -CheckSpace -# VerbosePkgLists -ParallelDownloads = 5 -# Color -ILoveCandy -CheckSpace -# VerbosePkgLists -# DisableDownloadTimeout -SigLevel = Required DatabaseOptional -LocalFileSigLevel = Optional -# RemoteFileSigLevel = Required -# [testing] -# Include = /etc/pacman.d/mirrorlist +#IgnorePkg = +#IgnorePkg = +#IgnoreGroup = + +#NoUpgrade = +#NoExtract = + +# Misc options +#UseSyslog +Color +ILoveCandy +#NoProgressBar +#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. + +[endeavouros] +SigLevel = PackageRequired +Include = /etc/pacman.d/endeavouros-mirrorlist + +#[core-testing] +#Include = /etc/pacman.d/mirrorlist [core] Include = /etc/pacman.d/mirrorlist +#[extra-testing] +#Include = /etc/pacman.d/mirrorlist + [extra] Include = /etc/pacman.d/mirrorlist -# [community-testing] -# 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. -[community] -Include = /etc/pacman.d/mirrorlist - -# [multilib-testing] -# Include = /etc/pacman.d/mirrorlist +#[multilib-testing] +#Include = /etc/pacman.d/mirrorlist [multilib] Include = /etc/pacman.d/mirrorlist -# [custom] -# SigLevel = Optional TrustAll -# Server = file:///home/custompkgs +# 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 + +[arcolinux_repo] +SigLevel = Required DatabaseOptional +Include = /etc/pacman.d/arcolinux-mirrorlist + +[arcolinux_repo_xlarge] +SigLevel = Required DatabaseOptional +Include = /etc/pacman.d/arcolinux-mirrorlist + +[arcolinux_repo_3party] +SigLevel = Required DatabaseOptional +Include = /etc/pacman.d/arcolinux-mirrorlist + +[cachyos] +Include = /etc/pacman.d/cachyos-mirrorlist + +[garuda] +Include = /etc/pacman.d/chaotic-mirrorlist + +[chaotic-aur] +Include = /etc/pacman.d/chaotic-mirrorlist [melawy] SigLevel = Required DatabaseOptional @@ -82,36 +141,3 @@ Include = /etc/pacman.d/melawy-linux-mirrorlist [melawy-aur-gui-app] SigLevel = Required DatabaseOptional Include = /etc/pacman.d/melawy-linux-mirrorlist - -[melawy-aur-cargo] -SigLevel = Required DatabaseOptional -Include = /etc/pacman.d/melawy-linux-mirrorlist - -[arcolinux_repo] -SigLevel = Required DatabaseOptional -Include = /etc/pacman.d/arcolinux-mirrorlist - -[arcolinux_repo_xlarge] -SigLevel = Required DatabaseOptional -Include = /etc/pacman.d/arcolinux-mirrorlist - -[arcolinux_repo_3party] -SigLevel = Required DatabaseOptional -Include = /etc/pacman.d/arcolinux-mirrorlist - -# [endeavouros] -# SigLevel = PackageRequired -# Include = /etc/pacman.d/endeavouros-mirrorlist - -# [cachyos] -# Include = /etc/pacman.d/cachyos-mirrorlist - -# [garuda] -# Include = /etc/pacman.d/chaotic-mirrorlist - -# [chaotic-aur] -# Include = /etc/pacman.d/chaotic-mirrorlist - -# [local] -# SigLevel = Optional TrustAll -# Server = file:///disk/repo/$repo/$arch diff --git a/airootfs/etc/pamac.conf b/airootfs/etc/pamac.conf index 5db7858..646acbd 100644 --- a/airootfs/etc/pamac.conf +++ b/airootfs/etc/pamac.conf @@ -17,7 +17,7 @@ EnableDowngrade #SimpleInstall ## Allow Pamac to search and install packages from AUR: -EnableAUR +#EnableAUR ## Keep built packages from AUR in cache after installation: KeepBuiltPkgs diff --git a/airootfs/etc/passwd b/airootfs/etc/passwd index da8dd66..0917446 100644 --- a/airootfs/etc/passwd +++ b/airootfs/etc/passwd @@ -1,2 +1,2 @@ -root:x:0:0:root:/root:/usr/bin/zsh +root:x:0:0:root:/root:/bin/bash liveuser:x:1000:1000::/home/liveuser:/bin/bash diff --git a/airootfs/etc/plymouth/plymouthd.conf b/airootfs/etc/plymouth/plymouthd.conf index 4b2b1e9..54b1867 100644 --- a/airootfs/etc/plymouth/plymouthd.conf +++ b/airootfs/etc/plymouth/plymouthd.conf @@ -1,5 +1,5 @@ [Daemon] -Theme=melawy-lera-sugar +Theme=melawy-nier-a2 DeviceScale=1 DeviceTimeout=8 ShowDelay=0 diff --git a/airootfs/etc/sddm.conf.d/kde_settings.conf b/airootfs/etc/sddm.conf.d/kde_settings.conf index be704d1..ea3c1f8 100644 --- a/airootfs/etc/sddm.conf.d/kde_settings.conf +++ b/airootfs/etc/sddm.conf.d/kde_settings.conf @@ -4,8 +4,8 @@ Numlock=on RebootCommand=/usr/bin/systemctl reboot [Theme] -Current=Melawy-Lera-Sugar -CursorTheme=Qogir-dark +Current=Melawy-Nier-A2 +CursorTheme=Melawy-red-light-default-cursors Font=Noto Sans,10,-1,0,50,0,0,0,0,0 [Users] diff --git a/airootfs/etc/sddm.conf.d/tty.conf b/airootfs/etc/sddm.conf.d/tty.conf deleted file mode 100644 index 5f80756..0000000 --- a/airootfs/etc/sddm.conf.d/tty.conf +++ /dev/null @@ -1,2 +0,0 @@ -[X11] -MinimumVT=7 diff --git a/airootfs/etc/sysctl.d/99-local.conf b/airootfs/etc/sysctl.d/99-local.conf new file mode 100644 index 0000000..b154692 --- /dev/null +++ b/airootfs/etc/sysctl.d/99-local.conf @@ -0,0 +1 @@ +net.ipv6.conf.default.use_tempaddr = 2 diff --git a/airootfs/etc/systemd/intel.service b/airootfs/etc/systemd/intel.service deleted file mode 100644 index 02d8a4c..0000000 --- a/airootfs/etc/systemd/intel.service +++ /dev/null @@ -1,10 +0,0 @@ -[Unit] -Description=detect intel legacy gpu and install xf86-video-intel -Before=graphical.target - -[Service] -Type=simple -ExecStart=/bin/bash /usr/bin/GPU-Intel-installer - -[Install] -WantedBy=multi-user.target diff --git a/airootfs/etc/systemd/journald.conf b/airootfs/etc/systemd/journald.conf index 6e11247..4e6a3f3 100644 --- a/airootfs/etc/systemd/journald.conf +++ b/airootfs/etc/systemd/journald.conf @@ -12,7 +12,7 @@ # See journald.conf(5) for details. [Journal] -Storage=volatile +Storage=auto #Compress=yes #Seal=yes #SplitMode=uid diff --git a/airootfs/etc/systemd/journald.conf.d/volatile-storage.conf b/airootfs/etc/systemd/journald.conf.d/volatile-storage.conf old mode 100644 new mode 100755 index b69850d..3104779 --- a/airootfs/etc/systemd/journald.conf.d/volatile-storage.conf +++ b/airootfs/etc/systemd/journald.conf.d/volatile-storage.conf @@ -1,2 +1,5 @@ +# +# SPDX-License-Identifier: GPL-3.0-or-later + [Journal] Storage=volatile diff --git a/airootfs/etc/systemd/logind.conf b/airootfs/etc/systemd/logind.conf index 72b3254..a4e8125 100644 --- a/airootfs/etc/systemd/logind.conf +++ b/airootfs/etc/systemd/logind.conf @@ -1,13 +1,16 @@ # This file is part of systemd. # -# systemd is free software; you can redistribute it and/or modify it -# under the terms of the GNU Lesser General Public License as published by -# the Free Software Foundation; either version 2.1 of the License, or -# (at your option) any later version. +# systemd is free software; you can redistribute it and/or modify it under the +# terms of the GNU Lesser General Public License as published by the Free +# Software Foundation; either version 2.1 of the License, or (at your option) +# any later version. # -# Entries in this file show the compile time defaults. -# You can change settings by editing this file. -# Defaults can be restored by simply deleting this file. +# Entries in this file show the compile time defaults. Local configuration +# should be created by either modifying this file, or by creating "drop-ins" in +# the logind.conf.d/ subdirectory. The latter is generally recommended. +# Defaults can be restored by simply deleting this file and all drop-ins. +# +# Use 'systemd-analyze cat-config systemd/logind.conf' to display the full config. # # See logind.conf(5) for details. @@ -18,21 +21,29 @@ #KillOnlyUsers= #KillExcludeUsers=root #InhibitDelayMaxSec=5 +#UserStopDelaySec=10 #HandlePowerKey=poweroff -HandleSuspendKey=ignore -HandleHibernateKey=ignore -HandleLidSwitch=ignore +#HandlePowerKeyLongPress=ignore +#HandleRebootKey=reboot +#HandleRebootKeyLongPress=poweroff +#HandleSuspendKey=suspend +#HandleSuspendKeyLongPress=hibernate +#HandleHibernateKey=hibernate +#HandleHibernateKeyLongPress=ignore +#HandleLidSwitch=suspend #HandleLidSwitchExternalPower=suspend #HandleLidSwitchDocked=ignore #PowerKeyIgnoreInhibited=no #SuspendKeyIgnoreInhibited=no #HibernateKeyIgnoreInhibited=no #LidSwitchIgnoreInhibited=yes +#RebootKeyIgnoreInhibited=no #HoldoffTimeoutSec=30s #IdleAction=ignore #IdleActionSec=30min #RuntimeDirectorySize=10% -#RuntimeDirectoryInodes=400k +#RuntimeDirectoryInodesMax= #RemoveIPC=yes #InhibitorsMax=8192 #SessionsMax=8192 +#StopIdleSessionSec=infinity diff --git a/airootfs/etc/systemd/logind.conf.d/do-not-suspend.conf b/airootfs/etc/systemd/logind.conf.d/do-not-suspend.conf deleted file mode 100644 index f3ecb39..0000000 --- a/airootfs/etc/systemd/logind.conf.d/do-not-suspend.conf +++ /dev/null @@ -1,4 +0,0 @@ -[Login] -HandleSuspendKey=ignore -HandleHibernateKey=ignore -HandleLidSwitch=ignore diff --git a/airootfs/etc/systemd/logind.conf.d/melawylinux-settings.conf b/airootfs/etc/systemd/logind.conf.d/melawylinux-settings.conf new file mode 100644 index 0000000..e0b4e28 --- /dev/null +++ b/airootfs/etc/systemd/logind.conf.d/melawylinux-settings.conf @@ -0,0 +1,12 @@ +[Login] +HandlePowerKey=poweroff +HandlePowerKeyLongPress=ignore +HandleRebootKey=reboot +HandleRebootKeyLongPress=poweroff +HandleSuspendKey=suspend +HandleSuspendKeyLongPress=hibernate +HandleHibernateKey=hibernate +HandleHibernateKeyLongPress=ignore +HandleLidSwitch=suspend +HandleLidSwitchExternalPower=suspend +HandleLidSwitchDocked=ignore diff --git a/airootfs/etc/systemd/network.conf.d/ipv6-privacy-extensions.conf b/airootfs/etc/systemd/network.conf.d/ipv6-privacy-extensions.conf new file mode 100644 index 0000000..0e9ceb4 --- /dev/null +++ b/airootfs/etc/systemd/network.conf.d/ipv6-privacy-extensions.conf @@ -0,0 +1,2 @@ +[Network] +IPv6PrivacyExtensions=yes diff --git a/airootfs/etc/systemd/network/20-ethernet.network b/airootfs/etc/systemd/network/20-ethernet.network index 9ada778..c1144dd 100644 --- a/airootfs/etc/systemd/network/20-ethernet.network +++ b/airootfs/etc/systemd/network/20-ethernet.network @@ -1,19 +1,11 @@ [Match] -# Matching with "Type=ether" causes issues with containers because it also matches virtual Ethernet interfaces (veth*). -# See https://bugs.archlinux.org/task/70892 -# Instead match by globbing the network interface name. Name=en* Name=eth* [Network] DHCP=yes -IPv6PrivacyExtensions=yes +MulticastDNS=yes -# systemd-networkd does not set per-interface-type default route metrics -# https://github.com/systemd/systemd/issues/17698 -# Explicitly set route metric, so that Ethernet is preferred over Wi-Fi and Wi-Fi is preferred over mobile broadband. -# Use values from NetworkManager. From nm_device_get_route_metric_default in -# https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/blob/main/src/core/devices/nm-device.c [DHCPv4] RouteMetric=100 diff --git a/airootfs/etc/systemd/network/20-wlan.network b/airootfs/etc/systemd/network/20-wlan.network index 601d5b8..538d275 100644 --- a/airootfs/etc/systemd/network/20-wlan.network +++ b/airootfs/etc/systemd/network/20-wlan.network @@ -3,13 +3,8 @@ Name=wl* [Network] DHCP=yes -IPv6PrivacyExtensions=yes +MulticastDNS=yes -# systemd-networkd does not set per-interface-type default route metrics -# https://github.com/systemd/systemd/issues/17698 -# Explicitly set route metric, so that Ethernet is preferred over Wi-Fi and Wi-Fi is preferred over mobile broadband. -# Use values from NetworkManager. From nm_device_get_route_metric_default in -# https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/blob/main/src/core/devices/nm-device.c [DHCPv4] RouteMetric=600 diff --git a/airootfs/etc/systemd/network/20-wwan.network b/airootfs/etc/systemd/network/20-wwan.network index 9104c24..ad70dbd 100644 --- a/airootfs/etc/systemd/network/20-wwan.network +++ b/airootfs/etc/systemd/network/20-wwan.network @@ -3,13 +3,7 @@ Name=ww* [Network] DHCP=yes -IPv6PrivacyExtensions=yes -# systemd-networkd does not set per-interface-type default route metrics -# https://github.com/systemd/systemd/issues/17698 -# Explicitly set route metric, so that Ethernet is preferred over Wi-Fi and Wi-Fi is preferred over mobile broadband. -# Use values from NetworkManager. From nm_device_get_route_metric_default in -# https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/blob/main/src/core/devices/nm-device.c [DHCPv4] RouteMetric=700 diff --git a/airootfs/etc/systemd/resolved.conf.d/archiso.conf b/airootfs/etc/systemd/resolved.conf.d/archiso.conf new file mode 100644 index 0000000..636f3bd --- /dev/null +++ b/airootfs/etc/systemd/resolved.conf.d/archiso.conf @@ -0,0 +1,4 @@ +# Default systemd-resolved configuration for archiso + +[Resolve] +MulticastDNS=yes diff --git a/airootfs/etc/systemd/system/bluetooth.target.wants/bluetooth.service b/airootfs/etc/systemd/system/bluetooth.target.wants/bluetooth.service new file mode 120000 index 0000000..d256bfe --- /dev/null +++ b/airootfs/etc/systemd/system/bluetooth.target.wants/bluetooth.service @@ -0,0 +1 @@ +/usr/lib/systemd/system/bluetooth.service \ No newline at end of file diff --git a/airootfs/etc/systemd/system/dbus-fi.w1.wpa_supplicant1.service b/airootfs/etc/systemd/system/dbus-fi.w1.wpa_supplicant1.service new file mode 120000 index 0000000..1aff68e --- /dev/null +++ b/airootfs/etc/systemd/system/dbus-fi.w1.wpa_supplicant1.service @@ -0,0 +1 @@ +/usr/lib/systemd/system/wpa_supplicant.service \ No newline at end of file diff --git a/airootfs/etc/systemd/system/dbus-org.bluez.service b/airootfs/etc/systemd/system/dbus-org.bluez.service new file mode 120000 index 0000000..d256bfe --- /dev/null +++ b/airootfs/etc/systemd/system/dbus-org.bluez.service @@ -0,0 +1 @@ +/usr/lib/systemd/system/bluetooth.service \ No newline at end of file diff --git a/airootfs/etc/systemd/system/dbus-org.freedesktop.Avahi.service b/airootfs/etc/systemd/system/dbus-org.freedesktop.Avahi.service new file mode 120000 index 0000000..e7ae405 --- /dev/null +++ b/airootfs/etc/systemd/system/dbus-org.freedesktop.Avahi.service @@ -0,0 +1 @@ +/usr/lib/systemd/system/avahi-daemon.service \ No newline at end of file diff --git a/airootfs/etc/systemd/system/etc-pacman.d-gnupg.mount b/airootfs/etc/systemd/system/etc-pacman.d-gnupg.mount index 0ba0e67..038961e 100644 --- a/airootfs/etc/systemd/system/etc-pacman.d-gnupg.mount +++ b/airootfs/etc/systemd/system/etc-pacman.d-gnupg.mount @@ -2,7 +2,7 @@ Description=Temporary /etc/pacman.d/gnupg directory [Mount] -What=ramfs +What=tmpfs Where=/etc/pacman.d/gnupg -Type=ramfs -Options=mode=0755 +Type=tmpfs +Options=mode=0755,noswap diff --git a/airootfs/etc/systemd/system/getty@tty1.service.d/autologin.conf b/airootfs/etc/systemd/system/getty@tty1.service.d/autologin.conf index a07a34b..c3bb4dd 100644 --- a/airootfs/etc/systemd/system/getty@tty1.service.d/autologin.conf +++ b/airootfs/etc/systemd/system/getty@tty1.service.d/autologin.conf @@ -1,4 +1,6 @@ +# +# SPDX-License-Identifier: GPL-3.0-or-later + [Service] ExecStart= -#ExecStart=-/sbin/agetty -o '-p -f -- \\u' --noclear --autologin root - $TERM -ExecStart=-/sbin/agetty --autologin liveuser --noclear %I 38400 linux \ No newline at end of file +ExecStart=-/sbin/agetty -o '-p -f -- \\u' --noclear --autologin root - $TERM diff --git a/airootfs/etc/systemd/system/intel.service b/airootfs/etc/systemd/system/intel.service index 02d8a4c..9c110a5 100644 --- a/airootfs/etc/systemd/system/intel.service +++ b/airootfs/etc/systemd/system/intel.service @@ -4,7 +4,7 @@ Before=graphical.target [Service] Type=simple -ExecStart=/bin/bash /usr/bin/GPU-Intel-installer +ExecStart=/bin/bash /usr/local/bin/GPU-Intel-installer [Install] WantedBy=multi-user.target diff --git a/airootfs/etc/systemd/system/multi-user.target.wants/avahi-daemon.service b/airootfs/etc/systemd/system/multi-user.target.wants/avahi-daemon.service new file mode 120000 index 0000000..e7ae405 --- /dev/null +++ b/airootfs/etc/systemd/system/multi-user.target.wants/avahi-daemon.service @@ -0,0 +1 @@ +/usr/lib/systemd/system/avahi-daemon.service \ No newline at end of file diff --git a/airootfs/etc/systemd/system/multi-user.target.wants/bluetooth.service b/airootfs/etc/systemd/system/multi-user.target.wants/bluetooth.service new file mode 120000 index 0000000..d256bfe --- /dev/null +++ b/airootfs/etc/systemd/system/multi-user.target.wants/bluetooth.service @@ -0,0 +1 @@ +/usr/lib/systemd/system/bluetooth.service \ No newline at end of file diff --git a/airootfs/etc/systemd/system/multi-user.target.wants/firewalld.service b/airootfs/etc/systemd/system/multi-user.target.wants/firewalld.service new file mode 120000 index 0000000..91b6be3 --- /dev/null +++ b/airootfs/etc/systemd/system/multi-user.target.wants/firewalld.service @@ -0,0 +1 @@ +/usr/lib/systemd/system/firewalld.service \ No newline at end of file diff --git a/airootfs/etc/systemd/system/multi-user.target.wants/intel.service b/airootfs/etc/systemd/system/multi-user.target.wants/intel.service new file mode 120000 index 0000000..46f1e18 --- /dev/null +++ b/airootfs/etc/systemd/system/multi-user.target.wants/intel.service @@ -0,0 +1 @@ +/etc/systemd/system/intel.service \ No newline at end of file diff --git a/airootfs/etc/systemd/system/multi-user.target.wants/ntpd.service b/airootfs/etc/systemd/system/multi-user.target.wants/ntpd.service new file mode 120000 index 0000000..d3bfc72 --- /dev/null +++ b/airootfs/etc/systemd/system/multi-user.target.wants/ntpd.service @@ -0,0 +1 @@ +/usr/lib/systemd/system/ntpd.service \ No newline at end of file diff --git a/airootfs/etc/systemd/system/multi-user.target.wants/pamac-cleancache.timer b/airootfs/etc/systemd/system/multi-user.target.wants/pamac-cleancache.timer new file mode 120000 index 0000000..77e1f7d --- /dev/null +++ b/airootfs/etc/systemd/system/multi-user.target.wants/pamac-cleancache.timer @@ -0,0 +1 @@ +/usr/lib/systemd/system/pamac-cleancache.timer \ No newline at end of file diff --git a/airootfs/etc/systemd/system/multi-user.target.wants/remote-fs.target b/airootfs/etc/systemd/system/multi-user.target.wants/remote-fs.target new file mode 120000 index 0000000..2bc8b1c --- /dev/null +++ b/airootfs/etc/systemd/system/multi-user.target.wants/remote-fs.target @@ -0,0 +1 @@ +/usr/lib/systemd/system/remote-fs.target \ No newline at end of file diff --git a/airootfs/etc/systemd/system/multi-user.target.wants/spice-vdagentd.socket b/airootfs/etc/systemd/system/multi-user.target.wants/spice-vdagentd.socket new file mode 120000 index 0000000..6bce993 --- /dev/null +++ b/airootfs/etc/systemd/system/multi-user.target.wants/spice-vdagentd.socket @@ -0,0 +1 @@ +/usr/lib/systemd/system/spice-vdagentd.socket \ No newline at end of file diff --git a/airootfs/etc/systemd/system/multi-user.target.wants/systemd-timesyncd.service b/airootfs/etc/systemd/system/multi-user.target.wants/systemd-timesyncd.service new file mode 120000 index 0000000..cd00411 --- /dev/null +++ b/airootfs/etc/systemd/system/multi-user.target.wants/systemd-timesyncd.service @@ -0,0 +1 @@ +/usr/lib/systemd/system/systemd-timesyncd.service \ No newline at end of file diff --git a/airootfs/etc/systemd/system/multi-user.target.wants/vboxclient.service b/airootfs/etc/systemd/system/multi-user.target.wants/vboxclient.service new file mode 120000 index 0000000..224542b --- /dev/null +++ b/airootfs/etc/systemd/system/multi-user.target.wants/vboxclient.service @@ -0,0 +1 @@ +/usr/lib/systemd/system/vboxclient.service \ No newline at end of file diff --git a/airootfs/etc/systemd/system/multi-user.target.wants/vcheck.service b/airootfs/etc/systemd/system/multi-user.target.wants/vcheck.service new file mode 120000 index 0000000..1303d33 --- /dev/null +++ b/airootfs/etc/systemd/system/multi-user.target.wants/vcheck.service @@ -0,0 +1 @@ +/usr/lib/systemd/system/virtual-machine-check.service \ No newline at end of file diff --git a/airootfs/etc/systemd/system/multi-user.target.wants/wpa_supplicant.service b/airootfs/etc/systemd/system/multi-user.target.wants/wpa_supplicant.service new file mode 120000 index 0000000..1aff68e --- /dev/null +++ b/airootfs/etc/systemd/system/multi-user.target.wants/wpa_supplicant.service @@ -0,0 +1 @@ +/usr/lib/systemd/system/wpa_supplicant.service \ No newline at end of file diff --git a/airootfs/etc/systemd/system/network-online.target.wants/systemd-networkd-wait-online.service b/airootfs/etc/systemd/system/network-online.target.wants/systemd-networkd-wait-online.service deleted file mode 120000 index 7d6ad92..0000000 --- a/airootfs/etc/systemd/system/network-online.target.wants/systemd-networkd-wait-online.service +++ /dev/null @@ -1 +0,0 @@ -/usr/lib/systemd/system/systemd-networkd-wait-online.service \ No newline at end of file diff --git a/airootfs/etc/systemd/system/pacman-init.service b/airootfs/etc/systemd/system/pacman-init.service index b824884..1a0be0f 100644 --- a/airootfs/etc/systemd/system/pacman-init.service +++ b/airootfs/etc/systemd/system/pacman-init.service @@ -1,3 +1,6 @@ +# +# SPDX-License-Identifier: GPL-3.0-or-later + [Unit] Description=Initializes Pacman keyring Requires=etc-pacman.d-gnupg.mount diff --git a/airootfs/etc/systemd/system/sockets.target.wants/avahi-daemon.socket b/airootfs/etc/systemd/system/sockets.target.wants/avahi-daemon.socket new file mode 120000 index 0000000..045b23d --- /dev/null +++ b/airootfs/etc/systemd/system/sockets.target.wants/avahi-daemon.socket @@ -0,0 +1 @@ +/usr/lib/systemd/system/avahi-daemon.socket \ No newline at end of file diff --git a/airootfs/etc/systemd/system/sockets.target.wants/pcscd.socket b/airootfs/etc/systemd/system/sockets.target.wants/pcscd.socket new file mode 120000 index 0000000..3897c63 --- /dev/null +++ b/airootfs/etc/systemd/system/sockets.target.wants/pcscd.socket @@ -0,0 +1 @@ +/usr/lib/systemd/system/pcscd.socket \ No newline at end of file diff --git a/airootfs/etc/xdg/autostart/Calamares-etc.desktop b/airootfs/etc/xdg/autostart/Calamares-etc.desktop index b93b60e..36c2588 100755 --- a/airootfs/etc/xdg/autostart/Calamares-etc.desktop +++ b/airootfs/etc/xdg/autostart/Calamares-etc.desktop @@ -240,7 +240,7 @@ SingleMainWindow=true StartupNotify=true Terminal=false TerminalOptions= -Exec=/usr/bin/calamares_polkit %f -d -c /etc/calamares/configs/melawy-linux +Exec=/usr/bin/calamares_polkit %f -d -c /etc/calamares/ Type=Application Version=1.0 X-AppStream-Ignore=true diff --git a/airootfs/etc/xdg/kcm-about-distrorc b/airootfs/etc/xdg/kcm-about-distrorc new file mode 100644 index 0000000..80c3f01 --- /dev/null +++ b/airootfs/etc/xdg/kcm-about-distrorc @@ -0,0 +1,4 @@ +[General] +Name=MelawyLinux +LogoPath=/usr/share/logos/melawy.png +Website=https://melawy.ru/ diff --git a/airootfs/etc/xdg/reflector/reflector.conf b/airootfs/etc/xdg/reflector/reflector.conf index a2cd2b6..12c5c07 100644 --- a/airootfs/etc/xdg/reflector/reflector.conf +++ b/airootfs/etc/xdg/reflector/reflector.conf @@ -28,7 +28,9 @@ -c CA,FI,FR,DE,IS,IE,IT,JP,KZ,LV,LU,NZ,NO,PL,PT,RU,SG,ES,SE,CH,TW,TH ---protocol https,http,rsync +--ipv4 +--ipv6 +--protocol https --fastest 50 --latest 50 --sort rate diff --git a/airootfs/root/.automated_script.sh b/airootfs/root/.automated_script.sh index ed3a924..8e72bf7 100755 --- a/airootfs/root/.automated_script.sh +++ b/airootfs/root/.automated_script.sh @@ -1,22 +1,29 @@ #!/usr/bin/env bash -script_cmdline () -{ +script_cmdline() { local param - for param in $(< /proc/cmdline); do + for param in $(</proc/cmdline); do case "${param}" in - script=*) echo "${param#*=}" ; return 0 ;; + script=*) + echo "${param#*=}" + return 0 + ;; esac done } -automated_script () -{ +automated_script() { local script rt script="$(script_cmdline)" if [[ -n "${script}" && ! -x /tmp/startup_script ]]; then if [[ "${script}" =~ ^((http|https|ftp)://) ]]; then - curl "${script}" --retry-connrefused -s -o /tmp/startup_script >/dev/null + # there's no synchronization for network availability before executing this script + printf '%s: waiting for network-online.target\n' "$0" + until systemctl --quiet is-active network-online.target; do + sleep 1 + done + printf '%s: downloading %s\n' "$0" "${script}" + curl "${script}" --location --retry-connrefused --retry 10 -s -o /tmp/startup_script rt=$? else cp "${script}" /tmp/startup_script @@ -24,6 +31,9 @@ automated_script () fi if [[ ${rt} -eq 0 ]]; then chmod +x /tmp/startup_script + printf '%s: executing automated script\n' "$0" + # note that script is executed when other services (like pacman-init) may be still in progress, please + # synchronize to "systemctl is-system-running --wait" when your script depends on other services /tmp/startup_script fi fi diff --git a/airootfs/root/.gnupg/scdaemon.conf b/airootfs/root/.gnupg/scdaemon.conf new file mode 100644 index 0000000..e1f3d1f --- /dev/null +++ b/airootfs/root/.gnupg/scdaemon.conf @@ -0,0 +1,4 @@ +disable-ccid +disable-pinpad +pcsc-driver /usr/lib/libpcsclite.so +pcsc-shared diff --git a/airootfs/root/.zlogin b/airootfs/root/.zlogin old mode 100755 new mode 100644 index 0fb119d..bf6bc8f --- a/airootfs/root/.zlogin +++ b/airootfs/root/.zlogin @@ -1,5 +1,5 @@ # fix for screen readers -if grep -Fq 'accessibility=' /proc/cmdline &> /dev/null; then +if grep -Fqa 'accessibility=' /proc/cmdline &> /dev/null; then setopt SINGLE_LINE_ZLE fi diff --git a/airootfs/root/archives/liveuser.tar.xz b/airootfs/root/archives/liveuser.tar.xz index 2b01587..da8aec7 100644 Binary files a/airootfs/root/archives/liveuser.tar.xz and b/airootfs/root/archives/liveuser.tar.xz differ diff --git a/airootfs/root/customize_airootfs.sh b/airootfs/root/customize_airootfs.sh index be08b40..7de3975 100755 --- a/airootfs/root/customize_airootfs.sh +++ b/airootfs/root/customize_airootfs.sh @@ -2,48 +2,49 @@ locale-gen -ln -sf /usr/share/zoneinfo/UTC /etc/localtime - -usermod -s /bin/bash root +usermod -p "123" -s /bin/bash root cp -aT /etc/skel/ /root/ -useradd -m -p "" -g 'users' -G 'adm,audio,floppy,log,network,nopasswdlogin,optical,power,rfkill,scanner,storage,sys,tty,users,uucp,wheel' -s /bin/bash liveuser -usermod -m -p "" -g 'users' -G 'adm,audio,autologin,network,nopasswdlogin,optical,power,rfkill,storage,sys,users,uucp,video,wheel' -s /bin/bash liveuser -usermod -m -p "" -g 'users' -G 'adm,audio,autologin,floppy,log,network,nopasswdlogin,optical,power,rfkill,scanner,storage,sys,tty,users,uucp,video,wheel' -s /bin/bash liveuser +usermod -p "123" liveuser + +groups="adm audio autologin floppy log network nopasswdlogin optical power rfkill scanner storage sys tty users uucp video wheel" +for i in $groups +do + #usermod -m -d /home/liveuser -p "123" -g 'users' -G $i -s /bin/bash liveuser + usermod -G $i liveuser +done -chmod 750 /etc/sudoers.d -chmod 440 /etc/sudoers.d/g_wheel chown -R 1000:1000 /home/liveuser +findstr=$(grep -e 'kdesu' /usr/bin/eos-install-mode-run-calamares) +sed -e "s/$findstr//g" -i /usr/bin/eos-install-mode-run-calamares + sed -i "s/#Server/Server/g" /etc/pacman.d/mirrorlist sed -i 's/#\(Storage=\)auto/\1volatile/' /etc/systemd/journald.conf echo -e "[Daemon]\nTheme=melawy-lera-sugar\nDeviceScale=1\nDeviceTimeout=8\nShowDelay=0" > "/usr/share/plymouth/plymouthd.defaults" -cat "/usr/lib/melawy-linux-release" >> "/etc/motd" -echo "------------------" >> "/etc/motd" +# cat "/usr/lib/melawy-linux-release" >> "/etc/motd" +# echo "------------------" >> "/etc/motd" mkdir -p "/etc/calamares/configs/melawy-linux/files/" cp "/root/wallpaper.png" "/etc/calamares/configs/melawy-linux/files/melawy-linux-wallpaper.png" chmod 644 "/etc/calamares/configs/melawy-linux/files/"*".png" -mkdir -p "/usr/share/melawy-linux/backgrounds/" -cp "/root/wallpaper.png" "/usr/share/melawy-linux/backgrounds/melawy-linux-wallpaper.png" -chmod 644 "/usr/share/melawy-linux/backgrounds/"*".png" +chmod 644 "/usr/share/wallpapers/melawy-linux-wallpapers/"*".png" +cp "/usr/lib/modprobe.d/nvidia-utils.conf" "/etc/calamares/configs/melawy-linux/files/nv-modprobe" +cp "/usr/lib/modules-load.d/nvidia-utils.conf" "/etc/calamares/configs/melawy-linux/files/nv-modules-load" -mv "/usr/lib/modprobe.d/nvidia-utils.conf" "/etc/calamares/configs/melawy-linux/files/nv-modprobe" -mv "/usr/lib/modules-load.d/nvidia-utils.conf" "/etc/calamares/configs/melawy-linux/files/nv-modules-load" - -systemctl enable sddm.service -systemctl enable ntpd.service -systemctl enable NetworkManager.service systemd-timesyncd.service bluetooth.service firewalld.service -systemctl enable vboxservice.service vmtoolsd.service vmware-vmblock-fuse.service -systemctl enable intel.service -systemctl enable pacman-init.service choose-mirror.service -#systemctl set-default multi-user.target -systemctl set-default graphical.target +# systemctl enable sddm.service +# systemctl enable ntpd.service +# systemctl enable NetworkManager.service systemd-timesyncd.service bluetooth.service firewalld.service +# systemctl enable vboxservice.service vmtoolsd.service vmware-vmblock-fuse.service +# systemctl enable intel.service +# systemctl enable pacman-init.service choose-mirror.service +# #systemctl set-default multi-user.target +# systemctl set-default graphical.target pacman -Qs | grep "/calamares " | cut -c7- > iso_package_versions pacman -Qs | grep "/firefox " | cut -c7- >> iso_package_versions @@ -55,12 +56,6 @@ mv "iso_package_versions" "/home/liveuser/" cd "/root" -haveged -w 1024 -pacman-key --init -pkill haveged -pacman-key --populate archlinux melawy-linux arcolinux -pacman-key --updatedb - tar -xJvf /root/archives/skel.tar.xz -C /etc/skel --strip=1 --overwrite chown -R 0:0 /etc/skel diff --git a/airootfs/root/wallpaper.png b/airootfs/root/wallpaper.png index fafb0de..6ed5499 100644 Binary files a/airootfs/root/wallpaper.png and b/airootfs/root/wallpaper.png differ diff --git a/airootfs/usr/bin/GPU-Intel-installer b/airootfs/usr/local/bin/GPU-Intel-installer similarity index 100% rename from airootfs/usr/bin/GPU-Intel-installer rename to airootfs/usr/local/bin/GPU-Intel-installer diff --git a/airootfs/usr/local/bin/alci-make-a-pure-arch b/airootfs/usr/local/bin/alci-make-a-pure-arch deleted file mode 100755 index e2bbfa2..0000000 --- a/airootfs/usr/local/bin/alci-make-a-pure-arch +++ /dev/null @@ -1,18 +0,0 @@ -#!/bin/bash -#set -e -############################################################################### -# Author : Erik Dubois -# Website : https://www.erikdubois.be -# Website : https://www.arcolinux.info -# Website : https://www.arcolinux.com -# Website : https://www.arcolinuxd.com -# Website : https://www.arcolinuxb.com -# Website : https://www.arcolinuxiso.com -# Website : https://www.arcolinuxforum.com -############################################################################### -# -# DO NOT JUST RUN THIS. EXAMINE AND JUDGE. RUN AT YOUR OWN RISK. -# -############################################################################### - -#if necessary we can use this script too diff --git a/airootfs/usr/local/bin/all-cores b/airootfs/usr/local/bin/all-cores new file mode 100755 index 0000000..9f8b5cf --- /dev/null +++ b/airootfs/usr/local/bin/all-cores @@ -0,0 +1,27 @@ +#!/usr/bin/env bash +#set -e +################################################################################################################## +# Author : Valeria Fadeeva +# Website : https://valeria.fadeeva.me +# Website : https://fadeeva.me +# Website : https://melawy.ru +################################################################################################################## +# +# DO NOT JUST RUN THIS. EXAMINE AND JUDGE. RUN AT YOUR OWN RISK. +# +################################################################################################################## + +numberofcores=$(grep -c ^processor /proc/cpuinfo) + +if [ $numberofcores -gt 1 ] +then + echo "You have " $numberofcores" cores." + echo "Changing the makeflags for "$numberofcores" cores." + sudo sed -i 's/#MAKEFLAGS="-j2"/MAKEFLAGS="-j'$(($numberofcores+1))'"/g' /etc/makepkg.conf; + echo "Changing the compression settings for "$numberofcores" cores." + sudo sed -i 's/COMPRESSXZ=(xz -c -z -)/COMPRESSXZ=(xz -c -z - --threads=0)/g' /etc/makepkg.conf + sudo sed -i 's/COMPRESSZST=(zstd -c -z -q -)/COMPRESSZST=(zstd -c -z -q - --threads=0)/g' /etc/makepkg.conf + sudo sed -i "s/PKGEXT='.pkg.tar.xz'/PKGEXT='.pkg.tar.zst'/g" /etc/makepkg.conf +else + echo "No change." +fi diff --git a/airootfs/usr/local/bin/calamares-offline.sh b/airootfs/usr/local/bin/calamares-offline.sh new file mode 100755 index 0000000..0891496 --- /dev/null +++ b/airootfs/usr/local/bin/calamares-offline.sh @@ -0,0 +1,21 @@ +#!/bin/bash + +Main() { + local mode=offline + local progname="" + progname="$(basename "$0")" + local log=/home/liveuser/melawy-install.log + + cat <<EOF > $log +########## $log by $progname +########## Started (UTC): $(date -u "+%x %X") +########## Install mode: $mode + +EOF + RunInTerminal "tail -f $log" & + + sudo cp /usr/share/calamares/settings_${mode}.conf /etc/calamares/settings.conf + sudo -E dbus-launch calamares -D6 >> $log +} + +Main "$@" diff --git a/airootfs/usr/local/bin/calamares-online.sh b/airootfs/usr/local/bin/calamares-online.sh new file mode 100755 index 0000000..8628de1 --- /dev/null +++ b/airootfs/usr/local/bin/calamares-online.sh @@ -0,0 +1,99 @@ +#!/bin/bash + +FollowFile() { + local tailfile="$1" + local term_title="$2" + + alacritty -t "$term_title" -e tail -f "$tailfile" & +} + +catch_chrooted_pacman_log() { + local pacmanlog="" + local lockfile="$HOME/.$1.lck" + + # wait until pacman.log is available in the chrooted system, then follow the log in background + while true ; do + sleep 2 + pacmanlog="$(/usr/bin/ls -1 /tmp/calamares-root-*/var/log/pacman.log 2>/dev/null | /usr/bin/tail -n 1)" + if [ -n "$pacmanlog" ] ; then + # pacman.log found + [ -r "$lockfile" ] && return + /usr/bin/touch "$lockfile" + FollowFile "$pacmanlog" "Pacman log" 400 50 + break + fi + done +} + +Main() { + local progname + progname="$(basename "$0")" + local log=/home/liveuser/melawy-install.log + local mode="" + + case "$progname" in + calamares-online.sh) mode=online ;; + calamares-offline.sh) mode=offline ;; + esac + mode=online # keep this line for now! + + local _efi_check_dir="/sys/firmware/efi" + local _exitcode=2 # by default use grub + + local SYSTEM="" + local BOOTLOADER="" + if [ -d "${_efi_check_dir}" ]; then + SYSTEM="UEFI SYSTEM" + + # Restrict bootloader selection to only UEFI systems + _exitcode=$(yad --width 300 --title "Bootloader" \ + --image=gnome-shutdown \ + --button="Grub:2" \ + --button="Systemd-boot:3" \ + --button="Refind:4" \ + --text "Choose Bootloader:" ; echo $?) + else + SYSTEM="BIOS/MBR SYSTEM" + fi + + + if [[ "${_exitcode}" -eq 2 ]]; then + BOOTLOADER="GRUB" + echo "USING GRUB!" + yes | sudo pacman -R cachyos-calamares-systemd + yes | sudo pacman -R cachyos-calamares-grub + yes | sudo pacman -R cachyos-calamares-refind + yes | sudo pacman -Sy cachyos-calamares-grub + elif [[ "${_exitcode}" -eq 3 ]]; then + BOOTLOADER="SYSTEMD-BOOT" + echo "USING SYSTEMD-BOOT!" + yes | sudo pacman -R cachyos-calamares-grub + yes | sudo pacman -R cachyos-calamares-refind + yes | sudo pacman -Sy cachyos-calamares-systemd + elif [[ "${_exitcode}" -eq 4 ]]; then + BOOTLOADER="REFIND" + echo "USING REFIND!" + yes | sudo pacman -R cachyos-calamares-grub + yes | sudo pacman -R cachyos-calamares-systemd + yes | sudo pacman -Sy cachyos-calamares-refind + else + exit + fi + + cat <<EOF > $log +########## $log by $progname +########## Started (UTC): $(date -u "+%x %X") +########## Install mode: $mode +########## System: $SYSTEM +########## Bootloader: $BOOTLOADER +EOF + FollowFile "$log" "Install log" 20 20 + + sudo cp /usr/share/calamares/settings_${mode}.conf /etc/calamares/settings.conf + sudo -E dbus-launch calamares -D6 >> $log & + + # comment out the following line if pacman.log is not needed: + [ "$mode" = "online" ] && catch_chrooted_pacman_log "$progname" +} + +Main "$@" diff --git a/airootfs/usr/local/bin/choose-mirror b/airootfs/usr/local/bin/choose-mirror index b021945..d2349de 100755 --- a/airootfs/usr/local/bin/choose-mirror +++ b/airootfs/usr/local/bin/choose-mirror @@ -4,21 +4,22 @@ get_cmdline() { local param - for param in $(< /proc/cmdline); do + for param in $(</proc/cmdline); do case "${param}" in - $1=*) echo "${param##*=}"; - return 0 - ;; + "${1}="*) + echo "${param##*=}" + return 0 + ;; esac done } -mirror=$(get_cmdline mirror) -[[ $mirror = auto ]] && mirror=$(get_cmdline archiso_http_srv) -[[ $mirror ]] || exit 0 +mirror="$(get_cmdline mirror)" +[[ "$mirror" == 'auto' ]] && mirror="$(get_cmdline archiso_http_srv)" +[[ -n "$mirror" ]] || exit 0 mv /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist.orig -cat >/etc/pacman.d/mirrorlist << EOF +cat >/etc/pacman.d/mirrorlist <<EOF # # Arch Linux repository mirrorlist # Generated by archiso diff --git a/airootfs/usr/bin/device-info b/airootfs/usr/local/bin/device-info similarity index 100% rename from airootfs/usr/bin/device-info rename to airootfs/usr/local/bin/device-info diff --git a/airootfs/usr/local/bin/displaymanager-check b/airootfs/usr/local/bin/displaymanager-check deleted file mode 100755 index 916547f..0000000 --- a/airootfs/usr/local/bin/displaymanager-check +++ /dev/null @@ -1,33 +0,0 @@ -#!/bin/bash -#set -e -############################################################################### -# Author : Erik Dubois -# Website : https://www.erikdubois.be -# Website : https://www.arcolinux.info -# Website : https://www.arcolinux.com -# Website : https://www.arcolinuxd.com -# Website : https://www.arcolinuxb.com -# Website : https://www.arcolinuxiso.com -# Website : https://www.arcolinuxforum.com -############################################################################### -# -# DO NOT JUST RUN THIS. EXAMINE AND JUDGE. RUN AT YOUR OWN RISK. -# -############################################################################### - -package=sddm -if pacman -Qs $package > /dev/null ; then - ln -sf /usr/lib/systemd/system/sddm.service /etc/systemd/system/display-manager.service -fi -package=gdm -if pacman -Qs $package > /dev/null ; then - ln -sf /usr/lib/systemd/system/gdm.service /etc/systemd/system/display-manager.service -fi -package=lxdm -if pacman -Qs $package > /dev/null ; then - ln -sf /usr/lib/systemd/system/lxdm.service /etc/systemd/system/display-manager.service -fi -package=lightdm -if pacman -Qs $package > /dev/null ; then - ln -sf /usr/lib/systemd/system/lightdm.service /etc/systemd/system/display-manager.service -fi diff --git a/airootfs/usr/local/bin/alci-displaymanager-check b/airootfs/usr/local/bin/dmcheck similarity index 67% rename from airootfs/usr/local/bin/alci-displaymanager-check rename to airootfs/usr/local/bin/dmcheck index 916547f..8957714 100755 --- a/airootfs/usr/local/bin/alci-displaymanager-check +++ b/airootfs/usr/local/bin/dmcheck @@ -1,33 +1,42 @@ -#!/bin/bash +#!/usr/bin/env bash #set -e ############################################################################### -# Author : Erik Dubois -# Website : https://www.erikdubois.be -# Website : https://www.arcolinux.info -# Website : https://www.arcolinux.com -# Website : https://www.arcolinuxd.com -# Website : https://www.arcolinuxb.com -# Website : https://www.arcolinuxiso.com -# Website : https://www.arcolinuxforum.com +# Author : Valeria Fadeeva +# Website : https://valeria.fadeeva.me +# Website : https://fadeeva.me +# Website : https://melawy.ru ############################################################################### # # DO NOT JUST RUN THIS. EXAMINE AND JUDGE. RUN AT YOUR OWN RISK. # ############################################################################### +package=ly +if pacman -Qs $package > /dev/null ; then + ln -sf /usr/lib/systemd/system/ly.service /etc/systemd/system/display-manager.service +fi + package=sddm if pacman -Qs $package > /dev/null ; then ln -sf /usr/lib/systemd/system/sddm.service /etc/systemd/system/display-manager.service fi + package=gdm if pacman -Qs $package > /dev/null ; then ln -sf /usr/lib/systemd/system/gdm.service /etc/systemd/system/display-manager.service fi + package=lxdm if pacman -Qs $package > /dev/null ; then ln -sf /usr/lib/systemd/system/lxdm.service /etc/systemd/system/display-manager.service fi + package=lightdm if pacman -Qs $package > /dev/null ; then ln -sf /usr/lib/systemd/system/lightdm.service /etc/systemd/system/display-manager.service fi + +echo "#################################" +echo "End displaymanager-check" +echo "#################################" +rm /usr/local/bin/dmcheck diff --git a/airootfs/usr/local/bin/fsprogschk b/airootfs/usr/local/bin/fsprogschk new file mode 100755 index 0000000..b21cf4c --- /dev/null +++ b/airootfs/usr/local/bin/fsprogschk @@ -0,0 +1,29 @@ +#!/bin/bash +#set -e + +RED='\033[0;31m' +GREEN='\033[0;32m' +BLUE='\033[0;34m' +NC='\033[0m' + +############################################################################### +# Author : Valeria Fadeeva +# Website : https://valeria.fadeeva.me +# Website : https://fadeeva.me +# Website : https://melawy.ru +############################################################################### + +if lsblk -f | grep -q "btrfs"; then + echo -e "${GREEN}BTRFS partitions found. Removing XFS-Progs.${NC}" + echo + sudo pacman -Rdd --noconfirm xfsprogs +elif lsblk -f | grep -q "xfs"; then + echo -e "${RED}XFS partitions found. Removing BTRFS-Progs.${NC}" + echo + sudo pacman -Rdd --noconfirm btrfs-progs +else + echo -e "${BLUE}No XFS or BTRFS partitions found. Removing both Progs Packages.${NC}" + sudo pacman -Rdd --noconfirm xfsprogs btrfs-progs +fi + +rm /usr/local/bin/fsprogschk diff --git a/airootfs/usr/local/bin/get-nemesis-on-alci b/airootfs/usr/local/bin/get-nemesis-on-alci deleted file mode 100755 index d0ec56b..0000000 --- a/airootfs/usr/local/bin/get-nemesis-on-alci +++ /dev/null @@ -1,51 +0,0 @@ -#!/bin/bash -#set -e -################################################################################################################## -# Author : Erik Dubois -# Website : https://www.erikdubois.be -# Website : https://www.alci.online -# Website : https://www.arcolinux.info -# Website : https://www.arcolinux.com -# Website : https://www.arcolinuxd.com -# Website : https://www.arcolinuxb.com -# Website : https://www.arcolinuxiso.com -# Website : https://www.arcolinuxforum.com -################################################################################################################## -# -# DO NOT JUST RUN THIS. EXAMINE AND JUDGE. RUN AT YOUR OWN RISK. -# -################################################################################################################## -#tput setaf 0 = black -#tput setaf 1 = red -#tput setaf 2 = green -#tput setaf 3 = yellow -#tput setaf 4 = dark blue -#tput setaf 5 = purple -#tput setaf 6 = cyan -#tput setaf 7 = gray -#tput setaf 8 = light blue -################################################################################################################## - -#iso=alci-iso-hardened - -echo -tput setaf 3 -echo "################################################################" -echo "################### Start clone arcolinux-nemesis" -echo "################################################################" -tput sgr0 -echo - -sudo pacman -Sy git --noconfirm --needed - -[ -d $HOME"/DATA" ] || mkdir -p $HOME"/DATA" -cd ~/DATA -git clone https://github.com/erikdubois/arcolinux-nemesis - -echo -tput setaf 3 -echo "################################################################" -echo "################### End clone arcolinux-nemesis" -echo "################################################################" -tput sgr0 -echo \ No newline at end of file diff --git a/airootfs/usr/bin/melawy-linux-connection-checker b/airootfs/usr/local/bin/melawy-linux-connection-checker similarity index 100% rename from airootfs/usr/bin/melawy-linux-connection-checker rename to airootfs/usr/local/bin/melawy-linux-connection-checker diff --git a/airootfs/usr/local/bin/melawy-linux-final b/airootfs/usr/local/bin/melawy-linux-final new file mode 100755 index 0000000..c121b0b --- /dev/null +++ b/airootfs/usr/local/bin/melawy-linux-final @@ -0,0 +1,59 @@ +#!/bin/bash +echo +echo "#################################" +echo "Start melawy-linux-final" +echo "#################################" + +echo "Permissions of important folders" +echo "#################################" +chmod 750 /etc/sudoers.d +chmod 750 /etc/polkit-1/rules.d +chgrp polkitd /etc/polkit-1/rules.d + +echo "Copy /etc/skel to /root" +echo "#################################" +cp -aT /etc/skel/ /root/ + +echo "Cleanup autologin root" +echo "#################################" +rm -rf /etc/systemd/system/getty@tty1.service.d + +echo "Setting editor to nano" +echo "#################################" +echo "EDITOR=nano" >> /etc/profile + +#Original cleanup +echo "Cleanup original files" +echo "#################################" +rm -f /etc/sudoers.d/g_wheel +rm -f /etc/polkit-1/rules.d/49-nopasswd_global.rules +rm -f /etc/systemd/system/etc-pacman.d-gnupg.mount +rm -f /etc/xdg/autostart/welcome.desktop +rm /root/{.automated_script.sh,.zlogin} +mv /etc/melawy-linux-release /etc/lsb-release + +echo "Permission of root" +echo "#################################" +chmod -v 750 /root + +echo "Patching System.conf" +echo "#################################" +sed -i "s/#RebootWatchdogSec=10min/RebootWatchdogSec=30s/g" /etc/systemd/system.conf +sed -i "s/#DefaultTimeoutStopSec=90s/DefaultTimeoutStopSec=5s/g" /etc/systemd/system.conf +sed -i "s/#DefaultTimeoutStartSec=90s/DefaultTimeoutStartSec=10s/g" /etc/systemd/system.conf + +echo "Setting KGPg Never to start" +echo "#################################" +sed -i '219 i OnlyShowIn=KDE' /etc/xdg/autostart/org.kde.kgpg.desktop + +echo "Fixing SDDM.conf User" +echo "#####################" +sed -i "s/User=liveuser/User=/g" /etc/sddm.conf.d/kde_settings.conf + +echo "#################################" +echo "End melawy-linux-final" +echo "#################################" +rm /usr/local/bin/vcheck +rm /usr/local/bin/all-cores +rm /usr/local/bin/melawy-linux-final +rm -rf /home/liveuser/ diff --git a/airootfs/usr/local/bin/prepare-live-desktop.sh b/airootfs/usr/local/bin/prepare-live-desktop.sh new file mode 100755 index 0000000..2b35714 --- /dev/null +++ b/airootfs/usr/local/bin/prepare-live-desktop.sh @@ -0,0 +1,25 @@ +#!/bin/sh +# borrowed from manjaro livecd + +xdg=$(xdg-user-dir DESKTOP) +src='/usr/share/applications' + +## We don't need .desktop on desktop, +## actually we should remove .desktop or fix the .desktop as it is running with pkexec, +## and using current calamares config (not even running with script to provide logs). +#if [[ -f /usr/bin/calamares ]]; then +# install -Dm755 $src/calamares.desktop \ +# $xdg/calamares.desktop +#fi + +# workaround for glib trash bug (https://bugzilla.gnome.org/show_bug.cgi?id=748248) +userid=$(id -u $USER) +if [ ! -d "/.Trash-$userid" ]; then + sudo mkdir -p /.Trash-$userid/{expunged,files,info} + sudo chown -R $userid /.Trash-$userid +fi + +# mark launchers trusted for XFCE 4.18 +for f in $(ls $xdg/*desktop); do + gio set -t string $f metadata::xfce-exe-checksum "$(sha256sum $f | awk '{print $1}')" +done; diff --git a/airootfs/usr/local/bin/remove-nvidia b/airootfs/usr/local/bin/remove-nvidia new file mode 100755 index 0000000..88f79b4 --- /dev/null +++ b/airootfs/usr/local/bin/remove-nvidia @@ -0,0 +1,48 @@ +#!/bin/bash + +_remove_pacman_package() { + local _pkgname="$1" + pacman -Rsnc "$_pkgname" --noconfirm || true +} + +# remove pkgs installed for VMs +_clean_vm_packages() { + + #remove virtualbox + if pacman -Qi virtualbox-guest-utils &> /dev/null; then + systemctl disable vboxservice.service + _remove_pacman_package virtualbox-guest-utils + fi + + if pacman -Qi virtualbox-guest-utils-nox &> /dev/null; then + systemctl disable vboxservice.service + _remove_pacman_package virtualbox-guest-utils-nox + fi + + #remove vmware + if [ -f /etc/xdg/autostart/vmware-user.desktop ]; then + rm /etc/xdg/autostart/vmware-user.desktop + fi + + if pacman -Qi open-vm-tools &> /dev/null; then + systemctl disable vmtoolsd.service + _remove_pacman_package open-vm-tools + fi + + if [ -f /etc/systemd/system/multi-user.target.wants/vmtoolsd.service ]; then + rm /etc/systemd/system/multi-user.target.wants/vmtoolsd.service + fi + + #remove qemu + if pacman -Qi qemu-guest-agent &> /dev/null; then + systemctl disable qemu-guest-agent.service + _remove_pacman_package qemu-guest-agent + fi +} + +_check_not_running_vm="$(systemd-detect-virt | grep -q 'none'; echo $?)" +if [[ "${_check_not_running_vm}" -eq 0 ]]; then + _clean_vm_packages +fi + +# vim:set ft=bash sw=2 sts=2 et: diff --git a/airootfs/usr/local/bin/removeun b/airootfs/usr/local/bin/removeun new file mode 100755 index 0000000..5154a85 --- /dev/null +++ b/airootfs/usr/local/bin/removeun @@ -0,0 +1,60 @@ +#!/bin/bash +#set -e + +_clean_files() { +local _files_to_remove=( + /etc/modprobe.d/nvidia-utils.conf + /etc/modules-load.d/nvidia-utils.conf + /usr/local/bin/choose-mirror + /usr/local/bin/prepare-live-desktop.sh + /usr/local/bin/removeun-online + /usr/local/share/livecd-sound +) + + local xx + for xx in "${_files_to_remove[@]}"; do rm -rf "$xx" || true; done +} + +_clean_packages() { +local _packages_to_remove=( + gparted + grsync + cachyos-calamares-grub + cachyos-calamares-systemd + cachyos-calamares-refind + cachyos-calamares + cachyos-calamares-config + edk2-shell + boost-libs + doxygen + expect + gpart + tcpdump + arch-install-scripts + squashfs-tools + extra-cmake-modules + cmake + elinks + yaml-cpp + syslinux + clonezilla + memtest86+ + mkinitcpio-archiso +) + + local _check_nvidia_card="$(chwd --is_nvidia_card | grep -q 'NVIDIA card found!'; echo $?)" + if [[ "${_check_nvidia_card}" -ne 0 ]]; then + echo "No NVIDIA card detected. Removing nvidia drivers" + _packages_to_remove+=(nvidia-dkms nvidia-utils egl-wayland) + fi + + local xx + # @ does one by one to avoid errors in the entire process + # taken from Erik Dubois script + for xx in "${_packages_to_remove[@]}"; do pacman -Rsnc "$xx" --noconfirm; done +} + +_clean_packages +_clean_files + +# vim:set ft=bash sw=2 sts=2 et: diff --git a/airootfs/usr/local/bin/removeun-online b/airootfs/usr/local/bin/removeun-online new file mode 100755 index 0000000..a1df016 --- /dev/null +++ b/airootfs/usr/local/bin/removeun-online @@ -0,0 +1,55 @@ +#!/bin/bash + +_clean_packages() { + local _leave_these_packages="base\nbase-devel\ncachyos-keyring\ncachyos-hello\ngrub\nefibootmgr\noctopi\nca-certificates\n" + local _leave_these_basepackages="filesystem\ngcc-libs\nglibc\nglib2\nbash\ncoreutils\nfile\nfindutils\ngawk\ngrep\nprocps-ng\nsed\ntar\ngettext\npciutils\npsmisc\nshadow\nutil-linux\nbzip2\ngzip\nxz\nlicenses\npacman\nsystemd\nsystemd-sysvcompat\niputils\niproute2\n" + local _packages_to_remove=($(comm -23 <(pacman -Qq | sort) <({ pacman -Qqg base-devel; pacman -Qqg cachyos; printf $_leave_these_packages; printf $_leave_these_basepackages; } | sort -u))) + local xx + # @ does one by one to avoid errors in the entire process + # * can be used to treat all packages in one command + for xx in "${_packages_to_remove[@]}"; do pacman -Rs "$xx" --noconfirm; done + + # making sure they are removed +# local _toberemoved_str=$'bash-completion\nxorg-xinit\nxorg-xkill\nxorg-xinput\nxorg-xrandr\nxorg-xrdb\nmkinitcpio-openswap\nalacritty\nkonsole\nkwin-scripts-forceblur\nnetworkmanager-vpnc\nnetworkmanager-qt\nnetworkmanager-openvpn\nwireguard-tools\nopenconnect\nopenvpn\nqt5-xmlpatterns\ndoxygen\ntcpdump\ndmidecode\nkparts\npolkit-qt5\nxorg-server\nxorg-apps\nqt5-tools\nzfs-utils\nlinux-cachyos-zfs\nwget\nvirtualbox-guest-utils\nxf86-video-vesa\nxf86-video-amdgpu\nxf86-video-intel\nnvidia-dkms\nnvidia-utils\nlightdm\nlightdm-gtk-greeter\nlightdm-webkit2-greeter\nbase-devel\nlinux-cachyos-headers\nplasma-browser-integration\nplasma-desktop\nplasma-firewall\nplasma-framework\nplasma-integration\nplasma-nm\nplasma-pa\nplasma-systemmonitor\nplasma-thunderbolt\nplasma-workspace\ndiscover\npackagekit-qt5\nxed\nparole\nristretto\ndolphin\ndolphin-plugins\ncapitaine-cursors\ngtk-engine-murrine\ngnome-themes-extra\nadwaita-icon-theme\nfile-roller\nlibwnck3\nnetwork-manager-applet\ngalculator\ncachy-browser\nkvantum-qt5\nqt5ct\nneofetch\nopen-vm-tools\nxf86-input-vmmouse\nxf86-video-vmware\ncachyos-kde-settings\ncachyos-picom-config\ncachyos-rate-mirrors\ncachyos-kernel-manager\nchwd\noctopi\nreflector-simple\nmeld\nparu\nnordic-theme-git\nlightly-git\ncachyos-nord-kde-theme-git\nchar-white' +# local _toberemoved_packages +# readarray -t _toberemoved_packages <<< "$_toberemoved_str" +# local xxx +# for xxx in "${_toberemoved_packages[@]}"; do pacman -Rs "$xxx" --noconfirm; done + + rm /etc/sddm.conf || true +} + +_pacman_fix() { + +pacman-key --init +pacman-key --populate cachyos +} + +_try_v3() { + /lib/ld-linux-x86-64.so.2 --help | grep "x86-64-v3 (supported, searched)" > /dev/null + + local pacman_conf="/etc/pacman.conf" + local pacman_conf_cachyos="/etc/pacman-more.conf" + local pacman_conf_path_backup="/etc/pacman.conf.bak" + + if [ $? -eq 0 ]; then + echo "x86-64-v3 is supported" + + sed -i 's/Architecture = auto/#Architecture = auto/' $pacman_conf_cachyos + sed -i 's/#<disabled_v3>//g' $pacman_conf_cachyos + + echo "backup old config" + mv $pacman_conf $pacman_conf_path_backup + + echo "CachyOS -v3 Repo changed" + mv $pacman_conf_cachyos $pacman_conf + + else + echo "x86-64-v3 is not supported" + fi + +} + +_clean_packages +_try_v3 +_pacman_fix diff --git a/airootfs/usr/local/bin/services b/airootfs/usr/local/bin/services new file mode 100755 index 0000000..0efa4e5 --- /dev/null +++ b/airootfs/usr/local/bin/services @@ -0,0 +1,19 @@ +#!/bin/bash +echo +echo "#################################" +echo "Start Services" +echo "#################################" + +echo "Permission of root" +echo "#################################" +chmod -v 750 /root + +echo "Bluetooth improvements" +echo "#################################" +sed -i "s/#AutoEnable=false/AutoEnable=true/g" /etc/bluetooth/main.conf +echo 'load-module module-switch-on-connect' | sudo tee --append /etc/pulse/default.pa + +echo "#################################" +echo "End melawy-linux-final" +echo "#################################" +rm /usr/local/bin/services diff --git a/airootfs/usr/local/bin/skel b/airootfs/usr/local/bin/skel new file mode 100755 index 0000000..892bc9b --- /dev/null +++ b/airootfs/usr/local/bin/skel @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +echo +echo "#################################" +echo "Moving content from skel" +echo "#################################" + +for i in `ls /home/`; do su -s "/bin/bash" -c "cp -aT /etc/skel/ /home/$i/" $i || exit 0; done +rm /usr/local/bin/skel \ No newline at end of file diff --git a/airootfs/usr/local/bin/ucode b/airootfs/usr/local/bin/ucode new file mode 100755 index 0000000..0e9b404 --- /dev/null +++ b/airootfs/usr/local/bin/ucode @@ -0,0 +1,23 @@ +#!/bin/bash +#set -e +############################################################################### +# Author : Valeria Fadeeva +# Website : https://valeria.fadeeva.me +# Website : https://fadeeva.me +# Website : https://melawy.ru +############################################################################### + +cpu_vendor=$(cat /proc/cpuinfo | awk '/vendor_id/ {print $3}' | head -n 1) + +if [[ "$cpu_vendor" == "GenuineIntel" ]]; then + echo "Intel CPU detected." + sudo pacman -Rdd --noconfirm amd-ucode +elif [[ "$cpu_vendor" == "AuthenticAMD" ]]; then + echo "AMD CPU detected." + sudo pacman -Rdd --noconfirm intel-ucode +else + echo "Unknown CPU vendor: $cpu_vendor" + sudo pacman -Rdd --noconfirm intel-ucode amd-ucode +fi + +rm /usr/local/bin/ucode diff --git a/airootfs/usr/local/bin/vcheck b/airootfs/usr/local/bin/vcheck new file mode 100755 index 0000000..8fb756a --- /dev/null +++ b/airootfs/usr/local/bin/vcheck @@ -0,0 +1,151 @@ +#!/bin/bash +#set -e +############################################################################### +# Author : Valeria Fadeeva +# Website : https://valeria.fadeeva.me +# Website : https://fadeeva.me +# Website : https://melawy.ru +############################################################################### +# +# DO NOT JUST RUN THIS. EXAMINE AND JUDGE. RUN AT YOUR OWN RISK. +# +############################################################################### + +result=$(systemd-detect-virt) + +while [ -e "/var/lib/pacman/db.lck" ]; +do + echo 'Pacman is not ready yet. Will try again in 5 seconds.' + seconds=$(($seconds + 5)) + sleep 5 + if [[ "$seconds" == "30" ]]; then + echo 'Warning: removing pacman db.lck!' + rm /var/lib/pacman/db.lck + fi +done + +echo "You are working on "$result + +if [ $result = "oracle" ]; + then + #remove vmware + if pacman -Qi open-vm-tools &> /dev/null; then + systemctl disable vmtoolsd.service + echo "Disabled vmtoolsd.service" + pacman -Rns open-vm-tools --noconfirm + echo "Removed open-vm-tools" + fi + + if pacman -Qi xf86-video-vmware &> /dev/null; then + pacman -Rns xf86-video-vmware --noconfirm + echo "Removed xf86-video-vmware" + fi + + if [ -f /etc/systemd/system/multi-user.target.wants/vmtoolsd.service ]; then + rm /etc/systemd/system/multi-user.target.wants/vmtoolsd.service + echo "Removed vmtoolsd.service if still exists" + fi + + #remove qemu + if pacman -Qi qemu-guest-agent &> /dev/null; then + systemctl disable qemu-guest-agent.service + pacman -Rns qemu-guest-agent --noconfirm + echo "Removed qemu-guest-agent" + fi +fi + +if [ $result = "kvm" ]; + then + #remove vmware + if pacman -Qi open-vm-tools &> /dev/null; then + systemctl disable vmtoolsd.service + echo "Disabled vmtoolsd.service" + pacman -Rns open-vm-tools --noconfirm + echo "Removed open-vm-tools" + fi + + if pacman -Qi xf86-video-vmware &> /dev/null; then + pacman -Rns xf86-video-vmware --noconfirm + echo "Removed xf86-video-vmware" + fi + + if [ -f /etc/systemd/system/multi-user.target.wants/vmtoolsd.service ]; then + rm /etc/systemd/system/multi-user.target.wants/vmtoolsd.service + echo "Removed vmtoolsd.service if still exists" + fi + + #remove virtualbox + if pacman -Qi virtualbox-guest-utils &> /dev/null; then + systemctl disable vboxservice.service + pacman -Rns virtualbox-guest-utils --noconfirm + echo "Removed virtualbox-guest-utils" + fi + if pacman -Qi virtualbox-guest-utils-nox &> /dev/null; then + systemctl disable vboxservice.service + pacman -Rns virtualbox-guest-utils-nox --noconfirm + echo "Removed virtualbox-guest-utils-nox" + fi +fi + +if [ $result = "vmware" ]; + then + #remove virtualbox + if pacman -Qi virtualbox-guest-utils &> /dev/null; then + systemctl disable vboxservice.service + pacman -Rns virtualbox-guest-utils --noconfirm + echo "Removed virtualbox-guest-utils" + fi + if pacman -Qi virtualbox-guest-utils-nox &> /dev/null; then + systemctl disable vboxservice.service + pacman -Rns virtualbox-guest-utils-nox --noconfirm + echo "Removed virtualbox-guest-utils-nox" + fi + + #remove qemu + if pacman -Qi qemu-guest-agent &> /dev/null; then + systemctl disable qemu-guest-agent.service + pacman -Rns qemu-guest-agent --noconfirm + echo "Removed qemu-guest-agent" + fi +fi + +if [ $result = "none" ]; + then + #remove virtualbox + if pacman -Qi virtualbox-guest-utils &> /dev/null; then + systemctl disable vboxservice.service + pacman -Rns virtualbox-guest-utils --noconfirm + echo "Removed virtualbox-guest-utils" + fi + + if pacman -Qi virtualbox-guest-utils-nox &> /dev/null; then + systemctl disable vboxservice.service + pacman -Rns virtualbox-guest-utils-nox --noconfirm + echo "Removed virtualbox-guest-utils-nox" + fi + + #remove vmware + if pacman -Qi open-vm-tools &> /dev/null; then + systemctl disable vmtoolsd.service + echo "Disabled vmtoolsd.service" + pacman -Rns open-vm-tools --noconfirm + echo "Removed open-vm-tools" + fi + + if pacman -Qi xf86-video-vmware &> /dev/null; then + pacman -Rns xf86-video-vmware --noconfirm + echo "Removed xf86-video-vmware" + fi + + if [ -f /etc/systemd/system/multi-user.target.wants/vmtoolsd.service ]; then + rm /etc/systemd/system/multi-user.target.wants/vmtoolsd.service + echo "Removed vmtoolsd.service if still exists" + fi + + #remove qemu + if pacman -Qi qemu-guest-agent &> /dev/null; then + systemctl disable qemu-guest-agent.service + pacman -Rns qemu-guest-agent --noconfirm + echo "Removed qemu-guest-agent" + fi +fi diff --git a/airootfs/usr/share/logos/melawy.png b/airootfs/usr/share/logos/melawy.png new file mode 100644 index 0000000..cb94626 Binary files /dev/null and b/airootfs/usr/share/logos/melawy.png differ diff --git a/airootfs/usr/share/pixmaps/melawylinux.png b/airootfs/usr/share/pixmaps/melawylinux.png new file mode 100644 index 0000000..cb94626 Binary files /dev/null and b/airootfs/usr/share/pixmaps/melawylinux.png differ diff --git a/airootfs/usr/share/wallpapers/melawy-linux-wallpapers/fenek.png b/airootfs/usr/share/wallpapers/melawy-linux-wallpapers/fenek.png new file mode 100644 index 0000000..d501b9d Binary files /dev/null and b/airootfs/usr/share/wallpapers/melawy-linux-wallpapers/fenek.png differ diff --git a/airootfs/usr/share/wallpapers/melawy-linux-wallpapers/lera-sugar.png b/airootfs/usr/share/wallpapers/melawy-linux-wallpapers/lera-sugar.png new file mode 100644 index 0000000..fafb0de Binary files /dev/null and b/airootfs/usr/share/wallpapers/melawy-linux-wallpapers/lera-sugar.png differ diff --git a/airootfs/usr/share/wallpapers/melawy-linux-wallpapers/nier-a2.png b/airootfs/usr/share/wallpapers/melawy-linux-wallpapers/nier-a2.png new file mode 100644 index 0000000..6ed5499 Binary files /dev/null and b/airootfs/usr/share/wallpapers/melawy-linux-wallpapers/nier-a2.png differ diff --git a/airootfs/usr/share/wallpapers/melawy-linux-wallpapers/splash.png b/airootfs/usr/share/wallpapers/melawy-linux-wallpapers/splash.png new file mode 100644 index 0000000..6ed5499 Binary files /dev/null and b/airootfs/usr/share/wallpapers/melawy-linux-wallpapers/splash.png differ diff --git a/mkarchiso_last_my b/mkarchiso_last_my index 16f4161..5da3ce5 100755 --- a/mkarchiso_last_my +++ b/mkarchiso_last_my @@ -29,6 +29,7 @@ gpg_key="" gpg_sender="" iso_name="" iso_label="" +iso_uuid="" iso_publisher="" iso_application="" iso_version="" @@ -38,6 +39,7 @@ pacman_conf="" packages="" bootstrap_packages="" pacstrap_dir="" +declare -i rm_work_dir=0 buildmodes=() bootmodes=() airootfs_image_type="" @@ -49,6 +51,7 @@ efiboot_files=() # adapted from GRUB_EARLY_INITRD_LINUX_STOCK in https://git.savannah.gnu.org/cgit/grub.git/tree/util/grub-mkconfig.in readonly ucodes=('intel-uc.img' 'intel-ucode.img' 'amd-uc.img' 'amd-ucode.img' 'early_ucode.cpio' 'microcode.cpio') + # Show an INFO message # $1: message string _msg_info() { @@ -85,7 +88,7 @@ usage: ${app_name} [options] <profile_dir> Default: '${iso_application}' -C <file> pacman configuration file. Default: '${pacman_conf}' - -D <install_dir> Set an install_dir. All files will by located here. + -D <install_dir> Set an install_dir. All files will be located here. Default: '${install_dir}' NOTE: Max 8 characters, use only [a-z0-9] -L <label> Set the ISO volume label @@ -108,6 +111,7 @@ usage: ${app_name} [options] <profile_dir> Default: '${out_dir}' -p [package ..] Package(s) to install. Multiple packages are provided as quoted, space delimited list. + -r Delete the working directory at the end. -v Enable verbose output -w <work_dir> Set the working directory Default: '${work_dir}' @@ -170,9 +174,10 @@ _cleanup_pacstrap_dir() { [[ -d "${pacstrap_dir}/var/tmp" ]] && find "${pacstrap_dir}/var/tmp" -mindepth 1 -delete # Delete package pacman related files. find "${work_dir}" \( -name '*.pacnew' -o -name '*.pacsave' -o -name '*.pacorig' \) -delete - # Create an empty /etc/machine-id + # Create /etc/machine-id with special value 'uninitialized': the final id is + # generated on first boot, systemd's first-boot mechanism applies (see machine-id(5)) rm -f -- "${pacstrap_dir}/etc/machine-id" - printf '' > "${pacstrap_dir}/etc/machine-id" + printf 'uninitialized\n' >"${pacstrap_dir}/etc/machine-id" _msg_info "Done!" } @@ -207,7 +212,7 @@ _mkairootfs_ext4+squashfs() { [[ ! "${quiet}" == "y" ]] || mkfs_ext4_options+=('-q') rm -f -- "${pacstrap_dir}.img" E2FSPROGS_FAKE_TIME="${SOURCE_DATE_EPOCH}" mkfs.ext4 "${mkfs_ext4_options[@]}" -- "${pacstrap_dir}.img" 32G - tune2fs -c 0 -i 0 -- "${pacstrap_dir}.img" > /dev/null + tune2fs -c 0 -i 0 -- "${pacstrap_dir}.img" >/dev/null _msg_info "Done!" install -d -m 0755 -- "${isofs_dir}/${install_dir}/${arch}" @@ -248,9 +253,9 @@ _mkchecksum() { _msg_info "Creating checksum file for self-test..." cd -- "${isofs_dir}/${install_dir}/${arch}" if [[ -e "${isofs_dir}/${install_dir}/${arch}/airootfs.sfs" ]]; then - sha512sum airootfs.sfs > airootfs.sha512 + sha512sum airootfs.sfs >airootfs.sha512 elif [[ -e "${isofs_dir}/${install_dir}/${arch}/airootfs.erofs" ]]; then - sha512sum airootfs.erofs > airootfs.sha512 + sha512sum airootfs.erofs >airootfs.sha512 fi cd -- "${OLDPWD}" _msg_info "Done!" @@ -283,12 +288,12 @@ _run_once() { # Set up custom pacman.conf with custom cache and pacman hook directories. _make_pacman_conf() { local _cache_dirs _system_cache_dirs _profile_cache_dirs - _system_cache_dirs="$(pacman-conf CacheDir| tr '\n' ' ')" - _profile_cache_dirs="$(pacman-conf --config "${pacman_conf}" CacheDir| tr '\n' ' ')" + _system_cache_dirs="$(pacman-conf CacheDir | tr '\n' ' ')" + _profile_cache_dirs="$(pacman-conf --config "${pacman_conf}" CacheDir | tr '\n' ' ')" # Only use the profile's CacheDir, if it is not the default and not the same as the system cache dir. - if [[ "${_profile_cache_dirs}" != "/var/cache/pacman/pkg" ]] && \ - [[ "${_system_cache_dirs}" != "${_profile_cache_dirs}" ]]; then + if [[ "${_profile_cache_dirs}" != "/var/cache/pacman/pkg" ]] \ + && [[ "${_system_cache_dirs}" != "${_profile_cache_dirs}" ]]; then _cache_dirs="${_profile_cache_dirs}" else _cache_dirs="${_system_cache_dirs}" @@ -300,9 +305,9 @@ _make_pacman_conf() { # append CacheDir and HookDir to [options] section # HookDir is *always* set to the airootfs' override directory # see `man 8 pacman` for further info - pacman-conf --config "${pacman_conf}" | \ - sed "/CacheDir/d;/DBPath/d;/HookDir/d;/LogFile/d;/RootDir/d;/\[options\]/a CacheDir = ${_cache_dirs} - /\[options\]/a HookDir = ${pacstrap_dir}/etc/pacman.d/hooks/" > "${work_dir}/${buildmode}.pacman.conf" + pacman-conf --config "${pacman_conf}" \ + | sed "/CacheDir/d;/DBPath/d;/HookDir/d;/LogFile/d;/RootDir/d;/\[options\]/a CacheDir = ${_cache_dirs} + /\[options\]/a HookDir = ${pacstrap_dir}/etc/pacman.d/hooks/" >"${work_dir}/${buildmode}.pacman.conf" } # Prepare working directory and copy custom root file system files. @@ -317,7 +322,7 @@ _make_custom_airootfs() { cp -af --no-preserve=ownership,mode -- "${profile}/airootfs/." "${pacstrap_dir}" # Set ownership and mode for files and directories for filename in "${!file_permissions[@]}"; do - IFS=':' read -ra permissions <<< "${file_permissions["${filename}"]}" + IFS=':' read -ra permissions <<<"${file_permissions["${filename}"]}" # Prevent file path traversal outside of $pacstrap_dir if [[ "$(realpath -q -- "${pacstrap_dir}${filename}")" != "${pacstrap_dir}"* ]]; then _msg_error "Failed to set permissions on '${pacstrap_dir}${filename}'. Outside of valid path." 1 @@ -358,7 +363,7 @@ _make_packages() { # Unset TMPDIR to work around https://bugs.archlinux.org/task/70580 if [[ "${quiet}" = "y" ]]; then - env -u TMPDIR pacstrap -C "${work_dir}/${buildmode}.pacman.conf" -c -G -M -- "${pacstrap_dir}" "${buildmode_pkg_list[@]}" &> /dev/null + env -u TMPDIR pacstrap -C "${work_dir}/${buildmode}.pacman.conf" -c -G -M -- "${pacstrap_dir}" "${buildmode_pkg_list[@]}" &>/dev/null else env -u TMPDIR pacstrap -C "${work_dir}/${buildmode}.pacman.conf" -c -G -M -- "${pacstrap_dir}" "${buildmode_pkg_list[@]}" fi @@ -396,13 +401,13 @@ _make_customize_airootfs() { if [[ ! -d "${pacstrap_dir}${passwd[5]}" ]]; then install -d -m 0750 -o "${passwd[2]}" -g "${passwd[3]}" -- "${pacstrap_dir}${passwd[5]}" fi - cp -dnRT --preserve=mode,timestamps,links -- "${pacstrap_dir}/etc/skel/." "${pacstrap_dir}${passwd[5]}" + cp -dRT --update=none --preserve=mode,timestamps,links -- "${pacstrap_dir}/etc/skel/." "${pacstrap_dir}${passwd[5]}" chmod -f 0750 -- "${pacstrap_dir}${passwd[5]}" chown -hR -- "${passwd[2]}:${passwd[3]}" "${pacstrap_dir}${passwd[5]}" else _msg_error "Failed to set permissions on '${pacstrap_dir}${passwd[5]}'. Outside of valid path." 1 fi - done < "${profile}/airootfs/etc/passwd" + done <"${profile}/airootfs/etc/passwd" _msg_info "Done!" fi @@ -423,6 +428,10 @@ _make_bootmodes() { for bootmode in "${bootmodes[@]}"; do _run_once "_make_bootmode_${bootmode}" done + + if [[ "${bootmodes[*]}" != *grub* ]]; then + _run_once _make_common_grubenv_and_loopbackcfg + fi } # Copy kernel and initramfs to ISO 9660 @@ -453,9 +462,10 @@ _make_bootmode_bios.syslinux.mbr() { install -d -m 0755 -- "${isofs_dir}/boot/syslinux" for _cfg in "${profile}/syslinux/"*.cfg; do sed "s|%ARCHISO_LABEL%|${iso_label}|g; + s|%ARCHISO_UUID%|${iso_uuid}|g; s|%INSTALL_DIR%|${install_dir}|g; s|%ARCH%|${arch}|g" \ - "${_cfg}" > "${isofs_dir}/boot/syslinux/${_cfg##*/}" + "${_cfg}" >"${isofs_dir}/boot/syslinux/${_cfg##*/}" done if [[ -e "${profile}/syslinux/splash.png" ]]; then install -m 0644 -- "${profile}/syslinux/splash.png" "${isofs_dir}/boot/syslinux/" @@ -480,10 +490,8 @@ _make_bootmode_bios.syslinux.mbr() { if [[ -e "${pacstrap_dir}/boot/memtest86+/memtest.bin" ]]; then install -d -m 0755 -- "${isofs_dir}/boot/memtest86+/" # rename for PXE: https://wiki.archlinux.org/title/Syslinux#Using_memtest - install -m 0644 -- "${pacstrap_dir}/boot/memtest86+/memtest.bin" \ - "${isofs_dir}/boot/memtest86+/memtest" - install -m 0644 -- "${pacstrap_dir}/usr/share/licenses/common/GPL2/license.txt" \ - "${isofs_dir}/boot/memtest86+/" + install -m 0644 -- "${pacstrap_dir}/boot/memtest86+/memtest.bin" "${isofs_dir}/boot/memtest86+/memtest" + install -m 0644 -- "${pacstrap_dir}/usr/share/licenses/common/GPL2/license.txt" "${isofs_dir}/boot/memtest86+/" fi _msg_info "Done! SYSLINUX set up for BIOS booting from a disk successfully." } @@ -505,8 +513,8 @@ _make_bootmode_bios.syslinux.eltorito() { _make_boot_on_fat() { local ucode_image all_ucode_images=() _msg_info "Preparing kernel and initramfs for the FAT file system..." - mmd -i "${efibootimg}" "::/${install_dir}" "::/${install_dir}/boot" \ - "::/${install_dir}/boot/${arch}" + mmd -i "${efibootimg}" \ + "::/${install_dir}" "::/${install_dir}/boot" "::/${install_dir}/boot/${arch}" mcopy -i "${efibootimg}" "${pacstrap_dir}/boot/vmlinuz-"* \ "${pacstrap_dir}/boot/initramfs-"*".img" \ "${pacstrap_dir}/boot/linux-"* \ @@ -534,10 +542,11 @@ _make_efibootimg() { fi # Convert from bytes to KiB and round up to the next full MiB with an additional MiB for reserved sectors. - imgsize_kib="$(awk 'function ceil(x){return int(x)+(x>int(x))} + imgsize_kib="$( + awk 'function ceil(x){return int(x)+(x>int(x))} function byte_to_kib(x){return x/1024} function mib_to_kib(x){return x*1024} - END {print mib_to_kib(ceil((byte_to_kib($1)+1024)/1024))}' <<< "${imgsize_bytes}" + END {print mib_to_kib(ceil((byte_to_kib($1)+1024)/1024))}' <<<"${imgsize_bytes}" )" # The FAT image must be created with mkfs.fat not mformat, as some systems have issues with mformat made images: # https://lists.gnu.org/archive/html/grub-devel/2019-04/msg00099.html @@ -546,7 +555,7 @@ _make_efibootimg() { if [[ "${quiet}" == "y" ]]; then # mkfs.fat does not have a -q/--quiet option, so redirect stdout to /dev/null instead # https://github.com/dosfstools/dosfstools/issues/103 - mkfs.fat -C -n ARCHISO_EFI "${efibootimg}" "${imgsize_kib}" > /dev/null + mkfs.fat -C -n ARCHISO_EFI "${efibootimg}" "${imgsize_kib}" >/dev/null else mkfs.fat -C -n ARCHISO_EFI "${efibootimg}" "${imgsize_kib}" fi @@ -555,41 +564,38 @@ _make_efibootimg() { mmd -i "${efibootimg}" ::/EFI ::/EFI/BOOT } - - # Copy GRUB files to ISO 9660 which is used by both IA32 UEFI and x64 UEFI _make_common_bootmode_grub_copy_to_isofs() { local files_to_copy=() files_to_copy+=("${work_dir}/grub/"*) - if compgen -G "${profile}/grub/!(*.cfg)" &> /dev/null; then + if compgen -G "${profile}/grub/!(*.cfg)" &>/dev/null; then files_to_copy+=("${profile}/grub/"!(*.cfg)) fi install -d -m 0755 -- "${isofs_dir}/boot/grub" - install -m 0644 -- "${files_to_copy[@]}" "${isofs_dir}/boot/grub/" + cp -r --remove-destination -- "${files_to_copy[@]}" "${isofs_dir}/boot/grub/" } # Prepare GRUB configuration files -_make_common_bootmode_grub_cfg(){ - local _cfg archiso_uuid search_filename +_make_common_bootmode_grub_cfg() { + local _cfg search_filename install -d -- "${work_dir}/grub" - # Precalculate the ISO's modification date in UTC, i.e. its "UUID" - TZ=UTC printf -v archiso_uuid '%(%F-%H-%M-%S-00)T' "$SOURCE_DATE_EPOCH" # Create a /boot/grub/YYYY-mm-dd-HH-MM-SS-00.uuid file on ISO 9660. GRUB will search for it to find the ISO # volume. This is similar to what grub-mkrescue does, except it places the file in /.disk/, but we opt to use a # directory that does not start with a dot to avoid it being accidentally missed when copying the ISO's contents. - : > "${work_dir}/grub/${archiso_uuid}.uuid" - search_filename="/boot/grub/${archiso_uuid}.uuid" + : >"${work_dir}/grub/${iso_uuid}.uuid" + search_filename="/boot/grub/${iso_uuid}.uuid" # Fill GRUB configuration files for _cfg in "${profile}/grub/"*'.cfg'; do sed "s|%ARCHISO_LABEL%|${iso_label}|g; + s|%ARCHISO_UUID%|${iso_uuid}|g; s|%INSTALL_DIR%|${install_dir}|g; s|%ARCH%|${arch}|g; s|%ARCHISO_SEARCH_FILENAME%|${search_filename}|g" \ - "${_cfg}" > "${work_dir}/grub/${_cfg##*/}" + "${_cfg}" >"${work_dir}/grub/${_cfg##*/}" done # Prepare grub.cfg that will be embedded inside the GRUB binaries @@ -632,7 +638,7 @@ else fi EOF grubembedcfg="${grubembedcfg//'%ARCHISO_SEARCH_FILENAME%'/"${search_filename}"}" - printf '%s\n' "$grubembedcfg" > "${work_dir}/grub-embed.cfg" + printf '%s\n' "$grubembedcfg" >"${work_dir}/grub-embed.cfg" # Write grubenv printf '%.1024s' \ @@ -644,7 +650,41 @@ EOF "${arch}" \ "${search_filename}" \ "$(printf '%0.1s' "#"{1..1024})")" \ - > "${work_dir}/grub/grubenv" + >"${work_dir}/grub/grubenv" +} + +# Create GRUB specific configuration files when GRUB is not used as a boot loader +_make_common_grubenv_and_loopbackcfg() { + local search_filename + + install -d -m 0755 -- "${isofs_dir}/boot/grub" + # Create a /boot/grub/YYYY-mm-dd-HH-MM-SS-00.uuid file on ISO 9660. GRUB will search for it to find the ISO + # volume. This is similar to what grub-mkrescue does, except it places the file in /.disk/, but we opt to use a + # directory that does not start with a dot to avoid it being accidentally missed when copying the ISO's contents. + search_filename="/boot/grub/${iso_uuid}.uuid" + : >"${isofs_dir}/${search_filename}" + + # Write grubenv + printf '%.1024s' \ + "$(printf '# GRUB Environment Block\nNAME=%s\nVERSION=%s\nARCHISO_LABEL=%s\nINSTALL_DIR=%s\nARCH=%s\nARCHISO_SEARCH_FILENAME=%s\n%s' \ + "${iso_name}" \ + "${iso_version}" \ + "${iso_label}" \ + "${install_dir}" \ + "${arch}" \ + "${search_filename}" \ + "$(printf '%0.1s' "#"{1..1024})")" \ + >"${isofs_dir}/boot/grub/grubenv" + + # Copy loopback.cfg to /boot/grub/ on ISO 9660 + if [[ -e "${profile}/grub/loopback.cfg" ]]; then + sed "s|%ARCHISO_LABEL%|${iso_label}|g; + s|%ARCHISO_UUID%|${iso_uuid}|g; + s|%INSTALL_DIR%|${install_dir}|g; + s|%ARCH%|${arch}|g; + s|%ARCHISO_SEARCH_FILENAME%|${search_filename}|g" \ + "${profile}/grub/loopback.cfg" >"${isofs_dir}/boot/grub/loopback.cfg" + fi } _make_bootmode_uefi-ia32.grub.esp() { @@ -661,12 +701,12 @@ _make_bootmode_uefi-ia32.grub.esp() { search_fs_file search_fs_uuid search_label serial sleep tpm udf usb usbserial_common usbserial_ftdi \ usbserial_pl2303 usbserial_usbdebug video xfs zstd) grub-mkstandalone -O i386-efi \ - --modules="${grubmodules[*]}" \ - --locales="en@quot" \ - --themes="" \ - --sbat=/usr/share/grub/sbat.csv \ - --disable-shim-lock \ - -o "${work_dir}/BOOTIA32.EFI" "boot/grub/grub.cfg=${work_dir}/grub-embed.cfg" + --modules="${grubmodules[*]}" \ + --locales="en@quot" \ + --themes="" \ + --sbat=/usr/share/grub/sbat.csv \ + --disable-shim-lock \ + -o "${work_dir}/BOOTIA32.EFI" "boot/grub/grub.cfg=${work_dir}/grub-embed.cfg" # Add GRUB to the list of files used to calculate the required FAT image size. efiboot_files+=("${work_dir}/BOOTIA32.EFI" "${pacstrap_dir}/usr/share/edk2-shell/ia32/Shell_Full.efi") @@ -738,12 +778,12 @@ _make_bootmode_uefi-x64.grub.esp() { search_fs_file search_fs_uuid search_label serial sleep tpm udf usb usbserial_common usbserial_ftdi \ usbserial_pl2303 usbserial_usbdebug video xfs zstd) grub-mkstandalone -O x86_64-efi \ - --modules="${grubmodules[*]}" \ - --locales="en@quot" \ - --themes="" \ - --sbat=/usr/share/grub/sbat.csv \ - --disable-shim-lock \ - -o "${work_dir}/BOOTx64.EFI" "boot/grub/grub.cfg=${work_dir}/grub-embed.cfg" + --modules="${grubmodules[*]}" \ + --locales="en@quot" \ + --themes="" \ + --sbat=/usr/share/grub/sbat.csv \ + --disable-shim-lock \ + -o "${work_dir}/BOOTx64.EFI" "boot/grub/grub.cfg=${work_dir}/grub-embed.cfg" # Add GRUB to the list of files used to calculate the required FAT image size. efiboot_files+=("${work_dir}/BOOTx64.EFI" "${pacstrap_dir}/usr/share/edk2-shell/x64/Shell_Full.efi") @@ -802,11 +842,9 @@ _make_bootmode_uefi-x64.grub.eltorito() { _msg_info "Done!" } -# Prepare systemd-boot for booting when written to a disk (isohybrid) -_make_bootmode_uefi-x64.systemd-boot.esp() { +_make_common_bootmode_systemd-boot() { local _file efiboot_imgsize local _available_ucodes=() - _msg_info "Setting up systemd-boot for UEFI booting..." for _file in "${ucodes[@]}"; do if [[ -e "${pacstrap_dir}/boot/${_file}" ]]; then @@ -814,31 +852,67 @@ _make_bootmode_uefi-x64.systemd-boot.esp() { fi done # Calculate the required FAT image size in bytes - efiboot_files+=("${pacstrap_dir}/usr/lib/systemd/boot/efi/systemd-bootx64.efi" - "${pacstrap_dir}/usr/share/edk2-shell/x64/Shell_Full.efi" - "${profile}/efiboot/" + # shellcheck disable=SC2076 + if [[ " ${bootmodes[*]} " =~ ' uefi-x64.systemd-boot.esp ' || " ${bootmodes[*]} " =~ ' uefi-x64.systemd-boot.eltorito ' ]]; then + efiboot_files+=("${pacstrap_dir}/usr/lib/systemd/boot/efi/systemd-bootx64.efi" + "${pacstrap_dir}/usr/share/edk2-shell/x64/Shell_Full.efi") + fi + # shellcheck disable=SC2076 + if [[ " ${bootmodes[*]} " =~ ' uefi-ia32.systemd-boot.esp ' || " ${bootmodes[*]} " =~ ' uefi-ia32.systemd-boot.eltorito ' ]]; then + efiboot_files+=("${pacstrap_dir}/usr/lib/systemd/boot/efi/systemd-bootia32.efi" + "${pacstrap_dir}/usr/share/edk2-shell/ia32/Shell_Full.efi") + fi + efiboot_files+=("${profile}/efiboot/" "${pacstrap_dir}/boot/vmlinuz-"* "${pacstrap_dir}/boot/initramfs-"*".img" "${pacstrap_dir}/boot/linux-"* "${_available_ucodes[@]}") - efiboot_imgsize="$(du -bcs -- "${efiboot_files[@]}" \ - 2>/dev/null | awk 'END { print $1 }')" + efiboot_imgsize="$(du -bcs -- "${efiboot_files[@]}" 2>/dev/null | awk 'END { print $1 }')" # Create a FAT image for the EFI system partition _make_efibootimg "$efiboot_imgsize" +} - # Copy systemd-boot EFI binary to the default/fallback boot path - mcopy -i "${efibootimg}" \ - "${pacstrap_dir}/usr/lib/systemd/boot/efi/systemd-bootx64.efi" ::/EFI/BOOT/BOOTx64.EFI +_make_common_bootmode_systemd-boot_conf.isofs() { + local _conf + + # Copy systemd-boot configuration files + install -d -m 0755 -- "${isofs_dir}/loader/entries" + install -m 0644 -- "${profile}/efiboot/loader/loader.conf" "${isofs_dir}/loader/" + for _conf in "${profile}/efiboot/loader/entries/"*".conf"; do + sed "s|%ARCHISO_LABEL%|${iso_label}|g; + s|%INSTALL_DIR%|${install_dir}|g; + s|%ARCH%|${arch}|g" \ + "${_conf}" >"${isofs_dir}/loader/entries/${_conf##*/}" + done +} + +_make_common_bootmode_systemd-boot_conf.esp() { + local _conf # Copy systemd-boot configuration files mmd -i "${efibootimg}" ::/loader ::/loader/entries mcopy -i "${efibootimg}" "${profile}/efiboot/loader/loader.conf" ::/loader/ for _conf in "${profile}/efiboot/loader/entries/"*".conf"; do sed "s|%ARCHISO_LABEL%|${iso_label}|g; + s|%ARCHISO_UUID%|${iso_uuid}|g; s|%INSTALL_DIR%|${install_dir}|g; s|%ARCH%|${arch}|g" \ "${_conf}" | mcopy -i "${efibootimg}" - "::/loader/entries/${_conf##*/}" done +} + +# Prepare systemd-boot for booting when written to a disk (isohybrid) +_make_bootmode_uefi-x64.systemd-boot.esp() { + _msg_info "Setting up systemd-boot for x64 UEFI booting..." + + _run_once _make_common_bootmode_systemd-boot + + # Copy systemd-boot EFI binary to the default/fallback boot path + mcopy -i "${efibootimg}" \ + "${pacstrap_dir}/usr/lib/systemd/boot/efi/systemd-bootx64.efi" ::/EFI/BOOT/BOOTx64.EFI + + # Copy systemd-boot configuration files + _run_once _make_common_bootmode_systemd-boot_conf.esp # shellx64.efi is picked up automatically when on / if [[ -e "${pacstrap_dir}/usr/share/edk2-shell/x64/Shell_Full.efi" ]]; then @@ -848,9 +922,9 @@ _make_bootmode_uefi-x64.systemd-boot.esp() { # Copy kernel and initramfs to FAT image. # systemd-boot can only access files from the EFI system partition it was launched from. - _make_boot_on_fat + _run_once _make_boot_on_fat - _msg_info "Done! systemd-boot set up for UEFI booting successfully." + _msg_info "Done! systemd-boot set up for x64 UEFI booting successfully." } # Prepare systemd-boot for El Torito booting @@ -870,14 +944,7 @@ _make_bootmode_uefi-x64.systemd-boot.eltorito() { "${isofs_dir}/EFI/BOOT/BOOTx64.EFI" # Copy systemd-boot configuration files - install -d -m 0755 -- "${isofs_dir}/loader/entries" - install -m 0644 -- "${profile}/efiboot/loader/loader.conf" "${isofs_dir}/loader/" - for _conf in "${profile}/efiboot/loader/entries/"*".conf"; do - sed "s|%ARCHISO_LABEL%|${iso_label}|g; - s|%INSTALL_DIR%|${install_dir}|g; - s|%ARCH%|${arch}|g" \ - "${_conf}" > "${isofs_dir}/loader/entries/${_conf##*/}" - done + _run_once _make_common_bootmode_systemd-boot_conf.isofs # edk2-shell based UEFI shell # shellx64.efi is picked up automatically when on / @@ -888,6 +955,58 @@ _make_bootmode_uefi-x64.systemd-boot.eltorito() { _msg_info "Done!" } +_make_bootmode_uefi-ia32.systemd-boot.esp() { + _msg_info "Setting up systemd-boot for IA32 UEFI booting..." + + _run_once _make_common_bootmode_systemd-boot + + # Copy systemd-boot EFI binary to the default/fallback boot path + mcopy -i "${efibootimg}" \ + "${pacstrap_dir}/usr/lib/systemd/boot/efi/systemd-bootia32.efi" ::/EFI/BOOT/BOOTIA32.EFI + + # Copy systemd-boot configuration files + _run_once _make_common_bootmode_systemd-boot_conf.esp + + # shellia32.efi is picked up automatically when on / + if [[ -e "${pacstrap_dir}/usr/share/edk2-shell/ia32/Shell_Full.efi" ]]; then + mcopy -i "${efibootimg}" \ + "${pacstrap_dir}/usr/share/edk2-shell/ia32/Shell_Full.efi" ::/shellia32.efi + fi + + # Copy kernel and initramfs to FAT image. + # systemd-boot can only access files from the EFI system partition it was launched from. + _run_once _make_boot_on_fat + + _msg_info "Done! systemd-boot set up for IA32 UEFI booting successfully." +} + +_make_bootmode_uefi-ia32.systemd-boot.eltorito() { + # El Torito UEFI boot requires an image containing the EFI system partition. + # uefi-ia32.systemd-boot.eltorito has the same requirements as uefi-ia32.systemd-boot.esp + _run_once _make_bootmode_uefi-ia32.systemd-boot.esp + + # Additionally set up systemd-boot in ISO 9660. This allows creating a medium for the live environment by using + # manual partitioning and simply copying the ISO 9660 file system contents. + # This is not related to El Torito booting and no firmware uses these files. + _msg_info "Preparing an /EFI directory for the ISO 9660 file system..." + install -d -m 0755 -- "${isofs_dir}/EFI/BOOT" + + # Copy systemd-boot EFI binary to the default/fallback boot path + install -m 0644 -- "${pacstrap_dir}/usr/lib/systemd/boot/efi/systemd-bootia32.efi" \ + "${isofs_dir}/EFI/BOOT/BOOTIA32.EFI" + + # Copy systemd-boot configuration files + _run_once _make_common_bootmode_systemd-boot_conf.isofs + + # edk2-shell based UEFI shell + # shellia32.efi is picked up automatically when on / + if [[ -e "${pacstrap_dir}/usr/share/edk2-shell/ia32/Shell_Full.efi" ]]; then + install -m 0644 -- "${pacstrap_dir}/usr/share/edk2-shell/ia32/Shell_Full.efi" "${isofs_dir}/shellia32.efi" + fi + + _msg_info "Done!" +} + _validate_requirements_bootmode_bios.syslinux.mbr() { # bios.syslinux.mbr requires bios.syslinux.eltorito # shellcheck disable=SC2076 @@ -931,20 +1050,15 @@ _validate_requirements_bootmode_bios.syslinux.eltorito() { _validate_requirements_bootmode_bios.syslinux.mbr } -_validate_requirements_bootmode_uefi-x64.systemd-boot.esp() { - # shellcheck disable=SC2076 - if [[ " ${bootmodes[*]} " =~ ' uefi-x64.grub.esp ' ]]; then - _msg_error "Validating '${bootmode}': cannot be used with bootmode uefi-x64.grub.esp!" 0 - fi - +_validate_requirements_common_systemd-boot() { # Check if mkfs.fat is available - if ! command -v mkfs.fat &> /dev/null; then + if ! command -v mkfs.fat &>/dev/null; then (( validation_error=validation_error+1 )) _msg_error "Validating '${bootmode}': mkfs.fat is not available on this host. Install 'dosfstools'!" 0 fi # Check if mmd and mcopy are available - if ! { command -v mmd &> /dev/null && command -v mcopy &> /dev/null; }; then + if ! { command -v mmd &>/dev/null && command -v mcopy &>/dev/null; }; then (( validation_error=validation_error+1 )) _msg_error "Validating '${bootmode}': mmd and/or mcopy are not available on this host. Install 'mtools'!" 0 fi @@ -976,6 +1090,14 @@ _validate_requirements_bootmode_uefi-x64.systemd-boot.esp() { fi } +_validate_requirements_bootmode_uefi-x64.systemd-boot.esp() { + # shellcheck disable=SC2076 + if [[ " ${bootmodes[*]} " =~ ' uefi-x64.grub.esp ' ]]; then + _msg_error "Validating '${bootmode}': cannot be used with bootmode uefi-x64.grub.esp!" 0 + fi + _validate_requirements_common_systemd-boot +} + _validate_requirements_bootmode_uefi-x64.systemd-boot.eltorito() { # shellcheck disable=SC2076 if [[ " ${bootmodes[*]} " =~ ' uefi-x64.grub.eltorito ' ]]; then @@ -986,9 +1108,28 @@ _validate_requirements_bootmode_uefi-x64.systemd-boot.eltorito() { _validate_requirements_bootmode_uefi-x64.systemd-boot.esp } +_validate_requirements_bootmode_uefi-ia32.systemd-boot.esp() { + # shellcheck disable=SC2076 + if [[ " ${bootmodes[*]} " =~ ' uefi-ia32.grub.esp ' ]]; then + _msg_error "Validating '${bootmode}': cannot be used with bootmode uefi-ia32.grub.esp!" 0 + fi + + _validate_requirements_common_systemd-boot +} + +_validate_requirements_bootmode_uefi-ia32.systemd-boot.eltorito() { + # shellcheck disable=SC2076 + if [[ " ${bootmodes[*]} " =~ ' uefi-ia32.grub.eltorito ' ]]; then + _msg_error "Validating '${bootmode}': cannot be used with bootmode uefi-ia32.grub.eltorito!" 0 + fi + + # uefi-ia32.systemd-boot.eltorito has the exact same requirements as uefi-ia32.systemd-boot.esp + _validate_requirements_bootmode_uefi-x64.systemd-boot.esp +} + _validate_requirements_bootmode_uefi-ia32.grub.esp() { # Check if GRUB is available - if ! command -v grub-mkstandalone &> /dev/null; then + if ! command -v grub-mkstandalone &>/dev/null; then (( validation_error=validation_error+1 )) _msg_error "Validating '${bootmode}': grub-install is not available on this host. Install 'grub'!" 0 fi @@ -1015,19 +1156,19 @@ _validate_requirements_bootmode_uefi-x64.grub.esp() { fi # Check if GRUB is available - if ! command -v grub-mkstandalone &> /dev/null; then + if ! command -v grub-mkstandalone &>/dev/null; then (( validation_error=validation_error+1 )) _msg_error "Validating '${bootmode}': grub-install is not available on this host. Install 'grub'!" 0 fi # Check if mkfs.fat is available - if ! command -v mkfs.fat &> /dev/null; then + if ! command -v mkfs.fat &>/dev/null; then (( validation_error=validation_error+1 )) _msg_error "Validating '${bootmode}': mkfs.fat is not available on this host. Install 'dosfstools'!" 0 fi # Check if mmd and mcopy are available - if ! { command -v mmd &> /dev/null && command -v mcopy &> /dev/null; }; then + if ! { command -v mmd &>/dev/null && command -v mcopy &>/dev/null; }; then _msg_error "Validating '${bootmode}': mmd and/or mcopy are not available on this host. Install 'mtools'!" 0 fi @@ -1156,14 +1297,14 @@ _sign_netboot_artifacts() { } _validate_requirements_airootfs_image_type_squashfs() { - if ! command -v mksquashfs &> /dev/null; then + if ! command -v mksquashfs &>/dev/null; then (( validation_error=validation_error+1 )) _msg_error "Validating '${airootfs_image_type}': mksquashfs is not available on this host. Install 'squashfs-tools'!" 0 fi } _validate_requirements_airootfs_image_type_ext4+squashfs() { - if ! { command -v mkfs.ext4 &> /dev/null && command -v tune2fs &> /dev/null; }; then + if ! { command -v mkfs.ext4 &>/dev/null && command -v tune2fs &>/dev/null; }; then (( validation_error=validation_error+1 )) _msg_error "Validating '${airootfs_image_type}': mkfs.ext4 and/or tune2fs is not available on this host. Install 'e2fsprogs'!" 0 fi @@ -1171,22 +1312,22 @@ _validate_requirements_airootfs_image_type_ext4+squashfs() { } _validate_requirements_airootfs_image_type_erofs() { - if ! command -v mkfs.erofs &> /dev/null; then + if ! command -v mkfs.erofs &>/dev/null; then (( validation_error=validation_error+1 )) _msg_error "Validating '${airootfs_image_type}': mkfs.erofs is not available on this host. Install 'erofs-utils'!" 0 fi } _validate_common_requirements_buildmode_all() { - if ! command -v pacman &> /dev/null; then + if ! command -v pacman &>/dev/null; then (( validation_error=validation_error+1 )) _msg_error "Validating build mode '${_buildmode}': pacman is not available on this host. Install 'pacman'!" 0 fi - if ! command -v find &> /dev/null; then + if ! command -v find &>/dev/null; then (( validation_error=validation_error+1 )) _msg_error "Validating build mode '${_buildmode}': find is not available on this host. Install 'findutils'!" 0 fi - if ! command -v gzip &> /dev/null; then + if ! command -v gzip &>/dev/null; then (( validation_error=validation_error+1 )) _msg_error "Validating build mode '${_buildmode}': gzip is not available on this host. Install 'gzip'!" 0 fi @@ -1210,7 +1351,7 @@ _validate_requirements_buildmode_bootstrap() { fi _validate_common_requirements_buildmode_all - if ! command -v bsdtar &> /dev/null; then + if ! command -v bsdtar &>/dev/null; then (( validation_error=validation_error+1 )) _msg_error "Validating build mode '${_buildmode}': bsdtar is not available on this host. Install 'libarchive'!" 0 fi @@ -1247,15 +1388,15 @@ _validate_common_requirements_buildmode_iso_netboot() { _msg_error "Two certificates are required for codesigning netboot artifacts, but '${cert_list[*]}' is provided." 0 fi - if ! command -v openssl &> /dev/null; then + if ! command -v openssl &>/dev/null; then (( validation_error=validation_error+1 )) _msg_error "Validating build mode '${_buildmode}': openssl is not available on this host. Install 'openssl'!" 0 fi fi # Check if the specified airootfs_image_type is supported - if typeset -f "_mkairootfs_${airootfs_image_type}" &> /dev/null; then - if typeset -f "_validate_requirements_airootfs_image_type_${airootfs_image_type}" &> /dev/null; then + if typeset -f "_mkairootfs_${airootfs_image_type}" &>/dev/null; then + if typeset -f "_validate_requirements_airootfs_image_type_${airootfs_image_type}" &>/dev/null; then "_validate_requirements_airootfs_image_type_${airootfs_image_type}" else _msg_warning "Function '_validate_requirements_airootfs_image_type_${airootfs_image_type}' does not exist. Validating the requirements of '${airootfs_image_type}' airootfs image type will not be possible." @@ -1275,8 +1416,8 @@ _validate_requirements_buildmode_iso() { _msg_error "No boot modes specified in '${profile}/profiledef.sh'." 0 fi for bootmode in "${bootmodes[@]}"; do - if typeset -f "_make_bootmode_${bootmode}" &> /dev/null; then - if typeset -f "_validate_requirements_bootmode_${bootmode}" &> /dev/null; then + if typeset -f "_make_bootmode_${bootmode}" &>/dev/null; then + if typeset -f "_validate_requirements_bootmode_${bootmode}" &>/dev/null; then "_validate_requirements_bootmode_${bootmode}" else _msg_warning "Function '_validate_requirements_bootmode_${bootmode}' does not exist. Validating the requirements of '${bootmode}' boot mode will not be possible." @@ -1287,7 +1428,7 @@ _validate_requirements_buildmode_iso() { fi done - if ! command -v awk &> /dev/null; then + if ! command -v awk &>/dev/null; then (( validation_error=validation_error+1 )) _msg_error "Validating build mode '${_buildmode}': awk is not available on this host. Install 'awk'!" 0 fi @@ -1360,7 +1501,7 @@ _add_xorrisofs_options_uefi-x64.systemd-boot.esp() { # A valid GPT prevents BIOS booting on some systems, instead use an invalid GPT (without a protective MBR). # The attached partition will have the EFI system partition type code in MBR, but in the invalid GPT it will # have a Microsoft basic partition type code. - if [[ ! " ${bootmodes[*]} " =~ ' uefi-x64.systemd-boot.eltorito ' && ! " ${bootmodes[*]} " =~ ' uefi-ia32.grub.eltorito ' ]]; then + if [[ ! " ${bootmodes[*]} " =~ ' uefi-x64.systemd-boot.eltorito ' && ! " ${bootmodes[*]} " =~ ' uefi-ia32.grub.eltorito ' ]]; then # If '-isohybrid-gpt-basdat' is specified before '-e', then the appended EFI system partition will have the # EFI system partition type ID/GUID in both MBR and GPT. If '-isohybrid-gpt-basdat' is specified after '-e', # the appended EFI system partition will have the Microsoft basic data type GUID in GPT. @@ -1431,7 +1572,7 @@ _add_xorrisofs_options_uefi-x64.grub.esp() { # A valid GPT prevents BIOS booting on some systems, instead use an invalid GPT (without a protective MBR). # The attached partition will have the EFI system partition type code in MBR, but in the invalid GPT it will # have a Microsoft basic partition type code. - if [[ ! " ${bootmodes[*]} " =~ ' uefi-x64.grub.eltorito ' && ! " ${bootmodes[*]} " =~ ' uefi-ia32.grub.eltorito ' ]]; then + if [[ ! " ${bootmodes[*]} " =~ ' uefi-x64.grub.eltorito ' && ! " ${bootmodes[*]} " =~ ' uefi-ia32.grub.eltorito ' ]]; then # If '-isohybrid-gpt-basdat' is specified before '-e', then the appended EFI system partition will have the # EFI system partition type ID/GUID in both MBR and GPT. If '-isohybrid-gpt-basdat' is specified after '-e', # the appended EFI system partition will have the Microsoft basic data type GUID in GPT. @@ -1498,7 +1639,7 @@ _build_bootstrap_image() { cd -- "${_bootstrap_parent}" _msg_info "Creating bootstrap image..." - bsdtar -cf - "root.${arch}" | gzip -cn9 > "${out_dir}/${image_name}" + bsdtar -cf - "root.${arch}" | gzip -cn9 >"${out_dir}/${image_name}" _msg_info "Done!" du -h -- "${out_dir}/${image_name}" cd -- "${OLDPWD}" @@ -1511,33 +1652,38 @@ _build_iso_image() { [[ -d "${out_dir}" ]] || install -d -- "${out_dir}" + # Do not read xorriso startup files to prevent interference and unintended behavior. + # For it to work, -no_rc must be the first argument passed to xorriso. + xorriso_options=('-no_rc') + + if [[ "${quiet}" == "y" ]]; then # The when xorriso is run in mkisofs compatibility mode (xorrisofs), the mkisofs option -quiet is interpreted # too late (e.g. messages about SOURCE_DATE_EPOCH still get shown). # Instead use native xorriso option to silence the output. - xorriso_options=('-report_about' 'SORRY' "${xorriso_options[@]}") + xorriso_options+=('-report_about' 'SORRY') fi # Add required xorrisofs options for each boot mode for bootmode in "${bootmodes[@]}"; do - typeset -f "_add_xorrisofs_options_${bootmode}" &> /dev/null && "_add_xorrisofs_options_${bootmode}" + typeset -f "_add_xorrisofs_options_${bootmode}" &>/dev/null && "_add_xorrisofs_options_${bootmode}" done rm -f -- "${out_dir}/${image_name}" _msg_info "Creating ISO image..." xorriso "${xorriso_options[@]}" -as mkisofs \ - -iso-level 3 \ - -full-iso9660-filenames \ - -joliet \ - -joliet-long \ - -rational-rock \ - -volid "${iso_label}" \ - -appid "${iso_application}" \ - -publisher "${iso_publisher}" \ - -preparer "prepared by ${app_name}" \ - "${xorrisofs_options[@]}" \ - -output "${out_dir}/${image_name}" \ - "${isofs_dir}/" + -iso-level 3 \ + -full-iso9660-filenames \ + -joliet \ + -joliet-long \ + -rational-rock \ + -volid "${iso_label}" \ + -appid "${iso_application}" \ + -publisher "${iso_publisher}" \ + -preparer "prepared by ${app_name}" \ + "${xorrisofs_options[@]}" \ + -output "${out_dir}/${image_name}" \ + "${isofs_dir}/" _msg_info "Done!" du -h -- "${out_dir}/${image_name}" } @@ -1597,8 +1743,8 @@ _validate_options() { # Check if the specified buildmodes are supported for _buildmode in "${buildmodes[@]}"; do - if typeset -f "_build_buildmode_${_buildmode}" &> /dev/null; then - if typeset -f "_validate_requirements_buildmode_${_buildmode}" &> /dev/null; then + if typeset -f "_build_buildmode_${_buildmode}" &>/dev/null; then + if typeset -f "_validate_requirements_buildmode_${_buildmode}" &>/dev/null; then "_validate_requirements_buildmode_${_buildmode}" else _msg_warning "Function '_validate_requirements_buildmode_${_buildmode}' does not exist. Validating the requirements of '${_buildmode}' build mode will not be possible." @@ -1670,10 +1816,15 @@ _set_overrides() { elif [[ -z "$quiet" ]]; then quiet="y" fi + if [[ -v override_rm_work_dir ]]; then + rm_work_dir="$override_rm_work_dir" + fi # Set variables that do not have overrides [[ -n "$airootfs_image_type" ]] || airootfs_image_type="squashfs" [[ -n "$iso_name" ]] || iso_name="${app_name}" + # Precalculate the ISO's modification date in UTC, i.e. its "UUID" + TZ=UTC printf -v iso_uuid '%(%F-%H-%M-%S-00)T' "$SOURCE_DATE_EPOCH" } _export_gpg_publickey() { @@ -1689,22 +1840,23 @@ _make_version() { _msg_info "Creating version files..." # Write version file to system installation dir rm -f -- "${pacstrap_dir}/version" - printf '%s\n' "${iso_version}" > "${pacstrap_dir}/version" + printf '%s\n' "${iso_version}" >"${pacstrap_dir}/version" if [[ "${buildmode}" == @("iso"|"netboot") ]]; then install -d -m 0755 -- "${isofs_dir}/${install_dir}" # Write version file to ISO 9660 - printf '%s\n' "${iso_version}" > "${isofs_dir}/${install_dir}/version" + printf '%s\n' "${iso_version}" >"${isofs_dir}/${install_dir}/version" fi if [[ "${buildmode}" == "iso" ]]; then # Write grubenv with version information to ISO 9660 - # TODO: after sufficient time has passed, do not create this file anymore when GRUB boot modes are used. - # _make_common_bootmode_grub_cfg already creates ${isofs_dir}/boot/grub/grubenv + # TODO: after sufficient time has passed, do not create this file anymore. + # _make_common_bootmode_grub_cfg and _make_common_grubenv_and_loopbackcfg already create a + # ${isofs_dir}/boot/grub/grubenv file rm -f -- "${isofs_dir}/${install_dir}/grubenv" printf '%.1024s' "$(printf '# GRUB Environment Block\nNAME=%s\nVERSION=%s\n%s' \ "${iso_name}" "${iso_version}" "$(printf '%0.1s' "#"{1..1024})")" \ - > "${isofs_dir}/${install_dir}/grubenv" + >"${isofs_dir}/${install_dir}/grubenv" fi # Append IMAGE_ID & IMAGE_VERSION to os-release @@ -1716,7 +1868,7 @@ _make_version() { _msg_warning "os-release file '${_os_release}' is outside of valid path." else [[ ! -e "${_os_release}" ]] || sed -i '/^IMAGE_ID=/d;/^IMAGE_VERSION=/d' "${_os_release}" - printf 'IMAGE_ID=%s\nIMAGE_VERSION=%s\n' "${iso_name}" "${iso_version}" >> "${_os_release}" + printf 'IMAGE_ID=%s\nIMAGE_VERSION=%s\n' "${iso_name}" "${iso_version}" >>"${_os_release}" fi # Touch /usr/lib/clock-epoch to give another hint on date and time @@ -1730,16 +1882,26 @@ _make_pkglist() { _msg_info "Creating a list of installed packages on live-enviroment..." case "${buildmode}" in "bootstrap") - pacman -Q --sysroot "${pacstrap_dir}" > "${pacstrap_dir}/pkglist.${arch}.txt" + pacman -Q --sysroot "${pacstrap_dir}" >"${pacstrap_dir}/pkglist.${arch}.txt" ;; "iso"|"netboot") install -d -m 0755 -- "${isofs_dir}/${install_dir}" - pacman -Q --sysroot "${pacstrap_dir}" > "${isofs_dir}/${install_dir}/pkglist.${arch}.txt" + pacman -Q --sysroot "${pacstrap_dir}" >"${isofs_dir}/${install_dir}/pkglist.${arch}.txt" ;; esac _msg_info "Done!" } +# Create working directory +_make_work_dir() { + if [[ ! -d "${work_dir}" ]]; then + install -d -- "${work_dir}" + elif (( rm_work_dir )); then + rm_work_dir=0 + _msg_warning "Working directory removal requested, but '${work_dir}' already exists. It will not be removed!" 0 + fi +} + # build the base for an ISO and/or a netboot target _build_iso_base() { local run_once_mode="base" @@ -1751,13 +1913,9 @@ _build_iso_base() { isofs_dir="${work_dir}/iso" # Create working directory - [[ -d "${work_dir}" ]] || install -d -- "${work_dir}" - # Write build date to file or if the file exists, read it from there - if [[ -e "${work_dir}/build_date" ]]; then - SOURCE_DATE_EPOCH="$(<"${work_dir}/build_date")" - else - printf '%s\n' "$SOURCE_DATE_EPOCH" > "${work_dir}/build_date" - fi + _run_once _make_work_dir + # Write build date to file if it does not exist already + [[ -e "${work_dir}/build_date" ]] || printf '%s\n' "$SOURCE_DATE_EPOCH" >"${work_dir}/build_date" [[ "${quiet}" == "y" ]] || _show_config _run_once _make_pacman_conf @@ -1812,7 +1970,6 @@ _build_buildmode_netboot() { if [[ -v cert_list ]]; then _run_once _sign_netboot_artifacts - _cms_sign_artifact "${airootfs_image_filename}" fi _run_once _export_netboot_artifacts } @@ -1834,23 +1991,29 @@ _build() { for buildmode in "${buildmodes[@]}"; do _run_once "_build_buildmode_${buildmode}" done + if (( rm_work_dir )); then + _msg_info 'Removing the working directory...' + rm -rf -- "${work_dir:?}/" + _msg_info 'Done!' + fi } -while getopts 'c:p:C:L:P:A:D:w:m:o:g:G:vh?' arg; do +while getopts 'c:p:C:L:P:A:D:w:m:o:g:G:vrh?' arg; do case "${arg}" in - p) read -r -a override_pkg_list <<< "${OPTARG}" ;; + p) read -r -a override_pkg_list <<<"${OPTARG}" ;; C) override_pacman_conf="${OPTARG}" ;; L) override_iso_label="${OPTARG}" ;; P) override_iso_publisher="${OPTARG}" ;; A) override_iso_application="${OPTARG}" ;; D) override_install_dir="${OPTARG}" ;; - c) read -r -a override_cert_list <<< "${OPTARG}" ;; + c) read -r -a override_cert_list <<<"${OPTARG}" ;; w) override_work_dir="${OPTARG}" ;; - m) read -r -a override_buildmodes <<< "${OPTARG}" ;; + m) read -r -a override_buildmodes <<<"${OPTARG}" ;; o) override_out_dir="${OPTARG}" ;; g) override_gpg_key="${OPTARG}" ;; G) override_gpg_sender="${OPTARG}" ;; v) override_quiet="n" ;; + r) declare -i override_rm_work_dir=1 ;; h|?) _usage 0 ;; *) _msg_error "Invalid argument '${arg}'" 0 @@ -1873,6 +2036,13 @@ fi # get the absolute path representation of the first non-option argument profile="$(realpath -- "${1}")" +# Read SOURCE_DATE_EPOCH from file early +build_date_file="$(realpath -q -- "${override_work_dir:-./work}/build_date")" || : +if [[ -f "$build_date_file" ]]; then + SOURCE_DATE_EPOCH="$(<"$build_date_file")" +fi +unset build_date_file + _read_profile _set_overrides _validate_options diff --git a/packages.x86_64 b/packages.x86_64 index 1207e4a..82877b0 100644 --- a/packages.x86_64 +++ b/packages.x86_64 @@ -1,1078 +1,439 @@ # BASE ## Base system - -base -# Minimal package set to define a basic Arch Linux installation -# Минимальный набор пакетов для определения базовой установки Arch Linux. - -base-devel -# Basic tools to build Arch Linux packages -# Основные инструменты для сборки пакетов Arch Linux - iptables-nft -# Linux kernel packet control tool (using nft interface) -# Инструмент управления пакетами ядра Linux (с использованием интерфейса nft) - +base +base-devel archlinux-keyring -# Arch Linux PGP keyring -# Брелок Arch Linux PGP +endeavouros-mirrorlist +endeavouros-keyring +cryptsetup +device-mapper +diffutils +dracut +edk2-shell +inetutils +less +linux +linux-firmware +linux-firmware-marvell +linux-headers +logrotate +lsb-release +man-db +man-pages +mdadm +nano +nano-syntax-highlighting +perl +s-nail +sudo +sysfsutils +systemd-sysvcompat +texinfo +which +vi + +## Filesystem +btrfs-progs +dosfstools +e2fsprogs +exfatprogs +f2fs-tools +jfsutils +lvm2 +mtools +nfs-utils +nilfs-utils +ntfs-3g +reiserfsprogs +xfsprogs + +## Boot +efibootmgr +efitools + +# HARDWARE + +## CPU +amd-ucode +intel-ucode + +## X system +mesa +mesa-utils +nvidia-dkms +nvidia-utils +xf86-input-libinput +xf86-video-amdgpu +xf86-video-ati +xorg-server +xorg-xdpyinfo +xorg-xinit +xorg-xinput +xorg-xkill +xorg-xrandr + +## Network hardware +b43-fwcutter +broadcom-wl-dkms + +## General hardware +lsscsi +sg3_utils +smartmontools +usbutils + +## Audio hardware +alsa-firmware +alsa-plugins +alsa-utils +ffmpegthumbnailer +gst-libav +gst-plugin-pipewire +gst-plugins-bad +gst-plugins-ugly +libdvdcss +pavucontrol +pipewire-alsa +pipewire-jack +pipewire-pulse +rtkit +sof-firmware +wireplumber + + +# SOFTWARE + +## General system +bash-completion +dmidecode +dialog +dmraid +downgrade +duf +fakeroot +freetype2 +git +glances +python-packaging +gpm +gptfdisk +haveged +hwdetect +hwinfo +inxi +libgsf +libopenraw +mlocate +ntp +pacman-contrib +pkgfile +poppler-glib +power-profiles-daemon +rebuild-detector +reflector +rsync +tldr +unrar +unzip +wget +xdg-user-dirs +xdg-utils +xz + +## Network +bind +dhclient +dnsmasq +ethtool +iwd +modemmanager +nbd +ndisc6 +net-tools +netctl +networkmanager +networkmanager-openconnect +networkmanager-openvpn +nss-mdns +openconnect +openvpn +ppp +pptpclient +rp-pppoe +usb_modeswitch +vpnc +whois +wireless-regdb +#wireless_tools +wpa_supplicant +xl2tpd + +## Bluetooth +bluez +bluez-utils + +## Firewall +firewalld +python-pyqt5 +python-capng + +# ISO + +## Live iso specific +arch-install-scripts +memtest86+ +mkinitcpio-archiso +mkinitcpio-nfs-utils +pv +syslinux + +## Live iso tools +clonezilla +gpart +grsync +partitionmanager +hdparm + +# DESKTOP + +## Desktop environment +ark +bluedevil +breeze-gtk +dolphin +#eos-plasma-sddm-config +gwenview +haruna +kcalc +kate +kdeconnect +kde-gtk-config +kgamma5 +khotkeys +kimageformats +kinfocenter +kinit +kio-fuse +konsole +kscreen +kwallet-pam +okular +plasma-desktop +plasma-disks +plasma-nm +plasma-pa +plasma-systemmonitor +powerdevil +sddm-kcm +spectacle +xsettingsd + +## Editor +kate + +## Archive +file-roller + +## Browser +firefox + +## System +meld + +## Fonts +adobe-source-han-sans-cn-fonts +adobe-source-han-sans-jp-fonts +adobe-source-han-sans-kr-fonts +cantarell-fonts +noto-fonts +ttf-bitstream-vera +ttf-dejavu +ttf-liberation +ttf-opensans + +# ENDEAVOUROS REPO + +## General +endeavouros-theming +eos-apps-info +eos-hooks +eos-log-tool +eos-packagelist +eos-quickstart +eos-rankmirrors +eos-update-notifier +nvidia-inst +rate-mirrors +reflector-simple +welcome +yay + +## Calamares EndeavourOS +calamares +ckbcomp +os-prober + +# VM SUPPORT + +## Qemu +qemu-guest-agent + +## Spice +spice-vdagent + +## Virtual-box +virtualbox-guest-utils + +## VMware +open-vm-tools +xf86-input-vmmouse +xf86-video-vmware +xf86-video-qxl + +# eos-arm needed packages for chroot into arm device +qemu-arm-aarch64-static-bin pacman-mirrorlist -# Arch Linux mirrorlist for use by pacman -# Список зеркал Arch Linux для использования pacman - archlinux-appstream-data -# Arch Linux application database for AppStream-based software centers -# База данных приложений Arch Linux для центров программного обеспечения на основе AppStream - arcolinux-keyring -# ArcoLinux GPG keyring -# Брелок ArcoLinux GPG - arcolinux-mirrorlist-git -# ArcoLinux mirrorlist for use by pacman -# Список зеркал ArcoLinux для использования pacman - +chaotic-keyring +chaotic-mirrorlist +cachyos-keyring +cachyos-mirrorlist +cachyos-v3-mirrorlist +cachyos-rate-mirrors melawy-linux-keyring -# Melawy Linux GnuPG keyring -# Брелок Melawy Linux GnuPG - melawy-linux-mirrorlist -# Melawy Linux mirror list for use by pacman -# Список зеркал Melawy Linux для использования pacman - -cryptsetup -# Userspace setup tool for transparent encryption of block devices using dm-crypt -# Инструмент настройки пользовательского пространства для прозрачного шифрования блочных устройств с использованием dm-crypt - -device-mapper -# Device mapper userspace library and tools -# Библиотека и инструменты пользовательского пространства Device Mapper - -diffutils -# Utility programs used for creating patch files -# Утилиты, используемые для создания файлов патчей - -dracut -# An event driven initramfs infrastructure -# Инфраструктура initramfs, управляемая событиями - -edk2-shell -# EDK2 UEFI Shell -# Оболочка UEFI EDK2 - -inetutils -# A collection of common network programs -# Сборник общих сетевых программ - -less -# A terminal based program for viewing text files -# Терминальная программа для просмотра текстовых файлов. - -#linux -# The Linux kernel and modules -# Ядро Linux и модули linux-xanmod-anbox - linux-atm -# Drivers and tools to support ATM networking under Linux. -# Драйверы и инструменты для поддержки сетей банкоматов под Linux. - -linux-firmware -# Firmware files for Linux -# Файлы прошивки для Linux - -linux-firmware-marvell -# Firmware files for Linux - marvell / Firmware for Marvell devices -# Файлы прошивки для Linux - marvell / Прошивка для устройств Marvell - -#linux-headers -# Headers and scripts for building modules for the Linux kernel -# Заголовки и скрипты для сборки модулей для ядра Linux linux-xanmod-anbox-headers - -logrotate -# Rotates system logs automatically -# Автоматически ротирует системные журналы - +procps-ng syslog-ng -# Next-generation syslogd with advanced networking and filtering capabilities -# syslogd следующего поколения с расширенными возможностями работы с сетью и фильтрацией - -lsb-release -# LSB version query program -# Программа запроса версии LSB - -man-db -# A utility for reading man pages -# Утилита для чтения справочных страниц - -man-pages -# Linux man pages -# справочные страницы Linux - -mdadm -# A tool for managing/monitoring Linux md device arrays, also known as Software RAID -# Инструмент для управления/мониторинга массивов устройств Linux md, также известный как программный RAID. - -nano -# Pico editor clone with enhancements -# Клон редактора Pico с улучшениями - -nano-syntax-highlighting -# Nano editor syntax highlighting enhancements -# Усовершенствования подсветки синтаксиса редактора Nano - -s-nail -# Environment for sending and receiving mail -# Среда для отправки и получения почты - -sudo -# Give certain users the ability to run some commands as root -# Дайте определенным пользователям возможность запускать некоторые команды от имени root - -sysfsutils -# System Utilities Based on Sysfs -# Системные утилиты на основе Sysfs - -systemd-sysvcompat -# sysvinit compat for systemd -# sysvinit compat для systemd - -texinfo -# GNU documentation system for on-line information and printed output -# Система документации GNU для оперативной информации и вывода на печать - -which -# A utility to show the full path of commands -# Утилита для отображения полного пути команд neovim -# Fork of Vim aiming to improve user experience, plugins, and GUIs -# Форк Vim, направленный на улучшение пользовательского интерфейса, плагинов и графических интерфейсов. - neovim-lsp_signature neovim-lspconfig neovim-nvim-treesitter neovim-qt ripgrep -# A search tool that combines the usability of ag with the raw speed of grep -# Инструмент поиска, сочетающий удобство использования ag с высокой скоростью grep. - - -## Filesystem - -btrfs-progs -# Btrfs filesystem utilities -# Утилиты файловой системы Btrfs - -dosfstools -# DOS filesystem utilities -# Утилиты файловой системы DOS - -e2fsprogs -# Ext2/3/4 filesystem utilities -# Утилиты файловой системы Ext2/3/4 - -exfatprogs -# exFAT filesystem userspace utilities for the Linux Kernel exfat driver -# Утилиты пользовательского пространства файловой системы exFAT для драйвера exfat ядра Linux - -f2fs-tools -# Tools for Flash-Friendly File System (F2FS) -# Инструменты для файловой системы, дружественной к Flash (F2FS) +alacritty +avahi +boost-libs +cronie +fmt +imwheel +intltool +kio +chwd +chwd-db +polkit +polkit-kde-agent +polkit-qt5 +profile-sync-daemon +python +python-defusedxml +qt5-xmlpatterns +realtime-privileges +smbclient +solid +traceroute +yad fatresize -# A utility to resize FAT filesystems using libparted -# Утилита для изменения размера файловых систем FAT с помощью libparted - gvfs -# Virtual filesystem implementation for GIO -# Реализация виртуальной файловой системы для GIO - gvfs-afc -# Virtual filesystem implementation for GIO (AFC backend; Apple mobile devices) -# Реализация виртуальной файловой системы для GIO (серверная часть AFC; мобильные устройства Apple) - gvfs-gphoto2 -# Virtual filesystem implementation for GIO (gphoto2 backend; PTP camera, MTP media player) -# Реализация виртуальной файловой системы для GIO (бэкэнд gphoto2; камера PTP, медиаплеер MTP) - gvfs-mtp -# Virtual filesystem implementation for GIO (MTP backend; Android, media player) -# Реализация виртуальной файловой системы для GIO (бэкэнд MTP; Android, медиаплеер) - gvfs-nfs -# Virtual filesystem implementation for GIO (NFS backend) -# Реализация виртуальной файловой системы для GIO (серверная часть NFS) - gvfs-smb -# Virtual filesystem implementation for GIO (SMB/CIFS backend; Windows client) -# Реализация виртуальной файловой системы для GIO (серверная часть SMB/CIFS; клиент Windows) - -jfsutils -# JFS filesystem utilities -# Утилиты файловой системы JFS - -lvm2 -# Logical Volume Manager 2 utilities -# Утилиты диспетчера логических томов 2 - -mtools -# A collection of utilities to access MS-DOS disks -# Набор утилит для доступа к дискам MS-DOS. - -nfs-utils -# Support programs for Network File Systems -# Программы поддержки для сетевых файловых систем - -nilfs-utils -# A log-structured file system supporting continuous snapshotting (userspace utils) -# Файловая система с журнальной структурой, поддерживающая непрерывное создание моментальных снимков (утилиты пользовательского пространства) - -ntfs-3g -# NTFS filesystem driver and utilities -# Драйвер файловой системы NTFS и утилиты - -reiserfsprogs -# Reiserfs utilities -# Утилиты Reiserfs udftools -# Linux tools for UDF filesystems and DVD/CD-R(W) drives -# Инструменты Linux для файловых систем UDF и приводов DVD/CD-R(W) - -xfsprogs -# XFS filesystem utilities -# Утилиты файловой системы XFS - +zfs-utils +zfs-dkms ## BTRFS - btrfs-assistant -# An application for managing BTRFS subvolumes and Snapper snapshots -# Приложение для управления подтомами BTRFS и моментальными снимками Snapper. - btrfs-snapshots -# Manage timestamped collections of btrfs snapshots -# Управление коллекциями моментальных снимков btrfs с отметками времени - timeshift -# A system restore utility for Linux -# Утилита восстановления системы для Linux - timeshift-autosnap -# Timeshift auto-snapshot script which runs before package upgrade using Pacman hook. -# Скрипт автоматического моментального снимка Timeshift, который запускается перед обновлением пакета с помощью хука Pacman. - - - -## Boot - -efibootmgr -# Linux user-space application to modify the EFI Boot Manager -# Приложение пользовательского пространства Linux для изменения диспетчера загрузки EFI - -efitools -# Tools for manipulating UEFI secure boot platforms -# Инструменты для управления безопасными загрузочными платформами UEFI - - - -# HARDWARE - -## CPU - -amd-ucode -# Microcode update image for AMD CPUs -# Образ обновления микрокода для процессоров AMD - -intel-ucode -# Microcode update files for Intel CPUs -# Файлы обновления микрокода для процессоров Intel - - - -## X system - -#xf86-video-intel -#xf86-video-nouveau - -mesa -# An open-source implementation of the OpenGL specification -# Реализация спецификации OpenGL с открытым исходным кодом. - -mesa-utils -# Essential Mesa utilities -# Основные утилиты Mesa - -nvidia-dkms -# NVIDIA drivers - module sources -# Драйверы NVIDIA - исходники модуля +xorg-apps nvidia-settings -# Tool for configuring the NVIDIA graphics driver -# Инструмент для настройки графического драйвера NVIDIA -nvidia-utils -# NVIDIA drivers utilities -# Утилиты для драйверов NVIDIA +xf86-input-elographics +xf86-input-evdev +xf86-input-synaptics +xf86-input-void -xf86-input-libinput -# Generic input driver for the X.Org server based on libinput -# Общий драйвер ввода для сервера X.Org на основе libinput - -xf86-video-amdgpu -# X.org amdgpu video driver -# X.org видеодрайвер amdgpu - -xf86-video-ati -# X.org ati video driver -# Видеодрайвер X.org ati - -xorg-server -# Xorg X server -# Xorg X-сервер - -xorg-xdpyinfo -# Display information utility for X -# Утилита отображения информации для X - -xorg-xinit -# X.Org initialisation program -# Программа инициализации X.Org - -xorg-xinput -# Small commandline tool to configure devices -# Небольшой инструмент командной строки для настройки устройств - -xorg-xkill -# Kill a client by its X resource -# Убить клиента его X-ресурсом - -xorg-xrandr -# Primitive command line interface to RandR extension -# Примитивный интерфейс командной строки для расширения RandR +xf86-video-fbdev +xf86-video-openchrome xorg-xrdb -# X server resource database utility -# Утилита базы данных ресурсов X-сервера - xorg-xhost -# Server access control program for X -# Программа управления доступом к серверу для X - -## Network hardware - -b43-fwcutter -# firmware extractor for the b43 kernel module -# экстрактор прошивки для модуля ядра b43 - -broadcom-wl-dkms -# Broadcom 802.11 Linux STA wireless driver -# Беспроводной драйвер Broadcom 802.11 Linux STA - - - -## General hardware - -lsscsi -# A tool that lists devices connected via SCSI and its transports -# Инструмент, который выводит список устройств, подключенных через SCSI, и их транспорты. - -sg3_utils -# Generic SCSI utilities -# Общие утилиты SCSI - -smartmontools -# Control and monitor S.M.A.R.T. enabled ATA and SCSI Hard Drives -# Управление и мониторинг S.M.A.R.T. включенные жесткие диски ATA и SCSI - -usbutils -# A collection of USB tools to query connected USB devices -# Коллекция USB-инструментов для запроса подключенных USB-устройств. - - - -## Audio hardware - -alsa-firmware -# Firmware binaries for loader programs in alsa-tools and hotplug firmware loader -# Бинарные файлы прошивки для программ-загрузчиков в alsa-tools и загрузчик прошивки горячего подключения - -alsa-plugins -# Additional ALSA plugins -# Дополнительные плагины ALSA - -alsa-utils -# Advanced Linux Sound Architecture - Utilities -# Усовершенствованная звуковая архитектура Linux — Утилиты - -ffmpegthumbnailer -# Lightweight video thumbnailer that can be used by file managers -# Легкий превьюшник видео, который может использоваться файловыми менеджерами. - -gst-libav -# Multimedia graph framework - libav plugin -# Фреймворк мультимедийного графа — плагин libav - -gst-plugin-pipewire -# Multimedia graph framework - pipewire plugin -# Фреймворк мультимедийного графа - плагин pipewire - -gst-plugins-bad -# Multimedia graph framework - bad plugins -# Фреймворк мультимедийного графа — плохие плагины - -gst-plugins-ugly -# Multimedia graph framework - ugly plugins -# Фреймворк мультимедийного графа — уродливые плагины - -libdvdcss -# Portable abstraction library for DVD decryption -# Портативная библиотека абстракций для расшифровки DVD - -pavucontrol -# PulseAudio Volume Control -# Регулятор громкости PulseAudio - -pipewire-alsa -# Low-latency audio/video router and processor - ALSA configuration -# Аудио/видео маршрутизатор и процессор с малой задержкой — конфигурация ALSA - -pipewire-jack -# Low-latency audio/video router and processor - JACK support -# Маршрутизатор и процессор аудио/видео с малой задержкой — поддержка JACK - -pipewire-pulse -# Low-latency audio/video router and processor - PulseAudio replacement -# Аудио-/видео-маршрутизатор и процессор с малой задержкой — замена PulseAudio - -rtkit -# Realtime Policy and Watchdog Daemon -# Политика реального времени и демон Watchdog - -sof-firmware -# Sound Open Firmware -# Звук Открытая прошивка - -wireplumber -# Session / policy manager implementation for PipeWire -# Реализация диспетчера сеансов/политик для PipeWire - - - -# SOFTWARE - -## General system - -bash-completion -# Programmable completion for the bash shell -# Программируемое завершение для оболочки bash +pipewire curl -# command line tool and library for transferring data with URLs -# инструмент командной строки и библиотека для передачи данных с URL-адресами - -dialog -# A tool to display dialog boxes from shell scripts -# Инструмент для отображения диалоговых окон из сценариев оболочки. - -dmidecode -# Desktop Management Interface table related utilities -# Утилиты, связанные с таблицей Desktop Management Interface - -dmraid -# Device mapper RAID interface -# Интерфейс RAID сопоставителя устройств - -downgrade -# Bash script for downgrading one or more packages to a version in your cache or the A.L.A. -# Сценарий Bash для понижения версии одного или нескольких пакетов до версии в вашем кеше или в A.L.A. - -duf -# Disk Usage/Free Utility -# Использование диска/бесплатная утилита - -fakeroot -# Tool for simulating superuser privileges -# Инструмент для имитации привилегий суперпользователя - -freetype2 -# Font rasterization library -# Библиотека растеризации шрифтов - -git -# the fast distributed version control system -# быстрая распределенная система контроля версий - -glances -# CLI curses-based monitoring tool -# Инструмент мониторинга на основе CLI curses - -gpm -# A mouse server for the console and xterm -# Сервер мыши для консоли и xterm - -gptfdisk -# A text-mode partitioning tool that works on GUID Partition Table (GPT) disks -# Средство создания разделов в текстовом режиме, которое работает с дисками с таблицей разделов GUID (GPT). - -haveged -# Entropy harvesting daemon using CPU timings -# Демон сбора энтропии с использованием таймингов ЦП - -hwdetect -# Hardware detection script with loading modules and mkinitcpio.conf -# Скрипт обнаружения оборудования с загрузкой модулей и mkinitcpio.conf - -hwinfo -# Hardware detection tool from openSUSE -# Инструмент обнаружения оборудования от openSUSE - -inxi -# Full featured CLI system information tool -# Полнофункциональный системный информационный инструмент CLI - -libgsf -# An extensible I/O abstraction library for dealing with structured file formats -# Расширяемая библиотека абстракций ввода-вывода для работы со структурированными форматами файлов. - -libopenraw -# Library for decoding RAW files -# Библиотека для декодирования файлов RAW - -mlocate -# Merging locate/updatedb implementation -# Объединение реализации locate/updatedb - -ntp -# Network Time Protocol reference implementation -# Эталонная реализация протокола сетевого времени - -pacman-contrib -# Contributed scripts and tools for pacman systems -# Предоставленные скрипты и инструменты для систем pacman - -pkgfile -# a pacman .files metadata explorer -# проводник метаданных .files pacman - -poppler-glib -# Poppler glib bindings -# Привязки Poppler glib - -power-profiles-daemon -# Makes power profiles handling available over D-Bus -# Делает обработку профилей мощности доступной через D-Bus - -python-packaging -# Core utilities for Python packages -# Основные утилиты для пакетов Python - -rebuild-detector -# Detects which packages need to be rebuilt -# Определяет, какие пакеты необходимо пересобрать - -reflector -# A Python 3 module and script to retrieve and filter the latest Pacman mirror list. -# Модуль Python 3 и скрипт для извлечения и фильтрации последнего списка зеркал Pacman. - -rsync -# A fast and versatile file copying tool for remote and local files -# Быстрый и универсальный инструмент для копирования удаленных и локальных файлов. - -tldr -# Command line client for tldr, a collection of simplified and community-driven man pages. -# Клиент командной строки для tldr, набор упрощенных справочных страниц, созданных сообществом. - -unrar -# The RAR uncompression program -# Программа распаковки RAR - -unzip -# For extracting and viewing files in .zip archives -# Для извлечения и просмотра файлов в архивах .zip - -wget -# Network utility to retrieve files from the Web -# Сетевая утилита для извлечения файлов из Интернета xdg-desktop-portal -# Desktop integration portals for sandboxed apps -# Порталы интеграции с настольными компьютерами для изолированных приложений - xdg-desktop-portal-kde -# A backend implementation for xdg-desktop-portal using Qt/KF5 -# Бэкенд-реализация для xdg-desktop-portal с использованием Qt/KF5. - -xdg-user-dirs -# Manage user directories like ~/Desktop and ~/Music -# Управление пользовательскими каталогами, такими как ~/Desktop и ~/Music - xdg-user-dirs-gtk -# Creates user dirs and asks to relocalize them -# Создает пользовательские каталоги и просит переместить их - -xdg-utils -# Command line tools that assist applications with a variety of desktop integration tasks -# Инструменты командной строки, помогающие приложениям выполнять различные задачи интеграции с настольными компьютерами. - -xz -# Library and command line tools for XZ and LZMA compressed files -# Библиотека и инструменты командной строки для сжатых файлов XZ и LZMA - - - -## Network - -bind -# A complete, highly portable implementation of the DNS protocol -# Полная, переносимая реализация протокола DNS. - -dhclient -# A standalone DHCP client from the dhcp package -# Автономный DHCP-клиент из пакета dhcp dhcpcd -# RFC2131 compliant DHCP client daemon -# Демон DHCP-клиента, совместимый с RFC2131 - -dnsmasq -# Lightweight, easy to configure DNS forwarder and DHCP server -# Легкий, простой в настройке сервер переадресации DNS и DHCP-сервер - -ethtool -# Utility for controlling network drivers and hardware -# Утилита для управления сетевыми драйверами и оборудованием - -iwd -# Internet Wireless Daemon -# Интернет-демон беспроводной связи - -modemmanager -# Mobile broadband modem management service -# Услуга управления мобильным широкополосным модемом - -nbd -# tools for network block devices, allowing you to use remote block devices over TCP/IP -# инструменты для сетевых блочных устройств, позволяющие использовать удаленные блочные устройства по TCP/IP - -ndisc6 -# Collection of IPv6 networking utilities -# Коллекция сетевых утилит IPv6 - -net-tools -# Configuration tools for Linux networking -# Инструменты настройки для сети Linux - -netctl -# Profile based systemd network management -# Управление сетью systemd на основе профилей - -networkmanager -# Network connection manager and user applications -# Диспетчер сетевых подключений и пользовательские приложения - -networkmanager-openconnect -# NetworkManager VPN plugin for OpenConnect -# Плагин NetworkManager VPN для OpenConnect - -networkmanager-openvpn -# NetworkManager VPN plugin for OpenVPN -# Плагин NetworkManager VPN для OpenVPN - -nss-mdns -# glibc plugin providing host name resolution via mDNS -# Плагин glibc, обеспечивающий разрешение имени хоста через mDNS - -openconnect -# Open client for Cisco AnyConnect VPN -# Открытый клиент для Cisco AnyConnect VPN - -openresolv -# resolv.conf management framework (resolvconf) -# Фреймворк управления resolv.conf (resolvconf) - +#openresolv +systemd-resolvconf openssh -# SSH protocol implementation for remote login, command execution and file transfer -# Реализация протокола SSH для удаленного входа в систему, выполнения команд и передачи файлов - -openvpn -# An easy-to-use, robust and highly configurable VPN (Virtual Private Network) -# Простая в использовании, надежная и гибко настраиваемая VPN (виртуальная частная сеть) - -ppp -# A daemon which implements the Point-to-Point Protocol for dial-up networking -# Демон, который реализует протокол Point-to-Point для удаленного доступа к сети. - -pptpclient -# Client for the proprietary Microsoft Point-to-Point Tunneling Protocol, PPTP. -# Клиент для проприетарного протокола Microsoft Point-to-Point Tunneling Protocol, PPTP. - -rp-pppoe -# Roaring Penguin's Point-to-Point Protocol over Ethernet client -# Протокол Point-to-Point от Roaring Penguin через Ethernet-клиент - -usb_modeswitch -# Activating switchable USB devices on Linux. -# Активация переключаемых USB-устройств в Linux. - -vpnc -# VPN client for cisco3000 VPN Concentrators -# VPN-клиент для концентраторов Cisco3000 VPN - wireguard-tools -# next generation secure network tunnel - tools for configuration -# Защищенный сетевой туннель нового поколения — инструменты для настройки - -whois -# Intelligent WHOIS client -# Интеллектуальный клиент WHOIS - -wireless-regdb -# Central Regulatory Domain Database -# Центральная база данных регуляторных доменов - wireless_tools -# Tools allowing to manipulate the Wireless Extensions -# Инструменты, позволяющие управлять беспроводными расширениями - -wpa_supplicant -# A utility providing key negotiation for WPA wireless networks -# Утилита, обеспечивающая согласование ключей для беспроводных сетей WPA. - wvdial -# A dialer program to connect to the Internet -# Программа дозвона для подключения к Интернету - -xl2tpd -# an open source implementation of the L2TP maintained by Xelerance Corporation -# реализация L2TP с открытым исходным кодом, поддерживаемая Xelerance Corporation - - - -## Bluetooth - -bluedevil -# Integrate the Bluetooth technology within KDE workspace and applications -# Интегрируйте технологию Bluetooth в рабочее пространство и приложения KDE. - -bluez -# Daemons for the bluetooth protocol stack -# Демоны для стека протоколов Bluetooth - +mobile-broadband-provider-info bluez-tools -# A set of tools to manage Bluetooth devices for Linux -# Набор инструментов для управления устройствами Bluetooth для Linux. - -bluez-utils -# Development and debugging utilities for the bluetooth protocol stack -# Утилиты для разработки и отладки стека протоколов bluetooth - - - -## Firewall - -firewalld -# Firewall daemon with D-Bus interface -# Демон межсетевого экрана с интерфейсом D-Bus - -python-capng -# A library for Linux that makes using posix capabilities easy (Python bindings) -# Библиотека для Linux, упрощающая использование возможностей posix (привязки Python) - -python-pyqt5 -# A set of Python bindings for the Qt5 toolkit -# Набор привязок Python для инструментария Qt5. - - - -# ISO -## Live iso specific - -#archinstall - -arch-install-scripts -# Scripts to aid in installing Arch Linux -# Скрипты для помощи в установке Arch Linux - -grub -# GNU GRand Unified Bootloader (2) -# Унифицированный загрузчик GNU GRand (2) - -memtest86+ -# Advanced memory diagnostic tool legacy BIOS version -# Расширенный инструмент диагностики памяти устаревшей версии BIOS - -memtest86+-efi -# Advanced memory diagnostic tool EFI version -# Расширенный инструмент диагностики памяти версии EFI - -mkinitcpio -# Modular initramfs image creation utility -# Модульная утилита для создания образов initramfs - -mkinitcpio-archiso -# Initcpio scripts used by archiso -# Скрипты initcpio, используемые archiso - -mkinitcpio-systemd-tool -# Provisioning tool for systemd in initramfs (systemd-tool) -# Инструмент подготовки для systemd в initramfs (systemd-tool) - -mkinitcpio-nfs-utils -# ipconfig and nfsmount tools for NFS root support in mkinitcpio -# Инструменты ipconfig и nfsmount для поддержки root NFS в mkinitcpio - -mkinitcpio-openswap -# mkinitcpio hook to open swap at boot time -# Перехватчик mkinitcpio для открытия подкачки во время загрузки - -os-prober -# Utility to detect other OSes on a set of drives -# Утилита для обнаружения других ОС на наборе дисков - -pv -# A terminal-based tool for monitoring the progress of data through a pipeline. -# Инструмент на основе терминала для мониторинга прохождения данных по конвейеру. refind -# An EFI boot manager -# Менеджер загрузки EFI - -syslinux -# Collection of boot loaders that boot from FAT, ext2/3/4 and btrfs filesystems, from CDs and via PXE -# Коллекция загрузчиков, которые загружаются с файловых систем FAT, ext2/3/4 и btrfs, с компакт-дисков и через PXE. - - - - -## Live iso tools - -clonezilla -# ncurses partition and disk imaging/cloning program -# ncurses раздел и программа создания образа/клонирования диска ddrescue -# GNU data recovery tool -# Инструмент восстановления данных GNU - -gpart -# Partition table rescue/guessing tool -# Инструмент восстановления/угадывания таблицы разделов - gparted -# A Partition Magic clone, frontend to GNU Parted -# Клон Partition Magic, интерфейс к GNU Parted - -grsync -# GTK+ GUI for rsync to synchronize folders, files and make backups -# Графический интерфейс GTK+ для rsync для синхронизации папок, файлов и создания резервных копий - -hdparm -# A shell utility for manipulating Linux IDE drive/driver parameters -# Утилита оболочки для управления параметрами диска/драйвера Linux IDE. - partclone -# Utilities to save and restore used blocks on a partition -# Утилиты для сохранения и восстановления используемых блоков на разделе - parted -# A program for creating, destroying, resizing, checking and copying partitions -# Программа для создания, уничтожения, изменения размера, проверки и копирования разделов - partimage -# Partition Image saves partitions in many formats to an image file. -# Изображение раздела сохраняет разделы во многих форматах в файл изображения. - squashfs-tools -# Tools for squashfs, a highly compressed read-only filesystem for Linux -# Инструменты для squashfs, сильно сжатой файловой системы только для чтения для Linux. - -# DESKTOP - ## Display manager - accountsservice -# D-Bus interface for user account query and manipulation -# Интерфейс D-Bus для запросов и манипуляций с учетной записью пользователя - sddm -# QML based X11 and Wayland display manager. The Simple Desktop Display Manager -# Менеджер отображения X11 и Wayland на основе QML. Диспетчер отображения простого рабочего стола - - -## Desktop environment - breeze -# Artwork, styles and assets for the Breeze visual style for the Plasma Desktop -# Иллюстрации, стили и активы для визуального стиля Breeze для Plasma Desktop - -breeze-gtk -# Breeze widget theme for GTK 2 and 3 -# Тема виджета Breeze для GTK 2 и 3 - breeze-icons -# Breeze icon themes -# Темы значков бриза - discord -# All-in-one voice and text chat for gamers -# Универсальный голосовой и текстовый чат для геймеров - -dolphin -# KDE File Manager -# Файловый менеджер KDE - drkonqi -# The KDE crash handler -# Обработчик сбоя KDE - ksystemlog -# System log viewer tool -# Средство просмотра системного журнала - +flatpak flatpak-kcm -# Flatpak Permissions Management KCM -# Управление разрешениями Flatpak KCM - -kde-gtk-config -# GTK2 and GTK3 Configurator for KDE -# Конфигуратор GTK2 и GTK3 для KDE - kdeplasma-addons -# All kind of addons to improve your Plasma experience -# Все виды дополнений для улучшения вашего опыта Plasma - -kgamma5 -# Adjust your monitor gamma settings -# Настройте параметры гаммы монитора - -khotkeys -# KHotKeys -# KHotKeys - -kinfocenter -# A utility that provides information about a computer system -# Утилита, которая предоставляет информацию о компьютерной системе - -kitty-terminfo -# Terminfo for kitty, an OpenGL-based terminal emulator -# Terminfo для котенка, эмулятор терминала на основе OpenGL - -konsole -# KDE terminal emulator -# Эмулятор терминала KDE - -kscreen -# KDE screen management software -# Программное обеспечение для управления экраном KDE - ksshaskpass -# ssh-add helper that uses kwallet and kpassworddialog -# помощник ssh-add, использующий kwallet и kpassworddialog - -kwallet-pam -# KWallet PAM integration -# Интеграция KWallet PAM - gnome-keyring - -kwayland-integration -# Provides integration plugins for various KDE frameworks for the wayland windowing system -# Предоставляет интеграционные плагины для различных фреймворков KDE для оконной системы wayland. - kwrited -# KDE daemon listening for wall and write messages -# Демон KDE прослушивает стену и пишет сообщения - libwnck3 -# Library to manage X windows and workspaces (via pagers, tasklists, etc.) -# Библиотека для управления окнами X и рабочими пространствами (через пейджеры, списки задач и т. д.) - -lightly-git -# A modern style for qt applications -# Современный стиль для qt-приложений - +lightly-boehs-git network-manager-applet -# Applet for managing network connections -# Апплет для управления сетевыми подключениями - -oxygen -# KDE Oxygen style -# Кислородный стиль KDE - -oxygen-sounds -# The Oxygen Sound Theme -# Кислородная звуковая тема +plasma-framework +plasma-integration +plasma-workspace plasma-browser-integration -# Components necessary to integrate browsers into the Plasma Desktop -# Компоненты, необходимые для интеграции браузеров в Plasma Desktop - -plasma-desktop -# KDE Plasma Desktop -# Плазменный рабочий стол KDE - -plasma-disks -# Monitors S.M.A.R.T. capable devices for imminent failure -# Мониторы S.M.A.R.T. способные устройства на неизбежный отказ - plasma-firewall -# Control Panel for your system firewall -# Панель управления брандмауэром вашей системы - -plasma-nm -# Plasma applet written in QML for managing network connections -# Плазменный апплет, написанный на QML для управления сетевыми соединениями - -plasma-pa -# Plasma applet for audio volume management using PulseAudio -# Плазменный апплет для управления громкостью звука с помощью PulseAudio - -plasma-systemmonitor -# An interface for monitoring system sensors, process information and other system resources -# Интерфейс для мониторинга системных датчиков, технологической информации и других системных ресурсов. - plasma-thunderbolt -# Plasma integration for controlling Thunderbolt devices -# Интеграция Plasm для управления устройствами Thunderbolt - plasma-vault -# Plasma applet and services for creating encrypted vaults -# Апплет Plasma и сервисы для создания зашифрованных хранилищ - -plasma-wayland-session -# Plasma Wayland session -# Плазменная сессия Wayland - plasma-workspace-wallpapers -# Additional wallpapers for the Plasma Workspace -# Дополнительные обои для Plasma Workspace plymouth -# Graphical boot splash screen -# Графическая заставка загрузки - plymouth-kcm -# KCM to manage the Plymouth (Boot) theme -# KCM для управления темой Plymouth (Boot) - -sddm-kcm -# KDE Config Module for SDDM -# Модуль конфигурации KDE для SDDM - - - -# Office libreoffice-fresh libreoffice-fresh-ru @@ -1080,133 +441,37 @@ libreoffice-fresh-en-gb onlyoffice-bin - -# Mail - thunderbird mailspring - ## Picture Editor gimp inkscape krita - -## Editor - -kate -# Advanced text editor -# Расширенный текстовый редактор - - - -## Archive - -ark -# Archiving Tool -# Инструмент архивации - - - -## Image viewer - -gwenview -# A fast and easy to use image viewer -# Быстрый и простой в использовании просмотрщик изображений - - - ## Video player - vlc-luajit -# Multi-platform MPEG, VCD/DVD, and DivX player built with luajit for OBS Studio compatibility -# Многоплатформенный проигрыватель MPEG, VCD/DVD и DivX, созданный с помощью luajit для совместимости с OBS Studio. - - - -# Media - mpv elisa audacious audacity - - -## Browser - -brave-bin -# Web browser that blocks ads and trackers by default (binary release) -# Веб-браузер, блокирующий рекламу и трекеры по умолчанию (бинарная версия) - firefox -# Standalone web browser from mozilla.org -# Автономный веб-браузер от mozilla.org - -firefox-developer-edition -# Developer Edition of the popular Firefox web browser -# Developer Edition популярного веб-браузера Firefox - -firefox-developer-edition-i18n-ru -# Russian language pack for Firefox Developer Edition -# Русский языковой пакет для Firefox Developer Edition - firefox-i18n-ru -# Russian language pack for Firefox -# Русский языковой пакет для Firefox +firefox-developer-edition +firefox-developer-edition-i18n-ru google-chrome -# The popular and trusted web browser by Google (Stable Channel) -# Популярный и надежный веб-браузер от Google (Stable Channel) - - - -## System - -kcalc -# Scientific Calculator -# Научный калькулятор - -meld -# Compare files, directories and working copies -# Сравните файлы, каталоги и рабочие копии +brave-bin neofetch -# A CLI system information tool written in BASH that supports displaying images. -# Инструмент системной информации CLI, написанный на BASH и поддерживающий отображение изображений. - lolcat -# Okay, no unicorns. But rainbows!! -# Ок, не единороги, но радуга - -okular -# Document Viewer -# Просмотрщик документов +fastfetch skypeforlinux-stable-bin -# Skype for Linux - Stable/Release Version -# Skype для Linux — стабильная/выпускная версия - -spectacle -# KDE screenshot capture utility -# Утилита для захвата скриншотов KDE - telegram-desktop -# Official Telegram Desktop client -# Официальный настольный клиент Telegram - -xdg-desktop-portal-kde -# A backend implementation for xdg-desktop-portal using Qt/KF5 -# Бэкенд-реализация для xdg-desktop-portal с использованием Qt/KF5. - yakuake -# A drop-down terminal emulator based on KDE konsole technology -# Эмулятор выпадающего терминала на основе технологии консоли KDE. - zoom -# Video Conferencing and Web Conferencing Service -# Сервис видеоконференций и веб-конференций anydesk-bin yandex-disk @@ -1215,532 +480,142 @@ keepassxc visual-studio-code-bin codelldb -## Fonts - adobe-source-code-pro-fonts -# Monospaced font family for user interface and coding environments -# Семейство моноширинных шрифтов для пользовательского интерфейса и сред кодирования - ttf-sourcecodepro-nerd -# Patched font Source Code Pro from nerd fonts library -# Исправлен шрифт Source Code Pro из библиотеки nerd fonts. - -adobe-source-han-sans-cn-fonts -# Adobe Source Han Sans Subset OTF - Simplified Chinese OpenType/CFF fonts -# Adobe Source Han Sans Subset OTF — шрифты OpenType/CFF для упрощенного китайского языка - -adobe-source-han-sans-jp-fonts -# Adobe Source Han Sans Subset OTF - Japanese OpenType/CFF fonts -# Adobe Source Han Sans Subset OTF — японские шрифты OpenType/CFF - -adobe-source-han-sans-kr-fonts -# Adobe Source Han Sans Subset OTF - Korean OpenType/CFF fonts -# Adobe Source Han Sans Subset OTF — корейские шрифты OpenType/CFF - ttf-jetbrains-mono -# Typeface for developers, by JetBrains -# Шрифт для разработчиков от JetBrains - ttf-jetbrains-mono-nerd -# Patched font JetBrains Mono from nerd fonts library -# Исправлен шрифт JetBrains Mono из библиотеки nerd fonts. - ttf-roboto -# Google's signature family of fonts -# Фирменное семейство шрифтов Google - ttf-roboto-mono -# A monospaced addition to the Roboto type family. -# Моноширинное дополнение к семейству типов Roboto. - ttf-roboto-mono-nerd -# Patched font Roboto Mono from nerd fonts library -# Исправлен шрифт Roboto Mono из библиотеки nerd fonts. - -noto-fonts -# Google Noto TTF fonts -# Шрифты Google Noto TTF - ttf-noto-nerd -# Patched font Noto from nerd fonts library -# Исправлен шрифт Noto из библиотеки nerd fonts. - noto-color-emoji-fontconfig -# Fontconfig to enable Noto Color Emoji fonts where emojis can be displayed -# Fontconfig для включения шрифтов Noto Color Emoji, в которых могут отображаться смайлики. - noto-fonts-emoji -# Google Noto emoji fonts -# Шрифты эмодзи Google Noto - ttf-twemoji -# Twitter Color Emoji for everyone. -# Twitter Color Emoji для всех. - -# ttf-bitstream-vera -# Bitstream Vera fonts. -# Шрифты Bitstream Vera. - -# ttf-bitstream-vera-mono-nerd -# Patched font Bitstream Vera Mono from nerd fonts library -# Исправлен шрифт Bitstream Vera Mono из библиотеки nerd fonts. - -ttf-dejavu -# Font family based on the Bitstream Vera Fonts with a wider range of characters -# Семейство шрифтов на основе шрифтов Bitstream Vera с более широким набором символов. - ttf-dejavu-nerd -# Patched font Dejavu Sans Mono from nerd fonts library -# Исправлен шрифт Dejavu Sans Mono из библиотеки nerd fonts. - -ttf-liberation -# Font family which aims at metric compatibility with Arial, Times New Roman, and Courier New -# Семейство шрифтов, предназначенное для метрической совместимости с Arial, Times New Roman и Courier New. - ttf-liberation-mono-nerd -# Patched font Liberation Mono from nerd fonts library -# Исправлен шрифт Liberation Mono из библиотеки nerd fonts. - -ttf-opensans -# Sans-serif typeface commissioned by Google -# Шрифт без засечек по заказу Google - ttf-hack -# A hand groomed and optically balanced typeface based on Bitstream Vera Mono. -# Отшлифованный вручную и оптически сбалансированный шрифт на основе Bitstream Vera Mono. - ttf-hack-nerd -# Patched font Hack from nerd fonts library -# Исправлен шрифт Hack из библиотеки шрифтов nerd - otf-fira-mono -# Mozilla's monospace typeface designed for Firefox OS -# Моноширинный шрифт Mozilla, разработанный для Firefox OS - otf-firamono-nerd -# Patched font Fira (Fura) Mono from nerd fonts library -# Патченный шрифт Fira (Fura) Mono из библиотеки nerd fonts - otf-fira-sans -# Mozilla's sans-serif typeface designed for Firefox OS -# Шрифт Mozilla без засечек, разработанный для Firefox OS - ttf-fira-sans -# Mozilla's sans-serif typeface designed for Firefox OS -# Шрифт Mozilla без засечек, разработанный для Firefox OS - ttf-fira-code -# Monospaced font with programming ligatures -# Моноширинный шрифт с программными лигатурами - ttf-firacode-nerd -# Patched font Fira (Fura) Code from nerd fonts library -# Патченный шрифт Fira (Fura) Код из библиотеки nerd fonts - ttf-ubuntu-font-family -# Ubuntu font family -# Семейство шрифтов Ubuntu - ttf-ubuntu-mono-nerd -# Patched font Ubuntu Mono from nerd fonts library -# Исправлен шрифт Ubuntu Mono из библиотеки шрифтов ботаников - ttf-ubuntu-nerd -# Patched font Ubuntu from nerd fonts library -# Исправлен шрифт Ubuntu из библиотеки шрифтов ботаников - ttf-ms-fonts -# Core TTF Fonts from Microsoft -# Основные шрифты TTF от Microsoft - ttf-nerd-fonts-symbols -# High number of extra glyphs from popular 'iconic fonts' -# Большое количество дополнительных глифов из популярных «культовых шрифтов» - ttf-nerd-fonts-symbols-common -# High number of extra glyphs from popular 'iconic fonts' (common files) -# Большое количество дополнительных глифов из популярных «знаковых шрифтов» (общие файлы) - ttf-nerd-fonts-symbols-mono -# High number of extra glyphs from popular 'iconic fonts' (monospace) -# Большое количество дополнительных глифов из популярных «культовых шрифтов» (моноширинные) - -cantarell-fonts -# Humanist sans serif font -# Гуманистический шрифт без засечек - -# otf-droid-nerd -# ttf-anonymouspro-nerd -# ttf-bigblueterminal-nerd -# ttf-cascadia-code-nerd -# ttf-mplus-nerd -# ttf-arimo-nerd -# otf-aurulent-nerd -# otf-codenewroman-nerd -# otf-hasklig-nerd -# otf-hermit-nerd -# otf-opendyslexic-nerd -# otf-overpass-nerd -# ttf-3270-nerd -# ttf-agave-nerd -# ttf-carlito -# ttf-cousine-nerd -# ttf-daddytime-mono-nerd -# ttf-fantasque-nerd -# ttf-go-nerd -# ttf-heavydata-nerd -# ttf-iawriter-nerd -# ttf-ibmplex-mono-nerd -# ttf-inconsolata-go-nerd -# ttf-inconsolata-lgc-nerd -# ttf-inconsolata-nerd -# ttf-iosevka-nerd -# ttf-lekton-nerd -# ttf-lilex-nerd -# ttf-meslo-nerd -# ttf-meslo-nerd-font-powerlevel10k -# ttf-monofur-nerd -# ttf-monoid-nerd -# ttf-mononoki-nerd -# ttf-profont-nerd -# ttf-proggyclean-nerd -# ttf-sharetech-mono-nerd -# ttf-space-mono-nerd -# ttf-tinos-nerd -# ttf-victor-mono-nerd - -# OTHER REPO - -## General bash-language-server -# Bash language server implementation based on Tree Sitter and its grammar for Bash -# Реализация сервера языка Bash на основе Tree Sitter и его грамматики для Bash - find-the-command-git -# Advanced command-not-found hook for bash, fish and zsh using the power of pacman -# Усовершенствованный хук command-not-found для bash, fish и zsh с использованием возможностей pacman - lynx -# A text browser for the World Wide Web -# Текстовый браузер для всемирной паутины - make -# GNU make utility to maintain groups of programs -# GNU make утилита для поддержки групп программ - mc -# A file manager that emulates Norton Commander -# Файловый менеджер, эмулирующий Norton Commander. - nmap -# Utility for network discovery and security auditing -# Утилита для обнаружения сети и аудита безопасности - pamac-cli -# A Package Manager based on libalpm with AUR and Appstream support -# Менеджер пакетов на основе libalpm с поддержкой AUR и Appstream. - pamac-gtk -# A Package Manager based on libalpm with AUR and Appstream support -# Менеджер пакетов на основе libalpm с поддержкой AUR и Appstream. - -paru-git -# Feature packed AUR helper -# Многофункциональный помощник AUR - +paru powerline -# Statusline plugin for vim, and provides statuslines and prompts for several other applications, including zsh, bash, tmux, IPython, Awesome, i3 and Qtile -# Плагин строки состояния для vim, а также предоставляет строки состояния и подсказки для нескольких других приложений, включая zsh, bash, tmux, IPython, Awesome, i3 и Qtile. - powerline-fonts -# patched fonts for powerline -# пропатченные шрифты для powerline - -rate-mirrors -# Everyday-use client-side map-aware mirror ranking tool -# Ежедневно используемый клиентский инструмент ранжирования зеркал с учетом карты - -reflector-simple -# Simple GUI wrapper for 'reflector'. -# Простая оболочка с графическим интерфейсом для «отражателя». screen -# Full-screen window manager that multiplexes a physical terminal -# Полноэкранный оконный менеджер, мультиплексирующий физический терминал - tcpdump -# Powerful command-line packet analyzer -# Мощный анализатор пакетов командной строки - terminus-font ttf-terminus-nerd -# Monospace bitmap font (for X11 and console) -# Моноширинный растровый шрифт (для X11 и консоли) - tmux -# Terminal multiplexer -# Терминальный мультиплексор - xterm -# X Terminal Emulator -# Эмулятор терминала X - -# uxterm -# xterm wrapper for unicode environments -# Оболочка xterm для сред Unicode - zsh -# A very advanced and programmable command interpreter (shell) for UNIX -# Очень продвинутый и программируемый командный интерпретатор (оболочка) для UNIX. - - - -## Calamares Melawy - -ckbcomp -# Compile a XKB keyboard description to a keymap suitable for loadkeys or kbdcontrol -# Скомпилируйте описание клавиатуры XKB в раскладку, подходящую для loadkeys или kbdcontrol. - -melawy-calamares -# Installer for Melawy Linux -# Установщик для Melawy Linux - -melawy-calamares-configs -# Config files for Installer for Melawy Linux -# Конфигурационные файлы для Установщик для Melawy Linux - - - -# VM SUPPORT - -## Qemu - -qemu-guest-agent -# QEMU Guest Agent -# Гостевой агент QEMU - - - -## Spice - -spice-vdagent -# Spice agent for Linux guests -# Агент Spice для гостей Linux - - - -## Virtual-box - -virtualbox-guest-utils -# VirtualBox Guest userspace utilities -# Утилиты гостевого пользовательского пространства VirtualBox - - - -## VMware - -open-vm-tools -# The Open Virtual Machine Tools (open-vm-tools) are the open source implementation of VMware Tools -# Open Virtual Machine Tools (open-vm-tools) — это реализация VMware Tools с открытым исходным кодом. - -xf86-input-vmmouse -# X.org VMWare Mouse input driver -# Драйвер ввода X.org VMWare Mouse - -xf86-video-vmware -# X.org vmware video driver -# Видеодрайвер X.org vmware - - ## HyperV - hyperv -# Hyper-V tools -# Инструменты Hyper-V - - - -## AARCH64 - -aarch64-linux-gnu-binutils -# A set of programs to assemble and manipulate binary and object files for the ARM64 target -# Набор программ для сборки и управления двоичными и объектными файлами для целевой платформы ARM64. - -aarch64-linux-gnu-gcc -# The GNU Compiler Collection - cross compiler for ARM64 target -# Коллекция компиляторов GNU - кросс-компилятор для цели ARM64 - -aarch64-linux-gnu-gdb -# The GNU Debugger for the ARM64 target -# Отладчик GNU для целевой платформы ARM64 - -aarch64-linux-gnu-glibc -# GNU C Library ARM64 target -# Цель библиотеки GNU C для ARM64 - -aarch64-linux-gnu-linux-api-headers -# Kernel headers sanitized for use in userspace (aarch64-linux-gnu) -# Заголовки ядра очищены для использования в пользовательском пространстве (aarch64-linux-gnu) - -edk2-aarch64 -# Firmware for Virtual Machines (aarch64) -# Прошивка для виртуальных машин (aarch64) - -qemu-system-aarch64 -# QEMU system emulator for AARCH64 -# Эмулятор системы QEMU для AARCH64 - - - -# OTHER brltty -# Braille display driver for Linux/Unix -# Драйвер дисплея Брайля для Linux/Unix - cloud-init -# Cloud instance initialization -# Инициализация облачного экземпляра - darkhttpd -# A small and secure static webserver -# Небольшой и безопасный статический веб-сервер - espeakup -# A light weight connector for espeak-ng and speakup -# Легкий разъем для espeak-ng и спикапа - fsarchiver -# Safe and flexible file-system backup and deployment tool -# Безопасный и гибкий инструмент резервного копирования и развертывания файловой системы - gnu-netcat -# GNU rewrite of netcat, the network piping application -# GNU переписывает netcat, приложение для сетевых трубопроводов - grml-zsh-config -# grml's zsh setup -# настройка grml zsh - irssi -# Modular text mode IRC client with Perl scripting -# IRC-клиент модульного текстового режима со сценариями Perl - iw -# nl80211 based CLI configuration utility for wireless devices -# Утилита настройки интерфейса командной строки на основе nl80211 для беспроводных устройств - lftp -# Sophisticated command line based FTP client -# Сложный FTP-клиент на основе командной строки - libfido2 -# Library functionality for FIDO 2.0, including communication with a device over USB -# Функциональность библиотеки для FIDO 2.0, включая связь с устройством через USB - libusb-compat -# Library to enable user space application programs to communicate with USB devices -# Библиотека, позволяющая прикладным программам пользовательского пространства взаимодействовать с USB-устройствами. - libxinerama -# X11 Xinerama extension library -# Библиотека расширений X11 Xinerama - livecd-sounds -# Sound files for accessibility features in a boot medium -# Звуковые файлы для специальных возможностей на загрузочном носителе - nvme-cli -# NVM-Express user space tooling for Linux -# Инструменты пользовательского пространства NVM-Express для Linux - open-iscsi -# iSCSI userland tools -# пользовательские инструменты iSCSI - packagekit-qt5 -# Qt5 bindings for PackageKit -# Привязки Qt5 для PackageKit - pcsclite -# PC/SC Architecture smartcard middleware library -# Библиотека промежуточного программного обеспечения для смарт-карт архитектуры PC/SC - -powerdevil -# Manages the power consumption settings of a Plasma Shell -# Управляет настройками энергопотребления Plasma Shell. - pulseaudio-qt -# Qt bindings for libpulse -# Привязки Qt для libpulse - sdparm -# An utility similar to hdparm but for SCSI devices -# Утилита, похожая на hdparm, но для устройств SCSI. - testdisk -# Checks and undeletes partitions + PhotoRec, signature based recovery tool -# Проверяет и восстанавливает разделы + PhotoRec, инструмент восстановления на основе подписи - tpm2-tss -# Implementation of the TCG Trusted Platform Module 2.0 Software Stack (TSS2) -# Внедрение программного стека TCG Trusted Platform Module 2.0 (TSS2) - usbmuxd -# USB Multiplex Daemon -# Демон мультиплексирования USB - dex -# Program to generate and execute DesktopEntry files of type Application -# Программа для создания и выполнения файлов DesktopEntry типа Application - - ## Melawy REPO -melawy-color-scheme -melawy-color-scheme-konsole +melawy-arch-linux-updater +melawy-plasma-plasmoid-archupdate + melawy-dracut-initramfs melawy-dracut-ukify -melawy-plasma-desktop-theme -melawy-plasma-look-and-feel-fenek -melawy-plasma-look-and-feel-lera-sugar +melawy-refind-menu-generator +#melawy-etc-skel + melawy-plasma-plasmoid-DittoMenu melawy-plasma-plasmoid-Menu11 melawy-plasma-plasmoid-OnzeMenuKDE -melawy-plasma-plasmoid-archupdate + +melawy-color-scheme +melawy-color-scheme-konsole +melawy-icon-theme +melawy-plasma-desktop-theme + +melawy-plasma-look-and-feel-fenek melawy-plymouth-theme-fenek -melawy-plymouth-theme-lera-sugar -melawy-refind-menu-generator melawy-refind-theme-fenek -melawy-refind-theme-lera-sugar melawy-sddm-theme-fenek -melawy-sddm-theme-lera-sugar melawy-wallpaper-fenek + +melawy-plasma-look-and-feel-lera-sugar +melawy-plymouth-theme-lera-sugar +melawy-refind-theme-lera-sugar +melawy-sddm-theme-lera-sugar melawy-wallpaper-lera-sugar -melawy-plymouth-theme-hard-install-lera-sugar -# Liveuser specific plymouth theme hard install Lera Sugar for Melawy Linux -# Жесткая установка темы Plymouth для Liveuser Lera Sugar для Melawy Linux +melawy-plasma-look-and-feel-nier-a2 +melawy-plymouth-theme-nier-a2 +melawy-refind-theme-nier-a2 +melawy-sddm-theme-nier-a2 +melawy-wallpaper-nier-a2 + +melawy-purple-dark-cursors +melawy-purple-dark-default-cursors +melawy-purple-light-cursors +melawy-purple-light-default-cursors +melawy-red-dark-cursors +melawy-red-dark-default-cursors +melawy-red-light-cursors +melawy-red-light-default-cursors + +melawy-plymouth-theme-hard-install-nier-a2 + +#melawy-plymouth-theme-hard-install-lera-sugar #melawy-plymouth-theme-hard-install-fenek -# Liveuser specific plymouth theme hard install Fenek for Melawy Linux -# Жесткая установка темы Plymouth для Liveuser Fenek для Melawy Linux -colloid-gtk-theme-git -colloid-kde-theme-git -qogir-gtk-theme-git -qogir-kde-theme-git -fluent-gtk-theme +fluent-gtk-theme-git fluent-kde-theme-git - -colloid-icon-theme-git -qogir-icon-theme -fluent-icon-theme-git win11-icon-theme-git win11-icon-theme-special-git win11-icon-theme-white-git -colloid-cursors-git + +## Calamares Melawy +#melawy-calamares +#melawy-calamares-configs diff --git a/profiledef.sh b/profiledef.sh index 779bfea..a0eeb55 100644 --- a/profiledef.sh +++ b/profiledef.sh @@ -3,7 +3,7 @@ iso_name="melawy-linux" iso_label="Melawy-Linux-$(date +%Y%m)" -iso_publisher="Melawy Linux <https://github.com/Melawy>" +iso_publisher="Melawy Linux <https://melawy.ru>" iso_application="Melawy Linux Live/Rescue CD" iso_version="$(date +%Y.%m.%d)" install_dir="arch" @@ -22,19 +22,33 @@ pacman_conf="airootfs/etc/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" ["/etc/gshadow"]="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" ["/etc/polkit-1/rules.d"]="0:0:750" + ["/etc/shadow"]="0:0:400" ["/etc/sudoers.d"]="0:0:750" ["/etc/sudoers.d/g_wheel"]="0:0:440" - ["/usr/local/bin/displaymanager-check"]="0:0:755" + ["/root"]="0:0:750" + ["/root/.automated_script.sh"]="0:0:755" + ["/root/.gnupg"]="0:0:700" + ["/usr/local/bin/GPU-Intel-installer"]="0:0:755" + ["/usr/local/bin/Installation_guide"]="0:0:755" + ["/usr/local/bin/all-cores"]="0:0:755" + ["/usr/local/bin/calamares-offline.sh"]="0:0:755" + ["/usr/local/bin/calamares-online.sh"]="0:0:755" + ["/usr/local/bin/choose-mirror"]="0:0:755" + ["/usr/local/bin/device-info"]="0:0:755" + ["/usr/local/bin/dmcheck"]="0:0:755" ["/usr/local/bin/fix-keys"]="0:0:755" - ["/usr/bin/GPU-Intel-installer"]="0:0:755" - ["/usr/bin/device-info"]="0:0:755" - ["/usr/bin/melawy-linux-connection-checker"]="0:0:755" -) + ["/usr/local/bin/fsprogschk"]="0:0:755" + ["/usr/local/bin/livecd-sound"]="0:0:755" + ["/usr/local/bin/melawy-linux-connection-checker"]="0:0:755" + ["/usr/local/bin/melawy-linux-final"]="0:0:755" + ["/usr/local/bin/prepare-live-desktop.sh"]="0:0:755" + ["/usr/local/bin/remove-nvidia"]="0:0:755" + ["/usr/local/bin/removeun"]="0:0:755" + ["/usr/local/bin/removeun-online"]="0:0:755" + ["/usr/local/bin/services"]="0:0:755" + ["/usr/local/bin/skel"]="0:0:755" + ["/usr/local/bin/ucode"]="0:0:755" + ["/usr/local/bin/vcheck"]="0:0:755" + ) diff --git a/syslinux/splash.png b/syslinux/splash.png index e96f088..ddbfcc5 100644 Binary files a/syslinux/splash.png and b/syslinux/splash.png differ diff --git a/syslinux/splash1.png b/syslinux/splash1.png new file mode 100644 index 0000000..e96f088 Binary files /dev/null and b/syslinux/splash1.png differ diff --git a/syslinux/splash3.png b/syslinux/splash3.png new file mode 100644 index 0000000..ddbfcc5 Binary files /dev/null and b/syslinux/splash3.png differ