Skip to content

Commit

Permalink
gollum service: init
Browse files Browse the repository at this point in the history
  • Loading branch information
erictapen authored and fpletz committed Sep 18, 2017
1 parent 700b094 commit b5a5d0b
Show file tree
Hide file tree
Showing 2 changed files with 93 additions and 0 deletions.
1 change: 1 addition & 0 deletions nixos/modules/module-list.nix
Expand Up @@ -301,6 +301,7 @@
./services/misc/gitlab.nix
./services/misc/gitolite.nix
./services/misc/gogs.nix
./services/misc/gollum.nix
./services/misc/gpsd.nix
#./services/misc/ihaskell.nix
./services/misc/irkerd.nix
Expand Down
92 changes: 92 additions & 0 deletions nixos/modules/services/misc/gollum.nix
@@ -0,0 +1,92 @@
{ config, lib, pkgs, ... }:

with lib;

let
cfg = config.services.gollum;
in

{
options.services.gollum = {
enable = mkOption {
type = types.bool;
default = false;
description = "Enable the Gollum service.";
};

address = mkOption {
type = types.str;
default = "0.0.0.0";
description = "IP address on which the web server will listen.";
};

port = mkOption {
type = types.int;
default = 4567;
description = "Port on which the web server will run.";
};

extraConfig = mkOption {
type = types.lines;
default = "";
description = "Content of the configuration file";
};

branch = mkOption {
type = types.str;
default = "master";
example = "develop";
description = "Git branch to serve";
};

stateDir = mkOption {
type = types.path;
default = "/var/lib/gollum";
description = "Specifies the path of the repository directory. If it does not exist, Gollum will create it on startup.";
};

};

config = mkIf cfg.enable {

users.users.gollum = {
group = config.users.users.gollum.name;
description = "Gollum user";
createHome = false;
};

users.groups.gollum = { };

systemd.services.gollum = {
description = "Gollum wiki";
after = [ "network.target" ];
wantedBy = [ "multi-user.target" ];
path = [ pkgs.git ];

preStart = let
userName = config.users.users.gollum.name;
groupName = config.users.groups.gollum.name;
in ''
# All of this is safe to be run on an existing repo
mkdir -p ${cfg.stateDir}
git init ${cfg.stateDir}
chmod 755 ${cfg.stateDir}
chown -R ${userName}:${groupName} ${cfg.stateDir}
'';

serviceConfig = {
User = config.users.extraUsers.gollum.name;
Group = config.users.extraGroups.gollum.name;
PermissionsStartOnly = true;
ExecStart = ''
${pkgs.gollum}/bin/gollum \
--port ${toString cfg.port} \
--host ${cfg.address} \
--config ${builtins.toFile "gollum-config.rb" cfg.extraConfig} \
--ref ${cfg.branch} \
${cfg.stateDir}
'';
};
};
};
}

0 comments on commit b5a5d0b

Please sign in to comment.