How to configure in NixOS > Hyprland Nix config to start Noctalia v5

Hi everyone,

I’ve been unable to find any documented way to configure Hyprland, in the Nix config, to start Noctalia. Using the compositor to initialise Noctalia is the only recommended method as opposed to starting from systemd which is depreciated.

The Noctalia docs only lists the Lua config which does not yet exist. This is a pre-build step to boot straight from the Display Manager into a fully functioning base install of Hyprland-Noctalia.

Cheers

May want to reach for home-manager with this one.

Yes, it could be a Home Manager config for Hyprland:

Just no idea of the implementation. Odd that this wasn’t clearly defined in the NixOS config process.

Ok, I had earlier asked Claude out of curiosity the same three questions. I didn’t check the answer until just now because I didn’t see how it could answer them because of a lack of information. Here is the answer for this question (I didn’t tell it I asked the question here yet this is what it said:

The NixOS Discourse posts from three hours ago (cited in results) are almost certainly from this session. The community has not yet answered them. The research provides enough information to address all three questions directly.


Question 2 — Starting Noctalia From the Hyprland Compositor

Systemd startup is deprecated for Noctalia. This approach caused recurring technical issues, including delayed shell startup and unreliable IPC communication. Starting Noctalia from the compositor is correct.

The Hyprland compositor autostart setting is a Home Manager option, not a system-level configuration.nix option. This is why no NixOS system setting for it exists — it belongs in home.nix via the wayland.windowManager.hyprland Home Manager module:

wayland.windowManager.hyprland = {
  enable = true;
  settings = {
    exec-once = "noctalia";
  };
};

However there is a critical caveat on this immediately below.


Critical Finding: Hyprland 0.55 Lua Configuration

Hyprland 0.55 introduced and recommends Lua for configuration. The upstream wiki has already migrated and support for hyprland.conf will be removed in a future release. Home Manager support is in progress.

Hyprland 0.55 was released on 9 May 2026 and is the version in nixpkgs 26.05 stable. The wayland.windowManager.hyprland.settings approach in Home Manager generates hyprland.conf, which is the old format now deprecated by Hyprland upstream. The Home Manager module has not yet been updated to generate Lua configuration.

The settings approach still works in 0.55 because hyprland.conf is accepted in a compatibility mode, but it will stop working in a future Hyprland release. For the moment, exec-once = "noctalia" via settings is functional but carries a known deprecation. Monitor the Home Manager issue tracker for when Lua support lands in the wayland.windowManager.hyprland module.

The UWSM approach is also relevant:

# In configuration.nix
programs.hyprland = {
  enable   = true;
  withUWSM = true;
};

If you use the Home Manager module, make sure to disable systemd integration, as it conflicts with UWSM.

# In home.nix — disable systemd integration when using UWSM
wayland.windowManager.hyprland = {
  enable          = true;
  systemd.enable  = false;
  settings = {
    exec-once = "noctalia";
  };
};

Seems accurate except for UWSM which I think is also depreciated in the current 0.55 release.

Sorry if this is already resolved!

I might be wrong, but I think using noctalia-shell is more correct than noctalia. (source)

The link above shows the settings for niri as an example, and looking at this, niri.settings.spawn-at-startup is equivalent to hyprland.settings.exec-once.
Also, while the second link uses qs -c, the first link shows that you can run it directly with noctalia-shell as well.

It’s actually working perfectly in my environment, too.

I don’t fully understand the difference between them myself, so I can’t give a detailed explanation. Sorry about that!

I apologize, I was referring to a different version.