Merge pull request #4859 from abbradar/git-daemon
nixos/git-daemon: fix a bug and add 'user' and 'group' options
This commit is contained in:
commit
8b50383c45
@ -3,7 +3,6 @@ with lib;
|
|||||||
let
|
let
|
||||||
|
|
||||||
cfg = config.services.gitDaemon;
|
cfg = config.services.gitDaemon;
|
||||||
gitUser = "git";
|
|
||||||
|
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
@ -14,6 +13,7 @@ in
|
|||||||
services.gitDaemon = {
|
services.gitDaemon = {
|
||||||
|
|
||||||
enable = mkOption {
|
enable = mkOption {
|
||||||
|
type = types.bool;
|
||||||
default = false;
|
default = false;
|
||||||
description = ''
|
description = ''
|
||||||
Enable Git daemon, which allows public hosting of git repositories
|
Enable Git daemon, which allows public hosting of git repositories
|
||||||
@ -28,6 +28,7 @@ in
|
|||||||
};
|
};
|
||||||
|
|
||||||
basePath = mkOption {
|
basePath = mkOption {
|
||||||
|
type = types.str;
|
||||||
default = "";
|
default = "";
|
||||||
example = "/srv/git/";
|
example = "/srv/git/";
|
||||||
description = ''
|
description = ''
|
||||||
@ -38,6 +39,7 @@ in
|
|||||||
};
|
};
|
||||||
|
|
||||||
exportAll = mkOption {
|
exportAll = mkOption {
|
||||||
|
type = types.bool;
|
||||||
default = false;
|
default = false;
|
||||||
description = ''
|
description = ''
|
||||||
Publish all directories that look like Git repositories (have the objects
|
Publish all directories that look like Git repositories (have the objects
|
||||||
@ -52,6 +54,7 @@ in
|
|||||||
};
|
};
|
||||||
|
|
||||||
repositories = mkOption {
|
repositories = mkOption {
|
||||||
|
type = types.listOf types.str;
|
||||||
default = [];
|
default = [];
|
||||||
example = [ "/srv/git" "/home/user/git/repo2" ];
|
example = [ "/srv/git" "/home/user/git/repo2" ];
|
||||||
description = ''
|
description = ''
|
||||||
@ -64,21 +67,36 @@ in
|
|||||||
};
|
};
|
||||||
|
|
||||||
listenAddress = mkOption {
|
listenAddress = mkOption {
|
||||||
|
type = types.str;
|
||||||
default = "";
|
default = "";
|
||||||
example = "example.com";
|
example = "example.com";
|
||||||
description = "Listen on a specific IP address or hostname.";
|
description = "Listen on a specific IP address or hostname.";
|
||||||
};
|
};
|
||||||
|
|
||||||
port = mkOption {
|
port = mkOption {
|
||||||
|
type = types.int;
|
||||||
default = 9418;
|
default = 9418;
|
||||||
description = "Port to listen on.";
|
description = "Port to listen on.";
|
||||||
};
|
};
|
||||||
|
|
||||||
options = mkOption {
|
options = mkOption {
|
||||||
|
type = types.str;
|
||||||
default = "";
|
default = "";
|
||||||
description = "Extra configuration options to be passed to Git daemon.";
|
description = "Extra configuration options to be passed to Git daemon.";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
user = mkOption {
|
||||||
|
type = types.str;
|
||||||
|
default = "git";
|
||||||
|
description = "User under which Git daemon would be running.";
|
||||||
|
};
|
||||||
|
|
||||||
|
group = mkOption {
|
||||||
|
type = types.str;
|
||||||
|
default = "git";
|
||||||
|
description = "Group under which Git daemon would be running.";
|
||||||
|
};
|
||||||
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -86,14 +104,14 @@ in
|
|||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
|
|
||||||
users.extraUsers = singleton
|
users.extraUsers = if cfg.user != "git" then {} else singleton
|
||||||
{ name = gitUser;
|
{ name = "git";
|
||||||
uid = config.ids.uids.git;
|
uid = config.ids.uids.git;
|
||||||
description = "Git daemon user";
|
description = "Git daemon user";
|
||||||
};
|
};
|
||||||
|
|
||||||
users.extraGroups = singleton
|
users.extraGroups = if cfg.group != "git" then {} else singleton
|
||||||
{ name = gitUser;
|
{ name = "git";
|
||||||
gid = config.ids.gids.git;
|
gid = config.ids.gids.git;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -103,8 +121,8 @@ in
|
|||||||
exec = "${pkgs.git}/bin/git daemon --reuseaddr "
|
exec = "${pkgs.git}/bin/git daemon --reuseaddr "
|
||||||
+ (optionalString (cfg.basePath != "") "--base-path=${cfg.basePath} ")
|
+ (optionalString (cfg.basePath != "") "--base-path=${cfg.basePath} ")
|
||||||
+ (optionalString (cfg.listenAddress != "") "--listen=${cfg.listenAddress} ")
|
+ (optionalString (cfg.listenAddress != "") "--listen=${cfg.listenAddress} ")
|
||||||
+ "--port=${toString cfg.port} --user=${gitUser} --group=${gitUser} ${cfg.options} "
|
+ "--port=${toString cfg.port} --user=${cfg.user} --group=${cfg.group} ${cfg.options} "
|
||||||
+ "--verbose " + (optionalString cfg.exportAll "--export-all") + concatStringsSep " " cfg.repositories;
|
+ "--verbose " + (optionalString cfg.exportAll "--export-all ") + concatStringsSep " " cfg.repositories;
|
||||||
};
|
};
|
||||||
|
|
||||||
};
|
};
|
||||||
|
Loading…
x
Reference in New Issue
Block a user