nixpkgs/pkgs/servers/web-apps/moodle/default.nix

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

72 lines
1.9 KiB
Nix
Raw Normal View History

{ lib, stdenv, fetchurl, writeText, plugins ? [ ], nixosTests }:
2019-06-19 10:23:43 +00:00
let
version = "4.1.4";
2022-07-24 08:22:16 +00:00
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);
2019-06-19 10:23:43 +00:00
2020-06-18 10:34:31 +00:00
in stdenv.mkDerivation rec {
2019-06-19 10:23:43 +00:00
pname = "moodle";
inherit version;
src = fetchurl {
url = "https://download.moodle.org/download.php/direct/stable${stableVersion}/${pname}-${version}.tgz";
hash = "sha256-mfJV5KHOG401N8gHFWYygsRRVnlWyn0SojD1H5KAvPQ=";
2019-06-19 10:23:43 +00:00
};
phpConfig = writeText "config.php" ''
2020-06-18 10:34:31 +00:00
<?php
return require(getenv('MOODLE_CONFIG'));
?>
2019-06-19 10:23:43 +00:00
'';
installPhase = ''
runHook preInstall
mkdir -p $out/share/moodle
cp -r . $out/share/moodle
cp ${phpConfig} $out/share/moodle/config.php
2020-06-18 10:34:31 +00:00
${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)}
2019-06-19 10:23:43 +00:00
runHook postInstall
'';
passthru.tests = {
inherit (nixosTests) moodle;
};
meta = with lib; {
2020-06-18 10:34:31 +00:00
description =
"Free and open-source learning management system (LMS) written in PHP";
2019-06-19 10:23:43 +00:00
license = licenses.gpl3Plus;
homepage = "https://moodle.org/";
2020-09-26 06:52:11 +00:00
maintainers = with maintainers; [ freezeboy ];
2019-06-19 10:23:43 +00:00
platforms = platforms.all;
};
}