!wfudwzqQUiJYJnqfSY:nixos.org

NixOS Module System

164 Members
32 Servers

You have reached the beginning of time (for this room).


SenderMessageTime
6 Mar 2025
@mattsturg:matrix.orgMatt Sturgeon Sounds like your definition has a higher override priority. For example a "normal" definition will not be merged with a "default" definition, because merging is only done for definitions of whatever happens to be the highest priority 14:45:41
@mr-qubo:matrix.orgmr-quboYes, I want to merge with the default value of that option.14:46:34
@mr-qubo:matrix.orgmr-quboThis module needs the flags, which are passed in default value.14:46:56
@nbp:mozilla.orgnbp then you need mkDefault (mkAfter suffix) 14:47:00
@mattsturg:matrix.orgMatt Sturgeon Assuming the option's type actually supports merging, you need to make your definition have the same override priority. This is probably either mkDefault or more likely mkOptionDefault 14:47:30
@nbp:mozilla.orgnbp * then you need mkOptionDefault (mkAfter suffix) — editted: wrong function name 14:48:21
@mattsturg:matrix.orgMatt Sturgeon

If the option doesn't support merging, a less idiomatic solution would be to read the option's default value and use that in your overriding definition:

foo = options.foo.default + "suffix";

This is ugly and fragile, but could work as a hacky solution if necessary.

14:50:45
@mr-qubo:matrix.orgmr-qubo mkOptionDefault raises an error. The type is types.str. I'll guess I'll go with options..default then. 15:24:07
@mattsturg:matrix.orgMatt Sturgeon types.str has merge = mergeEqualOption, which essentially means it doesn't support merging multiple definitions 15:58:40
7 Mar 2025
@qyriad:katesiria.orgQyriad changed their display name from Qyriad to qyriad.16:43:26
8 Mar 2025
@qyriad:katesiria.orgQyriad changed their display name from qyriad to Qyriad.21:41:03
9 Mar 2025
@jappie:jappie.devjappie joined the room.09:23:03
12 Mar 2025
@lehmanator:tchncs.deSam LehmanIs there a "best-practices" way of iterating over many option names/values in a config? Particularly such that I can test the existence of many options without losing the benefits of lazy eval.12:09:50
@lehmanator:tchncs.deSam Lehman e.g. I'm trying to persist directories using impermanence by enumerating all services*.dataDir options, then appending its value to environment.persistence."/persist".directories with lib.optional config.services.<name>.enable config.services.<name>.dataDir 12:10:09
@nbp:mozilla.orgnbp Unfortunately no. So far people have been using map within modules to iterate over the individual definitions, and some have used mkMerge / mkIf to make their definitions conditional.
I have no found any way to generalize the processing of multiple option definitions into 1 or multiple at the moment.
If you have any idea of what might be a good API, feel free to suggest, and people in this channel might be able to provide an implementation (if possible)
14:18:09
@vidariondr:matrix.orgvidariondr joined the room.21:07:51

Show newer messages


Back to Room ListRoom Version: 10