Review Frost-Phoenix/nixos-config for Hyprland and desktop-component learnings #89

Closed
opened 2026-07-23 00:09:22 +01:00 by nimmo · 1 comment
Owner

Source: https://github.com/Frost-Phoenix/nixos-config (931 stars, 88 forks)
Focus: Hyprland configuration, home-manager desktop components, overall structure

Rationale

This is a mature Gruvbox-themed NixOS/Hyprland rice with an established modular structure. Our repo currently has zero Hyprland or desktop-WM configuration — this review is a low-effort, high-potential research task to inform future desktop builds (Electra iGPU, Nova if it gets a desktop use case, Lena if we add a DE).

Review Scope

1. Hyprland home-manager module structure

  • How they organise the compositor config, keybinds (binds.nix), window rules, monitor configuration
  • How they integrate Hyprlock and Swaylock-effects
  • Waybar configuration and styling approach (CSS vs Nix)
  • Rofi launcher integration
  • Notification daemon (swaync) setup

2. Home-manager organisation

  • Top-level modules/home/ directory — how they structure per-app modules (browser, git, terminal, etc.)
  • How they inject these into the NixOS config without duplication
  • Theme/colour-scheme propagation across components (GTK, cursor, icons, waybar, rofi, terminal)
  • Ghostty terminal configuration patterns

3. Desktop component integration

  • Screenshot workflow (grimblast, hyprpicker)
  • Screen recording (wf-recorder, OBS)
  • Clipboard persistence (wl-clip-persist)
  • Power menu and lockscreen UX
  • Wallpaper picker and management
  • Font and icon theme pipeline (Maple Mono, Papirus, Bibata cursor)

4. Script-as-package pattern

  • Their scripts/ auto-discovery mechanism that turns .sh files into packages usable as keybind targets
  • Potential to adopt or adapt this for our own keybind/script workflows

5. Nix patterns and conventions

  • Flake structure and input management
  • Module imports vs disabledModules approach
  • nh (nix helper) usage for rebuild/test/clean commands
  • Treefmt configuration
  • How they handle per-host vs shared desktop config

Output

Issue comments or a wiki page summarising:

  • What we should adopt as-is
  • What we should adapt with modifications
  • What we should skip and why

No PRs or code changes expected from this review alone.

**Source:** https://github.com/Frost-Phoenix/nixos-config (931 stars, 88 forks) **Focus:** Hyprland configuration, home-manager desktop components, overall structure ## Rationale This is a mature Gruvbox-themed NixOS/Hyprland rice with an established modular structure. Our repo currently has zero Hyprland or desktop-WM configuration — this review is a low-effort, high-potential research task to inform future desktop builds (Electra iGPU, Nova if it gets a desktop use case, Lena if we add a DE). ## Review Scope ### 1. Hyprland home-manager module structure - How they organise the compositor config, keybinds (`binds.nix`), window rules, monitor configuration - How they integrate Hyprlock and Swaylock-effects - Waybar configuration and styling approach (CSS vs Nix) - Rofi launcher integration - Notification daemon (`swaync`) setup ### 2. Home-manager organisation - Top-level `modules/home/` directory — how they structure per-app modules (browser, git, terminal, etc.) - How they inject these into the NixOS config without duplication - Theme/colour-scheme propagation across components (GTK, cursor, icons, waybar, rofi, terminal) - Ghostty terminal configuration patterns ### 3. Desktop component integration - Screenshot workflow (`grimblast`, `hyprpicker`) - Screen recording (`wf-recorder`, OBS) - Clipboard persistence (`wl-clip-persist`) - Power menu and lockscreen UX - Wallpaper picker and management - Font and icon theme pipeline (Maple Mono, Papirus, Bibata cursor) ### 4. Script-as-package pattern - Their `scripts/` auto-discovery mechanism that turns `.sh` files into packages usable as keybind targets - Potential to adopt or adapt this for our own keybind/script workflows ### 5. Nix patterns and conventions - Flake structure and input management - Module `imports` vs `disabledModules` approach - `nh` (nix helper) usage for rebuild/test/clean commands - Treefmt configuration - How they handle per-host vs shared desktop config ## Output Issue comments or a wiki page summarising: - What we should adopt as-is - What we should adapt with modifications - What we should skip and why No PRs or code changes expected from this review alone.
Author
Owner

Review completed

Reviewed Frost-Phoenix/nixos-config against the current desktop structure in this repository.

What to adopt

  • Component-oriented Home Manager modules. Their modules/home/ tree splits the compositor, Waybar, Rofi, SwayNC, lockscreen, terminal, themes, and scripts into focused modules with small aggregator files. This is a good pattern for avoiding a second monolithic desktop configuration.
  • Declarative Waybar configuration. The separate settings/style files and shared colour/font attribute set make the bar readable and theme changes cheap.
  • A small Hyprland core plus focused support modules. Their Hyprland module owns only compositor packages and enablement; startup, monitors, keybinds, window rules, and lockscreen are separate concerns.
  • Packaged personal scripts. The script auto-discovery pattern is useful for making screenshot, wallpaper, power, and display helpers available as reproducible Home Manager packages and binding them by command name.
  • Explicit session environment setup. Importing Wayland variables into the user systemd environment is a useful integration detail for portals and user services.

What to adapt

  • Keep Plasma as the current default and introduce Hyprland as a parallel, opt-in desktop profile for Electra if we proceed. Do not replace the existing home/plasma.nix path.
  • Map the external repo’s modules/home/ idea onto this repository’s existing split between modules/desktop/, modules/profiles/, and home/; do not import its directory layout wholesale.
  • Reuse this repository’s host facts, hardware specialisations, AI desktop profile, power-profile handling, and existing assets rather than copying host-specific assumptions from the reference.
  • Prefer Home Manager/NixOS service modules for Waybar, Hyprlock, SwayNC, portals, and clipboard persistence where available; use compositor startup hooks only for genuinely session-specific commands.
  • If monitors become a problem, borrow the reference repo’s separation of generic compositor settings from host-specific monitor/workspace files.

What to skip

  • The complete Gruvbox application/theme inventory and personal app choices; they are opinionated and not a good fit for a direct migration.
  • Hardcoded workspace assignments tied to the author’s applications and classes.
  • Blindly copying shell scripts: several are tightly coupled to their paths, package names, and session assumptions, and the reference README explicitly describes the configuration as personal and evolving.
  • Treating the reference as production-ready: it is a useful design reference, not a tested module library.

Suggested future shape

If Hyprland becomes an implementation task, add a narrowly scoped parallel profile for Electra: compositor + portal/session integration first, then Waybar/launcher/notifications/lockscreen, with theme and application choices kept separate. Validate it as an additional login session before considering any Plasma change.

Reference files reviewed include Hyprland module, Hyprland module aggregator, Waybar settings, Waybar style, Rofi module, SwayNC module, and script packaging.

## Review completed Reviewed [Frost-Phoenix/nixos-config](https://github.com/Frost-Phoenix/nixos-config) against the current desktop structure in this repository. ### What to adopt - **Component-oriented Home Manager modules.** Their `modules/home/` tree splits the compositor, Waybar, Rofi, SwayNC, lockscreen, terminal, themes, and scripts into focused modules with small aggregator files. This is a good pattern for avoiding a second monolithic desktop configuration. - **Declarative Waybar configuration.** The separate settings/style files and shared colour/font attribute set make the bar readable and theme changes cheap. - **A small Hyprland core plus focused support modules.** Their Hyprland module owns only compositor packages and enablement; startup, monitors, keybinds, window rules, and lockscreen are separate concerns. - **Packaged personal scripts.** The script auto-discovery pattern is useful for making screenshot, wallpaper, power, and display helpers available as reproducible Home Manager packages and binding them by command name. - **Explicit session environment setup.** Importing Wayland variables into the user systemd environment is a useful integration detail for portals and user services. ### What to adapt - Keep Plasma as the current default and introduce Hyprland as a parallel, opt-in desktop profile for Electra if we proceed. Do not replace the existing `home/plasma.nix` path. - Map the external repo’s `modules/home/` idea onto this repository’s existing split between `modules/desktop/`, `modules/profiles/`, and `home/`; do not import its directory layout wholesale. - Reuse this repository’s host facts, hardware specialisations, AI desktop profile, power-profile handling, and existing assets rather than copying host-specific assumptions from the reference. - Prefer Home Manager/NixOS service modules for Waybar, Hyprlock, SwayNC, portals, and clipboard persistence where available; use compositor startup hooks only for genuinely session-specific commands. - If monitors become a problem, borrow the reference repo’s separation of generic compositor settings from host-specific monitor/workspace files. ### What to skip - The complete Gruvbox application/theme inventory and personal app choices; they are opinionated and not a good fit for a direct migration. - Hardcoded workspace assignments tied to the author’s applications and classes. - Blindly copying shell scripts: several are tightly coupled to their paths, package names, and session assumptions, and the reference README explicitly describes the configuration as personal and evolving. - Treating the reference as production-ready: it is a useful design reference, not a tested module library. ### Suggested future shape If Hyprland becomes an implementation task, add a narrowly scoped parallel profile for Electra: compositor + portal/session integration first, then Waybar/launcher/notifications/lockscreen, with theme and application choices kept separate. Validate it as an additional login session before considering any Plasma change. Reference files reviewed include [Hyprland module](https://github.com/Frost-Phoenix/nixos-config/blob/main/modules/home/hyprland/hyprland.nix), [Hyprland module aggregator](https://github.com/Frost-Phoenix/nixos-config/blob/main/modules/home/hyprland/default.nix), [Waybar settings](https://github.com/Frost-Phoenix/nixos-config/blob/main/modules/home/waybar/settings.nix), [Waybar style](https://github.com/Frost-Phoenix/nixos-config/blob/main/modules/home/waybar/style.nix), [Rofi module](https://github.com/Frost-Phoenix/nixos-config/blob/main/modules/home/rofi/rofi.nix), [SwayNC module](https://github.com/Frost-Phoenix/nixos-config/blob/main/modules/home/swaync/swaync.nix), and [script packaging](https://github.com/Frost-Phoenix/nixos-config/blob/main/scripts/scripts.nix).
nimmo closed this issue 2026-07-28 07:50:46 +01:00
Sign in to join this conversation.
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
nimmo/nixos-config#89
No description provided.