Commit Diff


commit - fb87d3c1aa3ed23158a3842443bdd594b71bff4c
commit + 17ca291dac7ec48ce8266b3726d1fdcc513e99f7
blob - 66d62ee2b269048753d06a067f6f21688d4fbb04
blob + a466f61684c3bbf7e1b4ae76bd8d30e819eab059
--- richard/packages/mullvad.scm
+++ richard/packages/mullvad.scm
@@ -6,9 +6,8 @@
 ;;
 ;; 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)
@@ -17,10 +16,9 @@
   #: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
@@ -42,7 +40,7 @@
     (build-system trivial-build-system)
 
     (native-inputs
-      (list tar xz patchelf binutils-final))
+      (list tar xz patchelf binutils))
 
     (inputs
       (list glibc))
@@ -59,20 +57,25 @@
             (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
@@ -94,9 +97,13 @@
                               "--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
@@ -29,8 +29,9 @@
   (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
@@ -22,7 +22,16 @@
           "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")))))