Subject: [bug#59851] Add Moonlight

From: Maxim Cournoyer <[email-masked]>
Date: Mon, 16 Jan 2023 11:11:18 -0500

Hi again,

phodina <[email-masked]> writes:

> Hello,
>
> these patches add support for game streaming solution for Nvidia GameStream protocol. The client is open source. However, the games and the server is a non-libre application.
>
> ----
> Petr
>
>
>
> From 6f6e1a55787059f520428287fba474fe72c4a86b Mon Sep 17 00:00:00 2001
> From: Petr Hodina <[email-masked]>
> Date: Sat, 3 Dec 2022 10:36:38 +0100
> Subject: [PATCH 6/6] gnu: Add moonlight.
>
> * gnu/packages/games.scm (moonlight): New variable.
>
> diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm
> index 131784bc2a..d3628266ac 100644
> --- a/gnu/packages/games.scm
> +++ b/gnu/packages/games.scm
> @@ -5857,6 +5857,61 @@ (define-public bambam
>  colors, pictures, and sounds.")
>      (license license:gpl3+)))
>  
> +(define-public moonlight
> +  (package
> +    (name "moonlight")

Should that be called moonlight-qt?  Or perhaps it's the flagship
client, and thus 'moonlight' is appropriate, and other clients can have
different names?

> +    (version "3.1.4")
> +    (source (origin
> +              (method git-fetch)
> +              (uri (git-reference
> +                    (url "https://github.com/moonlight-stream/moonlight-qt")
> +                    (commit (string-append "v" version))))
> +              (file-name (git-file-name name version))
> +              (sha256
> +               (base32
> +                "02y2rbiiawhj1dvgxdaz8k9kpz6zkv20zsk17fbqj8259m3g5xr5"))))
> +    (build-system qt-build-system)
> +    (arguments
> +     (list #:tests? #f

An explanatory comment (;no test suite) ? is required.

> +           #:phases #~(modify-phases %standard-phases
> +                        (replace 'configure
> +                          (lambda* _
> +                            (symlink (string-append #$(this-package-input
> +                                                       "sdl-gamecontrollerdb")
> +                                                    "/gamecontrollerdb.txt")
> +                             "app/SDL_GameControllerDB/gamecontrollerdb.txt")
> +                            (substitute* "moonlight-qt.pro"
> +                              (("moonlight-common-c \\\\")
> +                               "#moonlight-common-c \\")
> +                              (("qmdnsengine \\\\") "#qmdnsengine \\")
> +                              (("app \\\\") "app")
> +                              (("app.depends") "INCLUDEPATH +=")
> +                              (("h264bitstream \\\\") "#h264bitstream \\"))
> +                            (invoke "qmake"
> +                                    (string-append "PREFIX=" #$output)))))))

Please explain what the non-obvious substitutions (commenting stuff) are
for.

> +    (native-inputs (list pkg-config qttools-5))
> +    (inputs (list moonlight-common
> +                  libva
> +                  libvdpau
> +                  openssl
> +                  opus
> +                  qtbase-5
> +                  sdl-gamecontrollerdb
> +                  qtquickcontrols2-5
> +                  qtdeclarative-5
> +                  qtsvg-5
> +                  qmdnsengine
> +                  sdl2
> +                  sdl2-ttf
> +                  h264bitstream
> +                  ffmpeg))

Please sort inputs :-).

> +    (synopsis "GameStream client for PCs")

I'd drop "for PCs", since it doesn't add much.

> +    (description
> +     "Moonlight PC is an open source implementation of NVIDIA's GameStream, as
> +used by the NVIDIA Shield.")
> +    (home-page "https://moonlight-stream.org")
> +    (license license:gpl3)))

That should also be gpl3+.

-- 
Thanks,
Maxim