|
26 | 26 | # Home Manager |
27 | 27 | homeManagerNixpkgs ? nixpkgs, |
28 | 28 | homeManagerUser ? null, # not default value! |
| 29 | + useHomeManagerModule ? true, |
29 | 30 | isHomeManager ? null, # TODO: DEPRECATED since 2025/05/05 |
30 | 31 | # Dev |
31 | 32 | mkConfigurationsSystemExtraModule ? { |
|
66 | 67 | config, |
67 | 68 | moduleSystem, |
68 | 69 | useHomeManagerModule, |
| 70 | + homeManagerUser, |
69 | 71 | currentHostName ? null, |
70 | 72 | }: let |
71 | 73 | extendedDelib = delib.recursivelyExtend ( |
|
81 | 83 | config |
82 | 84 | myconfigName |
83 | 85 | currentHostName |
| 86 | + useHomeManagerModule |
| 87 | + homeManagerUser |
84 | 88 | ; |
85 | 89 | }; |
86 | 90 |
|
|
111 | 115 | mkSystem = { |
112 | 116 | moduleSystem, |
113 | 117 | useHomeManagerModule, |
| 118 | + homeManagerUser, |
114 | 119 | homeManagerSystem, |
115 | 120 | currentHostName, |
| 121 | + isInternal ? false, |
116 | 122 | internalExtraModules ? (moduleSystem_: []), |
117 | | - }: |
118 | | - if !topArgs ? homeManagerUser && useHomeManagerModule |
119 | | - then abort "Please specify 'delib.configurations :: useHomeManagerModule'. Valid values are true and false." |
| 123 | + } @ args: |
| 124 | + if homeManagerUser == null && (useHomeManagerModule || moduleSystem == "home") |
| 125 | + then abort "Please specify 'delib.configurations :: homeManagerUser' or 'delib.host :: homeManagerUser'." |
120 | 126 | else let |
| 127 | + useHomeManagerModule = |
| 128 | + if isInternal |
| 129 | + then topArgs.useHomeManagerModule or true |
| 130 | + else args.useHomeManagerModule; |
| 131 | + homeManagerUser = |
| 132 | + if isInternal |
| 133 | + then topArgs.homeManagerUser or null |
| 134 | + else args.homeManagerUser; |
| 135 | + |
121 | 136 | extensionsModules = builtins.concatMap (extension: extension.modules) extensions; |
122 | 137 | nixosSystem = nixpkgs.lib.nixosSystem { |
123 | 138 | specialArgs = |
|
126 | 141 | ${denixLibName} = mkDenixLib { |
127 | 142 | config = nixosSystem.config; |
128 | 143 | moduleSystem = "nixos"; |
129 | | - inherit currentHostName useHomeManagerModule; |
| 144 | + inherit currentHostName useHomeManagerModule homeManagerUser; |
130 | 145 | }; |
131 | | - inherit useHomeManagerModule; # otherwise it's impossible to make config.home-manager optional when not useHomeManagerModule. |
| 146 | + inherit useHomeManagerModule homeManagerUser; # otherwise it's impossible to make config.home-manager optional when not useHomeManagerModule. |
132 | 147 | }; |
133 | 148 | modules = |
134 | 149 | (internalExtraModules "nixos") |
|
144 | 159 | ${denixLibName} = mkDenixLib { |
145 | 160 | config = homeSystem.config; |
146 | 161 | moduleSystem = "home"; |
147 | | - inherit currentHostName useHomeManagerModule; |
| 162 | + inherit currentHostName useHomeManagerModule homeManagerUser; |
148 | 163 | }; |
149 | | - inherit useHomeManagerModule; # otherwise it's impossible to make config.home-manager optional when not useHomeManagerModule. |
| 164 | + inherit useHomeManagerModule homeManagerUser; # otherwise it's impossible to make config.home-manager optional when not useHomeManagerModule. |
150 | 165 | }; |
151 | 166 | pkgs = homeManagerNixpkgs.legacyPackages.${homeManagerSystem}; |
152 | 167 | modules = (internalExtraModules "home") ++ extraModules ++ files ++ extensionsModules; |
|
158 | 173 | ${denixLibName} = mkDenixLib { |
159 | 174 | config = darwinSystem.config; |
160 | 175 | moduleSystem = "darwin"; |
161 | | - inherit currentHostName useHomeManagerModule; |
| 176 | + inherit currentHostName useHomeManagerModule homeManagerUser; |
162 | 177 | }; |
163 | | - inherit useHomeManagerModule; # otherwise it's impossible to make config.home-manager optional when not useHomeManagerModule. |
| 178 | + inherit useHomeManagerModule homeManagerUser; # otherwise it's impossible to make config.home-manager optional when not useHomeManagerModule. |
164 | 179 | }; |
165 | 180 | # FIXME: is this really necessary? |
166 | 181 | # pkgs = ...; |
|
189 | 204 | // (mkSystem { |
190 | 205 | # TODO: maybe add moduleSystem = "empty", which "apply" would skip entirely*? |
191 | 206 | moduleSystem = "nixos"; |
192 | | - useHomeManagerModule = true; # FIXME |
| 207 | + useHomeManagerModule = topArgs.useHomeManagerModule; # FIXME |
| 208 | + homeManagerUser = "user"; |
193 | 209 | homeManagerSystem = "x86_64-linux"; # just a plug; FIXME |
194 | 210 | currentHostName = null; |
| 211 | + isInternal = true; |
195 | 212 | internalExtraModules = _: [mkConfigurationsSystemExtraModule]; |
196 | 213 | }).config.${ |
197 | 214 | myconfigName |
|
209 | 226 |
|
210 | 227 | system = mkSystem { |
211 | 228 | inherit moduleSystem; |
212 | | - inherit (host) useHomeManagerModule homeManagerSystem; |
| 229 | + inherit (host) useHomeManagerModule homeManagerUser homeManagerSystem; |
213 | 230 | currentHostName = host.name; |
214 | 231 | internalExtraModules = moduleSystem: let |
215 | 232 | apply = mkApply moduleSystem host.useHomeManagerModule; |
|
240 | 257 | configurations = let |
241 | 258 | mkHostAttrs = riceName: rice: hostName: host: |
242 | 259 | lib.optionalAttrs (!rice.inheritanceOnly or false) { |
243 | | - "${lib.optionalString (moduleSystem == "home") "${homeManagerUser}@"}${hostName}${ |
| 260 | + "${lib.optionalString (moduleSystem == "home") "${host.homeManagerUser}@"}${hostName}${ |
244 | 261 | lib.optionalString (riceName != null) "-${riceName}" |
245 | 262 | }" = mkHost { |
246 | 263 | inherit host; |
|
0 commit comments