Unverified Commit 409a0cae authored by Aleksana's avatar Aleksana Committed by GitHub
Browse files

gaphor: 3.0.0 → 3.1.0; overhaul derivation builder (#418335)

parents cc80af1b ee4b8baf
Loading
Loading
Loading
Loading
+107 −0
Original line number Diff line number Diff line
{
  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;
  };
}
+0 −112
Original line number Diff line number Diff line
{
  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;
  };
}
+0 −2
Original line number Diff line number Diff line
@@ -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