Migrated from Windows + WSL2 to bare-metal Arch Linux, eliminating the Windows → WSL → Linux → Docker layering overhead entirely.
Struggled with choosing every single component: display manager, compositor, terminal, launcher, notifications.
Skipped GNOME and KDE, went straight to window managers. Briefly considered dwm, but landed on Hyprland. The animations alone were enough to convince me.
Struggled with terminals: tried Alacritty and Kitty, then landed on WezTerm. (When I swapped to Mac, I switch between Ghostty (CMUX) and WezTerm depending on the workflow.)
Struggled with launchers: tried Rofi, Wofi, Bemenu, and settled on Fuzzel. Native Wayland, fast, minimal.
The status bar took way too long. Started with a basic Waybar config, fell into customizing the CSS, rewrote it three times, added custom modules, got the font exactly right, then accidentally broke it on a package update. Rewrote it again. Worth it.
The NVIDIA saga. Flickering, driver incompatibilities, rendering issues. Eventually stabilized by reading release notes carefully and keeping fallback kernels.
Struggled with audio: PipeWire either works instantly or sends you into a multi-hour debug session. It sent me into a multi-hour debug session.
Fell into over-customization. Spent more time tweaking than building. Learned: a workstation is a tool, not the goal.