···605-->
606607 <para>
608- In a case a contributor leaves definitively the Nix community, he should
609 create an issue or post on
610 <link
611 xlink:href="https://discourse.nixos.org">Discourse</link> with
612- references of packages and modules he maintains so the maintainership can be
613 taken over by other contributors.
614 </para>
615 </section>
···605-->
606607 <para>
608+ In a case a contributor definitively leaves the Nix community, they should
609 create an issue or post on
610 <link
611 xlink:href="https://discourse.nixos.org">Discourse</link> with
612+ references of packages and modules they maintain so the maintainership can be
613 taken over by other contributors.
614 </para>
615 </section>
···41 let x = builtins.parseDrvName name; in "${x.name}-${suffix}-${x.version}");
424344- /* Apply a function to each derivation and only to derivations in an attrset
45 */
46 mapDerivationAttrset = f: set: lib.mapAttrs (name: pkg: if lib.isDerivation pkg then (f pkg) else pkg) set;
470004849 /* Decrease the nix-env priority of the package, i.e., other
50 versions/variants of the package will be preferred.
51 */
52- lowPrio = drv: addMetaAttrs { priority = 10; } drv;
53-5455 /* Apply lowPrio to an attrset with derivations
56 */
···60 /* Increase the nix-env priority of the package, i.e., this
61 version/variant of the package will be preferred.
62 */
63- hiPrio = drv: addMetaAttrs { priority = -10; } drv;
64-6566 /* Apply hiPrio to an attrset with derivations
67 */
···41 let x = builtins.parseDrvName name; in "${x.name}-${suffix}-${x.version}");
424344+ /* Apply a function to each derivation and only to derivations in an attrset.
45 */
46 mapDerivationAttrset = f: set: lib.mapAttrs (name: pkg: if lib.isDerivation pkg then (f pkg) else pkg) set;
4748+ /* Set the nix-env priority of the package.
49+ */
50+ setPrio = priority: addMetaAttrs { inherit priority; };
5152 /* Decrease the nix-env priority of the package, i.e., other
53 versions/variants of the package will be preferred.
54 */
55+ lowPrio = setPrio 10;
05657 /* Apply lowPrio to an attrset with derivations
58 */
···62 /* Increase the nix-env priority of the package, i.e., this
63 version/variant of the package will be preferred.
64 */
65+ hiPrio = setPrio (-10);
06667 /* Apply hiPrio to an attrset with derivations
68 */
+2-2
nixos/doc/manual/configuration/x-windows.xml
···35 </para>
36 <para>
37 NixOS’s default <emphasis>display manager</emphasis> (the program that
38- provides a graphical login prompt and manages the X server) is SLiM. You can
39 select an alternative one by picking one of the following lines:
40<programlisting>
41<xref linkend="opt-services.xserver.displayManager.sddm.enable"/> = true;
42-<xref linkend="opt-services.xserver.displayManager.lightdm.enable"/> = true;
43</programlisting>
44 </para>
45 <para>
···35 </para>
36 <para>
37 NixOS’s default <emphasis>display manager</emphasis> (the program that
38+ provides a graphical login prompt and manages the X server) is LightDM. You can
39 select an alternative one by picking one of the following lines:
40<programlisting>
41<xref linkend="opt-services.xserver.displayManager.sddm.enable"/> = true;
42+<xref linkend="opt-services.xserver.displayManager.slim.enable"/> = true;
43</programlisting>
44 </para>
45 <para>
+1-1
nixos/doc/manual/installation/installing-usb.xml
···23[..]
24$ diskutil unmountDisk diskN
25Unmount of all volumes on diskN was successful
26-$ sudo dd bs=1m if=nix.iso of=/dev/rdiskN
27</programlisting>
28 Using the 'raw' <command>rdiskN</command> device instead of
29 <command>diskN</command> completes in minutes instead of hours. After
···23[..]
24$ diskutil unmountDisk diskN
25Unmount of all volumes on diskN was successful
26+$ sudo dd bs=1000000 if=nix.iso of=/dev/rdiskN
27</programlisting>
28 Using the 'raw' <command>rdiskN</command> device instead of
29 <command>diskN</command> completes in minutes instead of hours. After
···77 Shared folders can be given a name and a path in the host system in the
78 VirtualBox settings (Machine / Settings / Shared Folders, then click on the
79 "Add" icon). Add the following to the
80- <literal>/etc/nixos/configuration.nix</literal> to auto-mount them:
00081 </para>
8283<programlisting>
84{ config, pkgs, ...} :
85{
086 ...
8788 fileSystems."/virtualboxshare" = {
89 fsType = "vboxsf";
90 device = "nameofthesharedfolder";
91- options = [ "rw" ];
92 };
93}
94</programlisting>
···77 Shared folders can be given a name and a path in the host system in the
78 VirtualBox settings (Machine / Settings / Shared Folders, then click on the
79 "Add" icon). Add the following to the
80+ <literal>/etc/nixos/configuration.nix</literal> to auto-mount them. If you
81+ do not add <literal>"nofail"</literal>, the system will no boot properly.
82+ The same goes for disabling <literal>rngd</literal> which is normally used
83+ to get randomness but this does not work in virtual machines.
84 </para>
8586<programlisting>
87{ config, pkgs, ...} :
88{
89+ security.rngd.enable = false; // otherwise vm will not boot
90 ...
9192 fileSystems."/virtualboxshare" = {
93 fsType = "vboxsf";
94 device = "nameofthesharedfolder";
95+ options = [ "rw" "nofail" ];
96 };
97}
98</programlisting>
+4-2
nixos/modules/misc/ids.nix
···306 rslsync = 279;
307 minio = 280;
308 kanboard = 281;
309- pykms = 282;
310 kodi = 283;
311 restya-board = 284;
312 mighttpd2 = 285;
···338 minetest = 311;
339 rss2email = 312;
340 cockroachdb = 313;
0341342 # When adding a uid, make sure it doesn't match an existing gid. And don't use uids above 399!
343···604 rslsync = 279;
605 minio = 280;
606 kanboard = 281;
607- pykms = 282;
608 kodi = 283;
609 restya-board = 284;
610 mighttpd2 = 285;
···636 minetest = 311;
637 rss2email = 312;
638 cockroachdb = 313;
0639640 # When adding a gid, make sure it doesn't match an existing
641 # uid. Users and groups with the same name should have equal
···306 rslsync = 279;
307 minio = 280;
308 kanboard = 281;
309+ # pykms = 282; # DynamicUser = true
310 kodi = 283;
311 restya-board = 284;
312 mighttpd2 = 285;
···338 minetest = 311;
339 rss2email = 312;
340 cockroachdb = 313;
341+ zoneminder = 314;
342343 # When adding a uid, make sure it doesn't match an existing gid. And don't use uids above 399!
344···605 rslsync = 279;
606 minio = 280;
607 kanboard = 281;
608+ # pykms = 282; # DynamicUser = true
609 kodi = 283;
610 restya-board = 284;
611 mighttpd2 = 285;
···637 minetest = 311;
638 rss2email = 312;
639 cockroachdb = 313;
640+ zoneminder = 314;
641642 # When adding a gid, make sure it doesn't match an existing
643 # uid. Users and groups with the same name should have equal
···7# <organisation>/<repo> - include only the named repository.
89# include all terraform-providers
10-terraform-providers terraform-provider- terraform-provider-\\(azure-classic\\|scaffolding\\|google-beta\\|skytap\\)
1112# include terraform-provider-matchbox
13coreos/terraform-provider-matchbox
···7# <organisation>/<repo> - include only the named repository.
89# include all terraform-providers
10+terraform-providers terraform-provider- terraform-provider-\\(azure-classic\\|scaffolding\\)
1112# include terraform-provider-matchbox
13coreos/terraform-provider-matchbox
···1+diff --git a/src/sage/doctest/forker.py b/src/sage/doctest/forker.py
2+index 02e18e67e7..2ebf6eb35f 100644
3+--- a/src/sage/doctest/forker.py
4++++ b/src/sage/doctest/forker.py
5+@@ -1075,6 +1075,14 @@ class SageDocTestRunner(doctest.DocTestRunner, object):
6+ sage: set(ex2.predecessors) == set([ex0,ex1])
7+ True
8+ """
9++
10++ # Fix ECL dir race conditions by using a separate dir for each process
11++ # (https://trac.sagemath.org/ticket/26968)
12++ os.environ['MAXIMA_USERDIR'] = "{}/sage-maxima-{}".format(
13++ tempfile.gettempdir(),
14++ os.getpid()
15++ )
16++
17+ if isinstance(globs, RecordingDict):
18+ globs.start()
19+ example.sequence_number = len(self.history)
+3
pkgs/applications/science/math/sage/sage-src.nix
···46 # tests) are also run. That is necessary to test dochtml individually. See
47 # https://trac.sagemath.org/ticket/26110 for an upstream discussion.
48 ./patches/Only-test-py2-py3-optional-tests-when-all-of-sage-is.patch
00049 ];
5051 # Patches needed because of package updates. We could just pin the versions of
···46 # tests) are also run. That is necessary to test dochtml individually. See
47 # https://trac.sagemath.org/ticket/26110 for an upstream discussion.
48 ./patches/Only-test-py2-py3-optional-tests-when-all-of-sage-is.patch
49+50+ # Fixes a potential race condition which can lead to transient doctest failures.
51+ ./patches/fix-ecl-race.patch
52 ];
5354 # Patches needed because of package updates. We could just pin the versions of
···3940 # Hack: The following package is a core package of GHCJS. If we don't declare
41 # it, then hackage2nix will generate a Hackage database where all dependants
42- # of this library are maked as "broken".
43 - ghcjs-base-0
4445default-package-overrides:
···3940 # Hack: The following package is a core package of GHCJS. If we don't declare
41 # it, then hackage2nix will generate a Hackage database where all dependants
42+ # of this library are marked as "broken".
43 - ghcjs-base-0
4445default-package-overrides:
···22 beta = stable;
2324 stable_415 = generic {
25+ version = "415.27";
26+ sha256_64bit = "12ylf1h1wpgkd0g7r30c33hhhialn315k5sbxyzks0rm42k7cay8";
27+ settingsSha256 = "0m8hfxb6fhanqlkkk4ayn1blgdsvnn0ipxdl19ifdl200ln6j053";
28+ persistencedSha256 = "0i6ik6xv6rnwcd6vg5xrxcd9g7nzca3vkiy2srbv0simw86nwgdz";
000029 };
3031 # Last one supporting x86
+1-1
pkgs/os-specific/linux/zfs/default.nix
···158 # to be adapted
159 zfsStable = common {
160 # comment/uncomment if breaking kernel versions are known
161- # incompatibleKernelVersion = "4.19";
162163 # this package should point to the latest release.
164 version = "0.7.12";
···158 # to be adapted
159 zfsStable = common {
160 # comment/uncomment if breaking kernel versions are known
161+ incompatibleKernelVersion = "4.20";
162163 # this package should point to the latest release.
164 version = "0.7.12";
+17-32
pkgs/servers/ftp/vsftpd/default.nix
···1-{ stdenv, fetchurl, openssl, sslEnable ? false, libcap, pam }:
23stdenv.mkDerivation rec {
4 name = "vsftpd-3.0.3";
···8 sha256 = "1xsyjn68k3fgm2incpb3lz2nikffl9by2safp994i272wvv2nkcx";
9 };
100011 patches = [ ./CVE-2015-1419.patch ];
1213- preConfigure = stdenv.lib.optionalString sslEnable ''
14- echo "Will enable SSL"
15 sed -i "/VSF_BUILD_SSL/s/^#undef/#define/" builddefs.h
16- '';
00001718- # The gcc-wrappers use -idirafter for glibc, and vsftpd also, and
19- # their dummyinc come before those of glibc, then the build works bad.
20- prePatch = ''
21- sed -i -e 's/-idirafter.*//' Makefile
22 '';
2324- preBuild =
25- let
26- sslLibs = if sslEnable then "-lcrypt -lssl -lcrypto" else "";
27- in ''
28- makeFlagsArray=( "LIBS=${sslLibs} -lpam -lcap -fstack-protector" )
29- '';
3031- # It won't link without this flag, used in CFLAGS
32-33- buildInputs = [ openssl libcap pam ];
34-35- installPhase = ''
36- mkdir -pv $out/sbin
37- install -v -m 755 vsftpd $out/sbin/vsftpd
38-39- mkdir -pv $out/share/man/man{5,8}
40- install -v -m 644 vsftpd.8 $out/share/man/man8/vsftpd.8
41- install -v -m 644 vsftpd.conf.5 $out/share/man/man5/vsftpd.conf.5
42-43- mkdir -pv $out/etc/xinetd.d
44- install -v -m 644 xinetd.d/vsftpd $out/etc/xinetd.d/vsftpd
45- '';
4647- meta = {
48- platforms = stdenv.lib.platforms.linux;
49- license = stdenv.lib.licenses.gpl2;
0050 };
51}
···1+diff --git a/scripts/ZoneMinder/lib/ZoneMinder/ConfigData.pm.in b/scripts/ZoneMinder/lib/ZoneMinder/ConfigData.pm.in
2+index fa7b86079..c9d3c6f6c 100644
3+--- a/scripts/ZoneMinder/lib/ZoneMinder/ConfigData.pm.in
4++++ b/scripts/ZoneMinder/lib/ZoneMinder/ConfigData.pm.in
5+@@ -877,7 +877,7 @@ our @options = (
6+ },
7+ {
8+ name => 'ZM_HTTP_VERSION',
9+- default => '1.0',
10++ default => '1.1',
11+ description => 'The version of HTTP that ZoneMinder will use to connect',
12+ help => q`
13+ ZoneMinder can communicate with network cameras using either of
···1+{ stdenv, lib, fetchFromGitHub, fetchurl, cmake, makeWrapper, pkgconfig
2+, curl, ffmpeg, glib, libjpeg, libselinux, libsepol, mp4v2, mysql, nettools, pcre, perl, perlPackages
3+, polkit, utillinuxMinimal, x264, zlib
4+, avahi, dbus, gettext, git, gnutar, gzip, bzip2, libiconv, openssl, python
5+, coreutils, procps, psmisc }:
6+7+# NOTES:
8+#
9+# 1. ZM_CONFIG_DIR is set to $out/etc/zoneminder as the .conf file distributed
10+# by upstream contains defaults and is not supposed to be edited so it is fine
11+# to keep it read-only.
12+#
13+# 2. ZM_CONFIG_SUBDIR is where we place our configuration from the NixOS module
14+# but as the installer will try to put files there, we patch Config.pm after the
15+# install.
16+#
17+# 3. ZoneMinder is run with -T passed to the perl interpreter which makes perl
18+# ignore PERL5LIB. We therefore have to do the substitution into -I parameters
19+# ourselves which results in ugly wrappers.
20+#
21+# 4. The makefile for the perl modules needs patching to put things into the
22+# right place. That also means we have to not run "make install" for them.
23+#
24+# 5. In principal the various ZM_xx variables should be overridable from the
25+# config file but some of them are baked into the perl scripts, so we *have* to
26+# set them here instead of in the configuration in the NixOS module.
27+#
28+# 6. I am no PolicyKit expert but the .policy file looks fishy:
29+# a. The user needs to be known at build-time so we should probably throw
30+# upstream's policy file away and generate it from the NixOS module
31+# b. I *think* we may have to substitute the store paths with
32+# /run/current-system/sw/bin paths for it to work.
33+#
34+# 7. we manually fix up the perl paths in the scripts as fixupPhase will only
35+# handle pkexec and not perl if both are present.
36+#
37+# 8. There are several perl modules needed at runtime which are not checked when
38+# building so if a new version stops working, check if there is a missing
39+# dependency by running the failing component manually.
40+#
41+# 9. Parts of the web UI has a hardcoded /zm path so we create a symlink to work
42+# around it.
43+44+let
45+ modules = [
46+ {
47+ path = "web/api/app/Plugin/Crud";
48+ src = fetchFromGitHub {
49+ owner = "ZoneMinder";
50+ repo = "crud";
51+ rev = "3.1.0-zm";
52+ sha256 = "061avzyml7mla4hlx057fm8a9yjh6m6qslgyzn74cv5p2y7f463l";
53+ };
54+ }
55+ {
56+ path = "web/api/app/Plugin/CakePHP-Enum-Behavior";
57+ src = fetchFromGitHub {
58+ owner = "ZoneMinder";
59+ repo = "CakePHP-Enum-Behavior";
60+ rev = "1.0-zm";
61+ sha256 = "0zsi6s8xymb183kx3szspbrwfjqcgga7786zqvydy6hc8c909cgx";
62+ };
63+ }
64+ ];
65+66+ addons = [
67+ {
68+ path = "scripts/ZoneMinder/lib/ZoneMinder/Control/Xiaomi.pm";
69+ src = fetchurl {
70+ url = "https://gist.githubusercontent.com/joshstrange/73a2f24dfaf5cd5b470024096ce2680f/raw/e964270c5cdbf95e5b7f214f7f0fc6113791530e/Xiaomi.pm";
71+ sha256 = "04n1ap8fx66xfl9q9rypj48pzbgzikq0gisfsfm8wdsmflarz43v";
72+ };
73+ }
74+ ];
75+76+ user = "zoneminder";
77+ dirName = "zoneminder";
78+ perlBin = "${perl}/bin/perl";
79+80+in stdenv.mkDerivation rec {
81+ name = "zoneminder-${version}";
82+ version = "1.32.3";
83+84+ src = fetchFromGitHub {
85+ owner = "ZoneMinder";
86+ repo = "zoneminder";
87+ rev = version;
88+ sha256 = "1sx2fn99861zh0gp8g53ynr1q6yfmymxamn82y54jqj6nv475njz";
89+ };
90+91+ patches = [
92+ ./default-to-http-1dot1.patch
93+ ];
94+95+ postPatch = ''
96+ ${lib.concatStringsSep "\n" (map (e: ''
97+ rm -rf ${e.path}/*
98+ cp -r ${e.src}/* ${e.path}/
99+ '') modules)}
100+101+ rm -rf web/api/lib/Cake/Test
102+103+ ${lib.concatStringsSep "\n" (map (e: ''
104+ cp ${e.src} ${e.path}
105+ '') addons)}
106+107+ for d in scripts/ZoneMinder onvif/{modules,proxy} ; do
108+ substituteInPlace $d/CMakeLists.txt \
109+ --replace 'DESTDIR="''${CMAKE_CURRENT_BINARY_DIR}/output"' "PREFIX=$out INSTALLDIRS=site"
110+ sed -i '/^install/d' $d/CMakeLists.txt
111+ done
112+113+ substituteInPlace misc/CMakeLists.txt \
114+ --replace '"''${PC_POLKIT_PREFIX}/''${CMAKE_INSTALL_DATAROOTDIR}' "\"$out/share"
115+116+ for f in misc/*.policy.in \
117+ scripts/*.pl* \
118+ scripts/ZoneMinder/lib/ZoneMinder/Memory.pm.in ; do
119+ substituteInPlace $f \
120+ --replace '/usr/bin/perl' '${perlBin}' \
121+ --replace '/bin:/usr/bin' "$out/bin:${lib.makeBinPath [ coreutils procps psmisc ]}"
122+ done
123+124+ substituteInPlace scripts/zmdbbackup.in \
125+ --replace /usr/bin/mysqldump ${mysql}/bin/mysqldump
126+127+ for f in scripts/ZoneMinder/lib/ZoneMinder/Config.pm.in \
128+ scripts/zmupdate.pl.in \
129+ src/zm_config.h.in \
130+ web/api/app/Config/bootstrap.php.in \
131+ web/includes/config.php.in ; do
132+ substituteInPlace $f --replace @ZM_CONFIG_SUBDIR@ /etc/zoneminder
133+ done
134+135+ for f in includes/Event.php views/image.php skins/classic/views/image-ffmpeg.php ; do
136+ substituteInPlace web/$f \
137+ --replace "'ffmpeg " "'${ffmpeg}/bin/ffmpeg "
138+ done
139+ '';
140+141+ buildInputs = [
142+ curl ffmpeg glib libjpeg libselinux libsepol mp4v2 mysql pcre perl polkit x264 zlib
143+ utillinuxMinimal # for libmount
144+ ] ++ (with perlPackages; [
145+ DateManip DBI DBDmysql LWP SysMmap
146+ # runtime dependencies not checked at build-time
147+ JSONMaybeXS LWPProtocolHttps NumberBytesHuman SysCPU SysMemInfo TimeDate
148+ ]);
149+150+ nativeBuildInputs = [ cmake makeWrapper pkgconfig ];
151+152+ enableParallelBuilding = true;
153+154+ cmakeFlags = [
155+ "-DWITH_SYSTEMD=ON"
156+ "-DZM_LOGDIR=/var/log/${dirName}"
157+ "-DZM_RUNDIR=/run/${dirName}"
158+ "-DZM_SOCKDIR=/run/${dirName}"
159+ "-DZM_TMPDIR=/tmp/${dirName}"
160+ "-DZM_CONFIG_DIR=${placeholder "out"}/etc/zoneminder"
161+ "-DZM_WEB_USER=${user}"
162+ "-DZM_WEB_GROUP=${user}"
163+ ];
164+165+ passthru = { inherit dirName; };
166+167+ postInstall = ''
168+ PERL5LIB="$PERL5LIB''${PERL5LIB:+:}$out/${perl.libPrefix}"
169+170+ perlFlags="-wT"
171+ for i in $(IFS=$'\n'; echo $PERL5LIB | tr ':' "\n" | sort -u); do
172+ perlFlags="$perlFlags -I$i"
173+ done
174+175+ for f in $out/bin/*.pl ; do
176+ mv $f $out/libexec/
177+ makeWrapper ${perlBin} $f \
178+ --prefix PATH : $out/bin \
179+ --add-flags "$perlFlags $out/libexec/$(basename $f)"
180+ done
181+182+ ln -s $out/share/zoneminder/www $out/share/zoneminder/www/zm
183+ '';
184+185+ meta = with stdenv.lib; {
186+ description = "Video surveillance software system";
187+ homepage = https://zoneminder.com;
188+ license = licenses.gpl3;
189+ maintainers = with maintainers; [ peterhoeg ];
190+ platforms = platforms.unix;
191+ };
192+}
+9-5
pkgs/tools/admin/pulumi/default.nix
···1-{ stdenv, fetchurl }:
0023let
45- version = "0.16.7";
67 # switch the dropdown to “manual” on https://pulumi.io/quickstart/install.html # TODO: update script
8 pulumiArchPackage = {
9 "x86_64-linux" = {
10 url = "https://get.pulumi.com/releases/sdk/pulumi-v${version}-linux-x64.tar.gz";
11- sha256 = "1l1cn8pk05vl7vpmhny9rlz1hj0iqclqjj1r2q12qip7f4qkgsfw";
12 };
13 "x86_64-darwin" = {
14 url = "https://get.pulumi.com/releases/sdk/pulumi-v${version}-darwin-x64.tar.gz";
15- sha256 = "0p07jvgy0xl524fgb5d9wijxa91isv4h4mcn9qghycqj90yqnjhx";
16 };
17 };
18···27 cp * $out/bin/
28 '';
2930- meta = with stdenv.lib; {
0031 homepage = https://pulumi.io/;
32 description = "Pulumi is a cloud development platform that makes creating cloud programs easy and productive";
33 license = with licenses; [ asl20 ];
···1+{ lib, stdenv, fetchurl, autoPatchelfHook }:
2+3+with lib;
45let
67+ version = "0.16.11";
89 # switch the dropdown to “manual” on https://pulumi.io/quickstart/install.html # TODO: update script
10 pulumiArchPackage = {
11 "x86_64-linux" = {
12 url = "https://get.pulumi.com/releases/sdk/pulumi-v${version}-linux-x64.tar.gz";
13+ sha256 = "176nwqp1dd8vdpl4qajaq2w458f8pgavwvwd93lgnccqw3cznv75";
14 };
15 "x86_64-darwin" = {
16 url = "https://get.pulumi.com/releases/sdk/pulumi-v${version}-darwin-x64.tar.gz";
17+ sha256 = "1mkz9bkkvpvbpzfnvwpx4892zd05bvjz5rbfwhwzm3wzfcjjs16i";
18 };
19 };
20···29 cp * $out/bin/
30 '';
3132+ buildInputs = optionals stdenv.isLinux [ autoPatchelfHook ];
33+34+ meta = {
35 homepage = https://pulumi.io/;
36 description = "Pulumi is a cloud development platform that makes creating cloud programs easy and productive";
37 license = with licenses; [ asl20 ];
···19 # The websites youtube-dl deals with are a very moving target. That means that
20 # downloads break constantly. Because of that, updates should always be backported
21 # to the latest stable release.
22- version = "2019.01.16";
2324 src = fetchurl {
25 url = "https://yt-dl.org/downloads/${version}/${pname}-${version}.tar.gz";
26- sha256 = "1dhbr5n0l6dgjp1620jp30kaizrzagacrj64gd9pwy1916kjm7si";
27 };
2829 nativeBuildInputs = [ makeWrapper ];
···19 # The websites youtube-dl deals with are a very moving target. That means that
20 # downloads break constantly. Because of that, updates should always be backported
21 # to the latest stable release.
22+ version = "2019.01.17";
2324 src = fetchurl {
25 url = "https://yt-dl.org/downloads/${version}/${pname}-${version}.tar.gz";
26+ sha256 = "0fxajwv81b0bjw9qlwmxd4r93yp5nnqll79vhic0vy72ii0093r7";
27 };
2829 nativeBuildInputs = [ makeWrapper ];