diff mbox series

[bug#58386,v2] gnu: Add passage.

Message ID 87y1tmujj2.fsf@ngraves.fr
State Accepted
Headers show
Series [bug#58386,v2] gnu: Add passage. | expand

Checks

Context Check Description
cbaines/comparison success View comparision
cbaines/git-branch success View Git branch
cbaines/applying patch success View Laminar job
cbaines/issue success View issue

Commit Message

Nicolas Graves Oct. 11, 2022, 9:39 p.m. UTC
* gnu/packages/password-utils.scm (passage): New variable.
---
 gnu/packages/password-utils.scm | 38 +++++++++++++++++++++++++++++++++
 1 file changed, 38 insertions(+)

--
2.38.0

Thanks for the review!

> OK, I've been looking at this for an embarrasingly long time
> trying to figure out what you're trying to communicate with '(…
> (list '(…))).  It seems very deliberate.  Any hints?  :-p

Not deliberate, I probably misread the copy-build-system info
manual. Fixed!

> No, I don't think it is.  Adding this script need not affect other
> packages.

I understand, although I would think that choices need to be made and
that this one would not annoy a lot.

Just as a reminder, this patch cannot be merged before 58340.

--
Best regards,
Nicolas Graves

Comments

Tobias Geerinckx-Rice Oct. 19, 2022, 5:17 p.m. UTC | #1
Hi Nicolas,

Nicolas Graves 写道:
> Just as a reminder, this patch cannot be merged before 58340.

Thanks, I realised that after I sent it.  I'll treat (and close) 
them as one bug for this reply.

I've pushed all 3 patches as 
ac553ba68e535810085dd838e48e4fa6ac553e67 et al with the following 
mods:

> * gnu/packages/password-utils.scm (passage): New variable.

I fixed up the commit message to match the name, and addressed the 
following ‘guix lint’ warnings:

  pass-age@1.7.4a0: no article allowed at the beginning of the 
  synopsis
  age@1.0.0: sentences in description should be followed by two 
  spaces

Whilst there, I turned @code{age-encryption.org/v1} into a full 
@url{}, and fixed up upstream's ‘config’ & ‘UNIX’ slang.

> * gnu/packages/golang.scm
>   (age): New variable.
>   (go-filippo-io-cmd-age): New variable.
>   (go-filippo-io-cmd-age-keygen): New variable.
  ^^
Our changelogs are never indented, you'd write:

> * gnu/packages/golang.scm (age, go-filippo-io-cmd-age)
> (go-filippo-io-cmd-age-keygen): New variables.

…but in this case, I was bold and removed the two 
go-filippo-io-cmd-age* packages completely.  I moved ‘age’ to (gnu 
packages password-utils).

The partial recursion in the go-* variants made me nervous (and 
would probably prevent the move, although I didn't try).

If these variants are needed for something, it's not pass-age, and 
we can review them separately if/when needed.  Is that acceptable?

> I would think that choices need to be made

Princip(al)ly: the choice to reuse an existing package name was 
FiloSottile's, for the sake of a pun.  Much as I like bad puns, I 
think that's rather rude.  It's not hard to search for free 
package names, e.g., [0].

> that this one would not annoy a lot.

Technically: it would silently replace users' games with some 
encryption tool.  That's problematic even if those users are few.

Similarly: had the game been added after this ‘passage’, I would 
have grumpily agreed to ‘passage-game’ :-)  But it wasn't.

But: I think your ’pass-age’ solution is perfect.  Thanks! 
FiloSottile should consider it.

Kind regards,

T G-R

[0]: https://repology.org/project/passage/versions
Tobias Geerinckx-Rice Oct. 19, 2022, 7:49 p.m. UTC | #2
Tobias Geerinckx-Rice via Guix-patches via 写道:
> …but in this case, I was bold and removed the two
> go-filippo-io-cmd-age* packages completely.

Grr.  And of course, whilst migrating pass-age's propagated-inputs 
to regular ones (propagation is evil and should be avoided 
whenever possible), I see I've been looking at the wrong ‘age’.

Y'know.  The one that does have a ‘/bin/age’ in it.

Yep, I'm back,

T G-R
Tobias Geerinckx-Rice Oct. 19, 2022, 7:54 p.m. UTC | #3
Closing as a duplicate of #58386.

When sending patch rerolls, use ‘--to=NNN@debbugs.gnu.org’ (NOT 
the default guix-patches@gnu.org) to avoid opening a new bug 
number.

Kind regards,

T G-R
Nicolas Graves Oct. 22, 2022, 7:51 a.m. UTC | #4
Hey Tobias,

> Y'know.  The one that does have a ‘/bin/age’ in it.

In the current version, it seems that the age-keygen binary is not in
the bin output. Both commands "age" and "age-keygen" are necessary,
hence the way I tried to package that with propagated inputs.

Thanks for your reviews, let me know if I can help.
diff mbox series

Patch

diff --git a/gnu/packages/password-utils.scm b/gnu/packages/password-utils.scm
index 8e29bef484..36b0ae7537 100644
--- a/gnu/packages/password-utils.scm
+++ b/gnu/packages/password-utils.scm
@@ -37,6 +37,7 @@ 
 ;;; Copyright © 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;; Copyright © 2022 Maxime Devos <maximedevos@telenet.be>
 ;;; Copyright © 2022 ( <paren@disroot.org>
+;;; Copyright © 2022 Nicolas Graves <ngraves@ngraves.fr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -57,6 +58,7 @@  (define-module (gnu packages password-utils)
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix utils)
   #:use-module (guix build-system cmake)
+  #:use-module (guix build-system copy)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system go)
   #:use-module (guix build-system python)
@@ -589,6 +591,42 @@  (define-public password-store
 through the pass command.")
     (license license:gpl2+)))

+(define-public pass-age
+  (package
+    (inherit password-store)
+    (name "pass-age")
+    (version "1.7.4a0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/FiloSottile/passage")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "17899whffnpqqx9x1nx2b8bfxbxlh1pwlglqa0kznl0cn6sb37ql"))))
+    (build-system copy-build-system)
+    (arguments
+     '(#:phases (modify-phases %standard-phases
+                  (add-after 'unpack 'rename-script
+                    (lambda _
+                      (rename-file "src/password-store.sh"
+                                   "src/passage"))))
+       #:install-plan
+       '(("src/passage" "/bin/")
+         ("src/completion/pass.bash-completion"
+          "/share/bash-completion/completions/")
+         ("src/completion/pass.zsh-completion"
+          "/share/zsh/site-functions/"))))
+    (propagated-inputs
+     (list util-linux git qrencode sed tree age))
+    (home-page "https://github.com/FiloSottile/passage")
+    (synopsis "An encrypted password manager")
+    (description "This package provides an encrypted password manager, forked
+from the @code{password-store} package.  Files are encrypted with the
+@command{age} encryption package with small explicit keys.")
+    (license license:gpl2+)))
+
 (define-public pass-otp
   (package
     (name "pass-otp")