commit - fb87d3c1aa3ed23158a3842443bdd594b71bff4c
commit + 17ca291dac7ec48ce8266b3726d1fdcc513e99f7
blob - 66d62ee2b269048753d06a067f6f21688d4fbb04
blob + a466f61684c3bbf7e1b4ae76bd8d30e819eab059
--- richard/packages/mullvad.scm
+++ richard/packages/mullvad.scm
;;
;; Para actualizar a una versión nueva:
;; 1. Cambia 'version' al nuevo tag (ej. "2026.2")
-;; 2. Descarga el .deb y obtén el hash:
-;; wget https://github.com/mullvad/mullvadvpn-app/releases/download/VERSION/MullvadVPN-VERSION_amd64.deb
-;; sha256sum MullvadVPN-VERSION_amd64.deb | python3 ~/nix32.py $(cut -d' ' -f1)
+;; 2. Obtén el hash nuevo:
+;; guix download https://github.com/mullvad/mullvadvpn-app/releases/download/VERSION/MullvadVPN-VERSION_amd64.deb
;; 3. Reemplaza el (base32 "...") con el resultado
(define-module (richard packages mullvad)
#:use-module (guix build-system trivial)
#:use-module (guix gexp)
#:use-module ((guix licenses) #:prefix license:)
- #:use-module (gnu packages base) ; glibc, tar
+ #:use-module (gnu packages base) ; glibc, tar, binutils
#:use-module (gnu packages compression) ; xz
#:use-module (gnu packages elf) ; patchelf
- #:use-module (gnu packages commencement) ; binutils-final (ar)
#:export (mullvad-vpn))
(define-public mullvad-vpn
(build-system trivial-build-system)
(native-inputs
- (list tar xz patchelf binutils-final))
+ (list tar xz patchelf binutils))
(inputs
(list glibc))
(define lib-dir (string-append out "/lib/mullvad-vpn"))
(define bin-dir (string-append out "/bin"))
- ;; ── 1. Extraer data.tar.xz del .deb ─────────────────────
+ ;; ── 1. Extraer data.tar.* del .deb ──────────────────────
;; Un .deb es un archivo ar que contiene:
- ;; control.tar.xz — metadatos del paquete
- ;; data.tar.xz — los archivos reales
+ ;; control.tar.* — metadatos del paquete
+ ;; data.tar.* — los archivos reales (xz o zst)
(mkdir-p tmp)
(with-directory-excursion tmp
- (invoke (string-append #$binutils-final "/bin/ar")
+ (invoke (string-append #$binutils "/bin/ar")
"x" #$source)
- ;; Extraer sin --strip-components: Mullvad instala en
- ;; ./opt/Mullvad VPN/ (con espacio), no en /usr/
- (invoke (string-append #$tar "/bin/tar")
- "xf" "data.tar.xz"
- "--use-compress-program"
- (string-append #$xz "/bin/xz")))
+ ;; Detectar formato de compresión del data tarball
+ (let ((data-tar
+ (cond
+ ((file-exists? "data.tar.xz") "data.tar.xz")
+ ((file-exists? "data.tar.zst") "data.tar.zst")
+ ((file-exists? "data.tar.gz") "data.tar.gz")
+ (else (error "No se encontró data.tar.* en el .deb")))))
+ ;; Extraer sin --strip-components: Mullvad instala en
+ ;; ./opt/Mullvad VPN/ (con espacio), no en /usr/
+ (invoke (string-append #$tar "/bin/tar")
+ "xf" data-tar)))
;; ── 2. Copiar el bundle al store ──────────────────────────
;; Usamos copy-recursively para manejar el espacio en el path
"--set-interpreter" interp
"--set-rpath" lib-dir
bin))))
- ;; Binarios principales del bundle de Mullvad
+ ;; Binarios del bundle — parchear todos los ELF que existan
'("mullvad-daemon"
- "mullvad")))
+ "mullvad"
+ "mullvad-exclude"
+ "mullvad-setup"
+ "mullvad-openvpn"
+ "openvpn")))
;; ── 4. Wrappers en bin/ ───────────────────────────────────
;; Scripts delgados que invocan los binarios en lib-dir
blob - d21451be09d990eafa9e0f5cbd67fce7b6e65282
blob + ee26c89a83ce6b6c140e1f70325afb83b3f1b8b8
--- richard/services/mullvad.scm
+++ richard/services/mullvad.scm
(shepherd-service
(documentation "Mullvad VPN daemon — gestiona WireGuard y killswitch")
(provision '(mullvad))
- ;; networking: espera a que la pila de red esté lista
- (requirement '(networking))
+ ;; networking: espera red; nftables: evita que mullvad arranque antes
+ ;; de que se cargue el ruleset base (su killswitch añade reglas encima)
+ (requirement '(networking nftables))
(start
#~(make-forkexec-constructor
;; El daemon está en lib/mullvad-vpn/ dentro del store
blob - 4ba4b2e0f87e19942ddfd11137c8880e24853d71
blob + f986c827ae7181987e5371ed6d3988a7c8bbf2e6
--- system/channels.scm
+++ system/channels.scm
"2A39 3FFF 68F4 EF7A 3D29 12AF 6F51 20A0 22FB B2D5"))))
;; Canal personal: paquetes binarios (Mullvad VPN, Zen Browser, etc.)
+ ;; Para generar la introduction:
+ ;; 1. git config commit.gpgsign true
+ ;; 2. git commit -S (en el repo del canal)
+ ;; 3. git push && git rev-parse HEAD → sustituye COMMIT-HASH abajo
(channel
(name 'richard)
(url "https://codeberg.org/Richard7987/guix-channel")
- (branch "main")))
+ (branch "main")
+ (introduction
+ (make-channel-introduction
+ "COMMIT-HASH" ; reemplazar con: git rev-parse HEAD (commit firmado)
+ (openpgp-fingerprint
+ "91CA 581F 7B78 01E8 8673 D228 DBD5 F61D 8A0A 14D7")))))