nixpkgs/pkgs/applications/office/paperwork/paperwork-gtk.nix

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

153 lines
4.1 KiB
Nix
Raw Normal View History

{ lib
, python3Packages
, gtk3
, cairo
, gnome
, librsvg
2021-05-08 15:45:03 +02:00
, xvfb-run
, dbus
, libnotify
, wrapGAppsHook
2020-10-31 13:00:00 +01:00
, fetchFromGitLab
, which
, gettext
, gobject-introspection
, gdk-pixbuf
, texliveSmall
, imagemagick
, perlPackages
2022-02-03 13:00:00 +01:00
, writeScript
}:
let
documentation_deps = [
(texliveSmall.withPackages (ps: with ps; [ wrapfig gensymb ]))
xvfb-run
imagemagick
perlPackages.Po4a
];
2022-02-03 13:00:00 +01:00
inherit (import ./src.nix { inherit fetchFromGitLab; }) version src sample_documents;
in
python3Packages.buildPythonApplication rec {
2022-02-03 13:00:00 +01:00
inherit src version;
pname = "paperwork";
format = "pyproject";
2022-02-03 13:00:00 +01:00
sample_docs = sample_documents // {
# a trick for the update script
name = "sample_documents";
src = sample_documents;
};
sourceRoot = "${src.name}/paperwork-gtk";
postPatch = ''
2020-10-31 13:00:00 +01:00
chmod a+w -R ..
patchShebangs ../tools
2020-10-31 13:00:00 +01:00
export HOME=$(mktemp -d)
'';
2020-10-31 13:00:00 +01:00
preBuild = ''
make l10n_compile
'';
postInstall = ''
# paperwork-shell needs to be re-wrapped with access to paperwork
2023-06-05 14:00:00 +02:00
for exe in paperwork-cli paperwork-json; do
cp ${python3Packages.paperwork-shell}/bin/.$exe-wrapped $out/bin/$exe
done
# install desktop files and icons
2020-10-31 13:00:00 +01:00
XDG_DATA_HOME=$out/share $out/bin/paperwork-gtk install --user
2021-01-02 13:00:00 +01:00
# fixes [WARNING] [openpaperwork_core.resources.setuptools] Failed to find
# resource file paperwork_gtk.icon.out/paperwork_128.png, tried at path
# /nix/store/3n5lz6y8k9yks76f0nar3smc8djan3xr-paperwork-2.0.2/lib/python3.8/site-packages/paperwork_gtk/icon/out/paperwork_128.png.
site=$out/${python3Packages.python.sitePackages}/paperwork_gtk
2021-01-02 13:00:00 +01:00
for i in $site/data/paperwork_*.png; do
ln -s $i $site/icon/out;
done
export XDG_DATA_DIRS=$XDG_DATA_DIRS:${gnome.adwaita-icon-theme}/share
# build the user manual
2022-02-03 13:00:00 +01:00
PATH=$out/bin:$PATH PAPERWORK_TEST_DOCUMENTS=${sample_docs} make data
for i in src/paperwork_gtk/model/help/out/*.pdf; do
install -Dt $site/model/help/out $i
done
'';
nativeCheckInputs = [ dbus ];
nativeBuildInputs = [
wrapGAppsHook
2020-10-31 13:00:00 +01:00
gobject-introspection
python3Packages.setuptools-scm
2020-10-31 13:00:00 +01:00
(lib.getBin gettext)
which
gdk-pixbuf # for the setup hook
] ++ documentation_deps;
buildInputs = [
gnome.adwaita-icon-theme
libnotify
librsvg
2020-10-31 13:00:00 +01:00
gtk3
cairo
];
2020-10-31 13:00:00 +01:00
dontWrapGApps = true;
preFixup = ''
makeWrapperArgs+=("''${gappsWrapperArgs[@]}")
'';
checkPhase = ''
runHook preCheck
# A few parts of chkdeps need to have a display and a dbus session, so we not
# only need to run a virtual X server + dbus but also have a large enough
# resolution, because the Cairo test tries to draw a 200x200 window.
xvfb-run -s '-screen 0 800x600x24' dbus-run-session \
2022-11-21 03:03:50 +01:00
--config-file=${dbus}/share/dbus-1/session.conf \
2020-10-31 13:00:00 +01:00
$out/bin/paperwork-gtk chkdeps
2023-06-05 14:00:00 +02:00
$out/bin/paperwork-cli chkdeps
$out/bin/paperwork-json chkdeps
# content of make test, without the dep on make install
python -m unittest discover --verbose -s tests
runHook postCheck
'';
propagatedBuildInputs = with python3Packages; [
paperwork-backend
2020-10-31 13:00:00 +01:00
paperwork-shell
openpaperwork-gtk
openpaperwork-core
pypillowfight
pyxdg
setuptools
];
disallowedRequisites = documentation_deps;
2022-02-03 13:00:00 +01:00
passthru.updateScript = writeScript "update.sh" ''
#!/usr/bin/env nix-shell
#!nix-shell -i bash -p curl common-updater-scripts
2022-04-23 21:16:41 +02:00
version=$(list-git-tags | sed 's/^v//' | sort -V | tail -n1)
2022-02-03 13:00:00 +01:00
update-source-version paperwork "$version" --file=pkgs/applications/office/paperwork/src.nix
docs_version="$(curl https://gitlab.gnome.org/World/OpenPaperwork/paperwork/-/raw/$version/paperwork-gtk/src/paperwork_gtk/model/help/screenshot.sh | grep TEST_DOCS_TAG= | cut -d'"' -f2)"
update-source-version paperwork.sample_docs "$docs_version" --file=pkgs/applications/office/paperwork/src.nix --version-key=rev
'';
meta = {
description = "A personal document manager for scanned documents";
homepage = "https://openpaper.work/";
license = lib.licenses.gpl3Plus;
maintainers = with lib.maintainers; [ aszlig symphorien ];
platforms = lib.platforms.linux;
};
}