biglybt: 3.5.0.0 -> 3.6.0.0
[NixPkgs.git] / pkgs / applications / misc / auto-multiple-choice / default.nix
blobbdd1e6fbb85400fa84fc2d4faf8e9f57f0fd544e
1 { lib
2 , stdenv
3 , fetchurl
4 , perlPackages
5 , makeWrapper
6 , wrapGAppsHook
7 , cairo
8 , dblatex
9 , gnumake
10 , gobject-introspection
11 , graphicsmagick
12 , gsettings-desktop-schemas
13 , gtk3
14 , hicolor-icon-theme
15 , libnotify
16 , librsvg
17 , libxslt
18 , netpbm
19 , opencv
20 , pango
21 , perl
22 , pkg-config
23 , poppler
24 , auto-multiple-choice
26 stdenv.mkDerivation (finalAttrs: rec {
27   pname = "auto-multiple-choice";
28   version = "1.6.0";
29   src = fetchurl {
30     url = "https://download.auto-multiple-choice.net/${pname}_${version}_dist.tar.gz";
31     # before 1.6.0, the URL pattern used "precomp" instead of "dist".    ^^^^
32     sha256 = "sha256-I9Xw1BN8ZSQhi5F1R3axHBKE6tnaCNk8k5tts6LoMjY=";
33   };
35   # There's only the Makefile
36   dontConfigure = true;
38   makeFlags = [
39     "PERLPATH=${perl}/bin/perl"
40     # We *need* to pass DESTDIR, as the Makefile ignores PREFIX.
41     "DESTDIR=$(out)"
42     # Relative paths.
43     "BINDIR=/bin"
44     "PERLDIR=/share/perl5"
45     "MODSDIR=/lib" # At runtime, AMC will test for that dir before
46     # defaulting to the "portable" strategy we use, so this test
47     # *must* fail.  *But* this variable cannot be set to anything but
48     # "/lib" , because that name is hardcoded in the main executable
49     # and this variable controls both both the path AMC will check at
50     # runtime, AND the path where the actual modules will be stored at
51     # build-time.  This has been reported upstream as
52     # https://project.auto-multiple-choice.net/issues/872
53     "TEXDIR=/tex/latex/" # what texlive.combine expects
54     "TEXDOCDIR=/share/doc/texmf/" # TODO where to put this?
55     "MAN1DIR=/share/man/man1"
56     "DESKTOPDIR=/share/applications"
57     "METAINFODIR=/share/metainfo"
58     "ICONSDIR=/share/auto-multiple-choice/icons"
59     "APPICONDIR=/share/icons/hicolor"
60     "LOCALEDIR=/share/locale"
61     "MODELSDIR=/share/auto-multiple-choice/models"
62     "DOCDIR=/share/doc/auto-multiple-choice"
63     "SHARED_MIMEINFO_DIR=/share/mime/packages"
64     "LANG_GTKSOURCEVIEW_DIR=/share/gtksourceview-4/language-specs"
65     # Pretend to be redhat so `install` doesn't try to chown/chgrp.
66     "SYSTEM_TYPE=rpm"
67     "GCC=${stdenv.cc.targetPrefix}cc"
68     "GCC_PP=${stdenv.cc.targetPrefix}c++"
69   ];
71   preFixup = ''
72     makeWrapperArgs+=("''${gappsWrapperArgs[@]}")
73   '';
75   postFixup = ''
76     wrapProgram $out/bin/auto-multiple-choice \
77     ''${makeWrapperArgs[@]} \
78     --prefix PERL5LIB : "${with perlPackages; makeFullPerlPath [
79       ArchiveZip
80       DBDSQLite
81       Cairo
82       CairoGObject
83       DBI
84       Glib
85       GlibObjectIntrospection
86       Gtk3
87       LocaleGettext
88       OpenOfficeOODoc
89       PerlMagick
90       TextCSV
91       XMLParser
92       XMLSimple
93       XMLWriter
94     ]}:"$out/share/perl5 \
95     --prefix XDG_DATA_DIRS : "$out/share:$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH" \
96     --set TEXINPUTS ":.:$out/tex/latex"
97   '';
99   nativeBuildInputs = [
100     pkg-config
101     makeWrapper
102     wrapGAppsHook
103     gobject-introspection
104   ];
106   buildInputs = [
107     cairo
108     cairo.dev
109     dblatex
110     gnumake
111     graphicsmagick
112     gsettings-desktop-schemas
113     gtk3
114     hicolor-icon-theme
115     libnotify
116     librsvg
117     libxslt
118     netpbm
119     opencv
120     pango
121     poppler
122   ] ++ (with perlPackages; [
123     perl
124     ArchiveZip
125     Cairo
126     CairoGObject
127     DBDSQLite
128     DBI
129     Glib
130     GlibObjectIntrospection
131     Gtk3
132     LocaleGettext
133     PerlMagick
134     TextCSV
135     XMLParser
136     XMLSimple
137     XMLWriter
138   ]);
140   passthru = {
141     tlType = "run";
142     pkgs = [ finalAttrs.finalPackage ];
143   };
145   meta = with lib; {
146     description = "Create and manage multiple choice questionnaires with automated marking.";
147     mainProgram = "auto-multiple-choice";
148     longDescription = ''
149       Create, manage and mark multiple-choice questionnaires.
150       auto-multiple-choice features automated or manual formatting with
151       LaTeX, shuffling of questions and answers and automated marking using
152       Optical Mark Recognition.
154       Questionnaires can be created using either a very simple text syntax,
155       AMC-TXT, or LaTeX. In the latter case, your TeXLive installation must
156       be combined with this package.  This can be done in configuration.nix
157       as follows:
159       <screen>
160       …
161       environment.systemPackages = with pkgs; [
162         auto-multiple-choice
163         (texlive.combine {
164           inherit (pkgs.texlive) scheme-full;
165           inherit auto-multiple-choice;
166         })
167       ];
168       </screen>
170       For usage instructions, see documentation at the project's homepage.
171     '';
172     homepage = "https://www.auto-multiple-choice.net/";
173     changelog = "https://gitlab.com/jojo_boulix/auto-multiple-choice/-/blob/master/ChangeLog";
174     license = licenses.gpl2Plus;
175     maintainers = [ maintainers.thblt ];
176     platforms = platforms.all;
177   };