anvil-editor: init at 0.4
[NixPkgs.git] / pkgs / applications / misc / gramps / default.nix
blobba5bce3a0edbe8e6656ce8c802c2ef22bf42c063
1 { lib
2 , fetchFromGitHub
3 , gtk3
4 , pythonPackages
5 , glibcLocales
6 , intltool
7 , gexiv2
8 , pango
9 , gobject-introspection
10 , wrapGAppsHook3
11 , gettext
12   # Optional packages:
13 , enableOSM ? true
14 , osm-gps-map
15 , glib-networking
16 , enableGraphviz ? true
17 , graphviz
18 , enableGhostscript ? true
19 , ghostscript
22 let
23   inherit (pythonPackages) buildPythonApplication pythonOlder;
25 buildPythonApplication rec {
26   version = "5.2.3";
27   pname = "gramps";
28   pyproject = true;
30   disabled = pythonOlder "3.8";
32   src = fetchFromGitHub {
33     owner = "gramps-project";
34     repo = "gramps";
35     rev = "refs/tags/v${version}";
36     hash = "sha256-DfKKB+rgMGQ8HTqhCp11UTYLj3Fdd0B0v4a922GJ8L8=";
37   };
39   patches = [
40     # textdomain doesn't exist as a property on locale when running on Darwin
41     ./check-locale-hasattr-textdomain.patch
42     # disables the startup warning about bad GTK installation
43     ./disable-gtk-warning-dialog.patch
44   ];
46   nativeBuildInputs = [
47     wrapGAppsHook3
48     intltool
49     gettext
50     gobject-introspection
51     pythonPackages.setuptools
52   ];
54   nativeCheckInputs = [
55     glibcLocales
56     pythonPackages.unittestCheckHook
57     pythonPackages.jsonschema
58     pythonPackages.mock
59     pythonPackages.lxml
60   ];
62   buildInputs = [ gtk3 pango gexiv2 ]
63     # Map support
64     ++ lib.optionals enableOSM [ osm-gps-map glib-networking ]
65     # Graphviz support
66     ++ lib.optional enableGraphviz graphviz
67     # Ghostscript support
68     ++ lib.optional enableGhostscript ghostscript
69   ;
71   propagatedBuildInputs = with pythonPackages; [
72     berkeleydb
73     pyicu
74     pygobject3
75     pycairo
76   ];
79   preCheck = ''
80     export HOME=$(mktemp -d)
81     mkdir .git # Make gramps think that it's not in an installed state
82   '';
84   dontWrapGApps = true;
86   preFixup = ''
87     makeWrapperArgs+=(
88       "''${gappsWrapperArgs[@]}"
89     )
90   '';
92   # https://github.com/NixOS/nixpkgs/issues/149812
93   # https://nixos.org/manual/nixpkgs/stable/#ssec-gnome-hooks-gobject-introspection
94   strictDeps = false;
96   meta = with lib; {
97     description = "Genealogy software";
98     mainProgram = "gramps";
99     homepage = "https://gramps-project.org";
100     maintainers = with maintainers; [ jk pinpox tomasajt ];
101     changelog = "https://github.com/gramps-project/gramps/blob/${src.rev}/ChangeLog";
102     longDescription = ''
103       Every person has their own story but they are also part of a collective
104       family history. Gramps gives you the ability to record the many details of
105       an individual's life as well as the complex relationships between various
106       people, places and events. All of your research is kept organized,
107       searchable and as precise as you need it to be.
108     '';
109     license = licenses.gpl2Plus;
110   };