Switch to offline experience image

This commit is contained in:
theVakhovskeIsTaken 2022-11-06 13:52:38 +03:00
parent 80920274e0
commit d0fbdbcc65
18 changed files with 564 additions and 256 deletions

View File

@ -1,62 +0,0 @@
# GRUB boot loader configuration
GRUB_DEFAULT=0
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="Arch"
GRUB_CMDLINE_LINUX_DEFAULT="loglevel=3 quiet audit=0"
GRUB_CMDLINE_LINUX=""
# Preload both GPT and MBR modules so that they are not missed
GRUB_PRELOAD_MODULES="part_gpt part_msdos"
# Uncomment to enable booting from LUKS encrypted devices
GRUB_ENABLE_CRYPTODISK=y
# Set to 'countdown' or 'hidden' to change timeout behavior,
# press ESC key to display menu.
GRUB_TIMEOUT_STYLE=menu
# Uncomment to use basic console
GRUB_TERMINAL_INPUT=console
# Uncomment to disable graphical terminal
#GRUB_TERMINAL_OUTPUT=console
# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command `vbeinfo'
GRUB_GFXMODE=auto
# Uncomment to allow the kernel use the same resolution used by grub
GRUB_GFXPAYLOAD_LINUX=keep
# Uncomment if you want GRUB to pass to the Linux kernel the old parameter
# format "root=/dev/xxx" instead of "root=/dev/disk/by-uuid/xxx"
#GRUB_DISABLE_LINUX_UUID=true
# Uncomment to disable generation of recovery mode menu entries
GRUB_DISABLE_RECOVERY=true
# Uncomment and set to the desired menu colors. Used by normal and wallpaper
# modes only. Entries specified as foreground/background.
#GRUB_COLOR_NORMAL="white/black"
#GRUB_COLOR_HIGHLIGHT="light-cyan/black"
# Uncomment one of them for the gfx desired, a image background or a gfxtheme
#This background comes in the minimal and flagship editions
#GRUB_BACKGROUND="/usr/share/wallpapers/real-wood/real-wood.jpg"
#GRUB_THEME=
# Uncomment to get a beep at GRUB start
#GRUB_INIT_TUNE="480 440 1"
# Uncomment to make GRUB remember the last selection. This requires
# setting 'GRUB_DEFAULT=saved' above. Change 0 into saved.
# Do not forget to 'update-grub' in a terminal to apply the new settings
#GRUB_SAVEDEFAULT="true"
# Uncomment to make grub stop using submenus
#GRUB_DISABLE_SUBMENU=y
#New GRUB update disables OS prober by default. We don't want that.
GRUB_DISABLE_OS_PROBER=false

View File

@ -0,0 +1,8 @@
[Flatpak Repo]
Title=Flathub Beta
Url=https://dl.flathub.org/beta-repo/
Homepage=https://flathub.org/
Comment=Beta builds of Flatpak applications
Description=Beta builds of Flatpak applications
Icon=https://dl.flathub.org/repo/logo.svg
GPGKey=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

View File

@ -0,0 +1,352 @@
#!/bin/zsh
# HoloISO Installer v2
# This defines all of the current variables.
HOLO_INSTALL_DIR="${HOLO_INSTALL_DIR:-/mnt}"
IS_WIN600=$(cat /sys/devices/virtual/dmi/id/product_name | grep Win600)
IS_STEAMDECK=$(cat /sys/devices/virtual/dmi/id/product_name | grep Jupiter)
if [ -n "${IS_WIN600}" ]; then
GAMEPAD_DRV="1"
INST_MSG1=$(echo "You're running this on Anbernic Win600. A suitable gamepad driver will be installed.")
fi
if [ -n "${IS_STEAMDECK}" ]; then
FIRMWARE_INSTALL="1"
INST_MSG1=$(echo "You're running this on a Steam Deck. linux-firmware-neptune will be installed to ensure maximum kernel-side compatibility.")
fi
check_mount(){
if [ $1 != 0 ]; then
echo "\nError: Something went wrong when mounting $2 partitions. Please try again!\n"
echo 'Press any key to exit...'; read -k1 -s
exit 1
fi
}
check_download(){
if [ $1 != 0 ]; then
echo "\nError: Something went wrong when $2.\nPlease make sure you have a stable internet connection!\n"
echo 'Press any key to exit...'; read -k1 -s
exit 1
fi
}
partitioning(){
echo "Select your drive in popup:"
DRIVEDEVICE=$(lsblk -d -o NAME | sed "1d" | awk '{ printf "FALSE""\0"$0"\0" }' | \
xargs -0 zenity --list --width=600 --height=512 --title="Select disk" --text="Select your disk to install HoloISO in below:\n\n $(lsblk -d -o NAME,MAJ:MIN,RM,SIZE,RO,TYPE,VENDOR,MODEL,SERIAL,MOUNTPOINT)" \
--radiolist --multiple --column ' ' --column 'Disks')
DEVICE="/dev/${DRIVEDEVICE}"
INSTALLDEVICE="${DEVICE}"
if [ ! -b $DEVICE ]; then
echo "$DEVICE not found! Installation Aborted!"
exit 1
fi
lsblk $DEVICE | head -n2 | tail -n1 | grep disk > /dev/null 2>&1
if [ $? != 0 ]; then
echo "$DEVICE is not disk type! Installation Aborted!"
echo "\nNote: If you wish to preform partition install.\nPlease specify the disk drive node first then select \"2\" for partition install."
exit 1
fi
echo "\nChoose your partitioning type:"
install=$(zenity --list --title="Choose your installation type:" --column="Type" --column="Name" 1 "Erase entire drive" \2 "Install alongside existing OS/Partition (Requires at least 50 GB of free space from the end)" --width=700 --height=220)
case $install in
1)
destructive=true
# Umount twice to fully umount the broken install of steam os 3 before installing.
umount $INSTALLDEVICE* > /dev/null 2>&1
umount $INSTALLDEVICE* > /dev/null 2>&1
$INST_MSG1
if zenity --question --text "WARNING: The following drive is going to be fully erased. ALL DATA ON DRIVE ${DEVICE} WILL BE LOST! \n\n$(lsblk -o NAME,MAJ:MIN,RM,SIZE,RO,TYPE,VENDOR,MODEL,SERIAL,MOUNTPOINT ${DEVICE} | sed "1d")\n\nErase ${DEVICE} and begin installation?" --width=700
then
echo "\nWiping partitions..."
sfdisk --delete ${DEVICE}
wipefs -a ${DEVICE}
echo "\nCreating new gpt partitions..."
parted ${DEVICE} mklabel gpt
else
echo "\nNothing has been written.\nYou canceled the destructive install, please try again"
echo 'Press any key to exit...'; read -k1 -s
exit 1
fi
;;
2)
echo "\nHoloISO will be installed alongside existing OS/Partition.\nPlease make sure there are more than 24 GB on the >>END<< of free(unallocate) space available\n"
parted $DEVICE print free
echo "HoloISO will be installed on the following free (unallocated) space.\n"
parted $DEVICE print free | tail -n2 | grep "Free Space"
if [ $? != 0 ]; then
echo "Error! No Free Space found on the end of the disk.\nNothing has been written.\nYou canceled the non-destructive install, please try again"
exit 1
echo 'Press any key to exit...'; read -k1 -s
fi
$INST_MSG1
if zenity --question --text "HoloISO will be installed on the following free (unallocated) space.\nDoes this look reasonable?\n$(sudo parted ${DEVICE} print free | tail -n2 | grep "Free Space")" --width=500
then
echo "\nBeginning installation..."
else
echo "\nNothing has been written.\nYou canceled the non-destructive install, please try again"
echo 'Press any key to exit...'; read -k1 -s
exit 1
fi
;;
esac
numPartitions=$(grep -c ${DRIVEDEVICE}'[0-9]' /proc/partitions)
echo ${DEVICE} | grep -q -P "^/dev/(nvme|loop|mmcblk)"
if [ $? -eq 0 ]; then
INSTALLDEVICE="${DEVICE}p"
numPartitions=$(grep -c ${DRIVEDEVICE}p /proc/partitions)
fi
efiPartNum=$(expr $numPartitions + 1)
rootPartNum=$(expr $numPartitions + 2)
homePartNum=$(expr $numPartitions + 3)
echo "\nCalculating start and end of free space..."
diskSpace=$(awk '/'${DRIVEDEVICE}'/ {print $3; exit}' /proc/partitions)
# <= 60GB: typical flash drive
if [ $diskSpace -lt 60000000 ]; then
digitMB=8
realDiskSpace=$(parted ${DEVICE} unit MB print free|head -n2|tail -n1|cut -c 16-20)
# <= 500GB: typical 512GB hard drive
elif [ $diskSpace -lt 500000000 ]; then
digitMB=8
realDiskSpace=$(parted ${DEVICE} unit MB print free|head -n2|tail -n1|cut -c 20-25)
# anything else: typical 1024GB hard drive
else
digitMB=9
realDiskSpace=$(parted ${DEVICE} unit MB print free|head -n2|tail -n1|cut -c 20-26)
fi
if [ $destructive ]; then
efiStart=2
else
efiStart=$(parted ${DEVICE} unit MB print free|tail -n2|sed s/' '//|cut -c1-$digitMB|sed s/MB//|sed s/' '//g)
fi
efiEnd=$(expr $efiStart + 256)
rootStart=$efiEnd
rootEnd=$(expr $rootStart + 24000)
if [ $efiEnd -gt $realDiskSpace ]; then
echo "Not enough space available, please choose another disk and try again"
exit 1
echo 'Press any key to exit...'; read -k1 -s
fi
echo "\nCreating partitions..."
parted ${DEVICE} mkpart primary fat32 ${efiStart}M ${efiEnd}M
parted ${DEVICE} set ${efiPartNum} boot on
parted ${DEVICE} set ${efiPartNum} esp on
# If the available storage is less than 64GB, don't create /home.
# If the boot device is mmcblk0, don't create an ext4 partition or it will break steamOS versions
# released after May 20.
if [ $diskSpace -lt 64000000 ] || [[ "${DEVICE}" =~ mmcblk0 ]]; then
parted ${DEVICE} mkpart primary btrfs ${rootStart}M 100%
else
parted ${DEVICE} mkpart primary btrfs ${rootStart}M ${rootEnd}M
parted ${DEVICE} mkpart primary ext4 ${rootEnd}M 100%
home=true
fi
root_partition="${INSTALLDEVICE}${rootPartNum}"
mkfs -t vfat ${INSTALLDEVICE}${efiPartNum}
efi_partition="${INSTALLDEVICE}${efiPartNum}"
fatlabel ${INSTALLDEVICE}${efiPartNum} HOLOEFI
mkfs -t btrfs -f ${root_partition}
btrfs filesystem label ${root_partition} holo-root
if [ $home ]; then
mkfs -t ext4 -O casefold ${INSTALLDEVICE}${homePartNum}
home_partition="${INSTALLDEVICE}${homePartNum}"
e2label "${INSTALLDEVICE}${homePartNum}" holo-home
fi
echo "\nPartitioning complete, mounting and pacstrapping..."
}
base_os_install() {
# Added failsafe check to prevent dualboot being fucked
#OSROOT=/dev/disk/by-label/holo-root
#OSHOME=/dev/disk/by-label/holo-home
#if [[ -f "$OSROOT" ]]; then
# echo "It appears that HoloISO installation was found on your device"
# read "?Do you want to format your installation or start over? (yN) " OSROOT_REDO
# if [[ "${OSROOT_REDO}" == "y" ]] || [[ "${OSROOT_REDO}" == "Y" ]]; then
# mkfs -t vfat /dev/disk/by-label/HOLOEFI
# mkfs -t btrfs -f /dev/disk/by-label/holo-root
# if [[ -f "$OSHOME" ]]; then
# echo "Installation with home detected... Formatting..."
# mkfs -t ext4 -O casefold /dev/disk/by-label/holo-home
# home_partition="/dev/disk/by-label/holo-home"
# else
# echo "Home partition not required... Skipping..."
# fi
# root_partition="/dev/disk/by-label/holo-root"
# efi_partition="/dev/disk/by-label/HOLOEFI"
# elif [[ "${OSROOT_REDO}" == "n" ]] || [[ "${OSROOT_REDO}" == "N" ]]; then
# partitioning
# fi
#else
sleep 1
clear
partitioning
#fi
# Actual installer below:
echo "${UCODE_INSTALL_MSG}"
sleep 1
clear
mount -t btrfs -o subvol=/,compress-force=zstd:1,discard,noatime,nodiratime ${root_partition} ${HOLO_INSTALL_DIR}
check_mount $? root
${CMD_MOUNT_BOOT}
check_mount $? boot
echo "Bootstrapping root filesystem...\nThis may take more than 10 minutes.\n"
rsync -axHAWXS --numeric-ids --info=progress2 / ${HOLO_INSTALL_DIR}
arch-chroot ${HOLO_INSTALL_DIR} install -Dm644 "$(find /usr/lib | grep vmlinuz | grep neptune)" "/boot/vmlinuz-$(cat /usr/lib/modules/*neptune*/pkgbase)"
cp -r /etc/holoinstall/post_install/pacman.conf ${HOLO_INSTALL_DIR}/etc/pacman.conf
arch-chroot ${HOLO_INSTALL_DIR} pacman-key --init
arch-chroot ${HOLO_INSTALL_DIR} pacman -Rdd --noconfirm mkinitcpio-archiso
arch-chroot ${HOLO_INSTALL_DIR} mkinitcpio -P
arch-chroot ${HOLO_INSTALL_DIR} pacman -U --noconfirm $(find /etc/holoinstall/post_install/pkgs | grep pkg.tar.zst)
arch-chroot ${HOLO_INSTALL_DIR} userdel -r liveuser
arch-chroot ${HOLO_INSTALL_DIR} rm -rf /home/*
check_download $? "installing base package"
sleep 2
clear
if [ $home ]; then
mount -t ext4 ${home_partition} ${HOLO_INSTALL_DIR}/home
check_mount $? home
fi
sleep 1
clear
echo "\nBase system installation done, generating fstab..."
genfstab -U -p /mnt >> /mnt/etc/fstab
sleep 1
clear
echo "Configuring first boot user accounts..."
rm ${HOLO_INSTALL_DIR}/etc/skel/Desktop/*
arch-chroot ${HOLO_INSTALL_DIR} rm /etc/sddm.conf.d/*
mv /etc/holoinstall/post_install_shortcuts/steam.desktop /etc/holoinstall/post_install_shortcuts/desktopshortcuts.desktop ${HOLO_INSTALL_DIR}/etc/xdg/autostart
mv /etc/holoinstall/post_install_shortcuts/steamos-gamemode.desktop ${HOLO_INSTALL_DIR}/etc/skel/Desktop
# Setup password for root
while true; do
ROOTPASS=$(zenity --forms --title="Account configuration" --text="Set root/system administrator password" --add-password="Password for user root")
if [ -z $ROOTPASS ]; then
zenity --warning --text "No password was set for user \"root\"!" --width=300
break
fi
echo
ROOTPASS_CONF=$(zenity --forms --title="Account configuration" --text="Confirm your root password" --add-password="Password for user root")
echo
if [ $ROOTPASS = $ROOTPASS_CONF ]; then
break
fi
zenity --warning --text "Passwords not match." --width=300
done
# Create user
NAME_REGEX="^[a-z][-a-z0-9_]*\$"
while true; do
HOLOUSER=$(zenity --entry --title="Account creation" --text "Enter username for this installation:")
if [ $HOLOUSER = "root" ]; then
zenity --warning --text "User root already exists." --width=300
elif [ -z $HOLOUSER ]; then
zenity --warning --text "Please create a user!" --width=300
elif [ ${#HOLOUSER} -gt 32 ]; then
zenity --warning --text "Username length must not exceed 32 characters!" --width=400
elif [[ ! $HOLOUSER =~ $NAME_REGEX ]]; then
zenity --warning --text "Invalid username \"$HOLOUSER\"\nUsername needs to follow these rules:\n\n- Must start with a lowercase letter.\n- May only contain lowercase letters, digits, hyphens, and underscores." --width=500
else
break
fi
done
# Setup password for user
while true; do
HOLOPASS=$(zenity --forms --title="Account configuration" --text="Set password for $HOLOUSER" --add-password="Password for user $HOLOUSER")
echo
HOLOPASS_CONF=$(zenity --forms --title="Account configuration" --text="Confirm password for $HOLOUSER" --add-password="Password for user $HOLOUSER")
echo
if [ -z $HOLOPASS ]; then
zenity --warning --text "Please type password for user \"$HOLOUSER\"!" --width=300
HOLOPASS_CONF=unmatched
fi
if [ $HOLOPASS = $HOLOPASS_CONF ]; then
break
fi
zenity --warning --text "Passwords do not match." --width=300
done
echo "\nCreating user ${HOLOUSER}..."
echo -e "${ROOTPASS}\n${ROOTPASS}" | arch-chroot ${HOLO_INSTALL_DIR} passwd root
arch-chroot ${HOLO_INSTALL_DIR} useradd --create-home ${HOLOUSER}
echo -e "${HOLOPASS}\n${HOLOPASS}" | arch-chroot ${HOLO_INSTALL_DIR} passwd ${HOLOUSER}
echo "${HOLOUSER} ALL=(root) NOPASSWD:ALL" > ${HOLO_INSTALL_DIR}/etc/sudoers.d/${HOLOUSER}
chmod 0440 ${HOLO_INSTALL_DIR}/etc/sudoers.d/${HOLOUSER}
echo "127.0.1.1 ${HOLOHOSTNAME}" >> ${HOLO_INSTALL_DIR}/etc/hosts
sleep 1
clear
echo "\nInstalling bootloader..."
mkdir -p ${HOLO_INSTALL_DIR}/boot/efi
mount -t vfat ${efi_partition} ${HOLO_INSTALL_DIR}/boot/efi
arch-chroot ${HOLO_INSTALL_DIR} holoiso-grub-update
sleep 1
clear
}
full_install() {
if [[ "${GAMEPAD_DRV}" == "1" ]]; then
echo "You're running this on Anbernic Win600. A suitable gamepad driver will be installed."
arch-chroot ${HOLO_INSTALL_DIR} pacman -U --noconfirm $(find /etc/holoinstall/post_install/pkgs_addon | grep win600-xpad-dkms)
fi
if [[ "${FIRMWARE_INSTALL}" == "1" ]]; then
echo "You're running this on a Steam Deck. linux-firmware-neptune will be installed to ensure maximum kernel-side compatibility."
arch-chroot ${HOLO_INSTALL_DIR} pacman -Rdd --noconfirm linux-firmware
arch-chroot ${HOLO_INSTALL_DIR} pacman -U --noconfirm $(find /etc/holoinstall/post_install/pkgs_addon | grep linux-neptune-firmware)
arch-chroot ${HOLO_INSTALL_DIR} mkinitcpio -P
fi
echo "\nConfiguring Steam Deck UI by default..."
ln -s /usr/share/applications/steam.desktop ${HOLO_INSTALL_DIR}/etc/skel/Desktop/steam.desktop
echo "[General]\nDisplayServer=wayland\n\n[Autologin]\nUser=${HOLOUSER}\nSession=gamescope-wayland.desktop" >> ${HOLO_INSTALL_DIR}/etc/sddm.conf.d/autologin.conf
arch-chroot ${HOLO_INSTALL_DIR} systemctl enable holoiso-reboot-tracker
arch-chroot ${HOLO_INSTALL_DIR} usermod -a -G rfkill ${HOLOUSER}
arch-chroot ${HOLO_INSTALL_DIR} usermod -a -G wheel ${HOLOUSER}
echo "Preparing Steam OOBE..."
arch-chroot ${HOLO_INSTALL_DIR} sudo -u ${HOLOUSER} steam
check_download $? "installing flatpak"
echo "Preparing flatpak..."
arch-chroot ${HOLO_INSTALL_DIR} flatpak remote-add --if-not-exists flathub-beta /etc/holoinstall/post_install/flathub-beta.flatpakrepo
echo "Cleaning up..."
arch-chroot ${HOLO_INSTALL_DIR} rm -rf /etc/holoinstall
sleep 1
clear
}
# The installer itself. Good wuck.
echo "SteamOS 3 Installer"
echo "Start time: $(date)"
echo "Please choose installation type:"
HOLO_INSTALL_TYPE=$(zenity --list --title="Choose your installation type:" --column="Type" --column="Name" 1 "barebones (Will install base SteamOS 3 root filesystem and hooks)" \2 "deck-experience (Will install full SteamOS 3 including gamescope and Plasma DE)" --width=700 --height=220)
if [[ "${HOLO_INSTALL_TYPE}" == "1" ]] || [[ "${HOLO_INSTALL_TYPE}" == "barebones" ]]; then
echo "Installing SteamOS, barebones configuration..."
base_os_install
echo "Installation finished! You may reboot now, or type arch-chroot /mnt to make further changes"
echo 'Press any key to exit...'; read -k1 -s
elif [[ "${HOLO_INSTALL_TYPE}" == "2" ]]; then
echo "Installing SteamOS, deckperience configuration..."
base_os_install
full_install
echo "Installation finished! You may reboot now, or type arch-chroot /mnt to make further changes"
echo 'Press any key to exit...'; read -k1 -s
else
echo "Invalid choice. Exiting installer..."
fi
echo "End time: $(date)"

View File

@ -0,0 +1,14 @@
# mkinitcpio preset file for the 'linux-neptune' package
ALL_config="/etc/mkinitcpio.conf"
ALL_kver="/boot/vmlinuz-linux-neptune"
PRESETS=('default' 'fallback')
#default_config="/etc/mkinitcpio.conf"
default_image="/boot/initramfs-linux-neptune.img"
#default_options=""
#fallback_config="/etc/mkinitcpio.conf"
fallback_image="/boot/initramfs-linux-neptune-fallback.img"
fallback_options="-S autodetect"

View File

@ -0,0 +1,115 @@
#
# /etc/pacman.conf
#
# See the pacman.conf(5) manpage for option and repository directives
#
# GENERAL OPTIONS
#
[options]
# The following paths are commented out with their default values listed.
# If you wish to use different paths, uncomment and update the paths.
#RootDir = /
#DBPath = /var/lib/pacman/
#CacheDir = /var/cache/pacman/pkg/
#LogFile = /var/log/pacman.log
#GPGDir = /etc/pacman.d/gnupg/
#HookDir = /etc/pacman.d/hooks/
HoldPkg = pacman glibc
#XferCommand = /usr/bin/curl -L -C - -f -o %o %u
#XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u
#CleanMethod = KeepInstalled
Architecture = auto
# Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup
IgnorePkg = linux-firmware-neptune linux-firmware-neptune-rtw-debug
#IgnoreGroup =
#NoUpgrade =
#NoExtract =
# Misc options
#UseSyslog
#Color
#TotalDownload
# We cannot check disk space from within a chroot environment
#CheckSpace
#VerbosePkgLists
ParallelDownloads = 5
# By default, pacman accepts packages signed by keys that its local keyring
# trusts (see pacman-key and its man page), as well as unsigned packages.
SigLevel = Required DatabaseOptional
LocalFileSigLevel = Optional
#RemoteFileSigLevel = Required
# NOTE: You must run `pacman-key --init` before first using pacman; the local
# keyring can then be populated with the keys of all official Arch Linux
# packagers with `pacman-key --populate archlinux`.
#
# REPOSITORIES
# - can be defined here or included from another file
# - pacman will search repositories in the order defined here
# - local/custom mirrors can be added here or in separate files
# - repositories listed first will take precedence when packages
# have identical names, regardless of version number
# - URLs will have $repo replaced by the name of the current repo
# - URLs will have $arch replaced by the name of the architecture
#
# Repository entries are of the format:
# [repo-name]
# Server = ServerName
# Include = IncludePath
#
# The header [repo-name] is crucial - it must be present and
# uncommented to enable the repo.
#
# The testing repositories are disabled by default. To enable, uncomment the
# repo name header and Include lines. You can add preferred servers immediately
# after the header, and they will be used before the default mirrors.
#[testing]
#Include = /etc/pacman.d/mirrorlist
[holoiso-stable]
Include = /etc/pacman.d/holo_mirrorlist
SigLevel = Never
[holostaging]
Include = /etc/pacman.d/holo_mirrorlist
SigLevel = Never
[jupiter]
Include = /etc/pacman.d/mirrorlist
SigLevel = Never
[holo]
Include = /etc/pacman.d/mirrorlist
SigLevel = Never
[core]
Include = /etc/pacman.d/mirrorlist
SigLevel = Never
[extra]
Include = /etc/pacman.d/mirrorlist
SigLevel = Never
#[community-testing]
#Include = /etc/pacman.d/mirrorlist
[community]
Include = /etc/pacman.d/mirrorlist
SigLevel = Never
[multilib]
Include = /etc/pacman.d/mirrorlist
SigLevel = Never
# An example of a custom package repository. See the pacman manpage for
# tips on creating your own repositories.
#[custom]
#SigLevel = Optional TrustAll
#Server = file:///home/custompkgs

View File

@ -0,0 +1,35 @@
#!/bin/zsh
# Prepares ISO for packaging
# Init pacman keys
pacman-key --init
pacman -Sy
# Install desktop suite
pacman -Rcns --noconfirm pulseaudio xfce4-pulseaudio-plugin pulseaudio-alsa
pacman --overwrite="*" -S holoiso-main holo/filesystem holoiso-updateclient wireplumber flatpak packagekit-qt5 rsync unzip sddm-wayland dkms
wget https://gdrivecdn.thevakhovske.pw/6:/holoiso/os/x86_64/lib32-nvidia-utils-515.57-1-x86_64.pkg.tar.zst -P /etc/holoinstall/post_install/pkgs
pacman -U --noconfirm /etc/holoinstall/post_install/pkgs/lib32-nvidia-utils-515.57-1-x86_64.pkg.tar.zst
# Remove useless shortcuts for now
mv /etc/xdg/autostart/steam.desktop /etc/xdg/autostart/desktopshortcuts.desktop /etc/skel/Desktop/steamos-gamemode.desktop /etc/skel/Desktop/Return.desktop /etc/holoinstall/post_install_shortcuts
# Enable stuff
systemctl enable sddm NetworkManager systemd-timesyncd cups bluetooth
# Download extra stuff
mkdir -p /etc/holoinstall/post_install/pkgs
wget https://gdrivecdn.thevakhovske.pw/6:/holostaging/os/x86_64/linux-holoiso-5.18.1.holoiso20220606.1822-1-x86_64.pkg.tar.zst -P /etc/holoinstall/post_install/pkgs
wget https://gdrivecdn.thevakhovske.pw/6:/holostaging/os/x86_64/linux-holoiso-headers-5.18.1.holoiso20220606.1822-1-x86_64.pkg.tar.zst -P /etc/holoinstall/post_install/pkgs
wget $(pacman -Sp win600-xpad-dkms) -P /etc/holoinstall/post_install/pkgs_addon
wget $(pacman -Sp linux-firmware-neptune) -P /etc/holoinstall/post_install/pkgs_addon
# Workaround mkinitcpio bullshit so that i don't KMS after rebuilding ISO each time and having users reinstalling their fucking OS bullshit every goddamn time.
rm /etc/mkinitcpio.conf
mv /etc/mkinitcpio.conf.pacnew /etc/mkinitcpio.conf
rm /etc/mkinitcpio.d/* # This removes shitty unasked presets so that this thing can't overwrite it next time
cp /etc/holoinstall/post_install/mkinitcpio_presets/linux-neptune.preset /etc/mkinitcpio.d/ # Yes. I'm lazy to use mkinitcpio-install. Problems? *gigachad posture*
# Prepare thyself
chmod +x /etc/holoinstall/post_install/install_holoiso.sh
chmod +x /etc/skel/Desktop/install.desktop

View File

@ -1,168 +0,0 @@
#
# General configuration
#
# start-default-seat = True to always start one seat if none are defined in the configuration
# greeter-user = User to run greeter as
# minimum-display-number = Minimum display number to use for X servers
# minimum-vt = First VT to run displays on
# lock-memory = True to prevent memory from being paged to disk
# user-authority-in-system-dir = True if session authority should be in the system location
# guest-account-script = Script to be run to setup guest account
# logind-check-graphical = True to on start seats that are marked as graphical by logind
# log-directory = Directory to log information to
# run-directory = Directory to put running state in
# cache-directory = Directory to cache to
# sessions-directory = Directory to find sessions
# remote-sessions-directory = Directory to find remote sessions
# greeters-directory = Directory to find greeters
# backup-logs = True to move add a .old suffix to old log files when opening new ones
# dbus-service = True if LightDM provides a D-Bus service to control it
#
[LightDM]
#start-default-seat=true
#greeter-user=lightdm
#minimum-display-number=0
#minimum-vt=7 # Setting this to a value < 7 implies security issues, see FS#46799
#lock-memory=true
#user-authority-in-system-dir=false
#guest-account-script=guest-account
#logind-check-graphical=false
#log-directory=/var/log/lightdm
run-directory=/run/lightdm
#cache-directory=/var/cache/lightdm
#sessions-directory=/usr/share/lightdm/sessions:/usr/share/xsessions:/usr/share/wayland-sessions
#remote-sessions-directory=/usr/share/lightdm/remote-sessions
#greeters-directory=$XDG_DATA_DIRS/lightdm/greeters:$XDG_DATA_DIRS/xgreeters
#backup-logs=true
#dbus-service=true
#
# Seat configuration
#
# Seat configuration is matched against the seat name glob in the section, for example:
# [Seat:*] matches all seats and is applied first.
# [Seat:seat0] matches the seat named "seat0".
# [Seat:seat-thin-client*] matches all seats that have names that start with "seat-thin-client".
#
# type = Seat type (local, xremote)
# pam-service = PAM service to use for login
# pam-autologin-service = PAM service to use for autologin
# pam-greeter-service = PAM service to use for greeters
# xserver-command = X server command to run (can also contain arguments e.g. X -special-option)
# xmir-command = Xmir server command to run (can also contain arguments e.g. Xmir -special-option)
# xserver-config = Config file to pass to X server
# xserver-layout = Layout to pass to X server
# xserver-allow-tcp = True if TCP/IP connections are allowed to this X server
# xserver-share = True if the X server is shared for both greeter and session
# xserver-hostname = Hostname of X server (only for type=xremote)
# xserver-display-number = Display number of X server (only for type=xremote)
# xdmcp-manager = XDMCP manager to connect to (implies xserver-allow-tcp=true)
# xdmcp-port = XDMCP UDP/IP port to communicate on
# xdmcp-key = Authentication key to use for XDM-AUTHENTICATION-1 (stored in keys.conf)
# greeter-session = Session to load for greeter
# greeter-hide-users = True to hide the user list
# greeter-allow-guest = True if the greeter should show a guest login option
# greeter-show-manual-login = True if the greeter should offer a manual login option
# greeter-show-remote-login = True if the greeter should offer a remote login option
# user-session = Session to load for users
# allow-user-switching = True if allowed to switch users
# allow-guest = True if guest login is allowed
# guest-session = Session to load for guests (overrides user-session)
# session-wrapper = Wrapper script to run session with
# greeter-wrapper = Wrapper script to run greeter with
# guest-wrapper = Wrapper script to run guest sessions with
# display-setup-script = Script to run when starting a greeter session (runs as root)
# display-stopped-script = Script to run after stopping the display server (runs as root)
# greeter-setup-script = Script to run when starting a greeter (runs as root)
# session-setup-script = Script to run when starting a user session (runs as root)
# session-cleanup-script = Script to run when quitting a user session (runs as root)
# autologin-guest = True to log in as guest by default
# autologin-user = User to log in with by default (overrides autologin-guest)
# autologin-user-timeout = Number of seconds to wait before loading default user
# autologin-session = Session to load for automatic login (overrides user-session)
# autologin-in-background = True if autologin session should not be immediately activated
# exit-on-failure = True if the daemon should exit if this seat fails
#
[Seat:*]
#type=local
#pam-service=lightdm
#pam-autologin-service=lightdm-autologin
#pam-greeter-service=lightdm-greeter
#xserver-command=X
#xmir-command=Xmir
#xserver-config=
#xserver-layout=
#xserver-allow-tcp=false
#xserver-share=true
#xserver-hostname=
#xserver-display-number=
#xdmcp-manager=
#xdmcp-port=177
#xdmcp-key=
greeter-session=lightdm-gtk-greeter
#greeter-hide-users=false
#greeter-allow-guest=true
#greeter-show-manual-login=false
#greeter-show-remote-login=true
user-session=plasma
#allow-user-switching=true
#allow-guest=true
#guest-session=
session-wrapper=/etc/lightdm/Xsession
#greeter-wrapper=
#guest-wrapper=
#display-setup-script=
#display-stopped-script=
#greeter-setup-script=
#session-setup-script=
#session-cleanup-script=
#autologin-guest=false
autologin-user=liveuser
#autologin-user-timeout=0
#autologin-in-background=false
#autologin-session=xfce
#exit-on-failure=false
#
# XDMCP Server configuration
#
# enabled = True if XDMCP connections should be allowed
# port = UDP/IP port to listen for connections on
# listen-address = Host/address to listen for XDMCP connections (use all addresses if not present)
# key = Authentication key to use for XDM-AUTHENTICATION-1 or blank to not use authentication (stored in keys.conf)
# hostname = Hostname to report to XDMCP clients (defaults to system hostname if unset)
#
# The authentication key is a 56 bit DES key specified in hex as 0xnnnnnnnnnnnnnn. Alternatively
# it can be a word and the first 7 characters are used as the key.
#
greeter-show-manual-login=false
[XDMCPServer]
#enabled=false
#port=177
#listen-address=
#key=
#hostname=
#
# VNC Server configuration
#
# enabled = True if VNC connections should be allowed
# command = Command to run Xvnc server with
# port = TCP/IP port to listen for connections on
# listen-address = Host/address to listen for VNC connections (use all addresses if not present)
# width = Width of display to use
# height = Height of display to use
# depth = Color depth of display to use
#
[VNCServer]
#enabled=false
#command=Xvnc
#port=5900
#listen-address=
#width=1024
#height=768
#depth=8

View File

@ -1,8 +0,0 @@
Welcome to SteamOS 3!
To install SteamOS 3 on your device, connect to network using RNDIS/Ethernet
or connect to wifi using iwctl
then type holoinstall in!
Alternatively, you can repair your current ArchLinux/SteamOS installation
by chrooting into it using arch-chroot

View File

@ -33,7 +33,7 @@ IgnorePkg = linux-firmware-neptune linux-firmware-neptune-rtw-debug
#Color
#TotalDownload
# We cannot check disk space from within a chroot environment
CheckSpace
#CheckSpace
#VerbosePkgLists
ParallelDownloads = 5
@ -91,18 +91,22 @@ SigLevel = Never
[core]
Include = /etc/pacman.d/mirrorlist
SigLevel = Never
[extra]
Include = /etc/pacman.d/mirrorlist
SigLevel = Never
#[community-testing]
#Include = /etc/pacman.d/mirrorlist
[community]
Include = /etc/pacman.d/mirrorlist
SigLevel = Never
[multilib]
Include = /etc/pacman.d/mirrorlist
SigLevel = Never
# An example of a custom package repository. See the pacman manpage for
# tips on creating your own repositories.

View File

@ -0,0 +1,6 @@
[General]
DisplayServer=wayland
[Autologin]
User=liveuser
Session=plasma.desktop

View File

@ -0,0 +1,19 @@
[Desktop Entry]
Comment[en_US]=
Comment=
Exec=sudo /etc/holoinstall/post_install/install_holoiso.sh
GenericName[en_US]=
GenericName=
Icon=input-keyboard-symbolic
MimeType=
Name[en_US]=Install SteamOS on this machine
Name=Installs HoloISO on this device
Path=
StartupNotify=true
Terminal=true
TerminalOptions=
Type=Application
X-DBUS-ServiceName=
X-DBUS-StartupType=
X-KDE-SubstituteUID=false
X-KDE-Username=

View File

@ -1 +0,0 @@
/usr/lib/systemd/system/lightdm.service

View File

@ -1,6 +0,0 @@
#
# SPDX-License-Identifier: GPL-3.0-or-later
[Service]
ExecStart=
ExecStart=-/sbin/agetty --autologin root --noclear %I 38400 linux

View File

@ -3,4 +3,4 @@ linux /%INSTALL_DIR%/boot/x86_64/vmlinuz-linux-neptune
initrd /%INSTALL_DIR%/boot/intel-ucode.img
initrd /%INSTALL_DIR%/boot/amd-ucode.img
initrd /%INSTALL_DIR%/boot/x86_64/initramfs-linux-neptune.img
options archisobasedir=%INSTALL_DIR% archisolabel=%ARCHISO_LABEL% copytoram
options archisobasedir=%INSTALL_DIR% archisolabel=%ARCHISO_LABEL% cow_spacesize=20G copytoram

View File

@ -1,6 +0,0 @@
title SteamOS installer (Kernel 5.18, NVIDIA and higher compatibility; x86_64, UEFI)
linux /%INSTALL_DIR%/boot/x86_64/vmlinuz-linux-holoiso
initrd /%INSTALL_DIR%/boot/intel-ucode.img
initrd /%INSTALL_DIR%/boot/amd-ucode.img
initrd /%INSTALL_DIR%/boot/x86_64/initramfs-linux-holoiso.img
options archisobasedir=%INSTALL_DIR% archisolabel=%ARCHISO_LABEL% copytoram

7
packages.holo_x86_64 Normal file
View File

@ -0,0 +1,7 @@
holoiso-main
holoiso-updateclient
wireplumber
flatpak
packagekit-qt5
rsync
unzip

View File

@ -35,7 +35,6 @@ gptfdisk
grml-zsh-config
grub
hdparm
holostaging/holoiso-install-script-gui
intel-ucode
irssi
iw
@ -46,6 +45,7 @@ lftp
libfido2
libusb-compat
linux-neptune
linux-neptune-headers
linux-atm
linux-firmware
linux-firmware-marvell
@ -123,8 +123,7 @@ plasma-nm
plasma-meta
steamdeck-kde-presets
xorg-server
lightdm
lightdm-gtk-greeter
vim
xdg-user-dirs
bash-completion
networkmanager