diff --git a/pkgs/applications/office/timeline/default.nix b/pkgs/applications/office/timeline/default.nix new file mode 100644 index 00000000000000..f4f83ce8e7a728 --- /dev/null +++ b/pkgs/applications/office/timeline/default.nix @@ -0,0 +1,89 @@ +{ lib +, fetchurl +, python3 +, gettext +, makeDesktopItem +, copyDesktopItems +}: + +python3.pkgs.buildPythonApplication rec { + pname = "timeline"; + version = "2.4.0"; + + src = fetchurl { + url = "mirror://sourceforge/thetimelineproj/${pname}-${version}.zip"; + sha256 = "1pa0whqci6c2p20xf7gbndrrpr1xg42ixhql595ibdd4p3l37v23"; + }; + + nativeBuildInputs = [ python3.pkgs.wrapPython copyDesktopItems ]; + + pythonPath = with python3.pkgs; [ + wxPython_4_0 # not compatible with wxPython_4_1. reported upstream https://github.com/wxWidgets/Phoenix/issues/1956 + humblewx + icalendar + markdown + pysvg-py3 + pillow + ]; + + checkInputs = [ + gettext + python3.pkgs.mock + ]; + + desktopItems = [ + (makeDesktopItem { + desktopName = "Timeline"; + name = "timeline"; + comment = "Display and navigate information on a timeline"; + icon = "timeline"; + terminal = false; + exec = "timeline"; + categories = "Office;Calendar;"; + }) + ]; + + dontBuild = true; + doCheck = false; + + patchPhase = '' + sed -i "s|_ROOT =.*|_ROOT = \"$out/usr/share/timeline/\"|" source/timelinelib/config/paths.py + ''; + + installPhase = '' + runHook preInstall + + site_packages=$out/${python3.pkgs.python.sitePackages} + install -D -m755 source/timeline.py $out/bin/timeline + mkdir -p $site_packages + cp -r source/timelinelib $site_packages/ + + mkdir -p $out/usr/share/timeline/locale + cp -r icons $out/usr/share/timeline/ + cp -r translations/ $out/usr/share/timeline/ + + mkdir -p $out/share/icons/hicolor/{48x48,32x32,16x16}/apps + cp icons/48.png $out/share/icons/hicolor/48x48/apps/timeline.png + cp icons/32.png $out/share/icons/hicolor/32x32/apps/timeline.png + cp icons/16.png $out/share/icons/hicolor/16x16/apps/timeline.png + + runHook postInstall + ''; + + # tests fail because they need an x server + # Unable to access the X Display, is $DISPLAY set properly? + checkPhase = '' + runHook preCheck + ${python3.interpreter} tools/execute-specs.py + runHook postCheck + ''; + + meta = with lib; { + homepage = "http://thetimelineproj.sourceforge.net/"; + changelog = "http://thetimelineproj.sourceforge.net/changelog.html"; + description = "Display and navigate information on a timeline"; + license = with licenses; [ gpl3Only cc-by-sa-30 ]; + platforms = with platforms; unix; + maintainers = with maintainers; [ davidak ]; + }; +} diff --git a/pkgs/development/python-modules/humblewx/default.nix b/pkgs/development/python-modules/humblewx/default.nix new file mode 100644 index 00000000000000..7fd0b0e8dd90df --- /dev/null +++ b/pkgs/development/python-modules/humblewx/default.nix @@ -0,0 +1,42 @@ +{ lib +, fetchFromGitHub +, buildPythonPackage +, wxPython_4_0 +, python3 +}: + +buildPythonPackage rec { + pname = "humblewx"; + version = "0.2.2"; + + src = fetchFromGitHub { + owner = "thetimelineproj"; + repo = pname; + rev = version; + sha256 = "0fv8gwlbcj000qq34inbwgxf0xgibs590dsyqnw0mmyb7f1iq210"; + }; + + # timeline is not compatible with wxPython_4_1. reported upstream + propagatedBuildInputs = [ wxPython_4_0 ]; + + checkPhase = '' + runHook preCheck + for i in examples/*; do + ${python3.interpreter} $i + done + runHook postCheck + ''; + + # Unable to access the X Display, is $DISPLAY set properly? + # would have to use nixos module tests, but it is not worth it + doCheck = false; + + pythonImportsCheck = [ "humblewx" ]; + + meta = { + homepage = "https://github.com/thetimelineproj/humblewx"; + description = "Library that simplifies creating user interfaces with wxPython"; + license = lib.licenses.gpl3Only; + maintainers = with lib.maintainers; [ davidak ]; + }; +} diff --git a/pkgs/development/python-modules/pysvg-py3/default.nix b/pkgs/development/python-modules/pysvg-py3/default.nix new file mode 100644 index 00000000000000..6f9ba796132e99 --- /dev/null +++ b/pkgs/development/python-modules/pysvg-py3/default.nix @@ -0,0 +1,33 @@ +{ lib +, fetchFromGitHub +, buildPythonPackage +, python +}: + +buildPythonPackage rec { + pname = "pysvg-py3"; + version = "0.2.2-post3"; + + src = fetchFromGitHub { + owner = "alorence"; + repo = pname; + rev = version; + sha256 = "1slync0knpcjgl4xpym8w4249iy6vmrwbarpnbjzn9xca8g1h2f0"; + }; + + checkPhase = '' + runHook preCheck + mkdir testoutput + ${python.interpreter} sample/tutorial.py + runHook postCheck + ''; + + pythonImportsCheck = [ "pysvg" ]; + + meta = { + homepage = "https://github.com/alorence/pysvg-py3"; + description = "Creating SVG with Python"; + license = lib.licenses.bsd2; + maintainers = with lib.maintainers; [ davidak ]; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 90f07a70dbe25a..03cff6fde1537d 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -4141,6 +4141,8 @@ in inherit (darwin.apple_sdk.frameworks) AppKit Security; }; + timeline = callPackage ../applications/office/timeline/default.nix { }; + tsm-client = callPackage ../tools/backup/tsm-client { jdk8 = null; }; tsm-client-withGui = callPackage ../tools/backup/tsm-client { }; diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index ec7afc633ea4f1..2157b63dd4589d 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -3115,6 +3115,8 @@ in { humanize = callPackage ../development/python-modules/humanize { }; + humblewx = callPackage ../development/python-modules/humblewx { }; + hupper = callPackage ../development/python-modules/hupper { }; hvac = callPackage ../development/python-modules/hvac { }; @@ -6168,6 +6170,8 @@ in { py_stringmatching = callPackage ../development/python-modules/py_stringmatching { }; + pysvg-py3 = callPackage ../development/python-modules/pysvg-py3 { }; + pysvn = callPackage ../development/python-modules/pysvn { inherit (pkgs) bash subversion apr aprutil expat neon openssl; };