1# SVN server 2{ config, lib, pkgs, ... }: 3 4with lib; 5 6let 7 8 cfg = config.services.svnserve; 9 10in 11 12{ 13 14 ###### interface 15 16 options = { 17 18 services.svnserve = { 19 20 enable = mkOption { 21 default = false; 22 description = "Whether to enable svnserve to serve Subversion repositories through the SVN protocol."; 23 }; 24 25 svnBaseDir = mkOption { 26 default = "/repos"; 27 description = "Base directory from which Subversion repositories are accessed."; 28 }; 29 }; 30 31 }; 32 33 34 ###### implementation 35 36 config = mkIf cfg.enable { 37 systemd.services.svnserve = { 38 after = [ "network-interfaces.target" ]; 39 wantedBy = [ "multi-user.target" ]; 40 preStart = "mkdir -p ${cfg.svnBaseDir}"; 41 script = "${pkgs.subversion}/bin/svnserve -r ${cfg.svnBaseDir} -d --foreground --pid-file=/var/run/svnserve.pid"; 42 }; 43 }; 44}