diff --git a/flake.lock b/flake.lock index dadcd5fb..2e5ba6f8 100644 --- a/flake.lock +++ b/flake.lock @@ -27,11 +27,11 @@ ] }, "locked": { - "lastModified": 1759946376, - "narHash": "sha256-/kQpJPH1y+U6V7N3bbGzvNRGfk9VuxdZev9Os4bS5ZQ=", + "lastModified": 1759982027, + "narHash": "sha256-4deRT98VwfZWZ685wIGevyYl3CzpuZJPjdjfulABH00=", "owner": "AvengeMedia", "repo": "danklinux", - "rev": "98db89ffba290265bc4a886d13b8a27a53fdaca1", + "rev": "5cdfeeae2e14089079dcb0d6b61f014ce754021f", "type": "github" }, "original": { diff --git a/nix/default.nix b/nix/default.nix index 1b3cbc53..7dd5e554 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,10 +114,21 @@ in { Install.WantedBy = [ config.wayland.systemd.target ]; }; - xdg.configFile = lib.mapAttrs' (name: plugin: { - name = "DankMaterialShell/plugins/${name}"; - value.source = plugin.src; - }) (lib.filterAttrs (n: v: v.enable) cfg.plugins); + xdg.stateFile."DankMaterialShell/default-session.json" = lib.mkIf (cfg.default.session != { }) { + source = jsonFormat.generate "default-session.json" cfg.default.session; + }; + + xdg.configFile = lib.mkMerge [ + (lib.mapAttrs' (name: plugin: { + name = "DankMaterialShell/plugins/${name}"; + value.source = plugin.src; + }) (lib.filterAttrs (n: v: v.enable) cfg.plugins)) + { + "DankMaterialShell/default-settings.json" = lib.mkIf (cfg.default.settings != { }) { + source = jsonFormat.generate "default-settings.json" cfg.default.settings; + }; + } + ]; home.packages = [