Subject: [bug#48729] [PATCH v2 47/47] gnu: Add bitmask-vpn.

From: Raghav Gururajan <[email-masked]>
Date: Thu, 3 Jun 2021 16:51:10 -0400

* gnu/packages/vpn.scm (bitmask-vpn): New variable.

Co-authored-by: Jorge Gomez <[email-masked]>
---
 gnu/packages/vpn.scm | 150 +++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 150 insertions(+)

diff --git a/gnu/packages/vpn.scm b/gnu/packages/vpn.scm
index a952e3f0db..12d2b6edd2 100644
--- a/gnu/packages/vpn.scm
+++ b/gnu/packages/vpn.scm
@@ -15,6 +15,8 @@
 ;;; Copyright © 2020 Ryan Prior <[email-masked]>
 ;;; Copyright © 2020 Ivan Kozlov <[email-masked]>
 ;;; Copyright © 2020 David Dashyan <[email-masked]>
+;;; Copyright © 2021 Raghav Gururajan <[email-masked]>
+;;; Copyright © 2021 Jorge Gomez <[email-masked]>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -38,6 +40,7 @@
   #:use-module (guix git-download)
   #:use-module (guix build-system cmake)
   #:use-module (guix build-system gnu)
+  #:use-module (guix build-system go)
   #:use-module (guix build-system linux-module)
   #:use-module (guix build-system python)
   #:use-module (guix utils)
@@ -52,6 +55,8 @@
   #:use-module (gnu packages freedesktop)
   #:use-module (gnu packages gettext)
   #:use-module (gnu packages gnupg)
+  #:use-module (gnu packages golang)
+  #:use-module (gnu packages gtk)
   #:use-module (gnu packages guile)
   #:use-module (gnu packages libevent)
   #:use-module (gnu packages linux)
@@ -69,6 +74,151 @@
   #:use-module (gnu packages tls)
   #:use-module (gnu packages xml))
 
+(define-public bitmask-vpn
+  (package
+    (name "bitmask-vpn")
+    (version "0.20.4")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://0xacab.org/leap/bitmask-vpn")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "04sh69m5fq3gml4xgzv92z8i3hay98n9llq9p7p6q9q81s8q8849"))))
+    (build-system go-build-system)
+    (arguments
+     `(#:unpack-path "0xacab.org/leap/bitmask-vpn"
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch-source
+           (lambda _
+             (substitute* (find-files "." "\\.go$")
+               (("github.com/ProtonMail/go-autostart")
+                "github.com/emersion/go-autostart"))
+             #t))
+         (add-after 'setup-go-environment 'insert-shapeshifter
+           ;; For some reason these packages are left out.
+           (lambda* (#:key inputs #:allow-other-keys)
+             (let* ((go-dialog (assoc-ref inputs "go-0xacab-org-leap-go-dialog"))
+                    (go-dialog-src (string-append go-dialog "/src"))
+                    (shapeshifter (assoc-ref inputs "go-0xacab-org-leap-shapeshifter"))
+                    (shapeshifter-src (string-append shapeshifter "/src")))
+               (copy-recursively go-dialog-src "src")
+               (copy-recursively shapeshifter-src "src"))
+             #t))
+         (replace 'build
+           (lambda* (#:key source system outputs search-paths build-flags unpack-path inputs #:allow-other-keys)
+             (for-each
+              (lambda (directory)
+                ((assoc-ref %standard-phases 'build)
+                 #:source source
+                 #:system system
+                 #:outputs outputs
+                 #:search-paths search-paths
+                 #:build-flags build-flags
+                 #:unpack-path unpack-path
+                 #:inputs inputs
+                 #:import-path directory))
+              (list
+               "0xacab.org/leap/bitmask-vpn/cmd/bitmask-connect"
+               "0xacab.org/leap/bitmask-vpn/cmd/bitmask-helper"
+               "0xacab.org/leap/bitmask-vpn/cmd/bitmask-vpn"
+               "0xacab.org/leap/bitmask-vpn/pkg/bitmask"
+               "0xacab.org/leap/bitmask-vpn/pkg/bitmaskd"
+               "0xacab.org/leap/bitmask-vpn/pkg/config"
+               "0xacab.org/leap/bitmask-vpn/pkg/helper"
+               "0xacab.org/leap/bitmask-vpn/pkg/standalone"
+               "0xacab.org/leap/bitmask-vpn/pkg/systray"
+               "0xacab.org/leap/bitmask-vpn/tools/transifex"))
+             #t))
+         (replace 'check
+           (lambda* (#:key source system outputs search-paths tests? unpack-path inputs #:allow-other-keys)
+             (for-each
+              (lambda (directory)
+                ((assoc-ref %standard-phases 'check)
+                 #:source source
+                 #:system system
+                 #:outputs outputs
+                 #:search-paths search-paths
+                 #:tests? tests?
+                 #:unpack-path unpack-path
+                 #:inputs inputs
+                 #:import-path directory))
+              (list
+               "0xacab.org/leap/bitmask-vpn/cmd/bitmask-connect"
+               "0xacab.org/leap/bitmask-vpn/cmd/bitmask-helper"
+               "0xacab.org/leap/bitmask-vpn/cmd/bitmask-vpn"
+               "0xacab.org/leap/bitmask-vpn/pkg/bitmask"
+               "0xacab.org/leap/bitmask-vpn/pkg/bitmaskd"
+               "0xacab.org/leap/bitmask-vpn/pkg/config"
+               "0xacab.org/leap/bitmask-vpn/pkg/helper"
+               "0xacab.org/leap/bitmask-vpn/pkg/standalone"
+               "0xacab.org/leap/bitmask-vpn/pkg/systray"
+               "0xacab.org/leap/bitmask-vpn/tools/transifex"))
+             #t))
+         (replace 'install
+           (lambda* (#:key source system outputs search-paths install-source? unpack-path inputs #:allow-other-keys)
+             (for-each
+              (lambda (directory)
+                ((assoc-ref %standard-phases 'install)
+                 #:source source
+                 #:system system
+                 #:outputs outputs
+                 #:search-paths search-paths
+                 #:install-source? install-source?
+                 #:unpack-path unpack-path
+                 #:inputs inputs
+                 #:import-path directory))
+              (list
+               "0xacab.org/leap/bitmask-vpn/cmd/bitmask-connect"
+               "0xacab.org/leap/bitmask-vpn/cmd/bitmask-helper"
+               "0xacab.org/leap/bitmask-vpn/cmd/bitmask-vpn"
+               "0xacab.org/leap/bitmask-vpn/pkg/bitmask"
+               "0xacab.org/leap/bitmask-vpn/pkg/bitmaskd"
+               "0xacab.org/leap/bitmask-vpn/pkg/config"
+               "0xacab.org/leap/bitmask-vpn/pkg/helper"
+               "0xacab.org/leap/bitmask-vpn/pkg/standalone"
+               "0xacab.org/leap/bitmask-vpn/pkg/systray"
+               "0xacab.org/leap/bitmask-vpn/tools/transifex"))
+             #t)))))
+    (native-inputs
+     `(("gtk+:bin" ,gtk+ "bin")
+       ("pkg-config" ,pkg-config)
+       ("python" ,python-wrapper)))
+    (inputs
+     `(("gtk+" ,gtk+)
+       ("libappindicator" ,libappindicator)))
+    (propagated-inputs
+     `(("go-0xacab-org-leap-go-dialog"
+        ,go-0xacab-org-leap-go-dialog)
+       ("go-0xacab-org-leap-shapeshifter"
+        ,go-0xacab-org-leap-shapeshifter)
+       ("go-github-com-apparentlymart-go-openvpn-mgmt"
+        ,go-github-com-apparentlymart-go-openvpn-mgmt)
+       ("go-github-com-emersion-go-autostart"
+        ,go-github-com-emersion-go-autostart)
+       ("go-github-com-getlantern-systray"
+        ,go-github-com-getlantern-systray)
+       ("go-github-com-jmshal-go-locale"
+        ,go-github-com-jmshal-go-locale)
+       ("go-github-com-keybase-go-ps"
+        ,go-github-com-keybase-go-ps)
+       ("go-github-com-sevlyar-go-daemon"
+        ,go-github-com-sevlyar-go-daemon)
+       ("go-github-com-skratchdot-open-golang"
+        ,go-github-com-skratchdot-open-golang)
+       ("go-golang-org-x-sys" ,go-golang-org-x-sys)
+       ("go-golang-org-x-text" ,go-golang-org-x-text)
+       ("go-golang-org-x-tools" ,go-golang-org-x-tools)))
+    (synopsis "Bitmask VPN Client")
+    (description "Bitmask-VPN is LEAP’s very own VPN client.  It allows you to
+select from a variety of trusted service provider all from one app.  Current
+providers include Riseup Networks and The Calyx Institute.")
+    (home-page "https://bitmask.net/")
+    (license license:gpl3+)))
+
 (define-public gvpe
   (package
     (name "gvpe")
-- 
2.31.1