projects/guix·blob kernel-updates · refs

384 lines · 14.0 KiB

1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2017 Nikita <[email protected]>
3;;; Copyright © 2017 Stefan Reichör <[email protected]>
4;;; Copyright © 2018, 2021, 2022 Tobias Geerinckx-Rice <[email protected]>
5;;; Copyright © 2019 Andrew Miloradovsky <[email protected]>
6;;; Copyright © 2020, 2023, 2024 Efraim Flashner <[email protected]>
7;;; Copyright © 2022 Hunter Jozwiak <[email protected]>
8;;; Copyright © 2023 Ivan Gankevich <[email protected]>
9;;; Copyright © 2025 Janneke Nieuwenhuizen <[email protected]>
10;;;
11;;; This file is part of GNU Guix.
12;;;
13;;; GNU Guix is free software; you can redistribute it and/or modify it
14;;; under the terms of the GNU General Public License as published by
15;;; the Free Software Foundation; either version 3 of the License, or (at
16;;; your option) any later version.
17;;;
18;;; GNU Guix is distributed in the hope that it will be useful, but
19;;; WITHOUT ANY WARRANTY; without even the implied warranty of
20;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21;;; GNU General Public License for more details.
22;;;
23;;; You should have received a copy of the GNU General Public License
24;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
25
26(define-module (gnu packages accessibility)
27 #:use-module ((guix licenses) #:prefix license:)
28 #:use-module (guix gexp)
29 #:use-module (guix utils)
30 #:use-module (guix packages)
31 #:use-module (guix download)
32 #:use-module (guix git-download)
33 #:use-module (guix build-system gnu)
34 #:use-module (guix build-system glib-or-gtk)
35 #:use-module (guix build-system pyproject)
36 #:use-module (guix build-system meson)
37 #:use-module (gnu packages)
38 #:use-module (gnu packages autotools)
39 #:use-module (gnu packages lisp)
40 #:use-module (gnu packages ocaml)
41 #:use-module (gnu packages pcre)
42 #:use-module (gnu packages polkit)
43 #:use-module (gnu packages ncurses)
44 #:use-module (gnu packages music)
45 #:use-module (gnu packages language)
46 #:use-module (gnu packages icu4c)
47 #:use-module (gnu packages speech)
48 #:use-module (gnu packages linux)
49 #:use-module (gnu packages documentation)
50 #:use-module (gnu packages swig)
51 #:use-module (gnu packages libusb)
52 #:use-module (gnu packages java)
53 #:use-module (gnu packages python)
54 #:use-module (gnu packages python-build)
55 #:use-module (gnu packages python-xyz)
56 #:use-module (gnu packages tcl)
57 #:use-module (gnu packages xml)
58 #:use-module (gnu packages gnome)
59 #:use-module (gnu packages gstreamer)
60 #:use-module (gnu packages gtk)
61 #:use-module (gnu packages xorg)
62 #:use-module (gnu packages gettext)
63 #:use-module (gnu packages glib)
64 #:use-module (gnu packages pkg-config)
65 #:use-module (gnu packages libusb))
66
67(define-public libbraille
68 (package
69 (name "libbraille")
70 (version "0.19.0")
71 (source
72 (origin
73 (method url-fetch)
74 (uri
75 (string-append "https://sourceforge.net/projects/" name "/files/" name "/"
76 name "-" version "/" name "-" version ".tar.gz"))
77 (sha256
78 (base32 "05g8r0ypazqn10i7k48iibs8bzc3scdfcnhcykab8j16lhzd27d0"))))
79 (build-system glib-or-gtk-build-system)
80 (outputs '("out" "bin"))
81 (arguments
82 (list
83 #:tests? #f ; Tests require drivers, gtk2
84 #:configure-flags
85 #~(list "CFLAGS=-g -O2 -Wno-error=incompatible-pointer-types"
86 "--disable-static")
87 #:phases
88 #~(modify-phases %standard-phases
89 #$@(if (this-package-native-input "config")
90 #~((add-after 'unpack 'update-config-scripts
91 (lambda* (#:key native-inputs inputs #:allow-other-keys)
92 (for-each
93 (lambda (dir)
94 (for-each
95 (lambda (file)
96 (install-file
97 (search-input-file
98 (or native-inputs inputs)
99 (string-append "/bin/" file)) dir))
100 (list "config.guess" "config.sub")))
101 (list "." "libltdl")))))
102 (list)))))
103 (native-inputs
104 (append
105 (if (or (target-aarch64?)
106 (target-ppc64le?)
107 (target-riscv64?))
108 (list config)
109 (list))
110 (list latex2html
111 pkg-config
112 python-wrapper
113 swig-4.4)))
114 (inputs
115 (list glib libusb-compat))
116 (synopsis "Portable Braille Library")
117 (description "Libbraille is a library to easily access Braille displays and
118terminals.")
119 (home-page "https://libbraille.org")
120 (license license:lgpl2.1+)))
121
122(define-public brltty
123 (package
124 (name "brltty")
125 (version "6.6")
126 (source
127 (origin
128 (method url-fetch)
129 (uri
130 (string-append "https://brltty.app/archive/brltty-" version ".tar.gz"))
131 (sha256
132 (base32 "1z54rin4zhg3294pq47gamzjy2c56zfkl07rx2qy2khlpyczds0k"))))
133 (build-system glib-or-gtk-build-system)
134 (arguments
135 (list
136 #:tests? #f ; no target
137 ;; High parallelism may cause errors such as:
138 ;; ranlib: ./libbrlapi_stubs.a: error reading brlapi_stubs.o: file truncated
139 #:parallel-build? #f
140 #:configure-flags
141 #~(list
142 (string-append "--with-libbraille="
143 #$(this-package-input "libbraille"))
144 (string-append "--with-espeak_ng="
145 #$(this-package-input "espeak-ng"))
146 (string-append "--with-espeak="
147 #$(this-package-input "espeak"))
148 (string-append "--with-flite="
149 #$(this-package-input "flite"))
150 ;; Required for RUNPATH validation.
151 (string-append "LDFLAGS=-Wl,-rpath=" #$output "/lib"))
152 #:make-flags
153 #~(list
154 (string-append "JAVA_JAR_DIR=" #$output)
155 (string-append "JAVA_JNI_DIR=" #$output)
156 (string-append "OCAML_DESTDIR=" #$output "/lib")
157 (string-append "PYTHON_PREFIX=" #$output)
158 "PYTHON_ROOT=/"
159 (string-append "TCL_DIR=" #$output "/lib")
160 "INSTALL_WRITABLE_DIRECTORY=no-thanks")
161 #:imported-modules (append %glib-or-gtk-build-system-modules
162 %pyproject-build-system-modules)
163 #:modules '((guix build utils)
164 (guix build glib-or-gtk-build-system)
165 ((guix build pyproject-build-system) #:prefix python:))
166 #:phases
167 #~(modify-phases %standard-phases
168 (add-after 'unpack 'fix-errors
169 (lambda _
170 (substitute* "configure"
171 (("/sbin/ldconfig")
172 (which "true")))
173 ;; Make Python bindings use rpath.
174 (substitute* "Bindings/Python/setup.py.in"
175 (("extra_compile_args =")
176 (string-append "extra_link_args = ['-Wl,-rpath="
177 #$output
178 "/lib'], "
179 "extra_compile_args = ")))))
180 (add-before 'install 'set-pythonpath
181 (assoc-ref python:%standard-phases
182 'add-install-to-pythonpath)))))
183 (native-inputs
184 (append
185 (list clisp
186 ;; See: <https://bugzilla.redhat.com/show_bug.cgi?id=2231865>.
187 python-cython
188 python-setuptools ;remove with next update
189 doxygen
190 gettext-minimal)
191 ;; icedtea doesn't build reliably on all architectures.
192 (if (or (target-x86?)
193 (target-aarch64?))
194 (list `(,openjdk11 "jdk"))
195 '())
196 (list ;; ("linuxdoc" ,linuxdoc-tools)
197 ocaml
198 ocaml-findlib
199 pkg-config
200 python-wrapper
201 tcl)))
202 (inputs
203 (list alsa-lib
204 at-spi2-core
205 bluez
206 dbus
207 espeak
208 espeak-ng
209 expat
210 festival
211 flite
212 glib
213 gpm
214 icu4c
215 libbraille
216 pcre2
217 liblouis
218 ncurses
219 polkit
220 speech-dispatcher
221 util-linux
222 `(,util-linux "lib")
223 libx11
224 libxaw
225 libxaw3d
226 libxext
227 libxfixes
228 libxt
229 libxtst))
230 (synopsis "Braille TTY")
231 (description "BRLTTY is a background process (daemon) which provides access
232to the Linux/Unix console (when in text mode) for a blind person using a
233refreshable braille display. It drives the braille display, and provides
234complete screen review functionality. Some speech capability has also been
235incorporated.")
236 (home-page "https://brltty.app/")
237 (license license:lgpl2.1+)))
238
239(define-public footswitch
240 (let ((commit "e455d6752221b9e9c3818cc304c873b9c2792490")
241 (revision "0"))
242 (package
243 (name "footswitch")
244 (version (git-version "1.0" revision commit))
245 (source (origin
246 (method git-fetch)
247 (uri (git-reference
248 (url "https://github.com/rgerganov/footswitch")
249 (commit commit)))
250 (file-name (git-file-name name version))
251 (sha256
252 (base32
253 "0xkk60sg3szpgbl3z8djlpagglsldv9viqibsih6wcnbhikzlc6j"))))
254 (build-system gnu-build-system)
255 (arguments
256 (list
257 #:tests? #f ; no tests
258 #:make-flags #~(list (string-append "CC=" #$(cc-for-target)))
259 #:phases
260 #~(modify-phases %standard-phases
261 (delete 'configure)
262 ;; Install target in the Makefile does not work for Guix.
263 (replace 'install
264 (lambda _
265 (let ((bin (string-append #$output "/bin")))
266 (install-file "footswitch" bin)
267 (install-file "scythe" bin)))))))
268 (native-inputs
269 (list pkg-config))
270 (inputs
271 (list hidapi))
272 (home-page "https://github.com/rgerganov/footswitch")
273 (synopsis "Command line utilities for PCsensor and Scythe foot switches")
274 (description
275 "This package provides command line utilities for programming PCsensor
276and Scythe foot switches. It works for both single pedal and three pedal
277devices.")
278 (license license:expat))))
279
280(define-public xmagnify
281 (package
282 (name "xmagnify")
283 (version "0.1.0")
284 (source (origin
285 (method git-fetch)
286 (uri (git-reference
287 (url "https://gitlab.com/amiloradovsky/magnify.git")
288 (commit version)))
289 (file-name (git-file-name name version))
290 (sha256
291 (base32
292 "1ngnp5f5zl3v35vhbdyjpymy6mwrs0476fm5nd7dzkba7n841jdh"))))
293 (build-system gnu-build-system)
294 (arguments
295 `(#:tests? #f ; none included
296 #:make-flags
297 (list (string-append "CC=" ,(cc-for-target))
298 (string-append "prefix=" (assoc-ref %outputs "out")))
299 #:phases
300 (modify-phases %standard-phases
301 (delete 'configure))))
302 (inputs
303 (list libx11))
304 (home-page "https://gitlab.com/amiloradovsky/magnify")
305 (synopsis "Tiny screen magnifier for X11")
306 (description
307 "This program magnifies a screen region by an integer positive factor and
308draws the result on a window. It is useful as an accessibility tool, which
309works with every X Window System based GUI (depends only on libX11); or as an
310assistant for graphic designers, who need to select individual pixels.")
311 ;; Licensed either under Expat or GPLv2+.
312 (license (list license:expat license:gpl2+))))
313
314(define-public espeakup
315 (package
316 (name "espeakup")
317 (version "0.90")
318 (source (origin
319 (method git-fetch)
320 (uri (git-reference
321 (url "https://github.com/linux-speakup/espeakup")
322 (commit (string-append "v" version))))
323 (file-name (git-file-name name version))
324 (sha256
325 (base32
326 "0lmjwafvfxy07zn18v3dzjwwpnid2xffgvy2dzlwkbns8gb60ds2"))))
327 (build-system meson-build-system)
328 (native-inputs (list pkg-config))
329 (inputs (list espeak-ng alsa-lib))
330 (license license:gpl3+)
331 (synopsis "Bridge for espeak and speakup")
332 (description
333 "Espeakup is a bridge between the speakup driver implemented in
334the Linux kernel and the espeak-ng text to speech synthesizer.
335In order for this package to work, you need to have the following
336kernel modules built:
337@itemize @bullet
338@item
339CONFIG_SPEAKUP=m
340@item
341CONFIG_SPEAKUP_SOFT=m
342@end itemize")
343 (home-page "https://github.com/linux-speakup/espeakup")))
344
345(define-public mouseloupe
346 (package
347 (name "mouseloupe")
348 (version "0.6")
349 (source
350 (origin
351 (method url-fetch)
352 (uri (string-append "mirror://sourceforge/" name "/" name "/v" version
353 "/" name "-v" version ".tar.gz"))
354 (sha256
355 (base32 "0cvdkfakw7cix07j0c4iy10fkbqn6n8l1gr5dd3iy4f2d9bkza43"))
356 (snippet
357 #~(begin (use-modules (guix build utils))
358 (substitute* "Makefile"
359 (("-D__i386__") ""))))))
360 (build-system gnu-build-system)
361 (arguments
362 (list
363 #:tests? #f ; there are no tests
364 #:phases
365 #~(modify-phases %standard-phases
366 (delete 'configure)
367 (add-before 'build 'strtof
368 (lambda _
369 (substitute* "mouseloupe.c"
370 (("\\bstrtof\\b") "mouseloupe_strtof"))))
371 (replace 'install
372 (lambda _
373 (install-file "mouseloupe" (string-append #$output "/bin"))
374 (install-file "mouseloupe.1.gz"
375 (string-append #$output "/share/man/man1")))))))
376 (native-inputs
377 (list pkg-config))
378 (inputs
379 (list libx11 libxext libxcomposite libxdamage libxrender))
380 (synopsis "Screen magnifier tool for people with low vision")
381 (description "MouseLoupe is a kind of magnifying glass combined with the
382mouse pointer which allows an easy and pleasant web navigation.")
383 (home-page "https://sourceforge.net/projects/mouseloupe/")
384 (license license:gpl2+)))