This commit is contained in:
atagen 2024-08-28 14:23:28 +10:00
parent 914788cd30
commit 8003d9b2a6
10 changed files with 379 additions and 121 deletions

66
home/util/murex.nix Normal file
View file

@ -0,0 +1,66 @@
{
lib,
pkgs,
config,
...
}: let
inherit (lib) mkEnableOption mkOption mkIf types;
inherit (builtins) listToAttrs;
cfg = config.programs.murex;
in {
options.programs.murex = {
enable = mkEnableOption "murex shell";
managePlugins = mkEnableOption "plugin management";
plugins = mkOption {
type = with types; listOf package;
default = [];
};
direnv = mkEnableOption "direnv integration";
profile = mkOption {
type = types.str;
default = "";
};
preload = mkOption {
type = types.str;
default = "";
};
};
config = {
home.file =
{
".murex_preload" = {
text = cfg.preload;
enable = cfg.preload != "";
};
".murex_profile" = {
text =
cfg.profile
++ (
if cfg.direnv
then ''
direnv hook murex -> source
''
else ""
);
enable = cfg.direnv || (cfg.profile != "");
};
".murex_modules/packages.json" = {
text = builtins.toJSON (map (plugin: {
Protocol = "nix";
URI = "https://none.thanks/managed.git";
Package = plugin.pname;
})
cfg.plugins);
enable = cfg.managePlugins && (cfg.plugins != []);
};
}
// (mkIf cfg.managePlugins (listToAttrs (map (plugin: {
name = ".murex_modules/${plugin.pname}";
value = {
recursive = true;
source = plugin;
};
})
cfg.plugins)));
};
}