diff mbox series

[bug#73522,games-team,13/14] gnu: Add retroarch-slang-shaders.

Message ID 2e3f3b6086de644ff23b3f9e45d758fec976affd.1728192708.git.maxim.cournoyer@gmail.com
State New
Headers show
Series Package and use RetroArch assets, plus other improvements. | expand

Commit Message

Maxim Cournoyer Oct. 6, 2024, 5:32 a.m. UTC
* gnu/packages/emulators.scm (retroarch-slang-shaders): New variable.

Change-Id: I72cba3abafc8b05789d5d7c506223af4510e0219
---

 gnu/packages/emulators.scm | 702 +++++++++++++++++++++++++++++++++++++
 1 file changed, 702 insertions(+)
diff mbox series

Patch

diff --git a/gnu/packages/emulators.scm b/gnu/packages/emulators.scm
index eca0990147..0cf7619147 100644
--- a/gnu/packages/emulators.scm
+++ b/gnu/packages/emulators.scm
@@ -1631,6 +1631,708 @@  (define-public retroarch-joypad-autoconfig
 physical device and the RetroPad virtual controller.")
     (license license:expat)))
 
+(define-public libretro-slang-shaders
+  ;; There are no releases; use the latest commit.
+
+  ;; BEWARE: Any upgrade to this package must have the sources carefully
+  ;; audited for newly added items, with the snippet allow-list updated
+  ;; accordingly, due to various items lacking license information or being
+  ;; non-free (see: https://github.com/libretro/slang-shaders/issues/150).
+  (let ((commit "a8e35920c5a53448bf6ce78dfe4575485a20a41f")
+        (revision "0"))
+    (package
+      (name "libretro-slang-shaders")
+      (version (git-version "0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/libretro/slang-shaders/")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (modules '((guix build utils)))
+         (snippet
+          '(begin
+             (use-modules (guix build utils)
+                          (ice-9 ftw)
+                          (srfi srfi-1)
+                          (srfi srfi-26))
+             (define (delete-all-but . preserve)
+               ;; Walk the file tree and delete everything except the paths
+               ;; listed in PRESERVE.  Directories listed PRESERVE will cause
+               ;; their whole contents to be preserved.
+               (let ((preserve (map (compose (cut string-trim-right <> #\/)
+                                             (cut string-append "./" <>))
+                                    preserve)))
+                 (file-system-fold
+                  (lambda (path stat result) ;enter
+                    (or (any (lambda (x)
+                               (or (string-prefix? path x)
+                                   (string-prefix? x path)))
+                             preserve)
+                        (begin
+                          (delete-file-recursively path)
+                          #f)))
+                  (lambda (path stat result) ;leaf (file)
+                    (unless (any (cut string-prefix? <> path) preserve)
+                      (delete-file path)))
+                  (const #t)                 ;down (directory)
+                  (const #t)                 ;up (directory)
+                  (lambda (path stat result) ;skip
+                    (when (file-exists? path)
+                      (error "could not enter unreadable directory" path)))
+                  (lambda (path stat errno result) ;error
+                    (error "error processing" path (strerror errno)))
+                  0
+                  ".")))
+
+             ;; This is an allow-list of the shaders explicitly licensed as
+             ;; free software.
+             (delete-all-but
+              "anamorphic/shaders/anamorphic.slang" ;expat
+              "anamorphic/anamorphic.slangp"
+              "annotated_passthru.slang" ;public license
+              "anti-aliasing/aa-shader-4.0-level2.slangp"
+              "anti-aliasing/aa-shader-4.0.slangp"
+              "anti-aliasing/shaders/aa-shader-4.0.slang"  ;gpl2+
+              "anti-aliasing/shaders/aa-shader-4.0-level2" ;gpl2+
+              "anti-aliasing/shaders/advanced-aa.slang" ;gpl2+
+              "anti-aliasing/advanced-aa.slangp"
+              "anti-aliasing/shaders/reverse-aa-post3x"    ;expat
+              "anti-aliasing/shaders/reverse-aa.slang"     ;bsd-2
+              "anti-aliasing/shaders/smaa/"                ;unlicense
+              ;; The following presets refder to stock.slang, which license is
+              ;; unknown.
+              ;; "anti-aliasing/smaa+linear.slangp"
+              ;; "anti-aliasing/smaa+sharpen.slangp"
+              ;; "anti-aliasing/smaa.slangp"
+              "auto-box/"               ;public domain
+              "bezel/koko-aio/"         ;gpl3+
+              ;; Mega_Bezel makes use of the include/compat_macros.inc file,
+              ;; which carries no license.
+              ;; "bezel/Mega_Bezel/" ;gpl3+
+              "bfi/"                       ;public domain
+              "blurs/shaders/dual_filter/" ;cc0
+              "blurs/shaders/gauss_4tap/"  ;cc0
+              "blurs/gauss_4tap.slangp"
+              "blurs/shaders/gaussian_blur_filtering" ;gpl2+
+              "blurs/gaussian_blur_2_pass-sharp.slangp"
+              "blurs/gaussian_blur-sharp.slangp"
+              "blurs/gaussian_blur_2_pass.slangp"
+              "blurs/gaussian_blur.slangp"
+              "blurs/shaders/gizmo-blur.slang" ;gpl2+
+              "blurs/gizmo-composite-blur.slangp"
+              "blurs/shaders/sharpsmoother.slang" ;gpl2+
+              "blurs/sharpsmoother.slangp"
+              "blurs/shaders/smart-blur.slang" ;expat
+              "blurs/smart-blur.slangp"        ;expat
+              ;; The .slang shaders of royale, itself Expat, all reference
+              ;; include/compat_macros.inc, which is not licensed thus not
+              ;; included.
+              ;;"blurs/shaders/royale"           ;expat
+              "border/shaders/bigblur.slang" ;public domain
+              "border/shaders/autocrop-koko" ;gpl3+
+              "border/autocrop-koko.slangp"
+              "border/autocrop-koko.txt"
+              "border/textures"                     ;data
+              "border/shaders/imgborder-gbp.slang"  ;<15 LOC
+              "border/shaders/imgborder.inc"        ;public domain
+              "border/shaders/imgborder-sgba.slang" ;<15 LOC
+              "border/shaders/imgborder-sgb.slang"  ;<15 LOC
+              "border/shaders/imgborder.slang"      ;<15 LOC
+              "border/gameboy-player/gameboy-player-crt-geom-1x.slangp"
+              ;;"border/gameboy-player/gameboy-player-crt-royale.slangp"
+              "border/gameboy-player/gameboy-player-gba-color.slangp"
+              "border/gameboy-player/gameboy-player.png" ;data
+              "border/gameboy-player/gameboy-player.slangp"
+              "border/gameboy-player/gameboy-player-tvout-gba-color+interlacing.slangp"
+              "border/gameboy-player/gameboy-player-tvout-gba-color.slangp"
+              "border/gameboy-player/gameboy-player-tvout+interlacing.slangp"
+              "border/gameboy-player/gameboy-player-tvout.slangp"
+              "border/gameboy-player/sample-borders/" ;data
+              "border/handheld-nebula/handheld-nebula-gba+crt-consumer.slangp"
+              "border/handheld-nebula/handheld-nebula-gba+dot.slangp"
+              "border/handheld-nebula/handheld-nebula-gba.png" ;data
+              "border/handheld-nebula/handheld-nebula-gba.slangp"
+              "border/handheld-nebula/handheld-nebula-gb+crt-consumer.slangp"
+              "border/handheld-nebula/handheld-nebula-gb+dot.slangp"
+              "border/handheld-nebula/handheld-nebula-gb.png" ;data
+              "border/handheld-nebula/handheld-nebula-gb.slangp"
+              "border/handheld-nebula/handheld-nebula-gg+crt-consumer.slangp"
+              "border/handheld-nebula/handheld-nebula-gg+dot.slangp"
+              "border/handheld-nebula/handheld-nebula-gg.png" ;data
+              "border/handheld-nebula/handheld-nebula-gg.slangp"
+              "border/handheld-nebula/handheld-nebula-template.png" ;data
+              "border/imgborder.slangp"
+              "cel/shaders/advcartoon.slang" ;gpl (unknown version)
+              "cel/advcartoon.slangp"
+              "crt/shaders/Advanced_CRT_shader_whkrmrgks0.slang" ;gpl3+
+              "crt/advanced_crt_whkrmrgks0.slangp"
+              "crt/shaders/cathode-retro" ;expat
+              ;;"crt/cathode-retro_no-signal.slangp"    ;uses stock.slang
+              "crt/shaders/crt-1tap.slang"     ;cc0
+              "crt/shaders/crt-aperture.slang" ;gpl (unknown version)
+              "crt/crt-aperture.slangp"
+              "crt/shaders/crt-blurPi.slang" ;expat
+              "crt/crt-blurPi-sharp.slangp"
+              "crt/crt-blurPi-soft.slangp"
+              "crt/shaders/crt-caligari.slang" ;gpl2+
+              "crt/crt-caligari.slangp"
+              "crt/shaders/crt-cgwg-fast.slang" ;gpl2+
+              "crt/crt-cgwg-fast.slangp"
+              "crt/shaders/crt-consumer.slang" ;gpl2+
+              "crt/shaders/crt-consumer"
+              "crt/crt-consumer.slangp"
+              "crt/shaders/crt-Cyclon.slang" ;gpl2+
+              "crt/crt-Cyclon.slangp"
+              "crt/shaders/crt-easymode.slang"    ;gpl3+ (latest assumed)
+              "crt/shaders/crt-easymode-halation" ;gpl3+ (latest assumed)
+              "crt/crt-easymode-halation.slangp"
+              "crt/crt-easymode.slangp"
+              "crt/shaders/crt-gdv-mini.slang"       ;gpl2+
+              "crt/shaders/crt-gdv-mini-ultra.slang" ;gpl2+
+              "crt/crt-gdv-mini.slangp"
+              "crt/crt-gdv-mini-ultra-trinitron.slangp"
+              "crt/shaders/crt-geom-mini.slang" ;gpl2+
+              "crt/shaders/crt-geom.slang"      ;gpl2+
+              "crt/crt-geom-deluxe.slangp"
+              "crt/crt-geom-mini.slangp"
+              "crt/crt-geom.slangp"
+              "crt/crt-geom-tate.slangp"
+              "crt/shaders/crt-interlaced-halation" ;gpl2+
+              "crt/shaders/crt-lottes-fast.slang"   ;unlicense
+              "crt/crt-lottes-fast.slangp"
+              "crt/shaders/crt-lottes-multipass" ;public domain
+              "crt/shaders/crt-lottes.slang"
+              "crt/ crt-lottes.slangp"
+              ;;"crt/shaders/crt-maximus-royale" ;gpl2+
+              "crt/shaders/crt-nobody.slang" ;expat
+              "crt/crt-nobody.slangp"
+              "crt/shaders/crt-pi.slang" ;gpl2+
+              "crt/crt-pi.slangp"
+              "crt/shaders/crt-pocket.slang" ;gpl2+
+              "crt/crt-pocket.slangp"
+              "crt/shaders/crt-potato"  ;gpl3+
+              "crt/crt-potato-BVM.slangp"
+              "crt/crt-potato-cool.slangp"
+              "crt/crt-potato-warm.slangp"
+              "crt/shaders/crt-resswitch-glitch-koko.slang" ;gpl3+
+              "crt/crt-resswitch-glitch-koko.slangp"
+              ;; crt-royale relies on royale, which pulls in the non-free
+              ;; include/compat_macros.h.
+              ;; "crt/shaders/crt-royale" ;gpl2+
+              ;; "crt/crt-royale-fake-bloom-intel.slangp"
+              ;; "crt/crt-royale-fake-bloom.slangp"
+              ;; "crt/crt-royale-fast.slangp" "crt/crt-royale-intel.slangp"
+              ;; "crt/crt-royale.slangp"
+              "crt/shaders/crtsim"      ;cc0
+              "crt/crtsim.slangp"
+              "crt/shaders/crt-simple.slang" ;gpl2+
+              "crt/crt-simple.slangp"
+              "crt/shaders/crt-super-xbr" ;expat
+              "crt/crt-super-xbr.slangp"
+              "crt/shaders/dotmask.slang"   ;gpl3+ (latest assumed)
+              "crt/shaders/geom-deluxe"     ;gpl2+
+              "crt/shaders/gizmo-crt.slang" ;gpl2+
+              "crt/gizmo-crt.slangp"
+              "crt/shaders/gizmo-slotmask-crt.slang" ;gpl2+
+              "crt/gizmo-slotmask-crt.slangp"
+              "crt/shaders/GritsScanlines" ;public domain
+              ;;"crt/GritsScanlines.slangp"    ;uses stock.slang
+              "crt/shaders/gtu-v050"    ;gpl3
+              "crt/gtu-v050.slangp"
+              "crt/shaders/guest"       ;gpl2+
+              "crt/crt-guest-advanced-fastest.slangp"
+              ;; The following crt-guest-advanced presets require
+              ;; 'stock.slang', which license is unknown.
+              ;; "crt/crt-guest-advanced-fast.slangp"
+              ;; "crt/crt-guest-advanced-hd.slangp"
+              ;; "crt/crt-guest-advanced-ntsc.slangp"
+              ;; "crt/crt-guest-advanced.slangp"
+              "crt/shaders/hyllian"     ;expat
+              "crt/crt-hyllian-3d.slangp"
+              "crt/crt-hyllian-fast.slangp"
+              "crt/crt-hyllian-fast.slangp"
+              "crt/shaders/mame_hlsl"   ;bsd-3
+              "crt/mame_hlsl.slangp"
+              "crt/shaders/moire-resolve.slang" ;public domain
+              "crt/shaders/newpixie"            ;mit or public domain
+              "crt/newpixie-crt.slangp"
+              "crt/shaders/newpixie-mini" ;mit or public domain
+              "crt/newpixie-mini.slangp"
+              "crt/shaders/phosphorlut/scanlines-interlace-linearize.slang" ;public domain
+              "crt/shaders/rt_curvature" ;cc0
+              "crt/ray_traced_curvature_append.slangp"
+              "crt/shaders/torridgristle/Brighten.slang"       ;public domain
+              "crt/shaders/torridgristle/Candy-Bloom.slang"    ;public domain
+              "crt/shaders/torridgristle/ScanlineSimple.slang" ;public domain
+              "crt/shaders/torridgristle/sunset-gaussian-horiz.slang" ;public domain
+              "crt/shaders/torridgristle/sunset-gaussian-vert.slang" ;public domain
+              "crt/shaders/tvout-tweaks.slang"                       ;gpl3
+              "crt/tvout-tweaks.slangp"
+              "crt/shaders/zfast_crt"   ;gpl2+
+              "crt/zfast-crt-composite.slangp"
+              "crt/zfast-crt-curvature.slangp"
+              "crt/zfast-crt-geo.slangp"
+              "crt/zfast-crt-hdmask.slangp"
+              "crt/zfast-crt.slangp"
+              "deblur/shaders/deblur-luma.slang" ;gpl2+
+              "deblur/deblur-luma.slangp"
+              "deblur/shaders/deblur.slang" ;gpl2+
+              "deblur/deblur.slangp"
+              "denoisers/shaders/bilateral-horizontal.slang" ;gpl2+
+              "denoisers/shaders/bilateral.slang"            ;gpl2+
+              "denoisers/bilateral.slangp"
+              "denoisers/shaders/bilateral-vertical.slang" ;gpl2+
+              "denoisers/bilateral-2p.slangp"
+              "denoisers/shaders/fast-bilateral.slang" ;expat
+              "denoisers/fast-bilateral.slangp"
+              "denoisers/crt-fast-bilateral-super-xbr.slangp"
+              "denoisers/shaders/median_3x3.slang" ;bsd-2
+              "denoisers/median_3x3.slangp"
+              "denoisers/shaders/median_5x5.slang" ;bsd-2
+              "denoisers/median_5x5.slangp"
+              "dithering/shaders/bayer_4x4.slang" ;gpl2+
+              "dithering/bayer_4x4.slangp"
+              "dithering/shaders/blue_noise.slang" ;gpl2+
+              "dithering/shaders/blue_noise"
+              "dithering/blue_noise.slangp"
+              "dithering/shaders/blue_noise_dynamic.slang" ;gpl2+
+              "dithering/blue_noise_dynamic_4Bit.slangp"
+              "dithering/blue_noise_dynamic_monochrome.slangp"
+              "dithering/shaders/cbod-v1-pass1.slang" ;bsd-2
+              "dithering/shaders/cbod-v1-pass2.slang" ;bsd-2
+              "dithering/cbod_v1.slangp"
+              "dithering/shaders/checkerboard-dedither-pass1.slang" ;expat
+              "dithering/shaders/checkerboard-dedither-pass2.slang" ;expat
+              "dithering/shaders/checkerboard-dedither-pass3.slang"
+              "dithering/shaders/gendither.slang" ;gpl2+
+              "dithering/gendither.slangp"
+              "dithering/shaders/g-sharp_resampler.slang" ;gpl2+
+              "dithering/g-sharp_resampler.slangp"
+              "dithering/shaders/jinc2-dedither.slang" ;gpl2+
+              "dithering/jinc2-dedither.slangp"
+              "dithering/shaders/sgenpt-mix/sgenpt-mix-pass1.slang" ;expat
+              "dithering/shaders/sgenpt-mix/sgenpt-mix-pass2.slang" ;expat
+              "dithering/shaders/sgenpt-mix/sgenpt-mix-pass3.slang" ;expat
+              "dithering/shaders/sgenpt-mix/sgenpt-mix-pass4.slang" ;expat
+              "dithering/shaders/sgenpt-mix/sgenpt-mix-pass5.slang" ;expat
+              "dithering/shaders/sgenpt-mix.slang"                  ;expat
+              "dithering/sgenpt-mix.slangp"
+              "downsample/shaders/drez-g-sharp_resampler.slang" ;gpl2+
+              "downsample/drez/"
+              "downsample/drez_1x.slangp"
+              "downsample/shaders/mixed-res/cheap-sharpen-tweaked.slang" ;expat
+              "downsample/shaders/mixed-res/hires-tagger.slang" ;expat
+              "edge-smoothing/ddt/shaders/cut.slang"            ;expat
+              "edge-smoothing/ddt//cut.slangp"
+              "edge-smoothing/ddt/shaders/ddt-extended.slang" ;expat
+              "edge-smoothing/ddt/ddt-extended.slangp"
+              "edge-smoothing/ddt/shaders/ddt-jinc.slang" ;gpl2+
+              "edge-smoothing/ddt/ddt-jinc.slangp"
+              "edge-smoothing/ddt/shaders/ddt.slang" ;expat
+              "edge-smoothing/ddt/ddt.slangp"
+              "edge-smoothing/ddt/shaders/ddt-waterpaint.slang" ;expat
+              "edge-smoothing/ddt/shaders/ddt-xbr-lv1.slang"    ;expat
+              "edge-smoothing/ddt/ddt-xbr-lv1.slangp"
+              "edge-smoothing/fsr/shaders" ;expat & unlicense
+              "edge-smoothing/fsr/fsr-easu.slangp"
+              "edge-smoothing/fsr/fsr.slangp"
+              ;; hqx presets require stock.slang which has unknown license.
+              ;; "edge-smoothing/hqx"           ;expat and lgpl2.1+
+              "edge-smoothing/hqx/resources" ;data
+              "edge-smoothing/hqx/shaders"   ;expat and lgpl2.1+
+              "edge-smoothing/nedi/"         ;gpl3+ and expat
+              "edge-smoothing/nnedi3/"       ;gpl3+ and gpl2+
+              "edge-smoothing/omniscale/"    ;expat
+              "edge-smoothing/sabr/"         ;gpl2+
+              "edge-smoothing/scalefx/"      ;expat
+              "edge-smoothing/scalehq/shaders/4xScaleHQ.slang" ;gpl2+
+              "edge-smoothing/scalenx/shaders/mmpx.slang"      ;expat
+              "edge-smoothing/scalenx/mmpx.slangp"
+              "edge-smoothing/scalenx/shaders/scale2xplus.slang" ;gpl3+ (latest assumed)
+              "edge-smoothing/scalenx/scale2xplus.slangp"
+              "edge-smoothing/scalenx/shaders/scale2x.slang" ;gpl3+ (latest assumed)
+              "edge-smoothing/scalenx/scale2x.slangp"
+              "edge-smoothing/scalenx/shaders/scale3x.slang" ;gpl3+ (latest assumed)
+              "edge-smoothing/scalenx/scale3x.slangp"
+              "edge-smoothing/xbr/shaders/super-xbr/"               ;expat
+              "edge-smoothing/xbr/shaders/xbr-lv1-standalone.slang" ;expat
+              "edge-smoothing/xbr/shaders/xbr-lv2-hd.slang"         ;expat
+              "edge-smoothing/xbr/shaders/xbr-lv2-hd.slang"         ;expat
+              "edge-smoothing/xbr/shaders/xbr-lv2-multipass/"       ;expat
+              "edge-smoothing/xbr/shaders/xbr-lv2-standalone.slang" ;expat
+              "edge-smoothing/xbr/shaders/xbr-lv3-multipass/"       ;expat
+              "edge-smoothing/xbr/shaders/xbr-lv3-standalone.slang" ;expat
+              "edge-smoothing/xbr/shaders/xbr-lv4-multipass/"       ;expat
+              "edge-smoothing/xbr/other presets/shaders/4xbr-hybrid-crt.slang" ;expat
+              "edge-smoothing/xbr/other presets/4xbr-hybrid-crt.slangp"
+              "edge-smoothing/xbr/other presets/shaders/super-xbr/"  ;expat
+              "edge-smoothing/xbr/other presets/shaders/xbr-hydrid/" ;gpl2+
+              "edge-smoothing/xbr/other presets/xbr-lv1-standalone.slangp"
+              "edge-smoothing/xbr/other presets/xbr-lv2-hd.slangp"
+              "edge-smoothing/xbr/other presets/xbr-lv2-standalone.slangp"
+              "edge-smoothing/xbr/other presets/xbr-lv3-9x-standalone.slangp"
+              "edge-smoothing/xbr/other presets/xbr-lv3-standalone.slangp"
+              "edge-smoothing/xbrz/shaders/" ;expat
+              "edge-smoothing/xbrz/2xbrz-linear.slangp"
+              "edge-smoothing/xbrz/xbrz-freescale.slangp"
+              "edge-smoothing/xsal/shaders/" ;gpl2+
+              "edge-smoothing/xsal/2xsal-level2-crt.slangp"
+              "edge-smoothing/xsal/2xsal.slangp"
+              "edge-smoothing/xsal/4xsal-level2-crt.slangp"
+              "edge-smoothing/xsoft/shaders/" ;gpl2+
+              "film/shaders/film-grain.slang" ;cc-by3.0
+              "film/film-grain.slangp"
+              "gpu/"                            ;gpl2+
+              "handheld/shaders/authentic_gbc/" ;cc0
+              "handheld/authentic_gbc.slangp"
+              "handheld/shaders/bevel.slang" ;gpl2+
+              "handheld/bevel.slangp"
+              "handheld/shaders/color/" ;public domain
+              "handheld/nds-color.slangp"
+              "handheld/NSO-gba-color.slangp"
+              "handheld/NSO-gbc-color.slangp"
+              "handheld/palm-color.slangp"
+              "handheld/psp-color.slangp"
+              "handheld/gba-color.slangp"
+              "handheld/gbc-color.slangp"
+              "handheld/gbc-dev.slangp"
+              "handheld/gbc-gambatte-color.slangp"
+              "handheld/SP101-color.slangp"
+              "handheld/SwitchOLED-color.slangp"
+              "handheld/vba-color.slangp"
+              "handheld/shaders/dot.slang" ;public domain
+              "handheld/dot.slangp"
+              "handheld/shaders/ds-hybrid-view.slang" ;public domain
+              "handheld/shaders/gameboy/"             ;gpl3+
+              "handheld/gameboy-advance-dot-matrix.slangp"
+              "handheld/gameboy-color-dot-matrix.slangp"
+              "handheld/gameboy-color-dot-matrix-white-bg.slangp"
+              "handheld/gameboy-dark-mode.slangp"
+              "handheld/gameboy-light-mode.slangp"
+              "handheld/gameboy-light.slangp"
+              "handheld/gameboy-pocket-high-contrast.slangp"
+              "handheld/gameboy-pocket.slangp"
+              "handheld/gameboy.slangp"
+              "handheld/shaders/gbc_pokemon_modernizer.slang" ;public domain
+              "handheld/shaders/lcd1x_nds.slang"              ;gpl2+
+              "handheld/lcd1x_nds.slangp"
+              "handheld/shaders/lcd1x_psp.slang" ;gpl2+
+              "handheld/lcd1x_psp.slangp"
+              "handheld/shaders/lcd1x.slang" ;gpl2+
+              "handheld/lcd1x.slangp"
+              "handheld/shaders/lcd3x.slang" ;public domain
+              "handheld/ lcd3x.slangp"
+              "handheld/shaders/lcd-shader/" ;gpl3+
+              "handheld/lcd-shader.slangp"
+              "handheld/shaders/mgba/"  ;mpl2.0
+              "handheld/agb001-gba-color-motionblur.slangp"
+              "handheld/ags001-gba-color-motionblur.slangp"
+              "handheld/ags001.slangp"
+              "handheld/shaders/retro-tiles.slang" ;expat
+              "handheld/retro-tiles.slangp"
+              "handheld/shaders/retro-v2.slang" ;gpl2+
+              "handheld/retro-v2-nds-color.slangp"
+              "handheld/retro-v2.slangp"
+              "handheld/shaders/retro-v3.slang" ;gpl2+
+              "handheld/retro-v3-nds-color.slangp"
+              "handheld/retro-v3.slangp"
+              "handheld/shaders/sameboy-lcd.slang" ;expat
+              "handheld/sameboy-lcd-gbc-color-motionblur.slangp"
+              "handheld/sameboy-lcd.slangp"
+              "handheld/shaders/simpletex_lcd/" ;gpl2+
+              "handheld/simpletex_lcd-4k.slangp"
+              "handheld/simpletex_lcd_720p+gba-color.slangp"
+              "handheld/simpletex_lcd_720p+gbc-color.slangp"
+              "handheld/simpletex_lcd_720p.slangp"
+              "handheld/simpletex_lcd+gba-color-4k.slangp"
+              "handheld/simpletex_lcd+gba-color.slangp"
+              "handheld/simpletex_lcd+gbc-color-4k.slangp"
+              "handheld/simpletex_lcd+gbc-color.slangp"
+              "handheld/simpletex_lcd.slangp"
+              "handheld/shaders/zfast_lcd.slang" ;gpl2+
+              "handheld/zfast-lcd.slangp"
+              "handheld/console-border/shader-files/gb-pass0.slang" ;gpl3+
+              "handheld/console-border/shader-files/gb-pass1.slang" ;gpl3+
+              "handheld/console-border/shader-files/gb-pass2.slang" ;gpl3+
+              "handheld/console-border/shader-files/gb-pass3.slang" ;gpl3+
+              "handheld/console-border/resources/" ;non-functional data
+              "handheld/console-border/dmg.slangp"
+              "hdr/shaders/crt-guest-advanced-ntsc-pass1a.slang" ;gpl2+
+              "include/blur-functions.h"                         ;expat
+              "include/cleanEdge.inc"                            ;expat
+              "include/colorspace-tools.h"                       ;gpl2+
+              "include/gamma-management.h"                       ;expat
+              "include/img/black_lvl_dogway.h"                   ;<15 LOC
+              "include/img/black_lvl.h"                          ;<15 LOC
+              "include/img/cgwg_warp.h"                          ;gpl2
+              "include/img/channel_mix.h"                        ;<15 LOC
+              "include/img/col_tools.h"                          ;<15 LOC
+              "include/img/curvature.h"             ;gpl2 and gpl3
+              "include/img/int_ar.h"                ;public domain
+              "include/img/subpx_masks.h"           ;<15 LOC
+              "include/quad-pixel-communication.h"  ;expat
+              "include/special-functions.h"         ;expat
+              "include/subpixel_masks.h"            ;public domain
+              "interpolation/shaders/bicubic.slang" ;gpl2+
+              "interpolation/bicubic.slangp"
+              "interpolation/shaders/bicubic-x.slang" ;expat
+              "interpolation/shaders/bicubic-y.slang" ;expat
+              "interpolation/bicubic-fast.slangp"
+              "interpolation/shaders/b-spline-4-taps.slang" ;expat
+              "interpolation/b-spline-4-taps.slangp"
+              "interpolation/shaders/b-spline-x.slang" ;expat
+              "interpolation/shaders/b-spline-y.slang" ;expat
+              "interpolation/b-spline-fast.slangp"
+              "interpolation/shaders/catmull-rom-x.slang" ;expat
+              "interpolation/shaders/catmull-rom-y.slang" ;expat
+              "interpolation/catmull-rom-fast.slangp"
+              "interpolation/shaders/jinc2.slang" ;gpl2+
+              "interpolation/jinc2-sharper.slangp"
+              "interpolation/jinc2-sharp.slangp"
+              "interpolation/jinc2.slangp"
+              "interpolation/shaders/lanczos16.slang" ;gpl2+
+              "interpolation/lanczos16.slangp"
+              "interpolation/shaders/lanczos3-x.slang" ;gpl2+
+              "interpolation/shaders/lanczos3-y.slang" ;gpl2+
+              "interpolation/lanczos3-fast.slangp"
+              "interpolation/shaders/spline16-x.slang" ;gpl2+
+              "interpolation/shaders/spline16-y.slang" ;gpl2+
+              "interpolation/spline16-fast.slangp"
+              "interpolation/shaders/spline36-x.slang" ;gpl2+
+              "interpolation/shaders/spline36-y.slang" ;gpl2+
+              "interpolation/spline36-fast.slangp"
+              "misc/shaders/anti-flicker.slang" ;public domain
+              "misc/anti-flicker.slangp"
+              "misc/shaders/bead.slang" ;public domain
+              "misc/bead.slangp"
+              "misc/shaders/bob-deinterlacing.slang" ;public domain
+              "misc/bob-deinterlacing.slangp"
+              "misc/shaders/chromaticity.slang" ;gpl3+
+              "misc/chromaticity.slangp"
+              "misc/shaders/coverage/coverage.inc" ;<15 LOC
+              "misc/shaders/deband.slang"          ;gpl2+
+              "misc/deband.slangp"
+              "misc/shaders/deinterlace.slang" ;gpl2
+              "misc/deinterlace.slangp"
+              "misc/shaders/deposterize" ;gpl2+
+              "misc/shaders/geom.slang"  ;gpl2+
+              "misc/geom-append.slangp"
+              "misc/shaders/glass.slang" ;public domain
+              "misc/glass.slangp"
+              "misc/shaders/grade-no-LUT.slang" ;gpl2+
+              "misc/grade-no-LUT.slangp"
+              "misc/shaders/grade.slang" ;gpl2+
+              "misc/grade.slangp"
+              "misc/shaders/image-adjustment.slang" ;public domain
+              "misc/image-adjustment.slangp"
+              "misc/shaders/img_mod.slang" ;public domain
+              "misc/img_mod.slangp"
+              "misc/shaders/input_transform" ;cc0
+              "misc/shaders/interlacing.slang"
+              "misc/interlacing.slangp"
+              "misc/shaders/print-resolution/print-resolution-generate-and-cache.slang" ;gpl3+
+              "misc/shaders/relief.slang" ;expat
+              "misc/relief.slangp"
+              "misc/shaders/ss-gamma-ramp.slang" ;gpl2
+              "misc/ss-gamma-ramp.slangp"
+              "motionblur/shaders/braid-rewind.slang" ;gpl2+
+              "motionblur/braid-rewind.slangp"
+              "motionblur/shaders/mix_frames.slang" ;gpl2+
+              "motionblur/mix_frames.slangp"
+              "motionblur/shaders/mix_framse_smart.slang" ;gpl2+
+              "motionblur/mix_frames_smart.slangp"
+              "motionblur/shaders/motionblur-simple.slang" ;gpl2+
+              "motionblur/motionblur-simple.slangp"
+              "motionblur/shaders/response-time.slang" ;gpl2+
+              "motionblur/response-time.slangp"
+              "nes_raw_palette/shaders/gtu-famicom/" ;gpl3
+              "nes_raw_palette/gtu-famicom.slangp"
+              "nes_raw_palette/pal-r57shell-raw.slangp"
+              "nes_raw_palette/patchy-mesen-raw-palette.slangp"
+              "ntsc/shaders/analog_overshoot.slang"          ;lgpl3
+              "ntsc/shaders/ntsc-simple/ntsc-simple-1.slang" ;gpl2+
+              "ntsc/shaders/ntsc-simple/ntsc-simple-2.slang" ;gpl2+
+              "ntsc/shaders/ntsc-xot.slang" ;cc-by-sa version unknown
+              "ntsc/shaderspatchy-ntsc/afterglow0-update/afterglow0-update-pass2.slang" ;gpl2+
+              "ntsc/shaderspatchy-ntsc/afterglow0-update/afterglow0-update-pass3.slang" ;gpl2+
+              "ntsc/shaders/patchy-ntsc/linear-to-srgb.slang"          ;gpl3
+              "ntsc/shaders/patchy-ntsc/P22_80s_D65.png"               ;data
+              "ntsc/shaders/patchy-ntsc/P22_90s_D65.png"               ;data
+              "ntsc/shaders/patchy-ntsc/P22_J_D65.png"                 ;data
+              "ntsc/shaders/patchy-ntsc/P22_J_D93.png"                 ;data
+              "ntsc/shaders/patchy-ntsc/patchy-color.slang"            ;gpl3
+              "ntsc/shaders/patchy-ntsc/patchy-ntsc-combine-y-c.slang" ;gpl3
+              "ntsc/shaders/patchy-ntsc/patchy-ntsc-decode-y-rmy-bmy.slang" ;gpl3
+              "ntsc/shaders/patchy-ntsc/patchy-ntsc-encode-y-c.slang"   ;gpl3
+              "ntsc/shaders/patchy-ntsc/patchy-ntsc-eotf.slang"         ;gpl3
+              "ntsc/shaders/patchy-ntsc/patchy-ntsc-inc-filters.inc"    ;gpl3
+              "ntsc/shaders/patchy-ntsc/patchy-ntsc-inc-params.inc"     ;gpl3
+              "ntsc/shaders/patchy-ntsc/patchy-ntsc-noise.slang"        ;gpl3
+              "ntsc/shaders/patchy-ntsc/patchy-ntsc-separate-y-c.slang" ;gpl3
+              "ntsc/shaders/patchy-ntsc/trilinearLUT-switchable.slang"  ;gpl2+
+              "ntsc/shaders/patchy-ntsc/TrinitronP22_D65.png"           ;data
+              "ntsc/shaders/patchy-ntsc/TrinitronP22_D93.png"           ;data
+              "ntsc/patchy-blastem.slangp"
+              "ntsc/patchy-genplusgx.slangp"
+              "ntsc/patchy-snes.slangp"
+              "pal/shaders/pal-r57shell.slang" ;public domain
+              "pal/pal-r57shell.slangp"
+              "pal/shaders/pal-singlepass.slang" ;bsd-2
+              "pal/pal-singlepass.slangp"
+              "pal/resources/"                       ;data
+              "pixel-art-scaling/shaders/aann.slang" ;expat
+              "pixel-art-scaling/aann.slangp"
+              "pixel-art-scaling/shaders/bandlimit-pixel.slang" ;expat
+              "pixel-art-scaling/shaders/box_filter_aa/"        ;cc0
+              "pixel-art-scaling/box_filter_aa_xform.slangp"
+              "pixel-art-scaling/shaders/pixel_aa" ;cc0
+              "pixel-art-scaling/pixel_aa.slangp"
+              "pixel-art-scaling/pixel_aa_xform.slangp"
+              "pixel-art-scaling/shaders/pixellate.slang" ;isc
+              "pixel-art-scaling/pixellate.slangp"
+              "pixel-art-scaling/shaders/sharp-bilinear-scanlines.slang" ;public domain
+              "pixel-art-scaling/sharp-bilinear-scanlines.slangp"
+              "pixel-art-scaling/shaders/sharp-bilinear-simple.slang" ;public domain
+              "pixel-art-scaling/sharp-bilinear-simple.slangp"
+              "pixel-art-scaling/shaders/sharp-bilinear.slang"
+              "pixel-art-scaling/sharp-bilinear.slangp"
+              "pixel-art-scaling/shaders/uniform-nearest.slang" ;gpl2+
+              "pixel-art-scaling/uniform-nearest.slangp"
+              ;; The following include stock.slang, which license is unknown.
+              ;; "presets/crt-hyllian-sinc-smartblur-sgenpt.slangp"
+              ;; "presets/crt-hyllian-smartblur-sgenpt.slangp"
+              ;; The following depend on royale, which pulls in the non-free
+              ;; include/compat_macros.h.
+              ;; "presets/crt-royale-fast/4k/crt-royale-fast-rgb-aperture.slangp"
+              ;; "presets/crt-royale-fast/4k/crt-royale-fast-rgb-slot.slangp"
+              ;; "presets/crt-royale-fast/4k/crt-royale-pvm-rgb-blend.slangp"
+              ;; "presets/crt-royale-fast/4k/crt-royale-pvm-rgb-shmup.slangp"
+              ;; "presets/crt-royale-fast/4k/crt-royale-pvm-rgb.slangp"
+              ;; "presets/crt-royale-fast/crt-royale-fast-rgb-aperture.slangp"
+              ;; "presets/crt-royale-fast/crt-royale-fast-rgb-slot.slangp"
+              ;; "presets/crt-royale-fast/crt-royale-pvm-rgb-blend.slangp"
+              ;; "presets/crt-royale-fast/crt-royale-pvm-rgb-shmup.slangp"
+              ;; "presets/crt-royale-fast/crt-royale-pvm-rgb.slangp"
+              ;; "presets/crt-royale-fast-ntsc-composite.slangp"
+              ;; "presets/crt-royale-kurozumi.slangp"
+              ;; "presets/crt-royale-ntsc-composite.slangp"
+              ;; "presets/crt-royale-ntsc-svideo.slangp"
+              ;; "presets/crt-royale-pal-r57shell.slangp"
+              ;; "presets/crt-royale-xm29plus.slangp"
+              "presets/crtsim-grungy.slangp"
+              "presets/gizmo-crt/"      ;slangp data files
+              ;; "presets/imgborder-royale-kurozumi.slangp"
+              "presets/my_old_tv.slangp"
+              "presets/nedi-powervr-sharpen.slangp"
+              "presets/retro-v2+gba-color.slangp"
+              "presets/retro-v2+gbc-color.slangp"
+              "presets/retro-v2+image-adjustment.slangp"
+              "presets/retro-v2+nds-color.slangp"
+              "presets/retro-v2+psp-color.slangp"
+              "presets/retro-v2+vba-color.slangp"
+              "presets/tvout/tvout-jinc-sharpen.slangp"
+              "presets/tvout/tvout.slangp"
+              "presets/tvout+interlacing/tvout+interlacing.slangp"
+              "presets/tvout+interlacing/tvout-jinc-sharpen+interlacing.slangp"
+              ;; The xbr-xsal presets require support/linearize.slang, whose
+              ;; license is unknown.
+              ;;"presets/xbr-xsal/"                          ;slangp data files
+              "procedural/iq-raymarching-primitives.slang" ;expat
+              "quad/shaders/biquad.slang"                  ;gpl2+
+              "quad/quad_interp.slang"                     ;public domain
+              "reshade/shaders/magicbloom/"                ;mit
+              "scanlines/shaders/res-independent-scanlines.slang" ;public domain
+              "scanlines/res-independent-scanlines.slangp"
+              "scanlines/shaders/scanline-fract.slang" ;public domain
+              "scanlines/scanline-fract.slangp"
+              "scanlines/shaders/scanlines-rere.slang" ;public domain
+              "scanlines/scanlines-rere.slangp"
+              "scanlines/shaders/scanlines-sine-abs.slang" ;public domain
+              "scanlines/scanlines-sine-abs.slangp"
+              "sharpen/shaders/adaptive-sharpen-pass1.slang" ;bsd-2
+              "sharpen/shaders/adaptive-sharpen-pass2.slang" ;bsd-2
+              "sharpen/adaptive-sharpen-multipass.slangp"
+              "sharpen/shaders/adaptive-sharpen.slang" ;bsd-2
+              "sharpen/adaptive-sharpen.slangp"
+              "sharpen/shaders/anime4k/anime4k-compute-gradient.slang" ;expat
+              "sharpen/shaders/anime4k/anime4k-pushgrad-weak.slang"    ;expat
+              "sharpen/shaders/anime4k/anime4k-push.slang"             ;expat
+              "sharpen/shaders/cheap-sharpen.slang"                    ;expat
+              "sharpen/cheap-sharpen.slangp"
+              "sharpen/shaders/diff.slang"         ;lgpl3+
+              "sharpen/shaders/fast-sharpen.slang" ;gpl2+
+              "sharpen/shaders/rcas.slang"         ;expat
+              "sharpen/rca_sharpen.slangp"
+              "sharpen/shaders/super-res-ex.slang"                     ;lgpl3+
+              "stereoscopic-3d/shaders/anaglyph-to-side-by-side.slang" ;public domain
+              "stereoscopic-3d/anaglyph-to-side-by-side.slangp"
+              "stereoscopic-3d/shaders/sbs-to-interlaced.slang" ;public domain
+              "stereoscopic-3d/side-by-side-to-interlaced.slangp"
+              "stereoscopic-3d/shaders/sbs-to-shutter.slang" ;public domain
+              "stereoscopic-3d/side-by-side-to-shutter.slangp"
+              "stereoscopic-3d/shaders/shutter-to-side-by-side.slang" ;public domain
+              "stereoscopic-3d/shutter-to-side-by-side.slangp"
+              "stereoscopic-3d/shaders/side-by-side-simple.slang" ;public domain
+              "stereoscopic-3d/side-by-side-simple.slangp"
+              "vhs/shaders/vhs_and_crt_godot.slang" ;cc0
+              "vhs/vhs_and_crt_godot.slangp"        ;cc0
+              "warp/shaders/dilation.slang"         ;expat
+              "warp/shaders/erosion.slang"          ;expat
+              "warp/dilation.slangp"
+
+              ;; Build/development supporting files not installed.
+              ".git/"
+              "configure"
+              "Makefile")
+
+             ;; The following are special cases, to be used sparringly.  These
+             ;; presets uses stock.slang, whose license is unclear.
+             (for-each
+              (lambda (x)
+                (if (file-exists? x)
+                    (delete-file x)
+                    (format (current-error-port)
+                            "warning: file ~s does not exist~%" x)))
+              '("bfi/120hz-smart-BFI.slangp"
+                "crt/shaders/cathode-retro/signal_test.slangp"
+                "blurs/shaders/dual_filter/naive_resample.slang"
+                "edge-smoothing/scalefx/scalefx+rAA.slangp"
+                "edge-smoothing/scalefx/scalefx-9x.slangp"
+                "edge-smoothing/scalefx/scalefx-hybrid.slangp"
+                "edge-smoothing/scalefx/scalefx.slangp"
+                "edge-smoothing/scalefx/shaders/old/scalefx-9x.slangp"
+                "edge-smoothing/scalefx/shaders/old/scalefx.slangp"))))
+         (sha256
+          (base32
+           "0r45p61nhi44f7ka5dvcabin7q2l25liyhgynm159pwlpwxz83nv"))))
+      (build-system gnu-build-system)
+      (arguments
+       (list #:tests? #f                ;no test suite
+             #:make-flags #~(list (string-append "PREFIX=" #$output))))
+      (home-page "https://github.com/libretro/slang-shaders")
+      (synopsis "Vulkan GLSL shader collections for RetroArch")
+      (description "This package provides a collection of Vulkan
+GLSL (@file{.slang}) shaders for use with RetroArch.")
+      ;; Here's the current low-down on the licenses used in this aggregated
+      ;; collection; please keep it up to date!
+      (license (list license:expat
+                     license:cc0
+                     license:cc-by3.0
+                     license:public-domain
+                     license:gpl2
+                     license:gpl2+
+                     license:gpl3
+                     license:gpl3+
+                     license:isc
+                     license:lgpl2.1+
+                     license:lgpl3
+                     license:mpl2.0
+                     license:bsd-2
+                     license:bsd-3
+                     license:unlicense)))))
+
 (define-public retroarch-minimal
   ;; Use the latest commit, as there are unreleased fixes that resolve black
   ;; screen issues when using the vulkan video renderer.