{ lib, pkgs, config, ... }: let mantisbt = pkgs.callPackage ./mantisbt.nix { mantisbt_2 = pkgs.webapps-mantisbt_2; mantisbt_2-plugins = pkgs.webapps-mantisbt_2-plugins; env = config.myEnv.tools.mantisbt; inherit config; }; gitweb = pkgs.callPackage ./gitweb.nix { gitoliteDir = config.myServices.gitolite.gitoliteDir; }; cfg = config.myServices.websites.tools.git; in { options.myServices.websites.tools.git = { enable = lib.mkEnableOption "enable git's website"; }; config = lib.mkIf cfg.enable { myServices.chatonsProperties.services.mantisbt = { file.datetime = "2022-08-21T10:08:00"; service = { name = "MantisBT"; description = "Mantis Bug Tracker"; website = "https://git.immae.eu/mantisbt"; logo = "https://git.immae.eu/mantisbt/images/favicon.ico"; status.level = "OK"; status.description = "OK"; registration."" = ["MEMBER" "CLIENT"]; registration.load = "OPEN"; install.type = "PACKAGE"; guide.user = "https://www.immae.eu/docs/forge-logicielle.html"; }; software = { name = "MantisBT"; website = "https://mantisbt.org/"; license.url = "https://opensource.org/licenses/gpl-license"; license.name = "GNU General Public License"; version = mantisbt.webRoot.version; source.url = "https://github.com/mantisbt/mantisbt"; modules = mantisbt.webRoot.pluginNames; }; }; secrets.keys = mantisbt.keys; services.websites.env.tools.modules = gitweb.apache.modules ++ mantisbt.apache.modules; security.acme.certs.eldiron.extraDomainNames = [ "git.immae.eu" ]; services.websites.env.tools.vhostConfs.git = { certName = "eldiron"; hosts = ["git.immae.eu" ]; root = gitweb.apache.root; extraConfig = [ gitweb.apache.vhostConf (mantisbt.apache.vhostConf config.services.phpfpm.pools.mantisbt.socket) '' RewriteEngine on RewriteCond %{REQUEST_URI} ^/releases RewriteRule /releases(.*) https://release.immae.eu$1 [P,L] '' ]; }; services.phpfpm.pools = { mantisbt = { user = config.services.websites.env.tools.user; group = config.services.websites.env.tools.group; settings = mantisbt.phpFpm.pool; phpPackage = pkgs.php72.withExtensions({ enabled, all }: enabled ++ [all.redis]); }; }; myServices.monitoring.fromMasterActivatedPlugins = [ "http" ]; myServices.monitoring.fromMasterObjects.service = [ { service_description = "gitweb website is running on git.immae.eu"; host_name = config.hostEnv.fqdn; use = "external-web-service"; check_command = ["check_https" "git.immae.eu" "/cgit" "Immae’s git"]; servicegroups = "webstatus-webapps"; _webstatus_name = "Git"; _webstatus_url = "https://git.immae.eu/"; } { service_description = "mantisbt website is running on git.immae.eu"; host_name = config.hostEnv.fqdn; use = "external-web-service"; check_command = ["check_https" "git.immae.eu" "/mantisbt/" "<title>My View - MantisBT"]; servicegroups = "webstatus-webapps"; _webstatus_name = "Mantisbt"; _webstatus_url = "https://git.immae.eu/mantisbt"; } ]; }; }