feat(nix): add keys enum to global cfg

This commit is contained in:
2025-07-07 03:22:16 +02:00
parent 4611ad87a8
commit d85ebc0e78
4 changed files with 42 additions and 22 deletions

View File

@@ -102,21 +102,24 @@ pass:
* A string to copy the config from a theme in `themes/` with said name * A string to copy the config from a theme in `themes/` with said name
(**name**, e.g `"cherry"`). (**name**, e.g `"cherry"`).
* An attribute tree with the same names as the config file, e.g: * An attribute tree with the same names as the config file, e.g:
```nix ```nix
{ with config.lidm.keysEnum; {
strings = { strings = {
f_poweroff = "custom_poweroff"; f_poweroff = "custom_poweroff";
# etc
}; };
behavior = { behavior = {
include_defshell = true; include_defshell = true;
source = [ source = [
"path1" "path1"
"path2" "path2"
]; ];
# etc
}; };
# etc
functions = { poweroff = F1; };
# etc...
}; };
``` ```

View File

@@ -10,11 +10,14 @@ let
keys-h-file = builtins.readFile "${src}/include/keys.h"; keys-h-file = builtins.readFile "${src}/include/keys.h";
}; };
in in
builtins.toFile "lidm.conf" ( {
if builtins.isString cfg then inherit maker;
builtins.readFile "${src}/themes/${cfg}.ini" file = builtins.toFile "lidm.conf" (
else if builtins.isAttrs cfg then if builtins.isString cfg then
maker.make cfg builtins.readFile "${src}/themes/${cfg}.ini"
else else if builtins.isAttrs cfg then
builtins.throw "invalid cfg type, expected str or attrs" maker.make cfg
) else
builtins.throw "invalid cfg type, expected str or attrs"
);
}

View File

@@ -5,7 +5,7 @@
... ...
}: }:
let let
cfg-file = get-cfg =
if config.cfg != null then if config.cfg != null then
import ./get-cfg-file.nix { import ./get-cfg-file.nix {
inherit lib; inherit lib;
@@ -13,6 +13,8 @@ let
} }
else else
null; null;
cfg-file = get-cfg.file;
maker = get-cfg.maker;
in in
pkgs.stdenv.mkDerivation rec { pkgs.stdenv.mkDerivation rec {
pname = "lidm"; pname = "lidm";
@@ -41,4 +43,8 @@ pkgs.stdenv.mkDerivation rec {
fixupPhase = '' fixupPhase = ''
rm -rf $out/etc rm -rf $out/etc
''; '';
passthru = {
keysEnum = maker.keys-enum;
};
} }

View File

@@ -30,15 +30,23 @@ let
}; };
in in
{ {
options.services.lidm.config = lib.mkOption { options = {
type = lidm.keysEnum = lib.mkOption {
with lib.types; type = with lib.types; attrs;
oneOf [ default = lidm.passthru.keysEnum;
str readOnly = true;
attrs description = "Keys enum constants";
]; };
default = { }; services.lidm.config = lib.mkOption {
description = "Config options for lidm | Either attr tree or name of bundled themes"; type =
with lib.types;
oneOf [
str
attrs
];
default = { };
description = "Config options for lidm | Either attr tree or name of bundled themes";
};
}; };
config = { config = {
services.displayManager.defaultSession = "lidm"; services.displayManager.defaultSession = "lidm";