diff --git a/pkgs/by-name/ga/gaphor/package.nix b/pkgs/by-name/ga/gaphor/package.nix new file mode 100644 index 000000000000..65e7db2b43b6 --- /dev/null +++ b/pkgs/by-name/ga/gaphor/package.nix @@ -0,0 +1,107 @@ +{ + lib, + fetchFromGitHub, + glib, + gobject-introspection, + wrapGAppsHook4, + gtksourceview5, + libadwaita, + python3Packages, + nix-update-script, +}: +python3Packages.buildPythonApplication rec { + pname = "gaphor"; + version = "3.1.0"; + pyproject = true; + + src = fetchFromGitHub { + owner = "gaphor"; + repo = "gaphor"; + tag = version; + hash = "sha256-0xivimpYM1gwOO2QrovYiJPNUfuGclr+F/WyHLNl+jw="; + }; + + pythonRelaxDeps = [ + "pydot" + "pygobject" + ]; + + nativeBuildInputs = [ + glib + gobject-introspection + wrapGAppsHook4 + ]; + + buildInputs = [ + gtksourceview5 + libadwaita + ]; + + build-system = [ python3Packages.poetry-core ]; + + dependencies = with python3Packages; [ + babel + better-exceptions + defusedxml + dulwich + gaphas + generic + jedi + pillow + pycairo + pydot + pygobject3 + tinycss2 + ]; + + postInstall = '' + install -Dm644 data/org.gaphor.Gaphor.appdata.xml -t $out/share/metainfo/ + install -Dm644 data/org.gaphor.Gaphor.desktop -t $out/share/applications/ + install -Dm644 data/org.gaphor.Gaphor.xml -t $out/share/mime/packages/ + install -Dm644 data/logos/org.gaphor.Gaphor.svg -t $out/share/icons/hicolor/scalable/apps/ + install -Dm644 data/logos/org.gaphor.Gaphor-symbolic.svg -t $out/share/icons/hicolor/symbolic/apps/ + + install -Dm644 data/logos/gaphor-24x24.png $out/share/icons/hicolor/24x24/apps/org.gaphor.Gaphor.png + install -Dm644 data/logos/gaphor-48x48.png $out/share/icons/hicolor/48x48/apps/org.gaphor.Gaphor.png + + install -Dm644 gaphor/ui/installschemas/org.gaphor.Gaphor.gschema.xml -t $out/share/glib-2.0/schemas/ + glib-compile-schemas $out/share/glib-2.0/schemas/ + + install -Dm644 data/org.gaphor.Gaphor.service -t $out/share/dbus-1/services/ + substituteInPlace $out/share/dbus-1/services/org.gaphor.Gaphor.service \ + --replace-fail "Exec=/usr/bin/gaphor" "Exec=$out/bin/gaphor" + ''; + + # Prevent double wrapping + dontWrapGApps = true; + + preFixup = '' + makeWrapperArgs+=("''${gappsWrapperArgs[@]}") + ''; + + passthru = { + updateScript = nix-update-script { }; + }; + + meta = { + description = "UML and SysML modeling tool"; + longDescription = '' + Gaphor is a UML, SysML, RAAML, and C4 modeling application. It + is designed to be easy to use, while still being powerful. + Gaphor implements a fully-compliant UML 2 data model, so it is + much more than a picture drawing tool. You can use Gaphor to + quickly visualize different aspects of a system as well as + create complete, highly complex models. + + Gaphor provides four modeling languages: UML, SysML, RAAML and C4 and + makes them accessible to beginners. + ''; + homepage = "https://gaphor.org/"; + changelog = "https://github.com/gaphor/gaphor/releases/tag/${version}"; + license = lib.licenses.asl20; + maintainers = with lib.maintainers; [ normalcea ]; + teams = [ lib.teams.gnome-circle ]; + mainProgram = "gaphor"; + platforms = lib.platforms.linux; + }; +} diff --git a/pkgs/tools/misc/gaphor/default.nix b/pkgs/tools/misc/gaphor/default.nix deleted file mode 100644 index 725fa2a1305b..000000000000 --- a/pkgs/tools/misc/gaphor/default.nix +++ /dev/null @@ -1,112 +0,0 @@ -{ - lib, - buildPythonApplication, - fetchPypi, - copyDesktopItems, - gobject-introspection, - poetry-core, - wrapGAppsHook4, - gtksourceview5, - libadwaita, - pango, - gaphas, - generic, - jedi, - pycairo, - pillow, - dulwich, - pydot, - defusedxml, - better-exceptions, - babel, - pygobject3, - tinycss2, - gtk4, - librsvg, - makeDesktopItem, - python, - nix-update-script, -}: - -buildPythonApplication rec { - pname = "gaphor"; - version = "3.0.0"; - pyproject = true; - - src = fetchPypi { - inherit pname version; - hash = "sha256-I5n0XeZLQw4qje6gwh2aMu5Zo5tuXgESHhkR0xegaYM="; - }; - - pythonRelaxDeps = [ - "defusedxml" - "gaphas" - ]; - - nativeBuildInputs = [ - copyDesktopItems - gobject-introspection - wrapGAppsHook4 - ]; - - buildInputs = [ - gtksourceview5 - pango - libadwaita - ]; - - build-system = [ poetry-core ]; - - dependencies = [ - babel - better-exceptions - defusedxml - dulwich - gaphas - generic - jedi - pillow - pycairo - pydot - pygobject3 - tinycss2 - ]; - - desktopItems = [ - (makeDesktopItem { - name = pname; - exec = "gaphor"; - icon = "gaphor"; - comment = meta.description; - desktopName = "Gaphor"; - }) - ]; - - # Disable automatic wrapGAppsHook4 to prevent double wrapping - dontWrapGApps = true; - - postInstall = '' - install -Dm644 $out/${python.sitePackages}/gaphor/ui/icons/hicolor/scalable/apps/org.gaphor.Gaphor.svg $out/share/pixmaps/gaphor.svg - ''; - - preFixup = '' - makeWrapperArgs+=( - "''${gappsWrapperArgs[@]}" \ - --prefix XDG_DATA_DIRS : "${gtk4}/share/gsettings-schemas/${gtk4.name}/" \ - --set GDK_PIXBUF_MODULE_FILE "${librsvg.out}/lib/gdk-pixbuf-2.0/2.10.0/loaders.cache" - ) - ''; - - passthru = { - updateScript = nix-update-script { }; - }; - - meta = { - description = "Simple modeling tool written in Python"; - homepage = "https://github.com/gaphor/gaphor"; - changelog = "https://github.com/gaphor/gaphor/releases/tag/${version}"; - license = lib.licenses.asl20; - teams = [ lib.teams.gnome-circle ]; - platforms = lib.platforms.linux; - }; -} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 8fe50aec5a33..fe208733e617 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -3021,8 +3021,6 @@ with pkgs; gandi-cli = python3Packages.callPackage ../tools/networking/gandi-cli { }; - gaphor = python3Packages.callPackage ../tools/misc/gaphor { }; - inherit (callPackages ../tools/filesystems/garage { }) garage garage_0_8