blob: b407b8369f2b49ea665805adb654a73d30caa5ca (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
|
Guix science packages
=====================
.. image:: https://guix.bordeaux.inria.fr/jobset/guix-science/badge.svg?type=0
:target: https://guix.bordeaux.inria.fr/jobset/guix-science
This GNU Guix_ channel provides recent versions of scientific software, which
cannot be included upstream.
See `Specifying Additional Channels`_ in the Guix manual for instructions how
to add it to your installation or simply add the following snippet to your
``channels.scm``:
.. code:: scheme
(channel
(name 'guix-science)
(url "https://codeberg.org/guix-science/guix-science.git")
(introduction
(make-channel-introduction
"b1fe5aaff3ab48e798a4cce02f0212bc91f423dc"
(openpgp-fingerprint
"CA4F 8CF4 37D7 478F DA05 5FD4 4213 7701 1A37 8446"))))
.. _Guix: https://guix.gnu.org/
.. _Specifying Additional Channels: https://guix.gnu.org/manual/en/guix.html#Specifying-Additional-Channels
Binary substitutes for ``x86_64-linux`` are available from
https://guix.bordeaux.inria.fr, see `Getting Substitutes from Other
Servers`_ in the official manual. The signing key can be imported
using:
.. code:: console
$ guix archive --authorize <<EOF
(public-key
(ecc
(curve Ed25519)
(q #89FBA276A976A8DE2A69774771A92C8C879E0F24614AAAAE23119608707B3F06#)))
EOF
.. _Getting Substitutes from Other Servers: https://guix.gnu.org/manual/en/guix.html#Getting-Substitutes-from-Other-Servers
Contributing
------------
We accept software fulfilling the following criteria:
- `Free and open source`_. Use guix-science-nonfree_ otherwise.
- Related to scientific research or teaching.
- Not upstreamable to Guix proper per their rules—e.g., due to excessive
vendoring.
- Built entirely from source, with the following exceptions:
1. JavaScript code is allowed to be taken as-is, including
pre-built/minified JavaScript, as a pragmatic way out of the
`JavaScript dystopia`;
2. Packages such as build systems and compilers that have no known
`bootstrap path` may be built starting from a *binary seed* (a
pre-built binary of said compiler or build system).
.. _Free and open source: https://opensource.org/osd
.. _guix-science-nonfree: https://codeberg.org/guix-science/guix-science-nonfree
.. _JavaScript dystopia: https://dustycloud.org/blog/javascript-packaging-dystopia/
.. _bootstrap path: https://bootstrappable.org
Submissions of unfinished packaging attempts are welcome as well, as there is
a good chance that others can help finish the work. Please prefix pull requests
for unfinished contributions with WIP.
When submitting a new package or a modification to a package, make sure to run:
.. code:: console
guix lint -L /path/to/your/guix/science/checkout <package-name>
When obtaining a fresh checkout of this repository, run the following
command:
.. code:: console
guix git authenticate b1fe5aaff3ab48e798a4cce02f0212bc91f423dc "CA4F 8CF4 37D7 478F DA05 5FD4 4213 7701 1A37 8446"
The command authenticates your checkout and installs Git hooks such that
``git pull`` and ``git push`` automatically authenticate it from there
on.
Hacking this repository
---------------------------------------
Package definitions are stored in ``guix-science/packages/*.scm``,
each ``.scm`` file being a `Guile module`_ containing several package
definitions.
.. _Guile module: https://guix.gnu.org/manual/devel/en/html_node/Package-Modules.html
A new package definition can be added in the relevant module.
For example, after adding a package definition such as:
.. code:: scheme
(define-public my-package-variable
(package
(name "my-package-name")
... ))
can be built using the following command:
.. code:: console
guix build -L /path/to/guix/science/checkout my-package-name
Note that generally the same string is used for the package name and
the Guile variable that points to the package object.
You can learn more about working with a channel in the `Guix manual`_.
.. _Guix manual: https://guix.gnu.org/manual/devel/en/html_node/Creating-a-Channel.html
|