diff --git a/vk-messenger.scm b/vk-messenger.scm new file mode 100644 index 0000000..56fe5bc --- /dev/null +++ b/vk-messenger.scm @@ -0,0 +1,156 @@ +(define-module (vk-messenger) + #:use-module (gnu packages compression) + #:use-module (gnu packages cpio) + #:use-module (gnu packages cups) + #:use-module (gnu packages elf) + #:use-module (gnu packages fontutils) + #:use-module (gnu packages gcc) + #:use-module (gnu packages glib) + #:use-module (gnu packages gnome) + #:use-module (gnu packages gtk) + #:use-module (gnu packages gtk) + #:use-module (gnu packages icu4c) + #:use-module (gnu packages linux) + #:use-module (gnu packages node) + #:use-module (gnu packages nss) + #:use-module (gnu packages video) + #:use-module (gnu packages xml) + #:use-module (gnu packages xorg) + #:use-module (gnu packages package-management) + #:use-module (ice-9 popen) + #:use-module (ice-9 rdelim) + #:use-module (guix download) + #:use-module (guix packages) + #:use-module ((guix licenses) #:prefix license:) + #:use-module (nonguix build-system binary) + #:use-module (nonguix licenses)) + +(define-public vk-messenger + (package + (name "vk-messenger") + (version "5.2.3") + (source (origin + (method url-fetch) + (uri (string-append "https://desktop.userapi.com/rpm/master/vk-" version ".x86_64.rpm")) + (sha256 + (base32 + "1m6saanpv1k5wc5s58jpf0wsgjsj7haabx8nycm1fjyhky1chirb")))) + (build-system binary-build-system) + (arguments + `(#:validate-runpath? #f ;; fails on the shipped .so files + #:patchelf-plan + `(("usr/share/vk/vk" ("alsa-lib" + "atk" + "at-spi2-atk" + "cairo" + "cups" + "dbus" + "fontconfig" + "gtk+" + "gdk-pixbuf" + "out" + "gcc:lib" + "glib" + "expat" + "libx11" + "libxcb" + "libxcomposite" + "libxcursor" + "libxdamage" + "libxext" + "libxfixes" + "libxi" + "libxkbfile" + "libxrandr" + "libxrender" + "libxscrnsaver" + "libxsts" + ;; "nss" + "nspr" + "pango")) + ("usr/share/vk/libffmpeg.so" ("gcc:lib")) + ("usr/share/vk/libnode.so" ("gcc:lib" "icu4c")) + ("usr/share/vk/resources/app/dist/libEGL.so" ("gcc:lib")) + ("usr/share/vk/resources/app/dist/libGLESv2.so" ("libx11" "libxcb" "gcc:lib")) + ("usr/share/vk/resources/app/dist/libppapi_voip_swiftshader_x86_64.so" ("gcc:lib" "out")) + ("usr/share/vk/resources/app/dist/libppapi_voip_x86_64.so" ("gcc:lib"))) + #:install-plan + `(("etc/" "etc") + ("usr/" "usr") + ("usr/share/vk/libffmpeg.so" "lib/") + ("usr/share/vk/libnode.so" "lib/") + ("usr/share/vk/resources/app/dist/libEGL.so" "lib/") + ("usr/share/vk/resources/app/dist/libGLESv2.so" "lib/") + ("usr/share/vk/resources/app/dist/libppapi_voip_swiftshader_x86_64.so" "lib/") + ("usr/share/vk/resources/app/dist/libppapi_voip_x86_64.so" "lib/")) + #:phases + (modify-phases %standard-phases + (replace 'unpack + (lambda* (#:key inputs #:allow-other-keys) + (let ((source (assoc-ref inputs "source"))) + (system (format #f "rpm2cpio ~a | cpio -idmv" source)) + (mkdir "lib") + #t))) + ;; because NSS stores its libraries in lib/nss + (add-after 'patchelf 'patchelf-nss + (lambda* (#:key inputs #:allow-other-keys) + (use-modules (ice-9 popen)) + (use-modules (ice-9 rdelim)) + (let* ((nss (assoc-ref inputs "nss")) + (rpath-pipe (open-input-pipe + "patchelf --print-rpath usr/share/vk/vk")) + (rpath (read-line rpath-pipe))) + (close-pipe rpath-pipe) + (invoke "patchelf" "--set-rpath" + (string-append rpath ":" nss "/lib/nss") + "usr/share/vk/vk")))) + (add-after 'install 'install-symlink + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (string-append (assoc-ref outputs "out")))) + (mkdir (string-append out "/bin")) + (symlink (string-append out "/usr/share/vk/vk") + (string-append out "/bin/vk")) + #t)))))) + (inputs + `(("alsa-lib" ,alsa-lib) + ("atk" ,atk) + ("at-spi2-atk" ,at-spi2-atk) + ("cairo" ,cairo) + ("cups" ,cups) + ("dbus" ,dbus) + ("expat" ,expat) + ;; ("ffmpeg" ,ffmpeg) + ("fontconfig" ,fontconfig) + ("gtk+" ,gtk+) + ("gcc:lib" ,gcc "lib") + ("gdk-pixbuf" ,gdk-pixbuf) + ("glib" ,glib) + ("icu4c" ,icu4c) + ;; ("libnode" ,libnode) + ("libx11" ,libx11) + ("libxcb" ,libxcb) + ("libxcomposite" ,libxcomposite) + ("libxcursor" ,libxcursor) + ("libxdamage" ,libxdamage) + ("libxext" ,libxext) + ("libxfixes" ,libxfixes) + ("libxi" ,libxi) + ("libxkbfile" ,libxkbfile) + ("libxrandr" ,libxrandr) + ("libxrender" ,libxrender) + ("libxscrnsaver" ,libxscrnsaver) + ("libxsts" ,libxtst) + ("nss" ,nss) + ("nspr" ,nspr) + ("pango" ,pango))) + (propagated-inputs + `(("libnotify" ,libnotify))) + (native-inputs + `(("cpio" ,cpio) + ("rpm" ,rpm) + ("patchelf" ,patchelf))) + (synopsis "Simple and Convenient Messaging App for VK") + (description "Simple and Convenient Messaging App for VK") + (home-page "https://vk.com/messenger") + (supported-systems '("x86_64-linux")) + (license (nonfree "They put MIT in the archive, but don't provide the full source"))))