anchor.diff:  { mkDerivation
   , lib
   , fetchFromGitHub
  +, fetchpatch
   , qmake
   , pkg-config
   , qtbase
  
positive.code: , qtserialport
  , boost
  , libgit2
  }:
  
  let
    # build number corresponding to a release, has no further relation
    # see https://github.com/fritzing/fritzing-app/releases/tag/CD-498
    # fritzingBuild = "498";
    # version 0.9.6 is properly tagged, hope it continues
  
    # SHA256 of the fritzing-parts HEAD on the master branch,
    # which contains the latest stable parts definitions
    partsSha = "6f04697be286768bc9e4d64f8707e8e40cbcafcb";
  in
  
  mkDerivation rec {
    pname = "fritzing";
    version = "0.9.6";
  
    src = fetchFromGitHub {
      owner = pname;
      repo = "fritzing-app";
      rev = version;
      sha256 = "083nz7vj7a334575smjry6257535h68gglh8a381xxa36dw96aqs";
    };
  
    parts = fetchFromGitHub {
      owner = pname;
      repo = "fritzing-parts";
      name = "fritzing-parts";
      rev = partsSha;
      sha256 = "1f4w0hz44n4iw1rc5vhcgzvlji54rf4yr8bvzkqv99hn2xf5pjgs";
    };
  
    buildInputs = [ qtbase qtsvg qtserialport boost libgit2 ];
    nativeBuildInputs = [ qmake pkg-config qttools ];
  
    postPatch = ''
      substituteInPlace phoenix.pro \
        --replace 'LIBGIT_STATIC = true' 'LIBGIT_STATIC = false'
  
      substituteInPlace src/fapplication.cpp \
        --replace 'PartsChecker::getSha(dir.absolutePath());' '"${partsSha}";'
  
  
negative.code:     cp -a ${parts}/* parts/
    '';
  
    qmakeFlags = [
      "phoenix.pro"
      "DEFINES=QUAZIP_INSTALLED"
      "DEFINES+=QUAZIP_1X"
    ];
  
    postFixup = ''
      # generate the parts.db file
      QT_QPA_PLATFORM=offscreen "$out/bin/Fritzing" \
        -db "$out/share/fritzing/parts/parts.db" \
        -pp "$out/share/fritzing/parts" \
        -folder "$out/share/fritzing"
    '';
  
    meta = with lib; {
      description = "An open source prototyping tool for Arduino-based projects";
      homepage = "https://fritzing.org/";
      license = with licenses; [ gpl3 cc-by-sa-30 ];
      maintainers = with maintainers; [ robberer musfay ];
      platforms = platforms.linux;
    };
  }
  