[Nix-dev] [PATCH] authorized_keys in users.extraUsers

Rickard Nilsson rickard.nilsson at telia.com
Tue Oct 18 00:40:22 CEST 2011


Hi,

Den 2011-10-17 14:04:46 skrev Nicolas Pierron  
<nicolas.b.pierron at gmail.com>:

> Hi,
>
> On Sun, Oct 16, 2011 at 21:28, Rickard Nilsson
> <rickard.nilsson at telia.com> wrote:
>> I've written a patch to users-groups.nix that allows me to specify the
>> contents of a users ~/.ssh/authorized_keys file like this:
>>
>>  users.extraUsers = [
>>    { name = "myuser";
>>      description = "";
>>      group = "users";
>>      home = "/home/myuser";
>>      createHome = true;
>>      useDefaultShell = true;
>>      authorizedKeyFiles = [
>>        "/etc/secrets/someotheruser.id_dsa.pub"
>>      ];
>>    }
>>  ];
>>
>>
>> I can also specify keys directly with the authorizedKeys attribute,  
>> instead
>> of referring files. If there are existing keys in authorized_keys they  
>> will
>> be left alone.
>>
>> Is this something that others find useful? Does it make sense to put it  
>> in
>> users.extraUsers, or is it too messy? Maybe there is a place for a more
>> general home.<username>.authorizedKeys configuration? What do you think?
>
> I think users.<name?>.authorizedKeys is good place for configuring it.
>  But I guess you did not put the modifications into sshd.nix
> expression.  So you will have to extend the users option from another
> module because the .ssh/authorized_keys is related to sshd.  (see
> loaOf/attrsOf in nixpkgs/pkgs/lib/types.nix) Upstart & filesystems are
> already doing such a thing.

I'm not sure I understand. Do you say that I should put the modification
into sshd.nix? It does sound reasonable to me, so I went ahead and tried
it, looking for inspiration in upstart and filesystems. However, how can
I extend the existing "users.*" configuration? I tried adding the
following to sshd.nix:

     users = mkOption {
       default = {};
       description = ''
       '';
       type = types.loaOf types.optionSet;
       options = [ usersOptions ];
     };

However, this made Nix complain about types. If I renamed "users" to
something that isn't already defined it worked fine though.


Best regards,
   Rickard Nilsson


More information about the nix-dev mailing list