diff options
author | Marek Mahut <marek.mahut@gmail.com> | 2019-11-03 17:24:08 +0100 |
---|---|---|
committer | Marek Mahut <marek.mahut@gmail.com> | 2019-11-03 17:24:08 +0100 |
commit | f3b8d9bae3589e2c6a6804295b9fc6d21eaac0db (patch) | |
tree | 034329b6299c306ae7ac7fa2915fd8791fef028d /nixos | |
parent | 95c519f5ce43537d100bb27502a59b063a5f2a7b (diff) | |
download | nixpkgs-f3b8d9bae3589e2c6a6804295b9fc6d21eaac0db.tar nixpkgs-f3b8d9bae3589e2c6a6804295b9fc6d21eaac0db.tar.gz nixpkgs-f3b8d9bae3589e2c6a6804295b9fc6d21eaac0db.tar.bz2 nixpkgs-f3b8d9bae3589e2c6a6804295b9fc6d21eaac0db.tar.lz nixpkgs-f3b8d9bae3589e2c6a6804295b9fc6d21eaac0db.tar.xz nixpkgs-f3b8d9bae3589e2c6a6804295b9fc6d21eaac0db.tar.zst nixpkgs-f3b8d9bae3589e2c6a6804295b9fc6d21eaac0db.zip |
nixos/trac: service init
Diffstat (limited to 'nixos')
-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 df6e4dc1336..164c6dda75e 100644 --- a/nixos/modules/module-list.nix +++ b/nixos/modules/module-list.nix @@ -814,6 +814,7 @@ ./services/web-apps/matomo.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 00000000000..207fb857438 --- /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 ]; + }; + + }; +} |