1
0
nixfiles/pkgs/wetter/default.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;
}