From 0672b711f38e3854496ac0a8541ce78f35c40ddb Mon Sep 17 00:00:00 2001 From: Lucas <43530291+LuckShiba@users.noreply.github.com> Date: Tue, 9 Dec 2025 03:14:13 -0300 Subject: [PATCH] nix: fix greeter custom theme (#954) --- distro/nix/greeter.nix | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/distro/nix/greeter.nix b/distro/nix/greeter.nix index c299dff6..79c0dd4a 100644 --- a/distro/nix/greeter.nix +++ b/distro/nix/greeter.nix @@ -10,13 +10,14 @@ user = config.services.greetd.settings.default_session.user; + cacheDir = "/var/lib/dms-greeter"; greeterScript = pkgs.writeShellScriptBin "dms-greeter" '' export PATH=$PATH:${lib.makeBinPath [cfg.quickshell.package config.programs.${cfg.compositor.name}.package]} ${lib.escapeShellArgs ([ "sh" "${../../quickshell/Modules/Greetd/assets/dms-greeter}" "--cache-dir" - "/var/lib/dmsgreeter" + cacheDir "--command" cfg.compositor.name "-p" @@ -27,6 +28,8 @@ "${pkgs.writeText "dmsgreeter-compositor-config" cfg.compositor.customConfig}" ])} ${lib.optionalString cfg.logs.save "> ${cfg.logs.path} 2>&1"} ''; + + jq = lib.getExe pkgs.jq; in { imports = let msg = "The option 'programs.dankMaterialShell.greeter.compositor.extraConfig' is deprecated. Please use 'programs.dankMaterialShell.greeter.compositor.customConfig' instead."; @@ -93,17 +96,17 @@ in { material-symbols ]; systemd.tmpfiles.settings."10-dmsgreeter" = { - "/var/lib/dmsgreeter".d = { + ${cacheDir}.d = { user = user; group = if config.users.users.${user}.group != "" then config.users.users.${user}.group else "greeter"; - mode = "0755"; + mode = "0750"; }; }; systemd.services.greetd.preStart = '' - cd /var/lib/dmsgreeter + cd ${cacheDir} ${lib.concatStringsSep "\n" (lib.map (f: '' if [ -f "${f}" ]; then cp "${f}" . @@ -112,9 +115,16 @@ in { cfg.configFiles)} if [ -f session.json ]; then - if cp "$(${lib.getExe pkgs.jq} -r '.wallpaperPath' session.json)" wallpaper.jpg; then + if cp "$(${jq} -r '.wallpaperPath' session.json)" wallpaper.jpg; then mv session.json session.orig.json - ${lib.getExe pkgs.jq} '.wallpaperPath = "/var/lib/dmsgreeter/wallpaper.jpg"' session.orig.json > session.json + ${jq} '.wallpaperPath = "${cacheDir}/wallpaper.jpg"' session.orig.json > session.json + fi + fi + + if [ -f settings.json ]; then + if cp "$(${jq} -r '.customThemeFile' settings.json)" custom-theme.json; then + mv settings.json settings.orig.json + ${jq} '.customThemeFile = "${cacheDir}/custom-theme.json"' settings.orig.json > settings.json fi fi