[Nix-dev] Pass arguments to 'required' configs

Sergey Mironov grrwlf at gmail.com
Wed Nov 18 10:13:28 CET 2015


Sorry, I just noticed that you have modified my example radically.
Looks like this is the answer to my question regarding custom modules,
thanks!

Sergey

2015-11-18 12:11 GMT+03:00 Sergey Mironov <grrwlf at gmail.com>:
> Nicolas, this solution makes sense if I understand how to include
> private modules to local configuration. (We are discussing this in a
> separate thread).
>
> Regards,
> Sergey
>
> 2015-11-17 17:55 GMT+03:00 Nicolas Pierron <nicolas.b.pierron at gmail.com>:
>> Hi Sergey,
>>
>> If you are not using the proxy_port and proxy_host values for
>> selecting the modules, I suggest you use the module system instead.
>> This means that your previous example would become something like the
>> example below. This solution is a bit more verbose, but you might be
>> able to introspect these options with nixos-option command line tool
>> and NixUI.
>>
>> // configuration.nix
>> {
>>   require = [
>>     /etc/nixos/configuration.nix
>>     ./include/global_bash_aliases.nix
>>   ];
>>
>>   custom.go.proxy.port = 4343;
>>   custom.go.proxy.host = "myproxy.local";
>>>> }
>>
>> // ./include/global_bash_aliases.nix
>>
>> { config, pkgs, lib, ... } :
>>
>> with lib;
>> {
>>   options = {
>>     custom.go.proxy.port = mkOption {
>>       default = 4242;
>>       example = 4343;
>>       type = types.uniq types.int;
>>       description = ''
>>         port number used by the goproxy shell alias command.
>>       '';
>>     };
>>
>>     custom.go.proxy.host = mkOption {
>>       example = "example.com";
>>       type = types.uniq types.str;
>>       description = ''
>>         host name used by the goproxy shell alias command.
>>       '';
>>     };
>>   };
>>
>>   config = {
>>     environment = {
>>
>>       extraInit = with config.custom.go.proxy ''
>>          alias goproxy "nc ${port} ${host}
>>       '';
>>     };
>>   };
>> }
>>
>>
>> On Tue, Nov 17, 2015 at 2:17 PM, Sergey Mironov <grrwlf at gmail.com> wrote:
>>> Hi. This is a follow-up to my previous letter about Private NixOS modules.
>>>
>>> Another thing I am missing is the ability to pass arguments to
>>> 'required' configuration modules. Below is the illustration of the
>>> idea. Could you please give me some advice on this?
>>>
>>> Regards,
>>> Sergey
>>>
>>>
>>> // configuration.nix
>>>
>>> {config, pkgs, ...}:
>>> let
>>>   proxy_port = "4343";
>>>   proxy_host = "myproxy.local";
>>> in
>>> {
>>>   require = [
>>>     /etc/nixos/hardware-configuration.nix
>>>     ..
>>>     (withArguments ./include/global_bash_aliases.nix { inherit
>>> proxy_port  proxy_host; })
>>>     ..
>>>   ];
>>>  ...
>>>
>>> }
>>>
>>>
>>> //./include/global_bash_aliases.nix
>>>
>>> { proxy_port, proxy_host} :
>>> { config, pkgs, ... } :
>>> {
>>>   environment = rec {
>>>
>>>     extraInit = ''
>>>        alias goproxy "nc ${proxy_port} ${proxy_host}
>>>     '';
>>>   };
>>>
>>> }
>>> _______________________________________________
>>> nix-dev mailing list
>>> nix-dev at lists.science.uu.nl
>>> http://lists.science.uu.nl/mailman/listinfo/nix-dev
>>
>>
>>
>> --
>> Nicolas Pierron
>> http://www.linkedin.com/in/nicolasbpierron - http://nbp.name/


More information about the nix-dev mailing list