{
  lib,
  stdenv,
  fetchurl,
  pkg-config,
  autoconf,
  automake,
  libtool,
  mm-common,
  intltool,
  itstool,
  doxygen,
  graphviz,
  makeFontsConf,
  freefont_ttf,
  boost,
  libxmlxx3,
  libxslt,
  libgdamm,
  libarchive,
  libepc,
  python311,
  python3,
  ncurses,
  glibmm,
  gtk3,
  openssl,
  gtkmm3,
  goocanvasmm2,
  evince,
  isocodes,
  gtksourceview,
  gtksourceviewmm,
  postgresql_15,
  gobject-introspection,
  yelp-tools,
  wrapGAppsHook3,
}:

stdenv.mkDerivation (finalAttrs: {
  pname = "glom";
  version = "1.32.0";

  outputs = [
    "out"
    "lib"
    "dev"
    "doc"
    "devdoc"
  ];

  src = fetchurl {
    url = "mirror://gnome/sources/glom/${lib.versions.majorMinor finalAttrs.version}/glom-${finalAttrs.version}.tar.xz";
    hash = "sha256-U78gfryoLFY7nme86XdFmhfn/ZTjXCfBlphnNtokjfE=";
  };

  gda = libgdamm.override {
    mysqlSupport = true;
    postgresSupport = true;
  };

  python = python311.withPackages (
    pkgs: with pkgs; [
      pygobject3
      distutils
    ]
  );

  python_boost = python311.withPackages (pkgs: with pkgs; [ pygobject3 ]);

  sphinx-build = python311.pkgs.sphinx.overrideAttrs (super: {
    postFixup =
      super.postFixup or ""
      + ''
        # Do not propagate Python
        rm $out/nix-support/propagated-build-inputs
      '';
  });

  boost_python = boost.override {
    enablePython = true;
    python = finalAttrs.python_boost;
  };

  nativeBuildInputs = [
    pkg-config
    autoconf
    automake
    libtool
    mm-common
    intltool
    (yelp-tools.override {
      python3 = python311;
    })
    itstool
    doxygen
    graphviz
    finalAttrs.sphinx-build
    wrapGAppsHook3
    gobject-introspection # for setup hook
  ];

  buildInputs = [
    finalAttrs.boost_python
    glibmm
    gtk3
    openssl
    libxmlxx3
    libxslt
    python311.pkgs.pygobject3
    finalAttrs.gda
    libarchive
    libepc
    finalAttrs.python
    ncurses # for python
    gtkmm3
    goocanvasmm2
    evince
    isocodes
    gtksourceview
    gtksourceviewmm
    postgresql_15 # for postgresql utils
  ];

  enableParallelBuilding = true;

  preConfigure = "NOCONFIGURE=1 ./autogen.sh";

  configureFlags = [
    "--with-boost-python=boost_python${lib.versions.major python311.version}${lib.versions.minor python311.version}"
    "--with-postgres-utils=${lib.getBin postgresql_15}/bin"
  ];

  makeFlags = [
    "libdocdir=${placeholder "doc"}/share/doc/$(book_name)"
    "devhelpdir=${placeholder "devdoc"}/share/devhelp/books/$(book_name)"
  ];

  # Fontconfig error: Cannot load default config file
  FONTCONFIG_FILE = makeFontsConf {
    fontDirectories = [ freefont_ttf ];
  };

  preFixup = ''
    gappsWrapperArgs+=(
      --prefix PYTHONPATH : "${placeholder "out"}/${python311.sitePackages}"
      --set PYTHONHOME "${finalAttrs.python}"
    )
  '';

  meta = {
    description = "Easy-to-use database designer and user interface";
    license = with lib.licenses; [
      lgpl2
      gpl2
    ];
    homepage = "https://gitlab.gnome.org/Archive/glom";
    maintainers =
      lib.teams.gnome.members
      ++ (with lib.maintainers; [
        bot-wxt1221
      ]);
    platforms = lib.platforms.linux;
  };
})