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
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
|
{ lib
, stdenv
, fetchurl
, autoreconfHook
, disarchive
, git
, glibcLocales
, guile
, guile-avahi
, guile-gcrypt
, guile-git
, guile-gnutls
, guile-json
, guile-lib
, guile-lzlib
, guile-lzma
, guile-semver
, guile-ssh
, guile-sqlite3
, guile-zlib
, guile-zstd
, help2man
, makeWrapper
, pkg-config
, po4a
, scheme-bytestructures
, texinfo
, bzip2
, libgcrypt
, sqlite
, stateDir ? "/var"
, storeDir ? "/gnu/store"
, confDir ? "/etc"
}:
stdenv.mkDerivation rec {
pname = "guix";
version = "1.4.0";
src = fetchurl {
url = "mirror://gnu/guix/guix-${version}.tar.gz";
hash = "sha256-Q8dpy/Yy7wVEmsH6SMG6FSwzSUxqvH5HE3u6eyFJ+KQ=";
};
postPatch = ''
sed nix/local.mk -i -E \
-e "s|^sysvinitservicedir = .*$|sysvinitservicedir = $out/etc/init.d|" \
-e "s|^openrcservicedir = .*$|openrcservicedir = $out/etc/openrc|"
'';
strictDeps = true;
nativeBuildInputs = [
autoreconfHook
disarchive
git
glibcLocales
guile
guile-avahi
guile-gcrypt
guile-git
guile-gnutls
guile-json
guile-lib
guile-lzlib
guile-lzma
guile-semver
guile-ssh
guile-sqlite3
guile-zlib
guile-zstd
help2man
makeWrapper
pkg-config
po4a
scheme-bytestructures
texinfo
];
buildInputs = [
bzip2
guile
libgcrypt
sqlite
];
propagatedBuildInputs = [
disarchive
guile-avahi
guile-gcrypt
guile-git
guile-gnutls
guile-json
guile-lib
guile-lzlib
guile-lzma
guile-semver
guile-ssh
guile-sqlite3
guile-zlib
guile-zstd
scheme-bytestructures
];
configureFlags = [
"--with-store-dir=${storeDir}"
"--localstatedir=${stateDir}"
"--sysconfdir=${confDir}"
"--with-bash-completion-dir=$(out)/etc/bash_completion.d"
];
enableParallelBuilding = true;
postInstall = ''
for f in $out/bin/*; do
wrapProgram $f \
--prefix GUILE_LOAD_PATH : "$out/${guile.siteDir}:$GUILE_LOAD_PATH" \
--prefix GUILE_LOAD_COMPILED_PATH : "$out/${guile.siteCcacheDir}:$GUILE_LOAD_COMPILED_PATH"
done
'';
meta = with lib; {
description = "Functional package manager with a Scheme interface";
longDescription = ''
GNU Guix is a purely functional package manager for the GNU system, and a distribution thereof.
In addition to standard package management features, Guix supports
transactional upgrades and roll-backs, unprivileged package management,
per-user profiles, and garbage collection.
It provides Guile Scheme APIs, including high-level embedded
domain-specific languages (EDSLs), to describe how packages are built
and composed.
A user-land free software distribution for GNU/Linux comes as part of
Guix.
Guix is based on the Nix package manager.
'';
homepage = "http://www.gnu.org/software/guix";
license = licenses.gpl3Plus;
mainProgram = "guix";
maintainers = with maintainers; [ cafkafk foo-dogsquared ];
platforms = platforms.linux;
};
}
|