71 lines
2 KiB
Nix
71 lines
2 KiB
Nix
# This is a common user configuration.
|
|
{
|
|
const,
|
|
util,
|
|
config,
|
|
lib,
|
|
__findFile,
|
|
...
|
|
}@args:
|
|
with lib;
|
|
let
|
|
cfg = config.home.hm;
|
|
package = import <package> args;
|
|
programs = import ./program args;
|
|
in
|
|
{
|
|
options = {
|
|
home.hm = {
|
|
enable = mkEnableOption "Home-Manager standalone config.";
|
|
username = mkOption {
|
|
default = null;
|
|
type = types.str;
|
|
};
|
|
homeDirectory = mkOption {
|
|
default = "/home/${cfg.username}";
|
|
type = types.str;
|
|
};
|
|
package = mkOption {
|
|
default = { };
|
|
type = types.submodule {
|
|
options = {
|
|
common.enable = mkEnableOption "Common apps.";
|
|
core.enable = mkEnableOption "Core apps.";
|
|
creative.enable = mkEnableOption "Creative apps.";
|
|
desktop.enable = mkEnableOption "Desktop apps.";
|
|
dev.enable = mkEnableOption "Dev apps.";
|
|
extra.enable = mkEnableOption "Extra apps.";
|
|
gaming.enable = mkEnableOption "Gaming apps.";
|
|
};
|
|
};
|
|
};
|
|
};
|
|
};
|
|
|
|
config = mkIf cfg.enable (mkMerge [
|
|
{
|
|
home = {
|
|
inherit (cfg) username homeDirectory;
|
|
inherit (const) stateVersion;
|
|
file = import ./config args;
|
|
sessionVariables = import ./variable args;
|
|
};
|
|
xdg = import ./xdg { inherit (cfg) homeDirectory; };
|
|
programs = with programs; core;
|
|
dconf.settings = util.catSet (util.ls ./config/dconf) args;
|
|
}
|
|
(mkIf cfg.package.common.enable { home.packages = package.common; })
|
|
(mkIf cfg.package.core.enable { home.packages = package.core; })
|
|
(mkIf cfg.package.creative.enable { home.packages = package.creative; })
|
|
(mkIf cfg.package.desktop.enable {
|
|
home = {
|
|
packages = package.desktop;
|
|
programs = programs.desktop;
|
|
};
|
|
})
|
|
(mkIf cfg.package.dev.enable { home.packages = package.dev; })
|
|
(mkIf cfg.package.extra.enable { home.packages = package.extra; })
|
|
(mkIf cfg.package.gaming.enable { home.packages = package.gaming; })
|
|
]);
|
|
}
|