diff options
Diffstat (limited to 'nixpkgs/pkgs/servers/web-apps/moodle/default.nix')
-rw-r--r-- | nixpkgs/pkgs/servers/web-apps/moodle/default.nix | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/servers/web-apps/moodle/default.nix b/nixpkgs/pkgs/servers/web-apps/moodle/default.nix new file mode 100644 index 000000000000..79fb83749e60 --- /dev/null +++ b/nixpkgs/pkgs/servers/web-apps/moodle/default.nix @@ -0,0 +1,71 @@ +{ lib, stdenv, fetchurl, writeText, plugins ? [ ], nixosTests }: + +let + version = "4.3.3"; + + versionParts = lib.take 2 (lib.splitVersion version); + # 4.2 -> 402, 3.11 -> 311 + stableVersion = lib.removePrefix "0" (lib.concatMapStrings + (p: if (lib.toInt p) < 10 then (lib.concatStrings ["0" p]) else p) + versionParts); + +in stdenv.mkDerivation rec { + pname = "moodle"; + inherit version; + + src = fetchurl { + url = "https://download.moodle.org/download.php/direct/stable${stableVersion}/${pname}-${version}.tgz"; + hash = "sha256-yFrD277bO25O5GeXVG4VhKO/oH9dsgqoTsrlMZoXHbI="; + }; + + phpConfig = writeText "config.php" '' + <?php + return require(getenv('MOODLE_CONFIG')); + ?> + ''; + + installPhase = '' + runHook preInstall + + mkdir -p $out/share/moodle + cp -r . $out/share/moodle + cp ${phpConfig} $out/share/moodle/config.php + + ${lib.concatStringsSep "\n" (map (p: + let + dir = if p.pluginType == "mod" then + "mod" + else if p.pluginType == "theme" then + "theme" + else if p.pluginType == "block" then + "blocks" + else if p.pluginType == "question" then + "question/type" + else if p.pluginType == "course" then + "course/format" + else if p.pluginType == "report" then + "admin/report" + else + throw "unknown moodle plugin type"; + # we have to copy it, because the plugins have refrences to .. inside + in '' + mkdir -p $out/share/moodle/${dir}/${p.name} + cp -r ${p}/* $out/share/moodle/${dir}/${p.name}/ + '') plugins)} + + runHook postInstall + ''; + + passthru.tests = { + inherit (nixosTests) moodle; + }; + + meta = with lib; { + description = + "Free and open-source learning management system (LMS) written in PHP"; + license = licenses.gpl3Plus; + homepage = "https://moodle.org/"; + maintainers = with maintainers; [ freezeboy ]; + platforms = platforms.all; + }; +} |