cbatticon, default gtk/qt themes
This commit is contained in:
78
modules/profiles/desktop/plasma.nix
Normal file
78
modules/profiles/desktop/plasma.nix
Normal file
@@ -0,0 +1,78 @@
|
||||
# thanks k900
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}: let
|
||||
cfg = config.mj.plasma;
|
||||
|
||||
setValue = v: let
|
||||
setValueArgs = ty: vs: "--type ${ty} ${lib.escapeShellArg vs}";
|
||||
in
|
||||
if builtins.isBool v
|
||||
then
|
||||
setValueArgs "bool" (
|
||||
if v
|
||||
then "true"
|
||||
else "false"
|
||||
)
|
||||
else setValueArgs "str" (builtins.toString v);
|
||||
|
||||
pathToArgs = path: let
|
||||
groupArg = item: "--group ${lib.escapeShellArg item}";
|
||||
groupArgs = builtins.map groupArg path;
|
||||
in
|
||||
groupArgs;
|
||||
|
||||
entryToArgs = {
|
||||
path,
|
||||
value,
|
||||
}: let
|
||||
file = builtins.head path;
|
||||
subpath = builtins.tail path;
|
||||
groups = lib.lists.init subpath;
|
||||
name = lib.lists.last subpath;
|
||||
|
||||
fileArg = "--file ${lib.escapeShellArg file}";
|
||||
pathArgs = pathToArgs groups;
|
||||
keyArg = "--key ${lib.escapeShellArg name}";
|
||||
valueArg = setValue value;
|
||||
allArgs = pathArgs ++ [fileArg keyArg valueArg];
|
||||
in
|
||||
lib.strings.concatStringsSep " " allArgs;
|
||||
|
||||
flattenAttrs = attrs: pathSoFar:
|
||||
lib.lists.flatten (lib.attrsets.mapAttrsToList (
|
||||
name: value:
|
||||
if builtins.isAttrs value
|
||||
then flattenAttrs value (pathSoFar ++ [name])
|
||||
else {
|
||||
path = pathSoFar ++ [name];
|
||||
inherit value;
|
||||
}
|
||||
)
|
||||
attrs);
|
||||
|
||||
configToArgs = attrs: builtins.map entryToArgs (flattenAttrs attrs []);
|
||||
|
||||
configToScript = attrs: let
|
||||
args = configToArgs attrs;
|
||||
argToCommand = arg: "${pkgs.plasma5Packages.kconfig}/bin/kwriteconfig5 ${arg}";
|
||||
commands = builtins.map argToCommand args;
|
||||
in
|
||||
lib.strings.concatStringsSep "\n" commands;
|
||||
|
||||
writeConfig = attrs: pkgs.writeScript "kconfig-setup" (configToScript attrs);
|
||||
in {
|
||||
options.mj.plasma = {
|
||||
kconfig = lib.mkOption {
|
||||
type = lib.types.attrs;
|
||||
default = {};
|
||||
};
|
||||
};
|
||||
|
||||
config = lib.mkIf (cfg.kconfig != {}) {
|
||||
home.activation.kconfig-setup = "$DRY_RUN_CMD ${writeConfig cfg.kconfig}";
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user