about summary refs log tree commit diff
path: root/nixpkgs/pkgs/development/beam-modules
diff options
context:
space:
mode:
authorAlyssa Ross <hi@alyssa.is>2023-06-16 06:56:35 +0000
committerAlyssa Ross <hi@alyssa.is>2023-06-16 06:56:35 +0000
commit99fcaeccb89621dd492203ce1f2d551c06f228ed (patch)
tree41cb730ae07383004789779b0f6e11cb3f4642a3 /nixpkgs/pkgs/development/beam-modules
parent59c5f5ac8682acc13bb22bc29c7cf02f7d75f01f (diff)
parent75a5ebf473cd60148ba9aec0d219f72e5cf52519 (diff)
downloadnixlib-99fcaeccb89621dd492203ce1f2d551c06f228ed.tar
nixlib-99fcaeccb89621dd492203ce1f2d551c06f228ed.tar.gz
nixlib-99fcaeccb89621dd492203ce1f2d551c06f228ed.tar.bz2
nixlib-99fcaeccb89621dd492203ce1f2d551c06f228ed.tar.lz
nixlib-99fcaeccb89621dd492203ce1f2d551c06f228ed.tar.xz
nixlib-99fcaeccb89621dd492203ce1f2d551c06f228ed.tar.zst
nixlib-99fcaeccb89621dd492203ce1f2d551c06f228ed.zip
Merge branch 'nixos-unstable' of https://github.com/NixOS/nixpkgs
Conflicts:
	nixpkgs/nixos/modules/config/console.nix
	nixpkgs/nixos/modules/services/mail/mailman.nix
	nixpkgs/nixos/modules/services/mail/public-inbox.nix
	nixpkgs/nixos/modules/services/mail/rss2email.nix
	nixpkgs/nixos/modules/services/networking/ssh/sshd.nix
	nixpkgs/pkgs/applications/networking/instant-messengers/dino/default.nix
	nixpkgs/pkgs/applications/networking/irc/weechat/default.nix
	nixpkgs/pkgs/applications/window-managers/sway/default.nix
	nixpkgs/pkgs/build-support/go/module.nix
	nixpkgs/pkgs/build-support/rust/build-rust-package/default.nix
	nixpkgs/pkgs/development/interpreters/python/default.nix
	nixpkgs/pkgs/development/node-packages/overrides.nix
	nixpkgs/pkgs/development/tools/b4/default.nix
	nixpkgs/pkgs/servers/dict/dictd-db.nix
	nixpkgs/pkgs/servers/mail/public-inbox/default.nix
	nixpkgs/pkgs/tools/security/pinentry/default.nix
	nixpkgs/pkgs/tools/text/unoconv/default.nix
	nixpkgs/pkgs/top-level/all-packages.nix
Diffstat (limited to 'nixpkgs/pkgs/development/beam-modules')
-rw-r--r--nixpkgs/pkgs/development/beam-modules/build-erlang-mk.nix4
-rw-r--r--nixpkgs/pkgs/development/beam-modules/build-hex.nix4
-rw-r--r--nixpkgs/pkgs/development/beam-modules/build-mix.nix3
-rw-r--r--nixpkgs/pkgs/development/beam-modules/build-rebar3.nix8
-rw-r--r--nixpkgs/pkgs/development/beam-modules/default.nix21
-rw-r--r--nixpkgs/pkgs/development/beam-modules/elixir-ls/default.nix17
-rw-r--r--nixpkgs/pkgs/development/beam-modules/elixir-ls/pin.json5
-rwxr-xr-xnixpkgs/pkgs/development/beam-modules/elixir-ls/update.sh31
-rw-r--r--nixpkgs/pkgs/development/beam-modules/erlang-ls/default.nix18
-rw-r--r--nixpkgs/pkgs/development/beam-modules/erlfmt/default.nix4
-rw-r--r--nixpkgs/pkgs/development/beam-modules/fetch-hex.nix13
-rw-r--r--nixpkgs/pkgs/development/beam-modules/fetch-mix-deps.nix15
-rw-r--r--nixpkgs/pkgs/development/beam-modules/fetch-rebar-deps.nix9
-rw-r--r--nixpkgs/pkgs/development/beam-modules/hex/default.nix4
-rw-r--r--nixpkgs/pkgs/development/beam-modules/lib.nix5
-rw-r--r--nixpkgs/pkgs/development/beam-modules/mix-release.nix16
-rw-r--r--nixpkgs/pkgs/development/beam-modules/rebar3-release.nix6
17 files changed, 91 insertions, 92 deletions
diff --git a/nixpkgs/pkgs/development/beam-modules/build-erlang-mk.nix b/nixpkgs/pkgs/development/beam-modules/build-erlang-mk.nix
index d1afa55387d3..eb70517c82ec 100644
--- a/nixpkgs/pkgs/development/beam-modules/build-erlang-mk.nix
+++ b/nixpkgs/pkgs/development/beam-modules/build-erlang-mk.nix
@@ -17,8 +17,6 @@
 , ...
 }@attrs:
 
-with lib;
-
 let
   debugInfoFlag = lib.optionalString (enableDebugInfo || erlang.debugInfo) "+debug_info";
 
@@ -107,4 +105,4 @@ let
     };
   });
 in
-fix pkg
+lib.fix pkg
diff --git a/nixpkgs/pkgs/development/beam-modules/build-hex.nix b/nixpkgs/pkgs/development/beam-modules/build-hex.nix
index 1ebe3760ec8d..b5d20fa97783 100644
--- a/nixpkgs/pkgs/development/beam-modules/build-hex.nix
+++ b/nixpkgs/pkgs/development/beam-modules/build-hex.nix
@@ -5,8 +5,6 @@
 , hexPkg ? name
 , ... }@attrs:
 
-with lib;
-
 let
   pkg = self: builder (attrs // {
 
@@ -17,4 +15,4 @@ let
     };
   });
 in
-  fix pkg
+  lib.fix pkg
diff --git a/nixpkgs/pkgs/development/beam-modules/build-mix.nix b/nixpkgs/pkgs/development/beam-modules/build-mix.nix
index 6b6ef7ce3501..081d4988bace 100644
--- a/nixpkgs/pkgs/development/beam-modules/build-mix.nix
+++ b/nixpkgs/pkgs/development/beam-modules/build-mix.nix
@@ -15,7 +15,6 @@
 , ...
 }@attrs:
 
-with lib;
 let
   shell = drv: stdenv.mkDerivation {
     name = "interactive-shell-${drv.name}";
@@ -90,5 +89,5 @@ let
     };
   });
 in
-fix pkg
+lib.fix pkg
 
diff --git a/nixpkgs/pkgs/development/beam-modules/build-rebar3.nix b/nixpkgs/pkgs/development/beam-modules/build-rebar3.nix
index 0dfd68f0993c..43d613d072ee 100644
--- a/nixpkgs/pkgs/development/beam-modules/build-rebar3.nix
+++ b/nixpkgs/pkgs/development/beam-modules/build-rebar3.nix
@@ -16,8 +16,6 @@
 , ...
 }@attrs:
 
-with lib;
-
 let
   debugInfoFlag = lib.optionalString (enableDebugInfo || erlang.debugInfo) "debug-info";
 
@@ -30,7 +28,7 @@ let
     buildInputs = [ drv ];
   };
 
-  customPhases = filterAttrs
+  customPhases = lib.filterAttrs
     (_: v: v != null)
     { inherit setupHook configurePhase buildPhase installPhase; };
 
@@ -40,7 +38,7 @@ let
     inherit version;
 
     buildInputs = buildInputs ++ [ erlang rebar3 openssl libyaml ];
-    propagatedBuildInputs = unique beamDeps;
+    propagatedBuildInputs = lib.unique beamDeps;
 
     inherit src;
 
@@ -85,4 +83,4 @@ let
     };
   } // customPhases);
 in
-fix pkg
+lib.fix pkg
diff --git a/nixpkgs/pkgs/development/beam-modules/default.nix b/nixpkgs/pkgs/development/beam-modules/default.nix
index 1cbdf04bef93..98d9de9e70b2 100644
--- a/nixpkgs/pkgs/development/beam-modules/default.nix
+++ b/nixpkgs/pkgs/development/beam-modules/default.nix
@@ -1,6 +1,7 @@
-{ lib, pkgs, erlang }:
+{ lib, __splicedPackages, erlang }:
 
 let
+  pkgs = __splicedPackages;
   inherit (lib) makeExtensible;
 
   lib' = pkgs.callPackage ./lib.nix { };
@@ -42,29 +43,29 @@ let
       elvis-erlang = callPackage ./elvis-erlang { };
 
       # BEAM-based languages.
-      elixir = elixir_1_13;
+      elixir = elixir_1_14;
 
-      elixir_1_13 = lib'.callElixir ../interpreters/elixir/1.13.nix {
+      elixir_1_14 = lib'.callElixir ../interpreters/elixir/1.14.nix {
         inherit erlang;
         debugInfo = true;
       };
 
-      elixir_1_12 = lib'.callElixir ../interpreters/elixir/1.12.nix {
+      elixir_1_13 = lib'.callElixir ../interpreters/elixir/1.13.nix {
         inherit erlang;
         debugInfo = true;
       };
 
-      elixir_1_11 = lib'.callElixir ../interpreters/elixir/1.11.nix {
+      elixir_1_12 = lib'.callElixir ../interpreters/elixir/1.12.nix {
         inherit erlang;
         debugInfo = true;
       };
 
-      elixir_1_10 = lib'.callElixir ../interpreters/elixir/1.10.nix {
+      elixir_1_11 = lib'.callElixir ../interpreters/elixir/1.11.nix {
         inherit erlang;
         debugInfo = true;
       };
 
-      elixir_1_9 = lib'.callElixir ../interpreters/elixir/1.9.nix {
+      elixir_1_10 = lib'.callElixir ../interpreters/elixir/1.10.nix {
         inherit erlang;
         debugInfo = true;
       };
@@ -72,10 +73,10 @@ let
       # Remove old versions of elixir, when the supports fades out:
       # https://hexdocs.pm/elixir/compatibility-and-deprecations.html
 
-      elixir_ls = callPackage ./elixir-ls { inherit elixir fetchMixDeps mixRelease; };
+      elixir-ls = callPackage ./elixir-ls { inherit elixir fetchMixDeps mixRelease; };
 
-      lfe = lfe_1_3;
-      lfe_1_3 = lib'.callLFE ../interpreters/lfe/1.3.nix { inherit erlang buildRebar3 buildHex; };
+      lfe = lfe_2_1;
+      lfe_2_1 = lib'.callLFE ../interpreters/lfe/2.1.nix { inherit erlang buildRebar3 buildHex; };
 
       # Non hex packages. Examples how to build Rebar/Mix packages with and
       # without helper functions buildRebar3 and buildMix.
diff --git a/nixpkgs/pkgs/development/beam-modules/elixir-ls/default.nix b/nixpkgs/pkgs/development/beam-modules/elixir-ls/default.nix
index 72862d5b9689..a4666f1520ab 100644
--- a/nixpkgs/pkgs/development/beam-modules/elixir-ls/default.nix
+++ b/nixpkgs/pkgs/development/beam-modules/elixir-ls/default.nix
@@ -1,29 +1,30 @@
-{ lib, elixir, fetchFromGitHub, fetchMixDeps, mixRelease }:
+{ lib, elixir, fetchFromGitHub, fetchMixDeps, mixRelease, nix-update-script }:
 # Based on the work of Hauleth
 # None of this would have happened without him
 
 let
   pname = "elixir-ls";
-  pinData = lib.importJSON ./pin.json;
-  version = pinData.version;
+  version = "0.14.6";
   src = fetchFromGitHub {
     owner = "elixir-lsp";
     repo = "elixir-ls";
     rev = "v${version}";
-    sha256 = pinData.sha256;
+    hash = "sha256-O977DZLWPyLafIaOTPZKI4MOtK9E9TDProf2xyk05aI";
     fetchSubmodules = true;
   };
 in
 mixRelease  {
   inherit pname version src elixir;
 
+  stripDebug = true;
+
   mixFodDeps = fetchMixDeps {
     pname = "mix-deps-${pname}";
     inherit src version elixir;
-    sha256 = pinData.depsSha256;
+    hash = "sha256-jF1Plkz1D85aWkiNgeBlJmHndhr7us+8+m/gMkXHvDw=";
   };
 
-  # elixir_ls is an umbrella app
+  # elixir-ls is an umbrella app
   # override configurePhase to not skip umbrella children
   configurePhase = ''
     runHook preConfigure
@@ -31,7 +32,7 @@ mixRelease  {
     runHook postConfigure
   '';
 
-  # elixir_ls require a special step for release
+  # elixir-ls require a special step for release
   # compile and release need to be performed together because
   # of the no-deps-check requirement
   buildPhase = ''
@@ -71,5 +72,5 @@ mixRelease  {
     platforms = platforms.unix;
     maintainers = teams.beam.members;
   };
-  passthru.updateScript = ./update.sh;
+  passthru.updateScript = nix-update-script { };
 }
diff --git a/nixpkgs/pkgs/development/beam-modules/elixir-ls/pin.json b/nixpkgs/pkgs/development/beam-modules/elixir-ls/pin.json
deleted file mode 100644
index a10bee67d893..000000000000
--- a/nixpkgs/pkgs/development/beam-modules/elixir-ls/pin.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
-  "version": "0.10.0",
-  "sha256": "sha256-3/Ndf7cOZZ9H+Oq6LQgoMcbtUNoBaDuiy5YKT40yA3E=",
-  "depsSha256": "sha256-6FghRXKNXgwxwtGeW+ejVsbaCN7rrCDYu3AZgJCYODU="
-}
diff --git a/nixpkgs/pkgs/development/beam-modules/elixir-ls/update.sh b/nixpkgs/pkgs/development/beam-modules/elixir-ls/update.sh
deleted file mode 100755
index eaa73815d735..000000000000
--- a/nixpkgs/pkgs/development/beam-modules/elixir-ls/update.sh
+++ /dev/null
@@ -1,31 +0,0 @@
-#!/usr/bin/env nix-shell
-#! nix-shell -i oil -p jq sd nix-prefetch-github ripgrep
-
-# TODO set to `verbose` or `extdebug` once implemented in oil
-set -x
-
-const directory = $(dirname $0 | xargs realpath)
-const owner = "elixir-lsp"
-const repo = "elixir-ls"
-const latest_rev = $(curl -q https://api.github.com/repos/${owner}/${repo}/releases/latest | \
-  jq -r '.tag_name')
-const latest_version = $(echo $latest_rev | sd 'v' '')
-const current_version = $(jq -r '.version' $directory/pin.json)
-if ("$latest_version" === "$current_version") {
-  echo "elixir-ls is already up-to-date"
-  return 0
-} else {
-  const tarball_meta = $(nix-prefetch-github $owner $repo --rev "$latest_rev")
-  const tarball_hash = "sha256-$(echo $tarball_meta | jq -r '.sha256')"
-  const sha256s = $(rg '"sha256-.+"' $directory/default.nix | sd '.+"(.+)";' '$1' )
-
-  jq ".version = \"$latest_version\" | \
-      .\"sha256\" = \"$tarball_hash\" | \
-      .\"depsSha256\" = \"\"" $directory/pin.json | sponge $directory/pin.json
-
-  const new_mix_hash = $(nix-build -A elixir_ls.mixFodDeps 2>&1 | \
-    tail -n 1 | \
-    sd '\s+got:\s+' '')
-
-  jq ".depsSha256 = \"$new_mix_hash\"" $directory/pin.json | sponge $directory/pin.json
-}
diff --git a/nixpkgs/pkgs/development/beam-modules/erlang-ls/default.nix b/nixpkgs/pkgs/development/beam-modules/erlang-ls/default.nix
index a2739e4b6f6f..952034d5e01a 100644
--- a/nixpkgs/pkgs/development/beam-modules/erlang-ls/default.nix
+++ b/nixpkgs/pkgs/development/beam-modules/erlang-ls/default.nix
@@ -1,7 +1,7 @@
 { fetchFromGitHub, fetchgit, fetchHex, rebar3Relx, buildRebar3, rebar3-proper
-, stdenv, writeScript, lib }:
+, stdenv, writeScript, lib, erlang }:
 let
-  version = "0.35.0";
+  version = "0.47.1";
   owner = "erlang-ls";
   repo = "erlang_ls";
   deps = import ./rebar-deps.nix {
@@ -11,6 +11,11 @@ let
       proper = super.proper.overrideAttrs (_: {
         configurePhase = "true";
       });
+      redbug = super.redbug.overrideAttrs (_: {
+        patchPhase = ''
+          substituteInPlace rebar.config --replace ", warnings_as_errors" ""
+          '';
+      });
     });
   };
 in
@@ -19,11 +24,17 @@ rebar3Relx {
   inherit version;
   src = fetchFromGitHub {
     inherit owner repo;
-    sha256 = "sha256-5pGFLatcNqxpQZtu/qgwX88C8TZvk+U8ez2IGf+jgRA=";
+    sha256 = "sha256-pW78CBOM0Yi5taPHdCfTTb9H1fbhuQFpf6jaf0cTQdA=";
     rev = version;
   };
   releaseType = "escript";
   beamDeps = builtins.attrValues deps;
+
+  # https://github.com/erlang-ls/erlang_ls/issues/1429
+  postPatch =  ''
+    rm apps/els_lsp/test/els_diagnostics_SUITE.erl
+  '';
+
   buildPlugins = [ rebar3-proper ];
   buildPhase = "HOME=. make";
   # based on https://github.com/erlang-ls/erlang_ls/blob/main/.github/workflows/build.yml
@@ -45,6 +56,7 @@ rebar3Relx {
     description = "The Erlang Language Server";
     platforms = platforms.unix;
     license = licenses.asl20;
+    mainProgram = "erlang_ls";
   };
   passthru.updateScript = writeScript "update.sh" ''
     #!/usr/bin/env nix-shell
diff --git a/nixpkgs/pkgs/development/beam-modules/erlfmt/default.nix b/nixpkgs/pkgs/development/beam-modules/erlfmt/default.nix
index da577f2264c0..8c1d3f72c7e0 100644
--- a/nixpkgs/pkgs/development/beam-modules/erlfmt/default.nix
+++ b/nixpkgs/pkgs/development/beam-modules/erlfmt/default.nix
@@ -2,12 +2,12 @@
 
 rebar3Relx rec {
   pname = "erlfmt";
-  version = "1.0.0";
+  version = "1.2.0";
   releaseType = "escript";
   src = fetchFromGitHub {
     owner = "WhatsApp";
     repo = "erlfmt";
-    sha256 = "19apbs9xr4j8qjb3sv9ilknqjw4a7bvp8jvwrjiwvwnxzzm2kjm6";
+    sha256 = "sha256-mma4QH6GlayTG5I9hW9wNZph/IJcCXjiY7Ft3hfxaPg=";
     rev = "v${version}";
   };
   meta = with lib; {
diff --git a/nixpkgs/pkgs/development/beam-modules/fetch-hex.nix b/nixpkgs/pkgs/development/beam-modules/fetch-hex.nix
index 9c2ed1ea22b6..2d1fa623745a 100644
--- a/nixpkgs/pkgs/development/beam-modules/fetch-hex.nix
+++ b/nixpkgs/pkgs/development/beam-modules/fetch-hex.nix
@@ -6,8 +6,6 @@
 , meta ? { }
 }:
 
-with lib;
-
 stdenv.mkDerivation ({
   pname = "hex-source-${pkg}";
   inherit version;
@@ -21,9 +19,18 @@ stdenv.mkDerivation ({
   };
 
   unpackCmd = ''
-    tar -xf $curSrc contents.tar.gz
+    tar -xf $curSrc contents.tar.gz CHECKSUM metadata.config
     mkdir contents
     tar -C contents -xzf contents.tar.gz
+    mv metadata.config contents/hex_metadata.config
+
+    # To make the extracted hex tarballs appear legitimate to mix, we need to
+    # make sure they contain not just the contents of contents.tar.gz but also
+    # a .hex file with some lock metadata.
+    # We use an old version of .hex file per hex's mix_task_test.exs since it
+    # is just plain-text instead of an encoded format.
+    # See: https://github.com/hexpm/hex/blob/main/test/hex/mix_task_test.exs#L410
+    echo -n "${pkg},${version},$(cat CHECKSUM | tr '[:upper:]' '[:lower:]'),hexpm" > contents/.hex
   '';
 
   installPhase = ''
diff --git a/nixpkgs/pkgs/development/beam-modules/fetch-mix-deps.nix b/nixpkgs/pkgs/development/beam-modules/fetch-mix-deps.nix
index ac6d5f3c8b92..b9a1add3c7d1 100644
--- a/nixpkgs/pkgs/development/beam-modules/fetch-mix-deps.nix
+++ b/nixpkgs/pkgs/development/beam-modules/fetch-mix-deps.nix
@@ -2,7 +2,8 @@
 
 { pname
 , version
-, sha256
+, hash ? ""
+, sha256 ? ""
 , src
 , mixEnv ? "prod"
 , debug ? false
@@ -13,6 +14,12 @@
 , ...
 }@attrs:
 
+let
+  hash_ =
+    if hash != "" then { outputHashAlgo = null; outputHash = hash; }
+    else if sha256 != "" then { outputHashAlgo = "sha256"; outputHash = sha256; }
+    else { outputHashAlgo = "sha256"; outputHash = lib.fakeSha256; };
+in
 stdenvNoCC.mkDerivation (attrs // {
   nativeBuildInputs = [ elixir hex cacert git ];
 
@@ -45,16 +52,14 @@ stdenvNoCC.mkDerivation (attrs // {
 
   installPhase = attrs.installPhase or ''
     runHook preInstall
-    mix deps.get --only ${mixEnv}
+    mix deps.get ''${MIX_ENV:+--only $MIX_ENV}
     find "$TEMPDIR/deps" -path '*/.git/*' -a ! -name HEAD -exec rm -rf {} +
     cp -r --no-preserve=mode,ownership,timestamps $TEMPDIR/deps $out
     runHook postInstall
   '';
 
-  outputHashAlgo = "sha256";
   outputHashMode = "recursive";
-  outputHash = sha256;
 
   impureEnvVars = lib.fetchers.proxyImpureEnvVars;
   inherit meta;
-})
+} // hash_)
diff --git a/nixpkgs/pkgs/development/beam-modules/fetch-rebar-deps.nix b/nixpkgs/pkgs/development/beam-modules/fetch-rebar-deps.nix
index 31bef024d320..b253e16761ba 100644
--- a/nixpkgs/pkgs/development/beam-modules/fetch-rebar-deps.nix
+++ b/nixpkgs/pkgs/development/beam-modules/fetch-rebar-deps.nix
@@ -7,19 +7,18 @@
 , meta ? { }
 }:
 
-with lib;
-
 stdenv.mkDerivation ({
   pname = "rebar-deps-${name}";
   inherit version;
 
   dontUnpack = true;
   dontConfigure = true;
-  dontBuild = true;
   dontFixup = true;
 
-  prePhases = ''
-    cp ${src} .
+  buildPhase = ''
+    cp -r ${src} src
+    chmod -R u+w src
+    cd src
     HOME='.' DEBUG=1 ${rebar3}/bin/rebar3 get-deps
   '';
 
diff --git a/nixpkgs/pkgs/development/beam-modules/hex/default.nix b/nixpkgs/pkgs/development/beam-modules/hex/default.nix
index c9e45c480610..32628886f11f 100644
--- a/nixpkgs/pkgs/development/beam-modules/hex/default.nix
+++ b/nixpkgs/pkgs/development/beam-modules/hex/default.nix
@@ -8,13 +8,13 @@ let
 
   pkg = self: stdenv.mkDerivation rec {
     pname = "hex";
-    version = "1.0.1";
+    version = "2.0.6";
 
     src = fetchFromGitHub {
       owner = "hexpm";
       repo = "hex";
       rev = "v${version}";
-      sha256 = "sha256-5g2MDbStlUrAPQCv1xWp+oPyRIOqARmlsKo/ONLTLnY=";
+      sha256 = "sha256-fSADQDrqh5U/TdhaHXsMiLMk1wtQ0gEiTqEclJ2w2nY=";
     };
 
     setupHook = writeText "setupHook.sh" ''
diff --git a/nixpkgs/pkgs/development/beam-modules/lib.nix b/nixpkgs/pkgs/development/beam-modules/lib.nix
index 1b021cf93472..2d93b28cda6b 100644
--- a/nixpkgs/pkgs/development/beam-modules/lib.nix
+++ b/nixpkgs/pkgs/development/beam-modules/lib.nix
@@ -1,5 +1,8 @@
-{ pkgs, lib }:
+{ __splicedPackages, lib }:
 
+let
+  pkgs = __splicedPackages;
+in
 rec {
 
   /* Similar to callPackageWith/callPackage, but without makeOverridable
diff --git a/nixpkgs/pkgs/development/beam-modules/mix-release.nix b/nixpkgs/pkgs/development/beam-modules/mix-release.nix
index 0b7229a21b5a..1d40da27ecba 100644
--- a/nixpkgs/pkgs/development/beam-modules/mix-release.nix
+++ b/nixpkgs/pkgs/development/beam-modules/mix-release.nix
@@ -9,15 +9,25 @@
 , enableDebugInfo ? false
 , mixEnv ? "prod"
 , compileFlags ? [ ]
+
   # mix fixed output derivation dependencies
 , mixFodDeps ? null
+
   # mix dependencies generated by mix2nix
   # this assumes each dependency is built by buildMix or buildRebar3
   # each dependency needs to have a setup hook to add the lib path to $ERL_LIBS
   # this is how mix will find dependencies
 , mixNixDeps ? { }
+
 , elixir ? inputs.elixir
 , hex ? inputs.hex.override { inherit elixir; }
+
+# This reduces closure size, but can lead to some hard to understand runtime
+# errors, so use with caution. See e.g.
+# https://github.com/whitfin/cachex/issues/205
+# https://framagit.org/framasoft/mobilizon/-/issues/1169
+, stripDebug ? false
+
 , ...
 }@attrs:
 let
@@ -25,6 +35,8 @@ let
   overridable = builtins.removeAttrs attrs [ "compileFlags" "mixNixDeps" ];
 in
 assert mixNixDeps != { } -> mixFodDeps == null;
+assert stripDebug -> !enableDebugInfo;
+
 stdenv.mkDerivation (overridable // {
   # rg is used as a better grep to search for erlang references in the final release
   nativeBuildInputs = nativeBuildInputs ++ [ erlang hex elixir makeWrapper git ripgrep ];
@@ -116,6 +128,10 @@ stdenv.mkDerivation (overridable // {
         substituteInPlace "$file" --replace "${erlang}/lib/erlang" "$out"
       done
     fi
+  '' + lib.optionalString stripDebug ''
+    # strip debug symbols to avoid hardreferences to "foreign" closures actually
+    # not needed at runtime, while at the same time reduce size of BEAM files.
+    erl -noinput -eval 'lists:foreach(fun(F) -> io:format("Stripping ~p.~n", [F]), beam_lib:strip(F) end, filelib:wildcard("'"$out"'/**/*.beam"))' -s init stop
   '';
 
   # TODO investigate why the resulting closure still has
diff --git a/nixpkgs/pkgs/development/beam-modules/rebar3-release.nix b/nixpkgs/pkgs/development/beam-modules/rebar3-release.nix
index 59771c340295..b884809505f3 100644
--- a/nixpkgs/pkgs/development/beam-modules/rebar3-release.nix
+++ b/nixpkgs/pkgs/development/beam-modules/rebar3-release.nix
@@ -22,15 +22,13 @@
 , ...
 }@attrs:
 
-with lib;
-
 let
   shell = drv: stdenv.mkDerivation {
     name = "interactive-shell-${drv.pname}";
     buildInputs = [ drv ];
   };
 
-  customPhases = filterAttrs
+  customPhases = lib.filterAttrs
     (_: v: v != null)
     { inherit setupHook configurePhase buildPhase installPhase; };
 
@@ -105,4 +103,4 @@ let
       } // (if attrs ? passthru then attrs.passthru else { }));
     } // customPhases);
 in
-fix pkg
+lib.fix pkg