[Nix-dev] NixOps - merge config files

Dario Bertini berdario at gmail.com
Thu Jun 9 11:43:57 CEST 2016


{a=1;}// {b=2;} 
Yields
{a=1; b=2;} 

Is this enough to help you? 

On 9 June 2016 10:31:07 BST, 4levels <4levels at 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 <zimbatm at 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 <4levels at 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 at lists.science.uu.nl
>>> http://lists.science.uu.nl/mailman/listinfo/nix-dev
>>>
>>
>
>
>------------------------------------------------------------------------
>
>_______________________________________________
>nix-dev mailing list
>nix-dev at lists.science.uu.nl
>http://lists.science.uu.nl/mailman/listinfo/nix-dev

-- 
Sent from mobile. Please excuse my brevity.


More information about the nix-dev mailing list