2026-06-29 14:05:02 +01:00
2026-06-29 14:05:02 +01:00
2026-06-29 13:23:11 +01:00
2026-06-29 13:23:11 +01:00
2026-06-29 13:23:11 +01:00
2026-06-29 13:23:11 +01:00
2026-06-29 13:23:11 +01:00
2026-06-29 13:44:12 +01:00

Fedora Sway workstation

An Ansible playbook for rebuilding the two NixOS workstation hosts as a native Fedora Sway desktop. The NixOS server host (sta-len-nix) and its services, WireGuard, firewall, and Netdata configuration are intentionally excluded.

Target

  • Native Fedora 44 on x86_64
  • Sway with SDDM, Waybar, PipeWire, printing, SSH, and NetworkManager
  • Faroese keyboard layout, Danish regional formats, and Atlantic/Faroe time
  • Foot as the terminal, opening the persistent tmux session
  • Zen as the default browser, installed from Zen's official release tarball
  • Development tools, formatters, and Fedora-packaged language servers from NixOS

Run

Install Ansible as the normal desktop user:

sudo dnf install -y ansible
git clone https://codeberg.org/bartal-lsn/fedora-provisioning.git
cd fedora-provisioning
ansible-playbook setup.yml --ask-become-pass

Do not start the playbook with sudo. It uses privilege escalation only for system tasks and installs Zen and user configuration into the invoking user's home directory. Log out or reboot after the first run to enter Sway through SDDM and pick up the new group memberships and environment.

Configuration ownership

The Home Manager configuration lives in the public https://codeberg.org/bartal-lsn/dotfiles repository as GNU Stow packages. During provisioning, Ansible clones or updates that repository at ~/dotfiles, then runs stow -R * from that directory. Stow therefore restows every package into the user's home directory.

Commit dotfile changes to the Codeberg repository, then rerun the playbook to pull ~/dotfiles and refresh its links. Editor-managed binaries such as zls, omnisharp, jdtls, and lua-language-server remain Neovim concerns because Fedora does not package them consistently. Ansible installs Fedora's clangd and gopls, Pyright, TypeScript language server, Black, isort, Prettier, and StyLua. Rust and rust-analyzer are installed through the official rustup installer.

Desktop keys

Key Action
Super+t Foot attached to tmux session main
Super+b Zen Browser
Super+d Rofi application launcher
Super+q Close window
Super+h/j/k/l Move focus
Super+Shift+h/j/k/l Move window
Super+1..0 Switch workspace
Super+Shift+1..0 Move window to workspace
Super+f Toggle fullscreen
Super+Shift+Space Toggle floating
Super+- Show scratchpad
Super+Shift+- Move window to scratchpad

Optional behavior

The main switches live near the top of vars.yml:

  • upgrade_system: upgrade packages before provisioning
  • install_virtualization: install Fedora's libvirt virtualization group
  • install_sqlcmd: retain the Fedora repository's existing SQL Server CLI
  • install_typora: install the unverified Flathub Typora wrapper

The playbook installs OpenJDK 25 because Fedora 44 does not publish the OpenJDK 21 RPM used by the NixOS setup.

Fedora does not have a direct equivalent for NixOS's virtualisation.vmware.host.enable; this playbook uses Fedora's supported libvirt stack instead. Typora is optional because its Flathub wrapper is not verified by Typora. Zen never uses Flatpak: Ansible downloads the official release archive directly, places it under ~/.tarball-installations/zen, and creates the ~/.local/bin/zen launcher.

Re-running

The playbook is designed to be repeatable. Zen, Bun, Rust, Starship, npm tools, services, and configuration files are checked before changes are made. Zen handles browser updates itself after the initial binary installation.

S
Description
No description provided
Readme
76 KiB
Languages
Jinja 100%