diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml
index 85930446..dfadb69c 100644
--- a/.github/FUNDING.yml
+++ b/.github/FUNDING.yml
@@ -2,4 +2,3 @@
github: adi1090x
ko_fi: adi1090x
-liberapay: adi1090x
diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md
index 175b8942..1ec9eb26 100644
--- a/.github/ISSUE_TEMPLATE.md
+++ b/.github/ISSUE_TEMPLATE.md
@@ -3,7 +3,7 @@
Please answer the following questions for yourself before submitting an issue.
>**YOU MAY DELETE THE PREREQUISITES SECTION.**
-- [ ] I am using the [latest version](https://github.com/archcraft-os/releases/releases/tag/v21.10)
+- [ ] I am using the [latest version](https://github.com/archcraft-os/releases/releases)
- [ ] I checked the [documentation](https://wiki.archcraft.io) and found no answer
- [ ] I checked to make sure that this issue has not already been filed
- [ ] I'm reporting the issue to the correct repository
diff --git a/.gitignore b/.gitignore
index 839b8e37..c5c0b58a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,5 +1,5 @@
# Work Directory
-/work
+/profile/work
# ISO Directory
-/out
+/profile/out
diff --git a/airootfs/etc/motd b/airootfs/etc/motd
deleted file mode 100644
index 6b86370e..00000000
--- a/airootfs/etc/motd
+++ /dev/null
@@ -1,22 +0,0 @@
-⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠏⠹⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
-⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡟⠀⠀⢹⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
-⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠀⠀⠀⠀⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
-⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠁⠀⠀⠀⠀⠀⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
-⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠃⠀⠀⠀⠀⠀⠀⠈⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
-⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡃⠀⠀⠀⠀⠀⠀⠀⠀⠈⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
-⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠋⠛⠳⢄⠀⠀⠀⠀⠀⠀⠀⠘⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
-⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠃⠀⠀⠀⠀⠁⠀⠀⠀⠀⠀⠀⠀⠈⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
-⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
-⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
-⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿
-⣿⣿⣿⣿⣿⣿⣿⣿⣿⠃⠀⠀⠀⠀⠀⢀⠀⠀⢀⣿⣿⣆⠀⠀⢀⠀⠀⠀⠀⠀⠈⢿⣿⣿⣿⣿⣿⣿⣿⣿
-⣿⣿⣿⣿⣿⣿⣿⡿⠁⠀⠀⠀⠀⠀⢰⣿⣿⣾⣿⣿⣿⣿⣷⣾⣿⣷⠀⠀⠀⠀⠀⠈⢿⣿⣿⣿⣿⣿⣿⣿
-⣿⣿⣿⣿⣿⣿⡿⠁⠀⠀⠀⠀⠀⠀⢀⣿⣿⣿⡿⠛⠛⠻⣿⣿⣿⣇⠀⠀⠀⠀⠀⠀⠈⢿⣿⣿⣿⣿⣿⣿
-⣿⣿⣿⣿⣿⡿⠁⠀⠀⠀⠀⠀⠀⣶⣿⣿⣿⡟⠀⠀⠀⠀⠘⣿⣿⣿⣷⡆⠀⠀⠀⢀⠀⠀⢻⣿⣿⣿⣿⣿
-⣿⣿⣿⣿⡟⠁⠀⠀⠀⠀⠀⠀⠀⠙⢻⣿⣿⣷⡀⠀⠀⢀⣼⣿⣿⣿⡟⠃⠀⠀⠀⠀⠉⠲⢦⣿⣿⣿⣿⣿
-⣿⣿⣿⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡀⠀⠀⠀⠀⠀⠀⠀⠀⠙⠿⣿⣿⣿
-⣿⣿⠟⠀⠀⠀⠀⠀⠀⠀⠀⣀⣴⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣦⣀⠀⠀⠀⠀⠀⠀⠀⠀⠹⣿⣿
-⣿⠏⠀⠀⠀⠀⣀⣠⣴⣶⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣶⣤⣀⡀⠀⠀⠀⠀⠹⣿
-⢏⣀⣤⣴⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣶⣤⣄⣀⠹
-
-Welcome to Archcraft, A minimal linux OS based on archlinux.
diff --git a/changelog.md b/changelog.md
index 7445a3c6..9640d806 100644
--- a/changelog.md
+++ b/changelog.md
@@ -1,5 +1,24 @@
Archcraft : Changelogs
+### January 2023
+**`Major Release`**
+- Created the ISO base from scratch
+- Better Network Manager Support, Various VPN plugins
+- Better Bluetooth Support
+- Pipewire For Sound/Audio (Systemwide, Bluetooth, Jack)
+- Better Printer Support
+- Almost All Audio, Video and Image Codecs
+- Better File manager functionality (Mounting, Networking, Archiving, etc)
+- Better multi-monitor support
+- CJK fonts pre-installed
+- New themes for both openbox and bspwm
+- Creating user themes are super easy now
+- So many minor changes, etc.
+
+> You need to re-install Archcraft for this update. After that, you can update to next release with `pacman`
+
+#
+
### September 2022
**`Just a regular ISO update`**
- Updated the ISO with latest packages
diff --git a/grub/grub.cfg b/grub/grub.cfg
deleted file mode 100644
index f167454c..00000000
--- a/grub/grub.cfg
+++ /dev/null
@@ -1,77 +0,0 @@
-# Load partition table and file system modules
-insmod part_gpt
-insmod part_msdos
-insmod fat
-insmod iso9660
-
-# Use graphics-mode output
-insmod all_video
-insmod font
-if loadfont "${prefix}/fonts/unicode.pf2" ; then
- insmod gfxterm
- set gfxmode="auto"
- terminal_input console
- terminal_output gfxterm
-fi
-
-# Enable serial console
-if serial --unit=0 --speed=115200; then
- terminal_input --append serial
- terminal_output --append serial
-fi
-
-# Set default menu entry
-default=archcraft
-timeout=10
-timeout_style=menu
-
-# Menu entries
-
-menuentry "Boot Archcraft (64bit, UEFI)" --class archcraft --class arch --class gnu-linux --class gnu --class os --id 'archcraft' {
- set gfxpayload=keep
- search --no-floppy --set=root --label %ARCHISO_LABEL%
- linux /%INSTALL_DIR%/boot/x86_64/vmlinuz-linux archisobasedir=%INSTALL_DIR% archisolabel=%ARCHISO_LABEL% quiet splash loglevel=3 udev.log_level=3 vt.global_cursor_default=0 cow_spacesize=5G
- initrd /%INSTALL_DIR%/boot/intel-ucode.img /%INSTALL_DIR%/boot/amd-ucode.img /%INSTALL_DIR%/boot/x86_64/initramfs-linux.img
-}
-
-menuentry "Boot Archcraft (64bit, UEFI, Copy to RAM)" --class archcraft --class arch --class gnu-linux --class gnu --class os --id 'archcraft-ctr' {
- set gfxpayload=keep
- search --no-floppy --set=root --label %ARCHISO_LABEL%
- linux /%INSTALL_DIR%/boot/x86_64/vmlinuz-linux archisobasedir=%INSTALL_DIR% archisolabel=%ARCHISO_LABEL% copytoram quiet splash loglevel=3 udev.log_level=3 vt.global_cursor_default=0 cow_spacesize=1G
- initrd /%INSTALL_DIR%/boot/intel-ucode.img /%INSTALL_DIR%/boot/amd-ucode.img /%INSTALL_DIR%/boot/x86_64/initramfs-linux.img
-}
-
-menuentry "Boot Archcraft (64bit, UEFI, NVIDIA)" --class archcraft --class arch --class gnu-linux --class gnu --class os --id 'archcraft-nvidia' {
- set gfxpayload=keep
- search --no-floppy --set=root --label %ARCHISO_LABEL%
- linux /%INSTALL_DIR%/boot/x86_64/vmlinuz-linux archisobasedir=%INSTALL_DIR% archisolabel=%ARCHISO_LABEL% quiet splash loglevel=3 udev.log_level=3 vt.global_cursor_default=0 cow_spacesize=5G nouveau.modeset=0 modprobe.blacklist=nouveau nvidia i915.modeset=1 radeon.modeset=1
- initrd /%INSTALL_DIR%/boot/intel-ucode.img /%INSTALL_DIR%/boot/amd-ucode.img /%INSTALL_DIR%/boot/x86_64/initramfs-linux.img
-}
-
-if [ "${grub_platform}" == "efi" ]; then
- if [ "${grub_cpu}" == "x86_64" ]; then
- menuentry "UEFI Shell" --class recovery {
- insmod chain
- search --no-floppy --set=root --label %ARCHISO_LABEL%
- chainloader /shellx64.efi
- }
- elif [ "${grub_cpu}" == "i386" ]; then
- menuentry "UEFI Shell" --class recovery {
- insmod chain
- search --no-floppy --set=root --label %ARCHISO_LABEL%
- chainloader /shellia32.efi
- }
- fi
-
- menuentry 'UEFI Firmware Settings' --class recovery --id 'uefi-firmware' {
- fwsetup
- }
-fi
-
-menuentry "System shutdown" --class shutdown --class poweroff {
- halt
-}
-
-menuentry "System restart" --class restart --class reboot {
- reboot
-}
diff --git a/airootfs/etc/X11/xorg.conf.d/02-touchpad-ttc.conf b/profile/airootfs/etc/X11/xorg.conf.d/02-touchpad-ttc.conf
similarity index 100%
rename from airootfs/etc/X11/xorg.conf.d/02-touchpad-ttc.conf
rename to profile/airootfs/etc/X11/xorg.conf.d/02-touchpad-ttc.conf
diff --git a/airootfs/etc/environment b/profile/airootfs/etc/environment
similarity index 80%
rename from airootfs/etc/environment
rename to profile/airootfs/etc/environment
index 81c7e0a7..427988ab 100644
--- a/airootfs/etc/environment
+++ b/profile/airootfs/etc/environment
@@ -4,6 +4,5 @@
# Syntax: simple "KEY=VAL" pairs on separate lines
#
QT_QPA_PLATFORMTHEME=qt5ct
-PATH="/usr/share/archcraft/scripts"
EDITOR=nano
BROWSER=firefox
diff --git a/airootfs/etc/group b/profile/airootfs/etc/group
similarity index 95%
rename from airootfs/etc/group
rename to profile/airootfs/etc/group
index 1c7bf5ee..fbe9da60 100644
--- a/airootfs/etc/group
+++ b/profile/airootfs/etc/group
@@ -3,6 +3,7 @@ sys:x:3:bin,liveuser
network:x:90:liveuser
power:x:98:liveuser
adm:x:999:liveuser
+lp:x:992:liveuser
wheel:x:998:liveuser
uucp:x:987:liveuser
optical:x:990:liveuser
diff --git a/airootfs/etc/gshadow b/profile/airootfs/etc/gshadow
similarity index 95%
rename from airootfs/etc/gshadow
rename to profile/airootfs/etc/gshadow
index a6de646a..d1df9df4 100644
--- a/airootfs/etc/gshadow
+++ b/profile/airootfs/etc/gshadow
@@ -3,6 +3,7 @@ sys:!!::liveuser
network:!!::liveuser
power:!!::liveuser
adm:!!::liveuser
+lp:!!::liveuser
wheel:!!::liveuser
uucp:!!::liveuser
optical:!!::liveuser
diff --git a/airootfs/etc/hostname b/profile/airootfs/etc/hostname
similarity index 100%
rename from airootfs/etc/hostname
rename to profile/airootfs/etc/hostname
diff --git a/airootfs/etc/locale.conf b/profile/airootfs/etc/locale.conf
similarity index 100%
rename from airootfs/etc/locale.conf
rename to profile/airootfs/etc/locale.conf
diff --git a/airootfs/etc/localtime b/profile/airootfs/etc/localtime
similarity index 100%
rename from airootfs/etc/localtime
rename to profile/airootfs/etc/localtime
diff --git a/airootfs/etc/mkinitcpio.conf b/profile/airootfs/etc/mkinitcpio.conf
similarity index 100%
rename from airootfs/etc/mkinitcpio.conf
rename to profile/airootfs/etc/mkinitcpio.conf
diff --git a/airootfs/etc/mkinitcpio.d/linux.preset b/profile/airootfs/etc/mkinitcpio.d/linux.preset
similarity index 100%
rename from airootfs/etc/mkinitcpio.d/linux.preset
rename to profile/airootfs/etc/mkinitcpio.d/linux.preset
diff --git a/airootfs/etc/modprobe.d/broadcom-wl.conf b/profile/airootfs/etc/modprobe.d/broadcom-wl.conf
similarity index 100%
rename from airootfs/etc/modprobe.d/broadcom-wl.conf
rename to profile/airootfs/etc/modprobe.d/broadcom-wl.conf
diff --git a/profile/airootfs/etc/motd b/profile/airootfs/etc/motd
new file mode 100644
index 00000000..1b941387
--- /dev/null
+++ b/profile/airootfs/etc/motd
@@ -0,0 +1,9 @@
+Welcome to [38;2;23;147;209mArchcraft[0m!
+
+[35mHome:[0m https://archcraft.io
+[35mWiki:[0m https://wiki.archcraft.io
+
+[32mDeveloped By:[0m Aditya Shakya [33m[0m
+
+[41m [42m [43m [44m [45m [46m [47m [0m
+
diff --git a/airootfs/etc/pacman.d/hooks/uncomment-mirrors.hook b/profile/airootfs/etc/pacman.d/hooks/uncomment-mirrors.hook
similarity index 100%
rename from airootfs/etc/pacman.d/hooks/uncomment-mirrors.hook
rename to profile/airootfs/etc/pacman.d/hooks/uncomment-mirrors.hook
diff --git a/airootfs/etc/pacman.d/hooks/zzzz99-remove-custom-hooks-from-airootfs.hook b/profile/airootfs/etc/pacman.d/hooks/zzzz99-remove-custom-hooks-from-airootfs.hook
similarity index 100%
rename from airootfs/etc/pacman.d/hooks/zzzz99-remove-custom-hooks-from-airootfs.hook
rename to profile/airootfs/etc/pacman.d/hooks/zzzz99-remove-custom-hooks-from-airootfs.hook
diff --git a/airootfs/etc/passwd b/profile/airootfs/etc/passwd
similarity index 100%
rename from airootfs/etc/passwd
rename to profile/airootfs/etc/passwd
diff --git a/airootfs/etc/polkit-1/localauthority/50-local.d/10-udisks.pkla b/profile/airootfs/etc/polkit-1/localauthority/50-local.d/10-udisks.pkla
similarity index 100%
rename from airootfs/etc/polkit-1/localauthority/50-local.d/10-udisks.pkla
rename to profile/airootfs/etc/polkit-1/localauthority/50-local.d/10-udisks.pkla
diff --git a/airootfs/etc/polkit-1/rules.d/50-org.freedesktop.NetworkManager.rules b/profile/airootfs/etc/polkit-1/rules.d/50-org.freedesktop.NetworkManager.rules
similarity index 100%
rename from airootfs/etc/polkit-1/rules.d/50-org.freedesktop.NetworkManager.rules
rename to profile/airootfs/etc/polkit-1/rules.d/50-org.freedesktop.NetworkManager.rules
diff --git a/airootfs/etc/polkit-1/rules.d/50-udiskie.rules b/profile/airootfs/etc/polkit-1/rules.d/50-udiskie.rules
similarity index 100%
rename from airootfs/etc/polkit-1/rules.d/50-udiskie.rules
rename to profile/airootfs/etc/polkit-1/rules.d/50-udiskie.rules
diff --git a/airootfs/etc/polkit-1/rules.d/allow-mount-internal.rules b/profile/airootfs/etc/polkit-1/rules.d/allow-mount-internal.rules
similarity index 100%
rename from airootfs/etc/polkit-1/rules.d/allow-mount-internal.rules
rename to profile/airootfs/etc/polkit-1/rules.d/allow-mount-internal.rules
diff --git a/airootfs/etc/polkit-1/rules.d/always-allow-wheel.rules b/profile/airootfs/etc/polkit-1/rules.d/always-allow-wheel.rules
similarity index 100%
rename from airootfs/etc/polkit-1/rules.d/always-allow-wheel.rules
rename to profile/airootfs/etc/polkit-1/rules.d/always-allow-wheel.rules
diff --git a/airootfs/etc/polkit-1/rules.d/udisks-no-consolekit.rules b/profile/airootfs/etc/polkit-1/rules.d/udisks-no-consolekit.rules
similarity index 100%
rename from airootfs/etc/polkit-1/rules.d/udisks-no-consolekit.rules
rename to profile/airootfs/etc/polkit-1/rules.d/udisks-no-consolekit.rules
diff --git a/airootfs/etc/resolv.conf b/profile/airootfs/etc/resolv.conf
similarity index 100%
rename from airootfs/etc/resolv.conf
rename to profile/airootfs/etc/resolv.conf
diff --git a/airootfs/etc/sddm.conf b/profile/airootfs/etc/sddm.conf
similarity index 100%
rename from airootfs/etc/sddm.conf
rename to profile/airootfs/etc/sddm.conf
diff --git a/airootfs/etc/sddm.conf.d/kde_settings.conf b/profile/airootfs/etc/sddm.conf.d/kde_settings.conf
similarity index 100%
rename from airootfs/etc/sddm.conf.d/kde_settings.conf
rename to profile/airootfs/etc/sddm.conf.d/kde_settings.conf
diff --git a/airootfs/etc/shadow b/profile/airootfs/etc/shadow
similarity index 100%
rename from airootfs/etc/shadow
rename to profile/airootfs/etc/shadow
diff --git a/profile/airootfs/etc/skel/.cache/betterlockscreen/current/lock_blur.png b/profile/airootfs/etc/skel/.cache/betterlockscreen/current/lock_blur.png
new file mode 100644
index 00000000..f155c832
Binary files /dev/null and b/profile/airootfs/etc/skel/.cache/betterlockscreen/current/lock_blur.png differ
diff --git a/profile/airootfs/etc/skel/.cache/betterlockscreen/current/lock_color.png b/profile/airootfs/etc/skel/.cache/betterlockscreen/current/lock_color.png
new file mode 100644
index 00000000..3ed8c4c6
Binary files /dev/null and b/profile/airootfs/etc/skel/.cache/betterlockscreen/current/lock_color.png differ
diff --git a/profile/airootfs/etc/skel/.cache/betterlockscreen/current/lock_dim.png b/profile/airootfs/etc/skel/.cache/betterlockscreen/current/lock_dim.png
new file mode 100644
index 00000000..2fecd0cc
Binary files /dev/null and b/profile/airootfs/etc/skel/.cache/betterlockscreen/current/lock_dim.png differ
diff --git a/profile/airootfs/etc/skel/.cache/betterlockscreen/current/lock_dimblur.png b/profile/airootfs/etc/skel/.cache/betterlockscreen/current/lock_dimblur.png
new file mode 100644
index 00000000..9147722c
Binary files /dev/null and b/profile/airootfs/etc/skel/.cache/betterlockscreen/current/lock_dimblur.png differ
diff --git a/profile/airootfs/etc/skel/.cache/betterlockscreen/current/lock_dimpixel.png b/profile/airootfs/etc/skel/.cache/betterlockscreen/current/lock_dimpixel.png
new file mode 100644
index 00000000..b534f315
Binary files /dev/null and b/profile/airootfs/etc/skel/.cache/betterlockscreen/current/lock_dimpixel.png differ
diff --git a/profile/airootfs/etc/skel/.cache/betterlockscreen/current/lock_pixel.png b/profile/airootfs/etc/skel/.cache/betterlockscreen/current/lock_pixel.png
new file mode 100644
index 00000000..366032b1
Binary files /dev/null and b/profile/airootfs/etc/skel/.cache/betterlockscreen/current/lock_pixel.png differ
diff --git a/profile/airootfs/etc/skel/.cache/betterlockscreen/current/lock_resize.png b/profile/airootfs/etc/skel/.cache/betterlockscreen/current/lock_resize.png
new file mode 100644
index 00000000..91a84aaf
Binary files /dev/null and b/profile/airootfs/etc/skel/.cache/betterlockscreen/current/lock_resize.png differ
diff --git a/profile/airootfs/etc/skel/.cache/betterlockscreen/current/wall_blur.png b/profile/airootfs/etc/skel/.cache/betterlockscreen/current/wall_blur.png
new file mode 100644
index 00000000..3904afb2
Binary files /dev/null and b/profile/airootfs/etc/skel/.cache/betterlockscreen/current/wall_blur.png differ
diff --git a/profile/airootfs/etc/skel/.cache/betterlockscreen/current/wall_color.png b/profile/airootfs/etc/skel/.cache/betterlockscreen/current/wall_color.png
new file mode 100644
index 00000000..662dd57f
Binary files /dev/null and b/profile/airootfs/etc/skel/.cache/betterlockscreen/current/wall_color.png differ
diff --git a/profile/airootfs/etc/skel/.cache/betterlockscreen/current/wall_dim.png b/profile/airootfs/etc/skel/.cache/betterlockscreen/current/wall_dim.png
new file mode 100644
index 00000000..2154cf10
Binary files /dev/null and b/profile/airootfs/etc/skel/.cache/betterlockscreen/current/wall_dim.png differ
diff --git a/profile/airootfs/etc/skel/.cache/betterlockscreen/current/wall_dimblur.png b/profile/airootfs/etc/skel/.cache/betterlockscreen/current/wall_dimblur.png
new file mode 100644
index 00000000..19c7b35c
Binary files /dev/null and b/profile/airootfs/etc/skel/.cache/betterlockscreen/current/wall_dimblur.png differ
diff --git a/profile/airootfs/etc/skel/.cache/betterlockscreen/current/wall_dimpixel.png b/profile/airootfs/etc/skel/.cache/betterlockscreen/current/wall_dimpixel.png
new file mode 100644
index 00000000..01e2bf61
Binary files /dev/null and b/profile/airootfs/etc/skel/.cache/betterlockscreen/current/wall_dimpixel.png differ
diff --git a/profile/airootfs/etc/skel/.cache/betterlockscreen/current/wall_pixel.png b/profile/airootfs/etc/skel/.cache/betterlockscreen/current/wall_pixel.png
new file mode 100644
index 00000000..e8354c76
Binary files /dev/null and b/profile/airootfs/etc/skel/.cache/betterlockscreen/current/wall_pixel.png differ
diff --git a/profile/airootfs/etc/skel/.cache/betterlockscreen/current/wall_resize.png b/profile/airootfs/etc/skel/.cache/betterlockscreen/current/wall_resize.png
new file mode 100644
index 00000000..cf96c512
Binary files /dev/null and b/profile/airootfs/etc/skel/.cache/betterlockscreen/current/wall_resize.png differ
diff --git a/profile/airootfs/etc/skel/.cache/rofi3.druncache b/profile/airootfs/etc/skel/.cache/rofi3.druncache
new file mode 100644
index 00000000..6fff1234
--- /dev/null
+++ b/profile/airootfs/etc/skel/.cache/rofi3.druncache
@@ -0,0 +1,24 @@
+5 archcraft-welcome.desktop
+5 calamares.desktop
+5 abif.desktop
+5 help-and-tips.desktop
+5 about.desktop
+5 Alacritty.desktop
+5 firefox.desktop
+5 thunar.desktop
+5 geany.desktop
+1 htop.desktop
+1 vim.desktop
+1 ranger.desktop
+1 viewnior.desktop
+1 xfce-settings-manager.desktop
+1 xfce4-settings-editor.desktop
+1 xfce4-power-manager-settings.desktop
+1 xfce-keyboard-settings.desktop
+1 xfce-mouse-settings.desktop
+1 xfce-ui-settings.desktop
+1 nitrogen.desktop
+1 lxappearance.desktop
+1 obconf.desktop
+1 atril.desktop
+1 xarchiver.desktop
diff --git a/profile/airootfs/etc/skel/.config/Thunar/accels.scm b/profile/airootfs/etc/skel/.config/Thunar/accels.scm
new file mode 100644
index 00000000..fc720e36
--- /dev/null
+++ b/profile/airootfs/etc/skel/.config/Thunar/accels.scm
@@ -0,0 +1,2 @@
+(gtk_accel_path "/ThunarActions/uca-action-1581593230771688-1" "F4")
+(gtk_accel_path "/ThunarActions/uca-action-1622790717174452-1" "F3")
diff --git a/profile/airootfs/etc/skel/.config/Thunar/uca.xml b/profile/airootfs/etc/skel/.config/Thunar/uca.xml
new file mode 100644
index 00000000..4a6cb4df
--- /dev/null
+++ b/profile/airootfs/etc/skel/.config/Thunar/uca.xml
@@ -0,0 +1,60 @@
+
+
+
+
+ open-terminal
+ Open Terminal Here
+ 1581593230771688-1
+ /usr/bin/alacritty
+ Example for a custom action
+ *
+
+
+
+
+ go-parent-folder
+ Open as root
+ 1622790717174452-1
+ ~/.config/openbox-themes/scripts/asroot 'dbus-run-session thunar'
+ Open directory as root
+ *
+
+
+
+ document-edit-sign
+ Edit as root
+ 1622790919788057-2
+ ~/.config/openbox-themes/scripts/asroot 'geany %f'
+ Edit file as root
+ *
+
+
+
+ kr_comparedirs
+ Compare
+ 1622791692322694-4
+ meld %F
+ Compare files and directories with meld
+ *
+
+
+
+
+ view-preview
+ Set as wallpaper
+ 1622798756568291-1
+ nitrogen --save --set-zoom-fill %f
+ Set wallpaper with nitrogen in openbox
+ *
+
+
+
+ rotation-locked-landscape
+ Set as lockscreen
+ 1622799434407260-2
+ notify-send 'Please wait...' && betterlockscreen -u %f
+ Set image as lockscreen background
+ *
+
+
+
diff --git a/profile/airootfs/etc/skel/.config/dconf/user b/profile/airootfs/etc/skel/.config/dconf/user
new file mode 100644
index 00000000..6eef2726
Binary files /dev/null and b/profile/airootfs/etc/skel/.config/dconf/user differ
diff --git a/profile/airootfs/etc/skel/.config/dunst/dunstrc b/profile/airootfs/etc/skel/.config/dunst/dunstrc
new file mode 100644
index 00000000..d7d85231
--- /dev/null
+++ b/profile/airootfs/etc/skel/.config/dunst/dunstrc
@@ -0,0 +1,71 @@
+## Copyright (C) 2020-2022 Aditya Shakya
+
+[global]
+monitor = 0
+follow = mouse
+width = 300
+height = 80
+origin = top-right
+offset = 10x48
+corner_radius = 0
+scale = 0
+notification_limit = 0
+progress_bar = true
+progress_bar_height = 80
+progress_bar_frame_width = 4
+progress_bar_min_width = 300
+progress_bar_max_width = 300
+indicate_hidden = yes
+transparency = 0
+separator_height = 2
+padding = 15
+horizontal_padding = 15
+text_icon_padding = 0
+frame_width = 4
+gap_size = 0
+separator_color = frame
+sort = yes
+idle_threshold = 120
+font = JetBrains Mono 10
+line_height = 2
+markup = full
+format = %s\n%b
+alignment = left
+vertical_alignment = center
+show_age_threshold = 60
+ellipsize = middle
+ignore_newline = no
+stack_duplicates = true
+hide_duplicate_count = false
+show_indicators = yes
+enable_recursive_icon_lookup = true
+icon_position = left
+min_icon_size = 24
+max_icon_size = 48
+sticky_history = yes
+history_length = 20
+browser = /usr/bin/xdg-open
+always_run_script = true
+mouse_left_click = close_current
+mouse_middle_click = do_action, close_current
+mouse_right_click = close_all
+title = Dunst
+class = Dunst
+
+[urgency_low]
+timeout = 2
+background = "#1E2128"
+foreground = "#ABB2BF"
+frame_color = "#292d37"
+
+[urgency_normal]
+timeout = 5
+background = "#1E2128"
+foreground = "#ABB2BF"
+frame_color = "#292d37"
+
+[urgency_critical]
+timeout = 0
+background = "#1E2128"
+foreground = "#E06B74"
+frame_color = "#E06B74"
diff --git a/profile/airootfs/etc/skel/.config/gtk-3.0/gtk.css b/profile/airootfs/etc/skel/.config/gtk-3.0/gtk.css
new file mode 100644
index 00000000..028f0e45
--- /dev/null
+++ b/profile/airootfs/etc/skel/.config/gtk-3.0/gtk.css
@@ -0,0 +1,21 @@
+VteTerminal, vte-terminal {
+ padding: 12px;
+}
+
+.window-frame, .window-frame:backdrop {
+ box-shadow: 0 0 0 black;
+ border-style: none;
+ margin: 0;
+ border-radius: 0;
+}
+
+.titlebar {
+ border-radius: 0;
+}
+
+undershoot.top,
+undershoot.right,
+undershoot.bottom,
+undershoot.left {
+ background-image: none;
+}
diff --git a/profile/airootfs/etc/skel/.config/gtk-3.0/settings.ini b/profile/airootfs/etc/skel/.config/gtk-3.0/settings.ini
new file mode 100644
index 00000000..5228f03c
--- /dev/null
+++ b/profile/airootfs/etc/skel/.config/gtk-3.0/settings.ini
@@ -0,0 +1,18 @@
+[Settings]
+gtk-application-prefer-dark-theme=false
+gtk-enable-animations=true
+gtk-font-name=Noto Sans 9
+gtk-icon-theme-name=Arc-Circle
+gtk-theme-name=Arc-Dark
+gtk-cursor-theme-name=Qogirr
+gtk-cursor-theme-size=0
+gtk-toolbar-style=GTK_TOOLBAR_ICONS
+gtk-toolbar-icon-size=GTK_ICON_SIZE_LARGE_TOOLBAR
+gtk-button-images=0
+gtk-menu-images=1
+gtk-enable-event-sounds=0
+gtk-enable-input-feedback-sounds=0
+gtk-xft-antialias=1
+gtk-xft-hinting=1
+gtk-xft-hintstyle=hintslight
+gtk-xft-rgba=rgb
diff --git a/profile/airootfs/etc/skel/.config/mimeapps.list b/profile/airootfs/etc/skel/.config/mimeapps.list
new file mode 100644
index 00000000..bab23bb8
--- /dev/null
+++ b/profile/airootfs/etc/skel/.config/mimeapps.list
@@ -0,0 +1,14 @@
+[Added Associations]
+image/png=viewnior.desktop;
+image/jpeg=viewnior.desktop;
+image/gif=viewnior.desktop;
+image/svg+xml=viewnior.desktop;
+text/x-csrc=geany.desktop;
+text/plain=geany.desktop;
+application/x-shellscript=geany.desktop;
+application/x-theme=geany.desktop;
+application/json=geany.desktop;
+
+[Default Applications]
+image/gif=viewnior.desktop
+image/svg+xml=viewnior.desktop
diff --git a/profile/airootfs/etc/skel/.config/picom.conf b/profile/airootfs/etc/skel/.config/picom.conf
new file mode 100644
index 00000000..0a247a3b
--- /dev/null
+++ b/profile/airootfs/etc/skel/.config/picom.conf
@@ -0,0 +1,421 @@
+## Copyright (C) 2020-2022 Aditya Shakya
+
+#========================= Corners =========================#
+
+corner-radius = 0;
+rounded-corners-exclude = [
+# "window_type = 'normal'",
+ "class_g ?= 'rofi'",
+ "class_g ?= 'polybar'",
+ "class_g ?= 'tint2'"
+];
+
+round-borders = 0;
+round-borders-exclude = [
+ "class_g = 'TelegramDesktop'"
+];
+
+# Specify a list of border width rules, in the format `PIXELS:PATTERN`,
+# Note we don't make any guarantee about possible conflicts with the
+# border_width set by the window manager.
+#
+# example:
+# round-borders-rule = [ "2:class_g = 'URxvt'" ];
+#
+round-borders-rule = [
+ "2:class_g ?= 'URxvt'",
+ "2:class_g ?= 'Alacritty'",
+ "0:class_g ?= 'firefox'"
+];
+
+#========================= Shadows =========================#
+
+# Enabled client-side shadows on windows. Note desktop windows
+# (windows with '_NET_WM_WINDOW_TYPE_DESKTOP') never get shadow,
+# unless explicitly requested using the wintypes option.
+#
+shadow = true;
+
+# The blur radius for shadows, in pixels. (defaults to 12)
+shadow-radius = 14;
+
+# The opacity of shadows. (0.0 - 1.0, defaults to 0.75)
+shadow-opacity = 0.30;
+
+# The left offset for shadows, in pixels. (defaults to -15)
+shadow-offset-x = -12;
+
+# The top offset for shadows, in pixels. (defaults to -15)
+shadow-offset-y = -12;
+
+# Red color value of shadow (0.0 - 1.0, defaults to 0).
+# shadow-red = 0
+
+# Green color value of shadow (0.0 - 1.0, defaults to 0).
+# shadow-green = 0
+
+# Blue color value of shadow (0.0 - 1.0, defaults to 0).
+# shadow-blue = 0
+
+# Hex string color value of shadow (#000000 - #FFFFFF, defaults to #000000). This option will override options set shadow-(red/green/blue)
+# shadow-color = "#000000"
+
+# Specify a list of conditions of windows that should have no shadow.
+#
+# examples:
+# shadow-exclude = "n:e:Notification";
+#
+# shadow-exclude = []
+shadow-exclude = [
+ "class_g = 'Cairo-clock'",
+ "class_g = 'CoverGloobus'",
+ "class_g = 'Tilda'",
+ "name ?= 'gnome-pie'",
+# "class_g = 'Dmenu'",
+# "class_g ?= 'rofi'",
+# "class_g ?= 'polybar'",
+ "class_g ?= 'Plank'",
+ "name *= 'recordmydesktop'",
+ "name = 'Notification'",
+ "name = 'Docky'",
+ "name = 'Kupfer'",
+ "name = 'xfce4-notifyd'",
+ "name *= 'VLC'",
+ "name *= 'Chromium'",
+ "name *= 'Chrome'",
+ "class_g = 'Conky'",
+ "class_g = 'Kupfer'",
+ "class_g = 'Synapse'",
+ "class_g ?= 'Notify-osd'",
+ "class_g ?= 'Cairo-dock'",
+ "class_g ?= 'Xfce4-notifyd'",
+ "class_g ?= 'Xfce4-power-manager'",
+ "_GTK_FRAME_EXTENTS@:c",
+ "_NET_WM_STATE@:32a *= '_NET_WM_STATE_HIDDEN'"
+];
+
+# Specify a X geometry that describes the region in which shadow should not
+# be painted in, such as a dock window region. Use
+# shadow-exclude-reg = "x10+0+0"
+# for example, if the 10 pixels on the bottom of the screen should not have shadows painted on.
+#
+# shadow-exclude-reg = ""
+
+# Crop shadow of a window fully on a particular Xinerama screen to the screen.
+# xinerama-shadow-crop = false
+
+#========================= Fading =========================#
+
+# Fade windows in/out when opening/closing and when opacity changes,
+# unless no-fading-openclose is used.
+fading = true;
+
+# Opacity change between steps while fading in. (0.01 - 1.0, defaults to 0.028)
+fade-in-step = 0.03;
+
+# Opacity change between steps while fading out. (0.01 - 1.0, defaults to 0.03)
+fade-out-step = 0.03;
+
+# The time between steps in fade step, in milliseconds. (> 0, defaults to 10)
+fade-delta = 5;
+
+# Specify a list of conditions of windows that should not be faded.
+# don't need this, we disable fading for all normal windows with wintypes: {}
+fade-exclude = [
+ "class_g = 'slop'" # maim
+]
+
+# Do not fade on window open/close.
+no-fading-openclose = false
+
+# Do not fade destroyed ARGB windows with WM frame. Workaround of bugs in Openbox, Fluxbox, etc.
+no-fading-destroyed-argb = true
+
+#========================= Opacity =========================#
+
+# Opacity of inactive windows. (0.1 - 1.0, defaults to 1.0)
+# inactive-opacity = 1
+inactive-opacity = 1;
+
+# Opacity of window titlebars and borders. (0.1 - 1.0, disabled by default)
+# frame-opacity = 1.0
+frame-opacity = 1.0;
+
+# Let inactive opacity set by -i override the '_NET_WM_OPACITY' values of windows.
+# inactive-opacity-override = true
+inactive-opacity-override = false;
+
+# Default opacity for active windows. (0.0 - 1.0, defaults to 1.0)
+active-opacity = 1.0;
+
+# Dim inactive windows. (0.0 - 1.0, defaults to 0.0)
+#inactive-dim = 0.5
+
+# Specify a list of conditions of windows that should always be considered focused.
+# focus-exclude = []
+focus-exclude = [
+ "class_g = 'Cairo-clock'",
+ "class_g = 'Bar'", # lemonbar
+ "class_g = 'slop'" # maim
+];
+
+# Use fixed inactive dim value, instead of adjusting according to window opacity.
+# inactive-dim-fixed = 1.0
+
+# Specify a list of opacity rules, in the format `PERCENT:PATTERN`,
+# like `50:name *= "Firefox"`. picom-trans is recommended over this.
+# Note we don't make any guarantee about possible conflicts with other
+# programs that set '_NET_WM_WINDOW_OPACITY' on frame or client windows.
+# example:
+# opacity-rule = [ "80:class_g = 'URxvt'" ];
+#
+# opacity-rule = []
+opacity-rule = [
+ "100:class_g = 'Bar'", # lemonbar
+ "100:class_g = 'slop'", # maim
+ "100:class_g = 'XTerm'",
+ "100:class_g = 'URxvt'",
+ "100:class_g = 'kitty'",
+ "100:class_g = 'Alacritty'",
+ "100:class_g = 'Polybar'",
+ "100:class_g = 'code-oss'",
+ "100:class_g = 'Meld'",
+ "100:class_g = 'TelegramDesktop'",
+ "100:class_g = 'Joplin'",
+ "100:class_g = 'firefox'",
+ "100:class_g = 'Thunderbird'"
+];
+
+#========================= Blurring =========================#
+
+blur: {
+ method = "none";
+ strength = 0;
+# deviation = 1.0;
+# kernel = "11x11gaussian";
+ background = false;
+ background-frame = false;
+ background-fixed = false;
+ kern = "3x3box";
+}
+
+# Exclude conditions for background blur.
+blur-background-exclude = [
+# "window_type = 'dock'",
+ "window_type = 'desktop'",
+ "class_g = 'Plank'",
+ "class_g = 'slop'",
+ "_GTK_FRAME_EXTENTS@:c"
+];
+
+#========================= General Settings =========================#
+
+# Daemonize process. Fork to background after initialization. Causes issues with certain (badly-written) drivers.
+# daemon = false
+
+# Specify the backend to use: `xrender`, `glx`, or `xr_glx_hybrid`.
+# `xrender` is the default one.
+#
+#experimental-backends = true;
+backend = "xrender";
+
+# Enable/disable VSync.
+# vsync = false
+vsync = true;
+
+# Enable remote control via D-Bus. See the *D-BUS API* section below for more details.
+# dbus = false
+
+# Try to detect WM windows (a non-override-redirect window with no
+# child that has 'WM_STATE') and mark them as active.
+#
+# mark-wmwin-focused = false
+mark-wmwin-focused = true;
+
+# Mark override-redirect windows that doesn't have a child window with 'WM_STATE' focused.
+# mark-ovredir-focused = false
+mark-ovredir-focused = true;
+
+# Try to detect windows with rounded corners and don't consider them
+# shaped windows. The accuracy is not very high, unfortunately.
+#
+# detect-rounded-corners = false
+detect-rounded-corners = true;
+
+# Detect '_NET_WM_OPACITY' on client windows, useful for window managers
+# not passing '_NET_WM_OPACITY' of client windows to frame windows.
+#
+# detect-client-opacity = false
+detect-client-opacity = true;
+
+# Specify refresh rate of the screen. If not specified or 0, picom will
+# try detecting this with X RandR extension.
+#
+# refresh-rate = 60
+refresh-rate = 0;
+
+# Use EWMH '_NET_ACTIVE_WINDOW' to determine currently focused window,
+# rather than listening to 'FocusIn'/'FocusOut' event. Might have more accuracy,
+# provided that the WM supports it.
+#
+# use-ewmh-active-win = false
+
+# Unredirect all windows if a full-screen opaque window is detected,
+# to maximize performance for full-screen windows. Known to cause flickering
+# when redirecting/unredirecting windows.
+#
+# unredir-if-possible = false
+
+# Delay before unredirecting the window, in milliseconds. Defaults to 0.
+# unredir-if-possible-delay = 0
+
+# Conditions of windows that shouldn't be considered full-screen for unredirecting screen.
+# unredir-if-possible-exclude = []
+
+# Use 'WM_TRANSIENT_FOR' to group windows, and consider windows
+# in the same group focused at the same time.
+#
+# detect-transient = false
+detect-transient = true;
+
+# Use 'WM_CLIENT_LEADER' to group windows, and consider windows in the same
+# group focused at the same time. 'WM_TRANSIENT_FOR' has higher priority if
+# detect-transient is enabled, too.
+#
+# detect-client-leader = false
+detect-client-leader = true;
+
+# Resize damaged region by a specific number of pixels.
+# A positive value enlarges it while a negative one shrinks it.
+# If the value is positive, those additional pixels will not be actually painted
+# to screen, only used in blur calculation, and such. (Due to technical limitations,
+# with use-damage, those pixels will still be incorrectly painted to screen.)
+# Primarily used to fix the line corruption issues of blur,
+# in which case you should use the blur radius value here
+# (e.g. with a 3x3 kernel, you should use `--resize-damage 1`,
+# with a 5x5 one you use `--resize-damage 2`, and so on).
+# May or may not work with *--glx-no-stencil*. Shrinking doesn't function correctly.
+#
+# resize-damage = 1
+
+# Specify a list of conditions of windows that should be painted with inverted color.
+# Resource-hogging, and is not well tested.
+#
+# invert-color-include = []
+
+# GLX backend: Avoid using stencil buffer, useful if you don't have a stencil buffer.
+# Might cause incorrect opacity when rendering transparent content (but never
+# practically happened) and may not work with blur-background.
+# My tests show a 15% performance boost. Recommended.
+#
+glx-no-stencil = true;
+
+# GLX backend: Avoid rebinding pixmap on window damage.
+# Probably could improve performance on rapid window content changes,
+# but is known to break things on some drivers (LLVMpipe, xf86-video-intel, etc.).
+# Recommended if it works.
+#
+# glx-no-rebind-pixmap = false
+
+# Disable the use of damage information.
+# This cause the whole screen to be redrawn everytime, instead of the part of the screen
+# has actually changed. Potentially degrades the performance, but might fix some artifacts.
+# The opposing option is use-damage
+#
+# no-use-damage = false
+use-damage = true;
+
+# Use X Sync fence to sync clients' draw calls, to make sure all draw
+# calls are finished before picom starts drawing. Needed on nvidia-drivers
+# with GLX backend for some users.
+#
+# xrender-sync-fence = false
+
+# GLX backend: Use specified GLSL fragment shader for rendering window contents.
+# See `compton-default-fshader-win.glsl` and `compton-fake-transparency-fshader-win.glsl`
+# in the source tree for examples.
+#
+# glx-fshader-win = ""
+
+# Force all windows to be painted with blending. Useful if you
+# have a glx-fshader-win that could turn opaque pixels transparent.
+#
+# force-win-blend = false
+
+# Do not use EWMH to detect fullscreen windows.
+# Reverts to checking if a window is fullscreen based only on its size and coordinates.
+#
+# no-ewmh-fullscreen = false
+
+# Dimming bright windows so their brightness doesn't exceed this set value.
+# Brightness of a window is estimated by averaging all pixels in the window,
+# so this could comes with a performance hit.
+# Setting this to 1.0 disables this behaviour. Requires --use-damage to be disabled. (default: 1.0)
+#
+# max-brightness = 1.0
+
+# Make transparent windows clip other windows like non-transparent windows do,
+# instead of blending on top of them.
+#
+# transparent-clipping = false
+
+# Set the log level. Possible values are:
+# "trace", "debug", "info", "warn", "error"
+# in increasing level of importance. Case doesn't matter.
+# If using the "TRACE" log level, it's better to log into a file
+# using *--log-file*, since it can generate a huge stream of logs.
+#
+# log-level = "debug"
+log-level = "info";
+
+# Set the log file.
+# If *--log-file* is never specified, logs will be written to stderr.
+# Otherwise, logs will to written to the given file, though some of the early
+# logs might still be written to the stderr.
+# When setting this option from the config file, it is recommended to use an absolute path.
+#
+# log-file = "/path/to/your/log/file"
+
+# Show all X errors (for debugging)
+# show-all-xerrors = false
+
+# Write process ID to a file.
+# write-pid-path = "/path/to/your/log/file"
+
+# Window type settings
+#
+# 'WINDOW_TYPE' is one of the 15 window types defined in EWMH standard:
+# "unknown", "desktop", "dock", "toolbar", "menu", "utility",
+# "splash", "dialog", "normal", "dropdown_menu", "popup_menu",
+# "tooltip", "notification", "combo", and "dnd".
+#
+# Following per window-type options are available: ::
+#
+# fade, shadow:::
+# Controls window-type-specific shadow and fade settings.
+#
+# opacity:::
+# Controls default opacity of the window type.
+#
+# focus:::
+# Controls whether the window of this type is to be always considered focused.
+# (By default, all window types except "normal" and "dialog" has this on.)
+#
+# full-shadow:::
+# Controls whether shadow is drawn under the parts of the window that you
+# normally won't be able to see. Useful when the window has parts of it
+# transparent, and you want shadows in those areas.
+#
+# redir-ignore:::
+# Controls whether this type of windows should cause screen to become
+# redirected again after been unredirected. If you have unredir-if-possible
+# set, and doesn't want certain window to cause unnecessary screen redirection,
+# you can set this to `true`.
+#
+wintypes:
+{
+ tooltip = { fade=true; shadow=true; opacity=0.95; focus=true; full-shadow=false; };
+ popup_menu = { opacity=1.0; }
+ dropdown_menu = { opacity=1.0; }
+ utility = { shadow=false; opacity=1.0; }
+};
diff --git a/profile/airootfs/etc/skel/.config/rofi/config.rasi b/profile/airootfs/etc/skel/.config/rofi/config.rasi
new file mode 100644
index 00000000..67ce26f6
--- /dev/null
+++ b/profile/airootfs/etc/skel/.config/rofi/config.rasi
@@ -0,0 +1,183 @@
+/**
+ *
+ * Copyright (C) 2020-2022 Aditya Shakya
+ * Configuration For Rofi Version: 1.7.3
+ *
+ **/
+
+configuration {
+ /*---------- General setting ----------*/
+ modi: "drun,run,filebrowser,window";
+ case-sensitive: false;
+ cycle: true;
+ filter: "";
+ scroll-method: 0;
+ normalize-match: true;
+ show-icons: true;
+ icon-theme: "Zafiro";
+/* cache-dir: ;*/
+ steal-focus: false;
+/* dpi: -1;*/
+
+ /*---------- Matching setting ----------*/
+ matching: "normal";
+ tokenize: true;
+
+ /*---------- SSH settings ----------*/
+ ssh-client: "ssh";
+ ssh-command: "{terminal} -e {ssh-client} {host} [-p {port}]";
+ parse-hosts: true;
+ parse-known-hosts: true;
+
+ /*---------- Drun settings ----------*/
+ drun-categories: "";
+ drun-match-fields: "name,generic,exec,categories,keywords";
+ drun-display-format: "{name} [({generic})]";
+ drun-show-actions: false;
+ drun-url-launcher: "xdg-open";
+ drun-use-desktop-cache: false;
+ drun-reload-desktop-cache: false;
+ drun {
+ /** Parse user desktop files. */
+ parse-user: true;
+ /** Parse system desktop files. */
+ parse-system: true;
+ }
+
+ /*---------- Run settings ----------*/
+ run-command: "{cmd}";
+ run-list-command: "";
+ run-shell-command: "{terminal} -e {cmd}";
+
+ /*---------- Fallback Icon ----------*/
+ run {
+ fallback-icon: "application-x-addon";
+ }
+ drun {
+ fallback-icon: "application-x-addon";
+ }
+
+ /*---------- Window switcher settings ----------*/
+ window-match-fields: "title,class,role,name,desktop";
+ window-command: "wmctrl -i -R {window}";
+ window-format: "{w} - {c} - {t:0}";
+ window-thumbnail: false;
+
+ /*---------- Combi settings ----------*/
+/* combi-modi: "window,run";*/
+/* combi-hide-mode-prefix: false;*/
+/* combi-display-format: "{mode} {text}";*/
+
+ /*---------- History and Sorting ----------*/
+ disable-history: false;
+ sorting-method: "normal";
+ max-history-size: 25;
+
+ /*---------- Display setting ----------*/
+ display-window: "Windows";
+ display-windowcd: "Window CD";
+ display-run: "Run";
+ display-ssh: "SSH";
+ display-drun: "Apps";
+ display-combi: "Combi";
+ display-keys: "Keys";
+ display-filebrowser: "Files";
+
+ /*---------- Misc setting ----------*/
+ terminal: "rofi-sensible-terminal";
+ font: "Mono 12";
+ sort: false;
+ threads: 0;
+ click-to-exit: true;
+/* ignored-prefixes: "";*/
+/* pid: "/run/user/1000/rofi.pid";*/
+
+ /*---------- File browser settings ----------*/
+ filebrowser {
+/* directory: "/home";*/
+ directories-first: true;
+ sorting-method: "name";
+ }
+
+ /*---------- Other settings ----------*/
+ timeout {
+ action: "kb-cancel";
+ delay: 0;
+ }
+
+ /*---------- Keybindings ----------*/
+/*
+ kb-primary-paste: "Control+V,Shift+Insert";
+ kb-secondary-paste: "Control+v,Insert";
+ kb-clear-line: "Control+w";
+ kb-move-front: "Control+a";
+ kb-move-end: "Control+e";
+ kb-move-word-back: "Alt+b,Control+Left";
+ kb-move-word-forward: "Alt+f,Control+Right";
+ kb-move-char-back: "Left,Control+b";
+ kb-move-char-forward: "Right,Control+f";
+ kb-remove-word-back: "Control+Alt+h,Control+BackSpace";
+ kb-remove-word-forward: "Control+Alt+d";
+ kb-remove-char-forward: "Delete,Control+d";
+ kb-remove-char-back: "BackSpace,Shift+BackSpace,Control+h";
+ kb-remove-to-eol: "Control+k";
+ kb-remove-to-sol: "Control+u";
+ kb-accept-entry: "Control+j,Control+m,Return,KP_Enter";
+ kb-accept-custom: "Control+Return";
+ kb-accept-custom-alt: "Control+Shift+Return";
+ kb-accept-alt: "Shift+Return";
+ kb-delete-entry: "Shift+Delete";
+ kb-mode-next: "Shift+Right,Control+Tab";
+ kb-mode-previous: "Shift+Left,Control+ISO_Left_Tab";
+ kb-mode-complete: "Control+l";
+ kb-row-left: "Control+Page_Up";
+ kb-row-right: "Control+Page_Down";
+ kb-row-down: "Down,Control+n";
+ kb-page-prev: "Page_Up";
+ kb-page-next: "Page_Down";
+ kb-row-first: "Home,KP_Home";
+ kb-row-last: "End,KP_End";
+ kb-row-select: "Control+space";
+ kb-screenshot: "Alt+S";
+ kb-ellipsize: "Alt+period";
+ kb-toggle-case-sensitivity: "grave,dead_grave";
+ kb-toggle-sort: "Alt+grave";
+ kb-cancel: "Escape,Control+g,Control+bracketleft";
+ kb-custom-1: "Alt+1";
+ kb-custom-2: "Alt+2";
+ kb-custom-3: "Alt+3";
+ kb-custom-4: "Alt+4";
+ kb-custom-5: "Alt+5";
+ kb-custom-6: "Alt+6";
+ kb-custom-7: "Alt+7";
+ kb-custom-8: "Alt+8";
+ kb-custom-9: "Alt+9";
+ kb-custom-10: "Alt+0";
+ kb-custom-11: "Alt+exclam";
+ kb-custom-12: "Alt+at";
+ kb-custom-13: "Alt+numbersign";
+ kb-custom-14: "Alt+dollar";
+ kb-custom-15: "Alt+percent";
+ kb-custom-16: "Alt+dead_circumflex";
+ kb-custom-17: "Alt+ampersand";
+ kb-custom-18: "Alt+asterisk";
+ kb-custom-19: "Alt+parenleft";
+ kb-select-1: "Super+1";
+ kb-select-2: "Super+2";
+ kb-select-3: "Super+3";
+ kb-select-4: "Super+4";
+ kb-select-5: "Super+5";
+ kb-select-6: "Super+6";
+ kb-select-7: "Super+7";
+ kb-select-8: "Super+8";
+ kb-select-9: "Super+9";
+ kb-select-10: "Super+0";
+ ml-row-left: "ScrollLeft";
+ ml-row-right: "ScrollRight";
+ ml-row-up: "ScrollUp";
+ ml-row-down: "ScrollDown";
+ me-select-entry: "MousePrimary";
+ me-accept-entry: "MouseDPrimary";
+ me-accept-custom: "Control+MouseDPrimary";
+*/
+}
diff --git a/profile/airootfs/etc/skel/.config/xfce4/terminal/terminalrc b/profile/airootfs/etc/skel/.config/xfce4/terminal/terminalrc
new file mode 100644
index 00000000..ced0849a
--- /dev/null
+++ b/profile/airootfs/etc/skel/.config/xfce4/terminal/terminalrc
@@ -0,0 +1,38 @@
+## Copyright (C) 2020-2022 Aditya Shakya
+
+[Configuration]
+MiscAlwaysShowTabs=FALSE
+MiscBell=FALSE
+MiscBellUrgent=FALSE
+MiscBordersDefault=TRUE
+MiscCursorBlinks=TRUE
+MiscCursorShape=TERMINAL_CURSOR_SHAPE_BLOCK
+MiscDefaultGeometry=82x25
+MiscInheritGeometry=FALSE
+MiscMenubarDefault=FALSE
+MiscMouseAutohide=FALSE
+MiscMouseWheelZoom=TRUE
+MiscToolbarDefault=FALSE
+MiscConfirmClose=TRUE
+MiscCycleTabs=TRUE
+MiscTabCloseButtons=TRUE
+MiscTabCloseMiddleClick=TRUE
+MiscTabPosition=GTK_POS_TOP
+MiscHighlightUrls=TRUE
+MiscMiddleClickOpensUri=FALSE
+MiscCopyOnSelect=FALSE
+MiscShowRelaunchDialog=TRUE
+MiscRewrapOnResize=TRUE
+MiscUseShiftArrowsToScroll=FALSE
+MiscSlimTabs=TRUE
+MiscNewTabAdjacent=FALSE
+MiscSearchDialogOpacity=100
+MiscShowUnsafePasteDialog=TRUE
+ScrollingUnlimited=TRUE
+FontName=JetBrainsMono Nerd Font 10
+ScrollingBar=TERMINAL_SCROLLBAR_NONE
+ColorForeground=#ababb2b2bfbf
+ColorBackground=#1e1e21212828
+ColorCursor=#ababb2b2bfbf
+ColorBoldUseDefault=FALSE
+ColorPalette=#323236363d3d;#e0e06b6b7474;#9898c3c37979;#e5e5c0c07a7a;#6262aeaeefef;#c7c77878dddd;#5555b6b6c2c2;#ababb2b2bfbf;#505054545b5b;#eaea75757e7e;#a2a2cdcd8383;#efefcaca8484;#6c6cb8b8f9f9;#d2d28282e7e7;#5f5fc0c0cccc;#b5b5bcbcc9c9
diff --git a/profile/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/thunar.xml b/profile/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/thunar.xml
new file mode 100644
index 00000000..6d3f8981
--- /dev/null
+++ b/profile/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/thunar.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/profile/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml b/profile/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml
new file mode 100644
index 00000000..163f9913
--- /dev/null
+++ b/profile/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml
@@ -0,0 +1,149 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/profile/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-power-manager.xml b/profile/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-power-manager.xml
new file mode 100644
index 00000000..044b9edb
--- /dev/null
+++ b/profile/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-power-manager.xml
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/profile/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml b/profile/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml
new file mode 100644
index 00000000..d92641e0
--- /dev/null
+++ b/profile/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml
@@ -0,0 +1,46 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/profile/airootfs/etc/skel/.dmrc b/profile/airootfs/etc/skel/.dmrc
new file mode 100644
index 00000000..34afa532
--- /dev/null
+++ b/profile/airootfs/etc/skel/.dmrc
@@ -0,0 +1,3 @@
+[Desktop]
+## Set Default Session
+Session=openbox
diff --git a/profile/airootfs/etc/skel/.face b/profile/airootfs/etc/skel/.face
new file mode 100644
index 00000000..f91a97ea
Binary files /dev/null and b/profile/airootfs/etc/skel/.face differ
diff --git a/profile/airootfs/etc/skel/.gtkrc-2.0 b/profile/airootfs/etc/skel/.gtkrc-2.0
new file mode 100644
index 00000000..d4bc0c5a
--- /dev/null
+++ b/profile/airootfs/etc/skel/.gtkrc-2.0
@@ -0,0 +1,15 @@
+gtk-theme-name="Arc-Dark"
+gtk-icon-theme-name="Arc-Circle"
+gtk-font-name="Noto Sans 9"
+gtk-cursor-theme-name="Qogirr"
+gtk-cursor-theme-size=0
+gtk-toolbar-style=GTK_TOOLBAR_ICONS
+gtk-toolbar-icon-size=GTK_ICON_SIZE_LARGE_TOOLBAR
+gtk-button-images=0
+gtk-menu-images=1
+gtk-enable-event-sounds=0
+gtk-enable-input-feedback-sounds=0
+gtk-xft-antialias=1
+gtk-xft-hinting=1
+gtk-xft-hintstyle="hintslight"
+gtk-xft-rgba="rgb"
diff --git a/profile/airootfs/etc/skel/.hushlogin b/profile/airootfs/etc/skel/.hushlogin
new file mode 100644
index 00000000..e69de29b
diff --git a/profile/airootfs/etc/skel/.icons/default/index.theme b/profile/airootfs/etc/skel/.icons/default/index.theme
new file mode 100644
index 00000000..d7feea70
--- /dev/null
+++ b/profile/airootfs/etc/skel/.icons/default/index.theme
@@ -0,0 +1,2 @@
+[Icon Theme]
+Inherits=Qogirr
diff --git a/profile/airootfs/etc/skel/Pictures/wallpapers/wallpaper_1.jpg b/profile/airootfs/etc/skel/Pictures/wallpapers/wallpaper_1.jpg
new file mode 100644
index 00000000..29485b81
Binary files /dev/null and b/profile/airootfs/etc/skel/Pictures/wallpapers/wallpaper_1.jpg differ
diff --git a/profile/airootfs/etc/skel/Pictures/wallpapers/wallpaper_2.jpg b/profile/airootfs/etc/skel/Pictures/wallpapers/wallpaper_2.jpg
new file mode 100644
index 00000000..2d35a52e
Binary files /dev/null and b/profile/airootfs/etc/skel/Pictures/wallpapers/wallpaper_2.jpg differ
diff --git a/profile/airootfs/etc/skel/Pictures/wallpapers/wallpaper_3.jpg b/profile/airootfs/etc/skel/Pictures/wallpapers/wallpaper_3.jpg
new file mode 100644
index 00000000..dcd0d6ae
Binary files /dev/null and b/profile/airootfs/etc/skel/Pictures/wallpapers/wallpaper_3.jpg differ
diff --git a/profile/airootfs/etc/skel/Pictures/wallpapers/wallpaper_4.jpg b/profile/airootfs/etc/skel/Pictures/wallpapers/wallpaper_4.jpg
new file mode 100644
index 00000000..2be21572
Binary files /dev/null and b/profile/airootfs/etc/skel/Pictures/wallpapers/wallpaper_4.jpg differ
diff --git a/profile/airootfs/etc/skel/Pictures/wallpapers/wallpaper_5.jpg b/profile/airootfs/etc/skel/Pictures/wallpapers/wallpaper_5.jpg
new file mode 100644
index 00000000..17633991
Binary files /dev/null and b/profile/airootfs/etc/skel/Pictures/wallpapers/wallpaper_5.jpg differ
diff --git a/airootfs/etc/ssh/sshd_config b/profile/airootfs/etc/ssh/sshd_config
similarity index 100%
rename from airootfs/etc/ssh/sshd_config
rename to profile/airootfs/etc/ssh/sshd_config
diff --git a/airootfs/etc/sudoers.d/01_pw_feedback b/profile/airootfs/etc/sudoers.d/01_pw_feedback
similarity index 100%
rename from airootfs/etc/sudoers.d/01_pw_feedback
rename to profile/airootfs/etc/sudoers.d/01_pw_feedback
diff --git a/airootfs/etc/sudoers.d/02_g_wheel b/profile/airootfs/etc/sudoers.d/02_g_wheel
similarity index 100%
rename from airootfs/etc/sudoers.d/02_g_wheel
rename to profile/airootfs/etc/sudoers.d/02_g_wheel
diff --git a/airootfs/etc/systemd/journald.conf.d/volatile-storage.conf b/profile/airootfs/etc/systemd/journald.conf.d/volatile-storage.conf
similarity index 100%
rename from airootfs/etc/systemd/journald.conf.d/volatile-storage.conf
rename to profile/airootfs/etc/systemd/journald.conf.d/volatile-storage.conf
diff --git a/airootfs/etc/systemd/logind.conf.d/do-not-suspend.conf b/profile/airootfs/etc/systemd/logind.conf.d/do-not-suspend.conf
similarity index 100%
rename from airootfs/etc/systemd/logind.conf.d/do-not-suspend.conf
rename to profile/airootfs/etc/systemd/logind.conf.d/do-not-suspend.conf
diff --git a/airootfs/etc/systemd/network/20-ethernet.network b/profile/airootfs/etc/systemd/network/20-ethernet.network
similarity index 100%
rename from airootfs/etc/systemd/network/20-ethernet.network
rename to profile/airootfs/etc/systemd/network/20-ethernet.network
diff --git a/airootfs/etc/systemd/network/20-wlan.network b/profile/airootfs/etc/systemd/network/20-wlan.network
similarity index 100%
rename from airootfs/etc/systemd/network/20-wlan.network
rename to profile/airootfs/etc/systemd/network/20-wlan.network
diff --git a/airootfs/etc/systemd/network/20-wwan.network b/profile/airootfs/etc/systemd/network/20-wwan.network
similarity index 100%
rename from airootfs/etc/systemd/network/20-wwan.network
rename to profile/airootfs/etc/systemd/network/20-wwan.network
diff --git a/airootfs/etc/systemd/system-generators/systemd-gpt-auto-generator b/profile/airootfs/etc/systemd/system-generators/systemd-gpt-auto-generator
similarity index 100%
rename from airootfs/etc/systemd/system-generators/systemd-gpt-auto-generator
rename to profile/airootfs/etc/systemd/system-generators/systemd-gpt-auto-generator
diff --git a/airootfs/etc/systemd/system/bluetooth.target.wants/bluetooth.service b/profile/airootfs/etc/systemd/system/bluetooth.target.wants/bluetooth.service
similarity index 100%
rename from airootfs/etc/systemd/system/bluetooth.target.wants/bluetooth.service
rename to profile/airootfs/etc/systemd/system/bluetooth.target.wants/bluetooth.service
diff --git a/airootfs/etc/systemd/system/choose-mirror.service b/profile/airootfs/etc/systemd/system/choose-mirror.service
similarity index 100%
rename from airootfs/etc/systemd/system/choose-mirror.service
rename to profile/airootfs/etc/systemd/system/choose-mirror.service
diff --git a/airootfs/etc/systemd/system/cloud-init.target.wants/cloud-config.service b/profile/airootfs/etc/systemd/system/cloud-init.target.wants/cloud-config.service
similarity index 100%
rename from airootfs/etc/systemd/system/cloud-init.target.wants/cloud-config.service
rename to profile/airootfs/etc/systemd/system/cloud-init.target.wants/cloud-config.service
diff --git a/airootfs/etc/systemd/system/cloud-init.target.wants/cloud-final.service b/profile/airootfs/etc/systemd/system/cloud-init.target.wants/cloud-final.service
similarity index 100%
rename from airootfs/etc/systemd/system/cloud-init.target.wants/cloud-final.service
rename to profile/airootfs/etc/systemd/system/cloud-init.target.wants/cloud-final.service
diff --git a/airootfs/etc/systemd/system/cloud-init.target.wants/cloud-init-local.service b/profile/airootfs/etc/systemd/system/cloud-init.target.wants/cloud-init-local.service
similarity index 100%
rename from airootfs/etc/systemd/system/cloud-init.target.wants/cloud-init-local.service
rename to profile/airootfs/etc/systemd/system/cloud-init.target.wants/cloud-init-local.service
diff --git a/airootfs/etc/systemd/system/cloud-init.target.wants/cloud-init.service b/profile/airootfs/etc/systemd/system/cloud-init.target.wants/cloud-init.service
similarity index 100%
rename from airootfs/etc/systemd/system/cloud-init.target.wants/cloud-init.service
rename to profile/airootfs/etc/systemd/system/cloud-init.target.wants/cloud-init.service
diff --git a/airootfs/etc/systemd/system/dbus-org.bluez.service b/profile/airootfs/etc/systemd/system/dbus-org.bluez.service
similarity index 100%
rename from airootfs/etc/systemd/system/dbus-org.bluez.service
rename to profile/airootfs/etc/systemd/system/dbus-org.bluez.service
diff --git a/airootfs/etc/systemd/system/dbus-org.freedesktop.ModemManager1.service b/profile/airootfs/etc/systemd/system/dbus-org.freedesktop.ModemManager1.service
similarity index 100%
rename from airootfs/etc/systemd/system/dbus-org.freedesktop.ModemManager1.service
rename to profile/airootfs/etc/systemd/system/dbus-org.freedesktop.ModemManager1.service
diff --git a/airootfs/etc/systemd/system/dbus-org.freedesktop.nm-dispatcher.service b/profile/airootfs/etc/systemd/system/dbus-org.freedesktop.nm-dispatcher.service
similarity index 100%
rename from airootfs/etc/systemd/system/dbus-org.freedesktop.nm-dispatcher.service
rename to profile/airootfs/etc/systemd/system/dbus-org.freedesktop.nm-dispatcher.service
diff --git a/airootfs/etc/systemd/system/dbus-org.freedesktop.resolve1.service b/profile/airootfs/etc/systemd/system/dbus-org.freedesktop.resolve1.service
similarity index 100%
rename from airootfs/etc/systemd/system/dbus-org.freedesktop.resolve1.service
rename to profile/airootfs/etc/systemd/system/dbus-org.freedesktop.resolve1.service
diff --git a/airootfs/etc/systemd/system/default.target b/profile/airootfs/etc/systemd/system/default.target
similarity index 100%
rename from airootfs/etc/systemd/system/default.target
rename to profile/airootfs/etc/systemd/system/default.target
diff --git a/airootfs/etc/systemd/system/display-manager.service b/profile/airootfs/etc/systemd/system/display-manager.service
similarity index 100%
rename from airootfs/etc/systemd/system/display-manager.service
rename to profile/airootfs/etc/systemd/system/display-manager.service
diff --git a/airootfs/etc/systemd/system/etc-pacman.d-gnupg.mount b/profile/airootfs/etc/systemd/system/etc-pacman.d-gnupg.mount
similarity index 100%
rename from airootfs/etc/systemd/system/etc-pacman.d-gnupg.mount
rename to profile/airootfs/etc/systemd/system/etc-pacman.d-gnupg.mount
diff --git a/airootfs/etc/systemd/system/multi-user.target.wants/ModemManager.service b/profile/airootfs/etc/systemd/system/multi-user.target.wants/ModemManager.service
similarity index 100%
rename from airootfs/etc/systemd/system/multi-user.target.wants/ModemManager.service
rename to profile/airootfs/etc/systemd/system/multi-user.target.wants/ModemManager.service
diff --git a/airootfs/etc/systemd/system/multi-user.target.wants/NetworkManager.service b/profile/airootfs/etc/systemd/system/multi-user.target.wants/NetworkManager.service
similarity index 100%
rename from airootfs/etc/systemd/system/multi-user.target.wants/NetworkManager.service
rename to profile/airootfs/etc/systemd/system/multi-user.target.wants/NetworkManager.service
diff --git a/airootfs/etc/systemd/system/multi-user.target.wants/choose-mirror.service b/profile/airootfs/etc/systemd/system/multi-user.target.wants/choose-mirror.service
similarity index 100%
rename from airootfs/etc/systemd/system/multi-user.target.wants/choose-mirror.service
rename to profile/airootfs/etc/systemd/system/multi-user.target.wants/choose-mirror.service
diff --git a/airootfs/etc/systemd/system/multi-user.target.wants/hv_fcopy_daemon.service b/profile/airootfs/etc/systemd/system/multi-user.target.wants/hv_fcopy_daemon.service
similarity index 100%
rename from airootfs/etc/systemd/system/multi-user.target.wants/hv_fcopy_daemon.service
rename to profile/airootfs/etc/systemd/system/multi-user.target.wants/hv_fcopy_daemon.service
diff --git a/airootfs/etc/systemd/system/multi-user.target.wants/hv_kvp_daemon.service b/profile/airootfs/etc/systemd/system/multi-user.target.wants/hv_kvp_daemon.service
similarity index 100%
rename from airootfs/etc/systemd/system/multi-user.target.wants/hv_kvp_daemon.service
rename to profile/airootfs/etc/systemd/system/multi-user.target.wants/hv_kvp_daemon.service
diff --git a/airootfs/etc/systemd/system/multi-user.target.wants/hv_vss_daemon.service b/profile/airootfs/etc/systemd/system/multi-user.target.wants/hv_vss_daemon.service
similarity index 100%
rename from airootfs/etc/systemd/system/multi-user.target.wants/hv_vss_daemon.service
rename to profile/airootfs/etc/systemd/system/multi-user.target.wants/hv_vss_daemon.service
diff --git a/airootfs/etc/systemd/system/multi-user.target.wants/pacman-init.service b/profile/airootfs/etc/systemd/system/multi-user.target.wants/pacman-init.service
similarity index 100%
rename from airootfs/etc/systemd/system/multi-user.target.wants/pacman-init.service
rename to profile/airootfs/etc/systemd/system/multi-user.target.wants/pacman-init.service
diff --git a/airootfs/etc/systemd/system/multi-user.target.wants/qemu-guest-agent.service b/profile/airootfs/etc/systemd/system/multi-user.target.wants/qemu-guest-agent.service
similarity index 100%
rename from airootfs/etc/systemd/system/multi-user.target.wants/qemu-guest-agent.service
rename to profile/airootfs/etc/systemd/system/multi-user.target.wants/qemu-guest-agent.service
diff --git a/airootfs/etc/systemd/system/multi-user.target.wants/reflector.service b/profile/airootfs/etc/systemd/system/multi-user.target.wants/reflector.service
similarity index 100%
rename from airootfs/etc/systemd/system/multi-user.target.wants/reflector.service
rename to profile/airootfs/etc/systemd/system/multi-user.target.wants/reflector.service
diff --git a/airootfs/etc/systemd/system/multi-user.target.wants/sshd.service b/profile/airootfs/etc/systemd/system/multi-user.target.wants/sshd.service
similarity index 100%
rename from airootfs/etc/systemd/system/multi-user.target.wants/sshd.service
rename to profile/airootfs/etc/systemd/system/multi-user.target.wants/sshd.service
diff --git a/airootfs/etc/systemd/system/multi-user.target.wants/systemd-resolved.service b/profile/airootfs/etc/systemd/system/multi-user.target.wants/systemd-resolved.service
similarity index 100%
rename from airootfs/etc/systemd/system/multi-user.target.wants/systemd-resolved.service
rename to profile/airootfs/etc/systemd/system/multi-user.target.wants/systemd-resolved.service
diff --git a/airootfs/etc/systemd/system/multi-user.target.wants/vboxservice.service b/profile/airootfs/etc/systemd/system/multi-user.target.wants/vboxservice.service
similarity index 100%
rename from airootfs/etc/systemd/system/multi-user.target.wants/vboxservice.service
rename to profile/airootfs/etc/systemd/system/multi-user.target.wants/vboxservice.service
diff --git a/airootfs/etc/systemd/system/multi-user.target.wants/vmtoolsd.service b/profile/airootfs/etc/systemd/system/multi-user.target.wants/vmtoolsd.service
similarity index 100%
rename from airootfs/etc/systemd/system/multi-user.target.wants/vmtoolsd.service
rename to profile/airootfs/etc/systemd/system/multi-user.target.wants/vmtoolsd.service
diff --git a/airootfs/etc/systemd/system/multi-user.target.wants/vmware-vmblock-fuse.service b/profile/airootfs/etc/systemd/system/multi-user.target.wants/vmware-vmblock-fuse.service
similarity index 100%
rename from airootfs/etc/systemd/system/multi-user.target.wants/vmware-vmblock-fuse.service
rename to profile/airootfs/etc/systemd/system/multi-user.target.wants/vmware-vmblock-fuse.service
diff --git a/airootfs/etc/systemd/system/multi-user.target.wants/wpa_supplicant.service b/profile/airootfs/etc/systemd/system/multi-user.target.wants/wpa_supplicant.service
similarity index 100%
rename from airootfs/etc/systemd/system/multi-user.target.wants/wpa_supplicant.service
rename to profile/airootfs/etc/systemd/system/multi-user.target.wants/wpa_supplicant.service
diff --git a/airootfs/etc/systemd/system/network-online.target.wants/NetworkManager-wait-online.service b/profile/airootfs/etc/systemd/system/network-online.target.wants/NetworkManager-wait-online.service
similarity index 100%
rename from airootfs/etc/systemd/system/network-online.target.wants/NetworkManager-wait-online.service
rename to profile/airootfs/etc/systemd/system/network-online.target.wants/NetworkManager-wait-online.service
diff --git a/airootfs/etc/systemd/system/pacman-init.service b/profile/airootfs/etc/systemd/system/pacman-init.service
similarity index 100%
rename from airootfs/etc/systemd/system/pacman-init.service
rename to profile/airootfs/etc/systemd/system/pacman-init.service
diff --git a/airootfs/etc/systemd/system/reflector.service.d/archiso.conf b/profile/airootfs/etc/systemd/system/reflector.service.d/archiso.conf
similarity index 100%
rename from airootfs/etc/systemd/system/reflector.service.d/archiso.conf
rename to profile/airootfs/etc/systemd/system/reflector.service.d/archiso.conf
diff --git a/profile/airootfs/etc/systemd/system/sockets.target.wants/cups.socket b/profile/airootfs/etc/systemd/system/sockets.target.wants/cups.socket
new file mode 120000
index 00000000..8015ac29
--- /dev/null
+++ b/profile/airootfs/etc/systemd/system/sockets.target.wants/cups.socket
@@ -0,0 +1 @@
+/usr/lib/systemd/system/cups.socket
\ No newline at end of file
diff --git a/airootfs/etc/udev/rules.d/70-backlight.rules b/profile/airootfs/etc/udev/rules.d/70-backlight.rules
similarity index 100%
rename from airootfs/etc/udev/rules.d/70-backlight.rules
rename to profile/airootfs/etc/udev/rules.d/70-backlight.rules
diff --git a/airootfs/etc/vconsole.conf b/profile/airootfs/etc/vconsole.conf
similarity index 100%
rename from airootfs/etc/vconsole.conf
rename to profile/airootfs/etc/vconsole.conf
diff --git a/airootfs/etc/xdg/reflector/reflector.conf b/profile/airootfs/etc/xdg/reflector/reflector.conf
similarity index 100%
rename from airootfs/etc/xdg/reflector/reflector.conf
rename to profile/airootfs/etc/xdg/reflector/reflector.conf
diff --git a/airootfs/root/.automated_script.sh b/profile/airootfs/root/.automated_script.sh
similarity index 100%
rename from airootfs/root/.automated_script.sh
rename to profile/airootfs/root/.automated_script.sh
diff --git a/airootfs/root/.zlogin b/profile/airootfs/root/.zlogin
similarity index 100%
rename from airootfs/root/.zlogin
rename to profile/airootfs/root/.zlogin
diff --git a/airootfs/root/customize_airootfs.sh b/profile/airootfs/root/customize_airootfs.sh
similarity index 84%
rename from airootfs/root/customize_airootfs.sh
rename to profile/airootfs/root/customize_airootfs.sh
index 0199d11b..b9ea5916 100755
--- a/airootfs/root/customize_airootfs.sh
+++ b/profile/airootfs/root/customize_airootfs.sh
@@ -27,7 +27,7 @@ _EOF_
## -------------------------------------------------------------- ##
## Enable Parallel Downloads
-sed -i -e 's|#ParallelDownloads.*|ParallelDownloads = 6|g' /etc/pacman.conf
+sed -i -e 's|#ParallelDownloads.*|ParallelDownloads = 5|g' /etc/pacman.conf
sed -i -e '/#\[testing\]/Q' /etc/pacman.conf
## Append archcraft repository to pacman.conf
@@ -57,11 +57,8 @@ cat >> "/etc/pacman.conf" <<- EOL
#[multilib-testing]
#Include = /etc/pacman.d/mirrorlist
- [multilib]
- Include = /etc/pacman.d/mirrorlist
-
- [chaotic-aur]
- Include = /etc/pacman.d/chaotic-mirrorlist
+ #[multilib]
+ #Include = /etc/pacman.d/mirrorlist
# An example of a custom package repository. See the pacman manpage for
# tips on creating your own repositories.
@@ -70,11 +67,6 @@ cat >> "/etc/pacman.conf" <<- EOL
#Server = file:///home/custompkgs
EOL
-## Enable Chaotic AUR
-pacman-key --init
-pacman-key --recv-key FBA220DFC880C036 --keyserver keyserver.ubuntu.com
-pacman-key --lsign-key FBA220DFC880C036
-
## -------------------------------------------------------------- ##
## Set zsh as default shell for new user
@@ -120,11 +112,11 @@ cat >> "/etc/skel/.config/bspwm/bspwmrc" <<- EOL
sed -i -e '/## Help-App-Run-Once/Q' "\$HOME"/.config/bspwm/bspwmrc
EOL
+
## -------------------------------------------------------------- ##
-## Set `Qogirr` as default cursor theme
-sed -i -e 's|Inherits=.*|Inherits=Qogirr|g' /usr/share/icons/default/index.theme
-mkdir -p /etc/skel/.icons && cp -rf /usr/share/icons/default /etc/skel/.icons/default
+## Fix cursor theme
+rm -rf /usr/share/icons/default
## Update xdg-user-dirs for bookmarks in thunar and pcmanfm
runuser -l liveuser -c 'xdg-user-dirs-update'
@@ -140,18 +132,13 @@ fi
## -------------------------------------------------------------- ##
-## Fix locale issue for calamares (glibc 2.36-4)
-mv /usr/share/i18n/SUPPORTED /usr/share/i18n/SUPPORTED.backup
-
-## -------------------------------------------------------------- ##
-
## Hide Unnecessary Apps
adir="/usr/share/applications"
apps=(avahi-discover.desktop bssh.desktop bvnc.desktop echomixer.desktop \
envy24control.desktop exo-preferred-applications.desktop feh.desktop \
hdajackretask.desktop hdspconf.desktop hdspmixer.desktop hwmixvolume.desktop lftp.desktop \
libfm-pref-apps.desktop lxshortcut.desktop lstopo.desktop \
- networkmanager_dmenu.desktop pcmanfm-desktop-pref.desktop \
+ networkmanager_dmenu.desktop nm-connection-editor.desktop pcmanfm-desktop-pref.desktop \
qv4l2.desktop qvidcap.desktop stoken-gui.desktop stoken-gui-small.desktop thunar-bulk-rename.desktop \
thunar-settings.desktop thunar-volman-settings.desktop yad-icon-browser.desktop)
diff --git a/airootfs/usr/local/bin/choose-mirror b/profile/airootfs/usr/local/bin/choose-mirror
similarity index 100%
rename from airootfs/usr/local/bin/choose-mirror
rename to profile/airootfs/usr/local/bin/choose-mirror
diff --git a/profile/airootfs/usr/local/bin/xflock4 b/profile/airootfs/usr/local/bin/xflock4
new file mode 100755
index 00000000..59868c14
--- /dev/null
+++ b/profile/airootfs/usr/local/bin/xflock4
@@ -0,0 +1,7 @@
+#!/usr/bin/bash
+
+## Copyright (C) 2020-2022 Aditya Shakya
+
+## Script to Lock the session by xfce-power-manager
+
+betterlockscreen --lock
diff --git a/airootfs/var/lib/sddm/state.conf b/profile/airootfs/var/lib/sddm/state.conf
similarity index 100%
rename from airootfs/var/lib/sddm/state.conf
rename to profile/airootfs/var/lib/sddm/state.conf
diff --git a/bootstrap_packages.x86_64 b/profile/bootstrap_packages.x86_64
similarity index 100%
rename from bootstrap_packages.x86_64
rename to profile/bootstrap_packages.x86_64
diff --git a/efiboot/loader/entries/01-archcraftiso-x86_64-linux.conf b/profile/efiboot/loader/entries/01-archcraftiso-x86_64-linux.conf
similarity index 81%
rename from efiboot/loader/entries/01-archcraftiso-x86_64-linux.conf
rename to profile/efiboot/loader/entries/01-archcraftiso-x86_64-linux.conf
index fea2d724..c78db77f 100644
--- a/efiboot/loader/entries/01-archcraftiso-x86_64-linux.conf
+++ b/profile/efiboot/loader/entries/01-archcraftiso-x86_64-linux.conf
@@ -1,7 +1,7 @@
-title Boot Archcraft (64bit, UEFI)
+title Boot Archcraft (x86_64, UEFI)
sort-key 01
linux /%INSTALL_DIR%/boot/x86_64/vmlinuz-linux
initrd /%INSTALL_DIR%/boot/intel-ucode.img
initrd /%INSTALL_DIR%/boot/amd-ucode.img
initrd /%INSTALL_DIR%/boot/x86_64/initramfs-linux.img
-options archisobasedir=%INSTALL_DIR% archisolabel=%ARCHISO_LABEL% quiet splash loglevel=3 udev.log_level=3 vt.global_cursor_default=0 cow_spacesize=5G
+options archisobasedir=%INSTALL_DIR% archisolabel=%ARCHISO_LABEL% quiet splash loglevel=3 udev.log_level=3 vt.global_cursor_default=0 cow_spacesize=5G copytoram=n
diff --git a/efiboot/loader/entries/02-archcraftiso-x86_64-ram-linux.conf b/profile/efiboot/loader/entries/02-archcraftiso-x86_64-linux-open-source.conf
similarity index 54%
rename from efiboot/loader/entries/02-archcraftiso-x86_64-ram-linux.conf
rename to profile/efiboot/loader/entries/02-archcraftiso-x86_64-linux-open-source.conf
index 68ec80e1..6f1b1ace 100644
--- a/efiboot/loader/entries/02-archcraftiso-x86_64-ram-linux.conf
+++ b/profile/efiboot/loader/entries/02-archcraftiso-x86_64-linux-open-source.conf
@@ -1,7 +1,7 @@
-title Boot Archcraft (64bit, UEFI, Copy to RAM)
+title Boot Archcraft (x86_64, UEFI, open source)
sort-key 02
linux /%INSTALL_DIR%/boot/x86_64/vmlinuz-linux
initrd /%INSTALL_DIR%/boot/intel-ucode.img
initrd /%INSTALL_DIR%/boot/amd-ucode.img
initrd /%INSTALL_DIR%/boot/x86_64/initramfs-linux.img
-options archisobasedir=%INSTALL_DIR% archisolabel=%ARCHISO_LABEL% copytoram quiet splash loglevel=3 udev.log_level=3 vt.global_cursor_default=0 cow_spacesize=1G
+options archisobasedir=%INSTALL_DIR% archisolabel=%ARCHISO_LABEL% quiet splash loglevel=3 udev.log_level=3 vt.global_cursor_default=0 cow_spacesize=5G copytoram=n driver=free nouveau.modeset=1 radeon.modeset=1 i915.modeset=1 nvme_load=yes
diff --git a/efiboot/loader/entries/03-archcraftiso-x86_64-nvidia-linux.conf b/profile/efiboot/loader/entries/03-archcraftiso-x86_64-linux-no-nouveau.conf
similarity index 66%
rename from efiboot/loader/entries/03-archcraftiso-x86_64-nvidia-linux.conf
rename to profile/efiboot/loader/entries/03-archcraftiso-x86_64-linux-no-nouveau.conf
index 15bb0252..4ccaf78d 100644
--- a/efiboot/loader/entries/03-archcraftiso-x86_64-nvidia-linux.conf
+++ b/profile/efiboot/loader/entries/03-archcraftiso-x86_64-linux-no-nouveau.conf
@@ -1,7 +1,7 @@
-title Boot Archcraft (64bit, UEFI, NVIDIA)
+title Boot Archcraft (x86_64, UEFI, open source, no nouveau)
sort-key 03
linux /%INSTALL_DIR%/boot/x86_64/vmlinuz-linux
initrd /%INSTALL_DIR%/boot/intel-ucode.img
initrd /%INSTALL_DIR%/boot/amd-ucode.img
initrd /%INSTALL_DIR%/boot/x86_64/initramfs-linux.img
-options archisobasedir=%INSTALL_DIR% archisolabel=%ARCHISO_LABEL% quiet splash loglevel=3 udev.log_level=3 vt.global_cursor_default=0 cow_spacesize=5G nouveau.modeset=0 modprobe.blacklist=nouveau nvidia i915.modeset=1 radeon.modeset=1
+options archisobasedir=%INSTALL_DIR% archisolabel=%ARCHISO_LABEL% quiet splash loglevel=3 udev.log_level=3 vt.global_cursor_default=0 cow_spacesize=5G copytoram=n driver=freenonouveau radeon.modeset=1 i915.modeset=1 nvme_load=yes
diff --git a/profile/efiboot/loader/entries/04-archcraftiso-x86_64-linux-nvidia-nouveau.conf b/profile/efiboot/loader/entries/04-archcraftiso-x86_64-linux-nvidia-nouveau.conf
new file mode 100644
index 00000000..b76e3725
--- /dev/null
+++ b/profile/efiboot/loader/entries/04-archcraftiso-x86_64-linux-nvidia-nouveau.conf
@@ -0,0 +1,7 @@
+title Boot Archcraft (x86_64, UEFI, NVIDIA)
+sort-key 04
+linux /%INSTALL_DIR%/boot/x86_64/vmlinuz-linux
+initrd /%INSTALL_DIR%/boot/intel-ucode.img
+initrd /%INSTALL_DIR%/boot/amd-ucode.img
+initrd /%INSTALL_DIR%/boot/x86_64/initramfs-linux.img
+options archisobasedir=%INSTALL_DIR% archisolabel=%ARCHISO_LABEL% quiet splash loglevel=3 udev.log_level=3 vt.global_cursor_default=0 cow_spacesize=5G copytoram=n driver=nonfree nouveau.modeset=0 radeon.modeset=1 i915.modeset=1 nvme_load=yes
diff --git a/profile/efiboot/loader/entries/05-archcraftiso-x86_64-linux-nvidia-no-nouveau.conf b/profile/efiboot/loader/entries/05-archcraftiso-x86_64-linux-nvidia-no-nouveau.conf
new file mode 100644
index 00000000..bdaf2656
--- /dev/null
+++ b/profile/efiboot/loader/entries/05-archcraftiso-x86_64-linux-nvidia-no-nouveau.conf
@@ -0,0 +1,7 @@
+title Boot Archcraft (x86_64, UEFI, NVIDIA, no nouveau)
+sort-key 05
+linux /%INSTALL_DIR%/boot/x86_64/vmlinuz-linux
+initrd /%INSTALL_DIR%/boot/intel-ucode.img
+initrd /%INSTALL_DIR%/boot/amd-ucode.img
+initrd /%INSTALL_DIR%/boot/x86_64/initramfs-linux.img
+options archisobasedir=%INSTALL_DIR% archisolabel=%ARCHISO_LABEL% quiet splash loglevel=3 udev.log_level=3 vt.global_cursor_default=0 cow_spacesize=5G copytoram=n driver=nonfreenonouveau nouveau.modeset=0 radeon.modeset=1 i915.modeset=1 nvme_load=yes
diff --git a/profile/efiboot/loader/entries/06-archcraftiso-x86_64-linux-nomodeset.conf b/profile/efiboot/loader/entries/06-archcraftiso-x86_64-linux-nomodeset.conf
new file mode 100644
index 00000000..9ba261e4
--- /dev/null
+++ b/profile/efiboot/loader/entries/06-archcraftiso-x86_64-linux-nomodeset.conf
@@ -0,0 +1,7 @@
+title Boot Archcraft (x86_64, UEFI, nomodeset)
+sort-key 06
+linux /%INSTALL_DIR%/boot/x86_64/vmlinuz-linux
+initrd /%INSTALL_DIR%/boot/intel-ucode.img
+initrd /%INSTALL_DIR%/boot/amd-ucode.img
+initrd /%INSTALL_DIR%/boot/x86_64/initramfs-linux.img
+options archisobasedir=%INSTALL_DIR% archisolabel=%ARCHISO_LABEL% quiet splash loglevel=3 udev.log_level=3 vt.global_cursor_default=0 cow_spacesize=5G copytoram=n driver=free nomodeset nouveau.modeset=0 radeon.modeset=0 i915.modeset=0 nvme_load=yes
diff --git a/efiboot/loader/loader.conf b/profile/efiboot/loader/loader.conf
similarity index 100%
rename from efiboot/loader/loader.conf
rename to profile/efiboot/loader/loader.conf
diff --git a/profile/grub/grub.cfg b/profile/grub/grub.cfg
new file mode 100644
index 00000000..525aad17
--- /dev/null
+++ b/profile/grub/grub.cfg
@@ -0,0 +1,97 @@
+# Load partition table and file system modules
+insmod part_gpt
+insmod part_msdos
+insmod fat
+insmod iso9660
+
+# Use graphics-mode output
+insmod all_video
+insmod font
+if loadfont "${prefix}/fonts/unicode.pf2" ; then
+ insmod gfxterm
+ set gfxmode="auto"
+ terminal_input console
+ terminal_output gfxterm
+fi
+
+# Enable serial console
+if serial --unit=0 --speed=115200; then
+ terminal_input --append serial
+ terminal_output --append serial
+fi
+
+# Set default menu entry
+default=archcraft
+timeout=10
+timeout_style=menu
+
+# Menu entries
+menuentry "Boot Archcraft (x86_64, UEFI)" --class archcraft --class arch --class gnu-linux --class gnu --class os --id 'archcraft' {
+ set gfxpayload=keep
+ search --no-floppy --set=root --label %ARCHISO_LABEL%
+ linux /%INSTALL_DIR%/boot/x86_64/vmlinuz-linux archisobasedir=%INSTALL_DIR% archisolabel=%ARCHISO_LABEL% quiet splash loglevel=3 udev.log_level=3 vt.global_cursor_default=0 cow_spacesize=5G copytoram=n
+ initrd /%INSTALL_DIR%/boot/intel-ucode.img /%INSTALL_DIR%/boot/amd-ucode.img /%INSTALL_DIR%/boot/x86_64/initramfs-linux.img
+}
+
+menuentry "Boot Archcraft (x86_64, UEFI, open source)" --class archcraft --class arch --class gnu-linux --class gnu --class os --id 'archcraftos' {
+ set gfxpayload=keep
+ search --no-floppy --set=root --label %ARCHISO_LABEL%
+ linux /%INSTALL_DIR%/boot/x86_64/vmlinuz-linux archisobasedir=%INSTALL_DIR% archisolabel=%ARCHISO_LABEL% quiet splash loglevel=3 udev.log_level=3 vt.global_cursor_default=0 cow_spacesize=5G copytoram=n driver=free nouveau.modeset=1 radeon.modeset=1 i915.modeset=1 nvme_load=yes
+ initrd /%INSTALL_DIR%/boot/intel-ucode.img /%INSTALL_DIR%/boot/amd-ucode.img /%INSTALL_DIR%/boot/x86_64/initramfs-linux.img
+}
+
+menuentry "Boot Archcraft (x86_64, UEFI, open source, no nouveau)" --class archcraft --class arch --class gnu-linux --class gnu --class os --id 'archcraftnn' {
+ set gfxpayload=keep
+ search --no-floppy --set=root --label %ARCHISO_LABEL%
+ linux /%INSTALL_DIR%/boot/x86_64/vmlinuz-linux archisobasedir=%INSTALL_DIR% archisolabel=%ARCHISO_LABEL% quiet splash loglevel=3 udev.log_level=3 vt.global_cursor_default=0 cow_spacesize=5G copytoram=n driver=freenonouveau radeon.modeset=1 i915.modeset=1 nvme_load=yes
+ initrd /%INSTALL_DIR%/boot/intel-ucode.img /%INSTALL_DIR%/boot/amd-ucode.img /%INSTALL_DIR%/boot/x86_64/initramfs-linux.img
+}
+
+menuentry "Boot Archcraft (x86_64, UEFI, NVIDIA)" --class archcraft --class arch --class gnu-linux --class gnu --class os --id 'archcraftpn' {
+ set gfxpayload=keep
+ search --no-floppy --set=root --label %ARCHISO_LABEL%
+ linux /%INSTALL_DIR%/boot/x86_64/vmlinuz-linux archisobasedir=%INSTALL_DIR% archisolabel=%ARCHISO_LABEL% quiet splash loglevel=3 udev.log_level=3 vt.global_cursor_default=0 cow_spacesize=5G copytoram=n driver=nonfree nouveau.modeset=0 radeon.modeset=1 i915.modeset=1 nvme_load=yes
+ initrd /%INSTALL_DIR%/boot/intel-ucode.img /%INSTALL_DIR%/boot/amd-ucode.img /%INSTALL_DIR%/boot/x86_64/initramfs-linux.img
+}
+
+menuentry "Boot Archcraft (x86_64, UEFI, NVIDIA, no nouveau)" --class archcraft --class arch --class gnu-linux --class gnu --class os --id 'archcraftpnn' {
+ set gfxpayload=keep
+ search --no-floppy --set=root --label %ARCHISO_LABEL%
+ linux /%INSTALL_DIR%/boot/x86_64/vmlinuz-linux archisobasedir=%INSTALL_DIR% archisolabel=%ARCHISO_LABEL% quiet splash loglevel=3 udev.log_level=3 vt.global_cursor_default=0 cow_spacesize=5G copytoram=n driver=nonfreenonouveau nouveau.modeset=0 radeon.modeset=1 i915.modeset=1 nvme_load=yes
+ initrd /%INSTALL_DIR%/boot/intel-ucode.img /%INSTALL_DIR%/boot/amd-ucode.img /%INSTALL_DIR%/boot/x86_64/initramfs-linux.img
+}
+
+menuentry "Boot Archcraft (x86_64, UEFI, nomodeset)" --class archcraft --class arch --class gnu-linux --class gnu --class os --id 'archcraftnm' {
+ set gfxpayload=keep
+ search --no-floppy --set=root --label %ARCHISO_LABEL%
+ linux /%INSTALL_DIR%/boot/x86_64/vmlinuz-linux archisobasedir=%INSTALL_DIR% archisolabel=%ARCHISO_LABEL% quiet splash loglevel=3 udev.log_level=3 vt.global_cursor_default=0 cow_spacesize=5G copytoram=n driver=free nomodeset nouveau.modeset=0 radeon.modeset=0 i915.modeset=0 nvme_load=yes
+ initrd /%INSTALL_DIR%/boot/intel-ucode.img /%INSTALL_DIR%/boot/amd-ucode.img /%INSTALL_DIR%/boot/x86_64/initramfs-linux.img
+}
+
+if [ "${grub_platform}" == "efi" ]; then
+ if [ "${grub_cpu}" == "x86_64" ]; then
+ menuentry "UEFI Shell" --class recovery {
+ insmod chain
+ search --no-floppy --set=root --label %ARCHISO_LABEL%
+ chainloader /shellx64.efi
+ }
+ elif [ "${grub_cpu}" == "i386" ]; then
+ menuentry "UEFI Shell" --class recovery {
+ insmod chain
+ search --no-floppy --set=root --label %ARCHISO_LABEL%
+ chainloader /shellia32.efi
+ }
+ fi
+
+ menuentry 'UEFI Firmware Settings' --class recovery --id 'uefi-firmware' {
+ fwsetup
+ }
+fi
+
+menuentry "System shutdown" --class shutdown --class poweroff {
+ halt
+}
+
+menuentry "System restart" --class restart --class reboot {
+ reboot
+}
diff --git a/mkarchcraftiso b/profile/mkarchcraftiso
similarity index 89%
rename from mkarchcraftiso
rename to profile/mkarchcraftiso
index fab08674..0f235505 100755
--- a/mkarchcraftiso
+++ b/profile/mkarchcraftiso
@@ -3,10 +3,16 @@
# SPDX-License-Identifier: GPL-3.0-or-later
set -e -u
+shopt -s extglob
# Control the environment
umask 0022
export LC_ALL="C.UTF-8"
+if [[ -v LANGUAGE ]]; then
+ # LC_ALL=C.UTF-8, unlike LC_ALL=C, does not override LANGUAGE.
+ # See https://sourceware.org/bugzilla/show_bug.cgi?id=16621 and https://savannah.gnu.org/bugs/?62815
+ unset LANGUAGE
+fi
[[ -v SOURCE_DATE_EPOCH ]] || printf -v SOURCE_DATE_EPOCH '%(%s)T' -1
export SOURCE_DATE_EPOCH
@@ -37,8 +43,8 @@ bootmodes=()
airootfs_image_type=""
airootfs_image_tool_options=()
cert_list=()
-sign_netboot_artifacts=""
declare -A file_permissions=()
+efibootimg=""
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')
@@ -87,10 +93,11 @@ usage: ${app_name} [options]
Default: '${iso_label}'
-P Set the ISO publisher
Default: '${iso_publisher}'
- -c [cert ..] Provide certificates for codesigning of netboot artifacts
+ -c [cert ..] Provide certificates for codesigning of netboot artifacts as
+ well as the rootfs artifact.
Multiple files are provided as quoted, space delimited list.
The first file is considered as the signing certificate,
- the second as the key.
+ the second as the key and the third as the optional certificate authority.
-g Set the PGP key ID to be used for signing the rootfs image.
Passed to gpg as the value for --default-key
-G Set the PGP signer (must include an email address)
@@ -246,14 +253,11 @@ _mkchecksum() {
}
# GPG sign the root file system image.
-_mksignature() {
- local airootfs_image_filename gpg_options=()
- _msg_info "Signing rootfs image..."
- if [[ -e "${isofs_dir}/${install_dir}/${arch}/airootfs.sfs" ]]; then
- airootfs_image_filename="${isofs_dir}/${install_dir}/${arch}/airootfs.sfs"
- elif [[ -e "${isofs_dir}/${install_dir}/${arch}/airootfs.erofs" ]]; then
- airootfs_image_filename="${isofs_dir}/${install_dir}/${arch}/airootfs.erofs"
- fi
+_mk_pgp_signature() {
+ local gpg_options=()
+ local airootfs_image_filename="${1}"
+ _msg_info "Signing rootfs image using GPG..."
+
rm -f -- "${airootfs_image_filename}.sig"
# Add gpg sender option if the value is provided
[[ -z "${gpg_sender}" ]] || gpg_options+=('--sender' "${gpg_sender}")
@@ -338,6 +342,15 @@ _make_packages() {
exec {ARCHISO_GNUPG_FD}<>"${work_dir}/pubkey.gpg"
export ARCHISO_GNUPG_FD
fi
+ if [[ -v cert_list[0] ]]; then
+ exec {ARCHISO_TLS_FD}<>"${cert_list[0]}"
+ export ARCHISO_TLS_FD
+ fi
+ if [[ -v cert_list[2] ]]; then
+ exec {ARCHISO_TLSCA_FD}<>"${cert_list[2]}"
+ export ARCHISO_TLSCA_FD
+ fi
+
# Unset TMPDIR to work around https://bugs.archlinux.org/task/70580
@@ -348,6 +361,14 @@ _make_packages() {
env -u TMPDIR pacstrap -C "${work_dir}/${buildmode}.pacman.conf" -i -c -G -M -- "${pacstrap_dir}" "${buildmode_pkg_list[@]}"
fi
+ if [[ -v cert_list[0] ]]; then
+ exec {ARCHISO_TLS_FD}<&-
+ unset ARCHISO_TLS_FD
+ fi
+ if [[ -v cert_list[2] ]]; then
+ exec {ARCHISO_TLSCA_FD}<&-
+ unset ARCHISO_TLSCA_FD
+ fi
if [[ -n "${gpg_key}" ]]; then
exec {ARCHISO_GNUPG_FD}<&-
unset ARCHISO_GNUPG_FD
@@ -492,9 +513,9 @@ _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 "${work_dir}/efiboot.img" \
+ mmd -i "${efibootimg}" \
"::/${install_dir}" "::/${install_dir}/boot" "::/${install_dir}/boot/${arch}"
- mcopy -i "${work_dir}/efiboot.img" "${pacstrap_dir}/boot/vmlinuz-"* \
+ mcopy -i "${efibootimg}" "${pacstrap_dir}/boot/vmlinuz-"* \
"${pacstrap_dir}/boot/initramfs-"*".img" "::/${install_dir}/boot/${arch}/"
for ucode_image in "${ucodes[@]}"; do
if [[ -e "${pacstrap_dir}/boot/${ucode_image}" ]]; then
@@ -502,7 +523,7 @@ _make_boot_on_fat() {
fi
done
if (( ${#all_ucode_images[@]} )); then
- mcopy -i "${work_dir}/efiboot.img" "${all_ucode_images[@]}" "::/${install_dir}/boot/"
+ mcopy -i "${efibootimg}" "${all_ucode_images[@]}" "::/${install_dir}/boot/"
fi
_msg_info "Done!"
}
@@ -526,32 +547,58 @@ _make_efibootimg() {
)"
# 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
- rm -f -- "${work_dir}/efiboot.img"
+ rm -f -- "${efibootimg}"
_msg_info "Creating FAT image of size: ${imgsize_kib} KiB..."
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 "${work_dir}/efiboot.img" "${imgsize_kib}" > /dev/null
+ mkfs.fat -C -n ARCHISO_EFI "${efibootimg}" "${imgsize_kib}" > /dev/null
else
- mkfs.fat -C -n ARCHISO_EFI "${work_dir}/efiboot.img" "${imgsize_kib}"
+ mkfs.fat -C -n ARCHISO_EFI "${efibootimg}" "${imgsize_kib}"
fi
# Create the default/fallback boot path in which a boot loaders will be placed later.
- mmd -i "${work_dir}/efiboot.img" ::/EFI ::/EFI/BOOT
+ mmd -i "${efibootimg}" ::/EFI ::/EFI/BOOT
}
-# Copy the grub.cfg file in efiboot.img which is used by both IA32 UEFI and x64 UEFI.
-_make_efibootimg_grubcfg() {
- mcopy -i "${work_dir}/efiboot.img" \
- "${work_dir}/grub.cfg" ::/EFI/BOOT/grub.cfg
+# Copy GRUB files to efiboot.img which is used by both IA32 UEFI and x64 UEFI.
+_make_common_bootmode_grub_copy_to_efibootimg() {
+ local files_to_copy=()
+
+ files_to_copy+=("${work_dir}/grub/"*)
+ if compgen -G "${profile}/grub/!(*.cfg)" &> /dev/null; then
+ files_to_copy+=("${profile}/grub/"!(*.cfg))
+ fi
+ mcopy -i "${efibootimg}" "${files_to_copy[@]}" ::/EFI/BOOT/
}
-_make_bootmode_uefi-ia32.grub.esp() {
+# Copy GRUB files to efiboot.img 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
+ files_to_copy+=("${profile}/grub/"!(*.cfg))
+ fi
+ install -m 0644 -- "${files_to_copy[@]}" "${isofs_dir}/EFI/BOOT/"
+}
+
+# Prepare GRUB configuration files
+_make_common_bootmode_grub_cfg(){
+ local _cfg
+
+ install -d -- "${work_dir}/grub"
+
# Fill GRUB configuration files
- sed "s|%ARCHISO_LABEL%|${iso_label}|g;
- s|%INSTALL_DIR%|${install_dir}|g;
- s|%ARCH%|${arch}|g" \
- "${profile}/grub/grub.cfg" > "${work_dir}/grub.cfg"
+ for _cfg in "${profile}/grub/"*'.cfg'; do
+ sed "s|%ARCHISO_LABEL%|${iso_label}|g;
+ s|%INSTALL_DIR%|${install_dir}|g;
+ s|%ARCH%|${arch}|g" \
+ "${_cfg}" > "${work_dir}/grub/${_cfg##*/}"
+ done
+ # Add all GRUB files to the list of files used to calculate the required FAT image size.
+ efiboot_files+=("${work_dir}/grub/"
+ "${profile}/grub/"!(*.cfg))
IFS='' read -r -d '' grubembedcfg <<'EOF' || true
if ! [ -d "$cmdpath" ]; then
@@ -564,13 +611,27 @@ fi
configfile "${cmdpath}/grub.cfg"
EOF
printf '%s\n' "$grubembedcfg" > "${work_dir}/grub-embed.cfg"
+}
+
+_make_bootmode_uefi-ia32.grub.esp() {
+ local grubmodules=()
+
+ # Prepare configuration files
+ _run_once _make_common_bootmode_grub_cfg
# Create EFI binary
+ # Module list from https://bugs.archlinux.org/task/71382#comment202911
+ grubmodules=(all_video at_keyboard boot btrfs cat chain configfile echo efifwsetup efinet ext2 f2fs fat font \
+ gfxmenu gfxterm gzio halt hfsplus iso9660 jpeg keylayouts linux loadenv loopback lsefi lsefimmap \
+ minicmd normal part_apple part_gpt part_msdos png read reboot regexp search search_fs_file \
+ search_fs_uuid search_label serial sleep tpm usb usbserial_common usbserial_ftdi usbserial_pl2303 \
+ usbserial_usbdebug video xfs zstd)
grub-mkstandalone -O i386-efi \
- --modules="part_gpt part_msdos fat iso9660" \
+ --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"
@@ -582,22 +643,19 @@ EOF
elif [[ " ${bootmodes[*]} " =~ uefi-x64.grub.esp ]]; then
_run_once _make_bootmode_uefi-x64.grub.esp
else
- efiboot_imgsize="$(du -bc "${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"
fi
# Copy GRUB EFI binary to the default/fallback boot path
- mcopy -i "${work_dir}/efiboot.img" \
- "${work_dir}/BOOTIA32.EFI" ::/EFI/BOOT/BOOTIA32.EFI
+ mcopy -i "${efibootimg}" "${work_dir}/BOOTIA32.EFI" ::/EFI/BOOT/BOOTIA32.EFI
- # Copy GRUB configuration files
- _run_once _make_efibootimg_grubcfg
+ # Copy GRUB files
+ _run_once _make_common_bootmode_grub_copy_to_efibootimg
if [[ -e "${pacstrap_dir}/usr/share/edk2-shell/ia32/Shell_Full.efi" ]]; then
- mcopy -i "${work_dir}/efiboot.img" \
- "${pacstrap_dir}/usr/share/edk2-shell/ia32/Shell_Full.efi" ::/shellia32.efi
+ mcopy -i "${efibootimg}" "${pacstrap_dir}/usr/share/edk2-shell/ia32/Shell_Full.efi" ::/shellia32.efi
fi
_msg_info "Done! GRUB set up for UEFI booting successfully."
@@ -609,6 +667,9 @@ _make_bootmode_uefi-ia32.grub.eltorito() {
# uefi-ia32.grub.eltorito has the same requirements as uefi-ia32.grub.esp
_run_once _make_bootmode_uefi-ia32.grub.esp
+ # Prepare configuration files
+ _run_once _make_common_bootmode_grub_cfg
+
# 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.
@@ -616,66 +677,56 @@ _make_bootmode_uefi-ia32.grub.eltorito() {
install -d -m 0755 -- "${isofs_dir}/EFI/BOOT"
# Copy GRUB EFI binary to the default/fallback boot path
- install -m 0644 -- "${work_dir}/BOOTIA32.EFI" \
- "${isofs_dir}/EFI/BOOT/BOOTIA32.EFI"
+ install -m 0644 -- "${work_dir}/BOOTIA32.EFI" "${isofs_dir}/EFI/BOOT/BOOTIA32.EFI"
# Copy GRUB configuration files
- install -m 0644 -- "${work_dir}/grub.cfg" "${isofs_dir}/EFI/BOOT/grub.cfg"
+ _run_once _make_common_bootmode_grub_copy_to_isofs
# edk2-shell based UEFI shell
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"
+ install -m 0644 -- "${pacstrap_dir}/usr/share/edk2-shell/ia32/Shell_Full.efi" "${isofs_dir}/shellia32.efi"
fi
_msg_info "Done!"
}
_make_bootmode_uefi-x64.grub.esp() {
- # Fill Grub configuration files
- sed "s|%ARCHISO_LABEL%|${iso_label}|g;
- s|%INSTALL_DIR%|${install_dir}|g;
- s|%ARCH%|${arch}|g" \
- "${profile}/grub/grub.cfg" > "${work_dir}/grub.cfg"
+ local grubmodules=()
- IFS='' read -r -d '' grubembedcfg <<'EOF' || true
-if ! [ -d "$cmdpath" ]; then
- # On some firmware, GRUB has a wrong cmdpath when booted from an optical disc.
- # https://gitlab.archlinux.org/archlinux/archiso/-/issues/183
- if regexp --set=1:isodevice '^(\([^)]+\))\/?[Ee][Ff][Ii]\/[Bb][Oo][Oo][Tt]\/?$' "$cmdpath"; then
- cmdpath="${isodevice}/EFI/BOOT"
- fi
-fi
-configfile "${cmdpath}/grub.cfg"
-EOF
- printf '%s\n' "$grubembedcfg" > "${work_dir}/grub-embed.cfg"
+ # Prepare configuration files
+ _run_once _make_common_bootmode_grub_cfg
# Create EFI binary
+ # Module list from https://bugs.archlinux.org/task/71382#comment202911
+ grubmodules=(all_video at_keyboard boot btrfs cat chain configfile echo efifwsetup efinet ext2 f2fs fat font \
+ gfxmenu gfxterm gzio halt hfsplus iso9660 jpeg keylayouts linux loadenv loopback lsefi lsefimmap \
+ minicmd normal part_apple part_gpt part_msdos png read reboot regexp search search_fs_file \
+ search_fs_uuid search_label serial sleep tpm usb usbserial_common usbserial_ftdi usbserial_pl2303 \
+ usbserial_usbdebug video xfs zstd)
grub-mkstandalone -O x86_64-efi \
- --modules="part_gpt part_msdos fat iso9660" \
+ --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")
- efiboot_imgsize="$(du -bc "${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 grub EFI binary to the default/fallback boot path
- mcopy -i "${work_dir}/efiboot.img" \
- "${work_dir}/BOOTx64.EFI" ::/EFI/BOOT/BOOTx64.EFI
+ # Copy GRUB EFI binary to the default/fallback boot path
+ mcopy -i "${efibootimg}" "${work_dir}/BOOTx64.EFI" ::/EFI/BOOT/BOOTx64.EFI
- _run_once _make_efibootimg_grubcfg
+ # Copy GRUB files
+ _run_once _make_common_bootmode_grub_copy_to_efibootimg
if [[ -e "${pacstrap_dir}/usr/share/edk2-shell/x64/Shell_Full.efi" ]]; then
- mcopy -i "${work_dir}/efiboot.img" \
- "${pacstrap_dir}/usr/share/edk2-shell/x64/Shell_Full.efi" ::/shellx64.efi
+ mcopy -i "${efibootimg}" "${pacstrap_dir}/usr/share/edk2-shell/x64/Shell_Full.efi" ::/shellx64.efi
fi
_msg_info "Done! GRUB set up for UEFI booting successfully."
@@ -687,6 +738,9 @@ _make_bootmode_uefi-x64.grub.eltorito() {
# uefi-x64.grub.eltorito has the same requirements as uefi-x64.grub.esp
_run_once _make_bootmode_uefi-x64.grub.esp
+ # Prepare configuration files
+ _run_once _make_common_bootmode_grub_cfg
+
# 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.
@@ -694,11 +748,10 @@ _make_bootmode_uefi-x64.grub.eltorito() {
install -d -m 0755 -- "${isofs_dir}/EFI/BOOT"
# Copy GRUB EFI binary to the default/fallback boot path
- install -m 0644 -- "${work_dir}/BOOTx64.EFI" \
- "${isofs_dir}/EFI/BOOT/BOOTx64.EFI"
+ install -m 0644 -- "${work_dir}/BOOTx64.EFI" "${isofs_dir}/EFI/BOOT/BOOTx64.EFI"
- # Copy GRUB configuration files
- install -m 0644 -- "${work_dir}/grub.cfg" "${isofs_dir}/EFI/BOOT"
+ # Copy GRUB files
+ _run_once _make_common_bootmode_grub_copy_to_isofs
# edk2-shell based UEFI shell
if [[ -e "${pacstrap_dir}/usr/share/edk2-shell/x64/Shell_Full.efi" ]]; then
@@ -726,28 +779,28 @@ _make_bootmode_uefi-x64.systemd-boot.esp() {
"${pacstrap_dir}/boot/vmlinuz-"*
"${pacstrap_dir}/boot/initramfs-"*".img"
"${_available_ucodes[@]}")
- efiboot_imgsize="$(du -bc "${efiboot_files[@]}" \
+ 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 "${work_dir}/efiboot.img" \
+ mcopy -i "${efibootimg}" \
"${pacstrap_dir}/usr/lib/systemd/boot/efi/systemd-bootx64.efi" ::/EFI/BOOT/BOOTx64.EFI
# Copy systemd-boot configuration files
- mmd -i "${work_dir}/efiboot.img" ::/loader ::/loader/entries
- mcopy -i "${work_dir}/efiboot.img" "${profile}/efiboot/loader/loader.conf" ::/loader/
+ 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|%INSTALL_DIR%|${install_dir}|g;
s|%ARCH%|${arch}|g" \
- "${_conf}" | mcopy -i "${work_dir}/efiboot.img" - "::/loader/entries/${_conf##*/}"
+ "${_conf}" | mcopy -i "${efibootimg}" - "::/loader/entries/${_conf##*/}"
done
# shellx64.efi is picked up automatically when on /
if [[ -e "${pacstrap_dir}/usr/share/edk2-shell/x64/Shell_Full.efi" ]]; then
- mcopy -i "${work_dir}/efiboot.img" \
+ mcopy -i "${efibootimg}" \
"${pacstrap_dir}/usr/share/edk2-shell/x64/Shell_Full.efi" ::/shellx64.efi
fi
@@ -976,8 +1029,18 @@ _validate_requirements_bootmode_uefi-x64.grub.eltorito() {
_prepare_airootfs_image() {
_run_once "_mkairootfs_${airootfs_image_type}"
_mkchecksum
+
+ if [[ -e "${isofs_dir}/${install_dir}/${arch}/airootfs.sfs" ]]; then
+ airootfs_image_filename="${isofs_dir}/${install_dir}/${arch}/airootfs.sfs"
+ elif [[ -e "${isofs_dir}/${install_dir}/${arch}/airootfs.erofs" ]]; then
+ airootfs_image_filename="${isofs_dir}/${install_dir}/${arch}/airootfs.erofs"
+ fi
+
if [[ -n "${gpg_key}" ]]; then
- _mksignature
+ _mk_pgp_signature "${airootfs_image_filename}"
+ fi
+ if [[ -v cert_list ]]; then
+ _cms_sign_artifact "${airootfs_image_filename}"
fi
}
@@ -990,6 +1053,32 @@ _export_netboot_artifacts() {
du -hs -- "${out_dir}/${install_dir}"
}
+_cms_sign_artifact() {
+ local artifact="${1}"
+ local openssl_flags=(
+ "-sign"
+ "-binary"
+ "-nocerts"
+ "-noattr"
+ "-outform" "DER" "-out" "${artifact}.cms.sig"
+ "-in" "${artifact}"
+ "-signer" "${cert_list[0]}"
+ "-inkey" "${cert_list[1]}"
+ )
+
+ if (( ${#cert_list[@]} > 2 )); then
+ openssl_flags+=("-certfile" "${cert_list[2]}")
+ fi
+
+ _msg_info "Signing ${artifact} image using openssl cms..."
+
+ rm -f -- "${artifact}.cms.sig"
+
+ openssl cms "${openssl_flags[@]}"
+
+ _msg_info "Done!"
+}
+
# sign build artifacts for netboot
_sign_netboot_artifacts() {
local _file _dir
@@ -1001,7 +1090,8 @@ _sign_netboot_artifacts() {
_files_to_sign+=("${_dir}${_file}")
fi
done
- for _file in "${_files_to_sign[@]}" "${_dir}${arch}/vmlinuz-"* "${_dir}${arch}/initramfs-"*.img; do
+ for _file in "${_files_to_sign[@]}" "${_dir}${arch}/vmlinuz-"!(*.sig) "${_dir}${arch}/initramfs-"*.img; do
+ rm -f -- "${_file}".ipxe.sig
openssl cms \
-sign \
-binary \
@@ -1093,6 +1183,26 @@ _validate_common_requirements_buildmode_iso_netboot() {
_msg_error "Packages file '${packages}' does not exist." 0
fi
+ if [[ -v cert_list ]]; then
+ # Check if the certificate files exist
+ for _cert in "${cert_list[@]}"; do
+ if [[ ! -e "${_cert}" ]]; then
+ (( validation_error=validation_error+1 ))
+ _msg_error "File '${_cert}' does not exist." 0
+ fi
+ done
+ # Check if there are at least three certificate files to sign netboot and rootfs.
+ if (( ${#cert_list[@]} < 2 )); then
+ (( validation_error=validation_error+1 ))
+ _msg_error "Two certificates are required for codesigning netboot artifacts, but '${cert_list[*]}' is provided." 0
+ fi
+
+ 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
@@ -1134,31 +1244,8 @@ _validate_requirements_buildmode_iso() {
}
_validate_requirements_buildmode_netboot() {
- local _override_cert_list=()
-
- if [[ "${sign_netboot_artifacts}" == "y" ]]; then
- # Check if the certificate files exist
- for _cert in "${cert_list[@]}"; do
- if [[ -e "${_cert}" ]]; then
- _override_cert_list+=("$(realpath -- "${_cert}")")
- else
- (( validation_error=validation_error+1 ))
- _msg_error "File '${_cert}' does not exist." 0
- fi
- done
- cert_list=("${_override_cert_list[@]}")
- # Check if there are at least two certificate files
- if (( ${#cert_list[@]} < 2 )); then
- (( validation_error=validation_error+1 ))
- _msg_error "Two certificates are required for codesigning, but '${cert_list[*]}' is provided." 0
- fi
- fi
_validate_common_requirements_buildmode_iso_netboot
_validate_common_requirements_buildmode_all
- 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
}
# SYSLINUX El Torito
@@ -1216,7 +1303,7 @@ _add_xorrisofs_options_uefi-x64.systemd-boot.esp() {
# shellcheck disable=SC2076
[[ " ${xorrisofs_options[*]} " =~ ' -partition_offset ' ]] || xorrisofs_options+=('-partition_offset' '16')
# Attach efiboot.img as a second partition and set its partition type to "EFI system partition"
- xorrisofs_options+=('-append_partition' '2' 'C12A7328-F81F-11D2-BA4B-00A0C93EC93B' "${work_dir}/efiboot.img")
+ xorrisofs_options+=('-append_partition' '2' 'C12A7328-F81F-11D2-BA4B-00A0C93EC93B' "${efibootimg}")
# Ensure GPT is used as some systems do not support UEFI booting without it
# shellcheck disable=SC2076
if [[ " ${bootmodes[*]} " =~ ' bios.syslinux.mbr ' ]]; then
@@ -1263,7 +1350,7 @@ _add_xorrisofs_options_uefi-x64.systemd-boot.eltorito() {
# The ISO will not contain a GPT partition table, so to be able to reference efiboot.img, place it as a
# file inside the ISO 9660 file system
install -d -m 0755 -- "${isofs_dir}/EFI/archiso"
- cp -a -- "${work_dir}/efiboot.img" "${isofs_dir}/EFI/archiso/efiboot.img"
+ cp -a -- "${efibootimg}" "${isofs_dir}/EFI/archiso/efiboot.img"
# systemd-boot in an embedded efiboot.img via El Torito
xorrisofs_options+=(
# Start a new El Torito boot entry for UEFI
@@ -1287,7 +1374,7 @@ _add_xorrisofs_options_uefi-x64.grub.esp() {
# shellcheck disable=SC2076
[[ " ${xorrisofs_options[*]} " =~ ' -partition_offset ' ]] || xorrisofs_options+=('-partition_offset' '16')
# Attach efiboot.img as a second partition and set its partition type to "EFI system partition"
- xorrisofs_options+=('-append_partition' '2' 'C12A7328-F81F-11D2-BA4B-00A0C93EC93B' "${work_dir}/efiboot.img")
+ xorrisofs_options+=('-append_partition' '2' 'C12A7328-F81F-11D2-BA4B-00A0C93EC93B' "${efibootimg}")
# Ensure GPT is used as some systems do not support UEFI booting without it
# shellcheck disable=SC2076
if [[ " ${bootmodes[*]} " =~ ' bios.syslinux.mbr ' ]]; then
@@ -1335,7 +1422,7 @@ _add_xorrisofs_options_uefi-x64.grub.eltorito() {
# The ISO will not contain a GPT partition table, so to be able to reference efiboot.img, place it as a
# file inside the ISO 9660 file system
install -d -m 0755 -- "${isofs_dir}/EFI/archiso"
- cp -a -- "${work_dir}/efiboot.img" "${isofs_dir}/EFI/archiso/efiboot.img"
+ cp -a -- "${efibootimg}" "${isofs_dir}/EFI/archiso/efiboot.img"
# grub in an embedded efiboot.img via El Torito
xorrisofs_options+=(
# Start a new El Torito boot entry for UEFI
@@ -1519,10 +1606,7 @@ _set_overrides() {
fi
[[ ! -v override_gpg_key ]] || gpg_key="$override_gpg_key"
[[ ! -v override_gpg_sender ]] || gpg_sender="$override_gpg_sender"
- if [[ -v override_cert_list ]]; then
- sign_netboot_artifacts="y"
- fi
- [[ ! -v override_cert_list ]] || cert_list+=("${override_cert_list[@]}")
+ [[ ! -v override_cert_list ]] || mapfile -t cert_list < <(realpath -- "${override_cert_list[@]}")
if [[ -v override_quiet ]]; then
quiet="$override_quiet"
elif [[ -z "$quiet" ]]; then
@@ -1568,6 +1652,11 @@ _make_version() {
[[ ! -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}"
fi
+
+ # Touch /usr/lib/clock-epoch to give another hint on date and time
+ # for systems with screwed or broken RTC.
+ touch -m -d"@${SOURCE_DATE_EPOCH}" -- "${pacstrap_dir}/usr/lib/clock-epoch"
+
_msg_info "Done!"
}
@@ -1648,8 +1737,16 @@ _build_buildmode_netboot() {
local run_once_mode="${buildmode}"
_build_iso_base
+
+ if [[ -e "${isofs_dir}/${install_dir}/${arch}/airootfs.sfs" ]]; then
+ airootfs_image_filename="${isofs_dir}/${install_dir}/${arch}/airootfs.sfs"
+ elif [[ -e "${isofs_dir}/${install_dir}/${arch}/airootfs.erofs" ]]; then
+ airootfs_image_filename="${isofs_dir}/${install_dir}/${arch}/airootfs.erofs"
+ fi
+
if [[ -v cert_list ]]; then
_run_once _sign_netboot_artifacts
+ _cms_sign_artifact "${airootfs_image_filename}"
fi
_run_once _export_netboot_artifacts
}
@@ -1658,6 +1755,7 @@ _build_buildmode_netboot() {
_build_buildmode_iso() {
local image_name="${iso_name}-${iso_version}-${arch}.iso"
local run_once_mode="${buildmode}"
+ efibootimg="${work_dir}/efiboot.img"
_build_iso_base
_run_once _build_iso_image
}
diff --git a/packages.x86_64 b/profile/packages.x86_64
similarity index 61%
rename from packages.x86_64
rename to profile/packages.x86_64
index d6d6b64a..b14c54ab 100644
--- a/packages.x86_64
+++ b/profile/packages.x86_64
@@ -1,5 +1,4 @@
-##-------- Base Packages ---------------------##
-
+## Arch Packages ------------------------------
#alsa-utils
amd-ucode
arch-install-scripts
@@ -25,7 +24,7 @@ dosfstools
e2fsprogs
edk2-shell
efibootmgr
-espeakup
+#espeakup
ethtool
exfatprogs
f2fs-tools
@@ -40,8 +39,8 @@ gptfdisk
hdparm
hyperv
intel-ucode
-ipw2100-fw
-ipw2200-fw
+#ipw2100-fw
+#ipw2200-fw
irssi
iw
iwd
@@ -67,7 +66,6 @@ mdadm
mkinitcpio
mkinitcpio-archiso
mkinitcpio-nfs-utils
-mkinitcpio-firmware
modemmanager
mtools
nano
@@ -126,228 +124,277 @@ xfsprogs
xl2tpd
zsh
-##-------- Xorg Packages ---------------------##
-xorg
-#xorg-server
-#xorg-xbacklight
-#xorg-fonts-misc
-#xorg-xfd
-#xorg-xkill
-#xorg-xrandr
-#xorg-xrdb
-#xorg-xset
-#xorg-xev
-#xorg-xmodmap
-#xorg-xwininfo
-#xorg-xsetroot
+## Bootloader ------------------------------
+os-prober
+lsb-release
+archcraft/grub
+archcraft-grub-theme
-##-------- Touchpad and Mouse ----------------##
+## Splash Screen ------------------------------
+archcraft/plymouth
+archcraft-plymouth-theme
+
+## Archcraft Specific ------------------------------
+archcraft-hooks
+archcraft-mirrorlist
+
+## Xorg Server ------------------------------
+xorg
+
+## Touchpad and Mouse ------------------------------
xorg-xinput
xf86-input-libinput
-##-------- GPU Drivers (Intel/AMD/VM) --------##
+## GPU Drivers (Intel/AMD/VM) ------------------------------
xf86-video-fbdev
xf86-video-vesa
xf86-video-intel
xf86-video-amdgpu
xf86-video-ati
-##-------- GPU Drivers (Nvidia) --------------##
+## GPU Drivers (Nvidia) ------------------------------
xf86-video-nouveau
nvidia
nvidia-utils
nvidia-settings
-##-------- Programs --------------------------##
-
-## Networking / Internet -----
-inetutils
-firefox
-networkmanager
-networkmanager-openvpn
-nethogs
-nm-connection-editor
-
-## Bluetooth -----
-bluez
-bluez-utils
-blueman
-pulseaudio-bluetooth
-
-## Printers -----
-cups
-gutenprint
-
-## Sound -----
-alsa-plugins
-alsa-tools
-alsa-utils
-pavucontrol
-pulseaudio
-pulseaudio-alsa
-pulseaudio-equalizer-ladspa
-
-## Files -----
-ranger
-highlight
-trash-cli
-ueberzug
-thunar
-thunar-archive-plugin
-thunar-media-tags-plugin
-thunar-volman
-zip
-p7zip
-unzip
-unrar
-xarchiver
-xdg-user-dirs
-xdg-user-dirs-gtk
-
-## Images -----
-viewnior
-
-## Multimedia -----
-ffmpeg
-ffmpegthumbnailer
-mpc
-mpd
-mplayer
-ncmpcpp
-tumbler
-
-## Terminals -----
-alacritty
-xfce4-terminal
-
-## Docs / Editors -----
-atril
-geany
-geany-plugins
-vim
-
-## Fonts -----
-noto-fonts
-noto-fonts-emoji
-terminus-font
-ttf-dejavu
-
-## System -----
-acpi
-autoconf
-automake
-binutils
-bison
-calc
-fakeroot
-gcc
-gparted
-gtk-engine-murrine
-gvfs
-gvfs-mtp
-gvfs-afc
-gvfs-gphoto2
-gvfs-smb
-gvfs-google
-inotify-tools
-jq
-make
-patch
-pkg-config
-polkit
-powertop
-python2
-sshfs
-udisks2
-wmctrl
-xclip
-xdotool
-xmlstarlet
-yad
-
-## Utilities -----
-baobab
-dialog
-dunst
-gpick
-htop
-lxappearance
-meld
-ncdu
-nitrogen
-plank
-python-pywal
-rofi
-maim
-slop
-
-## XFCE tools -----
-xfce4-power-manager
-xfce4-settings
-xsettingsd
-
-## QT Style -----
-kvantum
-qt5ct
-
-##-------- Calamares ----------------##
-boost
-calamares
-calamares-config
-
-##-------- Hypervisors --------------##
+## Hypervisors ------------------------------
virtualbox-guest-utils
qemu-guest-agent
open-vm-tools
xf86-input-vmmouse
xf86-video-vmware
-##-------- Grub ---------------------##
-os-prober
-lsb-release
-archcraft/grub
-archcraft-grub-theme
+## System ------------------------------
-##-------- Plymouth -----------------##
-archcraft/plymouth
-archcraft-plymouth-theme
+## Networking
+networkmanager
+networkmanager-openconnect
+networkmanager-openvpn
+networkmanager-pptp
+networkmanager-strongswan
+networkmanager-vpnc
+network-manager-sstp
+nm-connection-editor
+network-manager-applet
-##-------- Display Manager ----------##
+## Bluetooth
+bluez
+bluez-utils
+blueman
+
+## Audio
+pipewire
+wireplumber
+pipewire-alsa
+pipewire-pulse
+pipewire-jack
+pulsemixer
+gst-plugin-pipewire
+
+## Video
+libde265
+libdv
+libmpeg2
+schroedinger
+libtheora
+libvpx
+x264
+x265
+xvidcore
+gstreamer
+ffmpeg
+gst-libav
+gst-plugins-good
+gst-plugins-ugly
+gst-plugins-bad
+
+## Print
+cups
+cups-pdf
+cups-filters
+ghostscript
+gsfonts
+foomatic-db-engine
+foomatic-db
+gutenprint
+
+## Installer ------------------------------
+
+## Calamares
+boost
+calamares
+calamares-config
+
+## ABIF
+archcraft-installer
+archcraft-install-scripts
+
+## QT Style
+kvantum
+qt5ct
+
+## Display Manager ------------------------------
sddm
-archcraft-sddm-theme-default
+archcraft-sddm-theme
-##-------- Archcraft Packages -------##
+## Desktop ------------------------------
+
+# Terminal
+alacritty
+xfce4-terminal
+
+# Apps
+firefox
+geany
+geany-plugins
+thunar
+thunar-archive-plugin
+thunar-media-tags-plugin
+thunar-volman
+viewnior
+atril
+
+# Media
+mpc
+mpd
+ncmpcpp
+mplayer
+
+# Utilities
+acpi
+arandr
+dialog
+dunst
+gparted
+gtk-engine-murrine
+inetutils
+inotify-tools
+jq
+light
+meld
+nitrogen
+pastel
+plank
+polkit
+python2
+python-pywal
+rofi
+maim
+simplescreenrecorder
+slop
+udisks2
+wmctrl
+wmname
+xclip
+xcolor
+xdotool
+xfce4-power-manager
+xfce4-settings
+xmlstarlet
+xsettingsd
+yad
+
+# WMs
+archcraft-openbox
+archcraft-bspwm
+
+# Archcraft Packages
archcraft-cursors
archcraft-icons
archcraft-themes
archcraft-wallpapers
archcraft-fonts
-archcraft-skeleton
-archcraft-bspwm
-archcraft-openbox
-archcraft-music
-archcraft-vim
-archcraft-omz
-archcraft-scripts
-archcraft-pixmaps
-archcraft-artworks
archcraft-about
+archcraft-artworks
+archcraft-dunst-icons
+archcraft-funscripts
archcraft-help
+archcraft-neofetch
archcraft-welcome
-archcraft-hooks
-archcraft-installer
-archcraft-install-scripts
+archcraft-music
+archcraft-omz
+archcraft-ranger
+archcraft-vim
+archcraft-config-geany
+archcraft-config-music
+archcraft-config-qt
+archcraft-hooks-extra
+archcraft-hooks-zsh
-archcraft-mirrorlist
-chaotic-mirrorlist
-chaotic-keyring
+## Functionality ------------------------------
-##-------- AUR Packages -------------##
+## Fonts
+noto-fonts
+noto-fonts-emoji
+noto-fonts-cjk
+terminus-font
+
+## Multimedia
+ffmpegthumbnailer
+tumbler
+
+## Images
+jasper
+libwebp
+libavif
+libheif
+
+## Files
+gvfs
+gvfs-mtp
+gvfs-afc
+gvfs-gphoto2
+gvfs-smb
+gvfs-google
+highlight
+trash-cli
+ueberzug
+xdg-user-dirs
+xdg-user-dirs-gtk
+
+## Archives
+bzip2
+gzip
+lrzip
+lz4
+lzip
+lzop
+xz
+zstd
+p7zip
+zip
+unzip
+unrar
+unarchiver
+xarchiver
+
+## Misc ------------------------------
+
+## Package Tools
+fakeroot
+make
+automake
+autoconf
+pkgconf
+patch
+gcc
+
+## CLI Tools
+htop
+nethogs
+ncdu
+powertop
+ranger
+vim
+
+## AUR Packages
betterlockscreen
downgrade
+gtk3-nocsd-git
i3lock-color
ksuperkey
-light
+mkinitcpio-firmware
networkmanager-dmenu-git
obmenu-generator
perl-linux-desktopfiles
@@ -356,3 +403,5 @@ polybar
timeshift
xfce-polkit
yay
+
+## EOF ------------------------------
diff --git a/pacman.conf b/profile/pacman.conf
similarity index 96%
rename from pacman.conf
rename to profile/pacman.conf
index 2f6bfe98..4cdf3478 100644
--- a/pacman.conf
+++ b/profile/pacman.conf
@@ -77,9 +77,6 @@ LocalFileSigLevel = Optional
SigLevel = Optional TrustAll
Include = /etc/pacman.d/archcraft-mirrorlist
-[chaotic-aur]
-Include = /etc/pacman.d/chaotic-mirrorlist
-
[core]
Include = /etc/pacman.d/mirrorlist
@@ -98,8 +95,8 @@ Include = /etc/pacman.d/mirrorlist
#[multilib-testing]
#Include = /etc/pacman.d/mirrorlist
-[multilib]
-Include = /etc/pacman.d/mirrorlist
+#[multilib]
+#Include = /etc/pacman.d/mirrorlist
# An example of a custom package repository. See the pacman manpage for
# tips on creating your own repositories.
diff --git a/profiledef.sh b/profile/profiledef.sh
similarity index 88%
rename from profiledef.sh
rename to profile/profiledef.sh
index 6c3e999a..a1fdd6e8 100644
--- a/profiledef.sh
+++ b/profile/profiledef.sh
@@ -2,7 +2,7 @@
# shellcheck disable=SC2034
iso_name="archcraft"
-iso_label="archcraft_$(date +%Y%m)"
+iso_label="ARCHCRAFT_$(date +%Y%m)"
iso_publisher="Aditya Shakya "
iso_application="Archcraft Live/Installation/Rescue CD"
iso_version="$(date +%Y.%m.%d)"
@@ -16,11 +16,12 @@ pacman_conf="pacman.conf"
airootfs_image_type="squashfs"
airootfs_image_tool_options=('-comp' 'xz' '-Xbcj' 'x86' '-b' '1M' '-Xdict-size' '1M')
file_permissions=(
- ["/etc/shadow"]="0:0:0400"
+ ["/etc/shadow"]="0:0:400"
["/etc/gshadow"]="0:0:0400"
["/etc/sudoers.d"]="0:0:750"
["/root"]="0:0:750"
["/root/.automated_script.sh"]="0:0:755"
["/root/customize_airootfs.sh"]="0:0:755"
["/usr/local/bin/choose-mirror"]="0:0:755"
+ ["/usr/local/bin/xflock4"]="0:0:755"
)
diff --git a/syslinux/archcraftiso_head.cfg b/profile/syslinux/archcraftiso_head.cfg
similarity index 76%
rename from syslinux/archcraftiso_head.cfg
rename to profile/syslinux/archcraftiso_head.cfg
index d9ce7d41..738ee592 100644
--- a/syslinux/archcraftiso_head.cfg
+++ b/profile/syslinux/archcraftiso_head.cfg
@@ -5,15 +5,25 @@ MENU CLEAR
MENU BACKGROUND splash.png
MENU AUTOBOOT Starting Archcraft in # second{,s}.
-MENU WIDTH 45
+# Menu items width
+MENU WIDTH 70
+# Gap from top
+MENU VSHIFT 8
+# Gap from sides
+MENU HSHIFT 6
+# Gap from left
MENU MARGIN 4
+# How many visible rows
MENU ROWS 10
-MENU VSHIFT 10
-MENU HSHIFT 18
-MENU TABMSGROW 14
-MENU CMDLINEROW 14
-MENU HELPMSGROW 17
+# Tab message row height
+MENU TABMSGROW 16
+# CMD line height
+MENU CMDLINEROW 16
+# Help message row
+MENU HELPMSGROW 19
+# Help message ending row
MENU HELPMSGENDROW 30
+
MENU HIDDEN
# Title bar
diff --git a/syslinux/archcraftiso_pxe-linux.cfg b/profile/syslinux/archcraftiso_pxe-linux.cfg
similarity index 80%
rename from syslinux/archcraftiso_pxe-linux.cfg
rename to profile/syslinux/archcraftiso_pxe-linux.cfg
index fd37c858..4189b5b4 100644
--- a/syslinux/archcraftiso_pxe-linux.cfg
+++ b/profile/syslinux/archcraftiso_pxe-linux.cfg
@@ -1,9 +1,9 @@
LABEL arch64_nbd
TEXT HELP
-Boot Archcraft (64bit) live medium (Using NBD).
+Boot Archcraft install medium using NBD.
It allows you to install Archcraft or perform system maintenance.
ENDTEXT
-MENU LABEL Boot Archcraft (64bit) (NBD)
+MENU LABEL Boot Archcraft (x86_64, NBD)
LINUX /%INSTALL_DIR%/boot/x86_64/vmlinuz-linux
INITRD /%INSTALL_DIR%/boot/intel-ucode.img,/%INSTALL_DIR%/boot/amd-ucode.img,/%INSTALL_DIR%/boot/x86_64/initramfs-linux.img
APPEND archisobasedir=%INSTALL_DIR% archisolabel=%ARCHISO_LABEL% archiso_nbd_srv=${pxeserver} checksum verify
@@ -11,10 +11,10 @@ SYSAPPEND 3
LABEL arch64_nfs
TEXT HELP
-Boot Archcraft (64bit) live medium (Using NFS).
+Boot Archcraft install medium using NFS.
It allows you to install Archcraft or perform system maintenance.
ENDTEXT
-MENU LABEL Boot Archcraft (64bit) (x86_64, NFS)
+MENU LABEL Boot Archcraft (x86_64, NFS)
LINUX /%INSTALL_DIR%/boot/x86_64/vmlinuz-linux
INITRD /%INSTALL_DIR%/boot/intel-ucode.img,/%INSTALL_DIR%/boot/amd-ucode.img,/%INSTALL_DIR%/boot/x86_64/initramfs-linux.img
APPEND archisobasedir=%INSTALL_DIR% archiso_nfs_srv=${pxeserver}:/run/archiso/bootmnt checksum verify
@@ -22,10 +22,10 @@ SYSAPPEND 3
LABEL arch64_http
TEXT HELP
-Boot Archcraft (64bit) live medium (Using HTTP).
+Boot Archcraft install medium using HTTP.
It allows you to install Archcraft or perform system maintenance.
ENDTEXT
-MENU LABEL Boot Archcraft (64bit) (x86_64, HTTP)
+MENU LABEL Boot Archcraft (x86_64, HTTP)
LINUX /%INSTALL_DIR%/boot/x86_64/vmlinuz-linux
INITRD /%INSTALL_DIR%/boot/intel-ucode.img,/%INSTALL_DIR%/boot/amd-ucode.img,/%INSTALL_DIR%/boot/x86_64/initramfs-linux.img
APPEND archisobasedir=%INSTALL_DIR% archiso_http_srv=http://${pxeserver}/ checksum verify
diff --git a/syslinux/archcraftiso_pxe.cfg b/profile/syslinux/archcraftiso_pxe.cfg
similarity index 100%
rename from syslinux/archcraftiso_pxe.cfg
rename to profile/syslinux/archcraftiso_pxe.cfg
diff --git a/profile/syslinux/archcraftiso_sys-linux.cfg b/profile/syslinux/archcraftiso_sys-linux.cfg
new file mode 100644
index 00000000..b19793a5
--- /dev/null
+++ b/profile/syslinux/archcraftiso_sys-linux.cfg
@@ -0,0 +1,65 @@
+# Default
+LABEL arch64
+TEXT HELP
+Boot Archcraft install medium on BIOS.
+It allows you to install Archcraft or perform system maintenance.
+ENDTEXT
+MENU LABEL Boot Archcraft (x86_64, BIOS)
+LINUX /%INSTALL_DIR%/boot/x86_64/vmlinuz-linux
+INITRD /%INSTALL_DIR%/boot/intel-ucode.img,/%INSTALL_DIR%/boot/amd-ucode.img,/%INSTALL_DIR%/boot/x86_64/initramfs-linux.img
+APPEND archisobasedir=%INSTALL_DIR% archisolabel=%ARCHISO_LABEL% quiet splash loglevel=3 udev.log_level=3 vt.global_cursor_default=0 cow_spacesize=5G copytoram=n
+
+# Open Source
+LABEL arch64free
+TEXT HELP
+Boot Archcraft install medium on BIOS with open source drivers.
+It allows you to install Archcraft or perform system maintenance.
+ENDTEXT
+MENU LABEL Boot Archcraft (x86_64, BIOS, open source)
+LINUX /%INSTALL_DIR%/boot/x86_64/vmlinuz-linux
+INITRD /%INSTALL_DIR%/boot/intel-ucode.img,/%INSTALL_DIR%/boot/amd-ucode.img,/%INSTALL_DIR%/boot/x86_64/initramfs-linux.img
+APPEND archisobasedir=%INSTALL_DIR% archisolabel=%ARCHISO_LABEL% quiet splash loglevel=3 udev.log_level=3 vt.global_cursor_default=0 cow_spacesize=5G copytoram=n driver=free nouveau.modeset=1 radeon.modeset=1 i915.modeset=1 nvme_load=yes
+
+# Open Source, No Nouveau
+LABEL arch64freenonouveau
+TEXT HELP
+Boot Archcraft install medium on BIOS with open source drivers.
+It allows you to install Archcraft or perform system maintenance.
+ENDTEXT
+MENU LABEL Boot Archcraft (x86_64, BIOS, open source, no nouveau)
+LINUX /%INSTALL_DIR%/boot/x86_64/vmlinuz-linux
+INITRD /%INSTALL_DIR%/boot/intel-ucode.img,/%INSTALL_DIR%/boot/amd-ucode.img,/%INSTALL_DIR%/boot/x86_64/initramfs-linux.img
+APPEND archisobasedir=%INSTALL_DIR% archisolabel=%ARCHISO_LABEL% quiet splash loglevel=3 udev.log_level=3 vt.global_cursor_default=0 cow_spacesize=5G copytoram=n driver=freenonouveau radeon.modeset=1 i915.modeset=1 nvme_load=yes
+
+# NVIDIA Proprietary
+LABEL arch64nonfree
+TEXT HELP
+Boot Archcraft install medium on BIOS with proprietary drivers (NVIDIA).
+It allows you to install Archcraft or perform system maintenance.
+ENDTEXT
+MENU LABEL Boot Archcraft (x86_64, BIOS, NVIDIA)
+LINUX /%INSTALL_DIR%/boot/x86_64/vmlinuz-linux
+INITRD /%INSTALL_DIR%/boot/intel-ucode.img,/%INSTALL_DIR%/boot/amd-ucode.img,/%INSTALL_DIR%/boot/x86_64/initramfs-linux.img
+APPEND archisobasedir=%INSTALL_DIR% archisolabel=%ARCHISO_LABEL% quiet splash loglevel=3 udev.log_level=3 vt.global_cursor_default=0 cow_spacesize=5G copytoram=n driver=nonfree nouveau.modeset=0 radeon.modeset=1 i915.modeset=1 nvme_load=yes
+
+# NVIDIA Proprietary, No Nouveau
+LABEL arch64nonfreenonouveau
+TEXT HELP
+Boot Archcraft install medium on BIOS with proprietary drivers (NVIDIA).
+It allows you to install Archcraft or perform system maintenance.
+ENDTEXT
+MENU LABEL Boot Archcraft (x86_64, BIOS, NVIDIA, no nouveau)
+LINUX /%INSTALL_DIR%/boot/x86_64/vmlinuz-linux
+INITRD /%INSTALL_DIR%/boot/intel-ucode.img,/%INSTALL_DIR%/boot/amd-ucode.img,/%INSTALL_DIR%/boot/x86_64/initramfs-linux.img
+APPEND archisobasedir=%INSTALL_DIR% archisolabel=%ARCHISO_LABEL% quiet splash loglevel=3 udev.log_level=3 vt.global_cursor_default=0 cow_spacesize=5G copytoram=n driver=nonfreenonouveau nouveau.modeset=0 radeon.modeset=1 i915.modeset=1 nvme_load=yes
+
+# Nomodeset
+LABEL arch64nomodeset
+TEXT HELP
+Boot Archcraft install medium on BIOS with nomodeset.
+It allows you to install Archcraft or perform system maintenance.
+ENDTEXT
+MENU LABEL Boot Archcraft (x86_64, BIOS, nomodeset)
+LINUX /%INSTALL_DIR%/boot/x86_64/vmlinuz-linux
+INITRD /%INSTALL_DIR%/boot/intel-ucode.img,/%INSTALL_DIR%/boot/amd-ucode.img,/%INSTALL_DIR%/boot/x86_64/initramfs-linux.img
+APPEND archisobasedir=%INSTALL_DIR% archisolabel=%ARCHISO_LABEL% quiet splash loglevel=3 udev.log_level=3 vt.global_cursor_default=0 cow_spacesize=5G copytoram=n driver=free nomodeset nouveau.modeset=0 radeon.modeset=0 i915.modeset=0 nvme_load=yes
diff --git a/syslinux/archcraftiso_sys.cfg b/profile/syslinux/archcraftiso_sys.cfg
similarity index 100%
rename from syslinux/archcraftiso_sys.cfg
rename to profile/syslinux/archcraftiso_sys.cfg
diff --git a/profile/syslinux/archcraftiso_tail.cfg b/profile/syslinux/archcraftiso_tail.cfg
new file mode 100644
index 00000000..b1fad5ff
--- /dev/null
+++ b/profile/syslinux/archcraftiso_tail.cfg
@@ -0,0 +1,33 @@
+LABEL existing
+TEXT HELP
+Boot an existing operating system.
+Press TAB to edit the disk and partition number to boot.
+ENDTEXT
+MENU LABEL Boot From Hard Drive
+COM32 chain.c32
+APPEND hd0 0
+
+LABEL hdt
+TEXT HELP
+Show hardware information.
+Display the computer's hardware information with HDT.
+ENDTEXT
+MENU LABEL Hardware Information
+COM32 hdt.c32
+APPEND modules_alias=hdt/modalias.gz pciids=hdt/pciids.gz
+
+LABEL reboot
+TEXT HELP
+Reboot computer.
+The computer's firmware must support APM.
+ENDTEXT
+MENU LABEL Reboot Computer
+COM32 reboot.c32
+
+LABEL poweroff
+TEXT HELP
+Power off computer.
+The computer's firmware must support APM.
+ENDTEXT
+MENU LABEL Power Off Computer
+COM32 poweroff.c32
diff --git a/syslinux/splash.png b/profile/syslinux/splash.png
similarity index 100%
rename from syslinux/splash.png
rename to profile/syslinux/splash.png
diff --git a/syslinux/syslinux.cfg b/profile/syslinux/syslinux.cfg
similarity index 100%
rename from syslinux/syslinux.cfg
rename to profile/syslinux/syslinux.cfg
diff --git a/syslinux/archcraftiso_sys-linux.cfg b/syslinux/archcraftiso_sys-linux.cfg
deleted file mode 100644
index 5fd95d72..00000000
--- a/syslinux/archcraftiso_sys-linux.cfg
+++ /dev/null
@@ -1,20 +0,0 @@
-# Default
-LABEL arch64
-MENU LABEL Boot Archcraft (64bit, BIOS)
-LINUX /%INSTALL_DIR%/boot/x86_64/vmlinuz-linux
-INITRD /%INSTALL_DIR%/boot/intel-ucode.img,/%INSTALL_DIR%/boot/amd-ucode.img,/%INSTALL_DIR%/boot/x86_64/initramfs-linux.img
-APPEND archisobasedir=%INSTALL_DIR% archisolabel=%ARCHISO_LABEL% quiet splash loglevel=3 udev.log_level=3 vt.global_cursor_default=0 cow_spacesize=5G
-
-# Copy to RAM boot option
-LABEL arch64-ctr
-MENU LABEL Boot Archcraft (Copy to RAM)
-LINUX /%INSTALL_DIR%/boot/x86_64/vmlinuz-linux
-INITRD /%INSTALL_DIR%/boot/intel-ucode.img,/%INSTALL_DIR%/boot/amd-ucode.img,/%INSTALL_DIR%/boot/x86_64/initramfs-linux.img
-APPEND archisobasedir=%INSTALL_DIR% archisolabel=%ARCHISO_LABEL% copytoram quiet splash loglevel=3 udev.log_level=3 vt.global_cursor_default=0 cow_spacesize=1G
-
-# Nvidia propritary (Non-Free)
-LABEL arch64-nvidia
-MENU LABEL Boot Archcraft (64bit, NVIDIA)
-LINUX /%INSTALL_DIR%/boot/x86_64/vmlinuz-linux
-INITRD /%INSTALL_DIR%/boot/intel-ucode.img,/%INSTALL_DIR%/boot/amd-ucode.img,/%INSTALL_DIR%/boot/x86_64/initramfs-linux.img
-APPEND archisobasedir=%INSTALL_DIR% archisolabel=%ARCHISO_LABEL% quiet splash loglevel=3 udev.log_level=3 vt.global_cursor_default=0 cow_spacesize=5G nouveau.modeset=0 modprobe.blacklist=nouveau nvidia i915.modeset=1 radeon.modeset=1
diff --git a/syslinux/archcraftiso_tail.cfg b/syslinux/archcraftiso_tail.cfg
deleted file mode 100644
index 944ff9c7..00000000
--- a/syslinux/archcraftiso_tail.cfg
+++ /dev/null
@@ -1,17 +0,0 @@
-LABEL existing
-MENU LABEL Boot From Hard Drive
-COM32 chain.c32
-APPEND hd0 0
-
-LABEL hdt
-MENU LABEL Hardware Information
-COM32 hdt.c32
-APPEND modules_alias=hdt/modalias.gz pciids=hdt/pciids.gz
-
-LABEL reboot
-MENU LABEL Reboot Computer
-COM32 reboot.c32
-
-LABEL poweroff
-MENU LABEL Power Off Computer
-COM32 poweroff.c32