diff --git a/pkgs/by-name/la/lasuite-meet-frontend/package.nix b/pkgs/by-name/la/lasuite-meet-frontend/package.nix deleted file mode 100644 index fe6d4f6225ae..000000000000 --- a/pkgs/by-name/la/lasuite-meet-frontend/package.nix +++ /dev/null @@ -1,51 +0,0 @@ -{ - lib, - fetchFromGitHub, - fetchNpmDeps, - buildNpmPackage, -}: - -buildNpmPackage rec { - pname = "lasuite-meet-frontend"; - version = "1.14.0"; - - src = fetchFromGitHub { - owner = "suitenumerique"; - repo = "meet"; - tag = "v${version}"; - hash = "sha256-baQVCnkEv5aUy4mKdiscPiiEvwYPfezF03i1HPX64oA="; - }; - - sourceRoot = "source/src/frontend"; - - npmDeps = fetchNpmDeps { - inherit version src; - sourceRoot = "source/src/frontend"; - hash = "sha256-iXiadLaXFKmph6psIss0/5FjQkmjnDnQMxAmtrqJn+0="; - }; - - buildPhase = '' - runHook preBuild - - npm run build - - runHook postBuild - ''; - - installPhase = '' - runHook preInstall - - cp -r dist $out - - runHook postInstall - ''; - - meta = { - description = "Open source alternative to Google Meet and Zoom powered by LiveKit: HD video calls, screen sharing, and chat features. Built with Django and React"; - homepage = "https://github.com/suitenumerique/meet"; - changelog = "https://github.com/suitenumerique/meet/blob/${src.tag}/CHANGELOG.md"; - license = lib.licenses.mit; - maintainers = with lib.maintainers; [ soyouzpanda ]; - platforms = lib.platforms.all; - }; -} diff --git a/pkgs/by-name/la/lasuite-meet/addon-outlook.nix b/pkgs/by-name/la/lasuite-meet/addon-outlook.nix new file mode 100644 index 000000000000..f578f0635d9a --- /dev/null +++ b/pkgs/by-name/la/lasuite-meet/addon-outlook.nix @@ -0,0 +1,42 @@ +{ + src, + version, + meta, + fetchNpmDeps, + buildNpmPackage, + pkg-config, + libsecret, +}: +buildNpmPackage (finalAttrs: { + pname = "lasuite-meet-addon-outlook"; + inherit src version; + + sourceRoot = "${finalAttrs.src.name}/src/addons/outlook"; + + nativeBuildInputs = [ + pkg-config + ]; + + buildInputs = [ + libsecret + ]; + + npmDeps = fetchNpmDeps { + inherit (finalAttrs) version src sourceRoot; + hash = "sha256-ReYXXYFzqZl0HWAgLdlw25ZamZJ06Aez8g1Tv/Nt3cE="; + }; + npmBuildScript = "build"; + + installPhase = '' + runHook preInstall + + cp -r dist $out + cp manifest.xml $out + + runHook postInstall + ''; + + meta = meta // { + description = "Microsoft Outlook add-in support for LaSuite Meet"; + }; +}) diff --git a/pkgs/by-name/la/lasuite-meet/frontend.nix b/pkgs/by-name/la/lasuite-meet/frontend.nix new file mode 100644 index 000000000000..f4bb9ffb5182 --- /dev/null +++ b/pkgs/by-name/la/lasuite-meet/frontend.nix @@ -0,0 +1,31 @@ +{ + src, + version, + meta, + fetchNpmDeps, + buildNpmPackage, +}: +buildNpmPackage (finalAttrs: { + pname = "lasuite-meet-frontend"; + inherit src version; + + sourceRoot = "${finalAttrs.src.name}/src/frontend"; + + npmDeps = fetchNpmDeps { + inherit (finalAttrs) version src sourceRoot; + hash = "sha256-LDH8aR+FSiIFYMDaQ3wNYAzv6VpHtH5X+DMHGBhPkm0="; + }; + npmBuildScript = "build"; + + installPhase = '' + runHook preInstall + + cp -r dist $out + + runHook postInstall + ''; + + meta = meta // { + description = "Open source alternative to Google Meet and Zoom powered by LiveKit: HD video calls, screen sharing, and chat features. Built with Django and React"; + }; +}) diff --git a/pkgs/by-name/la/lasuite-meet/mail.nix b/pkgs/by-name/la/lasuite-meet/mail.nix new file mode 100644 index 000000000000..878430ab0c48 --- /dev/null +++ b/pkgs/by-name/la/lasuite-meet/mail.nix @@ -0,0 +1,40 @@ +{ + src, + version, + meta, + fetchNpmDeps, + buildNpmPackage, +}: +buildNpmPackage (finalAttrs: { + pname = "lasuite-meet-mail"; + inherit src version; + + sourceRoot = "${finalAttrs.src.name}/src/mail"; + + # TODO: Remove package-lock.json patch when + # https://github.com/suitenumerique/meet/pull/1321 is merged. + postPatch = '' + substituteInPlace bin/html-to-plain-text bin/mjml-to-html \ + --replace-fail \ + '../backend/core/templates/mail' \ + '${placeholder "out"}' + + cp ${./package-lock.json} package-lock.json + ''; + + npmDeps = fetchNpmDeps { + pname = "${finalAttrs.pname}-npm-deps"; + inherit version src; + inherit (finalAttrs) sourceRoot; + hash = "sha256-jjLzgGqCsMu6Smyfaam6coqOM9UW2zG88adSPVrWPEE="; + + postPatch = "cp ${./package-lock.json} package-lock.json"; + }; + npmBuildScript = "build"; + + dontInstall = true; + + meta = meta // { + description = "HTML mail templates for LaSuite Meet"; + }; +}) diff --git a/pkgs/by-name/la/lasuite-meet/package.nix b/pkgs/by-name/la/lasuite-meet/package.nix index 2a47042fdcf1..ee936d36244a 100644 --- a/pkgs/by-name/la/lasuite-meet/package.nix +++ b/pkgs/by-name/la/lasuite-meet/package.nix @@ -1,15 +1,14 @@ { + callPackage, lib, fetchFromGitHub, - fetchNpmDeps, nixosTests, python3, stdenv, - nodejs, - npmHooks, }: let version = "1.15.0"; + src = fetchFromGitHub { owner = "suitenumerique"; repo = "meet"; @@ -17,39 +16,17 @@ let hash = "sha256-18DcrrEvqWR6caEVZYxQlSnKcxItEpNE+bMhtS4Aa0M="; }; - mail-templates = stdenv.mkDerivation (finalAttrs: { - name = "lasuite-meet-${version}-mjml"; - inherit src; + meta = { + homepage = "https://github.com/suitenumerique/meet"; + changelog = "https://github.com/suitenumerique/meet/blob/${src.tag}/CHANGELOG.md"; + license = lib.licenses.mit; + maintainers = with lib.maintainers; [ soyouzpanda ]; + platforms = lib.platforms.all; + }; - sourceRoot = "${finalAttrs.src.name}/src/mail"; - - postPatch = '' - substituteInPlace bin/html-to-plain-text bin/mjml-to-html \ - --replace-fail \ - '../backend/core/templates/mail' \ - '${placeholder "out"}' - - cp ${./package-lock.json} package-lock.json - ''; - - npmDeps = fetchNpmDeps { - name = "${finalAttrs.name}-npm-deps"; - inherit version src; - inherit (finalAttrs) sourceRoot; - hash = "sha256-jjLzgGqCsMu6Smyfaam6coqOM9UW2zG88adSPVrWPEE="; - - postPatch = "cp ${./package-lock.json} package-lock.json"; - }; - npmBuildScript = "build"; - - nativeBuildInputs = [ - nodejs - npmHooks.npmBuildHook - npmHooks.npmConfigHook - ]; - - dontInstall = true; - }); + mail = callPackage ./mail.nix { inherit src version meta; }; + frontend = callPackage ./frontend.nix { inherit src version meta; }; + outlook = callPackage ./addon-outlook.nix { inherit src version meta; }; python = python3.override { self = python3; @@ -159,20 +136,21 @@ python.pkgs.buildPythonApplication (finalAttrs: { --prefix PYTHONPATH : "${pythonPath}:$out/${python.sitePackages}" mkdir -p $out/${python.sitePackages}/core/templates - ln -sv ${mail-templates}/ $out/${python.sitePackages}/core/templates/mail + ln -sv ${finalAttrs.passthru.mail}/ $out/${python.sitePackages}/core/templates/mail ''; - passthru.tests = { - login-and-create-room = nixosTests.lasuite-meet; + passthru = { + inherit mail frontend; + addons = { + inherit outlook; + }; + tests = { + login-and-create-room = nixosTests.lasuite-meet; + }; }; - meta = { + meta = meta // { description = "Open source alternative to Google Meet and Zoom powered by LiveKit: HD video calls, screen sharing, and chat features. Built with Django and React"; - homepage = "https://github.com/suitenumerique/meet"; - changelog = "https://github.com/suitenumerique/meet/blob/${finalAttrs.src.tag}/CHANGELOG.md"; - license = lib.licenses.mit; - maintainers = with lib.maintainers; [ soyouzpanda ]; mainProgram = "meet"; - platforms = lib.platforms.all; }; })