[PATCH] gnu: Add camelia-girls

  • Open
  • quality assurance status badge
Details
2 participants
  • Rikard Nordgren
  • Liliana Marie Prikler
Owner
unassigned
Submitted by
Rikard Nordgren
Severity
normal
R
R
Rikard Nordgren wrote on 12 Nov 2023 20:20
(address . guix-patches@gnu.org)(address . hrn@posteo.net)
d0b6fcff035fd1f24e8b36f1c6af43cdd7cc87d4.1699816739.git.hrn@posteo.net
* gnu/packages/games.scm (camlia-girls): New variable.

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

Toggle diff (108 lines)
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")

base-commit: c9361460dece1dbc3d2645ad3e5c79e85a2bf183
--
2.39.2
L
L
Liliana Marie Prikler wrote on 12 Nov 2023 23:45
715142aa06a75631e8478292298c3cbdbf3bbe28.camel@gmail.com
Am Sonntag, dem 12.11.2023 um 19:20 +0000 schrieb Rikard Nordgren:
Toggle quote (39 lines)
> * 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.
Toggle quote (8 lines)
> +                   ;; 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 #~(...))
Toggle quote (20 lines)
> +                  (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.
Toggle quote (16 lines)
> +                             (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?
Toggle quote (33 lines)
> +
> +                  (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.
Toggle quote (28 lines)
> +                        (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
H
(name . Liliana Marie Prikler)(address . liliana.prikler@gmail.com)(address . 67134@debbugs.gnu.org)
d83cf71c9ab345b7e9b083b6f174cac0@posteo.net
Thanks for reviewing!

Toggle quote (5 lines)
> + (snippet '(begin

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

Ok I'll test.

Toggle quote (4 lines)
> + `(#:phases (modify-phases %standard-phases

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

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

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

> Prefer search-input-file.

Ok, sounds better.

Toggle quote (4 lines)
> + (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?

Toggle quote (2 lines)
> 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?


Toggle quote (5 lines)
> 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.
L
L
Liliana Marie Prikler wrote on 15 Nov 2023 21:58
(name . hrn)(address . hrn@posteo.net)(address . 67134@debbugs.gnu.org)
491b2bfabf61c53955ae6518af4240ae32e86659.camel@gmail.com
Am Mittwoch, dem 15.11.2023 um 20:07 +0000 schrieb hrn:
Toggle quote (34 lines)
> 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.

Toggle quote (9 lines)
> > 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.

Toggle quote (9 lines)
> > 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
H
(name . Liliana Marie Prikler)(address . liliana.prikler@gmail.com)(address . 67134@debbugs.gnu.org)
ea708243e84d712d1a1681c5fcdb0c76@posteo.net
Toggle quote (8 lines)
>> 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.
?