diff mbox series

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

Message ID 20210603205110.7102-47-rg@raghavgururajan.name
State New
Headers show
Series None | expand

Commit Message

Raghav Gururajan June 3, 2021, 8:51 p.m. UTC
* gnu/packages/vpn.scm (bitmask-vpn): New variable.

Co-authored-by: Jorge Gomez <jgart@disroot.org>
---
 gnu/packages/vpn.scm | 150 +++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 150 insertions(+)

Comments

Maxime Devos June 3, 2021, 9:47 p.m. UTC | #1
One comment about this patch.

Raghav Gururajan via Guix-patches via schreef op do 03-06-2021 om 16:51 [-0400]:
> 
> +         (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 [...]

This can be done a bit simpler, and less prone to breakage
if/when a new keyword argument is introduced at some poit
in the future (untested):

(replace 'build
  (lambda arguments
    (lambda (directory)
      (apply (assoc-ref %standard-phases 'build)
             `(,@arguments #:directory ,directory)))))

WDYT? Likewise in other places.

Also, trailing #t in phases aren't required anymore
(but harmless), though you probably know that already.
(The warning should disappear when core-updates is merged.)

Greetings,
Maxime.
Raghav Gururajan June 11, 2021, 4:12 a.m. UTC | #2
Hi Maxime!

> This can be done a bit simpler, and less prone to breakage
> if/when a new keyword argument is introduced at some poit
> in the future (untested):

Good point.

> (replace 'build
>    (lambda arguments
>      (lambda (directory)
>        (apply (assoc-ref %standard-phases 'build)
>               `(,@arguments #:directory ,directory)))))
> 
> WDYT? Likewise in other places.

I tried to use this snippet, but how do I insert `for-each` here?

> Also, trailing #t in phases aren't required anymore
> (but harmless), though you probably know that already.
> (The warning should disappear when core-updates is merged.)

Yes, I'll remove them in the final patch-set.

Regards,
RG.
Maxime Devos June 18, 2021, 6:16 p.m. UTC | #3
Raghav Gururajan schreef op vr 11-06-2021 om 00:12 [-0400]:
> > (replace 'build
> >    (lambda arguments
> >      (lambda (directory)
> >        (apply (assoc-ref %standard-phases 'build)
> >               `(,@arguments #:directory ,directory)))))
> > 
> > WDYT? Likewise in other places.
> 
> I tried to use this snippet, but how do I insert `for-each` here?

The snippet was incorrect. It should have been something like (untested):

(replace 'build
  (lambda arguments
    (for-each
      (lambda (directory)
        (apply (assoc-ref %standard-phases 'build)
               `(,@arguments #:directory ,directory)))
      (list "0xacab.org/leap/bitmask-vpn/cmd/bitmask-connect"
            "0xacab.org/leap/bitmask-vpn/cmd/bitmask-helper"
            ...))))

Greetings,
Maxime.
Raghav Gururajan June 20, 2021, 6:37 a.m. UTC | #4
Hi Maxime!

> The snippet was incorrect. It should have been something like (untested):
> 
> (replace 'build
>    (lambda arguments
>      (for-each
>        (lambda (directory)
>          (apply (assoc-ref %standard-phases 'build)
>                 `(,@arguments #:directory ,directory)))
>        (list "0xacab.org/leap/bitmask-vpn/cmd/bitmask-connect"
>              "0xacab.org/leap/bitmask-vpn/cmd/bitmask-helper"
>              ...))))

Thanks so much. It worked.

Regards,
RG.
diff mbox series

Patch

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 <rprior@protonmail.com>
 ;;; Copyright © 2020 Ivan Kozlov <kanichos@yandex.ru>
 ;;; Copyright © 2020 David Dashyan <mail@davie.li>
+;;; Copyright © 2021 Raghav Gururajan <rg@raghavgururajan.name>
+;;; Copyright © 2021 Jorge Gomez <jgart@disroot.org>
 ;;;
 ;;; 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")