> 2014-12-01 13:28 GMT+03:00 Sergey Mironov <grr...@gmail.com>:
>>
>> Hi. I've adopted the following compromise solution:
>> 1) Add the file include/templatecfg.nix with the following contents
>> { config, pkgs, ... } :
>>
>> {
>>   environment.etc."template_XResources".source = ../cfg/Xresources;
>>   environment.etc."template_vimrc".source = ../cfg/vimrc;
>>   environment.etc."template_ssh_config".source = ../cfg/ssh_config;
>>
>>   /* note, it should be possible to define inplace config here like
>> following:
>>     environment.etc."template_ssh_config".source = textFile "dotbla" ''
>>       [dotbla config contents]
>>     '';
>>   */
>> }
>>
>> 2) put template configs mentioned there in the ../cfg folder
>>
>> 3) For every machine, add
>>
>>   require = [
>>     ...
>>     ./include/templatecfg.nix
>>     ...];
>>
>> Now, every time I want to update my $HOME/.dotfiles I copy them from
>> /etc/template_* files. From the other side, sometimes I want to commit
>> my changed .dotfiles back into Nix repository. In this case I copy
>> them from $HOME to the $HOME/proj/mynixcfg/..../cfg/
>
> Your solution is really nice, but I want to automate it (esp the process of
> deploying my env on new machine), I can copy files now and manage them by
> git..

This is a tricky thing. I don't know what is your task exactly, but
typically, we deploy multy-user systems and we want supply users with
_default_ configs, for example, when we create their HOMEs. But after
that, users begin to manage their configs at their own. Managing
.dotfiles via git is one possible solution. Another solution - to
include cron task to copy /etc/template* to every user's HOME every
time system starts (for example). In this case you would have to
re-deploy whole system (make grub menu entry and so on) every time you
want to change your .bashrc.
_______________________________________________
nix-dev mailing list
nix-dev@lists.science.uu.nl
http://lists.science.uu.nl/mailman/listinfo/nix-dev

Reply via email to