How to configure NixOS > Home Manager to "launch_apps_as_systemd_services"

Hi everyone,

Anyone know how to configure in Home Manager the setting to start apps as a systemd service:

launch_apps_as_systemd_services

This string is referred to in the Noctalia docs as recommended but searching online reveals no documented use anywhere — not even in configs on GitHub.

Don’t know if this is set in /home/.config/home-manager/flake.nix or /home-manager/home.nix.

Cheers

I’m not aware of such a command. Most likely it’s a Noctalia feature, and must be used in your Noctalia config. You’ll get better results asking the Noctalia upstream.

The compositor-independent option is using uwsm app (or app2unit) instead, and integrating it with your application launcher.

1 Like

Can you share more context about where that is referenced? Like the page in the docs, the paragraphs surrounding it, etc?

Thanks. Link to section in the docs:

That’s what I said. Though claude is wrong about how it all works.

I checked the reference docs and code, though, and didn’t find it. My assumption is that the feature was removed (as you say) and that info block was forgotten about because it’s part of the NixOS docs.

UWSM isn’t recommended by the noctalia docs, but afaict that’s because people kept bothering them with support questions because they misconfigure their sessions.

Either way, looks like this simply isn’t supported anymore and it’s a doc bug. I still suggest asking upstream, this forum is about NixOS, not Noctalia.

1 Like

this is a shell setting, you can set it in the toml file.

[shell]
launch_apps_as_systemd_services = true

It doesn’t seem to be documented as a valid option for v5.

1 Like

Docs are probably not fully updated since this is a very new release, but you can check that exists:

1 Like

It is interesting how the LLM fails when source material is incomplete and incorrect. Although I suspect Claude has not looked at the Nix source created by Noctalia to determine what is required. Setting Claude to Opus and directing it to read pure Nix source might all the difference. No more hallucinating because it doesn’t have good data.

It is odd that Noctalia have not published a complete installation procedure but maybe it is to ensure only people who are knowledgeable enough are installing it and can effectively test the alpha.

From what some are showing v5 looks quite polished. I need to get moving on setting up a new workstation so will try either v4 or DMS and will watch the v5 progression.

Thanks for your help. This struggle makes me even more interested in learning Nix :+1:

Thanks. Setting this after the toml files seems to be the way. Do Home Manager Modules, that decode Nix configuration into toml, lua, kdl or json, typically only decode an explicitly programmed number of settings or can Modules be made that decode any valid Nix formatted setting into the target config format? IE are config Modules typically just a basic decoder?

Could launch_apps_as_systemd_services = true be decoded if I put it in the right Nix expression? — given that the Module creates a valid toml file before Noctalia is first run.

I’ll check the Module and see if it contains a basic encoder / decoder that accepts any valid shell string.

Ok, so what you’ve all done in a few posts is expand the scope of my question to include a review of the actual substance of the feature beyond the documentation — thanks. Clearly this is where it needs to go, especially for an alpha.

The .cpp code shows the setting, thanks.

Awesome, thanks — app2unit removes the Python overhead in UWSM, nice.

Ok, the Noctalia home-module.nix is a decoder:

settings = lib.mkOption {
      type =
        with lib.types;
        oneOf [
          tomlFormat.type
          str
          path
        ];
      default = { };
      description = ''
        Default settings for noctalia, Can be written as:
          - A Nix attrset (converted to TOML via nixpkgs' tomlFormat)
          - A raw TOML string
          - A path to a `.toml` file
        . . .

      '';
      example = lib.literalExpression ''
        shell = {
          font = "JetBrainsMono Nerd Font";
          settings_show_advanced = true;
        };
        . . .

      '';