From 24fd1fe6c62b7a9fc347794fde043285da272f5c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Isma=C3=ABl=20Bouya?= Date: Thu, 13 Dec 2018 21:25:24 +0100 Subject: Initial commit published for NUR --- pkgs/webapps/nextcloud/default.nix | 63 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 pkgs/webapps/nextcloud/default.nix (limited to 'pkgs/webapps/nextcloud/default.nix') diff --git a/pkgs/webapps/nextcloud/default.nix b/pkgs/webapps/nextcloud/default.nix new file mode 100644 index 00000000..2d4eb390 --- /dev/null +++ b/pkgs/webapps/nextcloud/default.nix @@ -0,0 +1,63 @@ +{ varDir ? "/var/lib/nextcloud", otherConfig ? {}, lib, stdenv, fetchurl }: +let + buildApp = { appName, version, url, sha256, otherConfig ? {}, installPhase ? "mkdir -p $out && cp -R . $out/" }: + stdenv.mkDerivation rec { + name = "nextcloud-app-${appName}-${version}"; + inherit version; + phases = "unpackPhase installPhase"; + inherit installPhase; + src = fetchurl { inherit url sha256; }; + passthru = { + inherit appName otherConfig; + }; + }; + withApps = apps: package.overrideAttrs(old: { + name = "${old.name}-with-apps"; + + installPhase = old.installPhase + ( + builtins.concatStringsSep "\n" ( + map (value: "ln -sf ${value} $out/apps/${value.appName}") apps + )); + + passthru = old.passthru // { + otherConfig = with lib.attrsets; with lib.lists; let + zipped = zipAttrs ([old.otherConfig or {}] ++ map (v: v.otherConfig) apps); + in + { + mimetypealiases = foldr (h: prev: prev // h) {} zipped.mimetypealiases; + mimetypemapping = mapAttrs (_: v: unique (flatten v)) (zipAttrs zipped.mimetypemapping); + }; + inherit apps; + withApps = moreApps: old.withApps (moreApps ++ apps); + }; + }); + + package = stdenv.mkDerivation rec { + name = "nextcloud-${version}"; + version = "16.0.0"; + + src = fetchurl { + url = "https://download.nextcloud.com/server/releases/${name}.tar.bz2"; + sha256 = "0bj014vczlrql1w32pqmr7cyqn9awnyzpi2syxhg16qxic1gfcj5"; + }; + + installPhase = '' + mkdir -p $out/ + cp -R . $out/ + rm -r $out/config + ln -sf ${varDir}/config $out/config + ''; + + passthru = { + apps = []; + inherit otherConfig buildApp withApps varDir; + }; + meta = { + description = "Sharing solution for files, calendars, contacts and more"; + homepage = https://nextcloud.com; + maintainers = with lib.maintainers; [ schneefux bachp globin fpletz ]; + license = lib.licenses.agpl3Plus; + platforms = with lib.platforms; unix; + }; + }; +in package -- cgit v1.2.3