From 57b89494a6826c9cfabfd6a623614b65b1e31afd Mon Sep 17 00:00:00 2001 From: phanirithvij Date: Sun, 31 May 2026 21:31:39 +0530 Subject: [PATCH 1/2] livebook: 0.18.6 -> 0.19.8; fix build Signed-off-by: phanirithvij --- .../beam-modules/livebook/default.nix | 104 +++++++++++++++--- 1 file changed, 90 insertions(+), 14 deletions(-) diff --git a/pkgs/development/beam-modules/livebook/default.nix b/pkgs/development/beam-modules/livebook/default.nix index 81adf8d0e35a..57beb218cef4 100644 --- a/pkgs/development/beam-modules/livebook/default.nix +++ b/pkgs/development/beam-modules/livebook/default.nix @@ -1,46 +1,121 @@ { lib, - beamPackages, + stdenv, makeWrapper, fetchFromGitHub, + versionCheckHook, + writableTmpDirAsHomeHook, + + bun, + beamPackages, + nixosTests, nix-update-script, }: beamPackages.mixRelease rec { pname = "livebook"; - version = "0.18.6"; + version = "0.19.8"; inherit (beamPackages) elixir; buildInputs = [ beamPackages.erlang ]; - nativeBuildInputs = [ makeWrapper ]; + nativeBuildInputs = [ + bun + makeWrapper + writableTmpDirAsHomeHook + ]; src = fetchFromGitHub { owner = "livebook-dev"; repo = "livebook"; tag = "v${version}"; - hash = "sha256-8pFvY86ht2NMUtknjt5M7QasOKnoHvQdYJrOlgTyueU="; + hash = "sha256-cIFnGUJ8yRnEBL9eu4Jpg1sMlTV1t/ybhHusLSFdZEY="; }; mixFodDeps = beamPackages.fetchMixDeps { pname = "mix-deps-${pname}"; inherit src version; - hash = "sha256-pfHzcYEEvj+x1/vLKhJ6bAsKGg19UisVK6h0xskhu74="; + hash = "sha256-T74RmUORPdNibxdl+bRGyYyOdnKs1TyjtdutLtfLNLM="; }; - postInstall = '' - wrapProgram $out/bin/livebook \ - --prefix PATH : ${ - lib.makeBinPath [ - beamPackages.elixir - beamPackages.erlang - ] - } \ - --set MIX_REBAR3 ${beamPackages.rebar3}/bin/rebar3 + node_modules = stdenv.mkDerivation { + pname = "${pname}-node_modules"; + inherit src version; + nativeBuildInputs = [ + bun + writableTmpDirAsHomeHook + ]; + dontBuild = true; + dontFixup = true; + installPhase = '' + mkdir -p deps/phoenix deps/phoenix_html deps/phoenix_live_view + echo '{"name": "phoenix", "version": "1.0.0"}' > deps/phoenix/package.json + echo '{"name": "phoenix_html", "version": "1.0.0"}' > deps/phoenix_html/package.json + echo '{"name": "phoenix_live_view", "version": "1.0.0"}' > deps/phoenix_live_view/package.json + cd assets + bun install \ + --no-cache \ + --backend=copyfile \ + --cpu="*" \ + --frozen-lockfile \ + --ignore-scripts \ + --no-progress \ + --os="*" + mkdir -p $out + cp -r node_modules $out/ + rm -rf $out/node_modules/phoenix + rm -rf $out/node_modules/phoenix_html + rm -rf $out/node_modules/phoenix_live_view + ''; + outputHashMode = "recursive"; + outputHashAlgo = "sha256"; + outputHash = "sha256-XtEkedj5QJh1tveKKd5sh4xcC6Gol1DUweQKEw1jLgU="; + }; + + postPatch = '' + substituteInPlace lib/mix/tasks/compile.ensure_livebook_priv.ex \ + --replace-fail 'Mix.Task.run("bun.install", ~w"--if-missing")' ':ok' \ + --replace-fail 'Mix.Task.run("bun", ~w"assets install")' ':ok' \ + --replace-fail 'Mix.Task.run("bun", ~w" assets run build")' ':ok' ''; + preBuild = '' + cp -r ${node_modules}/node_modules assets/node_modules + chmod -R +w assets/node_modules + ln -sf ../../deps/phoenix assets/node_modules/phoenix + ln -sf ../../deps/phoenix_html assets/node_modules/phoenix_html + ln -sf ../../deps/phoenix_live_view assets/node_modules/phoenix_live_view + pushd assets + bun --bun ./node_modules/vite/bin/vite.js build + popd + ''; + + postInstall = + let + path = lib.makeBinPath [ + beamPackages.elixir + beamPackages.erlang + ]; + in + '' + wrapProgram $out/bin/livebook \ + --prefix PATH : ${path} \ + --set MIX_REBAR3 ${beamPackages.rebar3}/bin/rebar3 + + wrapProgram $out/bin/server \ + --prefix PATH : ${path} + ''; + + nativeInstallCheckInputs = [ + versionCheckHook + writableTmpDirAsHomeHook + ]; + versionCheckProgramArg = [ "version" ]; + versionCheckKeepEnvironment = [ "HOME" ]; + doInstallCheck = true; + passthru = { updateScript = nix-update-script { }; tests = { @@ -52,6 +127,7 @@ beamPackages.mixRelease rec { license = lib.licenses.asl20; homepage = "https://livebook.dev/"; description = "Automate code & data workflows with interactive Elixir notebooks"; + mainProgram = "livebook"; maintainers = with lib.maintainers; [ munksgaard scvalex From cf27100ad816ccd9d433a28691d53bef20dd48fd Mon Sep 17 00:00:00 2001 From: phanirithvij Date: Sun, 31 May 2026 23:14:33 +0530 Subject: [PATCH 2/2] livebook: add ngi team Signed-off-by: phanirithvij --- pkgs/development/beam-modules/livebook/default.nix | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/pkgs/development/beam-modules/livebook/default.nix b/pkgs/development/beam-modules/livebook/default.nix index 57beb218cef4..ec77a1344c3f 100644 --- a/pkgs/development/beam-modules/livebook/default.nix +++ b/pkgs/development/beam-modules/livebook/default.nix @@ -133,6 +133,9 @@ beamPackages.mixRelease rec { scvalex ]; platforms = lib.platforms.unix; - teams = [ lib.teams.beam ]; + teams = [ + lib.teams.beam + lib.teams.ngi + ]; }; }