diff --git a/nixos/modules/services/web-apps/engelsystem.nix b/nixos/modules/services/web-apps/engelsystem.nix index 6528d17469b2..792bf1c29f82 100644 --- a/nixos/modules/services/web-apps/engelsystem.nix +++ b/nixos/modules/services/web-apps/engelsystem.nix @@ -134,7 +134,7 @@ in enable = true; virtualHosts."${cfg.domain}".locations = { "/" = { - root = "${cfg.package}/share/engelsystem/public"; + root = "${cfg.package}/share/php/engelsystem/public"; extraConfig = '' index index.php; try_files $uri $uri/ /index.php?$args; @@ -142,7 +142,7 @@ in ''; }; "~ \\.php$" = { - root = "${cfg.package}/share/engelsystem/public"; + root = "${cfg.package}/share/php/engelsystem/public"; extraConfig = '' fastcgi_pass unix:${config.services.phpfpm.pools.engelsystem.socket}; fastcgi_index index.php; diff --git a/pkgs/by-name/en/engelsystem/package.nix b/pkgs/by-name/en/engelsystem/package.nix index 65e241e8133d..320638ed0d6e 100644 --- a/pkgs/by-name/en/engelsystem/package.nix +++ b/pkgs/by-name/en/engelsystem/package.nix @@ -1,48 +1,68 @@ { lib, - fetchzip, + fetchFromGitHub, + fetchYarnDeps, + nodejs, + yarn, + yarnBuildHook, + yarnConfigHook, nixosTests, php, - stdenv, - writeText, }: -stdenv.mkDerivation rec { +php.buildComposerProject2 (finalAttrs: { pname = "engelsystem"; version = "3.6.0"; - src = fetchzip { - url = "https://github.com/engelsystem/engelsystem/releases/download/v${version}/engelsystem-v${version}.zip"; - hash = "sha256-AZVW04bcSlESSRmtfvP2oz15xvZLlGEz/X9rX7PuRGg="; + src = fetchFromGitHub { + owner = "engelsystem"; + repo = "engelsystem"; + tag = "v${finalAttrs.version}"; + hash = "sha256-Pi+nowImUvENx2c4gsku1KkFb3pLM84oT8WevI6ImQg="; }; - buildInputs = [ php ]; + inherit php; - installPhase = '' - runHook preInstall + vendorHash = "sha256-0Mv48mB/pTQtYd2do6wTdhD/c2zwbU1gTYsdU7rELPY="; + composoerNoDev = true; + composerStrictValidation = false; - # prepare - rm -r ./storage/ + yarnOfflineCache = fetchYarnDeps { + pname = "${finalAttrs.pname}-yarn-deps"; + yarnLock = "${finalAttrs.src}/yarn.lock"; + hash = "sha256-nyCLM9OF2qwlW+VK38kiRMo6jMlupNFG+91N3Fb/WLY="; + }; + strictDeps = true; + + nativeBuildInputs = [ + nodejs + yarn + yarnConfigHook + ]; + + preBuild = '' + yarn build + ''; + + preInstall = '' + rm -rf node_modules + + # link config and storage into FHS locations ln -sf /etc/engelsystem/config.php ./config/config.php - ln -sf /var/lib/engelsystem/storage/ ./storage + rm -rf storage + ln -snf /var/lib/engelsystem/storage/ ./storage + ''; - mkdir -p $out/share/engelsystem - mkdir -p $out/bin - cp -r . $out/share/engelsystem - - echo $(command -v php) - # The patchShebangAuto function always used the php without extensions, so path the shebang manually - sed -i -e "1 s|.*|#\!${lib.getExe php}|" "$out/share/engelsystem/bin/migrate" - ln -s "$out/share/engelsystem/bin/migrate" "$out/bin/migrate" - - runHook postInstall + postInstall = '' + mkdir $out/bin + ln -s $out/share/php/engelsystem/bin/migrate $out/bin/migrate ''; passthru.tests = nixosTests.engelsystem; meta = { - changelog = "https://github.com/engelsystem/engelsystem/releases/tag/v${version}"; + changelog = "https://github.com/engelsystem/engelsystem/releases/tag/v${finalAttrs.version}"; description = "Coordinate your volunteers in teams, assign them to work shifts or let them decide for themselves when and where they want to help with what"; homepage = "https://engelsystem.de"; license = lib.licenses.gpl2Only; @@ -50,4 +70,4 @@ stdenv.mkDerivation rec { maintainers = with lib.maintainers; [ ]; platforms = lib.platforms.all; }; -} +})