new version after nix
This commit is contained in:
@@ -0,0 +1,88 @@
|
||||
# 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:
|
||||
|
||||
```bash
|
||||
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.
|
||||
Reference in New Issue
Block a user