diff options
Diffstat (limited to 'nixpkgs/pkgs/by-name/la/lanraragi/package.nix')
-rw-r--r-- | nixpkgs/pkgs/by-name/la/lanraragi/package.nix | 138 |
1 files changed, 138 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/by-name/la/lanraragi/package.nix b/nixpkgs/pkgs/by-name/la/lanraragi/package.nix new file mode 100644 index 000000000000..2a18474e2d2c --- /dev/null +++ b/nixpkgs/pkgs/by-name/la/lanraragi/package.nix @@ -0,0 +1,138 @@ +{ lib +, stdenv +, buildNpmPackage +, fetchFromGitHub +, fetchpatch +, makeBinaryWrapper +, perl +, ghostscript +, nixosTests +}: + +buildNpmPackage rec { + pname = "lanraragi"; + version = "0.9.0"; + + src = fetchFromGitHub { + owner = "Difegue"; + repo = "LANraragi"; + rev = "v.${version}"; + hash = "sha256-euZotpXTUSmxlA5rbTUhHpHH0Ojd3AZjGasxYZ+L7NY="; + }; + + patches = [ + (fetchpatch { + name = "fix-redis-auth.patch"; + url = "https://github.com/Difegue/LANraragi/commit/1711b39759ad02ab2a8863ce1f35f6479c9a2917.patch"; + hash = "sha256-WfKeieysIlS64qgVEc75JFKjxXuvZN85M6US/gwjTzw="; + }) + (fetchpatch { + name = "fix-ghostscript-device.patch"; + url = "https://github.com/Difegue/LANraragi/commit/087d63b11c89fda8cb3a30cdb2e86ecd6be66bb7.patch"; + hash = "sha256-Cu9d/dDlO0yuFCTKOyg5A0gIuiA+FcWD9PjexB/BK0U="; + }) + ./install.patch + ./fix-paths.patch + ./expose-password-hashing.patch # Used by the NixOS module + ]; + + npmDepsHash = "sha256-/F/lhQIVGbbFxFuQXXwHUVlV2jhHt0hFf94v0FrTKt8="; + + nativeBuildInputs = [ perl makeBinaryWrapper ]; + + buildInputs = with perl.pkgs; [ + perl + ImageMagick + locallib + Redis + Encode + ArchiveLibarchiveExtract + ArchiveLibarchivePeek + ListMoreUtils + NetDNSNative + SortNaturally + AuthenPassphrase + FileReadBackwards + URI + LogfileRotate + Mojolicious + MojoliciousPluginTemplateToolkit + MojoliciousPluginRenderFile + MojoliciousPluginStatus + IOSocketSSL + CpanelJSONXS + Minion + MinionBackendRedis + ProcSimple + ParallelLoops + SysCpuAffinity + FileChangeNotify + ModulePluggable + TimeLocal + YAMLSyck + StringSimilarity + ] ++ lib.optional stdenv.isLinux LinuxInotify2; + + buildPhase = '' + runHook preBuild + + # Check if every perl dependency was installed + # explicitly call cpanm with perl because the shebang is broken on darwin + perl ${perl.pkgs.Appcpanminus}/bin/cpanm --installdeps ./tools --notest + + perl ./tools/install.pl install-full + rm -r node_modules public/js/vendor/*.map public/css/vendor/*.map + + runHook postBuild + ''; + + doCheck = true; + + nativeCheckInputs = with perl.pkgs; [ + TestMockObject + TestTrap + TestDeep + ]; + + checkPhase = '' + runHook preCheck + + rm tests/plugins.t # Uses network + prove -r -l -v tests + + runHook postCheck + ''; + + installPhase = '' + runHook preInstall + + mkdir -p $out/share/lanraragi + chmod +x script/launcher.pl + cp -r lib public script templates package.json lrr.conf $out/share/lanraragi + + makeWrapper $out/share/lanraragi/script/launcher.pl $out/bin/lanraragi \ + --prefix PERL5LIB : $PERL5LIB \ + --prefix PATH : ${lib.makeBinPath [ ghostscript ]} \ + --run "cp -n --no-preserve=all $out/share/lanraragi/lrr.conf ./lrr.conf 2>/dev/null || true" \ + --add-flags "-f $out/share/lanraragi/script/lanraragi" + + makeWrapper ${lib.getExe perl} $out/bin/helpers/lrr-make-password-hash \ + --prefix PERL5LIB : $out/share/lanraragi/lib:$PERL5LIB \ + --add-flags "-e 'use LANraragi::Controller::Config; print LANraragi::Controller::Config::make_password_hash(@ARGV[0])' 2>/dev/null" + + runHook postInstall + ''; + + passthru.tests.module = nixosTests.lanraragi; + + meta = { + changelog = "https://github.com/Difegue/LANraragi/releases/tag/${src.rev}"; + description = "Web application for archival and reading of manga/doujinshi"; + homepage = "https://github.com/Difegue/LANraragi"; + license = lib.licenses.mit; + mainProgram = "lanraragi"; + maintainers = with lib.maintainers; [ tomasajt ]; + platforms = lib.platforms.unix; + }; +} + |