picture-frame/server/default.nix
2023-09-04 14:36:06 -06:00

94 lines
1.7 KiB
Nix

{ lib
, python3
, fetchFromGitHub
, makeWrapper
, buildGoModule
, stdenv
}:
with python3.pkgs;
let
smartcrop = buildPythonPackage rec {
pname = "smartcrop.py";
version = "v0.3.2";
src = fetchFromGitHub {
owner = "smartcrop";
repo = pname;
rev = version;
hash = "sha256-37ADx72OvORAan51CzdnDFS4uWH8DN/CaXSt5qjnLA4=";
};
propagatedBuildInputs = [
pillow
numpy
];
format = "setuptools";
doCheck = true;
pythonImportsCheck = [
"smartcrop"
];
};
smartcrop-cli = buildPythonApplication {
pname = "smartcrop-cli";
version = "v1";
format = "other";
src = ./.;
nativeBuildInputs = [ makeWrapper ];
phases = [ "installPhase" ]; # Removes all phases except installPhase
installPhase = ''
mkdir -p $out
# copy files
cp -r $src/smartcrop-cli.py $out
mkdir -p $out/bin
makeWrapper ${python3}/bin/python3 $out/bin/smartcrop-cli \
--prefix PYTHONPATH : ${makePythonPath [smartcrop]} \
--add-flags "$out/smartcrop-cli.py"
'';
};
server = buildGoModule rec {
pname = "dynamic-frame-server";
version = "0.0.1";
src = ./.;
vendorSha256 = "qr3hNJxCT8YPQntKCCPNO2yaETswziGXAd4lQELsDGg=";
};
# Wrap server so it has access to smartcrop in its PATH
serverWrapped = stdenv.mkDerivation {
pname = server.pname;
version = server.version;
src = server;
buildInputs = [ makeWrapper ];
installPhase = ''
mkdir -p $out/bin
cp ${server}/bin/* $out/bin/
wrapProgram $out/bin/server \
--set PATH "${smartcrop-cli}/bin:$PATH"
'';
meta.mainProgram = "server";
};
in
{
server = serverWrapped;
smartcrop = smartcrop-cli;
}