artix

posix artix installation script
git clone https://git.awy.one/artix.git
Log | Files | Refs | README | LICENSE

post_chroot.sh (4890B)


      1 #!/bin/sh
      2 set -e
      3 
      4 ln -sf /usr/share/zoneinfo/Europe/Moscow /etc/localtime
      5 hwclock --systohc
      6 
      7 # nvidia fixes
      8 mkdir -p /etc/modprobe.d/
      9 cat <<EOL >> /etc/modprobe.d/nvidia.conf
     10 options nvidia NVreg_UsePageAttributeTable=1
     11 options nvidia-drm fbdev=1
     12 options nvidia NVreg_RegistryDwords="PowerMizerEnable=0x1; PerfLevelSrc=0x2222; PowerMizerLevel=0x3; PowerMizerDefault=0x3; PowerMizerDefaultAC=0x3"
     13 EOL
     14 
     15 sed -i -e "/^#en_US.UTF-8/s/^#//" /etc/locale.gen
     16 locale-gen
     17 echo LANG=en_US.UTF-8 > /etc/locale.conf
     18 export LANG="en_US.UTF-8"
     19 export LC_COLLATE="C"
     20 
     21 echo "$hostname" > /etc/hostname
     22 
     23 UUID_ROOT=$(blkid -s UUID -o value /dev/"$rootdrive")
     24 if [ "$encryption" = 1 ]; then
     25   UUID_CRYPTROOT=$(blkid -s UUID -o value /dev/mapper/cryptlvm)
     26 fi
     27 
     28 binkernel()
     29 {
     30   pacman -S efibootmgr --noconfirm
     31   echo "options hid_apple fnmode=0" > /etc/modprobe.d/hid_apple.conf
     32   mkdir -p /etc/kernel
     33   mkdir -p /boot/EFI/BOOT
     34 cat <<EOL > /etc/mkinitcpio.d/linux.preset
     35 ALL_kver="/boot/vmlinuz-linux"
     36 PRESETS=('default')
     37 default_uki="/boot/EFI/BOOT/BOOTX64.efi"
     38 EOL
     39   if [ "$encryption" = 1 ]; then
     40     echo "cryptdevice=UUID=$UUID_ROOT:cryptlvm root=UUID=$UUID_CRYPTROOT rw intel_iommu=on" > /etc/kernel/cmdline
     41     sed -i "s#HOOKS=.*#HOOKS=(base udev autodetect microcode modconf keyboard keymap consolefont block encrypt lvm2 filesystems fsck)#g" /etc/mkinitcpio.conf
     42   else
     43     echo "root=UUID=$UUID_ROOT rw intel_iommu=on" > /etc/kernel/cmdline
     44     sed -i "s#HOOKS=.*#HOOKS=(base udev autodetect microcode modconf keyboard keymap consolefont block filesystems fsck)#g" /etc/mkinitcpio.conf
     45   fi
     46   case $kerneltype in
     47     1) pacman -S linux-headers --noconfirm ;;
     48     2) pacman -S linux-zen-headers --noconfirm ;;
     49     *) printf "Invalid kernel" && exit 1 ;;
     50   esac
     51   _diskdrivewop="${diskdrive%p}"
     52   efibootmgr -c -d /dev/"$_diskdrivewop" -p "${partitions%% *}"  -L "linux" -l '\EFI\BOOT\BOOTX64.EFI'
     53 }
     54 
     55 customkernel()
     56 {
     57   latestkernel=$(curl -s https://www.kernel.org/ | grep -A 1 'latest_link' | grep -oP '[0-9]+\.[0-9]+(\.[0-9]+)?' | head -n 1)
     58   majorversion=$(echo "$latestkernel" | cut -d'.' -f1)
     59   pacman -S efibootmgr --noconfirm
     60   cd /usr/src/
     61   curl -Lo /usr/src/linux.tar.xz "https://cdn.kernel.org/pub/linux/kernel/v$majorversion.x/linux-$latestkernel.tar.xz"
     62   tar -xf "linux.tar.xz"
     63   rm -f "linux.tar.xz"
     64   mv "linux-$latestkernel" "linux"
     65   cd "linux"
     66   mv /usr/src/.config .config
     67   sed -i -e '/^CONFIG_CMDLINE="root=.*/c\' -e "CONFIG_CMDLINE=\"root=UUID=$UUID_ROOT init=/sbin/dinit-init\"" .config
     68   pacman -S bc perl bison make diffutils gcc flex rsync --noconfirm
     69   make olddefconfig
     70   make menuconfig
     71   make -j"$(nproc)"
     72   make modules
     73   make modules_install
     74   make headers
     75   make headers_install
     76   mkdir -p /boot/EFI/BOOT
     77   cp arch/x86/boot/bzImage /boot/EFI/BOOT/BOOTX64.EFI
     78   _diskdrivewop="${diskdrive%p}"
     79   efibootmgr -c -d /dev/"$_diskdrivewop" -p "${partitions%% *}"  -L "linux" -l '\EFI\BOOT\BOOTX64.EFI'
     80 }
     81 
     82 case $kerneltype in
     83   1 | 2) binkernel ;;
     84   3) customkernel ;;
     85   *) printf "Invalid kernel" && exit 1 ;;
     86 esac
     87 
     88 # use dash as sh
     89 pacman -Sy dash zsh --noconfirm
     90 ln -sfT dash /usr/bin/sh
     91 mkdir -p /etc/pacman.d/hooks
     92 cat <<EOL >> /etc/pacman.d/hooks/bash.hook
     93 [Trigger]
     94 Type = Package
     95 Operation = Install
     96 Operation = Upgrade
     97 Target = bash
     98 
     99 [Action]
    100 Description = Re-pointing /bin/sh symlink to dash...
    101 When = PostTransaction
    102 Exec = /usr/bin/ln -sfT dash /usr/bin/sh
    103 Depends = dash
    104 EOL
    105 
    106 useradd -m -g wheel -s /bin/zsh "$username"
    107 
    108 echo "root:$rootpass" | chpasswd
    109 echo "$username:$userpass" | chpasswd
    110 
    111 cat <<EOL >> /etc/hosts
    112 127.0.0.1	localhost
    113 ::1		localhost
    114 127.0.1.1 	$hostname.localdomain $hostname
    115 EOL
    116 
    117 # enable arch repos
    118 pacman -Sy --noconfirm
    119 pacman -S artix-archlinux-support --noconfirm
    120 echo "[extra]" >> /etc/pacman.conf
    121 echo "Include = /etc/pacman.d/mirrorlist-arch" >> /etc/pacman.conf
    122 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
    123 pacman -Sy --noconfirm
    124 
    125 pacman -S sudo --noconfirm
    126 echo "%wheel ALL=(ALL:ALL) ALL" >/etc/sudoers.d/00-wheel-can-sudo
    127 echo "%wheel ALL=(ALL:ALL) NOPASSWD: /usr/bin/shutdown,/usr/bin/reboot,/usr/bin/systemctl suspend,/usr/bin/wifi-menu,/usr/bin/mount,/usr/bin/umount,/usr/bin/pacman -Syu,/usr/bin/pacman -Syyu,/usr/bin/pacman -Syyu --noconfirm,/usr/bin/loadkeys,/usr/bin/pacman -Syyuw --noconfirm,/usr/bin/pacman -S -y --config /etc/pacman.conf --,/usr/bin/pacman -S -y -u --config /etc/pacman.conf --" >/etc/sudoers.d/01-cmds-without-password
    128 echo "Defaults editor=/usr/bin/nvim" >/etc/sudoers.d/02-visudo-editor
    129 
    130 pacman -S dhcpcd dhcpcd-dinit dbus-dinit --noconfirm
    131 ln -sf /etc/dinit.d/dhcpcd /etc/dinit.d/boot.d/
    132 ln -sf /etc/dinit.d/dbus /etc/dinit.d/boot.d/
    133 
    134 pacman -S nvidia-open-dkms nvidia-utils --noconfirm
    135 pacman -S libva-nvidia-driver --noconfirm
    136 
    137 rm -rf /home/"$username"/.bash*
    138 
    139 rm /post_chroot.sh