diff --git a/bin/omarchy-iso-make-offline b/bin/omarchy-iso-make-offline index b6c4784..091fc78 100755 --- a/bin/omarchy-iso-make-offline +++ b/bin/omarchy-iso-make-offline @@ -31,6 +31,7 @@ DOCKER_ARGS=( -v "$BUILD_ROOT/$BUILD_SCRIPT:/$BUILD_SCRIPT:ro" -v "$BUILD_ROOT/archiso:/archiso:ro" -v "$BUILD_ROOT/builder:/builder:ro" + -v "$BUILD_ROOT/configs:/configs:ro" ) # Use local pacman cache if you already have one on host to speed up repeat runs @@ -49,9 +50,6 @@ DOCKER_ARGS+=(-v "$BUILD_CACHE_DIR:/var/cache/airootfs/var/cache/omarchy") # Run the builder with assembled args docker run "${DOCKER_ARGS[@]}" archlinux/archlinux:latest /$BUILD_SCRIPT -# Make iso accessible to all -sudo chmod 777 -R "$BUILD_RELEASE_PATH" - # Move as install ref latest_iso=$(\ls -t "$BUILD_RELEASE_PATH"/*.iso | head -n1) iso_ref="${latest_iso%.*}-$OMARCHY_INSTALLER_REF.iso" diff --git a/builder/offline.sh b/builder/offline.sh index 4d73048..9c84ed6 100755 --- a/builder/offline.sh +++ b/builder/offline.sh @@ -42,21 +42,19 @@ prepare_offline_mirror() { # Start with base ISO packages (including our arch_packages already appended) all_packages=($(cat "$build_cache_dir/packages.x86_64")) - # Add packages from omarchy and archinstall - [ -f /builder/packages/omarchy.packages ] && all_packages+=($(grep -v '^#' /builder/packages/omarchy.packages | grep -v '^$')) - [ -f /builder/packages/archinstall.packages ] && all_packages+=($(grep -v '^#' /builder/packages/archinstall.packages | grep -v '^$')) + # Add packages from the omarchy installer's unified package list + all_packages+=($(grep -v '^#' "$build_cache_dir/airootfs/root/omarchy/install/omarchy-base.packages" | grep -v '^$')) + all_packages+=($(grep -v '^#' "$build_cache_dir/airootfs/root/omarchy/install/omarchy-other.packages" | grep -v '^$')) + + # Add archinstall needed packages + all_packages+=($(grep -v '^#' /builder/packages/archinstall.packages | grep -v '^$')) if [ ${#all_packages[@]} -gt 0 ]; then - # This assume we've manually built all the AUR packages - # and made them accessible "online" during the build process: - (cd $build_cache_dir/ && git apply /builder/patches/offline/aur-mirror.patch) - (cd $build_cache_dir/ && git apply /builder/patches/offline/enable-multilib.patch) - mkdir -p /tmp/offlinedb - # Download all the paclibffikages to the offline mirror inside the ISO + # Download all the packages to the offline mirror inside the ISO echo "Downloading all packages (including AUR) to offline mirror: ${all_packages[@]}" - pacman --config $build_cache_dir/pacman.conf \ + pacman --config /builder/pacman-mirror.conf \ --noconfirm -Syw "${all_packages[@]}" \ --cachedir $offline_mirror_dir/ \ --dbpath /tmp/offlinedb @@ -64,10 +62,6 @@ prepare_offline_mirror() { repo-add --new "$offline_mirror_dir/offline.db.tar.gz" "$offline_mirror_dir/"*.pkg.tar.zst rm "$build_cache_dir/airootfs/etc/pacman.d/hooks/uncomment-mirrors.hook" - - # Revert the "online" AUR patch, as we'll replace it with the proper - # offline patched mirror for the ISO later. - (cd $build_cache_dir && git apply -R /builder/patches/offline/aur-mirror.patch) fi } @@ -82,24 +76,37 @@ make_archiso_offline() { rm -rf "$build_cache_dir/airootfs/etc/xdg/reflector" } +####################### +# Build process start +####################### + mkdir -p $build_cache_dir/ mkdir -p $offline_mirror_dir/ mkdir -p $offline_ruby_dir/ # We base our ISO on the official arch ISO (releng) config cp -r archiso/configs/releng/* $build_cache_dir/ +rm "$build_cache_dir/airootfs/etc/motd" -# Add our needed packages to packages.x86_64 right away +# Bring in our configs +cp -r /configs/* $build_cache_dir/ +cat $build_cache_dir/grub/grub.cfg + +# Clone Omarchy itself +git clone -b $OMARCHY_INSTALLER_REF https://github.com/$OMARCHY_INSTALLER_REPO.git "$build_cache_dir/airootfs/root/omarchy" + +# Make log uploader available in the ISO too +mkdir -p "$build_cache_dir/airootfs/usr/local/bin/" +cp "$build_cache_dir/airootfs/root/omarchy/bin/omarchy-upload-log" "$build_cache_dir/airootfs/usr/local/bin/omarchy-upload-log" + +# Download the configurator +mkdir -p "$build_cache_dir/airootfs/root" +curl -fsSL -o "$build_cache_dir/airootfs/root/configurator" \ + "https://raw.githubusercontent.com/$OMARCHY_CONFIGURATOR_REPO/$OMARCHY_CONFIGURATOR_REF/configurator" + +# Add our additional packages to packages.x86_64 printf '%s\n' "${arch_packages[@]}" >>"$build_cache_dir/packages.x86_64" -# Apply all the general patches early (same as online.sh) -# Need to do this from the cache_dir -cd $build_cache_dir -for patch in /builder/patches/*.patch; do - git apply "$patch" -done -cd - - prepare_offline_mirror make_archiso_offline @@ -113,49 +120,19 @@ else echo "Ruby tarball already cached, skipping download" fi -# Insert the configurator in the root users home folder (default user in the official releng ISO profile). -mkdir -p "$build_cache_dir/airootfs/root" -curl -fsSL -o "$build_cache_dir/airootfs/root/configurator" \ - "https://raw.githubusercontent.com/$OMARCHY_CONFIGURATOR_REPO/$OMARCHY_CONFIGURATOR_REF/configurator" - -# Clone Omarchy itself -git clone -b $OMARCHY_INSTALLER_REF https://github.com/$OMARCHY_INSTALLER_REPO.git "$build_cache_dir/airootfs/root/omarchy" - -# Copy icons to the airootfs for offline installation -mkdir -p "$build_cache_dir/airootfs/root/.local/share/applications/icons" -cp /builder/icons/*.png "$build_cache_dir/airootfs/root/.local/share/applications/icons/" - -# Copy the autostart script (we'll need to create an offline version) -cp /builder/cmds/autostart-offline.sh $build_cache_dir/airootfs/root/.automated_script.sh - -# Copy the log upload utility to /usr/local/bin -mkdir -p "$build_cache_dir/airootfs/usr/local/bin" -cp /builder/cmds/omarchy-upload-install-log "$build_cache_dir/airootfs/usr/local/bin/" -chmod +x "$build_cache_dir/airootfs/usr/local/bin/omarchy-upload-install-log" - -# Remove the default motd -rm "$build_cache_dir/airootfs/etc/motd" - -# Ensure pacman cache directory exists with proper permissions -mkdir -p "$build_cache_dir/airootfs/var/cache/pacman/pkg" -chmod 755 "$build_cache_dir/airootfs/var/cache/pacman/pkg" - # Install Python packages for the installer into the ISO # file system. pip install "${python_packages[@]}" -# We have to do this, because `mkarchiso` copies in the pacman.conf -# in use during the build process - so it needs to be made offline. -(cd $build_cache_dir/ && git apply --reverse /builder/patches/offline/enable-multilib.patch) -(cd "$build_cache_dir" && git apply /builder/patches/offline/offline-mirror.patch) +# Copy the offline pacman.conf to the ISO's /etc directory +# so the live environment uses our offline mirror when booted cp $build_cache_dir/pacman.conf "$build_cache_dir/airootfs/etc/pacman.conf" -# And we also need to duplicate the offline mirror. -# Because inside the ISO it will look for packages in /var/cache/omarchy/mirror/offline -# but that means the build of the ISO itself will also look at this location -# but in the container. +# Create a symlink to the offline mirror instead of duplicating it. +# mkarchiso needs packages at /var/cache/omarchy/mirror/offline in the container, +# but they're actually in $build_cache_dir/airootfs/var/cache/omarchy/mirror/offline mkdir -p /var/cache/omarchy/mirror -cp -r "$offline_mirror_dir" "/var/cache/omarchy/mirror/" +ln -s "$offline_mirror_dir" "/var/cache/omarchy/mirror/offline" # Finally, we assemble the entire ISO mkarchiso -v -w "$build_cache_dir/work/" -o "/out/" "$build_cache_dir/" diff --git a/builder/packages/omarchy.packages b/builder/packages/omarchy.packages deleted file mode 100644 index f62d88e..0000000 --- a/builder/packages/omarchy.packages +++ /dev/null @@ -1,169 +0,0 @@ -# Installed via install/packages.sh -1password-beta -1password-cli -alacritty -asdcontrol-git -avahi -base -base-devel -bash-completion -bat -blueberry -brightnessctl -btop -cargo -clang -cups -cups-browsed -cups-filters -cups-pdf -docker -docker-buildx -docker-compose -dust -evince -eza -fastfetch -fcitx5 -fcitx5-gtk -fcitx5-qt -fd -ffmpegthumbnailer -fzf -gcc14 -github-cli -gnome-calculator -gnome-keyring -gnome-themes-extra -gum -gvfs-mtp -gvfs-smb -hypridle -hyprland -hyprland-qtutils -hyprlock -hyprpicker -hyprshot -hyprsunset -imagemagick -impala -imv -inetutils -intel-media-driver -jq -kdenlive -kvantum-qt5 -lazydocker -lazygit -less -libqalculate -libreoffice -libva-intel-driver -llvm -localsend -luarocks -mako -man -mariadb-libs -mise -mpv -nautilus -fontconfig -noto-fonts -noto-fonts-cjk -noto-fonts-emoji -noto-fonts-extra -nss-mdns -nvim -obs-studio -obsidian -omarchy-chromium -omarchy-lazyvim -pamixer -pinta -playerctl -plocate -plymouth -polkit-gnome -postgresql-libs -power-profiles-daemon -python-gobject -python-poetry-core -python-terminaltexteffects -qt5-wayland -ripgrep -satty -signal-desktop -slurp -spotify -starship -sushi -swaybg -swayosd -system-config-printer -tldr -tree-sitter-cli -ttf-cascadia-mono-nerd -ttf-ia-writer -ttf-jetbrains-mono-nerd -typora -tzupdate -ufw -ufw-docker -unzip -uwsm -walker-bin -waybar -wf-recorder -whois -wireless-regdb -wiremix -wireplumber -wl-clip-persist -wl-clipboard -wl-screenrec -woff2-font-awesome -xdg-desktop-portal-gtk -xdg-desktop-portal-hyprland -xmlstarlet -xournalpp -yaru-icon-theme -yay -zoxide - -# Installed elsewhere -autoconf-archive -btrfs-progs -dart -egl-wayland -git -gst-plugin-pipewire -gtk4-layer-shell -htop -intltool -iwd -jdk-openjdk -libpulse -libsass -libva-nvidia-driver -limine-mkinitcpio-hook -limine-snapper-sync -linux -linux-firmware -linux-headers -nvidia-dkms -nvidia-open-dkms -nvidia-utils -lib32-nvidia-utils -pipewire -pipewire-alsa -pipewire-jack -pipewire-pulse -qt5-remoteobjects -qt6-wayland -sassc -snapper -webp-pixbuf-loader -wget -yay-debug -zram-generator diff --git a/builder/pacman-mirror.conf b/builder/pacman-mirror.conf new file mode 100644 index 0000000..a410d1a --- /dev/null +++ b/builder/pacman-mirror.conf @@ -0,0 +1,27 @@ +# +# /etc/pacman.conf +# +# See the pacman.conf(5) manpage for option and repository directives + +[options] +HoldPkg = pacman glibc +Architecture = auto +ParallelDownloads = 5 + +# By default, pacman accepts packages signed by keys that its local keyring +# trusts (see pacman-key and its man page), as well as unsigned packages. +SigLevel = Required DatabaseOptional +LocalFileSigLevel = Optional + +[core] +Include = /etc/pacman.d/mirrorlist + +[extra] +Include = /etc/pacman.d/mirrorlist + +[multilib] +Include = /etc/pacman.d/mirrorlist + +[omarchy] +SigLevel = Optional TrustAll +Server = https://pkgs.omarchy.org/$arch diff --git a/configs/airootfs/root/.automated_script.sh b/configs/airootfs/root/.automated_script.sh new file mode 100644 index 0000000..47bf36c --- /dev/null +++ b/configs/airootfs/root/.automated_script.sh @@ -0,0 +1,149 @@ +#!/usr/bin/env bash +set -euo pipefail + +# Set Tokyo Night color scheme for the terminal +set_tokyo_night_colors() { + if [[ $(tty) == "/dev/tty"* ]]; then + # Tokyo Night color palette + echo -en "\e]P01a1b26" # black (background) + echo -en "\e]P1f7768e" # red + echo -en "\e]P29ece6a" # green + echo -en "\e]P3e0af68" # yellow + echo -en "\e]P47aa2f7" # blue + echo -en "\e]P5bb9af7" # magenta + echo -en "\e]P67dcfff" # cyan + echo -en "\e]P7a9b1d6" # white + echo -en "\e]P8414868" # bright black + echo -en "\e]P9f7768e" # bright red + echo -en "\e]PA9ece6a" # bright green + echo -en "\e]PBe0af68" # bright yellow + echo -en "\e]PC7aa2f7" # bright blue + echo -en "\e]PDbb9af7" # bright magenta + echo -en "\e]PE7dcfff" # bright cyan + echo -en "\e]PFc0caf5" # bright white (foreground) + + # Set default foreground and background + echo -en "\033[0m" + clear + fi +} + +run_configurator() { + set -euo pipefail + + # Configurator for user information, disk selection, and wifi configuration + NETWORK_NOT_NEEDED=true ./configurator + + # Get username from installer config for reliable error recovery + export OMARCHY_USER="$(jq -r '.users[0].username' user_credentials.json)" +} + +install_base_system() { + set -euo pipefail + + # Initialize and populate the keyring + pacman-key --init + pacman-key --populate archlinux + + # Sync the offline database so pacman can find packages + pacman -Sy --noconfirm + + # Install using files generated by the ./configurator + # Skip NTP and WKD sync since we're offline (keyring is pre-populated in ISO) + archinstall \ + --config user_configuration.json \ + --creds user_credentials.json \ + --silent \ + --skip-ntp \ + --skip-wkd + + # After archinstall sets up the base system but before our installer runs, + # we need to ensure the offline pacman.conf is in place + cp /etc/pacman.conf /mnt/etc/pacman.conf + + # Mount the offline mirror so it's accessible in the chroot + mkdir -p /mnt/var/cache/omarchy/mirror/offline + mount --bind /var/cache/omarchy/mirror/offline /mnt/var/cache/omarchy/mirror/offline + + # Mount the ruby directory so it's accessible in the chroot + mkdir -p /mnt/var/cache/omarchy/ruby + mount --bind /var/cache/omarchy/ruby /mnt/var/cache/omarchy/ruby + + # No need to ask for sudo during the installation (omarchy itself responsible for removing after install) + mkdir -p /mnt/etc/sudoers.d + cat >/mnt/etc/sudoers.d/99-omarchy-installer </dev/null || true +} + +chroot_bash() { + HOME=/home/$OMARCHY_USER \ + arch-chroot -u $OMARCHY_USER /mnt/ \ + env OMARCHY_CHROOT_INSTALL=1 \ + OMARCHY_OFFLINE_INSTALL=1 \ + OMARCHY_USER_NAME="$(&1 | sed -u 's/\x1b\[[0-9;]*[a-zA-Z]//g' >>"$LOG_FILE" + cleanup + + # Get username from the config file after installation + OMARCHY_USER="$(jq -r '.users[0].username' user_credentials.json)" + + # Install gum early so we have it for formatting + chroot_bash -lc "sudo pacman -S --noconfirm --needed gum" >/dev/null + + # Run Omarchy installer directly (skip boot.sh since it would try to clone again) + chroot_bash -lc "source /home/$OMARCHY_USER/.local/share/omarchy/install.sh || bash" +fi diff --git a/configs/airootfs/root/.local/share/applications/icons/Basecamp.png b/configs/airootfs/root/.local/share/applications/icons/Basecamp.png new file mode 100644 index 0000000..3edec48 Binary files /dev/null and b/configs/airootfs/root/.local/share/applications/icons/Basecamp.png differ diff --git a/configs/airootfs/root/.local/share/applications/icons/ChatGPT.png b/configs/airootfs/root/.local/share/applications/icons/ChatGPT.png new file mode 100644 index 0000000..cc68d78 Binary files /dev/null and b/configs/airootfs/root/.local/share/applications/icons/ChatGPT.png differ diff --git a/configs/airootfs/root/.local/share/applications/icons/Discord.png b/configs/airootfs/root/.local/share/applications/icons/Discord.png new file mode 100644 index 0000000..a82dbc6 Binary files /dev/null and b/configs/airootfs/root/.local/share/applications/icons/Discord.png differ diff --git a/configs/airootfs/root/.local/share/applications/icons/Disk Usage.png b/configs/airootfs/root/.local/share/applications/icons/Disk Usage.png new file mode 100644 index 0000000..6cc55ba Binary files /dev/null and b/configs/airootfs/root/.local/share/applications/icons/Disk Usage.png differ diff --git a/configs/airootfs/root/.local/share/applications/icons/Docker.png b/configs/airootfs/root/.local/share/applications/icons/Docker.png new file mode 100644 index 0000000..aeadd22 Binary files /dev/null and b/configs/airootfs/root/.local/share/applications/icons/Docker.png differ diff --git a/configs/airootfs/root/.local/share/applications/icons/Figma.png b/configs/airootfs/root/.local/share/applications/icons/Figma.png new file mode 100644 index 0000000..62ffa90 Binary files /dev/null and b/configs/airootfs/root/.local/share/applications/icons/Figma.png differ diff --git a/configs/airootfs/root/.local/share/applications/icons/GitHub.png b/configs/airootfs/root/.local/share/applications/icons/GitHub.png new file mode 100644 index 0000000..f3248e4 Binary files /dev/null and b/configs/airootfs/root/.local/share/applications/icons/GitHub.png differ diff --git a/configs/airootfs/root/.local/share/applications/icons/Google Contacts.png b/configs/airootfs/root/.local/share/applications/icons/Google Contacts.png new file mode 100644 index 0000000..6d99dc8 Binary files /dev/null and b/configs/airootfs/root/.local/share/applications/icons/Google Contacts.png differ diff --git a/configs/airootfs/root/.local/share/applications/icons/Google Messages.png b/configs/airootfs/root/.local/share/applications/icons/Google Messages.png new file mode 100644 index 0000000..bc911a5 Binary files /dev/null and b/configs/airootfs/root/.local/share/applications/icons/Google Messages.png differ diff --git a/configs/airootfs/root/.local/share/applications/icons/Google Photos.png b/configs/airootfs/root/.local/share/applications/icons/Google Photos.png new file mode 100644 index 0000000..8b8c642 Binary files /dev/null and b/configs/airootfs/root/.local/share/applications/icons/Google Photos.png differ diff --git a/configs/airootfs/root/.local/share/applications/icons/HEY.png b/configs/airootfs/root/.local/share/applications/icons/HEY.png new file mode 100644 index 0000000..3ac92d9 Binary files /dev/null and b/configs/airootfs/root/.local/share/applications/icons/HEY.png differ diff --git a/configs/airootfs/root/.local/share/applications/icons/WhatsApp.png b/configs/airootfs/root/.local/share/applications/icons/WhatsApp.png new file mode 100644 index 0000000..10ecdfb Binary files /dev/null and b/configs/airootfs/root/.local/share/applications/icons/WhatsApp.png differ diff --git a/configs/airootfs/root/.local/share/applications/icons/X.png b/configs/airootfs/root/.local/share/applications/icons/X.png new file mode 100644 index 0000000..99131de Binary files /dev/null and b/configs/airootfs/root/.local/share/applications/icons/X.png differ diff --git a/configs/airootfs/root/.local/share/applications/icons/YouTube.png b/configs/airootfs/root/.local/share/applications/icons/YouTube.png new file mode 100644 index 0000000..46ed4ca Binary files /dev/null and b/configs/airootfs/root/.local/share/applications/icons/YouTube.png differ diff --git a/configs/airootfs/root/.local/share/applications/icons/Zoom.png b/configs/airootfs/root/.local/share/applications/icons/Zoom.png new file mode 100644 index 0000000..622db52 Binary files /dev/null and b/configs/airootfs/root/.local/share/applications/icons/Zoom.png differ diff --git a/configs/efiboot/loader/loader.conf b/configs/efiboot/loader/loader.conf new file mode 100644 index 0000000..d92d6a4 --- /dev/null +++ b/configs/efiboot/loader/loader.conf @@ -0,0 +1,3 @@ +timeout 0 +default 01-archiso-x86_64-linux.conf +beep off diff --git a/configs/grub/grub.cfg b/configs/grub/grub.cfg new file mode 100644 index 0000000..abaf217 --- /dev/null +++ b/configs/grub/grub.cfg @@ -0,0 +1,108 @@ +# Load partition table and file system modules +insmod part_gpt +insmod part_msdos +insmod fat +insmod iso9660 +insmod ntfs +insmod ntfscomp +insmod exfat +insmod udf + +# Use graphics-mode output +if loadfont "${prefix}/fonts/unicode.pf2" ; then + insmod all_video + set gfxmode="auto" + terminal_input console + terminal_output console +fi + +# Enable serial console +insmod serial +insmod usbserial_common +insmod usbserial_ftdi +insmod usbserial_pl2303 +insmod usbserial_usbdebug +if serial --unit=0 --speed=115200; then + terminal_input --append serial + terminal_output --append serial +fi + +# Get a human readable platform identifier +if [ "${grub_platform}" == 'efi' ]; then + archiso_platform='UEFI' + if [ "${grub_cpu}" == 'x86_64' ]; then + archiso_platform="x64 ${archiso_platform}" + elif [ "${grub_cpu}" == 'i386' ]; then + archiso_platform="IA32 ${archiso_platform}" + else + archiso_platform="${grub_cpu} ${archiso_platform}" + fi +elif [ "${grub_platform}" == 'pc' ]; then + archiso_platform='BIOS' +else + archiso_platform="${grub_cpu} ${grub_platform}" +fi + +# Set default menu entry +default=archlinux +timeout=0 +timeout_style=hidden + + +# Menu entries + +menuentry "Arch Linux install medium (%ARCH%, ${archiso_platform})" --class arch --class gnu-linux --class gnu --class os --id 'archlinux' { + set gfxpayload=keep + linux /%INSTALL_DIR%/boot/%ARCH%/vmlinuz-linux archisobasedir=%INSTALL_DIR% archisosearchuuid=%ARCHISO_UUID% + initrd /%INSTALL_DIR%/boot/%ARCH%/initramfs-linux.img +} + +menuentry "Arch Linux install medium with speakup screen reader (%ARCH%, ${archiso_platform})" --hotkey s --class arch --class gnu-linux --class gnu --class os --id 'archlinux-accessibility' { + set gfxpayload=keep + linux /%INSTALL_DIR%/boot/%ARCH%/vmlinuz-linux archisobasedir=%INSTALL_DIR% archisosearchuuid=%ARCHISO_UUID% accessibility=on + initrd /%INSTALL_DIR%/boot/%ARCH%/initramfs-linux.img +} + + +if [ "${grub_platform}" == 'efi' -a "${grub_cpu}" == 'x86_64' -a -f '/boot/memtest86+/memtest.efi' ]; then + menuentry 'Run Memtest86+ (RAM test)' --class memtest86 --class memtest --class gnu --class tool { + set gfxpayload=800x600,1024x768 + linux /boot/memtest86+/memtest.efi + } +fi +if [ "${grub_platform}" == 'pc' -a -f '/boot/memtest86+/memtest' ]; then + menuentry 'Run Memtest86+ (RAM test)' --class memtest86 --class memtest --class gnu --class tool { + set gfxpayload=800x600,1024x768 + linux /boot/memtest86+/memtest + } +fi +if [ "${grub_platform}" == 'efi' ]; then + if [ "${grub_cpu}" == 'x86_64' -a -f '/shellx64.efi' ]; then + menuentry 'UEFI Shell' --class efi { + chainloader /shellx64.efi + } + elif [ "${grub_cpu}" == "i386" -a -f '/shellia32.efi' ]; then + menuentry 'UEFI Shell' --class efi { + chainloader /shellia32.efi + } + fi + + menuentry 'UEFI Firmware Settings' --id 'uefi-firmware' { + fwsetup + } +fi + +menuentry 'System shutdown' --class shutdown --class poweroff { + echo 'System shutting down...' + halt +} + +menuentry 'System restart' --class reboot --class restart { + echo 'System rebooting...' + reboot +} + + +# GRUB init tune for accessibility +play 600 988 1 1319 4 + diff --git a/configs/pacman.conf b/configs/pacman.conf new file mode 100644 index 0000000..45051ad --- /dev/null +++ b/configs/pacman.conf @@ -0,0 +1,18 @@ +# +# /etc/pacman.conf +# +# See the pacman.conf(5) manpage for option and repository directives +[options] +HoldPkg = pacman glibc +Architecture = auto +NoProgressBar +ParallelDownloads = 5 + +# By default, pacman accepts packages signed by keys that its local keyring +# trusts (see pacman-key and its man page), as well as unsigned packages. +SigLevel = Required DatabaseOptional +LocalFileSigLevel = Optional + +[offline] +SigLevel = Optional TrustAll +Server = file:///var/cache/omarchy/mirror/offline/ diff --git a/configs/profiledef.sh b/configs/profiledef.sh new file mode 100644 index 0000000..20cf7fa --- /dev/null +++ b/configs/profiledef.sh @@ -0,0 +1,29 @@ +#!/usr/bin/env bash +# shellcheck disable=SC2034 + +iso_name="omarchy" +iso_label="ARCH_$(date --date="@${SOURCE_DATE_EPOCH:-$(date +%s)}" +%Y%m)" +iso_publisher="Omarchy " +iso_application="Omarchy Installer" +iso_version="$(date --date="@${SOURCE_DATE_EPOCH:-$(date +%s)}" +%Y.%m.%d)" +install_dir="arch" +buildmodes=('iso') +bootmodes=('bios.syslinux.mbr' 'bios.syslinux.eltorito' + 'uefi-ia32.systemd-boot.esp' 'uefi-x64.systemd-boot.esp' + 'uefi-ia32.systemd-boot.eltorito' 'uefi-x64.systemd-boot.eltorito') +arch="x86_64" +pacman_conf="pacman.conf" +airootfs_image_type="squashfs" +airootfs_image_tool_options=('-comp' 'xz' '-Xbcj' 'x86' '-b' '1M' '-Xdict-size' '1M') +bootstrap_tarball_compression=('zstd' '-c' '-T0' '--auto-threads=logical' '--long' '-19') +file_permissions=( + ["/etc/shadow"]="0:0:400" + ["/root"]="0:0:750" + ["/root/.automated_script.sh"]="0:0:755" + ["/root/.gnupg"]="0:0:700" + ["/usr/local/bin/choose-mirror"]="0:0:755" + ["/root/configurator"]="0:0:755" + ["/var/cache/omarchy/mirror/offline/"]="0:0:775" + ["/usr/bin/tte"]="0:0:755" + ["/usr/local/bin/omarchy-upload-log"]="0:0:755" +)