;;; SPDX-License-Identifier: GPL-3.0-or-later ;;; Copyright © 2022 Demis Balbach ;;; Copyright © 2023 Jonathan Brielmaier (define-module (nongnu packages engineering) #:use-module (gnu packages base) #:use-module (gnu packages cups) #:use-module (gnu packages compression) #:use-module (gnu packages fontutils) #:use-module (gnu packages gcc) #:use-module (gnu packages gl) #:use-module (gnu packages glib) #:use-module (gnu packages gnome) #:use-module (gnu packages gtk) #:use-module (gnu packages linux) #:use-module (gnu packages nss) #:use-module (gnu packages xdisorg) #:use-module (gnu packages xorg) #:use-module (gnu packages xml) #:use-module (guix download) #:use-module (guix gexp) #:use-module (guix packages) #:use-module (guix utils) #:use-module ((guix licenses) :prefix license:) #:use-module (nonguix build-system binary) #:use-module ((nonguix licenses) :prefix license:) #:use-module (ice-9 match)) (define-public lycheeslicer (package (name "lycheeslicer") (version "4.1.0") (source (origin (method url-fetch) (uri (string-append "https://mango-lychee.nyc3.cdn.digitaloceanspaces.com/LycheeSlicer-" version ".deb")) (sha256 (base32 "1rv3f8d1sb5irn4y8hjzk2m7c9irw71ls8p1mqambxg79q9ffj9m")))) (supported-systems '("x86_64-linux")) (build-system binary-build-system) (arguments (list #:validate-runpath? #f ; TODO: fails on wrapped binary and included other files #:patchelf-plan #~'(("lib/LycheeSlicer/lycheeslicer" ("alsa-lib" "at-spi2-atk" "at-spi2-core" "atk" "cairo" "cups" "dbus" "expat" "eudev" "fontconfig-minimal" "gcc" "gdk-pixbuf" "glib" "gtk+" "libdrm" "libnotify" "libsecret" "libx11" "libxcb" "libxcomposite" "libxdamage" "libxext" "libxfixes" "libxkbcommon" "libxrandr" "libxscrnsaver" "libxshmfence" "libxtst" "mesa" "nspr" "pango"))) #:phases #~(modify-phases %standard-phases (replace 'unpack (lambda _ (invoke "ar" "x" #$source) (invoke "tar" "xvf" "data.tar.xz") ;; Use the more standard lib directory for everything. (rename-file "opt/" "lib") (mkdir-p "share") (copy-recursively "usr/share" "share") ;; Remove unneeded files. (delete-file-recursively "usr") (delete-file "control.tar.gz") (delete-file "data.tar.xz") (delete-file "debian-binary"))) (add-after 'unpack 'fix-desktop-file (lambda _ ;; Fix the .desktop file binary location. (substitute* '("share/applications/lycheeslicer.desktop") (("/opt/LycheeSlicer") (string-append #$output "/lib/LycheeSlicer"))))) (add-after 'install 'symlink-binary-file-and-cleanup (lambda _ (delete-file (string-append #$output "/environment-variables")) (mkdir-p (string-append #$output "/bin")) (symlink (string-append #$output "/lib/LycheeSlicer/lycheeslicer") (string-append #$output "/bin/lycheeslicer")))) (add-after 'install 'wrap-where-patchelf-does-not-work (lambda _ (wrap-program (string-append #$output "/lib/LycheeSlicer/lycheeslicer") `("FONTCONFIG_PATH" ":" prefix (,(string-join (list (string-append #$(this-package-input "fontconfig-minimal") "/etc/fonts") #$output) ":"))) `("LD_LIBRARY_PATH" ":" prefix (,(string-join (list (string-append #$(this-package-input "nss") "/lib/nss") (string-append #$(this-package-input "mesa") "/lib") (string-append #$(this-package-input "dbus") "/lib") (string-append #$(this-package-input "gcc") "/lib") (string-append #$(this-package-input "eudev") "/lib") (string-append #$(this-package-input "libsecret") "/lib") (string-append #$(this-package-input "libxscrnsaver") "/lib") (string-append #$(this-package-input "libnotify") "/lib") (string-append #$output "/lib/LycheeSlicer") #$output) ":"))))))))) (native-inputs (list tar)) (inputs (list alsa-lib at-spi2-atk at-spi2-core atk cairo cups dbus expat eudev fontconfig `(,gcc "lib") glib gtk+ libdrm libnotify libsecret libx11 libxcb libxcomposite libxdamage libxext libxfixes libxkbcommon libxrandr libxscrnsaver libxshmfence libxtst mesa nspr nss pango)) (home-page "https://mango3d.io") (synopsis "Slicer for resin 3d printers of different manufacturers") (description "A user-friendly slicing software for resin 3d printers. It supports printers and resins of different manufacturers alongside community-created profiles as well. It offers a paid- and free version with a reduced feature set.") (license (license:nonfree "https://mango3d.io/terms-and-conditions"))))