mirror of
https://github.com/NixOS/nixpkgs.git
synced 2025-01-23 13:24:29 +00:00
ff1a94e523
The nixpkgs-unstable channel's programs.sqlite was used to identify packages producing exactly one binary, and these automatically added to their package definitions wherever possible.
179 lines
4.6 KiB
Nix
179 lines
4.6 KiB
Nix
{ lib
|
|
, stdenv
|
|
, fetchurl
|
|
, perlPackages
|
|
, makeWrapper
|
|
, wrapGAppsHook
|
|
, cairo
|
|
, dblatex
|
|
, gnumake
|
|
, gobject-introspection
|
|
, graphicsmagick
|
|
, gsettings-desktop-schemas
|
|
, gtk3
|
|
, hicolor-icon-theme
|
|
, libnotify
|
|
, librsvg
|
|
, libxslt
|
|
, netpbm
|
|
, opencv
|
|
, pango
|
|
, perl
|
|
, pkg-config
|
|
, poppler
|
|
, auto-multiple-choice
|
|
}:
|
|
stdenv.mkDerivation (finalAttrs: rec {
|
|
pname = "auto-multiple-choice";
|
|
version = "1.6.0";
|
|
src = fetchurl {
|
|
url = "https://download.auto-multiple-choice.net/${pname}_${version}_dist.tar.gz";
|
|
# before 1.6.0, the URL pattern used "precomp" instead of "dist". ^^^^
|
|
sha256 = "sha256-I9Xw1BN8ZSQhi5F1R3axHBKE6tnaCNk8k5tts6LoMjY=";
|
|
};
|
|
|
|
# There's only the Makefile
|
|
dontConfigure = true;
|
|
|
|
makeFlags = [
|
|
"PERLPATH=${perl}/bin/perl"
|
|
# We *need* to pass DESTDIR, as the Makefile ignores PREFIX.
|
|
"DESTDIR=$(out)"
|
|
# Relative paths.
|
|
"BINDIR=/bin"
|
|
"PERLDIR=/share/perl5"
|
|
"MODSDIR=/lib" # At runtime, AMC will test for that dir before
|
|
# defaulting to the "portable" strategy we use, so this test
|
|
# *must* fail. *But* this variable cannot be set to anything but
|
|
# "/lib" , because that name is hardcoded in the main executable
|
|
# and this variable controls both both the path AMC will check at
|
|
# runtime, AND the path where the actual modules will be stored at
|
|
# build-time. This has been reported upstream as
|
|
# https://project.auto-multiple-choice.net/issues/872
|
|
"TEXDIR=/tex/latex/" # what texlive.combine expects
|
|
"TEXDOCDIR=/share/doc/texmf/" # TODO where to put this?
|
|
"MAN1DIR=/share/man/man1"
|
|
"DESKTOPDIR=/share/applications"
|
|
"METAINFODIR=/share/metainfo"
|
|
"ICONSDIR=/share/auto-multiple-choice/icons"
|
|
"APPICONDIR=/share/icons/hicolor"
|
|
"LOCALEDIR=/share/locale"
|
|
"MODELSDIR=/share/auto-multiple-choice/models"
|
|
"DOCDIR=/share/doc/auto-multiple-choice"
|
|
"SHARED_MIMEINFO_DIR=/share/mime/packages"
|
|
"LANG_GTKSOURCEVIEW_DIR=/share/gtksourceview-4/language-specs"
|
|
# Pretend to be redhat so `install` doesn't try to chown/chgrp.
|
|
"SYSTEM_TYPE=rpm"
|
|
"GCC=${stdenv.cc.targetPrefix}cc"
|
|
"GCC_PP=${stdenv.cc.targetPrefix}c++"
|
|
];
|
|
|
|
preFixup = ''
|
|
makeWrapperArgs+=("''${gappsWrapperArgs[@]}")
|
|
'';
|
|
|
|
postFixup = ''
|
|
wrapProgram $out/bin/auto-multiple-choice \
|
|
''${makeWrapperArgs[@]} \
|
|
--prefix PERL5LIB : "${with perlPackages; makeFullPerlPath [
|
|
ArchiveZip
|
|
DBDSQLite
|
|
Cairo
|
|
CairoGObject
|
|
DBI
|
|
Glib
|
|
GlibObjectIntrospection
|
|
Gtk3
|
|
LocaleGettext
|
|
OpenOfficeOODoc
|
|
PerlMagick
|
|
TextCSV
|
|
XMLParser
|
|
XMLSimple
|
|
XMLWriter
|
|
]}:"$out/share/perl5 \
|
|
--prefix XDG_DATA_DIRS : "$out/share:$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH" \
|
|
--set TEXINPUTS ":.:$out/tex/latex"
|
|
'';
|
|
|
|
nativeBuildInputs = [
|
|
pkg-config
|
|
makeWrapper
|
|
wrapGAppsHook
|
|
gobject-introspection
|
|
];
|
|
|
|
buildInputs = [
|
|
cairo
|
|
cairo.dev
|
|
dblatex
|
|
gnumake
|
|
graphicsmagick
|
|
gsettings-desktop-schemas
|
|
gtk3
|
|
hicolor-icon-theme
|
|
libnotify
|
|
librsvg
|
|
libxslt
|
|
netpbm
|
|
opencv
|
|
pango
|
|
poppler
|
|
] ++ (with perlPackages; [
|
|
perl
|
|
ArchiveZip
|
|
Cairo
|
|
CairoGObject
|
|
DBDSQLite
|
|
DBI
|
|
Glib
|
|
GlibObjectIntrospection
|
|
Gtk3
|
|
LocaleGettext
|
|
PerlMagick
|
|
TextCSV
|
|
XMLParser
|
|
XMLSimple
|
|
XMLWriter
|
|
]);
|
|
|
|
passthru = {
|
|
tlType = "run";
|
|
pkgs = [ finalAttrs.finalPackage ];
|
|
};
|
|
|
|
meta = with lib; {
|
|
description = "Create and manage multiple choice questionnaires with automated marking.";
|
|
mainProgram = "auto-multiple-choice";
|
|
longDescription = ''
|
|
Create, manage and mark multiple-choice questionnaires.
|
|
auto-multiple-choice features automated or manual formatting with
|
|
LaTeX, shuffling of questions and answers and automated marking using
|
|
Optical Mark Recognition.
|
|
|
|
Questionnaires can be created using either a very simple text syntax,
|
|
AMC-TXT, or LaTeX. In the latter case, your TeXLive installation must
|
|
be combined with this package. This can be done in configuration.nix
|
|
as follows:
|
|
|
|
<screen>
|
|
…
|
|
environment.systemPackages = with pkgs; [
|
|
auto-multiple-choice
|
|
(texlive.combine {
|
|
inherit (pkgs.texlive) scheme-full;
|
|
inherit auto-multiple-choice;
|
|
})
|
|
];
|
|
</screen>
|
|
|
|
For usage instructions, see documentation at the project's homepage.
|
|
'';
|
|
homepage = "https://www.auto-multiple-choice.net/";
|
|
changelog = "https://gitlab.com/jojo_boulix/auto-multiple-choice/-/blob/master/ChangeLog";
|
|
license = licenses.gpl2Plus;
|
|
maintainers = [ maintainers.thblt ];
|
|
platforms = platforms.all;
|
|
};
|
|
})
|