94 lines
2.6 KiB
Nix
94 lines
2.6 KiB
Nix
|
{
|
||
|
lib,
|
||
|
callPackage,
|
||
|
beamPackages,
|
||
|
buildNpmPackage,
|
||
|
fetchFromGitHub,
|
||
|
nodejs,
|
||
|
breakpointHook,
|
||
|
...
|
||
|
}: let
|
||
|
pname = "teslamate";
|
||
|
version = "1.28.2";
|
||
|
|
||
|
src = fetchFromGitHub {
|
||
|
owner = "teslamate-org";
|
||
|
repo = "teslamate";
|
||
|
rev = "v${version}";
|
||
|
hash = "sha256-CH3u6ijzvVdjfTVu06UcyW4NhVQKeUKtC/j+UeDELNc=";
|
||
|
};
|
||
|
|
||
|
mixNixDeps = import ./mix.nix {
|
||
|
inherit beamPackages lib;
|
||
|
|
||
|
overrides = (
|
||
|
final: prev:
|
||
|
(lib.mapAttrs
|
||
|
(_: value:
|
||
|
value.override {
|
||
|
appConfigPath = src + "/config";
|
||
|
})
|
||
|
prev)
|
||
|
// {
|
||
|
ex_cldr = prev.ex_cldr.overrideAttrs (old: rec {
|
||
|
# Copied from https://github.com/NixOS/nixpkgs/blob/d8fd23629b3910e8bdbd313e29532d3e33dd73d5/pkgs/servers/mobilizon/default.nix#L34-L47
|
||
|
version = "2.37.5";
|
||
|
# 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${version}";
|
||
|
sha256 = "sha256-T5Qvuo+xPwpgBsqHNZYnTCA4loToeBn1LKTMsDcCdYs=";
|
||
|
};
|
||
|
postInstall = ''
|
||
|
cp $src/priv/cldr/locales/* $out/lib/erlang/lib/ex_cldr-${old.version}/priv/cldr/locales/
|
||
|
'';
|
||
|
});
|
||
|
}
|
||
|
);
|
||
|
};
|
||
|
|
||
|
assets = buildNpmPackage {
|
||
|
pname = "${pname}-assets";
|
||
|
inherit version;
|
||
|
src = "${src}/assets";
|
||
|
npmDepsHash = "sha256-h92i/cRf4I0c4vUc6oBt5T4yvM0JNQMkoDy2YHcVWS4=";
|
||
|
patches = [./deploy_output.patch];
|
||
|
dontNpmBuild = true;
|
||
|
installPhase = ''
|
||
|
runHook preinstall
|
||
|
|
||
|
rm ./node_modules/phoenix
|
||
|
cp -r ${mixNixDeps.phoenix}/src ./node_modules/phoenix
|
||
|
|
||
|
rm ./node_modules/phoenix_live_view
|
||
|
cp -r ${mixNixDeps.phoenix_live_view}/src ./node_modules/phoenix_live_view
|
||
|
|
||
|
rm ./node_modules/phoenix_html
|
||
|
cp -r ${mixNixDeps.phoenix_html}/src ./node_modules/phoenix_html
|
||
|
|
||
|
npm run deploy
|
||
|
cp -r . "$out"
|
||
|
runHook postInstall
|
||
|
'';
|
||
|
};
|
||
|
in
|
||
|
beamPackages.mixRelease {
|
||
|
inherit pname version src mixNixDeps;
|
||
|
|
||
|
nativeBuildInputs = [nodejs];
|
||
|
|
||
|
preBuild = ''
|
||
|
mkdir -p priv/static/assets
|
||
|
# assets patched to write to scripts/deploy_output
|
||
|
cp -r ${assets}/scripts/deploy_output ./priv/static/assets
|
||
|
'';
|
||
|
|
||
|
postBuild = ''
|
||
|
# for external task you need a workaround for the no deps check flag
|
||
|
# https://github.com/phoenixframework/phoenix/issues/2690
|
||
|
mix do deps.loadpaths --no-deps-check phx.digest, release --overwrite
|
||
|
'';
|
||
|
}
|