- Connect to a network using
iwctl. You will be prompted for a password. Replacewlan0andWilmFiwith you interface name and SSID.$ iwctl [iwd]# station wlan0 connect WilmFi password: - Sync the repos:
$ pacman -Sy
- Format the disks. First list them
Use
$ lsblk
gdiskto create partitions.EFI partition:$ gdisk /dev/nvme0n1
Linux partition:Command (? for help): n Partition number (1-128, default 1): First sector (34-104857566, default 2048) or{+-}size{KMGTP}: Last sector (2048-104857566, default 104857566) or{+-}size{KMGTP}: +350M Current type is 8300 (Linux filesystem) Hex code or GUID (L to show codes, Enter = 8300): ef00 Changed partition type to 'EFI system partition'
Write changes to disk:Command (? for help): n Partition number (2-128, default 2): First sector (34-104857566, default 718848) or{+-}size{KMGTP}: Last sector (718848-104857566, default 104857566) or{+-}size{KMGTP}: Current type is 8300 (Linux filesystem) Hex code or GUID (L to show codes, Enter = 8300): Changed partition type to 'Linux filesystem'
Command (? for help): w ... ... Do you want to proceed? (Y/N): y
- Format the EFI partition.
$ mkfs.vfat /dev/nvme0n1p1
- Prepare encryption of root volume:
Open partition:
$ cryptsetup luksFormat /dev/nvme0n1p2 ... Are you sure? (Type 'yes' in capital letters): YES Enter passphrase for /dev/nvme0n1p2: Verify passphrase:
$ cryptsetup luksOpen /dev/nvme0n1p2 cryptroot Enter passphrase for /dev/nvme0n1p2: - Format the
btrfspartition:$ mkfs.btrfs /dev/mapper/cryptroot
- Create
btrfssubvolumes$ mount /dev/mapper/cryptroot /mnt $ btrfs subvolume create /mnt/@ $ btrfs subvolume create /mnt/@home $ btrfs subvolume create /mnt/@var
- Unmount the device
$ umount /mnt
- Mount the
@subvolume with options:Create directories for all other volumes:$ mount -o noatime,compress=zstd,ssd,discard=async,space_cache=v2,subvol=@ /dev/mapper/cryptroot /mnt
Remount themkdir -p /mnt/{boot/efi,home,var}@homesubvolume with options:Remount the$ mount -o noatime,compress=zstd,ssd,discard=async,space_cache=v2,subvol=@home /dev/mapper/cryptroot /mnt/home
@varsubvolume with options:Mount EFI partition:$ mount -o noatime,compress=zstd,ssd,discard=async,space_cache=v2,subvol=@var /dev/mapper/cryptroot /mnt/var
Verify everything mounted correctly:$ mount /dev/nvme0n1p1 /mnt/boot/efi
$ lsblk
- Install the base system:
$ pacstrap /mnt \ base linux linux-firmware \ intel-ucode btrfs-progs \ git vim
- Create
fstab:genfstab -U /mnt >> /mnt/etc/fstab - Enter installation
arch-chroot /mnt
- Configure the system. Check out this script to make your own version.
- Edit
mkinitcpio.confto add support forbtrfsand encryption.Recreate image:MODULES=(btrfs) ... HOOKS=(...block enrcypt filesystems...)
mkinitcpio -p linux
- TODO: figure out how to do this with
refindEdit/etc/default/grub.cfg. Replace${UUID}with the UUID of the encrypted partition, not the mapper device:Regenerate... GRUB_CMDLINE_LINUX_DEFAULT="loglevel=3 quiet cryptdevice=UUID=${UUID}:cryptroot root=/dev/mapper/cryptroot" ...grubconfig:grub-mkconfig -o /boot/grub/grub.cfg
- Exit
chroot, unmount/mntfolder and reboot. - Connect to the network:
sudo nmcli --ask d wifi connect ${SSID} - Install and configure sway:
NOTE: at time of writing there is an issue with the
sudo pacman -S sway swaylock swayidle xorg-xwayland mkdir ~/.config/sway cp /etc/sway/config ~/.config/sway/
swayidleinstall which causes thepacmancommand to fail. I simply removed it for this install. - Install
yay:git clone https://aur.archlinux.org/yay.git cd yay makepkg -si - Configure Ulauncher.
Add this line to set it as Sway menu shortcut:
set $menu ulauncher | xargs swagmsg exec --
- Configure hardware keys. You'll need to install a package for screen brightness:
Add the following directives to your sway config.
yay -S brightnessctl
- Install and configure waybar:
yay -S community/waybar mkdir ~/.config/waybar cp /etc/xdg/waybar/* ~/.config/waybar/
- Install nerd fonts:
yay -S nerd-fonts-complete
- Authorize CalDigit TS3 Plus (
boltpackage required):$ bolt list Caldigit, Inc. TS3 Plus ... ... uuid: UUID ... $ bolt authorize UUID
- Configure DDC/DI:
Load
usermod -aG i2c david
i2c-devkernel module on startup by creating/etc/modules-load.d/i2c-dev.conf:# Support DDC/DI of external monitors via ddcutil i2c-dev - Install zplug:
yay -S zplug
- Install development tools:
aws-cli-v2-bin aws-session-manager-plugin aws-vault github-cli helm kbenv neovim tfswitch-bin vim-plug yq - Install and configure
timeshift:$ yay -S timeshift timeshift-autosnap
timeshiftnormally runs its GUI root which displeases Wayland (aka it won't start). To runtimeshiftunder Wayland, you need to run this command:$ xhost si:localuser:root && sudo timeshift-gtk - Installing virtualbox:
note that
$ yay -S virtualbox virtualbox-host-modules-arch
linux-headersare also required for this but they should have been installed duringpacstrap