Subject: [PATCH] gnu: veracrypt: New package

From: Ryan Sundberg <[email-masked]>
Date: Mon, 4 Oct 2021 23:54:18 -0700

Adds a package for the Veracrypt disk encrption program

* gnu/packages/crypto.scm: Add veracrypt
---
 gnu/packages/crypto.scm | 49 +++++++++++++++++++++++++++++++++++++++++
 1 file changed, 49 insertions(+)

diff --git a/gnu/packages/crypto.scm b/gnu/packages/crypto.scm
index af1412c44e..42c9916582 100644
--- a/gnu/packages/crypto.scm
+++ b/gnu/packages/crypto.scm
@@ -43,6 +43,7 @@
   #:use-module (gnu packages admin)
   #:use-module (gnu packages aidc)
   #:use-module (gnu packages attr)
+  #:use-module (gnu packages assembly)
   #:use-module (gnu packages autotools)
   #:use-module (gnu packages boost)
   #:use-module (gnu packages check)
@@ -80,6 +81,7 @@
   #:use-module (gnu packages tcl)
   #:use-module (gnu packages tls)
   #:use-module (gnu packages version-control)
+  #:use-module (gnu packages wxwidgets)
   #:use-module (gnu packages xml)
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix packages)
@@ -1462,3 +1464,50 @@ via FUSE without root permissions.  It is similar to EncFS, but provides
 additional security and privacy measures such as hiding file sizes and directory
 structure.  However CryFS is not considered stable yet by the developers.")
     (license license:lgpl3+)))
+
+(define-public veracrypt
+  (package
+    (name "veracrypt")
+    (version "1.24")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://www.veracrypt.fr/code/VeraCrypt/snapshot/VeraCrypt_"
+             version ".tar.gz"))
+       (sha256
+        (base32 "0nn44x7ldkblgkndrd726nkil5bsdaki7j11xi21pr1gjrp7kq2g"))))
+    (build-system gnu-build-system)
+    (arguments
+      '(#:phases
+        (modify-phases %standard-phases
+          (delete 'configure)
+          (add-before 'build 'build-env
+            (lambda* (#:key outputs #:allow-other-keys)
+              (chdir "src")
+              (setenv "CC" "gcc")
+              (setenv "DESTDIR" (assoc-ref outputs "out"))
+              #t))
+          (add-after 'install 'fix-install
+            (lambda* (#:key outputs version #:allow-other-keys)
+              (let ((out (assoc-ref outputs "out")))
+                (install-file (string-append out "/usr/bin/veracrypt") (string-append out "/bin"))
+                (copy-recursively (string-append out "/usr/share/applications") (string-append out "/share/applications"))
+                (copy-recursively (string-append out "/usr/share/pixmaps") (string-append out "/share/pixmaps"))
+                (copy-recursively (string-append out "/usr/share/doc/veracrypt/HTML") (string-append out "/share/doc/veracrypt-1.24/HTML"))
+                (delete-file-recursively (string-append out "/usr"))))))
+        ; Veracrypt only has a test suite for Windows.
+        #:tests? #f))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+       ("yasm" ,yasm)))
+    (inputs
+      `(("fuse" ,fuse)
+        ("wxwidgets" ,wxwidgets)))
+    (propagated-inputs
+      `(("lvm2" ,lvm2)))
+    (home-page "https://www.veracrypt.fr/")
+    (synopsis "Disk encryption software")
+    (description "VeraCrypt is a free open source disk encryption software
+based on TrueCrypt 7.1a.")
+    (license license:asl2.0)))
-- 
2.31.1