#!/bin/bash read -p "Hostname: " HOSTNAME read -p "Username: " USERNAME read -sp "User password: " PASS read -sp "ROOT PASSWORD: " ROOT_PASS read -sp "LUKS Passphrase: " LUKS_PASS read -p "Main partition: " PART parted -s "$PART" mklabel gpt parted -s "$PART" mkpart primary fat32 1MiB 3GB parted -s "$PART" set 1 esp on parted -s "$PART" mkpart primary linux-swap 3GB 27GB parted -s "$PART" mkpart primary ext4 27GB 100% echo -n "$LUKS_PASS" | cryptsetup luksFormat --type luks2 --iter-time 5000 "${PART}3" echo -n "$LUKS_PASS" | cryptsetup open "${PART}3" roothome mkfs.fat -F 32 "${PART}1" mkfs.ext4 /dev/mapper/roothome mkswap "${PART}2" mount /dev/mapper/roothome /mnt mkdir -p /mnt/boot mount "${PART}1" /mnt/boot swapon "${PART}2" pacstrap /mnt base linux linux-firmware genfstab -U /mnt >> /mnt/etc/fstab arch-chroot /mnt /bin/bash <> /etc/hostname echo "KEYMAP=trq" >> /etc/vconsole.conf pacman -S --noconfirm base-devel sudo # base programs pacman -S --noconfirm alsa-utils bluez bluez-utils bridge-utils networkmanager nvidia-open nvidia-utils pantum-universal-driver pavucontrol pipewire pipewire-alsa pipewire-jack pipewire-pulse polykit-gnome usbutils pacman -S --noconfirm alacritty firefox eog flameshot keepassxc ly sway swaybg zip unzip pacman -S --noconfirm ufw clamav pacman -S --noconfirm cmake cloc vim emacs cups docker docker-compose efibootmgr gdb ghidra ghostscript git git-lfs man-db man-pages mkcert nasm net-tools openssh qemu-base qemu-full rustup valgrind virt-manager virt-viewer wireplumber wireguard-tools wireshark-qt wmenu wofi xdg-desktop-portal-gtk xdg-desktop-portal-wlr xorg-xwayland systemctl enable NetworkManager systemctl enable ufw systemctl enable clamav-daemon systemctl disable getty@tty0.service systemctl disable getty@tty1.service systemctl enable ly@tty1.service systemctl enable bluetooth ufw default deny incoming ufw default allow outgoing ufw enable sed -i 's/HOOKS=(base systemd autodetect microcode modconf kms keyboard keymap sd-vconsole block filesystems fsck)/HOOKS=(base systemd autodetect microcode modconf kms keyboard keymap sd-vconsole block sd-encrypt filesystems fsck)/' /etc/mkinitcpio.conf mkinitcpio -P printf "Configuring users..." echo -n "root:$ROOT_PASS" | chpasswd useradd -m -G wheel,docker,libvirt,video,audio "$USERNAME" echo "$USERNAME:$PASS" | chpasswd printf "Configure dotfiles" git clone https://universe.0xinfinity.dev/0x221E/dotfiles.git "/home/$USERNAME/dotfiles" mkdir -p "/home/$USERNAME/.config" cp -rs "/home/$USERNAME/dotfiles/*" "/home/$USERNAME/.config/" sed -i 's/^# %wheel ALL=(ALL:ALL) ALL/%wheel ALL=(ALL:ALL) ALL/' /etc/sudoers bootctl install printf "default arch.conf\ntimeout 3\nconsole-mode max\neditor no" >> /boot/loader/loader.conf UUID=\$(blkid -s UUID -o value "${PART}3") printf "title Arch Linux\nlinux /vmlinuz-linux\ninitrd /initramfs-linux.img\noptions rd.luks.name=\$UUID:roothome root=/dev/mapper/roothome rw" > /boot/loader/entries/arch.conf EOF