mirror of
https://gitlab.com/nonguix/nonguix.git
synced 2024-11-25 09:58:09 +01:00
nongnu: firefox: Use Gexp.
* nongnu/packages/mozilla.scm (firefox)[arguments]: Use Gexp to remove uses of %BUILD-INPUTS and output references. Also remove trailing #t. Signed-off-by: Jonathan Brielmaier <jonathan.brielmaier@web.de>
This commit is contained in:
parent
8a545a72d7
commit
b5a8492a79
1 changed files with 238 additions and 247 deletions
|
@ -9,7 +9,7 @@
|
|||
;;; Copyright © 2017, 2018 Nikita <nikita@n0.is>
|
||||
;;; Copyright © 2017, 2018 ng0 <gillmann@infotropique.org>
|
||||
;;; Copyright © 2017, 2018, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
|
||||
;;; Copyright © 2018, 2020 Ricardo Wurmus <rekado@elephly.net>
|
||||
;;; Copyright © 2018, 2020, 2022 Ricardo Wurmus <rekado@elephly.net>
|
||||
;;; Copyright © 2019 Ivan Petkov <ivanppetkov@gmail.com>
|
||||
;;; Copyright © 2020 Oleg Pykhalov <go.wigust@gmail.com>
|
||||
;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net>
|
||||
|
@ -42,6 +42,7 @@
|
|||
#:use-module (guix build-system trivial)
|
||||
#:use-module (guix download)
|
||||
#:use-module ((guix licenses) #:prefix license:)
|
||||
#:use-module (guix gexp)
|
||||
#:use-module (guix packages)
|
||||
#:use-module (guix utils)
|
||||
|
||||
|
@ -100,269 +101,259 @@
|
|||
(base32 "0a6z94kwgycgis4mgl13dh52kw7zmsya2qpxhcrh6b8j8z5pv2kc"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
`(#:configure-flags
|
||||
(let ((clang (assoc-ref %build-inputs "clang"))
|
||||
(wasi-sysroot (assoc-ref %build-inputs
|
||||
"wasm32-wasi-clang-toolchain")))
|
||||
`("--enable-application=browser"
|
||||
(list
|
||||
#:configure-flags
|
||||
#~(let ((clang #$(this-package-native-input "clang"))
|
||||
(wasi-sysroot #$(this-package-native-input "wasm32-wasi-clang-toolchain")))
|
||||
`("--enable-application=browser"
|
||||
|
||||
;; Configuration
|
||||
"--with-system-jpeg"
|
||||
"--with-system-zlib"
|
||||
;; "--with-system-png" ;require libpng-apng >= 1.6.35
|
||||
"--with-system-icu"
|
||||
"--enable-system-ffi"
|
||||
"--enable-system-pixman"
|
||||
"--enable-jemalloc"
|
||||
;; Configuration
|
||||
"--with-system-jpeg"
|
||||
"--with-system-zlib"
|
||||
;; "--with-system-png" ;require libpng-apng >= 1.6.35
|
||||
"--with-system-icu"
|
||||
"--enable-system-ffi"
|
||||
"--enable-system-pixman"
|
||||
"--enable-jemalloc"
|
||||
|
||||
;; see https://bugs.gnu.org/32833
|
||||
;; "--with-system-nspr"
|
||||
;; "--with-system-nss"
|
||||
;; see https://bugs.gnu.org/32833
|
||||
;; "--with-system-nspr"
|
||||
;; "--with-system-nss"
|
||||
|
||||
,(string-append "--with-clang-path="
|
||||
clang "/bin/clang")
|
||||
,(string-append "--with-libclang-path="
|
||||
clang "/lib")
|
||||
,(string-append "--with-wasi-sysroot=" wasi-sysroot "/wasm32-wasi")
|
||||
,(string-append "--with-clang-path="
|
||||
clang "/bin/clang")
|
||||
,(string-append "--with-libclang-path="
|
||||
clang "/lib")
|
||||
,(string-append "--with-wasi-sysroot=" wasi-sysroot "/wasm32-wasi")
|
||||
|
||||
;; Distribution
|
||||
"--with-distribution-id=org.nonguix"
|
||||
"--disable-official-branding"
|
||||
;; Distribution
|
||||
"--with-distribution-id=org.nonguix"
|
||||
"--disable-official-branding"
|
||||
|
||||
;; Features
|
||||
"--disable-tests"
|
||||
"--disable-updater"
|
||||
"--enable-pulseaudio"
|
||||
"--disable-crashreporter"
|
||||
;; Features
|
||||
"--disable-tests"
|
||||
"--disable-updater"
|
||||
"--enable-pulseaudio"
|
||||
"--disable-crashreporter"
|
||||
|
||||
;; Build details
|
||||
"--disable-debug"
|
||||
"--enable-rust-simd"
|
||||
"--enable-release"
|
||||
"--enable-optimize"
|
||||
"--enable-strip"
|
||||
"--disable-elf-hack"))
|
||||
#:imported-modules ,%cargo-utils-modules
|
||||
#:modules ((ice-9 regex)
|
||||
;; Build details
|
||||
"--disable-debug"
|
||||
"--enable-rust-simd"
|
||||
"--enable-release"
|
||||
"--enable-optimize"
|
||||
"--enable-strip"
|
||||
"--disable-elf-hack"))
|
||||
#:imported-modules %cargo-utils-modules
|
||||
#:modules `((ice-9 regex)
|
||||
(ice-9 ftw)
|
||||
(srfi srfi-26)
|
||||
,@%gnu-build-system-modules)
|
||||
#:phases
|
||||
(modify-phases %standard-phases
|
||||
(add-after 'unpack 'fix-preferences
|
||||
(lambda* (#:key inputs #:allow-other-keys)
|
||||
(let ((port (open-file "browser/app/profile/firefox.js" "a")))
|
||||
(define (write-setting key value)
|
||||
(format port "~%pref(\"~a\", ~a);~%"
|
||||
key value)
|
||||
(format #t "fix-preferences: setting value of ~a to ~a~%"
|
||||
key value))
|
||||
#:phases
|
||||
#~(modify-phases %standard-phases
|
||||
(add-after 'unpack 'fix-preferences
|
||||
(lambda* (#:key inputs #:allow-other-keys)
|
||||
(let ((port (open-file "browser/app/profile/firefox.js" "a")))
|
||||
(define (write-setting key value)
|
||||
(format port "~%pref(\"~a\", ~a);~%"
|
||||
key value)
|
||||
(format #t "fix-preferences: setting value of ~a to ~a~%"
|
||||
key value))
|
||||
|
||||
;; We should allow Firefox sandbox to read the store directory,
|
||||
;; because Firefox sandbox have access to /usr on FHS distros.
|
||||
(write-setting "security.sandbox.content.read_path_whitelist"
|
||||
(string-append "\"" (%store-directory) "/\""))
|
||||
;; We should allow Firefox sandbox to read the store directory,
|
||||
;; because Firefox sandbox have access to /usr on FHS distros.
|
||||
(write-setting "security.sandbox.content.read_path_whitelist"
|
||||
(string-append "\"" (%store-directory) "/\""))
|
||||
|
||||
;; XDG settings should be managed by Guix.
|
||||
(write-setting "browser.shell.checkDefaultBrowser" "false")
|
||||
(close-port port))
|
||||
#t))
|
||||
(add-after 'fix-preferences 'fix-ffmpeg-runtime-linker
|
||||
(lambda* (#:key inputs #:allow-other-keys)
|
||||
(let* ((ffmpeg (assoc-ref inputs "ffmpeg"))
|
||||
(libavcodec (string-append ffmpeg "/lib/libavcodec.so")))
|
||||
;; Arrange to load libavcodec.so by its absolute file name.
|
||||
(substitute* "dom/media/platforms/ffmpeg/FFmpegRuntimeLinker.cpp"
|
||||
(("libavcodec\\.so")
|
||||
libavcodec))
|
||||
#t)))
|
||||
;; XDG settings should be managed by Guix.
|
||||
(write-setting "browser.shell.checkDefaultBrowser" "false")
|
||||
(close-port port))))
|
||||
(add-after 'fix-preferences 'fix-ffmpeg-runtime-linker
|
||||
(lambda* (#:key inputs #:allow-other-keys)
|
||||
(let* ((ffmpeg (assoc-ref inputs "ffmpeg"))
|
||||
(libavcodec (string-append ffmpeg "/lib/libavcodec.so")))
|
||||
;; Arrange to load libavcodec.so by its absolute file name.
|
||||
(substitute* "dom/media/platforms/ffmpeg/FFmpegRuntimeLinker.cpp"
|
||||
(("libavcodec\\.so")
|
||||
libavcodec)))))
|
||||
|
||||
(add-after 'patch-source-shebangs 'patch-cargo-checksums
|
||||
(lambda _
|
||||
(use-modules (guix build cargo-utils))
|
||||
(let ((null-hash
|
||||
;; This is the SHA256 output of an empty string.
|
||||
"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"))
|
||||
(for-each
|
||||
(lambda (file)
|
||||
(format #t "patch-cargo-checksums: patching checksums in ~a~%"
|
||||
file)
|
||||
(substitute* file
|
||||
(("(checksum = )\".*\"" all name)
|
||||
(string-append name "\"" null-hash "\""))))
|
||||
(find-files "." "Cargo\\.lock$"))
|
||||
(for-each generate-all-checksums
|
||||
'("build"
|
||||
"dom/media"
|
||||
"dom/webauthn"
|
||||
"gfx"
|
||||
"intl"
|
||||
"js"
|
||||
"media"
|
||||
"modules"
|
||||
"mozglue/static/rust"
|
||||
"netwerk"
|
||||
"remote"
|
||||
"security/manager/ssl"
|
||||
"servo"
|
||||
"storage"
|
||||
"third_party/rust"
|
||||
"toolkit"
|
||||
"xpcom/rust"
|
||||
"services"))
|
||||
#t)))
|
||||
(add-after 'patch-cargo-checksums 'remove-cargo-frozen-flag
|
||||
(lambda _
|
||||
;; Remove --frozen flag from cargo invokation, otherwise it'll
|
||||
;; complain that it's not able to change Cargo.lock.
|
||||
;; https://bugzilla.mozilla.org/show_bug.cgi?id=1726373
|
||||
(substitute* "build/RunCbindgen.py"
|
||||
(("\"--frozen\",") ""))
|
||||
#t))
|
||||
(delete 'bootstrap)
|
||||
(replace 'configure
|
||||
(lambda* (#:key inputs outputs configure-flags #:allow-other-keys)
|
||||
(setenv "AUTOCONF" (string-append (assoc-ref inputs "autoconf")
|
||||
"/bin/autoconf"))
|
||||
(setenv "SHELL" (which "bash"))
|
||||
(setenv "CONFIG_SHELL" (which "bash"))
|
||||
(setenv "MACH_USE_SYSTEM_PYTHON" "1")
|
||||
(add-after 'patch-source-shebangs 'patch-cargo-checksums
|
||||
(lambda _
|
||||
(use-modules (guix build cargo-utils))
|
||||
(let ((null-hash
|
||||
;; This is the SHA256 output of an empty string.
|
||||
"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"))
|
||||
(for-each
|
||||
(lambda (file)
|
||||
(format #t "patch-cargo-checksums: patching checksums in ~a~%"
|
||||
file)
|
||||
(substitute* file
|
||||
(("(checksum = )\".*\"" all name)
|
||||
(string-append name "\"" null-hash "\""))))
|
||||
(find-files "." "Cargo\\.lock$"))
|
||||
(for-each generate-all-checksums
|
||||
'("build"
|
||||
"dom/media"
|
||||
"dom/webauthn"
|
||||
"gfx"
|
||||
"intl"
|
||||
"js"
|
||||
"media"
|
||||
"modules"
|
||||
"mozglue/static/rust"
|
||||
"netwerk"
|
||||
"remote"
|
||||
"security/manager/ssl"
|
||||
"servo"
|
||||
"storage"
|
||||
"third_party/rust"
|
||||
"toolkit"
|
||||
"xpcom/rust"
|
||||
"services")))))
|
||||
(add-after 'patch-cargo-checksums 'remove-cargo-frozen-flag
|
||||
(lambda _
|
||||
;; Remove --frozen flag from cargo invokation, otherwise it'll
|
||||
;; complain that it's not able to change Cargo.lock.
|
||||
;; https://bugzilla.mozilla.org/show_bug.cgi?id=1726373
|
||||
(substitute* "build/RunCbindgen.py"
|
||||
(("\"--frozen\",") ""))))
|
||||
(delete 'bootstrap)
|
||||
(replace 'configure
|
||||
(lambda* (#:key inputs outputs configure-flags #:allow-other-keys)
|
||||
(setenv "AUTOCONF" (string-append (assoc-ref inputs "autoconf")
|
||||
"/bin/autoconf"))
|
||||
(setenv "SHELL" (which "bash"))
|
||||
(setenv "CONFIG_SHELL" (which "bash"))
|
||||
(setenv "MACH_USE_SYSTEM_PYTHON" "1")
|
||||
|
||||
;; Use Clang, Clang is 2x faster than GCC
|
||||
(setenv "AR" "llvm-ar")
|
||||
(setenv "NM" "llvm-nm")
|
||||
(setenv "CC" "clang")
|
||||
(setenv "CXX" "clang++")
|
||||
(setenv "WASM_CC"
|
||||
;; Use Clang, Clang is 2x faster than GCC
|
||||
(setenv "AR" "llvm-ar")
|
||||
(setenv "NM" "llvm-nm")
|
||||
(setenv "CC" "clang")
|
||||
(setenv "CXX" "clang++")
|
||||
(setenv "WASM_CC"
|
||||
(string-append
|
||||
(assoc-ref inputs "wasm32-wasi-clang-toolchain")
|
||||
"/bin/clang"))
|
||||
(setenv "WASM_CXX"
|
||||
(string-append
|
||||
(assoc-ref inputs "wasm32-wasi-clang-toolchain")
|
||||
"/bin/clang++"))
|
||||
|
||||
(setenv "MOZ_NOSPAM" "1")
|
||||
;; Firefox will write the timestamp to output, which is harmful for
|
||||
;; reproducibility, so change it to a fixed date.
|
||||
(setenv "MOZ_BUILD_DATE" #$%firefox-build-id)
|
||||
|
||||
(setenv "MOZBUILD_STATE_PATH" (getcwd))
|
||||
|
||||
(let* ((mozconfig (string-append (getcwd) "/mozconfig"))
|
||||
(out (assoc-ref outputs "out"))
|
||||
(flags (cons (string-append "--prefix=" out)
|
||||
configure-flags)))
|
||||
(format #t "build directory: ~s~%" (getcwd))
|
||||
(format #t "configure flags: ~s~%" flags)
|
||||
|
||||
(define write-flags
|
||||
(lambda flags
|
||||
(display (string-join
|
||||
(map (cut string-append "ac_add_options " <>)
|
||||
flags)
|
||||
"\n"))
|
||||
(display "\n")))
|
||||
(with-output-to-file mozconfig
|
||||
(lambda ()
|
||||
(apply write-flags flags)
|
||||
;; The following option unsets Telemetry Reporting. With the Addons Fiasco,
|
||||
;; Mozilla was found to be collecting user's data, including saved passwords and
|
||||
;; web form data, without users consent. Mozilla was also found shipping updates
|
||||
;; to systems without the user's knowledge or permission.
|
||||
;; As a result of this, use the following command to permanently disable
|
||||
;; telemetry reporting in Firefox.
|
||||
(display "unset MOZ_TELEMETRY_REPORTING\n")))
|
||||
(setenv "MOZCONFIG" mozconfig))
|
||||
(invoke "./mach" "configure")))
|
||||
(replace 'build
|
||||
(lambda* (#:key (make-flags '()) (parallel-build? #t)
|
||||
#:allow-other-keys)
|
||||
(apply invoke "./mach" "build"
|
||||
;; mach will use parallel build if possible by default
|
||||
`(,@(if parallel-build?
|
||||
'()
|
||||
'("-j1"))
|
||||
,@make-flags))))
|
||||
(add-after 'build 'neutralise-store-references
|
||||
(lambda _
|
||||
;; Mangle the store references to compilers & other build tools in
|
||||
;; about:buildconfig, reducing Firefox's closure by 1 GiB on x86-64.
|
||||
(let* ((build-dir (car (scandir "." (cut string-prefix? "obj-" <>))))
|
||||
(file (string-append build-dir "/dist/bin/chrome/toolkit/content/global/buildconfig.html")))
|
||||
(substitute* file
|
||||
(((format #f "(~a/)([0-9a-df-np-sv-z]{32})"
|
||||
(regexp-quote (%store-directory)))
|
||||
_ store hash)
|
||||
(string-append store
|
||||
(string-take hash 8)
|
||||
"<!-- Guix: not a runtime dependency -->"
|
||||
(string-drop hash 8)))))))
|
||||
(replace 'install
|
||||
(lambda _ (invoke "./mach" "install")))
|
||||
(add-after 'install 'wrap-program
|
||||
(lambda* (#:key inputs outputs #:allow-other-keys)
|
||||
(let* ((out (assoc-ref outputs "out"))
|
||||
(lib (string-append out "/lib"))
|
||||
(ld-libs
|
||||
(map (lambda (x)
|
||||
(string-append (assoc-ref inputs x)
|
||||
"/lib"))
|
||||
'("pulseaudio" "mesa"
|
||||
"udev" ;; For U2F and WebAuthn
|
||||
;; For hardware video acceleration via VA-API
|
||||
"libva"
|
||||
;; For the integration of native notifications
|
||||
"libnotify")))
|
||||
(gtk-share (string-append (assoc-ref inputs "gtk+")
|
||||
"/share")))
|
||||
(wrap-program (car (find-files lib "^firefox$"))
|
||||
`("LD_LIBRARY_PATH" prefix ,ld-libs)
|
||||
`("XDG_DATA_DIRS" prefix (,gtk-share))
|
||||
`("MOZ_LEGACY_PROFILES" = ("1"))
|
||||
`("MOZ_ALLOW_DOWNGRADE" = ("1"))))))
|
||||
(add-after 'wrap-program 'install-desktop-entry
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(let* ((desktop-file "taskcluster/docker/firefox-snap/firefox.desktop")
|
||||
(applications (string-append #$output "/share/applications")))
|
||||
(substitute* desktop-file
|
||||
(("^Exec=firefox") (string-append "Exec=" #$output "/bin/firefox"))
|
||||
(("Icon=.*") "Icon=firefox\n")
|
||||
(("NewWindow") "new-window")
|
||||
(("NewPrivateWindow") "new-private-window")
|
||||
(("StartupNotify=true")
|
||||
"StartupNotify=true\nStartupWMClass=Navigator"))
|
||||
(install-file desktop-file applications))))
|
||||
(add-after 'install-desktop-entry 'install-icons
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(let ((icon-source-dir
|
||||
(string-append
|
||||
(assoc-ref inputs "wasm32-wasi-clang-toolchain")
|
||||
"/bin/clang"))
|
||||
(setenv "WASM_CXX"
|
||||
(string-append
|
||||
(assoc-ref inputs "wasm32-wasi-clang-toolchain")
|
||||
"/bin/clang++"))
|
||||
#$output "/lib/firefox/browser/chrome/icons/default")))
|
||||
(for-each
|
||||
(lambda (size)
|
||||
(let ((dest (string-append #$output "/share/icons/hicolor/"
|
||||
size "x" size "/apps")))
|
||||
(mkdir-p dest)
|
||||
(symlink (string-append icon-source-dir
|
||||
"/default" size ".png")
|
||||
(string-append dest "/firefox.png"))))
|
||||
'("16" "32" "48" "64" "128"))))))
|
||||
|
||||
(setenv "MOZ_NOSPAM" "1")
|
||||
;; Firefox will write the timestamp to output, which is harmful for
|
||||
;; reproducibility, so change it to a fixed date.
|
||||
(setenv "MOZ_BUILD_DATE" ,%firefox-build-id)
|
||||
;; Test will significantly increase build time but with little rewards.
|
||||
#:tests? #f
|
||||
|
||||
(setenv "MOZBUILD_STATE_PATH" (getcwd))
|
||||
;; WARNING: Parallel build will consume lots of memory!
|
||||
;; If you have encountered OOM issue in build phase, try disable it.
|
||||
;; #:parallel-build? #f
|
||||
|
||||
(let* ((mozconfig (string-append (getcwd) "/mozconfig"))
|
||||
(out (assoc-ref outputs "out"))
|
||||
(flags (cons (string-append "--prefix=" out)
|
||||
configure-flags)))
|
||||
(format #t "build directory: ~s~%" (getcwd))
|
||||
(format #t "configure flags: ~s~%" flags)
|
||||
|
||||
(define write-flags
|
||||
(lambda flags
|
||||
(display (string-join
|
||||
(map (cut string-append "ac_add_options " <>)
|
||||
flags)
|
||||
"\n"))
|
||||
(display "\n")))
|
||||
(with-output-to-file mozconfig
|
||||
(lambda ()
|
||||
(apply write-flags flags)
|
||||
;; The following option unsets Telemetry Reporting. With the Addons Fiasco,
|
||||
;; Mozilla was found to be collecting user's data, including saved passwords and
|
||||
;; web form data, without users consent. Mozilla was also found shipping updates
|
||||
;; to systems without the user's knowledge or permission.
|
||||
;; As a result of this, use the following command to permanently disable
|
||||
;; telemetry reporting in Firefox.
|
||||
(display "unset MOZ_TELEMETRY_REPORTING\n")))
|
||||
(setenv "MOZCONFIG" mozconfig))
|
||||
(invoke "./mach" "configure")))
|
||||
(replace 'build
|
||||
(lambda* (#:key (make-flags '()) (parallel-build? #t)
|
||||
#:allow-other-keys)
|
||||
(apply invoke "./mach" "build"
|
||||
;; mach will use parallel build if possible by default
|
||||
`(,@(if parallel-build?
|
||||
'()
|
||||
'("-j1"))
|
||||
,@make-flags))))
|
||||
(add-after 'build 'neutralise-store-references
|
||||
(lambda _
|
||||
;; Mangle the store references to compilers & other build tools in
|
||||
;; about:buildconfig, reducing Firefox's closure by 1 GiB on x86-64.
|
||||
(let* ((build-dir (car (scandir "." (cut string-prefix? "obj-" <>))))
|
||||
(file (string-append build-dir "/dist/bin/chrome/toolkit/content/global/buildconfig.html")))
|
||||
(substitute* file
|
||||
(((format #f "(~a/)([0-9a-df-np-sv-z]{32})"
|
||||
(regexp-quote (%store-directory)))
|
||||
_ store hash)
|
||||
(string-append store
|
||||
(string-take hash 8)
|
||||
"<!-- Guix: not a runtime dependency -->"
|
||||
(string-drop hash 8)))))
|
||||
#t))
|
||||
(replace 'install
|
||||
(lambda _ (invoke "./mach" "install")))
|
||||
(add-after 'install 'wrap-program
|
||||
(lambda* (#:key inputs outputs #:allow-other-keys)
|
||||
(let* ((out (assoc-ref outputs "out"))
|
||||
(lib (string-append out "/lib"))
|
||||
(ld-libs
|
||||
(map (lambda (x)
|
||||
(string-append (assoc-ref inputs x)
|
||||
"/lib"))
|
||||
'("pulseaudio" "mesa"
|
||||
"udev" ;; For U2F and WebAuthn
|
||||
;; For hardware video acceleration via VA-API
|
||||
"libva"
|
||||
;; For the integration of native notifications
|
||||
"libnotify")))
|
||||
(gtk-share (string-append (assoc-ref inputs "gtk+")
|
||||
"/share")))
|
||||
(wrap-program (car (find-files lib "^firefox$"))
|
||||
`("LD_LIBRARY_PATH" prefix ,ld-libs)
|
||||
`("XDG_DATA_DIRS" prefix (,gtk-share))
|
||||
`("MOZ_LEGACY_PROFILES" = ("1"))
|
||||
`("MOZ_ALLOW_DOWNGRADE" = ("1")))
|
||||
#t)))
|
||||
(add-after 'wrap-program 'install-desktop-entry
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(let* ((desktop-file "taskcluster/docker/firefox-snap/firefox.desktop")
|
||||
(out (assoc-ref outputs "out"))
|
||||
(applications (string-append out "/share/applications")))
|
||||
(substitute* desktop-file
|
||||
(("^Exec=firefox") (string-append "Exec=" out "/bin/firefox"))
|
||||
(("Icon=.*") "Icon=firefox\n")
|
||||
(("NewWindow") "new-window")
|
||||
(("NewPrivateWindow") "new-private-window")
|
||||
(("StartupNotify=true")
|
||||
"StartupNotify=true\nStartupWMClass=Navigator"))
|
||||
(install-file desktop-file applications))
|
||||
#t))
|
||||
(add-after 'install-desktop-entry 'install-icons
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(let* ((out (assoc-ref outputs "out"))
|
||||
(icon-source-dir
|
||||
(string-append
|
||||
out "/lib/firefox/browser/chrome/icons/default")))
|
||||
(for-each
|
||||
(lambda (size)
|
||||
(let ((dest (string-append out "/share/icons/hicolor/"
|
||||
size "x" size "/apps")))
|
||||
(mkdir-p dest)
|
||||
(symlink (string-append icon-source-dir
|
||||
"/default" size ".png")
|
||||
(string-append dest "/firefox.png"))))
|
||||
'("16" "32" "48" "64" "128"))
|
||||
#t))))
|
||||
|
||||
;; Test will significantly increase build time but with little rewards.
|
||||
#:tests? #f
|
||||
|
||||
;; WARNING: Parallel build will consume lots of memory!
|
||||
;; If you have encountered OOM issue in build phase, try disable it.
|
||||
;; #:parallel-build? #f
|
||||
|
||||
;; Some dynamic lib was determined at runtime, so rpath check may fail.
|
||||
#:validate-runpath? #f))
|
||||
;; Some dynamic lib was determined at runtime, so rpath check may fail.
|
||||
#:validate-runpath? #f))
|
||||
(inputs
|
||||
`(("bzip2" ,bzip2)
|
||||
("cairo" ,cairo)
|
||||
|
|
Loading…
Reference in a new issue