Merge branch 'master' into core-updates-frozen

This commit is contained in:
Ludovic Courtès 2021-12-13 11:49:15 +01:00
commit 1052ae5f03
No known key found for this signature in database
GPG key ID: 090B11993D9AEBB5
47 changed files with 2428 additions and 745 deletions

View file

@ -449,6 +449,7 @@ its <pre class=\"lisp\"> blocks (as produced by 'makeinfo --html')."
("rarr" "→") ("rarr" "→")
("hellip" "…") ("hellip" "…")
("rsquo" "") ("rsquo" "")
("nbsp" " ")
(e (pk 'unknown-entity e) (primitive-exit 2)))) (e (pk 'unknown-entity e) (primitive-exit 2))))
(define (concatenate-snippets pieces) (define (concatenate-snippets pieces)

View file

@ -346,7 +346,8 @@ Services
* Base Services:: Essential system services. * Base Services:: Essential system services.
* Scheduled Job Execution:: The mcron service. * Scheduled Job Execution:: The mcron service.
* Log Rotation:: The rottlog service. * Log Rotation:: The rottlog service.
* Networking Services:: Network setup, SSH daemon, etc. * Networking Setup:: Setting up network interfaces.
* Networking Services:: Firewall, SSH daemon, etc.
* Unattended Upgrades:: Automated system upgrades. * Unattended Upgrades:: Automated system upgrades.
* X Window:: Graphical display. * X Window:: Graphical display.
* Printing Services:: Local and remote printer support. * Printing Services:: Local and remote printer support.
@ -15816,7 +15817,8 @@ declaration.
* Base Services:: Essential system services. * Base Services:: Essential system services.
* Scheduled Job Execution:: The mcron service. * Scheduled Job Execution:: The mcron service.
* Log Rotation:: The rottlog service. * Log Rotation:: The rottlog service.
* Networking Services:: Network setup, SSH daemon, etc. * Networking Setup:: Setting up network interfaces.
* Networking Services:: Firewall, SSH daemon, etc.
* Unattended Upgrades:: Automated system upgrades. * Unattended Upgrades:: Automated system upgrades.
* X Window:: Graphical display. * X Window:: Graphical display.
* Printing Services:: Local and remote printer support. * Printing Services:: Local and remote printer support.
@ -17038,11 +17040,202 @@ The list of syslog-controlled files to be rotated. By default it is:
"/var/log/maillog")}. "/var/log/maillog")}.
@end defvr @end defvr
@node Networking Services @node Networking Setup
@subsection Networking Services @subsection Networking Setup
The @code{(gnu services networking)} module provides services to configure The @code{(gnu services networking)} module provides services to
the network interface. configure network interfaces and set up networking on your machine.
Those services provide different ways for you to set up your machine: by
declaring a static network configuration, by running a Dynamic Host
Configuration Protocol (DHCP) client, or by running daemons such as
NetworkManager and Connman that automate the whole process,
automatically adapt to connectivity changes, and provide a high-level
user interface.
On a laptop, NetworkManager and Connman are by far the most convenient
options, which is why the default desktop services include
NetworkManager (@pxref{Desktop Services, @code{%desktop-services}}).
For a server, or for a virtual machine or a container, static network
configuration or a simple DHCP client are often more appropriate.
This section describes the various network setup services available,
starting with static network configuration.
@defvr {Scheme Variable} static-networking-service-type
This is the type for statically-configured network interfaces. Its
value must be a list of @code{static-networking} records. Each of them
declares a set of @dfn{addresses}, @dfn{routes}, and @dfn{links}, as
show below.
@cindex network interface controller (NIC)
@cindex NIC, networking interface controller
Here is the simplest configuration, with only one network interface
controller (NIC) and only IPv4 connectivity:
@example
;; Static networking for one NIC, IPv4-only.
(service static-networking-service-type
(list (static-networking
(addresses
(list (network-address
(device "eno1")
(value "10.0.2.15/24"))))
(routes
(list (network-route
(destination "default")
(gateway "10.0.2.2"))))
(name-servers '("10.0.2.3")))))
@end example
The snippet above can be added to the @code{services} field of your
operating system configuration (@pxref{Using the Configuration System}).
It will configure your machine to have 10.0.2.15 as its IP address, with
a 24-bit netmask for the local network---meaning that any 10.0.2.@var{x}
address is on the local area network (LAN). Traffic to addresses
outside the local network is routed @i{via} 10.0.2.2. Host names are
resolved by sending domain name system (DNS) queries to 10.0.2.3.
@end defvr
@deftp {Data Type} static-networking
This is the data type representing a static network configuration.
As an example, here is how you would declare the configuration of a
machine with a single network interface controller (NIC) available as
@code{eno1}, and with one IPv4 and one IPv6 address:
@lisp
;; Network configuration for one NIC, IPv4 + IPv6.
(static-networking
(addresses (list (network-address
(device "eno1")
(value "10.0.2.15/24"))
(network-address
(device "eno1")
(value "2001:123:4567:101::1/64"))))
(routes (list (network-route
(destination "default")
(gateway "10.0.2.2"))
(network-route
(destination "default")
(gateway "2020:321:4567:42::1"))))
(name-servers '("10.0.2.3")))
@end lisp
If you are familiar with the @command{ip} command of the
@uref{https://wiki.linuxfoundation.org/networking/iproute2,
@code{iproute2} package} found on Linux-based systems, the declaration
above is equivalent to typing:
@example
ip address add 10.0.2.15/24 dev eno1
ip address add 2001:123:4567:101::1/64 dev eno1
ip route add default via inet 10.0.2.2
ip route add default via inet6 2020:321:4567:42::1
@end example
Run @command{man 8 ip} for more info. Venerable GNU/Linux users will
certainly know how to do it with @command{ifconfig} and @command{route},
but we'll spare you that.
The available fields of this data type are as follows:
@table @asis
@item @code{addresses}
@itemx @code{links} (default: @code{'()})
@itemx @code{routes} (default: @code{'()})
The list of @code{network-address}, @code{network-link}, and
@code{network-route} records for this network (see below).
@item @code{name-servers} (default: @code{'()})
The list of IP addresses (strings) of domain name servers. These IP
addresses go to @file{/etc/resolv.conf}.
@item @code{provision} (default: @code{'(networking)})
If true, this should be a list of symbols for the Shepherd service
corresponding to this network configuration.
@item @code{requirement} (default @code{'()})
The list of Shepherd services depended on.
@end table
@end deftp
@deftp {Data Type} network-address
This is the data type representing the IP address of a network
interface.
@table @code
@item device
The name of the network interface for this address---e.g.,
@code{"eno1"}.
@item value
The actual IP address and network mask, in
@uref{https://en.wikipedia.org/wiki/CIDR#CIDR_notation, @acronym{CIDR,
Classless Inter-Domain Routing} notation}, as a string.
For example, @code{"10.0.2.15/24"} denotes IPv4 address 10.0.2.15 on a
24-bit sub-network---all 10.0.2.@var{x} addresses are on the same local
network.
@item ipv6?
Whether @code{value} denotes an IPv6 address. By default this is
automatically determined.
@end table
@end deftp
@deftp {Data Type} network-route
This is the data type representing a network route.
@table @asis
@item @code{destination}
The route destination (a string), either an IP address or
@code{"default"} to denote the default route.
@item @code{source} (default: @code{#f})
The route source.
@item @code{device} (default: @code{#f})
The device used for this route---e.g., @code{"eno2"}.
@item @code{ipv6?} (default: auto)
Whether this is an IPv6 route. By default this is automatically
determined based on @code{destination} or @code{gateway}.
@item @code{gateway} (default: @code{#f})
IP address (a string) through which traffic is routed.
@end table
@end deftp
@deftp {Data Type} network-link
Data type for a network link (@pxref{Link,,, guile-netlink,
Guile-Netlink Manual}).
@table @code
@item name
The name of the link---e.g., @code{"v0p0"}.
@item type
A symbol denoting the type of the link---e.g., @code{'veth}.
@item arguments
List of arguments for this type of link.
@end table
@end deftp
@cindex loopback device
@defvr {Scheme Variable} %loopback-static-networking
This is the @code{static-networking} record representing the ``loopback
device'', @code{lo}, for IP addresses 127.0.0.1 and ::1, and providing
the @code{loopback} Shepherd service.
@end defvr
@cindex networking, with QEMU
@cindex QEMU, networking
@defvr {Scheme Variable} %qemu-static-networking
This is the @code{static-networking} record representing network setup
when using QEMU's user-mode network stack on @code{eth0} (@pxref{Using
the user mode network stack,,, QEMU, QEMU Documentation}).
@end defvr
@cindex DHCP, networking service @cindex DHCP, networking service
@defvr {Scheme Variable} dhcp-client-service-type @defvr {Scheme Variable} dhcp-client-service-type
@ -17051,154 +17244,6 @@ Protocol (DHCP) client, on all the non-loopback network interfaces. Its value
is the DHCP client package to use, @code{isc-dhcp} by default. is the DHCP client package to use, @code{isc-dhcp} by default.
@end defvr @end defvr
@deffn {Scheme Procedure} dhcpd-service-type
This type defines a service that runs a DHCP daemon. To create a
service of this type, you must supply a @code{<dhcpd-configuration>}.
For example:
@lisp
(service dhcpd-service-type
(dhcpd-configuration
(config-file (local-file "my-dhcpd.conf"))
(interfaces '("enp0s25"))))
@end lisp
@end deffn
@deftp {Data Type} dhcpd-configuration
@table @asis
@item @code{package} (default: @code{isc-dhcp})
The package that provides the DHCP daemon. This package is expected to
provide the daemon at @file{sbin/dhcpd} relative to its output
directory. The default package is the
@uref{https://www.isc.org/products/DHCP, ISC's DHCP server}.
@item @code{config-file} (default: @code{#f})
The configuration file to use. This is required. It will be passed to
@code{dhcpd} via its @code{-cf} option. This may be any ``file-like''
object (@pxref{G-Expressions, file-like objects}). See @code{man
dhcpd.conf} for details on the configuration file syntax.
@item @code{version} (default: @code{"4"})
The DHCP version to use. The ISC DHCP server supports the values ``4'',
``6'', and ``4o6''. These correspond to the @code{dhcpd} program
options @code{-4}, @code{-6}, and @code{-4o6}. See @code{man dhcpd} for
details.
@item @code{run-directory} (default: @code{"/run/dhcpd"})
The run directory to use. At service activation time, this directory
will be created if it does not exist.
@item @code{pid-file} (default: @code{"/run/dhcpd/dhcpd.pid"})
The PID file to use. This corresponds to the @code{-pf} option of
@code{dhcpd}. See @code{man dhcpd} for details.
@item @code{interfaces} (default: @code{'()})
The names of the network interfaces on which dhcpd should listen for
broadcasts. If this list is not empty, then its elements (which must be
strings) will be appended to the @code{dhcpd} invocation when starting
the daemon. It may not be necessary to explicitly specify any
interfaces here; see @code{man dhcpd} for details.
@end table
@end deftp
@defvr {Scheme Variable} static-networking-service-type
This is the type for statically-configured network interfaces.
@c TODO Document <static-networking> data structures.
@end defvr
@deffn {Scheme Procedure} static-networking-service @var{interface} @var{ip} @
[#:netmask #f] [#:gateway #f] [#:name-servers @code{'()}] @
[#:requirement @code{'(udev)}]
Return a service that starts @var{interface} with address @var{ip}. If
@var{netmask} is true, use it as the network mask. If @var{gateway} is true,
it must be a string specifying the default network gateway. @var{requirement}
can be used to declare a dependency on another service before configuring the
interface.
This procedure can be called several times, one for each network
interface of interest. Behind the scenes what it does is extend
@code{static-networking-service-type} with additional network interfaces
to handle.
For example:
@lisp
(static-networking-service "eno1" "192.168.1.82"
#:gateway "192.168.1.2"
#:name-servers '("192.168.1.2"))
@end lisp
@end deffn
@cindex wicd
@cindex wireless
@cindex WiFi
@cindex network management
@deffn {Scheme Procedure} wicd-service [#:wicd @var{wicd}]
Return a service that runs @url{https://launchpad.net/wicd,Wicd}, a network
management daemon that aims to simplify wired and wireless networking.
This service adds the @var{wicd} package to the global profile, providing
several commands to interact with the daemon and configure networking:
@command{wicd-client}, a graphical user interface, and the @command{wicd-cli}
and @command{wicd-curses} user interfaces.
@end deffn
@cindex ModemManager
@defvr {Scheme Variable} modem-manager-service-type
This is the service type for the
@uref{https://wiki.gnome.org/Projects/ModemManager, ModemManager}
service. The value for this service type is a
@code{modem-manager-configuration} record.
This service is part of @code{%desktop-services} (@pxref{Desktop
Services}).
@end defvr
@deftp {Data Type} modem-manager-configuration
Data type representing the configuration of ModemManager.
@table @asis
@item @code{modem-manager} (default: @code{modem-manager})
The ModemManager package to use.
@end table
@end deftp
@cindex USB_ModeSwitch
@cindex Modeswitching
@defvr {Scheme Variable} usb-modeswitch-service-type
This is the service type for the
@uref{https://www.draisberghof.de/usb_modeswitch/, USB_ModeSwitch}
service. The value for this service type is
a @code{usb-modeswitch-configuration} record.
When plugged in, some USB modems (and other USB devices) initially present
themselves as a read-only storage medium and not as a modem. They need to be
@dfn{modeswitched} before they are usable. The USB_ModeSwitch service type
installs udev rules to automatically modeswitch these devices when they are
plugged in.
This service is part of @code{%desktop-services} (@pxref{Desktop
Services}).
@end defvr
@deftp {Data Type} usb-modeswitch-configuration
Data type representing the configuration of USB_ModeSwitch.
@table @asis
@item @code{usb-modeswitch} (default: @code{usb-modeswitch})
The USB_ModeSwitch package providing the binaries for modeswitching.
@item @code{usb-modeswitch-data} (default: @code{usb-modeswitch-data})
The package providing the device data and udev rules file used by
USB_ModeSwitch.
@item @code{config-file} (default: @code{#~(string-append #$usb-modeswitch:dispatcher "/etc/usb_modeswitch.conf")})
Which config file to use for the USB_ModeSwitch dispatcher. By default the
config file shipped with USB_ModeSwitch is used which disables logging to
@file{/var/log} among other default settings. If set to @code{#f}, no config
file is used.
@end table
@end deftp
@cindex NetworkManager @cindex NetworkManager
@defvr {Scheme Variable} network-manager-service-type @defvr {Scheme Variable} network-manager-service-type
@ -17335,6 +17380,139 @@ List of additional command-line arguments to pass to the daemon.
@end table @end table
@end deftp @end deftp
@cindex wicd
@cindex wireless
@cindex WiFi
@cindex network management
@deffn {Scheme Procedure} wicd-service [#:wicd @var{wicd}]
Return a service that runs @url{https://launchpad.net/wicd,Wicd}, a network
management daemon that aims to simplify wired and wireless networking.
This service adds the @var{wicd} package to the global profile, providing
several commands to interact with the daemon and configure networking:
@command{wicd-client}, a graphical user interface, and the @command{wicd-cli}
and @command{wicd-curses} user interfaces.
@end deffn
@cindex ModemManager
Some networking devices such as modems require special care, and this is
what the services below focus on.
@defvr {Scheme Variable} modem-manager-service-type
This is the service type for the
@uref{https://wiki.gnome.org/Projects/ModemManager, ModemManager}
service. The value for this service type is a
@code{modem-manager-configuration} record.
This service is part of @code{%desktop-services} (@pxref{Desktop
Services}).
@end defvr
@deftp {Data Type} modem-manager-configuration
Data type representing the configuration of ModemManager.
@table @asis
@item @code{modem-manager} (default: @code{modem-manager})
The ModemManager package to use.
@end table
@end deftp
@cindex USB_ModeSwitch
@cindex Modeswitching
@defvr {Scheme Variable} usb-modeswitch-service-type
This is the service type for the
@uref{https://www.draisberghof.de/usb_modeswitch/, USB_ModeSwitch}
service. The value for this service type is
a @code{usb-modeswitch-configuration} record.
When plugged in, some USB modems (and other USB devices) initially present
themselves as a read-only storage medium and not as a modem. They need to be
@dfn{modeswitched} before they are usable. The USB_ModeSwitch service type
installs udev rules to automatically modeswitch these devices when they are
plugged in.
This service is part of @code{%desktop-services} (@pxref{Desktop
Services}).
@end defvr
@deftp {Data Type} usb-modeswitch-configuration
Data type representing the configuration of USB_ModeSwitch.
@table @asis
@item @code{usb-modeswitch} (default: @code{usb-modeswitch})
The USB_ModeSwitch package providing the binaries for modeswitching.
@item @code{usb-modeswitch-data} (default: @code{usb-modeswitch-data})
The package providing the device data and udev rules file used by
USB_ModeSwitch.
@item @code{config-file} (default: @code{#~(string-append #$usb-modeswitch:dispatcher "/etc/usb_modeswitch.conf")})
Which config file to use for the USB_ModeSwitch dispatcher. By default the
config file shipped with USB_ModeSwitch is used which disables logging to
@file{/var/log} among other default settings. If set to @code{#f}, no config
file is used.
@end table
@end deftp
@node Networking Services
@subsection Networking Services
The @code{(gnu services networking)} module discussed in the previous
section provides services for more advanced setups: providing a DHCP
service for others to use, filtering packets with iptables or nftables,
running a WiFi access point with @command{hostapd}, running the
@command{inetd} ``superdaemon'', and more. This section describes
those.
@deffn {Scheme Procedure} dhcpd-service-type
This type defines a service that runs a DHCP daemon. To create a
service of this type, you must supply a @code{<dhcpd-configuration>}.
For example:
@lisp
(service dhcpd-service-type
(dhcpd-configuration
(config-file (local-file "my-dhcpd.conf"))
(interfaces '("enp0s25"))))
@end lisp
@end deffn
@deftp {Data Type} dhcpd-configuration
@table @asis
@item @code{package} (default: @code{isc-dhcp})
The package that provides the DHCP daemon. This package is expected to
provide the daemon at @file{sbin/dhcpd} relative to its output
directory. The default package is the
@uref{https://www.isc.org/products/DHCP, ISC's DHCP server}.
@item @code{config-file} (default: @code{#f})
The configuration file to use. This is required. It will be passed to
@code{dhcpd} via its @code{-cf} option. This may be any ``file-like''
object (@pxref{G-Expressions, file-like objects}). See @code{man
dhcpd.conf} for details on the configuration file syntax.
@item @code{version} (default: @code{"4"})
The DHCP version to use. The ISC DHCP server supports the values ``4'',
``6'', and ``4o6''. These correspond to the @code{dhcpd} program
options @code{-4}, @code{-6}, and @code{-4o6}. See @code{man dhcpd} for
details.
@item @code{run-directory} (default: @code{"/run/dhcpd"})
The run directory to use. At service activation time, this directory
will be created if it does not exist.
@item @code{pid-file} (default: @code{"/run/dhcpd/dhcpd.pid"})
The PID file to use. This corresponds to the @code{-pf} option of
@code{dhcpd}. See @code{man dhcpd} for details.
@item @code{interfaces} (default: @code{'()})
The names of the network interfaces on which dhcpd should listen for
broadcasts. If this list is not empty, then its elements (which must be
strings) will be appended to the @code{dhcpd} invocation when starting
the daemon. It may not be necessary to explicitly specify any
interfaces here; see @code{man dhcpd} for details.
@end table
@end deftp
@cindex hostapd service, for Wi-Fi access points @cindex hostapd service, for Wi-Fi access points
@cindex Wi-Fi access points, hostapd service @cindex Wi-Fi access points, hostapd service
@defvr {Scheme Variable} hostapd-service-type @defvr {Scheme Variable} hostapd-service-type
@ -17397,6 +17575,7 @@ network that can be seen on @code{wlan0}, by default.
The service's value is a @code{hostapd-configuration} record. The service's value is a @code{hostapd-configuration} record.
@end defvr @end defvr
@cindex iptables @cindex iptables
@defvr {Scheme Variable} iptables-service-type @defvr {Scheme Variable} iptables-service-type
This is the service type to set up an iptables configuration. iptables is a This is the service type to set up an iptables configuration. iptables is a
@ -20530,7 +20709,7 @@ a system which relies on @code{%desktop-services}, you may use
(operating-system (operating-system
@dots{} @dots{}
(services %my-desktop-services) (services %my-desktop-services))
@end lisp @end lisp
@end defvr @end defvr
@ -30642,11 +30821,18 @@ cluster node that supports multiple storage backends, and installs the
"ganeti-instance-guix" "ganeti-instance-debootstrap")) "ganeti-instance-guix" "ganeti-instance-debootstrap"))
%base-packages)) %base-packages))
(services (services
(append (list (static-networking-service "eth0" "192.168.1.201" (append (list (service static-networking-service-type
#:netmask "255.255.255.0" (list (static-networking
#:gateway "192.168.1.254" (addresses
#:name-servers '("192.168.1.252" (list (network-address
"192.168.1.253")) (device "eth0")
(value "192.168.1.201/24"))))
(routes
(list (network-route
(destination "default")
(gateway "192.168.1.254"))))
(name-servers '("192.168.1.252"
"192.168.1.253")))))
;; Ganeti uses SSH to communicate between nodes. ;; Ganeti uses SSH to communicate between nodes.
(service openssh-service-type (service openssh-service-type

View file

@ -25,6 +25,59 @@
(channel-news (channel-news
(version 0) (version 0)
(entry (commit "223f1b1eb3707f1d3ef91200dd616ee6c8b77db0")
(title
(en "Improved static networking support on Guix System")
(fr "Meilleure prise en charge de réseaux statiques sur Guix System"))
(body
(en "Support for declarative static networking setup on Guix System
has been improved. It now allows you to list IPv4 and IPv6 addresses in
routes in a flexible way, similar to what you would do with the @command{ip}
command, but in a declarative fashion, as in this example:
@lisp
;; Static networking for one NIC, IPv4-only.
(service static-networking-service-type
(list (static-networking
(addresses
(list (network-address
(device \"eno1\")
(value \"10.0.2.15/24\"))))
(routes
(list (network-route
(destination \"default\")
(gateway \"10.0.2.2\"))))
(name-servers '(\"10.0.2.3\")))))
@end lisp
The @code{static-networking-service} procedure remains available but is
deprecated. Run @command{info \"(guix) Networking Setup\"} for more
information.")
(fr "La configuration déclarative et statique du réseau est mieux
prise en charge sur Guix System. Il est maintenant possible d'énumérer des
adresses IPv6 et IPv4 et les chemins avec plus de flexibilité, un peu comme ce
qu'on peut faire avec la commande @command{ip} mais de manière déclarative,
comme dans cet exemple :
@lisp
;; Réseau statique à une seule interface, IPv4 seulement.
(service static-networking-service-type
(list (static-networking
(addresses
(list (network-address
(device \"eno1\")
(value \"10.0.2.15/24\"))))
(routes
(list (network-route
(destination \"default\")
(gateway \"10.0.2.2\"))))
(name-servers '(\"10.0.2.3\")))))
@end lisp
La procédure @code{static-networking-service} reste disponible mais elle est
obsolète. Lancer @command{info \"(guix) Networking Setup\"} pour plus
d'informations.")))
(entry (commit "52cb5cf5b852117b5151a67af187d80764849ad3") (entry (commit "52cb5cf5b852117b5151a67af187d80764849ad3")
(title (title
(en "Icedove 91: profile folder moved to @file{~/.thunderbird}") (en "Icedove 91: profile folder moved to @file{~/.thunderbird}")

View file

@ -185,13 +185,9 @@ set."
("servers/crash-suspend" ("/hurd/crash" "--suspend")) ("servers/crash-suspend" ("/hurd/crash" "--suspend"))
("servers/password" ("/hurd/password")) ("servers/password" ("/hurd/password"))
("servers/socket/1" ("/hurd/pflocal")) ("servers/socket/1" ("/hurd/pflocal"))
("servers/socket/2" ("/hurd/pfinet" ;; /servers/socket/2 and /26 are created by 'static-networking-service'.
"--interface" "eth0" ;; XXX: Spawn pfinet without arguments on these nodes so that a DHCP
"--address" ;; client has someone to talk to?
"10.0.2.15" ;the default QEMU guest IP
"--netmask" "255.255.255.0"
"--gateway" "10.0.2.2"
"--ipv6" "/servers/socket/26"))
("proc" ("/hurd/procfs" "--stat-mode=444")))) ("proc" ("/hurd/procfs" "--stat-mode=444"))))
(define devices (define devices

View file

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2020 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2020, 2021 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org> ;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
@ -111,6 +111,15 @@ wait for at most HANDSHAKE-TIMEOUT seconds for handshake to complete. Return
(close-port sock) (close-port sock)
#f)))) #f))))
(define (delete-file* file)
"Ensure FILE does not exist."
(catch 'system-error
(lambda ()
(delete-file file))
(lambda args
(unless (= ENOENT (system-error-errno args))
(apply throw args)))))
(define (secret-service-receive-secrets port) (define (secret-service-receive-secrets port)
"Listen to local PORT and wait for a secret service client to send secrets. "Listen to local PORT and wait for a secret service client to send secrets.
Write them to the file system. Return the list of files installed on success, Write them to the file system. Return the list of files installed on success,
@ -170,6 +179,12 @@ and #f otherwise."
(log "installing file '~a' (~a bytes)...~%" (log "installing file '~a' (~a bytes)...~%"
file size) file size)
(mkdir-p (dirname file)) (mkdir-p (dirname file))
;; It could be that FILE already exists, for instance
;; because it has been created by a service's activation
;; snippet (e.g., SSH host keys). Delete it.
(delete-file* file)
(call-with-output-file file (call-with-output-file file
(lambda (output) (lambda (output)
(dump port output size) (dump port output size)

View file

@ -1747,6 +1747,7 @@ dist_patch_DATA = \
%D%/packages/patches/rustc-1.39.0-src.patch \ %D%/packages/patches/rustc-1.39.0-src.patch \
%D%/packages/patches/rust-adblock-ignore-live-tests.patch \ %D%/packages/patches/rust-adblock-ignore-live-tests.patch \
%D%/packages/patches/rust-coresimd-doctest.patch \ %D%/packages/patches/rust-coresimd-doctest.patch \
%D%/packages/patches/i3status-rust-enable-unstable-features.patch \
%D%/packages/patches/rust-ndarray-remove-blas-src-dep.patch \ %D%/packages/patches/rust-ndarray-remove-blas-src-dep.patch \
%D%/packages/patches/rust-ndarray-0.13-remove-blas-src.patch \ %D%/packages/patches/rust-ndarray-0.13-remove-blas-src.patch \
%D%/packages/patches/rust-nettle-disable-vendor.patch \ %D%/packages/patches/rust-nettle-disable-vendor.patch \
@ -1754,6 +1755,8 @@ dist_patch_DATA = \
%D%/packages/patches/rust-openssl-sys-no-vendor.patch \ %D%/packages/patches/rust-openssl-sys-no-vendor.patch \
%D%/packages/patches/rust-shell2batch-lint-fix.patch \ %D%/packages/patches/rust-shell2batch-lint-fix.patch \
%D%/packages/patches/sbc-fix-build-non-x86.patch \ %D%/packages/patches/sbc-fix-build-non-x86.patch \
%D%/packages/patches/sbcl-aserve-add-HTML-5-elements.patch \
%D%/packages/patches/sbcl-aserve-fix-rfe12668.patch \
%D%/packages/patches/sbcl-burgled-batteries3-fix-signals.patch \ %D%/packages/patches/sbcl-burgled-batteries3-fix-signals.patch \
%D%/packages/patches/sbcl-clml-fix-types.patch \ %D%/packages/patches/sbcl-clml-fix-types.patch \
%D%/packages/patches/sbcl-png-fix-sbcl-compatibility.patch \ %D%/packages/patches/sbcl-png-fix-sbcl-compatibility.patch \

View file

@ -8,6 +8,7 @@
;;; Copyright © 2021 Sharlatan Hellseher <sharlatanus@gmail.com> ;;; Copyright © 2021 Sharlatan Hellseher <sharlatanus@gmail.com>
;;; Copyright © 2021 Vinicius Monego <monego@posteo.net> ;;; Copyright © 2021 Vinicius Monego <monego@posteo.net>
;;; Copyright © 2021 Greg Hogan <code@greghogan.com> ;;; Copyright © 2021 Greg Hogan <code@greghogan.com>
;;; Copyright © 2021 Foo Chuan Wei <chuanwei.foo@hotmail.com>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -1099,6 +1100,68 @@ more.")
license:lgpl2.0+ license:lgpl2.0+
license:lgpl2.1+)))) license:lgpl2.1+))))
(define-public sunclock
(let ((commit "f4106eb0a81f7594726d6b2859efd8fc64cc1225")
(revision "1"))
(package
(name "sunclock")
(version (git-version "3.57" revision commit))
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/nongiach/Sunclock")
(commit commit)))
(file-name (git-file-name name version))
(sha256
(base32 "1rczdpmhvfw57b9r793vq8vqlbdhlkgj52fxwrdfl6cwj95a9kv2"))))
(build-system gnu-build-system)
(arguments
`(#:make-flags
(list (string-append "DESTDIR=" %output)
;; Fix incorrect argument given to gcc. Error message:
;; "gcc: error: DefaultGcc2AMD64Opt: No such file or directory"
"CDEBUGFLAGS=")
#:phases
(modify-phases %standard-phases
(replace 'configure
(lambda _
(chdir "sunclock-3.57")
(substitute* "Imakefile"
(("^MANDIR=/X11R6/man/man1")
"MANDIR=/share/man/man1")
(("^BINDIR=/X11R6/bin")
"BINDIR=/bin")
;; Disable ZLIB support for vmf files because zlib implements
;; `gzgetc` as a macro instead of a function, which results in
;; a compilation error.
((" -DZLIB") "")
((" -lz") "")
(("cd \\$\\(DESTDIR\\)\\$\\(SHAREDIR\\)/earthmaps/vmf ; \
gzip -f \\*.vmf")
""))
;; Generate Makefile.
(invoke "xmkmf"))))
#:tests? #f)) ; No check target.
(inputs
`(("libjpeg-turbo" ,libjpeg-turbo)
("libpng" ,libpng)
("libx11" ,libx11)
("libxpm" ,libxpm)))
(native-inputs
`(("imake" ,imake)))
(home-page "https://github.com/nongiach/Sunclock")
(synopsis
"Map of the Earth that shows which portion is illuminated by the Sun")
(description
"Sunclock displays a map of the Earth and shows which portion is
illuminated by the Sun. It can commute between two states, the \"clock window\"
and the \"map window\". The clock window displays a small map of the Earth and
therefore occupies little space on the screen, while the \"map window\" displays
a large map and offers more advanced functions: local time of cities, Sun and
Moon position, etc.")
(license license:gpl2+))))
(define-public python-jplephem (define-public python-jplephem
(package (package
(name "python-jplephem") (name "python-jplephem")

View file

@ -4948,7 +4948,7 @@ as is the case with audio plugins.")
(define-public carla (define-public carla
(package (package
(name "carla") (name "carla")
(version "2.1.1") (version "2.4.1")
(source (source
(origin (origin
(method git-fetch) (method git-fetch)
@ -4958,8 +4958,7 @@ as is the case with audio plugins.")
(commit (string-append "v" version)))) (commit (string-append "v" version))))
(file-name (git-file-name name version)) (file-name (git-file-name name version))
(sha256 (sha256
(base32 (base32 "01ngkmfcxyg1bb4qmfvlkkjbx4lx62akxqhizl8zmqnhfcy4p9bx"))))
"0c3y4a6cgi4bv1mg57i3qn5ia6pqjqlaylvkapj6bmpsw71ig22g"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
`(#:tests? #f ; no "check" target `(#:tests? #f ; no "check" target

View file

@ -1518,6 +1518,36 @@ data. In addition, provides numerous plotting functions for commonly
used visualizations.") used visualizations.")
(license license:artistic2.0))) (license license:artistic2.0)))
(define-public r-dearseq
(package
(name "r-dearseq")
(version "1.6.0")
(source
(origin
(method url-fetch)
(uri (bioconductor-uri "dearseq" version))
(sha256
(base32
"07vr27rv3z86ajd62c0ilvfgz9z35qsiwwi5pv4sygbhnnjwh3rc"))))
(build-system r-build-system)
(propagated-inputs
`(("r-ggplot2" ,r-ggplot2)
("r-kernsmooth" ,r-kernsmooth)
("r-matrixstats" ,r-matrixstats)
("r-patchwork" ,r-patchwork)
("r-pbapply" ,r-pbapply)
("r-statmod" ,r-statmod)
("r-survey" ,r-survey)
("r-viridislite" ,r-kernsmooth)))
(home-page "https://github.com/borishejblum/dearseq")
(synopsis "DEA for RNA-seq data through a robust variance component test")
(description
"This is a package for Differential Expression Analysis of RNA-seq data.
It features a variance component score test accounting for data
heteroscedasticity through precision weights. Perform both gene-wise and gene
set analyses, and can deal with repeated or longitudinal data.")
(license license:gpl2)))
(define-public r-decipher (define-public r-decipher
(package (package
(name "r-decipher") (name "r-decipher")
@ -1638,6 +1668,41 @@ spent loading the full derfinder package when running the F-statistics
calculation in parallel.") calculation in parallel.")
(license license:artistic2.0))) (license license:artistic2.0)))
(define-public r-drimseq
(package
(name "r-drimseq")
(version "1.22.0")
(source
(origin
(method url-fetch)
(uri (bioconductor-uri "DRIMSeq" version))
(sha256
(base32 "0y2jb0hb633id038zmwnfny6h4ai77fdyy02f77vha1z8xg5nl02"))))
(properties `((upstream-name . "DRIMSeq")))
(build-system r-build-system)
(propagated-inputs
`(("r-biocgenerics" ,r-biocgenerics)
("r-biocparallel" ,r-biocparallel)
("r-edger" ,r-edger)
("r-genomicranges" ,r-genomicranges)
("r-ggplot2" ,r-ggplot2)
("r-iranges" ,r-iranges)
("r-limma" ,r-limma)
("r-mass" ,r-mass)
("r-reshape2" ,r-reshape2)
("r-s4vectors" ,r-s4vectors)))
(native-inputs `(("r-knitr" ,r-knitr)))
(home-page "https://bioconductor.org/packages/DRIMSeq")
(synopsis "Differential transcript usage and tuQTL analyses with Dirichlet-multinomial model in RNA-seq")
(description
"The package provides two frameworks. One for the differential
transcript usage analysis between different conditions and one for the tuQTL
analysis. Both are based on modeling the counts of genomic features (i.e.,
transcripts) with the Dirichlet-multinomial distribution. The package also
makes available functions for visualization and exploration of the data and
results.")
(license license:gpl3+)))
(define-public r-bluster (define-public r-bluster
(package (package
(name "r-bluster") (name "r-bluster")
@ -1721,6 +1786,59 @@ naming and share the same rich and consistent \"Vector API\" as much as
possible.") possible.")
(license license:artistic2.0))) (license license:artistic2.0)))
(define-public r-isoformswitchanalyzer
(package
(name "r-isoformswitchanalyzer")
(version "1.16.0")
(source
(origin
(method url-fetch)
(uri (bioconductor-uri "IsoformSwitchAnalyzeR" version))
(sha256
(base32 "14bqf39gw5ab5r9sr3afkig1jbzdvds1bmcvc6bpb45kschx7fwf"))))
(properties `((upstream-name . "IsoformSwitchAnalyzeR")))
(build-system r-build-system)
(propagated-inputs
`(("r-biobase" ,r-biobase)
("r-biocgenerics" ,r-biocgenerics)
("r-biostrings" ,r-biostrings)
("r-bsgenome" ,r-bsgenome)
("r-dbi" ,r-dbi)
("r-dexseq" ,r-dexseq)
("r-dplyr" ,r-dplyr)
("r-drimseq" ,r-drimseq)
("r-edger" ,r-edger)
("r-futile-logger" ,r-futile-logger)
("r-genomeinfodb" ,r-genomeinfodb)
("r-genomicranges" ,r-genomicranges)
("r-ggplot2" ,r-ggplot2)
("r-gridextra" ,r-gridextra)
("r-iranges" ,r-iranges)
("r-limma" ,r-limma)
("r-magrittr" ,r-magrittr)
("r-plyr" ,r-plyr)
("r-rcolorbrewer" ,r-rcolorbrewer)
("r-rcurl" ,r-rcurl)
("r-readr" ,r-readr)
("r-reshape2" ,r-reshape2)
("r-rtracklayer" ,r-rtracklayer)
("r-stringr" ,r-stringr)
("r-tibble" ,r-tibble)
("r-tximeta" ,r-tximeta)
("r-tximport" ,r-tximport)
("r-venndiagram" ,r-venndiagram)
("r-xvector" ,r-xvector)))
(native-inputs
`(("r-knitr" ,r-knitr)))
(home-page "https://bioconductor.org/packages/IsoformSwitchAnalyzeR/")
(synopsis "Analyze alternative splicing in RNA-seq data")
(description
"This is a package for the analysis of alternative splicing and isoform
switches with predicted functional consequences (e.g. gain/loss of protein
domains etc.) from quantification of all types of RNASeq by tools such as
Kallisto, Salmon, StringTie, Cufflinks/Cuffdiff etc.")
(license license:gpl2+)))
;; This is a CRAN package, but it depends on r-biobase and r-limma from Bioconductor. ;; This is a CRAN package, but it depends on r-biobase and r-limma from Bioconductor.
(define-public r-absfiltergsea (define-public r-absfiltergsea
(package (package
@ -6734,6 +6852,37 @@ required source code files from the official Leidenalg distribution and
several functions from the R igraph package.") several functions from the R igraph package.")
(license license:gpl3+)))) (license license:gpl3+))))
(define-public r-sanssouci
;; sansscouci doesn't have a (versioned) release yet.
;; This is the latest commit as of packaging for Guix.
(let ((commit "5fe20a9aaf4ac637fa83d9cc73ff1c22de97ca6f")
(revision "1"))
(package
(name "r-sanssouci")
(version (git-version "0" revision commit))
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/pneuvial/sanssouci.git")
(commit commit)))
(sha256
(base32
"13ycdd790qw64qy2zdvcrpj3fc8as628rsly32438d3rifnlc5sk"))))
(build-system r-build-system)
(propagated-inputs
`(("r-generics" ,r-generics)
("r-matrix" ,r-matrix)
("r-matrixstats" ,r-matrixstats)
("r-rcpp" ,r-rcpp)
("r-rcpparmadillo" ,r-rcpparmadillo)))
(home-page "https://pneuvial.github.io/sanssouci")
(synopsis "Post Hoc multiple testing inference")
(description
"The goal of sansSouci is to perform post hoc inference: in a multiple
testing context, sansSouci provides statistical guarantees on possibly
user-defined and/or data-driven sets of hypotheses.")
(license license:gpl3))))
(define-public r-monocle3 (define-public r-monocle3
(package (package
(name "r-monocle3") (name "r-monocle3")

View file

@ -39,7 +39,7 @@
(define-public dunst (define-public dunst
(package (package
(name "dunst") (name "dunst")
(version "1.7.1") (version "1.7.3")
(source (origin (source (origin
(method git-fetch) (method git-fetch)
(uri (git-reference (uri (git-reference
@ -48,7 +48,7 @@
(file-name (git-file-name name version)) (file-name (git-file-name name version))
(sha256 (sha256
(base32 (base32
"0v15fhwzcg7zfn092sry0f4qb6dccz9bb312y9dadg745wf3n9qw")))) "1ra0ii805w3rrs0qqbjxzl6i79ksz42lnvbglw18h4igkza21kzj"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
`(#:tests? #f ; no check target `(#:tests? #f ; no check target

View file

@ -13863,6 +13863,39 @@ commands are bound to keys reachable with the left hand and movement keys are
reached with the right hand.") reached with the right hand.")
(license license:gpl3+))) (license license:gpl3+)))
(define-public emacs-cc-mode
(package
(name "emacs-cc-mode")
(version "5.35")
(source
(origin
(method hg-fetch)
(uri (hg-reference
(url "http://hg.code.sf.net/p/cc-mode/cc-mode")
(changeset
(string-append "Release_"
(string-replace-substring version "." "_")))))
(file-name (hg-file-name name version))
(sha256
(base32 "03cvl61baccx57zd62nz2wy4hvij5hl2syg7byaxgrs4c7grr414"))))
(build-system emacs-build-system)
(arguments
'(#:tests? #t
#:test-command '("make" "test")
#:phases
(modify-phases %standard-phases
(add-before 'install 'make-info
(lambda _
(invoke "make" "info"))))))
(native-inputs
`(("texinfo" ,texinfo)))
(home-page "http://cc-mode.sourceforge.net/")
(synopsis "Framework for creating major modes for C-style languages")
(description
"CC Mode is an Emacs and XEmacs mode for editing C and other languages with
similar syntax; currently C++, Objective-C, Java, CORBA's IDL, Pike, and AWK.")
(license license:gpl3+)))
(define-public emacs-csharp-mode (define-public emacs-csharp-mode
(package (package
(name "emacs-csharp-mode") (name "emacs-csharp-mode")
@ -21400,21 +21433,18 @@ package recipes.")
(license license:gpl3+))) (license license:gpl3+)))
(define-public emacs-dpd (define-public emacs-dpd
;; XXX: Upstream does not use tag yet. Version is extracted from "dpd.el".
(let ((commit "f53f251a58859f375617ce4f257fecc83c8ca5da")
(revision "0"))
(package (package
(name "emacs-dpd") (name "emacs-dpd")
(version (git-version "0.1.0" revision commit)) (version "0.2.1")
(source (source
(origin (origin
(method git-fetch) (method git-fetch)
(uri (git-reference (uri (git-reference
(url "https://gitlab.com/lilyp/emacs-dpd") (url "https://gitlab.com/lilyp/emacs-dpd")
(commit commit))) (commit version)))
(file-name (git-file-name name version)) (file-name (git-file-name name version))
(sha256 (sha256
(base32 "1nislvaxjb53x2ah330szcca4d595npx6zxrrwa5xximj6365wk0")))) (base32 "0wrqmpfcqp87dr5blpskf9kvm9slvffldqfxx77n15gcw516zzc8"))))
(build-system emacs-build-system) (build-system emacs-build-system)
(propagated-inputs (propagated-inputs
`(("emacs-packed" ,emacs-packed))) `(("emacs-packed" ,emacs-packed)))
@ -21423,7 +21453,7 @@ package recipes.")
(description (description
"This package provides tools for generating package-desc structures and "This package provides tools for generating package-desc structures and
feeding them to package.el library.") feeding them to package.el library.")
(license license:gpl3+)))) (license license:gpl3+)))
(define-public emacs-picpocket (define-public emacs-picpocket
(let ((version "41") (let ((version "41")
@ -27135,17 +27165,19 @@ other @code{helm-type-file} sources such as @code{helm-locate}.")
(license license:gpl3+))) (license license:gpl3+)))
(define-public emacs-telega-server (define-public emacs-telega-server
(let ((commit "b4a5e206bd259f3d7f7633a725b2990704d6a1e8")
(revision "1"))
(package (package
(name "emacs-telega-server") (name "emacs-telega-server")
(version "0.7.031") (version (git-version "0.7.15" revision commit))
(source (source
(origin (origin
(method git-fetch) (method git-fetch)
(uri (git-reference (uri (git-reference
(url "https://github.com/zevlg/telega.el") (url "https://github.com/zevlg/telega.el")
(commit (string-append "v" version)))) (commit commit)))
(sha256 (sha256
(base32 "05j82796s4k3yr0igl6hir3p8qj0cw66vvhbpbcy28d6q9v9vjjz")) (base32 "0gr4nmpk175hxmj357bpzaqywbjc6dmmvfxnyzkh884vyzbwdxlc"))
(file-name (git-file-name "emacs-telega" version)) (file-name (git-file-name "emacs-telega" version))
(patches (patches
(search-patches "emacs-telega-path-placeholder.patch" (search-patches "emacs-telega-path-placeholder.patch"
@ -27159,7 +27191,7 @@ other @code{helm-type-file} sources such as @code{helm-locate}.")
#:phases #:phases
(modify-phases %standard-phases (modify-phases %standard-phases
(add-before 'configure 'enter-subdirectory (add-before 'configure 'enter-subdirectory
(lambda _ (chdir "server") #t)) (lambda _ (chdir "server")))
(replace 'configure (replace 'configure
(lambda* (#:key outputs #:allow-other-keys) (lambda* (#:key outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out"))) (let ((out (assoc-ref outputs "out")))
@ -27171,7 +27203,7 @@ other @code{helm-type-file} sources such as @code{helm-locate}.")
(add-after 'install 'check (add-after 'install 'check
(assoc-ref %standard-phases 'check)) (assoc-ref %standard-phases 'check))
(add-before 'install-license-files 'leave-subdirectory (add-before 'install-license-files 'leave-subdirectory
(lambda _ (chdir "..") #t))) (lambda _ (chdir ".."))))
#:test-target "test")) #:test-target "test"))
(inputs (inputs
`(("tdlib" ,tdlib) `(("tdlib" ,tdlib)
@ -27183,7 +27215,7 @@ other @code{helm-type-file} sources such as @code{helm-locate}.")
(synopsis "Server process of Telega") (synopsis "Server process of Telega")
(description "Telega-server is helper program to interact with Telegram (description "Telega-server is helper program to interact with Telegram
service, and connect it with Emacs via inter-process communication.") service, and connect it with Emacs via inter-process communication.")
(license license:gpl3+))) (license license:gpl3+))))
(define-public emacs-telega (define-public emacs-telega
(package (package
@ -27217,7 +27249,7 @@ service, and connect it with Emacs via inter-process communication.")
"\"" ffmpeg-bin "\")")))))) "\"" ffmpeg-bin "\")"))))))
(add-after 'unpack 'configure (add-after 'unpack 'configure
(lambda* (#:key inputs outputs #:allow-other-keys) (lambda* (#:key inputs outputs #:allow-other-keys)
(substitute* "telega-server.el" (substitute* "telega-customize.el"
(("@TELEGA_SERVER_BIN@") (("@TELEGA_SERVER_BIN@")
(search-input-file inputs "/bin/telega-server"))) (search-input-file inputs "/bin/telega-server")))
(substitute* "telega-util.el" (substitute* "telega-util.el"
@ -29737,7 +29769,7 @@ released, and track their progress in watching a series.")
(define-public emacs-webpaste (define-public emacs-webpaste
(package (package
(name "emacs-webpaste") (name "emacs-webpaste")
(version "3.2.1") (version "3.2.2")
(source (source
(origin (origin
(method git-fetch) (method git-fetch)
@ -29746,8 +29778,7 @@ released, and track their progress in watching a series.")
(commit version))) (commit version)))
(file-name (git-file-name name version)) (file-name (git-file-name name version))
(sha256 (sha256
(base32 (base32 "07hj9nr7x6c9w2dnvc58cfbprgp9cqzdxflp5qlpglzdw0bi9s3c"))))
"1d481pdnh7cnbyka7wn59czlci63zwfqms8n515svg92qm573ckd"))))
(build-system emacs-build-system) (build-system emacs-build-system)
(arguments (arguments
`(#:tests? #t `(#:tests? #t

View file

@ -92,7 +92,9 @@
#:use-module (gnu packages libusb) #:use-module (gnu packages libusb)
#:use-module (gnu packages linux) #:use-module (gnu packages linux)
#:use-module (gnu packages man) #:use-module (gnu packages man)
#:use-module (gnu packages maths)
#:use-module (gnu packages multiprecision) #:use-module (gnu packages multiprecision)
#:use-module (gnu packages ncurses)
#:use-module (gnu packages networking) #:use-module (gnu packages networking)
#:use-module (gnu packages pkg-config) #:use-module (gnu packages pkg-config)
#:use-module (gnu packages popt) #:use-module (gnu packages popt)
@ -106,6 +108,7 @@
#:use-module (gnu packages qt) #:use-module (gnu packages qt)
#:use-module (gnu packages readline) #:use-module (gnu packages readline)
#:use-module (gnu packages sphinx) #:use-module (gnu packages sphinx)
#:use-module (gnu packages tex)
#:use-module (gnu packages texinfo) #:use-module (gnu packages texinfo)
#:use-module (gnu packages textutils) #:use-module (gnu packages textutils)
#:use-module (gnu packages time) #:use-module (gnu packages time)
@ -1839,6 +1842,37 @@ local, single-user UI, or as a multi-user UI for viewing, adding, and
editing on the Web.") editing on the Web.")
(license license:gpl3))) (license license:gpl3)))
(define-public optionmatrix
(package
(name "optionmatrix")
(version "1.4.3")
(source
(origin
(method url-fetch)
(uri (string-append
"mirror://sourceforge/optionmatrix/optionmatrix-"
version ".tar.xz"))
(sha256
(base32 "1zd0pfiphnijh1l94swb3mjrpmjsn37z11mklamd7zw6h2d4zh4d"))))
(build-system gnu-build-system)
(inputs
`(("gsl" ,gsl)
("gtk3" ,gtk+)
("ncurses" ,ncurses)))
(native-inputs
`(("pkg-config" ,pkg-config)
("texinfo" ,texinfo)
("texlive" ,(texlive-union (list texlive-epsf
texlive-tex-texinfo)))))
(home-page "https://anthonybradford.github.io/optionmatrix/")
(synopsis "Financial derivative calculator")
(description
"The OptionMatrix programs are financial derivative calculators. These
calculators are real-time multi-model option chain pricers with analytics and
interactive controls. This package provides a GTK+ graphical user interface
(@code{optionmatrix}) and a curses interface (@code{optionmatrix_console}).")
(license license:gpl3+)))
(define-public python-ta-lib (define-public python-ta-lib
(package (package
(name "python-ta-lib") (name "python-ta-lib")

View file

@ -1335,11 +1335,11 @@ standards of the IceCat project.")
(cpe-version . ,(first (string-split version #\-))))))) (cpe-version . ,(first (string-split version #\-)))))))
;; Update this together with icecat! ;; Update this together with icecat!
(define %icedove-build-id "20211119000000") ;must be of the form YYYYMMDDhhmmss (define %icedove-build-id "20211207000000") ;must be of the form YYYYMMDDhhmmss
(define-public icedove (define-public icedove
(package (package
(name "icedove") (name "icedove")
(version "91.3.2") (version "91.4.0")
(source icecat-source) (source icecat-source)
(properties (properties
`((cpe-name . "thunderbird_esr"))) `((cpe-name . "thunderbird_esr")))
@ -1620,7 +1620,7 @@ standards of the IceCat project.")
;; in the Thunderbird release tarball. We don't use the release ;; in the Thunderbird release tarball. We don't use the release
;; tarball because it duplicates the Icecat sources and only adds the ;; tarball because it duplicates the Icecat sources and only adds the
;; "comm" directory, which is provided by this repository. ;; "comm" directory, which is provided by this repository.
,(let ((changeset "c35def313c0c2bd0341e3e058f862f02390269c4")) ,(let ((changeset "ab6dfcf3a37bf53aac1a9d632d45ee51047050bb"))
(origin (origin
(method hg-fetch) (method hg-fetch)
(uri (hg-reference (uri (hg-reference
@ -1629,7 +1629,7 @@ standards of the IceCat project.")
(file-name (string-append "thunderbird-" version "-checkout")) (file-name (string-append "thunderbird-" version "-checkout"))
(sha256 (sha256
(base32 (base32
"0rp4i353dskx065a6hskvfpf0l2qywqnivks9qc6a85h4yah4rvq"))))) "00zj1k3c8p66ylf9n7xp42y6kiv3h6hf8ba7bk6f8wj3hh0r2hrd")))))
("cargo" ,rust "cargo") ("cargo" ,rust "cargo")
("clang" ,clang) ("clang" ,clang)
("llvm" ,llvm) ("llvm" ,llvm)

View file

@ -10,6 +10,7 @@
;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com> ;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com>
;;; Copyright © 2020 Pjotr Prins <pjotr.guix@thebird.nl> ;;; Copyright © 2020 Pjotr Prins <pjotr.guix@thebird.nl>
;;; Copyright © 2021 Bonface Munyoki Kilyungi <me@bonfacemunyoki.com> ;;; Copyright © 2021 Bonface Munyoki Kilyungi <me@bonfacemunyoki.com>
;;; Copyright © 2021 Giacomo Leidi <goodoldpaul@autistici.org>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -442,3 +443,45 @@ This approach allows:
@item Using backend specific styles to customize the output @item Using backend specific styles to customize the output
@end itemize") @end itemize")
(license license:expat))) (license license:expat)))
(define-public gprof2dot
(package
(name "gprof2dot")
(version "2021.02.21")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/jrfonseca/gprof2dot")
(commit version)))
(file-name (git-file-name name version))
(sha256
(base32
"1jjhsjf5fdi1fkn7mvhnzkh6cynl8gcjrygd3cya5mmda3akhzic"))))
(build-system python-build-system)
(arguments
`(#:phases
(modify-phases %standard-phases
(replace 'check
(lambda* (#:key inputs outputs tests? #:allow-other-keys)
(when tests?
(add-installed-pythonpath inputs outputs)
(invoke "python" "tests/test.py")))))))
(native-inputs
`(("graphviz" ,graphviz)))
(home-page "https://github.com/jrfonseca/gprof2dot")
(synopsis "Generate a dot graph from the output of several profilers")
(description "This package provides a Python script to convert the output
from many profilers into a dot graph.
It can:
@itemize
@item prune nodes and edges below a certain threshold;
@item use an heuristic to propagate time inside mutually recursive functions;
@item use color efficiently to draw attention to hot-spots;
@item work on any platform where Python and Graphviz is available.
@end itemize")
(license license:lgpl3+)))

View file

@ -102,7 +102,7 @@
("java-asm-util" ,java-asm-util-8) ("java-asm-util" ,java-asm-util-8)
("java-classpathx-servletapi" ,java-classpathx-servletapi) ("java-classpathx-servletapi" ,java-classpathx-servletapi)
("java-commons-cli" ,java-commons-cli) ("java-commons-cli" ,java-commons-cli)
("java-jansi" ,java-jansi) ("java-jansi" ,java-jansi-1)
("java-jline-2" ,java-jline-2) ("java-jline-2" ,java-jline-2)
("java-picocli" ,java-picocli) ("java-picocli" ,java-picocli)
("java-xstream" ,java-xstream))) ("java-xstream" ,java-xstream)))

View file

@ -556,7 +556,7 @@ you send to a FIFO file.")
(define-public guile-dsv (define-public guile-dsv
(package (package
(name "guile-dsv") (name "guile-dsv")
(version "0.4.0") (version "0.5.0")
(source (origin (source (origin
(method git-fetch) (method git-fetch)
(uri (git-reference (uri (git-reference
@ -565,7 +565,7 @@ you send to a FIFO file.")
(file-name (string-append name "-" version "-checkout")) (file-name (string-append name "-" version "-checkout"))
(sha256 (sha256
(base32 (base32
"1mvyc8i38j56frjh3p6vwziv8lrzlyqndz30663h5nwcp0044sdn")))) "0s9zan08ala7432pn44z3vmb3sc19rf18zfr9mskydnam5xn6qlw"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(native-inputs (native-inputs
`(("autoconf" ,autoconf) `(("autoconf" ,autoconf)
@ -581,21 +581,6 @@ you send to a FIFO file.")
#:imported-modules ((guix build guile-build-system) #:imported-modules ((guix build guile-build-system)
,@%gnu-build-system-modules) ,@%gnu-build-system-modules)
#:phases (modify-phases %standard-phases #:phases (modify-phases %standard-phases
(add-before 'configure 'set-guilesitedir
(lambda _
(substitute* "Makefile.in"
(("^guilesitedir =.*$")
"guilesitedir = \
$(datadir)/guile/site/$(GUILE_EFFECTIVE_VERSION)\n"))
(substitute* "modules/Makefile.in"
(("^guilesitedir =.*$")
"guilesitedir = \
$(datadir)/guile/site/$(GUILE_EFFECTIVE_VERSION)\n"))
(substitute* "modules/dsv/Makefile.in"
(("^guilesitedir =.*$")
"guilesitedir = \
$(datadir)/guile/site/$(GUILE_EFFECTIVE_VERSION)\n"))
#t))
(add-after 'install 'wrap-program (add-after 'install 'wrap-program
(lambda* (#:key inputs outputs #:allow-other-keys) (lambda* (#:key inputs outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out")) (let* ((out (assoc-ref outputs "out"))
@ -4783,14 +4768,13 @@ locations.")
(base32 (base32
"0jcl6mzqy04if5drflmygmggbgzsxa42mlmskqb3cfqmksq0zj0y")))) "0jcl6mzqy04if5drflmygmggbgzsxa42mlmskqb3cfqmksq0zj0y"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments
`(#:tests? #f)); no tests
(inputs (inputs
`(("guile" ,guile-3.0))) `(("guile" ,guile-3.0)))
(native-inputs (native-inputs
`(("automake" ,automake) `(("automake" ,automake)
("autoconf" ,autoconf) ("autoconf" ,autoconf)
("pkg-config" ,pkg-config) ("pkg-config" ,pkg-config)
("guile" ,guile-3.0) ;for 'guild compile' + guile.m4
("texinfo" ,texinfo))) ("texinfo" ,texinfo)))
(home-page "https://git.lepiller.eu/guile-netlink") (home-page "https://git.lepiller.eu/guile-netlink")
(synopsis "Netlink protocol implementation for Guile") (synopsis "Netlink protocol implementation for Guile")

View file

@ -7901,14 +7901,14 @@ JavaMail API.")
(define-public java-log4j-api (define-public java-log4j-api
(package (package
(name "java-log4j-api") (name "java-log4j-api")
(version "2.4.1") (version "2.15.0")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "mirror://apache/logging/log4j/" version (uri (string-append "mirror://apache/logging/log4j/" version
"/apache-log4j-" version "-src.tar.gz")) "/apache-log4j-" version "-src.tar.gz"))
(sha256 (sha256
(base32 (base32
"0j5p9gik0jysh37nlrckqbky12isy95cpwg2gv5fas1rcdqbraxd")))) "0h4ndw096h9cql0kyi1zd0ymp8hqxc1jdgdxkn0kxf8vd9b4dx14"))))
(build-system ant-build-system) (build-system ant-build-system)
(arguments (arguments
`(#:tests? #f ; tests require unpackaged software `(#:tests? #f ; tests require unpackaged software
@ -7929,6 +7929,7 @@ JavaMail API.")
`(("java-osgi-core" ,java-osgi-core) `(("java-osgi-core" ,java-osgi-core)
("java-hamcrest-core" ,java-hamcrest-core) ("java-hamcrest-core" ,java-hamcrest-core)
("java-junit" ,java-junit))) ("java-junit" ,java-junit)))
(properties '((cpe-name . "log4j")))
(home-page "https://logging.apache.org/log4j/2.x/") (home-page "https://logging.apache.org/log4j/2.x/")
(synopsis "API module of the Log4j logging framework for Java") (synopsis "API module of the Log4j logging framework for Java")
(description (description
@ -7946,7 +7947,11 @@ Java.")
("java-log4j-api" ,java-log4j-api) ("java-log4j-api" ,java-log4j-api)
("java-mail" ,java-mail) ("java-mail" ,java-mail)
("java-jboss-jms-api-spec" ,java-jboss-jms-api-spec) ("java-jboss-jms-api-spec" ,java-jboss-jms-api-spec)
("java-conversant-disruptor" ,java-conversant-disruptor)
("java-lmax-disruptor" ,java-lmax-disruptor) ("java-lmax-disruptor" ,java-lmax-disruptor)
("java-jctools-core" ,java-jctools-core-1)
("java-stax2-api" ,java-stax2-api)
("java-jansi" ,java-jansi)
("java-kafka" ,java-kafka-clients) ("java-kafka" ,java-kafka-clients)
("java-datanucleus-javax-persistence" ,java-datanucleus-javax-persistence) ("java-datanucleus-javax-persistence" ,java-datanucleus-javax-persistence)
("java-fasterxml-jackson-annotations" ,java-fasterxml-jackson-annotations) ("java-fasterxml-jackson-annotations" ,java-fasterxml-jackson-annotations)
@ -7993,6 +7998,7 @@ logging framework for Java.")))
(inputs (inputs
`(("log4j-api" ,java-log4j-api) `(("log4j-api" ,java-log4j-api)
("log4j-core" ,java-log4j-core) ("log4j-core" ,java-log4j-core)
("java-jboss-jms-api-spec" ,java-jboss-jms-api-spec)
("osgi-core" ,java-osgi-core) ("osgi-core" ,java-osgi-core)
("eclipse-osgi" ,java-eclipse-osgi) ("eclipse-osgi" ,java-eclipse-osgi)
("java-lmax-disruptor" ,java-lmax-disruptor))))) ("java-lmax-disruptor" ,java-lmax-disruptor)))))
@ -11377,15 +11383,16 @@ programming language.")
(define-public java-lmax-disruptor (define-public java-lmax-disruptor
(package (package
(name "java-lmax-disruptor") (name "java-lmax-disruptor")
(version "3.3.7") (version "3.4.4")
(source (origin (source (origin
(method url-fetch) (method git-fetch)
(uri (string-append "https://github.com/LMAX-Exchange/disruptor/" (uri (git-reference
"archive/" version ".tar.gz")) (url "https://github.com/LMAX-Exchange/disruptor")
(file-name (string-append name "-" version ".tar.gz")) (commit version)))
(file-name (git-file-name name version))
(sha256 (sha256
(base32 (base32
"17da2gwj5abnlsfgn2xqjk5lgzbg4vkb0hdv2dvc8r2fx4bi7w3g")))) "02c5kp3n8a73dq9ay7ar53s1k3x61z9yzc5ikqb03m6snr1wpfqn"))))
(build-system ant-build-system) (build-system ant-build-system)
(arguments (arguments
`(#:jar-name "java-lmax-disruptor.jar" `(#:jar-name "java-lmax-disruptor.jar"
@ -11409,6 +11416,68 @@ for high performance inter-thread communication that avoids the need for
message queues or resource locking.") message queues or resource locking.")
(license license:asl2.0))) (license license:asl2.0)))
(define-public java-conversant-disruptor
(package
(name "java-conversant-disruptor")
(version "1.2.19")
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/conversant/disruptor")
(commit version)))
(file-name (git-file-name name version))
(sha256
(base32
"0gx1dm7sfg7pa05cs4qby10gfcplai5b5lf1f7ik1a76dh3vhl0g"))))
(build-system ant-build-system)
(arguments
`(#:jar-name "java-conversant-disruptor.jar"
#:source-dir "src/main/java"
#:phases
(modify-phases %standard-phases
(add-before 'build 'copy-resources
(lambda _
(copy-recursively "src/main/resources" "build/classes")))
(add-before 'build 'remove-module
(lambda _
(delete-file "src/main/java/module-info.java"))))))
(native-inputs
`(("java-junit" ,java-junit)))
(home-page "https://github.com/conversant/disruptor")
(synopsis "High performance intra-thread communication")
(description "Conversant Disruptor is the highest performing intra-thread
transfer mechanism available in Java. Conversant Disruptor is an implementation
of this type of ring buffer that has almost no overhead and that exploits a
particularly simple design.")
(license license:asl2.0)))
(define-public java-jctools-core-1
(package
(name "java-jctools-core")
(version "1.2.1")
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/JCTools/JCTools")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32
"105my29nwd4djvdllmq8s3jdzbyplbkxzwmddxiiilb4yqr1pghb"))))
(build-system ant-build-system)
(arguments
`(#:jar-name "java-jctools-core.jar"
#:source-dir "jctools-core/src/main/java"
#:test-dir "jctools-core/src/test"))
(native-inputs
`(("java-junit" ,java-junit)
("java-hamcrest-all" ,java-hamcrest-all)))
(home-page "https://github.com/JCTools/JCTools")
(synopsis "Concurrency tools for Java")
(description "This library implements concurrent data structures that are
not natively available in Java.")
(license license:asl2.0)))
(define-public java-commons-bcel (define-public java-commons-bcel
(package (package
(name "java-commons-bcel") (name "java-commons-bcel")
@ -12193,15 +12262,79 @@ console output.")
(define-public java-jansi (define-public java-jansi
(package (package
(name "java-jansi") (name "java-jansi")
(version "1.16") (version "2.4.0")
(source (origin (source (origin
(method url-fetch) (method git-fetch)
(uri (string-append "https://github.com/fusesource/jansi/archive/" (uri (git-reference
"jansi-project-" version ".tar.gz")) (url "https://github.com/fusesource/jansi")
(commit (string-append "jansi-" version))))
(file-name (git-file-name name version))
(sha256 (sha256
(base32 (base32
"11kh3144i3fzp21dpy8zg52mjmsr214k7km9p8ly0rqk2px0qq2z")))) "1s6fva06990798b5fyxqzr30zwyj1byq5wrm54j2larcydaryggf"))
(modules '((guix build utils)))
(snippet
;; contains pre-compiled libraries
'(delete-file-recursively
"src/main/resources/org/fusesource/jansi/internal"))))
(build-system ant-build-system) (build-system ant-build-system)
(arguments
`(#:jar-name "jansi.jar"
#:source-dir "src/main/java"
#:test-dir "src/test"
#:tests? #f; require junit 3
#:phases
(modify-phases %standard-phases
(add-before 'build 'build-native
(lambda* (#:key inputs #:allow-other-keys)
(with-directory-excursion "src/main/native"
(for-each
(lambda (cfile)
(let ((cfile (basename cfile))
(ofile (string-append (basename cfile ".c") ".o")))
(invoke ,(cc-for-target) "-c" cfile "-o" ofile
(string-append "-I" (assoc-ref inputs "jdk")
"/include/linux")
"-fPIC" "-O2")))
(find-files "." "\\.c$"))
(apply invoke ,(cc-for-target) "-o" "libjansi.so" "-shared"
(find-files "." "\\.o$")))))
(add-before 'build 'install-native
(lambda _
(let ((dir (string-append "build/classes/org/fusesource/"
"jansi/internal/native/"
,(match (or (%current-target-system) (%current-system))
("i686-linux" "Linux/x86")
("x86_64-linux" "Linux/x86_64")
("armhf-linux" "Linux/armv7")
("aarch64-linux" "Linux/arm64")
("mips64el-linux" "Linux/mips64")
(_ "unknown-kernel")))))
(install-file "src/main/native/libjansi.so" dir))))
(add-before 'build 'copy-resources
(lambda _
(copy-recursively "src/main/resources" "build/classes")))
(replace 'install
(install-from-pom "pom.xml")))))
(home-page "https://fusesource.github.io/jansi/")
(synopsis "Portable ANSI escape sequences")
(description "Jansi is a Java library that allows you to use ANSI escape
sequences to format your console output which works on every platform.")
(license license:asl2.0)))
(define-public java-jansi-1
(package
(inherit java-jansi)
(version "1.16")
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/fusesource/jansi")
(commit (string-append "jansi-project-" version))))
(file-name (git-file-name "jansi" version))
(sha256
(base32
"0ikk0x352gh30b42qn1jd89xwsjj0mavrc5kms7fss15bd8vsayx"))))
(arguments (arguments
`(#:jar-name "jansi.jar" `(#:jar-name "jansi.jar"
#:source-dir "jansi/src/main/java" #:source-dir "jansi/src/main/java"
@ -12232,12 +12365,7 @@ console output.")
`(("java-jansi-native" ,java-jansi-native))) `(("java-jansi-native" ,java-jansi-native)))
(native-inputs (native-inputs
`(("java-junit" ,java-junit) `(("java-junit" ,java-junit)
("java-hamcrest-core" ,java-hamcrest-core))) ("java-hamcrest-core" ,java-hamcrest-core)))))
(home-page "https://fusesource.github.io/jansi/")
(synopsis "Portable ANSI escape sequences")
(description "Jansi is a Java library that allows you to use ANSI escape
sequences to format your console output which works on every platform.")
(license license:asl2.0)))
(define-public java-jboss-el-api-spec (define-public java-jboss-el-api-spec
(package (package
@ -12600,7 +12728,7 @@ features that bring it on par with the Z shell line editor.")
`(#:jdk ,icedtea-8 `(#:jdk ,icedtea-8
,@(package-arguments java-jline))) ,@(package-arguments java-jline)))
(inputs (inputs
`(("java-jansi" ,java-jansi) `(("java-jansi" ,java-jansi-1)
("java-jansi-native" ,java-jansi-native))) ("java-jansi-native" ,java-jansi-native)))
(native-inputs (native-inputs
`(("java-powermock-modules-junit4" ,java-powermock-modules-junit4) `(("java-powermock-modules-junit4" ,java-powermock-modules-junit4)

View file

@ -355,7 +355,7 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
;; The current "stable" kernels. That is, the most recently released major ;; The current "stable" kernels. That is, the most recently released major
;; versions that are still supported upstream. ;; versions that are still supported upstream.
(define-public linux-libre-5.15-version "5.15.6") (define-public linux-libre-5.15-version "5.15.7")
(define-public linux-libre-5.15-gnu-revision "gnu") (define-public linux-libre-5.15-gnu-revision "gnu")
(define deblob-scripts-5.15 (define deblob-scripts-5.15
(linux-libre-deblob-scripts (linux-libre-deblob-scripts
@ -365,7 +365,7 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
(base32 "04fj1x3zmi310cr3m9hxpi26gdcmwfsqciv5yb6q6rrnqjqs1pc0"))) (base32 "04fj1x3zmi310cr3m9hxpi26gdcmwfsqciv5yb6q6rrnqjqs1pc0")))
(define-public linux-libre-5.15-pristine-source (define-public linux-libre-5.15-pristine-source
(let ((version linux-libre-5.15-version) (let ((version linux-libre-5.15-version)
(hash (base32 "1w0plw9rzk2c0g8yxzwj7c6wkq538sy56mx1skmf58wrl83bmsdk"))) (hash (base32 "1caxpqmik6gkhk3437pcgfq6vvlbs962hylgbh64iizd76l5142x")))
(make-linux-libre-source version (make-linux-libre-source version
(%upstream-linux-source version hash) (%upstream-linux-source version hash)
deblob-scripts-5.15))) deblob-scripts-5.15)))
@ -373,7 +373,7 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
;; The "longterm" kernels — the older releases with long-term upstream support. ;; The "longterm" kernels — the older releases with long-term upstream support.
;; Here are the support timelines: ;; Here are the support timelines:
;; <https://www.kernel.org/category/releases.html> ;; <https://www.kernel.org/category/releases.html>
(define-public linux-libre-5.10-version "5.10.83") (define-public linux-libre-5.10-version "5.10.84")
(define-public linux-libre-5.10-gnu-revision "gnu1") (define-public linux-libre-5.10-gnu-revision "gnu1")
(define deblob-scripts-5.10 (define deblob-scripts-5.10
(linux-libre-deblob-scripts (linux-libre-deblob-scripts
@ -383,12 +383,12 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
(base32 "024rz0bp3n3r5nkwbib7byx10d72c2fh5cw9iv00diyzgnp819g7"))) (base32 "024rz0bp3n3r5nkwbib7byx10d72c2fh5cw9iv00diyzgnp819g7")))
(define-public linux-libre-5.10-pristine-source (define-public linux-libre-5.10-pristine-source
(let ((version linux-libre-5.10-version) (let ((version linux-libre-5.10-version)
(hash (base32 "0w4vq8wby3m9f5ryssh6z948m6zj1bjz9x432805dnrxyd1rl9gg"))) (hash (base32 "0g935v0khv0i2qlrwr656hxl28m6zlbclc9rv15nq46xf8fjg5kf")))
(make-linux-libre-source version (make-linux-libre-source version
(%upstream-linux-source version hash) (%upstream-linux-source version hash)
deblob-scripts-5.10))) deblob-scripts-5.10)))
(define-public linux-libre-5.4-version "5.4.163") (define-public linux-libre-5.4-version "5.4.164")
(define-public linux-libre-5.4-gnu-revision "gnu1") (define-public linux-libre-5.4-gnu-revision "gnu1")
(define deblob-scripts-5.4 (define deblob-scripts-5.4
(linux-libre-deblob-scripts (linux-libre-deblob-scripts
@ -398,12 +398,12 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
(base32 "1a0k9i8gnzkyvfr80f8xw2fnxfwddhz1pzicz9fh0y3jzzkzk45p"))) (base32 "1a0k9i8gnzkyvfr80f8xw2fnxfwddhz1pzicz9fh0y3jzzkzk45p")))
(define-public linux-libre-5.4-pristine-source (define-public linux-libre-5.4-pristine-source
(let ((version linux-libre-5.4-version) (let ((version linux-libre-5.4-version)
(hash (base32 "1glh0azkrqdwydvbz9rp3czc5ppb72gq7svl3zbkjc6qfqbzwik2"))) (hash (base32 "0142nic300xjdz9s6w1cp6cyhk2c2wpks9wxzqca6jz4da7k0l9r")))
(make-linux-libre-source version (make-linux-libre-source version
(%upstream-linux-source version hash) (%upstream-linux-source version hash)
deblob-scripts-5.4))) deblob-scripts-5.4)))
(define-public linux-libre-4.19-version "4.19.219") (define-public linux-libre-4.19-version "4.19.220")
(define-public linux-libre-4.19-gnu-revision "gnu1") (define-public linux-libre-4.19-gnu-revision "gnu1")
(define deblob-scripts-4.19 (define deblob-scripts-4.19
(linux-libre-deblob-scripts (linux-libre-deblob-scripts
@ -413,12 +413,12 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
(base32 "1a0k9i8gnzkyvfr80f8xw2fnxfwddhz1pzicz9fh0y3jzzkzk45p"))) (base32 "1a0k9i8gnzkyvfr80f8xw2fnxfwddhz1pzicz9fh0y3jzzkzk45p")))
(define-public linux-libre-4.19-pristine-source (define-public linux-libre-4.19-pristine-source
(let ((version linux-libre-4.19-version) (let ((version linux-libre-4.19-version)
(hash (base32 "1nq9228zm24d8azvv6d6r5iw8lfkb7z5lblyhk137mydzdqwsklg"))) (hash (base32 "0q5hrh6q2f2r97nff136db7367p3hn0la2gl7q4knms3g8fis1jq")))
(make-linux-libre-source version (make-linux-libre-source version
(%upstream-linux-source version hash) (%upstream-linux-source version hash)
deblob-scripts-4.19))) deblob-scripts-4.19)))
(define-public linux-libre-4.14-version "4.14.256") (define-public linux-libre-4.14-version "4.14.257")
(define-public linux-libre-4.14-gnu-revision "gnu1") (define-public linux-libre-4.14-gnu-revision "gnu1")
(define deblob-scripts-4.14 (define deblob-scripts-4.14
(linux-libre-deblob-scripts (linux-libre-deblob-scripts
@ -428,12 +428,12 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
(base32 "1a0k9i8gnzkyvfr80f8xw2fnxfwddhz1pzicz9fh0y3jzzkzk45p"))) (base32 "1a0k9i8gnzkyvfr80f8xw2fnxfwddhz1pzicz9fh0y3jzzkzk45p")))
(define-public linux-libre-4.14-pristine-source (define-public linux-libre-4.14-pristine-source
(let ((version linux-libre-4.14-version) (let ((version linux-libre-4.14-version)
(hash (base32 "180s2zmkfxk7af9nnkmfi2cs56af6vwyd21hjcfdxiygjm7j114p"))) (hash (base32 "0jnw02jphvm9zcviwwymxyhq8kd0bk0v1827ninnv6bdy3140izv")))
(make-linux-libre-source version (make-linux-libre-source version
(%upstream-linux-source version hash) (%upstream-linux-source version hash)
deblob-scripts-4.14))) deblob-scripts-4.14)))
(define-public linux-libre-4.9-version "4.9.291") (define-public linux-libre-4.9-version "4.9.292")
(define-public linux-libre-4.9-gnu-revision "gnu1") (define-public linux-libre-4.9-gnu-revision "gnu1")
(define deblob-scripts-4.9 (define deblob-scripts-4.9
(linux-libre-deblob-scripts (linux-libre-deblob-scripts
@ -443,12 +443,12 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
(base32 "1a0k9i8gnzkyvfr80f8xw2fnxfwddhz1pzicz9fh0y3jzzkzk45p"))) (base32 "1a0k9i8gnzkyvfr80f8xw2fnxfwddhz1pzicz9fh0y3jzzkzk45p")))
(define-public linux-libre-4.9-pristine-source (define-public linux-libre-4.9-pristine-source
(let ((version linux-libre-4.9-version) (let ((version linux-libre-4.9-version)
(hash (base32 "0lwb9mb4s6qnwklygvfsr5ap85k83w1apkbbfdzzacfn9rvpfpdm"))) (hash (base32 "0y3b6qqv6vrh2p5wwv5bicvbqrvxf1y5xm4myy5pk6yp2igws3kd")))
(make-linux-libre-source version (make-linux-libre-source version
(%upstream-linux-source version hash) (%upstream-linux-source version hash)
deblob-scripts-4.9))) deblob-scripts-4.9)))
(define-public linux-libre-4.4-version "4.4.293") (define-public linux-libre-4.4-version "4.4.294")
(define-public linux-libre-4.4-gnu-revision "gnu1") (define-public linux-libre-4.4-gnu-revision "gnu1")
(define deblob-scripts-4.4 (define deblob-scripts-4.4
(linux-libre-deblob-scripts (linux-libre-deblob-scripts
@ -458,7 +458,7 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
(base32 "1a0k9i8gnzkyvfr80f8xw2fnxfwddhz1pzicz9fh0y3jzzkzk45p"))) (base32 "1a0k9i8gnzkyvfr80f8xw2fnxfwddhz1pzicz9fh0y3jzzkzk45p")))
(define-public linux-libre-4.4-pristine-source (define-public linux-libre-4.4-pristine-source
(let ((version linux-libre-4.4-version) (let ((version linux-libre-4.4-version)
(hash (base32 "1z9hc68v8fvph29l2w3md4734hhgp36sy8mzdlkmdrlkjihq6bvd"))) (hash (base32 "0k0h5m1ng2049d5ggrq4q81vgsfmdpkqla73vg2a3bf2v6ycjmc7")))
(make-linux-libre-source version (make-linux-libre-source version
(%upstream-linux-source version hash) (%upstream-linux-source version hash)
deblob-scripts-4.4))) deblob-scripts-4.4)))

View file

@ -93,6 +93,7 @@
#:use-module (gnu packages sdl) #:use-module (gnu packages sdl)
#:use-module (gnu packages serialization) #:use-module (gnu packages serialization)
#:use-module (gnu packages sqlite) #:use-module (gnu packages sqlite)
#:use-module (gnu packages statistics)
#:use-module (gnu packages tcl) #:use-module (gnu packages tcl)
#:use-module (gnu packages tls) #:use-module (gnu packages tls)
#:use-module (gnu packages video) #:use-module (gnu packages video)
@ -2112,7 +2113,7 @@ writing code that contains string literals that contain code themselves.")
(define-public sbcl-slime-swank (define-public sbcl-slime-swank
(package (package
(name "sbcl-slime-swank") (name "sbcl-slime-swank")
(version "2.26") (version "2.26.1")
(source (source
(origin (origin
(file-name (git-file-name "slime-swank" version)) (file-name (git-file-name "slime-swank" version))
@ -2122,7 +2123,7 @@ writing code that contains string literals that contain code themselves.")
(commit (string-append "v" version)))) (commit (string-append "v" version))))
(sha256 (sha256
(base32 (base32
"0mxb1wnw19v0s72w2wkz5afdlzvpy5nn7pr4vav403qybac0sw5c")))) "1a25ixb7q4svqabxnhwkk43v47mbsh13qwm7qlazkd3zkr8j3cli"))))
(build-system asdf-build-system/sbcl) (build-system asdf-build-system/sbcl)
(arguments (arguments
'(#:asd-systems '("swank"))) '(#:asd-systems '("swank")))
@ -2185,7 +2186,7 @@ With the simplistic tools provided, one may accomplish similar effects as with
Literate Programming, but documentation is generated from code, not vice versa Literate Programming, but documentation is generated from code, not vice versa
and there is no support for chunking yet. Code is first, code must look and there is no support for chunking yet. Code is first, code must look
pretty, documentation is code.") pretty, documentation is code.")
(home-page "http://quotenil.com/") (home-page "https://melisgl.github.io/mgl-pax/")
(license license:expat)))) (license license:expat))))
(define-public cl-mgl-pax (define-public cl-mgl-pax
@ -12638,25 +12639,28 @@ XML to Lisp structures or s-expressions and back.")
((#:tests? _ #f) #f)))))) ((#:tests? _ #f) #f))))))
(define-public sbcl-geco (define-public sbcl-geco
(let ((commit "db13c9384491092975f46f6a837ccdc04681a93a")
(revision "1"))
(package (package
(name "sbcl-geco") (name "sbcl-geco")
(version "2.1.1") (version (git-version "2.1.2" revision commit))
(source (source
(origin (origin
(method git-fetch) (method git-fetch)
(uri (git-reference (uri (git-reference
(url "https://github.com/gpwwjr/GECO") (url "https://github.com/gpwwjr/GECO")
(commit (string-append "v" version)))) (commit commit)))
(file-name (git-file-name "geco" version)) (file-name (git-file-name "cl-geco" version))
(sha256 (sha256
(base32 "1rc8a4mk40hjx5qy980hjylv6xxqdbq38hg8c4w30y93abfd519s")))) (base32 "1ncaf9ab7jz59zmga0p97blsjjb1m6db0qih57wipfhqdb5ylz17"))))
(build-system asdf-build-system/sbcl) (build-system asdf-build-system/sbcl)
(home-page "http://hiwaay.net/~gpw/geco/geco.html") (home-page "https://github.com/gpwwjr/GECO")
(synopsis "Genetic algorithm toolkit for Common Lisp") (synopsis "Genetic algorithm toolkit for Common Lisp")
(description (description
"GECO (Genetic Evolution through Combination of Objects) is an extensible, "GECO (Genetic Evolution through Combination of Objects) is an
object-oriented framework for prototyping genetic algorithms in Common Lisp.") extensible, object-oriented framework for prototyping genetic algorithms in
(license license:lgpl2.1+))) Common Lisp.")
(license license:lgpl2.0+))))
(define-public cl-geco (define-public cl-geco
(sbcl-package->cl-source-package sbcl-geco)) (sbcl-package->cl-source-package sbcl-geco))
@ -17890,10 +17894,11 @@ functions allow Lisp programs to explore the web.")
(define-public sbcl-aserve (define-public sbcl-aserve
;; There does not seem to be proper releases. ;; There does not seem to be proper releases.
(let ((commit "cac1d6920998ddcbee8310a873414732e707d8e5")) (let ((commit "cac1d6920998ddcbee8310a873414732e707d8e5")
(revision "2"))
(package (package
(name "sbcl-aserve") (name "sbcl-aserve")
(version (git-version "1.2.50" "1" commit)) (version (git-version "1.2.50" revision commit))
(source (source
(origin (origin
(method git-fetch) (method git-fetch)
@ -17904,7 +17909,14 @@ functions allow Lisp programs to explore the web.")
(commit commit))) (commit commit)))
(file-name (git-file-name "aserve" version)) (file-name (git-file-name "aserve" version))
(sha256 (sha256
(base32 "0ak6mqp84sjr0a7h5svr16vra4bf4fcx6wpir0n88dc1vjwy5xqa")))) (base32 "0ak6mqp84sjr0a7h5svr16vra4bf4fcx6wpir0n88dc1vjwy5xqa"))
(patches (search-patches
;; Add HTML5 elements to htmlgen.
;; Adapted from https://github.com/franzinc/aserve/ commits:
;; * e47bd763: "rfe12668: add HTML 5 elements to htmlgen"
;; * 7371ce59: "fix bugs in rfe12668 implementation"
"sbcl-aserve-add-HTML-5-elements.patch"
"sbcl-aserve-fix-rfe12668.patch"))))
(build-system asdf-build-system/sbcl) (build-system asdf-build-system/sbcl)
(arguments (arguments
`(#:phases `(#:phases
@ -17925,7 +17937,8 @@ functions allow Lisp programs to explore the web.")
#t))))) #t)))))
(inputs (inputs
`(("acl-compat" ,sbcl-acl-compat))) `(("acl-compat" ,sbcl-acl-compat)))
(home-page "https://franz.com/support/documentation/current/doc/aserve/aserve.html") (home-page
"https://franz.com/support/documentation/current/doc/aserve/aserve.html")
(synopsis "AllegroServe, a web server written in Common Lisp") (synopsis "AllegroServe, a web server written in Common Lisp")
(description (description
"The server part of AllegroServe can be used either as a standalone web "The server part of AllegroServe can be used either as a standalone web
@ -19349,6 +19362,225 @@ command in Common Lisp.")
(define-public ecl-which (define-public ecl-which
(sbcl-package->ecl-package sbcl-which)) (sbcl-package->ecl-package sbcl-which))
(define-public sbcl-cl-num-utils
(let ((commit "97a88cd34540acf52e872a82ebfef3da0a34fa12")
(revision "1"))
(package
(name "sbcl-cl-num-utils")
(version (git-version "0.1" revision commit))
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/tpapp/cl-num-utils")
(commit commit)))
(file-name (git-file-name "cl-num-utils" version))
(sha256
(base32 "15ihsxxs76xnldmqfsbxybckqjwrxwcpphgghiwzr2mnbqjpdqkh"))))
(build-system asdf-build-system/sbcl)
(inputs
`(("anaphora" ,sbcl-anaphora)
("alexandria" ,sbcl-alexandria)
("array-operations" ,sbcl-array-operations)
("cl-slice" ,sbcl-cl-slice)
("let-plus" ,sbcl-let-plus)))
(native-inputs
`(("clunit" ,sbcl-clunit)))
(home-page "https://github.com/tpapp/cl-num-utils")
(synopsis "Numerical utilities for Common Lisp")
(description
"@code{cl-num-utils} implements simple numerical functions for Common
Lisp, including:
@itemize
@item @code{num=}, a comparison operator for floats
@item simple arithmeric functions, like @code{sum} and @code{l2norm}
@item elementwise operations for arrays
@item intervals
@item special matrices and shorthand for their input
@item sample statistics
@item Chebyshev polynomials
@item univariate rootfinding
@end itemize")
(license license:boost1.0))))
(define-public cl-num-utils
(sbcl-package->cl-source-package sbcl-cl-num-utils))
(define-public ecl-cl-num-utils
(sbcl-package->ecl-package sbcl-cl-num-utils))
(define-public sbcl-lla
(let ((commit "ded805d1e9b1493e17b601116ba9bd8a3de3024f")
(revision "1"))
(package
(name "sbcl-lla")
(version (git-version "0.2" revision commit))
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/tpapp/lla")
(commit commit)))
(file-name (git-file-name "cl-lla" version))
(sha256
(base32 "0n9vc7dnyjbbsv1n7rd8sylwda5fsdf8f890g4nachanyx0xps9k"))))
(build-system asdf-build-system/sbcl)
(arguments
`(#:phases
(modify-phases %standard-phases
(add-after 'unpack 'fix-paths
(lambda* (#:key inputs #:allow-other-keys)
(substitute* "src/configuration.lisp"
(("\"libblas.so.3gf\"")
(string-append "\"" (assoc-ref inputs "lapack")
"/lib/libblas.so\""))
(("\"liblapack.so.3gf\"")
(string-append "\"" (assoc-ref inputs "lapack")
"/lib/liblapack.so\""))))))))
(inputs
`(("anaphora" ,sbcl-anaphora)
("alexandria" ,sbcl-alexandria)
("cffi" ,sbcl-cffi)
("cl-num-utils" ,sbcl-cl-num-utils)
("cl-slice" ,sbcl-cl-slice)
("lapack" ,lapack)
("let-plus" ,sbcl-let-plus)))
(native-inputs
`(("clunit" ,sbcl-clunit)))
(home-page "https://github.com/tpapp/lla")
(synopsis "Linear algebra library for Common Lisp")
(description
"LLA is a high-level Common Lisp library built on BLAS and LAPACK, but
providing a much more abstract interface with the purpose of freeing the user
from low-level concerns and reducing the number of bugs in numerical code.")
(license license:boost1.0))))
(define-public cl-lla
(sbcl-package->cl-source-package sbcl-lla))
(define-public ecl-lla
(sbcl-package->ecl-package sbcl-lla))
(define-public sbcl-cl-rmath
(let ((commit "f6add1edda31547691d08e36ccf6c17305161aca")
(revision "1"))
(package
(name "sbcl-cl-rmath")
(version (git-version "0.0.1" revision commit))
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/tpapp/cl-rmath")
(commit commit)))
(file-name (git-file-name "cl-rmath" version))
(sha256
(base32 "1ld8vbpy10paymx2hn0mcgd21i7cjhdrayln1jx0kayqxm12mmk4"))))
(build-system asdf-build-system/sbcl)
(arguments
`(#:phases
(modify-phases %standard-phases
(add-after 'unpack 'fix-paths
(lambda* (#:key inputs #:allow-other-keys)
(substitute* "cl-rmath.lisp"
(("\\(cffi:define-foreign-library librmath" all)
(string-append all "\n"
" (:unix \""
(assoc-ref inputs "librmath")
"/lib/libRmath.so\")"))))))))
(inputs
`(("cffi" ,sbcl-cffi)
("librmath" ,rmath-standalone)))
(home-page "https://github.com/tpapp/cl-rmath")
(synopsis "Common Lisp wrapper for libRmath")
(description
"@code{cl-rmath} is a simple, autogenerated foreign interface for the
standalone R API @code{libRmath}. There has been no effort to provide a
high-level interface for the original library, instead, this library is meant
to serve as a building block for such an interface.")
(license license:boost1.0))))
(define-public cl-rmath
(sbcl-package->cl-source-package sbcl-cl-rmath))
(define-public ecl-cl-rmath
(sbcl-package->ecl-package sbcl-cl-rmath))
(define-public sbcl-cl-random
(let ((commit "5bb65911037f95a4260bd29a594a09df3849f4ea")
(revision "1"))
(package
(name "sbcl-cl-random")
(version (git-version "0.0.1" revision commit))
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/tpapp/cl-random")
(commit commit)))
(file-name (git-file-name "cl-random" version))
(sha256
(base32 "0jn80xphyvyp2v72acr6b8a2f6dw06myr5vrjfl14brsvks7wr89"))))
(build-system asdf-build-system/sbcl)
(inputs
`(("alexandria" ,sbcl-alexandria)
("anaphora" ,sbcl-anaphora)
("array-operations" ,sbcl-array-operations)
("cl-num-utils" ,sbcl-cl-num-utils)
("cl-rmath" ,sbcl-cl-rmath)
("cl-slice" ,sbcl-cl-slice)
("gsll" ,sbcl-gsll)
("let-plus" ,sbcl-let-plus)
("lla" ,sbcl-lla)))
(native-inputs
`(("clunit" ,sbcl-clunit)))
(home-page "https://github.com/tpapp/cl-random")
(synopsis "Random variates for Common Lisp")
(description
"@code{cl-random} is a library for generating random draws from various
commonly used distributions, and for calculating statistical functions, such as
density, distribution and quantiles for these distributions.")
(license license:expat))))
(define-public cl-random
(sbcl-package->cl-source-package sbcl-cl-random))
(define-public ecl-cl-random
(sbcl-package->ecl-package sbcl-cl-random))
(define-public sbcl-mgl-gpr
(let ((commit "cb6ce51e2f87bf1d589f3703c13eea6e25780afe")
(revision "1"))
(package
(name "sbcl-mgl-gpr")
(version (git-version "0.0.1" revision commit))
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/melisgl/mgl-gpr")
(commit commit)))
(file-name (git-file-name "cl-mgl-gpr" version))
(sha256
(base32 "0w51dqixh277k6sl8bqvvp1400y6kd1l5h3d9q2f40l9bpxy8gjx"))))
(build-system asdf-build-system/sbcl)
(inputs
`(("cl-random" ,sbcl-cl-random)
("mgl-pax" ,sbcl-mgl-pax)))
(home-page "https://melisgl.github.io/mgl-gpr/")
(synopsis "Common Lisp library of evolutionary algorithms")
(description
"@code{MGL-GPR} is a library of evolutionary algorithms such as
Genetic Programming (evolving typed expressions from a set of operators and
constants) and Differential Evolution.")
(license license:expat))))
(define-public cl-mgl-gpr
(sbcl-package->cl-source-package sbcl-mgl-gpr))
(define-public ecl-mgl-gpr
(sbcl-package->ecl-package sbcl-mgl-gpr))
(define-public sbcl-cl-tld (define-public sbcl-cl-tld
;; No release. ;; No release.
(let ((commit "f5014da8d831fa9481d4181d4450f10a52850c75")) (let ((commit "f5014da8d831fa9481d4181d4450f10a52850c75"))
@ -19768,6 +20000,36 @@ score. When evaluated, the musical score is rendered to an image.")
(define-public ecl-cmn (define-public ecl-cmn
(sbcl-package->ecl-package sbcl-cmn)) (sbcl-package->ecl-package sbcl-cmn))
(define-public sbcl-core-gp
(let ((commit "90ec1c4599a19c5a911be1f703f78d5108aee160")
(revision "1"))
(package
(name "sbcl-core-gp")
(version (git-version "0.1" revision commit))
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/jorgetavares/core-gp")
(commit commit)))
(file-name (git-file-name "cl-core-gp" version))
(sha256
(base32 "0nzlb2gwqisa1amlpl4zc5xxph2g3qwhfyaxchci67d31rzws6l3"))))
(build-system asdf-build-system/sbcl)
(home-page "https://github.com/jorgetavares/core-gp")
(synopsis "Common Lisp library for genetic programming")
(description
"@code{core-gp} is a Common Lisp library for genetic programming (GP)
algorithms. It allows standard GP, strongly-typed GP, grammatical evolution as
well as standard genetic algorithms.")
(license license:expat))))
(define-public cl-core-gp
(sbcl-package->cl-source-package sbcl-core-gp))
(define-public ecl-core-gp
(sbcl-package->ecl-package sbcl-core-gp))
(define-public sbcl-data-sift (define-public sbcl-data-sift
(let ((commit "fd617d8200cdcc1b87ecf45ab59bb38e8b16ef7e") (let ((commit "fd617d8200cdcc1b87ecf45ab59bb38e8b16ef7e")
(revision "1")) (revision "1"))
@ -19854,6 +20116,40 @@ library inspired by @code{cl-data-format-validation} and WTForms validators.")
(define-public ecl-restas (define-public ecl-restas
(sbcl-package->ecl-package sbcl-restas)) (sbcl-package->ecl-package sbcl-restas))
(define-public sbcl-zsort
(let ((commit "f6724a6fff7662a942195cedb0d7f00da59c74ed")
(revision "1"))
(package
(name "sbcl-zsort")
(version (git-version "0.1" revision commit))
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/jorgetavares/zsort")
(commit commit)))
(file-name (git-file-name "cl-zsort" version))
(sha256
(base32 "1vyklyh99712zsll4qi0m4mm8yb1nz04403vl8i57bjv5p5max49"))))
(build-system asdf-build-system/sbcl)
(inputs
`(("alexandria" ,sbcl-alexandria)))
(home-page "https://github.com/jorgetavares/zsort")
(synopsis "Collection of portable sorting algorithms in Common Lisp")
(description
"@code{zsort} is a collection of portable sorting algorithms. Common
Lisp provides the @code{sort} and @code{stable-sort} functions but these can
have different algorithms implemented according to each implementation. Also,
the standard sorting functions might not be the best for a certain situations.
This library aims to provide developers with more options.")
(license license:expat))))
(define-public cl-zsort
(sbcl-package->cl-source-package sbcl-zsort))
(define-public ecl-zsort
(sbcl-package->ecl-package sbcl-zsort))
(define-public sbcl-cl-https-everywhere (define-public sbcl-cl-https-everywhere
;; No release. ;; No release.
;; Don't forget to update the https-everywhere input. ;; Don't forget to update the https-everywhere input.

View file

@ -2656,17 +2656,18 @@ replacement.")
(license license:gpl2+))) (license license:gpl2+)))
(define-public tdlib (define-public tdlib
(let ((commit "34ba9b21f365b8d3bdc36808c2d665ca5cd128f6"))
(package (package
(name "tdlib") (name "tdlib")
(version "1.7.0") (version "1.7.10")
(source (origin (source
(origin
(method git-fetch) (method git-fetch)
(uri (git-reference (uri (git-reference
(url "https://github.com/tdlib/td") (url "https://github.com/tdlib/td")
(commit (string-append "v" version)))) (commit commit)))
(sha256 (sha256
(base32 (base32 "06fbdh1jypz0p1rf6xbpias4kx7xplq9xjd9vz177vwj9icq3wki"))
"0dfir57ljcn98mkg061c5642qb93wh2lm1n4nngpl3na9vvfk75i"))
(file-name (git-file-name name version)))) (file-name (git-file-name name version))))
(build-system cmake-build-system) (build-system cmake-build-system)
(arguments (arguments
@ -2697,7 +2698,7 @@ Telegram clients following the official Telegram API. It can be easily used
from almost any programming language with a C-FFI and features first-class from almost any programming language with a C-FFI and features first-class
support for high performance Telegram Bot creation.") support for high performance Telegram Bot creation.")
(home-page "https://core.telegram.org/tdlib") (home-page "https://core.telegram.org/tdlib")
(license license:boost1.0))) (license license:boost1.0))))
(define-public purple-mm-sms (define-public purple-mm-sms
(package (package

View file

@ -1,36 +1,31 @@
From 865b8c553722a971c68742c2e849e41eb0e2360c Mon Sep 17 00:00:00 2001 From bf95de21faa623e48bca00d6a2c9b33ab2c5d812 Mon Sep 17 00:00:00 2001
From: Zhu Zihao <all_but_last@163.com> From: Andrew Tropin <andrew@trop.in>
Date: Thu, 24 Jun 2021 23:43:50 +0800 Date: Wed, 8 Dec 2021 11:01:31 +0300
Subject: [PATCH] Replace code that search path with placeholder for Subject: [PATCH] Use absolute path for telega-server-command.
configuration.
--- ---
telega-server.el | 6 +----- telega-customize.el | 2 +-
telega-util.el | 2 +- telega-util.el | 2 +-
2 files changed, 2 insertions(+), 6 deletions(-) 2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/telega-server.el b/telega-server.el diff --git a/telega-customize.el b/telega-customize.el
index 999125d..0fa0817 100644 index 0af343f..cc2938c 100644
--- a/telega-server.el --- a/telega-customize.el
+++ b/telega-server.el +++ b/telega-customize.el
@@ -142,11 +142,7 @@ Otherwise query user about building flags." @@ -591,7 +591,7 @@ In range [1..3]. Use 1."
(defun telega-server--find-bin () :prefix "telega-server-"
"Find telega-server executable. :group 'telega)
Raise error if not found."
- (let ((exec-path (cons telega-directory exec-path)))
- (or (executable-find "telega-server")
- (progn (telega-server-build)
- (executable-find "telega-server"))
- (error "`telega-server' not found in exec-path"))))
+ "@TELEGA_SERVER_BIN@")
(defun telega-server-version () -(defcustom telega-server-command "telega-server"
"Return telega-server version." +(defcustom telega-server-command "@TELEGA_SERVER_BIN@"
"Command to run as telega server.
It should be absolute path or binary file searchable in `exec-path'."
:type 'string
diff --git a/telega-util.el b/telega-util.el diff --git a/telega-util.el b/telega-util.el
index 73a46b1..f53e20a 100644 index 6340c27..01e3cb7 100644
--- a/telega-util.el --- a/telega-util.el
+++ b/telega-util.el +++ b/telega-util.el
@@ -464,7 +464,7 @@ N can't be 0." @@ -587,7 +587,7 @@ N can't be 0."
(defun telega-etc-file (filename) (defun telega-etc-file (filename)
"Return absolute path to FILENAME from etc/ directory in telega." "Return absolute path to FILENAME from etc/ directory in telega."
@ -40,5 +35,5 @@ index 73a46b1..f53e20a 100644
(defun telega-link-props (link-type link-to &optional face) (defun telega-link-props (link-type link-to &optional face)
"Generate props for link button openable with `telega-link--button-action'." "Generate props for link button openable with `telega-link--button-action'."
-- --
2.32.0 2.34.0

View file

@ -1,14 +1,24 @@
Test Emacs environment on startup. From 237ea2471bb6521390bbac174ac2a8a5e9683e4d Mon Sep 17 00:00:00 2001
From: Andrew Tropin <andrew@trop.in>
Date: Tue, 7 Dec 2021 16:20:38 +0300
Subject: [PATCH] Test Emacs environment on startup.
Patch by Diego N. Barbato ---
telega.el | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/telega.el 2020-02-07 17:07:18.549970090 +0100 diff --git a/telega.el b/telega.el
+++ b/telega.el 2020-02-07 17:10:08.383499765 +0100 index d6b28b5..40854ec 100644
@@ -82,6 +82,7 @@ --- a/telega.el
"Start telegramming. +++ b/telega.el
If prefix ARG is given, then will not pop to telega root buffer." @@ -181,7 +181,7 @@ can't write to `telega-server-logfile'" logfile-dir)))
Pop to root buffer.
If `\\[universal-argument]' is specified, then do not pop to root buffer."
(interactive "P") (interactive "P")
-
+ (telega-test-env t) + (telega-test-env t)
(telega--create-hier) ;; For multiple accounts setup possibly select (if there is no
;; default account declared) an account to use
(unless (telega-server-live-p) (if (and telega-accounts (not (telega-account-current)))
--
2.34.0

View file

@ -0,0 +1,63 @@
From 940679fb75073a59186099e3dd7fb381e727db6b Mon Sep 17 00:00:00 2001
From: Kevin Layer <layer@franz.com>
Date: Thu, 31 Oct 2013 04:27:29 -0700
Subject: [PATCH 1/2] rfe12668: add HTML 5 elements to htmlgen
Add the new elements listed here:
http://www.w3.org/TR/html5-diff/#new-elements
Change-Id: I7f64363751130644caf90ecdd65c13175d77ae97
---
aserve/htmlgen/htmlgen.cl | 38 ++++++++++++++++++++++++++++++++++++--
1 file changed, 36 insertions(+), 2 deletions(-)
diff --git a/aserve/htmlgen/htmlgen.cl b/aserve/htmlgen/htmlgen.cl
index 59248ef..0c0d6e8 100644
--- a/aserve/htmlgen/htmlgen.cl
+++ b/aserve/htmlgen/htmlgen.cl
@@ -747,6 +747,40 @@
(def-std-html :var t nil)
-(def-std-html :wbr nil nil)
-
(def-std-html :xmp t nil)
+
+;; html 5
+
+(def-std-html :section t nil)
+(def-std-html :article t nil)
+(def-std-html :main t nil)
+(def-std-html :aside t nil)
+(def-std-html :hgroup t nil)
+(def-std-html :header t nil)
+(def-std-html :footer t nil)
+(def-std-html :nav t nil)
+(def-std-html :figure t nil)
+(def-std-html :figcaption t nil)
+
+(def-std-html :video t nil)
+(def-std-html :audio t nil)
+(def-std-html :source t nil)
+(def-std-html :track t nil)
+(def-std-html :embed t nil)
+(def-std-html :mark t nil)
+(def-std-html :progress t nil)
+(def-std-html :meter t nil)
+(def-std-html :time t nil)
+(def-std-html :data t nil)
+(def-std-html :dialog t nil)
+(def-std-html :ruby t nil)
+(def-std-html :rt t nil)
+(def-std-html :rp t nil)
+(def-std-html :bdi t nil)
+(def-std-html :wbr nil nil)
+(def-std-html :canvas t nil)
+(def-std-html :menuitem t nil)
+(def-std-html :details t nil)
+(def-std-html :datalist t nil)
+(def-std-html :keygen t nil)
+(def-std-html :output t nil)
--
2.25.1

View file

@ -0,0 +1,43 @@
From 8110ebd55d5bf659cd40dab2df59d80dafdb367a Mon Sep 17 00:00:00 2001
From: Kevin Layer <layer@franz.com>
Date: Mon, 10 Feb 2014 11:10:42 -0800
Subject: [PATCH 2/2] fix bugs in rfe12668 implementation
The previous commit added :embed and :keygen but they were already
there. Resolve this issue.
Change-Id: Ieb962a12880394e67d973835945005446833fab7
---
aserve/htmlgen/htmlgen.cl | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/aserve/htmlgen/htmlgen.cl b/aserve/htmlgen/htmlgen.cl
index 0c0d6e8..f77d6de 100644
--- a/aserve/htmlgen/htmlgen.cl
+++ b/aserve/htmlgen/htmlgen.cl
@@ -658,7 +658,6 @@
(def-std-html :dt t nil)
(def-std-html :em t nil)
-(def-std-html :embed t nil)
(def-std-html :fieldset t nil)
(def-std-html :font t nil)
@@ -685,7 +684,6 @@
(def-std-html :isindex nil nil)
(def-std-html :kbd t nil)
-(def-std-html :keygen nil nil)
(def-std-html :label t nil)
(def-std-html :layer t nil)
@@ -782,5 +780,5 @@
(def-std-html :menuitem t nil)
(def-std-html :details t nil)
(def-std-html :datalist t nil)
-(def-std-html :keygen t nil)
+(def-std-html :keygen nil nil)
(def-std-html :output t nil)
--
2.25.1

View file

@ -1278,7 +1278,7 @@ python-pypdf2 instead.")
(define-public pdfarranger (define-public pdfarranger
(package (package
(name "pdfarranger") (name "pdfarranger")
(version "1.8.0") (version "1.8.1")
(source (source
(origin (origin
(method git-fetch) (method git-fetch)
@ -1287,7 +1287,7 @@ python-pypdf2 instead.")
(commit version))) (commit version)))
(file-name (git-file-name name version)) (file-name (git-file-name name version))
(sha256 (sha256
(base32 "0xfxcwb24rp0kni2b4wdk6fvhqnhd6fh559ag6wdr4sspzkqwdjf")))) (base32 "1lcmlr7x4143f7wcn0m1ijlvch07nww2qfp3jfnacgy889ijvbfx"))))
(build-system python-build-system) (build-system python-build-system)
(arguments (arguments
'(#:tests? #f ;no tests '(#:tests? #f ;no tests

View file

@ -228,25 +228,44 @@ result documents that can be read by tools such as Jenkins or Bamboo.")
(define-public python-vcrpy (define-public python-vcrpy
(package (package
(name "python-vcrpy") (name "python-vcrpy")
(version "2.0.1") (version "4.1.1")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (pypi-uri "vcrpy" version)) (uri (pypi-uri "vcrpy" version))
(sha256 (sha256
(base32 (base32 "16gmzxs3lzbgf1828n0q61vbmwyhpvzdlk37x6gdk8n05zr5n2ap"))))
"0kws7l3hci1dvjv01nxw3805q9v2mwldw58bgl8s90wqism69gjp"))))
(build-system python-build-system) (build-system python-build-system)
(arguments `(#:tests? #f)) ; tests require more packages for python-pytest-httpbin (arguments
`(#:phases
(modify-phases %standard-phases
(replace 'check
(lambda* (#:key tests? outputs #:allow-other-keys)
(when tests?
(substitute* "tox.ini"
(("AWS_ACCESS_KEY_ID") "PYTHONPATH"))
(setenv "PYTHONPATH" (string-append ".:" (getenv "PYTHONPATH")))
;; These tests require network access.
(delete-file "tests/unit/test_stubs.py")
(invoke "pytest" "tests/unit")))))))
(propagated-inputs (propagated-inputs
`(("python-pyyaml" ,python-pyyaml) `(("python-pyyaml" ,python-pyyaml)
("python-six" ,python-six) ("python-six" ,python-six)
("python-wrapt" ,python-wrapt) ("python-wrapt" ,python-wrapt)
("python-yarl" ,python-yarl))) ("python-yarl" ,python-yarl)))
(native-inputs (native-inputs
`(("python-mock" ,python-mock) `(("python-black" ,python-black)
("python-coverage" ,python-coverage)
("python-flake8" ,python-flake8)
("python-flask" ,python-flask)
("python-httplib2" ,python-httplib2)
("python-ipaddress" ,python-ipaddress)
("python-mock" ,python-mock)
("python-pytest" ,python-pytest) ("python-pytest" ,python-pytest)
("python-pytest-httpbin" ,python-pytest-httpbin))) ("python-pytest-cov" ,python-pytest-cov)
("python-pytest-httpbin" ,python-pytest-httpbin)
("python-tox" ,python-tox)
("python-urllib3" ,python-urllib3)))
(home-page "https://github.com/kevin1024/vcrpy") (home-page "https://github.com/kevin1024/vcrpy")
(synopsis "Automatically mock your HTTP interactions") (synopsis "Automatically mock your HTTP interactions")
(description (description

View file

@ -396,13 +396,13 @@ WSGI. This package includes libraries for implementing ASGI servers.")
(define-public python-aws-sam-translator (define-public python-aws-sam-translator
(package (package
(name "python-aws-sam-translator") (name "python-aws-sam-translator")
(version "1.38.0") (version "1.40.0")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (pypi-uri "aws-sam-translator" version)) (uri (pypi-uri "aws-sam-translator" version))
(sha256 (sha256
(base32 (base32
"1djwlsjpbh13m4biglimrm9lq7hmla0k29giay7k3cjsrylxvjhf")))) "1hq5ggbzcq4k3ks439hki493w4sasgaxns6j5x57xsj822acalmf"))))
(build-system python-build-system) (build-system python-build-system)
(arguments (arguments
`(;; XXX: Tests are not distributed with the PyPI archive, and would `(;; XXX: Tests are not distributed with the PyPI archive, and would
@ -415,13 +415,12 @@ WSGI. This package includes libraries for implementing ASGI servers.")
;; of dependencies, when it works fine with others. ;; of dependencies, when it works fine with others.
(substitute* "requirements/base.txt" (substitute* "requirements/base.txt"
(("(.*)(~=[0-9\\.]+)" all package version) (("(.*)(~=[0-9\\.]+)" all package version)
package)) package)))))))
#t)))))
(propagated-inputs (propagated-inputs
`(("python-boto3" ,python-boto3) `(("python-boto3" ,python-boto3)
("python-jsonschema" ,python-jsonschema) ("python-jsonschema" ,python-jsonschema)
("python-six" ,python-six))) ("python-six" ,python-six)))
(home-page "https://github.com/awslabs/serverless-application-model") (home-page "https://github.com/aws/serverless-application-model")
(synopsis "Transform AWS SAM templates into AWS CloudFormation templates") (synopsis "Transform AWS SAM templates into AWS CloudFormation templates")
(description (description
"AWS SAM Translator is a library that transform @dfn{Serverless Application "AWS SAM Translator is a library that transform @dfn{Serverless Application
@ -496,8 +495,8 @@ emit information from within their applications to the AWS X-Ray service.")
(define-public python-cfn-lint (define-public python-cfn-lint
(package (package
(name "python-cfn-lint") (name "python-cfn-lint")
(version "0.54.1") (version "0.54.3")
(home-page "https://github.com/aws-cloudformation/cfn-python-lint") (home-page "https://github.com/aws-cloudformation/cfn-lint")
(source (origin (source (origin
(method git-fetch) (method git-fetch)
(uri (git-reference (uri (git-reference
@ -506,12 +505,14 @@ emit information from within their applications to the AWS X-Ray service.")
(file-name (git-file-name name version)) (file-name (git-file-name name version))
(sha256 (sha256
(base32 (base32
"161mzzlpbi85q43kwzrj39qb32l6wg6xhnbbd4z860yrfbymsn87")))) "106qf19n2k6sdjkb4006aidibd24qqiw901c1613xgjpnyw4dyl6"))))
(build-system python-build-system) (build-system python-build-system)
(arguments (arguments
`(#:phases (modify-phases %standard-phases `(#:phases
(modify-phases %standard-phases
(replace 'check (replace 'check
(lambda* (#:key outputs #:allow-other-keys) (lambda* (#:key inputs outputs tests? #:allow-other-keys)
(when tests?
(let ((out (assoc-ref outputs "out"))) (let ((out (assoc-ref outputs "out")))
;; Remove test for the documentation update scripts ;; Remove test for the documentation update scripts
;; to avoid a dependency on 'git'. ;; to avoid a dependency on 'git'.
@ -519,8 +520,11 @@ emit information from within their applications to the AWS X-Ray service.")
"test/unit/module/maintenance/test_update_documentation.py") "test/unit/module/maintenance/test_update_documentation.py")
(delete-file (delete-file
"test/unit/module/maintenance/test_update_resource_specs.py") "test/unit/module/maintenance/test_update_resource_specs.py")
(invoke "python" "-m" "unittest" "discover" "-v" (add-installed-pythonpath inputs outputs)
"-s" "test"))))))) (setenv "PATH" (string-append out "/bin:"
(getenv "PATH")))
(invoke "python" "-m" "unittest" "discover"
"-s" "test"))))))))
(native-inputs (native-inputs
`(("python-pydot" ,python-pydot) `(("python-pydot" ,python-pydot)
("python-mock" ,python-mock))) ("python-mock" ,python-mock)))
@ -2838,14 +2842,14 @@ supports url redirection and retries, and also gzip and deflate decoding.")
(package (package
;; Note: updating awscli typically requires updating botocore as well. ;; Note: updating awscli typically requires updating botocore as well.
(name "awscli") (name "awscli")
(version "1.20.64") (version "1.21.11")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (pypi-uri name version)) (uri (pypi-uri name version))
(sha256 (sha256
(base32 (base32
"0pl88y70rgwfprgv5gqkc2fcbasc9d0qyffl98l82bsc24d4c8b9")))) "0fkivwbx4nind5b7l4jhqm5bb9drgqsclcslrg4aggf9rcs4g4s0"))))
(build-system python-build-system) (build-system python-build-system)
(arguments (arguments
;; FIXME: The 'pypi' release does not contain tests. ;; FIXME: The 'pypi' release does not contain tests.
@ -3384,10 +3388,11 @@ Betamax that may possibly end up in the main package.")
`(#:phases `(#:phases
(modify-phases %standard-phases (modify-phases %standard-phases
(replace 'check (replace 'check
(lambda _ (lambda* (#:key tests? #:allow-other-keys)
(when tests?
;; Some of the 'integration' tests require network access or ;; Some of the 'integration' tests require network access or
;; login credentials. ;; login credentials.
(invoke "nosetests" "--exclude=integration")))))) (invoke "nosetests" "--exclude=integration")))))))
(native-inputs (native-inputs
`(("python-docutils" ,python-docutils) `(("python-docutils" ,python-docutils)
("python-mock" ,python-mock) ("python-mock" ,python-mock)

View file

@ -11416,9 +11416,9 @@ implementations of ASN.1-based codecs and protocols.")
(define-public python2-pyasn1-modules (define-public python2-pyasn1-modules
(package-with-python2 python-pyasn1-modules)) (package-with-python2 python-pyasn1-modules))
(define-public python2-ipaddress (define-public python-ipaddress
(package (package
(name "python2-ipaddress") (name "python-ipaddress")
(version "1.0.23") (version "1.0.23")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
@ -11427,17 +11427,17 @@ implementations of ASN.1-based codecs and protocols.")
(base32 (base32
"1qp743h30s04m3cg3yk3fycad930jv17q7dsslj4mfw0jlvf1y5p")))) "1qp743h30s04m3cg3yk3fycad930jv17q7dsslj4mfw0jlvf1y5p"))))
(build-system python-build-system) (build-system python-build-system)
(arguments
`(#:python ,python-2))
(home-page "https://github.com/phihag/ipaddress") (home-page "https://github.com/phihag/ipaddress")
(synopsis "IP address manipulation library") (synopsis "IP address manipulation library")
(description (description
"This package provides a fast, lightweight IPv4/IPv6 manipulation library "This package provides a fast, lightweight IPv4/IPv6 manipulation library
in Python. This library is used to create, poke at, and manipulate IPv4 and in Python. This library is used to create, poke at, and manipulate IPv4 and
IPv6 addresses and networks. This is a port of the Python 3.3 ipaddress IPv6 addresses and networks.")
module to older versions of Python.")
(license license:psfl))) (license license:psfl)))
(define-public python2-ipaddress
(package-with-python2 python-ipaddress))
(define-public python-asn1tools (define-public python-asn1tools
(package (package
(name "python-asn1tools") (name "python-asn1tools")
@ -13385,32 +13385,40 @@ text.")
(define-public python-moto (define-public python-moto
(package (package
(name "python-moto") (name "python-moto")
;; XXX: Use a pre-release for compatibility with latest botocore & friends. (version "2.2.12")
(version "1.3.16.dev134")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (pypi-uri "moto" version)) (uri (pypi-uri "moto" version))
(sha256 (sha256
(base32 (base32
"1pix0c7zszjwzfy88n1rpih9vkdm25nqcvz93z850xvgwb4v81bd")))) "0pvay0jp119lzzwf5qj5h6311271yq0w2i6344ds20grpf6g6gz8"))))
(build-system python-build-system) (build-system python-build-system)
(arguments (arguments
`(#:phases (modify-phases %standard-phases `(#:phases
(modify-phases %standard-phases
(add-after 'unpack 'patch-hardcoded-executable-names (add-after 'unpack 'patch-hardcoded-executable-names
(lambda _ (lambda* (#:key inputs #:allow-other-keys)
(let ((bash-exec (search-input-file inputs "/bin/sh")))
(substitute* "moto/batch/models.py" (substitute* "moto/batch/models.py"
(("/bin/sh") (("/bin/sh") bash-exec))
(which "sh")))
(substitute* (find-files "tests" "\\.py$") (substitute* (find-files "tests" "\\.py$")
(("#!/bin/bash") (("#!/bin/bash") (string-append "#!" bash-exec))))))
(string-append "#!" (which "bash"))))
#t))
(replace 'check (replace 'check
(lambda _ (lambda* (#:key inputs outputs tests? #:allow-other-keys)
(invoke "pytest" "-vv" "-m" "not network" (when tests?
(add-installed-pythonpath inputs outputs)
(invoke "pytest" "-vv" "-m" "not network" "-k"
(string-append
;; These tests require Docker. ;; These tests require Docker.
"-k" "not test_terminate_job \ "not test_terminate_job"
and not test_invoke_function_from_sqs_exception")))))) " and not test_invoke_function_from_sqs_exception"
" and not test_rotate_secret_lambda_invocations"
;; These tests also require the network.
" and not test_put_record_batch_http_destination"
" and not test_put_record_http_destination"
" and not test_dependencies"
" and not test_cancel_running_job"
" and not test_container_overrides"))))))))
(native-inputs (native-inputs
`(("python-flask" ,python-flask) `(("python-flask" ,python-flask)
("python-flask-cors" ,python-flask-cors) ("python-flask-cors" ,python-flask-cors)
@ -13418,6 +13426,8 @@ and not test_invoke_function_from_sqs_exception"))))))
("python-parameterized" ,python-parameterized) ("python-parameterized" ,python-parameterized)
("python-pytest" ,python-pytest) ("python-pytest" ,python-pytest)
("python-sure" ,python-sure))) ("python-sure" ,python-sure)))
(inputs
`(("bash" ,bash-minimal)))
(propagated-inputs (propagated-inputs
`(("python-aws-xray-sdk" ,python-aws-xray-sdk) `(("python-aws-xray-sdk" ,python-aws-xray-sdk)
("python-boto" ,python-boto) ("python-boto" ,python-boto)
@ -13761,14 +13771,14 @@ This software is unmaintained, and new projects should use @code{boto3} instead.
;; are compatible. ;; are compatible.
(package (package
(name "python-botocore") (name "python-botocore")
(version "1.21.64") (version "1.22.11")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (pypi-uri "botocore" version)) (uri (pypi-uri "botocore" version))
(sha256 (sha256
(base32 (base32
"0z8cdv3lyr8vw452zqm1r8k4gz4sbzlsqwg6avc3zm6pvajdqc0a")))) "1z7g2scyzvfq4yj9b4w911k7802ry1v6lqfnwq12l0ak7ywmsvrh"))))
(build-system python-build-system) (build-system python-build-system)
(arguments (arguments
;; FIXME: Many tests are failing. ;; FIXME: Many tests are failing.
@ -13789,7 +13799,7 @@ interface to the Amazon Web Services (AWS) API.")
(define-public python-boto3 (define-public python-boto3
(package (package
(name "python-boto3") (name "python-boto3")
(version "1.18.64") (version "1.19.11")
(home-page "https://github.com/boto/boto3") (home-page "https://github.com/boto/boto3")
(source (origin (source (origin
(method git-fetch) (method git-fetch)
@ -13797,7 +13807,7 @@ interface to the Amazon Web Services (AWS) API.")
(file-name (git-file-name name version)) (file-name (git-file-name name version))
(sha256 (sha256
(base32 (base32
"02hy80xfyxln5yr43cbrmq3kpkdijv8v228alz1x92y4gghnb8cj")))) "1wv0ci2z5ywvm63dh4mp64vqyyvkm4qxc8dxv8ncrqiiphpgr9aq"))))
(arguments (arguments
`(#:phases `(#:phases
(modify-phases %standard-phases (modify-phases %standard-phases

View file

@ -39,16 +39,22 @@
#:use-module (guix utils) #:use-module (guix utils)
#:use-module (gnu packages) #:use-module (gnu packages)
#:use-module (gnu packages admin) #:use-module (gnu packages admin)
#:use-module (gnu packages base)
#:use-module (gnu packages bash)
#:use-module (gnu packages compression) #:use-module (gnu packages compression)
#:use-module (gnu packages crates-io) #:use-module (gnu packages crates-io)
#:use-module (gnu packages crates-graphics) #:use-module (gnu packages crates-graphics)
#:use-module (gnu packages curl) #:use-module (gnu packages curl)
#:use-module (gnu packages documentation) #:use-module (gnu packages documentation)
#:use-module (gnu packages fontutils) #:use-module (gnu packages fontutils)
#:use-module (gnu packages freedesktop)
#:use-module (gnu packages glib) #:use-module (gnu packages glib)
#:use-module (gnu packages gtk) #:use-module (gnu packages gtk)
#:use-module (gnu packages ibus)
#:use-module (gnu packages jemalloc) #:use-module (gnu packages jemalloc)
#:use-module (gnu packages kde)
#:use-module (gnu packages linux) #:use-module (gnu packages linux)
#:use-module (gnu packages networking)
#:use-module (gnu packages ssh) #:use-module (gnu packages ssh)
#:use-module (gnu packages pcre) #:use-module (gnu packages pcre)
#:use-module (gnu packages pkg-config) #:use-module (gnu packages pkg-config)
@ -56,7 +62,8 @@
#:use-module (gnu packages python-xyz) #:use-module (gnu packages python-xyz)
#:use-module (gnu packages rust) #:use-module (gnu packages rust)
#:use-module (gnu packages tls) #:use-module (gnu packages tls)
#:use-module (gnu packages version-control)) #:use-module (gnu packages version-control)
#:use-module (gnu packages xorg))
(define-public agate (define-public agate
(package (package
@ -536,14 +543,6 @@ characters, ASCII whitespace characters, other ASCII characters and non-ASCII.")
(sha256 (sha256
(base32 "00gzm3g297s9bfp13vnb623p7dfac3g6cdhz2b3lc6l0kmnnqs1s")))) (base32 "00gzm3g297s9bfp13vnb623p7dfac3g6cdhz2b3lc6l0kmnnqs1s"))))
(build-system cargo-build-system) (build-system cargo-build-system)
(native-inputs
`(("pkg-config" ,pkg-config)))
(inputs
`(("curl" ,curl)
("dbus" ,dbus)
("pulseaudio" ,pulseaudio)
("openssl" ,openssl)
("zlib" ,zlib)))
(arguments (arguments
`(#:features '("pulseaudio" "libpulse-binding") `(#:features '("pulseaudio" "libpulse-binding")
#:install-source? #f #:install-source? #f
@ -573,6 +572,9 @@ characters, ASCII whitespace characters, other ASCII characters and non-ASCII.")
(("rust-assert-fs" ,rust-assert-fs-1)) (("rust-assert-fs" ,rust-assert-fs-1))
#:phases #:phases
(modify-phases %standard-phases (modify-phases %standard-phases
(add-after 'unpack 'enable-unstable-features
(lambda _
(setenv "RUSTC_BOOTSTRAP" "1")))
(add-after 'unpack 'fix-resources-path (add-after 'unpack 'fix-resources-path
(lambda* (#:key outputs #:allow-other-keys) (lambda* (#:key outputs #:allow-other-keys)
(let ((resources (string-append %output "/share"))) (let ((resources (string-append %output "/share")))
@ -581,10 +583,38 @@ characters, ASCII whitespace characters, other ASCII characters and non-ASCII.")
(add-after 'install 'install-resources (add-after 'install 'install-resources
(lambda* (#:key outputs #:allow-other-keys) (lambda* (#:key outputs #:allow-other-keys)
(copy-recursively "files" (string-append %output "/share")))) (copy-recursively "files" (string-append %output "/share"))))
(add-after 'unpack 'enable-unstable-features (add-after 'install 'wrap-i3status
(lambda _ (lambda* (#:key outputs inputs #:allow-other-keys)
(setenv "RUSTC_BOOTSTRAP" "1") (let ((out (assoc-ref outputs "out"))
#t))))) (paths (map
(lambda (input)
(string-append (assoc-ref inputs input) "/bin"))
'("alsa-utils" "coreutils" "curl" "dbus" "ibus" "iproute"
"kdeconnect" "lm-sensors" "pulseaudio"
"openssl"
"setxkbmap" "speedtest-cli" "xdg-utils" "xrandr"
"zlib"))))
(wrap-program (string-append out "/bin/i3status-rs")
`("PATH" prefix ,paths))))))))
(native-inputs
`(("pkg-config" ,pkg-config)))
(inputs
`(("alsa-utils" ,alsa-utils)
("bash-minimal" ,bash-minimal)
("coreutils" ,coreutils)
("curl" ,curl)
("dbus" ,dbus)
("ibus" ,ibus)
("iproute" ,iproute)
("kdeconnect" ,kdeconnect)
("lm-sensors" ,lm-sensors)
("pulseaudio" ,pulseaudio)
("openssl" ,openssl)
("setxkbmap" ,setxkbmap)
("speedtest-cli" ,speedtest-cli)
("xdg-utils" ,xdg-utils)
("xrandr" ,xrandr)
("zlib" ,zlib)))
(home-page "https://github.com/greshake/i3status-rust") (home-page "https://github.com/greshake/i3status-rust")
(synopsis "i3status, written in pure Rust") (synopsis "i3status, written in pure Rust")
(description "@code{i3status-rs} is a feature-rich and resource-friendly (description "@code{i3status-rs} is a feature-rich and resource-friendly
@ -1051,6 +1081,41 @@ show number of files, total lines within those files and code, comments, and
blanks grouped by language.") blanks grouped by language.")
(license (list license:expat license:asl2.0)))) (license (list license:expat license:asl2.0))))
(define-public vivid
(package
(name "vivid")
(version "0.7.0")
(source
(origin
(method url-fetch)
(uri (crate-uri "vivid" version))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32 "01fds6dm19bqgqydaa6n051v9l4wh9rb5d6sr9akwp2cc0fs43b7"))))
(build-system cargo-build-system)
(arguments
`(#:cargo-inputs
(("rust-ansi-colours" ,rust-ansi-colours-1)
("rust-clap" ,rust-clap-2)
("rust-dirs" ,rust-dirs-3)
("rust-lazy-static" ,rust-lazy-static-1)
("rust-rust-embed" ,rust-rust-embed-5)
("rust-yaml-rust" ,rust-yaml-rust-0.4))))
(home-page "https://github.com/sharkdp/vivid")
(synopsis "LS_COLORS environment variable manager")
(description
"vivid is a generator for the @code{LS_COLORS} environment variable that
controls the colorized output of ls, tree, fd, bfs, dust and many other tools.
It uses a YAML configuration format for the filetype-database and the color
themes. In contrast to @command{dircolors}, the database and the themes are
organized in different files. This allows users to choose and customize color
themes independent from the collection of file extensions. Instead of using
cryptic ANSI escape codes, colors can be specified in the RRGGBB format and
will be translated to either truecolor (24-bit) ANSI codes or 8-bit codes for
older terminal emulators.")
(license (list license:expat license:asl2.0))))
(define-public watchexec (define-public watchexec
(package (package
(name "watchexec") (name "watchexec")

View file

@ -16,6 +16,7 @@
;;; Copyright © 2020 Edouard Klein <edk@beaver-labs.com> ;;; Copyright © 2020 Edouard Klein <edk@beaver-labs.com>
;;; Copyright © 2021 Philip McGrath <philip@philipmcgrath.com> ;;; Copyright © 2021 Philip McGrath <philip@philipmcgrath.com>
;;; Copyright © 2021 Guillaume Le Vaillant <glv@posteo.net> ;;; Copyright © 2021 Guillaume Le Vaillant <glv@posteo.net>
;;; Copyright © 2021 Foo Chuan Wei <chuanwei.foo@hotmail.com>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -36,7 +37,7 @@
#:use-module (gnu packages) #:use-module (gnu packages)
#:use-module ((guix licenses) #:use-module ((guix licenses)
#:select (gpl2+ lgpl2.0+ lgpl2.1 lgpl2.1+ lgpl3+ asl2.0 bsd-3 #:select (gpl2+ lgpl2.0+ lgpl2.1 lgpl2.1+ lgpl3+ asl2.0 bsd-3
cc-by-sa4.0 non-copyleft expat)) cc-by-sa4.0 non-copyleft expat public-domain))
#:use-module (guix packages) #:use-module (guix packages)
#:use-module (guix download) #:use-module (guix download)
#:use-module (guix git-download) #:use-module (guix git-download)
@ -792,6 +793,45 @@ program-point-specific low-level representation selection and code
generation.") generation.")
(license gpl2+)))) (license gpl2+))))
(define-public s9fes
(package
(name "s9fes")
(version "20181205")
(source
(origin
(method url-fetch)
(uri (string-append "https://www.t3x.org/s9fes/s9fes-" version ".tgz"))
(sha256
(base32 "0ynpl707bc9drwkdpdgvw14bz9zmwd3wffl1k02sxppjl28xm7rf"))))
(build-system gnu-build-system)
(arguments
`(#:make-flags
(list (string-append "CC=" ,(cc-for-target))
(string-append "PREFIX=" %output))
#:phases
(modify-phases %standard-phases
(replace 'install
(lambda* (#:key make-flags #:allow-other-keys)
(apply invoke "make" "install-all" make-flags))))
#:tests? #f)) ; No check target.
(inputs
`(("ncurses" ,ncurses)))
(home-page "https://www.t3x.org/s9fes/")
(synopsis "Interpreter for R4RS Scheme")
(description
"Scheme 9 from Empty Space (S9fES) is a mature, portable, and
comprehensible public-domain interpreter for R4RS Scheme offering:
@itemize
@item bignum arithmetics
@item decimal-based real number arithmetics
@item support for low-level Unix programming
@item cursor addressing with Curses
@item basic networking procedures
@item an integrated online help system
@item loads of useful library functions
@end itemize")
(license public-domain)))
(define-public femtolisp (define-public femtolisp
(let ((commit "ec7601076a976f845bc05ad6bd3ed5b8cde58a97") (let ((commit "ec7601076a976f845bc05ad6bd3ed5b8cde58a97")
(revision "2")) (revision "2"))

View file

@ -3,7 +3,7 @@
;;; Copyright © 2014 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2015, 2017 Sou Bunnbu <iyzsong@member.fsf.org> ;;; Copyright © 2015, 2017 Sou Bunnbu <iyzsong@member.fsf.org>
;;; Copyright © 2015 Alex Kost <alezost@gmail.com> ;;; Copyright © 2015 Alex Kost <alezost@gmail.com>
;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2016, 2017, 2021 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2017, 2018, 2019 Rutger Helling <rhelling@mykolab.com> ;;; Copyright © 2017, 2018, 2019 Rutger Helling <rhelling@mykolab.com>
;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2018, 2019, 2020 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2018, 2019, 2020 Ricardo Wurmus <rekado@elephly.net>
@ -34,7 +34,7 @@
#:use-module (srfi srfi-1) #:use-module (srfi srfi-1)
#:use-module (srfi srfi-26) #:use-module (srfi srfi-26)
#:use-module (gnu packages) #:use-module (gnu packages)
#:use-module ((guix licenses) #:hide (freetype)) #:use-module ((guix licenses) #:prefix license:)
#:use-module (guix packages) #:use-module (guix packages)
#:use-module (guix download) #:use-module (guix download)
#:use-module (guix git-download) #:use-module (guix git-download)
@ -43,6 +43,7 @@
#:use-module (guix build-system trivial) #:use-module (guix build-system trivial)
#:use-module (gnu packages audio) #:use-module (gnu packages audio)
#:use-module (gnu packages autotools) #:use-module (gnu packages autotools)
#:use-module (gnu packages compression)
#:use-module (gnu packages fcitx) #:use-module (gnu packages fcitx)
#:use-module (gnu packages fontutils) #:use-module (gnu packages fontutils)
#:use-module (gnu packages freedesktop) #:use-module (gnu packages freedesktop)
@ -110,7 +111,7 @@
library designed to provide low level access to audio, keyboard, mouse, library designed to provide low level access to audio, keyboard, mouse,
joystick, and graphics hardware.") joystick, and graphics hardware.")
(home-page "https://libsdl.org/") (home-page "https://libsdl.org/")
(license lgpl2.1))) (license license:lgpl2.1)))
(define-public sdl2 (define-public sdl2
(package (inherit sdl) (package (inherit sdl)
@ -153,7 +154,7 @@ joystick, and graphics hardware.")
("wayland" ,wayland) ("wayland" ,wayland)
("wayland-protocols" ,wayland-protocols)) ("wayland-protocols" ,wayland-protocols))
(package-inputs sdl))) (package-inputs sdl)))
(license bsd-3))) (license license:bsd-3)))
(define-public libmikmod (define-public libmikmod
(package (package
@ -182,7 +183,7 @@ joystick, and graphics hardware.")
"MikMod is able to play a wide range of module formats, as well as "MikMod is able to play a wide range of module formats, as well as
digital sound files. It can take advantage of particular features of your digital sound files. It can take advantage of particular features of your
system, such as sound redirection over the network.") system, such as sound redirection over the network.")
(license lgpl2.1) (license license:lgpl2.1)
(home-page "http://mikmod.sourceforge.net/"))) (home-page "http://mikmod.sourceforge.net/")))
(define-public sdl-gfx (define-public sdl-gfx
@ -211,7 +212,7 @@ system, such as sound redirection over the network.")
(description "SDL_gfx provides graphics drawing primitives, rotozoom and (description "SDL_gfx provides graphics drawing primitives, rotozoom and
other supporting functions for SDL.") other supporting functions for SDL.")
(home-page "http://www.ferzkopp.net/joomla/software-mainmenu-14/4-ferzkopps-linux-software/19-sdlgfx") (home-page "http://www.ferzkopp.net/joomla/software-mainmenu-14/4-ferzkopps-linux-software/19-sdlgfx")
(license zlib))) (license license:zlib)))
(define-public sdl-image (define-public sdl-image
(package (package
@ -248,7 +249,7 @@ other supporting functions for SDL.")
supports the following formats: BMP, GIF, JPEG, LBM, PCX, PNG, PNM, TGA, TIFF, supports the following formats: BMP, GIF, JPEG, LBM, PCX, PNG, PNM, TGA, TIFF,
WEBP, XCF, XPM, and XV.") WEBP, XCF, XPM, and XV.")
(home-page "https://www.libsdl.org/projects/SDL_image/") (home-page "https://www.libsdl.org/projects/SDL_image/")
(license zlib))) (license license:zlib)))
(define-public sdl-mixer (define-public sdl-mixer
(package (package
@ -303,7 +304,7 @@ and specify it using the @code{SDL_SOUNDFONTS} environment variable. For the
legacy @code{timidity} backend, install a patch set such as @code{freepats} legacy @code{timidity} backend, install a patch set such as @code{freepats}
and set the path to the configuration file with @code{TIMIDITY_CFG}.") and set the path to the configuration file with @code{TIMIDITY_CFG}.")
(home-page "https://www.libsdl.org/projects/SDL_mixer/") (home-page "https://www.libsdl.org/projects/SDL_mixer/")
(license zlib))) (license license:zlib)))
(define-public sdl-net (define-public sdl-net
(package (package
@ -325,7 +326,7 @@ and set the path to the configuration file with @code{TIMIDITY_CFG}.")
(description "SDL_net is a small, cross-platform networking library for (description "SDL_net is a small, cross-platform networking library for
SDL.") SDL.")
(home-page "https://www.libsdl.org/projects/SDL_net/") (home-page "https://www.libsdl.org/projects/SDL_net/")
(license zlib))) (license license:zlib)))
(define-public sdl-pango (define-public sdl-pango
(package (package
@ -371,7 +372,7 @@ SDL.")
(description "This library is a wrapper around the Pango library. (description "This library is a wrapper around the Pango library.
It allows you to use TrueType fonts to render internationalized and It allows you to use TrueType fonts to render internationalized and
tagged text in SDL applications.") tagged text in SDL applications.")
(license lgpl2.1))) (license license:lgpl2.1)))
(define-public sdl-ttf (define-public sdl-ttf
(package (package
@ -400,7 +401,7 @@ tagged text in SDL applications.")
(synopsis "SDL TrueType font library") (synopsis "SDL TrueType font library")
(description "SDL_ttf is a TrueType font rendering library for SDL.") (description "SDL_ttf is a TrueType font rendering library for SDL.")
(home-page "https://www.libsdl.org/projects/SDL_ttf/") (home-page "https://www.libsdl.org/projects/SDL_ttf/")
(license zlib))) (license license:zlib)))
(define* (sdl-union #:optional (packages (list sdl sdl-gfx sdl-net sdl-ttf (define* (sdl-union #:optional (packages (list sdl sdl-gfx sdl-net sdl-ttf
sdl-image sdl-mixer))) sdl-image sdl-mixer)))
@ -546,21 +547,22 @@ directory.")
(define-public guile-sdl (define-public guile-sdl
(package (package
(name "guile-sdl") (name "guile-sdl")
(version "0.5.2") (version "0.5.3")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (uri
(string-append "mirror://gnu/guile-sdl/guile-sdl-" (string-append "mirror://gnu/guile-sdl/guile-sdl-"
version ".tar.xz")) version ".tar.lz"))
(sha256 (sha256
(base32 (base32
"0cjgs012a9922hn6xqwj66w6qmfs3nycnm56hyykx5n3g5p7ag01")))) "040gyk3n3yp8i30ngdg97n3083g8b6laky2nlh10jqcyjdd550d6"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(native-inputs (native-inputs
`(("pkg-config" ,pkg-config) `(("lzip" ,lzip)
("pkg-config" ,pkg-config)
;; Required by test suite. ;; Required by test suite.
("xorg-server" ,xorg-server) ("libjpeg" ,libjpeg-turbo)
("libjpeg" ,libjpeg-turbo))) ("xorg-server" ,xorg-server)))
(inputs (inputs
`(("guile" ,guile-2.2) `(("guile" ,guile-2.2)
("sdl-union" ,(sdl-union)))) ("sdl-union" ,(sdl-union))))
@ -621,7 +623,7 @@ directory.")
Layer (SDL). With them, Guile programmers can have easy access to graphics, Layer (SDL). With them, Guile programmers can have easy access to graphics,
sound and device input (keyboards, joysticks, mice, etc.).") sound and device input (keyboards, joysticks, mice, etc.).")
(home-page "https://www.gnu.org/software/guile-sdl/") (home-page "https://www.gnu.org/software/guile-sdl/")
(license gpl3+))) (license license:gpl3+)))
(define-public guile-sdl2 (define-public guile-sdl2
(package (package
@ -651,7 +653,7 @@ sound and device input (keyboards, joysticks, mice, etc.).")
"Guile-SDL2 provides Guile Scheme bindings for the SDL2 C shared library. "Guile-SDL2 provides Guile Scheme bindings for the SDL2 C shared library.
The bindings are written in pure Scheme using Guile's foreign function The bindings are written in pure Scheme using Guile's foreign function
interface.") interface.")
(license lgpl3+))) (license license:lgpl3+)))
(define-public guile2.2-sdl2 (define-public guile2.2-sdl2
(package/inherit guile-sdl2 (package/inherit guile-sdl2
@ -704,4 +706,4 @@ interface.")
"SDL2-CS provides C# bindings for the SDL2 C shared library. "SDL2-CS provides C# bindings for the SDL2 C shared library.
The C# wrapper was written to be used for FNA's platform support. However, this The C# wrapper was written to be used for FNA's platform support. However, this
is written in a way that can be used for any general C# application.") is written in a way that can be used for any general C# application.")
(license zlib)))) (license license:zlib))))

View file

@ -1,5 +1,6 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013 Eric Bavier <bavier@member.fsf.org> ;;; Copyright © 2013 Eric Bavier <bavier@member.fsf.org>
;;; Copyright © 2021 Efraim Flashner <efraim@flashner.co.il>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -22,22 +23,22 @@
#:use-module (guix download) #:use-module (guix download)
#:use-module (guix build-system gnu) #:use-module (guix build-system gnu)
#:use-module (gnu packages) #:use-module (gnu packages)
#:use-module (gnu packages compression)
#:use-module (gnu packages guile)) #:use-module (gnu packages guile))
(define-public serveez (define-public serveez
(package (package
(name "serveez") (name "serveez")
(version "0.2.2") (version "0.3.0")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (string-append "mirror://gnu/serveez/serveez-" (uri (string-append "mirror://gnu/serveez/serveez-"
version ".tar.xz")) version ".tar.lz"))
(sha256 (sha256
(base32 (base32
"09a5jh762ps71ivlg7vdlzp3y29ncl3nsad7qbcni78bq2mzwxsc")))) "0capm8i6fyjvh5rflxkfd07llfaa0kk4i3y836qpld9vzy49q6ky"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(inputs `(("guile" ,guile-2.0)))
(arguments (arguments
`(#:configure-flags '("--enable-libserveez-install") `(#:configure-flags '("--enable-libserveez-install")
#:phases #:phases
@ -48,6 +49,10 @@
(find-files "test" "^t[0-9]{3}$") (find-files "test" "^t[0-9]{3}$")
(("/bin/sh") (which "sh"))) (("/bin/sh") (which "sh")))
#t))))) #t)))))
(native-inputs
`(("lzip" ,lzip)))
(inputs
`(("guile" ,guile-2.2)))
(home-page "https://www.gnu.org/software/serveez/") (home-page "https://www.gnu.org/software/serveez/")
(synopsis "Framework for implementing IP-based servers") (synopsis "Framework for implementing IP-based servers")
(description (description

View file

@ -55,6 +55,44 @@
#:use-module (gnu packages tmux) #:use-module (gnu packages tmux)
#:use-module (gnu packages vim)) #:use-module (gnu packages vim))
(define-public ascii
(package
(name "ascii")
(version "3.18")
(source (origin
(method url-fetch)
(uri (string-append "http://www.catb.org/~esr/ascii/"
"ascii-" version ".tar.gz"))
(sha256
(base32
"0b87vy06s8s3a8q70pqavsbk4m4ff034sdml2xxa6qfsykaj513j"))))
(build-system gnu-build-system)
(arguments `(#:make-flags
(list (string-append "CC=" ,(cc-for-target))
(string-append "PREFIX=" %output))
#:phases
(modify-phases %standard-phases
(delete 'configure)
(add-before 'install 'create-directories
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(bin (string-append out "/bin"))
(man1 (string-append out "/share/man/man1")))
(mkdir-p bin)
(mkdir-p man1)))))
#:tests? #f))
(home-page "http://www.catb.org/~esr/ascii/")
(synopsis "ASCII name and synonym chart")
(description
"The @code{ascii} utility provides easy conversion between various byte
representations and the American Standard Code for Information Interchange
(ASCII) character table. It knows about a wide variety of hex, binary, octal,
Teletype mnemonic, ISO/ECMA code point, slang names, XML entity names, and
other representations. Given any one on the command line, it will try to
display all others. Called with no arguments it displays a handy small ASCII
chart.")
(license license:bsd-2)))
(define-public boxes (define-public boxes
(package (package
(name "boxes") (name "boxes")

View file

@ -10,6 +10,7 @@
;;; Copyright © 20182021 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 20182021 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2021 Raghav Gururajan <rg@raghavgururajan.name> ;;; Copyright © 2021 Raghav Gururajan <rg@raghavgururajan.name>
;;; Copyright © 2021 Alexandru-Sergiu Marton <brown121407@posteo.ro> ;;; Copyright © 2021 Alexandru-Sergiu Marton <brown121407@posteo.ro>
;;; Copyright © 2021 Nikolay Korotkiy <sikmir@disroot.org>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -963,3 +964,31 @@ running a command.")
Single daemon and configuration file. Log to stdout or syslog. No mail Single daemon and configuration file. Log to stdout or syslog. No mail
support.") support.")
(license license:expat))) (license license:expat)))
(define-public sfm
(package
(name "sfm")
(version "0.4")
(source
(origin
(method git-fetch)
(uri
(git-reference
(url "git://git.afify.dev/sfm.git")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32 "0g6k884mggryld0k054sjcj6kpkbca9cvr50w98klszym73yw0sp"))))
(build-system gnu-build-system)
(arguments
`(#:tests? #f ;no check target
#:make-flags
(list (string-append "CC=" ,(cc-for-target))
(string-append "PREFIX=" %output))
#:phases
(modify-phases %standard-phases
(delete 'configure)))) ;no configure script
(home-page "https://github.com/afify/sfm")
(synopsis "Simple file manager")
(description "sfm is a simple file manager.")
(license license:isc)))

View file

@ -2715,7 +2715,7 @@ a built-in wiki, built-in file browsing, built-in tickets system, etc.")
(define-public stagit (define-public stagit
(package (package
(name "stagit") (name "stagit")
(version "0.9.6") (version "1.0")
(source (origin (source (origin
(method git-fetch) (method git-fetch)
(uri (git-reference (uri (git-reference
@ -2724,7 +2724,7 @@ a built-in wiki, built-in file browsing, built-in tickets system, etc.")
(file-name (git-file-name name version)) (file-name (git-file-name name version))
(sha256 (sha256
(base32 (base32
"0hcf1rmsp9s6jjg1dypq7sa3dqmqg2q3x1kj23rb5gwrsb31vyfj")))) "0j2242vx5pbwdv79gcjxdbrwii48qphr8gk1lk7szj2irxdql171"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
`(#:tests? #f ; No tests `(#:tests? #f ; No tests

View file

@ -695,7 +695,7 @@ is fully configurable and extensible in Common Lisp.")
(define-public lagrange (define-public lagrange
(package (package
(name "lagrange") (name "lagrange")
(version "1.8.2") (version "1.9.2")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
@ -703,7 +703,7 @@ is fully configurable and extensible in Common Lisp.")
(string-append "https://git.skyjake.fi/skyjake/lagrange/releases/" (string-append "https://git.skyjake.fi/skyjake/lagrange/releases/"
"download/v" version "/lagrange-" version ".tar.gz")) "download/v" version "/lagrange-" version ".tar.gz"))
(sha256 (sha256
(base32 "1wb4gqn32sja2qik04chlcl743arr6c844zczy1a2aad5103cnip")) (base32 "1j4r2c6f9fqc22f14fjh28s324kfbb9ahf08nv0xlazy1y5g7f6d"))
(modules '((guix build utils))) (modules '((guix build utils)))
(snippet (snippet
'(begin '(begin

View file

@ -7952,20 +7952,18 @@ solution for any project's interface needs:
(license license:expat))) (license license:expat)))
(define-public gmnisrv (define-public gmnisrv
(let ((commit "32854b79c73b278bf33eb5123abf1c36abdc7c01")
(revision "2"))
(package (package
(name "gmnisrv") (name "gmnisrv")
(version (git-version "0" revision commit)) (version "1.0")
(home-page "https://git.sr.ht/~sircmpwn/gmnisrv") (home-page "https://git.sr.ht/~sircmpwn/gmnisrv")
(source (origin (source
(origin
(method git-fetch) (method git-fetch)
(uri (git-reference (uri (git-reference
(url home-page) (url home-page)
(commit commit))) (commit version)))
(sha256 (sha256
(base32 (base32 "115r1dw9k08r2nvygy8ll21qvsc5kmzi5jcqm7g7r8q8hifxglap"))
"0lbb3ablwkdcgm1cjr1hikr55y8gpl420nh8b8g9wn4abhm2xgr9"))
(file-name (git-file-name name version)))) (file-name (git-file-name name version))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
@ -7984,7 +7982,7 @@ solution for any project's interface needs:
(synopsis "Simple Gemini protocol server") (synopsis "Simple Gemini protocol server")
(description "gmnisrv is a simple Gemini protocol server written in C.") (description "gmnisrv is a simple Gemini protocol server written in C.")
(license (list license:gpl3+ (license (list license:gpl3+
license:bsd-3))))) ;; for ini.c and ini.h license:bsd-3)))) ;; for ini.c and ini.h
(define-public libzim (define-public libzim
(package (package

View file

@ -35,6 +35,8 @@
(define-module (gnu services base) (define-module (gnu services base)
#:use-module (guix store) #:use-module (guix store)
#:use-module (guix deprecation) #:use-module (guix deprecation)
#:autoload (guix diagnostics) (warning)
#:autoload (guix i18n) (G_)
#:use-module (gnu services) #:use-module (gnu services)
#:use-module (gnu services admin) #:use-module (gnu services admin)
#:use-module (gnu services shepherd) #:use-module (gnu services shepherd)
@ -53,6 +55,8 @@
#:use-module (gnu packages bash) #:use-module (gnu packages bash)
#:use-module ((gnu packages base) #:use-module ((gnu packages base)
#:select (coreutils glibc glibc-utf8-locales)) #:select (coreutils glibc glibc-utf8-locales))
#:autoload (gnu packages guile-xyz) (guile-netlink)
#:autoload (gnu packages hurd) (hurd)
#:use-module (gnu packages package-management) #:use-module (gnu packages package-management)
#:use-module ((gnu packages gnupg) #:select (guile-gcrypt)) #:use-module ((gnu packages gnupg) #:select (guile-gcrypt))
#:use-module (gnu packages linux) #:use-module (gnu packages linux)
@ -83,17 +87,38 @@
virtual-terminal-service-type virtual-terminal-service-type
static-networking static-networking
static-networking? static-networking?
static-networking-interface static-networking-addresses
static-networking-ip static-networking-links
static-networking-netmask static-networking-routes
static-networking-gateway
static-networking-requirement static-networking-requirement
network-address
network-address?
network-address-device
network-address-value
network-address-ipv6?
network-link
network-link?
network-link-name
network-link-type
network-link-arguments
network-route
network-route?
network-route-destination
network-route-source
network-route-device
network-route-ipv6?
network-route-gateway
static-networking-service static-networking-service
static-networking-service-type static-networking-service-type
%loopback-static-networking
%qemu-static-networking
udev-configuration udev-configuration
udev-configuration? udev-configuration?
udev-configuration-rules udev-configuration-rules
@ -2354,72 +2379,267 @@ notably to select, copy, and paste text. The default options use the
(description "Start the @command{kmscon} virtual terminal emulator for the (description "Start the @command{kmscon} virtual terminal emulator for the
Linux @dfn{kernel mode setting} (KMS)."))) Linux @dfn{kernel mode setting} (KMS).")))
;;;
;;; Static networking.
;;;
(define (ipv6-address? str)
"Return true if STR denotes an IPv6 address."
(false-if-exception (->bool (inet-pton AF_INET6 str))))
(define-record-type* <static-networking> (define-record-type* <static-networking>
static-networking make-static-networking static-networking make-static-networking
static-networking? static-networking?
(interface static-networking-interface) (addresses static-networking-addresses) ;list of <network-address>
(ip static-networking-ip) (links static-networking-links (default '())) ;list of <network-link>
(netmask static-networking-netmask (routes static-networking-routes (default '())) ;list of <network-routes>
(default #f))
(gateway static-networking-gateway ;FIXME: doesn't belong here
(default #f))
(provision static-networking-provision (provision static-networking-provision
(default #f)) (default '(networking)))
(requirement static-networking-requirement (requirement static-networking-requirement
(default '())) (default '(udev)))
(name-servers static-networking-name-servers ;FIXME: doesn't belong here (name-servers static-networking-name-servers ;FIXME: doesn't belong here
(default '()))) (default '())))
(define static-networking-shepherd-service (define-record-type* <network-address>
network-address make-network-address
network-address?
(device network-address-device) ;string--e.g., "en01"
(value network-address-value) ;string--CIDR notation
(ipv6? network-address-ipv6? ;Boolean
(thunked)
(default
(ipv6-address? (cidr->ip (network-address-value this-record))))))
(define-record-type* <network-link>
network-link make-network-link
network-link?
(name network-link-name) ;string--e.g, "v0p0"
(type network-link-type) ;symbol--e.g.,'veth
(arguments network-link-arguments)) ;list
(define-record-type* <network-route>
network-route make-network-route
network-route?
(destination network-route-destination)
(source network-route-source (default #f))
(device network-route-device (default #f))
(ipv6? network-route-ipv6? (thunked)
(default
(or (ipv6-address? (network-route-destination this-record))
(and=> (network-route-gateway this-record)
ipv6-address?))))
(gateway network-route-gateway (default #f)))
(define* (cidr->netmask str #:optional (family AF_INET))
"Given @var{str}, a string in CIDR notation (e.g., \"1.2.3.4/24\"), return
the netmask as a string like \"255.255.255.0\"."
(match (string-split str #\/)
((ip (= string->number bits))
(let ((mask (ash (- (expt 2 bits) 1)
(- (if (= family AF_INET6) 128 32)
bits))))
(inet-ntop family mask)))
(_ #f)))
(define (cidr->ip str)
"Strip the netmask bit of @var{str}, a CIDR-notation IP/netmask address."
(match (string-split str #\/)
((or (ip _) (ip))
ip)))
(define* (ip+netmask->cidr ip netmask #:optional (family AF_INET))
"Return the CIDR notation (a string) for @var{ip} and @var{netmask}, two
@var{family} address strings, where @var{family} is @code{AF_INET} or
@code{AF_INET6}."
(let* ((netmask (inet-pton family netmask))
(bits (logcount netmask)))
(string-append ip "/" (number->string bits))))
(define (static-networking->hurd-pfinet-options config)
"Return command-line options for the Hurd's pfinet translator corresponding
to CONFIG."
(unless (null? (static-networking-links config))
;; XXX: Presumably this is not supported, or perhaps could be approximated
;; by running separate pfinet instances in some cases?
(warning (G_ "network links are currently ignored on GNU/Hurd~%")))
(match (static-networking-addresses config)
((and addresses (first _ ...))
`("--ipv6" "/servers/socket/26"
"--interface" ,(network-address-device first)
,@(append-map (lambda (address)
`(,(if (network-address-ipv6? address)
"--address6"
"--address")
,(cidr->ip (network-address-value address))
,@(match (cidr->netmask (network-address-value address)
(if (network-address-ipv6? address)
AF_INET6
AF_INET))
(#f '())
(mask (list "--netmask" mask)))))
addresses)
,@(append-map (lambda (route)
(match route
(($ <network-route> "default" #f device _ gateway)
(if (network-route-ipv6? route)
`("--gateway6" ,gateway)
`("--gateway" ,gateway)))
(($ <network-route> destination)
(warning (G_ "ignoring network route for '~a'~%")
destination)
'())))
(static-networking-routes config))))))
(define (network-set-up/hurd config)
"Set up networking for the Hurd."
;; The Hurd implements SIOCGIFADDR and other old-style ioctls, but the only
;; way to set up IPv6 is by starting pfinet with the right options.
(if (equal? (static-networking-provision config) '(loopback))
(scheme-file "set-up-pflocal" #~(begin 'nothing-to-do! #t))
(scheme-file "set-up-pfinet"
(with-imported-modules '((guix build utils))
#~(begin
(use-modules (guix build utils)
(ice-9 format))
;; TODO: Do that without forking.
(let ((options '#$(static-networking->hurd-pfinet-options
config)))
(format #t "starting '~a~{ ~s~}'~%"
#$(file-append hurd "/hurd/pfinet")
options)
(apply invoke #$(file-append hurd "/bin/settrans") "-fac"
"/servers/socket/2"
#$(file-append hurd "/hurd/pfinet")
options)))))))
(define (network-tear-down/hurd config)
(scheme-file "tear-down-pfinet"
(with-imported-modules '((guix build utils))
#~(begin
(use-modules (guix build utils))
;; Forcefully terminate pfinet. XXX: In theory this
;; should just undo the addresses and routes of CONFIG;
;; this could be done using ioctls like SIOCDELRT, but
;; these are IPv4-only; another option would be to use
;; fsysopts but that seems to crash pfinet.
(invoke #$(file-append hurd "/bin/settrans") "-fg"
"/servers/socket/2")
#f))))
(define network-set-up/linux
(match-lambda (match-lambda
(($ <static-networking> interface ip netmask gateway provision (($ <static-networking> addresses links routes)
requirement name-servers) (scheme-file "set-up-network"
(with-extensions (list guile-netlink)
#~(begin
(use-modules (ip addr) (ip link) (ip route))
#$@(map (lambda (address)
#~(begin
(addr-add #$(network-address-device address)
#$(network-address-value address)
#:ipv6?
#$(network-address-ipv6? address))
;; FIXME: loopback?
(link-set #$(network-address-device address)
#:up #t)))
addresses)
#$@(map (match-lambda
(($ <network-link> name type arguments)
#~(link-add #$name #$type
#:type-args '#$arguments)))
links)
#$@(map (lambda (route)
#~(route-add #$(network-route-destination route)
#:device
#$(network-route-device route)
#:ipv6?
#$(network-route-ipv6? route)
#:via
#$(network-route-gateway route)
#:src
#$(network-route-source route)))
routes)
#t))))))
(define network-tear-down/linux
(match-lambda
(($ <static-networking> addresses links routes)
(scheme-file "tear-down-network"
(with-extensions (list guile-netlink)
#~(begin
(use-modules (ip addr) (ip link) (ip route)
(netlink error)
(srfi srfi-34))
(define-syntax-rule (false-if-netlink-error exp)
(guard (c ((netlink-error? c) #f))
exp))
;; Wrap calls in 'false-if-netlink-error' so this
;; script goes as far as possible undoing the effects
;; of "set-up-network".
#$@(map (lambda (route)
#~(false-if-netlink-error
(route-del #$(network-route-destination route)
#:device
#$(network-route-device route)
#:ipv6?
#$(network-route-ipv6? route)
#:via
#$(network-route-gateway route)
#:src
#$(network-route-source route))))
routes)
#$@(map (match-lambda
(($ <network-link> name type arguments)
#~(false-if-netlink-error
(link-del #$name))))
links)
#$@(map (lambda (address)
#~(false-if-netlink-error
(addr-del #$(network-address-device
address)
#$(network-address-value address)
#:ipv6?
#$(network-address-ipv6? address))))
addresses)
#f))))))
(define (static-networking-shepherd-service config)
(match config
(($ <static-networking> addresses links routes
provision requirement name-servers)
(let ((loopback? (and provision (memq 'loopback provision)))) (let ((loopback? (and provision (memq 'loopback provision))))
(shepherd-service (shepherd-service
(documentation (documentation
"Bring up the networking interface using a static IP address.") "Bring up the networking interface using a static IP address.")
(requirement requirement) (requirement requirement)
(provision (or provision (provision provision)
(list (symbol-append 'networking-
(string->symbol interface)))))
(start #~(lambda _ (start #~(lambda _
;; Return #t if successfully started. ;; Return #t if successfully started.
(let* ((addr (inet-pton AF_INET #$ip)) (load #$(let-system (system target)
(sockaddr (make-socket-address AF_INET addr 0)) (if (string-contains (or target system) "-linux")
(mask (and #$netmask (network-set-up/linux config)
(inet-pton AF_INET #$netmask))) (network-set-up/hurd config))))))
(maskaddr (and mask
(make-socket-address AF_INET
mask 0)))
(gateway (and #$gateway
(inet-pton AF_INET #$gateway)))
(gatewayaddr (and gateway
(make-socket-address AF_INET
gateway 0))))
(configure-network-interface #$interface sockaddr
(logior IFF_UP
#$(if loopback?
#~IFF_LOOPBACK
0))
#:netmask maskaddr)
(when gateway
(let ((sock (socket AF_INET SOCK_DGRAM 0)))
(add-network-route/gateway sock gatewayaddr)
(close-port sock))))))
(stop #~(lambda _ (stop #~(lambda _
;; Return #f is successfully stopped. ;; Return #f is successfully stopped.
(let ((sock (socket AF_INET SOCK_STREAM 0))) (load #$(let-system (system target)
(when #$gateway (if (string-contains (or target system) "-linux")
(delete-network-route sock (network-tear-down/linux config)
(make-socket-address (network-tear-down/hurd config))))))
AF_INET INADDR_ANY 0)))
(set-network-interface-flags sock #$interface 0)
(close-port sock)
#f)))
(respawn? #f)))))) (respawn? #f))))))
(define (static-networking-shepherd-services networks)
(map static-networking-shepherd-service networks))
(define (static-networking-etc-files interfaces) (define (static-networking-etc-files interfaces)
"Return a /etc/resolv.conf entry for INTERFACES or the empty list." "Return a /etc/resolv.conf entry for INTERFACES or the empty list."
(match (delete-duplicates (match (delete-duplicates
@ -2438,30 +2658,6 @@ Linux @dfn{kernel mode setting} (KMS).")))
# Generated by 'static-networking-service'.\n" # Generated by 'static-networking-service'.\n"
content)))))))) content))))))))
(define (static-networking-shepherd-services interfaces)
"Return the list of Shepherd services to bring up INTERFACES, a list of
<static-networking> objects."
(define (loopback? service)
(memq 'loopback (shepherd-service-provision service)))
(let ((services (map static-networking-shepherd-service interfaces)))
(match (remove loopback? services)
(()
;; There's no interface other than 'loopback', so we assume that the
;; 'networking' service will be provided by dhclient or similar.
services)
((non-loopback ...)
;; Assume we're providing all the interfaces, and thus, provide a
;; 'networking' service.
(cons (shepherd-service
(provision '(networking))
(requirement (append-map shepherd-service-provision
services))
(start #~(const #t))
(stop #~(const #f))
(documentation "Bring up all the networking interfaces."))
services)))))
(define static-networking-service-type (define static-networking-service-type
;; The service type for statically-defined network interfaces. ;; The service type for statically-defined network interfaces.
(service-type (name 'static-networking) (service-type (name 'static-networking)
@ -2479,12 +2675,13 @@ with the given IP address, gateway, netmask, and so on. The value for
services of this type is a list of @code{static-networking} objects, one per services of this type is a list of @code{static-networking} objects, one per
network interface."))) network interface.")))
(define* (static-networking-service interface ip (define-deprecated (static-networking-service interface ip
#:key #:key
netmask gateway provision netmask gateway provision
;; Most interfaces require udev to be usable. ;; Most interfaces require udev to be usable.
(requirement '(udev)) (requirement '(udev))
(name-servers '())) (name-servers '()))
static-networking-service-type
"Return a service that starts @var{interface} with address @var{ip}. If "Return a service that starts @var{interface} with address @var{ip}. If
@var{netmask} is true, use it as the network mask. If @var{gateway} is true, @var{netmask} is true, use it as the network mask. If @var{gateway} is true,
it must be a string specifying the default network gateway. it must be a string specifying the default network gateway.
@ -2495,12 +2692,48 @@ interface of interest. Behind the scenes what it does is extend
to handle." to handle."
(simple-service 'static-network-interface (simple-service 'static-network-interface
static-networking-service-type static-networking-service-type
(list (static-networking (interface interface) (ip ip) (list (static-networking
(netmask netmask) (gateway gateway) (addresses
(provision provision) (list (network-address
(device interface)
(value (if netmask
(ip+netmask->cidr ip netmask)
ip))
(ipv6? #f))))
(routes
(if gateway
(list (network-route
(destination "default")
(gateway gateway)
(ipv6? #f)))
'()))
(requirement requirement) (requirement requirement)
(provision (or provision '(networking)))
(name-servers name-servers))))) (name-servers name-servers)))))
(define %loopback-static-networking
;; The loopback device.
(static-networking
(addresses (list (network-address
(device "lo")
(value "127.0.0.1"))))
(requirement '())
(provision '(loopback))))
(define %qemu-static-networking
;; Networking configuration for QEMU's user-mode network stack (info "(QEMU)
;; Using the user mode network stack").
(static-networking
(addresses (list (network-address
(device "eth0")
(value "10.0.2.15/24"))))
(routes (list (network-route
(destination "default")
(gateway "10.0.2.2"))))
(requirement '())
(provision '(networking))
(name-servers '("10.0.2.3"))))
(define %base-services (define %base-services
;; Convenience variable holding the basic services. ;; Convenience variable holding the basic services.
@ -2531,10 +2764,7 @@ to handle."
(tty "tty6"))) (tty "tty6")))
(service static-networking-service-type (service static-networking-service-type
(list (static-networking (interface "lo") (list %loopback-static-networking))
(ip "127.0.0.1")
(requirement '())
(provision '(loopback)))))
(syslog-service) (syslog-service)
(service urandom-seed-service-type) (service urandom-seed-service-type)
(service guix-service-type) (service guix-service-type)

View file

@ -898,23 +898,44 @@ specified, the QEMU default path is used."))
;;; Secrets for guest VMs. ;;; Secrets for guest VMs.
;;; ;;;
(define (secret-service-activation port) (define (secret-service-shepherd-services port)
"Return an activation snippet that fetches sensitive material at local PORT, "Return a Shepherd service that fetches sensitive material at local PORT,
over TCP. Reboot upon failure." over TCP. Reboot upon failure."
(with-imported-modules '((gnu build secret-service) ;; This is a Shepherd service, rather than an activation snippet, to make
;; sure it is started once 'networking' is up so it can accept incoming
;; connections.
(list
(shepherd-service
(documentation "Fetch secrets from the host at startup time.")
(provision '(secret-service-client))
(requirement '(loopback networking))
(modules '((gnu build secret-service)
(guix build utils)))
(start (with-imported-modules '((gnu build secret-service)
(guix build utils)) (guix build utils))
#~(begin #~(lambda ()
(use-modules (gnu build secret-service)) ;; Since shepherd's output port goes to /dev/log, write this
;; message to stderr so it's visible on the Mach console.
(format (current-error-port)
"receiving secrets from the host...~%")
(force-output (current-error-port))
(let ((sent (secret-service-receive-secrets #$port))) (let ((sent (secret-service-receive-secrets #$port)))
(unless sent (unless sent
(sleep 3) (sleep 3)
(reboot)))))) (reboot))))))
(stop #~(const #f)))))
(define secret-service-type (define secret-service-type
(service-type (service-type
(name 'secret-service) (name 'secret-service)
(extensions (list (service-extension activation-service-type (extensions (list (service-extension shepherd-root-service-type
secret-service-activation))) secret-service-shepherd-services)
;; Make every Shepherd service depend on
;; 'secret-service-client'.
(service-extension user-processes-service-type
(const '(secret-service-client)))))
(description (description
"This service fetches secret key and other sensitive material over TCP at "This service fetches secret key and other sensitive material over TCP at
boot time. This service is meant to be used by virtual machines (VMs) that boot time. This service is meant to be used by virtual machines (VMs) that

View file

@ -79,11 +79,13 @@
(service hurd-getty-service-type (hurd-getty-configuration (service hurd-getty-service-type (hurd-getty-configuration
(tty "tty2"))) (tty "tty2")))
(service static-networking-service-type (service static-networking-service-type
(list (static-networking (interface "lo") (list %loopback-static-networking
(ip "127.0.0.1")
(requirement '()) ;; QEMU user-mode networking. To get "eth0", you need
(provision '(loopback networking)) ;; QEMU to emulate a device for which Mach has an
(name-servers '("10.0.2.3"))))) ;; in-kernel driver, for instance with:
;; --device rtl8139,netdev=net0 --netdev user,id=net0
%qemu-static-networking))
(syslog-service) (syslog-service)
(service guix-service-type (service guix-service-type
(guix-configuration (guix-configuration

View file

@ -408,10 +408,7 @@ Access documentation at any time by pressing Alt-F2.\x1b[0m
;; Loopback device, needed by OpenSSH notably. ;; Loopback device, needed by OpenSSH notably.
(service static-networking-service-type (service static-networking-service-type
(list (static-networking (interface "lo") (list %loopback-static-networking))
(ip "127.0.0.1")
(requirement '())
(provision '(loopback)))))
(service wpa-supplicant-service-type) (service wpa-supplicant-service-type)
(dbus-service) (dbus-service)

View file

@ -59,11 +59,8 @@
(packages (append (list ganeti-instance-debootstrap ganeti-instance-guix) (packages (append (list ganeti-instance-debootstrap ganeti-instance-guix)
%base-packages)) %base-packages))
(services (services
(append (list (static-networking-service "eth0" "10.0.2.15" (append (list (service static-networking-service-type
#:netmask "255.255.255.0" (list %qemu-static-networking))
#:gateway "10.0.2.2"
#:name-servers '("10.0.2.3"))
(service openssh-service-type (service openssh-service-type
(openssh-configuration (openssh-configuration
(permit-root-login 'prohibit-password))) (permit-root-login 'prohibit-password)))

View file

@ -4,6 +4,7 @@
;;; Copyright © 2018 Chris Marusich <cmmarusich@gmail.com> ;;; Copyright © 2018 Chris Marusich <cmmarusich@gmail.com>
;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net> ;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net>
;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be> ;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
;;; Copyright © 2021 Ludovic Courtès <ludo@gnu.org>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -37,9 +38,101 @@
#:use-module (gnu packages guile) #:use-module (gnu packages guile)
#:use-module (gnu services shepherd) #:use-module (gnu services shepherd)
#:use-module (ice-9 match) #:use-module (ice-9 match)
#:export (%test-inetd %test-openvswitch %test-dhcpd %test-tor %test-iptables #:export (%test-static-networking
%test-inetd
%test-openvswitch
%test-dhcpd
%test-tor
%test-iptables
%test-ipfs)) %test-ipfs))
;;;
;;; Static networking.
;;;
(define (run-static-networking-test vm)
(define test
(with-imported-modules '((gnu build marionette)
(guix build syscalls))
#~(begin
(use-modules (gnu build marionette)
(guix build syscalls)
(srfi srfi-64))
(define marionette
(make-marionette
'(#$vm "-nic" "user,model=virtio-net-pci")))
(mkdir #$output)
(chdir #$output)
(test-begin "static-networking")
(test-assert "service is up"
(marionette-eval
'(begin
(use-modules (gnu services herd))
(start-service 'networking))
marionette))
(test-assert "network interfaces"
(marionette-eval
'(begin
(use-modules (guix build syscalls))
(network-interface-names))
marionette))
(test-equal "address of eth0"
"10.0.2.15"
(marionette-eval
'(let* ((sock (socket AF_INET SOCK_STREAM 0))
(addr (network-interface-address sock "eth0")))
(close-port sock)
(inet-ntop (sockaddr:fam addr) (sockaddr:addr addr)))
marionette))
(test-equal "netmask of eth0"
"255.255.255.0"
(marionette-eval
'(let* ((sock (socket AF_INET SOCK_STREAM 0))
(mask (network-interface-netmask sock "eth0")))
(close-port sock)
(inet-ntop (sockaddr:fam mask) (sockaddr:addr mask)))
marionette))
(test-equal "eth0 is up"
IFF_UP
(marionette-eval
'(let* ((sock (socket AF_INET SOCK_STREAM 0))
(flags (network-interface-flags sock "eth0")))
(logand flags IFF_UP))
marionette))
(test-end)
(exit (= (test-runner-fail-count (test-runner-current)) 0)))))
(gexp->derivation "static-networking" test))
(define %test-static-networking
(system-test
(name "static-networking")
(description "Test the 'static-networking' service.")
(value
(let ((os (marionette-operating-system
(simple-operating-system
(service static-networking-service-type
(list %qemu-static-networking)))
#:imported-modules '((gnu services herd)
(guix combinators)))))
(run-static-networking-test (virtual-machine os))))))
;;;
;;; Inetd.
;;;
(define %inetd-os (define %inetd-os
;; Operating system with 2 inetd services. ;; Operating system with 2 inetd services.
(simple-operating-system (simple-operating-system
@ -177,9 +270,13 @@ port 7, and a dict service on port 2628."
(define %openvswitch-os (define %openvswitch-os
(operating-system (operating-system
(inherit (simple-operating-system (inherit (simple-operating-system
(static-networking-service "ovs0" "10.1.1.1" (simple-service 'openswitch-networking
#:netmask "255.255.255.252" static-networking-service-type
#:requirement '(openvswitch-configuration)) (list (static-networking
(addresses (list (network-address
(value "10.1.1.1/24")
(device "ovs0"))))
(requirement '(openvswitch-configuration)))))
(service openvswitch-service-type) (service openvswitch-service-type)
openvswitch-configuration-service)) openvswitch-configuration-service))
;; Ensure the interface name does not change depending on the driver. ;; Ensure the interface name does not change depending on the driver.
@ -188,12 +285,15 @@ port 7, and a dict service on port 2628."
(define (run-openvswitch-test) (define (run-openvswitch-test)
(define os (define os
(marionette-operating-system %openvswitch-os (marionette-operating-system %openvswitch-os
#:imported-modules '((gnu services herd)))) #:imported-modules '((gnu services herd)
(guix build syscalls))))
(define test (define test
(with-imported-modules '((gnu build marionette)) (with-imported-modules '((gnu build marionette)
(guix build syscalls))
#~(begin #~(begin
(use-modules (gnu build marionette) (use-modules (gnu build marionette)
(guix build syscalls)
(ice-9 popen) (ice-9 popen)
(ice-9 rdelim) (ice-9 rdelim)
(srfi srfi-64)) (srfi srfi-64))
@ -234,11 +334,23 @@ port 7, and a dict service on port 2628."
(srfi srfi-1)) (srfi srfi-1))
(live-service-running (live-service-running
(find (lambda (live) (find (lambda (live)
(memq 'networking-ovs0 (memq 'networking
(live-service-provision live))) (live-service-provision live)))
(current-services)))) (current-services))))
marionette)) marionette))
(test-equal "ovs0 is up"
IFF_UP
(marionette-eval
'(begin
(use-modules (guix build syscalls))
(let* ((sock (socket AF_INET SOCK_STREAM 0))
(flags (network-interface-flags sock "ovs0")))
(close-port sock)
(logand flags IFF_UP)))
marionette))
(test-end)))) (test-end))))
(gexp->derivation "openvswitch-test" test)) (gexp->derivation "openvswitch-test" test))
@ -276,10 +388,15 @@ subnet 192.168.1.0 netmask 255.255.255.0 {
(define %dhcpd-os (define %dhcpd-os
(simple-operating-system (simple-operating-system
(static-networking-service "ens3" "192.168.1.4" (service static-networking-service-type
#:netmask "255.255.255.0" (list (static-networking
#:gateway "192.168.1.1" (addresses (list (network-address
#:name-servers '("192.168.1.2" "192.168.1.3")) (value "192.168.1.4/24")
(device "ens3"))))
(routes (list (network-route
(destination "default")
(gateway "192.168.1.1"))))
(name-servers '("192.168.1.2" "192.168.1.3")))))
(service dhcpd-service-type dhcpd-v4-configuration))) (service dhcpd-service-type dhcpd-v4-configuration)))
(define (run-dhcpd-test) (define (run-dhcpd-test)

View file

@ -144,7 +144,9 @@ must contain the original contents of a narinfo file."
(map (lambda (url) (map (lambda (url)
(or (string->uri url) (or (string->uri url)
(string->uri (string->uri
(string-append cache-url "/" url)))) (if (string-suffix? "/" cache-url)
(string-append cache-url url)
(string-append cache-url "/" url)))))
urls) urls)
compressions compressions
(match file-sizes (match file-sizes

View file

@ -270,9 +270,7 @@ ABBREVIATION used to shorten FILE for display."
tasks is performed. Write PREFIX at the beginning of the line." tasks is performed. Write PREFIX at the beginning of the line."
(define done 0) (define done 0)
(define (report-progress) (define (draw-bar)
(set! done (+ 1 done))
(unless (> done total)
(let* ((ratio (* 100. (/ done total)))) (let* ((ratio (* 100. (/ done total))))
(erase-current-line port) (erase-current-line port)
(if (string-null? prefix) (if (string-null? prefix)
@ -282,7 +280,15 @@ tasks is performed. Write PREFIX at the beginning of the line."
(display prefix port) (display prefix port)
(display " " port) (display " " port)
(display (progress-bar ratio width) port))) (display (progress-bar ratio width) port)))
(force-output port)))) (force-output port)))
(define draw-bar/rate-limited
(rate-limited draw-bar %progress-interval))
(define (report-progress)
(set! done (+ 1 done))
(unless (> done total)
(draw-bar/rate-limited)))
(progress-reporter (progress-reporter
(start (lambda () (start (lambda ()

View file

@ -35,10 +35,10 @@
#:use-module (gcrypt hash) #:use-module (gcrypt hash)
#:use-module (srfi srfi-1) #:use-module (srfi srfi-1)
#:use-module (srfi srfi-9) #:use-module (srfi srfi-9)
#:use-module (srfi srfi-11)
#:use-module (srfi srfi-26) #:use-module (srfi srfi-26)
#:use-module (srfi srfi-34) #:use-module (srfi srfi-34)
#:use-module (srfi srfi-37) #:use-module (srfi srfi-37)
#:use-module (srfi srfi-71)
#:use-module (ice-9 match) #:use-module (ice-9 match)
#:use-module (ice-9 vlist) #:use-module (ice-9 vlist)
#:use-module (ice-9 format) #:use-module (ice-9 format)
@ -196,13 +196,16 @@ taken since we do not import the archives."
(define (port-sha256* port size) (define (port-sha256* port size)
;; Like 'port-sha256', but limited to SIZE bytes. ;; Like 'port-sha256', but limited to SIZE bytes.
(let-values (((out get) (open-sha256-port))) (let ((out get (open-sha256-port)))
(dump-port* port out size) (dump-port* port out size)
(close-port out) (close-port out)
(get))) (get)))
(define (archive-contents port) (define (archive-contents port)
"Return a list representing the files contained in the nar read from PORT." "Return a list representing the files contained in the nar read from PORT.
The list is sorted in canonical order--i.e., the order in which entries appear
in the nar."
(reverse
(fold-archive (lambda (file type contents result) (fold-archive (lambda (file type contents result)
(match type (match type
((or 'regular 'executable) ((or 'regular 'executable)
@ -216,13 +219,15 @@ taken since we do not import the archives."
(cons `(,file ,type ,contents) result)))) (cons `(,file ,type ,contents) result))))
'() '()
port port
"")) "")))
(define (store-item-contents item) (define (store-item-contents item)
"Return a list of files and contents for ITEM in the same format as "Return a list of files and contents for ITEM in the same format as
'archive-contents'." 'archive-contents'."
(file-system-fold (const #t) ;enter? (let loop ((file item))
(lambda (file stat result) ;leaf (define stat
(lstat file))
(define short (define short
(string-drop file (string-length item))) (string-drop file (string-length item)))
@ -233,28 +238,26 @@ taken since we do not import the archives."
#o100)) #o100))
'regular 'regular
'executable))) 'executable)))
(cons `(,short ,type `((,short ,type
,(call-with-input-file file ,(call-with-input-file file
(cut port-sha256* <> size))) (cut port-sha256* <> size))))))
result)))
('symlink ('symlink
(cons `(,short symlink ,(readlink file)) `((,short symlink ,(readlink file))))
result)))) ('directory
(lambda (directory stat result) result) ;down (append-map (match-lambda
(lambda (directory stat result) result) ;up ((or "." "..")
(lambda (file stat result) result) ;skip '())
(lambda (file stat errno result) result) ;error (entry
'() (loop (string-append file "/" entry))))
item ;; Traverse entries in canonical order, the same as the
lstat)) ;; order of entries in nars.
(scandir file (const #t) string<?))))))
(define (call-with-nar narinfo proc) (define (call-with-nar narinfo proc)
"Call PROC with an input port from which it can read the nar pointed to by "Call PROC with an input port from which it can read the nar pointed to by
NARINFO." NARINFO."
(let*-values (((uri compression size) (let* ((uri compression size (narinfo-best-uri narinfo))
(narinfo-best-uri narinfo)) (port actual-size (http-fetch uri)))
((port actual-size)
(http-fetch uri)))
(define reporter (define reporter
(progress-reporter/file (narinfo-path narinfo) (progress-reporter/file (narinfo-path narinfo)
(and size (and size

View file

@ -156,7 +156,11 @@ indicates that PATH is unavailable at CACHE-URL."
(define (narinfo-request cache-url path) (define (narinfo-request cache-url path)
"Return an HTTP request for the narinfo of PATH at CACHE-URL." "Return an HTTP request for the narinfo of PATH at CACHE-URL."
(let* ((base (string->uri cache-url)) ;; Ensure BASE has a trailing slash so that REF is correct regardless of
;; whether the user-provided CACHE-URL has a trailing slash.
(let* ((base (string->uri (if (string-suffix? "/" cache-url)
cache-url
(string-append cache-url "/"))))
(ref (build-relative-ref (ref (build-relative-ref
#:path (string-append (store-path-hash-part path) ".narinfo"))) #:path (string-append (store-path-hash-part path) ".narinfo")))
(url (resolve-uri-reference ref base)) (url (resolve-uri-reference ref base))