diff --git a/nixos/modules/services/misc/taskserver.nix b/nixos/modules/services/misc/taskserver.nix
index b25447ccd9d1..47a11288b523 100644
--- a/nixos/modules/services/misc/taskserver.nix
+++ b/nixos/modules/services/misc/taskserver.nix
@@ -59,6 +59,26 @@ let
''}
'';
+ orgOptions = { name, ... }: {
+ options.users = mkOption {
+ type = types.uniq (types.listOf types.str);
+ default = [];
+ example = [ "alice" "bob" ];
+ description = ''
+ A list of user names that belong to the organization.
+ '';
+ };
+
+ options.groups = mkOption {
+ type = types.listOf types.str;
+ default = [];
+ example = [ "workers" "slackers" ];
+ description = ''
+ A list of group names that belong to the organization.
+ '';
+ };
+ };
+
in {
options = {
@@ -100,6 +120,19 @@ in {
'';
};
+ organisations = mkOption {
+ type = types.attrsOf (types.submodule orgOptions);
+ default = {};
+ example.myShinyOrganisation.users = [ "alice" "bob" ];
+ example.myShinyOrganisation.groups = [ "staff" "outsiders" ];
+ example.yetAnotherOrganisation.users = [ "foo" "bar" ];
+ description = ''
+ An attribute set where the keys name the organisation and the values
+ are a set of lists of and
+ .
+ '';
+ };
+
confirmation = mkOption {
type = types.bool;
default = true;