20 Feb 2024 |
infinisil | djacu: Setting a default with options.foo = lib.mkOption { default = <value>; ... } is equivalent to config.foo = lib.mkOptionDefault <value>; | 23:23:21 |
infinisil | Furthermore, default = <value> (and there's defaultText too) can get rendered in the manual, config.foo = ... can't | 23:24:14 |
@djacu:matrix.org | Right right I forgot about the docs side. I was more focused on merge behavior. So either way they get default priority.
Thanks for the explanation! | 23:48:23 |
21 Feb 2024 |
infinisil | djacu (Well you need mkOptionDefault to get the same priority for config, which is generally not done) | 11:25:22 |
25 Feb 2024 |
| @olafkfreund:matrix.org joined the room. | 22:43:41 |
1 Mar 2024 |
| accelbread joined the room. | 04:27:37 |
7 Mar 2024 |
@djacu:matrix.org | How does the module system handle definitions with no priority?
I've got two modules
{lib, ...}: {
options = {
name = lib.mkOption {
type = lib.types.str;
};
};
config = {
name = lib.mkDefault "foo";
};
}
{...}: {
config = {
name = "bar";
};
}
If I evaluate them together, I get "bar" for the value for name . How does it handle this situation? Is is like using mkForce? Does it bypass the priority system completely?
I imagine the answer is somewhere in this function but I am having trouble working through the logic. https://github.com/hsjobeki/nixpkgs/blob/985fc9b995c07037f6a6273bafa3526f06bb2343/lib/modules.nix#L818
On a side note, this appears to be the place where option declarations with a default attribute value use mkOptionDefault .
| 04:41:32 |
@djacu:matrix.org | After digging some more it seems like it actually might happen in mergeDefinitions which calls filterOverrides' . My reading of it leads me to believe that definitions with no priority get set a priority of defaultOverridePriority which is fairly low (100). | 05:15:44 |
9 Mar 2024 |
| Qyriad joined the room. | 00:39:08 |
14 Mar 2024 |
| NixOS Moderation Botchanged room power levels. | 18:44:27 |
15 Mar 2024 |
| spacesbot - keeps a log of public NixOS channels joined the room. | 04:06:23 |
16 Mar 2024 |
| Jason Odoom joined the room. | 02:12:10 |
| mj joined the room. | 14:00:14 |
17 Mar 2024 |
| @qyriad:matrix.org left the room. | 20:43:44 |
18 Mar 2024 |
| @infinidoge:matrix.org joined the room. | 18:47:27 |
19 Mar 2024 |
| NixOS Moderation Botchanged room power levels. | 00:29:53 |
21 Mar 2024 |
| NixOS Moderation Botchanged room power levels. | 18:02:50 |
22 Mar 2024 |
| chadac joined the room. | 02:03:16 |
| terminalfilth joined the room. | 05:13:35 |
| terminalfilth set a profile picture. | 05:24:39 |
| terminalfilth changed their profile picture. | 05:24:49 |
23 Mar 2024 |
| @federicodschonborn:matrix.org joined the room. | 00:37:24 |
| SomeoneSerge (utc+3) changed their display name from SomeoneSerge (hash-versioned python modules when) to SomeoneSerge (migrating synapse). | 02:11:12 |
27 Mar 2024 |
hexa | is there a way to set an optional option default? | 23:21:25 |
hexa | default = if foo then "bar" else omit;
| 23:21:46 |
hexa | * default = if foo then "bar" else omit; # if not foo, consider the value unset
| 23:22:21 |
hexa | uhhhhhh | 23:25:58 |
hexa | can I like | 23:26:00 |
hexa | bla = mkOption {
} // lib.optionalAttrs (cond) {
default = "bar";
};
| 23:26:37 |
hexa | probably can | 23:26:51 |