T480 and FreeBSD 14

08 Jan 2025

ThinkPad the beast machine

I heard good things about this model, but I did not expect it to be that good. This is by far the best machine I had my hands on. Fantastic keyboard, swappable batteries, an ethernet port, USB-C charging, and 32GB of RAM. What else to ask? And the LED on the lid is a neat touch.

The laptop is quite heavy and bulky, but it is definitely worth it.

Hyprland

#Setup

Disable Secure Boot and TPM in BIOS settings to boot from the installation media.

All post-install/maintenance is done with Ansible and freebsd-collection. Playbooks in this collection require root access, so a privilege escalation tool is needed. This deployment is using doas, but sudo will work as well.

Install the system and add the user with the assigned wheel group via the menu prompt (the rest of the configuration is handled by the playbook). The installer should pick up the wi-fi adapter and download any missing firmware (new in 14.2).

After successful installation, reboot the machine, log in as root, and prepare for the playbook run:

  1. Add required packages
pkg install -y doas git py311-ansible
  1. Populate /usr/local/etc/doas.conf
permit nopass keepenv :wheel
permit nopass keepenv root as root

#Deployment

Log in as user to install Ansible collection and execute the station playbook:

echo '[privilege_escalation]\nbecome_method = doas' > ~/.ansible.cfg # use doas
ansible-galaxy collection install charlesrocket.freebsd
ansible-playbook charlesrocket.freebsd.station -c local -i "local," -e "profile=charlesrocket"

This playbook configures the system for desktop machines according to the settings defined in the profile. See the collection's documentation on how to test/add user profiles.

Reboot the system after the playbook run.

#Usage

Use SUPER+D to open the desktop menu (bindings).

#Drivers

These peripherals work without any issues:

The system detects the webcam (Azurewave) and the fingerprint reader (Synaptics), but I have not got a chance to test these just yet.

Logout screen

#Hacks

To fix the sound in Firefox I had to define a media.cubeb.backend configuration setting with oss value.

Current packages are still built on FreeBSD 14.1, so drm-kmod must be compiled manually (or replaced with drm-515-kmod).



Comment by replying to this post using a Mastodon or other ActivityPub/Fediverse account.