Refactor user option types across modules for consistency
Updated multiple configuration files to replace the user option type with a unified `usersOptionType`, enhancing consistency in user management across applications and services. This change simplifies the user configuration process and improves maintainability.
This commit is contained in:
@@ -17,9 +17,8 @@ in
|
|||||||
options.my.stylix = {
|
options.my.stylix = {
|
||||||
enable = lib.mkEnableOption "system-wide theming with Stylix";
|
enable = lib.mkEnableOption "system-wide theming with Stylix";
|
||||||
users = lib.mkOption {
|
users = lib.mkOption {
|
||||||
type = lib.types.either lib.types.str (lib.types.listOf lib.types.str);
|
type = inputs.self.lib.usersOptionType lib;
|
||||||
default = config.my.toggleUsers.stylix;
|
default = config.my.toggleUsers.stylix;
|
||||||
merge = inputs.self.lib.mergeUsersOption lib;
|
|
||||||
description = "Users to apply Stylix theming for";
|
description = "Users to apply Stylix theming for";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -40,9 +40,8 @@ in
|
|||||||
apps.art = {
|
apps.art = {
|
||||||
enable = lib.mkEnableOption "digital art and creative applications";
|
enable = lib.mkEnableOption "digital art and creative applications";
|
||||||
users = lib.mkOption {
|
users = lib.mkOption {
|
||||||
type = lib.types.either lib.types.str (lib.types.listOf lib.types.str);
|
type = inputs.self.lib.usersOptionType lib;
|
||||||
default = config.my.toggleUsers.apps;
|
default = config.my.toggleUsers.apps;
|
||||||
merge = inputs.self.lib.mergeUsersOption lib;
|
|
||||||
description = "Users to install art packages for";
|
description = "Users to install art packages for";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -21,9 +21,8 @@ in
|
|||||||
options.my.apps.dictionaries = {
|
options.my.apps.dictionaries = {
|
||||||
enable = lib.mkEnableOption "dictionaries and language tools";
|
enable = lib.mkEnableOption "dictionaries and language tools";
|
||||||
users = lib.mkOption {
|
users = lib.mkOption {
|
||||||
type = lib.types.either lib.types.str (lib.types.listOf lib.types.str);
|
type = inputs.self.lib.usersOptionType lib;
|
||||||
default = config.my.toggleUsers.apps;
|
default = config.my.toggleUsers.apps;
|
||||||
merge = inputs.self.lib.mergeUsersOption lib;
|
|
||||||
description = "Users to install dictionaries packages for";
|
description = "Users to install dictionaries packages for";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -26,9 +26,8 @@ in
|
|||||||
gaming = {
|
gaming = {
|
||||||
enable = lib.mkEnableOption "gaming applications and emulators";
|
enable = lib.mkEnableOption "gaming applications and emulators";
|
||||||
users = lib.mkOption {
|
users = lib.mkOption {
|
||||||
type = lib.types.either lib.types.str (lib.types.listOf lib.types.str);
|
type = inputs.self.lib.usersOptionType lib;
|
||||||
default = config.my.toggleUsers.apps;
|
default = config.my.toggleUsers.apps;
|
||||||
merge = inputs.self.lib.mergeUsersOption lib;
|
|
||||||
description = "Users to install gaming packages for";
|
description = "Users to install gaming packages for";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -31,9 +31,8 @@ in
|
|||||||
options.my.apps.internet = {
|
options.my.apps.internet = {
|
||||||
enable = lib.mkEnableOption "internet browsers and communication apps";
|
enable = lib.mkEnableOption "internet browsers and communication apps";
|
||||||
users = lib.mkOption {
|
users = lib.mkOption {
|
||||||
type = lib.types.either lib.types.str (lib.types.listOf lib.types.str);
|
type = inputs.self.lib.usersOptionType lib;
|
||||||
default = config.my.toggleUsers.apps;
|
default = config.my.toggleUsers.apps;
|
||||||
merge = inputs.self.lib.mergeUsersOption lib;
|
|
||||||
description = "Users to install internet packages for";
|
description = "Users to install internet packages for";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -9,9 +9,8 @@
|
|||||||
options.my.apps.misc = {
|
options.my.apps.misc = {
|
||||||
enable = lib.mkEnableOption "miscellaneous desktop applications";
|
enable = lib.mkEnableOption "miscellaneous desktop applications";
|
||||||
users = lib.mkOption {
|
users = lib.mkOption {
|
||||||
type = lib.types.either lib.types.str (lib.types.listOf lib.types.str);
|
type = inputs.self.lib.usersOptionType lib;
|
||||||
default = config.my.toggleUsers.apps;
|
default = config.my.toggleUsers.apps;
|
||||||
merge = inputs.self.lib.mergeUsersOption lib;
|
|
||||||
description = "Users to install misc packages for";
|
description = "Users to install misc packages for";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -33,17 +33,15 @@ in
|
|||||||
options.my.apps.multimedia = {
|
options.my.apps.multimedia = {
|
||||||
enable = lib.mkEnableOption "multimedia applications and media players";
|
enable = lib.mkEnableOption "multimedia applications and media players";
|
||||||
users = lib.mkOption {
|
users = lib.mkOption {
|
||||||
type = lib.types.either lib.types.str (lib.types.listOf lib.types.str);
|
type = inputs.self.lib.usersOptionType lib;
|
||||||
default = config.my.toggleUsers.apps;
|
default = config.my.toggleUsers.apps;
|
||||||
merge = inputs.self.lib.mergeUsersOption lib;
|
|
||||||
description = "Users to install multimedia packages for";
|
description = "Users to install multimedia packages for";
|
||||||
};
|
};
|
||||||
videoEditing = {
|
videoEditing = {
|
||||||
enable = lib.mkEnableOption "video editing applications";
|
enable = lib.mkEnableOption "video editing applications";
|
||||||
users = lib.mkOption {
|
users = lib.mkOption {
|
||||||
type = lib.types.either lib.types.str (lib.types.listOf lib.types.str);
|
type = inputs.self.lib.usersOptionType lib;
|
||||||
default = config.my.toggleUsers.apps;
|
default = config.my.toggleUsers.apps;
|
||||||
merge = inputs.self.lib.mergeUsersOption lib;
|
|
||||||
description = "Users to install video editing packages for";
|
description = "Users to install video editing packages for";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -9,9 +9,8 @@
|
|||||||
options.my.apps.piano = {
|
options.my.apps.piano = {
|
||||||
enable = lib.mkEnableOption "piano learning and music theory apps";
|
enable = lib.mkEnableOption "piano learning and music theory apps";
|
||||||
users = lib.mkOption {
|
users = lib.mkOption {
|
||||||
type = lib.types.either lib.types.str (lib.types.listOf lib.types.str);
|
type = inputs.self.lib.usersOptionType lib;
|
||||||
default = config.my.toggleUsers.apps;
|
default = config.my.toggleUsers.apps;
|
||||||
merge = inputs.self.lib.mergeUsersOption lib;
|
|
||||||
description = "Users to install piano packages for";
|
description = "Users to install piano packages for";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -9,9 +9,8 @@
|
|||||||
options.my.apps.office = {
|
options.my.apps.office = {
|
||||||
enable = lib.mkEnableOption "office applications and productivity tools";
|
enable = lib.mkEnableOption "office applications and productivity tools";
|
||||||
users = lib.mkOption {
|
users = lib.mkOption {
|
||||||
type = lib.types.either lib.types.str (lib.types.listOf lib.types.str);
|
type = inputs.self.lib.usersOptionType lib;
|
||||||
default = config.my.toggleUsers.apps;
|
default = config.my.toggleUsers.apps;
|
||||||
merge = inputs.self.lib.mergeUsersOption lib;
|
|
||||||
description = "Users to install office packages for";
|
description = "Users to install office packages for";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -21,9 +21,8 @@ in
|
|||||||
my.dev.cc = {
|
my.dev.cc = {
|
||||||
enable = lib.mkEnableOption "Install C/C++ tooling globally";
|
enable = lib.mkEnableOption "Install C/C++ tooling globally";
|
||||||
users = lib.mkOption {
|
users = lib.mkOption {
|
||||||
type = lib.types.either lib.types.str (lib.types.listOf lib.types.str);
|
type = inputs.self.lib.usersOptionType lib;
|
||||||
default = config.my.toggleUsers.dev;
|
default = config.my.toggleUsers.dev;
|
||||||
merge = inputs.self.lib.mergeUsersOption lib;
|
|
||||||
description = "Users to install C/C++ packages for";
|
description = "Users to install C/C++ packages for";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -18,9 +18,8 @@ in
|
|||||||
my.dev.docker = {
|
my.dev.docker = {
|
||||||
enable = lib.mkEnableOption "Install Docker tooling globally";
|
enable = lib.mkEnableOption "Install Docker tooling globally";
|
||||||
users = lib.mkOption {
|
users = lib.mkOption {
|
||||||
type = lib.types.either lib.types.str (lib.types.listOf lib.types.str);
|
type = inputs.self.lib.usersOptionType lib;
|
||||||
default = config.my.toggleUsers.dev;
|
default = config.my.toggleUsers.dev;
|
||||||
merge = inputs.self.lib.mergeUsersOption lib;
|
|
||||||
description = "Users to install Docker packages for";
|
description = "Users to install Docker packages for";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -9,9 +9,8 @@
|
|||||||
options.my.emacs = {
|
options.my.emacs = {
|
||||||
enable = lib.mkEnableOption "Doom Emacs configuration";
|
enable = lib.mkEnableOption "Doom Emacs configuration";
|
||||||
users = lib.mkOption {
|
users = lib.mkOption {
|
||||||
type = lib.types.either lib.types.str (lib.types.listOf lib.types.str);
|
type = inputs.self.lib.usersOptionType lib;
|
||||||
default = config.my.toggleUsers.dev;
|
default = config.my.toggleUsers.dev;
|
||||||
merge = inputs.self.lib.mergeUsersOption lib;
|
|
||||||
description = "Users to install Emacs packages for";
|
description = "Users to install Emacs packages for";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -24,9 +24,8 @@ in
|
|||||||
my.dev.go = {
|
my.dev.go = {
|
||||||
enable = lib.mkEnableOption "Install Go tooling globally";
|
enable = lib.mkEnableOption "Install Go tooling globally";
|
||||||
users = lib.mkOption {
|
users = lib.mkOption {
|
||||||
type = lib.types.either lib.types.str (lib.types.listOf lib.types.str);
|
type = inputs.self.lib.usersOptionType lib;
|
||||||
default = config.my.toggleUsers.dev;
|
default = config.my.toggleUsers.dev;
|
||||||
merge = inputs.self.lib.mergeUsersOption lib;
|
|
||||||
description = "Users to install Go packages for";
|
description = "Users to install Go packages for";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -22,9 +22,8 @@ in
|
|||||||
my.dev.haskell = {
|
my.dev.haskell = {
|
||||||
enable = lib.mkEnableOption "Install Haskell tooling globally";
|
enable = lib.mkEnableOption "Install Haskell tooling globally";
|
||||||
users = lib.mkOption {
|
users = lib.mkOption {
|
||||||
type = lib.types.either lib.types.str (lib.types.listOf lib.types.str);
|
type = inputs.self.lib.usersOptionType lib;
|
||||||
default = config.my.toggleUsers.dev;
|
default = config.my.toggleUsers.dev;
|
||||||
merge = inputs.self.lib.mergeUsersOption lib;
|
|
||||||
description = "Users to install Haskell packages for";
|
description = "Users to install Haskell packages for";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -16,9 +16,8 @@ in
|
|||||||
my.dev.javascript = {
|
my.dev.javascript = {
|
||||||
enable = lib.mkEnableOption "Install JavaScript tooling globally";
|
enable = lib.mkEnableOption "Install JavaScript tooling globally";
|
||||||
users = lib.mkOption {
|
users = lib.mkOption {
|
||||||
type = lib.types.either lib.types.str (lib.types.listOf lib.types.str);
|
type = inputs.self.lib.usersOptionType lib;
|
||||||
default = config.my.toggleUsers.dev;
|
default = config.my.toggleUsers.dev;
|
||||||
merge = inputs.self.lib.mergeUsersOption lib;
|
|
||||||
description = "Users to install JavaScript packages for";
|
description = "Users to install JavaScript packages for";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -15,9 +15,8 @@ in
|
|||||||
my.dev.julia = {
|
my.dev.julia = {
|
||||||
enable = lib.mkEnableOption "Install Julia globally";
|
enable = lib.mkEnableOption "Install Julia globally";
|
||||||
users = lib.mkOption {
|
users = lib.mkOption {
|
||||||
type = lib.types.either lib.types.str (lib.types.listOf lib.types.str);
|
type = inputs.self.lib.usersOptionType lib;
|
||||||
default = config.my.toggleUsers.dev;
|
default = config.my.toggleUsers.dev;
|
||||||
merge = inputs.self.lib.mergeUsersOption lib;
|
|
||||||
description = "Users to install Julia packages for";
|
description = "Users to install Julia packages for";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -22,9 +22,8 @@ in
|
|||||||
my.dev.nix = {
|
my.dev.nix = {
|
||||||
enable = lib.mkEnableOption "Install Nix tooling globally";
|
enable = lib.mkEnableOption "Install Nix tooling globally";
|
||||||
users = lib.mkOption {
|
users = lib.mkOption {
|
||||||
type = lib.types.either lib.types.str (lib.types.listOf lib.types.str);
|
type = inputs.self.lib.usersOptionType lib;
|
||||||
default = config.my.toggleUsers.dev;
|
default = config.my.toggleUsers.dev;
|
||||||
merge = inputs.self.lib.mergeUsersOption lib;
|
|
||||||
description = "Users to install Nix packages for";
|
description = "Users to install Nix packages for";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -34,9 +34,8 @@ in
|
|||||||
my.dev.python = {
|
my.dev.python = {
|
||||||
enable = lib.mkEnableOption "Install Python tools globally";
|
enable = lib.mkEnableOption "Install Python tools globally";
|
||||||
users = lib.mkOption {
|
users = lib.mkOption {
|
||||||
type = lib.types.either lib.types.str (lib.types.listOf lib.types.str);
|
type = inputs.self.lib.usersOptionType lib;
|
||||||
default = config.my.toggleUsers.dev;
|
default = config.my.toggleUsers.dev;
|
||||||
merge = inputs.self.lib.mergeUsersOption lib;
|
|
||||||
description = "Users to install Python packages for";
|
description = "Users to install Python packages for";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -16,9 +16,8 @@ in
|
|||||||
my.dev.ruby = {
|
my.dev.ruby = {
|
||||||
enable = lib.mkEnableOption "Install Ruby tooling globally";
|
enable = lib.mkEnableOption "Install Ruby tooling globally";
|
||||||
users = lib.mkOption {
|
users = lib.mkOption {
|
||||||
type = lib.types.either lib.types.str (lib.types.listOf lib.types.str);
|
type = inputs.self.lib.usersOptionType lib;
|
||||||
default = config.my.toggleUsers.dev;
|
default = config.my.toggleUsers.dev;
|
||||||
merge = inputs.self.lib.mergeUsersOption lib;
|
|
||||||
description = "Users to install Ruby packages for";
|
description = "Users to install Ruby packages for";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -21,9 +21,8 @@ in
|
|||||||
my.dev.rust = {
|
my.dev.rust = {
|
||||||
enable = lib.mkEnableOption "Install Rust tooling globally";
|
enable = lib.mkEnableOption "Install Rust tooling globally";
|
||||||
users = lib.mkOption {
|
users = lib.mkOption {
|
||||||
type = lib.types.either lib.types.str (lib.types.listOf lib.types.str);
|
type = inputs.self.lib.usersOptionType lib;
|
||||||
default = config.my.toggleUsers.dev;
|
default = config.my.toggleUsers.dev;
|
||||||
merge = inputs.self.lib.mergeUsersOption lib;
|
|
||||||
description = "Users to install Rust packages for";
|
description = "Users to install Rust packages for";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -20,9 +20,8 @@ in
|
|||||||
my.dev.sh = {
|
my.dev.sh = {
|
||||||
enable = lib.mkEnableOption "Install shell scripting tools globally";
|
enable = lib.mkEnableOption "Install shell scripting tools globally";
|
||||||
users = lib.mkOption {
|
users = lib.mkOption {
|
||||||
type = lib.types.either lib.types.str (lib.types.listOf lib.types.str);
|
type = inputs.self.lib.usersOptionType lib;
|
||||||
default = config.my.toggleUsers.dev;
|
default = config.my.toggleUsers.dev;
|
||||||
merge = inputs.self.lib.mergeUsersOption lib;
|
|
||||||
description = "Users to install shell scripting packages for";
|
description = "Users to install shell scripting packages for";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -18,9 +18,8 @@ in
|
|||||||
my.dev.zig = {
|
my.dev.zig = {
|
||||||
enable = lib.mkEnableOption "Install Zig tooling globally";
|
enable = lib.mkEnableOption "Install Zig tooling globally";
|
||||||
users = lib.mkOption {
|
users = lib.mkOption {
|
||||||
type = lib.types.either lib.types.str (lib.types.listOf lib.types.str);
|
type = inputs.self.lib.usersOptionType lib;
|
||||||
default = config.my.toggleUsers.dev;
|
default = config.my.toggleUsers.dev;
|
||||||
merge = inputs.self.lib.mergeUsersOption lib;
|
|
||||||
description = "Users to install Zig packages for";
|
description = "Users to install Zig packages for";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -14,9 +14,8 @@
|
|||||||
install = lib.mkEnableOption "Whether to install the script package";
|
install = lib.mkEnableOption "Whether to install the script package";
|
||||||
service = lib.mkEnableOption "Whether to enable the script service";
|
service = lib.mkEnableOption "Whether to enable the script service";
|
||||||
users = lib.mkOption {
|
users = lib.mkOption {
|
||||||
type = lib.types.either lib.types.str (lib.types.listOf lib.types.str);
|
type = inputs.self.lib.usersOptionType lib;
|
||||||
default = config.my.toggleUsers.scripts;
|
default = config.my.toggleUsers.scripts;
|
||||||
merge = inputs.self.lib.mergeUsersOption lib;
|
|
||||||
description = "Users to install this script for";
|
description = "Users to install this script for";
|
||||||
};
|
};
|
||||||
name = lib.mkOption {
|
name = lib.mkOption {
|
||||||
|
|||||||
@@ -15,9 +15,8 @@ in
|
|||||||
options.my.services.printing = {
|
options.my.services.printing = {
|
||||||
enable = lib.mkEnableOption "printing services and drivers";
|
enable = lib.mkEnableOption "printing services and drivers";
|
||||||
users = lib.mkOption {
|
users = lib.mkOption {
|
||||||
type = lib.types.either lib.types.str (lib.types.listOf lib.types.str);
|
type = inputs.self.lib.usersOptionType lib;
|
||||||
default = config.my.toggleUsers.services;
|
default = config.my.toggleUsers.services;
|
||||||
merge = inputs.self.lib.mergeUsersOption lib;
|
|
||||||
description = "Users to install printing packages for";
|
description = "Users to install printing packages for";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -16,9 +16,8 @@
|
|||||||
description = "The shell to use system-wide (bash or zsh)";
|
description = "The shell to use system-wide (bash or zsh)";
|
||||||
};
|
};
|
||||||
users = lib.mkOption {
|
users = lib.mkOption {
|
||||||
type = lib.types.either lib.types.str (lib.types.listOf lib.types.str);
|
type = inputs.self.lib.usersOptionType lib;
|
||||||
default = config.my.toggleUsers.shell;
|
default = config.my.toggleUsers.shell;
|
||||||
merge = inputs.self.lib.mergeUsersOption lib;
|
|
||||||
description = "Users to configure shell for";
|
description = "Users to configure shell for";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -9,9 +9,8 @@
|
|||||||
options.my.shell.exercism = {
|
options.my.shell.exercism = {
|
||||||
enable = lib.mkEnableOption "Exercism coding practice platform";
|
enable = lib.mkEnableOption "Exercism coding practice platform";
|
||||||
users = lib.mkOption {
|
users = lib.mkOption {
|
||||||
type = lib.types.either lib.types.str (lib.types.listOf lib.types.str);
|
type = inputs.self.lib.usersOptionType lib;
|
||||||
default = config.my.toggleUsers.shell;
|
default = config.my.toggleUsers.shell;
|
||||||
merge = inputs.self.lib.mergeUsersOption lib;
|
|
||||||
description = "Users to install Exercism for";
|
description = "Users to install Exercism for";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -9,9 +9,8 @@
|
|||||||
options.my.shell.multimedia = {
|
options.my.shell.multimedia = {
|
||||||
enable = lib.mkEnableOption "multimedia CLI tools and codecs";
|
enable = lib.mkEnableOption "multimedia CLI tools and codecs";
|
||||||
users = lib.mkOption {
|
users = lib.mkOption {
|
||||||
type = lib.types.either lib.types.str (lib.types.listOf lib.types.str);
|
type = inputs.self.lib.usersOptionType lib;
|
||||||
default = config.my.toggleUsers.shell;
|
default = config.my.toggleUsers.shell;
|
||||||
merge = inputs.self.lib.mergeUsersOption lib;
|
|
||||||
description = "Users to install multimedia shell tools for";
|
description = "Users to install multimedia shell tools for";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -12,9 +12,8 @@ in
|
|||||||
options.my.shell.tools = {
|
options.my.shell.tools = {
|
||||||
enable = lib.mkEnableOption "shell tools and utilities";
|
enable = lib.mkEnableOption "shell tools and utilities";
|
||||||
users = lib.mkOption {
|
users = lib.mkOption {
|
||||||
type = lib.types.either lib.types.str (lib.types.listOf lib.types.str);
|
type = inputs.self.lib.usersOptionType lib;
|
||||||
default = config.my.toggleUsers.shell;
|
default = config.my.toggleUsers.shell;
|
||||||
merge = inputs.self.lib.mergeUsersOption lib;
|
|
||||||
description = "Users to install shell tools for";
|
description = "Users to install shell tools for";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -237,13 +237,20 @@ in
|
|||||||
}) (inputs.self.lib.normalizeUsers users)
|
}) (inputs.self.lib.normalizeUsers users)
|
||||||
);
|
);
|
||||||
getFirstUser = users: if builtins.isString users then users else (builtins.head users);
|
getFirstUser = users: if builtins.isString users then users else (builtins.head users);
|
||||||
mergeUsersOption =
|
usersOptionType =
|
||||||
lib: _loc: defs:
|
lib:
|
||||||
let
|
lib.mkOptionType {
|
||||||
normalize = users: if builtins.isString users then [ users ] else users;
|
name = "usersOption";
|
||||||
allUsers = lib.foldl' (acc: def: acc ++ (normalize def.value)) [ ] defs;
|
description = "Either a single user (string) or multiple users (list of strings)";
|
||||||
in
|
check = x: builtins.isString x || (builtins.isList x && lib.all builtins.isString x);
|
||||||
lib.unique allUsers;
|
merge =
|
||||||
|
_loc: defs:
|
||||||
|
let
|
||||||
|
normalize = users: if builtins.isString users then [ users ] else users;
|
||||||
|
allUsers = lib.foldl' (acc: def: acc ++ (normalize def.value)) [ ] defs;
|
||||||
|
in
|
||||||
|
lib.unique allUsers;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user