diff mbox series

[bug#67134] gnu: Add camelia-girls

Message ID d0b6fcff035fd1f24e8b36f1c6af43cdd7cc87d4.1699816739.git.hrn@posteo.net
State New
Headers show
Series [bug#67134] gnu: Add camelia-girls | expand

Commit Message

hrn Nov. 12, 2023, 7:20 p.m. UTC
* gnu/packages/games.scm (camlia-girls): New variable.

Change-Id: I6bf6f85cd4578b7ce4ec6ebdd7a8c342fa5dbd4c
---
 gnu/packages/games.scm | 86 ++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 86 insertions(+)


base-commit: c9361460dece1dbc3d2645ad3e5c79e85a2bf183

Comments

Liliana Marie Prikler Nov. 12, 2023, 10:45 p.m. UTC | #1
Am Sonntag, dem 12.11.2023 um 19:20 +0000 schrieb Rikard Nordgren:
> * gnu/packages/games.scm (camlia-girls): New variable.
> 
> Change-Id: I6bf6f85cd4578b7ce4ec6ebdd7a8c342fa5dbd4c
> ---
>  gnu/packages/games.scm | 86
> ++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 86 insertions(+)
> 
> diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm
> index 8313c02754..4e396f3ba1 100644
> --- a/gnu/packages/games.scm
> +++ b/gnu/packages/games.scm
> @@ -231,6 +231,7 @@ (define-module (gnu packages games)
>    #:use-module (guix build-system perl)
>    #:use-module (guix build-system python)
>    #:use-module (guix build-system qt)
> +  #:use-module (guix build-system renpy)
>    #:use-module (guix build-system scons)
>    #:use-module (guix build-system trivial)
>    #:use-module ((srfi srfi-1) #:hide (zip))
> @@ -999,6 +1000,91 @@ (define-public bzflag
>      ;; The game is dual-licensed.
>      (license (list license:lgpl2.1 license:mpl2.0))))
>  
> +(define-public camelia-girls
> +  (package
> +    (name "camelia-girls")
> +    (version "0.561")
> +    (source
> +     (origin
> +       (method git-fetch)
> +       (uri (git-reference
> +             (url "https://codeberg.org/rikardn/cameliagirls.git")
> +             (commit "1285aa1261f57545d81cc0194432bd6fe6f7fe44")))
> +       (sha256
> +        (base32
> "1yq9gx2zh71c99w1pfvkv5isgm4pd3hjlixcn5vhk1l1f9f7mfc7"))
> +       (file-name (git-file-name name version))
> +       (snippet '(begin
Use #~ instead of ': The former also allows you to pull in other
packages, should you ever need to.
> +                   ;; Remove bundled dependencies.
> +                   (delete-file "game/fonts/DejaVuSansMono-
> Bold.ttf")
> +                   (delete-file "game/fonts/DejaVuSerif-
> BoldItalic.ttf")))))
> +    (build-system renpy-build-system)
> +    (arguments
> +     `(#:phases (modify-phases %standard-phases
Same as above, prefer (list #:phases #~(...))
> +                  (add-after 'install 'unbundle-fonts
> +                    (lambda* (#:key inputs outputs #:allow-other-
> keys)
> +                      (let* ((font-name-bold "DejaVuSansMono-
> Bold.ttf")
> +                             (font-name-bi "DejaVuSerif-
> BoldItalic.ttf")
> +                             (font-path-bold (string-append (assoc-
> ref inputs
> +                                                             "font-
> dejavu")
> +                                             
> "/share/fonts/truetype/"
> +                                              font-name-bold))
> +                             (font-path-bi (string-append (assoc-ref
> inputs
> +                                                           "font-
> dejavu")
> +                                            "/share/fonts/truetype/"
> +                                            font-name-bi))
Prefer search-input-file.
> +                             (target-bold (string-append (assoc-ref
> outputs
> +                                                                   
> "out")
> +                                           "/share/renpy/fonts/"
> +                                           font-name-bold))
> +                             (target-bi (string-append (assoc-ref
> outputs
> +                                                                 
> "out")
> +                                                      
> "/share/renpy/fonts/"
> +                                                       font-name-
> bi)))
> +                        (symlink font-path-bold target-bold)
> +                        (symlink font-path-bi target-bi))))
Instead of symlinking, hard-code the file name where it's used?
> +
> +                  (add-after 'install-desktop-file 'install-desktop-
> icon
> +                    (lambda* (#:key inputs outputs #:allow-other-
> keys)
> +                      (let* ((out (assoc-ref outputs "out"))
> +                             (game-name "CameliaGirls")
> +                             (desktop-path (string-append out
> +                                            "/share/applications/"
> game-name
> +                                            ".desktop"))
> +                             (icon-dir (string-append out
> +                                       
> "/share/icons/hicolor/128x128/apps"))
> +                             (orig-icon-name "icon-high.png")
> +                             (new-icon-name (string-append game-name
> +                                                           "-
> icon.png"))
> +                             (orig-icon-path (string-append icon-dir
> "/"
> +                                                            orig-
> icon-name))
> +                             (new-icon-path (string-append icon-dir
> "/"
> +                                                           new-icon-
> name)))
> +                        (let ((output-port (open-file desktop-path
> "a")))
> +                          (display (string-append "Icon=" game-name
> "-icon")
> +                                   output-port)
> +                          (newline output-port)
> +                          (close output-port))
We have a dedicated procedure for generating .desktop files.  Use that.
> +                        (substitute* desktop-path
> +                          (("^Name=")
> +                           (string-append "Name=" game-name)))
> +                        (mkdir-p icon-dir)
> +                        (install-file orig-icon-name icon-dir)
> +                        (rename-file orig-icon-path new-icon-
> path)))))))
> +
> +    (inputs (list font-dejavu))
> +    (home-page "https://codeberg.org/rikardn/cameliagirls")
> +    (synopsis
> +     "Slice-of-life visual novel featuring the student body of
> Camelia Academy")
> +    (description
> +     "CameliaGirls: @@CameliaGirls or Cewek Cewek Camelia is a
> visual novel
> +that follows the life of a transfer student as she begins her new
> life at the
> +all-girl Camelia Academy.  The game is highly dialog-driven, but
> also
> +incorporates visual gags, reminiscent of the Anime style that
> inspires it.
> +The script and interface is translated to English, Indonesian,
> Spanish,
> +German and French.  The game consists of two acts and the story is
> +unfinished.")
> +    (license license:cc-by-sa3.0)))
> +
The credits are, as far as I can see, a little unclear about some
included assets – I only see some Wikimedia links, and that's it.  I'd
be happy to be proven wrong, though, we desperately need a package to
make use of renpy-build-system :)

Cheers
hrn Nov. 15, 2023, 8:07 p.m. UTC | #2
Thanks for reviewing!

>    +       (snippet '(begin

> Use #~ instead of ': The former also allows you to pull in other
> packages, should you ever need to.

Ok I'll test.

>    +     `(#:phases (modify-phases %standard-phases

> Same as above, prefer (list #:phases #~(...))

Ok will try, I thought it was the other way around.

>    +                             (font-path-bi (string-append 
> (assoc-ref
>    inputs
>    +                                                           "font-
>    dejavu")
>    +                                            
> "/share/fonts/truetype/"
>    +                                            font-name-bi))

> Prefer search-input-file.

Ok, sounds better.

>    +                        (symlink font-path-bi target-bi))))

> Instead of symlinking, hard-code the file name where it's used?

Symlinking avoids changing the source files. Isn't that better?

> We have a dedicated procedure for generating .desktop files.  Use that.

I would have used that if it wasn't for the builder already having 
created the
desktop file. I didn't want to change the builder so I ended up with 
this solution. In
case the builder can do more automatically in the future we can remove 
the extra code.
Or do you want me to overwrite the desktop file created by the builder 
entirely?


> The credits are, as far as I can see, a little unclear about some
> included assets – I only see some Wikimedia links, and that's it.  I'd
> be happy to be proven wrong, though, we desperately need a package to
> make use of renpy-build-system :)

I checked the licenses to the best of my best ability from the 
information in license.txt.
The in game credits with more detailed license information can be found 
in the
games/scripts/credits?.txt.
Liliana Marie Prikler Nov. 15, 2023, 8:58 p.m. UTC | #3
Am Mittwoch, dem 15.11.2023 um 20:07 +0000 schrieb hrn:
> Thanks for reviewing!
> 
> >    +       (snippet '(begin
> 
> > Use #~ instead of ': The former also allows you to pull in other
> > packages, should you ever need to.
> 
> Ok I'll test.
> 
> >    +     `(#:phases (modify-phases %standard-phases
> 
> > Same as above, prefer (list #:phases #~(...))
> 
> Ok will try, I thought it was the other way around.
> 
> >    +                             (font-path-bi (string-append 
> > (assoc-ref
> >    inputs
> >    +                                                          
> > "font-
> >    dejavu")
> >    +                                            
> > "/share/fonts/truetype/"
> >    +                                            font-name-bi))
> 
> > Prefer search-input-file.
> 
> Ok, sounds better.
> 
> >    +                        (symlink font-path-bi target-bi))))
> 
> > Instead of symlinking, hard-code the file name where it's used?
> 
> Symlinking avoids changing the source files. Isn't that better?
Hard-coding avoids "copying" the data, even if it's just a symlink.

> > We have a dedicated procedure for generating .desktop files.  Use
> > that.
> 
> I would have used that if it wasn't for the builder already having 
> created the desktop file. I didn't want to change the builder so I
> ended up with this solution.  In case the builder can do more
> automatically in the future we can remove the extra code.
> Or do you want me to overwrite the desktop file created by the
> builder entirely?
You can (replace 'install-desktop-file (lambda* (...) ...)) instead. 
Alternatively, you can extend the builder to also pass the keys you
need; as hinted at, there are currently no packages using renpy-build-
system, so it's not causing any rebuilds. 

> > The credits are, as far as I can see, a little unclear about some
> > included assets – I only see some Wikimedia links, and that's it. 
> > I'd be happy to be proven wrong, though, we desperately need a
> > package to make use of renpy-build-system :)
> 
> I checked the licenses to the best of my best ability from the 
> information in license.txt.
> The in game credits with more detailed license information can be
> found in the games/scripts/credits?.txt.
It is these credits that I'm talking about.  IIUC, the assets that
aren't mentioned explicitly, have unclear licensing :)

Cheers
hrn Nov. 28, 2023, 7:11 p.m. UTC | #4
>> I checked the licenses to the best of my best ability from the
>> information in license.txt.
>> The in game credits with more detailed license information can be
>> found in the games/scripts/credits?.txt.
> It is these credits that I'm talking about.  IIUC, the assets that
> aren't mentioned explicitly, have unclear licensing :)


Turns out I wasn't thorough enough with checking the licenses of the 
assets. I found some music files that are under a CC-NC-ND license which 
is not acceptable.

It is unfortunately a common situation in games that are advertised as 
free or open source software to have some files under a non-free 
license. Thanks for pushing for a deeper look.

Being stubborn, I will go through all assets and see if the non-free 
ones could be replaced with something similar or otherwise removed.
diff mbox series

Patch

diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm
index 8313c02754..4e396f3ba1 100644
--- a/gnu/packages/games.scm
+++ b/gnu/packages/games.scm
@@ -231,6 +231,7 @@  (define-module (gnu packages games)
   #:use-module (guix build-system perl)
   #:use-module (guix build-system python)
   #:use-module (guix build-system qt)
+  #:use-module (guix build-system renpy)
   #:use-module (guix build-system scons)
   #:use-module (guix build-system trivial)
   #:use-module ((srfi srfi-1) #:hide (zip))
@@ -999,6 +1000,91 @@  (define-public bzflag
     ;; The game is dual-licensed.
     (license (list license:lgpl2.1 license:mpl2.0))))
 
+(define-public camelia-girls
+  (package
+    (name "camelia-girls")
+    (version "0.561")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://codeberg.org/rikardn/cameliagirls.git")
+             (commit "1285aa1261f57545d81cc0194432bd6fe6f7fe44")))
+       (sha256
+        (base32 "1yq9gx2zh71c99w1pfvkv5isgm4pd3hjlixcn5vhk1l1f9f7mfc7"))
+       (file-name (git-file-name name version))
+       (snippet '(begin
+                   ;; Remove bundled dependencies.
+                   (delete-file "game/fonts/DejaVuSansMono-Bold.ttf")
+                   (delete-file "game/fonts/DejaVuSerif-BoldItalic.ttf")))))
+    (build-system renpy-build-system)
+    (arguments
+     `(#:phases (modify-phases %standard-phases
+                  (add-after 'install 'unbundle-fonts
+                    (lambda* (#:key inputs outputs #:allow-other-keys)
+                      (let* ((font-name-bold "DejaVuSansMono-Bold.ttf")
+                             (font-name-bi "DejaVuSerif-BoldItalic.ttf")
+                             (font-path-bold (string-append (assoc-ref inputs
+                                                             "font-dejavu")
+                                              "/share/fonts/truetype/"
+                                              font-name-bold))
+                             (font-path-bi (string-append (assoc-ref inputs
+                                                           "font-dejavu")
+                                            "/share/fonts/truetype/"
+                                            font-name-bi))
+                             (target-bold (string-append (assoc-ref outputs
+                                                                    "out")
+                                           "/share/renpy/fonts/"
+                                           font-name-bold))
+                             (target-bi (string-append (assoc-ref outputs
+                                                                  "out")
+                                                       "/share/renpy/fonts/"
+                                                       font-name-bi)))
+                        (symlink font-path-bold target-bold)
+                        (symlink font-path-bi target-bi))))
+
+                  (add-after 'install-desktop-file 'install-desktop-icon
+                    (lambda* (#:key inputs outputs #:allow-other-keys)
+                      (let* ((out (assoc-ref outputs "out"))
+                             (game-name "CameliaGirls")
+                             (desktop-path (string-append out
+                                            "/share/applications/" game-name
+                                            ".desktop"))
+                             (icon-dir (string-append out
+                                        "/share/icons/hicolor/128x128/apps"))
+                             (orig-icon-name "icon-high.png")
+                             (new-icon-name (string-append game-name
+                                                           "-icon.png"))
+                             (orig-icon-path (string-append icon-dir "/"
+                                                            orig-icon-name))
+                             (new-icon-path (string-append icon-dir "/"
+                                                           new-icon-name)))
+                        (let ((output-port (open-file desktop-path "a")))
+                          (display (string-append "Icon=" game-name "-icon")
+                                   output-port)
+                          (newline output-port)
+                          (close output-port))
+                        (substitute* desktop-path
+                          (("^Name=")
+                           (string-append "Name=" game-name)))
+                        (mkdir-p icon-dir)
+                        (install-file orig-icon-name icon-dir)
+                        (rename-file orig-icon-path new-icon-path)))))))
+
+    (inputs (list font-dejavu))
+    (home-page "https://codeberg.org/rikardn/cameliagirls")
+    (synopsis
+     "Slice-of-life visual novel featuring the student body of Camelia Academy")
+    (description
+     "CameliaGirls: @@CameliaGirls or Cewek Cewek Camelia is a visual novel
+that follows the life of a transfer student as she begins her new life at the
+all-girl Camelia Academy.  The game is highly dialog-driven, but also
+incorporates visual gags, reminiscent of the Anime style that inspires it.
+The script and interface is translated to English, Indonesian, Spanish,
+German and French.  The game consists of two acts and the story is
+unfinished.")
+    (license license:cc-by-sa3.0)))
+
 (define-public cataclysm-dda
   (package
     (name "cataclysm-dda")