mirror of
https://github.com/Xetibo/ReSet.git
synced 2025-04-03 20:42:01 +02:00
81 lines
2.1 KiB
Nix
81 lines
2.1 KiB
Nix
self: { config
|
|
, pkgs
|
|
, lib
|
|
, hm
|
|
, ...
|
|
}:
|
|
let
|
|
cfg = config.programs.ReSet;
|
|
defaultPackage = self.packages.${pkgs.stdenv.hostPlatform.system}.default;
|
|
in
|
|
{
|
|
meta.maintainers = with lib.maintainers; [ DashieTM ];
|
|
options.programs.ReSet = with lib; {
|
|
enable = mkEnableOption "ReSet";
|
|
|
|
package = mkOption {
|
|
type = with types; nullOr package;
|
|
default = defaultPackage;
|
|
defaultText = lib.literalExpression ''
|
|
ReSet.packages.''${pkgs.stdenv.hostPlatform.system}.default
|
|
'';
|
|
description = mdDoc ''
|
|
Package to run
|
|
'';
|
|
};
|
|
|
|
config = {
|
|
plugins = mkOption {
|
|
type = with types; listOf package;
|
|
default = null;
|
|
description = mdDoc ''
|
|
List of plugins to use, represented as a list of packages.
|
|
'';
|
|
};
|
|
|
|
plugin_config = mkOption {
|
|
type = with types; attrs;
|
|
default = { };
|
|
description = mdDoc ''
|
|
Toml values passed to the configuration for plugins to use.
|
|
'';
|
|
};
|
|
};
|
|
|
|
};
|
|
config =
|
|
let
|
|
fetchedPlugins =
|
|
if cfg.config.plugins == [ ]
|
|
then [ ]
|
|
else
|
|
builtins.map
|
|
(entry:
|
|
if lib.types.package.check entry
|
|
then "lib${lib.replaceStrings ["-"] ["_"] entry.pname}.so"
|
|
else "")
|
|
cfg.config.plugins;
|
|
in
|
|
lib.mkIf
|
|
cfg.enable
|
|
{
|
|
home.packages = lib.optional (cfg.package != null) cfg.package ++ cfg.config.plugins;
|
|
home.file = builtins.listToAttrs (builtins.map
|
|
(pkg: {
|
|
name = ".config/reset/plugins/lib${lib.replaceStrings ["-"] ["_"] pkg.pname}.so";
|
|
value = {
|
|
source = "${pkg}/lib/lib${lib.replaceStrings ["-"] ["_"] pkg.pname}.so";
|
|
};
|
|
})
|
|
cfg.config.plugins);
|
|
|
|
xdg.configFile."reset/ReSet.toml".source = (pkgs.formats.toml { }).generate "reset"
|
|
(lib.recursiveUpdate
|
|
{
|
|
plugins = fetchedPlugins;
|
|
|
|
}
|
|
cfg.config.plugin_config);
|
|
};
|
|
}
|