[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