{ lib , beam_nox , fetchFromGitHub , git , cmake , nixosTests , src , src-config , mobilizon-js }: let inherit (beam_nox.packages.erlang) mixRelease buildMix; in mixRelease rec { pname = "mobilizon"; # This has to be kept in sync with the version in mix.exs and package.json! # Otherwise the nginx routing isn't going to work properly. version = "5.0.0-beta.1"; inherit src; # See https://github.com/whitfin/cachex/issues/205 # This circumvents a startup error for now stripDebug = false; nativeBuildInputs = [ git cmake ]; # Update deps.nix by running `mix deps.nix` mixNixDeps = import ./deps.nix { inherit lib; beamPackages = beam_nox.packages.erlang; overrides = (final: prev: (lib.mapAttrs (_: value: value.override { appConfigPath = src-config; }) prev) // { fast_html = prev.fast_html.override { nativeBuildInputs = [ cmake ]; }; ex_cldr = prev.ex_cldr.overrideAttrs (old: { # We have to use the GitHub sources, as it otherwise tries to download # the locales at build time. src = fetchFromGitHub { owner = "elixir-cldr"; repo = "cldr"; rev = "v${old.version}"; sha256 = assert old.version == "2.37.5"; "sha256-T5Qvuo+xPwpgBsqHNZYnTCA4loToeBn1LKTMsDcCdYs="; }; postInstall = '' cp $src/priv/cldr/locales/* $out/lib/erlang/lib/ex_cldr-${old.version}/priv/cldr/locales/ ''; }); }); }; preConfigure = '' export LANG=C.UTF-8 # fix elixir locale warning ''; # Install the compiled js part preBuild = '' cp -a "${mobilizon-js}/_napalm-install/priv/static" ./priv chmod 770 -R ./priv ''; postBuild = '' mix phx.digest --no-deps-check ''; # Just a hack to reduce path size by 60MB postInstall = let inherit (mixNixDeps) ex_cldr; in '' rm -r $out/lib/ex_cldr-${ex_cldr.version}/priv/cldr/locales ln -s ${ex_cldr.src}/priv/cldr/locales $out/lib/ex_cldr-${ex_cldr.version}/priv/cldr/locales ''; passthru.elixirPackage = beam_nox.packages.erlang.elixir; meta = with lib; { description = "Mobilizon is an online tool to help manage your events, your profiles and your groups"; homepage = "https://joinmobilizon.org/"; license = licenses.agpl3Plus; maintainers = with maintainers; [ minijackson erictapen ]; }; }