Skip to content

feat(noctalia): Migrate to Noctalia - #56

Open
RAPSNX wants to merge 39 commits into
mainfrom
feat/noctalia-shell
Open

RAPSNX wants to merge 39 commits into
mainfrom
feat/noctalia-shell

Conversation

@RAPSNX

@RAPSNX RAPSNX commented Aug 21, 2026

Copy link
Copy Markdown
Owner

Summary

  • migrate the Hyprland desktop shell to Noctalia with the dock disabled
  • add Noctalia Greeter on Zion and retain the restricted Windows reboot action
  • remove retired Waybar, Fuzzel, SwayNC, Wlogout, Hyprpaper, Hyprlock, Hypridle, tray-applet, and related package configuration
  • preserve existing wallpaper assignments with a one-time Noctalia migration service

Validation

  • nix eval .#homeConfigurations."rap@zion".activationPackage.drvPath
  • nix eval .#homeConfigurations."nix@firefly".activationPackage.drvPath
  • nix eval .#nixosConfigurations.zion.config.system.build.toplevel.drvPath
  • pre-commit: deadnix, nixfmt, statix

A full activation build was not completed locally because the daemon cannot trust the Noctalia cache and would fetch about 2.5 GiB.

@RAPSNX
RAPSNX marked this pull request as ready for review August 25, 2026 21:17

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: d094451e07

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread modules/home/desktops/noctalia/default.nix Outdated
Base automatically changed from zionos to main August 26, 2026 19:02
@RAPSNX
RAPSNX force-pushed the feat/noctalia-shell branch from d094451 to 0d1ed3f Compare August 26, 2026 19:11
@RAPSNX
RAPSNX force-pushed the feat/noctalia-shell branch from 0d1ed3f to 462d63c Compare August 28, 2026 13:00
@RAPSNX RAPSNX changed the title feat: migrate desktop shell to Noctalia feat(noctalia): Migrate to Noctalia Aug 29, 2026

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 9834874ebf

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread modules/nixos/roles/desktop/hyprland.nix Outdated

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: cdaa7843ad

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread modules/home/desktops/noctalia/default.nix Outdated
Comment thread docs/hosts/firefly.md Outdated

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 1e55a5390b

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread hosts/zion/home.nix Outdated
@RAPSNX
RAPSNX force-pushed the feat/noctalia-shell branch from 1e55a53 to 29e02ed Compare August 31, 2026 20:53

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 29e02edcc0

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread modules/home/desktops/noctalia/default.nix Outdated
Comment thread modules/home/desktops/noctalia/default.nix Outdated

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: bb7d155de0

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread modules/home/desktops/noctalia/default.nix Outdated
Comment thread modules/home/desktops/noctalia/default.nix Outdated
Comment thread modules/home/desktops/hyprland/keybinds.nix Outdated
@RAPSNX
RAPSNX force-pushed the feat/noctalia-shell branch from bb7d155 to 59721b6 Compare September 1, 2026 17:15
Comment thread docs/reference/noctalia.md

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 58894005b2

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

"[ workspace special:aux silent ] sleep 2 && chromium --profile-directory=Default --app-id=dlgohinmglaoopaiplliaecdpmnepmga"
]
++ cfg.autostart;
];

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Preserve the per-host startup commands

When either Hyprland session starts, this fixed exec-once list no longer includes the former per-host commands: Firefly loses Mumble, Firefox, and Chromium startup, while Zion loses Firefox and its ddcutil input-selection command. I checked both host files and the repository-wide autostart configuration; xdg.autostart.enable was added, but no equivalent desktop entries were added for these commands, so they no longer run after login.

Useful? React with 👍 / 👎.

@RAPSNX
RAPSNX force-pushed the feat/noctalia-shell branch from 79d7af7 to 6aa47c6 Compare September 8, 2026 07:38

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 6aa47c69dc

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread docs/hosts/firefly.md Outdated

2. **Revert Home Manager configuration** in `hosts/firefly/home.nix`:
- Set `roles.desktop.hyprland.configOnly = true;` under `roles.desktop.hyprland`.
- Remove or disable `xdg.portal` and `systemd.user.services.xdg-desktop-portal*` overrides so systemd user units fall back to host `/usr/lib/systemd/user/` definitions.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Remove package units when rolling back to PPA

When a Firefly user follows this rollback, the named systemd.user.services.xdg-desktop-portal* overrides do not exist; the Nix portal units are actually supplied by systemd.user.packages in hosts/firefly/home.nix:123-127. Leaving that list in place both retains the Nix frontend/GTK units instead of the promised /usr/libexec stack and, after configOnly = true forces finalPortalPackage to null, can make sw-fly fail evaluation. Instruct the user to remove or guard the package-unit list as part of the rollback.

Useful? React with 👍 / 👎.

Fix session isolation and logout crash trigger (phase 1+2)

Resolve service duplication and clean portal routing (phase 2)

docs: track completion of phase 1 and 2 tasks

Migrate portal ownership and declarative config to HM (phase 3)

- Relocate generic-Linux portal packages to hyprland module
- Migrate xdph.conf to wayland.windowManager.hyprland.xdph.settings with 60 FPS cap
- Express PATH via systemd.user.sessionVariables
- Narrow systemd imported environment variables
- Remove unused hyprland-git flake input
- docs: track completion of phase 3 tasks

Update documentation and finalize screencopy performance decisions (phase 4)

- Document explicit Nix vs Ubuntu ownership boundaries
- Update portal discovery documentation for modern XDG data dir lookup
- Detail package unit symlink cleanup in rollback procedures
- Confirm screencopy performance decision to retain automatic fallback
- docs: track completion of phase 4 tasks

docs: track completion of phase 5 verification tasks

- Flake evaluation: passed with zero warnings and zero assertion failures
- Code style: statix, deadnix, and nixfmt clean
- Build verification: home-manager generation and systemd user units verified
@RAPSNX
RAPSNX force-pushed the feat/noctalia-shell branch from 6aa47c6 to ef2b0eb Compare September 8, 2026 18:29

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: f33efd794b

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread extra/snippet.toml
Description = "get ondemand locally"
Output = ""
Tag = []
command = "read -r OND_NAME && k get secrets -n ondemand \"$OND_NAME\"-credentials -oyaml | yq '.data.gardenKubeconfig' | base64 -d > ~/.garden/envs/ond.yaml"

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Create the downloaded kubeconfig with private permissions

When this snippet is run with a common 022 umask and ~/.garden/envs is traversable by other local users, the redirection creates ond.yaml as mode 0644, exposing the decoded Kubernetes credentials. Set a restrictive umask or write the file with mode 0600 before storing the secret.

Useful? React with 👍 / 👎.

@RAPSNX
RAPSNX force-pushed the feat/noctalia-shell branch from f33efd7 to 7ba0cd5 Compare September 11, 2026 18:57

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 8e73b87415

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread hosts/firefly/home.nix Outdated
[ -f "$GCTL_CACHE" ] && source "$GCTL_CACHE"
eval $(gardenctl kubectl-env zsh)

source ~/.config/rapsn/additional.env

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Guard the optional shell environment file

On a fresh Firefly installation, or whenever this unmanaged file has not been created, every interactive Zsh startup reports no such file or directory because neither Home Manager nor the bootstrap documentation provides it. Check that the file exists before sourcing it, or manage it declaratively.

Useful? React with 👍 / 👎.

@RAPSNX
RAPSNX force-pushed the feat/noctalia-shell branch from c836424 to 9675ecf Compare September 15, 2026 16:19

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 9675ecf768

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

end

local function one_shot(keys, dispatcher, description)
bind(keys, sequence(dispatcher, clear_notification(), submap("reset")), description)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Clear the banner before native screenshot dispatch

When s or Shift+s is pressed before the Noctalia-mode banner expires, one_shot dispatches screenshot-region or screenshot-fullscreen before notification-clear-active; with screen freezing enabled, the capture can therefore include the banner. Fresh evidence after the annotated-capture fix is that only the A path now clears first, while both native screenshot bindings still use this reversed helper ordering.

Useful? React with 👍 / 👎.

@RAPSNX
RAPSNX force-pushed the feat/noctalia-shell branch from 9675ecf to a7cb12b Compare September 15, 2026 17:42
Comment thread docs/hosts/firefly.md

2. Check atuin `key` match with the key in vault.

# System Architecture & Ownership Boundaries

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The toggle firefox submap does not work

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: b75dd5742a

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +53 to +56
{
criteria = "eDP-1";
mode = "1920x1200@60.00Hz";
scale = 1.0;

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Position the laptop explicitly in the meeting-room profile

When the RallyBar and eDP-1 activate this new profile, the laptop display still inherits the global position = "6000,0" setting at the top of this file because the profile overrides only its mode and scale. With the 1920-wide RallyBar using its normal/default placement, this leaves a multi-thousand-pixel gap between outputs rather than an adjacent meeting-room layout; set explicit positions for both outputs in this profile.

Useful? React with 👍 / 👎.

@RAPSNX
RAPSNX force-pushed the feat/noctalia-shell branch from b75dd57 to 0220ff1 Compare September 18, 2026 13:01

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: d6143fe8a7

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread flake.nix

# Portable temporary VM
"rap@devbox" = lib.homeManagerConfiguration {
modules = homeModules ++ [ ./hosts/devbox/home.nix ];

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Pass mylib to the devbox Home Manager evaluation

Evaluating the new rap@devbox output fails before producing an activation package: homeModules imports modules/home/common/roles.nix and modules/home/cli/zsh/default.nix, both of which require a mylib module argument, but this configuration's extraSpecialArgs supplies only inputs. Pass mylib here as the other Home Manager outputs do.

AGENTS.md reference: AGENTS.md:L26-L26

Useful? React with 👍 / 👎.

@RAPSNX
RAPSNX force-pushed the feat/noctalia-shell branch from d6143fe to 8ee343a Compare September 18, 2026 17:52

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 8ee343a55d

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +20 to +21
assertion = builtins.all (v: builtins.elem v variables) required;
message = "Hyprland systemd variables are missing required session environment variables.";

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Guard Hyprland assertions when the role is disabled

Fresh evidence after the earlier mylib finding is that rap@devbox now imports all homeModules without enabling roles.desktop.hyprland, yet this assertion is applied unconditionally. Home Manager's disabled-role default variable list does not include XDG_SESSION_TYPE, so evaluating the new rap@devbox output fails with this assertion instead of producing an activation package; wrap these assertions in lib.mkIf config.roles.desktop.hyprland.enable.

AGENTS.md reference: AGENTS.md:L25-L26

Useful? React with 👍 / 👎.

Comment on lines +16 to +17
hl.exec_cmd(${toLua "[ workspace special:scratchy silent ] alacritty -t scratchy"})
${lib.concatMapStringsSep "\n " (cmd: "hl.exec_cmd(${toLua cmd})") cfg.autostart}

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Restore the shared Todoist startup command

Although the per-host autostarts from the earlier review were restored, this shared start hook still omits the former Chromium Todoist PWA command (--app-id=dlgohinmglaoopaiplliaecdpmnepmga) that was in exec-once. A repository-wide search finds no replacement, so Todoist no longer starts in the auxiliary workspace on either desktop login; add the command to this hook or to the applicable host autostarts.

Useful? React with 👍 / 👎.

@RAPSNX
RAPSNX force-pushed the feat/noctalia-shell branch from 8ee343a to a1b4063 Compare September 18, 2026 17:58

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: a1b406384d

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread hosts/devbox/home.nix
green = "#a6e3a1";
};

format = lib.concatStrings [

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Remove the conflicting devbox Starship overrides

After the already-reported Hyprland assertion is guarded, evaluating rap@devbox still fails because homeModules automatically imports modules/home/cli/starship/default.nix, which defines programs.starship.settings.format, directory.truncation_length, and git_branch differently at the same priority. Nix therefore reports conflicting definitions instead of producing an activation package; reuse the shared Starship configuration or explicitly override it with lib.mkForce.

AGENTS.md reference: AGENTS.md:L11-L11

Useful? React with 👍 / 👎.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant