{ pkgs ? import <nixpkgs> {} }: let
  package = {
    cairo,
    gdk-pixbuf,
    glib-networking,
    glib,
    graphene,
    gst_all_1,
    gtk4,
    libadwaita,
    libcamera,
    libseccomp,
    libsoup_3,
    nix-gitignore,
    openssl,
    pango,
    pipewire,
    pkg-config,
    rustPlatform,
    webkitgtk_6_0,
    wrapGAppsHook4,
  }: rustPlatform.buildRustPackage {
    pname = "paket";
    version = "unstable-2025-01-22";

    src = nix-gitignore.gitignoreSource [] ./.;

    cargoLock = {
      lockFile = ./Cargo.lock;
    };

    nativeBuildInputs = [
      pkg-config
      graphene
      cairo
      wrapGAppsHook4
    ];

    preFixup = ''
      gappsWrapperArgs+=(
        # vp8enc preset
        --prefix GST_PRESET_PATH : "${gst_all_1.gst-plugins-good}/share/gstreamer-1.0/presets"
      )
    '';

    buildInputs = [
      # Building
      openssl
      glib
      gdk-pixbuf
      pango
      gtk4
      libsoup_3
      libadwaita
      webkitgtk_6_0 # for JSC

      # scanner
      libcamera # for the gstreamer plugin
      pipewire # for device provider
      gst_all_1.gst-plugins-bad
      gst_all_1.gst-plugins-base
      gst_all_1.gst-plugins-good
      gst_all_1.gst-plugins-rs # for gtk4paintablesink
      gst_all_1.gstreamer

      # Linking
      libseccomp

      # Runtime
      glib-networking
    ];

    meta = {
      mainProgram = "packet";
    };
  };
in pkgs.callPackage package { }