From 0319830a85a5c28d9a95b467c6e3ac79215285d2 Mon Sep 17 00:00:00 2001
From: Doron Behar <doron.behar@gmail.com>
Date: Tue, 27 Jun 2023 10:46:23 +0300
Subject: [PATCH 1/2] sequoia-sqv: init at 1.1.0

---
 pkgs/tools/security/sequoia-sqv/default.nix | 60 +++++++++++++++++++++
 pkgs/top-level/all-packages.nix             |  2 +
 2 files changed, 62 insertions(+)
 create mode 100644 pkgs/tools/security/sequoia-sqv/default.nix

diff --git a/pkgs/tools/security/sequoia-sqv/default.nix b/pkgs/tools/security/sequoia-sqv/default.nix
new file mode 100644
index 000000000000..b09002602575
--- /dev/null
+++ b/pkgs/tools/security/sequoia-sqv/default.nix
@@ -0,0 +1,60 @@
+{ stdenv
+, fetchFromGitLab
+, lib
+, nettle
+, nix-update-script
+, rustPlatform
+, pkg-config
+, installShellFiles
+}:
+
+rustPlatform.buildRustPackage rec {
+  pname = "sequoia-sqv";
+  version = "1.1.0";
+
+  src = fetchFromGitLab {
+    owner = "sequoia-pgp";
+    repo = "sequoia-sqv";
+    rev = "v${version}";
+    hash = "sha256-KoB9YnPNE2aB5MW5G9r6Bk+1QnANVSKA2dp3ufSJ44M=";
+  };
+
+  cargoHash = "sha256-uwOU/yyh3eoD10El7Oe9E97F3dvPuXMHQhpnWEJ1gnI=";
+
+  nativeBuildInputs = [
+    pkg-config
+    rustPlatform.bindgenHook
+    installShellFiles
+  ];
+
+  buildInputs = [
+    nettle
+  ];
+  # Otherwise, the shell completion files are not built
+  cargoBuildFlags = [
+    "--package" "sequoia-sqv"
+  ];
+  # Use a predictable target directory, to access it when installing shell
+  # completion files.
+  preBuild = ''
+    export CARGO_TARGET_DIR="$(pwd)/target"
+  '';
+  postInstall = ''
+    installShellCompletion --cmd sqv \
+      --zsh target/_sqv \
+      --bash target/sqv.bash \
+      --fish target/sqv.fish
+  '';
+
+  doCheck = true;
+
+  passthru.updateScript = nix-update-script { };
+
+  meta = with lib; {
+    description = "A command-line OpenPGP signature verification tool";
+    homepage = "https://docs.sequoia-pgp.org/sqv/";
+    license = licenses.gpl2Plus;
+    maintainers = with maintainers; [ doronbehar ];
+    mainProgram = "sqv";
+  };
+}
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index d9e4b88db37f..28e9a166ca01 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -12447,6 +12447,8 @@ with pkgs;
 
   sequoia-sq = callPackage ../tools/security/sequoia-sq { };
 
+  sequoia-sqv = callPackage ../tools/security/sequoia-sqv { };
+
   sequoia-chameleon-gnupg = callPackage ../tools/security/sequoia-chameleon-gnupg { };
 
   sewer = callPackage ../tools/admin/sewer { };

From 85c4c223572a50ebecdbb8dbe01e27c9afecd89d Mon Sep 17 00:00:00 2001
From: Doron Behar <doron.behar@gmail.com>
Date: Tue, 27 Jun 2023 11:11:29 +0300
Subject: [PATCH 2/2] sequoia-sqop: init at 0.28.0

---
 pkgs/tools/security/sequoia-sqop/default.nix | 59 ++++++++++++++++++++
 pkgs/top-level/all-packages.nix              |  2 +
 2 files changed, 61 insertions(+)
 create mode 100644 pkgs/tools/security/sequoia-sqop/default.nix

diff --git a/pkgs/tools/security/sequoia-sqop/default.nix b/pkgs/tools/security/sequoia-sqop/default.nix
new file mode 100644
index 000000000000..b071c82597f0
--- /dev/null
+++ b/pkgs/tools/security/sequoia-sqop/default.nix
@@ -0,0 +1,59 @@
+{ stdenv
+, fetchFromGitLab
+, lib
+, nettle
+, nix-update-script
+, installShellFiles
+, rustPlatform
+, pkg-config
+}:
+
+rustPlatform.buildRustPackage rec {
+  pname = "sequoia-sqop";
+  version = "0.28.0";
+
+  src = fetchFromGitLab {
+    owner = "sequoia-pgp";
+    # From some reason the repository is not sequoia-sqop - like the command
+    # generated etc
+    repo = "sequoia-sop";
+    rev = "v${version}";
+    hash = "sha256-4A0eZMXzFtojRD5cXQQUVoS32sQ2lWtFll+q6yhnwG4=";
+  };
+
+  cargoHash = "sha256-gH5WM+PmciViD+eFVlp8tzdc0KdYy1WZLQi92UEWVG4=";
+
+  nativeBuildInputs = [
+    pkg-config
+    rustPlatform.bindgenHook
+    installShellFiles
+  ];
+
+  buildInputs = [
+    nettle
+  ];
+  buildFeatures = [ "cli" ];
+
+  # Install manual pages
+  postInstall = ''
+    mkdir -p $out/share/man
+    cp -r man-sqop $out/share/man/man1
+    installShellCompletion --cmd sqop \
+      --bash target/*/release/build/sequoia-sop*/out/sqop.bash \
+      --fish target/*/release/build/sequoia-sop*/out/sqop.fish \
+      --zsh target/*/release/build/sequoia-sop*/out/_sqop
+    # Also elv and powershell are generated there
+  '';
+
+  doCheck = true;
+
+  passthru.updateScript = nix-update-script { };
+
+  meta = with lib; {
+    description = "An implementation of the Stateless OpenPGP Command Line Interface using Sequoia";
+    homepage = "https://docs.sequoia-pgp.org/sqop/";
+    license = licenses.gpl2Plus;
+    maintainers = with maintainers; [ doronbehar ];
+    mainProgram = "sqop";
+  };
+}
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 28e9a166ca01..a83c5dbb05e4 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -12449,6 +12449,8 @@ with pkgs;
 
   sequoia-sqv = callPackage ../tools/security/sequoia-sqv { };
 
+  sequoia-sqop = callPackage ../tools/security/sequoia-sqop { };
+
   sequoia-chameleon-gnupg = callPackage ../tools/security/sequoia-chameleon-gnupg { };
 
   sewer = callPackage ../tools/admin/sewer { };