This commit is contained in:
2025-08-07 16:14:12 -05:00
parent 58b618a229
commit 2c2abb6f2f
16 changed files with 885 additions and 59 deletions

View File

@@ -0,0 +1,176 @@
(define-module (gunit packages bolt-launcher)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix gexp)
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix git-download)
#:use-module (guix utils)
#:use-module (gnu packages)
#:use-module (gnu packages admin)
#:use-module (gnu packages algebra)
#:use-module (gnu packages assembly)
#:use-module (gnu packages astronomy)
#:use-module (gnu packages audio)
#:use-module (gnu packages avahi)
#:use-module (gnu packages autotools)
#:use-module (gnu packages base)
#:use-module (gnu packages backup)
#:use-module (gnu packages bash)
#:use-module (gnu packages boost)
#:use-module (gnu packages check)
#:use-module (gnu packages chromium)
#:use-module (gnu packages cmake)
#:use-module (gnu packages compression)
#:use-module (gnu packages curl)
#:use-module (gnu packages databases)
#:use-module (gnu packages documentation)
#:use-module (gnu packages engineering)
#:use-module (gnu packages fltk)
#:use-module (gnu packages freedesktop)
#:use-module (gnu packages gcc)
#:use-module (gnu packages gd)
#:use-module (gnu packages geo)
#:use-module (gnu packages gettext)
#:use-module (gnu packages ghostscript)
#:use-module (gnu packages gl)
#:use-module (gnu packages glib)
#:use-module (gnu packages gnome)
#:use-module (gnu packages golang)
#:use-module (gnu packages golang-xyz)
#:use-module (gnu packages gps)
#:use-module (gnu packages graphviz)
#:use-module (gnu packages gstreamer)
#:use-module (gnu packages gtk)
#:use-module (gnu packages image)
#:use-module (gnu packages image-processing)
#:use-module (gnu packages javascript)
#:use-module (gnu packages jemalloc)
#:use-module (gnu packages libedit)
#:use-module (gnu packages libusb)
#:use-module (gnu packages linux)
#:use-module (gnu packages logging)
#:use-module (gnu packages lua)
#:use-module (gnu packages man)
#:use-module (gnu packages maths)
#:use-module (gnu packages mp3)
#:use-module (gnu packages multiprecision)
#:use-module (gnu packages ncurses)
#:use-module (gnu packages networking)
#:use-module (gnu packages nss)
#:use-module (gnu packages openstack)
#:use-module (gnu packages perl)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages popt)
#:use-module (gnu packages pulseaudio)
#:use-module (gnu packages protobuf)
#:use-module (gnu packages pretty-print)
#:use-module (gnu packages python)
#:use-module (gnu packages python-build)
#:use-module (gnu packages python-check)
#:use-module (gnu packages python-science)
#:use-module (gnu packages python-web)
#:use-module (gnu packages python-xyz)
#:use-module (gnu packages qt)
#:use-module (gnu packages readline)
#:use-module (gnu packages ruby)
#:use-module (gnu packages sdl)
#:use-module (gnu packages serialization)
#:use-module (gnu packages sphinx)
#:use-module (gnu packages sqlite)
#:use-module (gnu packages swig)
#:use-module (gnu packages tcl)
#:use-module (gnu packages tex)
#:use-module (gnu packages texinfo)
#:use-module (gnu packages tls)
#:use-module (gnu packages toolkits)
#:use-module (gnu packages vulkan)
#:use-module (gnu packages video)
#:use-module (gnu packages web)
#:use-module (gnu packages wxwidgets)
#:use-module (gnu packages xiph)
#:use-module (gnu packages xdisorg)
#:use-module (gnu packages xml)
#:use-module (gnu packages xorg)
#:use-module (gnu packages version-control)
#:use-module (guix build-system cmake)
#:use-module (guix build-system glib-or-gtk)
#:use-module (guix build-system gnu)
#:use-module (guix build-system go)
#:use-module (guix build-system pyproject)
#:use-module (guix build-system python)
#:use-module (guix build-system qt)
#:use-module (guix build utils)
#:use-module (guix build gnu-build-system)
#:use-module (guix base16)
#:use-module (nongnu packages chromium)
#:use-module (nongnu packages editors)
)
(define-public bolt-launcher
(package
(name "bolt-launcher")
(version "0.11.0")
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/Adamcake/Bolt")
(commit "1720eb0758221d9cd79abddf613d7335ed05e032")
(recursive? #t)))
(sha256
(base32 "075dbjsy4nkbsnd1w57l85gpqk9sg2q75gp07xykl5g3j0qgwhcx"))))
(build-system cmake-build-system)
(inputs
(list
chromium-embedded-framework eudev libarchive glib glibc gtk xdg-utils hicolor-icon-theme nss fmt spng mesa vulkan-loader vscodium wayland))
(arguments
(list
#:tests? #f ; no check target
#:configure-flags
#~(list
;; Can probably clean this up
(string-append "-D " "CMAKE_INSTALL_PREFIX=" (assoc-ref %outputs "out"))
;;(string-append "-D " "BOLT_DEV_SHOW_DEVTOOLS=" "1")
(string-append "-DBOLT_BINDIR=" "./bin")
(string-append "-DBOLT_SHAREDIR=" "./share")
(string-append "-DBOLT_LIBDIR=" "./lib")
(string-append "-DCEF_DIR=" (assoc-ref %build-inputs "chromium-embedded-framework"))
(string-append "-DCEF_ROOT=" (assoc-ref %build-inputs "chromium-embedded-framework"))
(string-append "-DBOLT_CEF_RESOURCEDIR_OVERRIDE=" (assoc-ref %build-inputs "chromium-embedded-framework") "/share/cef")
(string-append "-DBOLT_LIBCEF_DIRECTORY=" (assoc-ref %build-inputs "chromium-embedded-framework") "/lib")
(string-append "-DBOLT_CEF_INCLUDEPATH=" (assoc-ref %build-inputs "chromium-embedded-framework"))
(string-append "-DBOLT_CEF_DLLWRAPPER=" (assoc-ref %build-inputs "chromium-embedded-framework") "/lib/libcef_dll_wrapper.a")
"-D BOLT_META_NAME=bolt-launcher"
"-D BOLT_SKIP_LIBRARIES=1")
#:phases
#~(modify-phases %standard-phases
(add-after 'install 'link-cef
(lambda _
(map (lambda (entry)
(let* ((source (car entry)) (file (cdr entry)))
(symlink (string-append (assoc-ref %build-inputs source) file)
(string-append (assoc-ref %outputs "out") "/opt/bolt-launcher/" (basename file)))))
(append
(map (lambda (file) (cons "chromium-embedded-framework" file))
'("/lib/libcef.so" "/share/cef/icudtl.dat" "/share/cef/v8_context_snapshot.bin"))
(map (lambda (file) (cons "vscodium" file))
'("/opt/vscodium/libGLESv2.so" "/opt/vscodium/libEGL.so"
"/opt/vscodium/libvulkan.so.1" "/opt/vscodium/libvk_swiftshader.so"))))
(wrap-program (string-append (assoc-ref %outputs "out") "/opt/bolt-launcher/bolt")
`("LD_LIBRARY_PATH" ":" prefix (
,(string-append #$(this-package-input "mesa") "/lib")
,(string-append #$(this-package-input "eudev") "/lib")
,(string-append #$(this-package-input "nss") "/lib/nss")))
`("XDG_DATA_DIRS" ":" prefix (
,(string-append #$(this-package-input "gtk") "/share")))
`("PATH" ":" prefix (
,(string-append #$(this-package-input "xdg-utils") "/bin"))))
(invoke "mv" (string-append (assoc-ref %outputs "out") "/opt/bolt-launcher/bolt") (string-append (assoc-ref %outputs "out") "/bin/bolt"))
#t)))))
(native-inputs (list cmake git wayland))
(synopsis "An alternative third-party open-source launcher for RuneScape or Old School RuneScape.")
(home-page "https://bolt.adamcake.com/")
(description "Free open-source third-party implementation of the Jagex Launcher.")
(license license:agpl3)))

View File

@@ -0,0 +1,75 @@
(define-module (gunit packages browsers)
#:use-module (guix gexp)
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (gnu packages)
#:use-module (guix build-system copy)
#:use-module (guix build copy-build-system)
#:use-module (gnu packages assembly)
#:use-module (gnu packages audio)
#:use-module (gnu packages autotools)
#:use-module (gnu packages base)
#:use-module (gnu packages bash)
#:use-module (gnu packages cdrom)
#:use-module (gnu packages commencement)
#:use-module (gnu packages compression)
#:use-module (gnu packages crates-io)
#:use-module (gnu packages cups)
#:use-module (gnu packages elf)
#:use-module (gnu packages fontutils)
#:use-module (gnu packages freedesktop)
#:use-module (gnu packages gcc)
#:use-module (gnu packages gl)
#:use-module (gnu packages glib)
#:use-module (gnu packages gnome)
#:use-module (gnu packages gnuzilla)
#:use-module (gnu packages gtk)
#:use-module (gnu packages hunspell)
#:use-module (gnu packages icu4c)
#:use-module (gnu packages image)
#:use-module (gnu packages jemalloc)
#:use-module (gnu packages kerberos)
#:use-module (gnu packages libcanberra)
#:use-module (gnu packages libevent)
#:use-module (gnu packages libffi)
#:use-module (gnu packages linux)
#:use-module (gnu packages llvm)
#:use-module (gnu packages m4)
#:use-module (gnu packages mp3)
#:use-module (gnu packages node)
#:use-module (gnu packages nss)
#:use-module (gnu packages pciutils)
#:use-module (gnu packages perl)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages pulseaudio)
#:use-module (gnu packages python)
#:use-module (gnu packages python-xyz)
#:use-module (gnu packages rust)
#:use-module (gnu packages rust-apps)
#:use-module (gnu packages speech)
#:use-module (gnu packages sqlite)
#:use-module (gnu packages sdl)
#:use-module (gnu packages tls)
#:use-module (gnu packages version-control)
#:use-module (gnu packages video)
#:use-module (gnu packages xdisorg)
#:use-module (gnu packages xorg)
#:use-module (gnu packages xiph)
#:use-module (gnu packages xml)
#:use-module (gnu packages vulkan)
#:use-module (guix download)
#:use-module (guix gexp)
#:use-module (guix packages)
#:use-module (guix build-system gnu)
#:use-module (nonguix build-system chromium-binary)
#:use-module (nonguix licenses)
#:use-module (ice-9 string-fun))

View File

@@ -0,0 +1,56 @@
(define-module (gunit packages code-server)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix gexp)
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (gnu packages)
#:use-module (gnu packages base)
#:use-module (gnu packages commencement)
#:use-module (gnu packages curl)
#:use-module (gnu packages version-control)
#:use-module (gnu packages fontutils)
#:use-module (gnu packages elf)
#:use-module (selected-guix-works packages fonts)
#:use-module (guix build-system copy)
#:use-module (guix build copy-build-system))
(define-public code-server
(package
(name "code-server")
(version "4.102.2")
(source (origin
(method url-fetch)
(uri (string-append "https://github.com/coder/code-server/releases/download/v" version "/code-server-" version "-linux-amd64.tar.gz"))
(sha256
(base32 "1s33d8821hcpkv10643dc58m177nrsy4238fyx2qbkh3smx98p25"))))
(build-system copy-build-system)
(inputs
(list
gcc-toolchain
glibc
))
(arguments
(list
#:tests? #f ; no check target
#:phases
#~(modify-phases %standard-phases
(add-after 'install 'patch-interpreter
(lambda* (#:key native-inputs inputs outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(interpreter (string-append (assoc-ref inputs "glibc")
"/lib/ld-linux-x86-64.so.2"))
(binary (string-append out "/lib/node")))
(invoke "patchelf" "--set-interpreter" interpreter binary))))
(add-after 'patch-interpreter 'wrap
(lambda _
(wrap-program (string-append (assoc-ref %outputs "out") "/lib/node")
`("LD_LIBRARY_PATH" ":" prefix (,(string-append #$(this-package-input "gcc-toolchain") "/lib"))))))
(delete 'validate-runpath))))
(native-inputs
(list git curl patchelf))
(synopsis "Code server used for accessing VS Code in the browser.")
(home-page "https://coder.com/")
(description "Free open source code server. Use a VS Code in any browser wherever you are.")
(license license:mit)))

View File

@@ -0,0 +1,69 @@
(define-module (gunit packages custom-code-server)
#:use-module (guix gexp)
#:use-module (guix packages)
#:use-module (gnu packages)
#:use-module (guix build-system gnu) ; For modify-phases
#:use-module (ice-9 ftw) ; For scandir
#:use-module (srfi srfi-1) ; For list processing
#:use-module (gunit packages code-server)
#:use-module (selected-guix-works packages fonts)
#:use-module (gnu packages fontutils))
(define-public code-server-with-fonts
(package/inherit code-server
(name "code-server-with-fonts")
;; Add the font package to the regular inputs
(inputs (append (package-inputs code-server)
(list font-nerd-fonts-jetbrains-mono)))
;; Add the woff tools to the native inputs (for building)
(native-inputs (append (package-native-inputs code-server)
(list woff-tools)))
(arguments
#~(modify-phases #$@(package-arguments code-server)
(add-after 'wrap 'enable-font-magic
(lambda* (#:key inputs outputs #:allow-other-keys)
(let* ((font-pkg-name "font-nerd-fonts-jetbrains-mono")
(font-package (assoc-ref inputs font-pkg-name))
(font-path (string-append font-package "/share/fonts/truetype/"))
(font-prefix "JetBrainsMonoNerdFontMono-")
(out (assoc-ref outputs "out"))
(pages-dir (string-append out "/lib/vscode/out/vs/code/browser/pages/"))
(workbench-html (string-append out "/lib/vscode/out/vs/code/browser/workbench/workbench.html")))
;; Helper to find all the font files in the font package
(define (collect-font-files)
(map (lambda (file)
(cons font-pkg-name file))
(filter (lambda (str) (string-prefix? font-prefix str))
(scandir-files font-path))))
(let ((font-files-to-process (collect-font-files)))
;; Create symlinks and convert fonts to woff format
(for-each
(lambda (font-entry)
(let* ((source-file-name (cdr font-entry))
(source-path (string-append font-path source-file-name))
(dest-path (string-append pages-dir source-file-name)))
(symlink source-path dest-path)
(invoke "sfnt2woff" dest-path)))
font-files-to-process)
;; Generate the CSS @font-face rule
(let ((font-face-urls
(string-join
(map (lambda (font-entry)
(let ((woff-file (string-append (basename (cdr font-entry) ".ttf") ".woff")))
(string-append "url('_static/src/browser/pages/" woff-file "') format('woff')")))
font-files-to-process)
", ")))
;; Inject the CSS into the workbench HTML file
(substitute* workbench-html
(("</head>")
(string-append "<style> @font-face {font-family: 'Personal'; font-style: normal; src: "
font-face-urls
";} </style></head>"))))))))))))

View File

@@ -0,0 +1,161 @@
;;; SPDX-License-Identifier: GPL-3.0-or-later
;;; Copyright © 2022, 2023 Giacomo Leidi <goodoldpaul@autistici.org>
;;; Copyright © 2022 Mathieu Othacehe <m.othacehe@gmail.com>
;;; Copyright © 2022 Jonathan Brielmaier <jonathan.brielmaier@web.de>
(define-module (gchannel packages edge)
#:use-module (gnu packages base)
#:use-module (gnu packages compression)
#:use-module (gnu packages curl)
#:use-module (gnu packages fonts)
#:use-module (gnu packages freedesktop)
#:use-module (gnu packages gl)
#:use-module (gnu packages gtk)
#:use-module (gnu packages image)
#:use-module (gnu packages linux)
#:use-module (gnu packages pciutils)
#:use-module (gnu packages photo)
#:use-module (gnu packages qt)
#:use-module (gnu packages video)
#:use-module (gnu packages wget)
#:use-module (gnu packages xiph)
#:use-module (gnu packages xorg)
#:use-module (guix download)
#:use-module (guix gexp)
#:use-module (guix packages)
#:use-module (guix build-system gnu)
#:use-module (nonguix build-system chromium-binary)
#:use-module (nonguix licenses)
#:use-module (ice-9 string-fun))
(define-public (make-microsoft-edge repo version hash)
(let* ((name (string-append "microsoft-edge-" repo))
(appname (if (string=? repo "stable")
"edge"
(string-replace-substring name "microsoft-" ""))))
(package
(name name)
(version version)
(source (origin
(method url-fetch)
(uri
(string-append
"https://packages.microsoft.com/repos/edge/pool/main/m/"
name "/" name "_" version "-1_amd64.deb"))
(sha256
(base32 hash))))
(build-system chromium-binary-build-system)
(arguments
(list
;; almost 300MB, faster to download and build from Google servers
#:substitutable? #f
#:wrapper-plan
#~(let ((path (string-append "opt/microsoft/" "ms" #$appname "/")))
(map (lambda (file)
(string-append path file))
'("msedge"
"msedge-sandbox"
"msedge_crashpad_handler"
"libEGL.so"
"libGLESv2.so"
;;"libaugloop_client.so"
"liblearning_tools.so"
;;"libmicrosoft-apis.so"
"libmip_core.so"
"libmip_protection_sdk.so"
"liboneauth.so"
"liboneds.so"
"libqt5_shim.so"
"libqt6_shim.so"
;; "libsmartscreenn.so"
"libtelclient.so"
"libvk_swiftshader.so"
"libvulkan.so.1"
"libwns_push_client.so"
"WidevineCdm/_platform_specific/linux_x64/libwidevinecdm.so")))
#:install-plan
#~'(("opt/" "/share")
("usr/share/" "/share"))
#:phases
#~(modify-phases %standard-phases
(add-before 'install 'patch-assets
;; Many thanks to
;; https://github.com/NixOS/nixpkgs/blob/master/pkgs/applications/networking/browsers/microsoft-edge/default.nix
(lambda _
(let* ((bin (string-append #$output "/bin"))
(share (string-append #$output "/share"))
(opt "./opt")
(usr/share "./usr/share")
(old-exe (string-append "/opt/microsoft/msedge/microsoft-" #$appname))
(exe (string-append bin "/microsoft-" #$appname)))
;; This allows us to override CHROME_WRAPPER later.
(substitute* (string-append opt "/microsoft/msedge/microsoft-" #$appname)
(("CHROME_WRAPPER") "WRAPPER"))
(substitute* (string-append usr/share "/applications/microsoft-" #$appname ".desktop")
(("^Exec=.*") (string-append "Exec=" exe "\n")))
(substitute* (string-append usr/share "/gnome-control-center/default-apps/microsoft-" #$appname ".xml")
((old-exe) exe))
(substitute* (string-append usr/share "/menu/microsoft-" #$appname ".menu")
(("/opt") share)
((old-exe) exe)))))
(add-after 'install 'install-icons
(lambda _
(define (format-icon-size name)
(car
(string-split
(string-drop-right (string-drop name 13) 4)
#\_)))
(let ((icons (string-append #$output "/share/icons/hicolor"))
(share (string-append #$output "/share/microsoft/msedge")))
(for-each (lambda (icon)
(let* ((icon-name (basename icon))
(icon-size (format-icon-size icon-name))
(target (string-append icons "/" icon-size "x" icon-size "/apps/microsoft-" #$appname ".png")))
(mkdir-p (dirname target))
(rename-file icon target)))
(find-files share "product_logo_.*\\.png")))))
(add-before 'install-wrapper 'install-exe
(lambda _
(let* ((bin (string-append #$output "/bin"))
(exe (string-append bin "/microsoft-edge"))
(share (string-append #$output "/share"))
(edge-target (string-append share "/microsoft/msedge/microsoft-edge")))
(mkdir-p bin)
(symlink edge-target exe)
(wrap-program exe
'("CHROME_WRAPPER" = (#$appname))))))
)))
(inputs
(list bzip2
curl
flac
font-liberation
gdk-pixbuf
gtk
harfbuzz
libexif
libglvnd
libpng
libva
libxscrnsaver
opus
pciutils
pipewire
qtbase-5
qtbase
snappy
util-linux
xdg-utils
wget))
(synopsis "Freeware web browser")
(supported-systems '("x86_64-linux"))
(description "Microsoft Edge is a cross-platform web browser developed by Microsoft using Chromium.")
(home-page "https://www.microsoft.com/edge/")
(license (nonfree "https://www.microsoft.com/intl/en/edge/terms/")))))
(define-public microsoft-edge-stable
(make-microsoft-edge "stable" "137.0.3296.93" "0x1hr3a6dmcv6al7ns945qmkjanlhb4nd005jmcywy9z8klj2bs8"))
(define-public microsoft-edge-beta
(make-microsoft-edge "beta" "138.0.3351.42" "0d4m38xbnpbb98y5xz9h5rzzcfshl01c2l3f794jg6al20yc2jj7"))

View File

@@ -0,0 +1,244 @@
(define-module (gchannel packages floorp)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix gexp)
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (gnu packages)
#:use-module (guix build-system copy)
#:use-module (guix build copy-build-system)
#:use-module (gnu packages)
#:use-module (gnu packages assembly)
#:use-module (gnu packages audio)
#:use-module (gnu packages autotools)
#:use-module (gnu packages base)
#:use-module (gnu packages bash)
#:use-module (gnu packages cdrom)
#:use-module (gnu packages commencement)
#:use-module (gnu packages compression)
#:use-module (gnu packages crates-io)
#:use-module (gnu packages cups)
#:use-module (gnu packages elf)
#:use-module (gnu packages fontutils)
#:use-module (gnu packages freedesktop)
#:use-module (gnu packages gcc)
#:use-module (gnu packages gl)
#:use-module (gnu packages glib)
#:use-module (gnu packages gnome)
#:use-module (gnu packages gnuzilla)
#:use-module (gnu packages gtk)
#:use-module (gnu packages hunspell)
#:use-module (gnu packages icu4c)
#:use-module (gnu packages image)
#:use-module (gnu packages jemalloc)
#:use-module (gnu packages kerberos)
#:use-module (gnu packages libcanberra)
#:use-module (gnu packages libevent)
#:use-module (gnu packages libffi)
#:use-module (gnu packages linux)
#:use-module (gnu packages llvm)
#:use-module (gnu packages m4)
#:use-module (gnu packages mp3)
#:use-module (gnu packages node)
#:use-module (gnu packages nss)
#:use-module (gnu packages pciutils)
#:use-module (gnu packages perl)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages pulseaudio)
#:use-module (gnu packages python)
#:use-module (gnu packages python-xyz)
#:use-module (gnu packages rust)
#:use-module (gnu packages rust-apps)
#:use-module (gnu packages speech)
#:use-module (gnu packages sqlite)
#:use-module (gnu packages sdl)
#:use-module (gnu packages tls)
#:use-module (gnu packages version-control)
#:use-module (gnu packages video)
#:use-module (gnu packages xdisorg)
#:use-module (gnu packages xorg)
#:use-module (gnu packages xiph)
#:use-module (gnu packages xml)
#:use-module (gnu packages vulkan)
)
(define-public floorp
(package
(name "floorp")
(version "12.0.15")
(source (origin
(method url-fetch)
(uri (string-append "https://github.com/Floorp-Projects/Floorp/releases/download/v" version "/floorp-linux-amd64.tar.xz"))
(sha256
(base32 "000a8yh0jabs1phsw56qknxh9ap1gm5asb7q5nnx4gwiyqnaig3s"))))
(build-system copy-build-system)
(inputs
(list
alsa-lib
gcc-toolchain
bash-minimal
eudev
libnotify
libpng-apng
libva
mesa
pipewire
pulseaudio
glibc
gtk+
libdrm
llvm-for-mesa
expat
zlib
zstd
spirv-tools
libxcb
libxshmfence
elfutils
libx11
wayland
libxext
libxxf86vm
ffmpeg
libvpx
libwebp
xz
dav1d
libaom
lame
opus
rav1e
speex
svt-av1
libtheora
libogg
twolame
libvorbis
libx264
x265
xvid
soxr
libvdpau
sdl2
openal
libcdio-paranoia
libcdio
libcaca
libass
vidstab
fontconfig
freetype
bzip2
libbluray
gnutls
pciutils
))
(arguments
(list
#:install-plan #~'(("." "lib/floorp"))
#:phases
#~(modify-phases %standard-phases
(delete 'validate-runpath) ;; Technically we could patch the shared libs, but it isn't needed.
(add-after 'install 'patch-interpreter
(lambda* (#:key native-inputs inputs outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(interpreter (string-append (assoc-ref inputs "glibc")
"/lib/ld-linux-x86-64.so.2"))
(binary (string-append out "/lib/floorp/floorp")))
(invoke "patchelf" "--set-interpreter" interpreter binary))))
(add-after 'patch-interpreter 'create
(lambda _
(mkdir-p (string-append #$output "/bin"))
;;(mkdir-p (string-append #$output "/share/icons/hicolor"))
)
)
(add-after 'create 'install-icons
(lambda _
(let ((icons (string-append #$output "/share/icons/hicolor"))
(share (string-append #$output "/lib/floorp/browser/chrome/icons")))
(for-each (lambda (icon)
(let* ((icon-name (basename icon))
(icon-size (string-drop-right (string-drop icon-name 7) 4))
(target (string-append icons "/" icon-size "x" icon-size "/apps/" "floorp" ".png")))
(mkdir-p (dirname target))
(rename-file icon target)))
(find-files share "default.*\\.png")))
)
)
(add-after 'install-icons 'install-share
(lambda _
(display "cat")
(let* ((exec-path (string-append #$output "/bin/floorp %u"))
(icon-path (string-append #$output "/share/icons/hicolor/128x128/apps/floorp.png")))
(define desktop-entry
`((Version . "1.0")
(Name . "Floorp")
(GenericName . "Web Browser")
(Comment . "Your web, the way you like it")
(Exec . ,exec-path)
(Icon . ,icon-path)
(Terminal . false)
(Type . "Application")
(StartupWMClass . "Floorp")
(MimeType . "text/html;text/xml;application/xhtml+xml;text/mml;x-scheme-handler/http;x-scheme-handler/https;")
(Startup-Notify . true)
(X-MultipleArgs . false)
(X-Desktop-File-Install-Version . "0.16")
(Categories . "Network;WebBrowser;")
(Encoding . "UTF-8")))
(define (write-desktop-entry file-name entry)
(call-with-output-file file-name
(lambda (port)
(format port "[Desktop Entry]~%")
(for-each
(lambda (field)
(format port "~a=~a~%" (car field) (cdr field)))
entry))))
(mkdir-p (string-append #$output "/share/applications"))
(write-desktop-entry (string-append #$output "/share/applications/" "floorp.desktop") desktop-entry))
)
)
(add-after 'create 'wrap
(lambda* (#:key inputs outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(lib (string-append out "/lib/floorp"))
(libs (map
(lambda (lib-name)
(string-append (assoc-ref inputs
lib-name)
"/lib"))
'(
"alsa-lib" "libpng-apng" "libva" "mesa" "pipewire" "pulseaudio" "glibc"
"gcc-toolchain" "libdrm" "llvm-for-mesa" "expat" "zlib" "zstd" "spirv-tools"
"libxcb" "libxshmfence" "elfutils" "libx11" "wayland" "libxext" "libxxf86vm"
"ffmpeg" "libvpx" "libwebp" "xz" "dav1d" "libaom" "lame" "opus" "rav1e"
"speex" "svt-av1" "libtheora" "libogg" "twolame" "libvorbis" "libx264"
"x265" "xvid" "soxr" "libvdpau" "sdl2" "openal" "libcdio-paranoia"
"libcdio" "libcaca" "libass" "vidstab" "fontconfig-minimal" "freetype"
"bzip2" "libbluray" "gnutls" "gtk+" "pciutils"
)))
(gtk-share (string-append (assoc-ref inputs "gtk+") "/share")))
(display libs)
(wrap-program (car (find-files lib "^glxtest$"))
`("LD_LIBRARY_PATH" prefix ,libs))
(wrap-program (car (find-files lib "^floorp$"))
`("LD_LIBRARY_PATH" prefix (,@libs))
`("XDG_DATA_DIRS" prefix (,gtk-share))
`("MOZ_LEGACY_PROFILES" = ("1"))
`("MOZ_ALLOW_DOWNGRADE" = ("1")))
)
(invoke "mv" (string-append #$output "/lib/floorp/floorp") (string-append #$output "/bin/floorp")))))))
(native-inputs
(list git patchelf))
(synopsis "A highly customizable Firefox-based (Gecko) browser")
(home-page "https://floorp.app/")
(description "Floorp is the first Firefox-based browser to enable UI customization, designed so that anyone can easily
adjust their browsing experience to their preferences and access the web with ease.")
(license
(name "floorp-shared-source")
(uri "https://github.com/Floorp-Projects/Floorp-private-components/blob/main/LICENSE")
(comment "Floorp Shared Source License: non-commercial use only, modification allowed, no sublicensing, attribution required."))))

View File

@@ -0,0 +1,82 @@
(define-module (guint packages linux)
#:use-module (guix packages)
#:use-module (guix git-download)
#:use-module (guix gexp)
#:use-module (guix build-system gnu)
#:use-module (guix utils)
#:use-module (gnu packages linux)
#:use-module (srfi srfi-1)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (nongnu packages linux))
(define-public linux-t2-patches
(package
(name "linux-t2-patches")
(version "6.12")
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/t2linux/linux-t2-patches.git")
(commit "54606b8797c539da9782dcbb16456fdf92d74f12")))
(file-name (git-file-name name version))
(sha256
(base32 "1ig7373xl5vqfpblh0sh4z8vgks4hq761j58lyns5cw2n648xl61"))))
(build-system gnu-build-system)
(arguments
`(#:tests? #f ; Disable the 'check' phase
#:phases
(modify-phases %standard-phases
(replace 'configure (lambda _ #t))
(replace 'build (lambda _ #t))
(replace 'install
(lambda* (#:key outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out")))
(mkdir-p out)
(copy-recursively "." out))
#t)))))
(synopsis "Patch set for running Linux on T2-based Macs")
(description "This package provides a set of patches from the t2linux project
to enable support for the Apple T2 security chip and related hardware.")
(home-page "https://github.com/t2linux/linux-t2-patches")
(license license:gpl2+)))
(define (mbp-t2-extra-options)
'(("CONFIG_SPI_APPLE" . y)
("CONFIG_APPLE_BCE" . y)
("CONFIG_APPLE_DCP" . y)
("CONFIG_PINCTRL_APPLE_GPIO" . y)))
(define-public linux-kernel-mbp-t2
(package
(inherit linux-6.12)
(name "linux-kernel-mbp-t2")
(synopsis "Linux kernel for Macs with the T2 chip")
(description "This package provides a Linux kernel with patches applied to support hardware found in Apple T2-based MacBooks.")
(license license:gpl2+)
(native-inputs
(append (package-native-inputs linux-6.12)
`(("t2-patches" ,linux-t2-patches))))
(arguments
(substitute-keyword-arguments (package-arguments linux-6.12)
((#:native-inputs native-inputs)
#~(cons* (list "t2-patches" ,linux-t2-patches)
#$native-inputs))
((#:phases phases)
#~(modify-phases #$phases
(add-after 'unpack 'apply-t2-patches
(lambda* (#:key inputs #:allow-other-keys)
(use-modules (guix build utils))
(let ((patch-dir (assoc-ref inputs "t2-patches")))
(let ((patch-files (find-files patch-dir "\\.patch$")))
(format #t "Applying ~a T2 patches...~%" (length patch-files))
(for-each
(lambda (patch)
(invoke "patch" "-p1" "-i" patch))
(sort patch-files string<))
#t))))))
((#:kernel-config config)
#~(kernel-config-union #$config
(kernel-config #:configs (mbp-t2-extra-options))))))))

View File

@@ -0,0 +1,61 @@
(define-module (guint packages obs-plugins)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix gexp)
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix git-download)
#:use-module (guix utils)
#:use-module (gnu packages)
#:use-module (gnu packages video)
#:use-module (gnu packages libusb)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages version-control)
#:use-module (gnu packages image)
#:use-module (guix build-system gnu))
(define-public obs-droidcam
(package
(name "obs-droidcam")
(version "2.3.4")
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/dev47apps/droidcam-obs-plugin")
(commit version)
(recursive? #t)))
(sha256
(base32 "0q4nbfd7xly44psmv2hb3bimcx5mp20vw8z10dqsvrsasy2hnqr9"))))
(build-system gnu-build-system)
(inputs
(list
obs libusbmuxd libjpeg-turbo libimobiledevice ffmpeg))
(arguments
(list
#:tests? #f ; no check target
#:make-flags
#~(list
(string-append "LIBUSBMUXD=" "libusbmuxd-2.0") ;;(assoc-ref %outputs "out")
(string-append "LIBIMOBILEDEV=" "libimobiledevice-1.0")
(string-append "LIBOBS_INCLUDES=" #$(this-package-input "obs") "/include/obs")
(string-append "FFMPEG_INCLUDES=" #$(this-package-input "ffmpeg") "/include")
(string-append "ALLOWSTATIC=" "no"))
#:phases
#~(modify-phases %standard-phases
(delete 'configure)
(add-before 'build 'configure-directory
(lambda _
(mkdir-p "build")))
(replace 'install
(lambda _
(mkdir-p (string-append (assoc-ref %outputs "out") "/lib/obs-plugins"))
(mkdir-p (string-append (assoc-ref %outputs "out") "/share/obs/obs-plugins"))
(invoke "cp" "./build/droidcam-obs.so" (string-append (assoc-ref %outputs "out") "/lib/obs-plugins/droidcam-obs.so"))
(invoke "cp" "-r" "./data/locale" (string-append (assoc-ref %outputs "out") "/share/obs/obs-plugins/droidcam-obs")) #t)))))
(native-inputs
(list git pkg-config))
(synopsis "Droidcam OBS plugin")
(home-page "https://dev47apps.com/obs/")
(description "A plugin for OBS to enable droidcam which allows you to use your phone as a webcam (and even a mic). Supports iOS and Android.")
(license license:gpl2)))

View File

@@ -0,0 +1,31 @@
;; woff-tools
;; font-nerd-fonts-jetbrains-mono
(add-after 'wrap 'enable-font-magic
(lambda _
(let ((font-package "font-nerd-fonts-jetbrains-mono")
(font-path "/share/fonts/truetype/")
(font-prefix "JetBrainsMonoNerdFontMono-"))
(use-modules (ice-9 ftw)
(srfi srfi-1)) ; For list processing
(define (collect-files-with-prefix directory prefix)
(filter (lambda (str) (string-prefix? prefix str)) (cddr (scandir directory))))
(map (lambda (entry)
(let* ((source (car entry)) (file (cdr entry)))
(symlink (string-append (assoc-ref %build-inputs source) font-path file)
(string-append (assoc-ref %outputs "out") "/src/browser/pages/" (basename file)))
(system* "sfnt2woff" (string-append (assoc-ref %outputs "out") "/src/browser/pages/" (basename file)))
))
(append
(map (lambda (file) (cons font-package file))
(collect-files-with-prefix (string-append (assoc-ref %build-inputs font-package) font-path) font-prefix)
)))
(let ((font-files (string-join
(map
(lambda (x)
(string-append "url('_static/src/browser/pages/" (substring x 0 (- (string-length x) 4)) ".woff') format('woff')" ))
(collect-files-with-prefix (string-append (assoc-ref %build-inputs font-package) font-path) font-prefix))
","
)))
(system* "sed" "-i" (string-append "s|</head>|<style> @font-face {font-family: 'Personal';font-style: normal;src:" font-files ";}\\</style></head>|g") (string-append #$output "/lib/vscode/out/vs/code/browser/workbench/workbench.html"))
))))

View File

@@ -0,0 +1,245 @@
(define-module (gunit packages runescape-launcher)
#:use-module ((guix licenses) #:prefix license:)
#:use-module ((nonguix licenses) #:prefix license:)
#:use-module (guix git-download)
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix gexp)
#:use-module (guix build-system gnu)
#:use-module (guix build-system python)
#:use-module (guix build-system copy)
#:use-module (gnu packages audio)
#:use-module (gnu packages base)
#:use-module (gnu packages bash)
#:use-module (gnu packages certs)
#:use-module (gnu packages compression)
#:use-module (gnu packages curl)
#:use-module (gnu packages debian)
#:use-module (gnu packages elf)
#:use-module (gnu packages file)
#:use-module (gnu packages fonts)
#:use-module (gnu packages fontutils)
#:use-module (gnu packages freedesktop)
#:use-module (gnu packages gawk)
#:use-module (gnu packages gcc)
#:use-module (gnu packages gl)
#:use-module (gnu packages glib)
#:use-module (gnu packages gnome)
#:use-module (gnu packages graphics)
#:use-module (gnu packages gtk)
#:use-module (gnu packages libbsd)
#:use-module (gnu packages libusb)
#:use-module (gnu packages linux)
#:use-module (gnu packages llvm)
#:use-module (gnu packages logging)
#:use-module (gnu packages lsof)
#:use-module (gnu packages networking)
#:use-module (gnu packages nss)
#:use-module (nongnu packages nvidia)
#:use-module (gnu packages pciutils)
#:use-module (gnu packages pulseaudio)
#:use-module (gnu packages pretty-print)
#:use-module (gnu packages python)
#:use-module (gnu packages python-web)
#:use-module (gnu packages python-xyz)
#:use-module (gnu packages toolkits)
#:use-module (gnu packages tls)
#:use-module (gnu packages sdl)
#:use-module (gnu packages video)
#:use-module (gnu packages xdisorg)
#:use-module (gnu packages xorg)
#:use-module (gnu packages xml)
#:use-module (nonguix build-system chromium-binary)
#:use-module (nonguix multiarch-container)
#:use-module (nonguix utils))
(define runescape-launcher
(package
(name "runescape-launcher")
(version "2.2.11")
(source
(origin
(method url-fetch)
(uri (string-append "https://content.runescape.com/downloads/ubuntu/pool/non-free/r/" name "/" name "_" version "_amd64.deb"))
(sha256
(base32 "00krw818s15bc38v9qv4ggk32704czjlw9c7vggg3vxxdhxvvscq"))))
(build-system copy-build-system)
(inputs
(list
cairo gcc glib glibc gtk libcap libglvnd libsm libx11 libxxf86vm openssl pango sdl2 zlib))
(arguments
(list
#:tests? #f ; no check target
#:phases
#~(modify-phases %standard-phases
(replace 'unpack
(lambda* (#:key source #:allow-other-keys)
(invoke "dpkg-deb" "-x" source ".")
#t))
(delete 'configure)
(delete `build)
(add-before 'install 'patch-elf-interpreter
(lambda _
(display (invoke "ls" "-a" "./usr/share/games/runescape-launcher"))
;;(invoke "setcap" "cap_net_raw+ep" "./usr/share/games/runescape-launcher/runescape")
(substitute* "./usr/bin/runescape-launcher"
(("unset XMODIFIERS") (string-append "$envVarsWithXmodifiers"))
(("/usr/share/games/runescape-launcher/runescape")
(string-append (assoc-ref %outputs "out") "/usr/share/games/runescape-launcher/runescape")))
(display "catssss")
(let ((glibc (assoc-ref %build-inputs "glibc"))
(elf-file "./usr/share/games/runescape-launcher/runescape"))
(invoke "patchelf" "--set-interpreter" (string-append glibc "/lib/ld-linux-x86-64.so.2") elf-file))
#t))
;; (delete 'install)
)
)
)
(native-inputs
(list unzip dpkg patchelf iputils))
(synopsis "A client for RuneScape")
(home-page "https://www.runescape.com/")
(description "RuneScape Game Client (NXT)")
(license
(name "runescape-launcher-proprietary")
(uri "https://www.jagex.com/en-GB/terms")
(comment "Launcher that downloads the proprietary RuneScape client from Jagex. Not redistributable."))))
(define steam-client-libs
`(("at-spi2-core" ,at-spi2-core) ; Required (often) for SteamVR interface.
("bash" ,bash) ; Required for steam startup.
("cairo", cairo)
("coreutils" ,coreutils)
("diffutils" ,diffutils)
("dbus-glib" ,dbus-glib) ; Required for steam browser.
("elfutils" ,elfutils) ; Required for capturing library dependencies in pv.
("eudev" ,eudev) ; Required for steamwebhelper/heavy runtime.
("expat" ,expat) ; Needed for RS3
("fontconfig" ,fontconfig) ; Required for steam client.
("file" ,file) ; Used for steam installation.
("find" ,findutils) ; Required at least for some logging.
("fmt" ,fmt) ; Needed for RS3
("font-google-noto" ,font-google-noto) ; Not required but to match following fonts.
;; These next three fonts are to cover emoji and Chinese/Japanese/Korean
;; and related scripts.
("font-google-noto-emoji" ,font-google-noto-emoji)
("font-google-noto-sans-cjk" ,font-google-noto-sans-cjk)
("font-google-noto-serif-cjk" ,font-google-noto-serif-cjk)
("freetype" ,freetype) ; Required for steam login.
("gawk" ,gawk)
("gdk-pixbuf" ,gdk-pixbuf) ; Required for steam tray icon.
;; Required for steam startup; use newer version for better compatibility
;; with some games like Dwarf Fortress.
("gcc:lib" ,gcc-14 "lib")
("glib" ,glib)
("glibc" ,glibc)
("grep" ,grep)
("gtk+" ,gtk+)
("gtk" ,gtk+-2)
("libbsd" ,libbsd)
("libcap" ,libcap) ; Required for SteamVR, but needs pkexec too.
("libdrm" ,libdrm) ; Needed for RS3
("libglvnd" ,libglvnd)
("libusb" ,libusb) ; Required for SteamVR.
("libsm" ,libsm)
("libxcb" ,libxcb) ; Needed for RS3
("libxcomposite" ,libxcomposite) ; Needed for RS3
("libxext" ,libxext) ; Needed for RS3
("libxkbcommon" ,libxkbcommon) ; Needed for RS3
("libva" ,libva) ; Required for hardware video encoding/decoding.
("libvdpau" ,libvdpau) ; Required for hardware video encoding/decoding.
("libvdpau-va-gl" ,libvdpau-va-gl) ; Additional VDPAU support.
("libx11" ,libx11)
("libxdamage" ,libxdamage) ; Needed for RS3
("libxfixes" ,libxfixes) ; Needed for RS3
("libxxf86vm" ,libxxf86vm)
("llvm" ,llvm-for-mesa) ; Required for mesa.
("lsof" ,lsof) ; Required for some friend's list actions.
("mesa" ,mesa) ; Required for steam startup.
("nspr" ,nspr) ; Required for RS3
("nss-certs" ,nss-certs) ; Required for steam login.
("nss" ,nss) ; Needed for RS3
("pango" ,pango)
("pciutils" ,pciutils) ; Tries to run lspci at steam startup.
("procps" ,procps)
("openssl" ,openssl-1.1)
("sed" ,sed)
("sdl2" ,sdl2)
("tar" ,tar)
("usbutils" ,usbutils) ; Required for SteamVR.
("util-linux" ,util-linux) ; Required for steam login.
("wayland" ,wayland) ; Required for mesa vulkan (e.g. libvulkan_radeon).
("xdg-user-dirs" ,xdg-user-dirs) ; Suppress warning of missing xdg-user-dir.
("flatpak-xdg-utils" ,flatpak-xdg-utils)
("xz" ,xz)
("zenity" ,zenity)
("zlib" ,zlib)
)) ; Required for progress dialogs.
(define steam-gameruntime-libs
`(("alsa-lib" ,alsa-lib) ; Required for audio in most games.
("alsa-plugins:pulseaudio" ,alsa-plugins "pulseaudio") ; Required for audio in most games.
("font-dejavu" ,font-dejavu)
("font-liberation" ,font-liberation)
("imgui" ,imgui-1.86) ; Required for MangoHud.
("mangohud" ,mangohud)
("openal" ,openal) ; Prevents corrupt audio in Crypt of the Necrodancer.
("pulseaudio" ,pulseaudio) ; Prevents corrupt audio in Sven Coop.
("python" ,python) ; Required for KillingFloor2 and Wreckfest.
("spdlog" ,spdlog))) ; Required for MangoHud.
(define steam-container-libs
(append steam-client-libs
steam-gameruntime-libs
fhs-min-libs))
(define steam-nvidia-container-libs
(modify-inputs steam-container-libs
(replace "mesa" nvda)))
(define steam-ld.so.conf
(packages->ld.so.conf
(list (fhs-union steam-container-libs
#:name "fhs-union-64")
(fhs-union steam-container-libs
#:name "fhs-union-32"
#:system "i686-linux"))))
(define steam-ld.so.cache
(ld.so.conf->ld.so.cache steam-ld.so.conf))
(define steam-nvidia-ld.so.conf
(packages->ld.so.conf
(list (fhs-union steam-nvidia-container-libs
#:name "fhs-union-64")
(fhs-union steam-nvidia-container-libs
#:name "fhs-union-32"
#:system "i686-linux"))))
(define steam-nvidia-ld.so.cache
(ld.so.conf->ld.so.cache steam-nvidia-ld.so.conf))
(define-public runescape-container
(nonguix-container
(name "runescape")
(wrap-package runescape-launcher)
(run "/usr/bin/runescape-launcher")
(ld.so.conf steam-ld.so.conf)
(ld.so.cache steam-ld.so.cache)
(union64
(fhs-union steam-container-libs
#:name "fhs-union-64"))
(union32
(fhs-union steam-container-libs
#:name "fhs-union-32"
#:system "i686-linux"))
(link-files '("usr"))
(description "Runescape.")))
(define-public runescape (nonguix-container->package runescape-container))

View File

@@ -0,0 +1,149 @@
;;; SPDX-License-Identifier: GPL-3.0-or-later
;;; Copyright © 2022, 2023 Giacomo Leidi <goodoldpaul@autistici.org>
;;; Copyright © 2022 Mathieu Othacehe <m.othacehe@gmail.com>
;;; Copyright © 2022 Jonathan Brielmaier <jonathan.brielmaier@web.de>
(define-module (gchannel packages vivaldi)
#:use-module (gnu packages base)
#:use-module (gnu packages compression)
#:use-module (gnu packages curl)
#:use-module (gnu packages fonts)
#:use-module (gnu packages freedesktop)
#:use-module (gnu packages gl)
#:use-module (gnu packages gtk)
#:use-module (gnu packages image)
#:use-module (gnu packages linux)
#:use-module (gnu packages pciutils)
#:use-module (gnu packages photo)
#:use-module (gnu packages qt)
#:use-module (gnu packages video)
#:use-module (gnu packages wget)
#:use-module (gnu packages xiph)
#:use-module (gnu packages xorg)
#:use-module (guix download)
#:use-module (guix gexp)
#:use-module (guix packages)
#:use-module (guix build-system gnu)
#:use-module (nonguix build-system chromium-binary)
#:use-module (nonguix licenses)
#:use-module (ice-9 string-fun))
(define-public (make-vivaldi repo version hash)
(let* ((name (string-append "vivaldi" "-" repo))
(appname "vivaldi"))
(package
(name name)
(version version)
(source (origin
(method url-fetch)
(uri
(string-append
"https://downloads.vivaldi.com/stable/"
name "_" version "-1_amd64.deb"))
(sha256
(base32 hash))))
(build-system chromium-binary-build-system)
(arguments
(list
#:substitutable? #f
#:wrapper-plan
#~(let ((path (string-append "opt/vivaldi/")))
(map (lambda (file)
(string-append path file))
'("vivaldi-bin"
"vivaldi-sandbox"
"chrome_crashpad_handler"
"libEGL.so"
"libGLESv2.so"
"libqt5_shim.so"
"libqt6_shim.so"
"libvk_swiftshader.so"
"libvulkan.so.1"
;;"WidevineCdm/_platform_specific/linux_x64/libwidevinecdm.so"
)))
#:install-plan
#~'(("opt/" "/share")
("usr/share/" "/share"))
#:phases
#~(modify-phases %standard-phases
(add-before 'install 'patch-assets
;; Many thanks to
;; https://github.com/NixOS/nixpkgs/blob/master/pkgs/applications/networking/browsers/vivaldi/default.nix
(lambda _
(let* ((bin (string-append #$output "/bin"))
(share (string-append #$output "/share"))
(opt "./opt")
(usr/share "./usr/share")
(old-exe (string-append "/opt/vivaldi/" #$appname))
(exe (string-append bin "/vivaldi")))
;; This allows us to override CHROME_WRAPPER later.
(substitute* (string-append opt "/vivaldi/vivaldi")
(("CHROME_WRAPPER") "WRAPPER"))
(substitute* (string-append usr/share "/applications/vivaldi-stable.desktop")
(("^Exec=.*") (string-append "Exec=" exe "\n")))
(rename-file (string-append usr/share "/applications/vivaldi-stable.desktop") (string-append usr/share "/applications/vivaldi.desktop"))
;;(substitute* (string-append usr/share "/gnome-control-center/default-apps/vivaldi.xml")
;; ((old-exe) exe))
(substitute* (string-append usr/share "/menu/vivaldi" ".menu")
(("/opt") share)
((old-exe) exe)))))
(add-after 'install 'install-icons
(lambda _
(define (format-icon-size name)
(car
(string-split
(string-drop-right (string-drop name 13) 4)
#\_)))
(let ((icons (string-append #$output "/share/icons/hicolor"))
(share (string-append #$output "/share/vivaldi")))
(for-each (lambda (icon)
(let* ((icon-name (basename icon))
(icon-size (format-icon-size icon-name))
(target (string-append icons "/" icon-size "x" icon-size "/apps/" #$appname ".png")))
(mkdir-p (dirname target))
(rename-file icon target)))
(find-files share "product_logo_.*\\.png")))))
(add-before 'install-wrapper 'install-exe
(lambda _
(let* ((bin (string-append #$output "/bin"))
(exe (string-append bin "/" #$appname))
(share (string-append #$output "/share"))
(chromium-target (string-append #$output "/share/vivaldi/" #$appname )))
(mkdir-p bin)
(symlink chromium-target exe)
(wrap-program exe
'("CHROME_WRAPPER" = (#$appname))
)))))))
(inputs
(list bzip2
curl
flac
font-liberation
gdk-pixbuf
gtk
harfbuzz
libexif
libglvnd
libpng
libva
libxscrnsaver
opus
pciutils
pipewire
qtbase-5
qtbase
snappy
util-linux
xdg-utils
wget))
(synopsis "Freeware web browser")
(supported-systems '("x86_64-linux"))
(description "Vivaldi is a highly customizable browser developed by Vivaldi.")
(home-page "https://vivaldi.com/")
(license (nonfree "https://vivaldi.com/privacy/browser/")))))
(define-public vivaldi-stable
(make-vivaldi "stable" "7.1.3570.54" "1jslsckrv8xwnc4xlrxjiqqpkb74fz51r4yp92p5lr5zj0iayvkh"))
vivaldi-stable

View File

@@ -0,0 +1,41 @@
;; ~/.config/guix/services/code-server.scm
(define-module (services code-server)
#:use-module (guix gexp)
#:use-module (guix packages)
#:use-module (guix utils)
#:use-module (gnu services)
#:use-module (gnu services home)
#:use-module (shepherd support)
#:export (home-code-server-service-type))
(define (code-server-service config)
;; This procedure defines a Shepherd service to run and manage code-server,
;; which provides a web-based instance of VS Code. The service ensures
;; code-server starts automatically and restarts if it crashes.
(list
(shepherd-service
(documentation "Run the code-server backend.")
(provision '(code-server)) ;; Ensure the code-server package is available.
(modules '((shepherd support)))
;; Start the service by directly executing the binary from its package path.
;; All output is redirected to a dedicated log file in the user's home directory.
(start #~(make-forkexec-constructor
(list #$(file-append (specification->package "code-server") "/bin/code-server"))
#:log-file (string-append %user-log-dir "/code-server.log")))
;; To stop the service, simply send a kill signal to the process.
(stop #~(make-kill-destructor))
;; Automatically respawn the service if it terminates unexpectedly.
(respawn? #t))))
(define code-server-service-type
(service-type
(name 'code-server)
;; This links our custom 'code-server-service' implementation to the main user Shepherd service.
(extensions (list (service-extension home-shepherd-service-type code-server-service)))
;; The #t default value means the service will be active unless explicitly disabled.
(default-value #t)
(description "A user service to run a VS Code instance in the browser.")))