Add multi-user support for package installations across various modules
Updated multiple configuration files to include a `merge` option for user management, enhancing the ability to handle multi-user setups for applications and services. This change improves flexibility in managing user-specific package installations, ensuring a more streamlined configuration process.
This commit is contained in:
@@ -168,7 +168,8 @@
|
||||
};
|
||||
fonts = {
|
||||
fontconfig.enable = true;
|
||||
packages = let
|
||||
packages =
|
||||
let
|
||||
customFonts = pkgs.stdenvNoCC.mkDerivation {
|
||||
name = "custom-fonts";
|
||||
src = inputs.fonts;
|
||||
|
||||
@@ -19,6 +19,7 @@ in
|
||||
users = lib.mkOption {
|
||||
type = lib.types.either lib.types.str (lib.types.listOf lib.types.str);
|
||||
default = config.my.toggleUsers.stylix;
|
||||
merge = inputs.self.lib.mergeUsersOption lib;
|
||||
description = "Users to apply Stylix theming for";
|
||||
};
|
||||
};
|
||||
|
||||
@@ -42,6 +42,7 @@ in
|
||||
users = lib.mkOption {
|
||||
type = lib.types.either lib.types.str (lib.types.listOf lib.types.str);
|
||||
default = config.my.toggleUsers.apps;
|
||||
merge = inputs.self.lib.mergeUsersOption lib;
|
||||
description = "Users to install art packages for";
|
||||
};
|
||||
};
|
||||
|
||||
@@ -23,6 +23,7 @@ in
|
||||
users = lib.mkOption {
|
||||
type = lib.types.either lib.types.str (lib.types.listOf lib.types.str);
|
||||
default = config.my.toggleUsers.apps;
|
||||
merge = inputs.self.lib.mergeUsersOption lib;
|
||||
description = "Users to install dictionaries packages for";
|
||||
};
|
||||
};
|
||||
|
||||
@@ -28,6 +28,7 @@ in
|
||||
users = lib.mkOption {
|
||||
type = lib.types.either lib.types.str (lib.types.listOf lib.types.str);
|
||||
default = config.my.toggleUsers.apps;
|
||||
merge = inputs.self.lib.mergeUsersOption lib;
|
||||
description = "Users to install gaming packages for";
|
||||
};
|
||||
};
|
||||
|
||||
@@ -33,6 +33,7 @@ in
|
||||
users = lib.mkOption {
|
||||
type = lib.types.either lib.types.str (lib.types.listOf lib.types.str);
|
||||
default = config.my.toggleUsers.apps;
|
||||
merge = inputs.self.lib.mergeUsersOption lib;
|
||||
description = "Users to install internet packages for";
|
||||
};
|
||||
};
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
users = lib.mkOption {
|
||||
type = lib.types.either lib.types.str (lib.types.listOf lib.types.str);
|
||||
default = config.my.toggleUsers.apps;
|
||||
merge = inputs.self.lib.mergeUsersOption lib;
|
||||
description = "Users to install misc packages for";
|
||||
};
|
||||
};
|
||||
|
||||
@@ -35,6 +35,7 @@ in
|
||||
users = lib.mkOption {
|
||||
type = lib.types.either lib.types.str (lib.types.listOf lib.types.str);
|
||||
default = config.my.toggleUsers.apps;
|
||||
merge = inputs.self.lib.mergeUsersOption lib;
|
||||
description = "Users to install multimedia packages for";
|
||||
};
|
||||
videoEditing = {
|
||||
@@ -42,6 +43,7 @@ in
|
||||
users = lib.mkOption {
|
||||
type = lib.types.either lib.types.str (lib.types.listOf lib.types.str);
|
||||
default = config.my.toggleUsers.apps;
|
||||
merge = inputs.self.lib.mergeUsersOption lib;
|
||||
description = "Users to install video editing packages for";
|
||||
};
|
||||
};
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
users = lib.mkOption {
|
||||
type = lib.types.either lib.types.str (lib.types.listOf lib.types.str);
|
||||
default = config.my.toggleUsers.apps;
|
||||
merge = inputs.self.lib.mergeUsersOption lib;
|
||||
description = "Users to install piano packages for";
|
||||
};
|
||||
};
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
users = lib.mkOption {
|
||||
type = lib.types.either lib.types.str (lib.types.listOf lib.types.str);
|
||||
default = config.my.toggleUsers.apps;
|
||||
merge = inputs.self.lib.mergeUsersOption lib;
|
||||
description = "Users to install office packages for";
|
||||
};
|
||||
};
|
||||
|
||||
@@ -23,6 +23,7 @@ in
|
||||
users = lib.mkOption {
|
||||
type = lib.types.either lib.types.str (lib.types.listOf lib.types.str);
|
||||
default = config.my.toggleUsers.dev;
|
||||
merge = inputs.self.lib.mergeUsersOption lib;
|
||||
description = "Users to install C/C++ packages for";
|
||||
};
|
||||
};
|
||||
|
||||
@@ -20,6 +20,7 @@ in
|
||||
users = lib.mkOption {
|
||||
type = lib.types.either lib.types.str (lib.types.listOf lib.types.str);
|
||||
default = config.my.toggleUsers.dev;
|
||||
merge = inputs.self.lib.mergeUsersOption lib;
|
||||
description = "Users to install Docker packages for";
|
||||
};
|
||||
};
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
users = lib.mkOption {
|
||||
type = lib.types.either lib.types.str (lib.types.listOf lib.types.str);
|
||||
default = config.my.toggleUsers.dev;
|
||||
merge = inputs.self.lib.mergeUsersOption lib;
|
||||
description = "Users to install Emacs packages for";
|
||||
};
|
||||
};
|
||||
|
||||
@@ -26,6 +26,7 @@ in
|
||||
users = lib.mkOption {
|
||||
type = lib.types.either lib.types.str (lib.types.listOf lib.types.str);
|
||||
default = config.my.toggleUsers.dev;
|
||||
merge = inputs.self.lib.mergeUsersOption lib;
|
||||
description = "Users to install Go packages for";
|
||||
};
|
||||
};
|
||||
|
||||
@@ -24,6 +24,7 @@ in
|
||||
users = lib.mkOption {
|
||||
type = lib.types.either lib.types.str (lib.types.listOf lib.types.str);
|
||||
default = config.my.toggleUsers.dev;
|
||||
merge = inputs.self.lib.mergeUsersOption lib;
|
||||
description = "Users to install Haskell packages for";
|
||||
};
|
||||
};
|
||||
|
||||
@@ -18,6 +18,7 @@ in
|
||||
users = lib.mkOption {
|
||||
type = lib.types.either lib.types.str (lib.types.listOf lib.types.str);
|
||||
default = config.my.toggleUsers.dev;
|
||||
merge = inputs.self.lib.mergeUsersOption lib;
|
||||
description = "Users to install JavaScript packages for";
|
||||
};
|
||||
};
|
||||
|
||||
@@ -17,6 +17,7 @@ in
|
||||
users = lib.mkOption {
|
||||
type = lib.types.either lib.types.str (lib.types.listOf lib.types.str);
|
||||
default = config.my.toggleUsers.dev;
|
||||
merge = inputs.self.lib.mergeUsersOption lib;
|
||||
description = "Users to install Julia packages for";
|
||||
};
|
||||
};
|
||||
|
||||
@@ -24,6 +24,7 @@ in
|
||||
users = lib.mkOption {
|
||||
type = lib.types.either lib.types.str (lib.types.listOf lib.types.str);
|
||||
default = config.my.toggleUsers.dev;
|
||||
merge = inputs.self.lib.mergeUsersOption lib;
|
||||
description = "Users to install Nix packages for";
|
||||
};
|
||||
};
|
||||
|
||||
@@ -36,6 +36,7 @@ in
|
||||
users = lib.mkOption {
|
||||
type = lib.types.either lib.types.str (lib.types.listOf lib.types.str);
|
||||
default = config.my.toggleUsers.dev;
|
||||
merge = inputs.self.lib.mergeUsersOption lib;
|
||||
description = "Users to install Python packages for";
|
||||
};
|
||||
};
|
||||
|
||||
@@ -18,6 +18,7 @@ in
|
||||
users = lib.mkOption {
|
||||
type = lib.types.either lib.types.str (lib.types.listOf lib.types.str);
|
||||
default = config.my.toggleUsers.dev;
|
||||
merge = inputs.self.lib.mergeUsersOption lib;
|
||||
description = "Users to install Ruby packages for";
|
||||
};
|
||||
};
|
||||
|
||||
@@ -23,6 +23,7 @@ in
|
||||
users = lib.mkOption {
|
||||
type = lib.types.either lib.types.str (lib.types.listOf lib.types.str);
|
||||
default = config.my.toggleUsers.dev;
|
||||
merge = inputs.self.lib.mergeUsersOption lib;
|
||||
description = "Users to install Rust packages for";
|
||||
};
|
||||
};
|
||||
|
||||
@@ -22,6 +22,7 @@ in
|
||||
users = lib.mkOption {
|
||||
type = lib.types.either lib.types.str (lib.types.listOf lib.types.str);
|
||||
default = config.my.toggleUsers.dev;
|
||||
merge = inputs.self.lib.mergeUsersOption lib;
|
||||
description = "Users to install shell scripting packages for";
|
||||
};
|
||||
};
|
||||
|
||||
@@ -20,6 +20,7 @@ in
|
||||
users = lib.mkOption {
|
||||
type = lib.types.either lib.types.str (lib.types.listOf lib.types.str);
|
||||
default = config.my.toggleUsers.dev;
|
||||
merge = inputs.self.lib.mergeUsersOption lib;
|
||||
description = "Users to install Zig packages for";
|
||||
};
|
||||
};
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
users = lib.mkOption {
|
||||
type = lib.types.either lib.types.str (lib.types.listOf lib.types.str);
|
||||
default = config.my.toggleUsers.scripts;
|
||||
merge = inputs.self.lib.mergeUsersOption lib;
|
||||
description = "Users to install this script for";
|
||||
};
|
||||
name = lib.mkOption {
|
||||
|
||||
@@ -17,6 +17,7 @@ in
|
||||
users = lib.mkOption {
|
||||
type = lib.types.either lib.types.str (lib.types.listOf lib.types.str);
|
||||
default = config.my.toggleUsers.services;
|
||||
merge = inputs.self.lib.mergeUsersOption lib;
|
||||
description = "Users to install printing packages for";
|
||||
};
|
||||
};
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
users = lib.mkOption {
|
||||
type = lib.types.either lib.types.str (lib.types.listOf lib.types.str);
|
||||
default = config.my.toggleUsers.shell;
|
||||
merge = inputs.self.lib.mergeUsersOption lib;
|
||||
description = "Users to configure shell for";
|
||||
};
|
||||
};
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
users = lib.mkOption {
|
||||
type = lib.types.either lib.types.str (lib.types.listOf lib.types.str);
|
||||
default = config.my.toggleUsers.shell;
|
||||
merge = inputs.self.lib.mergeUsersOption lib;
|
||||
description = "Users to install Exercism for";
|
||||
};
|
||||
};
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
users = lib.mkOption {
|
||||
type = lib.types.either lib.types.str (lib.types.listOf lib.types.str);
|
||||
default = config.my.toggleUsers.shell;
|
||||
merge = inputs.self.lib.mergeUsersOption lib;
|
||||
description = "Users to install multimedia shell tools for";
|
||||
};
|
||||
};
|
||||
|
||||
@@ -14,6 +14,7 @@ in
|
||||
users = lib.mkOption {
|
||||
type = lib.types.either lib.types.str (lib.types.listOf lib.types.str);
|
||||
default = config.my.toggleUsers.shell;
|
||||
merge = inputs.self.lib.mergeUsersOption lib;
|
||||
description = "Users to install shell tools for";
|
||||
};
|
||||
};
|
||||
|
||||
@@ -237,6 +237,13 @@ in
|
||||
}) (inputs.self.lib.normalizeUsers users)
|
||||
);
|
||||
getFirstUser = users: if builtins.isString users then users else (builtins.head users);
|
||||
mergeUsersOption =
|
||||
lib: _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