From 010bc4e8c33e458735d6a51e18da94baae3332c7 Mon Sep 17 00:00:00 2001 From: bokicoder <1556588440@qq.com> Date: Fri, 10 Oct 2025 01:23:33 +0800 Subject: [PATCH 1/2] fix systemd startup (#364) --- nix/default.nix | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/nix/default.nix b/nix/default.nix index 3f6f1c06..1b3cbc53 100644 --- a/nix/default.nix +++ b/nix/default.nix @@ -82,12 +82,21 @@ in { configs.dms = "${ dmsPkgs.dankMaterialShell }/etc/xdg/quickshell/DankMaterialShell"; - activeConfig = lib.mkIf cfg.enableSystemd "dms"; + }; - systemd = lib.mkIf cfg.enableSystemd { - enable = true; - target = "graphical-session.target"; + systemd.user.services.dms = lib.mkIf cfg.enableSystemd { + Unit = { + Description = "DankMaterialShell"; + PartOf = [ config.wayland.systemd.target ]; + After = [ config.wayland.systemd.target ]; }; + + Service = { + ExecStart = lib.getExe dmsPkgs.dmsCli + " run"; + Restart = "on-failure"; + }; + + Install.WantedBy = [ config.wayland.systemd.target ]; }; xdg.configFile = lib.mapAttrs' (name: plugin: { From 67a4e3074e0272ebe415502d422eb2612796eab8 Mon Sep 17 00:00:00 2001 From: bokicoder <1556588440@qq.com> Date: Fri, 10 Oct 2025 01:23:44 +0800 Subject: [PATCH 2/2] Add default configuration option to home-manager (#356) --- nix/default.nix | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/nix/default.nix b/nix/default.nix index 1b3cbc53..f59a3bdf 100644 --- a/nix/default.nix +++ b/nix/default.nix @@ -6,6 +6,7 @@ ... }: let cfg = config.programs.dankMaterialShell; + jsonFormat = pkgs.formats.json { }; in { options.programs.dankMaterialShell = with lib.types; { enable = lib.mkEnableOption "DankMaterialShell"; @@ -54,6 +55,20 @@ in { quickshell = { package = lib.mkPackageOption pkgs "quickshell" {}; }; + + default = { + settings = lib.mkOption { + type = jsonFormat.type; + default = { }; + description = "The default settings are only read if the settings.json file don't exist"; + }; + session = lib.mkOption { + type = jsonFormat.type; + default = { }; + description = "The default session are only read if the session.json file don't exist"; + }; + }; + plugins = lib.mkOption { type = attrsOf (types.submodule ({ config, ... }: { options = { @@ -99,6 +114,14 @@ in { Install.WantedBy = [ config.wayland.systemd.target ]; }; + xdg.configFile."DankMaterialShell/default-settings.json" = lib.mkIf (cfg.default.settings != { }) { + source = jsonFormat.generate "default-settings.json" cfg.default.settings; + }; + + xdg.stateFile."DankMaterialShell/default-session.json" = lib.mkIf (cfg.default.session != { }) { + source = jsonFormat.generate "default-session.json" cfg.default.session; + }; + xdg.configFile = lib.mapAttrs' (name: plugin: { name = "DankMaterialShell/plugins/${name}"; value.source = plugin.src;