56 lines
1.3 KiB
Nix
56 lines
1.3 KiB
Nix
# This is a common user configuration.
|
|
{
|
|
__findFile,
|
|
config,
|
|
const,
|
|
lib,
|
|
pkgs,
|
|
util,
|
|
...
|
|
}@args:
|
|
let
|
|
cfg = config.home.nixos;
|
|
env = import ./env args;
|
|
file = import ./file args;
|
|
programs = import ./program args;
|
|
in
|
|
{
|
|
imports = (util.ls <user>);
|
|
|
|
options.home.nixos = {
|
|
enable = lib.mkEnableOption "the NixOS user setup.";
|
|
users = lib.mkOption {
|
|
default = [ ];
|
|
type = with lib.types; listOf attrs;
|
|
};
|
|
};
|
|
|
|
config = lib.mkIf cfg.enable {
|
|
home-manager = {
|
|
backupFileExtension =
|
|
"backup-"
|
|
+ pkgs.lib.readFile "${pkgs.runCommand "timestamp" { } "echo -n date '+%Y%m%d%H%M%S' > $out"}";
|
|
users = builtins.foldl' (
|
|
acc: user:
|
|
acc
|
|
// {
|
|
${user.username} = {
|
|
home = {
|
|
inherit (const) stateVersion;
|
|
inherit (env) sessionVariables;
|
|
inherit (user) username homeDirectory;
|
|
inherit file;
|
|
|
|
# ISSUE: https://github.com/nix-community/home-manager/issues/5589
|
|
extraActivationPath = with pkgs; [ openssh ];
|
|
};
|
|
xdg = import ./xdg { inherit (user) homeDirectory; };
|
|
programs = with programs; core // desktop;
|
|
dconf.settings = util.catSet (util.ls ./file/dconf) args;
|
|
};
|
|
}
|
|
) { } cfg.users;
|
|
};
|
|
};
|
|
}
|