Skip to content

Fix user attribute merging to preserve all fields from users.nix - #9

Merged
Jyumpp merged 7 commits into
user-module-redesignfrom
copilot/sub-pr-7-again
Dec 17, 2025
Merged

Fix user attribute merging to preserve all fields from users.nix#9
Jyumpp merged 7 commits into
user-module-redesignfrom
copilot/sub-pr-7-again

Conversation

Copilot AI commented Dec 17, 2025

Copy link
Copy Markdown
Contributor

The user merging logic in hosts/user-config.nix was discarding fields from the base user object (like hashedPassword, opensshKeys, enable, editor, isNormalUser) when merging with external module options.

Changed:

  • Start with base user object instead of creating new attribute set with only select fields
  • Overlay mkDefault wrappers for overridable fields (description, shell, extraGroups)
  • Apply external module options last to maintain precedence

Before:

ugaif.users = lib.mapAttrs (name: user:
  {
    description = lib.mkDefault (user.description or null);
    shell = lib.mkDefault (user.shell or null);
    extraGroups = lib.mkDefault (user.extraGroups or [ ]);
    external = user.external or null;
  }
  // (externalUserOptions.${name} or { })
) accounts;

After:

ugaif.users = lib.mapAttrs (name: user:
  user
  // {
    description = lib.mkDefault (user.description or null);
    shell = lib.mkDefault (user.shell or null);
    extraGroups = lib.mkDefault (user.extraGroups or [ ]);
  }
  // (externalUserOptions.${name} or { })
) accounts;

All fields from users.nix now propagate to the final user configuration regardless of whether the external module defines them.


💬 We'd love your input! Share your thoughts on Copilot coding agent in our 2 minute survey.

Co-authored-by: Jyumpp <11142390+Jyumpp@users.noreply.github.com>
Copilot AI changed the title [WIP] WIP address feedback on overhaul of external user modules Fix user attribute merging to preserve all fields from users.nix Dec 17, 2025
Copilot AI requested a review from Jyumpp December 17, 2025 21:24
Jyumpp and others added 4 commits December 17, 2025 16:24
@Jyumpp
Jyumpp marked this pull request as ready for review December 17, 2025 21:30
@Jyumpp
Jyumpp merged commit 89865a0 into user-module-redesign Dec 17, 2025
7 checks passed
@Jyumpp
Jyumpp deleted the copilot/sub-pr-7-again branch December 17, 2025 21:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants