35 lines
767 B
Nix
35 lines
767 B
Nix
{
|
|
config,
|
|
pkgs,
|
|
lib,
|
|
...
|
|
}: let
|
|
cfg = config.alqueva.xonsh;
|
|
attrsToPyDict = attrs: (lib.pipe attrs [
|
|
(builtins.mapAttrs (n: v: "aliases['${n}'] = '${v}'"))
|
|
builtins.attrValues
|
|
(lib.concatStringsSep "\n")
|
|
(s: s + "\n")
|
|
]);
|
|
in {
|
|
options.alqueva.xonsh = {
|
|
enable = lib.mkEnableOption "xonsh";
|
|
package = lib.mkPackageOption pkgs "xonsh" {};
|
|
};
|
|
|
|
config = lib.mkIf cfg.enable {
|
|
programs = {
|
|
xonsh = {
|
|
config =
|
|
"from xonsh.xontribs import get_xontribs\n"
|
|
+ attrsToPyDict config.environment.shellAliases
|
|
+ ''
|
|
for xontrib in get_xontribs():
|
|
xontrib load @(xontrib)
|
|
'';
|
|
inherit (cfg) package;
|
|
enable = true;
|
|
};
|
|
};
|
|
};
|
|
}
|