From 90b3f4931d1b279185ede78b1fca81a707267b86 Mon Sep 17 00:00:00 2001 From: Jasi Date: Fri, 20 Jun 2025 00:34:39 -0400 Subject: [PATCH 1/3] gaphor: move to pkgs/by-name --- .../ga/gaphor/package.nix} | 28 ++++--------------- pkgs/top-level/all-packages.nix | 2 -- 2 files changed, 5 insertions(+), 25 deletions(-) rename pkgs/{tools/misc/gaphor/default.nix => by-name/ga/gaphor/package.nix} (79%) diff --git a/pkgs/tools/misc/gaphor/default.nix b/pkgs/by-name/ga/gaphor/package.nix similarity index 79% rename from pkgs/tools/misc/gaphor/default.nix rename to pkgs/by-name/ga/gaphor/package.nix index 725fa2a1305b..cc09eb63fa2f 100644 --- a/pkgs/tools/misc/gaphor/default.nix +++ b/pkgs/by-name/ga/gaphor/package.nix @@ -1,34 +1,19 @@ { 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, + python3Packages, nix-update-script, }: - -buildPythonApplication rec { +python3Packages.buildPythonApplication rec { pname = "gaphor"; version = "3.0.0"; pyproject = true; @@ -41,6 +26,7 @@ buildPythonApplication rec { pythonRelaxDeps = [ "defusedxml" "gaphas" + "pydot" ]; nativeBuildInputs = [ @@ -55,9 +41,9 @@ buildPythonApplication rec { libadwaita ]; - build-system = [ poetry-core ]; + build-system = [ python3Packages.poetry-core ]; - dependencies = [ + dependencies = with python3Packages; [ babel better-exceptions defusedxml @@ -85,10 +71,6 @@ buildPythonApplication rec { # 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[@]}" \ diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 0a14cfeeff4d..3f041b849625 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 From 7701707afc494359b04f2dde93ed5e3c4c441d5a Mon Sep 17 00:00:00 2001 From: Jasi Date: Fri, 20 Jun 2025 01:05:48 -0400 Subject: [PATCH 2/3] gaphor: furnish meta attributes; add normalcea as maintainer --- pkgs/by-name/ga/gaphor/package.nix | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/pkgs/by-name/ga/gaphor/package.nix b/pkgs/by-name/ga/gaphor/package.nix index cc09eb63fa2f..7d4a597a4231 100644 --- a/pkgs/by-name/ga/gaphor/package.nix +++ b/pkgs/by-name/ga/gaphor/package.nix @@ -84,11 +84,24 @@ python3Packages.buildPythonApplication rec { }; meta = { - description = "Simple modeling tool written in Python"; - homepage = "https://github.com/gaphor/gaphor"; + 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; }; } From ee4b8baf8b58bcb754dd105d1af503b7819092ce Mon Sep 17 00:00:00 2001 From: Jasi Date: Fri, 20 Jun 2025 01:16:03 -0400 Subject: [PATCH 3/3] =?UTF-8?q?gaphor:=203.0.0=20=E2=86=92=203.1.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pkgs/by-name/ga/gaphor/package.nix | 58 +++++++++++++++--------------- 1 file changed, 29 insertions(+), 29 deletions(-) diff --git a/pkgs/by-name/ga/gaphor/package.nix b/pkgs/by-name/ga/gaphor/package.nix index 7d4a597a4231..65e7db2b43b6 100644 --- a/pkgs/by-name/ga/gaphor/package.nix +++ b/pkgs/by-name/ga/gaphor/package.nix @@ -1,43 +1,39 @@ { lib, - fetchPypi, - copyDesktopItems, + fetchFromGitHub, + glib, gobject-introspection, wrapGAppsHook4, gtksourceview5, libadwaita, - pango, - gtk4, - librsvg, - makeDesktopItem, python3Packages, nix-update-script, }: python3Packages.buildPythonApplication rec { pname = "gaphor"; - version = "3.0.0"; + version = "3.1.0"; pyproject = true; - src = fetchPypi { - inherit pname version; - hash = "sha256-I5n0XeZLQw4qje6gwh2aMu5Zo5tuXgESHhkR0xegaYM="; + src = fetchFromGitHub { + owner = "gaphor"; + repo = "gaphor"; + tag = version; + hash = "sha256-0xivimpYM1gwOO2QrovYiJPNUfuGclr+F/WyHLNl+jw="; }; pythonRelaxDeps = [ - "defusedxml" - "gaphas" "pydot" + "pygobject" ]; nativeBuildInputs = [ - copyDesktopItems + glib gobject-introspection wrapGAppsHook4 ]; buildInputs = [ gtksourceview5 - pango libadwaita ]; @@ -58,25 +54,29 @@ python3Packages.buildPythonApplication rec { tinycss2 ]; - desktopItems = [ - (makeDesktopItem { - name = pname; - exec = "gaphor"; - icon = "gaphor"; - comment = meta.description; - desktopName = "Gaphor"; - }) - ]; + 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/ - # Disable automatic wrapGAppsHook4 to prevent double wrapping + 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[@]}" \ - --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" - ) + makeWrapperArgs+=("''${gappsWrapperArgs[@]}") ''; passthru = {