I recently acquired a Framework 16" Laptop and of course I need to install Arch on it.
I don't actually have any USB, but I do have a 1 TB expansion card for the laptop, so I used Etcher to flash the Arch ISO onto it.
Secure boot has to be disabled first to allow booting from USB devices.
Once booted I just followed through the installation guide.
1iwctl # drops you in prompt
1[iwd]# device list
2[iwd]# station wlan0 scan
3[iwd]# station <device> connect <ssid>
Since I wanted an encrypted disk and did not need to run a logical partition across multiple physical drives, I chose LVM on LUKS and just did 1 big partition.
1fdisk /dev/nvme0n1
2# create boot partition
3> n
4> +512M
5> t
6> 1
7
8# fill the rest of the drive for root
9n
10<enter>
11<enter>
12<enter>
13w # write out the changes, also worth verifying
Once the partitions have been created, they need to be set up.
1$ lsblk # verify partition creation
2$ mkfs.fat -F32 /dev/nvme0n1p1 # format EFI
3$ cryptsetup -v luksFormat /dev/nvme0n1p2 encrypt root
4$ cryptsetup open /dev/nvme0n1p2 cryptlvm # open as cryptlvm
5
6# setup LVM
7$ pvcreate /dev/mapper/cryptlvm
8$ vgcreate volgroup /dev/mapper/cryptlvm
9
10$ lvcreate -L 32G -n swap vg0 # I have 32G of RAM and want to hibernate
11$ lvcreate -l 100%FREE -n lv-root vg0
12
13$ mkfs.ext4 /dev/vg0/lv-root
14$ mkswap /dev/vg0/swap
15
16$ mount /dev/vg0/lv-root /mnt
17$ mount --mkdir /dev/nvme0n1p1 /mnt/boot
18$ swapon /dev/vg0/swap
19
20$ pacstrap -K /mnt base linux linux-firmware lvm2 vim networkmanager sbctl
21
22$ genfstab -U /mnt >> /mnt/etc/fstab
23# updated 022 to 077 in /mnt/etc/fstab
24
25$ arch-chroot /mnt
26
27$ # set hostname, locale, timezone
add hooks to decrypt in /etc/mkinitcpio.conf
HOOKS=(base systemd autodetect microcode modconf kms keyboard sd-vconsole block sd-encrypt lvm2 filesystems fsck)
1bootctl install
2vim /boot/loader/entries/arch.conf
title Arch Linux
linux /vmlinuz-linux
initrd /initramfs-linux.img
options rd.luks.name=device-UUID=cryptlvm root=/dev/vg0/lv-root
Follow through with the Arch Wiki Framework 16
Added a udev
rules to customise keyboard via https://keyboard.frame.work (you need to use chrome/chromium)
https://github.com/qmk/qmk_firmware/blob/master/util/udev/50-qmk.rules
chromium blurry
set chrome://flags
set ozone to Wayland
check user installed packages
1pacman -Qei | awk '/^Name/ { name=$3 } /^Groups/ { if ( $3 != "base" && $3 != "base-devel" ) { print name } }'
1yay -S virt-manager qemu-base dnsmasq
2yay -S qemu-hw-usb-host # optional for usb host support
3sudo usermod -aG libvirt $(whoami)
4sudo systemctl enable --now libvirtd
Bridge networking is not a thing with a wifi only laptop, use NAT.
needs TPM
sudo pacman -S swtpm
add a TPM emulator in virt-manager
Since the laptop has a dGPU I wanted to see how it handled gaming.
Aside from installing steam, I also installed
gamescope
, a microcompositor that
runs within your current desktop environment. To actually use it you basically
have to the game launch options to DRI_PRIME=1 gamescope -W 2560 -H 1600 -r 165 -f -- %command%
.
This launches the game with gamescope
, and also sets the dGPU to be used. I'm not trying to play any AAA titles, and I played a bit of Hades II and Balatro with no issue.
The real issue was pairing an XBOX Wireless Controller. There is a known
bug
using the controller over Bluetooth. Basically it repeatedly
connects/disconnects in a loop and is unusable. The only solution is to update
the controller firmware. I tried using virt-manager
to spin up a VM and pass
the controller into that and update it, but the Xbox Accessories App refused to
pick it up.
Not to be deterred from this adventure I used Rufus ito install Windows To Go via the windows VM onto the 1TB expansion card I had. This allowed me to boot Windows off the card and update the controller.
Drop in replacement for i3
yay -S sway swayidle swaylock swaynag
wlsunset
kanshi
profiles for hotplug displays
yay -S polkit-gnome
REMOVED FOR ##`nwg-panel`
A menubar application that provides a fairly complete user experience out of the box. Shows volume/networking/battery etc and drop down menus for each item.
yay -S power-profiles-daemon
makes power profiles handling available over D-Bus
nwg-panel
REMOVED FOR ##waybar
1yay -S nwg-panel
1yay -S waybar`
https://github.com/victordantasdev/waybar I stole this config and tidied up the scripts.
yay -S power-profiles-daemon
1$ powerprofilesctl
2 performance:
3 CpuDriver: amd_pstate
4 PlatformDriver: platform_profile
5 Degraded: no
6
7 balanced:
8 CpuDriver: amd_pstate
9 PlatformDriver: platform_profile
10
11 * power-saver:
12 CpuDriver: amd_pstate
13 PlatformDriver: platform_profile
1yay -S corectrl
You can't change power settings on the GPU unless the GPU is running.
needs a polkit agent installed or it'll quietly die
yay -S fprintd
fprintd-enroll
yay -S sddm
--no-global-shortcuts
to prevent login screen bypasses
[General]
DisplayServer=wayland
GreeterEnvironment=QT_WAYLAND_SHELL_INTEGRATION=layer-shell
[Wayland]
CompositorCommand=kwin_wayland --drm --no-lockscreen --no-global-shortcuts --locale1
1yay -S arch-wiki-docs
2yay -S arch-wiki-lite
3
4wiki-search-html amd
5wiki-search-html 0 # your browser now opens
xdg-settings set default-web-browser firefox.desktop
1vim /etc/NetworkManager/dispatcher.d/09-timezone`
1#!/bin/sh
2case "$2" in
3 up)
4 timedatectl set-timezone "$(curl --fail https://ipapi.co/timezone)"
5 ;;
6esac
1chmod +x /etc/NetworkManager/dispatcher.d/09-timezone
systemd-timesyncd
To start
timedatectl set-ntp true
yay -S isync aerc
Setup mbsync
and point aerc
at it
msmtp
and msmtp-mta
for the sendmail
alias
I find msmtp
and more suitable to my needs of sending an email, no offline queueing.
Multiple services like to think they own /etc/resolv.conf
and end up clobbering it. The solution is to use systemd-resolved
or resolvconf
sudo systemctl enable systemd-resolved.service
Make sure that /etc/resolv.conf
is a symlink to stub-resolv.conf
otherwise run
sudo ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf
and restart all services
to check whats going on run
resolvectl status
yay -S easyeffects lsp-plugins calf
import profile https://gist.github.com/amesb/cc5d717472d7e322b5f551b643ff03f4
exec easyeffects --gapplication-service
on DE start
mpd
- server
rmpc
- client
mpd-mpris
if you want playerctl
to work
mkdir ~/.local/share/fonts
and put folders in here
fc-cache
to update
fc-list
to check
I used alacritty for a while, changed to using ghostty since it was all hype but changed to foot
ghotty
has a slow start up time, I worked around by launching the first instance in a scratch pad but
foot
is just fast from the start.
yay -S foot
yay -Scc
clean caches
yay -S --asexplicit
install packages as explicitly installed
yay -Yc
removes unneeded dependencies
yay -Ycc
removes unneeded dependencies and optional packages
yay -Pw
shows news since you list updated