Compare commits
24 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
b32e506f54
|
|||
|
91733ce19f
|
|||
|
bb97397e6b
|
|||
| a02d935fd0 | |||
| 62b9a39599 | |||
| ee17ef91ed | |||
|
a2065702a4
|
|||
|
869fc59c6f
|
|||
|
8824b565ba
|
|||
|
9b7453b0b4
|
|||
| fb9526fec2 | |||
|
0692e680b8
|
|||
|
3a940586d5
|
|||
| 7e7097f457 | |||
| 22b3a95bf8 | |||
| de4b8833bd | |||
| ac9b80573f | |||
| 66a15a5d19 | |||
| 7e331f5e1a | |||
| a8374e231f | |||
| 27b861d5a5 | |||
| 6a29ac005c | |||
|
0b9f76dcb4
|
|||
| cc52b0e6cb |
+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.options.ddns or false) (attrsToList users))
|
}) (builtins.filter (user: user.value.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.options.admin or false) (attrsToList users)
|
builtins.filter (user: user.value.admin or false) (attrsToList users)
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|||||||
+5
-9
@@ -1,23 +1,19 @@
|
|||||||
{
|
{
|
||||||
error = {
|
error = {
|
||||||
ssh = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDzdpxex2GlFVf5G2qsh3Ixa/XCMjnbq4JSTmAev7WYJ error.nointernet@gmail.com";
|
ssh = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDzdpxex2GlFVf5G2qsh3Ixa/XCMjnbq4JSTmAev7WYJ error.nointernet@gmail.com";
|
||||||
options = {
|
admin = true;
|
||||||
admin = true;
|
ddns = true;
|
||||||
ddns = true;
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
javalsai = {
|
javalsai = {
|
||||||
ssh = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDFjavnLqxIzFLIUpUWDOwhlYeoII4Qk1/9e0yWWxD/P";
|
ssh = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDFjavnLqxIzFLIUpUWDOwhlYeoII4Qk1/9e0yWWxD/P";
|
||||||
options = {
|
admin = true;
|
||||||
admin = true;
|
ddns = 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=";
|
||||||
options.admin = true;
|
admin = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
vectorum = {
|
vectorum = {
|
||||||
|
|||||||
+18
-23
@@ -11,35 +11,30 @@ let
|
|||||||
"wheel"
|
"wheel"
|
||||||
];
|
];
|
||||||
|
|
||||||
mkUser =
|
mkUser = name: uid: admin: {
|
||||||
name: uid: options:
|
users.users.${name} = {
|
||||||
let
|
inherit uid;
|
||||||
admin = options.admin or false;
|
isNormalUser = true;
|
||||||
in
|
extraGroups = lib.optionals admin adminGroups;
|
||||||
{
|
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 = {
|
|
||||||
CPUQuota = "50%";
|
|
||||||
CPUWeight = "10";
|
|
||||||
IOAccounting = true;
|
|
||||||
IOWeight = "10";
|
|
||||||
MemoryMax = "2G";
|
|
||||||
MemorySwapMax = "1G";
|
|
||||||
TasksMax = "100";
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
systemd.slices."user-${builtins.toString uid}".sliceConfig = {
|
||||||
|
CPUQuota = "50%";
|
||||||
|
CPUWeight = "10";
|
||||||
|
IOAccounting = true;
|
||||||
|
IOWeight = "10";
|
||||||
|
MemoryMax = "2G";
|
||||||
|
MemorySwapMax = "1G";
|
||||||
|
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.options or { })
|
mkUser user.name attrs.uid (user.value.admin or false)
|
||||||
);
|
);
|
||||||
uid = attrs.uid + 1;
|
uid = attrs.uid + 1;
|
||||||
})
|
})
|
||||||
|
|||||||
Reference in New Issue
Block a user