| 11 Jul 2023 |
raitobezarius | In reply to @nbp:mozilla.org At the moment my head is not public. :P :) | 13:30:58 |
profpatsch | piegames: right now you can’t even get the dependency graph out of the module system afaik | 13:31:30 |
profpatsch | or if it’s possible I haven’t seen it done | 13:31:37 |
@piegames:matrix.org | Because instead of forcing the entire set of options to determine dependency cycles, you'd only have to do so on a more coarse per-module structure first, which is a lot less work. Then all the uninvolved modules could just be ignored | 13:31:40 |
profpatsch | there’s no real way of telling what exactly is needed in practice without extracting that | 13:31:56 |
nbp | Profpatsch: Outputs already exists, this is the config, inputs do not, and I am really sad, because the only alternative I had was a crazy maintainer script which gives you a graphviz file after adding throw expression to every option. | 13:32:33 |
@piegames:matrix.org | In reply to @profpatsch:augsburg.one piegames: right now you can’t even get the dependency graph out of the module system afaik I think it should be possible in theory to write a module system evaluator which extracts that data, but not sure to what purpose. | 13:32:57 |
nbp | Profpatsch: You can get a dependency graph, with this old maintainer script. | 13:33:10 |
nbp | Maybe it is still part of Nixpkgs, who know, I have not look in years. | 13:33:26 |
@piegames:matrix.org | Instead I suggest tucking on some dependency system onto the module system, and the evaluator now additionally checks that each module only references options which are declared as one of its dependencies. (That's the main part I did back then). | 13:33:39 |
profpatsch | piegames: To confirm or reject the statement “you need to have some cycles to be powerful enough”, obviously | 13:33:41 |
@piegames:matrix.org | In reply to @profpatsch:augsburg.one piegames: To confirm or reject the statement “you need to have some cycles to be powerful enough”, obviously I mean, you could always design something that works without, which I tried, and it was no fun. I don't remember the exact issues I was running into though | 13:34:51 |
nbp | Profpatsch: https://github.com/NixOS/nixpkgs/blob/master/nixos/maintainers/option-usages.nix You are lucky, it still exists! | 13:39:06 |
@piegames:matrix.org | In reply to @profpatsch:augsburg.one piegames: To confirm or reject the statement “you need to have some cycles to be powerful enough”, obviously I think you probably won't need it for most modules, but you might need it for some of the more "core" bits. Which is basically my point: with a coarse dependency graph which tracks that information, one would not pay the performance penalty of recursion unless where required. | 13:41:01 |
infinisil | @room: The next meeting will take place in 30 minutes - meeting link - live stream - meeting notes | 13:57:35 |
profpatsch | piegames: in that case maybe have a package abstraction that can merge multiple files, but not generically | 14:19:06 |
profpatsch | I mean, ML has basically solved this problems with functors | 14:20:29 |
profpatsch | We could just follow suit | 14:20:34 |
infinisil | tomberek: John Ericson: Joining? | 14:33:09 |
John Ericson | sorry in a work meeting will be late :/ | 14:33:25 |
@piegames:matrix.org | "TODO: refactor once something like Profpatsch's types-simple will land" what's types-simple, and when will it land? | 15:52:55 |
@piegames:matrix.org | Ah, found it: https://github.com/NixOS/nixpkgs/compare/master...Profpatsch:nixpkgs:types-simple-WIP | 15:54:21 |
profpatsch | piegames: notime, Eelco said he doesn’t want it | 16:08:40 |
@piegames:matrix.org | Somebody else would have to veto in order to stop me (: | 16:10:13 |
@piegames:matrix.org | I might be motivated to pick this up, unless somebody shows me another way to solve my problems described in https://discourse.nixos.org/t/the-module-system-is-dead-how-to-do-input-validation/30297/4 | 16:11:20 |
profpatsch | piegames: An alternative with a slightly different design is https://code.tvl.fyi/tree/nix/yants/default.nix | 16:11:44 |
@piegames:matrix.org | Yeah I've seen YANTS and didn't like it as much | 16:12:07 |
profpatsch | The main difference is that types-simple is out-of-band, while yants is in-band | 16:12:11 |
@piegames:matrix.org | wdym | 16:12:30 |
profpatsch | which gives yants the (partial) ability to type-check functions | 16:12:37 |