commit e7a7d137b2b0282b5d49d8a7014856dba7c14031
parent 9ef10a6f9f8f41ceb5678a05302649e51f513bd7
Author: awy <awy@awy.one>
Date: Tue, 16 Dec 2025 19:49:38 +0300
format
Diffstat:
| M | install.sh | | | 135 | ++++++++++++++++++++++++++++++++++++++++--------------------------------------- |
| M | post_chroot.sh | | | 65 | +++++++++++++++++++++++++++++++---------------------------------- |
2 files changed, 100 insertions(+), 100 deletions(-)
diff --git a/install.sh b/install.sh
@@ -3,34 +3,32 @@ set -e
cpuvendor=$(grep -m 1 'vendor_id' /proc/cpuinfo | awk '{print $3}')
-diskpart()
-{
+diskpart() {
pacman -S xfsprogs --noconfirm
mkfs.fat -F32 /dev/"$bootdrive"
case $encryption in
- 0)
- mkfs.xfs /dev/"$rootdrive"
- mount /dev/"$rootdrive" /mnt
- ;;
- 1)
- printf "%s" "$cryptpass" | cryptsetup luksFormat /dev/"$rootdrive" -d -
- printf "%s" "$cryptpass" | cryptsetup open /dev/"$rootdrive" cryptlvm -d -
- mkfs.xfs /dev/mapper/cryptlvm
- mount /dev/mapper/cryptlvm /mnt
- ;;
+ 0)
+ mkfs.xfs /dev/"$rootdrive"
+ mount /dev/"$rootdrive" /mnt
+ ;;
+ 1)
+ printf "%s" "$cryptpass" | cryptsetup luksFormat /dev/"$rootdrive" -d -
+ printf "%s" "$cryptpass" | cryptsetup open /dev/"$rootdrive" cryptlvm -d -
+ mkfs.xfs /dev/mapper/cryptlvm
+ mount /dev/mapper/cryptlvm /mnt
+ ;;
esac
mkdir /mnt/boot
mkdir /mnt/home
}
-binkernel()
-{
+binkernel() {
mount /dev/"$bootdrive" /mnt/boot
pacman -Sy --confirm
case $kerneltype in
- 1) basestrap /mnt base dinit seatd-dinit linux ;;
- 2) basestrap /mnt base dinit seatd-dinit linux-zen ;;
- *) printf "Invalid kernel" && exit 1 ;;
+ 1) basestrap /mnt base dinit seatd-dinit linux ;;
+ 2) basestrap /mnt base dinit seatd-dinit linux-zen ;;
+ *) printf "Invalid kernel" && exit 1 ;;
esac
if [ "$encryption" = 1 ]; then
basestrap /mnt cryptsetup lvm2 lvm2-dinit
@@ -39,24 +37,21 @@ binkernel()
cp linuxx64.efi.stub /mnt/usr/lib/systemd/boot/efi
}
-customkernel()
-{
+customkernel() {
mount /dev/"$bootdrive" /mnt/boot
pacman -Sy --confirm
basestrap /mnt base dinit seatd-dinit
cp .config /mnt/usr/src
}
-getpass()
-{
+getpass() {
stty -echo
read -r choice
stty echo
echo "$choice"
}
-getuserdata()
-{
+getuserdata() {
printf "Enter root password: "
rootpass=$(getpass)
echo
@@ -74,12 +69,12 @@ getuserdata()
printf "Enter space-separated partition numbers (e.g., 5 6 for 5 boot 6 root): "
read -r partitions
case "$diskdrive" in
- nvme[0-9]*n[0-9]* | mmcblk[0-9]*)
- partprefix="p"
- ;;
- *)
- partprefix=""
- ;;
+ nvme[0-9]*n[0-9]* | mmcblk[0-9]*)
+ partprefix="p"
+ ;;
+ *)
+ partprefix=""
+ ;;
esac
rootdrive="$diskdrive$partprefix${partitions##* }"
bootdrive="$diskdrive$partprefix${partitions%% *}"
@@ -88,13 +83,16 @@ getuserdata()
printf "Your CPU Vendor detected as %s, is that right? Y/N: " "$cpuvendor"
read -r answer
case "$answer" in
- y|Y)
- break ;;
- n|N)
- echo "Something wrong. Exiting..."
- exit 1 ;;
- *)
- echo "Invalid response. Please enter 'y' or 'n'." && sleep 3 ;;
+ y | Y)
+ break
+ ;;
+ n | N)
+ echo "Something wrong. Exiting..."
+ exit 1
+ ;;
+ *)
+ echo "Invalid response. Please enter 'y' or 'n'." && sleep 3
+ ;;
esac
done
while true; do
@@ -102,14 +100,17 @@ getuserdata()
printf "Do you want to use encryption (LUKS)? Y/N: "
read -r answer
case "$answer" in
- y|Y)
- encryption=1
- break ;;
- n|N)
- encryption=0
- break ;;
- *)
- echo "Invalid response. Please enter 'y' or 'n'." && sleep 3 ;;
+ y | Y)
+ encryption=1
+ break
+ ;;
+ n | N)
+ encryption=0
+ break
+ ;;
+ *)
+ echo "Invalid response. Please enter 'y' or 'n'." && sleep 3
+ ;;
esac
done
if [ "$encryption" = 1 ]; then
@@ -129,36 +130,38 @@ clear
# rankmirrors -n 5 /etc/pacman.d/mirrorlist.backup > /etc/pacman.d/mirrorlist
case $kerneltype in
- 1 | 2) binkernel ;;
- 3) customkernel ;;
- *) printf "Invalid kernel type" && exit 1 ;;
+1 | 2) binkernel ;;
+3) customkernel ;;
+*) printf "Invalid kernel type" && exit 1 ;;
esac
case $cpuvendor in
- GenuineIntel)
- basestrap /mnt intel-ucode
- if [ "$kerneltype" = 3 ]; then
- pacman -S iucode-tool --noconfirm
- CPUFAM=$(printf '%02x\n' "$(lscpu | grep -E '^CPU family:' | awk '{print $3}')")
- MODEL=$(printf '%02x\n' "$(lscpu | grep -E '^Model:' | awk '{print $2}')")
- STEPPING=$(printf '%02x\n' "$(lscpu | grep -E '^Stepping:' | awk '{print $2}')")
- MICROCODE_PATH="intel-ucode/$CPUFAM-$MODEL-$STEPPING"
- THREAD_NUM=$(nproc)
- sed -i "s#CONFIG_EXTRA_FIRMWARE=.*#CONFIG_EXTRA_FIRMWARE=\"$MICROCODE_PATH\"#g" /mnt/usr/src/.config
- sed -i "s#CONFIG_NR_CPUS=.*#CONFIG_NR_CPUS=$THREAD_NUM#g" /mnt/usr/src/.config
- fi
- ;;
- AuthenticAMD)
- basestrap /mnt amd-ucode ;;
- *)
- printf "Unsupported CPU Vendor. Possibly there is error in detection script.\n" && exit 1 ;;
+GenuineIntel)
+ basestrap /mnt intel-ucode
+ if [ "$kerneltype" = 3 ]; then
+ pacman -S iucode-tool --noconfirm
+ CPUFAM=$(printf '%02x\n' "$(lscpu | grep -E '^CPU family:' | awk '{print $3}')")
+ MODEL=$(printf '%02x\n' "$(lscpu | grep -E '^Model:' | awk '{print $2}')")
+ STEPPING=$(printf '%02x\n' "$(lscpu | grep -E '^Stepping:' | awk '{print $2}')")
+ MICROCODE_PATH="intel-ucode/$CPUFAM-$MODEL-$STEPPING"
+ THREAD_NUM=$(nproc)
+ sed -i "s#CONFIG_EXTRA_FIRMWARE=.*#CONFIG_EXTRA_FIRMWARE=\"$MICROCODE_PATH\"#g" /mnt/usr/src/.config
+ sed -i "s#CONFIG_NR_CPUS=.*#CONFIG_NR_CPUS=$THREAD_NUM#g" /mnt/usr/src/.config
+ fi
+ ;;
+AuthenticAMD)
+ basestrap /mnt amd-ucode
+ ;;
+*)
+ printf "Unsupported CPU Vendor. Possibly there is error in detection script.\n" && exit 1
+ ;;
esac
UUID_ROOT=$(blkid -s UUID -o value /dev/"$rootdrive")
UUID_BOOT=$(blkid -s UUID -o value /dev/"$bootdrive")
-echo "UUID=$UUID_BOOT /boot vfat defaults,noatime 0 2" > /mnt/etc/fstab
-echo "UUID=$UUID_ROOT / xfs defaults,noatime 0 1" >> /mnt/etc/fstab
+echo "UUID=$UUID_BOOT /boot vfat defaults,noatime 0 2" >/mnt/etc/fstab
+echo "UUID=$UUID_ROOT / xfs defaults,noatime 0 1" >>/mnt/etc/fstab
export diskdrive
export rootdrive
diff --git a/post_chroot.sh b/post_chroot.sh
@@ -6,7 +6,7 @@ hwclock --systohc
# nvidia fixes
mkdir -p /etc/modprobe.d/
-cat <<EOL >> /etc/modprobe.d/nvidia.conf
+cat <<EOL >>/etc/modprobe.d/nvidia.conf
options nvidia NVreg_UsePageAttributeTable=1
options nvidia-drm fbdev=1
options nvidia NVreg_RegistryDwords="PowerMizerEnable=0x1; PerfLevelSrc=0x2222; PowerMizerLevel=0x3; PowerMizerDefault=0x3; PowerMizerDefaultAC=0x3"
@@ -14,59 +14,57 @@ EOL
sed -i -e "/^#en_US.UTF-8/s/^#//" /etc/locale.gen
locale-gen
-echo LANG=en_US.UTF-8 > /etc/locale.conf
+echo LANG=en_US.UTF-8 >/etc/locale.conf
export LANG="en_US.UTF-8"
export LC_COLLATE="C"
-echo "$hostname" > /etc/hostname
+echo "$hostname" >/etc/hostname
UUID_ROOT=$(blkid -s UUID -o value /dev/"$rootdrive")
if [ "$encryption" = 1 ]; then
UUID_CRYPTROOT=$(blkid -s UUID -o value /dev/mapper/cryptlvm)
fi
-binkernel()
-{
+binkernel() {
pacman -S efibootmgr --noconfirm
- echo "options hid_apple fnmode=0" > /etc/modprobe.d/hid_apple.conf
+ echo "options hid_apple fnmode=0" >/etc/modprobe.d/hid_apple.conf
mkdir -p /etc/kernel
mkdir -p /boot/EFI/BOOT
case $kerneltype in
- 1)
-cat <<EOL > /etc/mkinitcpio.d/linux.preset
+ 1)
+ cat <<EOL >/etc/mkinitcpio.d/linux.preset
ALL_kver="/boot/vmlinuz-linux"
PRESETS=('default')
default_uki="/boot/EFI/BOOT/BOOTX64.efi"
EOL
-;;
- 2)
-cat <<EOL > /etc/mkinitcpio.d/linux-zen.preset
+ ;;
+ 2)
+ cat <<EOL >/etc/mkinitcpio.d/linux-zen.preset
ALL_kver="/boot/vmlinuz-linux-zen"
PRESETS=('default')
default_uki="/boot/EFI/BOOT/BOOTX64.efi"
EOL
-;;
- *) printf "Invalid kernel" && exit 1 ;;
+ ;;
+ *) printf "Invalid kernel" && exit 1 ;;
esac
if [ "$encryption" = 1 ]; then
- echo "cryptdevice=UUID=$UUID_ROOT:cryptlvm root=UUID=$UUID_CRYPTROOT rw" > /etc/kernel/cmdline
+ echo "cryptdevice=UUID=$UUID_ROOT:cryptlvm root=UUID=$UUID_CRYPTROOT rw" >/etc/kernel/cmdline
sed -i "s#HOOKS=.*#HOOKS=(base udev microcode modconf keyboard keymap consolefont block encrypt lvm2 filesystems fsck)#g" /etc/mkinitcpio.conf
else
- echo "root=UUID=$UUID_ROOT rw" > /etc/kernel/cmdline
+ echo "root=UUID=$UUID_ROOT rw" >/etc/kernel/cmdline
sed -i "s#HOOKS=.*#HOOKS=(base udev autodetect microcode modconf keyboard keymap consolefont block filesystems fsck)#g" /etc/mkinitcpio.conf
fi
case $kerneltype in
- 1) pacman -S linux-headers --noconfirm ;;
- 2) pacman -S linux-zen-headers --noconfirm ;;
- *) printf "Invalid kernel" && exit 1 ;;
+ 1) pacman -S linux-headers --noconfirm ;;
+ 2) pacman -S linux-zen-headers --noconfirm ;;
+ *) printf "Invalid kernel" && exit 1 ;;
esac
- efibootmgr -c -d /dev/"$diskdrive" -p "${partitions%% *}" -L "linux" -l '\EFI\BOOT\BOOTX64.EFI'
+ efibootmgr -c -d /dev/"$diskdrive" -p "${partitions%% *}" -L "linux" -l '\EFI\BOOT\BOOTX64.EFI'
}
-customkernel()
-{
+customkernel() {
latestkernel=$(curl -s https://www.kernel.org/ | grep -A 1 'latest_link' | grep -oP '[0-9]+\.[0-9]+(\.[0-9]+)?' | head -n 1)
majorversion=$(echo "$latestkernel" | cut -d'.' -f1)
pacman -S efibootmgr --noconfirm
@@ -89,20 +87,20 @@ customkernel()
make headers_install
mkdir -p /boot/EFI/BOOT
cp arch/x86/boot/bzImage /boot/EFI/BOOT/BOOTX64.EFI
- efibootmgr -c -d /dev/"$diskdrive" -p "${partitions%% *}" -L "linux" -l '\EFI\BOOT\BOOTX64.EFI'
+ efibootmgr -c -d /dev/"$diskdrive" -p "${partitions%% *}" -L "linux" -l '\EFI\BOOT\BOOTX64.EFI'
}
case $kerneltype in
- 1 | 2) binkernel ;;
- 3) customkernel ;;
- *) printf "Invalid kernel" && exit 1 ;;
+1 | 2) binkernel ;;
+3) customkernel ;;
+*) printf "Invalid kernel" && exit 1 ;;
esac
# use dash as sh
pacman -Sy dash zsh --noconfirm
ln -sfT dash /usr/bin/sh
mkdir -p /etc/pacman.d/hooks
-cat <<EOL >> /etc/pacman.d/hooks/bash.hook
+cat <<EOL >>/etc/pacman.d/hooks/bash.hook
[Trigger]
Type = Package
Operation = Install
@@ -121,7 +119,7 @@ useradd -m -g wheel -s /bin/zsh "$username"
echo "root:$rootpass" | chpasswd
echo "$username:$userpass" | chpasswd
-cat <<EOL >> /etc/hosts
+cat <<EOL >>/etc/hosts
127.0.0.1 localhost
::1 localhost
127.0.1.1 $hostname.localdomain $hostname
@@ -130,20 +128,20 @@ EOL
# enable arch repos
pacman -Sy --noconfirm
pacman -S artix-archlinux-support --noconfirm
-echo "[extra]" >> /etc/pacman.conf
-echo "Include = /etc/pacman.d/mirrorlist-arch" >> /etc/pacman.conf
+echo "[extra]" >>/etc/pacman.conf
+echo "Include = /etc/pacman.d/mirrorlist-arch" >>/etc/pacman.conf
# curl -s "https://archlinux.org/mirrorlist/?country=RU&protocol=https&use_mirror_status=on" | sed -e 's/^#Server/Server/' -e '/^#/d' > /etc/pacman.d/mirrorlist-arch
pacman -Sy --noconfirm
# enable my custom repo
-echo "[awy-arch]" >> /etc/pacman.conf
-echo "Server = https://git.awy.one/\$repo.git/plain/\$arch/" >> /etc/pacman.conf
+echo "[awy-arch]" >>/etc/pacman.conf
+echo "Server = https://git.awy.one/\$repo.git/plain/\$arch/" >>/etc/pacman.conf
pacman-key --recv-keys B34B86B597BFE8667CE1EC9DB88FFCF0CC468933
pacman-key --lsign-key B34B86B597BFE8667CE1EC9DB88FFCF0CC468933
pacman -Sy --noconfirm
pacman -S doas --noconfirm
-cat <<EOL >> /etc/doas.conf
+cat <<EOL >>/etc/doas.conf
permit nopass root
permit :wheel
permit persist :wheel
@@ -162,7 +160,6 @@ permit nopass :wheel cmd umount
permit nopass :wheel cmd lsblk args -rpo "uuid,name,type,size,label,mountpoint,fstype"
EOL
-
pacman -S dhcpcd dhcpcd-dinit dbus-dinit --noconfirm
ln -sf /etc/dinit.d/dhcpcd /etc/dinit.d/boot.d/
ln -sf /etc/dinit.d/dbus /etc/dinit.d/boot.d/
@@ -178,7 +175,7 @@ routerip=$(ip route show default | awk '{print $3}')
machineip=$(ip -4 addr show dev "$interface" | awk '/inet/ {print $2}')
dnsserver="8.8.8.8"
-cat <<EOL >> /etc/dhcpcd.conf
+cat <<EOL >>/etc/dhcpcd.conf
noarp
interface $interface
static ip_address=$machineip