Hi all,

thank you for your replies!
The thing is, I seem not to be able to merge at the level I need, at the
hostname level that is.
I mean, I need to have a file with the combined sets to be used by NixOps.

There is an mapAttrsRecursive function in attrsets.nix that sounds like it
does what I need.

Currently I'm more inclined to go the deployment.keys way as pointed out by
Tomasz

I'll keep you posted here..


Kind regards, your support and engagements are fantastic!

Erik

On Thu, Jun 9, 2016 at 12:23 PM Tomasz Czyż <tomasz.c...@gmail.com> wrote:

> Probably some function from
> https://github.com/NixOS/nixpkgs/blob/master/lib/attrsets.nix could be
> useful to merge them.
>
> 2016-06-09 11:19 GMT+01:00 zimbatm <zimb...@zimbatm.com>:
>
>> @dario: that doesn’t work recursively. { a = { x = 3; } } // { a = { y =
>> 4; } produces { a = { y = 4 }; }
>> ​
>>
>> On Thu, 9 Jun 2016 at 10:44 Dario Bertini <berda...@gmail.com> wrote:
>>
>>> {a=1;}// {b=2;}
>>> Yields
>>> {a=1; b=2;}
>>>
>>> Is this enough to help you?
>>>
>>> On 9 June 2016 10:31:07 BST, 4levels <4lev...@gmail.com> wrote:
>>> >Hi,
>>> >
>>> >thank you for your swift reply!
>>> >I'd like to avoid to literally mention all sensitive config params in
>>> >the
>>> >network.nix config.
>>> >
>>> >What would be the "normal" procedure to recursively merge 2 attribute
>>> >sets?
>>> >
>>> >
>>> >So if I have in one file
>>> >servers.nix: {
>>> >  vm01 = {
>>> >    services.symfony.platforms = {
>>> >      database = {
>>> >        username = "www";
>>> >      };
>>> >    };
>>> >  };
>>> >}
>>> >
>>> >and in the other
>>> >keys.nix: {
>>> >  vm01 = {
>>> >    services.symfony.platforms = {
>>> >      database = {
>>> >        password = "12345678";
>>> >      };
>>> >    };
>>> >  };
>>> >}
>>> >
>>> >So they become one when building:
>>> >{
>>> >  vm01 = {
>>> >    services.symfony.platforms = {
>>> >      database = {
>>> >        username = "www";
>>> >        password = "12345678";
>>> >      };
>>> >    };
>>> >  };
>>> >}
>>> >
>>> >Kind regards,
>>> >
>>> >Erik
>>> >
>>> >On Thu, Jun 9, 2016 at 11:23 AM zimbatm <zimb...@zimbatm.com> wrote:
>>> >
>>> >> Hi,
>>> >>
>>> >> I don’t know where you are getting this error. All I can do is
>>> >suggest a
>>> >> workaround:
>>> >>
>>> >> In keys.nix:
>>> >>
>>> >> {
>>> >>   database_password = "12345678";
>>> >> }
>>> >>
>>> >> In network.nix:
>>> >>
>>> >> let
>>> >>   secrets = import ./keys.nix {};in;
>>> >> {
>>> >>   vm01 = {
>>> >>     { config, pkgs, ... }:
>>> >>     {
>>> >>       services.symfony.platforms.database.password =
>>> >secrets.database_password;
>>> >>
>>> >>       ..
>>> >>     }
>>> >>   }
>>> >> }
>>> >>
>>> >> ​
>>> >>
>>> >> On Thu, 9 Jun 2016 at 07:54 4levels <4lev...@gmail.com> wrote:
>>> >>
>>> >>> Hi Nix Devs,
>>> >>>
>>> >>> I'm having some difficulties separating sensitive information from a
>>> >nix
>>> >>> expression used by NixOps.
>>> >>>
>>> >>> I keep the server config in a separate file, servers.nix:
>>> >>> {
>>> >>>   vm01 =
>>> >>>     { config, pkgs, nodes, ... }:
>>> >>>     {
>>> >>>       deployment = {
>>> >>>         targetHost = "192.168.121.50";
>>> >>>       };
>>> >>>       ...
>>> >>>     }
>>> >>> }
>>> >>>
>>> >>> Currently I have all relevant software config for each server in a
>>> >nix
>>> >>> expression platforms.nix as follows (where vm01 is the hostname):
>>> >>> {
>>> >>>   vm01 =
>>> >>>     { config, pkgs, ... }:
>>> >>>     {
>>> >>>       services.symfony.platforms = {
>>> >>>         database = {
>>> >>>           username = "www";
>>> >>>           /* password = "1234567" -> moved to keys.nix */
>>> >>>         };
>>> >>>       ...
>>> >>>     }
>>> >>> }
>>> >>>
>>> >>> I want to remove the sensitive info from this file and put it in a
>>> >>> separate nix expression, eg. keys.nix, maintaining the same
>>> >structure so
>>> >>> the files can be merged.
>>> >>>
>>> >>> In keys.nix I currently have
>>> >>> {
>>> >>>   vm01 = {
>>> >>>     { config, pkgs, ... }:
>>> >>>     {
>>> >>>       services.symfony.platforms.database.password = "12345678";
>>> >>>       ..
>>> >>>     }
>>> >>>   }
>>> >>> }
>>> >>>
>>> >>> I've modified my nixops deploy to have keys.nix loaded after the
>>> >>> servers.nix and platforms.nix files, but I keep getting errors like
>>> >"the
>>> >>> attribute password does not exist"
>>> >>>
>>> >>> I must be overlooking something obvious as all the other files I
>>> >define
>>> >>> in my deploy are being merged correctly.
>>> >>>
>>> >>> Can anyone advise me on how to achieve this?
>>> >>>
>>> >>> The underlying reason is that I'm using git-crypt to encrypt the
>>> >>> platforms.nix file, but this makes it impossible to work with
>>> >branches (or
>>> >>> git logs) etc. as the whole file is encrypted and git cannot merge
>>> >binary
>>> >>> files (it simply replaces them).
>>> >>>
>>> >>> Kind regards!
>>> >>>
>>> >>> Erik aka 4levels
>>> >>>
>>> >> _______________________________________________
>>> >>> nix-dev mailing list
>>> >>> nix-dev@lists.science.uu.nl
>>> >>> http://lists.science.uu.nl/mailman/listinfo/nix-dev
>>> >>>
>>> >>
>>> >
>>> >
>>> >------------------------------------------------------------------------
>>> >
>>> >_______________________________________________
>>> >nix-dev mailing list
>>> >nix-dev@lists.science.uu.nl
>>> >http://lists.science.uu.nl/mailman/listinfo/nix-dev
>>>
>>> --
>>> Sent from mobile. Please excuse my brevity.
>>> _______________________________________________
>>> nix-dev mailing list
>>> nix-dev@lists.science.uu.nl
>>> http://lists.science.uu.nl/mailman/listinfo/nix-dev
>>>
>>
>> _______________________________________________
>> nix-dev mailing list
>> nix-dev@lists.science.uu.nl
>> http://lists.science.uu.nl/mailman/listinfo/nix-dev
>>
>>
>
>
> --
> Tomasz Czyż
> _______________________________________________
> nix-dev mailing list
> nix-dev@lists.science.uu.nl
> http://lists.science.uu.nl/mailman/listinfo/nix-dev
>
_______________________________________________
nix-dev mailing list
nix-dev@lists.science.uu.nl
http://lists.science.uu.nl/mailman/listinfo/nix-dev

Reply via email to