mirror of
https://github.com/bonfire-networks/bonfire-app.git
synced 2024-04-28 23:38:44 +00:00
41f83f51c8
It seems that the name was changed at some point or something along those lines, so using coordination breaks the setup process.
77 lines
2.1 KiB
Nix
Executable file
77 lines
2.1 KiB
Nix
Executable file
{ pkgs, self, flavour ? "cooperation" }:
|
|
let
|
|
beamPackages = with pkgs; beam.packagesWith beam.interpreters.erlang;
|
|
in
|
|
beamPackages.mixRelease rec {
|
|
pname = "bonfire";
|
|
version = "1.0.0";
|
|
mixEnv = "dev";
|
|
|
|
src = self;
|
|
|
|
# TODO make these configurable
|
|
BONFIRE_FLAVOUR = "flavours/${flavour}";
|
|
FLAVOUR = flavour;
|
|
|
|
mixFodDeps = beamPackages.fetchMixDeps {
|
|
pname = "mix-deps-${pname}";
|
|
inherit src mixEnv version;
|
|
LANG = "en_US.UTF-8";
|
|
inherit BONFIRE_FLAVOUR FLAVOUR;
|
|
# override needed here since bonfire dependencies rely on git
|
|
installPhase = ''
|
|
runHook preInstall
|
|
mix deps.get --only ${mixEnv}
|
|
cp -r --no-preserve=mode,ownership,timestamps $TEMPDIR/deps $out
|
|
runHook postInstall
|
|
'';
|
|
# TODO add sha256
|
|
# since I didn't know exactly what dependencies where being pulled
|
|
# I went for the quick hack of not checking for dependency integrity
|
|
# This has the downside of triggering a rebuild on every deployment
|
|
sha256 = null;
|
|
};
|
|
|
|
frontendAssets = with pkgs; stdenvNoCC.mkDerivation {
|
|
pname = "frontend-assets-${pname}";
|
|
nativeBuildInputs = [ nodejs cacert git elixir nodePackages.pnpm beamPackages.hex ];
|
|
|
|
inherit version src;
|
|
|
|
configurePhase = ''
|
|
export HOME=$(mktemp -d)
|
|
cp -r ${mixFodDeps} ./deps
|
|
chmod +w -R deps
|
|
make js.deps.get
|
|
'';
|
|
|
|
buildPhase = ''
|
|
mix assets.release
|
|
'';
|
|
|
|
installPhase = ''
|
|
cp -r priv/static $out
|
|
'';
|
|
|
|
outputHashAlgo = "sha256";
|
|
outputHashMode = "recursive";
|
|
# TODO add sha256
|
|
# since I didn't know exactly what dependencies where being pulled
|
|
# I went for the quick hack of not checking for dependency integrity
|
|
# This has the downside of triggering a rebuild on every deployment
|
|
outputHash = null;
|
|
|
|
impureEnvVars = lib.fetchers.proxyImpureEnvVars;
|
|
};
|
|
|
|
nativeBuildInputs = with pkgs; [ rustc cargo gcc ]; # for NIFs
|
|
|
|
postBuild = ''
|
|
mkdir -p priv/static
|
|
cp -r ${frontendAssets} priv/static
|
|
# digest needs to write files
|
|
chmod -R u+w priv/static
|
|
mix do deps.loadpaths --no-deps-check, phx.digest
|
|
'';
|
|
}
|