···88[nixpkgs-channels](https://github.com/NixOS/nixpkgs-channels.git) as a remote:
991010```
1111-% git remote add channels git://github.com/NixOS/nixpkgs-channels.git
1111+% git remote add channels https://github.com/NixOS/nixpkgs-channels.git
1212```
13131414For stability and maximum binary package support, it is recommended to maintain
···103103 <itemizedlist>
104104 <listitem>
105105 <para>
106106- mention-bot usually notifies GitHub users based on the submitted changes,
107107- but it can happen that it misses some of the package maintainers.
106106+ <link xlink:href="https://help.github.com/articles/about-codeowners/">CODEOWNERS</link>
107107+ will make GitHub notify users based on the submitted changes, but it can
108108+ happen that it misses some of the package maintainers.
108109 </para>
109110 </listitem>
110111 </itemizedlist>
···376377 <itemizedlist>
377378 <listitem>
378379 <para>
379379- Mention-bot notify GitHub users based on the submitted changes, but it
380380- can happen that it miss some of the package maintainers.
380380+ <link xlink:href="https://help.github.com/articles/about-codeowners/">CODEOWNERS</link>
381381+ will make GitHub notify users based on the submitted changes, but it can
382382+ happen that it misses some of the package maintainers.
381383 </para>
382384 </listitem>
383385 </itemizedlist>
···1414xlink:href="http://nixos.org/nixpkgs/manual">Nixpkgs
1515 manual</link>. In short, you clone Nixpkgs:
1616<screen>
1717-$ git clone git://github.com/NixOS/nixpkgs.git
1717+$ git clone https://github.com/NixOS/nixpkgs
1818$ cd nixpkgs
1919</screen>
2020 Then you write and test the package as described in the Nixpkgs manual.
···1111 modify NixOS, however, you should check out the latest sources from Git. This
1212 is as follows:
1313<screen>
1414-$ git clone git://github.com/NixOS/nixpkgs.git
1414+$ git clone https://github.com/NixOS/nixpkgs
1515$ cd nixpkgs
1616-$ git remote add channels git://github.com/NixOS/nixpkgs-channels.git
1616+$ git remote add channels https://github.com/NixOS/nixpkgs-channels
1717$ git remote update channels
1818</screen>
1919 This will check out the latest Nixpkgs sources to
+22
nixos/doc/manual/release-notes/rl-1809.xml
···7575 <itemizedlist>
7676 <listitem>
7777 <para>
7878+ There is a new <varname>services.foundationdb</varname> module for deploying
7979+ <link xlink:href="https://www.foundationdb.org">FoundationDB</link> clusters.
8080+ </para>
8181+ </listitem>
8282+ <listitem>
8383+ <para>
7884 When enabled the <literal>iproute2</literal> will copy the files expected
7985 by ip route (e.g., <filename>rt_tables</filename>) in
8086 <filename>/run/iproute2</filename>. This allows to write aliases for
8187 routing tables for instance.
8888+ </para>
8989+ </listitem>
9090+ <listitem>
9191+ <para>
9292+ <varname>services.strongswan-swanctl</varname>
9393+ is a modern replacement for <varname>services.strongswan</varname>.
9494+ You can use either one of them to setup IPsec VPNs but not both at the same time.
9595+ </para>
9696+ <para>
9797+ <varname>services.strongswan-swanctl</varname> uses the
9898+ <link xlink:href="https://wiki.strongswan.org/projects/strongswan/wiki/swanctl">swanctl</link>
9999+ command which uses the modern
100100+ <link xlink:href="https://github.com/strongswan/strongswan/blob/master/src/libcharon/plugins/vici/README.md">vici</link>
101101+ <emphasis>Versatile IKE Configuration Interface</emphasis>.
102102+ The deprecated <literal>ipsec</literal> command used in <varname>services.strongswan</varname> is using the legacy
103103+ <link xlink:href="https://github.com/strongswan/strongswan/blob/master/README_LEGACY.md">stroke configuration interface</link>.
82104 </para>
83105 </listitem>
84106 </itemizedlist>
···537537 boot.loader.systemd-boot.enable = true;
538538 boot.loader.efi.canTouchEfiVariables = true;
539539EOF
540540+ } elsif (-e "/boot/extlinux") {
541541+ $bootLoaderConfig = <<EOF;
542542+ # Use the extlinux boot loader. (NixOS wants to enable GRUB by default)
543543+ boot.loader.grub.enable = false;
544544+ # Enables the generation of /boot/extlinux/extlinux.conf
545545+ boot.loader.generic-extlinux-compatible.enable = true;
546546+EOF
540547 } elsif ($virt ne "systemd-nspawn") {
541548 $bootLoaderConfig = <<EOF;
542549 # Use the GRUB 2 boot loader.
+2
nixos/modules/misc/ids.nix
···323323 mapred = 296;
324324 hadoop = 297;
325325 hydron = 298;
326326+ cfssl = 299;
326327327328 # When adding a uid, make sure it doesn't match an existing gid. And don't use uids above 399!
328329···606607 mapred = 296;
607608 hadoop = 297;
608609 hydron = 298;
610610+ cfssl = 299;
609611610612 # When adding a gid, make sure it doesn't match an existing
611613 # uid. Users and groups with the same name should have equal
···5555 };
56565757 musicDirectory = mkOption {
5858- type = types.path;
5858+ type = with types; either path (strMatching "(http|https|nfs|smb)://.+");
5959 default = "${cfg.dataDir}/music";
6060 defaultText = ''''${dataDir}/music'';
6161 description = ''
6262- The directory where mpd reads music from.
6262+ The directory or NFS/SMB network share where mpd reads music from.
6363 '';
6464 };
6565
+42-10
nixos/modules/services/databases/foundationdb.xml
···12121313<para><emphasis>Maintainer:</emphasis> Austin Seipp</para>
14141515-<para><emphasis>Available version(s):</emphasis> 5.1.x</para>
1515+<para><emphasis>Available version(s):</emphasis> 5.1.x, 5.2.x, 6.0.x</para>
16161717-<para>FoundationDB (or "FDB") is a distributed, open source, high performance,
1818-transactional key-value store. It can store petabytes of data and deliver
1919-exceptional performance while maintaining consistency and ACID semantics
2020-(serializable transactions) over a large cluster.</para>
1717+<para>FoundationDB (or "FDB") is an open source, distributed, transactional
1818+key-value store.</para>
21192220<section><title>Configuring and basic setup</title>
2321···26242725<programlisting>
2826services.foundationdb.enable = true;
2929-services.foundationdb.package = pkgs.foundationdb51; # FoundationDB 5.1.x
2727+services.foundationdb.package = pkgs.foundationdb52; # FoundationDB 5.2.x
3028</programlisting>
3129</para>
32303331<para>The <option>services.foundationdb.package</option> option is required,
3434-and must always be specified. Because FoundationDB network protocols and
3232+and must always be specified. Due to the fact FoundationDB network protocols and
3533on-disk storage formats may change between (major) versions, and upgrades must
3634be explicitly handled by the user, you must always manually specify this
3735yourself so that the NixOS module will use the proper version. Note that minor,
···6765...
68666967fdb>
6868+</programlisting>
6969+</para>
7070+7171+<para>You can also write programs using the available client libraries.
7272+For example, the following Python program can be run in order to grab the
7373+cluster status, as a quick example. (This example uses
7474+<command>nix-shell</command> shebang support to automatically supply the
7575+necessary Python modules).
7676+7777+<programlisting>
7878+a@link> cat fdb-status.py
7979+#! /usr/bin/env nix-shell
8080+#! nix-shell -i python -p python pythonPackages.foundationdb52
8181+8282+import fdb
8383+import json
8484+8585+def main():
8686+ fdb.api_version(520)
8787+ db = fdb.open()
8888+8989+ @fdb.transactional
9090+ def get_status(tr):
9191+ return str(tr['\xff\xff/status/json'])
9292+9393+ obj = json.loads(get_status(db))
9494+ print('FoundationDB available: %s' % obj['client']['database_status']['available'])
9595+9696+if __name__ == "__main__":
9797+ main()
9898+a@link> chmod +x fdb-status.py
9999+a@link> ./fdb-status.py
100100+FoundationDB available: True
101101+a@link>
70102</programlisting>
71103</para>
72104···295327 individual <command>fdbserver</command> processes. Currently, all server
296328 processes inherit all the global <command>fdbmonitor</command> settings.
297329 </para></listitem>
298298- <listitem><para>Python bindings are not currently installed.</para></listitem>
299330 <listitem><para>Ruby bindings are not currently installed.</para></listitem>
300331 <listitem><para>Go bindings are not currently installed.</para></listitem>
301332</itemizedlist>
···306337307338<para>NixOS's FoundationDB module allows you to configure all of the most
308339relevant configuration options for <command>fdbmonitor</command>, matching it
309309-quite closely. For a complete list of all options, check <command>man
310310-configuration.nix</command>.</para>
340340+quite closely. A complete list of options for the FoundationDB module may be
341341+found <link linkend="opt-services.foundationdb.enable">here</link>. You should
342342+also read the FoundationDB documentation as well.</para>
311343312344</section>
313345
···108108 };
109109110110 webapps = mkOption {
111111- type = types.listOf types.package;
111111+ type = types.listOf types.path;
112112 default = [ tomcat.webapps ];
113113 defaultText = "[ pkgs.tomcat85.webapps ]";
114114 description = "List containing WAR files or directories with WAR files which are web applications to be deployed on Tomcat";
···118118 type = types.listOf (types.submodule {
119119 options = {
120120 name = mkOption {
121121- type = types.listOf types.str;
121121+ type = types.str;
122122 description = "name of the virtualhost";
123123+ };
124124+ webapps = mkOption {
125125+ type = types.listOf types.path;
126126+ description = ''
127127+ List containing web application WAR files and/or directories containing
128128+ web applications and configuration files for the virtual host.
129129+ '';
123130 default = [];
124131 };
125132 };
···9696 else if any (w: w.name == defaultDM) cfg.session.list then
9797 defaultDM
9898 else
9999- throw ''
100100- Default desktop manager (${defaultDM}) not found.
101101- Probably you want to change
102102- services.xserver.desktopManager.default = "${defaultDM}";
103103- to one of
9999+ builtins.trace ''
100100+ Default desktop manager (${defaultDM}) not found at evaluation time.
101101+ These are the known valid session names:
104102 ${concatMapStringsSep "\n " (w: "services.xserver.desktopManager.default = \"${w.name}\";") cfg.session.list}
105105- '';
103103+ It's also possible the default can be found in one of these packages:
104104+ ${concatMapStringsSep "\n " (p: p.name) config.services.xserver.displayManager.extraSessionFilePackages}
105105+ '' defaultDM;
106106 };
107107108108 };
···2727 Xft.hintstyle: hintslight
2828 '';
29293030- # file provided by services.xserver.displayManager.session.script
3131- xsession = wm: dm: pkgs.writeScript "xsession"
3030+ # file provided by services.xserver.displayManager.session.wrapper
3131+ xsessionWrapper = pkgs.writeScript "xsession-wrapper"
3232 ''
3333 #! ${pkgs.bash}/bin/bash
34343535- # Expected parameters:
3636- # $1 = <desktop-manager>+<window-manager>
3737-3838- # Actual parameters (FIXME):
3939- # SDDM is calling this script like the following:
4040- # $1 = /nix/store/xxx-xsession (= $0)
4141- # $2 = <desktop-manager>+<window-manager>
4242- # SLiM is using the following parameter:
4343- # $1 = /nix/store/xxx-xsession <desktop-manager>+<window-manager>
4444- # LightDM keeps the double quotes:
4545- # $1 = /nix/store/xxx-xsession "<desktop-manager>+<window-manager>"
4646- # The fake/auto display manager doesn't use any parameters and GDM is
4747- # broken.
4848- # If you want to "debug" this script don't print the parameters to stdout
4949- # or stderr because this script will be executed multiple times and the
5050- # output won't be visible in the log when the script is executed for the
5151- # first time (e.g. append them to a file instead)!
5252-5353- # All of the above cases are handled by the following hack (FIXME).
5454- # Since this line is *very important* for *all display managers* it is
5555- # very important to test changes to the following line with all display
5656- # managers:
5757- if [ "''${1:0:1}" = "/" ]; then eval exec "$1" "$2" ; fi
5858-5959- # Now it should be safe to assume that the script was called with the
6060- # expected parameters.
3535+ # Shared environment setup for graphical sessions.
61366237 . /etc/profile
6338 cd "$HOME"
64396565- # The first argument of this script is the session type.
6666- sessionType="$1"
6767- if [ "$sessionType" = default ]; then sessionType=""; fi
6868-6940 ${optionalString cfg.startDbusSession ''
7041 if test -z "$DBUS_SESSION_BUS_ADDRESS"; then
7171- exec ${pkgs.dbus.dbus-launch} --exit-with-session "$0" "$sessionType"
4242+ exec ${pkgs.dbus.dbus-launch} --exit-with-session "$0" "$@"
7243 fi
7344 ''}
74457546 ${optionalString cfg.displayManager.job.logToJournal ''
7647 if [ -z "$_DID_SYSTEMD_CAT" ]; then
7748 export _DID_SYSTEMD_CAT=1
7878- exec ${config.systemd.package}/bin/systemd-cat -t xsession "$0" "$sessionType"
4949+ exec ${config.systemd.package}/bin/systemd-cat -t xsession "$0" "$@"
7950 fi
8051 ''}
8152···9061 }
91629263 # Publish access credentials in the root window.
9393- ${config.hardware.pulseaudio.package.out}/bin/pactl load-module module-x11-publish "display=$DISPLAY"
6464+ if ${config.hardware.pulseaudio.package.out}/bin/pulseaudio --dump-modules | grep module-x11-publish &> /dev/null; then
6565+ ${config.hardware.pulseaudio.package.out}/bin/pactl load-module module-x11-publish "display=$DISPLAY"
6666+ fi
9467 ''}
95689669 # Tell systemd about our $DISPLAY and $XAUTHORITY.
···10174 ${config.systemd.package}/bin/systemctl --user import-environment DISPLAY XAUTHORITY DBUS_SESSION_BUS_ADDRESS
1027510376 # Load X defaults.
7777+ # FIXME: Check XDG_SESSION_TYPE against x11
10478 ${xorg.xrdb}/bin/xrdb -merge ${xresourcesXft}
10579 if test -e ~/.Xresources; then
10680 ${xorg.xrdb}/bin/xrdb -merge ~/.Xresources
···132106 # Allow the user to setup a custom session type.
133107 if test -x ~/.xsession; then
134108 exec ~/.xsession
109109+ fi
110110+111111+ if test "$1"; then
112112+ # Run the supplied session command. Remove any double quotes with eval.
113113+ eval exec "$@"
135114 else
136136- if test "$sessionType" = "custom"; then
137137- sessionType="" # fall-thru if there is no ~/.xsession
138138- fi
115115+ # Fall back to the default window/desktopManager
116116+ exec ${cfg.displayManager.session.script}
139117 fi
118118+ '';
119119+120120+ # file provided by services.xserver.displayManager.session.script
121121+ xsession = wm: dm: pkgs.writeScript "xsession"
122122+ ''
123123+ #! ${pkgs.bash}/bin/bash
124124+125125+ # Legacy session script used to construct .desktop files from
126126+ # `services.xserver.displayManager.session` entries. Called from
127127+ # `sessionWrapper`.
128128+129129+ # Expected parameters:
130130+ # $1 = <desktop-manager>+<window-manager>
131131+132132+ # The first argument of this script is the session type.
133133+ sessionType="$1"
134134+ if [ "$sessionType" = default ]; then sessionType=""; fi
140135141136 # The session type is "<desktop-manager>+<window-manager>", so
142137 # extract those (see:
···186181 allowSubstitutes = false;
187182 }
188183 ''
189189- mkdir -p "$out"
184184+ mkdir -p "$out/share/xsessions"
190185 ${concatMapStrings (n: ''
191191- cat - > "$out/${n}.desktop" << EODESKTOP
186186+ cat - > "$out/share/xsessions/${n}.desktop" << EODESKTOP
192187 [Desktop Entry]
193188 Version=1.0
194189 Type=XSession
195190 TryExec=${cfg.displayManager.session.script}
196191 Exec=${cfg.displayManager.session.script} "${n}"
197197- X-GDM-BypassXsession=true
198192 Name=${n}
199193 Comment=
200194 EODESKTOP
201195 '') names}
196196+197197+ ${concatMapStrings (pkg: ''
198198+ ${xorg.lndir}/bin/lndir ${pkg}/share/xsessions $out/share/xsessions
199199+ '') cfg.displayManager.extraSessionFilePackages}
202200 '';
203201204202in
···245243 '';
246244 };
247245246246+ extraSessionFilePackages = mkOption {
247247+ type = types.listOf types.package;
248248+ default = [];
249249+ description = ''
250250+ A list of packages containing xsession files to be passed to the display manager.
251251+ '';
252252+ };
253253+248254 session = mkOption {
249255 default = [];
250256 example = literalExample
···280286 (filter (w: d.name != "none" || w.name != "none") wm));
281287 desktops = mkDesktops names;
282288 script = xsession wm dm;
289289+ wrapper = xsessionWrapper;
283290 };
284291 };
285292
···1212 '';
1313 });
14141515- pythonPackages = (super.python.override {
1515+ # Override certifi so that it accepts fake certificate for Let's Encrypt
1616+ # Need to override the attribute used by simp_le, which is python3Packages
1717+ python3Packages = (super.python3.override {
1618 packageOverrides = lib.const (pysuper: {
1719 certifi = pysuper.certifi.overridePythonAttrs (attrs: {
1820 postPatch = (attrs.postPatch or "") + ''
···11-import ./make-test.nix ({ ... } :
11+import ./make-test.nix ({ pkgs, ... } :
22{
33 name = "graphite";
44 nodes = {
···1111 api = {
1212 enable = true;
1313 port = 8082;
1414+ finders = [ pkgs.python27Packages.influxgraph ];
1415 };
1516 carbon.enableCache = true;
1617 seyren.enable = true;
1718 pager.enable = true;
1919+ beacon.enable = true;
1820 };
1921 };
2022 };
···2527 $one->waitForUnit("graphiteWeb.service");
2628 $one->waitForUnit("graphiteApi.service");
2729 $one->waitForUnit("graphitePager.service");
3030+ $one->waitForUnit("graphite-beacon.service");
2831 $one->waitForUnit("carbonCache.service");
2932 $one->waitForUnit("seyren.service");
3033 # The services above are of type "simple". systemd considers them active immediately
+6-2
nixos/tests/netdata.nix
···1919 startAll;
20202121 $netdata->waitForUnit("netdata.service");
2222- # check if netdata can read disk ops for root owned processes.
2323- # if > 0, successful. verifies both netdata working and
2222+2323+ # check if the netdata main page loads.
2424+ $netdata->succeed("curl --fail http://localhost:19999/");
2525+2626+ # check if netdata can read disk ops for root owned processes.
2727+ # if > 0, successful. verifies both netdata working and
2428 # apps.plugin has elevated capabilities.
2529 my $cmd = <<'CMD';
2630 curl -s http://localhost:19999/api/v1/data\?chart=users.pwrites | \
···11-{ fetchurl, stdenv, dpkg, xorg, alsaLib, makeWrapper, openssl, freetype
11+{ fetchurl, stdenv, squashfsTools, xorg, alsaLib, makeWrapper, openssl, freetype
22, glib, pango, cairo, atk, gdk_pixbuf, gtk2, cups, nspr, nss, libpng
33, libgcrypt, systemd, fontconfig, dbus, expat, ffmpeg_0_10, curl, zlib, gnome3 }:
4455let
66- # Please update the stable branch!
77- # Latest version number can be found at:
88- # http://repository-origin.spotify.com/pool/non-free/s/spotify-client/
99- # Be careful not to pick the testing version.
1010- version = "1.0.80.480.g51b03ac3-13";
66+ # "rev" decides what is actually being downloaded
77+ version = "1.0.80.474.gef6b503e-7";
88+ # To get the latest stable revision:
99+ # curl -H 'X-Ubuntu-Series: 16' 'https://api.snapcraft.io/api/v1/snaps/details/spotify?channel=stable' | jq '.download_url,.version,.last_updated'
1010+ # To get general information:
1111+ # curl -H 'Snap-Device-Series: 16' 'https://api.snapcraft.io/v2/snaps/info/spotify' | jq '.'
1212+ # More exapmles of api usage:
1313+ # https://github.com/canonical-websites/snapcraft.io/blob/master/webapp/publisher/snaps/views.py
1414+ rev = "16";
1515+11161217 deps = [
1318 alsaLib
···4954stdenv.mkDerivation {
5055 name = "spotify-${version}";
51565757+ # fetch from snapcraft instead of the debian repository most repos fetch from.
5858+ # That is a bit more cumbersome. But the debian repository only keeps the last
5959+ # two versions, while snapcraft should provide versions indefinately:
6060+ # https://forum.snapcraft.io/t/how-can-a-developer-remove-her-his-app-from-snap-store/512
6161+6262+ # This is the next-best thing, since we're not allowed to re-distribute
6363+ # spotify ourselves:
6464+ # https://community.spotify.com/t5/Desktop-Linux/Redistribute-Spotify-on-Linux-Distributions/td-p/1695334
5265 src = fetchurl {
5353- url = "https://repository-origin.spotify.com/pool/non-free/s/spotify-client/spotify-client_${version}_amd64.deb";
5454- sha256 = "e32f4816ae79dbfa0c14086e76df3bc83d526402aac1dbba534127fc00fe50ea";
6666+ url = "https://api.snapcraft.io/api/v1/snaps/download/pOBIoZ2LrCB3rDohMxoYGnbN14EHOgD7_${rev}.snap";
6767+ sha512 = "45b7ab574b30fb368e0b6f4dd60addbfd1ddc02173b4f98b31c524eed49073432352a361e75959ce8e2f752231e93c79ca1b538c4bd295c935d1e2e0585d147f";
5568 };
56695757- buildInputs = [ dpkg makeWrapper ];
7070+ buildInputs = [ squashfsTools makeWrapper ];
58715972 doConfigure = false;
6073 doBuild = false;
···63766477 unpackPhase = ''
6578 runHook preUnpack
6666- dpkg-deb -x $src .
7979+ unsquashfs "$src" '/usr/share/spotify' '/usr/bin/spotify' '/meta/snap.yaml'
8080+ cd squashfs-root
8181+ if ! grep -q 'grade: stable' meta/snap.yaml; then
8282+ # Unfortunately this check is not reliable: At the moment (2018-07-26) the
8383+ # latest version in the "edge" channel is also marked as stable.
8484+ echo "The snap package is marked as unstable:"
8585+ grep 'grade: ' meta/snap.yaml
8686+ echo "You probably chose the wrong revision."
8787+ exit 1
8888+ fi
8989+ if ! grep -q '${version}' meta/snap.yaml; then
9090+ echo "Package version differs from version found in snap metadata:"
9191+ grep 'version: ' meta/snap.yaml
9292+ echo "While the nix package specifies: ${version}."
9393+ echo "You probably chose the wrong revision or forgot to update the nix version."
9494+ exit 1
9595+ fi
6796 runHook postUnpack
6897 '';
6998···74103 libdir=$out/lib/spotify
75104 mkdir -p $libdir
76105 mv ./usr/* $out/
106106+107107+ cp meta/snap.yaml $out
7710878109 # Work around Spotify referring to a specific minor version of
79110 # OpenSSL.
+49
pkgs/applications/audio/spotify/update.sh
···11+channel="stable" # stable/candidate/edge
22+nixpkgs="$(git rev-parse --show-toplevel)"
33+spotify_nix="$nixpkgs/pkgs/applications/audio/spotify/default.nix"
44+55+66+77+# create bash array from snap info
88+snap_info=($(
99+ curl -H 'X-Ubuntu-Series: 16' \
1010+ "https://api.snapcraft.io/api/v1/snaps/details/spotify?channel=$channel" \
1111+ | jq --raw-output \
1212+ '.revision,.download_sha512,.version,.last_updated'
1313+))
1414+1515+revision="${snap_info[0]}"
1616+sha512="${snap_info[1]}"
1717+version="${snap_info[2]}"
1818+last_updated="${snap_info[3]}"
1919+2020+# find the last commited version
2121+version_pre=$(
2222+ git grep 'version\s*=' HEAD "$spotify_nix" \
2323+ | sed -Ene 's/.*"(.*)".*/\1/p'
2424+)
2525+2626+if [[ "$version_pre" = "$version" ]]; then
2727+ echo "Spotify is already up ot date"
2828+ exit 0
2929+fi
3030+3131+echo "Updating from ${version_pre} to ${version}, released on ${last_updated}"
3232+3333+# search-andreplace revision, hash and version
3434+sed --regexp-extended \
3535+ -e 's/rev\s*=\s*"[0-9]+"\s*;/rev = "'"${revision}"'";/' \
3636+ -e 's/sha512\s*=\s*".{128}"\s*;/sha512 = "'"${sha512}"'";/' \
3737+ -e 's/version\s*=\s*".*"\s*;/version = "'"${version}"'";/' \
3838+ -i "$spotify_nix"
3939+4040+if ! nix-build -A spotify "$nixpkgs"; then
4141+ echo "The updated spotify failed to build."
4242+ exit 1
4343+fi
4444+4545+git add "$spotify_nix"
4646+# show diff for review
4747+git diff HEAD
4848+# prepare commit message, but allow edit
4949+git commit --edit --message "spotify: $version_pre -> $version"
···11-{ channel, pname, version, build, sha256Hash, deprecated ? false }:
11+{ channel, pname, version, build, sha256Hash }:
2233{ bash
44, buildFHSUserEnv
···3737}:
38383939let
4040- # TODO: This is a bit stupid to be honest...
4141- # The problem is that we have to make sure this is only executed if the
4242- # derivation is actually build to avoid always printing this warning (e.g.
4343- # "nix-env -qaP"). Since this will always evaluate to "" it won't actually
4444- # change the derivation (only generate a side-effect) but we have to make
4545- # sure this expression is evaluated lazily!
4646- printDeprecationWarning = if deprecated then (builtins.trace ''
4747- android-studio-preview and androidStudioPackages.preview are old aliases
4848- and will be dropped at some point, please use androidStudioPackages.beta
4949- instead (corresponds to the correct channel name).''
5050- "")
5151- else "";
5240 drvName = "android-studio-${channel}-${version}";
5341 androidStudio = stdenv.mkDerivation {
5442 name = drvName;
···142130 text = ''
143131 #!${bash}/bin/bash
144132 ${fhsEnv}/bin/${drvName}-fhs-env ${androidStudio}/bin/studio.sh
145145- '' + printDeprecationWarning;
133133+ '';
146134 } // {
147135 meta = with stdenv.lib; {
148136 description = "The Official IDE for Android (${channel} channel)";
···1616 # if the versions are not provided via file paths.
1717 postBuild = "mv go/bin/${repo}{,_v${version}}";
1818 };
1919-2020- maybeDrv = name: data:
2121- # azure-classic is an archived repo
2222- if name == "azure-classic" then null
2323- else toDrv data;
2419in
2525- lib.mapAttrs maybeDrv list
2020+ lib.mapAttrs (n: v: toDrv v) list
···15151616 buildInputs = [ cmake zlib ncurses ];
17171818+ enableParallelBuilding = false;
1919+1820 meta = with stdenv.lib; {
1921 description = "Identify single nucleotide positions that are different between tumor and normal";
2022 license = licenses.mit;
···11+diff --git a/build/pkgs/openblas/package-version.txt b/build/pkgs/openblas/package-version.txt
22+index 3bc45c25d4..7c7c224887 100644
33+--- a/src/sage/schemes/elliptic_curves/padics.py
44++++ b/src/sage/schemes/elliptic_curves/padics.py
55+@@ -292,8 +292,8 @@ def padic_regulator(self, p, prec=20, height=None, check_hypotheses=True):
66+77+ sage: max_prec = 30 # make sure we get past p^2 # long time
88+ sage: full = E.padic_regulator(5, max_prec) # long time
99+- sage: for prec in range(1, max_prec): # long time
1010+- ....: assert E.padic_regulator(5, prec) == full # long time
1111++ sage: for prec in range(1, max_prec): # known bug (#25969) # long time
1212++ ....: assert E.padic_regulator(5, prec) == full # known bug (#25969) # long time
1313+1414+ A case where the generator belongs to the formal group already
1515+ (:trac:`3632`)::
···11+diff --git a/src/sage/libs/pari/__init__.py b/src/sage/libs/pari/__init__.py
22+index e451766474..77eda66097 100644
33+--- a/src/sage/libs/pari/__init__.py
44++++ b/src/sage/libs/pari/__init__.py
55+@@ -205,6 +205,13 @@ def _get_pari_instance():
66+ # messages in Sage.
77+ P.default("debugmem", 0)
88+99++ # Make sure pari doesn't use threads, regardless of how it was compiled.
1010++ # Threads cause some doctest failures (memory issues). Those could probably
1111++ # be solved without disabling threads. But that would require figuring out
1212++ # some sensible values for `threadsizemax`. See
1313++ # https://pari.math.u-bordeaux.fr/dochtml/html/GP_defaults.html
1414++ P.default("nbthreads", 1)
1515++
1616+ return P
1717+1818+ pari = _get_pari_instance()
···11+{ stdenv, fetchurl, ... }:
22+let
33+ version = "1.7.3.0";
44+in fetchurl {
55+ name = "prototype-${version}.js";
66+ url = "https://ajax.googleapis.com/ajax/libs/prototype/${version}/prototype.js";
77+ sha256 = "0q43vvrsb22h4jvavs1gk3v4ps61yx9k85b5n6q9mxivhmxprg26";
88+99+ meta = with stdenv.lib; {
1010+ description = "A foundation for ambitious web user interfaces";
1111+ longDescription = ''
1212+ Prototype takes the complexity out of client-side web
1313+ programming. Built to solve real-world problems, it adds
1414+ useful extensions to the browser scripting environment
1515+ and provides elegant APIs around the clumsy interfaces
1616+ of Ajax and the Document Object Model.
1717+ '';
1818+ homepage = http://prototypejs.org/;
1919+ downloadPage = http://prototypejs.org/download/;
2020+ license = licenses.mit;
2121+ maintainers = with maintainers; [ das_j ];
2222+ };
2323+}
···6161 # bleach) Hence we disable dependency checking for now.
6262 installFlags = lib.optional isPy36 "--no-dependencies";
63636464+6565+ # Upstream has a pip hack that results in bin/tensorboard being in both tensorflow
6666+ # and the propageted input tensorflow-tensorboard which causes environment collisions.
6767+ #
6868+ # https://github.com/tensorflow/tensorflow/blob/v1.7.1/tensorflow/tools/pip_package/setup.py#L79
6969+ postInstall = ''
7070+ rm $out/bin/tensorboard
7171+ '';
7272+6473 # Note that we need to run *after* the fixup phase because the
6574 # libraries are loaded at runtime. If we run in preFixup then
6675 # patchelf --shrink-rpath will remove the cuda libraries.
···1919 # remaps /etc/passwd to a trivial file, but we can't do that on Darwin so I do this
2020 # instead. In this case, I pass in the very imaginative "submitter" as the submitter name
21212222- patchPhase = let
2222+ patches = [
2323+ # CVE-2018-1000097
2424+ (fetchurl {
2525+ url = "https://sources.debian.org/data/main/s/sharutils/1:4.15.2-2+deb9u1/debian/patches/01-fix-heap-buffer-overflow-cve-2018-1000097.patch";
2626+ sha256 = "19g0sxc8g79aj5gd5idz5409311253jf2q8wqkasf0handdvsbxx";
2727+ })
2828+ ];
2929+3030+ postPatch = let
2331 # This evaluates to a string containing:
2432 #
2533 # substituteInPlace tests/shar-2 --replace '${SHAR}' '${SHAR} -s submitter'