From 3b3d89edb0679018b66540508435619810e0b4bc Mon Sep 17 00:00:00 2001 From: Nathan Christopher McRae Date: Sat, 21 Feb 2026 21:55:28 -0800 Subject: [PATCH] Add passphrase2pgp package --- nathanmcrae/packages.scm | 75 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 74 insertions(+), 1 deletion(-) diff --git a/nathanmcrae/packages.scm b/nathanmcrae/packages.scm index 6d15809..4f9c9b0 100644 --- a/nathanmcrae/packages.scm +++ b/nathanmcrae/packages.scm @@ -1 +1,74 @@ -; My packages +(define-module (nathanmcrae packages) + #:use-module (gnu packages base) + #:use-module (gnu packages golang) + #:use-module (gnu packages golang-build) + #:use-module (gnu packages time) + #:use-module (guix build utils) + #:use-module (guix build-system go) + #:use-module (guix build gnu-build-system) + #:use-module (guix download) + #:use-module (guix gexp) + #:use-module (guix git) + #:use-module (guix git-download) + #:use-module (guix licenses) + #:use-module (guix packages) + #:use-module (guix utils)) + +(define-public go-nullprogram-com-x-optparse + (package + (name "go-nullprogram-com-x-optparse") + (version "1.0.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/skeeto/optparse-go") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1yzpzlhmxdm8gd8ikh9c91qmshjp1jg49l0qsslmm432wk19zym9")))) + (build-system go-build-system) + (arguments + (list + #:import-path "nullprogram.com/x/optparse")) + (home-page "https://nullprogram.com/x/optparse") + (synopsis "Traditional long option parser for Go") + (description + "Package optparse parses command line arguments very similarly to GNU +@code{getopt_long()}. It supports long options and optional arguments, but does +not permute arguments. It is intended as a replacement for Go's flag package.") + (license unlicense))) + +(define-public passphrase2pgp + (package + (name "passphrase2pgp") + (version "1.3.0") + (source + (origin + (method git-fetch) + (uri (git-reference (url + "https://github.com/skeeto/passphrase2pgp.git") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 (base32 "1a1m4r43yzmvs1c7d2sa855aikny8jg6c4mflbsf5dg269imgpca")))) + (build-system go-build-system) + (native-inputs (list go-golang-org-x-crypto-bootstrap)) + (propagated-inputs (list go-golang-org-x-crypto + go-nullprogram-com-x-optparse)) + (arguments + (list + #:import-path "passphrase2pgp" + #:phases + #~(modify-phases %standard-phases + ; Needed for import of embedded module to work + (add-after 'unpack 'make-openpgp-symlink + (lambda* (#:key tests? inputs outputs #:allow-other-keys) + (let* ((dir "src/nullprogram.com/x/passphrase2pgp/")) + (mkdir-p dir) + (with-directory-excursion dir + (symlink "../../../passphrase2pgp/openpgp" "openpgp")))))))) + ;; TODO: run test.bash + (synopsis "Generate a PGP key from a passphrase") + (description "passphrase2pgp generates, in OpenPGP format, an EdDSA signing key and Curve25519 encryption subkey entirely from a passphrase, essentially allowing you to store a backup of your PGP keys in your brain. At any time you can re-run the tool and re-enter the passphrase to reproduce the original keys.") + (license unlicense) + (home-page "https://github.com/skeeto/passphrase2pgp"))) \ No newline at end of file