- Shell 100%
| .gitignore | ||
| install.sh | ||
| README.md | ||
Personal Arch Linux Install Guide
I'm using this repo to record the steps I take to install and personalize arch linux. Hopefully I can automate some of the later steps over time.
Part 1 - Installation
Generally following the steps on the arch install guide to get to a chrooted environment.
- Verify we booted as x64 UEFI
cat /sys/firmware/efi/fw_platform_size
Network
- Check device with
ip link - Auth wifi with
iwctl station wlan0 connect $AP_NAME ping archlinux.orgto verify
Partitioning
Use fdisk to partition: /boot : 1G partition, type=1 (EFI), bootable (press M then a) / : remainder of the disk, default type
For /boot (/dev/sda1) call mkfs.fat -F 32 /dev/sda1
Follow the steps here to encrypt the root partition. Consider increasing the cryptographic parameters as mentions.
Mount the partitions at /mnt and /mnt/boot.
Install
Install the base:
pacstrap -K /mnt base linux linux-firmware
Followed by important packages:
pacstrap /mnt grub efibootmgr e2fsprogs networkmanager vim man-db man-pages texinfo sudo
Either pacstrap intel-ucode or amd-ucode for the processor. It will be automatically loaded by grub.
Part 2 - Configure
Generally follow the configure the system steps in the install guide.
genfstab -U /mnt >> /mnt/etc/fstab
arch-chroot /mnt
-
Set the time as described.
-
Set the localization as described.
-
Enable NetworkManager
systemctl enable NetworkManager.service -
Update the initramfs as described here
-
Add
sd-encryptafterblockin HOOKS in /etc/mkinitcpio.conf -
Run
mkinitcpio -P -
Set the root password
-
Run
bootclt install -
Create
/boot/loader/entries/arch.conf:
title Arch Linux
linux /vmlinuz-linux
initrd /initramfs-linux.img
options rd.luks.name=UUID=root root=/dev/mapper/root
(Get the UUID using blkid -s UUID -o value /dev/sda2, can be inserted into vim using :r!CMD).
- Reboot sucessfully(?) into the new system.
In the new system
Connect to wifi
nmcli device wifi listnmcli device wifi connect --ask $SSIDnmcli c modify $SSID connection.autoconnect true
Create a user:
useradd -m -G wheel drewpasswd drewEDITOR=vim visudoand uncomment the line starting %wheel
TODO: Install graphics driver pagckages?
Update DNS
ln -sf ../run/systemd/resolve/stub-resolv.conf /etc/resolv.conf
systemctl enable systemd-resolved
Create a swapfile (optional)
https://wiki.archlinux.org/title/swap#Swap_file
For laptops: Check suspend method -> https://wiki.archlinux.org/title/Power_management/Suspend_and_hibernate#Changing_suspend_method
Configure hibernation: https://wiki.archlinux.org/title/Power_management/Suspend_and_hibernate#Hibernation
Set /etc/systemd/sleep.conf parameters for timed sleep/hibernate. Set /etc/systemd/logind.conf to HandleLidSwitch to SuspendThenHibernate
Part 3 - Desktop
Reboot and login as the new user.
Everything from here (packages, /etc config, services, and dotfiles) is
managed declaratively by chezmoi and
aconfmgr. The chezmoi dotfiles repo
also carries the aconfmgr config, so applying chezmoi then aconfmgr sets up the
whole system.
Prerequisite: generate an SSH key and register it with gitea (reachable via tailscale) so the dotfiles repo can be cloned over SSH:
ssh-keygen -t ed25519- Add the public key to gitea, then verify with
ssh -T -p 2222 git@git.tiramisu.one
Then bootstrap with the install script:
curl -fsSL https://git.tiramisu.one/drew/arch-install/raw/branch/main/install.sh | bash
The script installs chezmoi + yay + aconfmgr, applies chezmoi (dotfiles and
~/.config/aconfmgr), then runs aconfmgr apply. aconfmgr apply is
interactive: review its diffs and decline overwrites of the host-specific
boot config (/etc/default/grub, /etc/fstab, /etc/hostname) — the manual
chroot steps above are authoritative for those.
Part 4 - Applications
mkdir Documents/ Downloads/ Pictures/
Log into firefox w/ sync (installs bitwarden.) Set firefox to search with kagi.