projects/guix·blob javascript-team · refs

315 lines · 11.9 KiB

1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2019 L p R n d n <[email protected]>
3;;; Copyright © 2021 Guillaume Le Vaillant <[email protected]>
4;;; Copyright © 2023, 2024 Ahmad Draidi <[email protected]>
5;;; Copyright © 2025 Remco van 't Veer <[email protected]>
6;;;
7;;; This file is part of GNU Guix.
8;;;
9;;; GNU Guix is free software; you can redistribute it and/or modify it
10;;; under the terms of the GNU General Public License as published by
11;;; the Free Software Foundation; either version 3 of the License, or (at
12;;; your option) any later version.
13;;;
14;;; GNU Guix is distributed in the hope that it will be useful, but
15;;; WITHOUT ANY WARRANTY; without even the implied warranty of
16;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17;;; GNU General Public License for more details.
18;;;
19;;; You should have received a copy of the GNU General Public License
20;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
21
22(define-module (gnu packages arcan)
23 #:use-module (guix build-system cmake)
24 #:use-module (guix build-system copy)
25 #:use-module (guix build-system meson)
26 #:use-module (guix build-system gnu)
27 #:use-module (guix gexp)
28 #:use-module (guix git-download)
29 #:use-module ((guix licenses) #:prefix license:)
30 #:use-module (guix packages)
31 #:use-module (guix utils)
32 #:use-module (gnu packages)
33 #:use-module (gnu packages audio)
34 #:use-module (gnu packages autotools)
35 #:use-module (gnu packages base)
36 #:use-module (gnu packages bash)
37 #:use-module (gnu packages compression)
38 #:use-module (gnu packages databases)
39 #:use-module (gnu packages fonts)
40 #:use-module (gnu packages fontutils)
41 #:use-module (gnu packages freedesktop)
42 #:use-module (gnu packages gl)
43 #:use-module (gnu packages gtk)
44 #:use-module (gnu packages image)
45 #:use-module (gnu packages libusb)
46 #:use-module (gnu packages linux)
47 #:use-module (gnu packages lua)
48 #:use-module (gnu packages ocr)
49 #:use-module (gnu packages onc-rpc)
50 #:use-module (gnu packages pcre)
51 #:use-module (gnu packages pdf)
52 #:use-module (gnu packages pkg-config)
53 #:use-module (gnu packages ruby)
54 #:use-module (gnu packages sdl)
55 #:use-module (gnu packages speech)
56 #:use-module (gnu packages sqlite)
57 #:use-module (gnu packages tls)
58 #:use-module (gnu packages video)
59 #:use-module (gnu packages vnc)
60 #:use-module (gnu packages web)
61 #:use-module (gnu packages xdisorg)
62 #:use-module (gnu packages xorg)
63 #:use-module (srfi srfi-1))
64
65(define-public arcan
66 (package
67 (name "arcan")
68 (version "0.7.1")
69 (source (origin
70 (method git-fetch)
71 (file-name (git-file-name name version))
72 (uri (git-reference
73 (url "https://codeberg.org/letoram/arcan")
74 (commit version)))
75 (sha256
76 (base32
77 "1sn8rljghrw57q99n9hl03pr2ndgkzg4g3p443iaslg42bmww05c"))
78 (modules '((guix build utils)))
79 (snippet
80 ;; Remove some bundled packages.
81 #~(begin
82 (delete-file-recursively "external/git")
83 (delete-file-recursively "external/lua")
84 (delete-file-recursively "external/sqlite")))))
85 (build-system cmake-build-system)
86 (arguments
87 (list
88 #:configure-flags
89 #~'("-DBUILD_PRESET=everything" "-DDISTR_TAG='Guix'")
90 #:phases
91 #~(modify-phases %standard-phases
92 (add-after 'unpack 'patch-paths
93 (lambda _
94 (substitute* "src/platform/posix/paths.c"
95 (("/usr/local") #$output))))
96 ;; Normally, it tries to fetch patched openal with git
97 ;; but copying files manually in the right place seems
98 ;; to work too.
99 (add-after 'unpack 'prepare-static-openal
100 (lambda* (#:key inputs #:allow-other-keys)
101 (copy-recursively #$(this-package-input "arcan-openal-checkout")
102 "external/git/openal")))
103 (add-after 'prepare-static-openal 'generate-man
104 (lambda _
105 (with-directory-excursion "doc"
106 (invoke "ruby" "docgen.rb" "mangen"))))
107 (add-before 'configure 'chdir
108 (lambda _
109 (chdir "src"))))
110 #:tests? #f))
111 (inputs
112 (list bash-minimal
113 espeak
114 ffmpeg-6
115 freetype
116 gumbo-parser
117 harfbuzz
118 jbig2dec
119 leptonica
120 libdrm
121 libjpeg-turbo
122 libseccomp
123 libusb
124 libvnc
125 libxkbcommon
126 luajit
127 mupdf
128 openal
129 openjpeg
130 sdl2
131 sqlite
132 tesseract-ocr
133 vlc
134 wayland
135 wayland-protocols
136 xcb-util
137 xcb-util-wm
138 zlib
139 ;; To build arcan_lwa, we need a patched version of openal.
140 ;; https://github.com/letoram/arcan/wiki/packaging
141 (origin
142 (method git-fetch)
143 (file-name "arcan-openal-checkout")
144 (uri (git-reference (url
145 "https://github.com/letoram/openal")
146 (commit "0.6.2")))
147 (sha256
148 (base32
149 "0vg3fda47q2dk1n43ijcc64q39z044pa8h6scmfyi22g6r6bfw2z")))))
150 (native-inputs (list pkg-config ruby)) ;For documentation and testing
151 (home-page "https://arcan-fe.com")
152 (synopsis "Display server, multimedia framework and game engine")
153 (description
154 "Arcan is a development framework for creating virtually
155anything from user interfaces for specialized embedded applications
156all the way to full-blown desktop environments. At its heart lies a multimedia
157engine with a Lua scripting interface.")
158 ;; https://github.com/letoram/arcan/blob/master/COPYING
159 (license (list license:asl2.0
160 license:bsd-3
161 license:cc-by3.0
162 license:expat
163 license:gpl2+
164 license:lgpl2.0
165 license:lgpl2.0+
166 license:public-domain
167 license:silofl1.1
168 license:zlib))))
169
170(define-public arcan-sdl
171 (package
172 (inherit arcan)
173 (name "arcan-sdl")
174 (inputs
175 (modify-inputs inputs
176 (delete "libdrm")
177 (prepend glu libglvnd mesa sdl2)))
178 (arguments
179 (ensure-keyword-arguments
180 (package-arguments arcan)
181 '(#:configure-flags
182 '("-DHYBRID_SDL=on" "-DBUILTIN_LUA=off"
183 "-DSTATIC_OPENAL=off" "-DDISABLE_JIT=off"
184 "-DENABLE_LWA=on" "-DSTATIC_SQLITE3=off"
185 "-DSTATIC_FREETYPE=off" "-DSHMIF_TUI_ACCEL=on"))))
186 (synopsis "Combined display server, multimedia framework and game engine (SDL)")))
187
188(define-public durden
189 (package
190 (name "durden")
191 (version "0.6.3")
192 (source
193 (origin
194 (method git-fetch)
195 (file-name (git-file-name name version))
196 (uri (git-reference
197 (url "https://codeberg.org/letoram/durden")
198 (commit version)))
199 (sha256
200 (base32 "1w12mdjdbhw13134fj4kv43n1z6vrh1jhg1wc7m5hw82w8ncwqkm"))
201 (patches (search-patches "durden-shadow-arcan.patch"))))
202 (build-system copy-build-system)
203 (arguments
204 (list
205 #:install-plan #~'(("durden/" "share/arcan/appl/durden/")
206 ("util/" "share/arcan/appl/durden/util/")
207 ("distr/durden" "bin/durden"))
208 #:phases #~(modify-phases %standard-phases
209 (add-after 'unpack 'patch-paths
210 (lambda* (#:key inputs outputs #:allow-other-keys)
211 (substitute* "distr/durden"
212 (("/usr/share/\\$applname")
213 (string-append (assoc-ref outputs "out")
214 "/share/arcan/appl"))
215 (("@ARCAN_STORE_PATH@")
216 (string-append (assoc-ref inputs "arcan")
217 "/bin/arcan"))
218 (("([\\([:blank:]]+)basename " _ separator)
219 (string-append separator
220 (assoc-ref inputs "coreutils")
221 "/bin/basename "))
222 (("([\\([:blank:]]+)date " _ separator)
223 (string-append separator
224 (assoc-ref inputs "coreutils")
225 "/bin/date "))
226 (("([\\([:blank:]]+)ln " _ separator)
227 (string-append separator
228 (assoc-ref inputs "coreutils")
229 "/bin/ln "))
230 (("([\\([:blank:]]+)mkdir " _ separator)
231 (string-append separator
232 (assoc-ref inputs "coreutils")
233 "/bin/mkdir "))
234 (("([\\([:blank:]]+)true; " _ separator)
235 (string-append separator
236 (assoc-ref inputs "coreutils")
237 "/bin/true; "))
238 (("([\\([:blank:]]+)\\[ " _ separator)
239 (string-append separator
240 (assoc-ref inputs "coreutils")
241 "/bin/[ "))))))))
242 (inputs (list arcan coreutils))
243 (home-page "https://durden.arcan-fe.com/")
244 (synopsis "Desktop Environment for Arcan")
245 (description
246 "Durden is a desktop environment for the Arcan Display Server.
247It serves both as a reference showcase on how to take advantage of some of the
248features in Arcan, and as an entry to the advanced-user side of the desktop
249environment spectrum.")
250 (license (list license:bsd-3 license:expat license:cc-by3.0
251 license:cc-by4.0 license:asl2.0))))
252
253(define-public xarcan
254 (package
255 (name "xarcan")
256 (version "0.7.1")
257 (source
258 (origin
259 (method git-fetch)
260 (file-name (git-file-name name version))
261 (uri (git-reference
262 (url "https://codeberg.org/letoram/xarcan")
263 (commit version)))
264 (sha256
265 (base32 "1jpk272y58h94ss6j87i0cl1zlfp4g5803y0kpi09q8yy37icvcg"))))
266 (build-system meson-build-system)
267 (arguments
268 (list
269 #:configure-flags
270 #~(list
271 "-Dglamor=true" "-Dint10=false"
272 "-Dipv6=true"
273 "-Dsystemd_logind=false"
274
275 ;; The following arguments were taken from the Xwayland package.
276
277 ;; The build system insist on providing a default font path; give
278 ;; that of dejavu, the same used for our fontconfig package.
279 (string-append "-Ddefault_font_path="
280 #$(this-package-input "font-dejavu") "/share/fonts")
281 (string-append "-Dxkb_dir=" #$(this-package-input "xkeyboard-config")
282 "/share/X11/xkb")
283 (string-append "-Dxkb_bin_dir=" #$(this-package-input "xkbcomp")
284 "/bin")
285 (format #f "-Dbuilder_string=\"Build ID: ~a ~a\"" #$name #$version))))
286 (native-inputs
287 (list pkg-config autoconf automake libtool util-macros))
288 (inputs
289 (list arcan
290 font-dejavu
291 font-util
292 libdrm
293 libepoxy
294 libtirpc
295 libx11
296 libxfont2
297 libxkbfile
298 libxshmfence
299 mesa
300 openssl
301 pixman
302 xcb-util
303 xcb-util-image
304 xcb-util-wm
305 xkbcomp
306 xkeyboard-config
307 xorgproto
308 xtrans))
309 (home-page "https://arcan-fe.com")
310 (synopsis "Patched Xserver that bridges connections to Arcan")
311 (description
312 "Patched Xserver with a KDrive backend that uses the arcan-shmif
313 to map Xlib/Xcb/X clients to a running arcan instance. It allows
314running an X session as a window under Arcan.")
315 (license (list license:bsd-3 license:expat))))