67 lines
2.5 KiB
Nix
67 lines
2.5 KiB
Nix
{ lib, config, ... }:
|
|
{
|
|
config = {
|
|
frogeye = {
|
|
# TODO Move to relevant config file. Rest can probably removed.
|
|
direnv = {
|
|
CARGOHOME = "${config.xdg.cacheHome}/cargo"; # There are config in there that we can version if one want
|
|
DASHT_DOCSETS_DIR = "${config.xdg.cacheHome}/dash_docsets";
|
|
GRADLE_USER_HOME = "${config.xdg.cacheHome}/gradle";
|
|
MIX_ARCHIVES = "${config.xdg.cacheHome}/mix/archives";
|
|
MONO_GAC_PREFIX = "${config.xdg.cacheHome}/mono";
|
|
PARALLEL_HOME = "${config.xdg.cacheHome}/parallel";
|
|
TERMINFO = "${config.xdg.configHome}/terminfo";
|
|
WINEPREFIX = "${config.xdg.stateHome}/wineprefix/default";
|
|
};
|
|
junkhome = [
|
|
"adb"
|
|
"audacity"
|
|
"cabal" # TODO May have options but last time I tried it it crashed
|
|
"itch"
|
|
"simplescreenrecorder" # Easy fix https://github.com/MaartenBaert/ssr/blob/1556ae456e833992fb6d39d40f7c7d7c337a4160/src/Main.cpp#L252
|
|
"vd"
|
|
"wpa_cli"
|
|
# TODO Maybe we can do something about node-gyp
|
|
];
|
|
};
|
|
home = {
|
|
activation.createDirenvFolders = lib.hm.dag.entryAfter [ "writeBoundary" ] (
|
|
lib.strings.concatLines (
|
|
map (d: "mkdir -p ${d}") (
|
|
(builtins.attrValues config.frogeye.direnv) ++ [ "${config.xdg.cacheHome}/junkhome" ]
|
|
)
|
|
)
|
|
);
|
|
|
|
sessionVariables = config.frogeye.direnv;
|
|
};
|
|
programs.bash.shellAliases = lib.attrsets.mergeAttrsList (
|
|
map (p: { "${p}" = "HOME=${config.xdg.cacheHome}/junkhome ${p}"; }) config.frogeye.junkhome
|
|
);
|
|
};
|
|
options.frogeye = {
|
|
direnv = lib.mkOption {
|
|
default = { };
|
|
example = lib.literalExpression ''
|
|
{
|
|
DASHT_DOCSETS_DIR = "''${config.xdg.cacheHome}/dash_docsets";
|
|
}
|
|
'';
|
|
description = ''
|
|
Environment variables for which the value is a folder that will be automatically created.
|
|
Useful for keeping programs data out of $HOME for programs that won't create the directory themselves.
|
|
'';
|
|
type = lib.types.attrsOf lib.types.str;
|
|
};
|
|
junkhome = lib.mkOption {
|
|
default = [ ];
|
|
description = ''
|
|
Program names that will be run with a different HOME so they don't clutter the real one.
|
|
Useful for programs that don't follow the XDG specification and tend to advertise themselves.
|
|
'';
|
|
type = lib.types.listOf lib.types.str;
|
|
};
|
|
# TODO Should make a nix package wrapper instead, so it also works from dmenu
|
|
};
|
|
}
|