58 lines
1.4 KiB
Nix
58 lines
1.4 KiB
Nix
{ config, options, lib, home-manager, ... }:
|
|
|
|
with lib;
|
|
with lib.my;
|
|
{
|
|
options = with types; {
|
|
user = mkOpt attrs {};
|
|
|
|
hm = mkOpt attrs {};
|
|
|
|
env = mkOption {
|
|
# env = { PATH = ["$PATH" ./test]; TEST = "test"; }
|
|
type = attrsOf (oneOf [ str path (listOf (either str path)) ]);
|
|
# env = { PATH = "$PATH:./test"; TEST = "test"; }
|
|
apply = mapAttrs
|
|
(n: v: if isList v
|
|
then concatMapStringsSep ":" (x: toString x) v
|
|
else (toString v));
|
|
default = {};
|
|
description = "Set environment variables that will be joined by a colon";
|
|
};
|
|
};
|
|
|
|
config = {
|
|
user = {
|
|
description = "The primary user account";
|
|
extraGroups = [ "wheel" ];
|
|
isNormalUser = true;
|
|
home = "/home/${config.user.name}";
|
|
group = "users";
|
|
uid = 1000;
|
|
};
|
|
|
|
users.users.${config.user.name} = mkAliasDefinitions options.user;
|
|
|
|
nix.settings = let users = [ "root" config.user.name ]; in {
|
|
trusted-users = users;
|
|
allowed-users = users;
|
|
};
|
|
|
|
hm.home.stateVersion = config.system.stateVersion;
|
|
|
|
home-manager = {
|
|
# extraSpecialArgs = { inherit inputs; };
|
|
useGlobalPkgs = true;
|
|
useUserPackages = true;
|
|
|
|
users.${config.user.name} = mkAliasDefinitions options.hm;
|
|
};
|
|
|
|
env.PATH = [ "$PATH" ];
|
|
|
|
environment.extraInit =
|
|
concatStringsSep "\n"
|
|
(mapAttrsToList (n: v: "export ${n}=\"${v}\"") config.env);
|
|
};
|
|
}
|