engelsystem: unvendor composer and yarn dependencies

Changed files
+46 -26
nixos
modules
services
web-apps
pkgs
by-name
en
engelsystem
+2 -2
nixos/modules/services/web-apps/engelsystem.nix
···
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;
···
'';
};
"~ \\.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;
+44 -24
pkgs/by-name/en/engelsystem/package.nix
···
{
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=";
+
};
-
ln -sf /etc/engelsystem/config.php ./config/config.php
-
ln -sf /var/lib/engelsystem/storage/ ./storage
+
strictDeps = true;
-
mkdir -p $out/share/engelsystem
-
mkdir -p $out/bin
-
cp -r . $out/share/engelsystem
+
nativeBuildInputs = [
+
nodejs
+
yarn
+
yarnConfigHook
+
];
-
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"
+
preBuild = ''
+
yarn build
+
'';
-
runHook postInstall
+
preInstall = ''
+
rm -rf node_modules
+
+
# link config and storage into FHS locations
+
ln -sf /etc/engelsystem/config.php ./config/config.php
+
rm -rf storage
+
ln -snf /var/lib/engelsystem/storage/ ./storage
+
'';
+
+
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;
···
maintainers = with lib.maintainers; [ ];
platforms = lib.platforms.all;
};
-
}
+
})