1
0
mirror of https://github.com/nix-community/home-manager synced 2024-06-09 08:13:39 +02:00

specialization: fix name conflict inside NixOS module (#3718)

If used inside the NixOS/nix-darwin module, we get conflicting definitions
of `name` inside the specialization: one is the user name coming from the
NixOS module definition and the other is `configuration`, the name of this
option. Thus we need to explicitly wire the former into the module arguments.

See discussion at https://github.com/nix-community/home-manager/issues/3716
This commit is contained in:
Naïm Favier 2023-02-28 22:22:22 +01:00 committed by GitHub
parent 9438e56a7b
commit ddcbf676ba
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1,4 +1,4 @@
{ config, extendModules, lib, ... }:
{ config, name, extendModules, lib, ... }:
with lib;
@ -8,8 +8,19 @@ with lib;
options = {
configuration = mkOption {
type = let
stopRecursion = { specialization = mkOverride 0 { }; };
extended = extendModules { modules = [ stopRecursion ]; };
extended = extendModules {
modules = [{
# Prevent infinite recursion
specialization = mkOverride 0 { };
# If used inside the NixOS/nix-darwin module, we get conflicting definitions
# of `name` inside the specialization: one is the user name coming from the
# NixOS module definition and the other is `configuration`, the name of this
# option. Thus we need to explicitly wire the former into the module arguments.
# See discussion at https://github.com/nix-community/home-manager/issues/3716
_module.args.name = mkForce name;
}];
};
in extended.type;
default = { };
visible = "shallow";