diff --git a/pkgs/overlay.nix b/pkgs/overlay.nix index 34f1de0..b3c825d 100644 --- a/pkgs/overlay.nix +++ b/pkgs/overlay.nix @@ -1,3 +1,6 @@ self: super: { anycast_healthchecker = self.python3.pkgs.callPackage ./anycast_healthchecker {}; + wetter = self.python3.pkgs.callPackage ./wetter { + inherit (self) python2 pkgconfig libsass; + }; } diff --git a/pkgs/wetter/default.nix b/pkgs/wetter/default.nix new file mode 100644 index 0000000..22977e2 --- /dev/null +++ b/pkgs/wetter/default.nix @@ -0,0 +1,81 @@ +{ + buildPythonPackage, + flask, + flask_sqlalchemy, + lib, + libsass, + mkYarnModules, + nodejs, + pkgconfig, + pkgs, + psycopg2, + python2, + python3, + stdenv, +}: + +let + src = fetchGit { + url = "https://git.clerie.de/clerie/wetter.git"; + rev = "b7134dbc0fcf44623e5adb14d1c84d07f7872844"; + }; + 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 + ]; + + 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 + ''; + + checkPhase = ":"; +}