···1279 <command>make</command>. You must use this instead of
1280 <varname>makeFlags</varname> if the arguments contain spaces, e.g.
1281<programlisting>
1282-makeFlagsArray=(CFLAGS="-O0 -g" LDFLAGS="-lfoo -lbar")
001283</programlisting>
1284 Note that shell arrays cannot be passed through environment variables,
1285 so you cannot set <varname>makeFlagsArray</varname> in a derivation
···1279 <command>make</command>. You must use this instead of
1280 <varname>makeFlags</varname> if the arguments contain spaces, e.g.
1281<programlisting>
1282+preBuild = ''
1283+ makeFlagsArray+=(CFLAGS="-O0 -g" LDFLAGS="-lfoo -lbar")
1284+'';
1285</programlisting>
1286 Note that shell arrays cannot be passed through environment variables,
1287 so you cannot set <varname>makeFlagsArray</varname> in a derivation
+34-6
maintainers/maintainer-list.nix
···21 - `github` is your GitHub handle (as it appears in the URL of your profile page, `https://github.com/<userhandle>`),
22 - `keys` is a list of your PGP/GPG key IDs and fingerprints.
2324- `handle == github` is strongly preffered whenever `github` is an acceptable attribute name and is short and convenient.
2526 Add PGP/GPG keys only if you actually use them to sign commits and/or mail.
27···1427 email = "justin.humm@posteo.de";
1428 github = "erictapen";
1429 name = "Justin Humm";
00001430 };
1431 erikryb = {
1432 email = "erik.rybakken@math.ntnu.no";
···1456 email = "elis@hirwing.se";
1457 github = "etu";
1458 name = "Elis Hirwing";
00001459 };
1460 evck = {
1461 email = "eric@evenchick.com";
···2882 email = "joerg@thalheim.io";
2883 github = "mic92";
2884 name = "Jörg Thalheim";
000002885 };
2886 michaelpj = {
2887 email = "michaelpj@gmail.com";
···3600 email = "dev.primeos@gmail.com";
3601 github = "primeos";
3602 name = "Michael Weiss";
000000003603 };
3604 Profpatsch = {
3605 email = "mail@profpatsch.de";
···3668 email = "hi@alyssa.is";
3669 github = "alyssais";
3670 name = "Alyssa Ross";
00003671 };
3672 ragge = {
3673 email = "r.dahlen@gmail.com";
···4183 email = "sebastien.maret@icloud.com";
4184 github = "smaret";
4185 name = "Sébastien Maret";
00004186 };
4187 smironov = {
4188 email = "grrwlf@gmail.com";
···4373 email = "me@tadeo.ca";
4374 github = "tadeokondrak";
4375 name = "Tadeo Kondrak";
00004376 };
4377 tadfisher = {
4378 email = "tadfisher@gmail.com";
···4878 email = "willroe@gmail.com";
4879 github = "wjlroe";
4880 name = "William Roe";
4881- };
4882- wkennington = {
4883- email = "william@wkennington.com";
4884- github = "wkennington";
4885- name = "William A. Kennington III";
4886 };
4887 wmertens = {
4888 email = "Wout.Mertens@gmail.com";
···1#! /usr/bin/env nix-shell
2-#! nix-shell -i perl -p perl perlPackages.NetAmazonS3 perlPackages.FileSlurp nixUnstable nixUnstable.perl-bindings
34# This command uploads tarballs to tarballs.nixos.org, the
5# content-addressed cache used by fetchurl as a fallback for when
···101 my ($name, $dest) = @_;
102 #print STDERR "linking $name to $dest...\n";
103 $bucket->add_key($name, "", {
104- 'x-amz-website-redirect-location' => "/" . $dest,
105- 'x-amz-acl' => "public-read"
106 })
107 or die "failed to create redirect from $name to $dest\n";
108 $cache{$name} = 1;
···116 # Upload the file as sha512/<hash-in-base-16>.
117 print STDERR "uploading $fn to $mainKey...\n";
118 $bucket->add_key_filename($mainKey, $fn, {
119- 'x-amz-meta-original-name' => $name,
120- 'x-amz-acl' => "public-read"
121 })
122 or die "failed to upload $fn to $mainKey\n";
123 $cache{$mainKey} = 1;
···1#! /usr/bin/env nix-shell
2+#! nix-shell -i perl -p perl perlPackages.NetAmazonS3 perlPackages.FileSlurp perlPackages.JSON perlPackages.LWPProtocolHttps nixUnstable nixUnstable.perl-bindings
34# This command uploads tarballs to tarballs.nixos.org, the
5# content-addressed cache used by fetchurl as a fallback for when
···101 my ($name, $dest) = @_;
102 #print STDERR "linking $name to $dest...\n";
103 $bucket->add_key($name, "", {
104+ 'x-amz-website-redirect-location' => "/" . $dest,
105+ 'x-amz-acl' => "public-read"
106 })
107 or die "failed to create redirect from $name to $dest\n";
108 $cache{$name} = 1;
···116 # Upload the file as sha512/<hash-in-base-16>.
117 print STDERR "uploading $fn to $mainKey...\n";
118 $bucket->add_key_filename($mainKey, $fn, {
119+ 'x-amz-meta-original-name' => $name,
120+ 'x-amz-acl' => "public-read"
121 })
122 or die "failed to upload $fn to $mainKey\n";
123 $cache{$mainKey} = 1;
+11
maintainers/scripts/eval-release.sh
···00000000000
···1+#! /bin/sh
2+3+if [[ -z "$VERBOSE" ]]; then
4+ echo "You may set VERBOSE=1 to see debug output or to any other non-empty string to make this script completely silent"
5+fi
6+unset HOME NIXPKGS_CONFIG # Force empty config
7+8+# With the default heap size (380MB), nix-instantiate fails:
9+# Too many heap sections: Increase MAXHINCR or MAX_HEAP_SECTS
10+export GC_INITIAL_HEAP_SIZE=${GC_INITIAL_HEAP_SIZE:-2000000000} # 2GB
11+nix-instantiate --strict --eval-only --xml --show-trace "$(dirname "$0")"/eval-release.nix 2>&1 > /dev/null
+1-1
maintainers/scripts/find-tarballs.nix
···31 if !canEval x then []
32 else if isDerivation x then optional (canEval x.drvPath) x
33 else if isList x then concatLists (map derivationsIn' x)
34- else if isAttrs x then concatLists (mapAttrsToList (n: v: derivationsIn' v) x)
35 else [ ];
3637 keyDrv = drv: if canEval drv.drvPath then { key = drv.drvPath; value = drv; } else { };
···31 if !canEval x then []
32 else if isDerivation x then optional (canEval x.drvPath) x
33 else if isList x then concatLists (map derivationsIn' x)
34+ else if isAttrs x then concatLists (mapAttrsToList (n: v: addErrorContext "while finding tarballs in '${n}':" (derivationsIn' v)) x)
35 else [ ];
3637 keyDrv = drv: if canEval drv.drvPath then { key = drv.drvPath; value = drv; } else { };
-7
maintainers/scripts/test-eval-release.sh
···1-#! /bin/sh
2-3-if [[ -z "$VERBOSE" ]]; then
4- echo "You may set VERBOSE=1 to see debug output or to any other non-empty string to make this script completely silent"
5-fi
6-unset HOME NIXPKGS_CONFIG # Force empty config
7-nix-instantiate --strict --eval-only --xml --show-trace "$(dirname "$0")"/eval-release.nix 2>&1 > /dev/null
···0000000
+15
nixos/doc/manual/release-notes/rl-1903.xml
···440 from nixpkgs due to the lack of maintainers.
441 </para>
442 </listitem>
000000000000000443 </itemizedlist>
444 </section>
445</section>
···440 from nixpkgs due to the lack of maintainers.
441 </para>
442 </listitem>
443+ <listitem>
444+ <para>
445+ It is possible now to uze ZRAM devices as general purpose ephemeral block devices,
446+ not only as swap. Using more than 1 device as ZRAM swap is no longer recommended,
447+ but is still possible by setting <literal>zramSwap.swapDevices</literal> explicitly.
448+ </para>
449+ <para>
450+ Default algorithm for ZRAM swap was changed to <literal>zstd</literal>.
451+ </para>
452+ <para>
453+ Changes to ZRAM algorithm are applied during <literal>nixos-rebuild switch</literal>,
454+ so make sure you have enough swap space on disk to survive ZRAM device rebuild. Alternatively,
455+ use <literal>nixos-rebuild boot; reboot</literal>.
456+ </para>
457+ </listitem>
458 </itemizedlist>
459 </section>
460</section>
+5-2
nixos/lib/make-disk-image.nix
···27, # The root file system type.
28 fsType ? "ext4"
2900030, # The initial NixOS configuration file to be copied to
31 # /etc/nixos/configuration.nix.
32 configFile ? null
···134 # Get start & length of the root partition in sectors to $START and $SECTORS.
135 eval $(partx $diskImage -o START,SECTORS --nr ${rootPartition} --pairs)
136137- mkfs.${fsType} -F -L nixos $diskImage -E offset=$(sectorsToBytes $START) $(sectorsToKilobytes $SECTORS)K
138 '' else ''
139- mkfs.${fsType} -F -L nixos $diskImage
140 ''}
141142 root="$PWD/root"
···27, # The root file system type.
28 fsType ? "ext4"
2930+, # Filesystem label
31+ label ? "nixos"
32+33, # The initial NixOS configuration file to be copied to
34 # /etc/nixos/configuration.nix.
35 configFile ? null
···137 # Get start & length of the root partition in sectors to $START and $SECTORS.
138 eval $(partx $diskImage -o START,SECTORS --nr ${rootPartition} --pairs)
139140+ mkfs.${fsType} -F -L ${label} $diskImage -E offset=$(sectorsToBytes $START) $(sectorsToKilobytes $SECTORS)K
141 '' else ''
142+ mkfs.${fsType} -F -L ${label} $diskImage
143 ''}
144145 root="$PWD/root"
+67-14
nixos/modules/config/zram.nix
···67 cfg = config.zramSwap;
89- devices = map (nr: "zram${toString nr}") (range 0 (cfg.numDevices - 1));
00001011 modprobe = "${pkgs.kmod}/bin/modprobe";
12000000000000013in
1415{
···24 default = false;
25 type = types.bool;
26 description = ''
27- Enable in-memory compressed swap space provided by the zram kernel
28- module.
29- See https://www.kernel.org/doc/Documentation/blockdev/zram.txt
0030 '';
31 };
32···34 default = 1;
35 type = types.int;
36 description = ''
37- Number of zram swap devices to create.
00000000000038 '';
39 };
40···44 description = ''
45 Maximum amount of memory that can be used by the zram swap devices
46 (as a percentage of your total memory). Defaults to 1/2 of your total
47- RAM.
048 '';
49 };
50···58 '';
59 };
6000000000000061 };
6263 };
6465 config = mkIf cfg.enable {
660067 system.requiredKernelConfig = with config.lib.kernelConfig; [
68 (isModule "ZRAM")
69 ];
···85 createZramInitService = dev:
86 nameValuePair "zram-init-${dev}" {
87 description = "Init swap on zram-based device ${dev}";
88- bindsTo = [ "dev-${dev}.swap" ];
89 after = [ "dev-${dev}.device" "zram-reloader.service" ];
90 requires = [ "dev-${dev}.device" "zram-reloader.service" ];
91 before = [ "dev-${dev}.swap" ];
92 requiredBy = [ "dev-${dev}.swap" ];
093 serviceConfig = {
94 Type = "oneshot";
95 RemainAfterExit = true;
96 ExecStop = "${pkgs.runtimeShell} -c 'echo 1 > /sys/class/block/${dev}/reset'";
97 };
98 script = ''
99- set -u
100- set -o pipefail
101-102 # Calculate memory to use for zram
103- totalmem=$(${pkgs.gnugrep}/bin/grep 'MemTotal: ' /proc/meminfo | ${pkgs.gawk}/bin/awk '{print $2}')
104- mem=$(((totalmem * ${toString cfg.memoryPercent} / 100 / ${toString cfg.numDevices}) * 1024))
0105106- echo $mem > /sys/class/block/${dev}/disksize
107 ${pkgs.utillinux}/sbin/mkswap /dev/${dev}
108 '';
109 restartIfChanged = false;
···111 in listToAttrs ((map createZramInitService devices) ++ [(nameValuePair "zram-reloader"
112 {
113 description = "Reload zram kernel module when number of devices changes";
000114 serviceConfig = {
115 Type = "oneshot";
116 RemainAfterExit = true;
···118 ExecStart = "${modprobe} zram";
119 ExecStop = "${modprobe} -r zram";
120 };
121- restartTriggers = [ cfg.numDevices ];
0000122 restartIfChanged = true;
123 })]);
124
···67 cfg = config.zramSwap;
89+ # don't set swapDevices as mkDefault, so we can detect user had read our warning
10+ # (see below) and made an action (or not)
11+ devicesCount = if cfg.swapDevices != null then cfg.swapDevices else cfg.numDevices;
12+13+ devices = map (nr: "zram${toString nr}") (range 0 (devicesCount - 1));
1415 modprobe = "${pkgs.kmod}/bin/modprobe";
1617+ warnings =
18+ assert cfg.swapDevices != null -> cfg.numDevices >= cfg.swapDevices;
19+ flatten [
20+ (optional (cfg.numDevices > 1 && cfg.swapDevices == null) ''
21+ Using several small zram devices as swap is no better than using one large.
22+ Set either zramSwap.numDevices = 1 or explicitly set zramSwap.swapDevices.
23+24+ Previously multiple zram devices were used to enable multithreaded
25+ compression. Linux supports multithreaded compression for 1 device
26+ since 3.15. See https://lkml.org/lkml/2014/2/28/404 for details.
27+ '')
28+ ];
29+30in
3132{
···41 default = false;
42 type = types.bool;
43 description = ''
44+ Enable in-memory compressed devices and swap space provided by the zram
45+ kernel module.
46+ See <link xlink:href="https://www.kernel.org/doc/Documentation/blockdev/zram.txt">
47+ https://www.kernel.org/doc/Documentation/blockdev/zram.txt
48+ </link>.
49 '';
50 };
51···53 default = 1;
54 type = types.int;
55 description = ''
56+ Number of zram devices to create. See also
57+ <literal>zramSwap.swapDevices</literal>
58+ '';
59+ };
60+61+ swapDevices = mkOption {
62+ default = null;
63+ example = 1;
64+ type = with types; nullOr int;
65+ description = ''
66+ Number of zram devices to be used as swap. Must be
67+ <literal><= zramSwap.numDevices</literal>.
68+ Default is same as <literal>zramSwap.numDevices</literal>, recommended is 1.
69 '';
70 };
71···75 description = ''
76 Maximum amount of memory that can be used by the zram swap devices
77 (as a percentage of your total memory). Defaults to 1/2 of your total
78+ RAM. Run <literal>zramctl</literal> to check how good memory is
79+ compressed.
80 '';
81 };
82···90 '';
91 };
9293+ algorithm = mkOption {
94+ default = "zstd";
95+ example = "lzo";
96+ type = with types; either (enum [ "lzo" "lz4" "zstd" ]) str;
97+ description = ''
98+ Compression algorithm. <literal>lzo</literal> has good compression,
99+ but is slow. <literal>lz4</literal> has bad compression, but is fast.
100+ <literal>zstd</literal> is both good compression and fast.
101+ You can check what other algorithms are supported by your zram device with
102+ <programlisting>cat /sys/class/block/zram*/comp_algorithm</programlisting>
103+ '';
104+ };
105 };
106107 };
108109 config = mkIf cfg.enable {
110111+ inherit warnings;
112+113 system.requiredKernelConfig = with config.lib.kernelConfig; [
114 (isModule "ZRAM")
115 ];
···131 createZramInitService = dev:
132 nameValuePair "zram-init-${dev}" {
133 description = "Init swap on zram-based device ${dev}";
0134 after = [ "dev-${dev}.device" "zram-reloader.service" ];
135 requires = [ "dev-${dev}.device" "zram-reloader.service" ];
136 before = [ "dev-${dev}.swap" ];
137 requiredBy = [ "dev-${dev}.swap" ];
138+ unitConfig.DefaultDependencies = false; # needed to prevent a cycle
139 serviceConfig = {
140 Type = "oneshot";
141 RemainAfterExit = true;
142 ExecStop = "${pkgs.runtimeShell} -c 'echo 1 > /sys/class/block/${dev}/reset'";
143 };
144 script = ''
145+ set -euo pipefail
146+0147 # Calculate memory to use for zram
148+ mem=$(${pkgs.gawk}/bin/awk '/MemTotal: / {
149+ print int($2*${toString cfg.memoryPercent}/100.0/${toString devicesCount}*1024)
150+ }' /proc/meminfo)
151152+ ${pkgs.utillinux}/sbin/zramctl --size $mem --algorithm ${cfg.algorithm} /dev/${dev}
153 ${pkgs.utillinux}/sbin/mkswap /dev/${dev}
154 '';
155 restartIfChanged = false;
···157 in listToAttrs ((map createZramInitService devices) ++ [(nameValuePair "zram-reloader"
158 {
159 description = "Reload zram kernel module when number of devices changes";
160+ wants = [ "systemd-udevd.service" ];
161+ after = [ "systemd-udevd.service" ];
162+ unitConfig.DefaultDependencies = false; # needed to prevent a cycle
163 serviceConfig = {
164 Type = "oneshot";
165 RemainAfterExit = true;
···167 ExecStart = "${modprobe} zram";
168 ExecStop = "${modprobe} -r zram";
169 };
170+ restartTriggers = [
171+ cfg.numDevices
172+ cfg.algorithm
173+ cfg.memoryPercent
174+ ];
175 restartIfChanged = true;
176 })]);
177
+8-4
nixos/modules/hardware/opengl.nix
···124125 config = mkIf cfg.enable {
126127- assertions = lib.singleton {
128- assertion = cfg.driSupport32Bit -> pkgs.stdenv.isx86_64;
129- message = "Option driSupport32Bit only makes sense on a 64-bit system.";
130- };
0000131132 systemd.tmpfiles.rules = [
133 "L+ /run/opengl-driver - - - - ${package}"
···124125 config = mkIf cfg.enable {
126127+ assertions = [
128+ { assertion = cfg.driSupport32Bit -> pkgs.stdenv.isx86_64;
129+ message = "Option driSupport32Bit only makes sense on a 64-bit system.";
130+ }
131+ { assertion = cfg.driSupport32Bit -> (config.boot.kernelPackages.kernel.features.ia32Emulation or false);
132+ message = "Option driSupport32Bit requires a kernel that supports 32bit emulation";
133+ }
134+ ];
135136 systemd.tmpfiles.rules = [
137 "L+ /run/opengl-driver - - - - ${package}"
+3-3
nixos/modules/installer/tools/nixos-option.sh
···314 # echo 1>&2 "Warning: This value is not an option."
315316 result=$(evalCfg "")
317- if names=$(attrNames "$result" 2> /dev/null); then
0318 echo 1>&2 "This attribute set contains:"
319 escapeQuotes () { eval echo "$1"; }
320 nixMap escapeQuotes "$names"
321 else
322- echo 1>&2 "An error occurred while looking for attribute names."
323- echo $result
324 fi
325fi
326
···314 # echo 1>&2 "Warning: This value is not an option."
315316 result=$(evalCfg "")
317+ if [ ! -z "$result" ]; then
318+ names=$(attrNames "$result" 2> /dev/null)
319 echo 1>&2 "This attribute set contains:"
320 escapeQuotes () { eval echo "$1"; }
321 nixMap escapeQuotes "$names"
322 else
323+ echo 1>&2 "An error occurred while looking for attribute names. Are you sure that '$option' exists?"
0324 fi
325fi
326
···1{ config, lib, pkgs, ... }:
23with lib;
4+5+let
6+ # Type for a valid systemd unit option. Needed for correctly passing "timerConfig" to "systemd.timers"
7+ unitOption = (import ../../system/boot/systemd-unit-options.nix { inherit config lib; }).unitOption;
8+in
9{
10 options.services.restic.backups = mkOption {
11 description = ''
···52 };
5354 timerConfig = mkOption {
55+ type = types.attrsOf unitOption;
56 default = {
57 OnCalendar = "daily";
58 };
+2-1
nixos/modules/services/databases/mysql.nix
···274 serviceConfig = {
275 Type = if hasNotify then "notify" else "simple";
276 RuntimeDirectory = "mysqld";
277- ExecStart = "${mysql}/bin/mysqld --defaults-file=/etc/my.cnf ${mysqldOptions}";
0278 };
279280 postStart = ''
···274 serviceConfig = {
275 Type = if hasNotify then "notify" else "simple";
276 RuntimeDirectory = "mysqld";
277+ # The last two environment variables are used for starting Galera clusters
278+ ExecStart = "${mysql}/bin/mysqld --defaults-file=/etc/my.cnf ${mysqldOptions} $_WSREP_NEW_CLUSTER $_WSREP_START_POSITION";
279 };
280281 postStart = ''
···18 socketPath = mkOption {
19 type = types.path;
20 default = "/var/run/dovecot/stats";
21- example = "/var/run/dovecot2/stats";
22 description = ''
23 Path under which the stats socket is placed.
24 The user/group under which the exporter runs,
25 should be able to access the socket in order
26 to scrape the metrics successfully.
000000000000000000000027 '';
28 };
29 scopes = mkOption {
···18 socketPath = mkOption {
19 type = types.path;
20 default = "/var/run/dovecot/stats";
21+ example = "/var/run/dovecot2/old-stats";
22 description = ''
23 Path under which the stats socket is placed.
24 The user/group under which the exporter runs,
25 should be able to access the socket in order
26 to scrape the metrics successfully.
27+28+ Please keep in mind that the stats module has changed in
29+ <link xlink:href="https://wiki2.dovecot.org/Upgrading/2.3">Dovecot 2.3+</link> which
30+ is not <link xlink:href="https://github.com/kumina/dovecot_exporter/issues/8">compatible with this exporter</link>.
31+32+ The following extra config has to be passed to Dovecot to ensure that recent versions
33+ work with this exporter:
34+ <programlisting>
35+ {
36+ <xref linkend="opt-services.prometheus.exporters.dovecot.enable" /> = true;
37+ <xref linkend="opt-services.prometheus.exporters.dovecot.socketPath" /> = "/var/run/dovecot2/old-stats";
38+ <xref linkend="opt-services.dovecot2.extraConfig" /> = '''
39+ mail_plugins = $mail_plugins old_stats
40+ service old-stats {
41+ unix_listener old-stats {
42+ user = nobody
43+ group = nobody
44+ }
45+ }
46+ ''';
47+ }
48+ </programlisting>
49 '';
50 };
51 scopes = mkOption {
···23{
24 name = "bittorrent";
25 meta = with pkgs.stdenv.lib.maintainers; {
26- maintainers = [ domenkozar eelco chaoflow rob wkennington bobvanderlinden ];
27 };
2829 nodes =
···23{
24 name = "bittorrent";
25 meta = with pkgs.stdenv.lib.maintainers; {
26+ maintainers = [ domenkozar eelco chaoflow rob bobvanderlinden ];
27 };
2829 nodes =
+1-1
nixos/tests/installer.nix
···200 name = "installer-" + name;
201 meta = with pkgs.stdenv.lib.maintainers; {
202 # put global maintainers here, individuals go into makeInstallerTest fkt call
203- maintainers = [ wkennington ] ++ (meta.maintainers or []);
204 };
205 nodes = {
206
···200 name = "installer-" + name;
201 meta = with pkgs.stdenv.lib.maintainers; {
202 # put global maintainers here, individuals go into makeInstallerTest fkt call
203+ maintainers = (meta.maintainers or []);
204 };
205 nodes = {
206
···3}:
45stdenv.mkDerivation rec {
6- version = "1.9.2";
7 rev = "v${version}";
89 inherit testedTargets;
···14 owner = "ispc";
15 repo = "ispc";
16 inherit rev;
17- sha256 = "0zaw7mwvly1csbdcbz9j8ry89n0r1fag1m1f579l4mgg1x6ksqry";
18 };
1920 # there are missing dependencies in the Makefile, causing sporadic build failures
···32 llvmPackages.clang-unwrapped # we need to link against libclang, so we need the unwrapped
33 ];
3435- patches = [
36- (fetchpatch {
37- url = https://github.com/ispc/ispc/commit/d504641f5af9d5992e7c8f0ed42c1063a39ede5b.patch;
38- sha256 = "192q3gyvam79469bmlwf0jpfi2y4f8hl2vgcvjngsqhvscwira0s";
39- })
40- ];
41-42- postPatch = "sed -i -e 's/\\/bin\\///g' -e 's/-lcurses/-lncurses/g' Makefile";
4344 # TODO: this correctly catches errors early, but also some things that are just weird and don't seem to be real
45 # errors
···3}:
45stdenv.mkDerivation rec {
6+ version = "1.10.0";
7 rev = "v${version}";
89 inherit testedTargets;
···14 owner = "ispc";
15 repo = "ispc";
16 inherit rev;
17+ sha256 = "1x07n2gaff3v32yvddrb659mx5gg12bnbsqbyfimp396wn04w60b";
18 };
1920 # there are missing dependencies in the Makefile, causing sporadic build failures
···32 llvmPackages.clang-unwrapped # we need to link against libclang, so we need the unwrapped
33 ];
3435+ postPatch = "sed -i -e 's,/bin/,,g' -e 's/-lcurses/-lncurses/g' Makefile";
00000003637 # TODO: this correctly catches errors early, but also some things that are just weird and don't seem to be real
38 # errors
+3-3
pkgs/development/compilers/osl/default.nix
···8 # In theory this could use GCC + Clang rather than just Clang,
9 # but https://github.com/NixOS/nixpkgs/issues/29877 stops this
10 name = "openshadinglanguage-${version}";
11- version = "1.9.10";
1213 src = fetchFromGitHub {
14 owner = "imageworks";
15 repo = "OpenShadingLanguage";
16- rev = "Release-1.9.10";
17- sha256 = "1iaw3pgh0h53gxk3bl148n1lfr54cx2yv0gnx2rjp2m5599acbz4";
18 };
1920 cmakeFlags = [ "-DUSE_BOOST_WAVE=ON" "-DENABLERTTI=ON" ];
···8 # In theory this could use GCC + Clang rather than just Clang,
9 # but https://github.com/NixOS/nixpkgs/issues/29877 stops this
10 name = "openshadinglanguage-${version}";
11+ version = "1.10.2";
1213 src = fetchFromGitHub {
14 owner = "imageworks";
15 repo = "OpenShadingLanguage";
16+ rev = "Release-1.10.2";
17+ sha256 = "1549hav5nd67a3cmhbalyaqhs39dh7w0nilf91pypnadrl1g03k7";
18 };
1920 cmakeFlags = [ "-DUSE_BOOST_WAVE=ON" "-DENABLERTTI=ON" ];
···37 description = "A software implementation of the JBIG1 data compression standard";
38 license = licenses.gpl2;
39 platforms = platforms.all;
40- maintainers = with maintainers; [ wkennington ];
41 };
42}
···37 description = "A software implementation of the JBIG1 data compression standard";
38 license = licenses.gpl2;
39 platforms = platforms.all;
040 };
41}
+4-5
pkgs/development/libraries/jemalloc/common.nix
···4# then stops downstream builds (mariadb in particular) from detecting it. This
5# option should remove the prefix and give us a working jemalloc.
6# Causes segfaults with some software (ex. rustc), but defaults to true for backward
7-# compatibility. Ignored on non OSX.
8-, stripPrefix ? true
9, disableInitExecTls ? false
10}:
11···2223 # see the comment on stripPrefix
24 configureFlags = []
25- ++ optional (stdenv.isDarwin && stripPrefix) [ "--with-jemalloc-prefix=" ]
26- ++ optional disableInitExecTls [ "--disable-initial-exec-tls" ]
27 ;
2829 doCheck = true;
···39 '';
40 license = licenses.bsd2;
41 platforms = platforms.all;
42- maintainers = with maintainers; [ wkennington ];
43 };
44}
···4# then stops downstream builds (mariadb in particular) from detecting it. This
5# option should remove the prefix and give us a working jemalloc.
6# Causes segfaults with some software (ex. rustc), but defaults to true for backward
7+# compatibility.
8+, stripPrefix ? stdenv.hostPlatform.isDarwin
9, disableInitExecTls ? false
10}:
11···2223 # see the comment on stripPrefix
24 configureFlags = []
25+ ++ optional stripPrefix "--with-jemalloc-prefix="
26+ ++ optional disableInitExecTls "--disable-initial-exec-tls"
27 ;
2829 doCheck = true;
···39 '';
40 license = licenses.bsd2;
41 platforms = platforms.all;
042 };
43}
+1-2
pkgs/development/libraries/kerberos/heimdal.nix
···4849 postUnpack = ''
50 sed -i '/^DEFAULT_INCLUDES/ s,$, -I..,' source/cf/Makefile.am.common
51- sed -i -e 's/date/date --date="@$SOURCE_DATE_EPOCH"/' source/configure.ac
52 '';
5354 preConfigure = ''
···92 description = "An implementation of Kerberos 5 (and some more stuff)";
93 license = licenses.bsd3;
94 platforms = platforms.unix;
95- maintainers = with maintainers; [ wkennington ];
96 };
9798 passthru.implementation = "heimdal";
···4849 postUnpack = ''
50 sed -i '/^DEFAULT_INCLUDES/ s,$, -I..,' source/cf/Makefile.am.common
51+ sed -i -e 's/date/date --date="@$SOURCE_DATE_EPOCH"/' source/configure.ac
52 '';
5354 preConfigure = ''
···92 description = "An implementation of Kerberos 5 (and some more stuff)";
93 license = licenses.bsd3;
94 platforms = platforms.unix;
095 };
9697 passthru.implementation = "heimdal";
···13 description = "A C library for Linux/Unix for executing name service queries asynchronously";
14 license = licenses.lgpl21;
15 platforms = platforms.unix;
16- maintainers = with maintainers; [ wkennington ];
17 };
18}
···13 description = "A C library for Linux/Unix for executing name service queries asynchronously";
14 license = licenses.lgpl21;
15 platforms = platforms.unix;
016 };
17}
-1
pkgs/development/libraries/libclc/default.nix
···32 description = "Implementation of the library requirements of the OpenCL C programming language";
33 license = licenses.mit;
34 platforms = platforms.all;
35- maintainers = with maintainers; [ wkennington ];
36 };
37}
···32 description = "Implementation of the library requirements of the OpenCL C programming language";
33 license = licenses.mit;
34 platforms = platforms.all;
035 };
36}
···18 description = "Help to make sense out of syslog data, or, actually, any event data that is present in text form";
19 license = licenses.lgpl21;
20 platforms = platforms.all;
21- maintainers = with maintainers; [ wkennington ];
22 };
23}
···18 description = "Help to make sense out of syslog data, or, actually, any event data that is present in text form";
19 license = licenses.lgpl21;
20 platforms = platforms.all;
021 };
22}
-1
pkgs/development/libraries/libmbim/default.nix
···22 description = "Library for talking to WWAN modems and devices which speak the Mobile Interface Broadband Model (MBIM) protocol";
23 platforms = platforms.linux;
24 license = licenses.gpl2;
25- maintainers = with maintainers; [ wkennington ];
26 };
27}
···22 description = "Library for talking to WWAN modems and devices which speak the Mobile Interface Broadband Model (MBIM) protocol";
23 platforms = platforms.linux;
24 license = licenses.gpl2;
025 };
26}
···22 description = "A C library and command-line tool that implements the host-side of the U2F protocol";
23 license = licenses.bsd2;
24 platforms = platforms.unix;
25- maintainers = with maintainers; [ wkennington ];
26 };
27}
···22 description = "A C library and command-line tool that implements the host-side of the U2F protocol";
23 license = licenses.bsd2;
24 platforms = platforms.unix;
025 };
26}
+1-1
pkgs/development/libraries/libxmlxx/default.nix
···21 description = "C++ wrapper for the libxml2 XML parser library";
22 license = licenses.lgpl2Plus;
23 platforms = platforms.unix;
24- maintainers = with maintainers; [ phreedom wkennington ];
25 };
26}
···21 description = "C++ wrapper for the libxml2 XML parser library";
22 license = licenses.lgpl2Plus;
23 platforms = platforms.unix;
24+ maintainers = with maintainers; [ phreedom ];
25 };
26}
-1
pkgs/development/libraries/libyaml/default.nix
···31 description = "A YAML 1.1 parser and emitter written in C";
32 license = licenses.mit;
33 platforms = platforms.all;
34- maintainers = with maintainers; [ wkennington ];
35 };
36}
···31 description = "A YAML 1.1 parser and emitter written in C";
32 license = licenses.mit;
33 platforms = platforms.all;
034 };
35}
···20 description = "A C library to interact with the CCID-part of the Yubikey NEO";
21 license = licenses.bsd3;
22 platforms = platforms.unix;
23- maintainers = with maintainers; [ wkennington ];
24 };
25}
···20 description = "A C library to interact with the CCID-part of the Yubikey NEO";
21 license = licenses.bsd3;
22 platforms = platforms.unix;
023 };
24}
···21 description = "MessagePack implementation for C and C++";
22 homepage = https://msgpack.org;
23 license = licenses.asl20;
24- maintainers = with maintainers; [ redbaron wkennington ];
25 platforms = platforms.all;
26 };
27}
···21 description = "MessagePack implementation for C and C++";
22 homepage = https://msgpack.org;
23 license = licenses.asl20;
24+ maintainers = with maintainers; [ redbaron ];
25 platforms = platforms.all;
26 };
27}
+1-2
pkgs/development/libraries/mtdev/default.nix
···16 kernel MT events to the slotted type B protocol. The events put into
17 mtdev may be from any MT device, specifically type A without contact
18 tracking, type A with contact tracking, or type B with contact tracking.
19- See the kernel documentation for further details.
20 '';
21 license = licenses.mit;
22 platforms = platforms.linux;
23- maintainers = with maintainers; [ wkennington ];
24 };
25}
···16 kernel MT events to the slotted type B protocol. The events put into
17 mtdev may be from any MT device, specifically type A without contact
18 tracking, type A with contact tracking, or type B with contact tracking.
19+ See the kernel documentation for further details.
20 '';
21 license = licenses.mit;
22 platforms = platforms.linux;
023 };
24}
···14 description = "A wrapper for the user, group and hosts NSS API";
15 homepage = "https://git.samba.org/?p=uid_wrapper.git;a=summary;";
16 license = licenses.bsd3;
17- maintainers = with maintainers; [ wkennington ];
18 platforms = platforms.linux;
19 };
20}
···14 description = "A wrapper for the user, group and hosts NSS API";
15 homepage = "https://git.samba.org/?p=uid_wrapper.git;a=summary;";
16 license = licenses.bsd3;
017 platforms = platforms.linux;
18 };
19}
+1-1
pkgs/development/libraries/rocksdb/default.nix
···81 description = "A library that provides an embeddable, persistent key-value store for fast storage";
82 license = licenses.bsd3;
83 platforms = platforms.x86_64;
84- maintainers = with maintainers; [ adev wkennington ];
85 };
86}
···81 description = "A library that provides an embeddable, persistent key-value store for fast storage";
82 license = licenses.bsd3;
83 platforms = platforms.x86_64;
84+ maintainers = with maintainers; [ adev ];
85 };
86}
···19 description = "A more Linux packaging friendly copy of the AudioProcessing module from the WebRTC project";
20 license = licenses.bsd3;
21 platforms = platforms.unix;
22- maintainers = with maintainers; [ wkennington ];
23 };
24}
···19 description = "A more Linux packaging friendly copy of the AudioProcessing module from the WebRTC project";
20 license = licenses.bsd3;
21 platforms = platforms.unix;
022 };
23}
···66 # IOKit's dependencies are inconsistent between OSX versions, so this is the best we
67 # can do until nix 1.11's release
68 __impureHostDeps = [ "/usr/lib" ];
0000000000000069}
···66 # IOKit's dependencies are inconsistent between OSX versions, so this is the best we
67 # can do until nix 1.11's release
68 __impureHostDeps = [ "/usr/lib" ];
69+70+ meta = with stdenv.lib; {
71+ description = "A package which provides cryptographic recipes and primitives";
72+ longDescription = ''
73+ Cryptography includes both high level recipes and low level interfaces to
74+ common cryptographic algorithms such as symmetric ciphers, message
75+ digests, and key derivation functions.
76+ Our goal is for it to be your "cryptographic standard library". It
77+ supports Python 2.7, Python 3.4+, and PyPy 5.3+.
78+ '';
79+ homepage = https://github.com/pyca/cryptography;
80+ license = with licenses; [ asl20 bsd3 psfl ];
81+ maintainers = with maintainers; [ primeos ];
82+ };
83}
···22 description = "A central privileged daemon that manages all your cgroups";
23 license = licenses.lgpl21;
24 platforms = platforms.linux;
25- maintainers = with maintainers; [ wkennington ];
26 };
27}
···22 description = "A central privileged daemon that manages all your cgroups";
23 license = licenses.lgpl21;
24 platforms = platforms.linux;
025 };
26}
···14 # As ninja install is not used here, the rpath needs to be manually fixed.
15 # Otherwise the resulting binary doesn't properly link against systemd-shared.so
16 postFixup = ''
17- sharedLib=libsystemd-shared-${p.version}.so
18 for prog in `find $out -type f -executable`; do
19- (patchelf --print-needed $prog | grep $sharedLib > /dev/null) && (
20 patchelf --set-rpath `patchelf --print-rpath $prog`:"$out/lib/systemd" $prog
21 ) || true
22 done
0023 '';
2425 installPhase = ''
···14 # As ninja install is not used here, the rpath needs to be manually fixed.
15 # Otherwise the resulting binary doesn't properly link against systemd-shared.so
16 postFixup = ''
017 for prog in `find $out -type f -executable`; do
18+ (patchelf --print-needed $prog | grep 'libsystemd-shared-.*\.so' > /dev/null) && (
19 patchelf --set-rpath `patchelf --print-rpath $prog`:"$out/lib/systemd" $prog
20 ) || true
21 done
22+ # test it's OK
23+ "$out"/lib/systemd/systemd-cryptsetup
24 '';
2526 installPhase = ''
+1-1
pkgs/os-specific/linux/wpa_supplicant/default.nix
···142 homepage = http://hostap.epitest.fi/wpa_supplicant/;
143 description = "A tool for connecting to WPA and WPA2-protected wireless networks";
144 license = licenses.bsd3;
145- maintainers = with maintainers; [ marcweber wkennington ];
146 platforms = platforms.linux;
147 };
148}
···142 homepage = http://hostap.epitest.fi/wpa_supplicant/;
143 description = "A tool for connecting to WPA and WPA2-protected wireless networks";
144 license = licenses.bsd3;
145+ maintainers = with maintainers; [ marcweber ];
146 platforms = platforms.linux;
147 };
148}
···67 description = "A Group Communication System with features for implementing high availability within applications";
68 license = licenses.bsd3;
69 platforms = platforms.linux;
70- maintainers = with maintainers; [ wkennington montag451 ];
71 };
72}
···67 description = "A Group Communication System with features for implementing high availability within applications";
68 license = licenses.bsd3;
69 platforms = platforms.linux;
70+ maintainers = with maintainers; [ montag451 ];
71 };
72}
+2-2
pkgs/servers/dns/knot-dns/default.nix
···7# Note: ATM only the libraries have been tested in nixpkgs.
8stdenv.mkDerivation rec {
9 name = "knot-dns-${version}";
10- version = "2.7.5";
1112 src = fetchurl {
13 url = "https://secure.nic.cz/files/knot-dns/knot-${version}.tar.xz";
14- sha256 = "7d70d6d8f708285517d1d7c4ff2e5ddfd119cd2962c7a8d3f50a4c695209a086";
15 };
1617 outputs = [ "bin" "out" "dev" ];
···7# Note: ATM only the libraries have been tested in nixpkgs.
8stdenv.mkDerivation rec {
9 name = "knot-dns-${version}";
10+ version = "2.7.6";
1112 src = fetchurl {
13 url = "https://secure.nic.cz/files/knot-dns/knot-${version}.tar.xz";
14+ sha256 = "a1cb1877f04f7c2549c977c2658cfafd07c7e0e924f8e8aa8d4ae4b707f697a2";
15 };
1617 outputs = [ "bin" "out" "dev" ];
+1-1
pkgs/servers/gpm/default.nix
···57 description = "A daemon that provides mouse support on the Linux console";
58 license = licenses.gpl2;
59 platforms = platforms.linux ++ platforms.cygwin;
60- maintainers = with maintainers; [ eelco wkennington ];
61 };
62}
···57 description = "A daemon that provides mouse support on the Linux console";
58 license = licenses.gpl2;
59 platforms = platforms.linux ++ platforms.cygwin;
60+ maintainers = with maintainers; [ eelco ];
61 };
62}
···121 description = "Sound server for POSIX and Win32 systems";
122 homepage = http://www.pulseaudio.org/;
123 license = lib.licenses.lgpl2Plus;
124- maintainers = with lib.maintainers; [ lovek323 wkennington ];
125 platforms = lib.platforms.unix;
126127 longDescription = ''
···121 description = "Sound server for POSIX and Win32 systems";
122 homepage = http://www.pulseaudio.org/;
123 license = lib.licenses.lgpl2Plus;
124+ maintainers = with lib.maintainers; [ lovek323 ];
125 platforms = lib.platforms.unix;
126127 longDescription = ''
-1
pkgs/servers/samba/4.x.nix
···100 homepage = https://www.samba.org/;
101 description = "The standard Windows interoperability suite of programs for Linux and Unix";
102 license = licenses.gpl3;
103- maintainers = with maintainers; [ wkennington ];
104 platforms = platforms.unix;
105 };
106}
···100 homepage = https://www.samba.org/;
101 description = "The standard Windows interoperability suite of programs for Linux and Unix";
102 license = licenses.gpl3;
0103 platforms = platforms.unix;
104 };
105}
···31 description = "A middleware that works between postgresql servers and postgresql clients";
32 license = licenses.free;
33 platforms = platforms.linux;
34- maintainers = with maintainers; [ wkennington ];
35 };
36}
···31 description = "A middleware that works between postgresql servers and postgresql clients";
32 license = licenses.free;
33 platforms = platforms.linux;
034 };
35}
+68-16
pkgs/servers/sql/postgresql/default.nix
···1-{ lib, stdenv, glibc, fetchurl, zlib, readline, libossp_uuid, openssl, libxml2, makeWrapper, tzdata, systemd, icu, pkgconfig }:
2-3let
45- common = { version, sha256, psqlSchema }:
000000000006 let
7 atLeast = lib.versionAtLeast version;
089- # Build with ICU by default on versions that support it
10- icuEnabled = atLeast "10";
11- in stdenv.mkDerivation (rec {
12 name = "postgresql-${version}";
13 inherit version;
14···97 disallowedReferences = [ stdenv.cc ];
9899 passthru = {
100- inherit readline psqlSchema;
000000000000101 };
102103 meta = with lib; {
104 homepage = https://www.postgresql.org;
105 description = "A powerful, open source object-relational database system";
106 license = licenses.postgresql;
107- maintainers = with maintainers; [ ocharles thoughtpolice ];
108 platforms = platforms.unix;
109 knownVulnerabilities = optional (!atLeast "9.4")
110 "PostgreSQL versions older than 9.4 are not maintained anymore!";
111 };
112- });
113114-in {
0000000115116- postgresql_9_4 = common {
000000000000000117 version = "9.4.20";
118 psqlSchema = "9.4";
119 sha256 = "0zzqjz5jrn624hzh04drpj6axh30a9k6bgawid6rwk45nbfxicgf";
00120 };
121122- postgresql_9_5 = common {
123 version = "9.5.15";
124 psqlSchema = "9.5";
125 sha256 = "0i2lylgmsmy2g1ixlvl112fryp7jmrd0i2brk8sxb7vzzpg3znnv";
00126 };
127128- postgresql_9_6 = common {
129 version = "9.6.11";
130 psqlSchema = "9.6";
131 sha256 = "0c55akrkzqd6p6a8hr0338wk246hl76r9j16p4zn3s51d7f0l99q";
00132 };
133134- postgresql_10 = common {
135 version = "10.6";
136 psqlSchema = "10.0";
137 sha256 = "0jv26y3f10svrjxzsgqxg956c86b664azyk2wppzpa5x11pjga38";
00138 };
139140- postgresql_11 = common {
141 version = "11.1";
142 psqlSchema = "11.1";
143 sha256 = "026v0sicsh7avzi45waf8shcbhivyxmi7qgn9fd1x0vl520mx0ch";
00144 };
145146-}
···001let
23+ generic =
4+ # dependencies
5+ { stdenv, lib, fetchurl, makeWrapper
6+ , glibc, zlib, readline, openssl, icu, systemd, libossp_uuid
7+ , pkgconfig, libxml2, tzdata
8+9+ # for postgreql.pkgs
10+ , this, self, newScope, buildEnv
11+12+ # source specification
13+ , version, sha256, psqlSchema
14+ }:
15 let
16 atLeast = lib.versionAtLeast version;
17+ icuEnabled = atLeast "10";
1819+ in stdenv.mkDerivation rec {
0020 name = "postgresql-${version}";
21 inherit version;
22···105 disallowedReferences = [ stdenv.cc ];
106107 passthru = {
108+ inherit readline psqlSchema version;
109+110+ pkgs = let
111+ scope = { postgresql = this; };
112+ newSelf = self // scope;
113+ newSuper = { callPackage = newScope (scope // this.pkgs); };
114+ in import ./packages.nix newSelf newSuper;
115+116+ withPackages = postgresqlWithPackages {
117+ inherit makeWrapper buildEnv;
118+ postgresql = this;
119+ }
120+ this.pkgs;
121 };
122123 meta = with lib; {
124 homepage = https://www.postgresql.org;
125 description = "A powerful, open source object-relational database system";
126 license = licenses.postgresql;
127+ maintainers = with maintainers; [ ocharles thoughtpolice danbst ];
128 platforms = platforms.unix;
129 knownVulnerabilities = optional (!atLeast "9.4")
130 "PostgreSQL versions older than 9.4 are not maintained anymore!";
131 };
132+ };
133134+ postgresqlWithPackages = { postgresql, makeWrapper, buildEnv }: pkgs: f: buildEnv {
135+ name = "postgresql-and-plugins-${postgresql.version}";
136+ paths = f pkgs ++ [
137+ postgresql
138+ postgresql.lib
139+ postgresql.man # in case user installs this into environment
140+ ];
141+ buildInputs = [ makeWrapper ];
142143+ # We include /bin to ensure the $out/bin directory is created, which is
144+ # needed because we'll be removing the files from that directory in postBuild
145+ # below. See #22653
146+ pathsToLink = ["/" "/bin"];
147+148+ postBuild = ''
149+ mkdir -p $out/bin
150+ rm $out/bin/{pg_config,postgres,pg_ctl}
151+ cp --target-directory=$out/bin ${postgresql}/bin/{postgres,pg_config,pg_ctl}
152+ wrapProgram $out/bin/postgres --set NIX_PGLIBDIR $out/lib
153+ '';
154+ };
155+156+in self: super: {
157+158+ postgresql_9_4 = super.callPackage generic {
159 version = "9.4.20";
160 psqlSchema = "9.4";
161 sha256 = "0zzqjz5jrn624hzh04drpj6axh30a9k6bgawid6rwk45nbfxicgf";
162+ this = self.postgresql_9_4;
163+ inherit self;
164 };
165166+ postgresql_9_5 = super.callPackage generic {
167 version = "9.5.15";
168 psqlSchema = "9.5";
169 sha256 = "0i2lylgmsmy2g1ixlvl112fryp7jmrd0i2brk8sxb7vzzpg3znnv";
170+ this = self.postgresql_9_5;
171+ inherit self;
172 };
173174+ postgresql_9_6 = super.callPackage generic {
175 version = "9.6.11";
176 psqlSchema = "9.6";
177 sha256 = "0c55akrkzqd6p6a8hr0338wk246hl76r9j16p4zn3s51d7f0l99q";
178+ this = self.postgresql_9_6;
179+ inherit self;
180 };
181182+ postgresql_10 = super.callPackage generic {
183 version = "10.6";
184 psqlSchema = "10.0";
185 sha256 = "0jv26y3f10svrjxzsgqxg956c86b664azyk2wppzpa5x11pjga38";
186+ this = self.postgresql_10;
187+ inherit self;
188 };
189190+ postgresql_11 = super.callPackage generic {
191 version = "11.1";
192 psqlSchema = "11.1";
193 sha256 = "026v0sicsh7avzi45waf8shcbhivyxmi7qgn9fd1x0vl520mx0ch";
194+ this = self.postgresql_11;
195+ inherit self;
196 };
197198+}
···26 certificates, and create certificate requests, and other operations.
27 A shared library and a command-line tool is included.
28 '';
29- maintainers = with maintainers; [ wkennington ];
30 license = licenses.bsd2;
31 platforms = platforms.all;
32 };
···26 certificates, and create certificate requests, and other operations.
27 A shared library and a command-line tool is included.
28 '';
029 license = licenses.bsd2;
30 platforms = platforms.all;
31 };
···64 frontend applications and libraries are available. Version 2 of GnuPG
65 also provides support for S/MIME.
66 '';
67- maintainers = with maintainers; [ wkennington peti fpletz vrthra ];
68 platforms = platforms.all;
69 };
70}
···64 frontend applications and libraries are available. Version 2 of GnuPG
65 also provides support for S/MIME.
66 '';
67+ maintainers = with maintainers; [ peti fpletz vrthra ];
68 platforms = platforms.all;
69 };
70}
-1
pkgs/tools/security/opensc/default.nix
···44 description = "Set of libraries and utilities to access smart cards";
45 homepage = https://github.com/OpenSC/OpenSC/wiki;
46 license = licenses.lgpl21Plus;
47- maintainers = with maintainers; [ wkennington ];
48 platforms = platforms.all;
49 };
50}
···44 description = "Set of libraries and utilities to access smart cards";
45 homepage = https://github.com/OpenSC/OpenSC/wiki;
46 license = licenses.lgpl21Plus;
047 platforms = platforms.all;
48 };
49}
-1
pkgs/tools/security/pcsclite/default.nix
···43 description = "Middleware to access a smart card using SCard API (PC/SC)";
44 homepage = https://pcsclite.apdu.fr/;
45 license = licenses.bsd3;
46- maintainers = with maintainers; [ wkennington ];
47 platforms = with platforms; unix;
48 };
49}
···43 description = "Middleware to access a smart card using SCard API (PC/SC)";
44 homepage = https://pcsclite.apdu.fr/;
45 license = licenses.bsd3;
046 platforms = with platforms; unix;
47 };
48}