From daf7a2e86f12151acb5f6221e00af207e8d2091f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert=20Sch=C3=BCtz?= Date: Thu, 9 Jul 2026 21:08:12 -0700 Subject: [PATCH 1/2] immichframe: refactor into one derivation --- pkgs/by-name/im/immichframe/package.nix | 81 +++++++++++-------------- 1 file changed, 35 insertions(+), 46 deletions(-) diff --git a/pkgs/by-name/im/immichframe/package.nix b/pkgs/by-name/im/immichframe/package.nix index 85e12a626778..1356ef473d74 100644 --- a/pkgs/by-name/im/immichframe/package.nix +++ b/pkgs/by-name/im/immichframe/package.nix @@ -1,70 +1,58 @@ { buildDotnetModule, - buildNpmPackage, dotnet-sdk, fetchFromGitHub, + fetchNpmDeps, lib, nixosTests, - writeShellApplication, - _experimental-update-script-combinators, + nodejs, + npmHooks, nix-update-script, }: -let +buildDotnetModule (finalAttrs: { + pname = "immichframe"; version = "1.0.33.0"; + src = fetchFromGitHub { owner = "immichFrame"; repo = "immichFrame"; - tag = "v${version}"; + tag = "v${finalAttrs.version}"; hash = "sha256-b8hfzNZJz9XCRO4UfzwK5OsrgqV2F5wnZlRH7h3Eo9Q="; }; - api = buildDotnetModule { - pname = "immichframe"; - inherit version src; - projectFile = "ImmichFrame.WebApi/ImmichFrame.WebApi.csproj"; - nugetDeps = ./deps.json; - dotnet-runtime = dotnet-sdk.aspnetcore; + projectFile = "ImmichFrame.WebApi/ImmichFrame.WebApi.csproj"; + nugetDeps = ./deps.json; + dotnet-runtime = dotnet-sdk.aspnetcore; - meta.mainProgram = "ImmichFrame.WebApi"; + nativeBuildInputs = [ + npmHooks.npmConfigHook + nodejs + ]; + + npmRoot = "immichFrame.Web"; + + npmDeps = fetchNpmDeps { + src = "${finalAttrs.src}/${finalAttrs.npmRoot}"; + hash = "sha256-PjbbBpYYUHH4oucJuk0FCdJa0LzTlkQnjkZ5MLziqTY="; }; - frontend = buildNpmPackage { - pname = "immichframe-frontend"; - inherit version src; - - sourceRoot = "${src.name}/immichFrame.Web"; - - npmBuildScript = "build"; - npmDepsHash = "sha256-PjbbBpYYUHH4oucJuk0FCdJa0LzTlkQnjkZ5MLziqTY="; - - installPhase = '' - runHook preInstall - - mkdir $out - cp -r build/ $out/wwwroot - - runHook postInstall - ''; - }; -in -writeShellApplication { - name = "ImmichFrame"; - - text = '' - cd ${frontend} - exec ${lib.getExe api} "$@" + preBuild = '' + pushd ${finalAttrs.npmRoot} + npm run build + popd ''; + postInstall = '' + cp -r ${finalAttrs.npmRoot}/build/* $out/lib/immichframe/wwwroot/ + ''; + + makeWrapperArgs = [ + "--chdir ${placeholder "out"}/lib/immichframe" + ]; + passthru = { - inherit api frontend; - updateScript = _experimental-update-script-combinators.sequence [ - (nix-update-script { attrPath = "immichframe.api"; }) - (nix-update-script { - attrPath = "immichframe.frontend"; - extraArgs = [ "--version=skip" ]; - }) - ]; + updateScript = nix-update-script { }; tests = { inherit (nixosTests) immichframe; }; }; @@ -72,7 +60,8 @@ writeShellApplication { description = "Display your photos from Immich as a digital photo frame"; homepage = "https://immichframe.dev"; license = lib.licenses.gpl3Only; + mainProgram = "ImmichFrame.WebApi"; maintainers = with lib.maintainers; [ jfly ]; platforms = lib.platforms.all; }; -} +}) From 651e439f9d9efc27afbc43112728943bcb51b5f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert=20Sch=C3=BCtz?= Date: Thu, 9 Jul 2026 21:09:43 -0700 Subject: [PATCH 2/2] immichframe: 1.0.33.0 -> 1.0.35.0 Diff: https://github.com/immichFrame/immichFrame/compare/v1.0.33.0...v1.0.35.0 Changelog: https://github.com/immichFrame/ImmichFrame/releases/tag/v1.0.34.0 https://github.com/immichFrame/ImmichFrame/releases/tag/v1.0.35.0 --- pkgs/by-name/im/immichframe/package.nix | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/pkgs/by-name/im/immichframe/package.nix b/pkgs/by-name/im/immichframe/package.nix index 1356ef473d74..b519fae3ed94 100644 --- a/pkgs/by-name/im/immichframe/package.nix +++ b/pkgs/by-name/im/immichframe/package.nix @@ -12,13 +12,13 @@ buildDotnetModule (finalAttrs: { pname = "immichframe"; - version = "1.0.33.0"; + version = "1.0.35.0"; src = fetchFromGitHub { owner = "immichFrame"; repo = "immichFrame"; tag = "v${finalAttrs.version}"; - hash = "sha256-b8hfzNZJz9XCRO4UfzwK5OsrgqV2F5wnZlRH7h3Eo9Q="; + hash = "sha256-VET0em+CyJzXPlCXjozj6SDhjD26lH94AETFKGG895I="; }; projectFile = "ImmichFrame.WebApi/ImmichFrame.WebApi.csproj"; @@ -34,7 +34,7 @@ buildDotnetModule (finalAttrs: { npmDeps = fetchNpmDeps { src = "${finalAttrs.src}/${finalAttrs.npmRoot}"; - hash = "sha256-PjbbBpYYUHH4oucJuk0FCdJa0LzTlkQnjkZ5MLziqTY="; + hash = "sha256-RyMY5ooC6Q+W+Y24ILv+WCcWLMDToZ52yefFuoAYubY="; }; preBuild = '' @@ -57,6 +57,7 @@ buildDotnetModule (finalAttrs: { }; meta = { + changelog = "https://github.com/immichFrame/ImmichFrame/releases/tag/${finalAttrs.src.tag}"; description = "Display your photos from Immich as a digital photo frame"; homepage = "https://immichframe.dev"; license = lib.licenses.gpl3Only;