rofi: support top-level clauses in rasi (#1788)
See https://github.com/nix-community/home-manager/pull/1748#issuecomment-774995577
for details.
Related documentation:
920de75c4b (splitting-configuration-over-multiple-files)
This commit is contained in:
parent
e6f2687a83
commit
87e2ec341b
|
@ -117,23 +117,27 @@ let
|
|||
else
|
||||
abort "Unhandled value type ${builtins.typeOf value}";
|
||||
|
||||
mkKeyValue = name: value: "${name}: ${mkValueString value};";
|
||||
mkKeyValue = { sep ? ": ", end ? ";" }:
|
||||
name: value:
|
||||
"${name}${sep}${mkValueString value}${end}";
|
||||
|
||||
mkRasiSection = section: config:
|
||||
mkRasiSection = name: value:
|
||||
if isAttrs value then
|
||||
let
|
||||
toRasiKeyValue = generators.toKeyValue { inherit mkKeyValue; };
|
||||
toRasiKeyValue = generators.toKeyValue { mkKeyValue = mkKeyValue { }; };
|
||||
# Remove null values so the resulting config does not have empty lines
|
||||
configStr = toRasiKeyValue (filterAttrs (_: v: v != null) config);
|
||||
configStr = toRasiKeyValue (filterAttrs (_: v: v != null) value);
|
||||
in ''
|
||||
${section} {
|
||||
${name} {
|
||||
${configStr}}
|
||||
'';
|
||||
''
|
||||
else
|
||||
mkKeyValue {
|
||||
sep = " ";
|
||||
end = "";
|
||||
} name value;
|
||||
|
||||
toRasi = attrsOfAttrs:
|
||||
let
|
||||
mkSection = mkRasiSection;
|
||||
sections = mapAttrsToList mkSection attrsOfAttrs;
|
||||
in concatStringsSep "\n" sections;
|
||||
toRasi = attrs: concatStringsSep "\n" (mapAttrsToList mkRasiSection attrs);
|
||||
|
||||
locationsMap = {
|
||||
center = 0;
|
||||
|
@ -149,7 +153,9 @@ let
|
|||
|
||||
primitive = with types; (oneOf [ str int bool rasiLiteral ]);
|
||||
|
||||
configType = with types; attrsOf (either primitive (listOf primitive));
|
||||
# Either a `section { foo: "bar"; }` or a `@import/@theme "some-text"`
|
||||
configType = with types;
|
||||
(either (attrsOf (either primitive (listOf primitive))) str);
|
||||
|
||||
rasiLiteral = types.submodule {
|
||||
options = {
|
||||
|
|
|
@ -9,6 +9,8 @@ with lib;
|
|||
|
||||
theme = let inherit (config.lib.formats.rasi) mkLiteral;
|
||||
in {
|
||||
"@import" = "~/.cache/wal/colors-rofi-dark";
|
||||
|
||||
"*" = {
|
||||
background-color = mkLiteral "#000000";
|
||||
foreground-color = mkLiteral "rgba ( 250, 251, 252, 100 % )";
|
||||
|
|
|
@ -15,3 +15,5 @@ border-color: #FFFFFF;
|
|||
foreground-color: rgba ( 250, 251, 252, 100 % );
|
||||
width: 512;
|
||||
}
|
||||
|
||||
@import "~/.cache/wal/colors-rofi-dark"
|
Loading…
Reference in a new issue