{ lib , beam , callPackage , writeShellScriptBin , writeText , yarn2nix , mix2nix , fetchFromGitLab , fetchFromGitHub , fetchgit , fetchurl , git , cmake , nixosTests , src , mobilizon-js }: let beamPackages = beam.packages.erlangR25.extend (self: super: { elixir = super.elixir_1_14; }); inherit (beamPackages) mixRelease buildMix buildRebar3 fetchHex; in mixRelease rec { pname = "mobilizon"; version = "3.1.3"; inherit src; # See https://github.com/whitfin/cachex/issues/205 # This circumvents a startup error for now stripDebug = false; compileFlags = [ "--no-validate-compile-env" ]; nativeBuildInputs = [ git cmake ]; mixNixDeps = import ./mix.nix { inherit beamPackages lib; 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: { version = "2.37.1"; preBuild = "touch config/prod.exs"; # We have to use the GitHub sources, as it otherwise tries to download # the locales at build time. src = fetchFromGitHub { owner = "erictapen"; repo = "cldr"; rev = "7b293aa9f27e58a5168bb134aad9309043b0f431"; sha256 = "sha256-WJbj18TarCc4tEpvehFUbmeLaof7gmx+j5A0iJlpHRg="; }; postInstall = '' cp $src/priv/cldr/locales/* $out/lib/erlang/lib/ex_cldr-${old.version}/priv/cldr/locales/ ''; }); ex_cldr_currencies = prev.ex_cldr_currencies.override { preBuild = "touch config/prod.exs"; }; ex_cldr_numbers = prev.ex_cldr_numbers.override { preBuild = "touch config/prod.exs"; }; ex_cldr_dates_times = prev.ex_cldr_dates_times.override { preBuild = "touch config/prod.exs"; }; ex_cldr_plugs = prev.ex_cldr_plugs.override { preBuild = "touch config/prod.exs"; }; # Upstream issue: https://github.com/bryanjos/geo_postgis/pull/87 geo_postgis = prev.geo_postgis.overrideAttrs (old: { propagatedBuildInputs = old.propagatedBuildInputs ++ [ final.ecto ]; }); # The remainder are Git dependencies (and their deps) that are not supported by mix2nix currently. web_push_encryption = buildMix rec { name = "web_push_encryption"; version = "0.3.1"; src = fetchFromGitHub { owner = "danhper"; repo = "elixir-web-push-encryption"; rev = "70f00d06cbd88c9ac382e0ad2539e54448e9d8da"; sha256 = "sha256-b4ZMrt/8n2sPUFtCDRTwXS1qWm5VlYdbx8qC0R0boOA="; }; beamDeps = with final; [ httpoison jose ]; }; icalendar = buildMix rec { name = "icalendar"; version = "unstable-2022-04-10"; src = fetchFromGitHub { owner = "tcitworld"; repo = name; rev = "1033d922c82a7223db0ec138e2316557b70ff49f"; sha256 = "sha256-N3bJZznNazLewHS4c2B7LP1lgxd1wev+EWVlQ7rOwfU="; }; beamDeps = with final; [ mix_test_watch ex_doc timex ]; }; erlport = buildRebar3 rec { name = "erlport"; version = "0.10.1-compat"; src = fetchFromGitHub { owner = "tcitworld"; repo = name; rev = "04bcfd732fa458735001328b44e8b3a1764316a5"; sha256 = "sha256-VzGnhHeD5zC+HyUt41FJfLH7Q7I9fJzfcqxTv7uLKnI="; }; }; rajska = buildMix rec { name = "rajska"; version = "1.3.3"; src = fetchFromGitHub { owner = "tcitworld"; repo = name; rev = "0c036448e261e8be6a512581c592fadf48982d84"; sha256 = "sha256-4pfply1vTAIT2Xvm3kONmrCK05xKfXFvcb8EKoSCXBE="; }; beamDeps = with final; [ ex_doc credo absinthe excoveralls hammer mock ]; }; exkismet = buildMix rec { name = "exkismet"; version = "0.0.3"; src = fetchFromGitHub { owner = "tcitworld"; repo = name; rev = "8b5485fde00fafbde20f315bec387a77f7358334"; sha256 = "sha256-ttgCWoBKU7VTjZJBhZNtqVF4kN7psBr/qOeR65MbTqw="; }; beamDeps = with final; [ httpoison ex_doc credo doctor dialyxir ]; }; }); }; preConfigure = '' export LANG=C.UTF-8 # fix elixir locale warning ''; # Install the compiled js part preBuild = '' cp -a "${mobilizon-js}/libexec/mobilizon/deps/priv/static" ./priv chmod 770 -R ./priv ''; postBuild = '' mix phx.digest --no-deps-check ''; 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 ]; }; }