84 lines
2.2 KiB
Nix
84 lines
2.2 KiB
Nix
{ depot, pkgs, ... }:
|
|
|
|
let
|
|
python = pkgs.python3.withPackages (ps: with ps; [
|
|
django_3
|
|
gunicorn
|
|
psycopg2
|
|
(depot.pkgs.django-allauth.override {
|
|
django = django_3;
|
|
})
|
|
(depot.pkgs.django-tailwind.override {
|
|
django = django_3;
|
|
})
|
|
]);
|
|
|
|
filterSourcePred = (path: type: type != "directory" || (
|
|
baseNameOf path != "__pycache__" &&
|
|
baseNameOf path != "node_modules" &&
|
|
true));
|
|
in
|
|
pkgs.stdenvNoCC.mkDerivation rec {
|
|
name = "quotes";
|
|
|
|
src = builtins.filterSource filterSourcePred ./.;
|
|
|
|
buildInputs = with pkgs; [ makeWrapper nodejs ];
|
|
propagatedBuildInputs = [ python ];
|
|
|
|
nodeModules = pkgs.stdenvNoCC.mkDerivation rec {
|
|
name = "quotes-node_modules";
|
|
src = builtins.filterSource filterSourcePred ./theme/static_src;
|
|
|
|
outputHash = "sha256:15q41in79p753y85qwbbd6v6fyays9q28cpqp0dc3pnvma096whq";
|
|
outputHashMode = "recursive";
|
|
|
|
buildInputs = with pkgs; [ nodejs ];
|
|
|
|
buildPhase = ''
|
|
mkdir $NIX_BUILD_TOP/tmp
|
|
export HOME=$NIX_BUILD_TOP/tmp
|
|
npm i
|
|
'';
|
|
installPhase = ''
|
|
cp -R node_modules $out
|
|
'';
|
|
};
|
|
|
|
buildPhase = ''
|
|
cp -R $nodeModules theme/static_src/node_modules
|
|
'';
|
|
installPhase = ''
|
|
sitepkgdir="$out/lib/${python.libPrefix}/site-packages"
|
|
pkgdir="$sitepkgdir/quotes"
|
|
mkdir -p $pkgdir
|
|
cp -R \
|
|
quotesapp \
|
|
quotedb \
|
|
templates \
|
|
static \
|
|
discordguild \
|
|
theme \
|
|
$pkgdir
|
|
|
|
mkdir "$out/bin"
|
|
makeWrapper "${python}/bin/gunicorn" "$out/bin/quotes" \
|
|
--add-flags "quotes.quotesapp.wsgi" \
|
|
--suffix PYTHONPATH : "$sitepkgdir"
|
|
makeWrapper "${python}/bin/django-admin" "$out/bin/quotes-manage" \
|
|
--set DJANGO_SETTINGS_MODULE "quotes.quotesapp.prod_settings" \
|
|
--suffix PYTHONPATH : "$sitepkgdir"
|
|
|
|
mkdir -p "$out/share/static"
|
|
export STATIC_ROOT="$out/share/static"
|
|
export DJANGO_SETTINGS_MODULE=quotes.quotesapp.settings
|
|
export PYTHONPATH=$PYTHONPATH''${PYTHONPATH:+':'}"$sitepkgdir"
|
|
django-admin tailwind build
|
|
django-admin collectstatic --no-input
|
|
|
|
chmod -R +w $pkgdir/theme/static $pkgdir/theme/static_src
|
|
rm -rf $pkgdir/theme/static $pkgdir/theme/static_src
|
|
'';
|
|
|
|
passthru.pythonEnv = python;
|
|
}
|