# Panama Formerly Sunhat. A personal config for Fedora, with the intention of helping a user set up their Fedora system with one command. ```sh git clone https://git.gbrown.org/gib/Panama.git ~/.local/share/Panama ~/.local/share/Panama/install ``` `install` asks its questions first and then runs the stages in `setup/scripts/` in order, without stopping again: | Script | Does | |---|---| | `interview` | Every prompt, before anything is installed. Answers last one run and are never written to a durable path | | `install-packages` | Repos (RPM Fusion, Terra, Hyprland COPR), the package lists in `setup/packages/`, then whichever optional categories were chosen | | `link-dotfiles` | Symlinks `config/dot/` → `~/.config/`, and seeds the wallpaper, cursor theme and Firefox chrome | | `change-settings` | Copies `config/copy/` over `/`, applies gsettings, enables user services | | `link-vicinae-scripts` | Publishes the Vicinae script commands | | `setup-identity` | git config, `gh auth login`, an SSH key — whichever were asked for | | `install-hardware` | NVIDIA, Secure Boot enrollment, Fedora's extras, firmware — each only if it was asked for. Last, because enrollment and firmware are consumed at the next boot | The run ends with a health summary from `panama-doctor`, which reports what is actually running rather than what was attempted. It never fails the install: on a fresh machine it legitimately reports things as not yet configured. ### Optional applications Every machine gets the lists in `setup/packages/`. The interview also offers the categories in `setup/packages/extras/` as a checklist, so a work laptop need not acquire emulators and a desktop need not skip Steam. Nothing is preselected. A category is one file. A bare line is a dnf package and a `flatpak:` line is a Flathub ID, because the applications in a category do not all come from one place. Adding a category is adding a file — the menu is read from the directory, not written down anywhere. Existing configs are moved to `config/old/` rather than overwritten. ## Desktops Panama configures **two** desktops that coexist. Both sessions stay available in GDM, so you can switch back and forth while you settle in. ### GNOME The original setup: Forge for tiling, Dash-to-Dock, Openbar, Vitals, AppIndicator support. Configured through `config/dot/forge/` and gsettings. ### Hyprland A from-scratch replacement built to reproduce the GNOME setup closely enough that muscle memory transfers — same keybinds, same panel contents, same dock, same Tokyo Night Moon palette. | Piece | What it is | |---|---| | `config/dot/hypr/` | Compositor config. **Lua, not hyprlang** — see its README | | `config/dot/quickshell/` | The shell: bar, dock, Continuum overview, Settings, Screen Intelligence, focus sessions, quick settings, notifications, screenshot UI | | `config/dot/vicinae/` | Raycast-style launcher, themed | | `config/dot/uwsm/` | Session environment (see the uwsm caveat in the hypr README) | | `config/dot/wofi/` | Fallback launcher, in case the shell fails to start | | `config/dot/xdg-desktop-portal/` | Portal backend routing | **Start here: [`config/dot/hypr/README.md`](config/dot/hypr/README.md)** — it covers the Lua migration, the uwsm environment gotcha, the HDR decision, the full keymap, and troubleshooting. Log in as **"Hyprland (uwsm-managed)"**, not plain "Hyprland". ## Layout ``` bin/ Small user-facing commands on PATH config/ bash/ .bashrc, aliases, env (env is gitignored) copy/ Files copied verbatim over / (needs sudo) dot/ Symlinked into ~/.config old/ Backups of whatever was replaced (gitignored) setup/ packages/ One package per line scripts/ Run in order by ./install ```