1{
2 lib,
3 stdenvNoCC,
4 fetchFromGitHub,
5 buildGoModule,
6 callPackage,
7 gnumake,
8 pnpm_9,
9 nodejs,
10 ocis,
11}:
12let
13 idp-assets = stdenvNoCC.mkDerivation {
14 pname = "idp-assets";
15 version = "0-unstable-2020-10-14";
16 src = fetchFromGitHub {
17 owner = "owncloud";
18 repo = "assets";
19 rev = "e8b6aeadbcee1865b9df682e9bd78083842d2b5c";
20 hash = "sha256-PzGff2Zx8xmvPYQa4lS4yz2h+y/lerKvUZkYI7XvAUw=";
21 };
22 installPhase = ''
23 mkdir -p $out/share
24 cp logo.svg favicon.ico $out/share/
25 '';
26 dontConfigure = true;
27 dontBuild = true;
28 dontFixup = true;
29 };
30in
31buildGoModule rec {
32 pname = "ocis";
33 version = "5.0.9";
34
35 vendorHash = null;
36
37 src = fetchFromGitHub {
38 owner = "owncloud";
39 repo = "ocis";
40 tag = "v${version}";
41 hash = "sha256-TsMrQx+P1F2t66e0tGG0VvRi4W7+pCpDHd0aNsacOsI=";
42 };
43
44 nativeBuildInputs = [
45 gnumake
46 nodejs
47 pnpm_9.configHook
48 ];
49
50 pnpmDeps = pnpm_9.fetchDeps {
51 inherit pname version src;
52 sourceRoot = "${src.name}/services/idp";
53 fetcherVersion = 1;
54 hash = "sha256-gNlN+u/bobnTsXrsOmkDcWs67D/trH3inT5AVQs3Brs=";
55 };
56 pnpmRoot = "services/idp";
57
58 buildPhase = ''
59 runHook preBuild
60 cp -r ${ocis.web}/share/* services/web/assets/
61 pnpm -C services/idp build
62
63 mkdir -p services/idp/assets/identifier/static
64 cp -r ${idp-assets}/share/* services/idp/assets/identifier/static/
65
66 make -C ocis VERSION=${version} DATE=${version} build
67 runHook postBuild
68 '';
69
70 installPhase = ''
71 runHook preInstall
72 mkdir -p $out/bin/
73 cp ocis/bin/ocis $out/bin/
74 runHook postInstall
75 '';
76
77 passthru = {
78 web = callPackage ./web.nix { };
79 updateScript = ./update.sh;
80 };
81
82 meta = {
83 homepage = "https://github.com/owncloud/web";
84 description = "Next generation frontend for ownCloud Infinite Scale";
85 license = lib.licenses.asl20;
86 mainProgram = "ocis";
87 maintainers = with lib.maintainers; [ xinyangli ];
88 };
89}