Got local packages working again
This commit is contained in:
@@ -0,0 +1,34 @@
|
||||
# Common home-manager config
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
let
|
||||
sys = import ../system.nix { inherit lib config; };
|
||||
|
||||
list-contains = lst: item: any (i: i == item) lst;
|
||||
|
||||
domain-realm = domain: domainOpts: domainOpts.gssapi-realm;
|
||||
|
||||
user-realms = username:
|
||||
mapAttrsToList domain-realm
|
||||
(filterAttrs (domain: domainOpts: list-contains domainOpts.local-users username)
|
||||
config.fudo.domains);
|
||||
|
||||
user-principals = username:
|
||||
map (realm: "${username}@${realm}") (user-realms username);
|
||||
|
||||
user-k5login = username: userOpts: let
|
||||
principals = userOpts.k5login ++ (user-principals username);
|
||||
in ''
|
||||
${concatStringsSep "\n" principals}
|
||||
'';
|
||||
|
||||
user-config = username: userOpts: {
|
||||
home.file.".k5login" = {
|
||||
source = pkgs.writeText "${username}-k5login" (user-k5login username userOpts);
|
||||
};
|
||||
};
|
||||
|
||||
in {
|
||||
config.home-manager.users = mapAttrs user-config sys.local-users;
|
||||
}
|
||||
+34
-39
@@ -150,28 +150,13 @@ in {
|
||||
};
|
||||
};
|
||||
|
||||
imports = [
|
||||
./users-common.nix
|
||||
];
|
||||
|
||||
config = let
|
||||
local-host = config.instance.hostname;
|
||||
local-domain = config.fudo.hosts.${local-host}.domain;
|
||||
local-site = config.fudo.hosts.${local-host}.site;
|
||||
|
||||
host-user-list = config.fudo.hosts."${local-host}".local-users;
|
||||
domain-user-list = config.fudo.domains."${local-domain}".local-users;
|
||||
local-users =
|
||||
getAttrs (host-user-list ++ domain-user-list) config.fudo.users;
|
||||
|
||||
host-admin-list = config.fudo.hosts."${local-host}".local-admins;
|
||||
domain-admin-list = config.fudo.domains."${local-domain}".local-admins;
|
||||
site-admin-list = config.fudo.sites."${local-site}".local-admins;
|
||||
local-admins = host-admin-list ++ domain-admin-list ++ site-admin-list;
|
||||
|
||||
host-group-list = config.fudo.hosts."${local-host}".local-groups;
|
||||
domain-group-list = config.fudo.domains."${local-domain}".local-groups;
|
||||
site-group-list = config.fudo.sites."${local-site}".local-groups;
|
||||
local-groups =
|
||||
getAttrs (host-group-list ++ domain-group-list ++ site-group-list)
|
||||
config.fudo.groups;
|
||||
|
||||
sys = import ../system.nix { inherit lib config; };
|
||||
|
||||
in {
|
||||
fudo.auth.ldap-server = let
|
||||
ldapUsers = (filterAttrs
|
||||
@@ -211,29 +196,39 @@ in {
|
||||
"/home/${userOpts.primary-group}/${username}";
|
||||
hashedPassword = userOpts.login-hashed-passwd;
|
||||
openssh.authorizedKeys.keys = userOpts.ssh-authorized-keys;
|
||||
}) local-users;
|
||||
}) sys.local-users;
|
||||
|
||||
groups = (mapAttrs (groupname: groupOpts: {
|
||||
gid = groupOpts.gid;
|
||||
members = filterExistingUsers local-users groupOpts.members;
|
||||
}) local-groups) // {
|
||||
wheel = { members = local-admins; };
|
||||
members = filterExistingUsers sys.local-users groupOpts.members;
|
||||
}) sys.local-groups) // {
|
||||
wheel = { members = sys.local-admins; };
|
||||
};
|
||||
};
|
||||
|
||||
home-manager.users = let
|
||||
home-manager-users =
|
||||
filterAttrs (username: userOpts: userOpts.home-manager-config != null)
|
||||
local-users;
|
||||
common-user-config = username: {
|
||||
home.file.".k5login" = {
|
||||
source = pkgs.writeText "${username}-k5login" ''
|
||||
${concatStringsSep "\n" config.fudo.users.${username}.k5login}
|
||||
'';
|
||||
};
|
||||
};
|
||||
in mapAttrs (username: userOpts:
|
||||
userOpts.home-manager-config // (common-user-config username))
|
||||
home-manager-users;
|
||||
home-manager = {
|
||||
useGlobalPkgs = true;
|
||||
|
||||
users = let
|
||||
home-manager-users =
|
||||
filterAttrs (username: userOpts: userOpts.home-manager-config != null)
|
||||
sys.local-users;
|
||||
in mapAttrs (username: userOpts: userOpts.home-manager-config) home-manager-users;
|
||||
|
||||
# users = let
|
||||
# home-manager-users =
|
||||
# filterAttrs (username: userOpts: userOpts.home-manager-config != null)
|
||||
# local-users;
|
||||
# common-user-config = username: {
|
||||
# home.file.".k5login" = {
|
||||
# source = pkgs.writeText "${username}-k5login" ''
|
||||
# ${concatStringsSep "\n" config.fudo.users.${username}.k5login}
|
||||
# '';
|
||||
# };
|
||||
# };
|
||||
# in mapAttrs (username: userOpts:
|
||||
# userOpts.home-manager-config // (common-user-config username))
|
||||
# home-manager-users;
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
@@ -0,0 +1,31 @@
|
||||
{ config, lib, ... }:
|
||||
|
||||
with lib;
|
||||
let
|
||||
local-host = config.instance.hostname;
|
||||
local-domain = config.fudo.hosts.${local-host}.domain;
|
||||
local-site = config.fudo.hosts.${local-host}.site;
|
||||
|
||||
host-user-list = config.fudo.hosts."${local-host}".local-users;
|
||||
domain-user-list = config.fudo.domains."${local-domain}".local-users;
|
||||
site-user-list = config.fudo.sites."${local-site}".local-users;
|
||||
local-users =
|
||||
getAttrs (host-user-list ++ domain-user-list ++ site-user-list) config.fudo.users;
|
||||
|
||||
host-admin-list = config.fudo.hosts."${local-host}".local-admins;
|
||||
domain-admin-list = config.fudo.domains."${local-domain}".local-admins;
|
||||
site-admin-list = config.fudo.sites."${local-site}".local-admins;
|
||||
local-admins = host-admin-list ++ domain-admin-list ++ site-admin-list;
|
||||
|
||||
host-group-list = config.fudo.hosts."${local-host}".local-groups;
|
||||
domain-group-list = config.fudo.domains."${local-domain}".local-groups;
|
||||
site-group-list = config.fudo.sites."${local-site}".local-groups;
|
||||
local-groups =
|
||||
getAttrs (host-group-list ++ domain-group-list ++ site-group-list)
|
||||
config.fudo.groups;
|
||||
|
||||
in {
|
||||
local-users = local-users;
|
||||
local-admins = local-admins;
|
||||
local-groups = local-groups;
|
||||
}
|
||||
Reference in New Issue
Block a user