me
/
guix
Archived
1
0
Fork 0

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

master
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-publish.conf
/etc/guix-publish.service
/etc/guix-gc.service
/etc/init.d/guix-daemon
/etc/openrc/guix-daemon
/guix-*

View File

@ -15,6 +15,7 @@
# Copyright © 2018 Alex Vong <alexvong1995@gmail.com>
# Copyright © 2019 Efraim Flashner <efraim@flashner.co.il>
# Copyright © 2021 Chris Marusich <cmmarusich@gmail.com>
# Copyright © 2021 Andrew Tropin <andrew@trop.in>
#
# This file is part of GNU Guix.
#
@ -95,6 +96,7 @@ MODULES = \
guix/discovery.scm \
guix/android-repo-download.scm \
guix/bzr-download.scm \
guix/extracting-download.scm \
guix/git-download.scm \
guix/hg-download.scm \
guix/swh.scm \
@ -254,6 +256,7 @@ MODULES = \
guix/import/egg.scm \
guix/import/elpa.scm \
guix/import/gem.scm \
guix/import/git.scm \
guix/import/github.scm \
guix/import/gnome.scm \
guix/import/gnu.scm \
@ -295,6 +298,8 @@ MODULES = \
guix/scripts/system.scm \
guix/scripts/system/search.scm \
guix/scripts/system/reconfigure.scm \
guix/scripts/home.scm \
guix/scripts/home/import.scm \
guix/scripts/lint.scm \
guix/scripts/challenge.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-i686.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-arm64.conf \
gnu/packages/aux-files/linux-libre/5.10-i686.conf \
@ -476,6 +477,7 @@ SCM_TESTS = \
tests/graph.scm \
tests/gremlin.scm \
tests/hackage.scm \
tests/import-git.scm \
tests/import-utils.scm \
tests/inferior.scm \
tests/lint.scm \
@ -549,6 +551,7 @@ SH_TESTS = \
tests/guix-package-aliases.sh \
tests/guix-package-net.sh \
tests/guix-system.sh \
tests/guix-home.sh \
tests/guix-archive.sh \
tests/guix-authenticate.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)
** 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
*** 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)
** Package management
*** 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.
Thus, access to the repository is not strictly necessary. We welcome
contributions in the form of patches as produced by @code{git
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
access (@pxref{Commit Access}).
format-patch} sent to the @email{guix-patches@@gnu.org} mailing list
(@pxref{submitting patches,, Submitting patches to a project, git, Git
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
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:
@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
If the authors of the packaged software provide a cryptographic
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
@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
@anchor{Sending a Patch Series}
@cindex patch series
@cindex @code{git send-email}
@cindex @code{git-send-email}
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

View File

@ -57,10 +57,12 @@ its API, and related concepts.
@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 translation.
If you would like to translate this document in your native language, consider
joining
This manual is also available in French (@pxref{Top,,, guix-cookbook.fr,
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,
Weblate}.
Weblate} (@pxref{Translating Guix,,, guix, GNU Guix reference manual}).
@menu
* 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.
# 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,
# 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/
CUIRASS = ${GS}/guix/cuirass/manual
cuirass mono ${CUIRASS}/cuirass.html
cuirass node ${CUIRASS}/html_node/
CVS = ${GS}/trans-coord/manual
cvs mono ${CVS}/cvs/cvs.html
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
dejagnu node ${GS}/dejagnu/manual/
DICO = https://puszcza.gnu.org.ua/software/dico/manual
dico mono ${DICO}/dico.html
dico chapter ${DICO}/html_chapter/
@ -127,6 +133,9 @@ dico node ${DICO}/html_node/
diffutils mono ${GS}/diffutils/manual/diffutils
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
EMACS = ${GS}/emacs/manual
@ -181,6 +190,9 @@ emacs node ${EMACS}/html_node/emacs/
idlwave mono ${EMACS}/html_mono/idlwave.html
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 node ${EMACS}/html_node/message/
#
@ -259,7 +271,7 @@ gcc node ${GCC}/gcc/
gcj node ${GCC}/gcj/
gfortran node ${GCC}/gfortran/
gnat_rm node ${GCC}/gnat_rm/
gnat_ugn_unw node ${GCC}/gnat_ugn_unw/
gnat_ugn node ${GCC}/gnat_ugn/
libgomp node ${GCC}/libgomp/
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/
# 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
gmediaserver node ${GS}/gmediaserver/manual/
@ -335,8 +352,8 @@ GNUSTANDARDS = ${G}/prep
standards mono ${GNUSTANDARDS}/standards/standards.html
standards node ${GNUSTANDARDS}/standards/html_node/
gnutls mono http://gnutls.org/manual/gnutls.html
gnutls node http://gnutls.org/manual/html_node/
gnutls mono ${GS}/gnutls/manual/gnutls.html
gnutls node ${GS}/gnutls/manual/html_node/
gnutls-guile mono http://gnutls.org/manual/gnutls-guile.html
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 node ${GS}/guile-rpc/manual/html_node/
guix.de mono ${GS}/guix/manual/de/guix.de.html
guix.de node ${GS}/guix/manual/de/html_node/
guix.es mono ${GS}/guix/manual/es/guix.es.html
guix.es node ${GS}/guix/manual/es/html_node/
guix.fr mono ${GS}/guix/manual/fr/guix.fr.html
guix.fr node ${GS}/guix/manual/fr/html_node/
guix.ru mono ${GS}/guix/manual/ru/guix.ru.html
guix.ru node ${GS}/guix/manual/ru/html_node/
guix.zh_CN mono ${GS}/guix/manual/zh-cn/guix.zh_CN.html
guix.zh_CN node ${GS}/guix/manual/zh-cn/html_node/
guix mono ${GS}/guix/manual/en/guix.html
guix node ${GS}/guix/manual/en/html_node/
GUIX = ${GS}/guix/manual
guix.de mono ${GUIX}/de/guix.de.html
guix.de node ${GUIX}/de/html_node/
guix.es mono ${GUIX}/es/guix.es.html
guix.es node ${GUIX}/es/html_node/
guix.fr mono ${GUIX}/fr/guix.fr.html
guix.fr node ${GUIX}/fr/html_node/
guix.ru mono ${GUIX}/ru/guix.ru.html
guix.ru node ${GUIX}/ru/html_node/
guix.zh_CN mono ${GUIX}/zh-cn/guix.zh_CN.html
guix.zh_CN node ${GUIX}/zh-cn/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 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 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
scantest node ${METAEXCHANGE}/scantest.html
mes mono ${GS}/mes/manual/mes.html
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-user mono ${MIT_SCHEME}/mit-scheme-user.html
mit-scheme-user node ${MIT_SCHEME}/mit-scheme-user/
sos mono ${MIT_SCHEME}/mit-scheme-sos.html
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
@ -572,7 +601,7 @@ R = https://cran.r-project.org/doc/manuals
rcs mono ${GS}/rcs/manual/rcs.html
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
rluserman mono ${READLINE}/rluserman.html
history mono ${READLINE}/history.html
@ -629,7 +658,7 @@ swbis mono ${GS}/swbis/manual.html
tar mono ${GS}/tar/manual/tar.html
tar chapter ${GS}/tar/manual/html_chapter/
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 node ${GS}/teseq/html_node/
@ -637,9 +666,6 @@ teseq node ${GS}/teseq/html_node/
TEXINFO = ${GS}/texinfo/manual
texinfo mono ${TEXINFO}/texinfo/texinfo.html
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 node ${TEXINFO}/info-stnd/html_node/

View File

@ -5,6 +5,7 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2020, 2021 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2021 Sarah Morgensen <iskarian@mgsn.dev>
;;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz>
;;;
;;; This file is part of GNU Guix.
;;;
@ -288,6 +289,15 @@ ChangeLog entry."
(break-string-with-newlines message/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)
"Return a list of pairs associating all hunks with the S-expression they are
modifying."
@ -370,15 +380,23 @@ modifying."
(error "Cannot apply")))
(usleep %delay))
hunks)
(change-commit-message* (hunk-file-name (first hunks))
old new)
(let ((port (open-pipe* OPEN_WRITE "git" "commit" "-F" "-")))
(define copyright-line
(any (lambda (line) (and=> (string-prefix? "+;;; Copyright ©" line)
(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))
old new
port)
(usleep %delay)
(unless (eqv? 0 (status:exit-val (close-pipe port)))
(error "Cannot commit")))))
(error "Cannot commit")))))))
;; XXX: we recompute the hunks here because previous
;; insertions lead to offsets.
(new+old+hunks (diff-info)))))))

View File

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

View File

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

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 100644
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.
Would you like me to fetch it for you? (yes/no)"; then
wget "https://sv.gnu.org/people/viewgpg.php?user_id=$user_id" \
-qO - | gpg --import -
--no-verbose -O- | gpg --import -
else
_err "${ERR}Missing OpenPGP public key ($gpg_key_id).
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 -"
exit_flag=yes
fi
@ -272,7 +272,7 @@ guix_get_bin_list()
_debug "--- [ ${FUNCNAME[0]} ] ---"
# 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' \
| sort -Vu)")
@ -305,7 +305,7 @@ guix_get_bin()
_msg "${INF}Downloading Guix release archive"
wget --help | grep -q '\--show-progress' \
&& wget_args=("-q" "--show-progress")
&& wget_args=("--no-verbose" "--show-progress")
if wget "${wget_args[@]}" -P "$dl_path" \
"${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 Maxime Devos <maximedevos@telenet.be>
;; 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
;; permitted in any medium without royalty provided the copyright notice and
@ -22,6 +23,137 @@
(channel-news
(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")
(title

View File

@ -166,14 +166,23 @@ if DEVICE does not contain an ext2 file system."
(sub-bytevector sblock 104 16))
(define (ext2-superblock-volume-name sblock)
"Return the volume name of SBLOCK as a string of at most 16 characters, or
#f if SBLOCK has no volume name."
"Return the volume name of ext2 superblock SBLOCK as a string of at most 16
characters, or #f if SBLOCK has no volume name."
(null-terminated-latin1->string (sub-bytevector sblock 120 16)))
(define (check-ext2-file-system device)
"Return the health of an ext2 file system on DEVICE."
(define (check-ext2-file-system device force? repair)
"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
(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)
(1 'errors-corrected)
(2 'reboot-required)
@ -256,19 +265,27 @@ bytevector."
(sub-bytevector sblock 56 16))
(define (bcachefs-superblock-volume-name sblock)
"Return the volume name of SBLOCK as a string of at most 32 characters, or
#f if SBLOCK has no volume name."
"Return the volume name of bcachefs superblock SBLOCK as a string of at most
32 characters, or #f if SBLOCK has no volume name."
(null-terminated-latin1->string (sub-bytevector sblock 72 32)))
(define (check-bcachefs-file-system device)
"Return the health of a bcachefs file system on DEVICE."
(define (check-bcachefs-file-system device force? repair)
"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
(status
;; A number, or #f on abnormal termination (e.g., assertion failure).
(status:exit-val
(apply system* "bcachefs" "fsck" "-p" "-v"
;; Make each multi-device member a separate argument.
(string-split device #\:)))))
(apply system* `("bcachefs" "fsck" "-v"
,@(if force? '("-f") '())
,@(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)))
(0 'pass)
(1 'errors-corrected)
@ -300,16 +317,33 @@ if DEVICE does not contain a btrfs file system."
(sub-bytevector sblock 32 16))
(define (btrfs-superblock-volume-name sblock)
"Return the volume name of SBLOCK as a string of at most 256 characters, or
#f if SBLOCK has no volume name."
"Return the volume name of btrfs superblock SBLOCK as a string of at most 256
characters, or #f if SBLOCK has no volume name."
(null-terminated-latin1->string (sub-bytevector sblock 299 256)))
(define (check-btrfs-file-system device)
"Return the health of a btrfs file system on DEVICE."
(match (status:exit-val
(system* "btrfs" "device" "scan"))
(0 'pass)
(_ 'fatal-error)))
(define (check-btrfs-file-system device force? repair)
"Return the health of an unmounted btrfs file system on DEVICE. If FORCE? is
false, return 'PASS unconditionally as btrfs claims no need for off-line checks.
When FORCE? is true, do perform a real check. This is not recommended! See
@uref{https://bugzilla.redhat.com/show_bug.cgi?id=625967#c8}. If REPAIR is
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))
(define (fat32-superblock-volume-name sblock)
"Return the volume name of SBLOCK as a string of at most 11 characters, or
#f if SBLOCK has no volume name. The volume name is a latin1 string.
Trailing spaces are trimmed."
"Return the volume name of fat superblock SBLOCK as a string of at most 11
characters, or #f if SBLOCK has no volume name. The volume name is a latin1
string. Trailing spaces are trimmed."
(string-trim-right (latin1->string (sub-bytevector sblock 71 11) (lambda (c) #f)) #\space))
(define (check-fat-file-system device)
"Return the health of a fat file system on DEVICE."
(define (check-fat-file-system device force? repair)
"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
(system* "fsck.vfat" "-v" "-a" device))
(apply system* `("fsck.vfat" "-v"
,@(match repair
(#f '("-n"))
(_ '("-a"))) ; no 'safe/#t distinction
,device)))
(0 'pass)
(1 'errors-corrected)
(_ 'fatal-error)))
@ -366,9 +407,9 @@ Trailing spaces are trimmed."
(sub-bytevector sblock 39 4))
(define (fat16-superblock-volume-name sblock)
"Return the volume name of SBLOCK as a string of at most 11 characters, or
#f if SBLOCK has no volume name. The volume name is a latin1 string.
Trailing spaces are trimmed."
"Return the volume name of fat superblock SBLOCK as a string of at most 11
characters, or #f if SBLOCK has no volume name. The volume name is a latin1
string. Trailing spaces are trimmed."
(string-trim-right (latin1->string (sub-bytevector sblock 43 11)
(lambda (c) #f))
#\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.
(define (iso9660-superblock-volume-name sblock)
"Return the volume name of SBLOCK as a string. The volume name is an ASCII
string. Trailing spaces are trimmed."
"Return the volume name of iso9660 superblock SBLOCK as a string. The volume
name is an ASCII string. Trailing spaces are trimmed."
;; 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)
(lambda (c) #f)) #\space))
@ -459,14 +500,32 @@ if DEVICE does not contain a JFS file system."
(sub-bytevector sblock 136 16))
(define (jfs-superblock-volume-name sblock)
"Return the volume name of SBLOCK as a string of at most 16 characters, or
#f if SBLOCK has no volume name."
"Return the volume name of JFS superblock SBLOCK as a string of at most 16
characters, or #f if SBLOCK has no volume name."
(null-terminated-latin1->string (sub-bytevector sblock 152 16)))
(define (check-jfs-file-system device)
"Return the health of a JFS file system on DEVICE."
(define (check-jfs-file-system device force? repair)
"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
(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)
(1 'errors-corrected)
(2 'reboot-required)
@ -511,18 +570,28 @@ if DEVICE does not contain an F2FS file system."
16))
(define (f2fs-superblock-volume-name sblock)
"Return the volume name of SBLOCK as a string of at most 512 characters, or
#f if SBLOCK has no volume name."
"Return the volume name of F2FS superblock SBLOCK as a string of at most 512
characters, or #f if SBLOCK has no volume name."
(null-terminated-utf16->string
(sub-bytevector sblock (- (+ #x470 12) #x400) 512)
%f2fs-endianness))
(define (check-f2fs-file-system device)
"Return the health of a F2FS file system on DEVICE."
(define (check-f2fs-file-system device force? repair)
"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
(system* "fsck.f2fs" "-p" device))
;; 0 and -1 are the only two possibilities
;; (according to the manpage)
(apply system* `("fsck.f2fs"
,@(if force? '("-f") '())
,@(if repair '("-p") '("--dry-run"))
,device)))
;; 0 and -1 are the only two possibilities according to the man page.
(0 'pass)
(_ '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
;; way harder to access.
(define (check-ntfs-file-system device)
"Return the health of a NTFS file system on DEVICE."
(define (check-ntfs-file-system device force? repair)
"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
(system* "ntfsfix" device))
(apply system* `("ntfsfix"
,@(if repair '("--clear-dirty") '("--no-action"))
,device)))
(0 'pass)
(_ '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.
@ -700,7 +837,9 @@ partition field reader that returned a value."
(partition-field-reader read-jfs-superblock
jfs-superblock-volume-name)
(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
(list (partition-field-reader read-iso9660-superblock
@ -722,7 +861,9 @@ partition field reader that returned a value."
(partition-field-reader read-f2fs-superblock
f2fs-superblock-uuid)
(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
(cut read-partition-field <> %partition-label-readers))
@ -816,8 +957,13 @@ containing ':/')."
(uuid-bytevector spec)
uuid->string))))
(define (check-file-system device type)
"Run a file system check of TYPE on DEVICE."
(define (check-file-system device type force? repair)
"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
(cond
((string-prefix? "ext" type) check-ext2-file-system)
@ -828,36 +974,44 @@ containing ':/')."
((string-prefix? "f2fs" type) check-f2fs-file-system)
((string-prefix? "ntfs" type) check-ntfs-file-system)
((string-prefix? "nfs" type) (const 'pass))
((string-prefix? "xfs" type) check-xfs-file-system)
(else #f)))
(if check-procedure
(match (check-procedure device)
('pass
#t)
('errors-corrected
(format (current-error-port)
"File system check corrected errors on ~a; continuing~%"
device))
('reboot-required
(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)
(let ((mount (find (lambda (mount)
(string=? device (mount-source mount)))
(mounts))))
(if mount
(format (current-error-port)
"Refusing to check ~a file system already mounted at ~a~%"
device (mount-point mount))
(match (check-procedure device force? repair)
('pass
#t)
('errors-corrected
(format (current-error-port)
"File system check corrected errors on ~a; continuing~%"
device))
('reboot-required
(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.
(when (isatty? (current-input-port))
(format (current-error-port) "Spawning Bourne-like REPL.~%")
;; Spawn a REPL only if someone might interact with it.
(when (isatty? (current-input-port))
(format (current-error-port) "Spawning Bourne-like REPL.~%")
;; 'current-output-port' is typically connected to /dev/klog (in
;; PID 1), but here we want to make sure we talk directly to the
;; user.
(with-output-to-file "/dev/console"
(lambda ()
(start-repl %bournish-language))))))
;; 'current-output-port' is typically connected to /dev/klog
;; (in PID 1), but here we want to make sure we talk directly
;; to the user.
(with-output-to-file "/dev/console"
(lambda ()
(start-repl %bournish-language))))))))
(format (current-error-port)
"No file system check procedure for ~a; skipping~%"
device)))
@ -886,7 +1040,11 @@ corresponds to the symbols listed in FLAGS."
(()
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."
(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)))
0)))
(options (file-system-options fs)))
(when (file-system-check? fs)
(check-file-system source type))
(when check?
(check-file-system source type (not skip-check-if-clean?) repair))
(catch 'system-error
(lambda ()

View File

@ -25,6 +25,7 @@
#:autoload (system repl repl) (start-repl)
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-9)
#:use-module (srfi srfi-11)
#:use-module (srfi srfi-26)
#:use-module (ice-9 match)
#:use-module (ice-9 rdelim)
@ -44,7 +45,6 @@
make-static-device-nodes
configure-qemu-networking
device-number
boot-system))
;;; 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
;; up after 20 seconds. We could emulate the former by looping…
(device (canonicalize-device-spec spec))
(rdev (stat:rdev (stat device)))
;; For backwards compatibility, device numbering is a baroque affair.
;; This is the full 64-bit scheme used by glibc's <sys/sysmacros.h>.
(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)))
(rdev (stat:rdev (stat device))))
(let-values (((major minor) (device-number->major+minor rdev)))
(format #f "~a:~a" major minor))))
;; 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.
@ -392,11 +387,6 @@ networking values.) Return #t if INTERFACE is up, #f otherwise."
(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)
"Return the PID of the first presumed instance of PROGRAM."
(let ((program (basename program)))
@ -408,12 +398,17 @@ the last argument of `mknod'."
(define* (mount-root-file-system root type
#: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
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
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?
(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"))
(begin
(when check?
(check-file-system root type))
(check-file-system root type (not skip-check-if-clean?) repair))
(mount root "/root" type flags options)))
;; Make sure /root/etc/mtab is a symlink to /proc/self/mounts.
@ -536,21 +531,36 @@ upon error."
(mount-essential-file-systems)
(let* ((args (linux-command-line))
(to-load (find-long-option "--load" args))
(root-fs (find root-mount-point? mounts))
(root-fs-type (or (and=> root-fs file-system-type)
"ext4"))
(root-fs-device (and=> root-fs file-system-device))
(root-fs-flags (mount-flags->bit-mask
(or (and=> root-fs file-system-flags)
'())))
(root-options (if root-fs
(file-system-options root-fs)
#f))
;; --root takes precedence over the 'device' field of the root
;; <file-system> record.
(root-device (or (and=> (find-long-option "--root" args)
device-string->file-system-device)
root-fs-device)))
;; If present, --root on the kernel command line takes precedence
;; over the device field of the root <file-system> record.
(root-device (and=> (find-long-option "--root" args)
device-string->file-system-device))
(root-fs (or (find root-mount-point? mounts)
;; Fall back to fictitious defaults.
(file-system (device (or root-device "/dev/root"))
(mount-point "/")
(type "ext4"))))
(fsck.mode (find-long-option "fsck.mode" args)))
(define (check? fs)
(match fsck.mode
("skip" #f)
("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)
(start-repl))
@ -606,17 +616,24 @@ upon error."
(if root-device
(mount-root-file-system (canonicalize-device-spec root-device)
root-fs-type
(file-system-type root-fs)
#:volatile-root? volatile-root?
#:flags root-fs-flags
#:options root-options
#:check? (if root-fs
(file-system-check? root-fs)
#t))
#:flags (mount-flags->bit-mask
(file-system-flags root-fs))
#:options (file-system-options root-fs)
#:check? (check? root-fs)
#:skip-check-if-clean?
(skip-check-if-clean? root-fs)
#:repair (repair root-fs))
(mount "none" "/root" "tmpfs"))
;; Mount the specified file systems.
(for-each mount-file-system
;; Mount the specified non-root file systems.
(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))
(setenv "EXT2FS_NO_MTAB_OK" #f)

View File

@ -1,5 +1,5 @@
;;; 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 © 2018, 2019 Clément Lassieur <clement@lassieur.org>
;;; Copyright © 2020 Julien Lepiller <julien@lepiller.eu>
@ -85,7 +85,7 @@
(define* (derivation->job name drv
#:key
(max-silent-time 3600)
(timeout 3600))
(timeout (* 5 3600)))
"Return a Cuirass job called NAME and describing DRV.
MAX-SILENT-TIME and TIMEOUT are build options passed to the daemon when
@ -443,19 +443,40 @@ valid."
(map channel-url channels)))
arguments))
(define (manifests->packages store manifests)
"Return the list of packages found in MANIFESTS."
(define (manifests->jobs store manifests)
"Return the list of jobs for the entries in MANIFESTS, a list of file
names."
(define (load-manifest manifest)
(save-module-excursion
(lambda ()
(set-current-module (make-user-module '((guix profiles) (gnu))))
(primitive-load manifest))))
(delete-duplicates!
(map manifest-entry-item
(append-map (compose manifest-entries
load-manifest)
manifests))))
(define (manifest-entry-job-name entry)
(string-append (manifest-entry-name entry) "-"
(manifest-entry-version entry)))
(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)
"Return the systems list from ARGUMENTS."
@ -568,12 +589,8 @@ valid."
packages)))
(('manifests . rest)
;; Build packages in the list of manifests.
(let* ((manifests (arguments->manifests rest channels))
(packages (manifests->packages store manifests)))
(map (lambda (package)
(package-job store (job-name package)
package system))
packages)))
(let ((manifests (arguments->manifests rest channels)))
(manifests->jobs store manifests)))
(else
(error "unknown subset" subset))))
systems)))

106
gnu/home.scm 100644
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)))))

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.")))

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.")))

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)))))))

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/>.
(define-module (gnu image)
#:use-module (gnu platform)
#:use-module (guix records)
#:export (partition
partition?
@ -34,7 +35,7 @@
image?
image-name
image-format
image-target
image-platform
image-size
image-operating-system
image-partitions
@ -47,7 +48,8 @@
image-type-name
image-type-constructor
os->image))
os->image
os+platform->image))
;;;
@ -78,7 +80,7 @@
(name image-name ;symbol
(default #f))
(format image-format) ;symbol
(target image-target
(platform image-platform ;<platform>
(default #f))
(size image-size ;size in bytes as integer
(default 'guess))
@ -112,3 +114,8 @@
(define* (os->image os #:key type)
(let ((constructor (image-type-constructor type)))
(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
jfsutils ;jfs_mkfs
ntfs-3g ;mkfs.ntfs
xfsprogs ;mkfs.xfs
kbd ;chvt
guix ;guix system init call
util-linux ;mkwap

View File

@ -131,7 +131,7 @@ Be careful, all data on the disk will be lost.")
(run-listbox-selection-page
#:info-text (G_ "Please select the file-system type for this partition.")
#: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
#:sort-listbox-items? #f
#:button-text (G_ "Exit")

View File

@ -231,6 +231,7 @@ inferior to MAX-SIZE, #f otherwise."
((fat32) "fat32")
((jfs) "jfs")
((ntfs) "ntfs")
((xfs) "xfs")
((swap) "linux-swap")))
(define (user-fs-type->mount-type fs-type)
@ -241,7 +242,8 @@ inferior to MAX-SIZE, #f otherwise."
((fat16) "vfat")
((fat32) "vfat")
((jfs) "jfs")
((ntfs) "ntfs")))
((ntfs) "ntfs")
((xfs) "xfs")))
(define (partition-filesystem-user-type partition)
"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 "jfs") 'jfs)
((string=? name "ntfs") 'ntfs)
((string=? name "xfs") 'xfs)
((or (string=? name "swsusp")
(string=? name "linux-swap(v0)")
(string=? name "linux-swap(v1)"))
@ -895,7 +898,7 @@ partition."
(format #f "Unable to create partition ~a~%" name)))))))))
(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."
(map (lambda (p)
(user-partition
@ -1125,6 +1128,11 @@ bit bucket."
(with-null-output-ports
(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)
"Set up swap area on PARTITION file-name."
(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)
"Format the <user-partition> records in USER-PARTITIONS list with
NEED-FORMATING? field set to #t."
NEED-FORMATTING? field set to #t."
(for-each
(lambda (user-partition)
(let* ((need-formatting?
@ -1206,6 +1214,10 @@ NEED-FORMATING? field set to #t."
(and need-formatting?
(not (eq? type 'extended))
(create-ntfs-file-system file-name)))
((xfs)
(and need-formatting?
(not (eq? type 'extended))
(create-xfs-file-system file-name)))
((swap)
(create-swap-partition file-name))
(else

View File

@ -45,6 +45,7 @@
# Copyright © 2021 Arun Isaac <arunisaac@systemreboot.net>
# Copyright © 2021 Sharlatan Hellseher <sharlatanus@gmail.com>
# Copyright © 2021 Dmitry Polyakov <polyakov@liltechdude.xyz>
# Copyright © 2021 Andrew Tropin <andrew@trop.in>
#
# This file is part of GNU Guix.
#
@ -73,7 +74,17 @@ GNU_SYSTEM_MODULES = \
%D%/bootloader/u-boot.scm \
%D%/bootloader/depthcharge.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%/platform.scm \
%D%/packages.scm \
%D%/packages/abduco.scm \
%D%/packages/abiword.scm \
@ -435,6 +446,7 @@ GNU_SYSTEM_MODULES = \
%D%/packages/parallel.scm \
%D%/packages/pascal.scm \
%D%/packages/password-utils.scm \
%D%/packages/patool.scm \
%D%/packages/patchutils.scm \
%D%/packages/pciutils.scm \
%D%/packages/pcre.scm \
@ -603,6 +615,9 @@ GNU_SYSTEM_MODULES = \
%D%/packages/zile.scm \
%D%/packages/zwave.scm \
\
%D%/platforms/arm.scm \
%D%/platforms/hurd.scm \
\
%D%/services.scm \
%D%/services/admin.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/bpftrace-disable-bfd-disasm.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-2020-35492.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/ceph-disable-cpu-optimizations.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/chmlib-inttypes.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-6.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-10.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-esan-build-fixes.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-gcc7-fixes.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/disarchive-cross-compilation.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/fxdiv-system-libraries.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-drbd-compat.patch \
%D%/packages/patches/ganeti-haskell-compat.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-support.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/ghc-8.0-fall-back-to-madv_dontneed.patch \
%D%/packages/patches/ghc-testsuite-dlopen-pie.patch \
%D%/packages/patches/ghc-diff-swap-cover-args.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-language-haskell-extract-ghc-8.10.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-uuid.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-fix-szip.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/hubbub-sort-entities.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-UTF16-writing-bug.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/imagemagick-CVE-2020-27829.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/libcaca-CVE-2021-3410-pt1.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-wayland-crash.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/nfs4-acl-tools-0.3.7-fixpaths.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/nginx-socket-cloexec.patch \
%D%/packages/patches/nnpack-system-libraries.patch \
%D%/packages/patches/nsis-env-passthru.patch \
%D%/packages/patches/nsis-source-date-epoch.patch \
%D%/packages/patches/nss-getcwd-nonnull.patch \
%D%/packages/patches/nss-increase-test-timeout.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-dbpagesize-binpower.patch \
%D%/packages/patches/nvi-db4.patch \
%D%/packages/patches/nyacc-binary-literals.patch \
%D%/packages/patches/obs-modules-location.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-Add-a-.file-directive.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-www-curl-fix-struct-void.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/picprog-non-intel-support.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/pingus-boost-headers.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-longer-test-timeout.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-stty.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-openssl-sys-no-vendor.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-png-fix-sbcl-compatibility.patch \
%D%/packages/patches/scalapack-blacs-mpi-deprecations.patch \
%D%/packages/patches/scheme48-tests.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/udiskie-no-appindicator.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/unknown-horizons-python-3.8-distro.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/xfce4-panel-plugins.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/xnnpack-system-libraries.patch \
%D%/packages/patches/xplanet-1.3.1-cxx11-eof.patch \

View File

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

View File

@ -37,7 +37,7 @@
(define-public agda
(package
(name "agda")
(version "2.6.0.1")
(version "2.6.2")
(source
(origin
(method url-fetch)
@ -46,7 +46,7 @@
version ".tar.gz"))
(sha256
(base32
"1s600ry1qwizr3ynyj05rvlx7jdcw9a1viyc0ycjamm5sjf8mf3v"))))
"159hznnsxg7hlp80r1wqizyd7gwgnq0j13cm4d27cns0ganslb07"))))
(build-system haskell-build-system)
(inputs
`(("ghc-aeson" ,ghc-aeson)
@ -54,23 +54,22 @@
("ghc-async" ,ghc-async)
("ghc-blaze-html" ,ghc-blaze-html)
("ghc-boxes" ,ghc-boxes)
("ghc-case-insensitive" ,ghc-case-insensitive)
("ghc-data-hash" ,ghc-data-hash)
("ghc-edisoncore" ,ghc-edisoncore)
("ghc-edit-distance" ,ghc-edit-distance)
("ghc-equivalence" ,ghc-equivalence)
("ghc-exceptions" ,ghc-exceptions)
("ghc-filemanip" ,ghc-filemanip)
("ghc-geniplate-mirror" ,ghc-geniplate-mirror)
("ghc-gitrev" ,ghc-gitrev)
("ghc-happy" ,ghc-happy)
("ghc-hashable" ,ghc-hashable)
("ghc-hashtables" ,ghc-hashtables)
("ghc-ieee754" ,ghc-ieee754)
("ghc-monad-control" ,ghc-monad-control)
("ghc-murmur-hash" ,ghc-murmur-hash)
("ghc-uri-encode" ,ghc-uri-encode)
("ghc-parallel" ,ghc-parallel)
("ghc-regex-tdfa" ,ghc-regex-tdfa)
("ghc-split" ,ghc-split)
("ghc-strict" ,ghc-strict)
("ghc-unordered-containers" ,ghc-unordered-containers)
("ghc-uri-encode" ,ghc-uri-encode)
("ghc-zlib" ,ghc-zlib)))
(arguments
`(#:modules ((guix build haskell-build-system)
@ -84,41 +83,6 @@
(lambda _
(setenv "LD_LIBRARY_PATH" (string-append (getcwd) "/dist/build"))
#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
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))

View File

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

View File

@ -4,12 +4,11 @@
;;; Copyright © 2016, 2020 Marius Bakke <mbakke@fastmail.com>
;;; Copyright © 2017 Julien Lepiller <julien@lepiller.eu>
;;; Copyright © 2017 Hartmut Goebel <h.goebel@crazy-compilers.com>
;;; Copyright © 2017, 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; Copyright © 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2017, 2020, 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; Copyright © 20182021 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2018 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2019, 2020 Andreas Enge <andreas@enge.fr>
;;; Copyright © 2019 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; Copyright © 2020 Sergey Trofimov <sarg@sarg.org.ru>
;;; Copyright © 2021 Guillaume Le Vaillant <glv@posteo.net>
;;;
@ -707,7 +706,7 @@ file system.")
(define-public android-udev-rules
(package
(name "android-udev-rules")
(version "20200613")
(version "20210501")
(source
(origin
(method git-fetch)
@ -716,7 +715,7 @@ file system.")
(commit version)))
(file-name (git-file-name name version))
(sha256
(base32 "0cf5br8x6iwxc1cifv0i1klw7skgs8hghdx6qlqby68kyqg81bb2"))))
(base32 "0pl1wfd7k9vz8mvy2jb2icc5f11c5p07aixpyhjs6gi5cyaywm5f"))))
(build-system trivial-build-system)
(native-inputs `(("source" ,source)))
(arguments
@ -726,8 +725,7 @@ file system.")
(use-modules (guix build utils))
(let ((source (assoc-ref %build-inputs "source")))
(install-file (string-append source "/51-android.rules")
(string-append %output "/lib/udev/rules.d"))
#t))))
(string-append %output "/lib/udev/rules.d"))))))
(home-page "https://github.com/M0Rf30/android-udev-rules")
(synopsis "udev rules for 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"
"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
(package
(name "qfits")
@ -228,7 +293,7 @@ astronomical image-processing packages like Drizzle, Swarp or SExtractor.")
(define-public gnuastro
(package
(name "gnuastro")
(version "0.15")
(version "0.16")
(source
(origin
(method url-fetch)
@ -236,7 +301,7 @@ astronomical image-processing packages like Drizzle, Swarp or SExtractor.")
version ".tar.lz"))
(sha256
(base32
"1jjr3ixxbpsr5m4s7ahh12ymcnlvjzwcp02ya16b1lvzrz1wmhy4"))))
"07xr0r5dmjpnrz7ylf7k3vmjjna2jafi16lfvkqwxj9fyssmz207"))))
(build-system gnu-build-system)
(arguments
'(#:configure-flags '("--disable-static")))

View File

@ -302,6 +302,50 @@ Linux kernel.")
(home-page "https://github.com/tinyalsa/tinyalsa")
(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
(package
(name "libopenmpt")
@ -4578,7 +4622,7 @@ library.")
(define-public faudio
(package
(name "faudio")
(version "21.07")
(version "21.10")
(source
(origin
(method git-fetch)
@ -4587,7 +4631,7 @@ library.")
(commit version)))
(file-name (git-file-name name version))
(sha256
(base32 "0v76pvsna7dx8nb53s7x2vfpws27wi3p34l7af5niqvyh0gl4mzr"))))
(base32 "0l9bicg8v1shsyq9k48zh4wv5kwfs6lfjmm9blzd13xrgmhd07w2"))))
(arguments
'(#:tests? #f ; No tests.
#:configure-flags '("-DGSTREAMER=ON")))
@ -4765,12 +4809,12 @@ workstations as well as consumer software such as music players.")
(define-public redkite
(package
(name "redkite")
(version "1.3.0")
(version "1.3.0") ;marked unmaintained as of Oct. 2021
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://gitlab.com/iurie-sw/redkite")
(url "https://github.com/free-sm/redkite")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(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.")
(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
(package
(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
(package
(name "snapraid")
(version "11.5")
(version "11.6")
(source
(origin
(method git-fetch)
@ -396,7 +396,7 @@ list and implement the backup strategy.")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32 "0dlhdsmq5l208zldfr9z9g0p67wry81dr0r23lpybb5c9fm2f2rm"))))
(base32 "1jpg97my0akh2ayzy0nm4yqiv4gcx79rgyrkzd19yyv3iy719vcw"))))
(build-system gnu-build-system)
(arguments
`(#:configure-flags

View File

@ -1971,14 +1971,14 @@ CDF file formats.")
(define-public r-affxparser
(package
(name "r-affxparser")
(version "1.64.0")
(version "1.64.1")
(source
(origin
(method url-fetch)
(uri (bioconductor-uri "affxparser" version))
(sha256
(base32
"0n3yyrglzqzw0wqxl9igqvkj8qslw6yjkym3vcq0c93kkg7vk01l"))))
"0lr0kmp087j2g4i5kd7rh8a038ymp6z82861lyql2fwk5dh80043"))))
(properties `((upstream-name . "affxparser")))
(build-system r-build-system)
(home-page "https://github.com/HenrikBengtsson/affxparser")
@ -2272,13 +2272,13 @@ powerful online queries from gene annotation to database mining.")
(define-public r-biocparallel
(package
(name "r-biocparallel")
(version "1.26.1")
(version "1.26.2")
(source (origin
(method url-fetch)
(uri (bioconductor-uri "BiocParallel" version))
(sha256
(base32
"1jx1wm47s64ywfddrg8kqzz4xpcmfjwrzbxhvlmys7pf2hzj4gbh"))))
"1y459cygq21f3igsdlxz1zlyad8qbl2qlr5h2d2dpnvblykvf48i"))))
(properties
`((upstream-name . "BiocParallel")))
(build-system r-build-system)
@ -2795,13 +2795,13 @@ global-scaling and full-quantile normalization.")
(define-public r-edger
(package
(name "r-edger")
(version "3.34.0")
(version "3.34.1")
(source (origin
(method url-fetch)
(uri (bioconductor-uri "edgeR" version))
(sha256
(base32
"1ikl9y6hj2p92nrb1ydxy2410b3wrax83rfy2imaj0vgfmhsgx6g"))))
"0f6apsjq6cn794840ls9y2n0hix1gyhvkdgxch1v22qr4sq0c86k"))))
(properties `((upstream-name . "edgeR")))
(build-system r-build-system)
(propagated-inputs
@ -3024,13 +3024,13 @@ genomic intervals. In addition, it can use BAM or BigWig files as input.")
(define-public r-genomeinfodb
(package
(name "r-genomeinfodb")
(version "1.28.1")
(version "1.28.4")
(source (origin
(method url-fetch)
(uri (bioconductor-uri "GenomeInfoDb" version))
(sha256
(base32
"1ga8yrn7j1wn9wdsvf4ws6n2987yk1yxz22v2jzaszfikhjh1sp8"))))
"0fjpgvpvyvl8cqgh2annib6h0c5li3aqz1ajfh5z5k5d0avdm4w0"))))
(properties
`((upstream-name . "GenomeInfoDb")))
(build-system r-build-system)
@ -3087,13 +3087,13 @@ alignments.")
(define-public r-genomicfeatures
(package
(name "r-genomicfeatures")
(version "1.44.1")
(version "1.44.2")
(source (origin
(method url-fetch)
(uri (bioconductor-uri "GenomicFeatures" version))
(sha256
(base32
"0byizkq18kkyq3n604f38z4mikhi3szsrfrlz22wdq2ldq3nzkis"))))
"091p8xnf2xkqhind81vyv1rmy2fz2b3qalcbrsw4qnp24vgdv2am"))))
(properties
`((upstream-name . "GenomicFeatures")))
(build-system r-build-system)
@ -4236,6 +4236,45 @@ purposes. The package also contains legacy support for early single-end,
ungapped alignment formats.")
(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
(package
(name "r-trajectoryutils")
@ -4851,14 +4890,14 @@ signal in the input, that lead to spurious peaks during peak calling.")
(define-public r-diffbind
(package
(name "r-diffbind")
(version "3.2.5")
(version "3.2.7")
(source
(origin
(method url-fetch)
(uri (bioconductor-uri "DiffBind" version))
(sha256
(base32
"1rp4sgx58g1lq5brpx07wffllhvsqq1097vrjiaksbih08338nih"))))
"01jfxcj5c0088vvsi3pz8fs0ka6n12l2j8s1d0rpqwa1y0444x7z"))))
(properties `((upstream-name . "DiffBind")))
(build-system r-build-system)
(propagated-inputs
@ -5097,14 +5136,14 @@ determining dependencies between variables, code improvement suggestions.")
(define-public r-chippeakanno
(package
(name "r-chippeakanno")
(version "3.26.3")
(version "3.26.4")
(source
(origin
(method url-fetch)
(uri (bioconductor-uri "ChIPpeakAnno" version))
(sha256
(base32
"07dvg3r4kghkqhh1a8rw149hgfswmzdh9cvnam8c82006cpmi74s"))))
"1iqzm7pifl9zrw3s06i6h85n1p01pd06vh1a93izyfhgybxn262d"))))
(properties `((upstream-name . "ChIPpeakAnno")))
(build-system r-build-system)
(propagated-inputs
@ -5151,13 +5190,13 @@ enrichedGO (addGeneIDs).")
(define-public r-matrixgenerics
(package
(name "r-matrixgenerics")
(version "1.4.2")
(version "1.4.3")
(source (origin
(method url-fetch)
(uri (bioconductor-uri "MatrixGenerics" version))
(sha256
(base32
"0kjsc5ghcplay4a74ffpwsf3kbp51x6rl5265gvlfchdwrawkzd2"))))
"1yir3rwhz5vf0pdn3fpvlc57c75k98gvv8gapajbvymz3lyghijv"))))
(properties
`((upstream-name . "MatrixGenerics")))
(build-system r-build-system)
@ -5801,29 +5840,30 @@ platform for merging tree with associated data and converting file formats.")
(define-public r-ggtree
(package
(name "r-ggtree")
(version "3.0.3")
(version "3.0.4")
(source
(origin
(method url-fetch)
(uri (bioconductor-uri "ggtree" version))
(sha256
(base32
"02ydi5iyxwrvwfjmv8pbanmzpi1r99mc4gxl17fpq2jf1d1mk6g0"))))
"0xf4b9vfdyzzivwgw4ymapl5bb4k9p04mmr53822kxgfd5qrs1zx"))))
(properties `((upstream-name . "ggtree")))
(build-system r-build-system)
(propagated-inputs
`(("r-ape" ,r-ape)
("r-aplot" ,r-aplot)
("r-dplyr" ,r-dplyr)
("r-ggfun" ,r-ggfun)
("r-ggplot2" ,r-ggplot2)
("r-magrittr" ,r-magrittr)
("r-purrr" ,r-purrr)
("r-rlang" ,r-rlang)
("r-rvcheck" ,r-rvcheck)
("r-scales" ,r-scales)
("r-tidyr" ,r-tidyr)
("r-tidytree" ,r-tidytree)
("r-treeio" ,r-treeio)))
("r-treeio" ,r-treeio)
("r-yulab-utils" ,r-yulab-utils)))
(native-inputs `(("r-knitr" ,r-knitr)))
(home-page "https://yulab-smu.top/treedata-book/")
(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
(package
(name "r-clusterprofiler")
(version "4.0.4")
(version "4.0.5")
(source
(origin
(method url-fetch)
(uri (bioconductor-uri "clusterProfiler" version))
(sha256
(base32
"161w9mn2plmymvzf1hkk9fwi3d9c26kbcpndyyrfcl6bg2nxr1s8"))))
"1dccrl2ffhgmv3iqlmpln7z86ahpf0j9ma194fnknsgi3cd9rhrl"))))
(properties
`((upstream-name . "clusterProfiler")))
(build-system r-build-system)
@ -7421,8 +7461,8 @@ All the visualization methods are developed based on ggplot2 graphics.")
("r-plyr" ,r-plyr)
("r-qvalue" ,r-qvalue)
("r-rlang" ,r-rlang)
("r-rvcheck" ,r-rvcheck)
("r-tidyr" ,r-tidyr)))
("r-tidyr" ,r-tidyr)
("r-yulab-utils" ,r-yulab-utils)))
(native-inputs
`(("r-knitr" ,r-knitr)))
(home-page "https://guangchuangyu.github.io/software/clusterProfiler/")
@ -8850,14 +8890,14 @@ Currently only Affymetrix oligonucleotide analysis is supported.")
(define-public r-zinbwave
(package
(name "r-zinbwave")
(version "1.14.1")
(version "1.14.2")
(source
(origin
(method url-fetch)
(uri (bioconductor-uri "zinbwave" version))
(sha256
(base32
"0xgjbk35wl1vjqyq4y5c7hna8hkgmf56xjaxcph9bs2q7mbdnqwf"))))
"1y8krazz2qdn0wn8ijjs2gn5dl5l960v6bijbkvh0r8066l7viky"))))
(build-system r-build-system)
(propagated-inputs
`(("r-biocparallel" ,r-biocparallel)
@ -10176,14 +10216,14 @@ genes in the gene-set that are ranked above the leading edge).")
(define-public r-cicero
(package
(name "r-cicero")
(version "1.10.0")
(version "1.10.1")
(source
(origin
(method url-fetch)
(uri (bioconductor-uri "cicero" version))
(sha256
(base32
"0kw16zf9004d1zlwsswhbcb7p77nabpd1fjagznff3zyan9fpdxf"))))
"1y34cm52bv1v2hr7sz8zjzxwd4wng7v75avz5wx45l0ld54z9l10"))))
(build-system r-build-system)
(propagated-inputs
`(("r-assertthat" ,r-assertthat)
@ -10488,14 +10528,14 @@ metrics, with methods for objects produced by the @code{methylumi} and
(define-public r-gdsfmt
(package
(name "r-gdsfmt")
(version "1.28.0")
(version "1.28.1")
(source
(origin
(method url-fetch)
(uri (bioconductor-uri "gdsfmt" version))
(sha256
(base32
"119qdivd7vaaqkjb0nrwidi6g26hh8znhif3g4prqn7x5pl2clvy"))
"1w3z718q3bhh8bp71va9pbcd62pwbvgjw33ffg960jya40xssvc7"))
(modules '((guix build utils)))
;; Remove bundled sources of zlib, lz4, and xz. Don't attempt to build
;; 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"
(("all: \\$\\(SHLIB\\)") "all:")
(("\\$\\(SHLIB\\): liblzma.a") "")
(("(ZLIB|LZ4)/.*") "")
(("^ (ZLIB|LZ4)/.*") "")
(("CoreArray/dVLIntGDS.cpp.*")
"CoreArray/dVLIntGDS.cpp")
(("CoreArray/dVLIntGDS.o.*")
@ -10517,8 +10557,7 @@ metrics, with methods for objects produced by the @code{methylumi} and
"PKG_LIBS = -llz4"))
(substitute* "src/CoreArray/dStream.h"
(("include \"../(ZLIB|LZ4|XZ/api)/(.*)\"" _ _ header)
(string-append "include <" header ">")))
#t))))
(string-append "include <" header ">")))))))
(properties `((upstream-name . "gdsfmt")))
(build-system r-build-system)
(inputs
@ -10711,14 +10750,14 @@ procedures that induce nucleotide substitutions (e.g. BisSeq).")
(define-public r-timeseriesexperiment
(package
(name "r-timeseriesexperiment")
(version "1.10.0")
(version "1.10.1")
(source
(origin
(method url-fetch)
(uri (bioconductor-uri "TimeSeriesExperiment" version))
(sha256
(base32
"10xgihjssnc6i03819p9gnzwfc7znanic514ar3yxzl3fhxy3yyy"))))
"1095a2ynxcf9xiac5cjzslcbmjnjpbby0vy7d84qagdiq1w6mrhn"))))
(properties
`((upstream-name . "TimeSeriesExperiment")))
(build-system r-build-system)
@ -11878,14 +11917,14 @@ gene selection, testing relationships, and so on.")
(define-public r-biocpkgtools
(package
(name "r-biocpkgtools")
(version "1.10.1")
(version "1.10.2")
(source
(origin
(method url-fetch)
(uri (bioconductor-uri "BiocPkgTools" version))
(sha256
(base32
"18a9mbzfmkipnv1cc9h3rhn9jxdp7nzywp0bz7hvmsaffv4p4skc"))))
"1sfp1nxlwbbbpx2iwvyk9p10jdy2vxhgn2b5fy5blayzjjlb3d80"))))
(properties `((upstream-name . "BiocPkgTools")))
(build-system r-build-system)
(propagated-inputs
@ -11904,7 +11943,6 @@ gene selection, testing relationships, and so on.")
("r-magrittr" ,r-magrittr)
("r-rbgl" ,r-rbgl)
("r-readr" ,r-readr)
("r-rex" ,r-rex)
("r-rlang" ,r-rlang)
("r-rvest" ,r-rvest)
("r-stringr" ,r-stringr)
@ -12279,13 +12317,13 @@ routines.")
(define-public r-s4vectors
(package
(name "r-s4vectors")
(version "0.30.0")
(version "0.30.1")
(source (origin
(method url-fetch)
(uri (bioconductor-uri "S4Vectors" version))
(sha256
(base32
"0v5vxmg0a27ivgymmzfl595rcb1m3dz27r2wzbk1j97rlpwy1p4q"))))
"103sw0fmmm4f3hprrsn7dwg0kmmr9mcmb46dcwwb6p5np0al2sfx"))))
(properties
`((upstream-name . "S4Vectors")))
(build-system r-build-system)
@ -12934,14 +12972,14 @@ data in the column sparse format.")
(define-public r-delayedmatrixstats
(package
(name "r-delayedmatrixstats")
(version "1.14.2")
(version "1.14.3")
(source
(origin
(method url-fetch)
(uri (bioconductor-uri "DelayedMatrixStats" version))
(sha256
(base32
"1avzd3fj4am9klmlx03nwq2pvgx7646yjwha1gqf0cbx5hibxy02"))))
"1zxs2wjnsq9w1cl4andsd7y9xsdnl1an55khw9viaq758m7hhbcn"))))
(properties
`((upstream-name . "DelayedMatrixStats")))
(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.")
(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
(package
(name "r-biscuiteer")

View File

@ -21,6 +21,7 @@
;;; Copyright © 2020 Bonface Munyoki Kilyungi <bonfacemunyoki@gmail.com>
;;; Copyright © 2021 Tim Howes <timhowes@lavabit.com>
;;; Copyright © 2021 Hong Li <hli@mdc-berlin.de>
;;; Copyright © 2021 Simon Tournier <zimon.toutoune@gmail.com>
;;; Copyright © 2021 Felix Gruber <felgru@posteo.net>
;;;
;;; This file is part of GNU Guix.
@ -106,7 +107,6 @@
#:use-module (gnu packages jemalloc)
#:use-module (gnu packages jupyter)
#:use-module (gnu packages linux)
#:use-module (gnu packages lisp-xyz)
#:use-module (gnu packages logging)
#:use-module (gnu packages lsof)
#:use-module (gnu packages machine-learning)
@ -148,6 +148,7 @@
#:use-module (gnu packages textutils)
#:use-module (gnu packages time)
#:use-module (gnu packages tls)
#:use-module (gnu packages uglifyjs)
#:use-module (gnu packages vim)
#:use-module (gnu packages web)
#:use-module (gnu packages wget)
@ -2323,7 +2324,13 @@ databases.")
(let ((out (assoc-ref outputs "out")))
(for-each make-file-writable
(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
`(("htseq" ,htseq)
("python-pybedtools" ,python-pybedtools)
@ -7351,6 +7358,39 @@ sequence.")
(supported-systems '("i686-linux" "x86_64-linux"))
(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
(package
(name "r-snapatac")
@ -9221,7 +9261,7 @@ Browser.")
(lambda* (#:key inputs #:allow-other-keys)
(let* ((file (assoc-ref inputs "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
(cut dump-port minified <>))))
#t))
@ -9279,7 +9319,7 @@ Browser.")
"v1.39.4/dist/plotly.js"))
(sha256
(base32 "138mwsr4nf5qif4mrxx286mpnagxd1xwl6k8aidrjgknaqg88zyr"))))
("uglify-js" ,uglify-js)))
("uglifyjs" ,node-uglify-js)))
(home-page "https://www.bioinformatics.babraham.ac.uk/projects/bismark/")
(synopsis "Map bisulfite treated sequence reads and analyze methylation")
(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"))
(sha256
(base32
"1ja3bda1appxrzbfy7wp7khy30mm7lic8xbq3gkbpc5bld3as9cm"))))
"1ja3bda1appxrzbfy7wp7khy30mm7lic8xbq3gkbpc5bld3as9cm"))
(patches (search-patches "pigx-rnaseq-no-citeproc.patch"))))
(build-system gnu-build-system)
(arguments
`(#:parallel-tests? #f ; not supported
@ -10402,6 +10443,9 @@ once. This package provides tools to perform Drop-seq analyses.")
(substitute* "Makefile.in"
(("^ tests/test_multiqc/test.sh") "")
(("^ test.sh") ""))))
(add-before 'bootstrap 'autoreconf
(lambda _
(invoke "autoreconf" "-vif")))
(add-before 'check 'set-timezone
;; The readr package is picky about timezones.
(lambda* (#:key inputs #:allow-other-keys)
@ -10441,12 +10485,13 @@ once. This package provides tools to perform Drop-seq analyses.")
("r-rjson" ,r-rjson)
("salmon" ,salmon)
("pandoc" ,pandoc)
("pandoc-citeproc" ,pandoc-citeproc)
("python-wrapper" ,python-wrapper)
("python-deeptools" ,python-deeptools)
("python-pyyaml" ,python-pyyaml)))
(native-inputs
`(("tzdata" ,tzdata)))
`(("tzdata" ,tzdata)
("automake" ,automake)
("autoconf" ,autoconf)))
(home-page "https://bioinformatics.mdc-berlin.de/pigx/")
(synopsis "Analysis pipeline for RNA sequencing experiments")
(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
(package
(name "pigx-chipseq")
(version "0.0.52")
(version "0.0.53")
(source (origin
(method url-fetch)
(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"))
(sha256
(base32
"097cvc8kr3r1nq0sgjpirzmixwjl074qp4qq3sx4ngfqi06af6r9"))))
"0c6npx35sszycf059w1x1k4k9hq1qqxny0i4p57q1188czr4561h"))
(patches (search-patches "pigx-chipseq-no-citeproc.patch"))))
(build-system gnu-build-system)
;; parts of the tests rely on access to the network
(arguments '(#:tests? #f))
(arguments
`(#: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
`(("grep" ,grep)
("coreutils" ,coreutils)
@ -10492,6 +10543,7 @@ expression report comparing samples in an easily configurable manner.")
("r-ggrepel" ,r-ggrepel)
("r-gprofiler2" ,r-gprofiler2)
("r-heatmaply" ,r-heatmaply)
("r-hexbin" ,r-hexbin)
("r-htmlwidgets" ,r-htmlwidgets)
("r-jsonlite" ,r-jsonlite)
("r-pheatmap" ,r-pheatmap)
@ -10513,7 +10565,6 @@ expression report comparing samples in an easily configurable manner.")
("multiqc" ,multiqc)
("perl" ,perl)
("pandoc" ,pandoc)
("pandoc-citeproc" ,pandoc-citeproc)
("fastqc" ,fastqc)
("bowtie" ,bowtie)
("idr" ,idr)
@ -10522,7 +10573,9 @@ expression report comparing samples in an easily configurable manner.")
("bedtools" ,bedtools)
("kentutils" ,kentutils)))
(native-inputs
`(("python-pytest" ,python-pytest)))
`(("autoconf" ,autoconf)
("automake" ,automake)
("python-pytest" ,python-pytest)))
(home-page "https://bioinformatics.mdc-berlin.de/pigx/")
(synopsis "Analysis pipeline for ChIP sequencing experiments")
(description "PiGX ChIPseq is an analysis pipeline for preprocessing, peak
@ -10545,7 +10598,8 @@ in an easily configurable manner.")
"/pigx_bsseq-" version ".tar.gz"))
(sha256
(base32
"05al5dacfp1vf1x3cq20jhd6w4xj5vaxslzaka6yrpg0av8sh3k3"))))
"05al5dacfp1vf1x3cq20jhd6w4xj5vaxslzaka6yrpg0av8sh3k3"))
(patches (search-patches "pigx-bsseq-no-citeproc.patch"))))
(build-system gnu-build-system)
(arguments
`(;; TODO: tests currently require 12+GB of RAM. See
@ -10553,6 +10607,9 @@ in an easily configurable manner.")
#:tests? #f
#:phases
(modify-phases %standard-phases
(add-before 'bootstrap 'autoreconf
(lambda _
(invoke "autoreconf" "-vif")))
(add-before 'check 'set-timezone
;; The readr package is picky about timezones.
(lambda* (#:key inputs #:allow-other-keys)
@ -10561,7 +10618,9 @@ in an easily configurable manner.")
(search-input-directory inputs
"share/zoneinfo")))))))
(native-inputs
`(("tzdata" ,tzdata)))
`(("tzdata" ,tzdata)
("automake" ,automake)
("autoconf" ,autoconf)))
(inputs
`(("coreutils" ,coreutils)
("sed" ,sed)
@ -10581,7 +10640,6 @@ in an easily configurable manner.")
("r-ggplot2" ,r-ggplot2)
("r-ggbio" ,r-ggbio)
("pandoc" ,pandoc)
("pandoc-citeproc" ,pandoc-citeproc)
("python-wrapper" ,python-wrapper)
("python-pyyaml" ,python-pyyaml)
("snakemake" ,snakemake)
@ -10614,8 +10672,18 @@ methylation and segmentation.")
"/pigx_scrnaseq-" version ".tar.gz"))
(sha256
(base32
"1h5mcxzwj3cidlkvy9ly5wmi48vwfsjf8dxjfirknqxr9a92hwlx"))))
"1h5mcxzwj3cidlkvy9ly5wmi48vwfsjf8dxjfirknqxr9a92hwlx"))
(patches (search-patches "pigx-scrnaseq-no-citeproc.patch"))))
(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
`(("coreutils" ,coreutils)
("perl" ,perl)
@ -10630,7 +10698,6 @@ methylation and segmentation.")
("python-numpy" ,python-numpy)
("python-loompy" ,python-loompy)
("pandoc" ,pandoc)
("pandoc-citeproc" ,pandoc-citeproc)
("samtools" ,samtools)
("snakemake" ,snakemake)
("star" ,star-for-pigx)
@ -10680,8 +10747,18 @@ based methods.")
"/pigx_sars-cov2-ww-" version ".tar.gz"))
(sha256
(base32
"1hhdbwsnl0d37lrmisw5hr630xr8s41qvxflm05anh11rj8n22yw"))))
"1hhdbwsnl0d37lrmisw5hr630xr8s41qvxflm05anh11rj8n22yw"))
(patches (search-patches "pigx-sars-cov2-ww-no-citeproc.patch"))))
(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
`(("bash-minimal" ,bash-minimal)
("bwa" ,bwa)
@ -12360,17 +12437,18 @@ datasets.")
(define-public ngless
(package
(name "ngless")
(version "1.1.0")
(version "1.3.0")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://gitlab.com/ngless/ngless.git")
(url "https://github.com/ngless-toolkit/ngless.git")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32
"1wim8wpqyff080dfcazynrmjwqas38m24m0v350w245mmhrapdma"))))
"0pb9f6b0yk9p4cdwiym8r190q1bcdiwvc7i2s6rw54qgi8r3g6pj"))
(patches (search-patches "ngless-unliftio.patch"))))
(build-system haskell-build-system)
(arguments
`(#:haddock? #f ; The haddock phase fails with: NGLess/CmdArgs.hs:20:1:
@ -12441,7 +12519,7 @@ datasets.")
("ghc-http-conduit" ,ghc-http-conduit)
("ghc-inline-c" ,ghc-inline-c)
("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-optparse-applicative" ,ghc-optparse-applicative)
("ghc-regex" ,ghc-regex)
@ -12468,12 +12546,49 @@ datasets.")
("ghc-test-framework-hunit",ghc-test-framework-hunit)
("ghc-test-framework-quickcheck2" ,ghc-test-framework-quickcheck2)
("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")
(description "Ngless is a domain-specific language for
@dfn{next-generation sequencing} (NGS) data processing.")
(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
;; The recommended way to install is to clone the git repository
;; https://github.com/rrwick/Filtlong#installation

View File

@ -616,6 +616,7 @@ def test_ctrl_c"))
"tools/mkenvimage"
"tools/dumpimage"
"tools/mkimage"
"tools/kwboot"
"tools/proftool"
"tools/fdtgrep"
"tools/env/fw_printenv"
@ -1070,14 +1071,14 @@ tools, and more.")
(define-public os-prober
(package
(name "os-prober")
(version "1.78")
(version "1.79")
(source
(origin
(method url-fetch)
(uri (string-append "mirror://debian/pool/main/o/os-prober/os-prober_"
version ".tar.xz"))
(sha256
(base32 "1sahk72blsrlirly4xlwa8jfxrpwagyn7b81p92q2s9m218rz43f"))))
(base32 "1vhhk0bl2j4910513gn5h3z8nsaavyv3c8764bim2klc0xyk3rmb"))))
(build-system gnu-build-system)
(arguments
`(#: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
(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
(package
(name "ublock-origin")
(version "1.37.2")
(version "1.38.4")
(home-page "https://github.com/gorhill/uBlock")
(source (origin
(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))
(sha256
(base32
"1c1dh9kkimvahs9yw1hv67290h8xvmbl10film7g1wamdxydj97y"))))
"127b5mg54zfci86q66fss701y20b0mjpa4flx7iar7nviqg9fa1h"))))
(build-system gnu-build-system)
(outputs '("xpi" "firefox" "chromium"))
(arguments
@ -81,18 +70,18 @@ supported content to the Kodi media center.")
(modify-phases (map (lambda (phase)
(assq phase %standard-phases))
'(set-paths unpack patch-source-shebangs))
(add-after 'unpack 'link-uassets
(lambda* (#:key native-inputs inputs #:allow-other-keys)
(symlink (string-append (assoc-ref (or native-inputs inputs)
"uassets"))
"../uAssets")
#t))
(add-after 'unpack 'do-not-depend-on-git
(lambda _
;; The script attempts to checkout the uAssets submodule,
;; but we already did so with git-fetch.
(substitute* "tools/make-assets.sh"
(("^git submodule update.*")
""))))
(add-after 'unpack 'make-files-writable
(lambda _
;; The build system copies some files and later tries
;; modifying them.
(for-each make-file-writable (find-files "."))
#t))
(for-each make-file-writable (find-files "."))))
(add-after 'patch-source-shebangs 'build-xpi
(lambda _
(invoke "./tools/make-firefox.sh" "all")))
@ -107,11 +96,9 @@ supported content to the Kodi media center.")
(install-file "dist/build/uBlock0.firefox.xpi"
(string-append xpi "/lib/mozilla/extensions"))
(copy-recursively "dist/build/uBlock0.firefox" firefox)
(copy-recursively "dist/build/uBlock0.chromium" chromium)
#t))))))
(copy-recursively "dist/build/uBlock0.chromium" chromium)))))))
(native-inputs
`(("python" ,python-wrapper)
("uassets" ,uassets)
("zip" ,zip)))
(synopsis "Block unwanted content from web sites")
(description

View File

@ -8,7 +8,7 @@
;;; Copyright © 2018 Alex Vong <alexvong1995@gmail.com>
;;; Copyright © 2019, 2020 Brett Gilio <brettg@gnu.org>
;;; 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 Jakub Kądziołka <kuba@kadziolka.net>
;;; Copyright © 2020 Efraim Flashner <efraim@flashner.co.il>

View File

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

View File

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

View File

@ -969,18 +969,26 @@ standard library.")
(define-public python-pytest
(package
(name "python-pytest")
(version "6.2.1")
(version "6.2.4")
(source
(origin
(method url-fetch)
(uri (pypi-uri "pytest" version))
(sha256
(base32
"01n3jny7m05r6g7gphbkj2xdms75ql93x69crd377hlvi6qikr36"))))
"0jy5f83la1864ss42dhsi1mcm5nl79d8bjg7wk474nlw1c5avg2h"))))
(build-system python-build-system)
(arguments
`(#: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
(lambda* (#:key (tests? #t) #:allow-other-keys)
(setenv "TERM" "dumb") ;attempt disabling markup tests
@ -1093,6 +1101,39 @@ and many external plugins.")
("python-py" ,python2-py)
("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
(package
(name "python-pytest-cov")
@ -1159,6 +1200,36 @@ supports coverage of subprocesses.")
contacting the real http server.")
(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
(package
(name "python-pytest-runner")
@ -1280,11 +1351,21 @@ same arguments.")
(define-public python2-pytest-mock
(let ((base (package-with-python2
(strip-python2-variant python-pytest-mock))))
(strip-python2-variant python-pytest-mock))))
(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
`(("python2-mock" ,python2-mock)
,@(package-propagated-inputs base))))))
("python2-pytest" ,python2-pytest))))))
(define-public python-pytest-xdist
(package
@ -2671,8 +2752,7 @@ retried.")
(name "python-pyhamcrest")
(version "2.0.2")
(source (origin
;; Tests not distributed from pypi release.
(method git-fetch)
(method git-fetch) ;no tests in PyPI archive
(uri (git-reference
(url "https://github.com/hamcrest/PyHamcrest")
(commit (string-append "V" version))))
@ -2689,7 +2769,8 @@ retried.")
(arguments
`(#:phases (modify-phases %standard-phases
(replace 'check
(lambda _
(lambda* (#:key inputs outputs #:allow-other-keys)
(add-installed-pythonpath inputs outputs)
(invoke "pytest" "-vv"))))))
(home-page "http://hamcrest.org/")
(synopsis "Hamcrest matchers for Python")

View File

@ -5,6 +5,7 @@
;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2020 Björn Höfling <bjoern.hoefling@bjoernhoefling.de>
;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com>
;;; Copyright © 2021 Ricardo Wurmus <rekado@elephly.net>
;;;
;;; This file is part of GNU Guix.
;;;
@ -35,9 +36,11 @@
#:use-module (gnu packages check)
#:use-module (gnu packages compression)
#:use-module (gnu packages documentation)
#:use-module (gnu packages fontutils)
#:use-module (gnu packages gl)
#:use-module (gnu packages graphviz)
#:use-module (gnu packages gv)
#:use-module (gnu packages image)
#:use-module (gnu packages maths)
#:use-module (gnu packages mpi)
#:use-module (gnu packages perl)
@ -606,3 +609,62 @@ symmetries written in C. Spglib can be used to:
@item Search irreducible k-points
@end enumerate")
(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 pulseaudio)
#: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 serialization)
#: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/smhasher" ;Public domain
"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/trace_event" ;BSD-3
"third_party/angle/src/third_party/volk" ;Expat
@ -109,8 +110,6 @@
"third_party/catapult" ;BSD-3
"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/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/six" ;Expat
;; XXX: This is a minified version of <https://d3js.org/>.
@ -133,6 +132,7 @@
"third_party/cros_system_api" ;BSD-3
"third_party/dav1d" ;BSD-2
"third_party/dawn" ;ASL2.0
"third_party/dawn/third_party/tint"
"third_party/depot_tools/owners.py" ;BSD-3
"third_party/devtools-frontend" ;BSD-3
"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/vulkanmemoryallocator" ;BSD-3, Expat
"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/sqlite" ;Public domain
"third_party/swiftshader" ;ASL2.0
@ -300,7 +305,6 @@
"third_party/zlib/google" ;BSD-3
"third_party/zxcvbn-cpp" ;Expat
"tools/grit/third_party/six" ;Expat
"url/third_party/mozilla" ;BSD-3, MPL1.1/GPL2+/LGPL2.1+
"v8/src/third_party/siphash" ;Public domain
"v8/src/third_party/utf8-decoder" ;Expat
@ -314,6 +318,14 @@
;; run the Blink performance tests, just remove everything to save ~70MiB.
'("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))
(origin
(method url-fetch)
@ -324,17 +336,24 @@
(string-append "ungoogled-chromium-" category "-" name))))
(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")
;; Note: use 'git describe --long' even for exact tags to placate the
;; custom version format for ungoogled-chromium.
(define %ungoogled-revision "92.0.4515.159-1-8-g8164c91")
(define %arch-patches
(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
(list (debian-patch "fixes/nomerge.patch"
"0lybs2b5gk08j8cr6vjrs9d3drd7qfw013z2r0y00by8dnpm74i3")
(debian-patch "system/nspr.patch"
"1gdirn1k1i841l8zp8xgr95kl16b5nx827am9rcxj8sfkm8hgkn3")
(debian-patch "system/zlib.patch"
"0j313bd3q8qc065j60x97dckrfgbwl4qxc8jhz33iihvv4lwziwv")
(debian-patch "system/openjpeg.patch"
@ -348,12 +367,18 @@
(file-name (git-file-name "ungoogled-chromium" %ungoogled-revision))
(sha256
(base32
"0wbcbjzh5ak4nciahqw4yvxc4x8ik4x0iz9h4kfy0m011sxzy174"))))
"113abybh8kkw9a92lj6jww6dl6rc1sv5x7a7a1gjwsihzd2r0cik"))))
(define %guix-patches
(list (local-file
(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:
;; *) Applies various patches for unbundling purposes and libstdc++ compatibility.
@ -378,6 +403,13 @@
patch "--no-backup-if-mismatch"))
(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
(format #t "Ungooglifying...~%")
(force-output)
@ -397,7 +429,7 @@
(format #t "Pruning third party files...~%")
(force-output)
(apply invoke (string-append #+python-2 "/bin/python")
(apply invoke "python"
"build/linux/unbundle/remove_bundled_libraries.py"
"--do-remove" '#$%preserved-third-party-files)
@ -414,7 +446,7 @@
"--system-libraries" "ffmpeg" "flac" "fontconfig"
"freetype" "harfbuzz-ng" "icu" "libdrm" "libevent"
"libjpeg" "libpng" "libwebp" "libxml" "libxslt"
"openh264" "opus" "snappy" "zlib")))))
"openh264" "opus" "zlib")))))
(define opus+custom
(package/inherit opus
@ -428,22 +460,6 @@
`(cons "--enable-custom-modes"
,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
;; this trick to make it wrap 'lld'.
(define (make-lld-wrapper lld)
@ -472,10 +488,12 @@
(define-public ungoogled-chromium
(package
(name "ungoogled-chromium")
(version (string-append %chromium-version "-0."
(match (string-split %ungoogled-revision #\-)
((version revision commits g+short)
(string-drop g+short 1)))))
(version (if (string-prefix? %chromium-version %ungoogled-revision)
%ungoogled-revision
;; ungoogled-chromium version tags always have a "-1" suffix,
;; 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")
(source (origin
(method url-fetch)
@ -484,7 +502,7 @@
%chromium-version ".tar.xz"))
(sha256
(base32
"04gxgimg5ygzx6nvfws5y9dppdfjg1fhyl8zbykmksbh1myk6zfr"))
"16755mfqxxmvslm9ix060safrnml91ckj5p85960jj5g5hmslwbh"))
(modules '((guix build utils)))
(snippet (force ungoogled-chromium-snippet))))
(build-system gnu-build-system)
@ -506,6 +524,8 @@
;; a developer build.
"is_official_build=true"
"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"
"use_sysroot=false"
"goma_dir=\"\""
@ -514,7 +534,7 @@
"use_unofficial_version_number=false"
"treat_warnings_as_errors=false"
"use_official_google_api_keys=false"
"fieldtrial_testing_like_official_build=true"
"disable_fieldtrial_testing_config=true"
"safe_browsing_mode=0"
"enable_mdns=false"
"enable_one_click_signin=false"
@ -529,6 +549,8 @@
;; Disable code using TensorFlow until it has been scrutinized
;; by the ungoogled project.
"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
;; friends from the environment.
@ -823,21 +845,20 @@
'("24" "48" "64" "128" "256")))))))))
(native-inputs
`(("bison" ,bison)
("clang" ,clang-11)
("clang" ,clang-12)
("gn" ,gn)
("gperf" ,gperf)
("ld-wrapper" ,(make-lld-wrapper lld))
("ninja" ,ninja)
("node" ,node)
("node" ,node-lts)
("pkg-config" ,pkg-config)
("which" ,which)
;; This file contains defaults for new user profiles.
("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-html5lib" ,python-html5lib)
("python2" ,python-2)
("python-beautifulsoup4" ,python-beautifulsoup4)
("python-html5lib" ,python-html5lib)
("python" ,python-wrapper)
("wayland-scanner" ,wayland)))
(inputs
@ -854,7 +875,7 @@
("gdk-pixbuf" ,gdk-pixbuf)
("glib" ,glib)
("gtk+" ,gtk+)
("harfbuzz" ,harfbuzz)
("harfbuzz" ,harfbuzz-3.0)
("icu4c" ,icu4c)
("lcms" ,lcms)
("libevent" ,libevent)
@ -862,7 +883,7 @@
("libjpeg-turbo" ,libjpeg-turbo)
("libpng" ,libpng)
("libva" ,libva)
("libvpx" ,libvpx/chromium)
("libvpx" ,libvpx)
("libwebp" ,libwebp)
("libx11" ,libx11)
("libxcb" ,libxcb)
@ -915,7 +936,9 @@
(home-page "https://github.com/Eloston/ungoogled-chromium")
(description
"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
;; components with other licenses. For full information, see chrome://credits.
(license (list license:bsd-3

View File

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

View File

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

View File

@ -1,6 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; 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 © 2016, 2017, 2019, 2020, 2021 Efraim Flashner <efraim@flashner.co.il>
;;; 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 Pierre Neidhardt <mail@ambrevar.xyz>
;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
;;; Copyright © 2013 Andreas Enge <andreas@enge.fr>
;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2019 Hartmut Goebel <h.goebel@goebel-consult.de>
;;; 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
(package
(name "squashfs-tools-ng")
(version "1.1.2")
(version "1.1.3")
(source
(origin
(method git-fetch)
@ -919,7 +919,7 @@ This package allows you to create and extract such file systems.")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32 "13gx6mc57wjjnrpnkb74zi2wiqazz2q715y1zz7rff02wh1vb5k9"))
(base32 "12ipqmjp10574sz64ls8qbgzkxz5dcbzk0l2fxyh2yrrhnjp34mi"))
(modules '((guix build utils)))
(snippet
'(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.")
(license license:gpl2+)))
(define-public quazip
(define-public quazip-0
(package
(name "quazip")
(version "0.9.1")
@ -2277,6 +2277,21 @@ reading from and writing to ZIP archives. ")
;; distributed under zlib terms.
(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
(package
(name "zchunk")
@ -2430,7 +2445,7 @@ possibly untrusted extraction shell script.")
(define-public ncompress
(package
(name "ncompress")
(version "4.2.4.6")
(version "5.0")
(source (origin
(method git-fetch)
(uri (git-reference
@ -2440,13 +2455,13 @@ possibly untrusted extraction shell script.")
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"1a4yir1ilafz0nzxdwigj204j4yy2zljbc501nsaqqm3dxdap8zn"))))
"090kksxrlqnsdc76fzz2j2ajc98mhmfwyn163ca2ia9niqmlpcm0"))))
(arguments
'(#:make-flags (list "CC=gcc"
`(#:make-flags (list (string-append "CC=" ,(cc-for-target))
(string-append "BINDIR=" %output "/bin")
(string-append "MANDIR=" %output "/share/man/man1"))
#:phases (modify-phases %standard-phases
(delete 'configure))))
(delete 'configure)))) ; no configure script
(build-system gnu-build-system)
(home-page "https://github.com/vapier/ncompress/")
(synopsis "Original Lempel-Ziv compress/uncompress programs")

View File

@ -1,5 +1,5 @@
;;; 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.
;;;

View File

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

View File

@ -6,7 +6,7 @@
;;; Copyright © 2019, 2020 Mathieu Othacehe <m.othacehe@gmail.com>
;;; Copyright © 2019 Pierre Neidhardt <mail@ambrevar.xyz>
;;; 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 Ricardo Wurmus <rekado@elephly.net>
;;; 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
(package
(name "libzen")
(version "0.4.38")
(version "0.4.39")
(source (origin
(method url-fetch)
;; 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"))
(sha256
(base32
"1nkygc17sndznpcf71fdrhwpm8z9a3hc9csqlafwswh49axhfkjr"))))
"1rwaxmid9iv65n0y6xlcyxxydsvihjni9ldxpg6pbqz43amp49xx"))))
(native-inputs
`(("autoconf" ,autoconf)
("automake" ,automake)
@ -173,8 +173,7 @@ use by the C++ Core Guidelines maintained by the Standard C++ Foundation.")
(modify-phases %standard-phases
(add-after 'unpack 'pre-configure
(lambda _
(chdir "Project/GNU/Library")
#t)))))
(chdir "Project/GNU/Library"))))))
(home-page "https://github.com/MediaArea/ZenLib")
(synopsis "C++ utility library")
(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
(package
(name "folly")
(version "2021.04.26.00")
(version "2021.10.04.00")
(source (origin
(method git-fetch)
(uri (git-reference
@ -849,7 +848,7 @@ standard GNU style syntax for options.")
(file-name (git-file-name name version))
(sha256
(base32
"0s3jb02qjl9f4gfj01pa01cilkfpc4p0gbpn6bg5vcicyj76garg"))))
"1h7apl42idymqra0xgw7s5ys3dxrqd8gq0f99g048k4g5fxl64s9"))))
(build-system cmake-build-system)
(arguments
'(;; Tests must be explicitly enabled
@ -1034,7 +1033,7 @@ feature set with a simple and intuitive interface.")
(define-public caf
(package
(name "caf")
(version "0.18.0")
(version "0.18.5")
(source (origin
(method git-fetch)
(uri (git-reference
@ -1043,7 +1042,7 @@ feature set with a simple and intuitive interface.")
(file-name (git-file-name name version))
(sha256
(base32
"1c3spd6vm1h9qhlk5c4fdwi6nbqx5vwz2zvv6qp0rj1hx6xpq3cx"))))
"04b4kjisb5wzq6pilh8xzbxn7qcjgppl8k65hfv0zi0ja8fyp1xk"))))
(build-system cmake-build-system)
(arguments
'(#:configure-flags
@ -1058,8 +1057,8 @@ computation.")
(license license:bsd-3)))
(define-public pcg-cpp
(let ((commit "5b5cac8d61339e810c5dbb4692d868a1d7ca1b2d")
(revision "1"))
(let ((commit "ffd522e7188bef30a00c74dc7eb9de5faff90092")
(revision "2"))
(package
(name "pcg-cpp")
(version (git-version "0.98.1" revision commit))
@ -1071,7 +1070,7 @@ computation.")
(file-name (git-file-name name version))
(sha256
(base32
"1s9dcd4iydlc1xj9m6f7c52nlyx99klk043sk7arqy6kp7gdaa33"))))
"0yxyqaphcc38zilpwpmssrl8ly1v6dimscqk2f4rcv1h22dinnqx"))))
(build-system gnu-build-system)
(arguments
`(#: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
(package
(name "libmd")
(version "1.0.3")
(version "1.0.4")
(source (origin
(method url-fetch)
(uri
@ -184,8 +184,11 @@ communication, encryption, decryption, signatures, etc.")
version ".tar.xz")))
(sha256
(base32
"0jmga8y94h857ilra3qjaiax3wd5pd6mx1h120zhl9fcjmzhj0js"))))
"03skgv013v0y9hxh6j143xdwynb5cmbmbdylvvgfsjz38889477m"))))
(build-system gnu-build-system)
(arguments
`(#:configure-flags
(list "--disable-static")))
(synopsis "Message Digest functions from BSD systems")
(description
"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
(package
(name "hplip")
(version "3.21.6")
(version "3.21.8")
(source (origin
(method url-fetch)
(uri (string-append "mirror://sourceforge/hplip/hplip/" version
"/hplip-" version ".tar.gz"))
(sha256
(base32
"1jkvbq64pxn5rg25pk13xwn5xr2bn0sa95yvh2q4ys0kv79n0cyc"))
"076fjzgw86q817c660h1vzwdp00cyjr49b9bfi7qkhphq6am4gpi"))
(modules '((guix build utils)))
(snippet
'(begin

View File

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

View File

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

View File

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

View File

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

View File

@ -72,16 +72,18 @@
(define-public diffoscope
(package
(name "diffoscope")
(version "177")
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://salsa.debian.org/reproducible-builds/diffoscope.git")
(commit version)))
(file-name (git-file-name name version))
(sha256
(base32
"02np9dq7jnq48lcmz4k1hvwc6xiqgjhrwr1vsbsfw8rxnp9vs0a5"))))
(version "186")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://salsa.debian.org/reproducible-builds/diffoscope.git")
(commit version)))
(file-name (git-file-name name version))
(sha256
(base32 "1qlll5jn76ci5jy915v2kvyngfyycwylxpbdylffzaninvdy3dav"))
(patches
(search-patches "diffoscope-fix-test_item3_deflate_llvm_bitcode.patch"))))
(build-system python-build-system)
(arguments
`(#:phases (modify-phases %standard-phases
@ -89,8 +91,7 @@
;; bug in berkeley-db file type detection.
(add-after 'unpack 'remove-berkeley-test
(lambda _
(delete-file "tests/comparators/test_berkeley_db.py")
#t))
(delete-file "tests/comparators/test_berkeley_db.py")))
(add-after 'unpack 'embed-tool-references
(lambda* (#:key inputs #:allow-other-keys)
(substitute* "diffoscope/comparators/utils/compare.py"
@ -106,27 +107,37 @@
(("\\['stat',")
(string-append "['" (which "stat") "',"))
(("\\['getfacl',")
(string-append "['" (which "getfacl") "',")))
#t))
(string-append "['" (which "getfacl") "',")))))
(add-after 'build 'build-man-page
(lambda* (#:key (make-flags '()) #:allow-other-keys)
(apply invoke "make" "-C" "doc" make-flags)))
(add-before 'check 'writable-test-data
(lambda _
;; Tests may need write access to tests directory.
(for-each make-file-writable (find-files "tests"))
#t))
(for-each make-file-writable (find-files "tests"))))
(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
;; Please add new tests to fix-failing-test and not here ;-)
(lambda _
;; This requires /sbin to be in $PATH.
(delete-file "tests/test_tools.py")
#t))
(delete-file "tests/test_tools.py")))
(add-after 'install 'install-man-page
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(man (string-append out "/share/man/man1")))
(install-file "doc/diffoscope.1" man)
#t))))))
(install-file "doc/diffoscope.1" man)))))))
(inputs `(("rpm" ,rpm) ;for rpm-python
("python-debian" ,python-debian)
("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
(package
(name "dnsmasq")
(version "2.85")
(version "2.86")
(source (origin
(method url-fetch)
(uri (string-append
@ -286,7 +286,7 @@ prompt the user with the option to go with insecure DNS only.")
version ".tar.xz"))
(sha256
(base32
"1yhjwgz8g5qrqvxh6bbmg3443zi8qqjks3q872wyb1zn7n0d765d"))))
"027b0ycw8h8yvvkq46vnr7dv8iqn5srm4kr7hm7sq110kvy2rm98"))))
(build-system gnu-build-system)
(native-inputs
`(("pkg-config" ,pkg-config)))
@ -296,7 +296,7 @@ prompt the user with the option to go with insecure DNS only.")
`(#:phases
(modify-phases %standard-phases (delete 'configure))
#:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
"CC=gcc"
(string-append "CC=" ,(cc-for-target))
"COPTS=\"-DHAVE_DBUS\"")
#:tests? #f)) ; no check target
(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.")
(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
(package
(name "unbound")
@ -769,16 +823,16 @@ served by AS112. Stub and forward zones are supported.")
(define-public yadifa
(package
(name "yadifa")
(version "2.5.0")
(version "2.5.1")
(source
(let ((build "10188"))
(let ((build "10306"))
(origin
(method url-fetch)
(uri
(string-append "https://www.yadifa.eu/sites/default/files/releases/"
"yadifa-" version "-" build ".tar.gz"))
(sha256
(base32 "05ps6fif3sqn6yzkprnp1cm81f3ja4vqc0r6vh7nvzl73gv4rp2w")))))
(base32 "051h4pmh9llwj0w6h0v8fl2f146fb26cv3w5an9dmfh845sv6hzr")))))
(build-system gnu-build-system)
(native-inputs
`(("which" ,which)))
@ -817,7 +871,7 @@ Extensions} (DNSSEC).")
(define-public knot
(package
(name "knot")
(version "3.0.7")
(version "3.1.2")
(source
(origin
(method git-fetch)
@ -826,7 +880,7 @@ Extensions} (DNSSEC).")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32 "0ihd0lfh0r1nzz2di2rqkrx5j1017xv7m54irlhccx21inwv6g3y"))
(base32 "1kyjf6d1jx8q0zjzwy06f4d3ar5cbbqxka8cc7ckwmbpf1n6cij5"))
(modules '((guix build utils)))
(snippet
'(begin
@ -834,8 +888,7 @@ Extensions} (DNSSEC).")
(for-each delete-file (find-files "." "\\.c\\.[gt]."))
(delete-file "src/libknot/yparser/ypbody.c")
;; Remove bundled library to ensure we always use the system's.
(delete-file-recursively "src/contrib/libbpf")
#t))))
(delete-file-recursively "src/contrib/libbpf")))))
(build-system gnu-build-system)
(outputs (list "out" "doc" "lib" "tools"))
(arguments
@ -847,9 +900,10 @@ Extensions} (DNSSEC).")
(string-append "--libdir=" (assoc-ref %outputs "lib") "/lib")
"--sysconfdir=/etc"
"--localstatedir=/var"
"--disable-static" ; static libraries are built by default
"--enable-dnstap" ; let tools read/write capture files
"--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
#:phases
(modify-phases %standard-phases
@ -859,8 +913,7 @@ Extensions} (DNSSEC).")
(lambda _
(substitute* "configure.ac"
(("enable_xdp=yes" match)
(string-append match "\nlibbpf_LIBS=\"$libbpf_LIBS -lz\"")))
#true))
(string-append match "\nlibbpf_LIBS=\"$libbpf_LIBS -lz\"")))))
(add-before 'bootstrap 'update-parser
(lambda _
(with-directory-excursion "src"
@ -869,22 +922,32 @@ Extensions} (DNSSEC).")
(lambda _
;; Don't install empty directories like /etc outside the store.
;; This is needed even when using make config_dir=... install.
(substitute* "src/Makefile.in" (("\\$\\(INSTALL\\) -d") "true"))
#t))
(substitute* "src/Makefile.in" (("\\$\\(INSTALL\\) -d") "true"))))
(add-after 'build 'build-info
(lambda _
(invoke "make" "info")))
(lambda* (#:key make-flags parallel-build? #:allow-other-keys)
(apply invoke "make" "info"
`(,@(if parallel-build?
`("-j" ,(number->string (parallel-job-count)))
'())
,@make-flags))))
(replace 'install
(lambda* (#:key outputs #:allow-other-keys)
(lambda* (#:key make-flags outputs parallel-build? #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(doc (string-append out "/share/doc/" ,name "-" ,version))
(etc (string-append doc "/examples/etc")))
(invoke "make"
(string-append "config_dir=" etc)
"install"))))
(apply invoke "make" "install"
(string-append "config_dir=" etc)
`(,@(if parallel-build?
`("-j" ,(number->string (parallel-job-count)))
'())
,@make-flags)))))
(add-after 'install 'install-info
(lambda _
(invoke "make" "install-info")))
(lambda* (#:key make-flags parallel-build? #:allow-other-keys)
(apply invoke "make" "install-info"
`(,@(if parallel-build?
`("-j" ,(number->string (parallel-job-count)))
'())
,@make-flags))))
(add-after 'install 'break-circular-:lib->:out-reference
(lambda* (#:key outputs #:allow-other-keys)
(let ((lib (assoc-ref outputs "lib")))
@ -892,8 +955,7 @@ Extensions} (DNSSEC).")
(substitute* file
(("(prefix=).*" _ assign)
(string-append assign lib "\n"))))
(find-files lib "\\.pc$"))
#true)))
(find-files lib "\\.pc$")))))
(add-after 'install 'split-:tools
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
@ -902,8 +964,7 @@ Extensions} (DNSSEC).")
(rename-file (string-append out "/bin")
(string-append tools "/bin"))
(rename-file (string-append out "/share/man/man1")
(string-append tools "/share/man/man1"))
#true))))))
(string-append tools "/share/man/man1"))))))))
(native-inputs
`(("autoconf" ,autoconf)
("automake" ,automake)
@ -921,6 +982,7 @@ Extensions} (DNSSEC).")
("libedit" ,libedit)
("libelf" ,libelf)
("libidn" ,libidn)
("libmnl" ,libmnl)
("libnghttp2" ,nghttp2 "lib")
("liburcu" ,liburcu)
("lmdb" ,lmdb)

View File

@ -1,6 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; 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>
;;;
;;; 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" ,sdl2)
("speexdsp" ,speexdsp)
;; ("wildmidi" ,wildmidi) ; TODO: package it
("wildmidi" ,wildmidi)
("zlib" ,zlib)))
(home-page "https://easyrpg.org/")
(synopsis "Play RPG Maker 2000 and 2003 games")

View File

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

View File

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

View File

@ -52,20 +52,11 @@
(arguments
`(#:phases
(modify-phases %standard-phases
(add-after 'unpack 'update-constraints
(add-before 'configure 'update-constraints
(lambda _
(substitute* "elm.cabal"
(("ansi-terminal >= 0\\.8 && < 0\\.9,")
"ansi-terminal >= 0.8 && < 0.10,")
(("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)))))
(("(ansi-terminal|containers|network|http-client|language-glsl)\\s+[^,]+" all dep)
dep)))))))
(inputs
`(("ghc-ansi-terminal" ,ghc-ansi-terminal)
("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 © 2019 Jesse John Gildersleve <jessejohngildersleve@zohomail.eu>
;;; 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 © 2020 Jack Hill <jackhill@jackhill.us>
;;; Copyright © 2020 Morgan Smith <Morgan.J.Smith@outlook.com>

View File

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

View File

@ -24,6 +24,7 @@
;;; Copyright © 2021 qblade <qblade@protonmail.com>
;;; Copyright © 2021 Gerd Heber <gerd.heber@gmail.com>
;;; Copyright © 2021 Guillaume Le Vaillant <glv@posteo.net>
;;; Copyright © 2021 Ivan Gankevich <i.gankevich@spbu.ru>
;;;
;;; This file is part of GNU Guix.
;;;
@ -95,6 +96,7 @@
#:use-module (gnu packages image-processing)
#:use-module (gnu packages imagemagick)
#:use-module (gnu packages libevent)
#:use-module (gnu packages libusb)
#:use-module (gnu packages linux) ;FIXME: for pcb
#:use-module (gnu packages lisp)
#:use-module (gnu packages m4)
@ -134,17 +136,18 @@
(name "librecad")
(version "2.2.0-rc2")
(source (origin
(method url-fetch)
(uri (string-append
"https://github.com/LibreCAD/LibreCAD/archive/"
version ".tar.gz"))
(file-name (string-append name "-" version ".tar.gz"))
(method git-fetch)
(uri (git-reference
(url "https://github.com/LibreCAD/LibreCAD")
(commit version)))
(file-name (git-file-name name version))
(sha256
(base32
"0a7fzhxkkn2s3hkgqrw3s3wyspzfla3c5lgbsjyqzvlnrp3anxnm"))))
(build-system gnu-build-system)
"08cl4935c9vznz9qdw1zgd86rn7hl64zpfayxl07x21bhf53pn24"))))
(build-system qt-build-system)
(arguments
'(#:phases
'(#:test-target "check"
#:phases
(modify-phases %standard-phases
;; Without this patch boost complains that "make_array" is not a
;; member of "boost::serialization".
@ -184,19 +187,7 @@
(install-file "unix/librecad" bin)
(mkdir-p share)
(copy-recursively "unix/resources" share))
#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))))))
#t)))))
(inputs
`(("boost" ,boost)
("muparser" ,muparser)
@ -901,7 +892,7 @@ Emacs).")
(define-public kicad
(package
(name "kicad")
(version "5.1.6")
(version "5.1.10")
(source
(origin
(method git-fetch)
@ -909,7 +900,7 @@ Emacs).")
(url "https://gitlab.com/kicad/code/kicad.git")
(commit version)))
(sha256
(base32 "1pa3z0h0679jmgxlzc833h6q85b5paxdp69kf2h93vkaryj58622"))
(base32 "10ix560bqy0lprnik1bprxw9ix4g8w2ipvyikx551ak9ryvgwjcc"))
(file-name (git-file-name name version))))
(build-system cmake-build-system)
(arguments
@ -1020,7 +1011,7 @@ electrical diagrams), gerbview (viewing Gerber files) and others.")
(file-name (git-file-name name version))
(sha256
(base32
"0qryi8xjm23ka363zfl7bbga0v5c31fr3d4nyxp3m168vkv9zhha"))))
"0y51l0r62cnxkvpc21732p3cx7pjvaqjih8193502hlv9kv1j9p6"))))
(build-system cmake-build-system)
(arguments
`(#:phases
@ -1041,7 +1032,7 @@ translations for KiCad.")
(define-public kicad-doc
(package
(name "kicad-doc")
(version "5.1.6")
(version (package-version kicad))
(source (origin
(method git-fetch)
(uri (git-reference
@ -1050,7 +1041,7 @@ translations for KiCad.")
(file-name (git-file-name name version))
(sha256
(base32
"03kvss8a0xrjnfvkwymm0vfd7rn9ix7i926xdzz9jg9iycrjfj3g"))))
"005ljkb7liayvyj4vxd5ncrknfbhnk6xvyjk43qz810hrp1fv0hk"))))
(build-system cmake-build-system)
(arguments
`(#:configure-flags (list "-DBUILD_FORMATS=html")
@ -1079,12 +1070,12 @@ translations for KiCad.")
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/KiCad/kicad-symbols")
(url "https://gitlab.com/kicad/libraries/kicad-symbols.git")
(commit version)))
(file-name (git-file-name name version))
(sha256
(base32
"12w3rdy085drlikkpb27n9ni7cyg9l0pqy7hnr86cxjcw3l5wcx6"))))
"0n25rq32jwyigfw26faqraillwv6zbi2ywy26dkz5zqlf5xp56ad"))))
(build-system cmake-build-system)
(arguments
`(#:tests? #f)) ; no tests exist
@ -1108,12 +1099,12 @@ libraries.")
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/KiCad/kicad-footprints")
(url "https://gitlab.com/kicad/libraries/kicad-footprints.git")
(commit version)))
(file-name (git-file-name name version))
(sha256
(base32
"1kmf91a5mmvj9izrv40mkaw1w36yjgn8daczd9rq2wlmd0rdp1zx"))))
"0gyqxryda273hjn2rv8dha461j9bjh054y5dlpiw1wiha65lrf9i"))))
(synopsis "Official KiCad footprint libraries")
(description "This package contains the official KiCad footprint libraries.")))
@ -1125,12 +1116,12 @@ libraries.")
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/KiCad/kicad-packages3d")
(url "https://gitlab.com/kicad/libraries/kicad-packages3D.git")
(commit version)))
(file-name (git-file-name name version))
(sha256
(base32
"0b9jglf77fy0n0r8xs4yqkv6zvipyfvp0z5dnqlzp32csy5aqpi1"))))
"1szcin52fcsyb55bj7xq7lz6ig187dpz3lk7blwab7b9c4dn3c3y"))))
(synopsis "Official KiCad 3D model libraries")
(description "This package contains the official KiCad 3D model libraries.")))
@ -1142,12 +1133,12 @@ libraries.")
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/KiCad/kicad-templates")
(url "https://gitlab.com/kicad/libraries/kicad-templates.git")
(commit version)))
(file-name (git-file-name name version))
(sha256
(base32
"1hppcsrkn4dk6ggby6ckh0q65qxkywrbyxa4lwpaf7pxjyv498xg"))))
"1a8xfcbdbb4ylrb5m7n2jjk9kwvgmlx1pmnn2cwj327a2b3m4jjs"))))
(synopsis "Official KiCad project and worksheet templates")
(description "This package contains the official KiCad project and
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>.
(package
(name "libngspice")
(version "34")
(version "35")
(source
(origin
(method url-fetch)
@ -1726,7 +1717,7 @@ high-performance parallel differential evolution (DE) optimization algorithm.")
"old-releases/" version
"/ngspice-" version ".tar.gz")))
(sha256
(base32 "1dfpkgkwmgwhq8dnbb8dh28cfap6rw0yywkhmxr4jxclcvygyqr2"))))
(base32 "1v3ra9p2sc6ash1bbjm6i4i3dd6ymxjgnyha7z5rlmyvfv1gbdy1"))))
(build-system gnu-build-system)
(arguments
`(;; No tests for libngspice exist.
@ -1743,16 +1734,11 @@ high-performance parallel differential evolution (DE) optimization algorithm.")
(substitute* "man/man1/Makefile.in"
(("^man_MANS = ngspice\\.1 ngnutmeg\\.1 ngsconvert\\.1 ngmultidec\\.1")
"man_MANS = "))))
(add-after 'install 'delete-scripts-and-config
(add-after 'install 'delete-scripts
(lambda* (#:key outputs #:allow-other-keys)
(delete-file-recursively
(string-append (assoc-ref outputs "out")
"/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")))))
"/share/ngspice/scripts")))))
#:configure-flags
(list "--enable-openmp"
"--enable-ciderlib"
@ -2049,14 +2035,14 @@ parallel computing platforms. It also supports serial execution.")
(define-public librepcb
(package
(name "librepcb")
(version "0.1.4")
(version "0.1.5")
(source
(origin
(method url-fetch)
(uri (string-append "https://download.librepcb.org/releases/"
version "/librepcb-" version "-source.zip"))
(sha256
(base32 "1b5dkanz3q0y5ag80w0l85hn7axrachb5m9zvyv4zvzrfy09wa88"))))
(base32 "0smp1p7wnrj0vh4rmz1cr2krfawc2lzx0pbzmgyay7xdp6jxympr"))))
(build-system gnu-build-system)
(inputs
`(("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
a process.")
(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
(package
(name "terminology")
(version "1.9.0")
(version "1.10.0")
(source (origin
(method url-fetch)
(uri
@ -207,7 +207,7 @@ removable devices or support for multimedia.")
"terminology/terminology-" version ".tar.xz"))
(sha256
(base32
"0v74858yvrrfy0l2pq7yn6izvqhpkb9gw2jpd3a3khjwv8kw6frz"))
"0imk7cjkcjss3zf4hjwmy54pbizm6l6pq553jcx7bpsnhs56bbsz"))
(modules '((guix build utils)))
;; Remove the bundled fonts.
(snippet

View File

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

View File

@ -2,7 +2,7 @@
;;; Copyright © 2016 Nikita <nikita@n0.is>
;;; Copyright © 2019 Tobias Geerinckx-Rice <me@tobias.gr>
;;; 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.
;;;

View File

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

View File

@ -1,7 +1,7 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013 Andreas Enge <andreas@enge.fr>
;;; 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 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de>

View File

@ -211,7 +211,7 @@ line client and a client based on Qt.")
(define-public hledger
(package
(name "hledger")
(version "1.14.2")
(version "1.21")
(source
(origin
(method url-fetch)
@ -221,7 +221,7 @@ line client and a client based on Qt.")
".tar.gz"))
(sha256
(base32
"1si9zqparkdq77yji87lhcsrf11fr3gisqwsv82cabhrhc36x6l4"))))
"07fcfkmv4cy92njnf2qc7jh0naz96q962hxldcd7hk4k7ddv0mss"))))
(build-system haskell-build-system)
(inputs
`(("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-decimal" ,ghc-decimal)
("ghc-diff" ,ghc-diff)
("ghc-easytest" ,ghc-easytest)
("ghc-hashable" ,ghc-hashable)
("ghc-hledger-lib" ,ghc-hledger-lib)
("ghc-lucid" ,ghc-lucid)
("ghc-math-functions" ,ghc-math-functions)
("ghc-megaparsec" ,ghc-megaparsec)
("ghc-mtl-compat" ,ghc-mtl-compat)
("ghc-old-time" ,ghc-old-time)
("ghc-pretty-show" ,ghc-pretty-show)
("ghc-regex-tdfa" ,ghc-regex-tdfa)
("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-split" ,ghc-split)
("ghc-tabular" ,ghc-tabular)
@ -249,9 +250,6 @@ line client and a client based on Qt.")
("ghc-utf8-string" ,ghc-utf8-string)
("ghc-utility-ht" ,ghc-utility-ht)
("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")
(synopsis "Command-line interface for the hledger accounting system")
(description
@ -894,6 +892,33 @@ the Monero GUI client.")
Ledger Nano as a hardware SSH/GPG agent.")
(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
(package
(name "python-mnemonic")
@ -1676,7 +1701,7 @@ generate a variety of reports from them, and provides a web interface.")
(define-public hledger-web
(package
(name "hledger-web")
(version "1.14.1")
(version "1.21")
(source
(origin
(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"))
(sha256
(base32
"0w59nr7mj0nx8z44cvhy1rhlj5rmx0wq4p5nfl4dycfmp7jwvsm1"))))
"0ivszqcypw0j2wn4r7fv7dqm1pvr0b1y6rqpxagzyk8cxn3ic9g2"))))
(build-system haskell-build-system)
(arguments
`(#:tests? #f ; TODO: fail.
#:cabal-revision
("1" "1hnw10ibhbafbsfj5lzlxwjg4cjnqr5bb51n6mqbi30qqabgq78x")))
(inputs
`(("ghc-decimal" ,ghc-decimal)
("ghc-aeson" ,ghc-aeson)
`(("ghc-aeson" ,ghc-aeson)
("ghc-blaze-html" ,ghc-blaze-html)
("ghc-blaze-markup" ,ghc-blaze-markup)
("ghc-case-insensitive" ,ghc-case-insensitive)
("ghc-clientsession" ,ghc-clientsession)
("ghc-cmdargs" ,ghc-cmdargs)
("ghc-conduit" ,ghc-conduit)
("ghc-conduit-extra" ,ghc-conduit-extra)
("ghc-conduit" ,ghc-conduit)
("ghc-data-default" ,ghc-data-default)
("ghc-decimal" ,ghc-decimal)
("ghc-extra" ,ghc-extra)
("ghc-hjsmin" ,ghc-hjsmin)
("hledger" ,hledger)
("ghc-hledger-lib" ,ghc-hledger-lib)
("ghc-hspec" ,ghc-hspec)
("ghc-http-client" ,ghc-http-client)
("ghc-http-conduit" ,ghc-http-conduit)
("ghc-http-types" ,ghc-http-types)
("ghc-json" ,ghc-json)
("ghc-megaparsec" ,ghc-megaparsec)
("ghc-semigroups" ,ghc-semigroups)
("ghc-network" ,ghc-network)
("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" ,ghc-wai)
("ghc-wai-handler-launch" ,ghc-wai-handler-launch)
("ghc-warp" ,ghc-warp)
("ghc-yaml" ,ghc-yaml)
("ghc-yesod" ,ghc-yesod)
("ghc-yesod-core" ,ghc-yesod-core)
("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")
(synopsis "Web-based user interface for the hledger accounting system")
(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
(package
(name "uefitool")
(version "0.27.0")
(version "0.28.0")
(source (origin
(method git-fetch)
(uri (git-reference
@ -463,7 +463,7 @@ ME as far as possible (it only edits ME firmware image files).")
(commit version)))
(sha256
(base32
"1i1p823qld927p4f1wcphqcnivb9mq7fi5xmzibxc3g9zzgnyc2h"))
"1n2hd2dysi5bv2iyq40phh1jxc48gdwzs414vfbxvcharcwapnja"))
(file-name (git-file-name name version))))
(build-system gnu-build-system)
(arguments
@ -475,8 +475,7 @@ ME as far as possible (it only edits ME firmware image files).")
(replace 'install
(lambda* (#:key outputs #:allow-other-keys)
(install-file "UEFITool" (string-append (assoc-ref outputs "out")
"/bin"))
#t)))))
"/bin")))))))
(inputs
`(("qtbase" ,qtbase-5)))
(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")
(sha256
(base32
"052rwhyfcz6q0g0nsr21bkbg2qb6sw7wzins5hv80qhdhi77sdaj"))))
"0cdcb89ab6q7b6jd898bnvrd1sifbd2xr42qgji98h8d5cq4b6fp"))))
(build-system font-build-system)
(home-page "https://typodermicfonts.com/canada1500/")
(synopsis "Canadian typeface that supports English, French and Aboriginal languages")
@ -821,7 +821,7 @@ visual language \"Material Design\".")
(define-public font-borg-sans-mono
(package
(name "font-borg-sans-mono")
(version "0.3.1")
(version "0.3.2")
(source
(origin
(method url-fetch)
@ -830,7 +830,7 @@ visual language \"Material Design\".")
"/releases/download/v" version "/borg-sans-mono.zip"))
(sha256
(base32
"1xxakd9nfb8wz76rh0gbd69gh0mlqs2453g0j516xgxn8bxip2yj"))))
"0q16gw3ry9hpgbl2636qq00ap59xyx15jf3gzvx2ybz3gja164c4"))))
(build-system font-build-system)
(home-page "https://github.com/charje/borg-sans-mono")
(synopsis "The Borg Sans Mono font")

View File

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

View File

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

View File

@ -15,13 +15,14 @@
;;; Copyright © 2017, 2019 Rutger Helling <rhelling@mykolab.com>
;;; Copyright © 2018 Marius Bakke <mbakke@fastmail.com>
;;; 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 © 2020, 2021 Nicolas Goaziou <mail@nicolasgoaziou.fr>
;;; Copyright © 2020 Timotej Lazar <timotej.lazar@araneo.si>
;;; Copyright © 2020 Giacomo Leidi <goodoldpaul@autistici.org>
;;; Copyright © 2021 Alexandru-Sergiu Marton <brown121407@posteo.ro>
;;; Copyright © 2021 Dmitry Polyakov <polyakov@liltechdude.xyz>
;;; Copyright © 2020-2021 James Smith <jsubuntuxp@disroot.org>
;;;
;;; This file is part of GNU Guix.
;;;
@ -39,7 +40,7 @@
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(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 ((guix licenses) #:prefix license:)
#:use-module (guix packages)
@ -55,6 +56,7 @@
#:use-module (gnu packages audio)
#:use-module (gnu packages autotools)
#:use-module (gnu packages base)
#:use-module (gnu packages bash)
#:use-module (gnu packages boost)
#:use-module (gnu packages compression)
#:use-module (gnu packages check)
@ -90,6 +92,7 @@
#:use-module (gnu packages pulseaudio)
#:use-module (gnu packages python)
#:use-module (gnu packages python-xyz)
#:use-module (gnu packages readline)
#:use-module (gnu packages qt)
#:use-module (gnu packages sdl)
#:use-module (gnu packages sphinx)
@ -99,6 +102,7 @@
#:use-module (gnu packages tls)
#:use-module (gnu packages video)
#:use-module (gnu packages web)
#:use-module (gnu packages wxwidgets)
#:use-module (gnu packages xdisorg)
#:use-module (gnu packages xiph)
#:use-module (gnu packages xml)
@ -447,10 +451,71 @@ GUI toolkit, lighting and physics frameworks and @code{Tiled} TMX format
support.")
(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
(package
(name "tiled")
(version "1.5.0")
(version "1.7.2")
(source (origin
(method git-fetch)
(uri (git-reference
@ -459,7 +524,7 @@ support.")
(file-name (git-file-name name version))
(sha256
(base32
"1prajkx1xpp3csa0xpkrn3c2cnzvmwzxgrqb9d3gqszp3sllr2dg"))))
"1ifxh3sv6gz32gahgi7ba0ivcw5mfgwnrw6iycpav150w9xla43i"))))
(build-system gnu-build-system)
(inputs
`(("qtbase" ,qtbase-5)
@ -495,16 +560,16 @@ clone.")
(define-public tsukundere
(package
(name "tsukundere")
(version "0.3.2")
(version "0.4.1")
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://gitlab.com/leoprikler/tsukundere")
(url "https://gitlab.com/lilyp/tsukundere")
(commit version)))
(file-name (git-file-name name version))
(sha256
(base32
"05y3nj8vpn40hfr2y29p8pa9hhpzibhbvfzpm0dlphjh9crq3ii4"))))
"11glghnff27rqh2s34g51afg93g3f5ryfz9mkyb7qj35ngl8vw5f"))))
(build-system gnu-build-system)
(arguments
`(#:modules ((ice-9 match)
@ -534,9 +599,12 @@ clone.")
((label . pkg)
(and (string-prefix? "guile-" label) pkg)))
inputs))))
(substitute* "bin/tsukundere"
(substitute* "tsukundere.scm"
(("exec guile (.*)" _ args)
(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=\"~@?\"~%"
"~{~a~^:~}" (map scm pkgs))
(format #f "export GUILE_LOAD_COMPILED_PATH=\"~@?\"~%"
@ -550,12 +618,15 @@ clone.")
("automake" ,automake)
("gettext" ,gettext-minimal)
("guile" ,guile-3.0)
("libtool" ,libtool)
("pkg-config" ,pkg-config)
("texinfo" ,texinfo)))
(inputs
`(("guile-sdl2" ,guile3.0-sdl2)
("guile" ,guile-3.0)))
(home-page "https://gitlab.com/leoprikler/tsukundere")
("guile" ,guile-3.0)
("pango" ,pango)
("sdl2" ,sdl2)))
(home-page "https://gitlab.com/lilyp/tsukundere")
(synopsis "Visual novel engine")
(description "Tsukundere is a game engine geared heavily towards the
development of visual novels, written on top of Guile-SDL2. It is still
@ -758,35 +829,39 @@ programming language.")
(license license:zlib)))
(define-public love-nuklear
(let ((version "v2.6")
(commit "fef4e00a602efb16c57ae962850b6e7a01f7a29a"))
(package
(name "love-nuklear")
(version (git-version version "1" commit))
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/keharriso/love-nuklear/")
(commit commit)
(recursive? #t)))
;; NOTE: the HEAD of the Nuklear git-submodule is at commit
;; "adc52d710fe3c87194b99f540c53e82eb75c2521" of Oct 1 2019
(file-name (git-file-name name version))
(sha256
(base32
"15qmy8mfwkxy2x9rmxs6f9cyvjvwwj6yf78bs863xmc56dmjzzbn"))))
(build-system cmake-build-system)
(arguments
`(#:build-type "Release"
#:tests? #f))
(inputs
`(("luajit" ,luajit)))
(synopsis "Lightweight immediate mode GUI for LÖVE games")
(description "LÖVE is a Lua framework for making 2D games. Nuklear
(package
(name "love-nuklear")
(version "2.6.1")
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/keharriso/love-nuklear/")
(commit (string-append "v" version))
(recursive? #t)))
;; NOTE: the HEAD of the Nuklear git-submodule is at commit
;; "adc52d710fe3c87194b99f540c53e82eb75c2521" of Oct 1 2019
(file-name (git-file-name name version))
(sha256
(base32
"090xp5c975155hd1pa7bdssdlawvygs5s6icdkwbyc8il5kg5kgv"))))
(build-system cmake-build-system)
(arguments
`(#:build-type "Release"
#:tests? #f
#:phases
(modify-phases %standard-phases
(add-after 'unpack 'patch-cmake
(lambda _
(substitute* "CMakeLists.txt"
(("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
package is the Nuklear bindings for LÖVE created by Kevin Harrison.")
(home-page "https://github.com/keharriso/love-nuklear/")
(license license:expat))))
(home-page "https://github.com/keharriso/love-nuklear/")
(license license:expat)))
(define-public allegro-4
(package
@ -830,7 +905,7 @@ etc.")
(define-public allegro
(package
(name "allegro")
(version "5.2.5.0")
(version "5.2.7.0")
(source (origin
(method url-fetch)
(uri (string-append "https://github.com/liballeg/allegro5/releases"
@ -838,7 +913,7 @@ etc.")
version ".tar.gz"))
(sha256
(base32
"06dpkfnac8w3pq36834nn2iij3ajz6prladqd0w92lq39aiqv5jr"))))
"034pmbmbq6jagpp4lhnyjqmf8gcz5fx74d9rknrm7d4wv4cv7qy1"))))
(build-system cmake-build-system)
(arguments `(#:tests? #f)) ; there are no tests
(inputs
@ -846,7 +921,7 @@ etc.")
`(("flac" ,flac)
("freetype" ,freetype)
("glu" ,glu)
("gtk" ,gtk+-2)
("gtk" ,gtk+)
("libjpeg" ,libjpeg-turbo)
("libpng" ,libpng)
("libtheora" ,libtheora)
@ -1959,28 +2034,30 @@ a 2D editor view.")
(define-public guile-chickadee
(package
(name "guile-chickadee")
(version "0.7.0")
(version "0.8.0")
(source (origin
(method url-fetch)
(uri (string-append "https://files.dthompson.us/chickadee/"
"chickadee-" version ".tar.gz"))
(sha256
(base32
"199y4kc28va6klfs19h998sfh7vx9spnrvjw7p92i47q5a7jdcp6"))))
"1k2dml2z57lnc36wrmwhh7avnpczxgxnshlfhpbk174vg6v609n0"))))
(build-system gnu-build-system)
(arguments
'(#:make-flags '("GUILE_AUTO_COMPILE=0")))
(propagated-inputs
`(("guile-opengl" ,guile3.0-opengl)
("guile-sdl2" ,guile3.0-sdl2)))
("guile-sdl2" ,guile-sdl2)))
(inputs
`(("freetype" ,freetype)
("guile" ,guile-3.0)
("guile" ,guile-3.0-latest)
("libvorbis" ,libvorbis)
("mpg123" ,mpg123)
("openal" ,openal)))
("openal" ,openal)
("readline" ,readline)))
(native-inputs
`(("pkg-config" ,pkg-config)
`(("guile" ,guile-3.0-latest)
("pkg-config" ,pkg-config)
("texinfo" ,texinfo)))
(home-page "https://dthompson.us/projects/chickadee.html")
(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 Timotej Lazar <timotej.lazar@araneo.si>
;;; 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 © 2020 Alberto Eleuterio Flores Guerrero <barbanegra+guix@posteo.mx>
;;; Copyright © 2020 Naga Malleswari <nagamalli@riseup.net>
@ -53,7 +54,7 @@
;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com>
;;; Copyright © 2020, 2021 Michael Rohleder <mike@rohleder.de>
;;; 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 Tomás Ortín Fernández <tomasortin@mailbox.org>
;;; Copyright © 2021 Olivier Rojon <o.rojon@posteo.net>
@ -63,7 +64,7 @@
;;; Copyright © 2021 Felix Gruber <felgru@posteo.net>
;;; Copyright © 2021 Solene Rapenne <solene@perso.pw>
;;; 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.
;;;
@ -971,7 +972,7 @@ want what you have.")
;; Strip image URLs as they point towards non-free web services
'(substitute* "cockatrice/src/settings/downloadsettings.cpp"
(("downloadURLs.append\\(\".*\"\\);") "")))))
(build-system cmake-build-system)
(build-system qt-build-system)
(arguments
`(#:configure-flags '("-DWITH_SERVER=1"
"-DWITH_CLIENT=1"
@ -1000,7 +1001,7 @@ allows users to brew while offline.")
(define-public corsix-th
(package
(name "corsix-th")
(version "0.65")
(version "0.65.1")
(source
(origin
(method git-fetch)
@ -1009,7 +1010,7 @@ allows users to brew while offline.")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32 "0hp7da7b73dpn1h22rw3h8w6aaj9azn18qnp3ap3lrlqhj4fzcb3"))))
(base32 "0hw92ln9jm9v55drmbfqjng58yshgwfpv7fqynryrg3gvg8zhbvh"))))
(build-system cmake-build-system)
(arguments
`(#:phases
@ -1133,6 +1134,34 @@ regular @command{cat}, but it also adds terminal escape codes between
characters and lines resulting in a rainbow effect.")
(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++
;; Even though this latest revision is old already, stable release is
;; lagging way behind it, and has issues with textures rendering.
@ -1460,6 +1489,48 @@ automata. The following features are available:
@end enumerate")
(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
(package
(name "julius")
@ -3869,15 +3940,16 @@ This game is based on the GPL version of the famous game TuxRacer.")
(define-public supertuxkart
(package
(name "supertuxkart")
(version "1.2")
(version "1.3")
(source
(origin
(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"))
(sha256
(base32
"0dvx56hmy6wdhl7m9dw8zc1n3jqfp05gnxl6zs1rbfdyzl5dybh5"))
"1z9z13zarv28h4jrmjna5hr6m9266pm7c2kgiwhqls01k06ypazf"))
(modules '((guix build utils)))
(snippet
;; 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
;; FIXME: try to unbundle angelscript, libmcpp and libraqm
(for-each delete-file-recursively
'("lib/glew"
"lib/wiiuse"
"lib/enet"))
'("lib/dnsc"
"lib/enet"
"lib/mojoal"
"lib/wiiuse"))
#t))))
(build-system cmake-build-system)
(arguments
`(#:tests? #f ; no check target
#:configure-flags
(list "-DUSE_WIIUSE=0"
"-DUSE_SYSTEM_GLEW=TRUE"
"-DUSE_SYSTEM_ENET=TRUE"
"-DUSE_CRYPTO_OPENSSL=TRUE"
;; In order to use the system ENet library, IPv6 support (added in
;; SuperTuxKart version 1.1) must be disabled.
"-DUSE_IPV6=FALSE"
@ -3915,6 +3988,7 @@ This game is based on the GPL version of the famous game TuxRacer.")
("mesa" ,mesa)
("openal" ,openal)
("sdl2" ,sdl2)
("sqlite" ,sqlite)
("zlib" ,zlib)
;; The following input is needed to build the bundled and modified
;; version of irrlicht.
@ -4708,7 +4782,7 @@ is attributed to Albert Einstein.")
(define-public powwow
(package
(name "powwow")
(version "1.2.22")
(version "1.2.23")
(source (origin
(method url-fetch)
(uri (string-append
@ -4716,7 +4790,7 @@ is attributed to Albert Einstein.")
version ".tar.gz"))
(sha256
(base32
"12i11b8zxg8vdb9d6ims8qy2lmwwr42rcqbwq3vsa1x94s51bcbp"))))
"1wkl6j91pp40aps2hhnsv0bndgq49smfffws4hqcn7847bpnwwm6"))))
(inputs
`(("ncurses" ,ncurses)))
(build-system gnu-build-system)
@ -6435,14 +6509,14 @@ fish. The whole game is accompanied by quiet, comforting music.")
(define-public crawl
(package
(name "crawl")
(version "0.27.0")
(version "0.27.1")
(source
(origin
(method url-fetch)
(uri (string-append "https://github.com/crawl/crawl/releases/download/"
version "/stone_soup-" version "-nodeps.tar.xz"))
(sha256
(base32 "0hzkzpqmydxm1zjkdm7k4w3hldsqin3pwkj7jmfj4jijkr0zg9nq"))
(base32 "0nkhyhrrma8gmwxp15j84cn1k2yvyq7ar9rd0j2qjjlv2kdis5z2"))
(patches (search-patches "crawl-upgrade-saves.patch"))))
(build-system gnu-build-system)
(inputs
@ -9300,6 +9374,7 @@ play with up to four players simultaneously. It has network support.")
(method url-fetch)
(uri (string-append "https://www.hedgewars.org/download/releases/"
"hedgewars-src-" version ".tar.bz2"))
(patches (search-patches "hedgewars-network-bsd.patch"))
(sha256
(base32
"0nqm9w02m0xkndlsj6ys3wr0ik8zc14zgilq7k6fwjrf3zk385i1"))))
@ -9986,21 +10061,21 @@ win.")
(define-public freeorion
(package
(name "freeorion")
(version "0.4.10")
(version "0.4.10.2")
(source
(origin
(method url-fetch)
(uri (string-append "https://github.com/freeorion/freeorion/releases/"
"download/v" version "/FreeOrion_v" version
"_2020-07-10.f3d403e_Source.tar.gz"))
(method git-fetch)
(uri (git-reference
(url "https://github.com/freeorion/freeorion")
(commit (string-append "v" version))))
(sha256
(base32 "12xspixrkx6mmmsdqjha0hg02r4y73pk229l0wjq9s0yp8nb8ap7"))
(base32 "12fhwa3cs6lvdbdhina310qk2g7zcphldsh7ibsbxn8d1m731xlk"))
(file-name (git-file-name name version))
(modules '((guix build utils)))
(snippet
'(begin
;; There are some bundled fonts.
(for-each delete-file-recursively '("default/data/fonts"))
#t))))
(for-each delete-file-recursively '("default/data/fonts"))))))
(build-system cmake-build-system)
(arguments
'(#: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.")
(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
(package
(name "fheroes2")

View File

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

View File

@ -93,6 +93,7 @@
#:use-module (gnu packages pulseaudio)
#:use-module (gnu packages python)
#:use-module (gnu packages python-check)
#:use-module (gnu packages python-crypto)
#:use-module (gnu packages python-science)
#:use-module (gnu packages python-web)
#:use-module (gnu packages python-xyz)
@ -503,7 +504,7 @@ fully fledged Spatial SQL capabilities.")
(define-public proj
(package
(name "proj")
(version "6.3.1")
(version "7.2.1")
(source
(origin
(method url-fetch)
@ -511,22 +512,28 @@ fully fledged Spatial SQL capabilities.")
version ".tar.gz"))
(sha256
(base32
"1y46ij32j9b4x1kjnnlykcwk3kkjwkg44sfc1ziwm3a3g0ki3q3d"))))
(build-system gnu-build-system)
"050apzdn0isxpsblys1shrl9ccli5vd32kgswlgx1imrbwpg915k"))))
(build-system cmake-build-system)
(arguments
`(#:configure-flags '("-DUSE_EXTERNAL_GTEST=ON")))
(inputs
`(("sqlite" ,sqlite)))
`(("curl" ,curl)
("libjpeg-turbo" ,libjpeg-turbo)
("libtiff" ,libtiff)
("sqlite" ,sqlite)))
(native-inputs
`(("pkg-config" ,pkg-config)))
`(("googletest" ,googletest)
("pkg-config" ,pkg-config)))
(home-page "https://proj.org/")
(synopsis "Coordinate transformation software")
(description
"Proj is a generic coordinate transformation software that transforms
geospatial coordinates from one coordinate reference system (CRS) to another.
This includes cartographic projections as well as geodetic transformations.
PROJ includes command line applications for easy conversion of coordinates
from text files or directly from user input. In addition, proj also exposes
an application programming interface that lets developers use the
functionality of proj in their own software.")
geospatial coordinates from one @acronym{CRS, coordinate reference system}
to another. This includes cartographic projections as well as geodetic
transformations. Proj includes command line applications for easy
conversion of coordinates from text files or directly from user input.
In addition, Proj also exposes an application programming interface that
lets developers use the functionality of Proj in their own software.")
(license (list license:expat
;; src/projections/patterson.cpp
license:asl2.0
@ -583,6 +590,144 @@ projections.")
;; cmake/*
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
(package
(name "mapnik")
@ -1259,7 +1404,7 @@ map display. Downloads map data from a number of websites, including
("libnova" ,libnova)
("libpng" ,libpng)
("openjpeg" ,openjpeg)
("proj.4" ,proj.4)
("proj" ,proj)
("qtbase" ,qtbase-5)
("zlib" ,zlib)))
(native-search-paths
@ -1514,14 +1659,17 @@ to the OSM opening hours specification.")
(lambda* (#:key outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out"))
(share-directories '("applications" "icons" "man" "menu"
"metainfo" "mime" "pixmaps")))
"metainfo" "mime" "pixmaps"))
(desktop "org.openstreetmap.josm.desktop"))
(for-each (lambda (directory)
(copy-recursively (string-append
"native/linux/tested/usr/share/"
directory)
(string-append
out "/share/" directory)))
share-directories))
share-directories)
(substitute* (string-append out "/share/applications/" desktop)
(("josm-MainApplication") "josm-gui-MainApplication")))
#t))
(add-after 'install 'install-bin
(lambda* (#:key outputs inputs #:allow-other-keys)
@ -1687,7 +1835,7 @@ using the dataset of topographical information collected by
("qtlocation" ,qtlocation)
("qtwebchannel" ,qtwebchannel)
("qtwebengine" ,qtwebengine)
("quazip" ,quazip)
("quazip" ,quazip-0)
("routino" ,routino)
("sqlite" ,sqlite) ; See wrap phase
("zlib" ,zlib)))
@ -1926,7 +2074,7 @@ track your position right from your laptop.")
("openblas" ,openblas)
("perl" ,perl)
("postgresql" ,postgresql)
("proj.4" ,proj.4)
("proj" ,proj)
("python" ,python)
("python-dateutil" ,python-dateutil)
("python-numpy" ,python-numpy)
@ -1981,7 +2129,7 @@ track your position right from your laptop.")
"--with-netcdf"
"--with-postgres"
(string-append "--with-proj-share="
(assoc-ref inputs "proj.4")
(assoc-ref inputs "proj")
"/share/proj")
"--with-pthread"
"--with-readline"

View File

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

View File

@ -5,7 +5,6 @@
;;; Copyright © 2014, 2015, 2016, 2017 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2016 Nikita <nikita@n0.is>
;;; 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 Arun Isaac <arunisaac@systemreboot.net>
;;; Copyright © 2017, 2018, 2019 Rutger Helling <rhelling@mykolab.com>

View File

@ -1,5 +1,5 @@
;;; 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 Giacomo Leidi <goodoldpaul@autistici.org>
;;; Copyright © 2020 Alex Griffin <a@ajgrf.com>
@ -845,7 +845,7 @@ variants.")
(define-public markets
(package
(name "markets")
(version "0.5.2")
(version "0.5.3")
(source
(origin
(method git-fetch)
@ -855,7 +855,7 @@ variants.")
(file-name (git-file-name name version))
(sha256
(base32
"0nk1bs7i6b7r90g5qwd3s2m462vk3kvza0drq7rzb5sdaiz9ccnz"))))
"0sfdmz7cp8i2bymippp8jyxsidxjn69v9cqm40q77j81kfm84bfv"))))
(build-system meson-build-system)
(arguments
`(#:glib-or-gtk? #t

View File

@ -44,7 +44,7 @@
;;; Copyright © 2019 David Wilson <david@daviwil.com>
;;; Copyright © 2019, 2020 Raghav Gururajan <raghavgururajan@disroot.org>
;;; 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 Pierre Neidhardt <mail@ambrevar.xyz>
;;; Copyright © 2020 raingloom <raingloom@riseup.net>
@ -64,6 +64,7 @@
;;; Copyright © 2021 Felix Gruber <felgru@posteo.net>
;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
;;; Copyright © 2021 Josselin Poiret <josselin.poiret@protonmail.ch>
;;; Copyright © 2021 Mathieu Othacehe <othacehe@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@ -284,7 +285,7 @@
(define-public brasero
(package
(name "brasero")
(version "3.12.2")
(version "3.12.3")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnome/sources/brasero/"
@ -292,7 +293,7 @@
"brasero-" version ".tar.xz"))
(sha256
(base32
"0h90y674j26rvjahb8cc0w79zx477rb6zaqcj26wzvq8kmpic8k8"))))
"05gabybkl7xfinwx97i4scp9hic0dlxj7gh03dyj0hd16fp9wx47"))))
(build-system glib-or-gtk-build-system)
(arguments
`(#:configure-flags (list
@ -304,11 +305,12 @@
"/lib/girepository-1.0"))
#:phases
(modify-phases %standard-phases
(add-before 'configure 'embed-growisofs
(add-before 'configure 'embed-growisofs-reference
(lambda* (#:key inputs #:allow-other-keys)
(substitute* "plugins/growisofs/burn-growisofs.c"
(("\"growisofs") (string-append "\"" (which "growisofs"))))
#t)))))
(let ((dvd+rw-tools (assoc-ref inputs "dvd+rw-tools")))
(substitute* "plugins/growisofs/burn-growisofs.c"
(("(\")(growisofs)" _ prefix command)
(string-append prefix dvd+rw-tools "/bin/" command)))))))))
(propagated-inputs
`(("hicolor-icon-theme" ,hicolor-icon-theme)))
(native-inputs
@ -10972,7 +10974,7 @@ functionality.")
(define-public gthumb
(package
(name "gthumb")
(version "3.10.3")
(version "3.12.0")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnome/sources/gthumb/"
@ -10980,7 +10982,7 @@ functionality.")
"gthumb-" version ".tar.xz"))
(sha256
(base32
"04n2sgasc03kiczyzkq362pjilj12hq2r5qj07lynqr9rivkzdys"))))
"0grqiq6v26z8avl7mj24xy4i9bl1niwpqhqw6rblprl40c1zrvrx"))))
(build-system meson-build-system)
(arguments
`(#:glib-or-gtk? #t
@ -10993,23 +10995,27 @@ functionality.")
(assoc-ref %outputs "out")
"/lib/gthumb/extensions"))))
(native-inputs
`(("pkg-config" ,pkg-config)
`(("desktop-file-utils" ,desktop-file-utils) ; for update-desktop-database
("glib:bin" ,glib "bin") ; for glib-compile-resources
("gtk+:bin" ,gtk+ "bin") ; for gtk-update-icon-cache
("desktop-file-utils" ,desktop-file-utils) ; for update-desktop-database
("intltool" ,intltool)
("itstool" ,itstool)))
("itstool" ,itstool)
("pkg-config" ,pkg-config)))
(inputs
`(("exiv2" ,exiv2)
("gtk" ,gtk+)
("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
("gstreamer" ,gstreamer)
("clutter" ,clutter)
`(("clutter" ,clutter)
("clutter-gst" ,clutter-gst)
("clutter-gtk" ,clutter-gtk)
("colord" ,colord)
("exiv2" ,exiv2)
("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
("gstreamer" ,gstreamer)
("gtk" ,gtk+)
("libheif" ,libheif)
("libjpeg" ,libjpeg-turbo)
("libraw" ,libraw)
("librsvg" ,librsvg)
("libtiff" ,libtiff)
("libraw" ,libraw)))
("libwebp" ,libwebp)))
(home-page "https://wiki.gnome.org/Apps/Gthumb")
(synopsis "GNOME image viewer and browser")
(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
(package
(name "komikku")
(version "0.31.0")
(version "0.35.0")
(source
(origin
(method git-fetch)
@ -12247,7 +12253,7 @@ integrated profiler via Sysprof, debugging support, and more.")
(file-name (git-file-name name version))
(sha256
(base32
"0vldcjq24y4xxg8dzlyhfpqxbqn5g160lz1lmmkp7g9im2zrxh52"))))
"19axlz34zg4ijfc1z0y2xp6ayi5hvgvqdp4wprkp0wjrkfn7dkq7"))))
(build-system meson-build-system)
(arguments
`(#:glib-or-gtk? #t
@ -12540,3 +12546,32 @@ Document Analysis and Recognition program.")
applications scaling from desktop workstations to mobile phones. It is the
successor of @code{libhandy} for GTK4.")
(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, 2015, 2016, 2020 Mark H Weaver <mhw@netris.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 © 2016 Christine Lemmer-Webber <cwebber@dustycloud.org>
;;; 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
(package
(name "python-gnupg")
(version "0.4.4")
(version "0.4.7")
(source
(origin
(method url-fetch)
(uri (pypi-uri "python-gnupg" version))
(sha256
(base32
"03pvjyp6q9pr8qa22i38az06ddzhvzy5kj192hxa3gbhnchg1nj5"))))
"1isazrg2h126xg3vvk4wrhx8k8yfsg5sxybvfa99phj235mzaq90"))))
(build-system python-build-system)
(arguments
`(#:phases
(modify-phases %standard-phases
(replace 'check
(lambda _
(substitute* "test_gnupg.py"
;; Unsure why this test fails.
(("'test_search_keys'") "True")
(("def test_search_keys") "def disabled__search_keys"))
(setenv "USERNAME" "guixbuilder")
;; The doctests are extremely slow and sometimes time out,
;; so we disable them.
(invoke "python"
"test_gnupg.py" "--no-doctests"))))))
(lambda* (#:key tests? #:allow-other-keys)
(when tests?
(substitute* "test_gnupg.py"
;; Unsure why this test fails.
(("'test_search_keys'") "True")
(("def test_search_keys") "def disabled__search_keys"))
(setenv "USERNAME" "guixbuilder")
;; The doctests are extremely slow and sometimes time out,
;; so we disable them.
(invoke "python"
"test_gnupg.py" "--no-doctests")))))))
(native-inputs
`(("gnupg" ,gnupg-1)))
(home-page "https://packages.python.org/python-gnupg/index.html")
`(("gnupg" ,gnupg)))
(home-page "https://pythonhosted.org/python-gnupg/index.html")
(synopsis "Wrapper for the GNU Privacy Guard")
(description
"This module allows easy access to GnuPGs key management, encryption

View File

@ -702,21 +702,11 @@ in C/C++.")
("1j6l66v1xw27z8w78mpsnmqgv8m277mf4r0hgqcrb4zx7xc2vqyy" "527e5e090608" "zh-CN")
("1frwx35klpyz3sdwrkz7945ivb2dwaawhhyfnz4092h9hn7rc4ky" "6cd366ad2947" "zh-TW")))
(define* (computed-origin-method gexp-promise hash-algo hash
#:optional (name "source")
#: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)))
;; XXXX: Workaround 'snippet' limitations.
(define computed-origin-method (@@ (guix packages) computed-origin-method))
(define %icecat-version "78.14.0-guix0-preview1")
(define %icecat-build-id "20210907000000") ;must be of the form YYYYMMDDhhmmss
(define %icecat-version "78.15.0-guix0-preview1")
(define %icecat-build-id "20211005000000") ;must be of the form YYYYMMDDhhmmss
;; 'icecat-source' is a "computed" origin that generates an IceCat tarball
;; 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"))
(sha256
(base32
"1ymjlg6p23c510m764pqr4sldrvk0c7g490a29js2cqc2nj2h3ma"))))
"0l91cxdc5v9fps79ckb1kid4gw6v5qng1jd9zvaacwaiv628shx4"))))
(upstream-icecat-base-version "78.7.0") ; maybe older than 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