NixOS Module System | 147 Members | |
| 30 Servers |
| Sender | Message | Time |
|---|---|---|
| 7 Jul 2024 | ||
| 09:38:54 | ||
| 8 Jul 2024 | ||
zrsk: By default, no, you can extend some option types such as enum and submodules, but you cannot substitute the type by another one. However, you can disable the module (using disabledModules = [ <path-of-imported-module> ]) and re-implement the same interface as the disabled module. | 10:48:59 | |
disabledModules was introduced as a way to develop non-backward compatible changes without having the fork NixOS. | 10:49:44 | |
nbp: Yeah I know about disabledModules, it would be nice if there was a way to disable single options and then re-implement them.Anyway at the end I solved my problem (which was unrelated, my question here was due to a possible workaround I was considering). To be exact what I wanted to do was changing the default value for an option and I don't mean using mkDefault, I mean changing the value in options.foo.default without having direct access to where it was declared (I'm generating docs starting from imported modules but the default value for that option was a package that required an overlay I didn't want to apply, otherwise it gave an evaluation error) | 12:27:43 | |
We do not have a way apart from disabledModules for replacing the default value for the documentation :/ | 12:35:53 | |
In reply to @nbp:mozilla.orgThat's not the end of world | 12:41:53 | |
While I'm at it I've another question about the module system: why it isn't possible to set an option config.foo to a function of config.foo? | 12:44:57 | |
| In general it shouldn't lead to an infinite recursion | 12:45:23 | |
Or maybe yes, I'm not sure anymore...I remember thinking about this time ago. The example I was giving to myself was something like foo = f config.foo where f is the usual recursive factorial. But thinking about it now I can't see how I could express the recursion base case. | 12:48:22 | |
But still I believe that even foo = g config.foo with g: _: 42 as the constant function would lead to an infinite recursion error (perhaps I'm wrong, haven't tried) | 12:49:16 | |
* But still I believe that even foo = g config.foo with g = _: 42 as the constant function would lead to an infinite recursion error (perhaps I'm wrong, haven't tried) | 12:50:03 | |
| You are interested in making a fix-point within the module system. I never thought of it before. It is possible to make a fix-point within the apply function of an option, which how submodules are implemented, but using the option it-self …I doubt g = _: 42 would yield to an infinite recursion as config.foo would be evaluated lazify if the argument is used. | 12:59:48 | |
You are right, just tried I guess I have to check how submodules are implemented | 13:25:18 | |
| 17:25:34 | ||
| 9 Jul 2024 | ||
| 16:49:13 | ||
| 14 Jul 2024 | ||
| 18:55:59 | ||
| 15 Jul 2024 | ||
| 17:29:06 | ||
| 17:42:43 | ||
| 23 Jul 2024 | ||
| 08:21:01 | ||
| 26 Jul 2024 | ||
| 15:30:55 | ||
| 16:39:44 | ||
| 27 Jul 2024 | ||
| 11:20:49 | ||
| 28 Jul 2024 | ||
| Question: I.e. get definitions, metadata and final merged value for the freeform definitions separately from option definitions. Alternative: Motivation: Currently any sub-options defined will always show up in the resulting config, and we work-around this by having them default to This has two main downsides:
Instead, I would like to have sub-options without a default and have them not show up in the final config if they are not defined. I don't mind doing this manually, by merging the freeform value with any Follow up: Apologies for the long-form question! | 20:01:34 | |
| Maybe the correct implementation is to define any "optional" options outside the freeform submodule, and then copy them in if defined?
Perhaps submodule sub-options are only intended to be used when the value should always be in the generated value? | 20:41:12 | |
| * Maybe the correct implementation is to define any "optional" options outside the freeform submodule, and then copy them in if defined?
Perhaps submodule sub-options are only intended to be used when the value should always be in the generated value? | 20:41:39 | |
| 29 Jul 2024 | ||
| Related: https://github.com/NixOS/nixpkgs/pull/63553 | 23:08:02 | |
| And https://github.com/NixOS/nixpkgs/issues/158594 | 23:09:27 | |
| 30 Jul 2024 | ||
| Thanks, those links are insightful! I think 158598 is also related, but 158594 sounds like exactly what I want:
But it looks like the latest comment is backtracking or downscaling that idea... Playing around in the repl, I can get I guess to do this I would have to write my own Seems similar in principle to the | 00:34:08 | |
| * Thanks, those links are insightful! 158594 sounds like exactly what I want:
But it looks like the latest comment is backtracking or downscaling that idea... Playing around in the repl, I can get I guess to do this I would have to write my own Seems similar in principle to the | 00:34:48 | |
Or maybe this wouldn't work, if | 00:43:33 | |