Archived
1
0
Fork 0

Merge remote-tracking branch 'origin/master' into core-updates-frozen.

This commit is contained in:
Mathieu Othacehe 2021-10-12 16:50:47 +00:00
commit a1eca979fb
No known key found for this signature in database
GPG key ID: 8354763531769CA6
307 changed files with 24852 additions and 48445 deletions

1
.gitignore vendored
View file

@ -74,6 +74,7 @@
/etc/guix-daemon.service /etc/guix-daemon.service
/etc/guix-publish.conf /etc/guix-publish.conf
/etc/guix-publish.service /etc/guix-publish.service
/etc/guix-gc.service
/etc/init.d/guix-daemon /etc/init.d/guix-daemon
/etc/openrc/guix-daemon /etc/openrc/guix-daemon
/guix-* /guix-*

View file

@ -15,6 +15,7 @@
# Copyright © 2018 Alex Vong <alexvong1995@gmail.com> # Copyright © 2018 Alex Vong <alexvong1995@gmail.com>
# Copyright © 2019 Efraim Flashner <efraim@flashner.co.il> # Copyright © 2019 Efraim Flashner <efraim@flashner.co.il>
# Copyright © 2021 Chris Marusich <cmmarusich@gmail.com> # Copyright © 2021 Chris Marusich <cmmarusich@gmail.com>
# Copyright © 2021 Andrew Tropin <andrew@trop.in>
# #
# This file is part of GNU Guix. # This file is part of GNU Guix.
# #
@ -95,6 +96,7 @@ MODULES = \
guix/discovery.scm \ guix/discovery.scm \
guix/android-repo-download.scm \ guix/android-repo-download.scm \
guix/bzr-download.scm \ guix/bzr-download.scm \
guix/extracting-download.scm \
guix/git-download.scm \ guix/git-download.scm \
guix/hg-download.scm \ guix/hg-download.scm \
guix/swh.scm \ guix/swh.scm \
@ -254,6 +256,7 @@ MODULES = \
guix/import/egg.scm \ guix/import/egg.scm \
guix/import/elpa.scm \ guix/import/elpa.scm \
guix/import/gem.scm \ guix/import/gem.scm \
guix/import/git.scm \
guix/import/github.scm \ guix/import/github.scm \
guix/import/gnome.scm \ guix/import/gnome.scm \
guix/import/gnu.scm \ guix/import/gnu.scm \
@ -295,6 +298,8 @@ MODULES = \
guix/scripts/system.scm \ guix/scripts/system.scm \
guix/scripts/system/search.scm \ guix/scripts/system/search.scm \
guix/scripts/system/reconfigure.scm \ guix/scripts/system/reconfigure.scm \
guix/scripts/home.scm \
guix/scripts/home/import.scm \
guix/scripts/lint.scm \ guix/scripts/lint.scm \
guix/scripts/challenge.scm \ guix/scripts/challenge.scm \
guix/scripts/import/crate.scm \ guix/scripts/import/crate.scm \
@ -375,10 +380,6 @@ AUX_FILES = \
gnu/packages/aux-files/linux-libre/5.14-arm64.conf \ gnu/packages/aux-files/linux-libre/5.14-arm64.conf \
gnu/packages/aux-files/linux-libre/5.14-i686.conf \ gnu/packages/aux-files/linux-libre/5.14-i686.conf \
gnu/packages/aux-files/linux-libre/5.14-x86_64.conf \ gnu/packages/aux-files/linux-libre/5.14-x86_64.conf \
gnu/packages/aux-files/linux-libre/5.13-arm.conf \
gnu/packages/aux-files/linux-libre/5.13-arm64.conf \
gnu/packages/aux-files/linux-libre/5.13-i686.conf \
gnu/packages/aux-files/linux-libre/5.13-x86_64.conf \
gnu/packages/aux-files/linux-libre/5.10-arm.conf \ gnu/packages/aux-files/linux-libre/5.10-arm.conf \
gnu/packages/aux-files/linux-libre/5.10-arm64.conf \ gnu/packages/aux-files/linux-libre/5.10-arm64.conf \
gnu/packages/aux-files/linux-libre/5.10-i686.conf \ gnu/packages/aux-files/linux-libre/5.10-i686.conf \
@ -476,6 +477,7 @@ SCM_TESTS = \
tests/graph.scm \ tests/graph.scm \
tests/gremlin.scm \ tests/gremlin.scm \
tests/hackage.scm \ tests/hackage.scm \
tests/import-git.scm \
tests/import-utils.scm \ tests/import-utils.scm \
tests/inferior.scm \ tests/inferior.scm \
tests/lint.scm \ tests/lint.scm \
@ -549,6 +551,7 @@ SH_TESTS = \
tests/guix-package-aliases.sh \ tests/guix-package-aliases.sh \
tests/guix-package-net.sh \ tests/guix-package-net.sh \
tests/guix-system.sh \ tests/guix-system.sh \
tests/guix-home.sh \
tests/guix-archive.sh \ tests/guix-archive.sh \
tests/guix-authenticate.sh \ tests/guix-authenticate.sh \
tests/guix-environment.sh \ tests/guix-environment.sh \

18
NEWS
View file

@ -14,9 +14,25 @@ Please send Guix bug reports to bug-guix@gnu.org.
* Changes in 1.4.0 (since 1.3.0) * Changes in 1.4.0 (since 1.3.0)
** Package management ** Package management
*** New 'deb' format for the 'guix pack' command *** New deb format for the guix pack command
*** New guix import minetest command, to import Minetest extensions
*** guix import elpa now supports the non-GNU ELPA repository
*** New updater (see guix refresh): generic-git
*** --with-commit option now accepts strings returned by git describe
** Distribution ** Distribution
*** The installation script can now enable local substitute servers discovery *** The installation script can now enable local substitute servers discovery
*** More control over boot-time file system checks and repairs
*** XFS file systems can be created by the installer and mounted by label/UUID
** Programming interfaces
*** (guix records) now supports “field sanitizers”
** Noteworthy bug fixes
*** Fall back to Software Heritage when cloning a channel
(<https://issues.guix.gnu.org/44187>)
*** --with-patch can be used on packages with non-origin sources
(<https://issues.guix.gnu.org/49697>)
*** Fix pathological profile building performance in the presence of grafts
(<https://issues.guix.gnu.org/49439>)
* Changes in 1.3.0 (since 1.2.0) * Changes in 1.3.0 (since 1.2.0)
** Package management ** Package management
*** POWER9 (powerpc64le-linux) is now supported as a technology preview *** POWER9 (powerpc64le-linux) is now supported as a technology preview

View file

@ -992,9 +992,12 @@ keyword parameters for procedures that take more than four parameters.
Development is done using the Git distributed version control system. Development is done using the Git distributed version control system.
Thus, access to the repository is not strictly necessary. We welcome Thus, access to the repository is not strictly necessary. We welcome
contributions in the form of patches as produced by @code{git contributions in the form of patches as produced by @code{git
format-patch} sent to the @email{guix-patches@@gnu.org} mailing list. format-patch} sent to the @email{guix-patches@@gnu.org} mailing list
Seasoned Guix developers may also want to look at the section on commit (@pxref{submitting patches,, Submitting patches to a project, git, Git
access (@pxref{Commit Access}). User Manual}). Contributors are encouraged to take a moment to set some
Git repository options (@pxref{Configuring Git}) first, which can
improve the readability of patches. Seasoned Guix developers may also
want to look at the section on commit access (@pxref{Commit Access}).
This mailing list is backed by a Debbugs instance, which allows us to This mailing list is backed by a Debbugs instance, which allows us to
keep track of submissions (@pxref{Tracking Bugs and Patches}). Each keep track of submissions (@pxref{Tracking Bugs and Patches}). Each
@ -1011,6 +1014,12 @@ Before submitting a patch that adds or modifies a package definition,
please run through this check list: please run through this check list:
@enumerate @enumerate
@cindex @code{git format-patch}
@cindex @code{git-format-patch}
@item
We recommend to use the command @code{git format-patch --base} to
include the commit where your patch applies.
@item @item
If the authors of the packaged software provide a cryptographic If the authors of the packaged software provide a cryptographic
signature for the release tarball, make an effort to verify the signature for the release tarball, make an effort to verify the
@ -1205,11 +1214,46 @@ should not be delayed.
When a bug is resolved, please close the thread by sending an email to When a bug is resolved, please close the thread by sending an email to
@email{@var{NNN}-done@@debbugs.gnu.org}. @email{@var{NNN}-done@@debbugs.gnu.org}.
@node Configuring Git
@subsection Configuring Git
@cindex git configuration
@cindex @code{git format-patch}
@cindex @code{git send-email}
If you have not done so already, you may wish to set a name and email
that will be associated with your commits (@pxref{telling git your name,
, Telling Git your name, git, Git User Manual}). If you wish to use a
different name or email just for commits in this respository, you can
use @command{git config --local}, or edit @file{.git/config} in the
repository instead of @file{~/.gitconfig}.
We provide some default settings in @file{etc/git/gitconfig} which
modify how patches are generated, making them easier to read and apply.
These settings can be applied by manually copying them to
@file{.git/config} in your checkout, or by telling Git to include the
whole file:
@example
git config --local include.path ../etc/git/gitconfig
@end example
From then on, any changes to @file{etc/git/gitconfig} would
automatically take effect.
Since the first patch in a series must be sent separately
(@pxref{Sending a Patch Series}), it can also be helpful to tell
@command{git format-patch} to handle the e-mail threading instead of
@command{git send-email}:
@example
git config --local format.thread shallow
git config --local sendemail.thread no
@end example
@unnumberedsubsec Sending a Patch Series @unnumberedsubsec Sending a Patch Series
@anchor{Sending a Patch Series} @anchor{Sending a Patch Series}
@cindex patch series @cindex patch series
@cindex @code{git send-email} @cindex @code{git send-email}
@cindex @code{git-send-email}
When sending a patch series (e.g., using @code{git send-email}), please When sending a patch series (e.g., using @code{git send-email}), please
first send one message to @email{guix-patches@@gnu.org}, and then send first send one message to @email{guix-patches@@gnu.org}, and then send

View file

@ -57,10 +57,12 @@ its API, and related concepts.
@c TRANSLATORS: You can replace the following paragraph with information on @c TRANSLATORS: You can replace the following paragraph with information on
@c how to join your own translation team and how to report issues with the @c how to join your own translation team and how to report issues with the
@c translation. @c translation.
If you would like to translate this document in your native language, consider This manual is also available in French (@pxref{Top,,, guix-cookbook.fr,
joining Livre de recettes de GNU Guix}) and German (@pxref{Top,,,
guix-cookbook.de, GNU-Guix-Kochbuch}). If you would like to translate
this document in your native language, consider joining
@uref{https://translate.fedoraproject.org/projects/guix/documentation-cookbook, @uref{https://translate.fedoraproject.org/projects/guix/documentation-cookbook,
Weblate}. Weblate} (@pxref{Translating Guix,,, guix, GNU Guix reference manual}).
@menu @menu
* Scheme tutorials:: Meet your new favorite language! * Scheme tutorials:: Meet your new favorite language!

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,24 @@
(use-modules (gnu home)
(gnu home services)
(gnu home services shells)
(gnu services)
(gnu packages admin)
(guix gexp))
(home-environment
(packages (list htop))
(services
(list
(service home-bash-service-type
(home-bash-configuration
(guix-defaults? #t)
(bash-profile '("\
export HISTFILE=$XDG_CACHE_HOME/.bash_history"))))
(simple-service 'test-config
home-files-service-type
(list `("config/test.conf"
,(plain-file "tmp-file.txt"
"the content of ~/.config/test.conf")))))))

View file

@ -1,9 +1,9 @@
# htmlxref.cnf - reference file for free Texinfo manuals on the web. # htmlxref.cnf - reference file for free Texinfo manuals on the web.
# Modified by Ludovic Courtès <ludo@gnu.org> for the GNU Guix manual. # Modified by Ludovic Courtès <ludo@gnu.org> for the GNU Guix manual.
htmlxrefversion=2020-01-11.22; # UTC htmlxrefversion=2021-09-24.23; # UTC
# Copyright 2010, 2011, 2012, 2013, 2014, 2015, 2019, 2020 Free Software Foundation, Inc. # Copyright 2010-2020 Free Software Foundation, Inc.
# #
# Copying and distribution of this file, with or without modification, # Copying and distribution of this file, with or without modification,
# are permitted in any medium without royalty provided the copyright # are permitted in any medium without royalty provided the copyright
@ -110,6 +110,10 @@ cpio node ${GS}/cpio/manual/html_node/
cssc node ${GS}/cssc/manual/ cssc node ${GS}/cssc/manual/
CUIRASS = ${GS}/guix/cuirass/manual
cuirass mono ${CUIRASS}/cuirass.html
cuirass node ${CUIRASS}/html_node/
CVS = ${GS}/trans-coord/manual CVS = ${GS}/trans-coord/manual
cvs mono ${CVS}/cvs/cvs.html cvs mono ${CVS}/cvs/cvs.html
cvs node ${CVS}/cvs/html_node/ cvs node ${CVS}/cvs/html_node/
@ -118,6 +122,8 @@ ddd mono ${GS}/ddd/manual/html_mono/ddd.html
ddrescue mono ${GS}/ddrescue/manual/ddrescue_manual.html ddrescue mono ${GS}/ddrescue/manual/ddrescue_manual.html
dejagnu node ${GS}/dejagnu/manual/
DICO = https://puszcza.gnu.org.ua/software/dico/manual DICO = https://puszcza.gnu.org.ua/software/dico/manual
dico mono ${DICO}/dico.html dico mono ${DICO}/dico.html
dico chapter ${DICO}/html_chapter/ dico chapter ${DICO}/html_chapter/
@ -127,6 +133,9 @@ dico node ${DICO}/html_node/
diffutils mono ${GS}/diffutils/manual/diffutils diffutils mono ${GS}/diffutils/manual/diffutils
diffutils node ${GS}/diffutils/manual/html_node/ diffutils node ${GS}/diffutils/manual/html_node/
dmd mono ${GS}/dmd/manual/dmd
dmd node ${GS}/dmd/manual/html_node/
ed mono ${GS}/ed/manual/ed_manual.html ed mono ${GS}/ed/manual/ed_manual.html
EMACS = ${GS}/emacs/manual EMACS = ${GS}/emacs/manual
@ -181,6 +190,9 @@ emacs node ${EMACS}/html_node/emacs/
idlwave mono ${EMACS}/html_mono/idlwave.html idlwave mono ${EMACS}/html_mono/idlwave.html
idlwave node ${EMACS}/html_node/idlwave/ idlwave node ${EMACS}/html_node/idlwave/
# #
info mono ${EMACS}/html_mono/info.html
info node ${EMACS}/html_node/info/
#
message mono ${EMACS}/html_mono/message.html message mono ${EMACS}/html_mono/message.html
message node ${EMACS}/html_node/message/ message node ${EMACS}/html_node/message/
# #
@ -259,7 +271,7 @@ gcc node ${GCC}/gcc/
gcj node ${GCC}/gcj/ gcj node ${GCC}/gcj/
gfortran node ${GCC}/gfortran/ gfortran node ${GCC}/gfortran/
gnat_rm node ${GCC}/gnat_rm/ gnat_rm node ${GCC}/gnat_rm/
gnat_ugn_unw node ${GCC}/gnat_ugn_unw/ gnat_ugn node ${GCC}/gnat_ugn/
libgomp node ${GCC}/libgomp/ libgomp node ${GCC}/libgomp/
libstdc++ node ${GCC}/libstdc++/ libstdc++ node ${GCC}/libstdc++/
# #
@ -288,6 +300,11 @@ gettext node ${GS}/gettext/manual/html_node/
gforth node https://www.complang.tuwien.ac.at/forth/gforth/Docs-html/ gforth node https://www.complang.tuwien.ac.at/forth/gforth/Docs-html/
# Also found at:
# https://mirrors.edge.kernel.org/pub/software/scm/git/docs/user-manual.html
# https://git.github.io/htmldocs/user-manual.html
git mono https://git-scm.com/docs/user-manual
global mono ${GS}/global/manual/global.html global mono ${GS}/global/manual/global.html
gmediaserver node ${GS}/gmediaserver/manual/ gmediaserver node ${GS}/gmediaserver/manual/
@ -335,8 +352,8 @@ GNUSTANDARDS = ${G}/prep
standards mono ${GNUSTANDARDS}/standards/standards.html standards mono ${GNUSTANDARDS}/standards/standards.html
standards node ${GNUSTANDARDS}/standards/html_node/ standards node ${GNUSTANDARDS}/standards/html_node/
gnutls mono http://gnutls.org/manual/gnutls.html gnutls mono ${GS}/gnutls/manual/gnutls.html
gnutls node http://gnutls.org/manual/html_node/ gnutls node ${GS}/gnutls/manual/html_node/
gnutls-guile mono http://gnutls.org/manual/gnutls-guile.html gnutls-guile mono http://gnutls.org/manual/gnutls-guile.html
gnutls-guile node http://gnutls.org/manual/gnutls-guile/ gnutls-guile node http://gnutls.org/manual/gnutls-guile/
@ -397,18 +414,27 @@ guile-gtk node ${GS}/guile-gtk/docs/guile-gtk/
guile-rpc mono ${GS}/guile-rpc/manual/guile-rpc.html guile-rpc mono ${GS}/guile-rpc/manual/guile-rpc.html
guile-rpc node ${GS}/guile-rpc/manual/html_node/ guile-rpc node ${GS}/guile-rpc/manual/html_node/
guix.de mono ${GS}/guix/manual/de/guix.de.html GUIX = ${GS}/guix/manual
guix.de node ${GS}/guix/manual/de/html_node/ guix.de mono ${GUIX}/de/guix.de.html
guix.es mono ${GS}/guix/manual/es/guix.es.html guix.de node ${GUIX}/de/html_node/
guix.es node ${GS}/guix/manual/es/html_node/ guix.es mono ${GUIX}/es/guix.es.html
guix.fr mono ${GS}/guix/manual/fr/guix.fr.html guix.es node ${GUIX}/es/html_node/
guix.fr node ${GS}/guix/manual/fr/html_node/ guix.fr mono ${GUIX}/fr/guix.fr.html
guix.ru mono ${GS}/guix/manual/ru/guix.ru.html guix.fr node ${GUIX}/fr/html_node/
guix.ru node ${GS}/guix/manual/ru/html_node/ guix.ru mono ${GUIX}/ru/guix.ru.html
guix.zh_CN mono ${GS}/guix/manual/zh-cn/guix.zh_CN.html guix.ru node ${GUIX}/ru/html_node/
guix.zh_CN node ${GS}/guix/manual/zh-cn/html_node/ guix.zh_CN mono ${GUIX}/zh-cn/guix.zh_CN.html
guix mono ${GS}/guix/manual/en/guix.html guix.zh_CN node ${GUIX}/zh-cn/html_node/
guix node ${GS}/guix/manual/en/html_node/ guix mono ${GUIX}/en/guix.html
guix node ${GUIX}/en/html_node/
GUIX_COOKBOOK = ${GS}/guix/cookbook
guix-cookbook.de mono ${GUIX_COOKBOOK}/de/guix-cookbook.html
guix-cookbook.de node ${GUIX_COOKBOOK}/de/html_node/
guix-cookbook.fr mono ${GUIX_COOKBOOK}/fr/guix-cookbook.html
guix-cookbook.fr node ${GUIX_COOKBOOK}/fr/html_node/
guix-cookbook mono ${GUIX_COOKBOOK}/en/guix-cookbook.html
guix-cookbook node ${GUIX_COOKBOOK}/en/html_node/
gv mono ${GS}/gv/manual/gv.html gv mono ${GS}/gv/manual/gv.html
gv node ${GS}/gv/manual/html_node/ gv node ${GS}/gv/manual/html_node/
@ -503,18 +529,21 @@ mcron node ${GS}/mcron/manual/html_node/
mdk mono ${GS}/mdk/manual/mdk.html mdk mono ${GS}/mdk/manual/mdk.html
mdk node ${GS}/mdk/manual/html_node/ mdk node ${GS}/mdk/manual/html_node/
METAEXCHANGE = http://ftp.gwdg.de/pub/gnu2/iwfmdh/doc/texinfo METAEXCHANGE = https://ftp.gwdg.de/pub/gnu2/iwfmdh/doc/texinfo
iwf_mh node ${METAEXCHANGE}/iwf_mh.html iwf_mh node ${METAEXCHANGE}/iwf_mh.html
scantest node ${METAEXCHANGE}/scantest.html scantest node ${METAEXCHANGE}/scantest.html
mes mono ${GS}/mes/manual/mes.html mes mono ${GS}/mes/manual/mes.html
mes node ${GS}/mes/manual/html_node/ mes node ${GS}/mes/manual/html_node/
MIT_SCHEME = ${GS}/mit-scheme/documentation MIT_SCHEME = ${GS}/mit-scheme/documentation/stable
mit-scheme-ref mono ${MIT_SCHEME}/mit-scheme-ref.html
mit-scheme-ref node ${MIT_SCHEME}/mit-scheme-ref/ mit-scheme-ref node ${MIT_SCHEME}/mit-scheme-ref/
mit-scheme-user mono ${MIT_SCHEME}/mit-scheme-user.html
mit-scheme-user node ${MIT_SCHEME}/mit-scheme-user/ mit-scheme-user node ${MIT_SCHEME}/mit-scheme-user/
sos mono ${MIT_SCHEME}/mit-scheme-sos.html
sos node ${MIT_SCHEME}/mit-scheme-sos/ sos node ${MIT_SCHEME}/mit-scheme-sos/
mit-scheme-imail node ${MIT_SCHEME}/mit-scheme-imail/ mit-scheme-imail mono ${MIT_SCHEME}/mit-scheme-imail.html
moe mono ${GS}/moe/manual/moe_manual.html moe mono ${GS}/moe/manual/moe_manual.html
@ -572,7 +601,7 @@ R = https://cran.r-project.org/doc/manuals
rcs mono ${GS}/rcs/manual/rcs.html rcs mono ${GS}/rcs/manual/rcs.html
rcs node ${GS}/rcs/manual/html_node/ rcs node ${GS}/rcs/manual/html_node/
READLINE = http://cnswww.cns.cwru.edu/php/chet/readline READLINE = https://tiswww.cwru.edu/php/chet/readline
readline mono ${READLINE}/readline.html readline mono ${READLINE}/readline.html
rluserman mono ${READLINE}/rluserman.html rluserman mono ${READLINE}/rluserman.html
history mono ${READLINE}/history.html history mono ${READLINE}/history.html
@ -629,7 +658,7 @@ swbis mono ${GS}/swbis/manual.html
tar mono ${GS}/tar/manual/tar.html tar mono ${GS}/tar/manual/tar.html
tar chapter ${GS}/tar/manual/html_chapter/ tar chapter ${GS}/tar/manual/html_chapter/
tar section ${GS}/tar/manual/html_section/ tar section ${GS}/tar/manual/html_section/
tar node ${GS}/autoconf/manual/html_node/ tar node ${GS}/tar/manual/html_node/
teseq mono ${GS}/teseq/teseq.html teseq mono ${GS}/teseq/teseq.html
teseq node ${GS}/teseq/html_node/ teseq node ${GS}/teseq/html_node/
@ -637,9 +666,6 @@ teseq node ${GS}/teseq/html_node/
TEXINFO = ${GS}/texinfo/manual TEXINFO = ${GS}/texinfo/manual
texinfo mono ${TEXINFO}/texinfo/texinfo.html texinfo mono ${TEXINFO}/texinfo/texinfo.html
texinfo node ${TEXINFO}/texinfo/html_node/ texinfo node ${TEXINFO}/texinfo/html_node/
#
info mono ${TEXINFO}/info/info.html
info node ${TEXINFO}/info/html_node/
# #
info-stnd mono ${TEXINFO}/info-stnd/info-stnd.html info-stnd mono ${TEXINFO}/info-stnd/info-stnd.html
info-stnd node ${TEXINFO}/info-stnd/html_node/ info-stnd node ${TEXINFO}/info-stnd/html_node/

View file

@ -5,6 +5,7 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2020, 2021 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2020, 2021 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2021 Sarah Morgensen <iskarian@mgsn.dev> ;;; Copyright © 2021 Sarah Morgensen <iskarian@mgsn.dev>
;;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -288,6 +289,15 @@ ChangeLog entry."
(break-string-with-newlines message/f 72) (break-string-with-newlines message/f 72)
(break-string-with-newlines changelog/f 72)))) (break-string-with-newlines changelog/f 72))))
(define (add-copyright-line line)
"Add the copyright line on LINE to the previous commit."
(let ((author (match:substring
(string-match "^\\+;;; Copyright ©[^[:alpha:]]+(.*)$" line)
1)))
(format
(current-output-port) "Amend and add copyright line for ~a~%" author)
(system* "git" "commit" "--amend" "--no-edit")))
(define (group-hunks-by-sexp hunks) (define (group-hunks-by-sexp hunks)
"Return a list of pairs associating all hunks with the S-expression they are "Return a list of pairs associating all hunks with the S-expression they are
modifying." modifying."
@ -370,15 +380,23 @@ modifying."
(error "Cannot apply"))) (error "Cannot apply")))
(usleep %delay)) (usleep %delay))
hunks) hunks)
(change-commit-message* (hunk-file-name (first hunks)) (define copyright-line
old new) (any (lambda (line) (and=> (string-prefix? "+;;; Copyright ©" line)
(let ((port (open-pipe* OPEN_WRITE "git" "commit" "-F" "-"))) (const line)))
(hunk-diff-lines (first hunks))))
(cond
(copyright-line
(add-copyright-line copyright-line))
(else
(let ((port (open-pipe* OPEN_WRITE "git" "commit" "-F" "-")))
(change-commit-message* (hunk-file-name (first hunks))
old new)
(change-commit-message* (hunk-file-name (first hunks)) (change-commit-message* (hunk-file-name (first hunks))
old new old new
port) port)
(usleep %delay) (usleep %delay)
(unless (eqv? 0 (status:exit-val (close-pipe port))) (unless (eqv? 0 (status:exit-val (close-pipe port)))
(error "Cannot commit"))))) (error "Cannot commit")))))))
;; XXX: we recompute the hunks here because previous ;; XXX: we recompute the hunks here because previous
;; insertions lead to offsets. ;; insertions lead to offsets.
(new+old+hunks (diff-info))))))) (new+old+hunks (diff-info)))))))

View file

@ -32,7 +32,7 @@ _guix_complete_command ()
| grep '^ ' \ | grep '^ ' \
| sed '-es/^ *\([a-z-]\+\).*$/\1/g')" | sed '-es/^ *\([a-z-]\+\).*$/\1/g')"
fi fi
COMPREPLY=($(compgen -W "$_guix_commands" -- "$word_at_point")) COMPREPLY+=($(compgen -W "$_guix_commands" -- "$word_at_point"))
} }
_guix_complete_subcommand () _guix_complete_subcommand ()
@ -41,7 +41,7 @@ _guix_complete_subcommand ()
local subcommands="$(${COMP_WORDS[0]} $command --help 2> /dev/null \ local subcommands="$(${COMP_WORDS[0]} $command --help 2> /dev/null \
| grep '^ [a-z]' \ | grep '^ [a-z]' \
| sed -e's/^ \+\([a-z-]\+\).*$/\1/g')" | sed -e's/^ \+\([a-z-]\+\).*$/\1/g')"
COMPREPLY=($(compgen -W "$subcommands" -- "${COMP_WORDS[$COMP_CWORD]}")) COMPREPLY+=($(compgen -W "$subcommands" -- "${COMP_WORDS[$COMP_CWORD]}"))
} }
_guix_complete_available_package () _guix_complete_available_package ()
@ -54,7 +54,7 @@ _guix_complete_available_package ()
_guix_available_packages="$(${COMP_WORDS[0]} package -A 2> /dev/null \ _guix_available_packages="$(${COMP_WORDS[0]} package -A 2> /dev/null \
| cut -f1)" | cut -f1)"
fi fi
COMPREPLY=($(compgen -W "$_guix_available_packages" -- "$prefix")) COMPREPLY+=($(compgen -W "$_guix_available_packages" -- "$prefix"))
} }
_guix_complete_installed_package () _guix_complete_installed_package ()
@ -64,7 +64,7 @@ _guix_complete_installed_package ()
local prefix="$1" local prefix="$1"
local packages="$(${COMP_WORDS[0]} package -I "^$prefix" 2> /dev/null \ local packages="$(${COMP_WORDS[0]} package -I "^$prefix" 2> /dev/null \
| cut -f1)" | cut -f1)"
COMPREPLY=($(compgen -W "$packages" -- "$prefix")) COMPREPLY+=($(compgen -W "$packages" -- "$prefix"))
} }
_guix_complete_option () _guix_complete_option ()
@ -79,7 +79,7 @@ _guix_complete_option ()
| grep '^ \+-' \ | grep '^ \+-' \
| sed -e's/^.*--\([a-zA-Z0-9_-]\+\)\(=\?\).*/--\1\2/g')" | sed -e's/^.*--\([a-zA-Z0-9_-]\+\)\(=\?\).*/--\1\2/g')"
compopt -o nospace compopt -o nospace
COMPREPLY=($(compgen -W "$options" -- "$2")) COMPREPLY+=($(compgen -W "$options" -- "$2"))
} }
_guix_is_option () _guix_is_option ()
@ -171,10 +171,22 @@ _guix_complete_file ()
COMPREPLY=() COMPREPLY=()
} }
_guix_complete_available_package_or_store_file ()
{
_guix_complete_available_package "$@"
# The current _guix_complete_file implementation doesn't compose (append to
# COMPREPLY), so we suggest file names only if no package names matched.
if [[ -z "$COMPREPLY" ]]
then
_guix_complete_file # TODO: restrict to store files
fi
}
_guix_complete_pid () _guix_complete_pid ()
{ {
local pids="$(cd /proc; echo [0-9]*)" local pids="$(cd /proc; echo [0-9]*)"
COMPREPLY=($(compgen -W "$pids" -- "$1")) COMPREPLY+=($(compgen -W "$pids" -- "$1"))
} }
_guix_complete () _guix_complete ()
@ -237,15 +249,7 @@ _guix_complete ()
else else
_guix_complete_available_package "$word_at_point" _guix_complete_available_package "$word_at_point"
fi fi
elif [[ "$command" = "remove" ]] elif [[ "$command" = "upgrade" || "$command" = "remove" ]]
then
if _guix_is_dash_L || _guix_is_dash_m || _guix_is_dash_p
then
_guix_complete_file
else
_guix_complete_installed_package "$word_at_point"
fi
elif [[ "$command" = "upgrade" ]]
then then
if _guix_is_dash_L || _guix_is_dash_m || _guix_is_dash_p if _guix_is_dash_L || _guix_is_dash_m || _guix_is_dash_p
then then
@ -259,7 +263,7 @@ _guix_complete ()
then then
_guix_complete_file _guix_complete_file
else else
_guix_complete_available_package "$word_at_point" _guix_complete_available_package_or_store_file "$word_at_point"
fi fi
elif [[ "$command" = "environment" ]] elif [[ "$command" = "environment" ]]
then then
@ -272,13 +276,16 @@ _guix_complete ()
else else
_guix_complete_available_package "$word_at_point" _guix_complete_available_package "$word_at_point"
fi fi
elif [[ "$command" = "download" ]] elif [[ "$command" = "download" || "$command" = "gc" || "$command" = "hash" ]]
then then
_guix_complete_file _guix_complete_file
elif [[ "$command" = "size" ]]
then
_guix_complete_available_package_or_store_file "$word_at_point"
elif [[ "$command" = "system" ]] elif [[ "$command" = "system" ]]
then then
case $COMP_CWORD in case $((COMP_CWORD - command_index)) in
2) _guix_complete_subcommand;; 1) _guix_complete_subcommand;;
*) _guix_complete_file;; # TODO: restrict to *.scm *) _guix_complete_file;; # TODO: restrict to *.scm
esac esac
elif [[ "$command" = "pull" ]] elif [[ "$command" = "pull" ]]
@ -297,22 +304,21 @@ _guix_complete ()
fi fi
elif [[ "$command" = "container" ]] elif [[ "$command" = "container" ]]
then then
case $COMP_CWORD in case $((COMP_CWORD - command_index)) in
2) _guix_complete_subcommand;; 1) _guix_complete_subcommand;;
3) _guix_complete_pid "$word_at_point";; 2) _guix_complete_pid "$word_at_point";;
*) _guix_complete_file;; *) _guix_complete_file;;
esac esac
elif [[ "$command" = "import" ]] elif [[ "$command" = "import" ]]
then then
_guix_complete_subcommand _guix_complete_subcommand
elif [[ "$command" = "hash" || "$command" = "gc" ]]
then
_guix_complete_file
elif [[ "$command" = "weather" ]] elif [[ "$command" = "weather" ]]
then then
if _guix_is_dash_m if _guix_is_dash_m
then then
_guix_complete_file _guix_complete_file
else
_guix_complete_available_package "$word_at_point"
fi fi
else else
_guix_complete_available_package "$word_at_point" _guix_complete_available_package "$word_at_point"

View file

@ -108,5 +108,5 @@ an empty directory if ORIGIN could not be disassembled."
(manifest (manifest
(list (manifest-entry (list (manifest-entry
(name "disarchive-collection") (name "disarchive-collection")
(version (length origins)) (version (number->string (length origins)))
(item (disarchive-collection origins)))))) (item (disarchive-collection origins))))))

20
etc/guix-gc.service.in Normal file
View file

@ -0,0 +1,20 @@
# This is a "service unit file" for the systemd init system to perform a
# one-shot 'guix gc' operation. It is meant to be triggered by a timer.
# Drop it in /etc/systemd/system or similar together with 'guix-gc.timer'
# to set it up.
[Unit]
Description=Discard unused Guix store items
[Service]
Type=oneshot
# Customize the 'guix gc' arguments to fit your needs.
ExecStart=@localstatedir@/guix/profiles/per-user/root/current-guix/bin/guix gc -d 1m -F 10G
PrivateDevices=yes
PrivateNetwork=yes
PrivateUsers=no
ProtectKernelTunables=yes
ProtectKernelModules=yes
ProtectControlGroups=yes
MemoryDenyWriteExecute=yes
SystemCallFilter=@default @file-system @basic-io @system-service

15
etc/guix-gc.timer Normal file
View file

@ -0,0 +1,15 @@
# This is a "timer unit file" for the systemd init system to trigger
# 'guix-gc.service' periodically. Drop it in /etc/systemd/system or similar
# together with 'guix-gc.service' to set it up.
[Unit]
Description=Discard unused Guix store items
[Timer]
OnCalendar=weekly
AccuracySec=1h
Persistent=true
RandomizedDelaySec=6000
[Install]
WantedBy=timers.target

View file

@ -139,12 +139,12 @@ chk_gpg_keyring()
required to verify the Guix binary signature: $gpg_key_id. required to verify the Guix binary signature: $gpg_key_id.
Would you like me to fetch it for you? (yes/no)"; then Would you like me to fetch it for you? (yes/no)"; then
wget "https://sv.gnu.org/people/viewgpg.php?user_id=$user_id" \ wget "https://sv.gnu.org/people/viewgpg.php?user_id=$user_id" \
-qO - | gpg --import - --no-verbose -O- | gpg --import -
else else
_err "${ERR}Missing OpenPGP public key ($gpg_key_id). _err "${ERR}Missing OpenPGP public key ($gpg_key_id).
Fetch it with this command: Fetch it with this command:
wget \"https://sv.gnu.org/people/viewgpg.php?user_id=$user_id\" -qO - | \ wget \"https://sv.gnu.org/people/viewgpg.php?user_id=$user_id\" -O - | \
sudo -i gpg --import -" sudo -i gpg --import -"
exit_flag=yes exit_flag=yes
fi fi
@ -272,7 +272,7 @@ guix_get_bin_list()
_debug "--- [ ${FUNCNAME[0]} ] ---" _debug "--- [ ${FUNCNAME[0]} ] ---"
# Filter only version and architecture # Filter only version and architecture
bin_ver_ls=("$(wget -qO- "$gnu_url" \ bin_ver_ls=("$(wget "$gnu_url" --no-verbose -O- \
| sed -n -e 's/.*guix-binary-\([0-9.]*[a-z0-9]*\)\..*.tar.xz.*/\1/p' \ | sed -n -e 's/.*guix-binary-\([0-9.]*[a-z0-9]*\)\..*.tar.xz.*/\1/p' \
| sort -Vu)") | sort -Vu)")
@ -305,7 +305,7 @@ guix_get_bin()
_msg "${INF}Downloading Guix release archive" _msg "${INF}Downloading Guix release archive"
wget --help | grep -q '\--show-progress' \ wget --help | grep -q '\--show-progress' \
&& wget_args=("-q" "--show-progress") && wget_args=("--no-verbose" "--show-progress")
if wget "${wget_args[@]}" -P "$dl_path" \ if wget "${wget_args[@]}" -P "$dl_path" \
"${url}/${bin_ver}.tar.xz" "${url}/${bin_ver}.tar.xz.sig"; then "${url}/${bin_ver}.tar.xz" "${url}/${bin_ver}.tar.xz.sig"; then

View file

@ -15,6 +15,7 @@
;; Copyright © 2021 Chris Marusich <cmmarusich@gmail.com> ;; Copyright © 2021 Chris Marusich <cmmarusich@gmail.com>
;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be> ;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz> ;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz>
;; Copyright © 2021 Andrew Tropin <andrew@trop.in>
;; ;;
;; Copying and distribution of this file, with or without modification, are ;; Copying and distribution of this file, with or without modification, are
;; permitted in any medium without royalty provided the copyright notice and ;; permitted in any medium without royalty provided the copyright notice and
@ -22,6 +23,137 @@
(channel-news (channel-news
(version 0) (version 0)
(entry (commit "a2324d8b56eabf8117bca220a507cc791edffd2e")
(title
(en "Guix Home is a part of GNU Guix")
(de "Guix Home ist jetzt Teil von GNU Guix")
(ru "Guix Home теперь поставляется в составе GNU Guix"))
(body
(en "Guix Home splitted out from rde project and now is a part of
Guix proper. It is available as a @emph{technology preview} and thus subject
to change.
The new @command{guix home} command with its actions allows users to
manage their packages and configurations (aka. dotfiles) in a declarative way,
similar to how many people manage their system with @command{guix system}.
Take a look at available actions and arguments:
@example
guix home --help
@end example
See @command{info \"(guix) Home Configuration\"} for more information.")
(de "Guix Home ist aus dem rde-Projekt ins offizielle Guix übernommen
worden. Es ist als @emph{Technologievorschau} bereits verfügbar, aber die
Schnittstelle kann sich in Zukunft noch ändern.
Der neue Befehl @command{guix home} ermöglicht es, die Pakete und
Konfigurationsdateien (Dotfiles) für ein Benutzerkonto im deklarativen Stil zu
verwalten. Es ist analog dazu, wie man @command{guix system} benutzen kann, um
sein System zu verwalten.
Werfen Sie einen Blick auf die verfügbaren Aktionen und Argumente:
@example
guix home --help
@end example
Führen Sie für mehr Informationen @command{info \"(guix) Home Configuration\"}
aus.")
(ru "Guix Home отделился от проекта rde и теперь является частью
Guix. Новая команда @command{guix home} даёт возможность пользователям
управлять их пакетами и конфигурациями (дотфайлами) для них в декларативном
стиле, аналогично тому, как многие люди управляют своими системами с помощью
@command{guix system}.
Чтобы получить список доступных действий и аргументов:
@example
guix home --help
@end example
Смотрите @command{info \"(guix) Home Configuration\"} для получения более
детальных сведений.")))
(entry (commit "5b32ad4f6f555d305659cee825879df075b06331")
(title
(en "New @option{--max-depth} option for @command{guix graph}")
(de "Neue Option @option{--max-depth} für @command{guix graph}")
(fr "Nouvelle option @option{--max-depth} pour @command{guix graph}"))
(body
(en "The @command{guix graph} command has a new @option{--max-depth}
(or @option{-M}) option, which allows you to restrict a graph to the given
depth---very useful when visualizing large graphs. For example, the command
below displays, using the @code{xdot} package, the dependency graph of
LibreOffice, including only nodes that are at most at distance 2 of
LibreOffice itself:
@example
guix graph -M 2 libreoffice | xdot -
@end example
See @command{info \"(guix) Invoking guix graph\"} for more information.")
(de "Der Befehl @command{guix graph} verfügt über eine neue
Befehlszeilenoption @option{--max-depth} (oder @option{-M}), mit der
Sie einen Graphen auf die angegebene Tiefe einschränken. Das ist vor
allem bei großen Graphen nützlich; zum Beispiel zeigt der folgende
Befehl, unter Verwendung des Pakets @code{xdot}, den
Abhängigkeitsgraphen von LibreOffice unter Ausschluss der Knoten, die
eine Distanz größer als 2 von LibreOffice selbst haben:
@example
guix graph -M 2 libreoffice | xdot -
@end example
Führen Sie @code{info \"(guix.de) Aufruf von guix graph\"} aus, um mehr zu
erfahren.")
(fr "La commande @command{guix graph} dispose d'une nouvelle option
@option{--max-depth} (ou @option{-M}) pour restreindre la profondeur d'un
graphe---très utile pour visualiser des gros graphes. Par exemple, la
commande ci-dessous affiche, en utilisant @code{xdot}, le graphe de dépendance
de LibreOffice en n'incluant que les nœuds qui sont au plus à distance 2 de
LibreOffice soi-même :
@example
guix graph -M 2 libreoffice | xdot -
@end example
Voir @command{info \"(guix.fr) Invoquer guix graph\"} pour plus
d'informations.")))
(entry (commit "05f44c2d858a1e7b13c90362c35fa86bdc4d5a24")
(title
(en "Channel clones fall back to Software Heritage")
(de "Zum Klonen von Kanälen wird notfalls auf Software Heritage zurückgegriffen")
(fr "Les clones de canaux peuvent recourir à Software Heritage"))
(body
(en "When @command{guix time-machine} or @command{guix pull} fetches
a channel pinned to a specific commit, it now automatically falls back to
cloning it from the Software Heritage archive if the original URL is
unreachable. This contributes to long-term reproducibility. See
@command{info \"(guix) Replicating Guix\"}.
Automatic fallback also works for other Git clones made on your behalf, such
as when using @option{--with-commit} and related package transformation
options.")
(de "Wenn bei @command{guix time-machine} oder @command{guix
pull} ein bestimmter Commit eines Kanals bezogen werden soll, wird
jetzt für den Fall, dass die ursprüngliche URL unerreichbar ist,
automatisch vom Software-Heritage-Archiv geklont. Das trägt zur
langfristigen Reproduzierbarkeit bei. Siehe @command{info \"(guix.de)
Guix nachbilden\"}.
Der automatische Rückgriff auf Software Heritage findet auch
Verwendung bei anderen Arten von Git-Klon, die Guix durchführt, z.B.@:
wenn Sie @option{--with-commit} und ähnliche Paketumwandlungsoptionen
einsetzen.")
(fr "Quand la commande @command{guix time-machine} ou @command{guix
pull} récupère un canal fixé à une révision spécifique, elle est maintenant
capable de le cloner depuis l'archive Software Heritage si l'URL initiale
n'est plus disponible. Cela contribue à la reproductibilité à long terme.
Voir @command{info \"(guix.fr) Répliquer Guix\"}.
Ce recours à Software Heritage fonctionne aussi pour les autres clones Git que
Guix peut faire, comme lorsqu'on utilise @option{--with-commit} et les options
de transformation de paquet similaires.")))
(entry (commit "f23803af2018a148fb088f2516d79c20d6bf95f0") (entry (commit "f23803af2018a148fb088f2516d79c20d6bf95f0")
(title (title

View file

@ -166,14 +166,23 @@ if DEVICE does not contain an ext2 file system."
(sub-bytevector sblock 104 16)) (sub-bytevector sblock 104 16))
(define (ext2-superblock-volume-name sblock) (define (ext2-superblock-volume-name sblock)
"Return the volume name of SBLOCK as a string of at most 16 characters, or "Return the volume name of ext2 superblock SBLOCK as a string of at most 16
#f if SBLOCK has no volume name." characters, or #f if SBLOCK has no volume name."
(null-terminated-latin1->string (sub-bytevector sblock 120 16))) (null-terminated-latin1->string (sub-bytevector sblock 120 16)))
(define (check-ext2-file-system device) (define (check-ext2-file-system device force? repair)
"Return the health of an ext2 file system on DEVICE." "Return the health of an unmounted ext2 file system on DEVICE. If FORCE? is
true, check the file system even if it's marked as clean. If REPAIR is false,
do not write to the file system to fix errors. If it's #t, fix all
errors. Otherwise, fix only those considered safe to repair automatically."
(match (status:exit-val (match (status:exit-val
(system* "e2fsck" "-v" "-p" "-C" "0" device)) (apply system* `("e2fsck" "-v" "-C" "0"
,@(if force? '("-f") '())
,@(match repair
(#f '("-n"))
(#t '("-y"))
(_ '("-p")))
,device)))
(0 'pass) (0 'pass)
(1 'errors-corrected) (1 'errors-corrected)
(2 'reboot-required) (2 'reboot-required)
@ -256,19 +265,27 @@ bytevector."
(sub-bytevector sblock 56 16)) (sub-bytevector sblock 56 16))
(define (bcachefs-superblock-volume-name sblock) (define (bcachefs-superblock-volume-name sblock)
"Return the volume name of SBLOCK as a string of at most 32 characters, or "Return the volume name of bcachefs superblock SBLOCK as a string of at most
#f if SBLOCK has no volume name." 32 characters, or #f if SBLOCK has no volume name."
(null-terminated-latin1->string (sub-bytevector sblock 72 32))) (null-terminated-latin1->string (sub-bytevector sblock 72 32)))
(define (check-bcachefs-file-system device) (define (check-bcachefs-file-system device force? repair)
"Return the health of a bcachefs file system on DEVICE." "Return the health of an unmounted bcachefs file system on DEVICE. If FORCE?
is true, check the file system even if it's marked as clean. If REPAIR is
false, do not write to the file system to fix errors. If it's #t, fix all
errors. Otherwise, fix only those considered safe to repair automatically."
(let ((ignored-bits (logior 2)) ; DEVICE was mounted read-only (let ((ignored-bits (logior 2)) ; DEVICE was mounted read-only
(status (status
;; A number, or #f on abnormal termination (e.g., assertion failure). ;; A number, or #f on abnormal termination (e.g., assertion failure).
(status:exit-val (status:exit-val
(apply system* "bcachefs" "fsck" "-p" "-v" (apply system* `("bcachefs" "fsck" "-v"
;; Make each multi-device member a separate argument. ,@(if force? '("-f") '())
(string-split device #\:))))) ,@(match repair
(#f '("-n"))
(#t '("-y"))
(_ '("-p")))
;; Make each multi-device member a separate argument.
,@(string-split device #\:))))))
(match (and=> status (cut logand <> (lognot ignored-bits))) (match (and=> status (cut logand <> (lognot ignored-bits)))
(0 'pass) (0 'pass)
(1 'errors-corrected) (1 'errors-corrected)
@ -300,16 +317,33 @@ if DEVICE does not contain a btrfs file system."
(sub-bytevector sblock 32 16)) (sub-bytevector sblock 32 16))
(define (btrfs-superblock-volume-name sblock) (define (btrfs-superblock-volume-name sblock)
"Return the volume name of SBLOCK as a string of at most 256 characters, or "Return the volume name of btrfs superblock SBLOCK as a string of at most 256
#f if SBLOCK has no volume name." characters, or #f if SBLOCK has no volume name."
(null-terminated-latin1->string (sub-bytevector sblock 299 256))) (null-terminated-latin1->string (sub-bytevector sblock 299 256)))
(define (check-btrfs-file-system device) (define (check-btrfs-file-system device force? repair)
"Return the health of a btrfs file system on DEVICE." "Return the health of an unmounted btrfs file system on DEVICE. If FORCE? is
(match (status:exit-val false, return 'PASS unconditionally as btrfs claims no need for off-line checks.
(system* "btrfs" "device" "scan")) When FORCE? is true, do perform a real check. This is not recommended! See
(0 'pass) @uref{https://bugzilla.redhat.com/show_bug.cgi?id=625967#c8}. If REPAIR is
(_ 'fatal-error))) false, do not write to DEVICE. If it's #t, fix any errors found. Otherwise,
fix only those considered safe to repair automatically."
(if force?
(match (status:exit-val
(apply system* `("btrfs" "check" "--progress"
;; Btrfs's --force is not relevant to us here.
,@(match repair
;; Upstream considers ALL repairs dangerous
;; and will warn the user at run time.
(#t '("--repair"))
(_ '("--readonly" ; a no-op for clarity
;; A 466G file system with 180G used is
;; enough to kill btrfs with 6G of RAM.
"--mode" "lowmem")))
,device)))
(0 'pass)
(_ 'fatal-error))
'pass))
;;; ;;;
@ -333,15 +367,22 @@ if DEVICE does not contain a btrfs file system."
(sub-bytevector sblock 67 4)) (sub-bytevector sblock 67 4))
(define (fat32-superblock-volume-name sblock) (define (fat32-superblock-volume-name sblock)
"Return the volume name of SBLOCK as a string of at most 11 characters, or "Return the volume name of fat superblock SBLOCK as a string of at most 11
#f if SBLOCK has no volume name. The volume name is a latin1 string. characters, or #f if SBLOCK has no volume name. The volume name is a latin1
Trailing spaces are trimmed." string. Trailing spaces are trimmed."
(string-trim-right (latin1->string (sub-bytevector sblock 71 11) (lambda (c) #f)) #\space)) (string-trim-right (latin1->string (sub-bytevector sblock 71 11) (lambda (c) #f)) #\space))
(define (check-fat-file-system device) (define (check-fat-file-system device force? repair)
"Return the health of a fat file system on DEVICE." "Return the health of an unmounted FAT file system on DEVICE. FORCE? is
ignored: a full file system scan is always performed. If REPAIR is false, do
not write to the file system to fix errors. Otherwise, automatically fix them
using the least destructive approach."
(match (status:exit-val (match (status:exit-val
(system* "fsck.vfat" "-v" "-a" device)) (apply system* `("fsck.vfat" "-v"
,@(match repair
(#f '("-n"))
(_ '("-a"))) ; no 'safe/#t distinction
,device)))
(0 'pass) (0 'pass)
(1 'errors-corrected) (1 'errors-corrected)
(_ 'fatal-error))) (_ 'fatal-error)))
@ -366,9 +407,9 @@ Trailing spaces are trimmed."
(sub-bytevector sblock 39 4)) (sub-bytevector sblock 39 4))
(define (fat16-superblock-volume-name sblock) (define (fat16-superblock-volume-name sblock)
"Return the volume name of SBLOCK as a string of at most 11 characters, or "Return the volume name of fat superblock SBLOCK as a string of at most 11
#f if SBLOCK has no volume name. The volume name is a latin1 string. characters, or #f if SBLOCK has no volume name. The volume name is a latin1
Trailing spaces are trimmed." string. Trailing spaces are trimmed."
(string-trim-right (latin1->string (sub-bytevector sblock 43 11) (string-trim-right (latin1->string (sub-bytevector sblock 43 11)
(lambda (c) #f)) (lambda (c) #f))
#\space)) #\space))
@ -427,8 +468,8 @@ SBLOCK as a bytevector. If that's not set, returns the creation time."
(sub-bytevector time 0 16))) ; strips GMT offset. (sub-bytevector time 0 16))) ; strips GMT offset.
(define (iso9660-superblock-volume-name sblock) (define (iso9660-superblock-volume-name sblock)
"Return the volume name of SBLOCK as a string. The volume name is an ASCII "Return the volume name of iso9660 superblock SBLOCK as a string. The volume
string. Trailing spaces are trimmed." name is an ASCII string. Trailing spaces are trimmed."
;; Note: Valid characters are of the set "[0-9][A-Z]_" (ECMA-119 Appendix A) ;; Note: Valid characters are of the set "[0-9][A-Z]_" (ECMA-119 Appendix A)
(string-trim-right (latin1->string (sub-bytevector sblock 40 32) (string-trim-right (latin1->string (sub-bytevector sblock 40 32)
(lambda (c) #f)) #\space)) (lambda (c) #f)) #\space))
@ -459,14 +500,32 @@ if DEVICE does not contain a JFS file system."
(sub-bytevector sblock 136 16)) (sub-bytevector sblock 136 16))
(define (jfs-superblock-volume-name sblock) (define (jfs-superblock-volume-name sblock)
"Return the volume name of SBLOCK as a string of at most 16 characters, or "Return the volume name of JFS superblock SBLOCK as a string of at most 16
#f if SBLOCK has no volume name." characters, or #f if SBLOCK has no volume name."
(null-terminated-latin1->string (sub-bytevector sblock 152 16))) (null-terminated-latin1->string (sub-bytevector sblock 152 16)))
(define (check-jfs-file-system device) (define (check-jfs-file-system device force? repair)
"Return the health of a JFS file system on DEVICE." "Return the health of an unmounted JFS file system on DEVICE. If FORCE? is
true, check the file system even if it's marked as clean. If REPAIR is false,
do not write to the file system to fix errors, and replay the transaction log
only if FORCE? is true. Otherwise, replay the transaction log before checking
and automatically fix found errors."
(match (status:exit-val (match (status:exit-val
(system* "jfs_fsck" "-p" "-v" device)) (apply system*
`("jfs_fsck" "-v"
;; The LEVEL logic is convoluted. To quote fsck/xchkdsk.c
;; (-p, -a, and -r are aliases in every way):
;; “If -f was chosen, have it override [-p] by [forcing] a
;; check regardless of the outcome after the log is
;; replayed”.
;; “If -n is specified by itself, don't replay the journal.
;; If -n is specified with [-p], replay the journal but
;; don't make any other changes”.
,@(if force? '("-f") '())
,@(match repair
(#f '("-n"))
(_ '("-p"))) ; no 'safe/#t distinction
,device)))
(0 'pass) (0 'pass)
(1 'errors-corrected) (1 'errors-corrected)
(2 'reboot-required) (2 'reboot-required)
@ -511,18 +570,28 @@ if DEVICE does not contain an F2FS file system."
16)) 16))
(define (f2fs-superblock-volume-name sblock) (define (f2fs-superblock-volume-name sblock)
"Return the volume name of SBLOCK as a string of at most 512 characters, or "Return the volume name of F2FS superblock SBLOCK as a string of at most 512
#f if SBLOCK has no volume name." characters, or #f if SBLOCK has no volume name."
(null-terminated-utf16->string (null-terminated-utf16->string
(sub-bytevector sblock (- (+ #x470 12) #x400) 512) (sub-bytevector sblock (- (+ #x470 12) #x400) 512)
%f2fs-endianness)) %f2fs-endianness))
(define (check-f2fs-file-system device) (define (check-f2fs-file-system device force? repair)
"Return the health of a F2FS file system on DEVICE." "Return the health of an unmuounted F2FS file system on DEVICE. If FORCE? is
true, check the file system even if it's marked as clean. If either FORCE? or
REPAIR are true, automatically fix found errors."
;; There's no -n equivalent (--dry-run does not disable writes).
;; -y is an alias of -f. The man page is bad: read main.c.
(when (and force? (not repair))
(format (current-error-port)
"warning: forced check of F2FS ~a implies repairing any errors~%"
device))
(match (status:exit-val (match (status:exit-val
(system* "fsck.f2fs" "-p" device)) (apply system* `("fsck.f2fs"
;; 0 and -1 are the only two possibilities ,@(if force? '("-f") '())
;; (according to the manpage) ,@(if repair '("-p") '("--dry-run"))
,device)))
;; 0 and -1 are the only two possibilities according to the man page.
(0 'pass) (0 'pass)
(_ 'fatal-error))) (_ 'fatal-error)))
@ -600,13 +669,81 @@ if DEVICE does not contain a NTFS file system."
;; in the BOOT SECTOR like the UUID, but in the MASTER FILE TABLE, which seems ;; in the BOOT SECTOR like the UUID, but in the MASTER FILE TABLE, which seems
;; way harder to access. ;; way harder to access.
(define (check-ntfs-file-system device) (define (check-ntfs-file-system device force? repair)
"Return the health of a NTFS file system on DEVICE." "Return the health of an unmounted NTFS file system on DEVICE. FORCE? is
ignored: a full check is always performed. Repair is not possible: if REPAIR is
true and the volume has been repaired by an external tool, clear the volume
dirty flag to indicate that it's now safe to mount."
(match (status:exit-val (match (status:exit-val
(system* "ntfsfix" device)) (apply system* `("ntfsfix"
,@(if repair '("--clear-dirty") '("--no-action"))
,device)))
(0 'pass) (0 'pass)
(_ 'fatal-error))) (_ 'fatal-error)))
;;;
;;; XFS file systems.
;;;
;; <https://git.kernel.org/pub/scm/fs/xfs/xfs-documentation.git/tree/design/XFS_Filesystem_Structure/allocation_groups.asciidoc>
(define-syntax %xfs-endianness
;; Endianness of XFS file systems.
(identifier-syntax (endianness big)))
(define (xfs-superblock? sblock)
"Return #t when SBLOCK is an XFS superblock."
(bytevector=? (sub-bytevector sblock 0 4)
(string->utf8 "XFSB")))
(define (read-xfs-superblock device)
"Return the raw contents of DEVICE's XFS superblock as a bytevector, or #f
if DEVICE does not contain an XFS file system."
(read-superblock device 0 120 xfs-superblock?))
(define (xfs-superblock-uuid sblock)
"Return the UUID of XFS superblock SBLOCK as a 16-byte bytevector."
(sub-bytevector sblock 32 16))
(define (xfs-superblock-volume-name sblock)
"Return the volume name of XFS superblock SBLOCK as a string of at most 12
characters, or #f if SBLOCK has no volume name."
(null-terminated-latin1->string (sub-bytevector sblock 108 12)))
(define (check-xfs-file-system device force? repair)
"Return the health of an unmounted XFS file system on DEVICE. If FORCE? is
false, return 'PASS unconditionally as XFS claims no need for off-line checks.
When FORCE? is true, do perform a thorough check. If REPAIR is false, do not
write to DEVICE. If it's #t, replay the log, check, and fix any errors found.
Otherwise, only replay the log, and check without attempting further repairs."
(define (xfs_repair)
(status:exit-val
(apply system* `("xfs_repair" "-Pv"
,@(match repair
(#t '("-e"))
(_ '("-n"))) ; will miss some errors
,device))))
(if force?
;; xfs_repair fails with exit status 2 if the log is dirty, which is
;; likely in situations where you're running xfs_repair. Only the kernel
;; can replay the log by {,un}mounting it cleanly.
(match (let ((status (xfs_repair)))
(if (and repair (eq? 2 status))
(let ((target "/replay-XFS-log"))
;; The kernel helpfully prints a Mounting… notice for us.
(mkdir target)
(mount device target "xfs")
(umount target)
(rmdir target)
(xfs_repair))
status))
(0 'pass)
(4 'errors-corrected)
(_ 'fatal-error))
'pass))
;;; ;;;
;;; Partition lookup. ;;; Partition lookup.
@ -700,7 +837,9 @@ partition field reader that returned a value."
(partition-field-reader read-jfs-superblock (partition-field-reader read-jfs-superblock
jfs-superblock-volume-name) jfs-superblock-volume-name)
(partition-field-reader read-f2fs-superblock (partition-field-reader read-f2fs-superblock
f2fs-superblock-volume-name))) f2fs-superblock-volume-name)
(partition-field-reader read-xfs-superblock
xfs-superblock-volume-name)))
(define %partition-uuid-readers (define %partition-uuid-readers
(list (partition-field-reader read-iso9660-superblock (list (partition-field-reader read-iso9660-superblock
@ -722,7 +861,9 @@ partition field reader that returned a value."
(partition-field-reader read-f2fs-superblock (partition-field-reader read-f2fs-superblock
f2fs-superblock-uuid) f2fs-superblock-uuid)
(partition-field-reader read-ntfs-superblock (partition-field-reader read-ntfs-superblock
ntfs-superblock-uuid))) ntfs-superblock-uuid)
(partition-field-reader read-xfs-superblock
xfs-superblock-uuid)))
(define read-partition-label (define read-partition-label
(cut read-partition-field <> %partition-label-readers)) (cut read-partition-field <> %partition-label-readers))
@ -816,8 +957,13 @@ containing ':/')."
(uuid-bytevector spec) (uuid-bytevector spec)
uuid->string)))) uuid->string))))
(define (check-file-system device type) (define (check-file-system device type force? repair)
"Run a file system check of TYPE on DEVICE." "Check an unmounted TYPE file system on DEVICE. Do nothing but warn if it is
mounted. If FORCE? is true, check even when considered unnecessary. If REPAIR
is false, try not to write to DEVICE at all. If it's #t, try to fix all errors
found. Otherwise, fix only those considered safe to repair automatically. Not
all TYPEs support all values or combinations of FORCE? and REPAIR. Don't throw
an exception in such cases but perform the nearest sane action."
(define check-procedure (define check-procedure
(cond (cond
((string-prefix? "ext" type) check-ext2-file-system) ((string-prefix? "ext" type) check-ext2-file-system)
@ -828,36 +974,44 @@ containing ':/')."
((string-prefix? "f2fs" type) check-f2fs-file-system) ((string-prefix? "f2fs" type) check-f2fs-file-system)
((string-prefix? "ntfs" type) check-ntfs-file-system) ((string-prefix? "ntfs" type) check-ntfs-file-system)
((string-prefix? "nfs" type) (const 'pass)) ((string-prefix? "nfs" type) (const 'pass))
((string-prefix? "xfs" type) check-xfs-file-system)
(else #f))) (else #f)))
(if check-procedure (if check-procedure
(match (check-procedure device) (let ((mount (find (lambda (mount)
('pass (string=? device (mount-source mount)))
#t) (mounts))))
('errors-corrected (if mount
(format (current-error-port) (format (current-error-port)
"File system check corrected errors on ~a; continuing~%" "Refusing to check ~a file system already mounted at ~a~%"
device)) device (mount-point mount))
('reboot-required (match (check-procedure device force? repair)
(format (current-error-port) ('pass
"File system check corrected errors on ~a; rebooting~%" #t)
device) ('errors-corrected
(sleep 3) (format (current-error-port)
(reboot)) "File system check corrected errors on ~a; continuing~%"
('fatal-error device))
(format (current-error-port) "File system check on ~a failed~%" ('reboot-required
device) (format (current-error-port)
"File system check corrected errors on ~a; rebooting~%"
device)
(sleep 3)
(reboot))
('fatal-error
(format (current-error-port) "File system check on ~a failed~%"
device)
;; Spawn a REPL only if someone would be able to interact with it. ;; Spawn a REPL only if someone might interact with it.
(when (isatty? (current-input-port)) (when (isatty? (current-input-port))
(format (current-error-port) "Spawning Bourne-like REPL.~%") (format (current-error-port) "Spawning Bourne-like REPL.~%")
;; 'current-output-port' is typically connected to /dev/klog (in ;; 'current-output-port' is typically connected to /dev/klog
;; PID 1), but here we want to make sure we talk directly to the ;; (in PID 1), but here we want to make sure we talk directly
;; user. ;; to the user.
(with-output-to-file "/dev/console" (with-output-to-file "/dev/console"
(lambda () (lambda ()
(start-repl %bournish-language)))))) (start-repl %bournish-language))))))))
(format (current-error-port) (format (current-error-port)
"No file system check procedure for ~a; skipping~%" "No file system check procedure for ~a; skipping~%"
device))) device)))
@ -886,7 +1040,11 @@ corresponds to the symbols listed in FLAGS."
(() (()
0)))) 0))))
(define* (mount-file-system fs #:key (root "/root")) (define* (mount-file-system fs #:key (root "/root")
(check? (file-system-check? fs))
(skip-check-if-clean?
(file-system-skip-check-if-clean? fs))
(repair (file-system-repair fs)))
"Mount the file system described by FS, a <file-system> object, under ROOT." "Mount the file system described by FS, a <file-system> object, under ROOT."
(define (mount-nfs source mount-point type flags options) (define (mount-nfs source mount-point type flags options)
@ -924,8 +1082,8 @@ corresponds to the symbols listed in FLAGS."
(file-system-mount-flags (statfs source))) (file-system-mount-flags (statfs source)))
0))) 0)))
(options (file-system-options fs))) (options (file-system-options fs)))
(when (file-system-check? fs) (when check?
(check-file-system source type)) (check-file-system source type (not skip-check-if-clean?) repair))
(catch 'system-error (catch 'system-error
(lambda () (lambda ()

View file

@ -25,6 +25,7 @@
#:autoload (system repl repl) (start-repl) #:autoload (system repl repl) (start-repl)
#:use-module (srfi srfi-1) #:use-module (srfi srfi-1)
#:use-module (srfi srfi-9) #:use-module (srfi srfi-9)
#:use-module (srfi srfi-11)
#:use-module (srfi srfi-26) #:use-module (srfi srfi-26)
#:use-module (ice-9 match) #:use-module (ice-9 match)
#:use-module (ice-9 rdelim) #:use-module (ice-9 rdelim)
@ -44,7 +45,6 @@
make-static-device-nodes make-static-device-nodes
configure-qemu-networking configure-qemu-networking
device-number
boot-system)) boot-system))
;;; Commentary: ;;; Commentary:
@ -134,14 +134,9 @@ succeeds. Return nothing otherwise. The kernel logs any details to dmesg."
;; is found on the command line; our canonicalize-device-spec gives ;; is found on the command line; our canonicalize-device-spec gives
;; up after 20 seconds. We could emulate the former by looping… ;; up after 20 seconds. We could emulate the former by looping…
(device (canonicalize-device-spec spec)) (device (canonicalize-device-spec spec))
(rdev (stat:rdev (stat device))) (rdev (stat:rdev (stat device))))
;; For backwards compatibility, device numbering is a baroque affair. (let-values (((major minor) (device-number->major+minor rdev)))
;; This is the full 64-bit scheme used by glibc's <sys/sysmacros.h>. (format #f "~a:~a" major minor))))
(major (logior (ash (logand #x00000000000fff00 rdev) -8)
(ash (logand #xfffff00000000000 rdev) -32)))
(minor (logior (logand #x00000000000000ff rdev)
(ash (logand #x00000ffffff00000 rdev) -12))))
(format #f "~a:~a" major minor)))
;; Write the resume DEVICE to this magic file, using the MAJOR:MINOR device ;; Write the resume DEVICE to this magic file, using the MAJOR:MINOR device
;; numbers if possible. The kernel will immediately try to resume from it. ;; numbers if possible. The kernel will immediately try to resume from it.
@ -392,11 +387,6 @@ networking values.) Return #t if INTERFACE is up, #f otherwise."
(logand (network-interface-flags sock interface) IFF_UP))) (logand (network-interface-flags sock interface) IFF_UP)))
(define (device-number major minor)
"Return the device number for the device with MAJOR and MINOR, for use as
the last argument of `mknod'."
(+ (* major 256) minor))
(define (pidof program) (define (pidof program)
"Return the PID of the first presumed instance of PROGRAM." "Return the PID of the first presumed instance of PROGRAM."
(let ((program (basename program))) (let ((program (basename program)))
@ -408,12 +398,17 @@ the last argument of `mknod'."
(define* (mount-root-file-system root type (define* (mount-root-file-system root type
#:key volatile-root? (flags 0) options #:key volatile-root? (flags 0) options
check?) check? skip-check-if-clean? repair)
"Mount the root file system of type TYPE at device ROOT. If VOLATILE-ROOT? is "Mount the root file system of type TYPE at device ROOT. If VOLATILE-ROOT? is
true, mount ROOT read-only and make it an overlay with a writable tmpfs using true, mount ROOT read-only and make it an overlay with a writable tmpfs using
the kernel built-in overlayfs. FLAGS and OPTIONS indicates the options to use the kernel built-in overlayfs. FLAGS and OPTIONS indicates the options to use
to mount ROOT, and behave the same as for the `mount' procedure. to mount ROOT, and behave the same as for the `mount' procedure.
If CHECK? is true, first run ROOT's fsck tool (if any) non-interactively."
If CHECK? is true, first run ROOT's fsck tool (if any) non-interactively.
If SKIP-CHECK-IF-CLEAN? is true, ask fsck to return immediately if ROOT is
marked as clean. If REPAIR is true, fsck may write to ROOT to perform repairs.
If REPAIR is also 'PREEN, ask fsck to perform only those repairs that it
considers safe."
(if volatile-root? (if volatile-root?
(begin (begin
@ -435,7 +430,7 @@ If CHECK? is true, first run ROOT's fsck tool (if any) non-interactively."
"lowerdir=/real-root,upperdir=/rw-root/upper,workdir=/rw-root/work")) "lowerdir=/real-root,upperdir=/rw-root/upper,workdir=/rw-root/work"))
(begin (begin
(when check? (when check?
(check-file-system root type)) (check-file-system root type (not skip-check-if-clean?) repair))
(mount root "/root" type flags options))) (mount root "/root" type flags options)))
;; Make sure /root/etc/mtab is a symlink to /proc/self/mounts. ;; Make sure /root/etc/mtab is a symlink to /proc/self/mounts.
@ -536,21 +531,36 @@ upon error."
(mount-essential-file-systems) (mount-essential-file-systems)
(let* ((args (linux-command-line)) (let* ((args (linux-command-line))
(to-load (find-long-option "--load" args)) (to-load (find-long-option "--load" args))
(root-fs (find root-mount-point? mounts)) ;; If present, --root on the kernel command line takes precedence
(root-fs-type (or (and=> root-fs file-system-type) ;; over the device field of the root <file-system> record.
"ext4")) (root-device (and=> (find-long-option "--root" args)
(root-fs-device (and=> root-fs file-system-device)) device-string->file-system-device))
(root-fs-flags (mount-flags->bit-mask (root-fs (or (find root-mount-point? mounts)
(or (and=> root-fs file-system-flags) ;; Fall back to fictitious defaults.
'()))) (file-system (device (or root-device "/dev/root"))
(root-options (if root-fs (mount-point "/")
(file-system-options root-fs) (type "ext4"))))
#f)) (fsck.mode (find-long-option "fsck.mode" args)))
;; --root takes precedence over the 'device' field of the root
;; <file-system> record. (define (check? fs)
(root-device (or (and=> (find-long-option "--root" args) (match fsck.mode
device-string->file-system-device) ("skip" #f)
root-fs-device))) ("force" #t)
(_ (file-system-check? fs)))) ; assume "auto"
(define (skip-check-if-clean? fs)
(match fsck.mode
("force" #f)
(_ (file-system-skip-check-if-clean? fs))))
(define (repair fs)
(let ((arg (find-long-option "fsck.repair" args)))
(if arg
(match arg
("no" #f)
("yes" #t)
(_ 'preen))
(file-system-repair fs))))
(when (member "--repl" args) (when (member "--repl" args)
(start-repl)) (start-repl))
@ -606,17 +616,24 @@ upon error."
(if root-device (if root-device
(mount-root-file-system (canonicalize-device-spec root-device) (mount-root-file-system (canonicalize-device-spec root-device)
root-fs-type (file-system-type root-fs)
#:volatile-root? volatile-root? #:volatile-root? volatile-root?
#:flags root-fs-flags #:flags (mount-flags->bit-mask
#:options root-options (file-system-flags root-fs))
#:check? (if root-fs #:options (file-system-options root-fs)
(file-system-check? root-fs) #:check? (check? root-fs)
#t)) #:skip-check-if-clean?
(skip-check-if-clean? root-fs)
#:repair (repair root-fs))
(mount "none" "/root" "tmpfs")) (mount "none" "/root" "tmpfs"))
;; Mount the specified file systems. ;; Mount the specified non-root file systems.
(for-each mount-file-system (for-each (lambda (fs)
(mount-file-system fs
#:check? (check? fs)
#:skip-check-if-clean?
(skip-check-if-clean? fs)
#:repair (repair fs)))
(remove root-mount-point? mounts)) (remove root-mount-point? mounts))
(setenv "EXT2FS_NO_MTAB_OK" #f) (setenv "EXT2FS_NO_MTAB_OK" #f)

View file

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2012-2021 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2017, 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org> ;;; Copyright © 2017, 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2018, 2019 Clément Lassieur <clement@lassieur.org> ;;; Copyright © 2018, 2019 Clément Lassieur <clement@lassieur.org>
;;; Copyright © 2020 Julien Lepiller <julien@lepiller.eu> ;;; Copyright © 2020 Julien Lepiller <julien@lepiller.eu>
@ -85,7 +85,7 @@
(define* (derivation->job name drv (define* (derivation->job name drv
#:key #:key
(max-silent-time 3600) (max-silent-time 3600)
(timeout 3600)) (timeout (* 5 3600)))
"Return a Cuirass job called NAME and describing DRV. "Return a Cuirass job called NAME and describing DRV.
MAX-SILENT-TIME and TIMEOUT are build options passed to the daemon when MAX-SILENT-TIME and TIMEOUT are build options passed to the daemon when
@ -443,19 +443,40 @@ valid."
(map channel-url channels))) (map channel-url channels)))
arguments)) arguments))
(define (manifests->packages store manifests) (define (manifests->jobs store manifests)
"Return the list of packages found in MANIFESTS." "Return the list of jobs for the entries in MANIFESTS, a list of file
names."
(define (load-manifest manifest) (define (load-manifest manifest)
(save-module-excursion (save-module-excursion
(lambda () (lambda ()
(set-current-module (make-user-module '((guix profiles) (gnu)))) (set-current-module (make-user-module '((guix profiles) (gnu))))
(primitive-load manifest)))) (primitive-load manifest))))
(delete-duplicates! (define (manifest-entry-job-name entry)
(map manifest-entry-item (string-append (manifest-entry-name entry) "-"
(append-map (compose manifest-entries (manifest-entry-version entry)))
load-manifest)
manifests)))) (define (manifest-entry->job entry)
(let* ((obj (manifest-entry-item entry))
(drv (parameterize ((%graft? #f))
(run-with-store store
(lower-object obj))))
(max-silent-time (or (and (package? obj)
(assoc-ref (package-properties obj)
'max-silent-time))
3600))
(timeout (or (and (package? obj)
(assoc-ref (package-properties obj) 'timeout))
(* 5 3600))))
(derivation->job (manifest-entry-job-name entry) drv
#:max-silent-time max-silent-time
#:timeout timeout)))
(map manifest-entry->job
(delete-duplicates
(append-map (compose manifest-entries load-manifest)
manifests)
manifest-entry=?)))
(define (arguments->systems arguments) (define (arguments->systems arguments)
"Return the systems list from ARGUMENTS." "Return the systems list from ARGUMENTS."
@ -568,12 +589,8 @@ valid."
packages))) packages)))
(('manifests . rest) (('manifests . rest)
;; Build packages in the list of manifests. ;; Build packages in the list of manifests.
(let* ((manifests (arguments->manifests rest channels)) (let ((manifests (arguments->manifests rest channels)))
(packages (manifests->packages store manifests))) (manifests->jobs store manifests)))
(map (lambda (package)
(package-job store (job-name package)
package system))
packages)))
(else (else
(error "unknown subset" subset)))) (error "unknown subset" subset))))
systems))) systems)))

106
gnu/home.scm Normal file
View file

@ -0,0 +1,106 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2021 Andrew Tropin <andrew@trop.in>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu home)
#:use-module (gnu home services)
#:use-module (gnu home services symlink-manager)
#:use-module (gnu home services shells)
#:use-module (gnu home services xdg)
#:use-module (gnu home services fontutils)
#:use-module (gnu services)
#:use-module (guix records)
#:use-module (guix diagnostics)
#:export (home-environment
home-environment?
this-home-environment
home-environment-derivation
home-environment-user-services
home-environment-essential-services
home-environment-services
home-environment-location
home-environment-with-provenance))
;;; Comment:
;;;
;;; This module provides a <home-environment> record for managing
;;; per-user packages and configuration files in the similar way as
;;; <operating-system> do for system packages and configuration files.
;;;
;;; Code:
(define-record-type* <home-environment> home-environment
make-home-environment
home-environment?
this-home-environment
(packages home-environment-packages ; list of (PACKAGE OUTPUT...)
(default '()))
(essential-services home-environment-essential-services ; list of services
(thunked)
(default (home-environment-default-essential-services
this-home-environment)))
(services home-environment-user-services
(default '()))
(location home-environment-location ; <location>
(default (and=> (current-source-location)
source-properties->location))
(innate)))
(define (home-environment-default-essential-services he)
"Return the list of essential services for home environment."
(list
(service home-run-on-first-login-service-type)
(service home-activation-service-type)
(service home-environment-variables-service-type)
(service home-symlink-manager-service-type)
(service home-fontconfig-service-type)
(service home-xdg-base-directories-service-type)
(service home-shell-profile-service-type)
(service home-service-type)
(service home-profile-service-type (home-environment-packages he))))
(define* (home-environment-services he)
"Return all the services of home environment."
(instantiate-missing-services
(append (home-environment-user-services he)
(home-environment-essential-services he))))
(define* (home-environment-derivation he)
"Return a derivation that builds OS."
(let* ((services (home-environment-services he))
(home (fold-services services
#:target-type home-service-type)))
(service-value home)))
(define* (home-environment-with-provenance he config-file)
"Return a variant of HE that stores its own provenance information,
including CONFIG-FILE, if available. This is achieved by adding an instance
of HOME-PROVENANCE-SERVICE-TYPE to its services."
(home-environment
(inherit he)
(services (cons (service home-provenance-service-type config-file)
(home-environment-user-services he)))))

525
gnu/home/services.scm Normal file
View file

@ -0,0 +1,525 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2021 Andrew Tropin <andrew@trop.in>
;;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu home services)
#:use-module (gnu services)
#:use-module (guix channels)
#:use-module (guix monads)
#:use-module (guix store)
#:use-module (guix gexp)
#:use-module (guix profiles)
#:use-module (guix sets)
#:use-module (guix ui)
#:use-module (guix discovery)
#:use-module (guix diagnostics)
#:use-module (srfi srfi-1)
#:use-module (ice-9 match)
#:export (home-service-type
home-profile-service-type
home-environment-variables-service-type
home-files-service-type
home-run-on-first-login-service-type
home-activation-service-type
home-run-on-change-service-type
home-provenance-service-type
fold-home-service-types)
#:re-export (service
service-type
service-extension))
;;; Comment:
;;;
;;; This module is similar to (gnu system services) module, but
;;; provides Home Services, which are supposed to be used for building
;;; home-environment.
;;;
;;; Home Services use the same extension as System Services. Consult
;;; (gnu system services) module or manual for more information.
;;;
;;; home-service-type is a root of home services DAG.
;;;
;;; home-profile-service-type is almost the same as profile-service-type, at least
;;; for now.
;;;
;;; home-environment-variables-service-type generates a @file{setup-environment}
;;; shell script, which is expected to be sourced by login shell or other program,
;;; which starts early and spawns all other processes. Home services for shells
;;; automatically add code for sourcing this file, if person do not use those home
;;; services they have to source this script manually in their's shell *profile
;;; file (details described in the manual).
;;;
;;; home-files-service-type is similar to etc-service-type, but doesn't extend
;;; home-activation, because deploy mechanism for config files is pluggable and
;;; can be different for different home environments: The default one is called
;;; symlink-manager (will be introudced in a separate patch series), which creates
;;; links for various dotfiles (like $XDG_CONFIG_HOME/$APP/...) to store, but is
;;; possible to implement alternative approaches like read-only home from Julien's
;;; guix-home-manager.
;;;
;;; home-run-on-first-login-service-type provides an @file{on-first-login} guile
;;; script, which runs provided gexps once, when user makes first login. It can
;;; be used to start user's Shepherd and maybe some other process. It relies on
;;; assumption that /run/user/$UID will be created on login by some login
;;; manager (elogind for example).
;;;
;;; home-activation-service-type provides an @file{activate} guile script, which
;;; do three main things:
;;;
;;; - Sets environment variables to the values declared in
;;; @file{setup-environment} shell script. It's necessary, because user can set
;;; for example XDG_CONFIG_HOME and it should be respected by activation gexp of
;;; symlink-manager.
;;;
;;; - Sets GUIX_NEW_HOME and possibly GUIX_OLD_HOME vars to paths in the store.
;;; Later those variables can be used by activation gexps, for example by
;;; symlink-manager or run-on-change services.
;;;
;;; - Run all activation gexps provided by other home services.
;;;
;;; home-run-on-change-service-type allows to trigger actions during
;;; activation if file or directory specified by pattern is changed.
;;;
;;; Code:
(define (home-derivation entries mextensions)
"Return as a monadic value the derivation of the 'home'
directory containing the given entries."
(mlet %store-monad ((extensions (mapm/accumulate-builds identity
mextensions)))
(lower-object
(file-union "home" (append entries (concatenate extensions))))))
(define home-service-type
;; This is the ultimate service type, the root of the home service
;; DAG. The service of this type is extended by monadic name/item
;; pairs. These items end up in the "home-environment directory" as
;; returned by 'home-environment-derivation'.
(service-type (name 'home)
(extensions '())
(compose identity)
(extend home-derivation)
(default-value '())
(description
"Build the home environment top-level directory,
which in turn refers to everything the home environment needs: its
packages, configuration files, activation script, and so on.")))
(define (packages->profile-entry packages)
"Return a system entry for the profile containing PACKAGES."
;; XXX: 'mlet' is needed here for one reason: to get the proper
;; '%current-target' and '%current-target-system' bindings when
;; 'packages->manifest' is called, and thus when the 'package-inputs'
;; etc. procedures are called on PACKAGES. That way, conditionals in those
;; inputs see the "correct" value of these two parameters. See
;; <https://issues.guix.gnu.org/44952>.
(mlet %store-monad ((_ (current-target-system)))
(return `(("profile" ,(profile
(content (packages->manifest
(map identity
;;(options->transformation transformations)
(delete-duplicates packages eq?))))))))))
;; MAYBE: Add a list of transformations for packages. It's better to
;; place it in home-profile-service-type to affect all profile
;; packages and prevent conflicts, when other packages relies on
;; non-transformed version of package.
(define home-profile-service-type
(service-type (name 'home-profile)
(extensions
(list (service-extension home-service-type
packages->profile-entry)))
(compose concatenate)
(extend append)
(description
"This is the @dfn{home profile} and can be found in
@file{~/.guix-home/profile}. It contains packages and
configuration files that the user has declared in their
@code{home-environment} record.")))
(define (environment-variables->setup-environment-script vars)
"Return a file that can be sourced by a POSIX compliant shell which
initializes the environment. The file will source the home
environment profile, set some default environment variables, and set
environment variables provided in @code{vars}. @code{vars} is a list
of pairs (@code{(key . value)}), @code{key} is a string and
@code{value} is a string or gexp.
If value is @code{#f} variable will be omitted.
If value is @code{#t} variable will be just exported.
For any other, value variable will be set to the @code{value} and
exported."
(define (warn-about-duplicate-defenitions)
(fold
(lambda (x acc)
(when (equal? (car x) (car acc))
(warning
(G_ "duplicate definition for `~a' environment variable ~%") (car x)))
x)
(cons "" "")
(sort vars (lambda (a b)
(string<? (car a) (car b))))))
(warn-about-duplicate-defenitions)
(with-monad
%store-monad
(return
`(("setup-environment"
;; TODO: It's necessary to source ~/.guix-profile too
;; on foreign distros
,(apply mixed-text-file "setup-environment"
"\
HOME_ENVIRONMENT=$HOME/.guix-home
GUIX_PROFILE=\"$HOME_ENVIRONMENT/profile\"
PROFILE_FILE=\"$HOME_ENVIRONMENT/profile/etc/profile\"
[ -f $PROFILE_FILE ] && . $PROFILE_FILE
case $XDG_DATA_DIRS in
*$HOME_ENVIRONMENT/profile/share*) ;;
*) export XDG_DATA_DIRS=$HOME_ENVIRONMENT/profile/share:$XDG_DATA_DIRS ;;
esac
case $MANPATH in
*$HOME_ENVIRONMENT/profile/share/man*) ;;
*) export MANPATH=$HOME_ENVIRONMENT/profile/share/man:$MANPATH
esac
case $INFOPATH in
*$HOME_ENVIRONMENT/profile/share/info*) ;;
*) export INFOPATH=$HOME_ENVIRONMENT/profile/share/info:$INFOPATH ;;
esac
case $XDG_CONFIG_DIRS in
*$HOME_ENVIRONMENT/profile/etc/xdg*) ;;
*) export XDG_CONFIG_DIRS=$HOME_ENVIRONMENT/profile/etc/xdg:$XDG_CONFIG_DIRS ;;
esac
case $XCURSOR_PATH in
*$HOME_ENVIRONMENT/profile/share/icons*) ;;
*) export XCURSOR_PATH=$HOME_ENVIRONMENT/profile/share/icons:$XCURSOR_PATH ;;
esac
"
(append-map
(match-lambda
((key . #f)
'())
((key . #t)
(list "export " key "\n"))
((key . value)
(list "export " key "=" value "\n")))
vars)))))))
(define home-environment-variables-service-type
(service-type (name 'home-environment-variables)
(extensions
(list (service-extension
home-service-type
environment-variables->setup-environment-script)))
(compose concatenate)
(extend append)
(default-value '())
(description "Set the environment variables.")))
(define (files->files-directory files)
"Return a @code{files} directory that contains FILES."
(define (assert-no-duplicates files)
(let loop ((files files)
(seen (set)))
(match files
(() #t)
(((file _) rest ...)
(when (set-contains? seen file)
(raise (formatted-message (G_ "duplicate '~a' entry for files/")
file)))
(loop rest (set-insert file seen))))))
;; Detect duplicates early instead of letting them through, eventually
;; leading to a build failure of "files.drv".
(assert-no-duplicates files)
(file-union "files" files))
(define (files-entry files)
"Return an entry for the @file{~/.guix-home/files}
directory containing FILES."
(with-monad %store-monad
(return `(("files" ,(files->files-directory files))))))
(define home-files-service-type
(service-type (name 'home-files)
(extensions
(list (service-extension home-service-type
files-entry)))
(compose concatenate)
(extend append)
(default-value '())
(description "Configuration files for programs that
will be put in @file{~/.guix-home/files}.")))
(define (compute-on-first-login-script _ gexps)
(gexp->script
"on-first-login"
#~(let* ((xdg-runtime-dir (or (getenv "XDG_RUNTIME_DIR")
(format #f "/run/user/~a" (getuid))))
(flag-file-path (string-append
xdg-runtime-dir "/on-first-login-executed"))
(touch (lambda (file-name)
(call-with-output-file file-name (const #t)))))
;; XDG_RUNTIME_DIR dissapears on logout, that means such trick
;; allows to launch on-first-login script on first login only
;; after complete logout/reboot.
(when (not (file-exists? flag-file-path))
(begin #$@gexps (touch flag-file-path))))))
(define (on-first-login-script-entry m-on-first-login)
"Return, as a monadic value, an entry for the on-first-login script
in the home environment directory."
(mlet %store-monad ((on-first-login m-on-first-login))
(return `(("on-first-login" ,on-first-login)))))
(define home-run-on-first-login-service-type
(service-type (name 'home-run-on-first-login)
(extensions
(list (service-extension
home-service-type
on-first-login-script-entry)))
(compose identity)
(extend compute-on-first-login-script)
(default-value #f)
(description "Run gexps on first user login. Can be
extended with one gexp.")))
(define (compute-activation-script init-gexp gexps)
(gexp->script
"activate"
#~(let* ((he-init-file (lambda (he) (string-append he "/setup-environment")))
(he-path (string-append (getenv "HOME") "/.guix-home"))
(new-home-env (getenv "GUIX_NEW_HOME"))
(new-home (or new-home-env
;; Path of the activation file if called interactively
(dirname (car (command-line)))))
(old-home-env (getenv "GUIX_OLD_HOME"))
(old-home (or old-home-env
(if (file-exists? (he-init-file he-path))
(readlink he-path)
#f))))
(if (file-exists? (he-init-file new-home))
(let* ((port ((@ (ice-9 popen) open-input-pipe)
(format #f "source ~a && env -0"
(he-init-file new-home))))
(result ((@ (ice-9 rdelim) read-delimited) "" port))
(vars (map (lambda (x)
(let ((si (string-index x #\=)))
(cons (string-take x si)
(string-drop x (1+ si)))))
((@ (srfi srfi-1) remove)
string-null?
(string-split result #\nul)))))
(close-port port)
(map (lambda (x) (setenv (car x) (cdr x))) vars)
(setenv "GUIX_NEW_HOME" new-home)
(setenv "GUIX_OLD_HOME" old-home)
#$@gexps
;; Do not unset env variable if it was set outside.
(unless new-home-env (setenv "GUIX_NEW_HOME" #f))
(unless old-home-env (setenv "GUIX_OLD_HOME" #f)))
(format #t "\
Activation script was either called or loaded by file from this direcotry:
~a
It doesn't seem that home environment is somewhere around.
Make sure that you call ./activate by symlink from -home store item.\n"
new-home)))))
(define (activation-script-entry m-activation)
"Return, as a monadic value, an entry for the activation script
in the home environment directory."
(mlet %store-monad ((activation m-activation))
(return `(("activate" ,activation)))))
(define home-activation-service-type
(service-type (name 'home-activation)
(extensions
(list (service-extension
home-service-type
activation-script-entry)))
(compose identity)
(extend compute-activation-script)
(default-value #f)
(description "Run gexps to activate the current
generation of home environment and update the state of the home
directory. @command{activate} script automatically called during
reconfiguration or generation switching. This service can be extended
with one gexp, but many times, and all gexps must be idempotent.")))
;;;
;;; On-change.
;;;
(define (compute-on-change-gexp eval-gexps? pattern-gexp-tuples)
#~(begin
(define (equal-regulars? file1 file2)
"Check if FILE1 and FILE2 are bit for bit identical."
(let* ((cmp-binary #$(file-append
(@ (gnu packages base) diffutils) "/bin/cmp"))
(stats1 (lstat file1))
(stats2 (lstat file2)))
(cond
((= (stat:ino stats1) (stat:ino stats2)) #t)
((not (= (stat:size stats1) (stat:size stats2))) #f)
(else (= (system* cmp-binary file1 file2) 0)))))
(define (equal-symlinks? symlink1 symlink2)
"Check if SYMLINK1 and SYMLINK2 are pointing to the same target."
(string=? (readlink symlink1) (readlink symlink2)))
(define (equal-directories? dir1 dir2)
"Check if DIR1 and DIR2 have the same content."
(define (ordinary-file file)
(not (or (string=? file ".")
(string=? file ".."))))
(let* ((files1 (scandir dir1 ordinary-file))
(files2 (scandir dir2 ordinary-file)))
(if (equal? files1 files2)
(map (lambda (file)
(equal-files?
(string-append dir1 "/" file)
(string-append dir2 "/" file)))
files1)
#f)))
(define (equal-files? file1 file2)
"Compares files, symlinks or directories of the same type."
(case (file-type file1)
((directory) (equal-directories? file1 file2))
((symlink) (equal-symlinks? file1 file2))
((regular) (equal-regulars? file1 file2))
(else
(display "The file type is unsupported by on-change service.\n")
#f)))
(define (file-type file)
(stat:type (lstat file)))
(define (something-changed? file1 file2)
(cond
((and (not (file-exists? file1))
(not (file-exists? file2))) #f)
((or (not (file-exists? file1))
(not (file-exists? file2))) #t)
((not (eq? (file-type file1) (file-type file2))) #t)
(else
(not (equal-files? file1 file2)))))
(define expressions-to-eval
(map
(lambda (x)
(let* ((file1 (string-append
(or (getenv "GUIX_OLD_HOME")
"/gnu/store/non-existing-generation")
"/" (car x)))
(file2 (string-append (getenv "GUIX_NEW_HOME") "/" (car x)))
(_ (format #t "Comparing ~a and\n~10t~a..." file1 file2))
(any-changes? (something-changed? file1 file2))
(_ (format #t " done (~a)\n"
(if any-changes? "changed" "same"))))
(if any-changes? (cadr x) "")))
'#$pattern-gexp-tuples))
(if #$eval-gexps?
(begin
(display "Evaling on-change gexps.\n\n")
(for-each primitive-eval expressions-to-eval)
(display "On-change gexps evaluation finished.\n\n"))
(display "\
On-change gexps won't be evaluated, disabled by service
configuration.\n"))))
(define home-run-on-change-service-type
(service-type (name 'home-run-on-change)
(extensions
(list (service-extension
home-activation-service-type
identity)))
(compose concatenate)
(extend compute-on-change-gexp)
(default-value #t)
(description "\
G-expressions to run if the specified files have changed since the
last generation. The extension should be a list of lists where the
first element is the pattern for file or directory that expected to be
changed, and the second element is the G-expression to be evaluated.")))
;;;
;;; Provenance tracking.
;;;
(define home-provenance-service-type
(service-type
(name 'home-provenance)
(extensions
(list (service-extension
home-service-type
(service-extension-compute
(first (service-type-extensions provenance-service-type))))))
(default-value #f) ;the HE config file
(description "\
Store provenance information about the home environment in the home
environment itself: the channels used when building the home
environment, and its configuration file, when available.")))
(define sexp->home-provenance sexp->system-provenance)
(define home-provenance system-provenance)
;;;
;;; Searching
;;;
(define (parent-directory directory)
"Get the parent directory of DIRECTORY"
(string-join (drop-right (string-split directory #\/) 1) "/"))
(define %guix-home-root-directory
;; Absolute file name of the module hierarchy.
(parent-directory
(dirname (dirname (search-path %load-path "gnu/home/services.scm")))))
(define %service-type-path
;; Search path for service types.
(make-parameter `((,%guix-home-root-directory . "gnu/home/services"))))
(define (all-home-service-modules)
"Return the default set of `home service' modules."
(cons (resolve-interface '(gnu home services))
(all-modules (%service-type-path)
#:warn warn-about-load-error)))
(define* (fold-home-service-types proc seed)
(fold-service-types proc seed (all-home-service-modules)))

View file

@ -0,0 +1,65 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2021 Andrew Tropin <andrew@trop.in>
;;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu home services fontutils)
#:use-module (gnu home services)
#:use-module (gnu packages fontutils)
#:use-module (guix gexp)
#:export (home-fontconfig-service-type))
;;; Commentary:
;;;
;;; Services related to fonts. home-fontconfig service provides
;;; fontconfig configuration, which allows fc-* utilities to find
;;; fonts in Guix Home's profile and regenerates font cache on
;;; activation.
;;;
;;; Code:
(define (add-fontconfig-config-file he-symlink-path)
`(("config/fontconfig/fonts.conf"
,(mixed-text-file
"fonts.conf"
"<?xml version='1.0'?>
<!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
<fontconfig>
<dir>~/.guix-home/profile/share/fonts</dir>
</fontconfig>"))))
(define (regenerate-font-cache-gexp _)
`(("profile/share/fonts"
,#~(system* #$(file-append fontconfig "/bin/fc-cache") "-fv"))))
(define home-fontconfig-service-type
(service-type (name 'home-fontconfig)
(extensions
(list (service-extension
home-files-service-type
add-fontconfig-config-file)
(service-extension
home-run-on-change-service-type
regenerate-font-cache-gexp)
(service-extension
home-profile-service-type
(const (list fontconfig)))))
(default-value #f)
(description
"Provides configuration file for fontconfig and make
fc-* utilities aware of font packages installed in Guix Home's profile.")))

115
gnu/home/services/mcron.scm Normal file
View file

@ -0,0 +1,115 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2021 Andrew Tropin <andrew@trop.in>
;;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu home services mcron)
#:use-module (gnu packages guile-xyz)
#:use-module (gnu home services)
#:use-module (gnu services shepherd)
#:use-module (gnu home services shepherd)
#:use-module (guix records)
#:use-module (guix gexp)
#:use-module (srfi srfi-1)
#:use-module (ice-9 match)
#:export (home-mcron-configuration
home-mcron-service-type))
;;; Commentary:
;;
;; Service for the GNU mcron cron job manager.
;;
;; Example configuration, the first job runs mbsync once every ten
;; minutes, the second one writes "Mcron service" to ~/mcron-file once
;; every minute.
;;
;; (service home-mcron-service-type
;; (home-mcron-configuration
;; (jobs (list #~(job '(next-minute
;; (range 0 60 10))
;; (lambda ()
;; (system* "mbsync" "--all")))
;; #~(job next-minute-from
;; (lambda ()
;; (call-with-output-file (string-append (getenv "HOME")
;; "/mcron-file")
;; (lambda (port)
;; (display "Mcron service" port)))))))))
;;
;;; Code:
(define-record-type* <home-mcron-configuration> home-mcron-configuration
make-home-mcron-configuration
home-mcron-configuration?
(package home-mcron-configuration-package ; package
(default mcron))
(jobs home-mcron-configuration-jobs ; list of jobs
(default '())))
(define job-files (@@ (gnu services mcron) job-files))
(define shepherd-schedule-action
(@@ (gnu services mcron) shepherd-schedule-action))
(define home-mcron-shepherd-services
(match-lambda
(($ <home-mcron-configuration> mcron '()) ; no jobs to run
'())
(($ <home-mcron-configuration> mcron jobs)
(let ((files (job-files mcron jobs)))
(list (shepherd-service
(documentation "User cron jobs.")
(provision '(mcron))
(modules `((srfi srfi-1)
(srfi srfi-26)
(ice-9 popen) ; for the 'schedule' action
(ice-9 rdelim)
(ice-9 match)
,@%default-modules))
(start #~(make-forkexec-constructor
(list #$(file-append mcron "/bin/mcron") #$@files)
#:log-file (string-append
(or (getenv "XDG_LOG_HOME")
(format #f "~a/.local/var/log"
(getenv "HOME")))
"/mcron.log")))
(stop #~(make-kill-destructor))
(actions
(list (shepherd-schedule-action mcron files)))))))))
(define home-mcron-profile (compose list home-mcron-configuration-package))
(define (home-mcron-extend config jobs)
(home-mcron-configuration
(inherit config)
(jobs (append (home-mcron-configuration-jobs config)
jobs))))
(define home-mcron-service-type
(service-type (name 'home-mcron)
(extensions
(list (service-extension
home-shepherd-service-type
home-mcron-shepherd-services)
(service-extension
home-profile-service-type
home-mcron-profile)))
(compose concatenate)
(extend home-mcron-extend)
(default-value (home-mcron-configuration))
(description
"Install and configure the GNU mcron cron job manager.")))

View file

@ -0,0 +1,633 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2021 Andrew Tropin <andrew@trop.in>
;;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu home services shells)
#:use-module (gnu services configuration)
#:use-module (gnu home services utils)
#:use-module (gnu home services)
#:use-module (gnu packages shells)
#:use-module (gnu packages bash)
#:use-module (guix gexp)
#:use-module (guix packages)
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-26)
#:use-module (ice-9 match)
#:export (home-shell-profile-service-type
home-shell-profile-configuration
home-bash-service-type
home-bash-configuration
home-bash-extension
home-zsh-service-type
home-zsh-configuration
home-zsh-extension
home-fish-service-type
home-fish-configuration
home-fish-extension))
;;; Commentary:
;;;
;;; This module contains shell related services like Zsh.
;;;
;;; Code:
;;;
;;; Shell profile.
;;;
(define path? string?)
(define (serialize-path field-name val) val)
(define-configuration home-shell-profile-configuration
(profile
(text-config '())
"\
@code{home-shell-profile} is instantiated automatically by
@code{home-environment}, DO NOT create this service manually, it can
only be extended.
@code{profile} is a list of strings or gexps, which will go to
@file{~/.profile}. By default @file{~/.profile} contains the
initialization code, which have to be evaluated by login shell to make
home-environment's profile avaliable to the user, but other commands
can be added to the file if it is really necessary.
In most cases shell's configuration files are preferred places for
user's customizations. Extend home-shell-profile service only if you
really know what you do."))
(define (add-shell-profile-file config)
`(("profile"
,(mixed-text-file
"shell-profile"
"\
HOME_ENVIRONMENT=$HOME/.guix-home
. $HOME_ENVIRONMENT/setup-environment
$HOME_ENVIRONMENT/on-first-login\n"
(serialize-configuration
config
(filter-configuration-fields
home-shell-profile-configuration-fields '(profile)))))))
(define (add-profile-extensions config extensions)
(home-shell-profile-configuration
(inherit config)
(profile
(append (home-shell-profile-configuration-profile config)
extensions))))
(define home-shell-profile-service-type
(service-type (name 'home-shell-profile)
(extensions
(list (service-extension
home-files-service-type
add-shell-profile-file)))
(compose concatenate)
(extend add-profile-extensions)
(default-value (home-shell-profile-configuration))
(description "Create @file{~/.profile}, which is used
for environment initialization of POSIX compliant login shells. This
service type can be extended with a list of strings or gexps.")))
(define (serialize-boolean field-name val) "")
(define (serialize-posix-env-vars field-name val)
#~(string-append
#$@(map
(match-lambda
((key . #f)
"")
((key . #t)
#~(string-append "export " #$key "\n"))
((key . value)
#~(string-append "export " #$key "=" #$value "\n")))
val)))
;;;
;;; Zsh.
;;;
(define-configuration home-zsh-configuration
(package
(package zsh)
"The Zsh package to use.")
(xdg-flavor?
(boolean #t)
"Place all the configs to @file{$XDG_CONFIG_HOME/zsh}. Makes
@file{~/.zshenv} to set @env{ZDOTDIR} to @file{$XDG_CONFIG_HOME/zsh}.
Shell startup process will continue with
@file{$XDG_CONFIG_HOME/zsh/.zshenv}.")
(environment-variables
(alist '())
"Association list of environment variables to set for the Zsh session."
serialize-posix-env-vars)
(zshenv
(text-config '())
"List of strings or gexps, which will be added to @file{.zshenv}.
Used for setting user's shell environment variables. Must not contain
commands assuming the presence of tty or producing output. Will be
read always. Will be read before any other file in @env{ZDOTDIR}.")
(zprofile
(text-config '())
"List of strings or gexps, which will be added to @file{.zprofile}.
Used for executing user's commands at start of login shell (In most
cases the shell started on tty just after login). Will be read before
@file{.zlogin}.")
(zshrc
(text-config '())
"List of strings or gexps, which will be added to @file{.zshrc}.
Used for executing user's commands at start of interactive shell (The
shell for interactive usage started by typing @code{zsh} or by
terminal app or any other program).")
(zlogin
(text-config '())
"List of strings or gexps, which will be added to @file{.zlogin}.
Used for executing user's commands at the end of starting process of
login shell.")
(zlogout
(text-config '())
"List of strings or gexps, which will be added to @file{.zlogout}.
Used for executing user's commands at the exit of login shell. It
won't be read in some cases (if the shell terminates by exec'ing
another process for example)."))
(define (add-zsh-configuration config)
(let* ((xdg-flavor? (home-zsh-configuration-xdg-flavor? config)))
(define prefix-file
(cut string-append
(if xdg-flavor?
"config/zsh/."
"") <>))
(define (filter-fields field)
(filter-configuration-fields home-zsh-configuration-fields
(list field)))
(define (serialize-field field)
(serialize-configuration
config
(filter-fields field)))
(define (file-if-not-empty field)
(let ((file-name (symbol->string field))
(field-obj (car (filter-fields field))))
(if (not (null? ((configuration-field-getter field-obj) config)))
`(,(prefix-file file-name)
,(mixed-text-file
file-name
(serialize-field field)))
'())))
(filter
(compose not null?)
`(,(if xdg-flavor?
`("zshenv"
,(mixed-text-file
"auxiliary-zshenv"
(if xdg-flavor?
"source ${XDG_CONFIG_HOME:-$HOME/.config}/zsh/.zshenv\n"
"")))
'())
(,(prefix-file "zshenv")
,(mixed-text-file
"zshenv"
(if xdg-flavor?
"export ZDOTDIR=${XDG_CONFIG_HOME:-$HOME/.config}/zsh\n"
"")
(serialize-field 'zshenv)
(serialize-field 'environment-variables)))
(,(prefix-file "zprofile")
,(mixed-text-file
"zprofile"
"\
# Setups system and user profiles and related variables
source /etc/profile
# Setups home environment profile
source ~/.profile
# It's only necessary if zsh is a login shell, otherwise profiles will
# be already sourced by bash
"
(serialize-field 'zprofile)))
,@(list (file-if-not-empty 'zshrc)
(file-if-not-empty 'zlogin)
(file-if-not-empty 'zlogout))))))
(define (add-zsh-packages config)
(list (home-zsh-configuration-package config)))
(define-configuration/no-serialization home-zsh-extension
(environment-variables
(alist '())
"Association list of environment variables to set.")
(zshrc
(text-config '())
"List of strings or gexps.")
(zshenv
(text-config '())
"List of strings or gexps.")
(zprofile
(text-config '())
"List of strings or gexps.")
(zlogin
(text-config '())
"List of strings or gexps.")
(zlogout
(text-config '())
"List of strings or gexps."))
(define (home-zsh-extensions original-config extension-configs)
(home-zsh-configuration
(inherit original-config)
(environment-variables
(append (home-zsh-configuration-environment-variables original-config)
(append-map
home-zsh-extension-environment-variables extension-configs)))
(zshrc
(append (home-zsh-configuration-zshrc original-config)
(append-map
home-zsh-extension-zshrc extension-configs)))
(zshenv
(append (home-zsh-configuration-zshenv original-config)
(append-map
home-zsh-extension-zshenv extension-configs)))
(zprofile
(append (home-zsh-configuration-zprofile original-config)
(append-map
home-zsh-extension-zprofile extension-configs)))
(zlogin
(append (home-zsh-configuration-zlogin original-config)
(append-map
home-zsh-extension-zlogin extension-configs)))
(zlogout
(append (home-zsh-configuration-zlogout original-config)
(append-map
home-zsh-extension-zlogout extension-configs)))))
(define home-zsh-service-type
(service-type (name 'home-zsh)
(extensions
(list (service-extension
home-files-service-type
add-zsh-configuration)
(service-extension
home-profile-service-type
add-zsh-packages)))
(compose identity)
(extend home-zsh-extensions)
(default-value (home-zsh-configuration))
(description "Install and configure Zsh.")))
;;;
;;; Bash.
;;;
(define-configuration home-bash-configuration
(package
(package bash)
"The Bash package to use.")
(guix-defaults?
(boolean #t)
"Add sane defaults like reading @file{/etc/bashrc}, coloring output
for @code{ls} provided by guix to @file{.bashrc}.")
(environment-variables
(alist '())
"Association list of environment variables to set for the Bash session."
serialize-posix-env-vars)
(bash-profile
(text-config '())
"List of strings or gexps, which will be added to @file{.bash_profile}.
Used for executing user's commands at start of login shell (In most
cases the shell started on tty just after login). @file{.bash_login}
won't be ever read, because @file{.bash_profile} always present.")
(bashrc
(text-config '())
"List of strings or gexps, which will be added to @file{.bashrc}.
Used for executing user's commands at start of interactive shell (The
shell for interactive usage started by typing @code{bash} or by
terminal app or any other program).")
(bash-logout
(text-config '())
"List of strings or gexps, which will be added to @file{.bash_logout}.
Used for executing user's commands at the exit of login shell. It
won't be read in some cases (if the shell terminates by exec'ing
another process for example)."))
;; TODO: Use value from (gnu system shadow)
(define guix-bashrc
"\
# Bash initialization for interactive non-login shells and
# for remote shells (info \"(bash) Bash Startup Files\").
# Export 'SHELL' to child processes. Programs such as 'screen'
# honor it and otherwise use /bin/sh.
export SHELL
if [[ $- != *i* ]]
then
# We are being invoked from a non-interactive shell. If this
# is an SSH session (as in \"ssh host command\"), source
# /etc/profile so we get PATH and other essential variables.
[[ -n \"$SSH_CLIENT\" ]] && source /etc/profile
# Don't do anything else.
return
fi
# Source the system-wide file.
source /etc/bashrc
# Adjust the prompt depending on whether we're in 'guix environment'.
if [ -n \"$GUIX_ENVIRONMENT\" ]
then
PS1='\\u@\\h \\w [env]\\$ '
else
PS1='\\u@\\h \\w\\$ '
fi
alias ls='ls -p --color=auto'
alias ll='ls -l'
alias grep='grep --color=auto'\n")
(define (add-bash-configuration config)
(define (filter-fields field)
(filter-configuration-fields home-bash-configuration-fields
(list field)))
(define (serialize-field field)
(serialize-configuration
config
(filter-fields field)))
(define* (file-if-not-empty field #:optional (extra-content #f))
(let ((file-name (symbol->string field))
(field-obj (car (filter-fields field))))
(if (or extra-content
(not (null? ((configuration-field-getter field-obj) config))))
`(,(object->snake-case-string file-name)
,(mixed-text-file
(object->snake-case-string file-name)
(if extra-content extra-content "")
(serialize-field field)))
'())))
(filter
(compose not null?)
`(("bash_profile"
,(mixed-text-file
"bash_profile"
"\
# Setups system and user profiles and related variables
# /etc/profile will be sourced by bash automatically
# Setups home environment profile
if [ -f ~/.profile ]; then source ~/.profile; fi
# Honor per-interactive-shell startup file
if [ -f ~/.bashrc ]; then source ~/.bashrc; fi
"
(serialize-field 'bash-profile)
(serialize-field 'environment-variables)))
,@(list (file-if-not-empty
'bashrc
(if (home-bash-configuration-guix-defaults? config)
guix-bashrc
#f))
(file-if-not-empty 'bash-logout)))))
(define (add-bash-packages config)
(list (home-bash-configuration-package config)))
(define-configuration/no-serialization home-bash-extension
(environment-variables
(alist '())
"Association list of environment variables to set.")
(bash-profile
(text-config '())
"List of strings or gexps.")
(bashrc
(text-config '())
"List of strings or gexps.")
(bash-logout
(text-config '())
"List of strings or gexps."))
(define (home-bash-extensions original-config extension-configs)
(home-bash-configuration
(inherit original-config)
(environment-variables
(append (home-bash-configuration-environment-variables original-config)
(append-map
home-bash-extension-environment-variables extension-configs)))
(bash-profile
(append (home-bash-configuration-bash-profile original-config)
(append-map
home-bash-extension-bash-profile extension-configs)))
(bashrc
(append (home-bash-configuration-bashrc original-config)
(append-map
home-bash-extension-bashrc extension-configs)))
(bash-logout
(append (home-bash-configuration-bash-logout original-config)
(append-map
home-bash-extension-bash-logout extension-configs)))))
(define home-bash-service-type
(service-type (name 'home-bash)
(extensions
(list (service-extension
home-files-service-type
add-bash-configuration)
(service-extension
home-profile-service-type
add-bash-packages)))
(compose identity)
(extend home-bash-extensions)
(default-value (home-bash-configuration))
(description "Install and configure GNU Bash.")))
;;;
;;; Fish.
;;;
(define (serialize-fish-aliases field-name val)
#~(string-append
#$@(map (match-lambda
((key . value)
#~(string-append "alias " #$key " \"" #$value "\"\n"))
(_ ""))
val)))
(define (serialize-fish-abbreviations field-name val)
#~(string-append
#$@(map (match-lambda
((key . value)
#~(string-append "abbr --add " #$key " " #$value "\n"))
(_ ""))
val)))
(define (serialize-fish-env-vars field-name val)
#~(string-append
#$@(map (match-lambda
((key . #f)
"")
((key . #t)
#~(string-append "set " #$key "\n"))
((key . value)
#~(string-append "set " #$key " " #$value "\n")))
val)))
(define-configuration home-fish-configuration
(package
(package fish)
"The Fish package to use.")
(config
(text-config '())
"List of strings or gexps, which will be added to
@file{$XDG_CONFIG_HOME/fish/config.fish}.")
(environment-variables
(alist '())
"Association list of environment variables to set in Fish."
serialize-fish-env-vars)
(aliases
(alist '())
"Association list of aliases for Fish, both the key and the value
should be a string. An alias is just a simple function that wraps a
command, If you want something more akin to @dfn{aliases} in POSIX
shells, see the @code{abbreviations} field."
serialize-fish-aliases)
(abbreviations
(alist '())
"Association list of abbreviations for Fish. These are words that,
when typed in the shell, will automatically expand to the full text."
serialize-fish-abbreviations))
(define (fish-files-service config)
`(("config/fish/config.fish"
,(mixed-text-file
"fish-config.fish"
#~(string-append "\
# if we haven't sourced the login config, do it
status --is-login; and not set -q __fish_login_config_sourced
and begin
set --prepend fish_function_path "
#$fish-foreign-env
"/share/fish/functions
fenv source $HOME/.profile
set -e fish_function_path[1]
set -g __fish_login_config_sourced 1
end\n\n")
(serialize-configuration
config
home-fish-configuration-fields)))))
(define (fish-profile-service config)
(list (home-fish-configuration-package config)))
(define-configuration/no-serialization home-fish-extension
(config
(text-config '())
"List of strings or gexps for extending the Fish initialization file.")
(environment-variables
(alist '())
"Association list of environment variables to set.")
(aliases
(alist '())
"Association list of Fish aliases.")
(abbreviations
(alist '())
"Association list of Fish abbreviations."))
(define (home-fish-extensions original-config extension-configs)
(home-fish-configuration
(inherit original-config)
(config
(append (home-fish-configuration-config original-config)
(append-map
home-fish-extension-config extension-configs)))
(environment-variables
(append (home-fish-configuration-environment-variables original-config)
(append-map
home-fish-extension-environment-variables extension-configs)))
(aliases
(append (home-fish-configuration-aliases original-config)
(append-map
home-fish-extension-aliases extension-configs)))
(abbreviations
(append (home-fish-configuration-abbreviations original-config)
(append-map
home-fish-extension-abbreviations extension-configs)))))
;; TODO: Support for generating completion files
;; TODO: Support for installing plugins
(define home-fish-service-type
(service-type (name 'home-fish)
(extensions
(list (service-extension
home-files-service-type
fish-files-service)
(service-extension
home-profile-service-type
fish-profile-service)))
(compose identity)
(extend home-fish-extensions)
(default-value (home-fish-configuration))
(description "\
Install and configure Fish, the friendly interactive shell.")))
(define (generate-home-shell-profile-documentation)
(generate-documentation
`((home-shell-profile-configuration
,home-shell-profile-configuration-fields))
'home-shell-profile-configuration))
(define (generate-home-bash-documentation)
(generate-documentation
`((home-bash-configuration
,home-bash-configuration-fields))
'home-bash-configuration))
(define (generate-home-zsh-documentation)
(generate-documentation
`((home-zsh-configuration
,home-zsh-configuration-fields))
'home-zsh-configuration))
(define (generate-home-fish-documentation)
(string-append
(generate-documentation
`((home-fish-configuration
,home-fish-configuration-fields))
'home-fish-configuration)
"\n\n"
(generate-documentation
`((home-fish-extension
,home-fish-extension-fields))
'home-fish-extension)))

View file

@ -0,0 +1,134 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2021 Andrew Tropin <andrew@trop.in>
;;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu home services shepherd)
#:use-module (gnu home services)
#:use-module (gnu packages admin)
#:use-module (gnu services shepherd)
#:use-module (guix sets)
#:use-module (guix gexp)
#:use-module (guix records)
#:use-module (srfi srfi-1)
#:export (home-shepherd-service-type
home-shepherd-configuration)
#:re-export (shepherd-service
shepherd-action))
(define-record-type* <home-shepherd-configuration>
home-shepherd-configuration make-home-shepherd-configuration
home-shepherd-configuration?
(shepherd home-shepherd-configuration-shepherd
(default shepherd)) ; package
(auto-start? home-shepherd-configuration-auto-start?
(default #t))
(services home-shepherd-configuration-services
(default '())))
(define (home-shepherd-configuration-file services shepherd)
"Return the shepherd configuration file for SERVICES. SHEPHERD is used
as shepherd package."
(assert-valid-graph services)
(let ((files (map shepherd-service-file services))
;; TODO: Add compilation of services, it can improve start
;; time.
;; (scm->go (cute scm->go <> shepherd))
)
(define config
#~(begin
(use-modules (srfi srfi-34)
(system repl error-handling))
(apply
register-services
(map
(lambda (file) (load file))
'#$files))
(action 'root 'daemonize)
(format #t "Starting services...~%")
(for-each
(lambda (service) (start service))
'#$(append-map shepherd-service-provision
(filter shepherd-service-auto-start?
services)))
(newline)))
(scheme-file "shepherd.conf" config)))
(define (launch-shepherd-gexp config)
(let* ((shepherd (home-shepherd-configuration-shepherd config))
(services (home-shepherd-configuration-services config)))
(if (home-shepherd-configuration-auto-start? config)
(with-imported-modules '((guix build utils))
#~(let ((log-dir (or (getenv "XDG_LOG_HOME")
(format #f "~a/.local/var/log" (getenv "HOME")))))
((@ (guix build utils) mkdir-p) log-dir)
(system*
#$(file-append shepherd "/bin/shepherd")
"--logfile"
(string-append
log-dir
"/shepherd.log")
"--config"
#$(home-shepherd-configuration-file services shepherd))))
#~"")))
(define (reload-configuration-gexp config)
(let* ((shepherd (home-shepherd-configuration-shepherd config))
(services (home-shepherd-configuration-services config)))
#~(system*
#$(file-append shepherd "/bin/herd")
"load" "root"
#$(home-shepherd-configuration-file services shepherd))))
(define (ensure-shepherd-gexp config)
#~(if (file-exists?
(string-append
(or (getenv "XDG_RUNTIME_DIR")
(format #f "/run/user/~a" (getuid)))
"/shepherd/socket"))
#$(reload-configuration-gexp config)
#$(launch-shepherd-gexp config)))
(define-public home-shepherd-service-type
(service-type (name 'home-shepherd)
(extensions
(list (service-extension
home-run-on-first-login-service-type
launch-shepherd-gexp)
(service-extension
home-activation-service-type
ensure-shepherd-gexp)
(service-extension
home-profile-service-type
(lambda (config)
`(,(home-shepherd-configuration-shepherd config))))))
(compose concatenate)
(extend
(lambda (config extra-services)
(home-shepherd-configuration
(inherit config)
(services
(append (home-shepherd-configuration-services config)
extra-services)))))
(default-value (home-shepherd-configuration))
(description "Configure and install userland Shepherd.")))

View file

@ -0,0 +1,247 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2021 Andrew Tropin <andrew@trop.in>
;;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu home services symlink-manager)
#:use-module (gnu home services)
#:use-module (guix gexp)
#:export (home-symlink-manager-service-type))
;;; Comment:
;;;
;;; symlink-manager cares about configuration files: it backs up files
;;; created by user, removes symlinks and directories created by a
;;; previous generation, and creates new directories and symlinks to
;;; configuration files according to the content of files/ directory
;;; (created by home-files-service) of the current home environment
;;; generation.
;;;
;;; Code:
(define (update-symlinks-script)
(program-file
"update-symlinks"
#~(begin
(use-modules (ice-9 ftw)
(ice-9 curried-definitions)
(ice-9 match)
(srfi srfi-1))
(define ((simplify-file-tree parent) file)
"Convert the result produced by `file-system-tree' to less
verbose and more suitable for further processing format.
Extract dir/file info from stat and compose a relative path to the
root of the file tree.
Sample output:
((dir . \".\")
((dir . \"config\")
((dir . \"config/fontconfig\")
(file . \"config/fontconfig/fonts.conf\"))
((dir . \"config/isync\")
(file . \"config/isync/mbsyncrc\"))))
"
(match file
((name stat) `(file . ,(string-append parent name)))
((name stat children ...)
(cons `(dir . ,(string-append parent name))
(map (simplify-file-tree
(if (equal? name ".")
""
(string-append parent name "/")))
children)))))
(define ((file-tree-traverse preordering) node)
"Traverses the file tree in different orders, depending on PREORDERING.
if PREORDERING is @code{#t} resulting list will contain directories
before files located in those directories, otherwise directory will
appear only after all nested items already listed."
(let ((prepend (lambda (a b) (append b a))))
(match node
(('file . path) (list node))
((('dir . path) . rest)
((if preordering append prepend)
(list (cons 'dir path))
(append-map (file-tree-traverse preordering) rest))))))
(use-modules (guix build utils))
(let* ((config-home (or (getenv "XDG_CONFIG_HOME")
(string-append (getenv "HOME") "/.config")))
(he-path (string-append (getenv "HOME") "/.guix-home"))
(new-he-path (string-append he-path ".new"))
(new-home (getenv "GUIX_NEW_HOME"))
(old-home (getenv "GUIX_OLD_HOME"))
(new-files-path (string-append new-home "/files"))
;; Trailing dot is required, because files itself is symlink and
;; to make file-system-tree works it should be a directory.
(new-files-dir-path (string-append new-files-path "/."))
(home-path (getenv "HOME"))
(backup-dir (string-append home-path "/"
(number->string (current-time))
"-guix-home-legacy-configs-backup"))
(old-tree (if old-home
((simplify-file-tree "")
(file-system-tree
(string-append old-home "/files/.")))
#f))
(new-tree ((simplify-file-tree "")
(file-system-tree new-files-dir-path)))
(get-source-path
(lambda (path)
(readlink (string-append new-files-path "/" path))))
(get-target-path
(lambda (path)
(string-append home-path "/." path)))
(get-backup-path
(lambda (path)
(string-append backup-dir "/." path)))
(directory?
(lambda (path)
(equal? (stat:type (stat path)) 'directory)))
(empty-directory?
(lambda (dir)
(equal? (scandir dir) '("." ".."))))
(symlink-to-store?
(lambda (path)
(and
(equal? (stat:type (lstat path)) 'symlink)
(store-file-name? (readlink path)))))
(backup-file
(lambda (path)
(mkdir-p backup-dir)
(format #t "Backing up ~a..." (get-target-path path))
(mkdir-p (dirname (get-backup-path path)))
(rename-file (get-target-path path) (get-backup-path path))
(display " done\n")))
(cleanup-symlinks
(lambda ()
(let ((to-delete ((file-tree-traverse #f) old-tree)))
(display
"Cleaning up symlinks from previous home-environment.\n\n")
(map
(match-lambda
(('dir . ".")
(display "Cleanup finished.\n\n"))
(('dir . path)
(if (and
(file-exists? (get-target-path path))
(directory? (get-target-path path))
(empty-directory? (get-target-path path)))
(begin
(format #t "Removing ~a..."
(get-target-path path))
(rmdir (get-target-path path))
(display " done\n"))
(format
#t "Skipping ~a (not an empty directory)... done\n"
(get-target-path path))))
(('file . path)
(when (file-exists? (get-target-path path))
;; DO NOT remove the file if it is no longer
;; a symlink to the store, it will be backed
;; up later during create-symlinks phase.
(if (symlink-to-store? (get-target-path path))
(begin
(format #t "Removing ~a..." (get-target-path path))
(delete-file (get-target-path path))
(display " done\n"))
(format
#t
"Skipping ~a (not a symlink to store)... done\n"
(get-target-path path))))))
to-delete))))
(create-symlinks
(lambda ()
(let ((to-create ((file-tree-traverse #t) new-tree)))
(map
(match-lambda
(('dir . ".")
(display
"New symlinks to home-environment will be created soon.\n")
(format
#t "All conflicting files will go to ~a.\n\n" backup-dir))
(('dir . path)
(let ((target-path (get-target-path path)))
(when (and (file-exists? target-path)
(not (directory? target-path)))
(backup-file path))
(if (file-exists? target-path)
(format
#t "Skipping ~a (directory already exists)... done\n"
target-path)
(begin
(format #t "Creating ~a..." target-path)
(mkdir target-path)
(display " done\n")))))
(('file . path)
(when (file-exists? (get-target-path path))
(backup-file path))
(format #t "Symlinking ~a -> ~a..."
(get-target-path path) (get-source-path path))
(symlink (get-source-path path) (get-target-path path))
(display " done\n")))
to-create)))))
(when old-tree
(cleanup-symlinks))
(create-symlinks)
(symlink new-home new-he-path)
(rename-file new-he-path he-path)
(display " done\nFinished updating symlinks.\n\n")))))
(define (update-symlinks-gexp _)
#~(primitive-load #$(update-symlinks-script)))
(define home-symlink-manager-service-type
(service-type (name 'home-symlink-manager)
(extensions
(list
(service-extension
home-activation-service-type
update-symlinks-gexp)))
(default-value #f)
(description "Provide an @code{update-symlinks}
script, which creates symlinks to configuration files and directories
on every activation. If an existing file would be overwritten by a
symlink, backs up that file first.")))

105
gnu/home/services/utils.scm Normal file
View file

@ -0,0 +1,105 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz>
;;; Copyright © 2021 Andrew Tropin <andrew@trop.in>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu home services utils)
#:use-module (ice-9 string-fun)
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-26)
#:export (maybe-object->string
object->snake-case-string
object->camel-case-string
list->human-readable-list))
(define (maybe-object->string object)
"Like @code{object->string} but don't do anyting if OBJECT already is
a string."
(if (string? object)
object
(object->string object)))
;; Snake case: <https://en.wikipedia.org/wiki/Snake_case>
(define* (object->snake-case-string object #:optional (style 'lower))
"Convert the object OBJECT to the equivalent string in ``snake
case''. STYLE can be three `@code{lower}', `@code{upper}', or
`@code{capitalize}', defaults to `@code{lower}'.
@example
(object->snake-case-string 'variable-name 'upper)
@result{} \"VARIABLE_NAME\" @end example"
(if (not (member style '(lower upper capitalize)))
(error 'invalid-style (format #f "~a is not a valid style" style))
(let ((stringified (maybe-object->string object)))
(string-replace-substring
(cond
((equal? style 'lower) stringified)
((equal? style 'upper) (string-upcase stringified))
(else (string-capitalize stringified)))
"-" "_"))))
(define* (object->camel-case-string object #:optional (style 'lower))
"Convert the object OBJECT to the equivalent string in ``camel case''.
STYLE can be three `@code{lower}', `@code{upper}', defaults to
`@code{lower}'.
@example
(object->camel-case-string 'variable-name 'upper)
@result{} \"VariableName\"
@end example"
(if (not (member style '(lower upper)))
(error 'invalid-style (format #f "~a is not a valid style" style))
(let ((stringified (maybe-object->string object)))
(cond
((eq? style 'upper)
(string-concatenate
(map string-capitalize
(string-split stringified (cut eqv? <> #\-)))))
((eq? style 'lower)
(let ((splitted-string (string-split stringified (cut eqv? <> #\-))))
(string-concatenate
(cons (first splitted-string)
(map string-capitalize
(cdr splitted-string))))))))))
(define* (list->human-readable-list lst
#:key
(cumulative? #f)
(proc identity))
"Turn a list LST into a sequence of terms readable by humans.
If CUMULATIVE? is @code{#t}, use ``and'', otherwise use ``or'' before
the last term.
PROC is a procedure to apply to each of the elements of a list before
turning them into a single human readable string.
@example
(list->human-readable-list '(1 4 9) #:cumulative? #t #:proc sqrt)
@result{} \"1, 2, and 3\"
@end example
yields:"
(let* ((word (if cumulative? "and " "or "))
(init (append (drop-right lst 1))))
(format #f "~a" (string-append
(string-join
(map (compose maybe-object->string proc) init)
", " 'suffix)
word
(maybe-object->string (proc (last lst)))))))

477
gnu/home/services/xdg.scm Normal file
View file

@ -0,0 +1,477 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2021 Andrew Tropin <andrew@trop.in>
;;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu home services xdg)
#:use-module (gnu services configuration)
#:use-module (gnu home services)
#:use-module (gnu packages freedesktop)
#:use-module (gnu home services utils)
#:use-module (guix gexp)
#:use-module (guix records)
#:use-module (guix i18n)
#:use-module (guix diagnostics)
#:use-module (ice-9 match)
#:use-module (srfi srfi-1)
#:use-module (rnrs enums)
#:export (home-xdg-base-directories-service-type
home-xdg-base-directories-configuration
home-xdg-base-directories-configuration?
home-xdg-user-directories-service-type
home-xdg-user-directories-configuration
home-xdg-user-directories-configuration?
xdg-desktop-action
xdg-desktop-entry
home-xdg-mime-applications-service-type
home-xdg-mime-applications-configuration))
;;; Commentary:
;;
;; This module contains services related to XDG directories and
;; applications.
;;
;; - XDG base directories
;; - XDG user directories
;; - XDG MIME applications
;;
;;; Code:
;;;
;;; XDG base directories.
;;;
(define (serialize-path field-name val) "")
(define path? string?)
(define-configuration home-xdg-base-directories-configuration
(cache-home
(path "$HOME/.cache")
"Base directory for programs to store user-specific non-essential
(cached) data. Files in this directory can be deleted anytime without
loss of important data.")
(config-home
(path "$HOME/.config")
"Base directory for programs to store configuration files.
Some programs store here log or state files, but it's not desired,
this directory should contain static configurations.")
(data-home
(path "$HOME/.local/share")
"Base directory for programs to store architecture independent
read-only shared data, analogus to @file{/usr/share}, but for user.")
(runtime-dir
(path "${XDG_RUNTIME_DIR:-/run/user/$UID}")
"Base directory for programs to store user-specific runtime files,
like sockets.")
(log-home
(path "$HOME/.local/var/log")
"Base directory for programs to store log files, analogus to
@file{/var/log}, but for user. It is not a part of XDG Base Directory
Specification, but helps to make implementation of home services more
consistent.")
(state-home
(path "$HOME/.local/var/lib")
"Base directory for programs to store state files, like databases,
analogus to @file{/var/lib}, but for user. It is not a part of XDG
Base Directory Specification, but helps to make implementation of home
services more consistent."))
(define (home-xdg-base-directories-environment-variables-service config)
(map
(lambda (field)
(cons (format
#f "XDG_~a"
(object->snake-case-string (configuration-field-name field) 'upper))
((configuration-field-getter field) config)))
home-xdg-base-directories-configuration-fields))
(define (ensure-xdg-base-dirs-on-activation config)
#~(map (lambda (xdg-base-dir-variable)
((@@ (guix build utils) mkdir-p)
(getenv
xdg-base-dir-variable)))
'#$(map (lambda (field)
(format
#f "XDG_~a"
(object->snake-case-string
(configuration-field-name field) 'upper)))
home-xdg-base-directories-configuration-fields)))
(define (last-extension-or-cfg config extensions)
"Picks configuration value from last provided extension. If there
are no extensions use configuration instead."
(or (and (not (null? extensions)) (last extensions)) config))
(define home-xdg-base-directories-service-type
(service-type (name 'home-xdg-base-directories)
(extensions
(list (service-extension
home-environment-variables-service-type
home-xdg-base-directories-environment-variables-service)
(service-extension
home-activation-service-type
ensure-xdg-base-dirs-on-activation)))
(default-value (home-xdg-base-directories-configuration))
(compose identity)
(extend last-extension-or-cfg)
(description "Configure XDG base directories. This
service introduces two additional variables @env{XDG_STATE_HOME},
@env{XDG_LOG_HOME}. They are not a part of XDG specification, at
least yet, but are convinient to have, it improves the consistency
between different home services. The services of this service-type is
instantiated by default, to provide non-default value, extend the
service-type (using @code{simple-service} for example).")))
(define (generate-home-xdg-base-directories-documentation)
(generate-documentation
`((home-xdg-base-directories-configuration
,home-xdg-base-directories-configuration-fields))
'home-xdg-base-directories-configuration))
;;;
;;; XDG user directories.
;;;
(define (serialize-string field-name val)
;; The path has to be quoted
(format #f "XDG_~a_DIR=\"~a\"\n"
(object->snake-case-string field-name 'upper) val))
(define-configuration home-xdg-user-directories-configuration
(desktop
(string "$HOME/Desktop")
"Default ``desktop'' directory, this is what you see on your
desktop when using a desktop environment,
e.g. GNOME (@pxref{XWindow,,,guix.info}).")
(documents
(string "$HOME/Documents")
"Default directory to put documents like PDFs.")
(download
(string "$HOME/Downloads")
"Default directory downloaded files, this is where your Web-broser
will put downloaded files in.")
(music
(string "$HOME/Music")
"Default directory for audio files.")
(pictures
(string "$HOME/Pictures")
"Default directory for pictures and images.")
(publicshare
(string "$HOME/Public")
"Default directory for shared files, which can be accessed by other
users on local machine or via network.")
(templates
(string "$HOME/Templates")
"Default directory for templates. They can be used by graphical
file manager or other apps for creating new files with some
pre-populated content.")
(videos
(string "$HOME/Videos")
"Default directory for videos."))
(define (home-xdg-user-directories-files-service config)
`(("config/user-dirs.conf"
,(mixed-text-file
"user-dirs.conf"
"enabled=False\n"))
("config/user-dirs.dirs"
,(mixed-text-file
"user-dirs.dirs"
(serialize-configuration
config
home-xdg-user-directories-configuration-fields)))))
(define (home-xdg-user-directories-activation-service config)
(let ((dirs (map (lambda (field)
((configuration-field-getter field) config))
home-xdg-user-directories-configuration-fields)))
#~(let ((ensure-dir
(lambda (path)
(mkdir-p
((@@ (ice-9 string-fun) string-replace-substring)
path "$HOME" (getenv "HOME"))))))
(display "Creating XDG user directories...")
(map ensure-dir '#$dirs)
(display " done\n"))))
(define home-xdg-user-directories-service-type
(service-type (name 'home-xdg-user-directories)
(extensions
(list (service-extension
home-files-service-type
home-xdg-user-directories-files-service)
(service-extension
home-activation-service-type
home-xdg-user-directories-activation-service)))
(default-value (home-xdg-user-directories-configuration))
(description "Configure XDG user directories. To
disable a directory, point it to the $HOME.")))
(define (generate-home-xdg-user-directories-documentation)
(generate-documentation
`((home-xdg-user-directories-configuration
,home-xdg-user-directories-configuration-fields))
'home-xdg-user-directories-configuration))
;;;
;;; XDG MIME applications.
;;;
;; Example config
;;
;; (home-xdg-mime-applications-configuration
;; (added '((x-scheme-handler/magnet . torrent.desktop)))
;; (default '((inode/directory . file.desktop)))
;; (removed '((inode/directory . thunar.desktop)))
;; (desktop-entries
;; (list (xdg-desktop-entry
;; (file "file")
;; (name "File manager")
;; (type 'application)
;; (config
;; '((exec . "emacsclient -c -a emacs %u"))))
;; (xdg-desktop-entry
;; (file "text")
;; (name "Text editor")
;; (type 'application)
;; (config
;; '((exec . "emacsclient -c -a emacs %u")))
;; (actions
;; (list (xdg-desktop-action
;; (action 'create)
;; (name "Create an action")
;; (config
;; '((exec . "echo hi"))))))))))
;; See
;; <https://specifications.freedesktop.org/shared-mime-info-spec/shared-mime-info-spec-latest.html>
;; <https://specifications.freedesktop.org/mime-apps-spec/mime-apps-spec-latest.html>
(define (serialize-alist field-name val)
(define (serialize-mimelist-entry key val)
(let ((val (cond
((list? val)
(string-join (map maybe-object->string val) ";"))
((or (string? val) (symbol? val))
val)
(else (raise (formatted-message
(G_ "\
The value of an XDG MIME entry must be a list, string or symbol, was given ~a")
val))))))
(format #f "~a=~a\n" key val)))
(define (merge-duplicates alist acc)
"Merge values that have the same key.
@example
(merge-duplicates '((key1 . value1)
(key2 . value2)
(key1 . value3)
(key1 . value4)) '())
@result{} ((key1 . (value4 value3 value1)) (key2 . value2))
@end example"
(cond
((null? alist) acc)
(else (let* ((head (first alist))
(tail (cdr alist))
(key (first head))
(value (cdr head))
(duplicate? (assoc key acc))
(ensure-list (lambda (x)
(if (list? x) x (list x)))))
(if duplicate?
;; XXX: This will change the order of things,
;; though, it shouldn't be a problem for XDG MIME.
(merge-duplicates
tail
(alist-cons key
(cons value (ensure-list (cdr duplicate?)))
(alist-delete key acc)))
(merge-duplicates tail (cons head acc)))))))
(string-append (if (equal? field-name 'default)
"\n[Default Applications]\n"
(format #f "\n[~a Associations]\n"
(string-capitalize (symbol->string field-name))))
(generic-serialize-alist string-append
serialize-mimelist-entry
(merge-duplicates val '()))))
(define xdg-desktop-types (make-enumeration
'(application
link
directory)))
(define (xdg-desktop-type? type)
(unless (enum-set-member? type xdg-desktop-types)
(raise (formatted-message
(G_ "XDG desktop type must be of of ~a, was given: ~a")
(list->human-readable-list (enum-set->list xdg-desktop-types))
type))))
;; TODO: Add proper docs for this
;; XXX: 'define-configuration' require that fields have a default
;; value.
(define-record-type* <xdg-desktop-action>
xdg-desktop-action make-xdg-desktop-action
xdg-desktop-action?
(action xdg-desktop-action-action) ; symbol
(name xdg-desktop-action-name) ; string
(config xdg-desktop-action-config ; alist
(default '())))
(define-record-type* <xdg-desktop-entry>
xdg-desktop-entry make-xdg-desktop-entry
xdg-desktop-entry?
;; ".desktop" will automatically be added
(file xdg-desktop-entry-file) ; string
(name xdg-desktop-entry-name) ; string
(type xdg-desktop-entry-type) ; xdg-desktop-type
(config xdg-desktop-entry-config ; alist
(default '()))
(actions xdg-desktop-entry-actions ; list of <xdg-desktop-action>
(default '())))
(define desktop-entries? (list-of xdg-desktop-entry?))
(define (serialize-desktop-entries field-name val) "")
(define (serialize-xdg-desktop-entry entry)
"Return a tuple of the file name for ENTRY and the serialized
configuration."
(define (format-config key val)
(let ((val (cond
((list? val)
(string-join (map maybe-object->string val) ";"))
((boolean? val)
(if val "true" "false"))
(else val)))
(key (string-capitalize (maybe-object->string key))))
(list (if (string-suffix? key "?")
(string-drop-right key (- (string-length key) 1))
key)
"=" val "\n")))
(define (serialize-alist config)
(generic-serialize-alist identity format-config config))
(define (serialize-xdg-desktop-action action)
(match action
(($ <xdg-desktop-action> action name config)
`(,(format #f "[Desktop Action ~a]\n"
(string-capitalize (maybe-object->string action)))
,(format #f "Name=~a\n" name)
,@(serialize-alist config)))))
(match entry
(($ <xdg-desktop-entry> file name type config actions)
(list (if (string-suffix? file ".desktop")
file
(string-append file ".desktop"))
`("[Desktop Entry]\n"
,(format #f "Name=~a\n" name)
,(format #f "Type=~a\n"
(string-capitalize (symbol->string type)))
,@(serialize-alist config)
,@(append-map serialize-xdg-desktop-action actions))))))
(define-configuration home-xdg-mime-applications-configuration
(added
(alist '())
"An association list of MIME types and desktop entries which indicate
that the application should used to open the specified MIME type. The
value has to be string, symbol, or list of strings or symbols, this
applies to the `@code{default}', and `@code{removed}' fields as well.")
(default
(alist '())
"An association list of MIME types and desktop entries which indicate
that the application should be the default for opening the specified
MIME type.")
(removed
(alist '())
"An association list of MIME types and desktop entries which indicate
that the application cannot open the specified MIME type.")
(desktop-entries
(desktop-entries '())
"A list of XDG desktop entries to create. See
@code{xdg-desktop-entry}."))
(define (home-xdg-mime-applications-files-service config)
(define (add-xdg-desktop-entry-file entry)
(let ((file (first entry))
(config (second entry)))
(list (format #f "local/share/applications/~a" file)
(apply mixed-text-file
(format #f "xdg-desktop-~a-entry" file)
config))))
(append
`(("config/mimeapps.list"
,(mixed-text-file
"xdg-mime-appplications"
(serialize-configuration
config
home-xdg-mime-applications-configuration-fields))))
(map (compose add-xdg-desktop-entry-file serialize-xdg-desktop-entry)
(home-xdg-mime-applications-configuration-desktop-entries config))))
(define (home-xdg-mime-applications-extension old-config extension-configs)
(define (extract-fields config)
;; return '(added default removed desktop-entries)
(list (home-xdg-mime-applications-configuration-added config)
(home-xdg-mime-applications-configuration-default config)
(home-xdg-mime-applications-configuration-removed config)
(home-xdg-mime-applications-configuration-desktop-entries config)))
(define (append-configs elem acc)
(list (append (first elem) (first acc))
(append (second elem) (second acc))
(append (third elem) (third acc))
(append (fourth elem) (fourth acc))))
;; TODO: Implement procedure to check for duplicates without
;; sacrificing performance.
;;
;; Combine all the alists from 'added', 'default' and 'removed'
;; into one big alist.
(let ((folded-configs (fold append-configs
(extract-fields old-config)
(map extract-fields extension-configs))))
(home-xdg-mime-applications-configuration
(added (first folded-configs))
(default (second folded-configs))
(removed (third folded-configs))
(desktop-entries (fourth folded-configs)))))
(define home-xdg-mime-applications-service-type
(service-type (name 'home-xdg-mime-applications)
(extensions
(list (service-extension
home-files-service-type
home-xdg-mime-applications-files-service)))
(compose identity)
(extend home-xdg-mime-applications-extension)
(default-value (home-xdg-mime-applications-configuration))
(description
"Configure XDG MIME applications, and XDG desktop entries.")))

View file

@ -17,6 +17,7 @@
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu image) (define-module (gnu image)
#:use-module (gnu platform)
#:use-module (guix records) #:use-module (guix records)
#:export (partition #:export (partition
partition? partition?
@ -34,7 +35,7 @@
image? image?
image-name image-name
image-format image-format
image-target image-platform
image-size image-size
image-operating-system image-operating-system
image-partitions image-partitions
@ -47,7 +48,8 @@
image-type-name image-type-name
image-type-constructor image-type-constructor
os->image)) os->image
os+platform->image))
;;; ;;;
@ -78,7 +80,7 @@
(name image-name ;symbol (name image-name ;symbol
(default #f)) (default #f))
(format image-format) ;symbol (format image-format) ;symbol
(target image-target (platform image-platform ;<platform>
(default #f)) (default #f))
(size image-size ;size in bytes as integer (size image-size ;size in bytes as integer
(default 'guess)) (default 'guess))
@ -112,3 +114,8 @@
(define* (os->image os #:key type) (define* (os->image os #:key type)
(let ((constructor (image-type-constructor type))) (let ((constructor (image-type-constructor type)))
(constructor os))) (constructor os)))
(define* (os+platform->image os platform #:key type)
(image
(inherit (os->image os #:type type))
(platform platform)))

View file

@ -330,6 +330,7 @@ selected keymap."
btrfs-progs btrfs-progs
jfsutils ;jfs_mkfs jfsutils ;jfs_mkfs
ntfs-3g ;mkfs.ntfs ntfs-3g ;mkfs.ntfs
xfsprogs ;mkfs.xfs
kbd ;chvt kbd ;chvt
guix ;guix system init call guix ;guix system init call
util-linux ;mkwap util-linux ;mkwap

View file

@ -131,7 +131,7 @@ Be careful, all data on the disk will be lost.")
(run-listbox-selection-page (run-listbox-selection-page
#:info-text (G_ "Please select the file-system type for this partition.") #:info-text (G_ "Please select the file-system type for this partition.")
#:title (G_ "File-system type") #:title (G_ "File-system type")
#:listbox-items '(ext4 btrfs fat16 fat32 jfs ntfs swap) #:listbox-items '(ext4 btrfs fat16 fat32 jfs ntfs xfs swap)
#:listbox-item->text user-fs-type-name #:listbox-item->text user-fs-type-name
#:sort-listbox-items? #f #:sort-listbox-items? #f
#:button-text (G_ "Exit") #:button-text (G_ "Exit")

View file

@ -231,6 +231,7 @@ inferior to MAX-SIZE, #f otherwise."
((fat32) "fat32") ((fat32) "fat32")
((jfs) "jfs") ((jfs) "jfs")
((ntfs) "ntfs") ((ntfs) "ntfs")
((xfs) "xfs")
((swap) "linux-swap"))) ((swap) "linux-swap")))
(define (user-fs-type->mount-type fs-type) (define (user-fs-type->mount-type fs-type)
@ -241,7 +242,8 @@ inferior to MAX-SIZE, #f otherwise."
((fat16) "vfat") ((fat16) "vfat")
((fat32) "vfat") ((fat32) "vfat")
((jfs) "jfs") ((jfs) "jfs")
((ntfs) "ntfs"))) ((ntfs) "ntfs")
((xfs) "xfs")))
(define (partition-filesystem-user-type partition) (define (partition-filesystem-user-type partition)
"Return the filesystem type of PARTITION, to be stored in the FS-TYPE field "Return the filesystem type of PARTITION, to be stored in the FS-TYPE field
@ -256,6 +258,7 @@ of <user-partition> record."
((string=? name "fat32") 'fat32) ((string=? name "fat32") 'fat32)
((string=? name "jfs") 'jfs) ((string=? name "jfs") 'jfs)
((string=? name "ntfs") 'ntfs) ((string=? name "ntfs") 'ntfs)
((string=? name "xfs") 'xfs)
((or (string=? name "swsusp") ((or (string=? name "swsusp")
(string=? name "linux-swap(v0)") (string=? name "linux-swap(v0)")
(string=? name "linux-swap(v1)")) (string=? name "linux-swap(v1)"))
@ -895,7 +898,7 @@ partition."
(format #f "Unable to create partition ~a~%" name))))))))) (format #f "Unable to create partition ~a~%" name)))))))))
(define (force-user-partitions-formatting user-partitions) (define (force-user-partitions-formatting user-partitions)
"Set the NEED-FORMATING? fields to #t on all <user-partition> records of "Set the NEED-FORMATTING? fields to #t on all <user-partition> records of
USER-PARTITIONS list and return the updated list." USER-PARTITIONS list and return the updated list."
(map (lambda (p) (map (lambda (p)
(user-partition (user-partition
@ -1125,6 +1128,11 @@ bit bucket."
(with-null-output-ports (with-null-output-ports
(invoke "mkfs.ntfs" "-F" "-f" partition))) (invoke "mkfs.ntfs" "-F" "-f" partition)))
(define (create-xfs-file-system partition)
"Create an XFS file-system for PARTITION file-name."
(with-null-output-ports
(invoke "mkfs.xfs" "-f" partition)))
(define (create-swap-partition partition) (define (create-swap-partition partition)
"Set up swap area on PARTITION file-name." "Set up swap area on PARTITION file-name."
(with-null-output-ports (with-null-output-ports
@ -1169,7 +1177,7 @@ USER-PARTITION if it is encrypted, or the plain file-name otherwise."
(define (format-user-partitions user-partitions) (define (format-user-partitions user-partitions)
"Format the <user-partition> records in USER-PARTITIONS list with "Format the <user-partition> records in USER-PARTITIONS list with
NEED-FORMATING? field set to #t." NEED-FORMATTING? field set to #t."
(for-each (for-each
(lambda (user-partition) (lambda (user-partition)
(let* ((need-formatting? (let* ((need-formatting?
@ -1206,6 +1214,10 @@ NEED-FORMATING? field set to #t."
(and need-formatting? (and need-formatting?
(not (eq? type 'extended)) (not (eq? type 'extended))
(create-ntfs-file-system file-name))) (create-ntfs-file-system file-name)))
((xfs)
(and need-formatting?
(not (eq? type 'extended))
(create-xfs-file-system file-name)))
((swap) ((swap)
(create-swap-partition file-name)) (create-swap-partition file-name))
(else (else

View file

@ -45,6 +45,7 @@
# Copyright © 2021 Arun Isaac <arunisaac@systemreboot.net> # Copyright © 2021 Arun Isaac <arunisaac@systemreboot.net>
# Copyright © 2021 Sharlatan Hellseher <sharlatanus@gmail.com> # Copyright © 2021 Sharlatan Hellseher <sharlatanus@gmail.com>
# Copyright © 2021 Dmitry Polyakov <polyakov@liltechdude.xyz> # Copyright © 2021 Dmitry Polyakov <polyakov@liltechdude.xyz>
# Copyright © 2021 Andrew Tropin <andrew@trop.in>
# #
# This file is part of GNU Guix. # This file is part of GNU Guix.
# #
@ -73,7 +74,17 @@ GNU_SYSTEM_MODULES = \
%D%/bootloader/u-boot.scm \ %D%/bootloader/u-boot.scm \
%D%/bootloader/depthcharge.scm \ %D%/bootloader/depthcharge.scm \
%D%/ci.scm \ %D%/ci.scm \
%D%/home.scm \
%D%/home/services.scm \
%D%/home/services/symlink-manager.scm \
%D%/home/services/fontutils.scm \
%D%/home/services/shells.scm \
%D%/home/services/shepherd.scm \
%D%/home/services/mcron.scm \
%D%/home/services/utils.scm \
%D%/home/services/xdg.scm \
%D%/image.scm \ %D%/image.scm \
%D%/platform.scm \
%D%/packages.scm \ %D%/packages.scm \
%D%/packages/abduco.scm \ %D%/packages/abduco.scm \
%D%/packages/abiword.scm \ %D%/packages/abiword.scm \
@ -435,6 +446,7 @@ GNU_SYSTEM_MODULES = \
%D%/packages/parallel.scm \ %D%/packages/parallel.scm \
%D%/packages/pascal.scm \ %D%/packages/pascal.scm \
%D%/packages/password-utils.scm \ %D%/packages/password-utils.scm \
%D%/packages/patool.scm \
%D%/packages/patchutils.scm \ %D%/packages/patchutils.scm \
%D%/packages/pciutils.scm \ %D%/packages/pciutils.scm \
%D%/packages/pcre.scm \ %D%/packages/pcre.scm \
@ -603,6 +615,9 @@ GNU_SYSTEM_MODULES = \
%D%/packages/zile.scm \ %D%/packages/zile.scm \
%D%/packages/zwave.scm \ %D%/packages/zwave.scm \
\ \
%D%/platforms/arm.scm \
%D%/platforms/hurd.scm \
\
%D%/services.scm \ %D%/services.scm \
%D%/services/admin.scm \ %D%/services/admin.scm \
%D%/services/audio.scm \ %D%/services/audio.scm \
@ -899,6 +914,8 @@ dist_patch_DATA = \
%D%/packages/patches/blender-2.79-python-3.8-fix.patch \ %D%/packages/patches/blender-2.79-python-3.8-fix.patch \
%D%/packages/patches/bpftrace-disable-bfd-disasm.patch \ %D%/packages/patches/bpftrace-disable-bfd-disasm.patch \
%D%/packages/patches/byobu-writable-status.patch \ %D%/packages/patches/byobu-writable-status.patch \
%D%/packages/patches/cabal-install-base16-bytestring1.0.patch \
%D%/packages/patches/cabal-install-ghc8.10.patch \
%D%/packages/patches/cairo-CVE-2018-19876.patch \ %D%/packages/patches/cairo-CVE-2018-19876.patch \
%D%/packages/patches/cairo-CVE-2020-35492.patch \ %D%/packages/patches/cairo-CVE-2020-35492.patch \
%D%/packages/patches/calibre-no-updates-dialog.patch \ %D%/packages/patches/calibre-no-updates-dialog.patch \
@ -911,6 +928,7 @@ dist_patch_DATA = \
%D%/packages/patches/cdrtools-3.01-mkisofs-isoinfo.patch \ %D%/packages/patches/cdrtools-3.01-mkisofs-isoinfo.patch \
%D%/packages/patches/ceph-disable-cpu-optimizations.patch \ %D%/packages/patches/ceph-disable-cpu-optimizations.patch \
%D%/packages/patches/cheese-vala-update.patch \ %D%/packages/patches/cheese-vala-update.patch \
%D%/packages/patches/ceph-fix-snappy-breaking-change.patch \
%D%/packages/patches/chez-scheme-build-util-paths-backport.patch \ %D%/packages/patches/chez-scheme-build-util-paths-backport.patch \
%D%/packages/patches/chmlib-inttypes.patch \ %D%/packages/patches/chmlib-inttypes.patch \
%D%/packages/patches/cl-asdf-config-directories.patch \ %D%/packages/patches/cl-asdf-config-directories.patch \
@ -921,10 +939,11 @@ dist_patch_DATA = \
%D%/packages/patches/clang-3.8-libc-search-path.patch \ %D%/packages/patches/clang-3.8-libc-search-path.patch \
%D%/packages/patches/clang-6.0-libc-search-path.patch \ %D%/packages/patches/clang-6.0-libc-search-path.patch \
%D%/packages/patches/clang-7.0-libc-search-path.patch \ %D%/packages/patches/clang-7.0-libc-search-path.patch \
%D%/packages/patches/clang-8.0-libc-search-path.patch \
%D%/packages/patches/clang-9.0-libc-search-path.patch \ %D%/packages/patches/clang-9.0-libc-search-path.patch \
%D%/packages/patches/clang-10.0-libc-search-path.patch \ %D%/packages/patches/clang-10.0-libc-search-path.patch \
%D%/packages/patches/clang-11.0-libc-search-path.patch \ %D%/packages/patches/clang-11.0-libc-search-path.patch \
%D%/packages/patches/clang-12-tools-extra-directory.patch \ %D%/packages/patches/clang-12.0-libc-search-path.patch \
%D%/packages/patches/clang-runtime-asan-build-fixes.patch \ %D%/packages/patches/clang-runtime-asan-build-fixes.patch \
%D%/packages/patches/clang-runtime-esan-build-fixes.patch \ %D%/packages/patches/clang-runtime-esan-build-fixes.patch \
%D%/packages/patches/clang-runtime-9-libsanitizer-mode-field.patch \ %D%/packages/patches/clang-runtime-9-libsanitizer-mode-field.patch \
@ -968,6 +987,7 @@ dist_patch_DATA = \
%D%/packages/patches/desmume-gcc6-fixes.patch \ %D%/packages/patches/desmume-gcc6-fixes.patch \
%D%/packages/patches/desmume-gcc7-fixes.patch \ %D%/packages/patches/desmume-gcc7-fixes.patch \
%D%/packages/patches/dfu-programmer-fix-libusb.patch \ %D%/packages/patches/dfu-programmer-fix-libusb.patch \
%D%/packages/patches/diffoscope-fix-test_item3_deflate_llvm_bitcode.patch \
%D%/packages/patches/diffutils-gets-undeclared.patch \ %D%/packages/patches/diffutils-gets-undeclared.patch \
%D%/packages/patches/disarchive-cross-compilation.patch \ %D%/packages/patches/disarchive-cross-compilation.patch \
%D%/packages/patches/dkimproxy-add-ipv6-support.patch \ %D%/packages/patches/dkimproxy-add-ipv6-support.patch \
@ -1048,11 +1068,9 @@ dist_patch_DATA = \
%D%/packages/patches/fuse-overlapping-headers.patch \ %D%/packages/patches/fuse-overlapping-headers.patch \
%D%/packages/patches/fxdiv-system-libraries.patch \ %D%/packages/patches/fxdiv-system-libraries.patch \
%D%/packages/patches/gajim-honour-GAJIM_PLUGIN_PATH.patch \ %D%/packages/patches/gajim-honour-GAJIM_PLUGIN_PATH.patch \
%D%/packages/patches/ganeti-deterministic-manual.patch \
%D%/packages/patches/ganeti-disable-version-symlinks.patch \ %D%/packages/patches/ganeti-disable-version-symlinks.patch \
%D%/packages/patches/ganeti-drbd-compat.patch \ %D%/packages/patches/ganeti-haskell-compat.patch \
%D%/packages/patches/ganeti-haskell-pythondir.patch \ %D%/packages/patches/ganeti-haskell-pythondir.patch \
%D%/packages/patches/ganeti-os-disk-size.patch \
%D%/packages/patches/ganeti-shepherd-master-failover.patch \ %D%/packages/patches/ganeti-shepherd-master-failover.patch \
%D%/packages/patches/ganeti-shepherd-support.patch \ %D%/packages/patches/ganeti-shepherd-support.patch \
%D%/packages/patches/gash-utils-ls-test.patch \ %D%/packages/patches/gash-utils-ls-test.patch \
@ -1108,13 +1126,8 @@ dist_patch_DATA = \
%D%/packages/patches/geoclue-config.patch \ %D%/packages/patches/geoclue-config.patch \
%D%/packages/patches/ghc-8.0-fall-back-to-madv_dontneed.patch \ %D%/packages/patches/ghc-8.0-fall-back-to-madv_dontneed.patch \
%D%/packages/patches/ghc-testsuite-dlopen-pie.patch \ %D%/packages/patches/ghc-testsuite-dlopen-pie.patch \
%D%/packages/patches/ghc-diff-swap-cover-args.patch \ %D%/packages/patches/ghc-language-haskell-extract-ghc-8.10.patch \
%D%/packages/patches/ghc-haddock-api-fix-haddock.patch \
%D%/packages/patches/ghc-hpack-fix-tests.patch \
%D%/packages/patches/ghc-microlens-aeson-fix-tests.patch \
%D%/packages/patches/ghc-monad-par-fix-tests.patch \ %D%/packages/patches/ghc-monad-par-fix-tests.patch \
%D%/packages/patches/ghc-pandoc-fix-html-tests.patch \
%D%/packages/patches/ghc-pandoc-fix-latex-test.patch \
%D%/packages/patches/ghostscript-no-header-id.patch \ %D%/packages/patches/ghostscript-no-header-id.patch \
%D%/packages/patches/ghostscript-no-header-uuid.patch \ %D%/packages/patches/ghostscript-no-header-uuid.patch \
%D%/packages/patches/ghostscript-no-header-creationdate.patch \ %D%/packages/patches/ghostscript-no-header-creationdate.patch \
@ -1234,7 +1247,7 @@ dist_patch_DATA = \
%D%/packages/patches/hdf-eos5-remove-gctp.patch \ %D%/packages/patches/hdf-eos5-remove-gctp.patch \
%D%/packages/patches/hdf-eos5-fix-szip.patch \ %D%/packages/patches/hdf-eos5-fix-szip.patch \
%D%/packages/patches/hdf-eos5-fortrantests.patch \ %D%/packages/patches/hdf-eos5-fortrantests.patch \
%D%/packages/patches/hexchat-add-libera-chat.patch \ %D%/packages/patches/hedgewars-network-bsd.patch \
%D%/packages/patches/http-parser-CVE-2020-8287.patch \ %D%/packages/patches/http-parser-CVE-2020-8287.patch \
%D%/packages/patches/hubbub-sort-entities.patch \ %D%/packages/patches/hubbub-sort-entities.patch \
%D%/packages/patches/hurd-cross.patch \ %D%/packages/patches/hurd-cross.patch \
@ -1249,6 +1262,8 @@ dist_patch_DATA = \
%D%/packages/patches/id3lib-CVE-2007-4460.patch \ %D%/packages/patches/id3lib-CVE-2007-4460.patch \
%D%/packages/patches/id3lib-UTF16-writing-bug.patch \ %D%/packages/patches/id3lib-UTF16-writing-bug.patch \
%D%/packages/patches/idris-disable-test.patch \ %D%/packages/patches/idris-disable-test.patch \
%D%/packages/patches/idris-build-with-haskeline-0.8.patch \
%D%/packages/patches/idris-build-with-megaparsec-9.patch \
%D%/packages/patches/ilmbase-fix-tests.patch \ %D%/packages/patches/ilmbase-fix-tests.patch \
%D%/packages/patches/imagemagick-CVE-2020-27829.patch \ %D%/packages/patches/imagemagick-CVE-2020-27829.patch \
%D%/packages/patches/imagemagick-ReadDCMImage-fix.patch \ %D%/packages/patches/imagemagick-ReadDCMImage-fix.patch \
@ -1344,7 +1359,6 @@ dist_patch_DATA = \
%D%/packages/patches/libbonobo-activation-test-race.patch \ %D%/packages/patches/libbonobo-activation-test-race.patch \
%D%/packages/patches/libcaca-CVE-2021-3410-pt1.patch \ %D%/packages/patches/libcaca-CVE-2021-3410-pt1.patch \
%D%/packages/patches/libcaca-CVE-2021-3410-pt2.patch \ %D%/packages/patches/libcaca-CVE-2021-3410-pt2.patch \
%D%/packages/patches/libcacard-unknown-variable.patch \
%D%/packages/patches/libcanberra-sound-theme-freedesktop.patch \ %D%/packages/patches/libcanberra-sound-theme-freedesktop.patch \
%D%/packages/patches/libcanberra-wayland-crash.patch \ %D%/packages/patches/libcanberra-wayland-crash.patch \
%D%/packages/patches/libcroco-CVE-2020-12825.patch \ %D%/packages/patches/libcroco-CVE-2020-12825.patch \
@ -1494,21 +1508,21 @@ dist_patch_DATA = \
%D%/packages/patches/nettle-3.5-CVE-2021-3580-pt2.patch \ %D%/packages/patches/nettle-3.5-CVE-2021-3580-pt2.patch \
%D%/packages/patches/nfs4-acl-tools-0.3.7-fixpaths.patch \ %D%/packages/patches/nfs4-acl-tools-0.3.7-fixpaths.patch \
%D%/packages/patches/ngircd-handle-zombies.patch \ %D%/packages/patches/ngircd-handle-zombies.patch \
%D%/packages/patches/ngless-unliftio.patch \
%D%/packages/patches/network-manager-plugin-path.patch \ %D%/packages/patches/network-manager-plugin-path.patch \
%D%/packages/patches/nginx-socket-cloexec.patch \ %D%/packages/patches/nginx-socket-cloexec.patch \
%D%/packages/patches/nnpack-system-libraries.patch \
%D%/packages/patches/nsis-env-passthru.patch \ %D%/packages/patches/nsis-env-passthru.patch \
%D%/packages/patches/nsis-source-date-epoch.patch \ %D%/packages/patches/nsis-source-date-epoch.patch \
%D%/packages/patches/nss-getcwd-nonnull.patch \ %D%/packages/patches/nss-getcwd-nonnull.patch \
%D%/packages/patches/nss-increase-test-timeout.patch \ %D%/packages/patches/nss-increase-test-timeout.patch \
%D%/packages/patches/nss-3.56-pkgconfig.patch \ %D%/packages/patches/nss-3.56-pkgconfig.patch \
%D%/packages/patches/ntfs-3g-CVE-2019-9755.patch \
%D%/packages/patches/nvi-assume-preserve-path.patch \ %D%/packages/patches/nvi-assume-preserve-path.patch \
%D%/packages/patches/nvi-dbpagesize-binpower.patch \ %D%/packages/patches/nvi-dbpagesize-binpower.patch \
%D%/packages/patches/nvi-db4.patch \ %D%/packages/patches/nvi-db4.patch \
%D%/packages/patches/nyacc-binary-literals.patch \ %D%/packages/patches/nyacc-binary-literals.patch \
%D%/packages/patches/obs-modules-location.patch \ %D%/packages/patches/obs-modules-location.patch \
%D%/packages/patches/ocaml-bitstring-fix-configure.patch \ %D%/packages/patches/ocaml-bitstring-fix-configure.patch \
%D%/packages/patches/ocaml-cairo2-caml_ba_array-fix.patch \
%D%/packages/patches/ocaml-CVE-2015-8869.patch \ %D%/packages/patches/ocaml-CVE-2015-8869.patch \
%D%/packages/patches/ocaml-Add-a-.file-directive.patch \ %D%/packages/patches/ocaml-Add-a-.file-directive.patch \
%D%/packages/patches/ocaml-enable-ocamldoc-reproducibility.patch \ %D%/packages/patches/ocaml-enable-ocamldoc-reproducibility.patch \
@ -1580,9 +1594,15 @@ dist_patch_DATA = \
%D%/packages/patches/perl-reproducible-build-date.patch \ %D%/packages/patches/perl-reproducible-build-date.patch \
%D%/packages/patches/perl-www-curl-fix-struct-void.patch \ %D%/packages/patches/perl-www-curl-fix-struct-void.patch \
%D%/packages/patches/perl-www-curl-remove-symbol.patch \ %D%/packages/patches/perl-www-curl-remove-symbol.patch \
%D%/packages/patches/php-bug-74093-test.patch \
%D%/packages/patches/picard-fix-id3-rename-test.patch \ %D%/packages/patches/picard-fix-id3-rename-test.patch \
%D%/packages/patches/picprog-non-intel-support.patch \ %D%/packages/patches/picprog-non-intel-support.patch \
%D%/packages/patches/pidgin-add-search-path.patch \ %D%/packages/patches/pidgin-add-search-path.patch \
%D%/packages/patches/pigx-bsseq-no-citeproc.patch \
%D%/packages/patches/pigx-chipseq-no-citeproc.patch \
%D%/packages/patches/pigx-rnaseq-no-citeproc.patch \
%D%/packages/patches/pigx-sars-cov2-ww-no-citeproc.patch \
%D%/packages/patches/pigx-scrnaseq-no-citeproc.patch \
%D%/packages/patches/pinball-system-ltdl.patch \ %D%/packages/patches/pinball-system-ltdl.patch \
%D%/packages/patches/pingus-boost-headers.patch \ %D%/packages/patches/pingus-boost-headers.patch \
%D%/packages/patches/pingus-sdl-libs-config.patch \ %D%/packages/patches/pingus-sdl-libs-config.patch \
@ -1609,7 +1629,6 @@ dist_patch_DATA = \
%D%/packages/patches/pulseaudio-fix-mult-test.patch \ %D%/packages/patches/pulseaudio-fix-mult-test.patch \
%D%/packages/patches/pulseaudio-longer-test-timeout.patch \ %D%/packages/patches/pulseaudio-longer-test-timeout.patch \
%D%/packages/patches/pulseview-qt515-compat.patch \ %D%/packages/patches/pulseview-qt515-compat.patch \
%D%/packages/patches/purescript-relax-dependencies.patch \
%D%/packages/patches/pybugz-encode-error.patch \ %D%/packages/patches/pybugz-encode-error.patch \
%D%/packages/patches/pybugz-stty.patch \ %D%/packages/patches/pybugz-stty.patch \
%D%/packages/patches/pygpgme-disable-problematic-tests.patch \ %D%/packages/patches/pygpgme-disable-problematic-tests.patch \
@ -1728,7 +1747,9 @@ dist_patch_DATA = \
%D%/packages/patches/rust-reproducible-builds.patch \ %D%/packages/patches/rust-reproducible-builds.patch \
%D%/packages/patches/rust-openssl-sys-no-vendor.patch \ %D%/packages/patches/rust-openssl-sys-no-vendor.patch \
%D%/packages/patches/sbc-fix-build-non-x86.patch \ %D%/packages/patches/sbc-fix-build-non-x86.patch \
%D%/packages/patches/sbcl-burgled-batteries3-fix-signals.patch \
%D%/packages/patches/sbcl-clml-fix-types.patch \ %D%/packages/patches/sbcl-clml-fix-types.patch \
%D%/packages/patches/sbcl-png-fix-sbcl-compatibility.patch \
%D%/packages/patches/scalapack-blacs-mpi-deprecations.patch \ %D%/packages/patches/scalapack-blacs-mpi-deprecations.patch \
%D%/packages/patches/scheme48-tests.patch \ %D%/packages/patches/scheme48-tests.patch \
%D%/packages/patches/scotch-build-parallelism.patch \ %D%/packages/patches/scotch-build-parallelism.patch \
@ -1808,6 +1829,8 @@ dist_patch_DATA = \
%D%/packages/patches/ucx-tcp-iface-ioctl.patch \ %D%/packages/patches/ucx-tcp-iface-ioctl.patch \
%D%/packages/patches/udiskie-no-appindicator.patch \ %D%/packages/patches/udiskie-no-appindicator.patch \
%D%/packages/patches/ungoogled-chromium-extension-search-path.patch \ %D%/packages/patches/ungoogled-chromium-extension-search-path.patch \
%D%/packages/patches/ungoogled-chromium-ffmpeg-compat.patch \
%D%/packages/patches/ungoogled-chromium-system-nspr.patch \
%D%/packages/patches/unison-fix-ocaml-4.08.patch \ %D%/packages/patches/unison-fix-ocaml-4.08.patch \
%D%/packages/patches/unknown-horizons-python-3.8-distro.patch \ %D%/packages/patches/unknown-horizons-python-3.8-distro.patch \
%D%/packages/patches/unzip-CVE-2014-8139.patch \ %D%/packages/patches/unzip-CVE-2014-8139.patch \
@ -1884,6 +1907,7 @@ dist_patch_DATA = \
%D%/packages/patches/xf86-video-voodoo-pcitag.patch \ %D%/packages/patches/xf86-video-voodoo-pcitag.patch \
%D%/packages/patches/xfce4-panel-plugins.patch \ %D%/packages/patches/xfce4-panel-plugins.patch \
%D%/packages/patches/xfce4-settings-defaults.patch \ %D%/packages/patches/xfce4-settings-defaults.patch \
%D%/packages/patches/xgboost-use-system-dmlc-core.patch \
%D%/packages/patches/xmonad-dynamic-linking.patch \ %D%/packages/patches/xmonad-dynamic-linking.patch \
%D%/packages/patches/xnnpack-system-libraries.patch \ %D%/packages/patches/xnnpack-system-libraries.patch \
%D%/packages/patches/xplanet-1.3.1-cxx11-eof.patch \ %D%/packages/patches/xplanet-1.3.1-cxx11-eof.patch \

View file

@ -645,7 +645,7 @@ console.")
(define-public htop (define-public htop
(package (package
(name "htop") (name "htop")
(version "3.0.5") (version "3.1.0")
(source (source
(origin (origin
(method git-fetch) (method git-fetch)
@ -653,7 +653,7 @@ console.")
(url "https://github.com/htop-dev/htop") (url "https://github.com/htop-dev/htop")
(commit version))) (commit version)))
(sha256 (sha256
(base32 "10lp6cbfvigzp6pq5nwj3s3l4vs7cv92krz2r08nwrz8vl6rqdzp")) (base32 "1ngvidaka6xbfb3l4zxmlksk2ms93fy3sb76w7917kjgn9mh53zz"))
(file-name (git-file-name name version)))) (file-name (git-file-name name version))))
(build-system gnu-build-system) (build-system gnu-build-system)
(inputs (inputs
@ -1687,7 +1687,7 @@ system administrator.")
(define-public sudo (define-public sudo
(package (package
(name "sudo") (name "sudo")
(version "1.9.8") (version "1.9.8p2")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (uri
@ -1697,12 +1697,11 @@ system administrator.")
version ".tar.gz"))) version ".tar.gz")))
(sha256 (sha256
(base32 (base32
"1rlln9nb3lvg4qlkp0c9qxjflx36rf16mflg0sps2kl0k7lmswzi")) "0b8gd15l2g22w4fhhz0gzmq5c8370klanmy2c1p3px6yly6qnfwy"))
(modules '((guix build utils))) (modules '((guix build utils)))
(snippet (snippet
'(begin '(begin
(delete-file-recursively "lib/zlib") (delete-file-recursively "lib/zlib")))))
#t))))
(build-system gnu-build-system) (build-system gnu-build-system)
(outputs (list "out")) (outputs (list "out"))
(arguments (arguments
@ -1755,8 +1754,7 @@ system administrator.")
;; not the task of the build system, and fails. ;; not the task of the build system, and fails.
(substitute* "plugins/sudoers/Makefile.in" (substitute* "plugins/sudoers/Makefile.in"
(("^pre-install:" match) (("^pre-install:" match)
(string-append match "\ndisabled-" match))) (string-append match "\ndisabled-" match))))))
#t)))
;; XXX: The 'testsudoers' test series expects user 'root' to exist, but ;; XXX: The 'testsudoers' test series expects user 'root' to exist, but
;; the chroot's /etc/passwd doesn't have it. Turn off the tests. ;; the chroot's /etc/passwd doesn't have it. Turn off the tests.
@ -2161,15 +2159,15 @@ module slots, and the list of I/O ports (e.g. serial, parallel, USB).")
(define-public acpica (define-public acpica
(package (package
(name "acpica") (name "acpica")
(version "20210730") (version "20210930")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append (uri (string-append
"https://acpica.org/sites/acpica/files/acpica-unix-" "https://acpica.org/sites/acpica/files/acpica-unix2-"
version ".tar.gz")) version ".tar.gz"))
(sha256 (sha256
(base32 (base32
"1pmm977nyl3bs71ipzcl4dh30qm8x9wm2p2ml0m62rl62kai832a")))) "06wsrl1118sl9z76p9sh53zvzv5hpm82qks896d8slx5dgnzrrll"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(native-inputs `(("flex" ,flex) (native-inputs `(("flex" ,flex)
("bison" ,bison))) ("bison" ,bison)))
@ -2218,15 +2216,18 @@ utilization, temperature and power.")
(define-public stress (define-public stress
(package (package
(name "stress") (name "stress")
(version "1.0.4") (version "1.0.5")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "mirror://debian/pool/main/s/stress/stress_" (uri (string-append "mirror://debian/pool/main/s/stress/stress_"
version ".orig.tar.gz")) version ".orig.tar.gz"))
(sha256 (sha256
(base32 (base32
"0nw210jajk38m3y7h8s130ps2qsbz7j75wab07hi2r3hlz14yzh5")))) "09shpd85g8dvpiw0mnwykss676g0s7lbi8ab37xjinb5lfff960p"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(native-inputs
`(("autoconf" ,autoconf)
("automake" ,automake)))
(home-page "https://packages.debian.org/sid/stress") (home-page "https://packages.debian.org/sid/stress")
(synopsis "Impose load on and stress test a computer system") (synopsis "Impose load on and stress test a computer system")
(description (description
@ -2244,7 +2245,7 @@ system is under heavy load.")
(define-public detox (define-public detox
(package (package
(name "detox") (name "detox")
(version "1.4.2") (version "1.4.5")
(source (origin (source (origin
(method git-fetch) (method git-fetch)
(uri (git-reference (uri (git-reference
@ -2253,7 +2254,7 @@ system is under heavy load.")
(file-name (git-file-name name version)) (file-name (git-file-name name version))
(sha256 (sha256
(base32 (base32
"0q16dvjbry573j4ayh9dwskdh1dxx8dk4rj94w6f2dcv4ww37is1")))) "116bgpbkh3c96h6vq0880rmnpb5kbnnlvvkpsrcib6928bj8lfvi"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(native-inputs (native-inputs
`(("autoconf" ,autoconf) `(("autoconf" ,autoconf)
@ -3039,14 +3040,14 @@ done with the @code{auditctl} utility.")
(define-public nmap (define-public nmap
(package (package
(name "nmap") (name "nmap")
(version "7.91") (version "7.92")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "https://nmap.org/dist/nmap-" version (uri (string-append "https://nmap.org/dist/nmap-" version
".tar.bz2")) ".tar.bz2"))
(sha256 (sha256
(base32 (base32
"001kb5xadqswyw966k2lqi6jr6zz605jpp9w4kmm272if184pk0q")) "18bifn67kz2wxkbnfwcrin2xrhc6qf4p2bvxfqb2a2vbi8pryix5"))
(modules '((guix build utils))) (modules '((guix build utils)))
(snippet (snippet
'(begin '(begin
@ -3057,8 +3058,7 @@ done with the @code{auditctl} utility.")
"libpcap" "libpcap"
"libpcre" "libpcre"
;; Remove pre-compiled binares. ;; Remove pre-compiled binares.
"mswin32")) "mswin32"))))))
#t))))
(build-system gnu-build-system) (build-system gnu-build-system)
(inputs (inputs
`(("openssl" ,openssl) `(("openssl" ,openssl)
@ -3080,8 +3080,7 @@ done with the @code{auditctl} utility.")
(lambda _ (lambda _
(substitute* "Makefile" (substitute* "Makefile"
;; Do not attempt to build lua. ;; Do not attempt to build lua.
(("build-dnet build-lua") "build-dnet")) (("build-dnet build-lua") "build-dnet"))))
#t))
(replace 'install (replace 'install
(lambda* (#:key outputs #:allow-other-keys) (lambda* (#:key outputs #:allow-other-keys)
(define (make out . args) (define (make out . args)
@ -3104,8 +3103,7 @@ done with the @code{auditctl} utility.")
(make ndiff "install-ndiff") (make ndiff "install-ndiff")
(wrap-program (string-append ndiff "/bin/ndiff") (wrap-program (string-append ndiff "/bin/ndiff")
`("GUIX_PYTHONPATH" prefix `("GUIX_PYTHONPATH" prefix
(,(python-path ndiff))))) (,(python-path ndiff)))))))
#t))
;; These are the tests that do not require network access. ;; These are the tests that do not require network access.
(replace 'check (replace 'check
(lambda _ (invoke "make" (lambda _ (invoke "make"
@ -3122,7 +3120,7 @@ tool. It is also useful for tasks such as network inventory, managing service
upgrade schedules, and monitoring host or service uptime. It also provides an upgrade schedules, and monitoring host or service uptime. It also provides an
advanced netcat implementation (ncat), a utility for comparing scan advanced netcat implementation (ncat), a utility for comparing scan
results (ndiff), and a packet generation and response analysis tool (nping).") results (ndiff), and a packet generation and response analysis tool (nping).")
;; See <https://github.com/nmap/nmap/issues/2199#issuecomment-792048244>. ;; See <https://github.com/nmap/nmap/issues/2199#issuecomment-894812634>.
;; This package uses nmap's bundled versions of libdnet and liblinear, which ;; This package uses nmap's bundled versions of libdnet and liblinear, which
;; both use a 3-clause BSD license. ;; both use a 3-clause BSD license.
(license (list license:nmap license:bsd-3)))) (license (list license:nmap license:bsd-3))))
@ -4234,7 +4232,7 @@ Logitech Unifying Receiver.")
(package (package
(name "lynis") (name "lynis")
;; Also update the lynis-sdk input to the commit matching this release. ;; Also update the lynis-sdk input to the commit matching this release.
(version "3.0.5") (version "3.0.6")
(source (source
(origin (origin
(method git-fetch) (method git-fetch)
@ -4243,15 +4241,14 @@ Logitech Unifying Receiver.")
(commit version))) (commit version)))
(file-name (git-file-name name version)) (file-name (git-file-name name version))
(sha256 (sha256
(base32 "11kl54hbvjl7q2i1jz8a726vlkdmknvbp4zac3j4fgljg27qp410")) (base32 "1a1n8alcq6zil1rwk9940cg3x2nz3igcxfad99505pdh7ccz9324"))
(modules '((guix build utils))) (modules '((guix build utils)))
(snippet (snippet
'(begin '(begin
;; Remove proprietary plugins. As of now, all plugins supplied with ;; Remove proprietary plugins. As of now, all plugins supplied with
;; lynis are proprietary. In the future, if free plugins are ;; lynis are proprietary. In the future, if free plugins are
;; provided, whitelist them from deletion. ;; provided, whitelist them from deletion.
(for-each delete-file (find-files "plugins")) (for-each delete-file (find-files "plugins"))))))
#t))))
(build-system gnu-build-system) (build-system gnu-build-system)
(native-inputs (native-inputs
`(;; For tests `(;; For tests
@ -4260,10 +4257,10 @@ Logitech Unifying Receiver.")
(method git-fetch) (method git-fetch)
(uri (git-reference (uri (git-reference
(url "https://github.com/CISOfy/lynis-sdk") (url "https://github.com/CISOfy/lynis-sdk")
(commit "99f79c4deb4cb2221d7fccfe82baf58c0a55b9e7"))) (commit "1c4e5f60a03e29a1525ca9ec17c793461058253d")))
(file-name (git-file-name "lynis-sdk" version)) (file-name (git-file-name "lynis-sdk" version))
(sha256 (sha256
(base32 "1nc2rhzj6l08d2mnjrzkm4mxla1mjkddcxl8n05c1kdz9ycn6cpl")))))) (base32 "060k8k1q4c7nvrv3cwscxq8md2v75q3nrwwim1hgfw20divw3npy"))))))
(arguments (arguments
`(#:phases `(#:phases
(modify-phases %standard-phases (modify-phases %standard-phases
@ -4274,8 +4271,7 @@ Logitech Unifying Receiver.")
(string-append (assoc-ref outputs "out") "/share/lynis"))) (string-append (assoc-ref outputs "out") "/share/lynis")))
(substitute* "include/functions" (substitute* "include/functions"
(("/usr/local/etc/lynis") (("/usr/local/etc/lynis")
(string-append (assoc-ref outputs "out") "/etc/lynis"))) (string-append (assoc-ref outputs "out") "/etc/lynis")))))
#t))
(delete 'build) (delete 'build)
(replace 'install (replace 'install
(lambda* (#:key outputs #:allow-other-keys) (lambda* (#:key outputs #:allow-other-keys)
@ -4286,8 +4282,7 @@ Logitech Unifying Receiver.")
(lambda (dir) (lambda (dir)
(copy-recursively dir (string-append out "/share/lynis/" dir))) (copy-recursively dir (string-append out "/share/lynis/" dir)))
(list "db" "include" "plugins")) (list "db" "include" "plugins"))
(install-file "lynis.8" (string-append out "/share/man/man8")) (install-file "lynis.8" (string-append out "/share/man/man8")))))
#t)))
(replace 'check (replace 'check
(lambda* (#:key inputs #:allow-other-keys) (lambda* (#:key inputs #:allow-other-keys)
(copy-recursively (assoc-ref inputs "lynis-sdk") "../lynis-sdk") (copy-recursively (assoc-ref inputs "lynis-sdk") "../lynis-sdk")
@ -4430,7 +4425,7 @@ file-types for easier parsing in scripts.")
(define-public jtbl (define-public jtbl
(package (package
(name "jtbl") (name "jtbl")
(version "1.1.6") (version "1.1.7")
(source (origin (source (origin
(method git-fetch) (method git-fetch)
(uri (git-reference (uri (git-reference
@ -4439,7 +4434,7 @@ file-types for easier parsing in scripts.")
(file-name (git-file-name name version)) (file-name (git-file-name name version))
(sha256 (sha256
(base32 (base32
"1zzd7rd63xva50f22d1rfja4r302aizrafarhwm67vv181swvdya")))) "19i21fqz2m40cds9pb17brjxkczqagmx2f7mfb0xdvbygaply5wz"))))
(build-system python-build-system) (build-system python-build-system)
(inputs (inputs
`(("python-tabulate" ,python-tabulate))) `(("python-tabulate" ,python-tabulate)))

View file

@ -37,7 +37,7 @@
(define-public agda (define-public agda
(package (package
(name "agda") (name "agda")
(version "2.6.0.1") (version "2.6.2")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
@ -46,7 +46,7 @@
version ".tar.gz")) version ".tar.gz"))
(sha256 (sha256
(base32 (base32
"1s600ry1qwizr3ynyj05rvlx7jdcw9a1viyc0ycjamm5sjf8mf3v")))) "159hznnsxg7hlp80r1wqizyd7gwgnq0j13cm4d27cns0ganslb07"))))
(build-system haskell-build-system) (build-system haskell-build-system)
(inputs (inputs
`(("ghc-aeson" ,ghc-aeson) `(("ghc-aeson" ,ghc-aeson)
@ -54,23 +54,22 @@
("ghc-async" ,ghc-async) ("ghc-async" ,ghc-async)
("ghc-blaze-html" ,ghc-blaze-html) ("ghc-blaze-html" ,ghc-blaze-html)
("ghc-boxes" ,ghc-boxes) ("ghc-boxes" ,ghc-boxes)
("ghc-case-insensitive" ,ghc-case-insensitive)
("ghc-data-hash" ,ghc-data-hash) ("ghc-data-hash" ,ghc-data-hash)
("ghc-edisoncore" ,ghc-edisoncore)
("ghc-edit-distance" ,ghc-edit-distance) ("ghc-edit-distance" ,ghc-edit-distance)
("ghc-equivalence" ,ghc-equivalence) ("ghc-equivalence" ,ghc-equivalence)
("ghc-exceptions" ,ghc-exceptions)
("ghc-filemanip" ,ghc-filemanip)
("ghc-geniplate-mirror" ,ghc-geniplate-mirror)
("ghc-gitrev" ,ghc-gitrev) ("ghc-gitrev" ,ghc-gitrev)
("ghc-happy" ,ghc-happy) ("ghc-happy" ,ghc-happy)
("ghc-hashable" ,ghc-hashable) ("ghc-hashable" ,ghc-hashable)
("ghc-hashtables" ,ghc-hashtables) ("ghc-hashtables" ,ghc-hashtables)
("ghc-ieee754" ,ghc-ieee754) ("ghc-monad-control" ,ghc-monad-control)
("ghc-murmur-hash" ,ghc-murmur-hash) ("ghc-murmur-hash" ,ghc-murmur-hash)
("ghc-uri-encode" ,ghc-uri-encode) ("ghc-parallel" ,ghc-parallel)
("ghc-regex-tdfa" ,ghc-regex-tdfa) ("ghc-regex-tdfa" ,ghc-regex-tdfa)
("ghc-split" ,ghc-split)
("ghc-strict" ,ghc-strict) ("ghc-strict" ,ghc-strict)
("ghc-unordered-containers" ,ghc-unordered-containers) ("ghc-unordered-containers" ,ghc-unordered-containers)
("ghc-uri-encode" ,ghc-uri-encode)
("ghc-zlib" ,ghc-zlib))) ("ghc-zlib" ,ghc-zlib)))
(arguments (arguments
`(#:modules ((guix build haskell-build-system) `(#:modules ((guix build haskell-build-system)
@ -84,41 +83,6 @@
(lambda _ (lambda _
(setenv "LD_LIBRARY_PATH" (string-append (getcwd) "/dist/build")) (setenv "LD_LIBRARY_PATH" (string-append (getcwd) "/dist/build"))
#t)) #t))
;; FIXME: This is a copy of the standard configure phase with a tiny
;; difference: this package needs the -package-db flag to be passed
;; to "runhaskell" in addition to the "configure" action, because
;; Setup.hs depends on filemanip. Without this option the Setup.hs
;; file cannot be evaluated. The haskell-build-system should be
;; changed to pass "-package-db" to "runhaskell" in any case.
(replace 'configure
(lambda* (#:key outputs inputs tests? (configure-flags '())
#:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(name-version (strip-store-file-name out))
(ghc-path (getenv "GHC_PACKAGE_PATH"))
(params
`(,(string-append "--prefix=" out)
,(string-append "--libdir=" out "/lib")
,(string-append "--docdir=" out
"/share/doc/" name-version)
"--libsubdir=$compiler/$pkg-$version"
"--package-db=../package.conf.d"
"--global"
,@(if tests?
'("--enable-tests")
'())
;; Build and link with shared libraries
"--enable-shared"
"--enable-executable-dynamic"
"--ghc-option=-fPIC"
,(string-append "--ghc-option=-optl=-Wl,-rpath=" out
"/lib/$compiler/$pkg-$version")
,@configure-flags)))
(unsetenv "GHC_PACKAGE_PATH")
(apply invoke "runhaskell" "-package-db=../package.conf.d"
"Setup.hs" "configure" params)
(setenv "GHC_PACKAGE_PATH" ghc-path)
#t)))
(add-after 'compile 'agda-compile (add-after 'compile 'agda-compile
(lambda* (#:key outputs #:allow-other-keys) (lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out")) (let* ((out (assoc-ref outputs "out"))

View file

@ -343,7 +343,7 @@ precision.")
(define-public giac (define-public giac
(package (package
(name "giac") (name "giac")
(version "1.7.0-31") (version "1.7.0-37")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
@ -355,7 +355,7 @@ precision.")
"~parisse/debian/dists/stable/main/source/" "~parisse/debian/dists/stable/main/source/"
"giac_" version ".tar.gz")) "giac_" version ".tar.gz"))
(sha256 (sha256
(base32 "19vjyijlm3hb758h6nk70k41zw9wrbg6vwfx4r4rgvrb1myy5kpl")))) (base32 "1mzqf7r40ppmzixf4s6sjk76y0wpcf6xp7hklzrn2l1910ld61pz"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
`(#:modules ((ice-9 ftw) `(#:modules ((ice-9 ftw)
@ -431,13 +431,13 @@ or text interfaces) or as a C++ library.")
(define-public flint (define-public flint
(package (package
(name "flint") (name "flint")
(version "2.6.3") (version "2.8.1")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (string-append "http://flintlib.org/flint-" version ".tar.gz")) (uri (string-append "http://flintlib.org/flint-" version ".tar.gz"))
(sha256 (sha256
(base32 "1qrf6hzbbmg7mhkhbb0bab8z2xpdnba5cj4kmmf72lzs0457a6nf")))) (base32 "0zj2zgn3cbb08pxhfq38i62pgjfbb6938l70am7dnixqgixdmzgd"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(inputs (inputs
`(("ntl" ,ntl))) `(("ntl" ,ntl)))
@ -485,7 +485,7 @@ fast arithmetic.")
(define-public arb (define-public arb
(package (package
(name "arb") (name "arb")
(version "2.18.1") (version "2.21.0")
(source (origin (source (origin
(method git-fetch) (method git-fetch)
(uri (git-reference (uri (git-reference
@ -494,7 +494,7 @@ fast arithmetic.")
(file-name (git-file-name name version)) (file-name (git-file-name name version))
(sha256 (sha256
(base32 (base32
"15fx3dcbzgwddw9p1nysmx0dbh058afv5m8cj5pdjkcmcl7kw7z9")))) "0c7q8bbm2izh0j0342v0dkgg1lgd6f0fn3i9x9x80brjjhg65q7b"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(propagated-inputs (propagated-inputs
`(("flint" ,flint))) ; flint.h is included by arf.h `(("flint" ,flint))) ; flint.h is included by arf.h
@ -609,7 +609,7 @@ matrices, and polynomials over the integers and over finite fields.")
(define-public singular (define-public singular
(package (package
(name "singular") (name "singular")
(version "4.1.3p2") (version "4.2.1")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
@ -618,12 +618,13 @@ matrices, and polynomials over the integers and over finite fields.")
"Singular/SOURCES/" "Singular/SOURCES/"
(string-join (string-join
(string-split (string-split
(string-trim-right version #\p (let ((index (string-index version #\p)))
0 (1- (string-length version))) (if index (string-take version index)
version))
#\.) "-") #\.) "-")
"/singular-" version ".tar.gz")) "/singular-" version ".tar.gz"))
(sha256 (base32 (sha256 (base32
"1524yrni7gh0hir5ckridq671q5s6avfjdsdyahj51kzdl3wcypf")))) "13gy1gdng8zijwlr1fn5sixw53z0zf9czzlg0vh1dcc59zw6v998"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(native-inputs (native-inputs
`(("doxygen" ,doxygen) `(("doxygen" ,doxygen)

View file

@ -4,12 +4,11 @@
;;; Copyright © 2016, 2020 Marius Bakke <mbakke@fastmail.com> ;;; Copyright © 2016, 2020 Marius Bakke <mbakke@fastmail.com>
;;; Copyright © 2017 Julien Lepiller <julien@lepiller.eu> ;;; Copyright © 2017 Julien Lepiller <julien@lepiller.eu>
;;; Copyright © 2017 Hartmut Goebel <h.goebel@crazy-compilers.com> ;;; Copyright © 2017 Hartmut Goebel <h.goebel@crazy-compilers.com>
;;; Copyright © 2017, 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com> ;;; Copyright © 2017, 2020, 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; Copyright © 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 20182021 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2018 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2018 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2019, 2020 Andreas Enge <andreas@enge.fr> ;;; Copyright © 2019, 2020 Andreas Enge <andreas@enge.fr>
;;; Copyright © 2019 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2019 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; Copyright © 2020 Sergey Trofimov <sarg@sarg.org.ru> ;;; Copyright © 2020 Sergey Trofimov <sarg@sarg.org.ru>
;;; Copyright © 2021 Guillaume Le Vaillant <glv@posteo.net> ;;; Copyright © 2021 Guillaume Le Vaillant <glv@posteo.net>
;;; ;;;
@ -707,7 +706,7 @@ file system.")
(define-public android-udev-rules (define-public android-udev-rules
(package (package
(name "android-udev-rules") (name "android-udev-rules")
(version "20200613") (version "20210501")
(source (source
(origin (origin
(method git-fetch) (method git-fetch)
@ -716,7 +715,7 @@ file system.")
(commit version))) (commit version)))
(file-name (git-file-name name version)) (file-name (git-file-name name version))
(sha256 (sha256
(base32 "0cf5br8x6iwxc1cifv0i1klw7skgs8hghdx6qlqby68kyqg81bb2")))) (base32 "0pl1wfd7k9vz8mvy2jb2icc5f11c5p07aixpyhjs6gi5cyaywm5f"))))
(build-system trivial-build-system) (build-system trivial-build-system)
(native-inputs `(("source" ,source))) (native-inputs `(("source" ,source)))
(arguments (arguments
@ -726,8 +725,7 @@ file system.")
(use-modules (guix build utils)) (use-modules (guix build utils))
(let ((source (assoc-ref %build-inputs "source"))) (let ((source (assoc-ref %build-inputs "source")))
(install-file (string-append source "/51-android.rules") (install-file (string-append source "/51-android.rules")
(string-append %output "/lib/udev/rules.d")) (string-append %output "/lib/udev/rules.d"))))))
#t))))
(home-page "https://github.com/M0Rf30/android-udev-rules") (home-page "https://github.com/M0Rf30/android-udev-rules")
(synopsis "udev rules for Android devices") (synopsis "udev rules for Android devices")
(description "Provides a set of udev rules to allow using Android devices (description "Provides a set of udev rules to allow using Android devices

View file

@ -96,6 +96,71 @@ in FITS files.")
(license (license:non-copyleft "file://License.txt" (license (license:non-copyleft "file://License.txt"
"See License.txt in the distribution.")))) "See License.txt in the distribution."))))
(define-public python-fitsio
(package
(name "python-fitsio")
(version "1.1.5")
(source
(origin
(method url-fetch)
(uri (pypi-uri "fitsio" version))
(sha256
(base32 "1llql2i6xr9lkdl81jx5nvz80kspamvira90546y32ldy551hq1l"))
(modules '((guix build utils)))
(snippet
;; Remove the bundled cfitsio
`(begin
(delete-file-recursively "cfitsio3490")
(substitute* "MANIFEST.in"
(("recursive-include cfitsio3490.*$\n") ""))
#t))))
(build-system python-build-system)
(arguments
`(#:phases
(modify-phases %standard-phases
(add-after 'unpack 'unbundle-cfitsio
(lambda* (#:key inputs #:allow-other-keys)
(let* ((cfitsio (assoc-ref inputs "cfitsio"))
(includedir (string-append "\"" cfitsio "/include\""))
(libdir (string-append "\"" cfitsio "/lib\"")))
;; Use Guix' cfitsio instead of the bundled one
(substitute* "setup.py"
(("self.use_system_fitsio = False") "pass")
(("self.system_fitsio_includedir = None") "pass")
(("self.system_fitsio_libdir = None") "pass")
(("self.use_system_fitsio") "True")
(("self.system_fitsio_includedir") includedir)
(("self.system_fitsio_libdir") libdir)))))
(add-after 'unpack 'skip-bzip2-test
(lambda* (#:key inputs #:allow-other-keys)
;; The bzip2 test fails because Guix' cfitsio
;; is built without bzip2 support.
(substitute* "fitsio/test.py"
(("'SKIP_BZIP_TEST' in os.environ") "True")))))))
(propagated-inputs
`(("python-numpy" ,python-numpy)
("cfitsio" ,cfitsio)))
(home-page "https://github.com/esheldon/fitsio")
(synopsis
"Python library to read from and write to FITS files")
(description
"This package provides a Python library for reading from and writing
to @acronym{FITS, Flexible Image Transport System} files using the
CFITSIO library. Among other things, it can
@itemize
@item read and write image, binary, and ascii table extensions;
@item read arbitrary subsets of tables in a lazy manner;
@item query the rows and columns of a table;
@item read and write header keywords;
@item read and write Gzip files.
@end itemize")
(license license:gpl2+)))
(define-public qfits (define-public qfits
(package (package
(name "qfits") (name "qfits")
@ -228,7 +293,7 @@ astronomical image-processing packages like Drizzle, Swarp or SExtractor.")
(define-public gnuastro (define-public gnuastro
(package (package
(name "gnuastro") (name "gnuastro")
(version "0.15") (version "0.16")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
@ -236,7 +301,7 @@ astronomical image-processing packages like Drizzle, Swarp or SExtractor.")
version ".tar.lz")) version ".tar.lz"))
(sha256 (sha256
(base32 (base32
"1jjr3ixxbpsr5m4s7ahh12ymcnlvjzwcp02ya16b1lvzrz1wmhy4")))) "07xr0r5dmjpnrz7ylf7k3vmjjna2jafi16lfvkqwxj9fyssmz207"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
'(#:configure-flags '("--disable-static"))) '(#:configure-flags '("--disable-static")))

View file

@ -302,6 +302,50 @@ Linux kernel.")
(home-page "https://github.com/tinyalsa/tinyalsa") (home-page "https://github.com/tinyalsa/tinyalsa")
(license (license:non-copyleft "file:///NOTICE")))) (license (license:non-copyleft "file:///NOTICE"))))
(define-public libgme
(package
(name "libgme")
(version "0.6.3")
(source (origin
(method url-fetch)
(uri (string-append "https://bitbucket.org/mpyne/game-music-emu/"
"downloads/game-music-emu-" version
".tar.xz"))
(sha256
(base32
"07857vdkak306d9s5g6fhmjyxk7vijzjhkmqb15s7ihfxx9lx8xb"))))
(build-system cmake-build-system)
(arguments
'(#:tests? #f)) ; no check target
(home-page "https://bitbucket.org/mpyne/game-music-emu")
(synopsis "Video game music file playback library")
(description
"Game-music-emu is a collection of video game music file emulators that
support the following formats and systems:
@table @code
@item AY
ZX Spectrum/Asmtrad CPC
@item GBS
Nintendo Game Boy
@item GYM
Sega Genesis/Mega Drive
@item HES
NEC TurboGrafx-16/PC Engine
@item KSS
MSX Home Computer/other Z80 systems (doesn't support FM sound)
@item NSF/NSFE
Nintendo NES/Famicom (with VRC 6, Namco 106, and FME-7 sound)
@item SAP
Atari systems using POKEY sound chip
@item SPC
Super Nintendo/Super Famicom
@item VGM/VGZ
Sega Master System/Mark III, Sega Genesis/Mega Drive, BBC Micro
@end table")
(license (list license:lgpl2.1+
;; demo and player directories are under the Expat license
license:expat))))
(define-public libopenmpt (define-public libopenmpt
(package (package
(name "libopenmpt") (name "libopenmpt")
@ -4578,7 +4622,7 @@ library.")
(define-public faudio (define-public faudio
(package (package
(name "faudio") (name "faudio")
(version "21.07") (version "21.10")
(source (source
(origin (origin
(method git-fetch) (method git-fetch)
@ -4587,7 +4631,7 @@ library.")
(commit version))) (commit version)))
(file-name (git-file-name name version)) (file-name (git-file-name name version))
(sha256 (sha256
(base32 "0v76pvsna7dx8nb53s7x2vfpws27wi3p34l7af5niqvyh0gl4mzr")))) (base32 "0l9bicg8v1shsyq9k48zh4wv5kwfs6lfjmm9blzd13xrgmhd07w2"))))
(arguments (arguments
'(#:tests? #f ; No tests. '(#:tests? #f ; No tests.
#:configure-flags '("-DGSTREAMER=ON"))) #:configure-flags '("-DGSTREAMER=ON")))
@ -4765,12 +4809,12 @@ workstations as well as consumer software such as music players.")
(define-public redkite (define-public redkite
(package (package
(name "redkite") (name "redkite")
(version "1.3.0") (version "1.3.0") ;marked unmaintained as of Oct. 2021
(source (source
(origin (origin
(method git-fetch) (method git-fetch)
(uri (git-reference (uri (git-reference
(url "https://gitlab.com/iurie-sw/redkite") (url "https://github.com/free-sm/redkite")
(commit (string-append "v" version)))) (commit (string-append "v" version))))
(file-name (git-file-name name version)) (file-name (git-file-name name version))
(sha256 (sha256

View file

@ -438,6 +438,20 @@ intuitive format and then Automake works with Autoconf to produce a robust
Makefile, simplifying the entire process for the developer.") Makefile, simplifying the entire process for the developer.")
(license gpl2+))) ; some files are under GPLv3+ (license gpl2+))) ; some files are under GPLv3+
(define-public automake-1.16.5
(package
(inherit automake)
(version "1.16.5")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/automake/automake-"
version ".tar.xz"))
(sha256
(base32
"0sdl32qxdy7m06iggmkkvf7j520rmmgbsjzbm7fgnxwxdp6mh7gh"))
(patches
(search-patches "automake-skip-amhello-tests.patch"))))))
(define-public libtool (define-public libtool
(package (package
(name "libtool") (name "libtool")

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -387,7 +387,7 @@ list and implement the backup strategy.")
(define-public snapraid (define-public snapraid
(package (package
(name "snapraid") (name "snapraid")
(version "11.5") (version "11.6")
(source (source
(origin (origin
(method git-fetch) (method git-fetch)
@ -396,7 +396,7 @@ list and implement the backup strategy.")
(commit (string-append "v" version)))) (commit (string-append "v" version))))
(file-name (git-file-name name version)) (file-name (git-file-name name version))
(sha256 (sha256
(base32 "0dlhdsmq5l208zldfr9z9g0p67wry81dr0r23lpybb5c9fm2f2rm")))) (base32 "1jpg97my0akh2ayzy0nm4yqiv4gcx79rgyrkzd19yyv3iy719vcw"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
`(#:configure-flags `(#:configure-flags

View file

@ -1971,14 +1971,14 @@ CDF file formats.")
(define-public r-affxparser (define-public r-affxparser
(package (package
(name "r-affxparser") (name "r-affxparser")
(version "1.64.0") (version "1.64.1")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (bioconductor-uri "affxparser" version)) (uri (bioconductor-uri "affxparser" version))
(sha256 (sha256
(base32 (base32
"0n3yyrglzqzw0wqxl9igqvkj8qslw6yjkym3vcq0c93kkg7vk01l")))) "0lr0kmp087j2g4i5kd7rh8a038ymp6z82861lyql2fwk5dh80043"))))
(properties `((upstream-name . "affxparser"))) (properties `((upstream-name . "affxparser")))
(build-system r-build-system) (build-system r-build-system)
(home-page "https://github.com/HenrikBengtsson/affxparser") (home-page "https://github.com/HenrikBengtsson/affxparser")
@ -2272,13 +2272,13 @@ powerful online queries from gene annotation to database mining.")
(define-public r-biocparallel (define-public r-biocparallel
(package (package
(name "r-biocparallel") (name "r-biocparallel")
(version "1.26.1") (version "1.26.2")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (bioconductor-uri "BiocParallel" version)) (uri (bioconductor-uri "BiocParallel" version))
(sha256 (sha256
(base32 (base32
"1jx1wm47s64ywfddrg8kqzz4xpcmfjwrzbxhvlmys7pf2hzj4gbh")))) "1y459cygq21f3igsdlxz1zlyad8qbl2qlr5h2d2dpnvblykvf48i"))))
(properties (properties
`((upstream-name . "BiocParallel"))) `((upstream-name . "BiocParallel")))
(build-system r-build-system) (build-system r-build-system)
@ -2795,13 +2795,13 @@ global-scaling and full-quantile normalization.")
(define-public r-edger (define-public r-edger
(package (package
(name "r-edger") (name "r-edger")
(version "3.34.0") (version "3.34.1")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (bioconductor-uri "edgeR" version)) (uri (bioconductor-uri "edgeR" version))
(sha256 (sha256
(base32 (base32
"1ikl9y6hj2p92nrb1ydxy2410b3wrax83rfy2imaj0vgfmhsgx6g")))) "0f6apsjq6cn794840ls9y2n0hix1gyhvkdgxch1v22qr4sq0c86k"))))
(properties `((upstream-name . "edgeR"))) (properties `((upstream-name . "edgeR")))
(build-system r-build-system) (build-system r-build-system)
(propagated-inputs (propagated-inputs
@ -3024,13 +3024,13 @@ genomic intervals. In addition, it can use BAM or BigWig files as input.")
(define-public r-genomeinfodb (define-public r-genomeinfodb
(package (package
(name "r-genomeinfodb") (name "r-genomeinfodb")
(version "1.28.1") (version "1.28.4")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (bioconductor-uri "GenomeInfoDb" version)) (uri (bioconductor-uri "GenomeInfoDb" version))
(sha256 (sha256
(base32 (base32
"1ga8yrn7j1wn9wdsvf4ws6n2987yk1yxz22v2jzaszfikhjh1sp8")))) "0fjpgvpvyvl8cqgh2annib6h0c5li3aqz1ajfh5z5k5d0avdm4w0"))))
(properties (properties
`((upstream-name . "GenomeInfoDb"))) `((upstream-name . "GenomeInfoDb")))
(build-system r-build-system) (build-system r-build-system)
@ -3087,13 +3087,13 @@ alignments.")
(define-public r-genomicfeatures (define-public r-genomicfeatures
(package (package
(name "r-genomicfeatures") (name "r-genomicfeatures")
(version "1.44.1") (version "1.44.2")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (bioconductor-uri "GenomicFeatures" version)) (uri (bioconductor-uri "GenomicFeatures" version))
(sha256 (sha256
(base32 (base32
"0byizkq18kkyq3n604f38z4mikhi3szsrfrlz22wdq2ldq3nzkis")))) "091p8xnf2xkqhind81vyv1rmy2fz2b3qalcbrsw4qnp24vgdv2am"))))
(properties (properties
`((upstream-name . "GenomicFeatures"))) `((upstream-name . "GenomicFeatures")))
(build-system r-build-system) (build-system r-build-system)
@ -4236,6 +4236,45 @@ purposes. The package also contains legacy support for early single-end,
ungapped alignment formats.") ungapped alignment formats.")
(license license:artistic2.0))) (license license:artistic2.0)))
(define-public r-simplifyenrichment
(package
(name "r-simplifyenrichment")
(version "1.2.0")
(source
(origin
(method url-fetch)
(uri (bioconductor-uri "simplifyEnrichment" version))
(sha256
(base32
"0rqa414kvyjjmj4932zk39rqa14z13b57rkrxdrf16jmq2r437vh"))))
(properties
`((upstream-name . "simplifyEnrichment")))
(build-system r-build-system)
(propagated-inputs
`(("r-annotationdbi" ,r-annotationdbi)
("r-biocgenerics" ,r-biocgenerics)
("r-circlize" ,r-circlize)
("r-clue" ,r-clue)
("r-cluster" ,r-cluster)
("r-complexheatmap" ,r-complexheatmap)
("r-digest" ,r-digest)
("r-getoptlong" ,r-getoptlong)
("r-go-db" ,r-go-db)
("r-gosemsim" ,r-gosemsim)
("r-matrix" ,r-matrix)
("r-org-hs-eg-db" ,r-org-hs-eg-db)
("r-proxyc" ,r-proxyc)
("r-slam" ,r-slam)
("r-tm" ,r-tm)))
(native-inputs `(("r-knitr" ,r-knitr)))
(home-page "https://github.com/jokergoo/simplifyEnrichment")
(synopsis "Simplify functional enrichment results")
(description "This package provides a new clustering algorithm, binary
cut, for clustering similarity matrices of functional terms is implemented in
this package. It also provides functionalities for visualizing, summarizing
and comparing the clusterings.")
(license license:expat)))
(define-public r-trajectoryutils (define-public r-trajectoryutils
(package (package
(name "r-trajectoryutils") (name "r-trajectoryutils")
@ -4851,14 +4890,14 @@ signal in the input, that lead to spurious peaks during peak calling.")
(define-public r-diffbind (define-public r-diffbind
(package (package
(name "r-diffbind") (name "r-diffbind")
(version "3.2.5") (version "3.2.7")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (bioconductor-uri "DiffBind" version)) (uri (bioconductor-uri "DiffBind" version))
(sha256 (sha256
(base32 (base32
"1rp4sgx58g1lq5brpx07wffllhvsqq1097vrjiaksbih08338nih")))) "01jfxcj5c0088vvsi3pz8fs0ka6n12l2j8s1d0rpqwa1y0444x7z"))))
(properties `((upstream-name . "DiffBind"))) (properties `((upstream-name . "DiffBind")))
(build-system r-build-system) (build-system r-build-system)
(propagated-inputs (propagated-inputs
@ -5097,14 +5136,14 @@ determining dependencies between variables, code improvement suggestions.")
(define-public r-chippeakanno (define-public r-chippeakanno
(package (package
(name "r-chippeakanno") (name "r-chippeakanno")
(version "3.26.3") (version "3.26.4")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (bioconductor-uri "ChIPpeakAnno" version)) (uri (bioconductor-uri "ChIPpeakAnno" version))
(sha256 (sha256
(base32 (base32
"07dvg3r4kghkqhh1a8rw149hgfswmzdh9cvnam8c82006cpmi74s")))) "1iqzm7pifl9zrw3s06i6h85n1p01pd06vh1a93izyfhgybxn262d"))))
(properties `((upstream-name . "ChIPpeakAnno"))) (properties `((upstream-name . "ChIPpeakAnno")))
(build-system r-build-system) (build-system r-build-system)
(propagated-inputs (propagated-inputs
@ -5151,13 +5190,13 @@ enrichedGO (addGeneIDs).")
(define-public r-matrixgenerics (define-public r-matrixgenerics
(package (package
(name "r-matrixgenerics") (name "r-matrixgenerics")
(version "1.4.2") (version "1.4.3")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (bioconductor-uri "MatrixGenerics" version)) (uri (bioconductor-uri "MatrixGenerics" version))
(sha256 (sha256
(base32 (base32
"0kjsc5ghcplay4a74ffpwsf3kbp51x6rl5265gvlfchdwrawkzd2")))) "1yir3rwhz5vf0pdn3fpvlc57c75k98gvv8gapajbvymz3lyghijv"))))
(properties (properties
`((upstream-name . "MatrixGenerics"))) `((upstream-name . "MatrixGenerics")))
(build-system r-build-system) (build-system r-build-system)
@ -5801,29 +5840,30 @@ platform for merging tree with associated data and converting file formats.")
(define-public r-ggtree (define-public r-ggtree
(package (package
(name "r-ggtree") (name "r-ggtree")
(version "3.0.3") (version "3.0.4")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (bioconductor-uri "ggtree" version)) (uri (bioconductor-uri "ggtree" version))
(sha256 (sha256
(base32 (base32
"02ydi5iyxwrvwfjmv8pbanmzpi1r99mc4gxl17fpq2jf1d1mk6g0")))) "0xf4b9vfdyzzivwgw4ymapl5bb4k9p04mmr53822kxgfd5qrs1zx"))))
(properties `((upstream-name . "ggtree"))) (properties `((upstream-name . "ggtree")))
(build-system r-build-system) (build-system r-build-system)
(propagated-inputs (propagated-inputs
`(("r-ape" ,r-ape) `(("r-ape" ,r-ape)
("r-aplot" ,r-aplot) ("r-aplot" ,r-aplot)
("r-dplyr" ,r-dplyr) ("r-dplyr" ,r-dplyr)
("r-ggfun" ,r-ggfun)
("r-ggplot2" ,r-ggplot2) ("r-ggplot2" ,r-ggplot2)
("r-magrittr" ,r-magrittr) ("r-magrittr" ,r-magrittr)
("r-purrr" ,r-purrr) ("r-purrr" ,r-purrr)
("r-rlang" ,r-rlang) ("r-rlang" ,r-rlang)
("r-rvcheck" ,r-rvcheck)
("r-scales" ,r-scales) ("r-scales" ,r-scales)
("r-tidyr" ,r-tidyr) ("r-tidyr" ,r-tidyr)
("r-tidytree" ,r-tidytree) ("r-tidytree" ,r-tidytree)
("r-treeio" ,r-treeio))) ("r-treeio" ,r-treeio)
("r-yulab-utils" ,r-yulab-utils)))
(native-inputs `(("r-knitr" ,r-knitr))) (native-inputs `(("r-knitr" ,r-knitr)))
(home-page "https://yulab-smu.top/treedata-book/") (home-page "https://yulab-smu.top/treedata-book/")
(synopsis "R package for visualization of trees and annotation data") (synopsis "R package for visualization of trees and annotation data")
@ -7398,14 +7438,14 @@ All the visualization methods are developed based on ggplot2 graphics.")
(define-public r-clusterprofiler (define-public r-clusterprofiler
(package (package
(name "r-clusterprofiler") (name "r-clusterprofiler")
(version "4.0.4") (version "4.0.5")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (bioconductor-uri "clusterProfiler" version)) (uri (bioconductor-uri "clusterProfiler" version))
(sha256 (sha256
(base32 (base32
"161w9mn2plmymvzf1hkk9fwi3d9c26kbcpndyyrfcl6bg2nxr1s8")))) "1dccrl2ffhgmv3iqlmpln7z86ahpf0j9ma194fnknsgi3cd9rhrl"))))
(properties (properties
`((upstream-name . "clusterProfiler"))) `((upstream-name . "clusterProfiler")))
(build-system r-build-system) (build-system r-build-system)
@ -7421,8 +7461,8 @@ All the visualization methods are developed based on ggplot2 graphics.")
("r-plyr" ,r-plyr) ("r-plyr" ,r-plyr)
("r-qvalue" ,r-qvalue) ("r-qvalue" ,r-qvalue)
("r-rlang" ,r-rlang) ("r-rlang" ,r-rlang)
("r-rvcheck" ,r-rvcheck) ("r-tidyr" ,r-tidyr)
("r-tidyr" ,r-tidyr))) ("r-yulab-utils" ,r-yulab-utils)))
(native-inputs (native-inputs
`(("r-knitr" ,r-knitr))) `(("r-knitr" ,r-knitr)))
(home-page "https://guangchuangyu.github.io/software/clusterProfiler/") (home-page "https://guangchuangyu.github.io/software/clusterProfiler/")
@ -8850,14 +8890,14 @@ Currently only Affymetrix oligonucleotide analysis is supported.")
(define-public r-zinbwave (define-public r-zinbwave
(package (package
(name "r-zinbwave") (name "r-zinbwave")
(version "1.14.1") (version "1.14.2")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (bioconductor-uri "zinbwave" version)) (uri (bioconductor-uri "zinbwave" version))
(sha256 (sha256
(base32 (base32
"0xgjbk35wl1vjqyq4y5c7hna8hkgmf56xjaxcph9bs2q7mbdnqwf")))) "1y8krazz2qdn0wn8ijjs2gn5dl5l960v6bijbkvh0r8066l7viky"))))
(build-system r-build-system) (build-system r-build-system)
(propagated-inputs (propagated-inputs
`(("r-biocparallel" ,r-biocparallel) `(("r-biocparallel" ,r-biocparallel)
@ -10176,14 +10216,14 @@ genes in the gene-set that are ranked above the leading edge).")
(define-public r-cicero (define-public r-cicero
(package (package
(name "r-cicero") (name "r-cicero")
(version "1.10.0") (version "1.10.1")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (bioconductor-uri "cicero" version)) (uri (bioconductor-uri "cicero" version))
(sha256 (sha256
(base32 (base32
"0kw16zf9004d1zlwsswhbcb7p77nabpd1fjagznff3zyan9fpdxf")))) "1y34cm52bv1v2hr7sz8zjzxwd4wng7v75avz5wx45l0ld54z9l10"))))
(build-system r-build-system) (build-system r-build-system)
(propagated-inputs (propagated-inputs
`(("r-assertthat" ,r-assertthat) `(("r-assertthat" ,r-assertthat)
@ -10488,14 +10528,14 @@ metrics, with methods for objects produced by the @code{methylumi} and
(define-public r-gdsfmt (define-public r-gdsfmt
(package (package
(name "r-gdsfmt") (name "r-gdsfmt")
(version "1.28.0") (version "1.28.1")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (bioconductor-uri "gdsfmt" version)) (uri (bioconductor-uri "gdsfmt" version))
(sha256 (sha256
(base32 (base32
"119qdivd7vaaqkjb0nrwidi6g26hh8znhif3g4prqn7x5pl2clvy")) "1w3z718q3bhh8bp71va9pbcd62pwbvgjw33ffg960jya40xssvc7"))
(modules '((guix build utils))) (modules '((guix build utils)))
;; Remove bundled sources of zlib, lz4, and xz. Don't attempt to build ;; Remove bundled sources of zlib, lz4, and xz. Don't attempt to build
;; them and link with system libraries instead. ;; them and link with system libraries instead.
@ -10508,7 +10548,7 @@ metrics, with methods for objects produced by the @code{methylumi} and
(substitute* "src/Makevars" (substitute* "src/Makevars"
(("all: \\$\\(SHLIB\\)") "all:") (("all: \\$\\(SHLIB\\)") "all:")
(("\\$\\(SHLIB\\): liblzma.a") "") (("\\$\\(SHLIB\\): liblzma.a") "")
(("(ZLIB|LZ4)/.*") "") (("^ (ZLIB|LZ4)/.*") "")
(("CoreArray/dVLIntGDS.cpp.*") (("CoreArray/dVLIntGDS.cpp.*")
"CoreArray/dVLIntGDS.cpp") "CoreArray/dVLIntGDS.cpp")
(("CoreArray/dVLIntGDS.o.*") (("CoreArray/dVLIntGDS.o.*")
@ -10517,8 +10557,7 @@ metrics, with methods for objects produced by the @code{methylumi} and
"PKG_LIBS = -llz4")) "PKG_LIBS = -llz4"))
(substitute* "src/CoreArray/dStream.h" (substitute* "src/CoreArray/dStream.h"
(("include \"../(ZLIB|LZ4|XZ/api)/(.*)\"" _ _ header) (("include \"../(ZLIB|LZ4|XZ/api)/(.*)\"" _ _ header)
(string-append "include <" header ">"))) (string-append "include <" header ">")))))))
#t))))
(properties `((upstream-name . "gdsfmt"))) (properties `((upstream-name . "gdsfmt")))
(build-system r-build-system) (build-system r-build-system)
(inputs (inputs
@ -10711,14 +10750,14 @@ procedures that induce nucleotide substitutions (e.g. BisSeq).")
(define-public r-timeseriesexperiment (define-public r-timeseriesexperiment
(package (package
(name "r-timeseriesexperiment") (name "r-timeseriesexperiment")
(version "1.10.0") (version "1.10.1")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (bioconductor-uri "TimeSeriesExperiment" version)) (uri (bioconductor-uri "TimeSeriesExperiment" version))
(sha256 (sha256
(base32 (base32
"10xgihjssnc6i03819p9gnzwfc7znanic514ar3yxzl3fhxy3yyy")))) "1095a2ynxcf9xiac5cjzslcbmjnjpbby0vy7d84qagdiq1w6mrhn"))))
(properties (properties
`((upstream-name . "TimeSeriesExperiment"))) `((upstream-name . "TimeSeriesExperiment")))
(build-system r-build-system) (build-system r-build-system)
@ -11878,14 +11917,14 @@ gene selection, testing relationships, and so on.")
(define-public r-biocpkgtools (define-public r-biocpkgtools
(package (package
(name "r-biocpkgtools") (name "r-biocpkgtools")
(version "1.10.1") (version "1.10.2")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (bioconductor-uri "BiocPkgTools" version)) (uri (bioconductor-uri "BiocPkgTools" version))
(sha256 (sha256
(base32 (base32
"18a9mbzfmkipnv1cc9h3rhn9jxdp7nzywp0bz7hvmsaffv4p4skc")))) "1sfp1nxlwbbbpx2iwvyk9p10jdy2vxhgn2b5fy5blayzjjlb3d80"))))
(properties `((upstream-name . "BiocPkgTools"))) (properties `((upstream-name . "BiocPkgTools")))
(build-system r-build-system) (build-system r-build-system)
(propagated-inputs (propagated-inputs
@ -11904,7 +11943,6 @@ gene selection, testing relationships, and so on.")
("r-magrittr" ,r-magrittr) ("r-magrittr" ,r-magrittr)
("r-rbgl" ,r-rbgl) ("r-rbgl" ,r-rbgl)
("r-readr" ,r-readr) ("r-readr" ,r-readr)
("r-rex" ,r-rex)
("r-rlang" ,r-rlang) ("r-rlang" ,r-rlang)
("r-rvest" ,r-rvest) ("r-rvest" ,r-rvest)
("r-stringr" ,r-stringr) ("r-stringr" ,r-stringr)
@ -12279,13 +12317,13 @@ routines.")
(define-public r-s4vectors (define-public r-s4vectors
(package (package
(name "r-s4vectors") (name "r-s4vectors")
(version "0.30.0") (version "0.30.1")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (bioconductor-uri "S4Vectors" version)) (uri (bioconductor-uri "S4Vectors" version))
(sha256 (sha256
(base32 (base32
"0v5vxmg0a27ivgymmzfl595rcb1m3dz27r2wzbk1j97rlpwy1p4q")))) "103sw0fmmm4f3hprrsn7dwg0kmmr9mcmb46dcwwb6p5np0al2sfx"))))
(properties (properties
`((upstream-name . "S4Vectors"))) `((upstream-name . "S4Vectors")))
(build-system r-build-system) (build-system r-build-system)
@ -12934,14 +12972,14 @@ data in the column sparse format.")
(define-public r-delayedmatrixstats (define-public r-delayedmatrixstats
(package (package
(name "r-delayedmatrixstats") (name "r-delayedmatrixstats")
(version "1.14.2") (version "1.14.3")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (bioconductor-uri "DelayedMatrixStats" version)) (uri (bioconductor-uri "DelayedMatrixStats" version))
(sha256 (sha256
(base32 (base32
"1avzd3fj4am9klmlx03nwq2pvgx7646yjwha1gqf0cbx5hibxy02")))) "1zxs2wjnsq9w1cl4andsd7y9xsdnl1an55khw9viaq758m7hhbcn"))))
(properties (properties
`((upstream-name . "DelayedMatrixStats"))) `((upstream-name . "DelayedMatrixStats")))
(build-system r-build-system) (build-system r-build-system)
@ -14602,6 +14640,57 @@ with a nested autoregressive correlated error structure for the effect of
interest on transformed methylation proportions.") interest on transformed methylation proportions.")
(license license:expat))) (license license:expat)))
(define-public r-omnipathr
(package
(name "r-omnipathr")
(version "3.0.4")
(source
(origin
(method url-fetch)
(uri (bioconductor-uri "OmnipathR" version))
(sha256
(base32 "0rbq3h3cp5dgpy5ifmbnfm6z8w4jv45wjzyl1f4qacgrbyf2l30a"))))
(properties `((upstream-name . "OmnipathR")))
(build-system r-build-system)
(arguments
`(#:phases
(modify-phases %standard-phases
(add-after 'unpack 'set-HOME
(lambda _ (setenv "HOME" "/tmp"))))))
(propagated-inputs
`(("r-checkmate" ,r-checkmate)
("r-curl" ,r-curl)
("r-digest" ,r-digest)
("r-dplyr" ,r-dplyr)
("r-httr" ,r-httr)
("r-igraph" ,r-igraph)
("r-jsonlite" ,r-jsonlite)
("r-later" ,r-later)
("r-logger" ,r-logger)
("r-magrittr" ,r-magrittr)
("r-progress" ,r-progress)
("r-purrr" ,r-purrr)
("r-rappdirs" ,r-rappdirs)
("r-readr" ,r-readr)
("r-readxl" ,r-readxl)
("r-rlang" ,r-rlang)
("r-stringr" ,r-stringr)
("r-tibble" ,r-tibble)
("r-tidyr" ,r-tidyr)
("r-tidyselect" ,r-tidyselect)
("r-xml2" ,r-xml2)
("r-yaml" ,r-yaml)))
(native-inputs `(("r-knitr" ,r-knitr)))
(home-page "https://saezlab.github.io/OmnipathR/")
(synopsis "OmniPath web service client and more")
(description
"This package provides a client for the OmniPath web service and many
other resources. It also includes functions to transform and pretty print
some of the downloaded data, functions to access a number of other resources.
Furthermore, OmnipathR features a close integration with the NicheNet method
for ligand activity prediction from transcriptomics data.")
(license license:expat)))
(define-public r-biscuiteer (define-public r-biscuiteer
(package (package
(name "r-biscuiteer") (name "r-biscuiteer")

View file

@ -21,6 +21,7 @@
;;; Copyright © 2020 Bonface Munyoki Kilyungi <bonfacemunyoki@gmail.com> ;;; Copyright © 2020 Bonface Munyoki Kilyungi <bonfacemunyoki@gmail.com>
;;; Copyright © 2021 Tim Howes <timhowes@lavabit.com> ;;; Copyright © 2021 Tim Howes <timhowes@lavabit.com>
;;; Copyright © 2021 Hong Li <hli@mdc-berlin.de> ;;; Copyright © 2021 Hong Li <hli@mdc-berlin.de>
;;; Copyright © 2021 Simon Tournier <zimon.toutoune@gmail.com>
;;; Copyright © 2021 Felix Gruber <felgru@posteo.net> ;;; Copyright © 2021 Felix Gruber <felgru@posteo.net>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
@ -106,7 +107,6 @@
#:use-module (gnu packages jemalloc) #:use-module (gnu packages jemalloc)
#:use-module (gnu packages jupyter) #:use-module (gnu packages jupyter)
#:use-module (gnu packages linux) #:use-module (gnu packages linux)
#:use-module (gnu packages lisp-xyz)
#:use-module (gnu packages logging) #:use-module (gnu packages logging)
#:use-module (gnu packages lsof) #:use-module (gnu packages lsof)
#:use-module (gnu packages machine-learning) #:use-module (gnu packages machine-learning)
@ -148,6 +148,7 @@
#:use-module (gnu packages textutils) #:use-module (gnu packages textutils)
#:use-module (gnu packages time) #:use-module (gnu packages time)
#:use-module (gnu packages tls) #:use-module (gnu packages tls)
#:use-module (gnu packages uglifyjs)
#:use-module (gnu packages vim) #:use-module (gnu packages vim)
#:use-module (gnu packages web) #:use-module (gnu packages web)
#:use-module (gnu packages wget) #:use-module (gnu packages wget)
@ -2323,7 +2324,13 @@ databases.")
(let ((out (assoc-ref outputs "out"))) (let ((out (assoc-ref outputs "out")))
(for-each make-file-writable (for-each make-file-writable
(find-files out "\\.gz$")) (find-files out "\\.gz$"))
#t)))))) #t)))
(add-after 'unpack 'disable-nondeterministic-test
(lambda _
;; This test fails/succeeds non-deterministically.
(substitute* "clipper/test/test_call_peak.py"
(("test_get_FDR_cutoff_mean") "_test_get_FDR_cutoff_mean"))
#t)))))
(inputs (inputs
`(("htseq" ,htseq) `(("htseq" ,htseq)
("python-pybedtools" ,python-pybedtools) ("python-pybedtools" ,python-pybedtools)
@ -7351,6 +7358,39 @@ sequence.")
(supported-systems '("i686-linux" "x86_64-linux")) (supported-systems '("i686-linux" "x86_64-linux"))
(license license:bsd-3))) (license license:bsd-3)))
(define-public r-presto
(let ((commit "052085db9c88aa70a28d11cc58ebc807999bf0ad")
(revision "0"))
(package
(name "r-presto")
(version (git-version "1.0.0" revision commit))
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/immunogenomics/presto")
(commit commit)))
(file-name (git-file-name name version))
(sha256
(base32 "1c3fmag4r4p2lvbvxlxyck9dvfw1prbwcl9665mmlx4a35750hk8"))))
(properties `((upstream . "presto")))
(build-system r-build-system)
(propagated-inputs
`(("r-data-table" ,r-data-table)
("r-deseq2" ,r-deseq2)
("r-dplyr" ,r-dplyr)
("r-matrix" ,r-matrix)
("r-rcpp" ,r-rcpp)
("r-rcpparmadillo" ,r-rcpparmadillo)
("r-reshape2" ,r-reshape2)
("r-rlang" ,r-rlang)
("r-tidyr" ,r-tidyr)))
(home-page "https://github.com/immunogenomics/presto")
(synopsis "Fast Functions for Differential Expression using Wilcox and AUC")
(description "This package performs a fast Wilcoxon rank sum test and
auROC analysis.")
(license license:gpl3))))
(define-public r-snapatac (define-public r-snapatac
(package (package
(name "r-snapatac") (name "r-snapatac")
@ -9221,7 +9261,7 @@ Browser.")
(lambda* (#:key inputs #:allow-other-keys) (lambda* (#:key inputs #:allow-other-keys)
(let* ((file (assoc-ref inputs "plotly.js")) (let* ((file (assoc-ref inputs "plotly.js"))
(installed "plotly/plotly.js")) (installed "plotly/plotly.js"))
(let ((minified (open-pipe* OPEN_READ "uglify-js" file))) (let ((minified (open-pipe* OPEN_READ "uglifyjs" file)))
(call-with-output-file installed (call-with-output-file installed
(cut dump-port minified <>)))) (cut dump-port minified <>))))
#t)) #t))
@ -9279,7 +9319,7 @@ Browser.")
"v1.39.4/dist/plotly.js")) "v1.39.4/dist/plotly.js"))
(sha256 (sha256
(base32 "138mwsr4nf5qif4mrxx286mpnagxd1xwl6k8aidrjgknaqg88zyr")))) (base32 "138mwsr4nf5qif4mrxx286mpnagxd1xwl6k8aidrjgknaqg88zyr"))))
("uglify-js" ,uglify-js))) ("uglifyjs" ,node-uglify-js)))
(home-page "https://www.bioinformatics.babraham.ac.uk/projects/bismark/") (home-page "https://www.bioinformatics.babraham.ac.uk/projects/bismark/")
(synopsis "Map bisulfite treated sequence reads and analyze methylation") (synopsis "Map bisulfite treated sequence reads and analyze methylation")
(description "Bismark is a program to map bisulfite treated sequencing (description "Bismark is a program to map bisulfite treated sequencing
@ -10389,7 +10429,8 @@ once. This package provides tools to perform Drop-seq analyses.")
"/pigx_rnaseq-" version ".tar.gz")) "/pigx_rnaseq-" version ".tar.gz"))
(sha256 (sha256
(base32 (base32
"1ja3bda1appxrzbfy7wp7khy30mm7lic8xbq3gkbpc5bld3as9cm")))) "1ja3bda1appxrzbfy7wp7khy30mm7lic8xbq3gkbpc5bld3as9cm"))
(patches (search-patches "pigx-rnaseq-no-citeproc.patch"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
`(#:parallel-tests? #f ; not supported `(#:parallel-tests? #f ; not supported
@ -10402,6 +10443,9 @@ once. This package provides tools to perform Drop-seq analyses.")
(substitute* "Makefile.in" (substitute* "Makefile.in"
(("^ tests/test_multiqc/test.sh") "") (("^ tests/test_multiqc/test.sh") "")
(("^ test.sh") "")))) (("^ test.sh") ""))))
(add-before 'bootstrap 'autoreconf
(lambda _
(invoke "autoreconf" "-vif")))
(add-before 'check 'set-timezone (add-before 'check 'set-timezone
;; The readr package is picky about timezones. ;; The readr package is picky about timezones.
(lambda* (#:key inputs #:allow-other-keys) (lambda* (#:key inputs #:allow-other-keys)
@ -10441,12 +10485,13 @@ once. This package provides tools to perform Drop-seq analyses.")
("r-rjson" ,r-rjson) ("r-rjson" ,r-rjson)
("salmon" ,salmon) ("salmon" ,salmon)
("pandoc" ,pandoc) ("pandoc" ,pandoc)
("pandoc-citeproc" ,pandoc-citeproc)
("python-wrapper" ,python-wrapper) ("python-wrapper" ,python-wrapper)
("python-deeptools" ,python-deeptools) ("python-deeptools" ,python-deeptools)
("python-pyyaml" ,python-pyyaml))) ("python-pyyaml" ,python-pyyaml)))
(native-inputs (native-inputs
`(("tzdata" ,tzdata))) `(("tzdata" ,tzdata)
("automake" ,automake)
("autoconf" ,autoconf)))
(home-page "https://bioinformatics.mdc-berlin.de/pigx/") (home-page "https://bioinformatics.mdc-berlin.de/pigx/")
(synopsis "Analysis pipeline for RNA sequencing experiments") (synopsis "Analysis pipeline for RNA sequencing experiments")
(description "PiGX RNAseq is an analysis pipeline for preprocessing and (description "PiGX RNAseq is an analysis pipeline for preprocessing and
@ -10460,7 +10505,7 @@ expression report comparing samples in an easily configurable manner.")
(define-public pigx-chipseq (define-public pigx-chipseq
(package (package
(name "pigx-chipseq") (name "pigx-chipseq")
(version "0.0.52") (version "0.0.53")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "https://github.com/BIMSBbioinfo/pigx_chipseq/" (uri (string-append "https://github.com/BIMSBbioinfo/pigx_chipseq/"
@ -10468,10 +10513,16 @@ expression report comparing samples in an easily configurable manner.")
"/pigx_chipseq-" version ".tar.gz")) "/pigx_chipseq-" version ".tar.gz"))
(sha256 (sha256
(base32 (base32
"097cvc8kr3r1nq0sgjpirzmixwjl074qp4qq3sx4ngfqi06af6r9")))) "0c6npx35sszycf059w1x1k4k9hq1qqxny0i4p57q1188czr4561h"))
(patches (search-patches "pigx-chipseq-no-citeproc.patch"))))
(build-system gnu-build-system) (build-system gnu-build-system)
;; parts of the tests rely on access to the network (arguments
(arguments '(#:tests? #f)) `(#:tests? #f ; parts of the tests rely on access to the network
#:phases
(modify-phases %standard-phases
(add-before 'bootstrap 'autoreconf
(lambda _
(invoke "autoreconf" "-vif"))))))
(inputs (inputs
`(("grep" ,grep) `(("grep" ,grep)
("coreutils" ,coreutils) ("coreutils" ,coreutils)
@ -10492,6 +10543,7 @@ expression report comparing samples in an easily configurable manner.")
("r-ggrepel" ,r-ggrepel) ("r-ggrepel" ,r-ggrepel)
("r-gprofiler2" ,r-gprofiler2) ("r-gprofiler2" ,r-gprofiler2)
("r-heatmaply" ,r-heatmaply) ("r-heatmaply" ,r-heatmaply)
("r-hexbin" ,r-hexbin)
("r-htmlwidgets" ,r-htmlwidgets) ("r-htmlwidgets" ,r-htmlwidgets)
("r-jsonlite" ,r-jsonlite) ("r-jsonlite" ,r-jsonlite)
("r-pheatmap" ,r-pheatmap) ("r-pheatmap" ,r-pheatmap)
@ -10513,7 +10565,6 @@ expression report comparing samples in an easily configurable manner.")
("multiqc" ,multiqc) ("multiqc" ,multiqc)
("perl" ,perl) ("perl" ,perl)
("pandoc" ,pandoc) ("pandoc" ,pandoc)
("pandoc-citeproc" ,pandoc-citeproc)
("fastqc" ,fastqc) ("fastqc" ,fastqc)
("bowtie" ,bowtie) ("bowtie" ,bowtie)
("idr" ,idr) ("idr" ,idr)
@ -10522,7 +10573,9 @@ expression report comparing samples in an easily configurable manner.")
("bedtools" ,bedtools) ("bedtools" ,bedtools)
("kentutils" ,kentutils))) ("kentutils" ,kentutils)))
(native-inputs (native-inputs
`(("python-pytest" ,python-pytest))) `(("autoconf" ,autoconf)
("automake" ,automake)
("python-pytest" ,python-pytest)))
(home-page "https://bioinformatics.mdc-berlin.de/pigx/") (home-page "https://bioinformatics.mdc-berlin.de/pigx/")
(synopsis "Analysis pipeline for ChIP sequencing experiments") (synopsis "Analysis pipeline for ChIP sequencing experiments")
(description "PiGX ChIPseq is an analysis pipeline for preprocessing, peak (description "PiGX ChIPseq is an analysis pipeline for preprocessing, peak
@ -10545,7 +10598,8 @@ in an easily configurable manner.")
"/pigx_bsseq-" version ".tar.gz")) "/pigx_bsseq-" version ".tar.gz"))
(sha256 (sha256
(base32 (base32
"05al5dacfp1vf1x3cq20jhd6w4xj5vaxslzaka6yrpg0av8sh3k3")))) "05al5dacfp1vf1x3cq20jhd6w4xj5vaxslzaka6yrpg0av8sh3k3"))
(patches (search-patches "pigx-bsseq-no-citeproc.patch"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
`(;; TODO: tests currently require 12+GB of RAM. See `(;; TODO: tests currently require 12+GB of RAM. See
@ -10553,6 +10607,9 @@ in an easily configurable manner.")
#:tests? #f #:tests? #f
#:phases #:phases
(modify-phases %standard-phases (modify-phases %standard-phases
(add-before 'bootstrap 'autoreconf
(lambda _
(invoke "autoreconf" "-vif")))
(add-before 'check 'set-timezone (add-before 'check 'set-timezone
;; The readr package is picky about timezones. ;; The readr package is picky about timezones.
(lambda* (#:key inputs #:allow-other-keys) (lambda* (#:key inputs #:allow-other-keys)
@ -10561,7 +10618,9 @@ in an easily configurable manner.")
(search-input-directory inputs (search-input-directory inputs
"share/zoneinfo"))))))) "share/zoneinfo")))))))
(native-inputs (native-inputs
`(("tzdata" ,tzdata))) `(("tzdata" ,tzdata)
("automake" ,automake)
("autoconf" ,autoconf)))
(inputs (inputs
`(("coreutils" ,coreutils) `(("coreutils" ,coreutils)
("sed" ,sed) ("sed" ,sed)
@ -10581,7 +10640,6 @@ in an easily configurable manner.")
("r-ggplot2" ,r-ggplot2) ("r-ggplot2" ,r-ggplot2)
("r-ggbio" ,r-ggbio) ("r-ggbio" ,r-ggbio)
("pandoc" ,pandoc) ("pandoc" ,pandoc)
("pandoc-citeproc" ,pandoc-citeproc)
("python-wrapper" ,python-wrapper) ("python-wrapper" ,python-wrapper)
("python-pyyaml" ,python-pyyaml) ("python-pyyaml" ,python-pyyaml)
("snakemake" ,snakemake) ("snakemake" ,snakemake)
@ -10614,8 +10672,18 @@ methylation and segmentation.")
"/pigx_scrnaseq-" version ".tar.gz")) "/pigx_scrnaseq-" version ".tar.gz"))
(sha256 (sha256
(base32 (base32
"1h5mcxzwj3cidlkvy9ly5wmi48vwfsjf8dxjfirknqxr9a92hwlx")))) "1h5mcxzwj3cidlkvy9ly5wmi48vwfsjf8dxjfirknqxr9a92hwlx"))
(patches (search-patches "pigx-scrnaseq-no-citeproc.patch"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments
`(#:phases
(modify-phases %standard-phases
(add-before 'bootstrap 'autoreconf
(lambda _
(invoke "autoreconf" "-vif"))))))
(native-inputs
`(("automake" ,automake)
("autoconf" ,autoconf)))
(inputs (inputs
`(("coreutils" ,coreutils) `(("coreutils" ,coreutils)
("perl" ,perl) ("perl" ,perl)
@ -10630,7 +10698,6 @@ methylation and segmentation.")
("python-numpy" ,python-numpy) ("python-numpy" ,python-numpy)
("python-loompy" ,python-loompy) ("python-loompy" ,python-loompy)
("pandoc" ,pandoc) ("pandoc" ,pandoc)
("pandoc-citeproc" ,pandoc-citeproc)
("samtools" ,samtools) ("samtools" ,samtools)
("snakemake" ,snakemake) ("snakemake" ,snakemake)
("star" ,star-for-pigx) ("star" ,star-for-pigx)
@ -10680,8 +10747,18 @@ based methods.")
"/pigx_sars-cov2-ww-" version ".tar.gz")) "/pigx_sars-cov2-ww-" version ".tar.gz"))
(sha256 (sha256
(base32 (base32
"1hhdbwsnl0d37lrmisw5hr630xr8s41qvxflm05anh11rj8n22yw")))) "1hhdbwsnl0d37lrmisw5hr630xr8s41qvxflm05anh11rj8n22yw"))
(patches (search-patches "pigx-sars-cov2-ww-no-citeproc.patch"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments
`(#:phases
(modify-phases %standard-phases
(add-before 'bootstrap 'autoreconf
(lambda _
(invoke "autoreconf" "-vif"))))))
(native-inputs
`(("automake" ,automake)
("autoconf" ,autoconf)))
(inputs (inputs
`(("bash-minimal" ,bash-minimal) `(("bash-minimal" ,bash-minimal)
("bwa" ,bwa) ("bwa" ,bwa)
@ -12360,17 +12437,18 @@ datasets.")
(define-public ngless (define-public ngless
(package (package
(name "ngless") (name "ngless")
(version "1.1.0") (version "1.3.0")
(source (source
(origin (origin
(method git-fetch) (method git-fetch)
(uri (git-reference (uri (git-reference
(url "https://gitlab.com/ngless/ngless.git") (url "https://github.com/ngless-toolkit/ngless.git")
(commit (string-append "v" version)))) (commit (string-append "v" version))))
(file-name (git-file-name name version)) (file-name (git-file-name name version))
(sha256 (sha256
(base32 (base32
"1wim8wpqyff080dfcazynrmjwqas38m24m0v350w245mmhrapdma")))) "0pb9f6b0yk9p4cdwiym8r190q1bcdiwvc7i2s6rw54qgi8r3g6pj"))
(patches (search-patches "ngless-unliftio.patch"))))
(build-system haskell-build-system) (build-system haskell-build-system)
(arguments (arguments
`(#:haddock? #f ; The haddock phase fails with: NGLess/CmdArgs.hs:20:1: `(#:haddock? #f ; The haddock phase fails with: NGLess/CmdArgs.hs:20:1:
@ -12441,7 +12519,7 @@ datasets.")
("ghc-http-conduit" ,ghc-http-conduit) ("ghc-http-conduit" ,ghc-http-conduit)
("ghc-inline-c" ,ghc-inline-c) ("ghc-inline-c" ,ghc-inline-c)
("ghc-inline-c-cpp" ,ghc-inline-c-cpp) ("ghc-inline-c-cpp" ,ghc-inline-c-cpp)
("ghc-intervalmap" ,ghc-intervalmap) ("ghc-int-interval-map" ,ghc-int-interval-map)
("ghc-missingh" ,ghc-missingh) ("ghc-missingh" ,ghc-missingh)
("ghc-optparse-applicative" ,ghc-optparse-applicative) ("ghc-optparse-applicative" ,ghc-optparse-applicative)
("ghc-regex" ,ghc-regex) ("ghc-regex" ,ghc-regex)
@ -12468,12 +12546,49 @@ datasets.")
("ghc-test-framework-hunit",ghc-test-framework-hunit) ("ghc-test-framework-hunit",ghc-test-framework-hunit)
("ghc-test-framework-quickcheck2" ,ghc-test-framework-quickcheck2) ("ghc-test-framework-quickcheck2" ,ghc-test-framework-quickcheck2)
("ghc-test-framework-th" ,ghc-test-framework-th))) ("ghc-test-framework-th" ,ghc-test-framework-th)))
(home-page "https://gitlab.com/ngless/ngless") (home-page "https://ngless.embl.de/")
(synopsis "DSL for processing next-generation sequencing data") (synopsis "DSL for processing next-generation sequencing data")
(description "Ngless is a domain-specific language for (description "Ngless is a domain-specific language for
@dfn{next-generation sequencing} (NGS) data processing.") @dfn{next-generation sequencing} (NGS) data processing.")
(license license:expat))) (license license:expat)))
(define-public ghc-int-interval-map
(let ((commit "678763de7fe6d7fa3f1c44b32d18ce58670270f4")
(revision "1"))
(package
(name "ghc-int-interval-map")
(version "0.0.0.0")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/ngless-toolkit/interval-to-int.git")
(commit commit)))
(file-name (git-file-name name version))
(sha256 (base32 "0fd728b5if89vj5j4f9y7k0b2xv2ycz5a21iy15wbdcf5bhim7i8"))))
(build-system haskell-build-system)
(inputs
`(("ghc-either" ,ghc-either)
("ghc-primitive" ,ghc-primitive)
("ghc-vector" ,ghc-vector)
("ghc-vector-algorithms" ,ghc-vector-algorithms)))
(native-inputs
`(("ghc-hedgehog" ,ghc-hedgehog)
("ghc-tasty" ,ghc-tasty)
("ghc-tasty-hedgehog" ,ghc-tasty-hedgehog)
("ghc-tasty-hunit" ,ghc-tasty-hunit)
("ghc-tasty-quickcheck" ,ghc-tasty-quickcheck)
("ghc-tasty-th" ,ghc-tasty-th)))
(home-page "https://github.com/luispedro/interval-to-int#readme")
(synopsis "Interval map structure in Haskell")
(description "An interval map structure that is optimized for low
memory (each interval is represented by about 3 words + whatever the
cargo is) and has semantics that are appropriate for genomic intervals
(namely, intervals can overlap and queries will return all matches
together). It also designed to be used in two phases: a construction
phase + query phase).")
(license license:expat))))
(define-public filtlong (define-public filtlong
;; The recommended way to install is to clone the git repository ;; The recommended way to install is to clone the git repository
;; https://github.com/rrwick/Filtlong#installation ;; https://github.com/rrwick/Filtlong#installation

View file

@ -616,6 +616,7 @@ def test_ctrl_c"))
"tools/mkenvimage" "tools/mkenvimage"
"tools/dumpimage" "tools/dumpimage"
"tools/mkimage" "tools/mkimage"
"tools/kwboot"
"tools/proftool" "tools/proftool"
"tools/fdtgrep" "tools/fdtgrep"
"tools/env/fw_printenv" "tools/env/fw_printenv"
@ -1070,14 +1071,14 @@ tools, and more.")
(define-public os-prober (define-public os-prober
(package (package
(name "os-prober") (name "os-prober")
(version "1.78") (version "1.79")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (string-append "mirror://debian/pool/main/o/os-prober/os-prober_" (uri (string-append "mirror://debian/pool/main/o/os-prober/os-prober_"
version ".tar.xz")) version ".tar.xz"))
(sha256 (sha256
(base32 "1sahk72blsrlirly4xlwa8jfxrpwagyn7b81p92q2s9m218rz43f")))) (base32 "1vhhk0bl2j4910513gn5h3z8nsaavyv3c8764bim2klc0xyk3rmb"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
`(#:modules ((guix build gnu-build-system) `(#:modules ((guix build gnu-build-system)

View file

@ -48,30 +48,19 @@ supported content to the Kodi media center.")
(define-public play-to-kodi/chromium (define-public play-to-kodi/chromium
(make-chromium-extension play-to-kodi)) (make-chromium-extension play-to-kodi))
(define uassets
(let ((commit "54e217d9051831d0d8856286a877962e0f592d45"))
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/uBlockOrigin/uAssets")
(commit commit)))
(file-name (git-file-name "uAssets" (string-take commit 9)))
(sha256
(base32
"1xhxadm6qyph6kkq3gxg1rar1psb586mniwp7bkyj5zpzzj31wmj")))))
(define ublock-origin (define ublock-origin
(package (package
(name "ublock-origin") (name "ublock-origin")
(version "1.37.2") (version "1.38.4")
(home-page "https://github.com/gorhill/uBlock") (home-page "https://github.com/gorhill/uBlock")
(source (origin (source (origin
(method git-fetch) (method git-fetch)
(uri (git-reference (url home-page) (commit version))) (uri (git-reference (url home-page) (commit version)
(recursive? #t)))
(file-name (git-file-name name version)) (file-name (git-file-name name version))
(sha256 (sha256
(base32 (base32
"1c1dh9kkimvahs9yw1hv67290h8xvmbl10film7g1wamdxydj97y")))) "127b5mg54zfci86q66fss701y20b0mjpa4flx7iar7nviqg9fa1h"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(outputs '("xpi" "firefox" "chromium")) (outputs '("xpi" "firefox" "chromium"))
(arguments (arguments
@ -81,18 +70,18 @@ supported content to the Kodi media center.")
(modify-phases (map (lambda (phase) (modify-phases (map (lambda (phase)
(assq phase %standard-phases)) (assq phase %standard-phases))
'(set-paths unpack patch-source-shebangs)) '(set-paths unpack patch-source-shebangs))
(add-after 'unpack 'link-uassets (add-after 'unpack 'do-not-depend-on-git
(lambda* (#:key native-inputs inputs #:allow-other-keys) (lambda _
(symlink (string-append (assoc-ref (or native-inputs inputs) ;; The script attempts to checkout the uAssets submodule,
"uassets")) ;; but we already did so with git-fetch.
"../uAssets") (substitute* "tools/make-assets.sh"
#t)) (("^git submodule update.*")
""))))
(add-after 'unpack 'make-files-writable (add-after 'unpack 'make-files-writable
(lambda _ (lambda _
;; The build system copies some files and later tries ;; The build system copies some files and later tries
;; modifying them. ;; modifying them.
(for-each make-file-writable (find-files ".")) (for-each make-file-writable (find-files "."))))
#t))
(add-after 'patch-source-shebangs 'build-xpi (add-after 'patch-source-shebangs 'build-xpi
(lambda _ (lambda _
(invoke "./tools/make-firefox.sh" "all"))) (invoke "./tools/make-firefox.sh" "all")))
@ -107,11 +96,9 @@ supported content to the Kodi media center.")
(install-file "dist/build/uBlock0.firefox.xpi" (install-file "dist/build/uBlock0.firefox.xpi"
(string-append xpi "/lib/mozilla/extensions")) (string-append xpi "/lib/mozilla/extensions"))
(copy-recursively "dist/build/uBlock0.firefox" firefox) (copy-recursively "dist/build/uBlock0.firefox" firefox)
(copy-recursively "dist/build/uBlock0.chromium" chromium) (copy-recursively "dist/build/uBlock0.chromium" chromium)))))))
#t))))))
(native-inputs (native-inputs
`(("python" ,python-wrapper) `(("python" ,python-wrapper)
("uassets" ,uassets)
("zip" ,zip))) ("zip" ,zip)))
(synopsis "Block unwanted content from web sites") (synopsis "Block unwanted content from web sites")
(description (description

View file

@ -8,7 +8,7 @@
;;; Copyright © 2018 Alex Vong <alexvong1995@gmail.com> ;;; Copyright © 2018 Alex Vong <alexvong1995@gmail.com>
;;; Copyright © 2019, 2020 Brett Gilio <brettg@gnu.org> ;;; Copyright © 2019, 2020 Brett Gilio <brettg@gnu.org>
;;; Copyright © 2019 Jonathan Brielmaier <jonathan.brielmaier@web.de> ;;; Copyright © 2019 Jonathan Brielmaier <jonathan.brielmaier@web.de>
;;; Copyright © 2020 Leo Prikler <leo.prikler@student.tugraz.at> ;;; Copyright © 2020 Liliana Marie Prikler <liliana.prikler@gmail.com>
;;; Copyright © 2020 Yuval Kogman <nothingmuch@woobling.org> ;;; Copyright © 2020 Yuval Kogman <nothingmuch@woobling.org>
;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net> ;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net>
;;; Copyright © 2020 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2020 Efraim Flashner <efraim@flashner.co.il>

View file

@ -252,16 +252,16 @@ whose behaviour is inconsistent across *NIX flavours.")
(define-public libhx (define-public libhx
(package (package
(name "libhx") (name "libhx")
(version "3.25") (version "4.0.1")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (string-append "mirror://sourceforge/libhx/libHX/" (uri (string-append "https://inai.de/files/libhx/"
"libHX-" version ".tar.xz")) "libHX-" version ".tar.xz"))
(sha256 (sha256
(base32 "12avn16f8aqb0cq6jplz0sv7rh6f07m85dwc8dasnnwsvijwbpbj")))) (base32 "1f4rmarym1j368cbxhqzyvdn5dk4bh8951s19ffqwql16anqsgfr"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(home-page "http://libhx.sourceforge.net") (home-page "https://inai.de/projects/libhx/")
(synopsis "C library with common data structures and functions") (synopsis "C library with common data structures and functions")
(description (description
"This is a C library (with some C++ bindings available) that provides data "This is a C library (with some C++ bindings available) that provides data
@ -388,7 +388,7 @@ any other grammar rules.")
(define-public sparse (define-public sparse
(package (package
(name "sparse") (name "sparse")
(version "0.6.3") (version "0.6.4")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (uri
@ -396,7 +396,7 @@ any other grammar rules.")
"sparse-" version ".tar.xz")) "sparse-" version ".tar.xz"))
(sha256 (sha256
(base32 (base32
"16d8c4dhipjzjf8z4z7pix1pdpqydz0v4r7i345f5s09hjnxpxnl")))) "0z1qds52144nvsdnl82r3zs3vax618v920jmffyyssmwj54qpcka"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(inputs `(("perl" ,perl))) (inputs `(("perl" ,perl)))
(arguments (arguments
@ -406,8 +406,7 @@ any other grammar rules.")
(add-after 'unpack 'patch-cgcc (add-after 'unpack 'patch-cgcc
(lambda _ (lambda _
(substitute* "cgcc" (substitute* "cgcc"
(("'cc'") (string-append "'" (which "gcc") "'"))) (("'cc'") (string-append "'" (which "gcc") "'"))))))))
#t)))))
(synopsis "Semantic C parser for Linux development") (synopsis "Semantic C parser for Linux development")
(description (description
"Sparse is a semantic parser for C and is required for Linux development. "Sparse is a semantic parser for C and is required for Linux development.

View file

@ -31,37 +31,38 @@
(define-public ccache (define-public ccache
(package (package
(name "ccache") (name "ccache")
(version "4.4") (version "4.4.2")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (string-append "https://github.com/ccache/ccache/releases/download/v" (uri (string-append "https://github.com/ccache/ccache/releases/download/v"
version "/ccache-" version ".tar.xz")) version "/ccache-" version ".tar.xz"))
(sha256 (sha256
(base32 "0qbmcs6c3m071vsd1ppa31r8s0dzpaw5y38z8ga1bz48rwpfl2xl")))) (base32 "186b5lfbdd48cvbxqv2yh93pgr8lhahl1jzw00k2rmjzmbxwl04j"))))
(build-system cmake-build-system) (build-system cmake-build-system)
(native-inputs `(("perl" ,perl) ; for test/run (native-inputs `(("perl" ,perl) ; for test/run
("which" ,(@ (gnu packages base) which)))) ("which" ,(@ (gnu packages base) which))))
(inputs `(("zlib" ,zlib) (inputs `(("zlib" ,zlib)
("zstd" ,zstd "lib"))) ("zstd" ,zstd "lib")))
(arguments (arguments
'(;; Disable redis backend explicitly. Build system insists on present dependency '( ;; The Redis backend must be explicitly disabled to build without Redis.
;; or on explicit flag.
#:configure-flags #:configure-flags
'("-DREDIS_STORAGE_BACKEND=OFF") '("-DREDIS_STORAGE_BACKEND=OFF")
#:phases #:phases
(modify-phases %standard-phases (modify-phases %standard-phases
(add-before 'configure 'setup-tests (add-before 'configure 'fix-shell
;; Run early whilst we're still in the source directory.
(lambda _ (lambda _
(substitute* '("unittest/test_hashutil.cpp" "test/suites/base.bash") (substitute* (list "test/run"
(("#!/bin/sh") (string-append "#!" (which "sh")))) "test/suites/base.bash"
#t)) "unittest/test_hashutil.cpp")
(("compgen -e") "env | cut -d= -f1")
(("#!/bin/sh") (string-append "#!" (which "sh"))))))
(add-before 'check 'set-home (add-before 'check 'set-home
;; Tests require a writable HOME. ;; Tests require a writable HOME.
(lambda _ (lambda _
(setenv "HOME" (getenv "TMPDIR")) (setenv "HOME" (getenv "TMPDIR")))))))
#t)))))
(home-page "https://ccache.dev/") (home-page "https://ccache.dev/")
(synopsis "Compiler cache") (synopsis "Compiler cache")
(description (description

View file

@ -969,18 +969,26 @@ standard library.")
(define-public python-pytest (define-public python-pytest
(package (package
(name "python-pytest") (name "python-pytest")
(version "6.2.1") (version "6.2.4")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (pypi-uri "pytest" version)) (uri (pypi-uri "pytest" version))
(sha256 (sha256
(base32 (base32
"01n3jny7m05r6g7gphbkj2xdms75ql93x69crd377hlvi6qikr36")))) "0jy5f83la1864ss42dhsi1mcm5nl79d8bjg7wk474nlw1c5avg2h"))))
(build-system python-build-system) (build-system python-build-system)
(arguments (arguments
`(#:phases `(#:phases
(modify-phases %standard-phases (modify-phases %standard-phases
(add-after 'unpack 'fix-version
;; The version string is usually derived via setuptools-scm, but
;; without the git metadata available, the version string is set to
;; '0.0.0'.
(lambda _
(substitute* "setup.py"
(("setup\\(\\)")
(format #f "setup(version=~s)" ,version)))))
(replace 'check (replace 'check
(lambda* (#:key (tests? #t) #:allow-other-keys) (lambda* (#:key (tests? #t) #:allow-other-keys)
(setenv "TERM" "dumb") ;attempt disabling markup tests (setenv "TERM" "dumb") ;attempt disabling markup tests
@ -1093,6 +1101,39 @@ and many external plugins.")
("python-py" ,python2-py) ("python-py" ,python2-py)
("python-wcwidth" ,python2-wcwidth)))))) ("python-wcwidth" ,python2-wcwidth))))))
(define-public python-pytest-assume
(package
(name "python-pytest-assume")
(version "2.4.3")
(source
(origin
(method url-fetch)
(uri (pypi-uri "pytest-assume" version))
(sha256
(base32 "0zilqsy9fcjr6l2f9qzfxpkp40h24csnjm5mifhpmzb0fr9r0glq"))))
(build-system python-build-system)
(arguments
`(#:phases (modify-phases %standard-phases
(replace 'check
(lambda* (#:key tests? #:allow-other-keys)
(when tests?
(invoke "pytest")))))))
(propagated-inputs
`(("python-pytest" ,python-pytest)
("python-six" ,python-six)))
(home-page "https://github.com/astraw38/pytest-assume")
(synopsis "Pytest plugin that allows multiple failures per test")
(description "This package provides a Pytest plugin that allows multiple
failures per test. This is a fork from pytest-expect which includes the
following improvements:
@itemize
@item showlocals support (the Pytest option)
@item global usage support (a fixture is not required)
@item output refinements and tweaks.
@end itemize")
(license license:expat)))
(define-public python-pytest-cov (define-public python-pytest-cov
(package (package
(name "python-pytest-cov") (name "python-pytest-cov")
@ -1159,6 +1200,36 @@ supports coverage of subprocesses.")
contacting the real http server.") contacting the real http server.")
(license license:expat))) (license license:expat)))
(define-public python-pytest-random-order
(package
(name "python-pytest-random-order")
(version "1.0.4")
(source
(origin
(method url-fetch)
(uri (pypi-uri "pytest-random-order" version))
(sha256
(base32 "0lpzl218l04vjy4gckrbrcacc3w9xrjnvz64bf2i132c58s5j8bb"))))
(build-system python-build-system)
(arguments
`(#:phases (modify-phases %standard-phases
(replace 'check
(lambda* (#:key tests? #:allow-other-keys)
(when tests?
(invoke "python" "-m" "pytest" "--random-order")))))))
(propagated-inputs
`(("python-pytest" ,python-pytest)))
(home-page "https://github.com/jbasko/pytest-random-order")
(synopsis "Pytest plugin to randomize the order of tests")
(description "@code{pytest-random-order} is a Pytest plugin that
randomizes the order of tests. This can be useful to detect a test that
passes just because it happens to run after an unrelated test that leaves the
system in a favourable state. The plugin allows user to control the level of
randomness they want to introduce and to disable reordering on subsets of
tests. Tests can be rerun in a specific order by passing a seed value
reported in a previous test run.")
(license license:expat)))
(define-public python-pytest-runner (define-public python-pytest-runner
(package (package
(name "python-pytest-runner") (name "python-pytest-runner")
@ -1280,11 +1351,21 @@ same arguments.")
(define-public python2-pytest-mock (define-public python2-pytest-mock
(let ((base (package-with-python2 (let ((base (package-with-python2
(strip-python2-variant python-pytest-mock)))) (strip-python2-variant python-pytest-mock))))
(package/inherit base (package/inherit base
(version "1.10.1")
(source
(origin
(method url-fetch)
(uri (pypi-uri "pytest-mock" version))
(sha256
(base32
"1i5mg3ff1qk0wqfcxfz60hwy3q5dskdp36i10ckigkzffg8hc3ad"))))
(arguments
`(#:python ,python-2))
(propagated-inputs (propagated-inputs
`(("python2-mock" ,python2-mock) `(("python2-mock" ,python2-mock)
,@(package-propagated-inputs base)))))) ("python2-pytest" ,python2-pytest))))))
(define-public python-pytest-xdist (define-public python-pytest-xdist
(package (package
@ -2671,8 +2752,7 @@ retried.")
(name "python-pyhamcrest") (name "python-pyhamcrest")
(version "2.0.2") (version "2.0.2")
(source (origin (source (origin
;; Tests not distributed from pypi release. (method git-fetch) ;no tests in PyPI archive
(method git-fetch)
(uri (git-reference (uri (git-reference
(url "https://github.com/hamcrest/PyHamcrest") (url "https://github.com/hamcrest/PyHamcrest")
(commit (string-append "V" version)))) (commit (string-append "V" version))))
@ -2689,7 +2769,8 @@ retried.")
(arguments (arguments
`(#:phases (modify-phases %standard-phases `(#:phases (modify-phases %standard-phases
(replace 'check (replace 'check
(lambda _ (lambda* (#:key inputs outputs #:allow-other-keys)
(add-installed-pythonpath inputs outputs)
(invoke "pytest" "-vv")))))) (invoke "pytest" "-vv"))))))
(home-page "http://hamcrest.org/") (home-page "http://hamcrest.org/")
(synopsis "Hamcrest matchers for Python") (synopsis "Hamcrest matchers for Python")

View file

@ -5,6 +5,7 @@
;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2020 Björn Höfling <bjoern.hoefling@bjoernhoefling.de> ;;; Copyright © 2020 Björn Höfling <bjoern.hoefling@bjoernhoefling.de>
;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com> ;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com>
;;; Copyright © 2021 Ricardo Wurmus <rekado@elephly.net>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -35,9 +36,11 @@
#:use-module (gnu packages check) #:use-module (gnu packages check)
#:use-module (gnu packages compression) #:use-module (gnu packages compression)
#:use-module (gnu packages documentation) #:use-module (gnu packages documentation)
#:use-module (gnu packages fontutils)
#:use-module (gnu packages gl) #:use-module (gnu packages gl)
#:use-module (gnu packages graphviz) #:use-module (gnu packages graphviz)
#:use-module (gnu packages gv) #:use-module (gnu packages gv)
#:use-module (gnu packages image)
#:use-module (gnu packages maths) #:use-module (gnu packages maths)
#:use-module (gnu packages mpi) #:use-module (gnu packages mpi)
#:use-module (gnu packages perl) #:use-module (gnu packages perl)
@ -606,3 +609,62 @@ symmetries written in C. Spglib can be used to:
@item Search irreducible k-points @item Search irreducible k-points
@end enumerate") @end enumerate")
(license license:bsd-3))) (license license:bsd-3)))
(define-public python-pymol
(package
(name "python-pymol")
(version "2.5.0")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/schrodinger/pymol-open-source")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32 "08zmfgclkbjkqjpq8xs1mphs1i8rpqj76mcw7m2mrhvma5qj1nr5"))))
(build-system python-build-system)
(arguments
'(#:configure-flags
(list "--glut" "--testing")
#:phases
(modify-phases %standard-phases
(add-after 'unpack 'make-reproducible
(lambda _
(substitute* "create_shadertext.py"
(("time\\.time\\(\\)") "0"))))
(add-after 'unpack 'add-include-directories
(lambda* (#:key inputs #:allow-other-keys)
(setenv "CPLUS_INCLUDE_PATH"
(string-append (assoc-ref inputs "freetype")
"/include/freetype2:"
(assoc-ref inputs "libxml2")
"/include/libxml2:"
(getenv "CPLUS_INCLUDE_PATH")))))
;; The setup.py script does not support one of the Python build
;; system's default flags, "--single-version-externally-managed".
(replace 'install
(lambda* (#:key outputs #:allow-other-keys)
(invoke "python" "setup.py" "install"
(string-append "--prefix=" (assoc-ref outputs "out"))
"--root=/"))))))
(inputs
`(("freetype" ,freetype)
("libpng" ,libpng)
("freeglut" ,freeglut)
("glew" ,glew)
("libxml2" ,libxml2)
("mmtf-cpp" ,mmtf-cpp)
("msgpack" ,msgpack)
("python-pyqt" ,python-pyqt)
("glm" ,glm)
("netcdf" ,netcdf)))
(native-inputs
`(("catch2" ,catch-framework2)
("python-setuptools" ,python-setuptools)))
(home-page "https://pymol.org")
(synopsis "Molecular visualization system")
(description "PyMOL is a capable molecular viewer and renderer. It can be
used to prepare publication-quality figures, to share interactive results with
your colleagues, or to generate pre-rendered animations.")
(license license:bsd-3)))

View file

@ -58,6 +58,8 @@
#:use-module (gnu packages protobuf) #:use-module (gnu packages protobuf)
#:use-module (gnu packages pulseaudio) #:use-module (gnu packages pulseaudio)
#:use-module (gnu packages python) #:use-module (gnu packages python)
#:use-module (gnu packages python-web)
#:use-module (gnu packages python-xyz)
#:use-module (gnu packages regex) #:use-module (gnu packages regex)
#:use-module (gnu packages serialization) #:use-module (gnu packages serialization)
#:use-module (gnu packages speech) #:use-module (gnu packages speech)
@ -95,7 +97,6 @@
"third_party/angle/src/common/third_party/base" ;BSD-3 "third_party/angle/src/common/third_party/base" ;BSD-3
"third_party/angle/src/common/third_party/smhasher" ;Public domain "third_party/angle/src/common/third_party/smhasher" ;Public domain
"third_party/angle/src/common/third_party/xxhash" ;BSD-2 "third_party/angle/src/common/third_party/xxhash" ;BSD-2
"third_party/angle/src/third_party/compiler" ;BSD-2
"third_party/angle/src/third_party/libXNVCtrl" ;Expat "third_party/angle/src/third_party/libXNVCtrl" ;Expat
"third_party/angle/src/third_party/trace_event" ;BSD-3 "third_party/angle/src/third_party/trace_event" ;BSD-3
"third_party/angle/src/third_party/volk" ;Expat "third_party/angle/src/third_party/volk" ;Expat
@ -109,8 +110,6 @@
"third_party/catapult" ;BSD-3 "third_party/catapult" ;BSD-3
"third_party/catapult/common/py_vulcanize/third_party/rcssmin" ;ASL2.0 "third_party/catapult/common/py_vulcanize/third_party/rcssmin" ;ASL2.0
"third_party/catapult/common/py_vulcanize/third_party/rjsmin" ;ASL2.0 "third_party/catapult/common/py_vulcanize/third_party/rjsmin" ;ASL2.0
"third_party/catapult/third_party/beautifulsoup4" ;Expat
"third_party/catapult/third_party/html5lib-python" ;Expat
"third_party/catapult/third_party/polymer" ;BSD-3 "third_party/catapult/third_party/polymer" ;BSD-3
"third_party/catapult/third_party/six" ;Expat "third_party/catapult/third_party/six" ;Expat
;; XXX: This is a minified version of <https://d3js.org/>. ;; XXX: This is a minified version of <https://d3js.org/>.
@ -133,6 +132,7 @@
"third_party/cros_system_api" ;BSD-3 "third_party/cros_system_api" ;BSD-3
"third_party/dav1d" ;BSD-2 "third_party/dav1d" ;BSD-2
"third_party/dawn" ;ASL2.0 "third_party/dawn" ;ASL2.0
"third_party/dawn/third_party/tint"
"third_party/depot_tools/owners.py" ;BSD-3 "third_party/depot_tools/owners.py" ;BSD-3
"third_party/devtools-frontend" ;BSD-3 "third_party/devtools-frontend" ;BSD-3
"third_party/devtools-frontend/src/front_end/third_party/acorn" ;Expat "third_party/devtools-frontend/src/front_end/third_party/acorn" ;Expat
@ -249,6 +249,11 @@
"third_party/skia/third_party/skcms" ;BSD-3 "third_party/skia/third_party/skcms" ;BSD-3
"third_party/skia/third_party/vulkanmemoryallocator" ;BSD-3, Expat "third_party/skia/third_party/vulkanmemoryallocator" ;BSD-3, Expat
"third_party/smhasher" ;Expat, public domain "third_party/smhasher" ;Expat, public domain
;; FIXME: the snappy "replacement" shim (see replace_gn_files.py below) does
;; not declare a library dependency added in M93, causing a link failure.
"third_party/snappy" ;BSD-3
"third_party/speech-dispatcher" ;GPL2+ "third_party/speech-dispatcher" ;GPL2+
"third_party/sqlite" ;Public domain "third_party/sqlite" ;Public domain
"third_party/swiftshader" ;ASL2.0 "third_party/swiftshader" ;ASL2.0
@ -300,7 +305,6 @@
"third_party/zlib/google" ;BSD-3 "third_party/zlib/google" ;BSD-3
"third_party/zxcvbn-cpp" ;Expat "third_party/zxcvbn-cpp" ;Expat
"tools/grit/third_party/six" ;Expat
"url/third_party/mozilla" ;BSD-3, MPL1.1/GPL2+/LGPL2.1+ "url/third_party/mozilla" ;BSD-3, MPL1.1/GPL2+/LGPL2.1+
"v8/src/third_party/siphash" ;Public domain "v8/src/third_party/siphash" ;Public domain
"v8/src/third_party/utf8-decoder" ;Expat "v8/src/third_party/utf8-decoder" ;Expat
@ -314,6 +318,14 @@
;; run the Blink performance tests, just remove everything to save ~70MiB. ;; run the Blink performance tests, just remove everything to save ~70MiB.
'("third_party/blink/perf_tests")) '("third_party/blink/perf_tests"))
(define* (arch-patch name hash #:optional (revision %arch-revision))
(origin
(method url-fetch)
(uri (string-append "https://raw.githubusercontent.com/archlinux"
"/svntogit-packages/" revision "/trunk/" name))
(file-name (string-append "ungoogled-chromium-" name))
(sha256 (base32 hash))))
(define* (debian-patch name hash #:optional (revision %debian-revision)) (define* (debian-patch name hash #:optional (revision %debian-revision))
(origin (origin
(method url-fetch) (method url-fetch)
@ -324,17 +336,24 @@
(string-append "ungoogled-chromium-" category "-" name)))) (string-append "ungoogled-chromium-" category "-" name))))
(sha256 (base32 hash)))) (sha256 (base32 hash))))
(define %chromium-version "92.0.4515.159") (define %chromium-version "94.0.4606.81")
(define %ungoogled-revision "94.0.4606.81-1")
(define %arch-revision "db2157b84924ce84201a8245e68a02f7d55f6491")
(define %debian-revision "debian/90.0.4430.85-1") (define %debian-revision "debian/90.0.4430.85-1")
;; Note: use 'git describe --long' even for exact tags to placate the
;; custom version format for ungoogled-chromium. (define %arch-patches
(define %ungoogled-revision "92.0.4515.159-1-8-g8164c91") (list (arch-patch "chromium-94-ffmpeg-roll.patch"
"1kiskdjr9v3d491sq0wdjxliflh2vq5700gbygcixayj8gkvdb2n")
(arch-patch "replace-blacklist-with-ignorelist.patch"
"0ddvbyks7s8nijmg2nmirpwdv08dqx0z99sb6c1d4vlckfilnd6k")
(arch-patch "add-a-TODO-about-a-missing-pnacl-flag.patch"
"0mf4zn94ckd3vxzw441wka7ak4aajq1x33h4dqd78blgacba4gfm")
(arch-patch "use-ffile-compilation-dir.patch"
"0vk0vyxr55c716vkn4y4yhhrxb4zng4ni2y6fsz30pxbiz6i044j")))
(define %debian-patches (define %debian-patches
(list (debian-patch "fixes/nomerge.patch" (list (debian-patch "fixes/nomerge.patch"
"0lybs2b5gk08j8cr6vjrs9d3drd7qfw013z2r0y00by8dnpm74i3") "0lybs2b5gk08j8cr6vjrs9d3drd7qfw013z2r0y00by8dnpm74i3")
(debian-patch "system/nspr.patch"
"1gdirn1k1i841l8zp8xgr95kl16b5nx827am9rcxj8sfkm8hgkn3")
(debian-patch "system/zlib.patch" (debian-patch "system/zlib.patch"
"0j313bd3q8qc065j60x97dckrfgbwl4qxc8jhz33iihvv4lwziwv") "0j313bd3q8qc065j60x97dckrfgbwl4qxc8jhz33iihvv4lwziwv")
(debian-patch "system/openjpeg.patch" (debian-patch "system/openjpeg.patch"
@ -348,12 +367,18 @@
(file-name (git-file-name "ungoogled-chromium" %ungoogled-revision)) (file-name (git-file-name "ungoogled-chromium" %ungoogled-revision))
(sha256 (sha256
(base32 (base32
"0wbcbjzh5ak4nciahqw4yvxc4x8ik4x0iz9h4kfy0m011sxzy174")))) "113abybh8kkw9a92lj6jww6dl6rc1sv5x7a7a1gjwsihzd2r0cik"))))
(define %guix-patches (define %guix-patches
(list (local-file (list (local-file
(assume-valid-file-name (assume-valid-file-name
(search-patch "ungoogled-chromium-extension-search-path.patch"))))) (search-patch "ungoogled-chromium-extension-search-path.patch")))
(local-file
(assume-valid-file-name
(search-patch "ungoogled-chromium-ffmpeg-compat.patch")))
(local-file
(assume-valid-file-name
(search-patch "ungoogled-chromium-system-nspr.patch")))))
;; This is a source 'snippet' that does the following: ;; This is a source 'snippet' that does the following:
;; *) Applies various patches for unbundling purposes and libstdc++ compatibility. ;; *) Applies various patches for unbundling purposes and libstdc++ compatibility.
@ -378,6 +403,13 @@
patch "--no-backup-if-mismatch")) patch "--no-backup-if-mismatch"))
(append '#+%debian-patches '#+%guix-patches)) (append '#+%debian-patches '#+%guix-patches))
;; These patches are "reversed"; i.e. they represent changes
;; already present in the source, but which should be reverted.
(for-each (lambda (patch)
(invoke "patch" "-Rp1" "--force" "--input"
patch "--no-backup-if-mismatch"))
'#$%arch-patches)
(with-directory-excursion #+%ungoogled-origin (with-directory-excursion #+%ungoogled-origin
(format #t "Ungooglifying...~%") (format #t "Ungooglifying...~%")
(force-output) (force-output)
@ -397,7 +429,7 @@
(format #t "Pruning third party files...~%") (format #t "Pruning third party files...~%")
(force-output) (force-output)
(apply invoke (string-append #+python-2 "/bin/python") (apply invoke "python"
"build/linux/unbundle/remove_bundled_libraries.py" "build/linux/unbundle/remove_bundled_libraries.py"
"--do-remove" '#$%preserved-third-party-files) "--do-remove" '#$%preserved-third-party-files)
@ -414,7 +446,7 @@
"--system-libraries" "ffmpeg" "flac" "fontconfig" "--system-libraries" "ffmpeg" "flac" "fontconfig"
"freetype" "harfbuzz-ng" "icu" "libdrm" "libevent" "freetype" "harfbuzz-ng" "icu" "libdrm" "libevent"
"libjpeg" "libpng" "libwebp" "libxml" "libxslt" "libjpeg" "libpng" "libwebp" "libxml" "libxslt"
"openh264" "opus" "snappy" "zlib"))))) "openh264" "opus" "zlib")))))
(define opus+custom (define opus+custom
(package/inherit opus (package/inherit opus
@ -428,22 +460,6 @@
`(cons "--enable-custom-modes" `(cons "--enable-custom-modes"
,flags)))))) ,flags))))))
;; WebRTC in Chromium 88 requires an unreleased version of libvpx. Use the
;; commit mentioned in "third_party/libvpx/README.chromium".
(define libvpx/chromium
(package
(inherit libvpx)
(version "1.9.0-147-g61edec1ef")
(source (origin
(inherit (package-source libvpx))
(uri (git-reference
(url "https://chromium.googlesource.com/webm/libvpx")
(commit (string-append "v" version))))
(file-name (git-file-name "libvpx" version))
(sha256
(base32
"0mw13y7j2lg8jj3alm9367c3b40b6s218fdz3nn1m2k85c78wzr7"))))))
;; 'make-ld-wrapper' can only work with an 'ld' executable, so we need ;; 'make-ld-wrapper' can only work with an 'ld' executable, so we need
;; this trick to make it wrap 'lld'. ;; this trick to make it wrap 'lld'.
(define (make-lld-wrapper lld) (define (make-lld-wrapper lld)
@ -472,10 +488,12 @@
(define-public ungoogled-chromium (define-public ungoogled-chromium
(package (package
(name "ungoogled-chromium") (name "ungoogled-chromium")
(version (string-append %chromium-version "-0." (version (if (string-prefix? %chromium-version %ungoogled-revision)
(match (string-split %ungoogled-revision #\-) %ungoogled-revision
((version revision commits g+short) ;; ungoogled-chromium version tags always have a "-1" suffix,
(string-drop g+short 1))))) ;; so we can hijack "-0" in cases where the Chromium source
;; is newer than the latest available tag.
(string-append %chromium-version "-0")))
(synopsis "Graphical web browser") (synopsis "Graphical web browser")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
@ -484,7 +502,7 @@
%chromium-version ".tar.xz")) %chromium-version ".tar.xz"))
(sha256 (sha256
(base32 (base32
"04gxgimg5ygzx6nvfws5y9dppdfjg1fhyl8zbykmksbh1myk6zfr")) "16755mfqxxmvslm9ix060safrnml91ckj5p85960jj5g5hmslwbh"))
(modules '((guix build utils))) (modules '((guix build utils)))
(snippet (force ungoogled-chromium-snippet)))) (snippet (force ungoogled-chromium-snippet))))
(build-system gnu-build-system) (build-system gnu-build-system)
@ -506,6 +524,8 @@
;; a developer build. ;; a developer build.
"is_official_build=true" "is_official_build=true"
"clang_use_chrome_plugins=false" "clang_use_chrome_plugins=false"
"is_cfi=false" ;requires Clang 13
"use_thin_lto=false" ;XXX ICE with Clang+LLD 12.0.1
"chrome_pgo_phase=0" "chrome_pgo_phase=0"
"use_sysroot=false" "use_sysroot=false"
"goma_dir=\"\"" "goma_dir=\"\""
@ -514,7 +534,7 @@
"use_unofficial_version_number=false" "use_unofficial_version_number=false"
"treat_warnings_as_errors=false" "treat_warnings_as_errors=false"
"use_official_google_api_keys=false" "use_official_google_api_keys=false"
"fieldtrial_testing_like_official_build=true" "disable_fieldtrial_testing_config=true"
"safe_browsing_mode=0" "safe_browsing_mode=0"
"enable_mdns=false" "enable_mdns=false"
"enable_one_click_signin=false" "enable_one_click_signin=false"
@ -529,6 +549,8 @@
;; Disable code using TensorFlow until it has been scrutinized ;; Disable code using TensorFlow until it has been scrutinized
;; by the ungoogled project. ;; by the ungoogled project.
"build_with_tflite_lib=false" "build_with_tflite_lib=false"
;; Avoid dependency on code formatting tools.
"blink_enable_generated_code_formatting=false"
;; Define a custom toolchain that simply looks up CC, AR and ;; Define a custom toolchain that simply looks up CC, AR and
;; friends from the environment. ;; friends from the environment.
@ -823,21 +845,20 @@
'("24" "48" "64" "128" "256"))))))))) '("24" "48" "64" "128" "256")))))))))
(native-inputs (native-inputs
`(("bison" ,bison) `(("bison" ,bison)
("clang" ,clang-11) ("clang" ,clang-12)
("gn" ,gn) ("gn" ,gn)
("gperf" ,gperf) ("gperf" ,gperf)
("ld-wrapper" ,(make-lld-wrapper lld)) ("ld-wrapper" ,(make-lld-wrapper lld))
("ninja" ,ninja) ("ninja" ,ninja)
("node" ,node) ("node" ,node-lts)
("pkg-config" ,pkg-config) ("pkg-config" ,pkg-config)
("which" ,which) ("which" ,which)
;; This file contains defaults for new user profiles. ;; This file contains defaults for new user profiles.
("master-preferences" ,(local-file "aux-files/chromium/master-preferences.json")) ("master-preferences" ,(local-file "aux-files/chromium/master-preferences.json"))
;; Try unbundling these when upstream has completed its Python 3 transition. ("python-beautifulsoup4" ,python-beautifulsoup4)
;; ("python-beautifulsoup4" ,python-beautifulsoup4) ("python-html5lib" ,python-html5lib)
;; ("python-html5lib" ,python-html5lib)
("python2" ,python-2)
("python" ,python-wrapper) ("python" ,python-wrapper)
("wayland-scanner" ,wayland))) ("wayland-scanner" ,wayland)))
(inputs (inputs
@ -854,7 +875,7 @@
("gdk-pixbuf" ,gdk-pixbuf) ("gdk-pixbuf" ,gdk-pixbuf)
("glib" ,glib) ("glib" ,glib)
("gtk+" ,gtk+) ("gtk+" ,gtk+)
("harfbuzz" ,harfbuzz) ("harfbuzz" ,harfbuzz-3.0)
("icu4c" ,icu4c) ("icu4c" ,icu4c)
("lcms" ,lcms) ("lcms" ,lcms)
("libevent" ,libevent) ("libevent" ,libevent)
@ -862,7 +883,7 @@
("libjpeg-turbo" ,libjpeg-turbo) ("libjpeg-turbo" ,libjpeg-turbo)
("libpng" ,libpng) ("libpng" ,libpng)
("libva" ,libva) ("libva" ,libva)
("libvpx" ,libvpx/chromium) ("libvpx" ,libvpx)
("libwebp" ,libwebp) ("libwebp" ,libwebp)
("libx11" ,libx11) ("libx11" ,libx11)
("libxcb" ,libxcb) ("libxcb" ,libxcb)
@ -915,7 +936,9 @@
(home-page "https://github.com/Eloston/ungoogled-chromium") (home-page "https://github.com/Eloston/ungoogled-chromium")
(description (description
"Ungoogled-Chromium is the Chromium web browser, with some functionality "Ungoogled-Chromium is the Chromium web browser, with some functionality
disabled in order to protect the users privacy.") disabled in order to protect the users privacy. This package also includes
the @command{chromedriver} command, which can be useful for automated web
testing.")
;; Chromium is developed as BSD-3, but bundles a large number of third-party ;; Chromium is developed as BSD-3, but bundles a large number of third-party
;; components with other licenses. For full information, see chrome://credits. ;; components with other licenses. For full information, see chrome://credits.
(license (list license:bsd-3 (license (list license:bsd-3

View file

@ -38,7 +38,6 @@
#:use-module (gnu packages guile) #:use-module (gnu packages guile)
#:use-module (gnu packages guile-xyz) #:use-module (gnu packages guile-xyz)
#:use-module (gnu packages gnupg) #:use-module (gnu packages gnupg)
#:use-module (gnu packages lisp-xyz)
#:use-module (gnu packages mail) #:use-module (gnu packages mail)
#:use-module (gnu packages package-management) #:use-module (gnu packages package-management)
#:use-module (gnu packages perl) #:use-module (gnu packages perl)
@ -48,6 +47,7 @@
#:use-module (gnu packages sqlite) #:use-module (gnu packages sqlite)
#:use-module (gnu packages tls) #:use-module (gnu packages tls)
#:use-module (gnu packages texinfo) #:use-module (gnu packages texinfo)
#:use-module (gnu packages uglifyjs)
#:use-module (gnu packages version-control) #:use-module (gnu packages version-control)
#:use-module (gnu packages web) #:use-module (gnu packages web)
#:use-module (gnu packages xml) #:use-module (gnu packages xml)
@ -252,7 +252,7 @@ intended as a replacement for Hydra.")
(let* ((file (let* ((file
(assoc-ref inputs (string-append name ".js"))) (assoc-ref inputs (string-append name ".js")))
(port (port
(open-pipe* OPEN_READ "uglify-js" file)) (open-pipe* OPEN_READ "uglifyjs" file))
(destination (destination
(string-append (string-append
"../build/js/" name ".min.js"))) "../build/js/" name ".min.js")))
@ -263,7 +263,7 @@ intended as a replacement for Hydra.")
(let ((exit (close-pipe port))) (let ((exit (close-pipe port)))
(unless (zero? exit) (unless (zero? exit)
(error "uglify-js failed" exit))))) (error "uglifyjs failed" exit)))))
'("vue" '("vue"
"vue-router" "vue-router"
@ -282,7 +282,7 @@ intended as a replacement for Hydra.")
("zlib" ,zlib))) ("zlib" ,zlib)))
(native-inputs (native-inputs
`(("googletest" ,googletest) `(("googletest" ,googletest)
("uglify-js" ,uglify-js) ("uglifyjs" ,node-uglify-js)
("vue.js" ("vue.js"
,(origin (method url-fetch) ,(origin (method url-fetch)

View file

@ -28,6 +28,7 @@
#:use-module (guix packages) #:use-module (guix packages)
#:use-module (gnu packages autotools) #:use-module (gnu packages autotools)
#:use-module (gnu packages check) #:use-module (gnu packages check)
#:use-module (gnu packages compression)
#:use-module (gnu packages flex) #:use-module (gnu packages flex)
#:use-module (gnu packages gettext) #:use-module (gnu packages gettext)
#:use-module (gnu packages libevent) #:use-module (gnu packages libevent)
@ -41,26 +42,21 @@
(define-public drbd-utils (define-public drbd-utils
(package (package
(name "drbd-utils") (name "drbd-utils")
(version "9.15.1") (version "9.19.0")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
;; Older releases are moved to /archive. List it first because in (uri (list (string-append "https://pkg.linbit.com/downloads/drbd"
;; practice this URL will be the most current (e.g. time-machine).
(uri (list (string-append "https://www.linbit.com/downloads/drbd"
"/utils/archive/drbd-utils-" version
".tar.gz")
(string-append "https://www.linbit.com/downloads/drbd"
"/utils/drbd-utils-" version ".tar.gz"))) "/utils/drbd-utils-" version ".tar.gz")))
(sha256 (sha256
(base32 (base32
"1q92bwnprqkkj9iy6fxcybcfpxvvjw5clis0igrbxqnq869kwp1i")) "1bbw91hil55d2047r2bdhx2daxc1wqysra2qqm77iy1hcvnvy9rq"))
(modules '((guix build utils))) (modules '((guix build utils)))
(snippet (snippet
'(begin '(begin
(substitute* "scripts/global_common.conf" (substitute* "scripts/global_common.conf"
;; Do not participate in usage count survey by default. ;; Do not participate in usage count survey by default.
(("usage-count: yes") (("usage-count yes")
"usage-count: no")) "usage-count no"))
(substitute* "scripts/Makefile.in" (substitute* "scripts/Makefile.in"
;; Install the Pacemaker resource agents to the libdir, ;; Install the Pacemaker resource agents to the libdir,
;; regardless of what the OCF specification says... ;; regardless of what the OCF specification says...
@ -85,6 +81,7 @@
"--sysconfdir=/etc" "--sysconfdir=/etc"
"--localstatedir=/var") "--localstatedir=/var")
#:test-target "test" #:test-target "test"
#:make-flags '("WANT_DRBD_REPRODUCIBLE_BUILD=yesplease")
#:phases #:phases
(modify-phases %standard-phases (modify-phases %standard-phases
(add-after 'patch-generated-file-shebangs 'patch-documentation (add-after 'patch-generated-file-shebangs 'patch-documentation
@ -188,7 +185,7 @@ independently or together to provide resilient infrastructures.")
(define-public libraft (define-public libraft
(package (package
(name "libraft") (name "libraft")
(version "0.10.1") (version "0.11.2")
(home-page "https://github.com/canonical/raft") (home-page "https://github.com/canonical/raft")
(source (origin (source (origin
(method git-fetch) (method git-fetch)
@ -197,7 +194,7 @@ independently or together to provide resilient infrastructures.")
(file-name (git-file-name name version)) (file-name (git-file-name name version))
(sha256 (sha256
(base32 (base32
"18idj53vnl5fx1ja1zlp8kiwmdxgwjxsi88rdql0pbh0484b92a3")))) "050dwy34jh8dihfwfm0r1by2i3sy9crapipp9idw32idm79y4izb"))))
(arguments '(#:configure-flags '("--enable-uv") (arguments '(#:configure-flags '("--enable-uv")
#:phases #:phases
(modify-phases %standard-phases (modify-phases %standard-phases
@ -207,7 +204,8 @@ independently or together to provide resilient infrastructures.")
((".*test_uv_append.c.*") "")) ((".*test_uv_append.c.*") ""))
#t))))) #t)))))
(inputs (inputs
`(("libuv" ,libuv))) `(("libuv" ,libuv)
("lz4" ,lz4)))
(native-inputs (native-inputs
`(("autoconf" ,autoconf) `(("autoconf" ,autoconf)
("automake" ,automake) ("automake" ,automake)
@ -226,7 +224,7 @@ snapshots).")
(define-public libdqlite (define-public libdqlite
(package (package
(name "libdqlite") (name "libdqlite")
(version "1.7.0") (version "1.9.0")
(home-page "https://github.com/canonical/dqlite") (home-page "https://github.com/canonical/dqlite")
(source (origin (source (origin
(method git-fetch) (method git-fetch)
@ -235,7 +233,7 @@ snapshots).")
(file-name (git-file-name name version)) (file-name (git-file-name name version))
(sha256 (sha256
(base32 (base32
"15cg8yl3n7lcg0qyg0byciz8v6y200ghmzzkwpdzggy3m6c168wl")))) "0zalsvr0vy7632nhm96a29lrfy18iqsmbxpyz2lvq80mrjlbrzsn"))))
(arguments (arguments
'(#:phases '(#:phases
(modify-phases %standard-phases (modify-phases %standard-phases

View file

@ -1,6 +1,6 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013, 2015, 2018, 2020, 2021 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2013, 2015, 2018, 2020, 2021 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2015 Andreas Enge <andreas@enge.fr> ;;; Copyright © 2013, 2015 Andreas Enge <andreas@enge.fr>
;;; Copyright © 2015, 2018 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2015, 2018 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2016, 2017, 2019, 2020, 2021 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2016, 2017, 2019, 2020, 2021 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
@ -9,7 +9,6 @@
;;; Copyright © 2018 Fis Trivial <ybbs.daans@hotmail.com> ;;; Copyright © 2018 Fis Trivial <ybbs.daans@hotmail.com>
;;; Copyright © 2018 Pierre Neidhardt <mail@ambrevar.xyz> ;;; Copyright © 2018 Pierre Neidhardt <mail@ambrevar.xyz>
;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org> ;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
;;; Copyright © 2013 Andreas Enge <andreas@enge.fr>
;;; Copyright © 2014 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2019 Hartmut Goebel <h.goebel@goebel-consult.de> ;;; Copyright © 2019 Hartmut Goebel <h.goebel@goebel-consult.de>
;;; Copyright © 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com> ;;; Copyright © 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com>

View file

@ -910,7 +910,7 @@ This package allows you to create and extract such file systems.")
(define-public squashfs-tools-ng (define-public squashfs-tools-ng
(package (package
(name "squashfs-tools-ng") (name "squashfs-tools-ng")
(version "1.1.2") (version "1.1.3")
(source (source
(origin (origin
(method git-fetch) (method git-fetch)
@ -919,7 +919,7 @@ This package allows you to create and extract such file systems.")
(commit (string-append "v" version)))) (commit (string-append "v" version))))
(file-name (git-file-name name version)) (file-name (git-file-name name version))
(sha256 (sha256
(base32 "13gx6mc57wjjnrpnkb74zi2wiqazz2q715y1zz7rff02wh1vb5k9")) (base32 "12ipqmjp10574sz64ls8qbgzkxz5dcbzk0l2fxyh2yrrhnjp34mi"))
(modules '((guix build utils))) (modules '((guix build utils)))
(snippet (snippet
'(begin '(begin
@ -2240,7 +2240,7 @@ libraries by around 50%--70%, thus reducing disk space, network load times,
download times, and other distribution and storage costs.") download times, and other distribution and storage costs.")
(license license:gpl2+))) (license license:gpl2+)))
(define-public quazip (define-public quazip-0
(package (package
(name "quazip") (name "quazip")
(version "0.9.1") (version "0.9.1")
@ -2277,6 +2277,21 @@ reading from and writing to ZIP archives. ")
;; distributed under zlib terms. ;; distributed under zlib terms.
(license (list license:lgpl2.1+ license:zlib)))) (license (list license:lgpl2.1+ license:zlib))))
(define-public quazip
(package
(inherit quazip-0)
(name "quazip")
(version "1.1")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/stachenov/quazip")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32 "06srglrj6jvy5ngmidlgx03i0d5w91yhi7sf846wql00v8rvhc5h"))))))
(define-public zchunk (define-public zchunk
(package (package
(name "zchunk") (name "zchunk")
@ -2430,7 +2445,7 @@ possibly untrusted extraction shell script.")
(define-public ncompress (define-public ncompress
(package (package
(name "ncompress") (name "ncompress")
(version "4.2.4.6") (version "5.0")
(source (origin (source (origin
(method git-fetch) (method git-fetch)
(uri (git-reference (uri (git-reference
@ -2440,13 +2455,13 @@ possibly untrusted extraction shell script.")
(file-name (string-append name "-" version ".tar.gz")) (file-name (string-append name "-" version ".tar.gz"))
(sha256 (sha256
(base32 (base32
"1a4yir1ilafz0nzxdwigj204j4yy2zljbc501nsaqqm3dxdap8zn")))) "090kksxrlqnsdc76fzz2j2ajc98mhmfwyn163ca2ia9niqmlpcm0"))))
(arguments (arguments
'(#:make-flags (list "CC=gcc" `(#:make-flags (list (string-append "CC=" ,(cc-for-target))
(string-append "BINDIR=" %output "/bin") (string-append "BINDIR=" %output "/bin")
(string-append "MANDIR=" %output "/share/man/man1")) (string-append "MANDIR=" %output "/share/man/man1"))
#:phases (modify-phases %standard-phases #:phases (modify-phases %standard-phases
(delete 'configure)))) (delete 'configure)))) ; no configure script
(build-system gnu-build-system) (build-system gnu-build-system)
(home-page "https://github.com/vapier/ncompress/") (home-page "https://github.com/vapier/ncompress/")
(synopsis "Original Lempel-Ziv compress/uncompress programs") (synopsis "Original Lempel-Ziv compress/uncompress programs")

View file

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2020 Leo Prikler <leo.prikler@student.tugraz.at> ;;; Copyright © 2020 Liliana Marie Prikler <liliana.prikler@gmail.com>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;

View file

@ -79,6 +79,7 @@
(arguments (arguments
`(#:package "coq" `(#:package "coq"
#:test-target "test-suite")) #:test-target "test-suite"))
(properties '((upstream-name . "coq"))) ; for inherited packages
(home-page "https://coq.inria.fr") (home-page "https://coq.inria.fr")
(synopsis "Proof assistant for higher-order logic") (synopsis "Proof assistant for higher-order logic")
(description (description

View file

@ -6,7 +6,7 @@
;;; Copyright © 2019, 2020 Mathieu Othacehe <m.othacehe@gmail.com> ;;; Copyright © 2019, 2020 Mathieu Othacehe <m.othacehe@gmail.com>
;;; Copyright © 2019 Pierre Neidhardt <mail@ambrevar.xyz> ;;; Copyright © 2019 Pierre Neidhardt <mail@ambrevar.xyz>
;;; Copyright © 2019 Jan Wielkiewicz <tona_kosmicznego_smiecia@interia.pl> ;;; Copyright © 2019 Jan Wielkiewicz <tona_kosmicznego_smiecia@interia.pl>
;;; Copyright © 2020 Nicolò Balzarotti <nicolo@nixo.xyz> ;;; Copyright © 2020, 2021 Nicolò Balzarotti <nicolo@nixo.xyz>
;;; Copyright © 2020 Roel Janssen <roel@gnu.org> ;;; Copyright © 2020 Roel Janssen <roel@gnu.org>
;;; Copyright © 2020 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2020 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2020 Brice Waegeneire <brice@waegenei.re> ;;; Copyright © 2020 Brice Waegeneire <brice@waegenei.re>
@ -150,7 +150,7 @@ use by the C++ Core Guidelines maintained by the Standard C++ Foundation.")
(define-public libzen (define-public libzen
(package (package
(name "libzen") (name "libzen")
(version "0.4.38") (version "0.4.39")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
;; Warning: This source has proved unreliable 1 time at least. ;; Warning: This source has proved unreliable 1 time at least.
@ -161,7 +161,7 @@ use by the C++ Core Guidelines maintained by the Standard C++ Foundation.")
"libzen_" version ".tar.bz2")) "libzen_" version ".tar.bz2"))
(sha256 (sha256
(base32 (base32
"1nkygc17sndznpcf71fdrhwpm8z9a3hc9csqlafwswh49axhfkjr")))) "1rwaxmid9iv65n0y6xlcyxxydsvihjni9ldxpg6pbqz43amp49xx"))))
(native-inputs (native-inputs
`(("autoconf" ,autoconf) `(("autoconf" ,autoconf)
("automake" ,automake) ("automake" ,automake)
@ -173,8 +173,7 @@ use by the C++ Core Guidelines maintained by the Standard C++ Foundation.")
(modify-phases %standard-phases (modify-phases %standard-phases
(add-after 'unpack 'pre-configure (add-after 'unpack 'pre-configure
(lambda _ (lambda _
(chdir "Project/GNU/Library") (chdir "Project/GNU/Library"))))))
#t)))))
(home-page "https://github.com/MediaArea/ZenLib") (home-page "https://github.com/MediaArea/ZenLib")
(synopsis "C++ utility library") (synopsis "C++ utility library")
(description "ZenLib is a C++ utility library. It includes classes for handling (description "ZenLib is a C++ utility library. It includes classes for handling
@ -840,7 +839,7 @@ standard GNU style syntax for options.")
(define-public folly (define-public folly
(package (package
(name "folly") (name "folly")
(version "2021.04.26.00") (version "2021.10.04.00")
(source (origin (source (origin
(method git-fetch) (method git-fetch)
(uri (git-reference (uri (git-reference
@ -849,7 +848,7 @@ standard GNU style syntax for options.")
(file-name (git-file-name name version)) (file-name (git-file-name name version))
(sha256 (sha256
(base32 (base32
"0s3jb02qjl9f4gfj01pa01cilkfpc4p0gbpn6bg5vcicyj76garg")))) "1h7apl42idymqra0xgw7s5ys3dxrqd8gq0f99g048k4g5fxl64s9"))))
(build-system cmake-build-system) (build-system cmake-build-system)
(arguments (arguments
'(;; Tests must be explicitly enabled '(;; Tests must be explicitly enabled
@ -1034,7 +1033,7 @@ feature set with a simple and intuitive interface.")
(define-public caf (define-public caf
(package (package
(name "caf") (name "caf")
(version "0.18.0") (version "0.18.5")
(source (origin (source (origin
(method git-fetch) (method git-fetch)
(uri (git-reference (uri (git-reference
@ -1043,7 +1042,7 @@ feature set with a simple and intuitive interface.")
(file-name (git-file-name name version)) (file-name (git-file-name name version))
(sha256 (sha256
(base32 (base32
"1c3spd6vm1h9qhlk5c4fdwi6nbqx5vwz2zvv6qp0rj1hx6xpq3cx")))) "04b4kjisb5wzq6pilh8xzbxn7qcjgppl8k65hfv0zi0ja8fyp1xk"))))
(build-system cmake-build-system) (build-system cmake-build-system)
(arguments (arguments
'(#:configure-flags '(#:configure-flags
@ -1058,8 +1057,8 @@ computation.")
(license license:bsd-3))) (license license:bsd-3)))
(define-public pcg-cpp (define-public pcg-cpp
(let ((commit "5b5cac8d61339e810c5dbb4692d868a1d7ca1b2d") (let ((commit "ffd522e7188bef30a00c74dc7eb9de5faff90092")
(revision "1")) (revision "2"))
(package (package
(name "pcg-cpp") (name "pcg-cpp")
(version (git-version "0.98.1" revision commit)) (version (git-version "0.98.1" revision commit))
@ -1071,7 +1070,7 @@ computation.")
(file-name (git-file-name name version)) (file-name (git-file-name name version))
(sha256 (sha256
(base32 (base32
"1s9dcd4iydlc1xj9m6f7c52nlyx99klk043sk7arqy6kp7gdaa33")))) "0yxyqaphcc38zilpwpmssrl8ly1v6dimscqk2f4rcv1h22dinnqx"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
`(#:test-target "test" `(#:test-target "test"

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -173,7 +173,7 @@ communication, encryption, decryption, signatures, etc.")
(define-public libmd (define-public libmd
(package (package
(name "libmd") (name "libmd")
(version "1.0.3") (version "1.0.4")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (uri
@ -184,8 +184,11 @@ communication, encryption, decryption, signatures, etc.")
version ".tar.xz"))) version ".tar.xz")))
(sha256 (sha256
(base32 (base32
"0jmga8y94h857ilra3qjaiax3wd5pd6mx1h120zhl9fcjmzhj0js")))) "03skgv013v0y9hxh6j143xdwynb5cmbmbdylvvgfsjz38889477m"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments
`(#:configure-flags
(list "--disable-static")))
(synopsis "Message Digest functions from BSD systems") (synopsis "Message Digest functions from BSD systems")
(description (description
"The currently provided message digest algorithms are: "The currently provided message digest algorithms are:

View file

@ -502,14 +502,14 @@ should only be used as part of the Guix cups-pk-helper service.")
(define-public hplip (define-public hplip
(package (package
(name "hplip") (name "hplip")
(version "3.21.6") (version "3.21.8")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "mirror://sourceforge/hplip/hplip/" version (uri (string-append "mirror://sourceforge/hplip/hplip/" version
"/hplip-" version ".tar.gz")) "/hplip-" version ".tar.gz"))
(sha256 (sha256
(base32 (base32
"1jkvbq64pxn5rg25pk13xwn5xr2bn0sa95yvh2q4ys0kv79n0cyc")) "076fjzgw86q817c660h1vzwdp00cyjr49b9bfi7qkhphq6am4gpi"))
(modules '((guix build utils))) (modules '((guix build utils)))
(snippet (snippet
'(begin '(begin

View file

@ -70,7 +70,7 @@
(lambda _ (invoke "qmake")))))) (lambda _ (invoke "qmake"))))))
(inputs (inputs
`(("qtbase" ,qtbase-5) `(("qtbase" ,qtbase-5)
("quazip" ,quazip) ("quazip" ,quazip-0)
("zlib" ,zlib))) ("zlib" ,zlib)))
(home-page "https://cvassistant.sourceforge.io/") (home-page "https://cvassistant.sourceforge.io/")
(synopsis "Job application organizer") (synopsis "Job application organizer")

View file

@ -35,13 +35,13 @@
(define-public ropgadget (define-public ropgadget
(package (package
(name "ropgadget") (name "ropgadget")
(version "6.5") (version "6.6")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (pypi-uri "ROPGadget" version)) (uri (pypi-uri "ROPGadget" version))
(sha256 (sha256
(base32 "0p4h8xi27xcicz8sq6xi40hbj99mcsnnla6ar2r17vqapbr5c3jc")))) (base32 "08ms7x4af07970ij9899l75sghnxsa7xyx73gkn6gv0l05p1hqfw"))))
(build-system python-build-system) (build-system python-build-system)
(propagated-inputs (propagated-inputs
`(("python-capstone" ,python-capstone))) `(("python-capstone" ,python-capstone)))

View file

@ -27,7 +27,7 @@
;;; Copyright © 2017, 2018 Alex Vong <alexvong1995@gmail.com> ;;; Copyright © 2017, 2018 Alex Vong <alexvong1995@gmail.com>
;;; Copyright © 2017, 2018 Ben Woodcroft <donttrustben@gmail.com> ;;; Copyright © 2017, 2018 Ben Woodcroft <donttrustben@gmail.com>
;;; Copyright © 2017 Rutger Helling <rhelling@mykolab.com> ;;; Copyright © 2017 Rutger Helling <rhelling@mykolab.com>
;;; Copyright © 2017, 2018 Pierre Langlois <pierre.langlois@gmx.com> ;;; Copyright © 2017, 2018, 2019 Pierre Langlois <pierre.langlois@gmx.com>
;;; Copyright © 2015, 2017, 2018, 2019, 2021 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2015, 2017, 2018, 2019, 2021 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2017 Kristofer Buffington <kristoferbuffington@gmail.com> ;;; Copyright © 2017 Kristofer Buffington <kristoferbuffington@gmail.com>
;;; Copyright © 2018 Amirouche Boubekki <amirouche@hypermove.net> ;;; Copyright © 2018 Amirouche Boubekki <amirouche@hypermove.net>
@ -36,7 +36,6 @@
;;; Copyright © 2019 Jack Hill <jackhill@jackhill.us> ;;; Copyright © 2019 Jack Hill <jackhill@jackhill.us>
;;; Copyright © 2019 Alex Griffin <a@ajgrf.com> ;;; Copyright © 2019 Alex Griffin <a@ajgrf.com>
;;; Copyright © 2019 Gábor Boskovits <boskovits@gmail.com> ;;; Copyright © 2019 Gábor Boskovits <boskovits@gmail.com>
;;; Copyright © 2019 Pierre Langlois <pierre.langlois@gmx.com>
;;; Copyright © 2019, 2021 Guillaume Le Vaillant <glv@posteo.net> ;;; Copyright © 2019, 2021 Guillaume Le Vaillant <glv@posteo.net>
;;; Copyright © 2020 Pierre Neidhardt <mail@ambrevar.xyz> ;;; Copyright © 2020 Pierre Neidhardt <mail@ambrevar.xyz>
;;; Copyright © 2020, 2021 Nicolò Balzarotti <nicolo@nixo.xyz> ;;; Copyright © 2020, 2021 Nicolò Balzarotti <nicolo@nixo.xyz>
@ -53,6 +52,7 @@
;;; Copyright © 2021 Bonface Munyoki Kilyungi <me@bonfacemunyoki.com> ;;; Copyright © 2021 Bonface Munyoki Kilyungi <me@bonfacemunyoki.com>
;;; Copyright © 2021 Simon Streit <simon@netpanic.org> ;;; Copyright © 2021 Simon Streit <simon@netpanic.org>
;;; Copyright © 2021 Alexandre Hannud Abdo <abdo@member.fsf.org> ;;; Copyright © 2021 Alexandre Hannud Abdo <abdo@member.fsf.org>
;;; Copyright © 2021 Simon Tournier <zimon.toutoune@gmail.com>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -90,6 +90,7 @@
#:use-module (gnu packages emacs) #:use-module (gnu packages emacs)
#:use-module (gnu packages flex) #:use-module (gnu packages flex)
#:use-module (gnu packages freedesktop) #:use-module (gnu packages freedesktop)
#:use-module (gnu packages gawk)
#:use-module (gnu packages gcc) #:use-module (gnu packages gcc)
#:use-module (gnu packages gettext) #:use-module (gnu packages gettext)
#:use-module (gnu packages glib) #:use-module (gnu packages glib)
@ -489,14 +490,14 @@ mapping from string keys to string values.")
(define-public memcached (define-public memcached
(package (package
(name "memcached") (name "memcached")
(version "1.6.9") (version "1.6.12")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (string-append (uri (string-append
"https://memcached.org/files/memcached-" version ".tar.gz")) "https://memcached.org/files/memcached-" version ".tar.gz"))
(sha256 (sha256
(base32 "1lcjy1b9krnb2gk72qd1fvivlfiyfvknfi3wngyvyk9ifzijr9nm")))) (base32 "0ii3z2mhjrimc6mv5z5x6bwp1s2bbzppja4m3pnmd5zgh9gs74gj"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(inputs (inputs
`(("libevent" ,libevent) `(("libevent" ,libevent)
@ -695,6 +696,29 @@ auto-completion and syntax highlighting.")
(for-each delete-file (for-each delete-file
(find-files (string-append out "/bin") (find-files (string-append out "/bin")
"_embedded$")) "_embedded$"))
#t)))
(add-after
'install 'wrap-mysql_helpers
(lambda* (#:key inputs outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(bin (string-append out "/bin"))
(awk (assoc-ref inputs "gawk"))
(coreutils (assoc-ref inputs "coreutils"))
(grep (assoc-ref inputs "grep"))
(ps (assoc-ref inputs "procps"))
(sed (assoc-ref inputs "sed")))
(wrap-program (string-append bin "/mysql_config")
`("PATH" ":" suffix
(,(string-append awk "/bin")
,(string-append coreutils "/bin")
,(string-append sed "/bin"))))
(wrap-program (string-append bin "/mysqld_safe")
`("PATH" ":" suffix
(,(string-append awk "/bin")
,(string-append coreutils "/bin")
,(string-append grep "/bin")
,(string-append ps "/bin")
,(string-append sed "/bin"))))
#t)))))) #t))))))
(native-inputs (native-inputs
`(("bison" ,bison) `(("bison" ,bison)
@ -702,11 +726,16 @@ auto-completion and syntax highlighting.")
("pkg-config" ,pkg-config))) ("pkg-config" ,pkg-config)))
(inputs (inputs
`(("boost" ,boost-for-mysql) `(("boost" ,boost-for-mysql)
("coreutils" ,coreutils)
("gawk" ,gawk)
("grep" ,grep)
("libaio" ,libaio) ("libaio" ,libaio)
("libtirpc" ,libtirpc) ("libtirpc" ,libtirpc)
("ncurses" ,ncurses) ("ncurses" ,ncurses)
("openssl" ,openssl) ("openssl" ,openssl)
("procps" ,procps)
("rpcsvc-proto" ,rpcsvc-proto) ; rpcgen ("rpcsvc-proto" ,rpcsvc-proto) ; rpcgen
("sed" ,sed)
("zlib" ,zlib))) ("zlib" ,zlib)))
(home-page "https://www.mysql.com/") (home-page "https://www.mysql.com/")
(synopsis "Fast, easy to use, and popular database") (synopsis "Fast, easy to use, and popular database")
@ -2173,19 +2202,18 @@ similar to BerkeleyDB, LevelDB, etc.")
(define-public redis (define-public redis
(package (package
(name "redis") (name "redis")
(version "6.2.4") (version "6.2.6")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "http://download.redis.io/releases/redis-" (uri (string-append "http://download.redis.io/releases/redis-"
version".tar.gz")) version".tar.gz"))
(sha256 (sha256
(base32 (base32
"0vp1d9mlfsppry3nsj9f7bmh9wjgsy3jggp24sac1hhgl43c8cms")) "1ariw5x33hmmm3d5al0j3307l5kf3vhmn78wpyaz67hia1x8nasv"))
(modules '((guix build utils))) (modules '((guix build utils)))
(snippet (snippet
;; Delete bundled jemalloc, as the package will use the libc one ;; Delete bundled jemalloc, as the package will use the libc one
'(begin (delete-file-recursively "deps/jemalloc") '(begin (delete-file-recursively "deps/jemalloc")))))
#t))))
(build-system gnu-build-system) (build-system gnu-build-system)
(native-inputs (native-inputs
`(("procps" ,procps) ; for tests `(("procps" ,procps) ; for tests
@ -2200,8 +2228,7 @@ similar to BerkeleyDB, LevelDB, etc.")
(("^TCLSH=.*") (("^TCLSH=.*")
(string-append "TCLSH=" (string-append "TCLSH="
(assoc-ref inputs "tcl") (assoc-ref inputs "tcl")
"/bin/tclsh"))) "/bin/tclsh")))))
#t))
(add-after 'unpack 'adjust-tests (add-after 'unpack 'adjust-tests
(lambda _ (lambda _
;; Disable failing tests ;; Disable failing tests
@ -2209,8 +2236,7 @@ similar to BerkeleyDB, LevelDB, etc.")
(("integration/failover") "") (("integration/failover") "")
(("integration/replication-4") "") (("integration/replication-4") "")
(("integration/replication-psync") "") (("integration/replication-psync") "")
(("integration/replication[^-]") "")) (("integration/replication[^-]") "")))))
#t)))
#:make-flags `("CC=gcc" #:make-flags `("CC=gcc"
"MALLOC=libc" "MALLOC=libc"
"LDFLAGS=-ldl" "LDFLAGS=-ldl"
@ -4016,7 +4042,7 @@ connecting to MS SQL and Sybase servers over TCP/IP.")
(define-public sequeler (define-public sequeler
(package (package
(name "sequeler") (name "sequeler")
(version "0.8.1") (version "0.8.2")
(source (origin (source (origin
(method git-fetch) (method git-fetch)
(uri (git-reference (uri (git-reference
@ -4025,7 +4051,7 @@ connecting to MS SQL and Sybase servers over TCP/IP.")
(file-name (git-file-name name version)) (file-name (git-file-name name version))
(sha256 (sha256
(base32 (base32
"1q1vzc3likpiwfh6blkyiz0wr0aarj9xrm8gbi7m3p1wslkpah7c")))) "0biggmsn8k7j6pdrwk29whl56qlfgvf5d9vjpgz4nyqih56wgh9j"))))
(build-system meson-build-system) (build-system meson-build-system)
(arguments (arguments
'(#:glib-or-gtk? #t '(#:glib-or-gtk? #t
@ -4036,8 +4062,7 @@ connecting to MS SQL and Sybase servers over TCP/IP.")
(lambda _ (lambda _
(substitute* "build-aux/meson_post_install.py" (substitute* "build-aux/meson_post_install.py"
(("gtk-update-icon-cache") "true") (("gtk-update-icon-cache") "true")
(("update-desktop-database") "true")) (("update-desktop-database") "true")))))))
#t)))))
(native-inputs (native-inputs
`(;("appstream-glib" ,appstream-glib) ; validation fails for lack of network `(;("appstream-glib" ,appstream-glib) ; validation fails for lack of network
("gettext-minimal" ,gettext-minimal) ("gettext-minimal" ,gettext-minimal)

View file

@ -81,6 +81,70 @@ contains the archive keys used for that.")
(license (list license:public-domain ; the keys (license (list license:public-domain ; the keys
license:gpl2+)))) ; see debian/copyright license:gpl2+)))) ; see debian/copyright
(define-public debian-ports-archive-keyring
(package
(name "debian-ports-archive-keyring")
(version "2020.02.02")
(source
(origin
(method url-fetch)
(uri (string-append "mirror://debian/pool/main/d"
"/debian-ports-archive-keyring"
"/debian-ports-archive-keyring_" version ".tar.xz"))
(sha256
(base32
"0746zfc3n4f77wlrd9a9a6r4mahz2cx5wdd9izg65vmn5qwamgza"))))
(build-system gnu-build-system)
(arguments
'(#:tests? #f ; No test suite.
#:phases
(modify-phases %standard-phases
(delete 'configure) ; No configure script.
(replace 'build
(lambda _
;; gpg options derived from the debian/rules file.
(let ((gpg-options (list "--no-options" "--no-default-keyring"
"--no-auto-check-trustdb" "--no-keyring"
"--import-options" "import-export"
"--import")))
(with-output-to-file "debian-ports-archive-keyring.gpg"
(lambda _
(apply invoke "gpg"
(append gpg-options (find-files "active-keys")))))
(with-output-to-file "debian-ports-archive-keyring-removed.gpg"
(lambda _
(apply invoke "gpg"
(append gpg-options (find-files "removed-keys")))))
(mkdir "trusted.gpg")
(for-each
(lambda (key)
(with-output-to-file
(string-append "trusted.gpg/" (basename key ".key") ".gpg")
(lambda _
(apply invoke "gpg" (append gpg-options (list key))))))
(find-files "active-keys"))
#t)))
(replace 'install
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(apt (string-append out "/etc/apt/trusted.gpg.d/"))
(key (string-append out "/share/keyrings/")))
(install-file "debian-ports-archive-keyring.gpg" key)
(install-file "debian-ports-archive-keyring-removed.gpg" key)
(for-each (lambda (file)
(install-file file apt))
(find-files "trusted.gpg" "\\.gpg$")))
#t)))))
(native-inputs
`(("gnupg" ,gnupg)))
(home-page "https://tracker.debian.org/pkg/debian-ports-archive-keyring")
(synopsis "GnuPG archive keys of the Debian ports archive")
(description
"The Debian ports-archive digitally signs its Release files. This package
contains the archive keys used for that.")
;; "The keys in the keyrings don't fall under any copyright."
(license license:public-domain)))
(define-public ubuntu-keyring (define-public ubuntu-keyring
(package (package
(name "ubuntu-keyring") (name "ubuntu-keyring")

View file

@ -30,14 +30,14 @@
(define-public dhall (define-public dhall
(package (package
(name "dhall") (name "dhall")
(version "1.32.0") (version "1.39.0")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (string-append "https://hackage.haskell.org/package/dhall/dhall-" (uri (string-append "https://hackage.haskell.org/package/dhall/dhall-"
version ".tar.gz")) version ".tar.gz"))
(sha256 (sha256
(base32 "1imj0bh5365pdizvjbw2wqz0g9hakigf1zm4fr6379qdchxpp90p")))) (base32 "1by2d84fbckspczddl4npfsf89q6nprmbg0i5g8yr1psp0fpl4ab"))))
(build-system haskell-build-system) (build-system haskell-build-system)
(inputs (inputs
`(("ghc-aeson" ,ghc-aeson) `(("ghc-aeson" ,ghc-aeson)
@ -58,15 +58,17 @@
("ghc-lens-family-core" ,ghc-lens-family-core) ("ghc-lens-family-core" ,ghc-lens-family-core)
("ghc-megaparsec" ,ghc-megaparsec) ("ghc-megaparsec" ,ghc-megaparsec)
("ghc-memory" ,ghc-memory) ("ghc-memory" ,ghc-memory)
("ghc-mmorph" ,ghc-mmorph)
("ghc-network-uri" ,ghc-network-uri) ("ghc-network-uri" ,ghc-network-uri)
("ghc-optparse-applicative" ,ghc-optparse-applicative) ("ghc-optparse-applicative" ,ghc-optparse-applicative)
("ghc-parsers" ,ghc-parsers) ("ghc-parsers" ,ghc-parsers)
("ghc-parser-combinators" ,ghc-parser-combinators) ("ghc-parser-combinators" ,ghc-parser-combinators)
("ghc-prettyprinter" ,ghc-prettyprinter-1.6) ("ghc-prettyprinter" ,ghc-prettyprinter)
("ghc-prettyprinter-ansi-terminal" ,ghc-prettyprinter-ansi-terminal) ("ghc-prettyprinter-ansi-terminal" ,ghc-prettyprinter-ansi-terminal)
("ghc-pretty-simple" ,ghc-pretty-simple) ("ghc-pretty-simple" ,ghc-pretty-simple)
("ghc-profunctors" ,ghc-profunctors) ("ghc-profunctors" ,ghc-profunctors)
("ghc-repline" ,ghc-repline-0.3) ("ghc-pretty-simple" ,ghc-pretty-simple)
("ghc-repline" ,ghc-repline)
("ghc-serialise" ,ghc-serialise) ("ghc-serialise" ,ghc-serialise)
("ghc-scientific" ,ghc-scientific) ("ghc-scientific" ,ghc-scientific)
("ghc-text-manipulate" ,ghc-text-manipulate) ("ghc-text-manipulate" ,ghc-text-manipulate)
@ -91,6 +93,7 @@
("ghc-tasty-expected-failure" ,ghc-tasty-expected-failure) ("ghc-tasty-expected-failure" ,ghc-tasty-expected-failure)
("ghc-tasty-hunit" ,ghc-tasty-hunit) ("ghc-tasty-hunit" ,ghc-tasty-hunit)
("ghc-tasty-quickcheck" ,ghc-tasty-quickcheck) ("ghc-tasty-quickcheck" ,ghc-tasty-quickcheck)
("ghc-tasty-silver" ,ghc-tasty-silver)
("ghc-turtle" ,ghc-turtle) ("ghc-turtle" ,ghc-turtle)
("ghc-mockery" ,ghc-mockery) ("ghc-mockery" ,ghc-mockery)
("ghc-doctest" ,ghc-doctest))) ("ghc-doctest" ,ghc-doctest)))
@ -102,8 +105,7 @@
(with-directory-excursion "dhall-lang/tests" (with-directory-excursion "dhall-lang/tests"
(for-each (for-each
delete-file delete-file
'("import/failure/referentiallyInsane.dhall" '("import/success/customHeadersA.dhall"
"import/success/customHeadersA.dhall"
"import/success/noHeaderForwardingA.dhall" "import/success/noHeaderForwardingA.dhall"
"import/success/unit/RemoteAsTextA.dhall" "import/success/unit/RemoteAsTextA.dhall"
"import/success/unit/SimpleRemoteA.dhall" "import/success/unit/SimpleRemoteA.dhall"

View file

@ -72,16 +72,18 @@
(define-public diffoscope (define-public diffoscope
(package (package
(name "diffoscope") (name "diffoscope")
(version "177") (version "186")
(source (origin (source
(method git-fetch) (origin
(uri (git-reference (method git-fetch)
(url "https://salsa.debian.org/reproducible-builds/diffoscope.git") (uri (git-reference
(commit version))) (url "https://salsa.debian.org/reproducible-builds/diffoscope.git")
(file-name (git-file-name name version)) (commit version)))
(sha256 (file-name (git-file-name name version))
(base32 (sha256
"02np9dq7jnq48lcmz4k1hvwc6xiqgjhrwr1vsbsfw8rxnp9vs0a5")))) (base32 "1qlll5jn76ci5jy915v2kvyngfyycwylxpbdylffzaninvdy3dav"))
(patches
(search-patches "diffoscope-fix-test_item3_deflate_llvm_bitcode.patch"))))
(build-system python-build-system) (build-system python-build-system)
(arguments (arguments
`(#:phases (modify-phases %standard-phases `(#:phases (modify-phases %standard-phases
@ -89,8 +91,7 @@
;; bug in berkeley-db file type detection. ;; bug in berkeley-db file type detection.
(add-after 'unpack 'remove-berkeley-test (add-after 'unpack 'remove-berkeley-test
(lambda _ (lambda _
(delete-file "tests/comparators/test_berkeley_db.py") (delete-file "tests/comparators/test_berkeley_db.py")))
#t))
(add-after 'unpack 'embed-tool-references (add-after 'unpack 'embed-tool-references
(lambda* (#:key inputs #:allow-other-keys) (lambda* (#:key inputs #:allow-other-keys)
(substitute* "diffoscope/comparators/utils/compare.py" (substitute* "diffoscope/comparators/utils/compare.py"
@ -106,27 +107,37 @@
(("\\['stat',") (("\\['stat',")
(string-append "['" (which "stat") "',")) (string-append "['" (which "stat") "',"))
(("\\['getfacl',") (("\\['getfacl',")
(string-append "['" (which "getfacl") "',"))) (string-append "['" (which "getfacl") "',")))))
#t))
(add-after 'build 'build-man-page (add-after 'build 'build-man-page
(lambda* (#:key (make-flags '()) #:allow-other-keys) (lambda* (#:key (make-flags '()) #:allow-other-keys)
(apply invoke "make" "-C" "doc" make-flags))) (apply invoke "make" "-C" "doc" make-flags)))
(add-before 'check 'writable-test-data (add-before 'check 'writable-test-data
(lambda _ (lambda _
;; Tests may need write access to tests directory. ;; Tests may need write access to tests directory.
(for-each make-file-writable (find-files "tests")) (for-each make-file-writable (find-files "tests"))))
#t)) (add-before 'check 'fix-failing-test
(lambda _
;; There is no user name mapping in the build environment.
;; Pytest made it so much harder than should be necessary,
;; so I'm leaving… this here in case I ever need it again:
;; (substitute* "tests/comparators/test_squashfs.py"
;; (("^def test_symlink_root.*" match) ; no, I don't
;; (string-append ; know Python
;; match "\n raise ValueError(" ; why do you
;; "differences_root[1].unified_diff)\n"))) ; ask
(substitute* "tests/data/squashfs_root_expected_diff"
(("root/root")
'"0/0 "))))
(add-before 'check 'delete-failing-test (add-before 'check 'delete-failing-test
;; Please add new tests to fix-failing-test and not here ;-)
(lambda _ (lambda _
;; This requires /sbin to be in $PATH. ;; This requires /sbin to be in $PATH.
(delete-file "tests/test_tools.py") (delete-file "tests/test_tools.py")))
#t))
(add-after 'install 'install-man-page (add-after 'install 'install-man-page
(lambda* (#:key outputs #:allow-other-keys) (lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out")) (let* ((out (assoc-ref outputs "out"))
(man (string-append out "/share/man/man1"))) (man (string-append out "/share/man/man1")))
(install-file "doc/diffoscope.1" man) (install-file "doc/diffoscope.1" man)))))))
#t))))))
(inputs `(("rpm" ,rpm) ;for rpm-python (inputs `(("rpm" ,rpm) ;for rpm-python
("python-debian" ,python-debian) ("python-debian" ,python-debian)
("python-libarchive-c" ,python-libarchive-c) ("python-libarchive-c" ,python-libarchive-c)

View file

@ -278,7 +278,7 @@ prompt the user with the option to go with insecure DNS only.")
(define-public dnsmasq (define-public dnsmasq
(package (package
(name "dnsmasq") (name "dnsmasq")
(version "2.85") (version "2.86")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append (uri (string-append
@ -286,7 +286,7 @@ prompt the user with the option to go with insecure DNS only.")
version ".tar.xz")) version ".tar.xz"))
(sha256 (sha256
(base32 (base32
"1yhjwgz8g5qrqvxh6bbmg3443zi8qqjks3q872wyb1zn7n0d765d")))) "027b0ycw8h8yvvkq46vnr7dv8iqn5srm4kr7hm7sq110kvy2rm98"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(native-inputs (native-inputs
`(("pkg-config" ,pkg-config))) `(("pkg-config" ,pkg-config)))
@ -296,7 +296,7 @@ prompt the user with the option to go with insecure DNS only.")
`(#:phases `(#:phases
(modify-phases %standard-phases (delete 'configure)) (modify-phases %standard-phases (delete 'configure))
#:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")) #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
"CC=gcc" (string-append "CC=" ,(cc-for-target))
"COPTS=\"-DHAVE_DBUS\"") "COPTS=\"-DHAVE_DBUS\"")
#:tests? #f)) ; no check target #:tests? #f)) ; no check target
(home-page "http://www.thekelleys.org.uk/dnsmasq/doc.html") (home-page "http://www.thekelleys.org.uk/dnsmasq/doc.html")
@ -606,6 +606,60 @@ run in a @code{chroot} jail, thus making any security flaws in NSD less likely
to result in system-wide compromise.") to result in system-wide compromise.")
(license (list license:bsd-3)))) (license (list license:bsd-3))))
(define-public rbldnsd
(package
(name "rbldnsd")
(version "0.998b")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/spamhaus/rbldnsd")
(commit version)))
(file-name (git-file-name name version))
(sha256
(base32 "0jj3kyir43qnjgd9rk0wz13iggf3p4p1779v0wgmx3ci0ypnglcr"))))
(build-system gnu-build-system)
(arguments
`(#:phases
(modify-phases %standard-phases
(replace 'configure
;; The ./configure is hand-written and doesn't ignore unknown
;; standard autotools options like CONFIG_SHELL.
(lambda _
(invoke "./configure")))
(replace 'install
;; There is no Makefile install target. contrib/debian/rules has
;; one but relies on Debian-specific helpers, so install manually.
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(sbin (string-append out "/sbin"))
(man8 (string-append out "/share/man/man8")))
(install-file "rbldnsd" sbin)
(install-file "rbldnsd.8" man8)))))))
(inputs
`(("zlib" ,zlib)))
(native-inputs
;; For running the test suite. Python 3 is not yet supported by a release:
;; see <https://github.com/spamhaus/rbldnsd/issues/16>.
`(("python" ,python-2)))
(home-page "https://rbldnsd.io/")
(synopsis
"Small nameserver to efficiently serve @acronym{DNSBL, DNS blocklists}")
(description
"This package contains a small DNS daemon especially made to handle queries
of @acronym{DNSBL, DNS blocklists}, a simple way to publish IP addresses and/or
(domain) names which are somehow notable. Such lists are frequently used to
refuse e-mail service to clients known to send unwanted (spam) messages.
@command{rbldnsd} is not a general-purpose nameserver. It answers to a limited
variety of queries. This makes it extremely fast---greatly outperforming both
BIND and djbdns---whilst using relatively little memory.")
(license
(list license:bsd-3 ; btrie.[ch]
license:lgpl2.1+ ; qsort.c
license:gpl2+)))) ; the rest
(define-public unbound (define-public unbound
(package (package
(name "unbound") (name "unbound")
@ -769,16 +823,16 @@ served by AS112. Stub and forward zones are supported.")
(define-public yadifa (define-public yadifa
(package (package
(name "yadifa") (name "yadifa")
(version "2.5.0") (version "2.5.1")
(source (source
(let ((build "10188")) (let ((build "10306"))
(origin (origin
(method url-fetch) (method url-fetch)
(uri (uri
(string-append "https://www.yadifa.eu/sites/default/files/releases/" (string-append "https://www.yadifa.eu/sites/default/files/releases/"
"yadifa-" version "-" build ".tar.gz")) "yadifa-" version "-" build ".tar.gz"))
(sha256 (sha256
(base32 "05ps6fif3sqn6yzkprnp1cm81f3ja4vqc0r6vh7nvzl73gv4rp2w"))))) (base32 "051h4pmh9llwj0w6h0v8fl2f146fb26cv3w5an9dmfh845sv6hzr")))))
(build-system gnu-build-system) (build-system gnu-build-system)
(native-inputs (native-inputs
`(("which" ,which))) `(("which" ,which)))
@ -817,7 +871,7 @@ Extensions} (DNSSEC).")
(define-public knot (define-public knot
(package (package
(name "knot") (name "knot")
(version "3.0.7") (version "3.1.2")
(source (source
(origin (origin
(method git-fetch) (method git-fetch)
@ -826,7 +880,7 @@ Extensions} (DNSSEC).")
(commit (string-append "v" version)))) (commit (string-append "v" version))))
(file-name (git-file-name name version)) (file-name (git-file-name name version))
(sha256 (sha256
(base32 "0ihd0lfh0r1nzz2di2rqkrx5j1017xv7m54irlhccx21inwv6g3y")) (base32 "1kyjf6d1jx8q0zjzwy06f4d3ar5cbbqxka8cc7ckwmbpf1n6cij5"))
(modules '((guix build utils))) (modules '((guix build utils)))
(snippet (snippet
'(begin '(begin
@ -834,8 +888,7 @@ Extensions} (DNSSEC).")
(for-each delete-file (find-files "." "\\.c\\.[gt].")) (for-each delete-file (find-files "." "\\.c\\.[gt]."))
(delete-file "src/libknot/yparser/ypbody.c") (delete-file "src/libknot/yparser/ypbody.c")
;; Remove bundled library to ensure we always use the system's. ;; Remove bundled library to ensure we always use the system's.
(delete-file-recursively "src/contrib/libbpf") (delete-file-recursively "src/contrib/libbpf")))))
#t))))
(build-system gnu-build-system) (build-system gnu-build-system)
(outputs (list "out" "doc" "lib" "tools")) (outputs (list "out" "doc" "lib" "tools"))
(arguments (arguments
@ -847,9 +900,10 @@ Extensions} (DNSSEC).")
(string-append "--libdir=" (assoc-ref %outputs "lib") "/lib") (string-append "--libdir=" (assoc-ref %outputs "lib") "/lib")
"--sysconfdir=/etc" "--sysconfdir=/etc"
"--localstatedir=/var" "--localstatedir=/var"
"--disable-static" ; static libraries are built by default
"--enable-dnstap" ; let tools read/write capture files "--enable-dnstap" ; let tools read/write capture files
"--enable-fastparser" ; disabled by default when .git/ exists "--enable-fastparser" ; disabled by default when .git/ exists
"--enable-xdp=auto" ; XXX [=yes] currently means =embedded "--enable-xdp=yes"
"--with-module-dnstap=yes") ; detailed query capturing & logging "--with-module-dnstap=yes") ; detailed query capturing & logging
#:phases #:phases
(modify-phases %standard-phases (modify-phases %standard-phases
@ -859,8 +913,7 @@ Extensions} (DNSSEC).")
(lambda _ (lambda _
(substitute* "configure.ac" (substitute* "configure.ac"
(("enable_xdp=yes" match) (("enable_xdp=yes" match)
(string-append match "\nlibbpf_LIBS=\"$libbpf_LIBS -lz\""))) (string-append match "\nlibbpf_LIBS=\"$libbpf_LIBS -lz\"")))))
#true))
(add-before 'bootstrap 'update-parser (add-before 'bootstrap 'update-parser
(lambda _ (lambda _
(with-directory-excursion "src" (with-directory-excursion "src"
@ -869,22 +922,32 @@ Extensions} (DNSSEC).")
(lambda _ (lambda _
;; Don't install empty directories like /etc outside the store. ;; Don't install empty directories like /etc outside the store.
;; This is needed even when using make config_dir=... install. ;; This is needed even when using make config_dir=... install.
(substitute* "src/Makefile.in" (("\\$\\(INSTALL\\) -d") "true")) (substitute* "src/Makefile.in" (("\\$\\(INSTALL\\) -d") "true"))))
#t))
(add-after 'build 'build-info (add-after 'build 'build-info
(lambda _ (lambda* (#:key make-flags parallel-build? #:allow-other-keys)
(invoke "make" "info"))) (apply invoke "make" "info"
`(,@(if parallel-build?
`("-j" ,(number->string (parallel-job-count)))
'())
,@make-flags))))
(replace 'install (replace 'install
(lambda* (#:key outputs #:allow-other-keys) (lambda* (#:key make-flags outputs parallel-build? #:allow-other-keys)
(let* ((out (assoc-ref outputs "out")) (let* ((out (assoc-ref outputs "out"))
(doc (string-append out "/share/doc/" ,name "-" ,version)) (doc (string-append out "/share/doc/" ,name "-" ,version))
(etc (string-append doc "/examples/etc"))) (etc (string-append doc "/examples/etc")))
(invoke "make" (apply invoke "make" "install"
(string-append "config_dir=" etc) (string-append "config_dir=" etc)
"install")))) `(,@(if parallel-build?
`("-j" ,(number->string (parallel-job-count)))
'())
,@make-flags)))))
(add-after 'install 'install-info (add-after 'install 'install-info
(lambda _ (lambda* (#:key make-flags parallel-build? #:allow-other-keys)
(invoke "make" "install-info"))) (apply invoke "make" "install-info"
`(,@(if parallel-build?
`("-j" ,(number->string (parallel-job-count)))
'())
,@make-flags))))
(add-after 'install 'break-circular-:lib->:out-reference (add-after 'install 'break-circular-:lib->:out-reference
(lambda* (#:key outputs #:allow-other-keys) (lambda* (#:key outputs #:allow-other-keys)
(let ((lib (assoc-ref outputs "lib"))) (let ((lib (assoc-ref outputs "lib")))
@ -892,8 +955,7 @@ Extensions} (DNSSEC).")
(substitute* file (substitute* file
(("(prefix=).*" _ assign) (("(prefix=).*" _ assign)
(string-append assign lib "\n")))) (string-append assign lib "\n"))))
(find-files lib "\\.pc$")) (find-files lib "\\.pc$")))))
#true)))
(add-after 'install 'split-:tools (add-after 'install 'split-:tools
(lambda* (#:key outputs #:allow-other-keys) (lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out")) (let* ((out (assoc-ref outputs "out"))
@ -902,8 +964,7 @@ Extensions} (DNSSEC).")
(rename-file (string-append out "/bin") (rename-file (string-append out "/bin")
(string-append tools "/bin")) (string-append tools "/bin"))
(rename-file (string-append out "/share/man/man1") (rename-file (string-append out "/share/man/man1")
(string-append tools "/share/man/man1")) (string-append tools "/share/man/man1"))))))))
#true))))))
(native-inputs (native-inputs
`(("autoconf" ,autoconf) `(("autoconf" ,autoconf)
("automake" ,automake) ("automake" ,automake)
@ -921,6 +982,7 @@ Extensions} (DNSSEC).")
("libedit" ,libedit) ("libedit" ,libedit)
("libelf" ,libelf) ("libelf" ,libelf)
("libidn" ,libidn) ("libidn" ,libidn)
("libmnl" ,libmnl)
("libnghttp2" ,nghttp2 "lib") ("libnghttp2" ,nghttp2 "lib")
("liburcu" ,liburcu) ("liburcu" ,liburcu)
("lmdb" ,lmdb) ("lmdb" ,lmdb)

View file

@ -1,6 +1,6 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2018 Sou Bunnbu <iyzsong@member.fsf.org> ;;; Copyright © 2018 Sou Bunnbu <iyzsong@member.fsf.org>
;;; Copyright © 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 20192021 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2020 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2020 Efraim Flashner <efraim@flashner.co.il>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
@ -106,7 +106,7 @@ It can read and write LCF and XML files.")
("sdl2-mixer" ,sdl2-mixer) ("sdl2-mixer" ,sdl2-mixer)
("sdl2" ,sdl2) ("sdl2" ,sdl2)
("speexdsp" ,speexdsp) ("speexdsp" ,speexdsp)
;; ("wildmidi" ,wildmidi) ; TODO: package it ("wildmidi" ,wildmidi)
("zlib" ,zlib))) ("zlib" ,zlib)))
(home-page "https://easyrpg.org/") (home-page "https://easyrpg.org/")
(synopsis "Play RPG Maker 2000 and 2003 games") (synopsis "Play RPG Maker 2000 and 2003 games")

View file

@ -650,14 +650,16 @@ Portuguese, Spanish and Italian.")
(define-public fet (define-public fet
(package (package
(name "fet") (name "fet")
(version "6.0.4") (version "6.1.8")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (string-append "https://www.lalescu.ro/liviu/fet/download/" (uri (let ((directory "https://www.lalescu.ro/liviu/fet/download/")
"fet-" version ".tar.bz2")) (base (string-append "fet-" version ".tar.bz2")))
(list (string-append directory base)
(string-append directory "old/" base))))
(sha256 (sha256
(base32 "16yajwbvm2ain1p2h81qfm8pbrdp70zljck67j9yijwyr6xqdj2a")))) (base32 "16m20vbhv8i7saxqb731bhds1f86d6x1f935j3ivg357805fqzll"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
`(#:phases `(#:phases
@ -668,8 +670,7 @@ Portuguese, Spanish and Italian.")
"src/src.pro" "src/src.pro"
"src/src-cl.pro" "src/src-cl.pro"
"src/interface/fet.cpp") "src/interface/fet.cpp")
(("/usr") (assoc-ref outputs "out"))) (("/usr") (assoc-ref outputs "out")))))
#t))
(replace 'configure (replace 'configure
(lambda _ (invoke "qmake" "fet.pro")))))) (lambda _ (invoke "qmake" "fet.pro"))))))
(inputs (inputs

View file

@ -35,7 +35,7 @@
(define-public elixir (define-public elixir
(package (package
(name "elixir") (name "elixir")
(version "1.12.0") (version "1.12.2")
(source (source
(origin (origin
(method git-fetch) (method git-fetch)
@ -44,7 +44,7 @@
(commit (string-append "v" version)))) (commit (string-append "v" version))))
(file-name (git-file-name name version)) (file-name (git-file-name name version))
(sha256 (sha256
(base32 "0nx0ajbpib0hxpxz33p1kr3rqgvf35vkx91sh427qcjqy7964z16")) (base32 "1rwmwnqxhjcdx9niva9ardx90p1qi4axxh72nw9k15hhlh2jy29x"))
(patches (search-patches "elixir-path-length.patch")))) (patches (search-patches "elixir-path-length.patch"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments

View file

@ -52,20 +52,11 @@
(arguments (arguments
`(#:phases `(#:phases
(modify-phases %standard-phases (modify-phases %standard-phases
(add-after 'unpack 'update-constraints (add-before 'configure 'update-constraints
(lambda _ (lambda _
(substitute* "elm.cabal" (substitute* "elm.cabal"
(("ansi-terminal >= 0\\.8 && < 0\\.9,") (("(ansi-terminal|containers|network|http-client|language-glsl)\\s+[^,]+" all dep)
"ansi-terminal >= 0.8 && < 0.10,") dep)))))))
(("containers >= 0\\.5\\.8\\.2 && < 0\\.6,")
"containers >= 0.5.8.2 && < 0.7,")
(("http-client >= 0\\.5 && < 0\\.6,")
"http-client >= 0.5 && < 0.7,")
(("language-glsl >= 0\\.0\\.2 && < 0\\.3,")
"language-glsl >= 0.0.2 && < 0.4,")
(("network >= 2\\.4 && < 2\\.7,")
"network >= 2.4 && < 2.9,"))
#t)))))
(inputs (inputs
`(("ghc-ansi-terminal" ,ghc-ansi-terminal) `(("ghc-ansi-terminal" ,ghc-ansi-terminal)
("ghc-ansi-wl-pprint" ,ghc-ansi-wl-pprint) ("ghc-ansi-wl-pprint" ,ghc-ansi-wl-pprint)

File diff suppressed because it is too large Load diff

View file

@ -18,7 +18,7 @@
;;; Copyright © 2018, 2019, 2021 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2018, 2019, 2021 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2019 Jesse John Gildersleve <jessejohngildersleve@zohomail.eu> ;;; Copyright © 2019 Jesse John Gildersleve <jessejohngildersleve@zohomail.eu>
;;; Copyright © 2019 Valentin Ignatev <valentignatev@gmail.com> ;;; Copyright © 2019 Valentin Ignatev <valentignatev@gmail.com>
;;; Copyright © 2019 Leo Prikler <leo.prikler@student.tugraz.at> ;;; Copyright © 2019 Liliana Marie Prikler <liliana.prikler@gmail.com>
;;; Copyright © 2019 Amin Bandali <bandali@gnu.org> ;;; Copyright © 2019 Amin Bandali <bandali@gnu.org>
;;; Copyright © 2020 Jack Hill <jackhill@jackhill.us> ;;; Copyright © 2020 Jack Hill <jackhill@jackhill.us>
;;; Copyright © 2020 Morgan Smith <Morgan.J.Smith@outlook.com> ;;; Copyright © 2020 Morgan Smith <Morgan.J.Smith@outlook.com>

View file

@ -48,10 +48,11 @@
#:use-module (gnu packages audio) #:use-module (gnu packages audio)
#:use-module (gnu packages autogen) #:use-module (gnu packages autogen)
#:use-module (gnu packages autotools) #:use-module (gnu packages autotools)
#:use-module (gnu packages backup)
#:use-module (gnu packages base) #:use-module (gnu packages base)
#:use-module (gnu packages bison) #:use-module (gnu packages bison)
#:use-module (gnu packages boost) #:use-module (gnu packages boost)
#:use-module (gnu packages backup) #:use-module (gnu packages build-tools)
#:use-module (gnu packages cdrom) #:use-module (gnu packages cdrom)
#:use-module (gnu packages check) #:use-module (gnu packages check)
#:use-module (gnu packages compression) #:use-module (gnu packages compression)
@ -60,6 +61,7 @@
#:use-module (gnu packages digest) #:use-module (gnu packages digest)
#:use-module (gnu packages elf) #:use-module (gnu packages elf)
#:use-module (gnu packages flex) #:use-module (gnu packages flex)
#:use-module (gnu packages fltk)
#:use-module (gnu packages fonts) #:use-module (gnu packages fonts)
#:use-module (gnu packages fontutils) #:use-module (gnu packages fontutils)
#:use-module (gnu packages freedesktop) #:use-module (gnu packages freedesktop)
@ -102,6 +104,7 @@
#:use-module (guix build-system cmake) #:use-module (guix build-system cmake)
#:use-module (guix build-system glib-or-gtk) #:use-module (guix build-system glib-or-gtk)
#:use-module (guix build-system gnu) #:use-module (guix build-system gnu)
#:use-module (guix build-system meson)
#:use-module (guix build-system python)) #:use-module (guix build-system python))
(define-public vice (define-public vice
@ -400,7 +403,7 @@ older games.")
;; This is not a patch staging area for DOSBox, but an unaffiliated fork. ;; This is not a patch staging area for DOSBox, but an unaffiliated fork.
(package (package
(name "dosbox-staging") (name "dosbox-staging")
(version "0.76.0") (version "0.77.1")
(source (source
(origin (origin
(method git-fetch) (method git-fetch)
@ -409,34 +412,20 @@ older games.")
(commit (string-append "v" version)))) (commit (string-append "v" version))))
(file-name (git-file-name name version)) (file-name (git-file-name name version))
(sha256 (sha256
(base32 "14zlkm9qmaq2x4zdiadczsxvdnrf35w13ccvkxzd8cwrzxv84fvd")))) (base32 "07jwmmm1bhfxavlhl854cj8l5iy5hqx5hpwkkjbcwqg7yh9jfs2x"))))
(build-system gnu-build-system) (build-system meson-build-system)
(arguments (arguments
`(#:configure-flags `(#:meson ,meson-0.55 #:configure-flags
(let* ((flags (list "-O3" ;; These both try to git clone subprojects.
;; From scripts/automator/build/gcc-defaults. (list "-Dunit_tests=disabled" ; gtest
"-fstrict-aliasing" "-Duse_mt32emu=false"))) ; mt32emu
"-fno-signed-zeros"
"-fno-trapping-math"
"-fassociative-math"
"-frename-registers"
"-ffunction-sections"
"-fdata-sections"))
(CFLAGS (string-join flags " ")))
;; Several files #include <SDL_net.h> instead of <SDL2/SDL_net.h>,
;; including configure.ac itself.
(list (string-append "CPPFLAGS=-I" (assoc-ref %build-inputs "sdl2")
"/include/SDL2")
(string-append "CFLAGS=" CFLAGS)
(string-append "CXXFLAGS=-DNDEBUG " CFLAGS)))))
(native-inputs (native-inputs
`(("autoconf" ,autoconf) `(("pkg-config" ,pkg-config)))
("automake" ,automake)
("pkg-config" ,pkg-config)))
(inputs (inputs
`(("alsa-lib" ,alsa-lib) `(("alsa-lib" ,alsa-lib)
("fluidsynth" ,fluidsynth) ("fluidsynth" ,fluidsynth)
("libpng" ,libpng) ("libpng" ,libpng)
("mesa" ,mesa)
("opusfile" ,opusfile) ("opusfile" ,opusfile)
("sdl2" ,(sdl-union (list sdl2 sdl2-net))) ("sdl2" ,(sdl-union (list sdl2 sdl2-net)))
("zlib" ,zlib))) ("zlib" ,zlib)))
@ -782,7 +771,7 @@ and Game Boy Color games.")
(define-public sameboy (define-public sameboy
(package (package
(name "sameboy") (name "sameboy")
(version "0.14.4") (version "0.14.5")
(source (source
(origin (origin
(method git-fetch) (method git-fetch)
@ -791,7 +780,7 @@ and Game Boy Color games.")
(commit (string-append "v" version)))) (commit (string-append "v" version))))
(file-name (git-file-name name version)) (file-name (git-file-name name version))
(sha256 (sha256
(base32 "0zp11qm8b3cmx70pzczyh4vv4jyhlh4jnci8kn6b30c8lzl43g83")))) (base32 "0qqribyksm51fhq923rdhrzb9c4yf16szymprbw8fsz0nzv8frm3"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(native-inputs (native-inputs
`(("rgbds" ,rgbds) `(("rgbds" ,rgbds)
@ -816,8 +805,7 @@ and Game Boy Color games.")
(with-directory-excursion "build/bin/SDL" (with-directory-excursion "build/bin/SDL"
(install-file "sameboy" bin) (install-file "sameboy" bin)
(delete-file "sameboy") (delete-file "sameboy")
(copy-recursively "." data)) (copy-recursively "." data))))))))
#t))))))
(home-page "https://sameboy.github.io/") (home-page "https://sameboy.github.io/")
(synopsis "Accurate Game Boy, Game Boy Color and Super Game Boy emulator") (synopsis "Accurate Game Boy, Game Boy Color and Super Game Boy emulator")
(description "SameBoy is a user friendly Game Boy, Game Boy Color (description "SameBoy is a user friendly Game Boy, Game Boy Color
@ -1371,7 +1359,7 @@ towards a working Mupen64Plus for casual users.")
(define-public nestopia-ue (define-public nestopia-ue
(package (package
(name "nestopia-ue") (name "nestopia-ue")
(version "1.48") (version "1.51.1")
(source (source
(origin (origin
(method git-fetch) (method git-fetch)
@ -1380,36 +1368,24 @@ towards a working Mupen64Plus for casual users.")
(commit version))) (commit version)))
(file-name (git-file-name name version)) (file-name (git-file-name name version))
(sha256 (sha256
(base32 "19c8vx5yxbysl0sszk5blfngwacshdgwbf44g1qaxvq8ywiyxmb4")) (base32 "1g19gz33jav00rwzkpcnynf5ps41vl64a9qx0xjd6lva4bgn8s57"))))
(modules '((guix build utils))) (build-system gnu-build-system)
(snippet
'(begin
;; We don't need libretro for the GNU/Linux build.
(delete-file-recursively "libretro")
#t))))
(build-system cmake-build-system)
(native-inputs (native-inputs
`(("pkg-config" ,pkg-config))) `(("autoconf" ,autoconf)
("autoconf-archive" ,autoconf-archive)
("automake" ,automake)
("pkg-config" ,pkg-config)))
(inputs (inputs
`(("ao" ,ao) `(("fltk" ,fltk)
("gtk+" ,gtk+) ("fontconfig", fontconfig)
("libarchive" ,libarchive) ("libarchive" ,libarchive)
("libepoxy" ,libepoxy) ("libepoxy" ,libepoxy)
("libxft" ,libxft)
("libxrender" ,libxrender)
("sdl2" ,sdl2) ("sdl2" ,sdl2)
("zlib" ,zlib))) ("zlib" ,zlib)))
(arguments (arguments
'(#:phases '(;; There are no tests.
(modify-phases %standard-phases
;; This fixes the file chooser crash that happens with GTK 3.
(add-after 'install 'wrap-program
(lambda* (#:key inputs outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(nestopia (string-append out "/bin/nestopia"))
(gtk (assoc-ref inputs "gtk+"))
(gtk-share (string-append gtk "/share")))
(wrap-program nestopia
`("XDG_DATA_DIRS" ":" prefix (,gtk-share)))))))
;; There are no tests.
#:tests? #f)) #:tests? #f))
(home-page "http://0ldsk00l.ca/nestopia/") (home-page "http://0ldsk00l.ca/nestopia/")
(synopsis "Nintendo Entertainment System (NES/Famicom) emulator") (synopsis "Nintendo Entertainment System (NES/Famicom) emulator")
@ -1550,14 +1526,14 @@ multi-system game/emulator system.")
(define-public scummvm (define-public scummvm
(package (package
(name "scummvm") (name "scummvm")
(version "2.2.0") (version "2.5.0")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (string-append "https://downloads.scummvm.org/frs/scummvm/" version (uri (string-append "https://downloads.scummvm.org/frs/scummvm/" version
"/scummvm-" version ".tar.xz")) "/scummvm-" version ".tar.xz"))
(sha256 (sha256
(base32 "11vknasm5dna2vqr6gk343qynh7nhsq3kf60zayarn1vb5z6as8l")))) (base32 "08ynw1cmld41p4bwrw84gb1nv229va70i91qiqsjr3c2jnqy8zml"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
`(#:tests? #f ;require "git" `(#:tests? #f ;require "git"
@ -1584,6 +1560,8 @@ multi-system game/emulator system.")
("fluidsynth" ,fluidsynth) ("fluidsynth" ,fluidsynth)
("freetype" ,freetype) ("freetype" ,freetype)
("fribidi" ,fribidi) ("fribidi" ,fribidi)
("glew" ,glew)
("giflib" ,giflib)
("liba52" ,liba52) ("liba52" ,liba52)
("libflac" ,flac) ("libflac" ,flac)
("libjpeg-turbo" ,libjpeg-turbo) ("libjpeg-turbo" ,libjpeg-turbo)
@ -1774,7 +1752,7 @@ This is a part of the TiLP project.")
(define-public mame (define-public mame
(package (package
(name "mame") (name "mame")
(version "0.235") (version "0.236")
(source (source
(origin (origin
(method git-fetch) (method git-fetch)
@ -1783,7 +1761,7 @@ This is a part of the TiLP project.")
(commit (apply string-append "mame" (string-split version #\.))))) (commit (apply string-append "mame" (string-split version #\.)))))
(file-name (git-file-name name version)) (file-name (git-file-name name version))
(sha256 (sha256
(base32 "1iz5p51am7gh19i0zx96vfpfpza8xvrz9f2pd908jsc4xpr36agd")) (base32 "0pxvvdirbwakl5cy7lp0zib6z176ckxx8c3mazsd7q1ddxxd3l8x"))
(modules '((guix build utils))) (modules '((guix build utils)))
(snippet (snippet
;; Remove bundled libraries. ;; Remove bundled libraries.

View file

@ -24,6 +24,7 @@
;;; Copyright © 2021 qblade <qblade@protonmail.com> ;;; Copyright © 2021 qblade <qblade@protonmail.com>
;;; Copyright © 2021 Gerd Heber <gerd.heber@gmail.com> ;;; Copyright © 2021 Gerd Heber <gerd.heber@gmail.com>
;;; Copyright © 2021 Guillaume Le Vaillant <glv@posteo.net> ;;; Copyright © 2021 Guillaume Le Vaillant <glv@posteo.net>
;;; Copyright © 2021 Ivan Gankevich <i.gankevich@spbu.ru>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -95,6 +96,7 @@
#:use-module (gnu packages image-processing) #:use-module (gnu packages image-processing)
#:use-module (gnu packages imagemagick) #:use-module (gnu packages imagemagick)
#:use-module (gnu packages libevent) #:use-module (gnu packages libevent)
#:use-module (gnu packages libusb)
#:use-module (gnu packages linux) ;FIXME: for pcb #:use-module (gnu packages linux) ;FIXME: for pcb
#:use-module (gnu packages lisp) #:use-module (gnu packages lisp)
#:use-module (gnu packages m4) #:use-module (gnu packages m4)
@ -134,17 +136,18 @@
(name "librecad") (name "librecad")
(version "2.2.0-rc2") (version "2.2.0-rc2")
(source (origin (source (origin
(method url-fetch) (method git-fetch)
(uri (string-append (uri (git-reference
"https://github.com/LibreCAD/LibreCAD/archive/" (url "https://github.com/LibreCAD/LibreCAD")
version ".tar.gz")) (commit version)))
(file-name (string-append name "-" version ".tar.gz")) (file-name (git-file-name name version))
(sha256 (sha256
(base32 (base32
"0a7fzhxkkn2s3hkgqrw3s3wyspzfla3c5lgbsjyqzvlnrp3anxnm")))) "08cl4935c9vznz9qdw1zgd86rn7hl64zpfayxl07x21bhf53pn24"))))
(build-system gnu-build-system) (build-system qt-build-system)
(arguments (arguments
'(#:phases '(#:test-target "check"
#:phases
(modify-phases %standard-phases (modify-phases %standard-phases
;; Without this patch boost complains that "make_array" is not a ;; Without this patch boost complains that "make_array" is not a
;; member of "boost::serialization". ;; member of "boost::serialization".
@ -184,19 +187,7 @@
(install-file "unix/librecad" bin) (install-file "unix/librecad" bin)
(mkdir-p share) (mkdir-p share)
(copy-recursively "unix/resources" share)) (copy-recursively "unix/resources" share))
#t)) #t)))))
;; Ensure that icons are found at runtime
(add-after 'install 'wrap-executable
(lambda* (#:key inputs outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(qt '("qtbase" "qtsvg")))
(wrap-program (string-append out "/bin/librecad")
`("QT_PLUGIN_PATH" ":" prefix
,(map (lambda (label)
(string-append (assoc-ref inputs label)
"/lib/qt5/plugins/"))
qt)))
#t))))))
(inputs (inputs
`(("boost" ,boost) `(("boost" ,boost)
("muparser" ,muparser) ("muparser" ,muparser)
@ -901,7 +892,7 @@ Emacs).")
(define-public kicad (define-public kicad
(package (package
(name "kicad") (name "kicad")
(version "5.1.6") (version "5.1.10")
(source (source
(origin (origin
(method git-fetch) (method git-fetch)
@ -909,7 +900,7 @@ Emacs).")
(url "https://gitlab.com/kicad/code/kicad.git") (url "https://gitlab.com/kicad/code/kicad.git")
(commit version))) (commit version)))
(sha256 (sha256
(base32 "1pa3z0h0679jmgxlzc833h6q85b5paxdp69kf2h93vkaryj58622")) (base32 "10ix560bqy0lprnik1bprxw9ix4g8w2ipvyikx551ak9ryvgwjcc"))
(file-name (git-file-name name version)))) (file-name (git-file-name name version))))
(build-system cmake-build-system) (build-system cmake-build-system)
(arguments (arguments
@ -1020,7 +1011,7 @@ electrical diagrams), gerbview (viewing Gerber files) and others.")
(file-name (git-file-name name version)) (file-name (git-file-name name version))
(sha256 (sha256
(base32 (base32
"0qryi8xjm23ka363zfl7bbga0v5c31fr3d4nyxp3m168vkv9zhha")))) "0y51l0r62cnxkvpc21732p3cx7pjvaqjih8193502hlv9kv1j9p6"))))
(build-system cmake-build-system) (build-system cmake-build-system)
(arguments (arguments
`(#:phases `(#:phases
@ -1041,7 +1032,7 @@ translations for KiCad.")
(define-public kicad-doc (define-public kicad-doc
(package (package
(name "kicad-doc") (name "kicad-doc")
(version "5.1.6") (version (package-version kicad))
(source (origin (source (origin
(method git-fetch) (method git-fetch)
(uri (git-reference (uri (git-reference
@ -1050,7 +1041,7 @@ translations for KiCad.")
(file-name (git-file-name name version)) (file-name (git-file-name name version))
(sha256 (sha256
(base32 (base32
"03kvss8a0xrjnfvkwymm0vfd7rn9ix7i926xdzz9jg9iycrjfj3g")))) "005ljkb7liayvyj4vxd5ncrknfbhnk6xvyjk43qz810hrp1fv0hk"))))
(build-system cmake-build-system) (build-system cmake-build-system)
(arguments (arguments
`(#:configure-flags (list "-DBUILD_FORMATS=html") `(#:configure-flags (list "-DBUILD_FORMATS=html")
@ -1079,12 +1070,12 @@ translations for KiCad.")
(source (origin (source (origin
(method git-fetch) (method git-fetch)
(uri (git-reference (uri (git-reference
(url "https://github.com/KiCad/kicad-symbols") (url "https://gitlab.com/kicad/libraries/kicad-symbols.git")
(commit version))) (commit version)))
(file-name (git-file-name name version)) (file-name (git-file-name name version))
(sha256 (sha256
(base32 (base32
"12w3rdy085drlikkpb27n9ni7cyg9l0pqy7hnr86cxjcw3l5wcx6")))) "0n25rq32jwyigfw26faqraillwv6zbi2ywy26dkz5zqlf5xp56ad"))))
(build-system cmake-build-system) (build-system cmake-build-system)
(arguments (arguments
`(#:tests? #f)) ; no tests exist `(#:tests? #f)) ; no tests exist
@ -1108,12 +1099,12 @@ libraries.")
(source (origin (source (origin
(method git-fetch) (method git-fetch)
(uri (git-reference (uri (git-reference
(url "https://github.com/KiCad/kicad-footprints") (url "https://gitlab.com/kicad/libraries/kicad-footprints.git")
(commit version))) (commit version)))
(file-name (git-file-name name version)) (file-name (git-file-name name version))
(sha256 (sha256
(base32 (base32
"1kmf91a5mmvj9izrv40mkaw1w36yjgn8daczd9rq2wlmd0rdp1zx")))) "0gyqxryda273hjn2rv8dha461j9bjh054y5dlpiw1wiha65lrf9i"))))
(synopsis "Official KiCad footprint libraries") (synopsis "Official KiCad footprint libraries")
(description "This package contains the official KiCad footprint libraries."))) (description "This package contains the official KiCad footprint libraries.")))
@ -1125,12 +1116,12 @@ libraries.")
(source (origin (source (origin
(method git-fetch) (method git-fetch)
(uri (git-reference (uri (git-reference
(url "https://github.com/KiCad/kicad-packages3d") (url "https://gitlab.com/kicad/libraries/kicad-packages3D.git")
(commit version))) (commit version)))
(file-name (git-file-name name version)) (file-name (git-file-name name version))
(sha256 (sha256
(base32 (base32
"0b9jglf77fy0n0r8xs4yqkv6zvipyfvp0z5dnqlzp32csy5aqpi1")))) "1szcin52fcsyb55bj7xq7lz6ig187dpz3lk7blwab7b9c4dn3c3y"))))
(synopsis "Official KiCad 3D model libraries") (synopsis "Official KiCad 3D model libraries")
(description "This package contains the official KiCad 3D model libraries."))) (description "This package contains the official KiCad 3D model libraries.")))
@ -1142,12 +1133,12 @@ libraries.")
(source (origin (source (origin
(method git-fetch) (method git-fetch)
(uri (git-reference (uri (git-reference
(url "https://github.com/KiCad/kicad-templates") (url "https://gitlab.com/kicad/libraries/kicad-templates.git")
(commit version))) (commit version)))
(file-name (git-file-name name version)) (file-name (git-file-name name version))
(sha256 (sha256
(base32 (base32
"1hppcsrkn4dk6ggby6ckh0q65qxkywrbyxa4lwpaf7pxjyv498xg")))) "1a8xfcbdbb4ylrb5m7n2jjk9kwvgmlx1pmnn2cwj327a2b3m4jjs"))))
(synopsis "Official KiCad project and worksheet templates") (synopsis "Official KiCad project and worksheet templates")
(description "This package contains the official KiCad project and (description "This package contains the official KiCad project and
worksheet templates."))) worksheet templates.")))
@ -1715,7 +1706,7 @@ high-performance parallel differential evolution (DE) optimization algorithm.")
;; See <https://debbugs.gnu.org/cgi/bugreport.cgi?bug=27344#236>. ;; See <https://debbugs.gnu.org/cgi/bugreport.cgi?bug=27344#236>.
(package (package
(name "libngspice") (name "libngspice")
(version "34") (version "35")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
@ -1726,7 +1717,7 @@ high-performance parallel differential evolution (DE) optimization algorithm.")
"old-releases/" version "old-releases/" version
"/ngspice-" version ".tar.gz"))) "/ngspice-" version ".tar.gz")))
(sha256 (sha256
(base32 "1dfpkgkwmgwhq8dnbb8dh28cfap6rw0yywkhmxr4jxclcvygyqr2")))) (base32 "1v3ra9p2sc6ash1bbjm6i4i3dd6ymxjgnyha7z5rlmyvfv1gbdy1"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
`(;; No tests for libngspice exist. `(;; No tests for libngspice exist.
@ -1743,16 +1734,11 @@ high-performance parallel differential evolution (DE) optimization algorithm.")
(substitute* "man/man1/Makefile.in" (substitute* "man/man1/Makefile.in"
(("^man_MANS = ngspice\\.1 ngnutmeg\\.1 ngsconvert\\.1 ngmultidec\\.1") (("^man_MANS = ngspice\\.1 ngnutmeg\\.1 ngsconvert\\.1 ngmultidec\\.1")
"man_MANS = ")))) "man_MANS = "))))
(add-after 'install 'delete-scripts-and-config (add-after 'install 'delete-scripts
(lambda* (#:key outputs #:allow-other-keys) (lambda* (#:key outputs #:allow-other-keys)
(delete-file-recursively (delete-file-recursively
(string-append (assoc-ref outputs "out") (string-append (assoc-ref outputs "out")
"/share/ngspice/scripts")) "/share/ngspice/scripts")))))
;; This file is autogenerated by the configure script and should
;; not be distributed. It could be removed in ngspice 35. See
;; https://bugs.archlinux.org/task/70569 for reference.
(delete-file (string-append (assoc-ref outputs "out")
"/include/config.h")))))
#:configure-flags #:configure-flags
(list "--enable-openmp" (list "--enable-openmp"
"--enable-ciderlib" "--enable-ciderlib"
@ -2049,14 +2035,14 @@ parallel computing platforms. It also supports serial execution.")
(define-public librepcb (define-public librepcb
(package (package
(name "librepcb") (name "librepcb")
(version "0.1.4") (version "0.1.5")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (string-append "https://download.librepcb.org/releases/" (uri (string-append "https://download.librepcb.org/releases/"
version "/librepcb-" version "-source.zip")) version "/librepcb-" version "-source.zip"))
(sha256 (sha256
(base32 "1b5dkanz3q0y5ag80w0l85hn7axrachb5m9zvyv4zvzrfy09wa88")))) (base32 "0smp1p7wnrj0vh4rmz1cr2krfawc2lzx0pbzmgyay7xdp6jxympr"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(inputs (inputs
`(("qtbase" ,qtbase-5) `(("qtbase" ,qtbase-5)
@ -2863,3 +2849,225 @@ for hooking Linux system calls in user space. This is achieved by
hot-patching the machine code of the standard C library in the memory of hot-patching the machine code of the standard C library in the memory of
a process.") a process.")
(license license:bsd-2)))) (license license:bsd-2))))
(define-public libigl
(package
(name "libigl")
(version "2.3.0")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/libigl/libigl")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32
"004a22ifq2vibgkgvrlyihqimpsfizvq5l448204kwfg3lkycajj"))))
(build-system cmake-build-system)
(arguments
`(#:configure-flags
'("-DLIBIGL_USE_STATIC_LIBRARY=OFF"
"-DLIBIGL_BUILD_TESTS=ON"
"-DLIBIGL_BUILD_TUTORIALS=OFF"
"-DLIBIGL_EXPORT_TARGETS=ON"
;; The following options disable tests for the corresponding libraries.
;; The options do not affect whether the libraries are linked to
;; libigl or not, they are used for tests.
"-DLIBIGL_WITH_COMISO=OFF"
"-DLIBIGL_WITH_CORK=OFF"
"-DLIBIGL_WITH_MATLAB=OFF"
"-DLIBIGL_WITH_MOSEK=OFF"
"-DLIBIGL_WITH_TRIANGLE=OFF" ;; Undefined reference to "triangulate".
"-DLIBIGL_WITH_OPENGL_GLFW_IMGUI=OFF")
#:phases
(modify-phases %standard-phases
(add-after 'unpack 'unpack-external
(lambda _
(setenv "HOME" (getcwd)) ;; cmake needs this to export modules
(mkdir "external")
(copy-recursively (assoc-ref %build-inputs "libigl-glad") "external/glad")
(copy-recursively (assoc-ref %build-inputs "libigl-stb") "external/stb")
(copy-recursively (assoc-ref %build-inputs "libigl-tetgen") "external/tetgen")
(copy-recursively (assoc-ref %build-inputs "libigl-predicates") "external/predicates")))
(add-after 'unpack-external 'patch-cmake
(lambda _
;; Fix references to external libraries
(substitute* "cmake/libigl.cmake"
(("if\\(NOT TARGET Eigen3::Eigen\\)" all)
(string-append "find_package(Eigen3 CONFIG REQUIRED)\n" all))
(("if\\(NOT TARGET CGAL::CGAL\\)" all)
(string-append "find_package(CGAL CONFIG COMPONENTS Core)\n" all))
(("if\\(NOT TARGET tinyxml2\\)" all)
(string-append "find_package(tinyxml2 CONFIG REQUIRED)\n"
"if (NOT TARGET tinyxml2::tinyxml2)"))
(("if\\(NOT TARGET embree\\)" all)
(string-append "find_package(embree 3 CONFIG REQUIRED)\n" all))
(("if\\(NOT TARGET glfw\\)" all)
(string-append "find_package(glfw3 CONFIG REQUIRED)\n" all))
(("igl_download_glad\\(\\)" all) "")
(("igl_download_stb\\(\\)" all) "")
(("igl_download_tetgen\\(\\)" all) "")
(("igl_download_triangle\\(\\)" all) "")
(("igl_download_predicates\\(\\)" all) ""))
(substitute* "tests/CMakeLists.txt"
(("igl_download_test_data\\(\\)") "")
(("set\\(IGL_TEST_DATA.*")
(format #f "set(IGL_TEST_DATA ~a)\n"
(assoc-ref %build-inputs "libigl-test-data")))
(("igl_download_catch2\\(\\)") "find_package(Catch2 CONFIG REQUIRED)")
(("list\\(APPEND CMAKE_MODULE_PATH \\$\\{LIBIGL_EXTERNAL\\}/catch2/contrib\\)")
"")
(("add_subdirectory\\(\\$\\{LIBIGL_EXTERNAL\\}/catch2 catch2\\)") ""))
;; Install otherwise missing headers
(substitute* "cmake/libigl.cmake"
(("install_dir_files\\(copyleft\\)" all)
(string-join (list all
"install_dir_files(copyleft/cgal)"
"install_dir_files(copyleft/opengl)"
"install_dir_files(copyleft/tetgen)"
"install_dir_files(embree)"
"install_dir_files(opengl)"
"install_dir_files(png)"
"install_dir_files(predicates)"
"install_dir_files(xml)")
"\n"))))))))
;; XXX: Inputs are currently only used to build tests.
;; We would need to patch the CMake recipe to build a shared library
;; with all of these.
(inputs
`(("boost" ,boost)
("catch2" ,catch-framework2)
("cgal" ,cgal)
("eigen" ,eigen)
("embree" ,embree)
("glfw" ,glfw)
("gmp" ,gmp)
("mesa" ,mesa)
("mpfr" ,mpfr)
("tinyxml2" ,tinyxml2)
;; When updating this package, update commit fields below according to
;; the hashes listed in "cmake/LibiglDownloadExternal.cmake".
("libigl-test-data"
,(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/libigl/libigl-tests-data")
(commit "19cedf96d70702d8b3a83eb27934780c542356fe")))
(file-name (git-file-name "libigl-test-data" version))
(sha256 (base32 "1wxglrxw74xw4a4jmmjpm8719f3mnlbxbwygjb4ddfixxxyya4i2"))))
("libigl-glad"
,(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/libigl/libigl-glad")
(commit "09b4969c56779f7ddf8e6176ec1873184aec890f")))
(file-name (git-file-name "libigl-glad" version))
(sha256 (base32 "0rwrs7513ylp6gxv7crjzflapcg9p7x04nzfvywgl665vl53rawk"))))
("libigl-stb"
,(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/libigl/libigl-stb.git")
(commit "cd0fa3fcd90325c83be4d697b00214e029f94ca3")))
(file-name (git-file-name "libigl-stb" version))
(sha256 (base32 "0wwlb370z40y63ic3ny6q7lxibhixg2k1pjdkl4ymzv79zld28kj"))))
("libigl-predicates"
,(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/libigl/libigl-predicates.git")
(commit "488242fa2b1f98a9c5bd1441297fb4a99a6a9ae4")))
(file-name (git-file-name "libigl-predicates" version))
(sha256 (base32 "13bd98g8lgcq37i3crj66433z09grnb2xjrcqpwqmyn147rp5wyh"))))
;; TODO: Package tetgen separately from <http://www.tetgen.org>
("libigl-tetgen"
,(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/libigl/tetgen.git")
(commit "4f3bfba3997f20aa1f96cfaff604313a8c2c85b6")))
(file-name (git-file-name "libigl-tetgen" version))
(sha256 (base32 "1k724syssw37py7kwmibk3sfwkkgyjyy7qkijnhn6rjm91g8qxsg"))))))
(home-page "https://libigl.github.io/")
(synopsis "Simple C++ geometry processing library")
(description "This library provides functionality for shape modelling,
visualization, matrix manipulation.")
(license (list license:gpl3 license:mpl2.0))))
(define-public prusa-slicer
(package
(name "prusa-slicer")
(version "2.3.3")
(source
(origin
(method git-fetch)
(uri
(git-reference
(url "https://github.com/prusa3d/PrusaSlicer")
(commit (string-append "version_" version))))
(file-name (git-file-name name version))
(sha256 (base32 "0w0synqi3iz9aigsgv6x1c6sg123fasbx19h4w3ic1l48r8qmpwm"))
(modules '((guix build utils)))
(snippet
'(begin
;; Prusa slicer bundles a lot of dependencies in src/ directory.
;; Most of them contain prusa-specific modifications (e.g. avrdude),
;; but others do not. Here we replace the latter with Guix packages.
;; Remove bundled libraries that were not modified by Prusa Slicer developers.
(delete-file-recursively "src/hidapi")
(delete-file-recursively "src/eigen")
(delete-file-recursively "src/libigl/igl")
(substitute* "src/CMakeLists.txt"
(("add_subdirectory\\(libigl\\)" all)
(string-append
all "\ninclude_directories(libigl INTERFACE libigl::core)"))
(("add_subdirectory\\(hidapi\\)")
"pkg_check_modules(HIDAPI REQUIRED hidapi-hidraw)")
(("include_directories\\(hidapi/include\\)")
"include_directories()"))
(substitute* "src/slic3r/CMakeLists.txt"
(("add_library\\(libslic3r_gui.*" all)
(string-append
all
"\ntarget_include_directories(libslic3r_gui PUBLIC ${HIDAPI_INCLUDE_DIRS})\n"))
(("\\bhidapi\\b") "${HIDAPI_LIBRARIES}"))))))
(build-system cmake-build-system)
(arguments
`(#:configure-flags
'("-DSLIC3R_FHS=1" ;; Use The Filesystem Hierarchy Standard.
"-DSLIC3R_GTK=3" ;; Use GTK+
;; Use wxWidgets 3.0.x.x to prevent GUI crashes when adding support enforcers.
"-DSLIC3R_WX_STABLE=1")))
(native-inputs
`(("pkg-config" ,pkg-config)))
(inputs
`(("boost" ,boost)
("cereal" ,cereal)
("cgal" ,cgal)
("curl" ,curl)
("dbus" ,dbus)
("eigen" ,eigen)
("expat" ,expat)
("glew" ,glew)
("glib" ,glib)
("gmp" ,gmp)
("gtk" ,gtk+)
("hidapi" ,hidapi)
("ilmbase" ,ilmbase)
("libigl" ,libigl)
("libpng" ,libpng)
("mesa" ,mesa)
("mpfr" ,mpfr)
("nlopt" ,nlopt)
("openvdb" ,openvdb)
("pango" ,pango)
("tbb" ,tbb)
("udev" ,eudev)
("wxwidgets" ,wxwidgets)
("zlib" ,zlib)))
(home-page "https://www.prusa3d.com/prusaslicer/")
(synopsis "G-code generator for 3D printers (RepRap, Makerbot, Ultimaker etc.)")
(description "PrusaSlicer takes 3D models (STL, OBJ, AMF) and converts them into
G-code instructions for FFF printers or PNG layers for mSLA 3D printers.")
(license license:agpl3)))

View file

@ -199,7 +199,7 @@ removable devices or support for multimedia.")
(define-public terminology (define-public terminology
(package (package
(name "terminology") (name "terminology")
(version "1.9.0") (version "1.10.0")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (uri
@ -207,7 +207,7 @@ removable devices or support for multimedia.")
"terminology/terminology-" version ".tar.xz")) "terminology/terminology-" version ".tar.xz"))
(sha256 (sha256
(base32 (base32
"0v74858yvrrfy0l2pq7yn6izvqhpkb9gw2jpd3a3khjwv8kw6frz")) "0imk7cjkcjss3zf4hjwmy54pbizm6l6pq553jcx7bpsnhs56bbsz"))
(modules '((guix build utils))) (modules '((guix build utils)))
;; Remove the bundled fonts. ;; Remove the bundled fonts.
(snippet (snippet

View file

@ -41,7 +41,7 @@
(define-public erlang (define-public erlang
(package (package
(name "erlang") (name "erlang")
(version "24.0.2") (version "24.0.5")
(source (origin (source (origin
(method git-fetch) (method git-fetch)
;; The tarball from http://erlang.org/download contains many ;; The tarball from http://erlang.org/download contains many
@ -53,7 +53,7 @@
(file-name (git-file-name name version)) (file-name (git-file-name name version))
(sha256 (sha256
(base32 (base32
"06plnhi1489wqsag5wgm16hb1xd1a8nbnb9gw7635d3fidxyb0wp")) "0f8zr2jxr0v4zcd98zqx99zxdn768vjpzwxsbsd6ss3if405sq2a"))
(patches (search-patches "erlang-man-path.patch")))) (patches (search-patches "erlang-man-path.patch"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(native-inputs (native-inputs

View file

@ -2,7 +2,7 @@
;;; Copyright © 2016 Nikita <nikita@n0.is> ;;; Copyright © 2016 Nikita <nikita@n0.is>
;;; Copyright © 2019 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2019 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2020 Hendursaga <hendursaga@yahoo.com> ;;; Copyright © 2020 Hendursaga <hendursaga@yahoo.com>
;;; Copyright © 2020 Leo Prikler <leo.prikler@student.tugraz.at> ;;; Copyright © 2020 Liliana Marie Prikler <liliana.prikler@gmail.com>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;

View file

@ -9,6 +9,7 @@
;;; Copyright © 2021 raid5atemyhomework <raid5atemyhomework@protonmail.com> ;;; Copyright © 2021 raid5atemyhomework <raid5atemyhomework@protonmail.com>
;;; Copyright © 2021 Stefan Reichör <stefan@xsteve.at> ;;; Copyright © 2021 Stefan Reichör <stefan@xsteve.at>
;;; Copyright © 2021 Noisytoot <noisytoot@disroot.org> ;;; Copyright © 2021 Noisytoot <noisytoot@disroot.org>
;;; Copyright © 2021 Kaelyn Takata <kaelyn.alexi@protonmail.com>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -415,8 +416,8 @@ from a mounted file system.")
(license license:gpl2+))) (license license:gpl2+)))
(define-public bcachefs-tools (define-public bcachefs-tools
(let ((commit "6c42566c6204bb5dcd6af3b97257e548b9d2db67") (let ((commit "37850436dd7dfbe67738749c4d4a2506ffff1ec3")
(revision "9")) (revision "11"))
(package (package
(name "bcachefs-tools") (name "bcachefs-tools")
(version (git-version "0.1" revision commit)) (version (git-version "0.1" revision commit))
@ -428,7 +429,7 @@ from a mounted file system.")
(commit commit))) (commit commit)))
(file-name (git-file-name name version)) (file-name (git-file-name name version))
(sha256 (sha256
(base32 "0xagz0k3li10ydma55mnld0nb2pyfx90vsdvgjflgnx6jw3cq4dq")))) (base32 "040vgxrimahmfs9rhlggfwg0bzl7h9j2ksx3563rh63asjwlhnhi"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
`(#:make-flags `(#:make-flags
@ -1173,7 +1174,7 @@ with the included @command{xfstests-check} helper.")
(define-public zfs (define-public zfs
(package (package
(name "zfs") (name "zfs")
(version "2.1.0") (version "2.1.1")
(outputs '("out" "module" "src")) (outputs '("out" "module" "src"))
(source (source
(origin (origin
@ -1182,7 +1183,7 @@ with the included @command{xfstests-check} helper.")
"/download/zfs-" version "/download/zfs-" version
"/zfs-" version ".tar.gz")) "/zfs-" version ".tar.gz"))
(sha256 (sha256
(base32 "0kzkggwznp4m3503f2m4lcinbl99jg50j4asrwfpfk1862vdrgb0")))) (base32 "1zsc0zkz5cci6pxc0kwzn3xg72qv2fq65phb768y5dgk1784hkxx"))))
(build-system linux-module-build-system) (build-system linux-module-build-system)
(arguments (arguments
`(;; The ZFS kernel module should not be downloaded since the license `(;; The ZFS kernel module should not be downloaded since the license
@ -1276,8 +1277,7 @@ with the included @command{xfstests-check} helper.")
(substitute* '("Makefile.am" "Makefile.in") (substitute* '("Makefile.am" "Makefile.in")
(("\\$\\(prefix)/src") (string-append src "/src"))) (("\\$\\(prefix)/src") (string-append src "/src")))
(substitute* (find-files "udev/rules.d/" ".rules.in$") (substitute* (find-files "udev/rules.d/" ".rules.in$")
(("/sbin/modprobe") (string-append kmod "/bin/modprobe")))) (("/sbin/modprobe") (string-append kmod "/bin/modprobe"))))))
#t))
(replace 'build (replace 'build
(lambda _ (invoke "make"))) (lambda _ (invoke "make")))
(replace 'install (replace 'install
@ -1292,8 +1292,8 @@ with the included @command{xfstests-check} helper.")
(string-append "INSTALL_MOD_PATH=" moddir) (string-append "INSTALL_MOD_PATH=" moddir)
"INSTALL_MOD_STRIP=1") "INSTALL_MOD_STRIP=1")
(install-file "contrib/bash_completion.d/zfs" (install-file "contrib/bash_completion.d/zfs"
(string-append out "/share/bash-completion/completions")) (string-append out
#t)))))) "/share/bash-completion/completions"))))))))
(native-inputs (native-inputs
`(("attr" ,attr) `(("attr" ,attr)
("kmod" ,kmod) ("kmod" ,kmod)

View file

@ -1,7 +1,7 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013 Andreas Enge <andreas@enge.fr> ;;; Copyright © 2013 Andreas Enge <andreas@enge.fr>
;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2016, 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2018 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2018 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de> ;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de>

View file

@ -211,7 +211,7 @@ line client and a client based on Qt.")
(define-public hledger (define-public hledger
(package (package
(name "hledger") (name "hledger")
(version "1.14.2") (version "1.21")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
@ -221,7 +221,7 @@ line client and a client based on Qt.")
".tar.gz")) ".tar.gz"))
(sha256 (sha256
(base32 (base32
"1si9zqparkdq77yji87lhcsrf11fr3gisqwsv82cabhrhc36x6l4")))) "07fcfkmv4cy92njnf2qc7jh0naz96q962hxldcd7hk4k7ddv0mss"))))
(build-system haskell-build-system) (build-system haskell-build-system)
(inputs (inputs
`(("ghc-ansi-terminal" ,ghc-ansi-terminal) `(("ghc-ansi-terminal" ,ghc-ansi-terminal)
@ -230,17 +230,18 @@ line client and a client based on Qt.")
("ghc-data-default" ,ghc-data-default) ("ghc-data-default" ,ghc-data-default)
("ghc-decimal" ,ghc-decimal) ("ghc-decimal" ,ghc-decimal)
("ghc-diff" ,ghc-diff) ("ghc-diff" ,ghc-diff)
("ghc-easytest" ,ghc-easytest)
("ghc-hashable" ,ghc-hashable) ("ghc-hashable" ,ghc-hashable)
("ghc-hledger-lib" ,ghc-hledger-lib) ("ghc-hledger-lib" ,ghc-hledger-lib)
("ghc-lucid" ,ghc-lucid) ("ghc-lucid" ,ghc-lucid)
("ghc-math-functions" ,ghc-math-functions) ("ghc-math-functions" ,ghc-math-functions)
("ghc-megaparsec" ,ghc-megaparsec) ("ghc-megaparsec" ,ghc-megaparsec)
("ghc-mtl-compat" ,ghc-mtl-compat)
("ghc-old-time" ,ghc-old-time) ("ghc-old-time" ,ghc-old-time)
("ghc-pretty-show" ,ghc-pretty-show)
("ghc-regex-tdfa" ,ghc-regex-tdfa) ("ghc-regex-tdfa" ,ghc-regex-tdfa)
("ghc-safe" ,ghc-safe) ("ghc-safe" ,ghc-safe)
("ghc-aeson" ,ghc-aeson)
("ghc-extra" ,ghc-extra)
("ghc-tasty" ,ghc-tasty)
("ghc-timeit" ,ghc-timeit)
("ghc-shakespeare" ,ghc-shakespeare) ("ghc-shakespeare" ,ghc-shakespeare)
("ghc-split" ,ghc-split) ("ghc-split" ,ghc-split)
("ghc-tabular" ,ghc-tabular) ("ghc-tabular" ,ghc-tabular)
@ -249,9 +250,6 @@ line client and a client based on Qt.")
("ghc-utf8-string" ,ghc-utf8-string) ("ghc-utf8-string" ,ghc-utf8-string)
("ghc-utility-ht" ,ghc-utility-ht) ("ghc-utility-ht" ,ghc-utility-ht)
("ghc-wizards" ,ghc-wizards))) ("ghc-wizards" ,ghc-wizards)))
(native-inputs
`(("ghc-test-framework" ,ghc-test-framework)
("ghc-test-framework-hunit" ,ghc-test-framework-hunit)))
(home-page "https://hledger.org") (home-page "https://hledger.org")
(synopsis "Command-line interface for the hledger accounting system") (synopsis "Command-line interface for the hledger accounting system")
(description (description
@ -894,6 +892,33 @@ the Monero GUI client.")
Ledger Nano as a hardware SSH/GPG agent.") Ledger Nano as a hardware SSH/GPG agent.")
(license license:lgpl3))) (license license:lgpl3)))
(define-public trezor-gpg-pinentry-tk
(package
(name "trezor-gpg-pinentry-tk")
(version "0.0.10")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/rendaw/trezor-gpg-pinentry-tk/")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32 "1mblx4favmw4nf7k9rfl00ivv77kgdiwghyz4xv5cp0v410kjaqc"))))
(build-system python-build-system)
(arguments
`(#:tests? #f)) ; No test suite.
(inputs
`(("python-tkinter" ,python "tk")))
(home-page "https://github.com/rendaw/trezor-gpg-pinentry-tk")
(synopsis "GPG pinentry program for use with @code{trezor-agent}")
(description
"This package provides a GPG pinentry program for use with
@code{trezor-agent}, or for people with number-only PINs. It displays
a grid of unlabeled buttons and supports configurable keyboard
settings.")
(license license:bsd-2)))
(define-public python-mnemonic (define-public python-mnemonic
(package (package
(name "python-mnemonic") (name "python-mnemonic")
@ -1676,7 +1701,7 @@ generate a variety of reports from them, and provides a web interface.")
(define-public hledger-web (define-public hledger-web
(package (package
(name "hledger-web") (name "hledger-web")
(version "1.14.1") (version "1.21")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
@ -1684,38 +1709,48 @@ generate a variety of reports from them, and provides a web interface.")
"hledger-web/hledger-web-" version ".tar.gz")) "hledger-web/hledger-web-" version ".tar.gz"))
(sha256 (sha256
(base32 (base32
"0w59nr7mj0nx8z44cvhy1rhlj5rmx0wq4p5nfl4dycfmp7jwvsm1")))) "0ivszqcypw0j2wn4r7fv7dqm1pvr0b1y6rqpxagzyk8cxn3ic9g2"))))
(build-system haskell-build-system) (build-system haskell-build-system)
(arguments
`(#:tests? #f ; TODO: fail.
#:cabal-revision
("1" "1hnw10ibhbafbsfj5lzlxwjg4cjnqr5bb51n6mqbi30qqabgq78x")))
(inputs (inputs
`(("ghc-decimal" ,ghc-decimal) `(("ghc-aeson" ,ghc-aeson)
("ghc-aeson" ,ghc-aeson)
("ghc-blaze-html" ,ghc-blaze-html) ("ghc-blaze-html" ,ghc-blaze-html)
("ghc-blaze-markup" ,ghc-blaze-markup) ("ghc-blaze-markup" ,ghc-blaze-markup)
("ghc-case-insensitive" ,ghc-case-insensitive) ("ghc-case-insensitive" ,ghc-case-insensitive)
("ghc-clientsession" ,ghc-clientsession) ("ghc-clientsession" ,ghc-clientsession)
("ghc-cmdargs" ,ghc-cmdargs) ("ghc-cmdargs" ,ghc-cmdargs)
("ghc-conduit" ,ghc-conduit)
("ghc-conduit-extra" ,ghc-conduit-extra) ("ghc-conduit-extra" ,ghc-conduit-extra)
("ghc-conduit" ,ghc-conduit)
("ghc-data-default" ,ghc-data-default) ("ghc-data-default" ,ghc-data-default)
("ghc-decimal" ,ghc-decimal)
("ghc-extra" ,ghc-extra)
("ghc-hjsmin" ,ghc-hjsmin) ("ghc-hjsmin" ,ghc-hjsmin)
("hledger" ,hledger)
("ghc-hledger-lib" ,ghc-hledger-lib) ("ghc-hledger-lib" ,ghc-hledger-lib)
("ghc-hspec" ,ghc-hspec)
("ghc-http-client" ,ghc-http-client) ("ghc-http-client" ,ghc-http-client)
("ghc-http-conduit" ,ghc-http-conduit) ("ghc-http-conduit" ,ghc-http-conduit)
("ghc-http-types" ,ghc-http-types) ("ghc-http-types" ,ghc-http-types)
("ghc-json" ,ghc-json)
("ghc-megaparsec" ,ghc-megaparsec) ("ghc-megaparsec" ,ghc-megaparsec)
("ghc-semigroups" ,ghc-semigroups) ("ghc-network" ,ghc-network)
("ghc-shakespeare" ,ghc-shakespeare) ("ghc-shakespeare" ,ghc-shakespeare)
("ghc-wai" ,ghc-wai) ("ghc-unix-compat" ,ghc-unix-compat)
("ghc-unordered-containers" ,ghc-unordered-containers)
("ghc-utf8-string" ,ghc-utf8-string)
("ghc-wai-cors" ,ghc-wai-cors)
("ghc-wai-extra" ,ghc-wai-extra) ("ghc-wai-extra" ,ghc-wai-extra)
("ghc-wai" ,ghc-wai)
("ghc-wai-handler-launch" ,ghc-wai-handler-launch) ("ghc-wai-handler-launch" ,ghc-wai-handler-launch)
("ghc-warp" ,ghc-warp) ("ghc-warp" ,ghc-warp)
("ghc-yaml" ,ghc-yaml) ("ghc-yaml" ,ghc-yaml)
("ghc-yesod" ,ghc-yesod)
("ghc-yesod-core" ,ghc-yesod-core) ("ghc-yesod-core" ,ghc-yesod-core)
("ghc-yesod-form" ,ghc-yesod-form) ("ghc-yesod-form" ,ghc-yesod-form)
("ghc-yesod-static" ,ghc-yesod-static))) ("ghc-yesod" ,ghc-yesod)
("ghc-yesod-static" ,ghc-yesod-static)
("ghc-yesod-test" ,ghc-yesod-test)
("hledger" ,hledger)))
(home-page "https://hledger.org") (home-page "https://hledger.org")
(synopsis "Web-based user interface for the hledger accounting system") (synopsis "Web-based user interface for the hledger accounting system")
(description "This package provides a simple Web-based User (description "This package provides a simple Web-based User

View file

@ -455,7 +455,7 @@ ME as far as possible (it only edits ME firmware image files).")
(define-public uefitool (define-public uefitool
(package (package
(name "uefitool") (name "uefitool")
(version "0.27.0") (version "0.28.0")
(source (origin (source (origin
(method git-fetch) (method git-fetch)
(uri (git-reference (uri (git-reference
@ -463,7 +463,7 @@ ME as far as possible (it only edits ME firmware image files).")
(commit version))) (commit version)))
(sha256 (sha256
(base32 (base32
"1i1p823qld927p4f1wcphqcnivb9mq7fi5xmzibxc3g9zzgnyc2h")) "1n2hd2dysi5bv2iyq40phh1jxc48gdwzs414vfbxvcharcwapnja"))
(file-name (git-file-name name version)))) (file-name (git-file-name name version))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
@ -475,8 +475,7 @@ ME as far as possible (it only edits ME firmware image files).")
(replace 'install (replace 'install
(lambda* (#:key outputs #:allow-other-keys) (lambda* (#:key outputs #:allow-other-keys)
(install-file "UEFITool" (string-append (assoc-ref outputs "out") (install-file "UEFITool" (string-append (assoc-ref outputs "out")
"/bin")) "/bin")))))))
#t)))))
(inputs (inputs
`(("qtbase" ,qtbase-5))) `(("qtbase" ,qtbase-5)))
(home-page "https://github.com/LongSoft/UEFITool/") (home-page "https://github.com/LongSoft/UEFITool/")

View file

@ -187,7 +187,7 @@ itself."))))
(uri "https://typodermicfonts.com/wp-content/uploads/2017/06/canada1500.zip") (uri "https://typodermicfonts.com/wp-content/uploads/2017/06/canada1500.zip")
(sha256 (sha256
(base32 (base32
"052rwhyfcz6q0g0nsr21bkbg2qb6sw7wzins5hv80qhdhi77sdaj")))) "0cdcb89ab6q7b6jd898bnvrd1sifbd2xr42qgji98h8d5cq4b6fp"))))
(build-system font-build-system) (build-system font-build-system)
(home-page "https://typodermicfonts.com/canada1500/") (home-page "https://typodermicfonts.com/canada1500/")
(synopsis "Canadian typeface that supports English, French and Aboriginal languages") (synopsis "Canadian typeface that supports English, French and Aboriginal languages")
@ -821,7 +821,7 @@ visual language \"Material Design\".")
(define-public font-borg-sans-mono (define-public font-borg-sans-mono
(package (package
(name "font-borg-sans-mono") (name "font-borg-sans-mono")
(version "0.3.1") (version "0.3.2")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
@ -830,7 +830,7 @@ visual language \"Material Design\".")
"/releases/download/v" version "/borg-sans-mono.zip")) "/releases/download/v" version "/borg-sans-mono.zip"))
(sha256 (sha256
(base32 (base32
"1xxakd9nfb8wz76rh0gbd69gh0mlqs2453g0j516xgxn8bxip2yj")))) "0q16gw3ry9hpgbl2636qq00ap59xyx15jf3gzvx2ybz3gja164c4"))))
(build-system font-build-system) (build-system font-build-system)
(home-page "https://github.com/charje/borg-sans-mono") (home-page "https://github.com/charje/borg-sans-mono")
(synopsis "The Borg Sans Mono font") (synopsis "The Borg Sans Mono font")

View file

@ -847,7 +847,7 @@ maintain the Noto Fonts project.")
(define-public fcft (define-public fcft
(package (package
(name "fcft") (name "fcft")
(version "2.4.1") (version "2.4.5")
(home-page "https://codeberg.org/dnkl/fcft") (home-page "https://codeberg.org/dnkl/fcft")
(source (origin (source (origin
(method git-fetch) (method git-fetch)
@ -855,7 +855,7 @@ maintain the Noto Fonts project.")
(file-name (git-file-name name version)) (file-name (git-file-name name version))
(sha256 (sha256
(base32 (base32
"00rwh5qfayihrq0wjx8pxqw5ah6g5ym6raxvdbqb6g6rk7m2j423")))) "0z4bqap88pydkgcxrsvm3fmcyhi9x7z8knliarvdcvqlk7qnyzfh"))))
(build-system meson-build-system) (build-system meson-build-system)
(native-inputs (native-inputs
`(("check" ,check) `(("check" ,check)
@ -997,18 +997,17 @@ Unicode Charts. It was developed for use with DejaVu Fonts project.")
(define-public libraqm (define-public libraqm
(package (package
(name "libraqm") (name "libraqm")
(version "0.7.1") (version "0.7.2")
(source (source
(origin (origin
(method url-fetch) (method git-fetch)
(uri (string-append "https://github.com/HOST-Oman/libraqm/" (uri (git-reference
"releases/download/v" version "/" (url "https://github.com/HOST-Oman/libraqm")
"raqm-" version ".tar.gz")) (commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256 (sha256
(base32 "0a4q9dziirb85sa9rmkamg2krdhd009di2vlz91njwxcp3q8qj46")))) (base32 "1shcs5l27l7380dvacvhl8wrdq3lix0wnhzvfdh7vx2pkzjs3zk6"))))
(build-system gnu-build-system) (build-system meson-build-system)
(arguments
`(#:configure-flags (list "--disable-static")))
(native-inputs (native-inputs
`(("gtk-doc" ,gtk-doc/stable) `(("gtk-doc" ,gtk-doc/stable)
("pkg-config" ,pkg-config) ("pkg-config" ,pkg-config)

View file

@ -3,7 +3,7 @@
;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com> ;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com>
;;; Copyright © 2015, 2017 Andy Wingo <wingo@pobox.com> ;;; Copyright © 2015, 2017 Andy Wingo <wingo@pobox.com>
;;; Copyright © 2015, 2016, 2017, 2019 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2015, 2016, 2017, 2019 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2015, 2017, 2018, 2019 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2015, 2017, 2018, 2019, 2021 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2015 David Hashe <david.hashe@dhashe.com> ;;; Copyright © 2015 David Hashe <david.hashe@dhashe.com>
;;; Copyright © 2016, 2017, 2019, 2021 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2016, 2017, 2019, 2021 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2016 Kei Kebreau <kkebreau@posteo.net> ;;; Copyright © 2016 Kei Kebreau <kkebreau@posteo.net>
@ -11,7 +11,7 @@
;;; Copyright © 2017, 2018 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2017, 2018 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2017, 2018, 2019, 2020 Marius Bakke <mbakke@fastmail.com> ;;; Copyright © 2017, 2018, 2019, 2020 Marius Bakke <mbakke@fastmail.com>
;;; Copyright © 2017, 2018, 2019 Rutger Helling <rhelling@mykolab.com> ;;; Copyright © 2017, 2018, 2019 Rutger Helling <rhelling@mykolab.com>
;;; Copyright © 2017, 2020 Brendan Tildesley <mail@brendan.scot> ;;; Copyright © 2017, 2020, 2021 Brendan Tildesley <mail@brendan.scot>
;;; Copyright © 2018, 2020, 2021 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2018, 2020, 2021 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2018 Pierre Neidhardt <mail@ambrevar.xyz> ;;; Copyright © 2018 Pierre Neidhardt <mail@ambrevar.xyz>
;;; Copyright © 2018 Stefan Stefanović <stefanx2ovic@gmail.com> ;;; Copyright © 2018 Stefan Stefanović <stefanx2ovic@gmail.com>
@ -22,7 +22,6 @@
;;; Copyright © 2020 Nicolò Balzarotti <nicolo@nixo.xyz> ;;; Copyright © 2020 Nicolò Balzarotti <nicolo@nixo.xyz>
;;; Copyright © 2020 Anders Thuné <asse.97@gmail.com> ;;; Copyright © 2020 Anders Thuné <asse.97@gmail.com>
;;; Copyright © 2020 Raghav Gururajan <raghavgururajan@disroot.org> ;;; Copyright © 2020 Raghav Gururajan <raghavgururajan@disroot.org>
;;; Copyright © 2021 Brendan Tildesley <mail@brendan.scot>
;;; Copyright © 2021 pineapples <guixuser6392@protonmail.com> ;;; Copyright © 2021 pineapples <guixuser6392@protonmail.com>
;;; Copyright © 2021 Sarah Morgensen <iskarian@mgsn.dev> ;;; Copyright © 2021 Sarah Morgensen <iskarian@mgsn.dev>
;;; Copyright © 2021 Robby Zambito <contact@robbyzambito.me> ;;; Copyright © 2021 Robby Zambito <contact@robbyzambito.me>
@ -2117,7 +2116,7 @@ Its features include:
(define-public plymouth (define-public plymouth
(package (package
(name "plymouth") (name "plymouth")
(version "0.9.4") (version "0.9.5")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
@ -2125,7 +2124,7 @@ Its features include:
"plymouth/releases/" name "-" version ".tar.xz")) "plymouth/releases/" name "-" version ".tar.xz"))
(sha256 (sha256
(base32 (base32
"0l8kg7b2vfxgz9gnrn0v2w4jvysj2cirp0nxads5sy05397pl6aa")))) "11nfgw8yzmdbnbmyd1zfvhj4qh19w1nw0nraai08628x6mzjbbpc"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
`(#:configure-flags `(#:configure-flags
@ -2151,8 +2150,7 @@ Its features include:
(add-after 'unpack 'make-reproducible (add-after 'unpack 'make-reproducible
(lambda _ (lambda _
(substitute* "src/main.c" (substitute* "src/main.c"
(("__DATE__") "\"guix\"")) (("__DATE__") "\"guix\""))))
#t))
(add-before 'configure 'fix-docbook (add-before 'configure 'fix-docbook
(lambda* (#:key inputs #:allow-other-keys) (lambda* (#:key inputs #:allow-other-keys)
(substitute* "docs/Makefile.in" (substitute* "docs/Makefile.in"
@ -2163,8 +2161,7 @@ Its features include:
"/manpages/docbook.xsl"))) "/manpages/docbook.xsl")))
(setenv "XML_CATALOG_FILES" (setenv "XML_CATALOG_FILES"
(string-append (assoc-ref inputs "docbook-xml") (string-append (assoc-ref inputs "docbook-xml")
"/xml/dtd/docbook/catalog.xml")) "/xml/dtd/docbook/catalog.xml")))))))
#t)))))
(inputs (inputs
`(("glib" ,glib) `(("glib" ,glib)
("pango" ,pango) ("pango" ,pango)
@ -2172,7 +2169,8 @@ Its features include:
("libpng" ,libpng) ("libpng" ,libpng)
("eudev" ,eudev))) ("eudev" ,eudev)))
(native-inputs (native-inputs
`(("pkg-config" ,pkg-config) `(("gettext" ,gettext-minimal)
("pkg-config" ,pkg-config)
("libxslt" ,libxslt) ("libxslt" ,libxslt)
("docbook-xsl" ,docbook-xsl) ("docbook-xsl" ,docbook-xsl)
("docbook-xml" ,docbook-xml))) ("docbook-xml" ,docbook-xml)))

View file

@ -15,13 +15,14 @@
;;; Copyright © 2017, 2019 Rutger Helling <rhelling@mykolab.com> ;;; Copyright © 2017, 2019 Rutger Helling <rhelling@mykolab.com>
;;; Copyright © 2018 Marius Bakke <mbakke@fastmail.com> ;;; Copyright © 2018 Marius Bakke <mbakke@fastmail.com>
;;; Copyright © 2019 Pierre Neidhardt <mail@ambrevar.xyz> ;;; Copyright © 2019 Pierre Neidhardt <mail@ambrevar.xyz>
;;; Copyright © 2019, 2020, 2021 Leo Prikler <leo.prikler@student.tugraz.at> ;;; Copyright © 2019, 2020, 2021 Liliana Marie Prikler <liliana.prikler@gmail.com>
;;; Copyright © 2019 Jethro Cao <jethrocao@gmail.com> ;;; Copyright © 2019 Jethro Cao <jethrocao@gmail.com>
;;; Copyright © 2020, 2021 Nicolas Goaziou <mail@nicolasgoaziou.fr> ;;; Copyright © 2020, 2021 Nicolas Goaziou <mail@nicolasgoaziou.fr>
;;; Copyright © 2020 Timotej Lazar <timotej.lazar@araneo.si> ;;; Copyright © 2020 Timotej Lazar <timotej.lazar@araneo.si>
;;; Copyright © 2020 Giacomo Leidi <goodoldpaul@autistici.org> ;;; Copyright © 2020 Giacomo Leidi <goodoldpaul@autistici.org>
;;; Copyright © 2021 Alexandru-Sergiu Marton <brown121407@posteo.ro> ;;; Copyright © 2021 Alexandru-Sergiu Marton <brown121407@posteo.ro>
;;; Copyright © 2021 Dmitry Polyakov <polyakov@liltechdude.xyz> ;;; Copyright © 2021 Dmitry Polyakov <polyakov@liltechdude.xyz>
;;; Copyright © 2020-2021 James Smith <jsubuntuxp@disroot.org>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -39,7 +40,7 @@
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu packages game-development) (define-module (gnu packages game-development)
#:use-module (srfi srfi-1) #:use-module ((srfi srfi-1) #:hide (zip))
#:use-module (ice-9 match) #:use-module (ice-9 match)
#:use-module ((guix licenses) #:prefix license:) #:use-module ((guix licenses) #:prefix license:)
#:use-module (guix packages) #:use-module (guix packages)
@ -55,6 +56,7 @@
#:use-module (gnu packages audio) #:use-module (gnu packages audio)
#:use-module (gnu packages autotools) #:use-module (gnu packages autotools)
#:use-module (gnu packages base) #:use-module (gnu packages base)
#:use-module (gnu packages bash)
#:use-module (gnu packages boost) #:use-module (gnu packages boost)
#:use-module (gnu packages compression) #:use-module (gnu packages compression)
#:use-module (gnu packages check) #:use-module (gnu packages check)
@ -90,6 +92,7 @@
#:use-module (gnu packages pulseaudio) #:use-module (gnu packages pulseaudio)
#:use-module (gnu packages python) #:use-module (gnu packages python)
#:use-module (gnu packages python-xyz) #:use-module (gnu packages python-xyz)
#:use-module (gnu packages readline)
#:use-module (gnu packages qt) #:use-module (gnu packages qt)
#:use-module (gnu packages sdl) #:use-module (gnu packages sdl)
#:use-module (gnu packages sphinx) #:use-module (gnu packages sphinx)
@ -99,6 +102,7 @@
#:use-module (gnu packages tls) #:use-module (gnu packages tls)
#:use-module (gnu packages video) #:use-module (gnu packages video)
#:use-module (gnu packages web) #:use-module (gnu packages web)
#:use-module (gnu packages wxwidgets)
#:use-module (gnu packages xdisorg) #:use-module (gnu packages xdisorg)
#:use-module (gnu packages xiph) #:use-module (gnu packages xiph)
#:use-module (gnu packages xml) #:use-module (gnu packages xml)
@ -447,10 +451,71 @@ GUI toolkit, lighting and physics frameworks and @code{Tiled} TMX format
support.") support.")
(license license:gpl3+))) (license license:gpl3+)))
(define-public slade
(package
(name "slade")
(version "3.1.13")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/sirjuddington/SLADE")
(commit version)))
(sha256 (base32 "009yc5m6y074wfalvwbrnv2zsmaf9yhbi8hzgs973di0zqnqv011"))
(file-name (git-file-name name version))))
(build-system cmake-build-system)
(arguments
'(#:configure-flags
(list "-DWX_GTK3=ON" "-DNO_WEBVIEW=ON"
(string-append "-DWITH_WXPATH="
(assoc-ref %build-inputs "wxwidgets") "/bin")
(string-append "-DwxWidgets_LIBRARIES="
(assoc-ref %build-inputs "wxwidgets") "/lib"))
#:phases
(modify-phases %standard-phases
(add-before 'build 'reset-slade.pk3-timestamps
;; This is neccessary to make slade reproducible due to
;; <https://bugs.gnu.org/44741>. TODO: Remove on next core update
;; cycle.
(lambda _
(invoke "find" "../source/dist/res" "-exec" "touch"
"--no-dereference" "-t" "197001010000.00" "{}"
"+")))
(add-after 'install 'wrap-with-x11-gdk-backend
;; Set GDK_BACKEND to x11 to prevent crash on Wayland.
;; See https://github.com/sirjuddington/SLADE/issues/1097 for details.
(lambda* (#:key outputs #:allow-other-keys)
(wrap-program
(string-append (assoc-ref outputs "out")
"/bin/slade")
'("GDK_BACKEND" = ("x11"))))))
#:tests? #f)) ;; No test suite.
(inputs
`(("bash" ,bash-minimal)
("curl" ,curl)
("fluidsynth" ,fluidsynth)
("freeimage" ,freeimage)
("ftgl" ,ftgl)
("glew" ,glew)
("gtk+" ,gtk+)
("sfml" ,sfml)
("wxwidgets" ,wxwidgets-3.1)))
(native-inputs
`(("pkg-config" ,pkg-config)
("which" ,which)
("zip" ,zip)))
(home-page "https://slade.mancubus.net")
(synopsis "Doom game data editor")
(description "SLADE3 is a modern editor for Doom-engine based games and
source ports. It has the ability to view, modify, and write many different game-
specific formats, and even convert between some of them, or from/to other generic
formats such as PNG.")
(license license:gpl2+)))
(define-public tiled (define-public tiled
(package (package
(name "tiled") (name "tiled")
(version "1.5.0") (version "1.7.2")
(source (origin (source (origin
(method git-fetch) (method git-fetch)
(uri (git-reference (uri (git-reference
@ -459,7 +524,7 @@ support.")
(file-name (git-file-name name version)) (file-name (git-file-name name version))
(sha256 (sha256
(base32 (base32
"1prajkx1xpp3csa0xpkrn3c2cnzvmwzxgrqb9d3gqszp3sllr2dg")))) "1ifxh3sv6gz32gahgi7ba0ivcw5mfgwnrw6iycpav150w9xla43i"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(inputs (inputs
`(("qtbase" ,qtbase-5) `(("qtbase" ,qtbase-5)
@ -495,16 +560,16 @@ clone.")
(define-public tsukundere (define-public tsukundere
(package (package
(name "tsukundere") (name "tsukundere")
(version "0.3.2") (version "0.4.1")
(source (origin (source (origin
(method git-fetch) (method git-fetch)
(uri (git-reference (uri (git-reference
(url "https://gitlab.com/leoprikler/tsukundere") (url "https://gitlab.com/lilyp/tsukundere")
(commit version))) (commit version)))
(file-name (git-file-name name version)) (file-name (git-file-name name version))
(sha256 (sha256
(base32 (base32
"05y3nj8vpn40hfr2y29p8pa9hhpzibhbvfzpm0dlphjh9crq3ii4")))) "11glghnff27rqh2s34g51afg93g3f5ryfz9mkyb7qj35ngl8vw5f"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
`(#:modules ((ice-9 match) `(#:modules ((ice-9 match)
@ -534,9 +599,12 @@ clone.")
((label . pkg) ((label . pkg)
(and (string-prefix? "guile-" label) pkg))) (and (string-prefix? "guile-" label) pkg)))
inputs)))) inputs))))
(substitute* "bin/tsukundere" (substitute* "tsukundere.scm"
(("exec guile (.*)" _ args) (("exec guile (.*)" _ args)
(string-append (string-append
;; XXX: Prevent Guile-SDL2 from blowing up by not knowing
;; where the SDL2 libaries are.
"unset LD_LIBRARY_PATH\n"
(format #f "export GUILE_LOAD_PATH=\"~@?\"~%" (format #f "export GUILE_LOAD_PATH=\"~@?\"~%"
"~{~a~^:~}" (map scm pkgs)) "~{~a~^:~}" (map scm pkgs))
(format #f "export GUILE_LOAD_COMPILED_PATH=\"~@?\"~%" (format #f "export GUILE_LOAD_COMPILED_PATH=\"~@?\"~%"
@ -550,12 +618,15 @@ clone.")
("automake" ,automake) ("automake" ,automake)
("gettext" ,gettext-minimal) ("gettext" ,gettext-minimal)
("guile" ,guile-3.0) ("guile" ,guile-3.0)
("libtool" ,libtool)
("pkg-config" ,pkg-config) ("pkg-config" ,pkg-config)
("texinfo" ,texinfo))) ("texinfo" ,texinfo)))
(inputs (inputs
`(("guile-sdl2" ,guile3.0-sdl2) `(("guile-sdl2" ,guile3.0-sdl2)
("guile" ,guile-3.0))) ("guile" ,guile-3.0)
(home-page "https://gitlab.com/leoprikler/tsukundere") ("pango" ,pango)
("sdl2" ,sdl2)))
(home-page "https://gitlab.com/lilyp/tsukundere")
(synopsis "Visual novel engine") (synopsis "Visual novel engine")
(description "Tsukundere is a game engine geared heavily towards the (description "Tsukundere is a game engine geared heavily towards the
development of visual novels, written on top of Guile-SDL2. It is still development of visual novels, written on top of Guile-SDL2. It is still
@ -758,35 +829,39 @@ programming language.")
(license license:zlib))) (license license:zlib)))
(define-public love-nuklear (define-public love-nuklear
(let ((version "v2.6") (package
(commit "fef4e00a602efb16c57ae962850b6e7a01f7a29a")) (name "love-nuklear")
(package (version "2.6.1")
(name "love-nuklear") (source (origin
(version (git-version version "1" commit)) (method git-fetch)
(source (origin (uri (git-reference
(method git-fetch) (url "https://github.com/keharriso/love-nuklear/")
(uri (git-reference (commit (string-append "v" version))
(url "https://github.com/keharriso/love-nuklear/") (recursive? #t)))
(commit commit) ;; NOTE: the HEAD of the Nuklear git-submodule is at commit
(recursive? #t))) ;; "adc52d710fe3c87194b99f540c53e82eb75c2521" of Oct 1 2019
;; NOTE: the HEAD of the Nuklear git-submodule is at commit (file-name (git-file-name name version))
;; "adc52d710fe3c87194b99f540c53e82eb75c2521" of Oct 1 2019 (sha256
(file-name (git-file-name name version)) (base32
(sha256 "090xp5c975155hd1pa7bdssdlawvygs5s6icdkwbyc8il5kg5kgv"))))
(base32 (build-system cmake-build-system)
"15qmy8mfwkxy2x9rmxs6f9cyvjvwwj6yf78bs863xmc56dmjzzbn")))) (arguments
(build-system cmake-build-system) `(#:build-type "Release"
(arguments #:tests? #f
`(#:build-type "Release" #:phases
#:tests? #f)) (modify-phases %standard-phases
(inputs (add-after 'unpack 'patch-cmake
`(("luajit" ,luajit))) (lambda _
(synopsis "Lightweight immediate mode GUI for LÖVE games") (substitute* "CMakeLists.txt"
(description "LÖVE is a Lua framework for making 2D games. Nuklear (("DESTINATION .") "DESTINATION lib/love")))))))
(inputs
`(("luajit" ,luajit)))
(synopsis "Lightweight immediate mode GUI for LÖVE games")
(description "LÖVE is a Lua framework for making 2D games. Nuklear
is a minimal state immediate mode graphical user interface toolkit. This is a minimal state immediate mode graphical user interface toolkit. This
package is the Nuklear bindings for LÖVE created by Kevin Harrison.") package is the Nuklear bindings for LÖVE created by Kevin Harrison.")
(home-page "https://github.com/keharriso/love-nuklear/") (home-page "https://github.com/keharriso/love-nuklear/")
(license license:expat)))) (license license:expat)))
(define-public allegro-4 (define-public allegro-4
(package (package
@ -830,7 +905,7 @@ etc.")
(define-public allegro (define-public allegro
(package (package
(name "allegro") (name "allegro")
(version "5.2.5.0") (version "5.2.7.0")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "https://github.com/liballeg/allegro5/releases" (uri (string-append "https://github.com/liballeg/allegro5/releases"
@ -838,7 +913,7 @@ etc.")
version ".tar.gz")) version ".tar.gz"))
(sha256 (sha256
(base32 (base32
"06dpkfnac8w3pq36834nn2iij3ajz6prladqd0w92lq39aiqv5jr")))) "034pmbmbq6jagpp4lhnyjqmf8gcz5fx74d9rknrm7d4wv4cv7qy1"))))
(build-system cmake-build-system) (build-system cmake-build-system)
(arguments `(#:tests? #f)) ; there are no tests (arguments `(#:tests? #f)) ; there are no tests
(inputs (inputs
@ -846,7 +921,7 @@ etc.")
`(("flac" ,flac) `(("flac" ,flac)
("freetype" ,freetype) ("freetype" ,freetype)
("glu" ,glu) ("glu" ,glu)
("gtk" ,gtk+-2) ("gtk" ,gtk+)
("libjpeg" ,libjpeg-turbo) ("libjpeg" ,libjpeg-turbo)
("libpng" ,libpng) ("libpng" ,libpng)
("libtheora" ,libtheora) ("libtheora" ,libtheora)
@ -1959,28 +2034,30 @@ a 2D editor view.")
(define-public guile-chickadee (define-public guile-chickadee
(package (package
(name "guile-chickadee") (name "guile-chickadee")
(version "0.7.0") (version "0.8.0")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "https://files.dthompson.us/chickadee/" (uri (string-append "https://files.dthompson.us/chickadee/"
"chickadee-" version ".tar.gz")) "chickadee-" version ".tar.gz"))
(sha256 (sha256
(base32 (base32
"199y4kc28va6klfs19h998sfh7vx9spnrvjw7p92i47q5a7jdcp6")))) "1k2dml2z57lnc36wrmwhh7avnpczxgxnshlfhpbk174vg6v609n0"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
'(#:make-flags '("GUILE_AUTO_COMPILE=0"))) '(#:make-flags '("GUILE_AUTO_COMPILE=0")))
(propagated-inputs (propagated-inputs
`(("guile-opengl" ,guile3.0-opengl) `(("guile-opengl" ,guile3.0-opengl)
("guile-sdl2" ,guile3.0-sdl2))) ("guile-sdl2" ,guile-sdl2)))
(inputs (inputs
`(("freetype" ,freetype) `(("freetype" ,freetype)
("guile" ,guile-3.0) ("guile" ,guile-3.0-latest)
("libvorbis" ,libvorbis) ("libvorbis" ,libvorbis)
("mpg123" ,mpg123) ("mpg123" ,mpg123)
("openal" ,openal))) ("openal" ,openal)
("readline" ,readline)))
(native-inputs (native-inputs
`(("pkg-config" ,pkg-config) `(("guile" ,guile-3.0-latest)
("pkg-config" ,pkg-config)
("texinfo" ,texinfo))) ("texinfo" ,texinfo)))
(home-page "https://dthompson.us/projects/chickadee.html") (home-page "https://dthompson.us/projects/chickadee.html")
(synopsis "Game development toolkit for Guile Scheme with SDL2 and OpenGL") (synopsis "Game development toolkit for Guile Scheme with SDL2 and OpenGL")

View file

@ -45,6 +45,7 @@
;;; Copyright © 2019, 2020, 2021 Guillaume Le Vaillant <glv@posteo.net> ;;; Copyright © 2019, 2020, 2021 Guillaume Le Vaillant <glv@posteo.net>
;;; Copyright © 2019, 2020 Timotej Lazar <timotej.lazar@araneo.si> ;;; Copyright © 2019, 2020 Timotej Lazar <timotej.lazar@araneo.si>
;;; Copyright © 2019 Josh Holland <josh@inv.alid.pw> ;;; Copyright © 2019 Josh Holland <josh@inv.alid.pw>
;;; Copyright © 2019 Pkill -9 <pkill9@runbox.com>
;;; Copyright © 2017, 2019 Hartmut Goebel <h.goebel@crazy-compilers.com> ;;; Copyright © 2017, 2019 Hartmut Goebel <h.goebel@crazy-compilers.com>
;;; Copyright © 2020 Alberto Eleuterio Flores Guerrero <barbanegra+guix@posteo.mx> ;;; Copyright © 2020 Alberto Eleuterio Flores Guerrero <barbanegra+guix@posteo.mx>
;;; Copyright © 2020 Naga Malleswari <nagamalli@riseup.net> ;;; Copyright © 2020 Naga Malleswari <nagamalli@riseup.net>
@ -53,7 +54,7 @@
;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com> ;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com>
;;; Copyright © 2020, 2021 Michael Rohleder <mike@rohleder.de> ;;; Copyright © 2020, 2021 Michael Rohleder <mike@rohleder.de>
;;; Copyright © 2020 Trevor Hass <thass@okstate.edu> ;;; Copyright © 2020 Trevor Hass <thass@okstate.edu>
;;; Copyright © 2020, 2021 Leo Prikler <leo.prikler@student.tugraz.at> ;;; Copyright © 2020, 2021 Liliana Marie Prikler <liliana.prikler@gmail.com>
;;; Copyright © 2020 Lu hux <luhux@outlook.com> ;;; Copyright © 2020 Lu hux <luhux@outlook.com>
;;; Copyright © 2020 Tomás Ortín Fernández <tomasortin@mailbox.org> ;;; Copyright © 2020 Tomás Ortín Fernández <tomasortin@mailbox.org>
;;; Copyright © 2021 Olivier Rojon <o.rojon@posteo.net> ;;; Copyright © 2021 Olivier Rojon <o.rojon@posteo.net>
@ -63,7 +64,7 @@
;;; Copyright © 2021 Felix Gruber <felgru@posteo.net> ;;; Copyright © 2021 Felix Gruber <felgru@posteo.net>
;;; Copyright © 2021 Solene Rapenne <solene@perso.pw> ;;; Copyright © 2021 Solene Rapenne <solene@perso.pw>
;;; Copyright © 2021 Noisytoot <noisytoot@disroot.org> ;;; Copyright © 2021 Noisytoot <noisytoot@disroot.org>
;;; Copyright © 2019 Pkill -9 <pkill9@runbox.com> ;;; Copyright © 2021 Petr Hodina <phodina@protonmail.com>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -971,7 +972,7 @@ want what you have.")
;; Strip image URLs as they point towards non-free web services ;; Strip image URLs as they point towards non-free web services
'(substitute* "cockatrice/src/settings/downloadsettings.cpp" '(substitute* "cockatrice/src/settings/downloadsettings.cpp"
(("downloadURLs.append\\(\".*\"\\);") ""))))) (("downloadURLs.append\\(\".*\"\\);") "")))))
(build-system cmake-build-system) (build-system qt-build-system)
(arguments (arguments
`(#:configure-flags '("-DWITH_SERVER=1" `(#:configure-flags '("-DWITH_SERVER=1"
"-DWITH_CLIENT=1" "-DWITH_CLIENT=1"
@ -1000,7 +1001,7 @@ allows users to brew while offline.")
(define-public corsix-th (define-public corsix-th
(package (package
(name "corsix-th") (name "corsix-th")
(version "0.65") (version "0.65.1")
(source (source
(origin (origin
(method git-fetch) (method git-fetch)
@ -1009,7 +1010,7 @@ allows users to brew while offline.")
(commit (string-append "v" version)))) (commit (string-append "v" version))))
(file-name (git-file-name name version)) (file-name (git-file-name name version))
(sha256 (sha256
(base32 "0hp7da7b73dpn1h22rw3h8w6aaj9azn18qnp3ap3lrlqhj4fzcb3")))) (base32 "0hw92ln9jm9v55drmbfqjng58yshgwfpv7fqynryrg3gvg8zhbvh"))))
(build-system cmake-build-system) (build-system cmake-build-system)
(arguments (arguments
`(#:phases `(#:phases
@ -1133,6 +1134,34 @@ regular @command{cat}, but it also adds terminal escape codes between
characters and lines resulting in a rainbow effect.") characters and lines resulting in a rainbow effect.")
(license license:wtfpl2)))) (license license:wtfpl2))))
(define-public falltergeist
(package
(name "falltergeist")
(version "0.3.1")
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/falltergeist/falltergeist")
(commit version)))
(file-name (git-file-name name version))
(sha256
(base32
"05cg58i2g32wbmrvmdsicic8xs83gld3qr1p7r4lnlckcl1l7dy4"))))
(build-system cmake-build-system)
(arguments
`(#:tests? #f)) ; no tests provided
(native-inputs `(("pkg-config" ,pkg-config)))
(inputs `(("sdl" ,(sdl-union (list sdl2
sdl2-image
sdl2-mixer)))
("glew" ,glew)
("glm" ,glm)))
(home-page "https://falltergeist.org/")
(synopsis "Fallout 2 game engine")
(description "This package provides the Fallout 2 game engine. Game data
should be placed in @file{~/.local/share/falltergeist}.")
(license license:gpl3+)))
(define-public foobillard++ (define-public foobillard++
;; Even though this latest revision is old already, stable release is ;; Even though this latest revision is old already, stable release is
;; lagging way behind it, and has issues with textures rendering. ;; lagging way behind it, and has issues with textures rendering.
@ -1460,6 +1489,48 @@ automata. The following features are available:
@end enumerate") @end enumerate")
(license license:gpl2+))) (license license:gpl2+)))
(define-public joycond
(let ((commit "f9a66914622514c13997c2bf7ec20fa98e9dfc1d")
(revision "1"))
(package
(name "joycond")
(version (git-version "0.1.0" revision commit))
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/DanielOgorchock/joycond")
(commit commit)))
(file-name (git-file-name name version))
(sha256
(base32 "07z86yp27vxc0b44jgvf1vpa69rh3wdvd1xbzcsrj3f32743pv5a"))))
(build-system cmake-build-system)
(arguments
`(#:tests? #f ;no test suite
#:phases
(modify-phases %standard-phases
(add-after 'unpack 'fix-bin-location
(lambda* (#:key outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out")))
(substitute* "CMakeLists.txt"
(("/lib/udev/rules.d")
(string-append out "/lib/udev/rules.d"))
(("/etc/systemd/system")
(string-append out "/etc/systemd/system"))
(("/etc/modules-load.d")
(string-append out "/etc/modules-load.d"))
(("/usr/bin")
(string-append out "/bin")))))))))
(native-inputs `(("pkg-config" ,pkg-config)))
(inputs
`(("eudev" ,eudev)
("libevdev" ,libevdev)))
(home-page "https://github.com/DanielOgorchock/joycond")
(synopsis "Joy-Con controller daemon")
(description "This package provides a userspace daemon for the Nintendo
Joy-Con controllers.")
(license license:gpl3))))
(define-public julius (define-public julius
(package (package
(name "julius") (name "julius")
@ -3869,15 +3940,16 @@ This game is based on the GPL version of the famous game TuxRacer.")
(define-public supertuxkart (define-public supertuxkart
(package (package
(name "supertuxkart") (name "supertuxkart")
(version "1.2") (version "1.3")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (string-append "mirror://sourceforge/supertuxkart/SuperTuxKart/" (uri (string-append "https://github.com/supertuxkart/stk-code/"
"releases/download/"
version "/SuperTuxKart-" version "-src.tar.xz")) version "/SuperTuxKart-" version "-src.tar.xz"))
(sha256 (sha256
(base32 (base32
"0dvx56hmy6wdhl7m9dw8zc1n3jqfp05gnxl6zs1rbfdyzl5dybh5")) "1z9z13zarv28h4jrmjna5hr6m9266pm7c2kgiwhqls01k06ypazf"))
(modules '((guix build utils))) (modules '((guix build utils)))
(snippet (snippet
;; Delete bundled library sources ;; Delete bundled library sources
@ -3887,17 +3959,18 @@ This game is based on the GPL version of the famous game TuxRacer.")
;; here: http://forum.freegamedev.net/viewtopic.php?f=17&t=3906 ;; here: http://forum.freegamedev.net/viewtopic.php?f=17&t=3906
;; FIXME: try to unbundle angelscript, libmcpp and libraqm ;; FIXME: try to unbundle angelscript, libmcpp and libraqm
(for-each delete-file-recursively (for-each delete-file-recursively
'("lib/glew" '("lib/dnsc"
"lib/wiiuse" "lib/enet"
"lib/enet")) "lib/mojoal"
"lib/wiiuse"))
#t)))) #t))))
(build-system cmake-build-system) (build-system cmake-build-system)
(arguments (arguments
`(#:tests? #f ; no check target `(#:tests? #f ; no check target
#:configure-flags #:configure-flags
(list "-DUSE_WIIUSE=0" (list "-DUSE_WIIUSE=0"
"-DUSE_SYSTEM_GLEW=TRUE"
"-DUSE_SYSTEM_ENET=TRUE" "-DUSE_SYSTEM_ENET=TRUE"
"-DUSE_CRYPTO_OPENSSL=TRUE"
;; In order to use the system ENet library, IPv6 support (added in ;; In order to use the system ENet library, IPv6 support (added in
;; SuperTuxKart version 1.1) must be disabled. ;; SuperTuxKart version 1.1) must be disabled.
"-DUSE_IPV6=FALSE" "-DUSE_IPV6=FALSE"
@ -3915,6 +3988,7 @@ This game is based on the GPL version of the famous game TuxRacer.")
("mesa" ,mesa) ("mesa" ,mesa)
("openal" ,openal) ("openal" ,openal)
("sdl2" ,sdl2) ("sdl2" ,sdl2)
("sqlite" ,sqlite)
("zlib" ,zlib) ("zlib" ,zlib)
;; The following input is needed to build the bundled and modified ;; The following input is needed to build the bundled and modified
;; version of irrlicht. ;; version of irrlicht.
@ -4708,7 +4782,7 @@ is attributed to Albert Einstein.")
(define-public powwow (define-public powwow
(package (package
(name "powwow") (name "powwow")
(version "1.2.22") (version "1.2.23")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append (uri (string-append
@ -4716,7 +4790,7 @@ is attributed to Albert Einstein.")
version ".tar.gz")) version ".tar.gz"))
(sha256 (sha256
(base32 (base32
"12i11b8zxg8vdb9d6ims8qy2lmwwr42rcqbwq3vsa1x94s51bcbp")))) "1wkl6j91pp40aps2hhnsv0bndgq49smfffws4hqcn7847bpnwwm6"))))
(inputs (inputs
`(("ncurses" ,ncurses))) `(("ncurses" ,ncurses)))
(build-system gnu-build-system) (build-system gnu-build-system)
@ -6435,14 +6509,14 @@ fish. The whole game is accompanied by quiet, comforting music.")
(define-public crawl (define-public crawl
(package (package
(name "crawl") (name "crawl")
(version "0.27.0") (version "0.27.1")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (string-append "https://github.com/crawl/crawl/releases/download/" (uri (string-append "https://github.com/crawl/crawl/releases/download/"
version "/stone_soup-" version "-nodeps.tar.xz")) version "/stone_soup-" version "-nodeps.tar.xz"))
(sha256 (sha256
(base32 "0hzkzpqmydxm1zjkdm7k4w3hldsqin3pwkj7jmfj4jijkr0zg9nq")) (base32 "0nkhyhrrma8gmwxp15j84cn1k2yvyq7ar9rd0j2qjjlv2kdis5z2"))
(patches (search-patches "crawl-upgrade-saves.patch")))) (patches (search-patches "crawl-upgrade-saves.patch"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(inputs (inputs
@ -9300,6 +9374,7 @@ play with up to four players simultaneously. It has network support.")
(method url-fetch) (method url-fetch)
(uri (string-append "https://www.hedgewars.org/download/releases/" (uri (string-append "https://www.hedgewars.org/download/releases/"
"hedgewars-src-" version ".tar.bz2")) "hedgewars-src-" version ".tar.bz2"))
(patches (search-patches "hedgewars-network-bsd.patch"))
(sha256 (sha256
(base32 (base32
"0nqm9w02m0xkndlsj6ys3wr0ik8zc14zgilq7k6fwjrf3zk385i1")))) "0nqm9w02m0xkndlsj6ys3wr0ik8zc14zgilq7k6fwjrf3zk385i1"))))
@ -9986,21 +10061,21 @@ win.")
(define-public freeorion (define-public freeorion
(package (package
(name "freeorion") (name "freeorion")
(version "0.4.10") (version "0.4.10.2")
(source (source
(origin (origin
(method url-fetch) (method git-fetch)
(uri (string-append "https://github.com/freeorion/freeorion/releases/" (uri (git-reference
"download/v" version "/FreeOrion_v" version (url "https://github.com/freeorion/freeorion")
"_2020-07-10.f3d403e_Source.tar.gz")) (commit (string-append "v" version))))
(sha256 (sha256
(base32 "12xspixrkx6mmmsdqjha0hg02r4y73pk229l0wjq9s0yp8nb8ap7")) (base32 "12fhwa3cs6lvdbdhina310qk2g7zcphldsh7ibsbxn8d1m731xlk"))
(file-name (git-file-name name version))
(modules '((guix build utils))) (modules '((guix build utils)))
(snippet (snippet
'(begin '(begin
;; There are some bundled fonts. ;; There are some bundled fonts.
(for-each delete-file-recursively '("default/data/fonts")) (for-each delete-file-recursively '("default/data/fonts"))))))
#t))))
(build-system cmake-build-system) (build-system cmake-build-system)
(arguments (arguments
'(#:tests? #f ;no test '(#:tests? #f ;no test
@ -12479,6 +12554,62 @@ do so you need to explore the island, find food, build a shelter and try to
get attention, so you get found.") get attention, so you get found.")
(license license:cc-by4.0)))) (license license:cc-by4.0))))
(define-public sdlpop
(package
(name "sdlpop")
(version "1.22")
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/NagyD/SDLPoP")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32
"1yy5r1r0hv0xggk8qd8bwk2zy7abpv89nikq4flqgi53fc5q9xl7"))))
(build-system gnu-build-system)
(arguments
`(#:tests? #f ; no tests provided
#:phases
(modify-phases %standard-phases
(delete 'configure)
(add-before 'build 'prepare-build
;; Set correct environment for SDL.
(lambda* (#:key inputs #:allow-other-keys)
(setenv "CPATH"
(string-append (assoc-ref inputs "sdl")
"/include/SDL2:"
(or (getenv "CPATH") "")))))
(add-after 'unpack 'chdir
(lambda _
(chdir "src")))
(replace 'install
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(bin (string-append out "/bin"))
(opt (string-append out "/opt/sdlpop"))
(app (string-append out "/usr/share/applications"))
(template "src/SDLPoP.desktop.template"))
(chdir "..")
(install-file "prince" bin)
(substitute* template (("\\$ROOT") out))
(install-file template app)
(rename-file (string-append app "/SDLPoP.desktop.template")
(string-append app "/SDLPoP.desktop"))
(install-file "SDLPoP.ini" opt)
(copy-recursively "data" (string-append bin "/data"))
(copy-recursively "doc" opt)
(copy-recursively "mods" opt)))))))
(native-inputs `(("pkg-config" ,pkg-config)))
(inputs `(("sdl" ,(sdl-union (list sdl2
sdl2-image
sdl2-mixer)))))
(synopsis "Port of Prince of Persia game")
(description "This package provides port of Prince of Persia, based on the
disassembly of the DOS version, extended with new features.")
(home-page "https://github.com/NagyD/SDLPoP")
(license license:gpl3+)))
(define-public fheroes2 (define-public fheroes2
(package (package
(name "fheroes2") (name "fheroes2")

View file

@ -39,7 +39,7 @@
(define-public gramps (define-public gramps
(package (package
(name "gramps") (name "gramps")
(version "5.1.3") (version "5.1.4")
(source (source
(origin (origin
(method git-fetch) (method git-fetch)
@ -48,7 +48,7 @@
(commit (string-append "v" version)))) (commit (string-append "v" version))))
(file-name (git-file-name name version)) (file-name (git-file-name name version))
(sha256 (sha256
(base32 "109dwkswz2h2328xkqk2zj736d117s9pp7rz5cc1qg2vxn1lpm93")))) (base32 "00358nzyw686ypqv45imc5k9frcqnhla0hpx9ynna3iy6iz5006x"))))
(build-system python-build-system) (build-system python-build-system)
(native-inputs (native-inputs
`(("gettext" ,gettext-minimal) `(("gettext" ,gettext-minimal)

View file

@ -93,6 +93,7 @@
#:use-module (gnu packages pulseaudio) #:use-module (gnu packages pulseaudio)
#:use-module (gnu packages python) #:use-module (gnu packages python)
#:use-module (gnu packages python-check) #:use-module (gnu packages python-check)
#:use-module (gnu packages python-crypto)
#:use-module (gnu packages python-science) #:use-module (gnu packages python-science)
#:use-module (gnu packages python-web) #:use-module (gnu packages python-web)
#:use-module (gnu packages python-xyz) #:use-module (gnu packages python-xyz)
@ -503,7 +504,7 @@ fully fledged Spatial SQL capabilities.")
(define-public proj (define-public proj
(package (package
(name "proj") (name "proj")
(version "6.3.1") (version "7.2.1")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
@ -511,22 +512,28 @@ fully fledged Spatial SQL capabilities.")
version ".tar.gz")) version ".tar.gz"))
(sha256 (sha256
(base32 (base32
"1y46ij32j9b4x1kjnnlykcwk3kkjwkg44sfc1ziwm3a3g0ki3q3d")))) "050apzdn0isxpsblys1shrl9ccli5vd32kgswlgx1imrbwpg915k"))))
(build-system gnu-build-system) (build-system cmake-build-system)
(arguments
`(#:configure-flags '("-DUSE_EXTERNAL_GTEST=ON")))
(inputs (inputs
`(("sqlite" ,sqlite))) `(("curl" ,curl)
("libjpeg-turbo" ,libjpeg-turbo)
("libtiff" ,libtiff)
("sqlite" ,sqlite)))
(native-inputs (native-inputs
`(("pkg-config" ,pkg-config))) `(("googletest" ,googletest)
("pkg-config" ,pkg-config)))
(home-page "https://proj.org/") (home-page "https://proj.org/")
(synopsis "Coordinate transformation software") (synopsis "Coordinate transformation software")
(description (description
"Proj is a generic coordinate transformation software that transforms "Proj is a generic coordinate transformation software that transforms
geospatial coordinates from one coordinate reference system (CRS) to another. geospatial coordinates from one @acronym{CRS, coordinate reference system}
This includes cartographic projections as well as geodetic transformations. to another. This includes cartographic projections as well as geodetic
PROJ includes command line applications for easy conversion of coordinates transformations. Proj includes command line applications for easy
from text files or directly from user input. In addition, proj also exposes conversion of coordinates from text files or directly from user input.
an application programming interface that lets developers use the In addition, Proj also exposes an application programming interface that
functionality of proj in their own software.") lets developers use the functionality of Proj in their own software.")
(license (list license:expat (license (list license:expat
;; src/projections/patterson.cpp ;; src/projections/patterson.cpp
license:asl2.0 license:asl2.0
@ -583,6 +590,144 @@ projections.")
;; cmake/* ;; cmake/*
license:boost1.0)))) license:boost1.0))))
(define-public python-pyproj
(package
(name "python-pyproj")
(version "3.2.1")
(source
(origin
(method url-fetch)
(uri (pypi-uri "pyproj" version))
(sha256
(base32
"0xrqpy708qlyd7nqjra0dl7nvkqzaj9w0v7wq4j5pxazha9n14sa"))))
(build-system python-build-system)
(arguments
`(#:phases
(modify-phases %standard-phases
(add-after 'unpack 'set-proj-path
(lambda* (#:key inputs #:allow-other-keys)
(let ((proj (assoc-ref inputs "proj")))
(setenv "PROJ_DIR" proj)
(substitute* "pyproj/datadir.py"
(("(internal_datadir = ).*$" all var)
(string-append var "Path(\"" proj "/share/proj\")\n")))))))))
(inputs
`(("proj" ,proj)))
(propagated-inputs
`(("python-certifi" ,python-certifi)))
(native-inputs
`(("python-cython" ,python-cython)
("python-numpy" ,python-numpy)
("python-pandas" ,python-pandas)
("python-pytest" ,python-pytest)
("python-xarray" ,python-xarray)))
(home-page "https://github.com/pyproj4/pyproj")
(synopsis
"Python interface to PROJ")
(description
"This package provides a Python interface to PROJ, a cartographic
projections and coordinate transformations library.")
(license license:expat)))
(define-public python-fiona
(package
(name "python-fiona")
(version "1.8.20")
(source
(origin
(method url-fetch)
(uri (pypi-uri "Fiona" version))
(sha256
(base32
"0fql7i7dg1xpbadmk8d26dwp91v7faixxc4wq14zg0kvhp9041d7"))))
(build-system python-build-system)
(arguments
`(#:phases
(modify-phases %standard-phases
(add-before 'check 'remove-local-fiona
(lambda _
; This would otherwise interfere with finding the installed
; fiona when running tests.
(delete-file-recursively "fiona")))
(replace 'check
(lambda* (#:key tests? inputs outputs #:allow-other-keys)
(add-installed-pythonpath inputs outputs)
(when tests?
(invoke "pytest" "-m" "not network and not wheel")))))))
(inputs
`(("gdal" ,gdal)))
(propagated-inputs
`(("python-attrs" ,python-attrs)
("python-certifi" ,python-certifi)
("python-click" ,python-click)
("python-click-plugins" ,python-click-plugins)
("python-cligj" ,python-cligj)
("python-munch" ,python-munch)
("python-setuptools" ,python-setuptools)
("python-six" ,python-six)
("python-pytz" ,python-pytz)))
(native-inputs
`(("gdal" ,gdal) ; for gdal-config
("python-boto3" ,python-boto3)
("python-cython" ,python-cython)
("python-pytest" ,python-pytest)
("python-pytest-cov" ,python-pytest-cov)))
(home-page "https://github.com/Toblerity/Fiona")
(synopsis
"Fiona reads and writes spatial data files")
(description
"Fiona is GDALs neat and nimble vector API for Python programmers.
Fiona is designed to be simple and dependable. It focuses on reading
and writing data in standard Python IO style and relies upon familiar
Python types and protocols such as files, dictionaries, mappings, and
iterators instead of classes specific to OGR. Fiona can read and write
real-world data using multi-layered GIS formats and zipped virtual file
systems and integrates readily with other Python GIS packages such as
pyproj, Rtree, and Shapely.")
(license license:bsd-3)))
(define-public python-geopandas
(package
(name "python-geopandas")
(version "0.9.0")
(source
(origin
(method url-fetch)
(uri (pypi-uri "geopandas" version))
(sha256
(base32
"02k389zyyjv51gd09c92vlr83sv46awdq0066jgh5i24vjs2m5v3"))))
(build-system python-build-system)
(arguments
'(#:phases
(modify-phases %standard-phases
(replace 'check
(lambda* (#:key tests? #:allow-other-keys)
(when tests?
(invoke "pytest"
; Disable test that fails with
; NotImplementedError in pandas.
"-k" "not test_fillna_no_op_returns_copy"
; Disable tests that require internet access.
"-m" "not web")))))))
(propagated-inputs
`(("python-fiona" ,python-fiona)
("python-pandas" ,python-pandas)
("python-pyproj" ,python-pyproj)
("python-shapely" ,python-shapely)))
(native-inputs
`(("python-pytest" ,python-pytest)))
(home-page "http://geopandas.org")
(synopsis "Geographic pandas extensions")
(description "The goal of GeoPandas is to make working with
geospatial data in Python easier. It combines the capabilities of
Pandas and Shapely, providing geospatial operations in Pandas and a
high-level interface to multiple geometries to Shapely. GeoPandas
enables you to easily do operations in Python that would otherwise
require a spatial database such as PostGIS.")
(license license:bsd-3)))
(define-public mapnik (define-public mapnik
(package (package
(name "mapnik") (name "mapnik")
@ -1259,7 +1404,7 @@ map display. Downloads map data from a number of websites, including
("libnova" ,libnova) ("libnova" ,libnova)
("libpng" ,libpng) ("libpng" ,libpng)
("openjpeg" ,openjpeg) ("openjpeg" ,openjpeg)
("proj.4" ,proj.4) ("proj" ,proj)
("qtbase" ,qtbase-5) ("qtbase" ,qtbase-5)
("zlib" ,zlib))) ("zlib" ,zlib)))
(native-search-paths (native-search-paths
@ -1514,14 +1659,17 @@ to the OSM opening hours specification.")
(lambda* (#:key outputs #:allow-other-keys) (lambda* (#:key outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out")) (let ((out (assoc-ref outputs "out"))
(share-directories '("applications" "icons" "man" "menu" (share-directories '("applications" "icons" "man" "menu"
"metainfo" "mime" "pixmaps"))) "metainfo" "mime" "pixmaps"))
(desktop "org.openstreetmap.josm.desktop"))
(for-each (lambda (directory) (for-each (lambda (directory)
(copy-recursively (string-append (copy-recursively (string-append
"native/linux/tested/usr/share/" "native/linux/tested/usr/share/"
directory) directory)
(string-append (string-append
out "/share/" directory))) out "/share/" directory)))
share-directories)) share-directories)
(substitute* (string-append out "/share/applications/" desktop)
(("josm-MainApplication") "josm-gui-MainApplication")))
#t)) #t))
(add-after 'install 'install-bin (add-after 'install 'install-bin
(lambda* (#:key outputs inputs #:allow-other-keys) (lambda* (#:key outputs inputs #:allow-other-keys)
@ -1687,7 +1835,7 @@ using the dataset of topographical information collected by
("qtlocation" ,qtlocation) ("qtlocation" ,qtlocation)
("qtwebchannel" ,qtwebchannel) ("qtwebchannel" ,qtwebchannel)
("qtwebengine" ,qtwebengine) ("qtwebengine" ,qtwebengine)
("quazip" ,quazip) ("quazip" ,quazip-0)
("routino" ,routino) ("routino" ,routino)
("sqlite" ,sqlite) ; See wrap phase ("sqlite" ,sqlite) ; See wrap phase
("zlib" ,zlib))) ("zlib" ,zlib)))
@ -1926,7 +2074,7 @@ track your position right from your laptop.")
("openblas" ,openblas) ("openblas" ,openblas)
("perl" ,perl) ("perl" ,perl)
("postgresql" ,postgresql) ("postgresql" ,postgresql)
("proj.4" ,proj.4) ("proj" ,proj)
("python" ,python) ("python" ,python)
("python-dateutil" ,python-dateutil) ("python-dateutil" ,python-dateutil)
("python-numpy" ,python-numpy) ("python-numpy" ,python-numpy)
@ -1981,7 +2129,7 @@ track your position right from your laptop.")
"--with-netcdf" "--with-netcdf"
"--with-postgres" "--with-postgres"
(string-append "--with-proj-share=" (string-append "--with-proj-share="
(assoc-ref inputs "proj.4") (assoc-ref inputs "proj")
"/share/proj") "/share/proj")
"--with-pthread" "--with-pthread"
"--with-readline" "--with-readline"

View file

@ -7,6 +7,7 @@
;;; Copyright © 2018 Thorsten Wilms <t_w_@freenet.de> ;;; Copyright © 2018 Thorsten Wilms <t_w_@freenet.de>
;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com> ;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com>
;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de> ;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de>
;;; Copyright © 2021 Vinicius Monego <monego@posteo.net>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -38,6 +39,8 @@
#:use-module (gnu packages base) #:use-module (gnu packages base)
#:use-module (gnu packages build-tools) #:use-module (gnu packages build-tools)
#:use-module (gnu packages documentation) #:use-module (gnu packages documentation)
#:use-module (gnu packages fontutils)
#:use-module (gnu packages freedesktop)
#:use-module (gnu packages graphviz) #:use-module (gnu packages graphviz)
#:use-module (gnu packages pkg-config) #:use-module (gnu packages pkg-config)
#:use-module (gnu packages glib) #:use-module (gnu packages glib)
@ -49,11 +52,13 @@
#:use-module (gnu packages compression) #:use-module (gnu packages compression)
#:use-module (gnu packages xml) #:use-module (gnu packages xml)
#:use-module (gnu packages linux) #:use-module (gnu packages linux)
#:use-module (gnu packages maths)
#:use-module (gnu packages ncurses) #:use-module (gnu packages ncurses)
#:use-module (gnu packages patchutils) #:use-module (gnu packages patchutils)
#:use-module (gnu packages pdf) #:use-module (gnu packages pdf)
#:use-module (gnu packages photo) #:use-module (gnu packages photo)
#:use-module (gnu packages python) #:use-module (gnu packages python)
#:use-module (gnu packages sdl)
#:use-module (gnu packages web) #:use-module (gnu packages web)
#:use-module (gnu packages xorg)) #:use-module (gnu packages xorg))
@ -168,7 +173,7 @@ of a larger interface.")
(define-public babl (define-public babl
(package (package
(name "babl") (name "babl")
(version "0.1.86") (version "0.1.88")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (list (string-append "https://download.gimp.org/pub/babl/" (uri (list (string-append "https://download.gimp.org/pub/babl/"
@ -182,14 +187,16 @@ of a larger interface.")
"/babl-" version ".tar.xz"))) "/babl-" version ".tar.xz")))
(sha256 (sha256
(base32 (base32
"1w68h81kqkqnziixrx21qs0gfv2z79651h19sxn226xdb58mjgqb")))) "0fbh2ss1dy3sba4xjmfm4vxxjmx9a6rzgba9ycjygchbm957y3ag"))))
(build-system meson-build-system) (build-system meson-build-system)
(arguments (arguments
`(#:configure-flags `(#:configure-flags
(list "-Denable-gir=false" (list "-Denable-gir=false"
"-Dwith-docs=false"))) "-Dwith-docs=false")))
(native-inputs (native-inputs
`(("pkg-config" ,pkg-config))) `(("gobject-introspection" ,gobject-introspection)
("pkg-config" ,pkg-config)
("vala" ,vala)))
(propagated-inputs (propagated-inputs
;; Propagated to satisfy babl.pc. ;; Propagated to satisfy babl.pc.
`(("lcms" ,lcms))) `(("lcms" ,lcms)))
@ -208,7 +215,7 @@ provided, as well as a framework to add new color models and data types.")
(define-public gegl (define-public gegl
(package (package
(name "gegl") (name "gegl")
(version "0.4.30") (version "0.4.32")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (list (string-append "https://download.gimp.org/pub/gegl/" (uri (list (string-append "https://download.gimp.org/pub/gegl/"
@ -222,7 +229,7 @@ provided, as well as a framework to add new color models and data types.")
"/gegl-" version ".tar.xz"))) "/gegl-" version ".tar.xz")))
(sha256 (sha256
(base32 (base32
"1pd8xkx70k0fsi1hrzrmaify7112wjmxzk0p6bi6js89yhn7h4n1")))) "18cg566lplw7y7dn5v05pal24vxbfiic6097a40gnxdgkxmkr3k6"))))
(build-system meson-build-system) (build-system meson-build-system)
(arguments (arguments
`(#:configure-flags `(#:configure-flags
@ -240,23 +247,37 @@ provided, as well as a framework to add new color models and data types.")
(string-append match "0"))) (string-append match "0")))
(substitute* (find-files "tests" "^meson\\.build$") (substitute* (find-files "tests" "^meson\\.build$")
(("timeout ?: [0-9]+" match) (("timeout ?: [0-9]+" match)
(string-append match "0"))) (string-append match "0"))))))))
#t)))))
;; These are propagated to satisfy 'gegl-0.4.pc'. ;; These are propagated to satisfy 'gegl-0.4.pc'.
(propagated-inputs (propagated-inputs
`(("babl" ,babl) `(("babl" ,babl)
("glib" ,glib) ("glib" ,glib)
("json-glib" ,json-glib))) ("json-glib" ,json-glib)))
(inputs (inputs
;; All inputs except libjpeg and libpng are optional.
`(("cairo" ,cairo) `(("cairo" ,cairo)
("pango" ,pango) ("gdk-pixbuf" ,gdk-pixbuf)
("libpng" ,libpng) ("gexiv2" ,gexiv2)
("jasper" ,jasper)
("libjpeg" ,libjpeg-turbo) ("libjpeg" ,libjpeg-turbo)
("libraw" ,libraw))) ("libnsgif" ,libnsgif)
("libpng" ,libpng)
("libraw" ,libraw)
("librsvg" ,librsvg)
("libspiro" ,libspiro)
("libtiff" ,libtiff)
("libwebp" ,libwebp)
("maxflow" ,maxflow)
("openexr" ,openexr)
("pango" ,pango)
("poppler" ,poppler)
("sdl2" ,sdl2)))
(native-inputs (native-inputs
`(("pkg-config" ,pkg-config) `(("glib" ,glib "bin") ; for gtester
("glib" ,glib "bin") ; for gtester ("gobject-introspection" ,gobject-introspection)
("intltool" ,intltool))) ("intltool" ,intltool)
("pkg-config" ,pkg-config)
("vala" ,vala)))
(home-page "https://gegl.org") (home-page "https://gegl.org")
(synopsis "Graph based image processing framework") (synopsis "Graph based image processing framework")
(description "GEGL (Generic Graphics Library) provides infrastructure to (description "GEGL (Generic Graphics Library) provides infrastructure to
@ -269,7 +290,7 @@ buffers.")
(define-public gimp (define-public gimp
(package (package
(name "gimp") (name "gimp")
(version "2.10.24") (version "2.10.28")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
@ -277,7 +298,7 @@ buffers.")
(version-major+minor version) (version-major+minor version)
"/gimp-" version ".tar.bz2")) "/gimp-" version ".tar.bz2"))
(sha256 (sha256
(base32 "17lq6ns5qhspd171zqh76yf98xnn5n0hcl7hbhbx63cc6ribf6xx")))) (base32 "09l80zxcnydbpm3nn64qw48klnvp0mgbaamazqkg1d8szwnc4kag"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(outputs '("out" (outputs '("out"
"doc")) ; 9 MiB of gtk-doc HTML "doc")) ; 9 MiB of gtk-doc HTML
@ -315,30 +336,36 @@ buffers.")
(format port "for dir in '~a'.split(':'):~%" pythonpath) (format port "for dir in '~a'.split(':'):~%" pythonpath)
(format port " site.addsitedir(dir)~%"))))))))) (format port " site.addsitedir(dir)~%")))))))))
(inputs (inputs
`(("babl" ,babl) `(("atk" ,atk)
("babl" ,babl)
("gegl" ,gegl)
("gexiv2" ,gexiv2)
("glib" ,glib) ("glib" ,glib)
("glib-networking" ,glib-networking) ("glib-networking" ,glib-networking)
("gtk+" ,gtk+-2)
("libjpeg" ,libjpeg-turbo)
("libmypaint" ,libmypaint)
("libtiff" ,libtiff) ("libtiff" ,libtiff)
("libwebp" ,libwebp) ("libwebp" ,libwebp)
("libjpeg" ,libjpeg-turbo)
("atk" ,atk)
("gexiv2" ,gexiv2)
("gtk+" ,gtk+-2)
("libmypaint" ,libmypaint)
("mypaint-brushes" ,mypaint-brushes-1.3) ("mypaint-brushes" ,mypaint-brushes-1.3)
("exif" ,libexif) ; optional, EXIF + XMP support ("exif" ,libexif) ; optional, EXIF + XMP support
("lcms" ,lcms) ; optional, color management ("ghostscript" ,ghostscript) ; optional, EPS + PS support
("librsvg" ,librsvg) ; optional, SVG support ("lcms" ,lcms) ; optional, color management
("libxcursor" ,libxcursor) ; optional, Mouse Cursor support ("libheif" ,libheif) ; optional, HEIF + AVIF support
("poppler" ,poppler) ; optional, PDF support ("libmng" ,libmng) ; optional, MNG support
("poppler-data" ,poppler-data) ("librsvg" ,librsvg) ; optional, SVG support
("python" ,python-2) ; optional, Python support ("libxcursor" ,libxcursor) ; optional, Mouse Cursor support
("python2-pygtk" ,python2-pygtk) ; optional, Python support ("openexr" ,openexr) ; optional, EXR support
("gegl" ,gegl))) ("openjpeg" ,openjpeg) ; optional, JPEG 2000 support
("poppler" ,poppler) ; optional, PDF support
("poppler-data" ,poppler-data) ; optional, PDF support
("python" ,python-2) ; optional, Python support
("python2-pygtk" ,python2-pygtk))) ; optional, Python support
(native-inputs (native-inputs
`(("glib:bin" ,glib "bin") ; for glib-compile-resources and gdbus-codegen `(("desktop-file-utils" ,desktop-file-utils)
("pkg-config" ,pkg-config) ("glib:bin" ,glib "bin") ; for glib-compile-resources and gdbus-codegen
("intltool" ,intltool))) ("intltool" ,intltool)
("pkg-config" ,pkg-config)))
(home-page "https://www.gimp.org") (home-page "https://www.gimp.org")
(synopsis "GNU Image Manipulation Program") (synopsis "GNU Image Manipulation Program")
(description (description

View file

@ -5,7 +5,6 @@
;;; Copyright © 2014, 2015, 2016, 2017 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2014, 2015, 2016, 2017 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2016 Nikita <nikita@n0.is> ;;; Copyright © 2016 Nikita <nikita@n0.is>
;;; Copyright © 2016, 2017, 2018, 2020, 2021 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2016, 2017, 2018, 2020, 2021 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2016 David Thompson <davet@gnu.org>
;;; Copyright © 2017, 2018, 2019, 2021 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2017, 2018, 2019, 2021 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2017 Arun Isaac <arunisaac@systemreboot.net> ;;; Copyright © 2017 Arun Isaac <arunisaac@systemreboot.net>
;;; Copyright © 2017, 2018, 2019 Rutger Helling <rhelling@mykolab.com> ;;; Copyright © 2017, 2018, 2019 Rutger Helling <rhelling@mykolab.com>

View file

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2019, 2020, 2021 Leo Prikler <leo.prikler@student.tugraz.at> ;;; Copyright © 2019, 2020, 2021 Liliana Marie Prikler <liliana.prikler@gmail.com>
;;; Copyright © 2019, 2021 Alexandros Theodotou <alex@zrythm.org> ;;; Copyright © 2019, 2021 Alexandros Theodotou <alex@zrythm.org>
;;; Copyright © 2019 Giacomo Leidi <goodoldpaul@autistici.org> ;;; Copyright © 2019 Giacomo Leidi <goodoldpaul@autistici.org>
;;; Copyright © 2020 Alex Griffin <a@ajgrf.com> ;;; Copyright © 2020 Alex Griffin <a@ajgrf.com>
@ -845,7 +845,7 @@ variants.")
(define-public markets (define-public markets
(package (package
(name "markets") (name "markets")
(version "0.5.2") (version "0.5.3")
(source (source
(origin (origin
(method git-fetch) (method git-fetch)
@ -855,7 +855,7 @@ variants.")
(file-name (git-file-name name version)) (file-name (git-file-name name version))
(sha256 (sha256
(base32 (base32
"0nk1bs7i6b7r90g5qwd3s2m462vk3kvza0drq7rzb5sdaiz9ccnz")))) "0sfdmz7cp8i2bymippp8jyxsidxjn69v9cqm40q77j81kfm84bfv"))))
(build-system meson-build-system) (build-system meson-build-system)
(arguments (arguments
`(#:glib-or-gtk? #t `(#:glib-or-gtk? #t

View file

@ -44,7 +44,7 @@
;;; Copyright © 2019 David Wilson <david@daviwil.com> ;;; Copyright © 2019 David Wilson <david@daviwil.com>
;;; Copyright © 2019, 2020 Raghav Gururajan <raghavgururajan@disroot.org> ;;; Copyright © 2019, 2020 Raghav Gururajan <raghavgururajan@disroot.org>
;;; Copyright © 2019, 2020 Jonathan Brielmaier <jonathan.brielmaier@web.de> ;;; Copyright © 2019, 2020 Jonathan Brielmaier <jonathan.brielmaier@web.de>
;;; Copyright © 2019, 2020, 2021 Leo Prikler <leo.prikler@student.tugraz.at> ;;; Copyright © 2019, 2020, 2021 Liliana Marie Prikler <liliana.prikler@gmail.com>
;;; Copyright © 2020 Oleg Pykhalov <go.wigust@gmail.com> ;;; Copyright © 2020 Oleg Pykhalov <go.wigust@gmail.com>
;;; Copyright © 2020 Pierre Neidhardt <mail@ambrevar.xyz> ;;; Copyright © 2020 Pierre Neidhardt <mail@ambrevar.xyz>
;;; Copyright © 2020 raingloom <raingloom@riseup.net> ;;; Copyright © 2020 raingloom <raingloom@riseup.net>
@ -64,6 +64,7 @@
;;; Copyright © 2021 Felix Gruber <felgru@posteo.net> ;;; Copyright © 2021 Felix Gruber <felgru@posteo.net>
;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be> ;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
;;; Copyright © 2021 Josselin Poiret <josselin.poiret@protonmail.ch> ;;; Copyright © 2021 Josselin Poiret <josselin.poiret@protonmail.ch>
;;; Copyright © 2021 Mathieu Othacehe <othacehe@gnu.org>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -284,7 +285,7 @@
(define-public brasero (define-public brasero
(package (package
(name "brasero") (name "brasero")
(version "3.12.2") (version "3.12.3")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "mirror://gnome/sources/brasero/" (uri (string-append "mirror://gnome/sources/brasero/"
@ -292,7 +293,7 @@
"brasero-" version ".tar.xz")) "brasero-" version ".tar.xz"))
(sha256 (sha256
(base32 (base32
"0h90y674j26rvjahb8cc0w79zx477rb6zaqcj26wzvq8kmpic8k8")))) "05gabybkl7xfinwx97i4scp9hic0dlxj7gh03dyj0hd16fp9wx47"))))
(build-system glib-or-gtk-build-system) (build-system glib-or-gtk-build-system)
(arguments (arguments
`(#:configure-flags (list `(#:configure-flags (list
@ -304,11 +305,12 @@
"/lib/girepository-1.0")) "/lib/girepository-1.0"))
#:phases #:phases
(modify-phases %standard-phases (modify-phases %standard-phases
(add-before 'configure 'embed-growisofs (add-before 'configure 'embed-growisofs-reference
(lambda* (#:key inputs #:allow-other-keys) (lambda* (#:key inputs #:allow-other-keys)
(substitute* "plugins/growisofs/burn-growisofs.c" (let ((dvd+rw-tools (assoc-ref inputs "dvd+rw-tools")))
(("\"growisofs") (string-append "\"" (which "growisofs")))) (substitute* "plugins/growisofs/burn-growisofs.c"
#t))))) (("(\")(growisofs)" _ prefix command)
(string-append prefix dvd+rw-tools "/bin/" command)))))))))
(propagated-inputs (propagated-inputs
`(("hicolor-icon-theme" ,hicolor-icon-theme))) `(("hicolor-icon-theme" ,hicolor-icon-theme)))
(native-inputs (native-inputs
@ -10972,7 +10974,7 @@ functionality.")
(define-public gthumb (define-public gthumb
(package (package
(name "gthumb") (name "gthumb")
(version "3.10.3") (version "3.12.0")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "mirror://gnome/sources/gthumb/" (uri (string-append "mirror://gnome/sources/gthumb/"
@ -10980,7 +10982,7 @@ functionality.")
"gthumb-" version ".tar.xz")) "gthumb-" version ".tar.xz"))
(sha256 (sha256
(base32 (base32
"04n2sgasc03kiczyzkq362pjilj12hq2r5qj07lynqr9rivkzdys")))) "0grqiq6v26z8avl7mj24xy4i9bl1niwpqhqw6rblprl40c1zrvrx"))))
(build-system meson-build-system) (build-system meson-build-system)
(arguments (arguments
`(#:glib-or-gtk? #t `(#:glib-or-gtk? #t
@ -10993,23 +10995,27 @@ functionality.")
(assoc-ref %outputs "out") (assoc-ref %outputs "out")
"/lib/gthumb/extensions")))) "/lib/gthumb/extensions"))))
(native-inputs (native-inputs
`(("pkg-config" ,pkg-config) `(("desktop-file-utils" ,desktop-file-utils) ; for update-desktop-database
("glib:bin" ,glib "bin") ; for glib-compile-resources ("glib:bin" ,glib "bin") ; for glib-compile-resources
("gtk+:bin" ,gtk+ "bin") ; for gtk-update-icon-cache ("gtk+:bin" ,gtk+ "bin") ; for gtk-update-icon-cache
("desktop-file-utils" ,desktop-file-utils) ; for update-desktop-database
("intltool" ,intltool) ("intltool" ,intltool)
("itstool" ,itstool))) ("itstool" ,itstool)
("pkg-config" ,pkg-config)))
(inputs (inputs
`(("exiv2" ,exiv2) `(("clutter" ,clutter)
("gtk" ,gtk+)
("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
("gstreamer" ,gstreamer)
("clutter" ,clutter)
("clutter-gst" ,clutter-gst) ("clutter-gst" ,clutter-gst)
("clutter-gtk" ,clutter-gtk) ("clutter-gtk" ,clutter-gtk)
("colord" ,colord)
("exiv2" ,exiv2)
("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
("gstreamer" ,gstreamer)
("gtk" ,gtk+)
("libheif" ,libheif)
("libjpeg" ,libjpeg-turbo) ("libjpeg" ,libjpeg-turbo)
("libraw" ,libraw)
("librsvg" ,librsvg)
("libtiff" ,libtiff) ("libtiff" ,libtiff)
("libraw" ,libraw))) ("libwebp" ,libwebp)))
(home-page "https://wiki.gnome.org/Apps/Gthumb") (home-page "https://wiki.gnome.org/Apps/Gthumb")
(synopsis "GNOME image viewer and browser") (synopsis "GNOME image viewer and browser")
(description "GThumb is an image viewer, browser, organizer, editor and (description "GThumb is an image viewer, browser, organizer, editor and
@ -12237,7 +12243,7 @@ integrated profiler via Sysprof, debugging support, and more.")
(define-public komikku (define-public komikku
(package (package
(name "komikku") (name "komikku")
(version "0.31.0") (version "0.35.0")
(source (source
(origin (origin
(method git-fetch) (method git-fetch)
@ -12247,7 +12253,7 @@ integrated profiler via Sysprof, debugging support, and more.")
(file-name (git-file-name name version)) (file-name (git-file-name name version))
(sha256 (sha256
(base32 (base32
"0vldcjq24y4xxg8dzlyhfpqxbqn5g160lz1lmmkp7g9im2zrxh52")))) "19axlz34zg4ijfc1z0y2xp6ayi5hvgvqdp4wprkp0wjrkfn7dkq7"))))
(build-system meson-build-system) (build-system meson-build-system)
(arguments (arguments
`(#:glib-or-gtk? #t `(#:glib-or-gtk? #t
@ -12540,3 +12546,32 @@ Document Analysis and Recognition program.")
applications scaling from desktop workstations to mobile phones. It is the applications scaling from desktop workstations to mobile phones. It is the
successor of @code{libhandy} for GTK4.") successor of @code{libhandy} for GTK4.")
(license license:lgpl2.1+)))) (license license:lgpl2.1+))))
(define-public gnome-power-manager
(package
(name "gnome-power-manager")
(version "3.32.0")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnome/sources/" name "/"
(version-major+minor version) "/"
name "-" version ".tar.xz"))
(sha256
(base32
"0drfn3wcc8l4n07qwv6p0rw2dwcd00hwzda282q62l6sasks2b2g"))))
(build-system meson-build-system)
(inputs
`(("upower" ,upower)
("gtk+" ,gtk+)
("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
("adwaita-icon-theme" ,adwaita-icon-theme)))
(native-inputs
`(("desktop-file-utils" ,desktop-file-utils)
("glib:bin" ,glib "bin")
("gettext" ,gettext-minimal)
("pkg-config" ,pkg-config)))
(home-page "https://gitlab.gnome.org/GNOME/gnome-power-manager")
(synopsis "Power management daemon for the GNOME desktop")
(description "@code{gnome-power-manager} is a tool for viewing present and
historical battery usage and related statistics.")
(license license:gpl2)))

View file

@ -4,7 +4,7 @@
;;; Copyright © 2014, 2018 Eric Bavier <bavier@member.fsf.org> ;;; Copyright © 2014, 2018 Eric Bavier <bavier@member.fsf.org>
;;; Copyright © 2014, 2015, 2016, 2020 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2014, 2015, 2016, 2020 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org> ;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org>
;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2020 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2020, 2021 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2015, 2016, 2017, 2019 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2015, 2016, 2017, 2019 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2016 Christine Lemmer-Webber <cwebber@dustycloud.org> ;;; Copyright © 2016 Christine Lemmer-Webber <cwebber@dustycloud.org>
;;; Copyright © 2016, 2017 Nikita <nikita@n0.is> ;;; Copyright © 2016, 2017 Nikita <nikita@n0.is>
@ -591,32 +591,33 @@ decrypt messages using the OpenPGP format by making use of GPGME.")
(define-public python-gnupg (define-public python-gnupg
(package (package
(name "python-gnupg") (name "python-gnupg")
(version "0.4.4") (version "0.4.7")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (pypi-uri "python-gnupg" version)) (uri (pypi-uri "python-gnupg" version))
(sha256 (sha256
(base32 (base32
"03pvjyp6q9pr8qa22i38az06ddzhvzy5kj192hxa3gbhnchg1nj5")))) "1isazrg2h126xg3vvk4wrhx8k8yfsg5sxybvfa99phj235mzaq90"))))
(build-system python-build-system) (build-system python-build-system)
(arguments (arguments
`(#:phases `(#:phases
(modify-phases %standard-phases (modify-phases %standard-phases
(replace 'check (replace 'check
(lambda _ (lambda* (#:key tests? #:allow-other-keys)
(substitute* "test_gnupg.py" (when tests?
;; Unsure why this test fails. (substitute* "test_gnupg.py"
(("'test_search_keys'") "True") ;; Unsure why this test fails.
(("def test_search_keys") "def disabled__search_keys")) (("'test_search_keys'") "True")
(setenv "USERNAME" "guixbuilder") (("def test_search_keys") "def disabled__search_keys"))
;; The doctests are extremely slow and sometimes time out, (setenv "USERNAME" "guixbuilder")
;; so we disable them. ;; The doctests are extremely slow and sometimes time out,
(invoke "python" ;; so we disable them.
"test_gnupg.py" "--no-doctests")))))) (invoke "python"
"test_gnupg.py" "--no-doctests")))))))
(native-inputs (native-inputs
`(("gnupg" ,gnupg-1))) `(("gnupg" ,gnupg)))
(home-page "https://packages.python.org/python-gnupg/index.html") (home-page "https://pythonhosted.org/python-gnupg/index.html")
(synopsis "Wrapper for the GNU Privacy Guard") (synopsis "Wrapper for the GNU Privacy Guard")
(description (description
"This module allows easy access to GnuPGs key management, encryption "This module allows easy access to GnuPGs key management, encryption

View file

@ -702,21 +702,11 @@ in C/C++.")
("1j6l66v1xw27z8w78mpsnmqgv8m277mf4r0hgqcrb4zx7xc2vqyy" "527e5e090608" "zh-CN") ("1j6l66v1xw27z8w78mpsnmqgv8m277mf4r0hgqcrb4zx7xc2vqyy" "527e5e090608" "zh-CN")
("1frwx35klpyz3sdwrkz7945ivb2dwaawhhyfnz4092h9hn7rc4ky" "6cd366ad2947" "zh-TW"))) ("1frwx35klpyz3sdwrkz7945ivb2dwaawhhyfnz4092h9hn7rc4ky" "6cd366ad2947" "zh-TW")))
(define* (computed-origin-method gexp-promise hash-algo hash ;; XXXX: Workaround 'snippet' limitations.
#:optional (name "source") (define computed-origin-method (@@ (guix packages) computed-origin-method))
#:key (system (%current-system))
(guile (default-guile)))
"Return a derivation that executes the G-expression that results
from forcing GEXP-PROMISE."
(mlet %store-monad ((guile (package->derivation guile system)))
(gexp->derivation (or name "computed-origin")
(force gexp-promise)
#:graft? #f ;nothing to graft
#:system system
#:guile-for-build guile)))
(define %icecat-version "78.14.0-guix0-preview1") (define %icecat-version "78.15.0-guix0-preview1")
(define %icecat-build-id "20210907000000") ;must be of the form YYYYMMDDhhmmss (define %icecat-build-id "20211005000000") ;must be of the form YYYYMMDDhhmmss
;; 'icecat-source' is a "computed" origin that generates an IceCat tarball ;; 'icecat-source' is a "computed" origin that generates an IceCat tarball
;; from the corresponding upstream Firefox ESR tarball, using the 'makeicecat' ;; from the corresponding upstream Firefox ESR tarball, using the 'makeicecat'
@ -738,7 +728,7 @@ from forcing GEXP-PROMISE."
"firefox-" upstream-firefox-version ".source.tar.xz")) "firefox-" upstream-firefox-version ".source.tar.xz"))
(sha256 (sha256
(base32 (base32
"1ymjlg6p23c510m764pqr4sldrvk0c7g490a29js2cqc2nj2h3ma")))) "0l91cxdc5v9fps79ckb1kid4gw6v5qng1jd9zvaacwaiv628shx4"))))
(upstream-icecat-base-version "78.7.0") ; maybe older than base-version (upstream-icecat-base-version "78.7.0") ; maybe older than base-version
;;(gnuzilla-commit (string-append "v" upstream-icecat-base-version)) ;;(gnuzilla-commit (string-append "v" upstream-icecat-base-version))

Some files were not shown because too many files have changed in this diff Show more