···358<para>
359 <varname>pkgs.dockerTools</varname> is a set of functions for creating and
360 manipulating Docker images according to the
361- <link xlink:href="https://github.com/docker/docker/blob/master/image/spec/v1.md#docker-image-specification-v100">
362- Docker Image Specification v1.0.0
363 </link>. Docker itself is not used to perform any of the operations done by these
364 functions.
365</para>
···493 <varname>config</varname> is used to specify the configuration of the
494 containers that will be started off the built image in Docker.
495 The available options are listed in the
496- <link xlink:href="https://github.com/docker/docker/blob/master/image/spec/v1.md#container-runconfig-field-descriptions">
497- Docker Image Specification v1.0.0
498 </link>.
499 </para>
500 </callout>
···358<para>
359 <varname>pkgs.dockerTools</varname> is a set of functions for creating and
360 manipulating Docker images according to the
361+ <link xlink:href="https://github.com/moby/moby/blob/master/image/spec/v1.2.md#docker-image-specification-v120">
362+ Docker Image Specification v1.2.0
363 </link>. Docker itself is not used to perform any of the operations done by these
364 functions.
365</para>
···493 <varname>config</varname> is used to specify the configuration of the
494 containers that will be started off the built image in Docker.
495 The available options are listed in the
496+ <link xlink:href="https://github.com/moby/moby/blob/master/image/spec/v1.2.md#image-json-field-descriptions">
497+ Docker Image Specification v1.2.0
498 </link>.
499 </para>
500 </callout>
···17<refsynopsisdiv>
18 <cmdsynopsis>
19 <command>nixos-option</command>
20- <arg choice='plain'><replaceable>option.name</replaceable></arg>
00000021 </cmdsynopsis>
22</refsynopsisdiv>
23-2425<refsection><title>Description</title>
26···3031<para>When the option name is not an option, the command prints the list of
32attributes contained in the attribute set.</para>
0000000000000000000000000000000000000003334</refsection>
35
···17<refsynopsisdiv>
18 <cmdsynopsis>
19 <command>nixos-option</command>
20+ <arg>
21+ <option>-I</option>
22+ <replaceable>path</replaceable>
23+ </arg>
24+ <arg><option>--verbose</option></arg>
25+ <arg><option>--xml</option></arg>
26+ <arg choice="plain"><replaceable>option.name</replaceable></arg>
27 </cmdsynopsis>
28</refsynopsisdiv>
02930<refsection><title>Description</title>
31···3536<para>When the option name is not an option, the command prints the list of
37attributes contained in the attribute set.</para>
38+39+</refsection>
40+41+<refsection><title>Options</title>
42+43+<para>This command accepts the following options:</para>
44+45+<variablelist>
46+47+ <varlistentry>
48+ <term><option>-I</option> <replaceable>path</replaceable></term>
49+ <listitem>
50+ <para>
51+ This option is passed to the underlying
52+ <command>nix-instantiate</command> invocation.
53+ </para>
54+ </listitem>
55+ </varlistentry>
56+57+ <varlistentry>
58+ <term><option>--verbose</option></term>
59+ <listitem>
60+ <para>
61+ This option enables verbose mode, which currently is just
62+ the Bash <command>set</command> <option>-x</option> debug mode.
63+ </para>
64+ </listitem>
65+ </varlistentry>
66+67+ <varlistentry>
68+ <term><option>--xml</option></term>
69+ <listitem>
70+ <para>
71+ This option causes the output to be rendered as XML.
72+ </para>
73+ </listitem>
74+ </varlistentry>
75+76+</variablelist>
7778</refsection>
79
+24
nixos/doc/manual/release-notes/rl-1709.xml
···130 instead. Refer to the description of the options for more details.
131 </para>
132 </listitem>
000000000000000000000000133</itemizedlist>
134135<para>Other notable improvements:</para>
···130 instead. Refer to the description of the options for more details.
131 </para>
132 </listitem>
133+ <listitem>
134+ <para>
135+ <literal>tlsdate</literal> package and module were removed. This is due to the project
136+ being dead and not building with openssl 1.1.
137+ </para>
138+ </listitem>
139+ <listitem>
140+ <para>
141+ <literal>wvdial</literal> package and module were removed. This is due to the project
142+ being dead and not building with openssl 1.1.
143+ </para>
144+ </listitem>
145+ <listitem>
146+ <para>
147+ <literal>cc-wrapper</literal>'s setup-hook now exports a number of
148+ environment variables corresponding to binutils binaries,
149+ (e.g. <envar>LD</envar>, <envar>STRIP</envar>, <envar>RANLIB</envar>,
150+ etc). This is done to prevent packages' build systems guessing, which is
151+ harder to predict, especially when cross-compiling. However, some packages
152+ have broken due to this—their build systems either not supporting, or
153+ claiming to support without adequate testing, taking such environment
154+ variables as parameters.
155+ </para>
156+ </listitem>
157</itemizedlist>
158159<para>Other notable improvements:</para>
···92 '');
9394 assertions = [
95- { assertion = cfg.agent.enableSSHSupport && !config.programs.ssh.startAgent;
96 message = "You can't use ssh-agent and GnuPG agent with SSH support enabled at the same time!";
97 }
98 ];
···92 '');
9394 assertions = [
95+ { assertion = cfg.agent.enableSSHSupport -> !config.programs.ssh.startAgent;
96 message = "You can't use ssh-agent and GnuPG agent with SSH support enabled at the same time!";
97 }
98 ];
···22 ${optionalString (interfaces!=null) "allow-interfaces=${concatStringsSep "," interfaces}"}
23 ${optionalString (domainName!=null) "domain-name=${domainName}"}
24 allow-point-to-point=${yesNo allowPointToPoint}
02526 [wide-area]
27 enable-wide-area=${yesNo wideArea}
···163 Whether to enable the mDNS NSS (Name Service Switch) plug-in.
164 Enabling it allows applications to resolve names in the `.local'
165 domain by transparently querying the Avahi daemon.
000000000166 '';
167 };
168
···22 ${optionalString (interfaces!=null) "allow-interfaces=${concatStringsSep "," interfaces}"}
23 ${optionalString (domainName!=null) "domain-name=${domainName}"}
24 allow-point-to-point=${yesNo allowPointToPoint}
25+ ${optionalString (cacheEntriesMax!=null) "cache-entries-max=${toString cacheEntriesMax}"}
2627 [wide-area]
28 enable-wide-area=${yesNo wideArea}
···164 Whether to enable the mDNS NSS (Name Service Switch) plug-in.
165 Enabling it allows applications to resolve names in the `.local'
166 domain by transparently querying the Avahi daemon.
167+ '';
168+ };
169+170+ cacheEntriesMax = mkOption {
171+ default = null;
172+ type = types.nullOr types.int;
173+ description = ''
174+ Number of resource records to be cached per interface. Use 0 to
175+ disable caching. Avahi daemon defaults to 4096 if not set.
176 '';
177 };
178
···67 cfg = config.services.confluence;
89- pkg = pkgs.atlassian-confluence;
0000000000000001011in
12···75 description = "Protocol used at the proxy.";
76 };
77 };
0000000000000000000000000000000000007879 jrePackage = let
80 jreSwitch = unfree: free: if config.nixpkgs.config.allowUnfree or false then unfree else free;
···67 cfg = config.services.confluence;
89+ pkg = pkgs.atlassian-confluence.override (optionalAttrs cfg.sso.enable {
10+ enableSSO = cfg.sso.enable;
11+ crowdProperties = ''
12+ application.name ${cfg.sso.applicationName}
13+ application.password ${cfg.sso.applicationPassword}
14+ application.login.url ${cfg.sso.crowd}/console/
15+16+ crowd.server.url ${cfg.sso.crowd}/services/
17+ crowd.base.url ${cfg.sso.crowd}/
18+19+ session.isauthenticated session.isauthenticated
20+ session.tokenkey session.tokenkey
21+ session.validationinterval ${toString cfg.sso.validationInterval}
22+ session.lastvalidation session.lastvalidation
23+ '';
24+ });
2526in
27···90 description = "Protocol used at the proxy.";
91 };
92 };
93+94+ sso = {
95+ enable = mkEnableOption "SSO with Atlassian Crowd";
96+97+ crowd = mkOption {
98+ type = types.str;
99+ example = "http://localhost:8095/crowd";
100+ description = "Crowd Base URL without trailing slash";
101+ };
102+103+ applicationName = mkOption {
104+ type = types.str;
105+ example = "jira";
106+ description = "Exact name of this Confluence instance in Crowd";
107+ };
108+109+ applicationPassword = mkOption {
110+ type = types.str;
111+ description = "Application password of this Confluence instance in Crowd";
112+ };
113+114+ validationInterval = mkOption {
115+ type = types.int;
116+ default = 2;
117+ example = 0;
118+ description = ''
119+ Set to 0, if you want authentication checks to occur on each
120+ request. Otherwise set to the number of minutes between request
121+ to validate if the user is logged in or out of the Crowd SSO
122+ server. Setting this value to 1 or higher will increase the
123+ performance of Crowd's integration.
124+ '';
125+ };
126+ };
127+128+129130 jrePackage = let
131 jreSwitch = unfree: free: if config.nixpkgs.config.allowUnfree or false then unfree else free;
···67 cfg = config.services.jira;
89- pkg = pkgs.atlassian-jira;
0000000000000001011in
12···79 type = types.bool;
80 default = true;
81 description = "Whether the connections to the proxy should be considered secure.";
000000000000000000000000000000000082 };
83 };
84
···67 cfg = config.services.jira;
89+ pkg = pkgs.atlassian-jira.override {
10+ enableSSO = cfg.sso.enable;
11+ crowdProperties = ''
12+ application.name ${cfg.sso.applicationName}
13+ application.password ${cfg.sso.applicationPassword}
14+ application.login.url ${cfg.sso.crowd}/console/
15+16+ crowd.server.url ${cfg.sso.crowd}/services/
17+ crowd.base.url ${cfg.sso.crowd}/
18+19+ session.isauthenticated session.isauthenticated
20+ session.tokenkey session.tokenkey
21+ session.validationinterval ${toString cfg.sso.validationInterval}
22+ session.lastvalidation session.lastvalidation
23+ '';
24+ };
2526in
27···94 type = types.bool;
95 default = true;
96 description = "Whether the connections to the proxy should be considered secure.";
97+ };
98+ };
99+100+ sso = {
101+ enable = mkEnableOption "SSO with Atlassian Crowd";
102+103+ crowd = mkOption {
104+ type = types.str;
105+ example = "http://localhost:8095/crowd";
106+ description = "Crowd Base URL without trailing slash";
107+ };
108+109+ applicationName = mkOption {
110+ type = types.str;
111+ example = "jira";
112+ description = "Exact name of this JIRA instance in Crowd";
113+ };
114+115+ applicationPassword = mkOption {
116+ type = types.str;
117+ description = "Application password of this JIRA instance in Crowd";
118+ };
119+120+ validationInterval = mkOption {
121+ type = types.int;
122+ default = 2;
123+ example = 0;
124+ description = ''
125+ Set to 0, if you want authentication checks to occur on each
126+ request. Otherwise set to the number of minutes between request
127+ to validate if the user is logged in or out of the Crowd SSO
128+ server. Setting this value to 1 or higher will increase the
129+ performance of Crowd's integration.
130+ '';
131 };
132 };
133
···141 system.build = mkOption {
142 internal = true;
143 default = {};
0144 description = ''
145 Attribute set of derivations used to setup the system.
146 '';
···141 system.build = mkOption {
142 internal = true;
143 default = {};
144+ type = types.attrs;
145 description = ''
146 Attribute set of derivations used to setup the system.
147 '';
+1-1
nixos/modules/system/boot/systemd.nix
···593 services.logind.extraConfig = mkOption {
594 default = "";
595 type = types.lines;
596- example = "HandleLidSwitch=ignore";
597 description = ''
598 Extra config options for systemd-logind. See man logind.conf for
599 available options.
···593 services.logind.extraConfig = mkOption {
594 default = "";
595 type = types.lines;
596+ example = "IdleAction=lock";
597 description = ''
598 Extra config options for systemd-logind. See man logind.conf for
599 available options.
+1
nixos/modules/virtualisation/xen-dom0.nix
···16 virtualisation.xen.enable =
17 mkOption {
18 default = false;
019 description =
20 ''
21 Setting this option enables the Xen hypervisor, a
···16 virtualisation.xen.enable =
17 mkOption {
18 default = false;
19+ type = types.bool;
20 description =
21 ''
22 Setting this option enables the Xen hypervisor, a
···3132 meta = with stdenv.lib; {
33 description = "A language and IDE for electronic arts";
34- homepage = http://processing.org;
35 license = licenses.gpl2Plus;
36 maintainers = [ maintainers.goibhniu ];
37 platforms = platforms.linux;
···3132 meta = with stdenv.lib; {
33 description = "A language and IDE for electronic arts";
34+ homepage = https://processing.org;
35 license = licenses.gpl2Plus;
36 maintainers = [ maintainers.goibhniu ];
37 platforms = platforms.linux;
···6970 meta = with stdenv.lib; {
71 description = "3D Creation/Animation/Publishing System";
72- homepage = http://www.blender.org;
73 # They comment two licenses: GPLv2 and Blender License, but they
74 # say: "We've decided to cancel the BL offering for an indefinite period."
75 license = licenses.gpl2Plus;
···6970 meta = with stdenv.lib; {
71 description = "3D Creation/Animation/Publishing System";
72+ homepage = https://www.blender.org;
73 # They comment two licenses: GPLv2 and Blender License, but they
74 # say: "We've decided to cancel the BL offering for an indefinite period."
75 license = licenses.gpl2Plus;
···1-diff --git a/gale-install.in b/gale-install.in
2-index 50e8ad8..eec0ed2 100644
3---- a/gale-install.in
4-+++ b/gale-install.in
5-@@ -29,22 +29,78 @@ testkey_stdin() {
6- gkinfo -x 2>/dev/null | qgrep "^Public key: <$1>"
7- }
8-9--if [ -n "$GALE_SYS_DIR" ]; then
10-- SYS_DIR="$GALE_SYS_DIR"
11--elif [ -n "$sysconfdir" ]; then
12-- SYS_DIR="$sysconfdir/gale"
13-+INST_SYS_DIR="$sysconfdir/gale"
14-+
15-+if [ `id -u` -eq 0 ]; then
16-+ is_root=yes
17-+ SYS_DIR=/etc/gale
18-+else
19-+ is_root=no
20-+ SYS_DIR="$HOME/.gale"
21-+fi
22-+
23-+if [ -f /etc/NIXOS ]; then
24-+ is_nixos=yes
25-+else
26-+ is_nixos=no
27-+fi
28-+
29-+if [ -u /run/wrappers/bin/gksign ]; then
30-+ cat <<EOM
31-+
32-+Gale appears to have already been set up via the NixOS module system (check
33-+/etc/nixos/configuration.nix).
34-+
35-+EOM
36-+
37-+ exit 0
38-+fi
39-+
40-+if [ $is_root = yes ]; then
41-+ cat <<EOM
42-+
43-+You are running gale-install as root, so I'm going to assume you want to set up
44-+Gale for system-wide use. Unfortunately, Gale expects to be able to run the
45-+"gksign" program via setuid, and we can't change gksign's permissions once it's
46-+already been installed because the Nix store is immutable by design.
47-+
48-+EOM
49-+
50-+ if [ $is_nixos = no ]; then
51-+ cat <<EOM
52-+
53-+This isn't a NixOS system. Gale can only be installed for a single user on
54-+non-NixOS systems. If you want a system-wide installation, you'll have to
55-+install Gale the old-fashioned way. Sorry.
56-+
57-+EOM
58-+
59-+ exit 1
60-+ fi
61-+ cat <<EOM
62-+
63-+This script will generate a domain key for you, and after you get it signed, you
64-+can finish the setup process by configuring Gale via the NixOS module system
65-+(i.e. /etc/nixos/configuration.nix).
66-+
67-+EOM
68-+
69- else
70-- echo "Error: cannot locate Gale system configuration directory."
71-- exit 1
72-+ cat <<EOM
73-+
74-+Hi. You are running gale-install as a normal user, so I'm going to assume you
75-+want to set up Gale for your own (i.e. non-system-wide) use.
76-+
77-+EOM
78-+
79- fi
80-81--CONF="$SYS_DIR/conf"
82- umask 022
83--PATH="$bindir:$sbindir:$PATH:/usr/ucb"
84-+PATH="$bindir:$sbindir:$PATH"
85- export PATH
86-87--if [ -f "$CONF" ]; then
88-- exec 3<"$CONF"
89-+if [ -n "$SYS_DIR" ] && [ -f "$SYS_DIR/conf" ]; then
90-+ exec 3<"$SYS_DIR/conf"
91-92- while read var value <&3 ; do
93- case "$var" in
94-@@ -58,52 +114,14 @@ if [ -f "$CONF" ]; then
95- exec 3<&-
96- fi
97-98--USER="`whoami`"
99--if [ -z "$USER" ]; then
100-- echo "Error: cannot determine your username."
101-- exit 1
102--fi
103--
104--# -----------------------------------------------------------------------------
105--# check directory structure
106--
107--if [ ! -d "$SYS_DIR" ]; then
108-- echo "Error: Invalid SYS_DIR: \"$SYS_DIR\"."
109-- exit 1
110--fi
111--
112- # -----------------------------------------------------------------------------
113--# get settings for important variables: user, domain, server
114-+# get settings for important variables: domain, server
115-116--[ -n "$CONF_GALE_USER" ] && GALE_USER="$CONF_GALE_USER"
117- [ -n "$CONF_GALE_DOMAIN" ] && GALE_DOMAIN="$CONF_GALE_DOMAIN"
118- [ -n "$CONF_GALE_SERVER" ] && GALE_SERVER="$CONF_GALE_SERVER"
119-120--if [ -z "$GALE_USER" ]; then
121--cat << EOM
122--
123--Hi. You need to denote a user to own the Gale domain secret key. You must
124--trust this user with Gale authentication for your domain; the "gksign" program
125--will run as this user. I recommend using a special "gale" user; if you don't
126--have administrative privileges here, you'll probably have to use your own
127--account. I do not recommend the use of "root".
128--
129--No harm done if you stop this script now to set up such a user.
130--
131--EOM
132--
133-- printf "Enter the Gale username: "
134-- read GALE_USER
135-- if [ -z "$GALE_USER" ]; then
136-- echo "Error: Invalid username or no home dir: \"$GALE_USER\"."
137-- exit 1
138-- fi
139--else
140-- echo "Using \"$GALE_USER\" as the Gale owner."
141--fi
142--
143- if [ -z "$GALE_DOMAIN" ] ; then
144--cat << EOM
145-+ cat << EOM
146-147- You need to identify the name of your Gale domain for two purposes:
148-149-@@ -140,97 +158,56 @@ else
150- fi
151-152- # -----------------------------------------------------------------------------
153--# create configuration file
154--
155--if [ ! -f "$CONF" ]; then
156--cat > "$CONF" <<EOM
157--# $CONF -- created by Gale installer; edit to suit.
158--EOM
159-+# create configuration file (if this is a single-user setup)
160-+
161-+if [ $is_root = no ]; then
162-+ CONF="$SYS_DIR/conf"
163-+
164-+ if [ ! -d "$SYS_DIR" ]; then
165-+ run mkdir -m 0700 -p "$SYS_DIR"
166-+ run mkdir -m 0700 -p "$SYS_DIR/auth"
167-+ run mkdir -m 0755 -p "$SYS_DIR/auth/trusted"
168-+ run cp -f "$INST_SYS_DIR/auth/trusted/ROOT" "$SYS_DIR/auth/trusted"
169-+ run mkdir -m 0700 -p "$SYS_DIR/auth/private"
170-+ run mkdir -p "$SYS_DIR/auth/local" "$SYS_DIR/auth/cache"
171-+ fi
172-173--cat <<EOM
174-+ if [ ! -f "$CONF" ]; then
175-+ cat <<EOM
176-177- *** Creating "$CONF".
178- Examine and edit this file to your taste and local needs.
179- If you want to recreate it from scratch, remove it and re-run this.
180--EOM
181--fi
182--
183--[ -n "$CONF_GALE_USER" ] || cat >> "$CONF" <<EOM
184-185--# The user who owns the domain secret key. (Used in installation and upgrade)
186--GALE_USER $GALE_USER
187- EOM
188-189--[ -n "$CONF_GALE_DOMAIN" ] || cat >> "$CONF" << EOM
190-+ cat > "$CONF" <<EOF
191-+# $CONF -- created by Gale installer; edit to suit.
192-193- # The authentication domain to use. (Mandatory)
194- GALE_DOMAIN $GALE_DOMAIN
195--EOM
196--
197--# -----------------------------------------------------------------------------
198--# make gksign setuid
199-+EOF
200-201--gksign="$sbindir/gksign"
202--readlink="`which readlink 2>/dev/null`"
203--[ -x "$readlink" ] && gksignlink="`"$readlink" "$gksign" 2>/dev/null`"
204--[ -f "$gksignlink" ] && gksign="$gksignlink"
205--
206--echo ""
207--if copy chown "$GALE_USER" "$gksign" ; then
208-- :
209--else
210-- echo "*** We need to chown $GALE_USER '$gksign'."
211-- echo " Please run this script as a user that can do so,"
212-- echo " or do so yourself and re-run this script."
213-- exit 1
214-+ fi
215- fi
216--run chmod 4755 "$gksign"
217-218--# -----------------------------------------------------------------------------
219--# create a domain, if necessary
220-+if [ $is_root = no ]; then
221-+ GALE_SYS_DIR="$SYS_DIR"
222-+ export GALE_SYS_DIR
223-224--echo ""
225--if test -u "$gksign" || copy chmod u+s "$gksign" ; then
226-- :
227-+ testkey "$GALE_DOMAIN" && exit 0
228-+ echo "*** You lack a signed key for your domain, \"$GALE_DOMAIN\"."
229-+ GALE="$SYS_DIR"
230- else
231-- echo "*** We need to chmod u+s '$gksign'."
232-- echo " Please run this script as a user that can do so,"
233-- echo " or do so yourself and re-run this script."
234-- exit 1
235--fi
236--
237--testkey "$GALE_DOMAIN" && exit 0
238--echo "*** You lack a signed key for your domain, \"$GALE_DOMAIN\"."
239--
240--if [ "x$GALE_USER" != "x$USER" ]; then
241--cat <<EOM
242--Become user "$GALE_USER" (you are now "$USER") and run this script again
243--to create a new domain; contact your domain administrator if you wish to
244--become part of an existing domain.
245--EOM
246-- exit 1
247--fi
248--
249--if [ -z "$HOME" ]; then
250-- cd
251-- HOME="`pwd`"
252-- echo "Warning: \$HOME not set, assuming \"$HOME\"."
253--fi
254--
255--GALE="$HOME/.gale"
256--mkdir -p "$GALE"
257--if [ ! -w "$GALE" ]; then
258-- echo "Error: Cannot create \"$GALE\"."
259-- exit 1
260-+ GALE="`pwd`"
261- fi
262-263- unsigned="$GALE/$GALE_DOMAIN.unsigned"
264- signer="`echo "$GALE_DOMAIN" | sed 's%^[^.@:/]*[.@:/]%%'`"
265- [ -z "$signer" ] && signer="ROOT"
266-267--if [ -f "$unsigned" ]; then
268--
269--cat << EOM
270-+if [ $is_root = no ] && [ -f "$unsigned" ]; then
271-+ cat << EOM
272-273- Okay, so we've already been here. Last time, I created the file
274- "$unsigned" for you to have signed.
275-@@ -275,16 +252,12 @@ EOM
276- exit 1
277- fi
278-279--cat << EOM
280--
281--The domain should be properly configured now. Assuming users can access a
282--version of "gksign" setuid to "$GALE_USER" (this user), they should be
283--able to start running clients and generating IDs for themselves.
284-+ cat << EOM
285-286--The installation process is complete!
287-+The domain should be properly configured now. The installation process is
288-+complete!
289-290- EOM
291--
292- exit 0
293- fi
294-295-@@ -300,7 +273,10 @@ printf "Enter the description: "
296- read descr
297-298- echo "We will generate the key now. Have patience."
299--gkgen -r "$GALE/auth/private/$GALE_DOMAIN.gpri" \
300-+if [ $is_root = no ]; then
301-+ install_gpri=auth/private/
302-+fi
303-+gkgen -r "$GALE/${install_gpri}$GALE_DOMAIN.gpri" \
304- -u "$unsigned" "$GALE_DOMAIN" /"$descr" || exit 1
305-306- cat << EOM
307-@@ -311,8 +284,29 @@ the owner of the "$signer" domain through appropriate means.
308- Take care to preseve the file's binary data; you may need to uuencode it.
309-310- Assuming they trust you with your subdomain, they should pass the key through
311--"gksign" as a filter, returning the signed output to you. When you have this
312--signed key file available, re-run this script, and we will move on to the
313--next step.
314-+"gksign" as a filter, returning the signed output to you.
315-+
316-+EOM
317-+
318-+if [ $is_nixos = yes ]; then
319-+ cat <<EOM
320-+
321-+When you have this signed key file available, you can finish the setup process
322-+by placing the private key and signed public key in a directory (they will be
323-+copied) and setting "services.gale.keyPath" in /etc/nixos/configuration.nix.
324-325- EOM
326-+else
327-+ cat <<EOM
328-+
329-+When you have this signed key file available, re-run this script, and we will
330-+move on to the next step.
331-+
332-+*** IMPORTANT ***
333-+You must set GALE_SYS_DIR="$GALE_SYS_DIR" in your environment before re-running
334-+this script and before running any Gale programs once setup is finished! Make
335-+sure to set it now, and consider setting it via your shell initialization files
336-+so that you don't forget to do it next login.
337-+
338-+EOM
339-+fi
···6 namePrefix = "";
78 src = fetchurl {
9- url = "http://key-mon.googlecode.com/files/${name}.tar.gz";
10 sha256 = "1liz0dxcqmchbnl1xhlxkqm3gh76wz9jxdxn9pa7dy77fnrjkl5q";
11 };
12···20 '';
2122 meta = with stdenv.lib; {
23- homepage = http://code.google.com/p/key-mon;
24 description = "Utility to show live keyboard and mouse status for teaching and screencasts";
25 license = licenses.asl20;
26 maintainers = [ maintainers.goibhniu ];
···6 namePrefix = "";
78 src = fetchurl {
9+ url = "https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/key-mon/${name}.tar.gz";
10 sha256 = "1liz0dxcqmchbnl1xhlxkqm3gh76wz9jxdxn9pa7dy77fnrjkl5q";
11 };
12···20 '';
2122 meta = with stdenv.lib; {
23+ homepage = https://code.google.com/archive/p/key-mon;
24 description = "Utility to show live keyboard and mouse status for teaching and screencasts";
25 license = licenses.asl20;
26 maintainers = [ maintainers.goibhniu ];
+2-2
pkgs/applications/video/mpv/default.nix
···73let
74 # Purity: Waf is normally downloaded by bootstrap.py, but
75 # for purity reasons this behavior should be avoided.
76- wafVersion = "1.8.12";
77 waf = fetchurl {
78 urls = [ "http://waf.io/waf-${wafVersion}"
79 "http://www.freehackers.org/~tnagy/release/waf-${wafVersion}" ];
80- sha256 = "12y9c352zwliw0zk9jm2lhynsjcf5jy0k1qch1c1av8hnbm2pgq1";
81 };
82in stdenv.mkDerivation rec {
83 name = "mpv-${version}";
···73let
74 # Purity: Waf is normally downloaded by bootstrap.py, but
75 # for purity reasons this behavior should be avoided.
76+ wafVersion = "1.9.8";
77 waf = fetchurl {
78 urls = [ "http://waf.io/waf-${wafVersion}"
79 "http://www.freehackers.org/~tnagy/release/waf-${wafVersion}" ];
80+ sha256 = "1gsd3zza1wixv2vhvq3inp4vb71i41a1kbwqnwixhnvdmcmw8z8n";
81 };
82in stdenv.mkDerivation rec {
83 name = "mpv-${version}";
+1-1
pkgs/applications/video/shotcut/default.nix
···45 nixpkgs maintainer(s). If you wish to report any bugs upstream,
46 please use the official build from shotcut.org instead.
47 '';
48- homepage = http://shotcut.org;
49 license = licenses.gpl3;
50 maintainers = [ maintainers.goibhniu ];
51 platforms = platforms.linux;
···45 nixpkgs maintainer(s). If you wish to report any bugs upstream,
46 please use the official build from shotcut.org instead.
47 '';
48+ homepage = https://shotcut.org;
49 license = licenses.gpl3;
50 maintainers = [ maintainers.goibhniu ];
51 platforms = platforms.linux;
···1+#! @shell@
2+3+set -eu -o pipefail
4+5+path_backup="$PATH"
6+if [ -n "@coreutils_bin@" ]; then
7+ PATH="@coreutils_bin@/bin"
8+fi
9+10+declare -r recurThreshold=300
11+12+declare overflowCount=0
13+for ((n=0; n < $#; ++n)); do
14+ case "${!n}" in
15+ -l*) let overflowCount+=1 ;;
16+ -reexport-l*) let overflowCount+=1 ;;
17+ *) ;;
18+ esac
19+done
20+21+declare -a allArgs=()
22+23+if (( "$overflowCount" <= "$recurThreshold" )); then
24+ allArgs=("$@")
25+else
26+ declare -a childrenLookup=() childrenLink=()
27+28+ while (( $# )); do
29+ case "$1" in
30+ -L/*)
31+ childrenLookup+=("$1")
32+ allArgs+=("$1")
33+ ;;
34+ -L)
35+ echo "cctools LD does not support '-L foo' or '-l foo'" >&2
36+ exit 1
37+ ;;
38+ -l)
39+ echo "cctools LD does not support '-L foo' or '-l foo'" >&2
40+ exit 1
41+ ;;
42+ -lazy_library | -lazy_framework | -lto_library)
43+ # We aren't linking any "azy_library", "to_library", etc.
44+ allArgs+=("$1")
45+ ;;
46+ -lazy-l | -weak-l) allArgs+=("$1") ;;
47+ # We can't so easily prevent header issues from these.
48+ -lSystem) allArgs+=("$1") ;;
49+ # Special case as indirection seems like a bad idea for something
50+ # so fundamental. Can be removed for simplicity.
51+ -l?* | -reexport-l?*) childrenLink+=("$1") ;;
52+ *) allArgs+=("$1") ;;
53+ esac
54+55+ shift
56+ done
57+58+ declare n=0
59+ while (( $n < "${#childrenLink[@]}" )); do
60+ if [[ "${childrenLink[n]}" = -l* ]]; then
61+ childrenLink[n]="-reexport${childrenLink[n]}"
62+ fi
63+ let ++n
64+ done
65+ unset n
66+67+ declare -r outputNameLibless=$(basename $( \
68+ if [[ -z "${outputName:+isUndefined}" ]]; then
69+ echo unnamed
70+ elif [[ "${outputName:0:3}" = lib ]]; then
71+ echo "${outputName:3}"
72+ else
73+ echo "${outputName}"
74+ fi))
75+ declare -ra children=("$outputNameLibless-reexport-delegate-0" \
76+ "$outputNameLibless-reexport-delegate-1")
77+78+ mkdir -p "$out/lib"
79+80+ PATH="$PATH:@out@/bin"
81+82+ symbolBloatObject=$outputNameLibless-symbol-hack.o
83+ if [[ ! -e $symbolBloatObject ]]; then
84+ printf '.private_extern _______child_hack_foo\nchild_hack_foo:\n' \
85+ | @binPrefix@as -- -o $symbolBloatObject
86+ fi
87+88+ # first half of libs
89+ @binPrefix@ld -macosx_version_min $MACOSX_DEPLOYMENT_TARGET -arch x86_64 -dylib \
90+ -o "$out/lib/lib${children[0]}.dylib" \
91+ -install_name "$out/lib/lib${children[0]}.dylib" \
92+ "${childrenLookup[@]}" "$symbolBloatObject" \
93+ "${childrenLink[@]:0:$((${#childrenLink[@]} / 2 ))}"
94+95+ # second half of libs
96+ @binPrefix@ld -macosx_version_min $MACOSX_DEPLOYMENT_TARGET -arch x86_64 -dylib \
97+ -o "$out/lib/lib${children[1]}.dylib" \
98+ -install_name "$out/lib/lib${children[1]}.dylib" \
99+ "${childrenLookup[@]}" "$symbolBloatObject" \
100+ "${childrenLink[@]:$((${#childrenLink[@]} / 2 ))}"
101+102+ allArgs+=("-L$out/lib" "-l${children[0]}" "-l${children[1]}")
103+fi
104+105+PATH="$path_backup"
106+exec @prog@ "${allArgs[@]}"
+16-9
pkgs/build-support/docker/default.nix
···497 # Use the temp folder we've been working on to create a new image.
498 mv temp image/$layerID
499500- # Create image configuration file (used by registry v2) by using
501- # the configuration of the last layer
502- SHA_ARRAY=$(find ./ -name layer.tar | xargs sha256sum | cut -d" " -f1 | xargs -I{} echo -n '"sha256:{}" ' | sed 's/" "/","/g' | awk '{ print "["$1"]" }')
503- jq ". + {\"rootfs\": {\"diff_ids\": $SHA_ARRAY, \"type\": \"layers\"}}" image/$layerID/json > config.json
504- CONFIG_SHA=$(sha256sum config.json | cut -d ' ' -f1)
505- mv config.json image/$CONFIG_SHA.json
000000506507- # Create image manifest
508- LAYER_PATHS=$(find image/ -name layer.tar -printf '"%P" ' | sed 's/" "/","/g')
509- jq -n "[{\"Config\":\"$CONFIG_SHA.json\",\"RepoTags\":[\"$imageName:$imageTag\"],\"Layers\":[$LAYER_PATHS]}]" > image/manifest.json
0510511 # Store the json under the name image/repositories.
512 jshon -n object \
···497 # Use the temp folder we've been working on to create a new image.
498 mv temp image/$layerID
499500+ # Create image json and image manifest
501+ imageJson=$(cat ${baseJson} | jq ". + {\"rootfs\": {\"diff_ids\": [], \"type\": \"layers\"}}")
502+ manifestJson=$(jq -n "[{\"RepoTags\":[\"$imageName:$imageTag\"]}]")
503+ currentID=$layerID
504+ while [[ -n "$currentID" ]]; do
505+ layerChecksum=$(sha256sum image/$currentID/layer.tar | cut -d ' ' -f1)
506+ imageJson=$(echo "$imageJson" | jq ".history |= [{\"created\": \"${created}\"}] + .")
507+ imageJson=$(echo "$imageJson" | jq ".rootfs.diff_ids |= [\"sha256:$layerChecksum\"] + .")
508+ manifestJson=$(echo "$manifestJson" | jq ".[0].Layers |= [\"$currentID/layer.tar\"] + .")
509+510+ currentID=$(cat image/$currentID/json | (jshon -e parent -u 2>/dev/null || true))
511+ done
512513+ imageJsonChecksum=$(echo "$imageJson" | sha256sum | cut -d ' ' -f1)
514+ echo "$imageJson" > "image/$imageJsonChecksum.json"
515+ manifestJson=$(echo "$manifestJson" | jq ".[0].Config = \"$imageJsonChecksum.json\"")
516+ echo "$manifestJson" > image/manifest.json
517518 # Store the json under the name image/repositories.
519 jshon -n object \
+2-1
pkgs/build-support/emacs/wrapper.nix
···80 linkPath "$1" "share/emacs/site-lisp" "share/emacs/site-lisp"
81 }
8283- for pkg in $requires; do
084 linkEmacsPackage $pkg
85 done
86
···80 linkPath "$1" "share/emacs/site-lisp" "share/emacs/site-lisp"
81 }
8283+ # Iterate over the array of inputs (avoiding nix's own interpolation)
84+ for pkg in "''${requires[@]}"; do
85 linkEmacsPackage $pkg
86 done
87
···39 '';
4041 preFixup = with gnome3; ''
00042 for i in $out/share/applications/*; do
43 substituteInPlace $i --replace "gnome-control-center" "$out/bin/gnome-control-center"
44 done
···39 '';
4041 preFixup = with gnome3; ''
42+ gappsWrapperArgs+=(
43+ --prefix XDG_DATA_DIRS : "${gnome3.gnome_themes_standard}/share:${sound-theme-freedesktop}/share"
44+ )
45 for i in $out/share/applications/*; do
46 substituteInPlace $i --replace "gnome-control-center" "$out/bin/gnome-control-center"
47 done
···25# * enabling/disabling certain features in packages
26#
27# If you have an override of this kind, see configuration-common.nix instead.
28-{ pkgs }:
2930-with import ./lib.nix { inherit pkgs; };
3132# All of the overrides in this set should look like:
33#
···25# * enabling/disabling certain features in packages
26#
27# If you have an override of this kind, see configuration-common.nix instead.
28+{ pkgs, haskellLib }:
2930+with haskellLib;
3132# All of the overrides in this set should look like:
33#
···1# This expression takes a file like `hackage-packages.nix` and constructs
2# a full package set out of that.
34-# required dependencies:
5-{ pkgs, stdenv, all-cabal-hashes }:
67-# arguments:
8-# * ghc package to use
9-# * package-set: a function that takes { pkgs, stdenv, callPackage } as first arg and `self` as second
10-# * extensible-self: the final, fully overriden package set usable with the nixpkgs fixpoint overriding functionality
11-{ ghc, package-set, extensible-self }:
000000000000001213# return value: a function from self to the package set
14self: let
1516 inherit (stdenv.lib) fix' extends makeOverridable;
17- inherit (import ./lib.nix { inherit pkgs; }) overrideCabal;
1819 mkDerivationImpl = pkgs.callPackage ./generic-builder.nix {
20 inherit stdenv;
···1# This expression takes a file like `hackage-packages.nix` and constructs
2# a full package set out of that.
34+{ # package-set used for non-haskell dependencies (all of nixpkgs)
5+ pkgs
67+, # stdenv to use for building haskell packages
8+ stdenv
9+10+, haskellLib
11+12+, # hashes for downloading Hackage packages
13+ all-cabal-hashes
14+15+, # compiler to use
16+ ghc
17+18+, # A function that takes `{ pkgs, stdenv, callPackage }` as the first arg and `self`
19+ # as second, and returns a set of haskell packages
20+ package-set
21+22+, # The final, fully overriden package set usable with the nixpkgs fixpoint
23+ # overriding functionality
24+ extensible-self
25+}:
2627# return value: a function from self to the package set
28self: let
2930 inherit (stdenv.lib) fix' extends makeOverridable;
31+ inherit (haskellLib) overrideCabal;
3233 mkDerivationImpl = pkgs.callPackage ./generic-builder.nix {
34 inherit stdenv;
···26 ] ++ optional (gtkVersion != null) (if gtkVersion == "2" then gtk2 else gtk3);
2728 postPatch = ''
29+ for f in {configure,ltmain.sh,m4/libtool.m4}; do
30+ substituteInPlace $f \
31+ --replace /usr/bin/file ${file}/bin/file
32+ done
33 '';
3435 # https://projects.archlinux.org/svntogit/community.git/tree/trunk/PKGBUILD?h=packages/libdbusmenu
+3-17
pkgs/development/libraries/libevent/default.nix
···1{ stdenv, fetchurl, openssl, findutils }:
23-let version = "2.0.22"; in
4-stdenv.mkDerivation {
5 name = "libevent-${version}";
067 src = fetchurl {
8 url = "https://github.com/libevent/libevent/releases/download/release-${version}-stable/libevent-${version}-stable.tar.gz";
9- sha256 = "18qz9qfwrkakmazdlwxvjmw8p76g70n3faikwvdwznns1agw9hki";
10 };
11-12- prePatch = let
13- # https://lwn.net/Vulnerabilities/714581/
14- debian = fetchurl {
15- url = "http://http.debian.net/debian/pool/main/libe/libevent/"
16- + "libevent_2.0.21-stable-3.debian.tar.xz";
17- sha256 = "0b2syswiq3cvfbdvi4lbca15c31lilxnahax4a4b4qxi5fcab7h5";
18- };
19- in ''
20- tar xf '${debian}'
21- patches="$patches $(cat debian/patches/series | grep -v '^$\|^#' \
22- | grep -v '^20d6d445.patch' \
23- | grep -v '^dh-autoreconf' | sed 's|^|debian/patches/|')"
24- '';
2526 # libevent_openssl is moved into its own output, so that openssl isn't present
27 # in the default closure.
···1{ stdenv, fetchurl, openssl, findutils }:
23+stdenv.mkDerivation rec {
04 name = "libevent-${version}";
5+ version = "2.1.8";
67 src = fetchurl {
8 url = "https://github.com/libevent/libevent/releases/download/release-${version}-stable/libevent-${version}-stable.tar.gz";
9+ sha256 = "1hhxnxlr0fsdv7bdmzsnhdz16fxf3jg2r6vyljcl3kj6pflcap4n";
10 };
000000000000001112 # libevent_openssl is moved into its own output, so that openssl isn't present
13 # in the default closure.
···14 sha256 = "1bd0rv93pxlv58c0x1d4dsjq4pg5qwrm2p7qw83pca7izlncgvfr";
15 };
160017 meta = with stdenv.lib; {
18 description = "A tool for creating identical machine images for multiple platforms from a single source configuration";
19 homepage = http://www.packer.io;
···14 sha256 = "1bd0rv93pxlv58c0x1d4dsjq4pg5qwrm2p7qw83pca7izlncgvfr";
15 };
1617+ goDeps = ./deps.nix;
18+19 meta = with stdenv.lib; {
20 description = "A tool for creating identical machine images for multiple platforms from a single source configuration";
21 homepage = http://www.packer.io;
···167 BONDING m
168 NET_L3_MASTER_DEV? y
169 NET_FOU_IP_TUNNELS? y
0170171 # Wireless networking.
172 CFG80211_WEXT? y # Without it, ipw2200 drivers don't build
···167 BONDING m
168 NET_L3_MASTER_DEV? y
169 NET_FOU_IP_TUNNELS? y
170+ IP_NF_TARGET_REDIRECT m
171172 # Wireless networking.
173 CFG80211_WEXT? y # Without it, ipw2200 drivers don't build
···1+{ stdenv, fetchFromGitHub }:
2+3+stdenv.mkDerivation rec {
4+ name = "flockit-${version}";
5+ version = "2012-08-11";
6+7+ src = fetchFromGitHub {
8+ owner = "smerritt";
9+ repo = "flockit";
10+ rev = "5c2b2092f8edcc8e3e2eb6ef66c968675dbfa686";
11+ sha256 = "0vajck9q2677gpn9a4flkyz7mw69ql1647cjwqh834nrcr2b5164";
12+ };
13+14+ installPhase = ''
15+ mkdir -p $out/lib $out/bin
16+ cp ./libflockit.so $out/lib
17+18+ (cat <<EOI
19+ #!/bin/sh
20+ env LD_PRELOAD="$out/lib/libflockit.so" FLOCKIT_FILE_PREFIX=\$1 \''${@:2}
21+ EOI
22+ ) > $out/bin/flockit
23+ chmod +x $out/bin/flockit
24+ '';
25+26+ meta = with stdenv.lib; {
27+ description = "LD_PRELOAD shim to add file locking to programs that don't do it (I'm looking at you, rsync!)";
28+ longDescription = ''
29+ This library and tool exists solely because rsync doesn't have file locking.
30+31+ It's not used like a normal library; you don't link against it, and you
32+ don't have to patch your source code to use it. It's inserted between your
33+ program and its libraries by use of LD_PRELOAD.
34+35+ For example:
36+37+ $ env LD_PRELOAD=$(nix-build -A pkgs.flockit)/lib/libflockit.so FLOCKIT_FILE_PREFIX=test rsync SRC DEST
38+39+ Besides the library a handy executable is provided which can simplify the above to:
40+41+ $ $(nix-build -A pkgs.flockit)/bin/flockit test rsync SRC DEST
42+43+ Also see the following blog post:
44+ https://www.swiftstack.com/blog/2012/08/15/old-school-monkeypatching/
45+ '';
46+ homepage = https://github.com/smerritt/flockit;
47+ license = licenses.asl20;
48+ platforms = platforms.linux;
49+ maintainers = [ maintainers.basvandijk ];
50+ };
51+}
+3-3
pkgs/tools/backup/restic/default.nix
···23buildGoPackage rec {
4 name = "restic-${version}";
5- version = "0.7.0";
67 goPackagePath = "github.com/restic/restic";
8···10 owner = "restic";
11 repo = "restic";
12 rev = "v${version}";
13- sha256 = "1whzzma2c199i604qy1a807zhi8qgri1r9bbxl5l7wlfh7x0n6sd";
14 };
1516 buildPhase = ''
···26 meta = with stdenv.lib; {
27 homepage = https://restic.github.io;
28 description = "A backup program that is fast, efficient and secure";
29- platforms = platforms.linux;
30 license = licenses.bsd2;
31 maintainers = [ maintainers.mbrgm ];
32 };
···23buildGoPackage rec {
4 name = "restic-${version}";
5+ version = "0.7.1";
67 goPackagePath = "github.com/restic/restic";
8···10 owner = "restic";
11 repo = "restic";
12 rev = "v${version}";
13+ sha256 = "07614wp0b6kjl8lq3qir271g0s2h8wvpdh43wsz1k6bip60nmqbf";
14 };
1516 buildPhase = ''
···26 meta = with stdenv.lib; {
27 homepage = https://restic.github.io;
28 description = "A backup program that is fast, efficient and secure";
29+ platforms = platforms.linux ++ platforms.darwin;
30 license = licenses.bsd2;
31 maintainers = [ maintainers.mbrgm ];
32 };
···20 new font where all glyphs are bytecode hinted using the
21 information given by FreeType’s auto-hinting module.
22 '';
23- homepage = http://www.freetype.org/ttfautohint/;
24 license = licenses.gpl2Plus; # or the FreeType License (BSD + advertising clause)
25 maintainers = with maintainers; [ goibhniu ndowens ];
26 platforms = platforms.linux;
···20 new font where all glyphs are bytecode hinted using the
21 information given by FreeType’s auto-hinting module.
22 '';
23+ homepage = https://www.freetype.org/ttfautohint;
24 license = licenses.gpl2Plus; # or the FreeType License (BSD + advertising clause)
25 maintainers = with maintainers; [ goibhniu ndowens ];
26 platforms = platforms.linux;