#!/bin/bash set -xe HOSTNAME="maxhero-workstation" USERNAME="maxhero" ROOT_MOUNT="/mnt" function cleanup(){ umount -R "${ROOT_MOUNT}" } trap cleanup EXIT #======================================================================== # This script assumes that you want to install everything on /dev/nvme1n1 # BOOT on /dev/nvme1n1p1 # ROOT on /dev/nvme1n1p2 # HOME on /dev/nvme1n1p3 #======================================================================== mount /dev/nvme1n1p2 "${ROOT_MOUNT}" mkdir "${ROOT_MOUNT}/boot" mkdir "${ROOT_MOUNT}/home" mount /dev/nvme1n1p1 "${ROOT_MOUNT}/boot" mount /dev/nvme1n1p3 "${ROOT_MOUNT}/home" pacstrap "${ROOT_MOUNT}" base wget cat < /dev/null 127.0.0.1 localhost ::1 localhost 127.0.1.1 ${HOSTNAME}.localdomain ${HOSTNAME} EOF cat <> "${ROOT_MOUNT}/etc/locale.gen" sed -i -e "s/#Color/Color\nILoveCandy\nParallelDownloads = 20\n/" "${ROOT_MOUNT}/etc/pacman.conf" genfstab -U "${ROOT_MOUNT}" > "${ROOT_MOUNT}/etc/fstab" echo -e $HOSTNAME | cp /dev/stdin "${ROOT_MOUNT}/etc/hostname" > /dev/null pushd "${ROOT_MOUNT}" ln -sf ./usr/share/zoneinfo/America/Sao_Paulo ./etc/localtime cat < /dev/null %wheel ALL=(ALL) NOPASSWD: ALL Defaults env_reset,pwfeedback EOF popd rm "${ROOT_MOUNT}/etc/pacman.d/mirrorlist" cat < /dev/null # BR Mirrors Server = http://mirror.ufscar.br/archlinux/\$repo/os/\$arch Server = http://archlinux.c3sl.ufpr.br/\$repo/os/\$arch Server = http://www.caco.ic.unicamp.br/archlinux/\$repo/os/\$arch Server = https://www.caco.ic.unicamp.br/archlinux/\$repo/os/\$arch Server = http://linorg.usp.br/archlinux/\$repo/os/\$arch Server = http://archlinux.pop-es.rnp.br/\$repo/os/\$arch Server = http://mirror.ufam.edu.br/archlinux/\$repo/os/\$arch # USA Mirrors Server = http://mirrors.acm.wpi.edu/archlinux/\$repo/os/\$arch Server = http://mirrors.advancedhosters.com/archlinux/\$repo/os/\$arch Server = http://mirrors.aggregate.org/archlinux/\$repo/os/\$arch Server = https://america.mirror.pkgbuild.com/\$repo/os/\$arch Server = http://ca.us.mirror.archlinux-br.org/\$repo/os/\$arch Server = http://il.us.mirror.archlinux-br.org/\$repo/os/\$arch Server = http://mirror.arizona.edu/archlinux/\$repo/os/\$arch Server = https://mirror.arizona.edu/archlinux/\$repo/os/\$arch Server = http://arlm.tyzoid.com/\$repo/os/\$arch Server = https://arlm.tyzoid.com/\$repo/os/\$arch Server = https://mirror.ava.dev/archlinux/\$repo/os/\$arch Server = http://mirrors.cat.pdx.edu/archlinux/\$repo/os/\$arch Server = http://mirror.cc.columbia.edu/pub/linux/archlinux/\$repo/os/\$arch Server = http://arch.mirror.constant.com/\$repo/os/\$arch Server = https://arch.mirror.constant.com/\$repo/os/\$arch Server = http://mirror.cs.pitt.edu/archlinux/\$repo/os/\$arch Server = http://mirror.cs.vt.edu/pub/ArchLinux/\$repo/os/\$arch Server = http://mirror.cybersecurity.nmt.edu/archlinux/\$repo/os/\$arch Server = https://mirror.cybersecurity.nmt.edu/archlinux/\$repo/os/\$arch Server = http://distro.ibiblio.org/archlinux/\$repo/os/\$arch Server = http://mirror.es.its.nyu.edu/archlinux/\$repo/os/\$arch Server = http://mirror.ette.biz/archlinux/\$repo/os/\$arch Server = https://mirror.ette.biz/archlinux/\$repo/os/\$arch Server = http://mirrors.gigenet.com/archlinux/\$repo/os/\$arch Server = http://www.gtlib.gatech.edu/pub/archlinux/\$repo/os/\$arch Server = http://mirror.hackingand.coffee/arch/\$repo/os/\$arch Server = https://mirror.hackingand.coffee/arch/\$repo/os/\$arch Server = https://mirror.hodgepodge.dev/archlinux/\$repo/os/\$arch Server = http://mirror.hostup.org/archlinux/\$repo/os/\$arch Server = https://mirror.hostup.org/archlinux/\$repo/os/\$arch Server = http://arch.hu.fo/archlinux/\$repo/os/\$arch Server = https://arch.hu.fo/archlinux/\$repo/os/\$arch Server = http://repo.ialab.dsu.edu/archlinux/\$repo/os/\$arch Server = https://repo.ialab.dsu.edu/archlinux/\$repo/os/\$arch Server = http://mirrors.kernel.org/archlinux/\$repo/os/\$arch Server = https://mirrors.kernel.org/archlinux/\$repo/os/\$arch Server = http://mirror.dal10.us.leaseweb.net/archlinux/\$repo/os/\$arch Server = http://mirror.mia11.us.leaseweb.net/archlinux/\$repo/os/\$arch Server = http://mirror.sfo12.us.leaseweb.net/archlinux/\$repo/os/\$arch Server = http://mirror.wdc1.us.leaseweb.net/archlinux/\$repo/os/\$arch Server = https://mirror.dal10.us.leaseweb.net/archlinux/\$repo/os/\$arch Server = https://mirror.mia11.us.leaseweb.net/archlinux/\$repo/os/\$arch Server = https://mirror.sfo12.us.leaseweb.net/archlinux/\$repo/os/\$arch Server = https://mirror.wdc1.us.leaseweb.net/archlinux/\$repo/os/\$arch Server = http://mirrors.liquidweb.com/archlinux/\$repo/os/\$arch Server = http://mirror.lty.me/archlinux/\$repo/os/\$arch Server = https://mirror.lty.me/archlinux/\$repo/os/\$arch Server = http://mirrors.lug.mtu.edu/archlinux/\$repo/os/\$arch Server = https://mirrors.lug.mtu.edu/archlinux/\$repo/os/\$arch Server = http://mirror.math.princeton.edu/pub/archlinux/\$repo/os/\$arch Server = http://mirror.metrocast.net/archlinux/\$repo/os/\$arch Server = http://mirror.kaminski.io/archlinux/\$repo/os/\$arch Server = https://mirror.kaminski.io/archlinux/\$repo/os/\$arch Server = http://iad.mirrors.misaka.one/archlinux/\$repo/os/\$arch Server = https://iad.mirrors.misaka.one/archlinux/\$repo/os/\$arch Server = http://repo.miserver.it.umich.edu/archlinux/\$repo/os/\$arch Server = http://mirrors.mit.edu/archlinux/\$repo/os/\$arch Server = https://mirrors.mit.edu/archlinux/\$repo/os/\$arch Server = http://mirrors.ocf.berkeley.edu/archlinux/\$repo/os/\$arch Server = https://mirrors.ocf.berkeley.edu/archlinux/\$repo/os/\$arch Server = http://archmirror1.octyl.net/\$repo/os/\$arch Server = https://archmirror1.octyl.net/\$repo/os/\$arch Server = http://ftp.osuosl.org/pub/archlinux/\$repo/os/\$arch Server = http://arch.mirrors.pair.com/\$repo/os/\$arch Server = http://dfw.mirror.rackspace.com/archlinux/\$repo/os/\$arch Server = http://iad.mirror.rackspace.com/archlinux/\$repo/os/\$arch Server = http://ord.mirror.rackspace.com/archlinux/\$repo/os/\$arch Server = https://dfw.mirror.rackspace.com/archlinux/\$repo/os/\$arch Server = https://iad.mirror.rackspace.com/archlinux/\$repo/os/\$arch Server = https://ord.mirror.rackspace.com/archlinux/\$repo/os/\$arch Server = http://plug-mirror.rcac.purdue.edu/archlinux/\$repo/os/\$arch Server = https://plug-mirror.rcac.purdue.edu/archlinux/\$repo/os/\$arch Server = http://mirrors.rit.edu/archlinux/\$repo/os/\$arch Server = https://mirrors.rit.edu/archlinux/\$repo/os/\$arch Server = http://mirrors.rutgers.edu/archlinux/\$repo/os/\$arch Server = https://mirrors.rutgers.edu/archlinux/\$repo/os/\$arch Server = http://mirror.siena.edu/archlinux/\$repo/os/\$arch Server = http://mirrors.sonic.net/archlinux/\$repo/os/\$arch Server = https://mirrors.sonic.net/archlinux/\$repo/os/\$arch Server = http://mirror.phx1.us.spryservers.net/archlinux/\$repo/os/\$arch Server = https://mirror.phx1.us.spryservers.net/archlinux/\$repo/os/\$arch Server = http://arch.mirror.square-r00t.net/\$repo/os/\$arch Server = https://arch.mirror.square-r00t.net/\$repo/os/\$arch Server = http://mirror.stephen304.com/archlinux/\$repo/os/\$arch Server = https://mirror.stephen304.com/archlinux/\$repo/os/\$arch Server = http://ftp.sudhip.com/archlinux/\$repo/os/\$arch Server = https://ftp.sudhip.com/archlinux/\$repo/os/\$arch Server = http://mirror.pit.teraswitch.com/archlinux/\$repo/os/\$arch Server = https://mirror.pit.teraswitch.com/archlinux/\$repo/os/\$arch Server = http://mirror.umd.edu/archlinux/\$repo/os/\$arch Server = http://mirror.vtti.vt.edu/archlinux/\$repo/os/\$arch Server = http://mirrors.xmission.com/archlinux/\$repo/os/\$arch Server = http://mirrors.xtom.com/archlinux/\$repo/os/\$arch Server = https://mirrors.xtom.com/archlinux/\$repo/os/\$arch Server = https://zxcvfdsa.com/arch/\$repo/os/\$arch EOF arch-chroot "${ROOT_MOUNT}" /bin/bash < /dev/null [chaotic-aur] Include = /etc/pacman.d/chaotic-mirrorlist CHAOTICPM # Locale locale-gen # Clock hwclock --systohc timedatectl set-ntp true # User groupmod -g 10 wheel groupmod -g 100 users useradd -u 1000 -g users --groups wheel ${USERNAME} chsh root -s /bin/bash chsh ${USERNAME} -s /bin/bash pacman -Syu \ base-devel \ lib32-mesa \ mesa \ linux \ linux-zen \ linux-firmware \ pipewire{-pulse,-alsa,-jack} \ lib32-pipewire{,-jack} \ amd-ucode \ sway{,bg,lock,idle} \ waybar \ wl-clipboard-x11 \ wl-clipboard \ wine \ exe-thumbnailer \ wine-gecko \ wine-mono \ wine-nine \ wine-installer \ winetricks \ wineasio \ giflib \ lib32-giflib \ libpng \ lib32-libpng \ libldap \ lib32-libldap \ gnutls \ lib32-gnutls \ mpg123 \ lib32-mpg123 \ openal \ lib32-openal \ v4l-utils \ lib32-v4l-utils \ libpulse \ lib32-libpulse \ alsa-plugins \ lib32-alsa-plugins \ alsa-lib \ lib32-alsa-lib \ alsa-oss \ lib32-alsa-oss \ libjpeg-turbo \ lib32-libjpeg-turbo \ libxcomposite \ lib32-libxcomposite \ libxinerama \ lib32-libxinerama \ ncurses \ lib32-ncurses \ opencl-icd-loader \ lib32-opencl-icd-loader \ libxslt \ lib32-libxslt \ libva \ lib32-libva \ gtk3 \ lib32-gtk3 \ gst-plugins-base-libs \ lib32-gst-plugins-base-libs \ qbittorrent \ {,lib32-}vulkan-radeon \ vkd3d \ lib32-vkd3d \ faudio \ lib32-faudio \ vulkan-icd-loader \ lib32-vulkan-icd-loader \ libgpg-error \ lib32-libgpg-error \ sqlite \ lib32-sqlite \ libgcrypt \ lib32-libgcrypt \ fluidsynth \ lib32-fluidsynth \ wofi \ paru \ sway \ gnome \ gnome-extra \ i3-gaps \ i3lock \ i3status \ gdm \ refind \ efibootmgr \ dosfstools \ mtools \ networkmanager \ alacritty \ firefox-wayland-hg \ wdisplays \ vulkan-tools \ vulkan-headers \ mako \ slurp \ xorg-xwayland \ steam-native-runtime \ spirv-tools \ spirv-llvm-translator \ bluez \ bluez-utils --noconfirm --needed # Mkinitcpio mkinitcpio -Pv refind-install /dev/nvme1n1p1 # Start System's Services systemctl enable gdm systemctl enable NetworkManager systemctl enable bluetooth EOF