Add passphrase2pgp package

This commit is contained in:
2026-02-21 21:55:28 -08:00
parent ecd654bf8f
commit 3b3d89edb0

View File

@@ -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")))