gnu: Add bitmask.
* gnu/packages/vpn.scm (bitmask): New variable. Co-authored-by: jgart <jgart@dismail.de>master
parent
e6ea0abd93
commit
b30651aeca
|
@ -16,6 +16,8 @@
|
|||
;;; Copyright © 2020 Ivan Kozlov <kanichos@yandex.ru>
|
||||
;;; Copyright © 2020 David Dashyan <mail@davie.li>
|
||||
;;; 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.
|
||||
;;;
|
||||
|
@ -38,9 +40,12 @@
|
|||
#:use-module (guix download)
|
||||
#:use-module (guix git-download)
|
||||
#:use-module (guix build-system cmake)
|
||||
#:use-module (guix build-system copy)
|
||||
#: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 build-system qt)
|
||||
#:use-module (guix utils)
|
||||
#:use-module (gnu packages)
|
||||
#:use-module (gnu packages admin)
|
||||
|
@ -54,7 +59,9 @@
|
|||
#:use-module (gnu packages freedesktop)
|
||||
#:use-module (gnu packages gettext)
|
||||
#:use-module (gnu packages gnome)
|
||||
#:use-module (gnu packages gl)
|
||||
#:use-module (gnu packages gnupg)
|
||||
#:use-module (gnu packages golang)
|
||||
#:use-module (gnu packages guile)
|
||||
#:use-module (gnu packages libevent)
|
||||
#:use-module (gnu packages linux)
|
||||
|
@ -63,6 +70,7 @@
|
|||
#:use-module (gnu packages nss)
|
||||
#:use-module (gnu packages perl)
|
||||
#:use-module (gnu packages pkg-config)
|
||||
#:use-module (gnu packages polkit)
|
||||
#:use-module (gnu packages python)
|
||||
#:use-module (gnu packages python-build)
|
||||
#:use-module (gnu packages python-crypto)
|
||||
|
@ -73,6 +81,201 @@
|
|||
#:use-module (gnu packages tls)
|
||||
#: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
|
||||
(package
|
||||
(name "gvpe")
|
||||
|
|
Reference in New Issue