nixos-picframe/flake.nix
2023-05-28 10:25:53 -05:00

157 lines
5.5 KiB
Nix

{
description = "PicFrame";
inputs = {
nixpkgs = {
url = "nixpkgs/nixos-23.05";
};
flake-utils = {
url = "github:numtide/flake-utils";
};
};
outputs = { self, nixpkgs, flake-utils, ... }@inputs:
flake-utils.lib.eachDefaultSystem
(system:
let
pkgs = import nixpkgs {
inherit system;
};
in
{
packages = {
picframe =
let
pname = "picframe";
version = "2023.05.17";
in
pkgs.python3.pkgs.buildPythonApplication {
inherit pname version;
src = pkgs.fetchFromGitHub {
owner = "helgeerbe";
repo = pname;
rev = version;
sha256 = "sha256-RTMgEbDmdpvOMqJXgZsWQlgj/Qy1c4uT4bP57gC9bnE=";
};
propagatedBuildInputs = [
self.packages.${system}.iptcinfo3
self.packages.${system}.ninepatch
self.packages.${system}.pi-heif
self.packages.${system}.pi3d
pkgs.python3Packages.defusedxml
pkgs.python3Packages.numpy
pkgs.python3Packages.paho-mqtt
pkgs.python3Packages.pillow
pkgs.python3Packages.pyyaml
];
buildInputs = [
pkgs.python3Packages.pytest
];
};
iptcinfo3 =
let
pname = "IPTCInfo3";
version = "2.1.4";
in
pkgs.python3.pkgs.buildPythonApplication {
inherit pname version;
src = pkgs.python3Packages.fetchPypi {
inherit pname version;
sha256 = "sha256-4k+e00VgJCX2rzfk+bv/b+welXCB3U+8WvkqifiZyWM=";
};
};
pi-heif =
let
pname = "pi_heif";
version = "0.8.0";
in
pkgs.python3.pkgs.buildPythonApplication {
inherit pname version;
src = pkgs.python3Packages.fetchPypi {
inherit pname version;
sha256 = "sha256-IN8FPTKDD7yqrrMidJIcxkUNAmvCeCmcYSYCjh3SD6E=";
};
propagatedBuildInputs = [
pkgs.python3Packages.pillow
pkgs.python3Packages.cffi
pkgs.libheif
];
};
ninepatch =
let
pname = "ninepatch";
version = "0.1.22";
in
pkgs.python3.pkgs.buildPythonApplication {
inherit pname version;
src = pkgs.fetchFromGitHub {
owner = "vindolin";
repo = pname;
rev = "e1893ae84436c8b0b23dc4fc02f2ae6370945622";
sha256 = "sha256-q5NuBs1Is4UHaMED7Cl2yYYKwpg5WngGcm2SY4+YYlM=";
};
propagatedBuildInputs = [
pkgs.python3Packages.pillow
];
};
pi3d =
let
pname = "pi3d";
version = "2.49";
in
pkgs.python3.pkgs.buildPythonApplication {
inherit pname version;
src = pkgs.fetchFromGitHub {
owner = "tipam";
repo = pname;
rev = "1f1c822dc3ac58344ad2d5468978d62e51710df4";
sha256 = "sha256-6FMz04IBQabnuGZ9IGJOeqH/5xHH6BZN+N6f+cT2bv8=";
};
propagatedBuildInputs = [
pkgs.libGL
pkgs.python3Packages.numpy
pkgs.python3Packages.pillow
pkgs.python3Packages.setuptools
pkgs.xorg.libX11
pkgs.xorg.libXcomposite
pkgs.xorg.libXrender
];
doCheck = false;
postPatch = ''
substituteInPlace pyxlib/xlib.py \
--replace \
"find_library('X11')" \
'"${pkgs.xorg.libX11}/lib/libX11.so"'
substituteInPlace pyxlib/glx.py \
--replace \
"find_library('GL')" \
'"${pkgs.libGL}/lib/libGL.so"' \
--replace \
"find_library('GLX')" \
'"${pkgs.libGL}/lib/libGLX.so"' \
--replace \
"find_library('Xrender')" \
'"${pkgs.xorg.libXrender}/lib/libXrender.so"'
substituteInPlace pyxlib/xcomposite.py \
--replace \
"'libXcomposite.so.1'" \
'"${pkgs.xorg.libXcomposite}/lib/libXcomposite.so"'
substituteInPlace pyxlib/xfixes.py \
--replace \
"'libXfixes.so.3'" \
'"${pkgs.xorg.libXfixes}/lib/libXfixes.so"'
substituteInPlace pi3d/constants/__init__.py \
--replace \
"find_library('GLESv2')" \
'"${pkgs.libGL}/lib/libGLESv2.so"' \
--replace \
"find_library('EGL')" \
'"${pkgs.libGL}/lib/libEGL.so"'
'';
};
};
default = self.packages.${system}.picframe;
}
);
}