From 0afad8f08014c992c832466c1d46a0aa96ca2563 Mon Sep 17 00:00:00 2001 From: Austin Horstman Date: Tue, 1 Apr 2025 09:52:10 -0500 Subject: [PATCH] =?UTF-8?q?Revert=20"nixos-module:=20Fix=20potential=20rec?= =?UTF-8?q?ursion=20between=20users.users=20and=20home-ma=E2=80=A6"=20(#67?= =?UTF-8?q?45)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit 216690777e47aa0fb1475e4dbe2510554ce0bc4b. Reverts #6622 Seems to be causing issues for other users, though. Will revert and we can try again with some tests in place. --- docs/default.nix | 18 ++++++------------ nixos/common.nix | 10 +++------- 2 files changed, 9 insertions(+), 19 deletions(-) diff --git a/docs/default.nix b/docs/default.nix index 63b60a16..dd79c459 100644 --- a/docs/default.nix +++ b/docs/default.nix @@ -54,17 +54,17 @@ let hmPath = toString ./..; - buildOptionsDocs = - args@{ modules, includeModuleSystemOptions ? true, isNixos ? false, ... }: + buildOptionsDocs = args@{ modules, includeModuleSystemOptions ? true, ... }: let options = (lib.evalModules { inherit modules; class = "homeManager"; }).options; in pkgs.buildPackages.nixosOptionsDoc ({ - options = builtins.removeAttrs options ([ ] - ++ (lib.optional (!includeModuleSystemOptions) "_module") - ++ (lib.optional (isNixos) "users")); + options = if includeModuleSystemOptions then + options + else + builtins.removeAttrs options [ "_module" ]; transformOptions = opt: opt // { # Clean up declaration sites to not refer to the Home Manager @@ -80,11 +80,7 @@ let else decl) opt.declarations; }; - } // builtins.removeAttrs args [ - "modules" - "includeModuleSystemOptions" - "isNixos" - ]); + } // builtins.removeAttrs args [ "modules" "includeModuleSystemOptions" ]); hmOptionsDocs = buildOptionsDocs { modules = import ../modules/modules.nix { @@ -97,7 +93,6 @@ let nixosOptionsDocs = buildOptionsDocs { modules = [ ../nixos scrubbedPkgsModule dontCheckDefinitions ]; includeModuleSystemOptions = false; - isNixos = true; variablelistId = "nixos-options"; optionIdPrefix = "nixos-opt-"; }; @@ -105,7 +100,6 @@ let nixDarwinOptionsDocs = buildOptionsDocs { modules = [ ../nix-darwin scrubbedPkgsModule dontCheckDefinitions ]; includeModuleSystemOptions = false; - isNixos = true; variablelistId = "nix-darwin-options"; optionIdPrefix = "nix-darwin-opt-"; }; diff --git a/nixos/common.nix b/nixos/common.nix index 7da7e946..05931ad6 100644 --- a/nixos/common.nix +++ b/nixos/common.nix @@ -50,13 +50,6 @@ let }; in { - options.users.users = mkOption { - type = types.attrsOf (types.submodule ({ name, config, ... }: { - config.packages = mkIf ((config.enable or true) && cfg.useUserPackages - && lib.hasAttr name cfg.users) [ cfg.users.${name}.home.path ]; - })); - }; - options.home-manager = { useUserPackages = mkEnableOption '' installation of user packages through the @@ -111,7 +104,10 @@ in { }; config = (lib.mkMerge [ + # Fix potential recursion when configuring home-manager users based on values in users.users #594 (mkIf (cfg.useUserPackages && cfg.users != { }) { + users.users = (lib.mapAttrs + (_username: usercfg: { packages = [ usercfg.home.path ]; }) cfg.users); environment.pathsToLink = [ "/etc/profile.d" ]; }) (mkIf (cfg.users != { }) {