How to have NixOS generate session .desktop files

Hi,

I’m switching my compositor from sway to hyprland, and I’m having trouble setting up a greeter. I have greetd enabled with tuigreet, but I can’t find the proper way of having nixos generate me the .desktop files for my different compositors.

Here are the settings I have:

system config:

  services.greetd = {
    enable = true;
    settings = {
      default_session = {
        command = "${pkgs.tuigreet}/bin/tuigreet --sessions /run/current-system/sw/share/wayland-sessions --time";
        user = "greeter";
      };
    };
  };

#######

  # Enable Hyprland window manager
  programs.hyprland = {
    enable = true;
    package = hyprland-latest.packages.${system}.hyprland;
    xwayland.enable = true;
    portalPackage = hyprland-latest.packages.${system}.xdg-desktop-portal-hyprland;
    withUWSM = true;
  };


Do I need to setup programs.uwsmalso ? The Wiki says it is useless and may bring bugs.

The issue is that tuigreet is not showing any sessions at boot, and the /run/current-system/sw/wayland-sessions folder does not even exists. If not there, where are the session files ?

{
  config,
  pkgs,
  lib,
  ...
}:
let
  sessionsDir = "${config.services.displayManager.sessionData.desktops}/share";
in
{
  users.users.greeter = {
    isNormalUser = false;
    extraGroups = [ "seat" ];
  };
  services.greetd = {
    enable = true;
    restart = false;
    useTextGreeter = true;
    settings = {
      default_session = {
        user = "greeter";
        command = ''
          ${lib.getExe pkgs.tuigreet} \
            --time \
            --asterisks \
            --user-menu \
            --sessions ${sessionsDir}/wayland-sessions \
            --xsessions ${sessionsDir}/xsessions
        '';
      };
    };
  };
}

Working perfectly, thank you