commit
e51f707437
@ -816,6 +816,7 @@
|
||||
./services/web-apps/moinmoin.nix
|
||||
./services/web-apps/restya-board.nix
|
||||
./services/web-apps/tt-rss.nix
|
||||
./services/web-apps/trac.nix
|
||||
./services/web-apps/selfoss.nix
|
||||
./services/web-apps/shiori.nix
|
||||
./services/web-apps/virtlyst.nix
|
||||
|
79
nixos/modules/services/web-apps/trac.nix
Normal file
79
nixos/modules/services/web-apps/trac.nix
Normal file
@ -0,0 +1,79 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
let
|
||||
cfg = config.services.trac;
|
||||
|
||||
inherit (lib) mkEnableOption mkIf mkOption types;
|
||||
|
||||
in {
|
||||
|
||||
options = {
|
||||
|
||||
services.trac = {
|
||||
enable = mkEnableOption "Trac service";
|
||||
|
||||
listen = {
|
||||
ip = mkOption {
|
||||
type = types.str;
|
||||
default = "0.0.0.0";
|
||||
description = ''
|
||||
IP address that Trac should listen on.
|
||||
'';
|
||||
};
|
||||
|
||||
port = mkOption {
|
||||
type = types.port;
|
||||
default = 8000;
|
||||
description = ''
|
||||
Listen port for Trac.
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
dataDir = mkOption {
|
||||
default = "/var/lib/trac";
|
||||
type = types.path;
|
||||
description = ''
|
||||
The directory for storing the Trac data.
|
||||
'';
|
||||
};
|
||||
|
||||
openFirewall = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = ''
|
||||
Open ports in the firewall for Trac.
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
|
||||
systemd.services.trac = {
|
||||
description = "Trac server";
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
serviceConfig = {
|
||||
DynamicUser = true;
|
||||
StateDirectory = baseNameOf cfg.dataDir;
|
||||
ExecStart = ''
|
||||
${pkgs.trac}/bin/tracd -s \
|
||||
-b ${toString cfg.listen.ip} \
|
||||
-p ${toString cfg.listen.port} \
|
||||
${cfg.dataDir}
|
||||
'';
|
||||
};
|
||||
preStart = ''
|
||||
if [ ! -e ${cfg.dataDir}/VERSION ]; then
|
||||
${pkgs.trac}/bin/trac-admin ${cfg.dataDir} initenv Trac "sqlite:db/trac.db"
|
||||
fi
|
||||
'';
|
||||
};
|
||||
|
||||
networking.firewall = mkIf cfg.openFirewall {
|
||||
allowedTCPPorts = [ cfg.listen.port ];
|
||||
};
|
||||
|
||||
};
|
||||
}
|
@ -281,6 +281,7 @@ in
|
||||
tinydns = handleTest ./tinydns.nix {};
|
||||
tor = handleTest ./tor.nix {};
|
||||
transmission = handleTest ./transmission.nix {};
|
||||
trac = handleTest ./trac.nix {};
|
||||
trezord = handleTest ./trezord.nix {};
|
||||
trickster = handleTest ./trickster.nix {};
|
||||
udisks2 = handleTest ./udisks2.nix {};
|
||||
|
19
nixos/tests/trac.nix
Normal file
19
nixos/tests/trac.nix
Normal file
@ -0,0 +1,19 @@
|
||||
import ./make-test.nix ({ pkgs, ... }: {
|
||||
name = "trac";
|
||||
meta = with pkgs.stdenv.lib.maintainers; {
|
||||
maintainers = [ mmahut ];
|
||||
};
|
||||
|
||||
nodes = {
|
||||
machine = { ... }: {
|
||||
services.trac.enable = true;
|
||||
};
|
||||
};
|
||||
|
||||
testScript = ''
|
||||
startAll;
|
||||
$machine->waitForUnit("trac.service");
|
||||
$machine->waitForOpenPort(8000);
|
||||
$machine->waitUntilSucceeds("curl -L http://localhost:8000/ | grep 'Trac Powered'");
|
||||
'';
|
||||
})
|
Loading…
x
Reference in New Issue
Block a user