From 4e17c3e53fda94d45b8703414fdf6d547febe4a9 Mon Sep 17 00:00:00 2001 From: xinyangli Date: Mon, 9 Sep 2024 15:27:23 +0800 Subject: [PATCH] ocis: init at 5.0.9 --- pkgs/by-name/oc/ocis/package.nix | 88 ++++++++++++++++++++++++++++++++ pkgs/by-name/oc/ocis/update.sh | 22 ++++++++ pkgs/by-name/oc/ocis/web.nix | 48 +++++++++++++++++ 3 files changed, 158 insertions(+) create mode 100644 pkgs/by-name/oc/ocis/package.nix create mode 100755 pkgs/by-name/oc/ocis/update.sh create mode 100644 pkgs/by-name/oc/ocis/web.nix diff --git a/pkgs/by-name/oc/ocis/package.nix b/pkgs/by-name/oc/ocis/package.nix new file mode 100644 index 000000000000..2e403a249169 --- /dev/null +++ b/pkgs/by-name/oc/ocis/package.nix @@ -0,0 +1,88 @@ +{ + lib, + stdenvNoCC, + fetchFromGitHub, + buildGoModule, + callPackage, + gnumake, + pnpm, + nodejs, + ocis, +}: +let + idp-assets = stdenvNoCC.mkDerivation { + pname = "idp-assets"; + version = "0-unstable-2020-10-14"; + src = fetchFromGitHub { + owner = "owncloud"; + repo = "assets"; + rev = "e8b6aeadbcee1865b9df682e9bd78083842d2b5c"; + hash = "sha256-PzGff2Zx8xmvPYQa4lS4yz2h+y/lerKvUZkYI7XvAUw="; + }; + installPhase = '' + mkdir -p $out/share + cp logo.svg favicon.ico $out/share/ + ''; + dontConfigure = true; + dontBuild = true; + dontFixup = true; + }; +in +buildGoModule rec { + pname = "ocis"; + version = "5.0.9"; + + vendorHash = null; + + src = fetchFromGitHub { + owner = "owncloud"; + repo = "ocis"; + rev = "refs/tags/v${version}"; + hash = "sha256-TsMrQx+P1F2t66e0tGG0VvRi4W7+pCpDHd0aNsacOsI="; + }; + + nativeBuildInputs = [ + gnumake + nodejs + pnpm.configHook + ]; + + pnpmDeps = pnpm.fetchDeps { + inherit pname version src; + sourceRoot = "${src.name}/services/idp"; + hash = "sha256-gNlN+u/bobnTsXrsOmkDcWs67D/trH3inT5AVQs3Brs="; + }; + pnpmRoot = "services/idp"; + + buildPhase = '' + runHook preBuild + cp -r ${ocis.web}/share/* services/web/assets/ + pnpm -C services/idp build + + mkdir -p services/idp/assets/identifier/static + cp -r ${idp-assets}/share/* services/idp/assets/identifier/static/ + + make -C ocis VERSION=${version} DATE=${version} build + runHook postBuild + ''; + + installPhase = '' + runHook preInstall + mkdir -p $out/bin/ + cp ocis/bin/ocis $out/bin/ + runHook postInstall + ''; + + passthru = { + web = callPackage ./web.nix { }; + updateScript = ./update.sh; + }; + + meta = { + homepage = "https://github.com/owncloud/web"; + description = "Next generation frontend for ownCloud Infinite Scale"; + license = lib.licenses.asl20; + mainProgram = "ocis"; + maintainers = with lib.maintainers; [ xinyangli ]; + }; +} diff --git a/pkgs/by-name/oc/ocis/update.sh b/pkgs/by-name/oc/ocis/update.sh new file mode 100755 index 000000000000..2282a80908ba --- /dev/null +++ b/pkgs/by-name/oc/ocis/update.sh @@ -0,0 +1,22 @@ +#!/usr/bin/env nix-shell +#!nix-shell -i bash -p curl jq gnugrep nix-update coreutils +set -ex + +TAGS=$(curl -s https://api.github.com/repos/owncloud/ocis/releases | jq -r ".[].tag_name") + +for tag in $TAGS; do + main_version_old=$(echo "v$UPDATE_NIX_OLD_VERSION" | cut -d'.' -f1) + main_version_new=$(echo "$tag" | cut -d'.' -f1) + + # Compare the main versions + if [[ "$main_version_old" == "$main_version_new" ]]; then + UPDATE_NIX_NEW_VERSION=$tag + break + else + continue + fi +done + +OCIS_WEB_VERSION=$(curl -s https://raw.githubusercontent.com/owncloud/ocis/$UPDATE_NIX_NEW_VERSION/services/web/Makefile | grep -oP '(?<=WEB_ASSETS_VERSION = )v[0-9]+\.[0-9]+\.[0-9]+') +nix-update -vr 'v(.*)' --version=$OCIS_WEB_VERSION ocis.web +nix-update -vr 'v(.*)' --version=$UPDATE_NIX_NEW_VERSION ocis diff --git a/pkgs/by-name/oc/ocis/web.nix b/pkgs/by-name/oc/ocis/web.nix new file mode 100644 index 000000000000..eb8175b6dc92 --- /dev/null +++ b/pkgs/by-name/oc/ocis/web.nix @@ -0,0 +1,48 @@ +{ + lib, + stdenvNoCC, + nodejs, + pnpm, + fetchFromGitHub, +}: +stdenvNoCC.mkDerivation rec { + pname = "ocis-web"; + version = "8.0.5"; + + src = fetchFromGitHub { + owner = "owncloud"; + repo = "web"; + rev = "refs/tags/v${version}"; + hash = "sha256-hupdtK/V74+X7/eXoDmUjFvSKuhnoOtNQz7o6TLJXG4="; + }; + + nativeBuildInputs = [ + nodejs + pnpm.configHook + ]; + + buildPhase = '' + runHook preBuild + pnpm build + runHook postBuild + ''; + + installPhase = '' + runHook preInstall + mkdir -p $out/share + cp -r dist/* $out/share/ + runHook postInstall + ''; + + pnpmDeps = pnpm.fetchDeps { + inherit pname version src; + hash = "sha256-3Erva6srdkX1YQ727trx34Ufx524nz19MUyaDQToz6M="; + }; + + meta = { + homepage = "https://github.com/owncloud/ocis"; + description = "ownCloud Infinite Scale Stack"; + maintainers = with lib.maintainers; [ xinyangli ]; + license = lib.licenses.agpl3Only; + }; +}