diff mbox

[4/4] gnu: Add Tomb.

Message ID 20160823061512.13024-4-ericbavier@openmailbox.org
State New
Headers show

Commit Message

Eric Bavier Aug. 23, 2016, 6:15 a.m. UTC
From: Eric Bavier <bavier@member.fsf.org>

* gnu/packages/crypto.scm (tomb): New variable.
---
 gnu/packages/crypto.scm | 60 +++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 60 insertions(+)

Comments

Leo Famulari Aug. 23, 2016, 8:50 p.m. UTC | #1
On Tue, Aug 23, 2016 at 01:15:12AM -0500, Eric Bavier wrote:
> +    (inputs                   ;users should install their preferred pinentry-*
> +     `(("zsh" ,zsh)

Does it really need the zsh shell?

> +       #:tests? #f                      ;requires root

Too bad :/ A program like this should be tested.
Eric Bavier Aug. 23, 2016, 10:41 p.m. UTC | #2
On Tue, 23 Aug 2016 16:50:59 -0400
Leo Famulari <leo@famulari.name> wrote:

> On Tue, Aug 23, 2016 at 01:15:12AM -0500, Eric Bavier wrote:
> > +    (inputs                   ;users should install their preferred pinentry-*
> > +     `(("zsh" ,zsh)  
> 
> Does it really need the zsh shell?

Yes, "bin/tomb" is a Zsh script.

> 
> > +       #:tests? #f                      ;requires root  
> 
> Too bad :/ A program like this should be tested.

I've tested most functionality manually.  But there is no way to get
root in the build environment.  There may be some sanity tests that
could be performed in a custom 'check phase, checks that don't need
root.

`~Eric
Leo Famulari Aug. 23, 2016, 11:50 p.m. UTC | #3
On Tue, Aug 23, 2016 at 05:41:27PM -0500, Eric Bavier wrote:
> On Tue, 23 Aug 2016 16:50:59 -0400
> Leo Famulari <leo@famulari.name> wrote:
> 
> > On Tue, Aug 23, 2016 at 01:15:12AM -0500, Eric Bavier wrote:
> > > +    (inputs                   ;users should install their preferred pinentry-*
> > > +     `(("zsh" ,zsh)  
> > 
> > Does it really need the zsh shell?
> 
> Yes, "bin/tomb" is a Zsh script.

Wow, interesting. I will read it (not as part of patch review).

> 
> > 
> > > +       #:tests? #f                      ;requires root  
> > 
> > Too bad :/ A program like this should be tested.
> 
> I've tested most functionality manually.  But there is no way to get
> root in the build environment.  There may be some sanity tests that
> could be performed in a custom 'check phase, checks that don't need
> root.

Yes, there may be. I don't think it's a blocker, however.
diff mbox

Patch

diff --git a/gnu/packages/crypto.scm b/gnu/packages/crypto.scm
index 7d61164..ea2d58a 100644
--- a/gnu/packages/crypto.scm
+++ b/gnu/packages/crypto.scm
@@ -4,6 +4,7 @@ 
 ;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2016 Lukas Gradl <lgradl@openmailbox>
 ;;; Copyright © 2016 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2016 Eric Bavier <bavier@member.fsf.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -22,9 +23,13 @@ 
 
 (define-module (gnu packages crypto)
   #:use-module (gnu packages)
+  #:use-module (gnu packages aidc)
   #:use-module (gnu packages autotools)
   #:use-module (gnu packages boost)
+  #:use-module (gnu packages cryptsetup)
   #:use-module (gnu packages gettext)
+  #:use-module (gnu packages gnupg)
+  #:use-module (gnu packages image)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages libbsd)
   #:use-module (gnu packages linux)
@@ -32,8 +37,10 @@ 
   #:use-module (gnu packages password-utils)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages readline)
+  #:use-module (gnu packages search)
   #:use-module (gnu packages serialization)
   #:use-module (gnu packages tls)
+  #:use-module (gnu packages zsh)
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix packages)
   #:use-module (guix download)
@@ -223,3 +230,56 @@  to provide security against off-line attacks, such as a drive falling into
 the wrong hands.")
     (license (list license:lgpl3+                 ;encfs library
                    license:gpl3+))))              ;command-line tools
+
+(define-public tomb
+  (package
+    (name "tomb")
+    (version "2.2")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://files.dyne.org/tomb/"
+                                  "tomb-" version ".tar.gz"))
+              (sha256
+               (base32
+                "11msj38fdmymiqcmwq1883kjqi5zr01ybdjj58rfjjrw4zw2w5y0"))))
+    (build-system gnu-build-system)
+    (inputs                   ;users should install their preferred pinentry-*
+     `(("zsh" ,zsh)
+       ("gnupg" ,gnupg)
+       ("cryptsetup" ,cryptsetup)
+       ("gettext" ,gnu-gettext)         ;used at runtime
+       ("mlocate" ,mlocate)
+       ("qrencode" ,qrencode)
+       ("steghide" ,steghide)
+       ("swish-e" ,swish-e)))
+    (arguments
+     `(#:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
+       #:tests? #f                      ;requires root
+       ;; TODO: Build and install gtk and qt trays
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure)   ;no configuration to be done
+         (add-after 'install 'i18n
+           (lambda* (#:key make-flags #:allow-other-keys)
+             (zero? (apply system*
+                           "make" "-C" "extras/translations"
+                           "install" make-flags))))
+         (add-after 'install 'wrap
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               (wrap-program (string-append out "/bin/tomb")
+                 `("PATH" ":" prefix
+                   (,(string-append (assoc-ref inputs "mlocate") "/bin")
+                    ,@(map (lambda (program)
+                             (or (and=> (which program) dirname)
+                                 (error "program not found:" program)))
+                           '("gpg" "cryptsetup" "gettext"
+                             "qrencode" "steghide" "swish-e")))))
+               #t))))))
+    (home-page "http://www.dyne.org/software/tomb")
+    (synopsis "File encryption for secret data")
+    (description
+     "Tomb is an application to manage the creation and access of encrypted
+storage files: it can be operated from commandline and it can integrate with a
+user's graphical desktop.")
+    (license license:gpl3+)))