Merge pull request #91291 from jorsn/new.openlp
This commit is contained in:
commit
cc444119b5
86
pkgs/applications/misc/openlp/default.nix
Normal file
86
pkgs/applications/misc/openlp/default.nix
Normal file
@ -0,0 +1,86 @@
|
|||||||
|
# This file contains all runtime glue: Bindings to optional runtime dependencies
|
||||||
|
# for pdfSupport, presentationSupport, and media playback.
|
||||||
|
{ lib, mkDerivation, wrapGAppsHook, python3Packages
|
||||||
|
|
||||||
|
# qt deps
|
||||||
|
, qtbase, qtmultimedia
|
||||||
|
|
||||||
|
# optional deps
|
||||||
|
, pdfSupport ? false, mupdf # alternatively could use ghostscript
|
||||||
|
, presentationSupport ? false, libreoffice-unwrapped
|
||||||
|
, vlcSupport ? false
|
||||||
|
, gstreamerSupport ? false, gst_all_1, gstPlugins ? (gst: [
|
||||||
|
gst.gst-plugins-base
|
||||||
|
gst.gst-plugins-good
|
||||||
|
gst.gst-plugins-bad
|
||||||
|
gst.gst-plugins-ugly
|
||||||
|
])
|
||||||
|
|
||||||
|
#, enableMySql ? false # Untested. If interested, contact maintainer.
|
||||||
|
#, enablePostgreSql ? false # Untested. If interested, contact maintainer.
|
||||||
|
#, enableJenkinsApi ? false # Untested. If interested, contact maintainer.
|
||||||
|
}:
|
||||||
|
|
||||||
|
let p = gstPlugins gst_all_1;
|
||||||
|
# If gstreamer is activated but no plugins are given, it will at runtime
|
||||||
|
# create the false illusion of being usable.
|
||||||
|
in assert gstreamerSupport -> (builtins.isList p && builtins.length p > 0);
|
||||||
|
|
||||||
|
let
|
||||||
|
# optional packages
|
||||||
|
libreofficePath = "${libreoffice-unwrapped}/lib/libreoffice/program";
|
||||||
|
|
||||||
|
# lib functions
|
||||||
|
inherit (lib.lists) optional optionals;
|
||||||
|
wrapSetVar = var: ''--set ${var} "''$${var}"'';
|
||||||
|
|
||||||
|
# base pkg/lib
|
||||||
|
baseLib = python3Packages.callPackage ./lib.nix { };
|
||||||
|
in mkDerivation {
|
||||||
|
inherit (baseLib) pname version src;
|
||||||
|
|
||||||
|
nativeBuildInputs = [ python3Packages.wrapPython wrapGAppsHook ];
|
||||||
|
buildInputs = [ qtbase ] ++ optionals gstreamerSupport
|
||||||
|
([ qtmultimedia.bin gst_all_1.gstreamer ] ++ gstPlugins gst_all_1);
|
||||||
|
propagatedBuildInputs = optional pdfSupport mupdf
|
||||||
|
++ optional presentationSupport libreoffice-unwrapped;
|
||||||
|
pythonPath = [ baseLib ] ++ optional vlcSupport python3Packages.python-vlc;
|
||||||
|
# ++ optional enableMySql mysql-connector # Untested. If interested, contact maintainer.
|
||||||
|
# ++ optional enablePostgreSql psycopg2 # Untested. If interested, contact maintainer.
|
||||||
|
# ++ optional enableJenkinsApi jenkinsapi # Untested. If interested, contact maintainer.
|
||||||
|
|
||||||
|
PYTHONPATH = libreofficePath;
|
||||||
|
URE_BOOTSTRAP = "vnd.sun.star.pathname:${libreofficePath}/fundamentalrc";
|
||||||
|
UNO_PATH = libreofficePath;
|
||||||
|
LD_LIBRARY_PATH = libreofficePath;
|
||||||
|
JAVA_HOME = "${libreoffice-unwrapped.jdk.home}";
|
||||||
|
|
||||||
|
dontWrapQtApps = true;
|
||||||
|
dontWrapGApps = true;
|
||||||
|
|
||||||
|
# defined in gappsWrapperHook
|
||||||
|
wrapPrefixVariables = optionals presentationSupport
|
||||||
|
[ "PYTHONPATH" "LD_LIBRARY_PATH" "JAVA_HOME" ];
|
||||||
|
makeWrapperArgs = [
|
||||||
|
"\${gappsWrapperArgs[@]}"
|
||||||
|
"\${qtWrapperArgs[@]}"
|
||||||
|
] ++ optionals presentationSupport
|
||||||
|
([ "--prefix PATH : ${libreoffice-unwrapped}/bin" ]
|
||||||
|
++ map wrapSetVar [ "URE_BOOTSTRAP" "UNO_PATH" ]);
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
install -D openlp.py $out/bin/openlp
|
||||||
|
'';
|
||||||
|
|
||||||
|
preFixup = ''
|
||||||
|
wrapPythonPrograms
|
||||||
|
'';
|
||||||
|
|
||||||
|
meta = baseLib.meta // {
|
||||||
|
hydraPlatforms = [ ]; # this is only the wrapper; baseLib gets built
|
||||||
|
};
|
||||||
|
|
||||||
|
passthru = {
|
||||||
|
inherit baseLib;
|
||||||
|
};
|
||||||
|
}
|
103
pkgs/applications/misc/openlp/lib.nix
Normal file
103
pkgs/applications/misc/openlp/lib.nix
Normal file
@ -0,0 +1,103 @@
|
|||||||
|
# This file contains the base package, some of which is compiled.
|
||||||
|
# Runtime glue to optinal runtime dependencies is in 'default.nix'.
|
||||||
|
{ fetchurl, lib, qt5
|
||||||
|
|
||||||
|
# python deps
|
||||||
|
, python, buildPythonPackage
|
||||||
|
, alembic, beautifulsoup4, chardet, lxml, Mako, pyenchant
|
||||||
|
, pyqt5_with_qtwebkit, pyxdg, sip, sqlalchemy, sqlalchemy_migrate
|
||||||
|
}:
|
||||||
|
|
||||||
|
buildPythonPackage rec {
|
||||||
|
pname = "openlp";
|
||||||
|
version = "2.4.6";
|
||||||
|
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://get.openlp.org/${version}/OpenLP-${version}.tar.gz";
|
||||||
|
sha256 = "f63dcf5f1f8a8199bf55e806b44066ad920d26c9cf67ae432eb8cdd1e761fc30";
|
||||||
|
};
|
||||||
|
|
||||||
|
doCheck = false;
|
||||||
|
# FIXME: checks must be disabled because they are lacking the qt env.
|
||||||
|
# They fail like this, even if built and wrapped with all Qt and
|
||||||
|
# runtime dependencies:
|
||||||
|
#
|
||||||
|
# running install tests
|
||||||
|
# qt.qpa.plugin: Could not find the Qt platform plugin "xcb" in ""
|
||||||
|
# This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.
|
||||||
|
#
|
||||||
|
# Available platform plugins are: wayland-egl, wayland, wayland-xcomposite-egl, wayland-xcomposite-glx.
|
||||||
|
#
|
||||||
|
# See also https://discourse.nixos.org/t/qt-plugin-path-unset-in-test-phase/
|
||||||
|
|
||||||
|
#checkInputs = [ mock nose ];
|
||||||
|
nativeBuildInputs = [ qt5.qttools ];
|
||||||
|
propagatedBuildInputs = [
|
||||||
|
alembic
|
||||||
|
beautifulsoup4
|
||||||
|
chardet
|
||||||
|
lxml
|
||||||
|
Mako
|
||||||
|
pyenchant
|
||||||
|
pyqt5_with_qtwebkit
|
||||||
|
pyxdg
|
||||||
|
sip
|
||||||
|
sqlalchemy
|
||||||
|
sqlalchemy_migrate
|
||||||
|
];
|
||||||
|
|
||||||
|
prePatch = ''
|
||||||
|
echo 'from vlc import *' > openlp/core/ui/media/vendor/vlc.py
|
||||||
|
'';
|
||||||
|
|
||||||
|
dontWrapQtApps = true;
|
||||||
|
dontWrapGApps = true;
|
||||||
|
postInstall = ''
|
||||||
|
( # use subshell because of cd
|
||||||
|
tdestdir="$out/i18n"
|
||||||
|
mkdir -p "$tdestdir"
|
||||||
|
cd ./resources/i18n
|
||||||
|
for file in *.ts; do
|
||||||
|
lconvert -i "$file" -o "$tdestdir/''${file%%ts}qm"
|
||||||
|
done
|
||||||
|
)
|
||||||
|
'';
|
||||||
|
|
||||||
|
preFixup = ''
|
||||||
|
rm -r $out/${python.sitePackages}/tests
|
||||||
|
rm -r $out/bin
|
||||||
|
'';
|
||||||
|
|
||||||
|
meta = with lib; {
|
||||||
|
description = "Free church presentation software";
|
||||||
|
homepage = "https://openlp.org/";
|
||||||
|
downloadPage = "https://openlp.org/#downloads";
|
||||||
|
platforms = platforms.unix;
|
||||||
|
license = licenses.gpl2Only;
|
||||||
|
maintainers = [ maintainers.jorsn ];
|
||||||
|
|
||||||
|
longDescription = ''
|
||||||
|
OpenLP is a free church presentation software.
|
||||||
|
|
||||||
|
Features:
|
||||||
|
|
||||||
|
* Cross platform between Linux, Windows, OS X and FreeBSD
|
||||||
|
* Display songs, Bible verses, presentations, images, audio and video
|
||||||
|
* Control OpenLP remotely via the Android remote, iOS remote or mobile web browser
|
||||||
|
* Quickly and easily import songs from other popular presentation packages
|
||||||
|
* Easy enough to use to get up and running in less than 10 minutes
|
||||||
|
|
||||||
|
Remark: This pkg only supports sqlite dbs. If you wish to have support for
|
||||||
|
mysql or postgresql dbs, or Jenkins, please contact the maintainer.
|
||||||
|
|
||||||
|
Bugs which affect this software packaged in Nixpkgs:
|
||||||
|
|
||||||
|
1. The package must disable checks, because they are lacking the qt env.
|
||||||
|
(see pkg source and https://discourse.nixos.org/t/qt-plugin-path-unset-in-test-phase/)
|
||||||
|
2. There is a segfault on exit. Not a real problem, according to debug log, everything
|
||||||
|
shuts down correctly. Maybe related to https://forums.openlp.org/discussion/3620/crash-on-exit.
|
||||||
|
Plan: Wait for OpenLP-3, since it is already in beta 1
|
||||||
|
(2021-02-09; news: https://openlp.org/blog/).
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
@ -28274,6 +28274,14 @@ in
|
|||||||
|
|
||||||
octopus = callPackage ../applications/science/chemistry/octopus { };
|
octopus = callPackage ../applications/science/chemistry/octopus { };
|
||||||
|
|
||||||
|
openlp = libsForQt5.callPackage ../applications/misc/openlp { };
|
||||||
|
openlpFull = appendToName "full" (openlp.override {
|
||||||
|
pdfSupport = true;
|
||||||
|
presentationSupport = true;
|
||||||
|
vlcSupport = true;
|
||||||
|
gstreamerSupport = true;
|
||||||
|
});
|
||||||
|
|
||||||
openmolcas = callPackage ../applications/science/chemistry/openmolcas { };
|
openmolcas = callPackage ../applications/science/chemistry/openmolcas { };
|
||||||
|
|
||||||
pymol = callPackage ../applications/science/chemistry/pymol { };
|
pymol = callPackage ../applications/science/chemistry/pymol { };
|
||||||
|
Loading…
Reference in New Issue
Block a user