diff options
author | Marek Mahut <marek.mahut@gmail.com> | 2019-11-04 17:53:49 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-11-04 17:53:49 +0100 |
commit | e51f707437c2600881f0f0759b5bf2dc2fba76e7 (patch) | |
tree | 9e736d76f606b1ed75d38ae824365cf1a4b580f6 /nixos/modules | |
parent | b1b776b11c2e4b73e69d4bef7f33fd2bb215c286 (diff) | |
parent | e71b1e3363831a1ae0ded2963142a853cc1e926f (diff) | |
download | nixlib-e51f707437c2600881f0f0759b5bf2dc2fba76e7.tar nixlib-e51f707437c2600881f0f0759b5bf2dc2fba76e7.tar.gz nixlib-e51f707437c2600881f0f0759b5bf2dc2fba76e7.tar.bz2 nixlib-e51f707437c2600881f0f0759b5bf2dc2fba76e7.tar.lz nixlib-e51f707437c2600881f0f0759b5bf2dc2fba76e7.tar.xz nixlib-e51f707437c2600881f0f0759b5bf2dc2fba76e7.tar.zst nixlib-e51f707437c2600881f0f0759b5bf2dc2fba76e7.zip |
Merge pull request #72729 from mmahut/trac
nixos/trac: init
Diffstat (limited to 'nixos/modules')
-rw-r--r-- | nixos/modules/module-list.nix | 1 | ||||
-rw-r--r-- | nixos/modules/services/web-apps/trac.nix | 79 |
2 files changed, 80 insertions, 0 deletions
diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix index 1dcbf71dfaf8..0b14b3e33018 100644 --- a/nixos/modules/module-list.nix +++ b/nixos/modules/module-list.nix @@ -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 diff --git a/nixos/modules/services/web-apps/trac.nix b/nixos/modules/services/web-apps/trac.nix new file mode 100644 index 000000000000..207fb857438a --- /dev/null +++ b/nixos/modules/services/web-apps/trac.nix @@ -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 ]; + }; + + }; +} |