{config, lib, ...}: let alex = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAII42yGEm1u3FxKdgox6Kkp9IBgBERVKrcIjQkrVbEO3m alex@kassouni.net"; in { options.my = { adminKeys = lib.mkOption { type = with lib.types; listOf singleLineStr; description = '' Keys granted an interactive shell in the wheel group, i.e. root by way of sudo. Only add a key you would trust with the whole machine. ''; }; gitKeys = lib.mkOption { type = with lib.types; listOf singleLineStr; description = '' Keys granted git-shell access to the repositories under /srv/git. No interactive shell and no sudo, so this is the list to grow when someone needs to push. ''; }; }; config.my = { adminKeys = [ alex ]; # Admins push too; collaborator keys belong here and nowhere else. gitKeys = config.my.adminKeys; }; }