87 lines
1.8 KiB
Nix
87 lines
1.8 KiB
Nix
{
|
|
buildPythonPackage,
|
|
flask,
|
|
flask_sqlalchemy,
|
|
lib,
|
|
libsass,
|
|
mkYarnModules,
|
|
nodejs,
|
|
pkgconfig,
|
|
pkgs,
|
|
psycopg2,
|
|
python2,
|
|
python3,
|
|
stdenv,
|
|
flask-excel,
|
|
pyexcel-xlsx,
|
|
}:
|
|
|
|
let
|
|
src = fetchGit {
|
|
url = "https://git.clerie.de/clerie/wetter.git";
|
|
ref = "master";
|
|
rev = "bb503828098717825c389fd6f450b395a02dcc6a";
|
|
};
|
|
pname = "wetter";
|
|
version = "0.0.1";
|
|
|
|
packageJSON = src + "/package.json";
|
|
yarnLock = src + "/yarn.lock";
|
|
|
|
modules = mkYarnModules {
|
|
pname = "${pname}-modules";
|
|
name = "${pname}-modules-${version}";
|
|
inherit version packageJSON yarnLock;
|
|
|
|
/* build native node-sass extensions */
|
|
pkgConfig.node-sass = {
|
|
buildInputs = [ python2 libsass pkgconfig ];
|
|
postInstall = ''
|
|
mkdir -p $HOME/.node-gyp/${nodejs.version}
|
|
echo 9 > $HOME/.node-gyp/${nodejs.version}/installVersion
|
|
ln -sfv ${nodejs}/include $HOME/.node-gyp/${nodejs.version}
|
|
LIBSASS_EXT=auto yarn --offline run build
|
|
rm build/config.gypi
|
|
'';
|
|
};
|
|
};
|
|
|
|
assets = stdenv.mkDerivation {
|
|
inherit src pname version;
|
|
|
|
NODE_ENV = "production";
|
|
|
|
buildPhase = ''
|
|
runHook preBuild
|
|
ln -s ${modules}/node_modules
|
|
node_modules/.bin/rollup -c
|
|
runHook postBuild
|
|
'';
|
|
|
|
installPhase = ''
|
|
runHook preInstall
|
|
cp -r wetter/static/bundle $out
|
|
runHook postInstall
|
|
'';
|
|
};
|
|
|
|
in buildPythonPackage rec {
|
|
inherit src pname version;
|
|
|
|
propagatedBuildInputs = [
|
|
flask
|
|
flask_sqlalchemy
|
|
psycopg2
|
|
flask-excel
|
|
pyexcel-xlsx
|
|
];
|
|
|
|
postInstall = ''
|
|
mkdir -p $out/${python3.sitePackages}/wetter/static
|
|
cp -r ${assets} $out/${python3.sitePackages}/wetter/static/bundle
|
|
cp -r wetter/templates $out/${python3.sitePackages}/wetter/templates
|
|
'';
|
|
|
|
doCheck = false;
|
|
}
|