gnu: Add bitmask.
* gnu/packages/vpn.scm (bitmask): New variable. Co-authored-by: jgart <jgart@dismail.de>
This commit is contained in:
		
							parent
							
								
									e6ea0abd93
								
							
						
					
					
						commit
						b30651aeca
					
				
					 1 changed files with 203 additions and 0 deletions
				
			
		| 
						 | 
					@ -16,6 +16,8 @@
 | 
				
			||||||
;;; Copyright © 2020 Ivan Kozlov <kanichos@yandex.ru>
 | 
					;;; Copyright © 2020 Ivan Kozlov <kanichos@yandex.ru>
 | 
				
			||||||
;;; Copyright © 2020 David Dashyan <mail@davie.li>
 | 
					;;; Copyright © 2020 David Dashyan <mail@davie.li>
 | 
				
			||||||
;;; Copyright © 2021 Domagoj Stolfa <ds815@gmx.com>
 | 
					;;; Copyright © 2021 Domagoj Stolfa <ds815@gmx.com>
 | 
				
			||||||
 | 
					;;; Copyright © 2021 Raghav Gururajan <rg@raghavgururajan.name>
 | 
				
			||||||
 | 
					;;; Copyright © 2021 jgart <jgart@dismail.de>
 | 
				
			||||||
;;;
 | 
					;;;
 | 
				
			||||||
;;; This file is part of GNU Guix.
 | 
					;;; This file is part of GNU Guix.
 | 
				
			||||||
;;;
 | 
					;;;
 | 
				
			||||||
| 
						 | 
					@ -38,9 +40,12 @@
 | 
				
			||||||
  #:use-module (guix download)
 | 
					  #:use-module (guix download)
 | 
				
			||||||
  #:use-module (guix git-download)
 | 
					  #:use-module (guix git-download)
 | 
				
			||||||
  #:use-module (guix build-system cmake)
 | 
					  #:use-module (guix build-system cmake)
 | 
				
			||||||
 | 
					  #:use-module (guix build-system copy)
 | 
				
			||||||
  #:use-module (guix build-system gnu)
 | 
					  #:use-module (guix build-system gnu)
 | 
				
			||||||
 | 
					  #:use-module (guix build-system go)
 | 
				
			||||||
  #:use-module (guix build-system linux-module)
 | 
					  #:use-module (guix build-system linux-module)
 | 
				
			||||||
  #:use-module (guix build-system python)
 | 
					  #:use-module (guix build-system python)
 | 
				
			||||||
 | 
					  #:use-module (guix build-system qt)
 | 
				
			||||||
  #:use-module (guix utils)
 | 
					  #:use-module (guix utils)
 | 
				
			||||||
  #:use-module (gnu packages)
 | 
					  #:use-module (gnu packages)
 | 
				
			||||||
  #:use-module (gnu packages admin)
 | 
					  #:use-module (gnu packages admin)
 | 
				
			||||||
| 
						 | 
					@ -54,7 +59,9 @@
 | 
				
			||||||
  #:use-module (gnu packages freedesktop)
 | 
					  #:use-module (gnu packages freedesktop)
 | 
				
			||||||
  #:use-module (gnu packages gettext)
 | 
					  #:use-module (gnu packages gettext)
 | 
				
			||||||
  #:use-module (gnu packages gnome)
 | 
					  #:use-module (gnu packages gnome)
 | 
				
			||||||
 | 
					  #:use-module (gnu packages gl)
 | 
				
			||||||
  #:use-module (gnu packages gnupg)
 | 
					  #:use-module (gnu packages gnupg)
 | 
				
			||||||
 | 
					  #:use-module (gnu packages golang)
 | 
				
			||||||
  #:use-module (gnu packages guile)
 | 
					  #:use-module (gnu packages guile)
 | 
				
			||||||
  #:use-module (gnu packages libevent)
 | 
					  #:use-module (gnu packages libevent)
 | 
				
			||||||
  #:use-module (gnu packages linux)
 | 
					  #:use-module (gnu packages linux)
 | 
				
			||||||
| 
						 | 
					@ -63,6 +70,7 @@
 | 
				
			||||||
  #:use-module (gnu packages nss)
 | 
					  #:use-module (gnu packages nss)
 | 
				
			||||||
  #:use-module (gnu packages perl)
 | 
					  #:use-module (gnu packages perl)
 | 
				
			||||||
  #:use-module (gnu packages pkg-config)
 | 
					  #:use-module (gnu packages pkg-config)
 | 
				
			||||||
 | 
					  #:use-module (gnu packages polkit)
 | 
				
			||||||
  #:use-module (gnu packages python)
 | 
					  #:use-module (gnu packages python)
 | 
				
			||||||
  #:use-module (gnu packages python-build)
 | 
					  #:use-module (gnu packages python-build)
 | 
				
			||||||
  #:use-module (gnu packages python-crypto)
 | 
					  #:use-module (gnu packages python-crypto)
 | 
				
			||||||
| 
						 | 
					@ -73,6 +81,201 @@
 | 
				
			||||||
  #:use-module (gnu packages tls)
 | 
					  #:use-module (gnu packages tls)
 | 
				
			||||||
  #:use-module (gnu packages xml))
 | 
					  #:use-module (gnu packages xml))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(define-public bitmask
 | 
				
			||||||
 | 
					  (package
 | 
				
			||||||
 | 
					    (name "bitmask")
 | 
				
			||||||
 | 
					    (version "0.21.6")
 | 
				
			||||||
 | 
					    (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 "0xmn0pkpn0mcwi1jlgm5skydcnfxk5fawg5hl2inn50m0ikgxk1c"))
 | 
				
			||||||
 | 
					       (modules
 | 
				
			||||||
 | 
					        '((guix build utils)))
 | 
				
			||||||
 | 
					       (snippet
 | 
				
			||||||
 | 
					        `(begin
 | 
				
			||||||
 | 
					           (delete-file-recursively "branding/thirdparty")
 | 
				
			||||||
 | 
					           (call-with-output-file "pkg/config/version/version.go"
 | 
				
			||||||
 | 
					             (lambda (port)
 | 
				
			||||||
 | 
					               (format port "package version\n")
 | 
				
			||||||
 | 
					               (format port "\n")
 | 
				
			||||||
 | 
					               (format port (string-append "var VERSION = \"" ,version "\""))))
 | 
				
			||||||
 | 
					           #t))))
 | 
				
			||||||
 | 
					    (build-system go-build-system)
 | 
				
			||||||
 | 
					    (arguments
 | 
				
			||||||
 | 
					     `(#:imported-modules
 | 
				
			||||||
 | 
					       ((guix build cmake-build-system)
 | 
				
			||||||
 | 
					        (guix build copy-build-system)
 | 
				
			||||||
 | 
					        (guix build python-build-system)
 | 
				
			||||||
 | 
					        (guix build qt-build-system)
 | 
				
			||||||
 | 
					        (guix build qt-utils)
 | 
				
			||||||
 | 
					        ,@%go-build-system-modules)
 | 
				
			||||||
 | 
					       #:modules
 | 
				
			||||||
 | 
					       (((guix build copy-build-system)
 | 
				
			||||||
 | 
					         #:prefix copy:)
 | 
				
			||||||
 | 
					        ((guix build python-build-system)
 | 
				
			||||||
 | 
					         #:prefix python:)
 | 
				
			||||||
 | 
					        ((guix build qt-build-system)
 | 
				
			||||||
 | 
					         #:prefix qt:)
 | 
				
			||||||
 | 
					        (guix build utils)
 | 
				
			||||||
 | 
					        (guix build go-build-system))
 | 
				
			||||||
 | 
					       #:unpack-path "0xacab.org/leap/bitmask-vpn"
 | 
				
			||||||
 | 
					       #:import-path "0xacab.org/leap/bitmask-vpn/cmd/bitmask-helper"
 | 
				
			||||||
 | 
					       #:phases
 | 
				
			||||||
 | 
					       (modify-phases %standard-phases
 | 
				
			||||||
 | 
					         (add-after 'setup-go-environment 'insert-missing-sources
 | 
				
			||||||
 | 
					           ;; For some reason this package is left out.
 | 
				
			||||||
 | 
					           (lambda* (#:key inputs #:allow-other-keys)
 | 
				
			||||||
 | 
					             (let* ((name "go-0xacab-org-leap-shapeshifter")
 | 
				
			||||||
 | 
					                    (shapeshifter (assoc-ref inputs name))
 | 
				
			||||||
 | 
					                    (shapeshifter-src (string-append shapeshifter "/src")))
 | 
				
			||||||
 | 
					               (copy-recursively shapeshifter-src "src"))))
 | 
				
			||||||
 | 
					         (add-after 'unpack 'patch
 | 
				
			||||||
 | 
					           (lambda* (#:key inputs outputs #:allow-other-keys)
 | 
				
			||||||
 | 
					             (with-directory-excursion "src/0xacab.org/leap/bitmask-vpn"
 | 
				
			||||||
 | 
					               ;; Use 'emersion/go-autostart',
 | 
				
			||||||
 | 
					               ;; instead of 'ProtonMail/go-autostart',
 | 
				
			||||||
 | 
					               ;; as the latter no longer exists.
 | 
				
			||||||
 | 
					               (substitute* (find-files "." "\\.go$")
 | 
				
			||||||
 | 
					                 (("github.com/ProtonMail/go-autostart")
 | 
				
			||||||
 | 
					                  "github.com/emersion/go-autostart"))
 | 
				
			||||||
 | 
					               ;; Use correct paths for referenced items.
 | 
				
			||||||
 | 
					               (let* ((out (assoc-ref outputs "out"))
 | 
				
			||||||
 | 
					                      (policy-dir (string-append out "/share/polkit-1/actions"))
 | 
				
			||||||
 | 
					                      (policy-file "se.leap.bitmask.policy")
 | 
				
			||||||
 | 
					                      (policy-path (string-append policy-dir "/" policy-file))
 | 
				
			||||||
 | 
					                      (ip (string-append (assoc-ref inputs "iproute")
 | 
				
			||||||
 | 
					                                         "/sbin/ip"))
 | 
				
			||||||
 | 
					                      (iptables (string-append (assoc-ref inputs "iptables")
 | 
				
			||||||
 | 
					                                               "/sbin/iptables"))
 | 
				
			||||||
 | 
					                      (ip6tables (string-append (assoc-ref inputs "iptables")
 | 
				
			||||||
 | 
					                                                "/sbin/ip6tables"))
 | 
				
			||||||
 | 
					                      (sysctl (string-append (assoc-ref inputs "procps")
 | 
				
			||||||
 | 
					                                             "/sbin/sysctl"))
 | 
				
			||||||
 | 
					                      (pkttyagent (string-append (assoc-ref inputs "polkit")
 | 
				
			||||||
 | 
					                                                 "/bin/pkttyagent"))
 | 
				
			||||||
 | 
					                      (openvpn (string-append (assoc-ref inputs "openvpn")
 | 
				
			||||||
 | 
					                                              "/sbin/openvpn"))
 | 
				
			||||||
 | 
					                      (bitmask-root (string-append (assoc-ref outputs "out")
 | 
				
			||||||
 | 
					                                                   "/sbin/bitmask-root")))
 | 
				
			||||||
 | 
					                 (substitute* (find-files "." "(\\.go$|\\.policy$|bitmask-root)")
 | 
				
			||||||
 | 
					                   (("swhich\\(\"ip\"\\)")
 | 
				
			||||||
 | 
					                    (string-append "\"" ip "\""))
 | 
				
			||||||
 | 
					                   (("swhich\\(\"iptables\"\\)")
 | 
				
			||||||
 | 
					                    (string-append "\"" iptables "\""))
 | 
				
			||||||
 | 
					                   (("swhich\\(\"ip6tables\"\\)")
 | 
				
			||||||
 | 
					                    (string-append "\"" ip6tables "\""))
 | 
				
			||||||
 | 
					                   (("swhich\\(\"sysctl\"\\)")
 | 
				
			||||||
 | 
					                    (string-append "\"" sysctl "\""))
 | 
				
			||||||
 | 
					                   (("/usr/(bin|lib|libexec)/.*(kit|agent|agent-1)") pkttyagent)
 | 
				
			||||||
 | 
					                   (("/usr/sbin/openvpn") openvpn)
 | 
				
			||||||
 | 
					                   (("/usr/sbin/bitmask-root") bitmask-root)
 | 
				
			||||||
 | 
					                   (("/usr/local/sbin/bitmask-root") bitmask-root)
 | 
				
			||||||
 | 
					                   (("/usr/share.*\\.policy") policy-path)))
 | 
				
			||||||
 | 
					               (substitute* (find-files "." "\\.pro$")
 | 
				
			||||||
 | 
					                 ;; Use correct path for goshim files,
 | 
				
			||||||
 | 
					                 ;; which are generated in 'build-continued phase.
 | 
				
			||||||
 | 
					                 (("-L.*/lib") "-L./lib")
 | 
				
			||||||
 | 
					                 ;; FIXME: Unable to build i18n files.
 | 
				
			||||||
 | 
					                 (("TRANSLATIONS.*i18n.*$") "")
 | 
				
			||||||
 | 
					                 (("RESOURCES.*i18n.*$") "")))))
 | 
				
			||||||
 | 
					         (add-after 'build 'build-continued
 | 
				
			||||||
 | 
					           (lambda _
 | 
				
			||||||
 | 
					             ;; Generate goshim library and header files.
 | 
				
			||||||
 | 
					             (let* ((dir "src/0xacab.org/leap/bitmask-vpn")
 | 
				
			||||||
 | 
					                    (source (string-append dir "/gui/backend.go"))
 | 
				
			||||||
 | 
					                    (target (string-append dir "/lib/libgoshim.a")))
 | 
				
			||||||
 | 
					               (mkdir-p (string-append dir "/lib"))
 | 
				
			||||||
 | 
					               (invoke "go" "build" "-buildmode=c-archive" "-o" target source))
 | 
				
			||||||
 | 
					             ;; Build bitmask application.
 | 
				
			||||||
 | 
					             (with-directory-excursion "src/0xacab.org/leap/bitmask-vpn"
 | 
				
			||||||
 | 
					               (delete-file "Makefile")
 | 
				
			||||||
 | 
					               (invoke "qmake" "bitmask.pro")
 | 
				
			||||||
 | 
					               (invoke "make"))))
 | 
				
			||||||
 | 
					         (add-after 'check 'check-continued
 | 
				
			||||||
 | 
					           (lambda* (#:key tests? #:allow-other-keys)
 | 
				
			||||||
 | 
					             (when tests?
 | 
				
			||||||
 | 
					               ;; Run bitmask test-suite.
 | 
				
			||||||
 | 
					               (with-directory-excursion "src/0xacab.org/leap/bitmask-vpn"
 | 
				
			||||||
 | 
					                 (delete-file "Makefile")
 | 
				
			||||||
 | 
					                 (invoke "qmake" "test.pro")
 | 
				
			||||||
 | 
					                 ;; Tests require display-server.
 | 
				
			||||||
 | 
					                 (setenv "QT_QPA_PLATFORM" "offscreen")
 | 
				
			||||||
 | 
					                 ;; Tests look for $XDG_RUNTIME_DIR.
 | 
				
			||||||
 | 
					                 (setenv "XDG_RUNTIME_DIR" (getenv "TEMP"))
 | 
				
			||||||
 | 
					                 ;; Tests write to $HOME.
 | 
				
			||||||
 | 
					                 (setenv "HOME" (getenv "TEMP"))
 | 
				
			||||||
 | 
					                 (invoke "make" "check")))))
 | 
				
			||||||
 | 
					         (add-after 'install 'install-continued
 | 
				
			||||||
 | 
					           (lambda args
 | 
				
			||||||
 | 
					             (apply (assoc-ref copy:%standard-phases 'install)
 | 
				
			||||||
 | 
					                    #:install-plan
 | 
				
			||||||
 | 
					                    ;; Install bitmask program.
 | 
				
			||||||
 | 
					                    '(("src/0xacab.org/leap/bitmask-vpn/release"
 | 
				
			||||||
 | 
					                       "bin"
 | 
				
			||||||
 | 
					                       #:include ("bitmask"))
 | 
				
			||||||
 | 
					                      ;; Install bitmask-root script.
 | 
				
			||||||
 | 
					                      ("src/0xacab.org/leap/bitmask-vpn/helpers"
 | 
				
			||||||
 | 
					                       "sbin"
 | 
				
			||||||
 | 
					                       #:include ("bitmask-root"))
 | 
				
			||||||
 | 
					                      ;; Install polkit-policy.
 | 
				
			||||||
 | 
					                      ("src/0xacab.org/leap/bitmask-vpn/helpers"
 | 
				
			||||||
 | 
					                       "share/polkit-1/actions"
 | 
				
			||||||
 | 
					                       #:include ("se.leap.bitmask.policy")))
 | 
				
			||||||
 | 
					                    args)))
 | 
				
			||||||
 | 
					         (add-after 'install-continued 'post-install
 | 
				
			||||||
 | 
					           (lambda* (#:key outputs #:allow-other-keys)
 | 
				
			||||||
 | 
					             (let* ((out (assoc-ref outputs "out"))
 | 
				
			||||||
 | 
					                    (bitmask (string-append out "/bin/bitmask"))
 | 
				
			||||||
 | 
					                    (bitmask-root (string-append out "/sbin/bitmask-root")))
 | 
				
			||||||
 | 
					               ;; Make bitmask-root script executable.
 | 
				
			||||||
 | 
					               (chmod bitmask-root #o777))))
 | 
				
			||||||
 | 
					         (add-after 'post-install 'python-wrap
 | 
				
			||||||
 | 
					           (assoc-ref python:%standard-phases 'wrap))
 | 
				
			||||||
 | 
					         (add-after 'python-wrap 'qt-wrap
 | 
				
			||||||
 | 
					           (assoc-ref qt:%standard-phases 'qt-wrap)))))
 | 
				
			||||||
 | 
					    (native-inputs
 | 
				
			||||||
 | 
					     `(("pkg-config" ,pkg-config)))
 | 
				
			||||||
 | 
					    (inputs
 | 
				
			||||||
 | 
					     `(("iproute" ,iproute)
 | 
				
			||||||
 | 
					       ("iptables" ,iptables)
 | 
				
			||||||
 | 
					       ("mesa" ,mesa)
 | 
				
			||||||
 | 
					       ("openvpn" ,openvpn)
 | 
				
			||||||
 | 
					       ("polkit" ,polkit)
 | 
				
			||||||
 | 
					       ("procps" ,procps)
 | 
				
			||||||
 | 
					       ("python" ,python)
 | 
				
			||||||
 | 
					       ("qtbase" ,qtbase-5)
 | 
				
			||||||
 | 
					       ("qtdeclarative" ,qtdeclarative)
 | 
				
			||||||
 | 
					       ("qtquickcontrols" ,qtquickcontrols)
 | 
				
			||||||
 | 
					       ("qtquickcontrols2" ,qtquickcontrols2)))
 | 
				
			||||||
 | 
					    (propagated-inputs
 | 
				
			||||||
 | 
					     `(("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-keybase-go-ps"
 | 
				
			||||||
 | 
					        ,go-github-com-keybase-go-ps)
 | 
				
			||||||
 | 
					       ("go-github-com-rakyll-statik"
 | 
				
			||||||
 | 
					        ,go-github-com-rakyll-statik)
 | 
				
			||||||
 | 
					       ("go-github-com-sevlyar-go-daemon"
 | 
				
			||||||
 | 
					        ,go-github-com-sevlyar-go-daemon)
 | 
				
			||||||
 | 
					       ("go-golang-org-x-sys" ,go-golang-org-x-sys)))
 | 
				
			||||||
 | 
					    (synopsis "Generic VPN client by LEAP")
 | 
				
			||||||
 | 
					    (description "Bitmask, by @acronym{LEAP, LEAP Encryption Access Project},
 | 
				
			||||||
 | 
					is an application to provide easy and secure encrypted communication with a
 | 
				
			||||||
 | 
					@acronym{VPN, Virtual Private Network}.  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, where the former is default.")
 | 
				
			||||||
 | 
					    (home-page "https://bitmask.net/")
 | 
				
			||||||
 | 
					    (license license:gpl3+)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
(define-public gvpe
 | 
					(define-public gvpe
 | 
				
			||||||
  (package
 | 
					  (package
 | 
				
			||||||
    (name "gvpe")
 | 
					    (name "gvpe")
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Reference in a new issue