diff options
author | Vladimír Čunát <vcunat@gmail.com> | 2016-03-11 15:55:10 +0100 |
---|---|---|
committer | Vladimír Čunát <vcunat@gmail.com> | 2016-03-11 15:59:26 +0100 |
commit | 61556b727a1f340dc01618b6265dc05f7a6d5d4f (patch) | |
tree | b67fd83b15bb9e66688d1ade39c15e3d39ee4743 /nixos/modules | |
parent | ab0bc1ecaf4357801f83bc41868b4bfb7564a369 (diff) | |
download | nixlib-61556b727a1f340dc01618b6265dc05f7a6d5d4f.tar nixlib-61556b727a1f340dc01618b6265dc05f7a6d5d4f.tar.gz nixlib-61556b727a1f340dc01618b6265dc05f7a6d5d4f.tar.bz2 nixlib-61556b727a1f340dc01618b6265dc05f7a6d5d4f.tar.lz nixlib-61556b727a1f340dc01618b6265dc05f7a6d5d4f.tar.xz nixlib-61556b727a1f340dc01618b6265dc05f7a6d5d4f.tar.zst nixlib-61556b727a1f340dc01618b6265dc05f7a6d5d4f.zip |
nixos/mantisbt: add a simple service
It doesn't really deserve a package, as it's just a bunch of PHP scripts copied into a folder and we have to copy on reconfiguration anyway.
Diffstat (limited to 'nixos/modules')
-rw-r--r-- | nixos/modules/module-list.nix | 1 | ||||
-rw-r--r-- | nixos/modules/services/misc/mantisbt.nix | 68 |
2 files changed, 69 insertions, 0 deletions
diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix index 86cd87efdbeb..9f5ba6c9da10 100644 --- a/nixos/modules/module-list.nix +++ b/nixos/modules/module-list.nix @@ -220,6 +220,7 @@ ./services/misc/gitolite.nix ./services/misc/gpsd.nix ./services/misc/ihaskell.nix + ./services/misc/mantisbt.nix ./services/misc/mathics.nix ./services/misc/matrix-synapse.nix ./services/misc/mbpfan.nix diff --git a/nixos/modules/services/misc/mantisbt.nix b/nixos/modules/services/misc/mantisbt.nix new file mode 100644 index 000000000000..372106149fd0 --- /dev/null +++ b/nixos/modules/services/misc/mantisbt.nix @@ -0,0 +1,68 @@ +{ config, lib, pkgs, ... }: + +with lib; +let + cfg = config.services.mantisbt; + + freshInstall = cfg.extraConfig == ""; + + # combined code+config directory + mantisbt = let + config_inc = pkgs.writeText "config_inc.php" ("<?php\n" + cfg.extraConfig); + src = pkgs.fetchurl { + url = "mirror://sourceforge/mantisbt/${name}.tar.gz"; + sha256 = "1pl6xn793p3mxc6ibpr2bhg85vkdlcf57yk7pfc399g47l8x4508"; + }; + name = "mantisbt-1.2.19"; + in + # We have to copy every time; otherwise config won't be found. + pkgs.runCommand name + { preferLocalBuild = true; allowSubstitutes = false; } + ('' + mkdir -p "$out" + cd "$out" + tar -xf '${src}' --strip-components=1 + ln -s '${config_inc}' config_inc.php + '' + + lib.optionalString (!freshInstall) "rm -r admin/" + ); +in +{ + options.services.mantisbt = { + enable = mkOption { + type = types.bool; + default = false; + description = '' + Enable the mantisbt web service. + This switches on httpd with PHP and database. + ''; + }; + urlPrefix = mkOption { + type = types.string; + default = "/mantisbt"; + description = "The URL prefix under which the mantisbt service appears."; + }; + extraConfig = mkOption { + type = types.lines; + default = ""; + description = '' + The contents of config_inc.php, without leading <?php. + If left empty, the admin directory will be accessible. + ''; + }; + }; + + + config = mkIf cfg.enable { + services.mysql.enable = true; + services.httpd.enable = true; + services.httpd.enablePHP = true; + # The httpd sub-service showing mantisbt. + services.httpd.extraSubservices = [ { function = { ... }: { + extraConfig = + '' + Alias ${cfg.urlPrefix} "${mantisbt}" + ''; + };}]; + }; +} |