Compare commits
24 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
385693cd35
|
|||
|
8cdb3d57c6
|
|||
|
1172dce549
|
|||
| 17da8baba7 | |||
|
a78752607f
|
|||
|
e0bd689d4f
|
|||
|
a18a871eb3
|
|||
|
ac5fe801a9
|
|||
|
d2ad014c23
|
|||
|
b431300f49
|
|||
| 7218ed9bce | |||
|
fbbb83bf52
|
|||
|
0479f0d441
|
|||
| e939c28c9c | |||
| 455753a192 | |||
| 967af49d7d | |||
| e5a38b15ee | |||
| 6b2c8d482c | |||
|
dd7ad60710
|
|||
|
fd18ae4a78
|
|||
|
d7deaa187c
|
|||
|
c6d66902bb
|
|||
|
4704a887fa
|
|||
|
eaaffcc289
|
+1
-1
@@ -21,5 +21,5 @@ in
|
|||||||
map (user: {
|
map (user: {
|
||||||
name = "dns/tuxcord.net/${user.name}.tuxcord.net.key.age";
|
name = "dns/tuxcord.net/${user.name}.tuxcord.net.key.age";
|
||||||
value.publicKeys = [ tuxcord-ca ] ++ getSSHKeys user.name;
|
value.publicKeys = [ tuxcord-ca ] ++ getSSHKeys user.name;
|
||||||
}) (builtins.filter (user: user.value.ddns or false) (attrsToList users))
|
}) (builtins.filter (user: user.value.options.ddns or false) (attrsToList users))
|
||||||
)
|
)
|
||||||
|
|||||||
+1
-1
@@ -3,7 +3,7 @@ rec {
|
|||||||
|
|
||||||
adminSSHKeys = builtins.concatLists (
|
adminSSHKeys = builtins.concatLists (
|
||||||
map (user: getSSHKeys user.name) (
|
map (user: getSSHKeys user.name) (
|
||||||
builtins.filter (user: user.value.admin or false) (attrsToList users)
|
builtins.filter (user: user.value.options.admin or false) (attrsToList users)
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|||||||
+9
-5
@@ -1,19 +1,23 @@
|
|||||||
{
|
{
|
||||||
error = {
|
error = {
|
||||||
ssh = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDzdpxex2GlFVf5G2qsh3Ixa/XCMjnbq4JSTmAev7WYJ error.nointernet@gmail.com";
|
ssh = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDzdpxex2GlFVf5G2qsh3Ixa/XCMjnbq4JSTmAev7WYJ error.nointernet@gmail.com";
|
||||||
admin = true;
|
options = {
|
||||||
ddns = true;
|
admin = true;
|
||||||
|
ddns = true;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
javalsai = {
|
javalsai = {
|
||||||
ssh = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDFjavnLqxIzFLIUpUWDOwhlYeoII4Qk1/9e0yWWxD/P";
|
ssh = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDFjavnLqxIzFLIUpUWDOwhlYeoII4Qk1/9e0yWWxD/P";
|
||||||
admin = true;
|
options = {
|
||||||
ddns = true;
|
admin = true;
|
||||||
|
ddns = true;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
max = {
|
max = {
|
||||||
ssh = "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDxVfJhzPDZ108UjB3Vj/akzlzYn27kyAw29AuYAr7gvG5vrqhLUYYmK8t+ZVWVpc1g6cK7OF1oUn2E5Qfmy6wqyZQXftAZ4OcRS0MB71W1bAcRq3rGe6KQDm8RSEeygX+zO+2Z6zQmVWgPr/I+JFQZ8wiWdP8X8djqTRdhqUD+SR3ZgTcnY3aLmeB/I56rcZQ3lKIeg/pEsyQ8weptlV0rTWamna6Z7Nw48VwWNSI+6EqfW2/4/edm0Ue8jMNqNZ0yx+kHJbudPgZgSR1SiR2rqlEEUaiQJQQV3VdY4DhGm7143ZSKUxyKlfTuQ7qR1zSIg6f5V71A37ik9YiSbBlOZO86swR4qHESoMNf608IuqRt2NdALHwozFPUCu16qnhu5JTk8twSAzrAhOk5zWQj1LYMoQEBhcFSmwir/1gE71NSjYtqXGVAdfkVmZ4uqG5+a1D7H3VXWOqu/j839M045O1ZBY6X3lKDsEJ1Z1+LCl/NojWnvPtJUHYI6+SdQ6k=";
|
ssh = "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDxVfJhzPDZ108UjB3Vj/akzlzYn27kyAw29AuYAr7gvG5vrqhLUYYmK8t+ZVWVpc1g6cK7OF1oUn2E5Qfmy6wqyZQXftAZ4OcRS0MB71W1bAcRq3rGe6KQDm8RSEeygX+zO+2Z6zQmVWgPr/I+JFQZ8wiWdP8X8djqTRdhqUD+SR3ZgTcnY3aLmeB/I56rcZQ3lKIeg/pEsyQ8weptlV0rTWamna6Z7Nw48VwWNSI+6EqfW2/4/edm0Ue8jMNqNZ0yx+kHJbudPgZgSR1SiR2rqlEEUaiQJQQV3VdY4DhGm7143ZSKUxyKlfTuQ7qR1zSIg6f5V71A37ik9YiSbBlOZO86swR4qHESoMNf608IuqRt2NdALHwozFPUCu16qnhu5JTk8twSAzrAhOk5zWQj1LYMoQEBhcFSmwir/1gE71NSjYtqXGVAdfkVmZ4uqG5+a1D7H3VXWOqu/j839M045O1ZBY6X3lKDsEJ1Z1+LCl/NojWnvPtJUHYI6+SdQ6k=";
|
||||||
admin = true;
|
options.admin = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
vectorum = {
|
vectorum = {
|
||||||
|
|||||||
+22
-17
@@ -11,30 +11,35 @@ let
|
|||||||
"wheel"
|
"wheel"
|
||||||
];
|
];
|
||||||
|
|
||||||
mkUser = name: uid: admin: {
|
mkUser =
|
||||||
users.users.${name} = {
|
name: uid: options:
|
||||||
inherit uid;
|
let
|
||||||
isNormalUser = true;
|
admin = options.admin or false;
|
||||||
extraGroups = lib.optionals admin adminGroups;
|
in
|
||||||
openssh.authorizedKeys.keys = self.lib.getSSHKeys name;
|
{
|
||||||
};
|
users.users.${name} = {
|
||||||
|
inherit uid;
|
||||||
|
isNormalUser = true;
|
||||||
|
extraGroups = lib.optionals admin adminGroups;
|
||||||
|
openssh.authorizedKeys.keys = self.lib.getSSHKeys name;
|
||||||
|
};
|
||||||
|
|
||||||
systemd.slices."user-${builtins.toString uid}".sliceConfig = {
|
systemd.slices."user-${builtins.toString uid}".sliceConfig = {
|
||||||
CPUQuota = "50%";
|
CPUQuota = "50%";
|
||||||
CPUWeight = "10";
|
CPUWeight = "10";
|
||||||
IOAccounting = true;
|
IOAccounting = true;
|
||||||
IOWeight = "10";
|
IOWeight = "10";
|
||||||
MemoryMax = "2G";
|
MemoryMax = "2G";
|
||||||
MemorySwapMax = "1G";
|
MemorySwapMax = "1G";
|
||||||
TasksMax = "100";
|
TasksMax = "100";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
|
||||||
in
|
in
|
||||||
lib.recursiveUpdate
|
lib.recursiveUpdate
|
||||||
(builtins.foldl'
|
(builtins.foldl'
|
||||||
(attrs: user: {
|
(attrs: user: {
|
||||||
options = lib.recursiveUpdate attrs.options (
|
options = lib.recursiveUpdate attrs.options (
|
||||||
mkUser user.name attrs.uid (user.value.admin or false)
|
mkUser user.name attrs.uid (user.value.options or { })
|
||||||
);
|
);
|
||||||
uid = attrs.uid + 1;
|
uid = attrs.uid + 1;
|
||||||
})
|
})
|
||||||
|
|||||||
Reference in New Issue
Block a user