| 4 Jan 2024 |
| @admin:nixos.org invited Robert Hensing (roberth). | 23:46:26 |
| @admin:nixos.org invited SomeoneSerge (UTC+U[-12,12]). | 23:46:27 |
| @admin:nixos.orgchanged room power levels. | 23:46:30 |
| @admin:nixos.orgchanged room power levels. | 23:46:34 |
| Room Avatar Renderer. | 23:47:11 |
| @admin:nixos.orgchanged room power levels. | 23:47:25 |
| 5 Jan 2024 |
| guangtao joined the room. | 00:42:16 |
| SomeoneSerge (UTC+U[-12,12]) joined the room. | 02:26:42 |
| @adam:robins.wtf joined the room. | 05:05:42 |
| markuskowa joined the room. | 11:23:30 |
| Robert Hensing (roberth) joined the room. | 11:28:36 |
| [0x4A6F] joined the room. | 12:46:48 |
| @admin:nixos.org left the room. | 14:19:19 |
| 6 Jan 2024 |
| infinisil joined the room. | 20:39:04 |
| 8 Jan 2024 |
| SomeoneSerge (UTC+U[-12,12]) changed their display name from SomeoneSerge (UTC+2) to SomeoneSerge (hash-versioned python modules when). | 04:51:34 |
| 22 Jan 2024 |
| djacu joined the room. | 21:58:53 |
| 25 Jan 2024 |
| fgaz joined the room. | 07:01:32 |
| 29 Jan 2024 |
djacu | Hey all
I am creating some new modules and want to generate documentation for them but I get errors like this. error: The option content' is used but not defined.`
This is because I create the option content but don't assign a default value to it. I did this because I want the user to define it every time. Any recommendations?
| 02:00:59 |
djacu | * Hey all
I am creating some new modules and want to generate documentation for them but I get errors like this. error: The option 'content' is used but not defined.\
This is because I create the option content but don't assign a default value to it. I did this because I want the user to define it every time. Any recommendations?
| 02:01:09 |
djacu | * Hey all
I am creating some new modules and want to generate documentation for them but I get errors like this. error: The option 'content' is used but not defined.
This is because I create the option content but don't assign a default value to it. I did this because I want the user to define it every time. Any recommendations?
| 02:01:14 |
| Sam Lehman joined the room. | 11:08:22 |
infinisil | djacu That means you're evaluating the option somehow, but generating docs shouldn't require that | 12:11:50 |
djacu | In reply to @infinisil:matrix.org djacu That means you're evaluating the option somehow, but generating docs shouldn't require that Not sure what I changed but it's working now... Maybe I was passing the whole output of evalModules to optionAttrSetToDocList instead of just the options value. | 20:04:11 |
| 31 Jan 2024 |
djacu | Is it possible to override the parameters of an option after creation? If that isn't clear let me explain my situation. I have a module that defines several options that are generic definitions and is imported by several other modules. E.g. I have a format.nix that defines content and order that are both visible to the user. Now in some cases, I want to hide order. So my thought was that I could override the visibility in the modules that import format.nix. But I can't seem to figure out how to do that. Possible? | 05:38:47 |
djacu | * Is it possible to override the parameters of an option after creation? If that isn't clear let me explain my situation. I have a module that defines several options that are generic definitions and is imported by several other modules. E.g. I have a format.nix that defines content and order that are both visible to the user. In certain cases where I import format.nix into another module, I want to hide order. So my thought was that I could override the visibility in those modules. But I can't seem to figure out how to do that. Possible? | 05:42:19 |
infinisil | djacu: Yeah that's not possible, probably best to have a function with that parameter that returns a new option, like lib.mkPackageOption | 16:03:53 |
djacu | In reply to @infinisil:matrix.org djacu: Yeah that's not possible, probably best to have a function with that parameter that returns a new option, like lib.mkPackageOption Yeah I figured. Thank infinisil ! | 17:37:10 |
| 1 Feb 2024 |
djacu | Hi all. I have a question about merging user defined options with default options. I am trying to design a module with the following attributes.
- It has a
user and default options that are attrs of something. user defaults to {} and default defaults to some non-empty set.
- There is a
useDefault option that will control whether or not the default values get used.
- There is an
out option that merges the user and default options.
- (where i have trouble) The user can enable the defaults but also override them.
I have a working example below. default is set to {a = 1; b = 2}. With useDefault = true;, I can set some other key-value like c=3 and ever override it with mkOverride or mkForce. However, I cannot override anything that was set by default. You can see in userOptions all the things I tried to get the config to evaluate properly but nothing worked.
Have I missed something or is this not possible? Thanks
let
pkgs = import <nixpkgs> {};
inherit (pkgs) lib;
inherit (lib) types;
testDefaults = {
lib,
config,
...
}: {
options = {
user = lib.mkOption {
description = "Test default things.";
type = types.attrsOf types.int;
default = {};
};
useDefault = lib.mkEnableOption "Enables default.";
default = lib.mkOption {
description = "The defaults";
type = types.attrsOf types.int;
default = {
a = 1;
b = 2;
};
};
out = lib.mkOption {
description = "The output.";
type = types.attrsOf types.int;
default = {};
};
};
config = lib.mkMerge [
(
lib.mkIf config.useDefault {
out = config.default;
}
)
{
out = config.user;
}
];
};
userOptions = [
({...}: {useDefault = true;})
# NONE OF THESE WORK; conflicting definitions
# ({...}: {user = {b = 3;};})
# ({...}: {user = {b = lib.mkOverride 1 3;};})
# ({...}: {user = {b = lib.mkDefault 3;};})
# ({...}: {user = {b = lib.mkForce 3;};})
# ({...}: {user = lib.mkForce {b = 3;};})
# I can set an option not in default.
({...}: {user = {c = 3;};})
# And I can override my own option using mkOVerride (<100).
({...}: {user = {c = lib.mkOverride 99 4;};})
# Or just mkForce which is mkOverride 50.
# ({...}: {user = {c = lib.mkForce 4;};})
];
in (
(lib.evalModules {
modules =
[
testDefaults
]
++ userOptions;
})
.config
)
| 19:45:53 |
guangtao | is it possible to solve your problem through the apply option? I mean you can set the defualt to be {}, use apply instead
apply = cfg: lib.recursiveUpdate {<default>} cfg;
| 20:12:04 |
guangtao | * is it possible to solve your problem through the apply option? I mean you can set the defualt to be {}, use apply instead
| 20:12:13 |