···833- `pythonRemoveBinBytecode` to remove bytecode from the `/bin` folder.
834- `setuptoolsBuildHook` to build a wheel using `setuptools`.
835- `setuptoolsCheckHook` to run tests with `python setup.py test`.
0836- `wheelUnpackHook` to move a wheel to the correct folder so it can be installed with the `pipInstallHook`.
837838### Development mode
···833- `pythonRemoveBinBytecode` to remove bytecode from the `/bin` folder.
834- `setuptoolsBuildHook` to build a wheel using `setuptools`.
835- `setuptoolsCheckHook` to run tests with `python setup.py test`.
836+- `venvShellHook` to source a Python 3 `venv` at the `venvDir` location. A `venv` is created if it does not yet exist.
837- `wheelUnpackHook` to move a wheel to the correct folder so it can be installed with the `pipInstallHook`.
838839### Development mode
+11-7
doc/languages-frameworks/rust.section.md
···3233```
34rustPlatform.buildRustPackage rec {
35- name = "ripgrep-${version}";
36- version = "0.4.0";
3738 src = fetchFromGitHub {
39 owner = "BurntSushi";
40- repo = "ripgrep";
41- rev = "${version}";
42- sha256 = "0y5d1n6hkw85jb3rblcxqas2fp82h3nghssa4xqrhqnz25l799pj";
43 };
4445- cargoSha256 = "0q68qyl2h6i0qsz82z840myxlnjay8p1w5z7hfyr8fqp7wgwa9cx";
46 verifyCargoDeps = true;
4748 meta = with stdenv.lib; {
···66build-time.
6768When `verifyCargoDeps` is set to `true`, the build will also verify that the
69-`cargoSha256` is not out of date by comparing the `Cargo.lock` file in both the `cargoDeps` and `src`. Note that this option changes the value of `cargoSha256` since it also copies the `Cargo.lock` in it. To avoid breaking backward-compatibility this option is not enabled by default but hopefully will be in the future.
00007071### Building a crate for a different target
72
···3233```
34rustPlatform.buildRustPackage rec {
35+ pname = "ripgrep";
36+ version = "11.0.2";
3738 src = fetchFromGitHub {
39 owner = "BurntSushi";
40+ repo = pname;
41+ rev = version;
42+ sha256 = "1iga3320mgi7m853la55xip514a3chqsdi1a1rwv25lr9b1p7vd3";
43 };
4445+ cargoSha256 = "17ldqr3asrdcsh4l29m3b5r37r5d0b3npq1lrgjmxb6vlx6a36qh";
46 verifyCargoDeps = true;
4748 meta = with stdenv.lib; {
···66build-time.
6768When `verifyCargoDeps` is set to `true`, the build will also verify that the
69+`cargoSha256` is not out of date by comparing the `Cargo.lock` file in both the
70+`cargoDeps` and `src`. Note that this option changes the value of `cargoSha256`
71+since it also copies the `Cargo.lock` in it. To avoid breaking
72+backward-compatibility this option is not enabled by default but hopefully will
73+be in the future.
7475### Building a crate for a different target
76
···9 # Returns true if the path exists and is a directory, false otherwise
10 pathIsDirectory = p: if builtins.pathExists p then (pathType p) == "directory" else false;
1100012 # Bring in a path as a source, filtering out all Subversion and CVS
13 # directories, as well as backup files (*~).
14 cleanSourceFilter = name: type: let baseName = baseNameOf (toString name); in ! (
···110 with builtins;
111 let fileName = toString path + "/" + file;
112 packedRefsName = toString path + "/packed-refs";
113- in if lib.pathExists fileName
0000000000000000000114 then
115 let fileContent = lib.fileContents fileName;
116- # Sometimes git stores the commitId directly in the file but
117- # sometimes it stores something like: «ref: refs/heads/branch-name»
118 matchRef = match "^ref: (.*)$" fileContent;
119- in if matchRef == null
120 then fileContent
121 else readCommitFromFile (lib.head matchRef) path
00122 # Sometimes, the file isn't there at all and has been packed away in the
123 # packed-refs file, so we have to grep through it:
124- else if lib.pathExists packedRefsName
125 then
126 let fileContent = readFile packedRefsName;
127 matchRef = match (".*\n([^\n ]*) " + file + "\n.*") fileContent;
128- in if matchRef == null
129 then throw ("Could not find " + file + " in " + packedRefsName)
130 else lib.head matchRef
0131 else throw ("Not a .git directory: " + path);
132 in readCommitFromFile "HEAD";
133
···9 # Returns true if the path exists and is a directory, false otherwise
10 pathIsDirectory = p: if builtins.pathExists p then (pathType p) == "directory" else false;
1112+ # Returns true if the path exists and is a regular file, false otherwise
13+ pathIsRegularFile = p: if builtins.pathExists p then (pathType p) == "regular" else false;
14+15 # Bring in a path as a source, filtering out all Subversion and CVS
16 # directories, as well as backup files (*~).
17 cleanSourceFilter = name: type: let baseName = baseNameOf (toString name); in ! (
···113 with builtins;
114 let fileName = toString path + "/" + file;
115 packedRefsName = toString path + "/packed-refs";
116+ in if pathIsRegularFile path
117+ # Resolve git worktrees. See gitrepository-layout(5)
118+ then
119+ let m = match "^gitdir: (.*)$" (lib.fileContents path);
120+ in if m == null
121+ then throw ("File contains no gitdir reference: " + path)
122+ else
123+ let gitDir = lib.head m;
124+ commonDir' = if pathIsRegularFile "${gitDir}/commondir"
125+ then lib.fileContents "${gitDir}/commondir"
126+ else gitDir;
127+ commonDir = if lib.hasPrefix "/" commonDir'
128+ then commonDir'
129+ else toString (/. + "${gitDir}/${commonDir'}");
130+ refFile = lib.removePrefix "${commonDir}/" "${gitDir}/${file}";
131+ in readCommitFromFile refFile commonDir
132+133+ else if pathIsRegularFile fileName
134+ # Sometimes git stores the commitId directly in the file but
135+ # sometimes it stores something like: «ref: refs/heads/branch-name»
136 then
137 let fileContent = lib.fileContents fileName;
00138 matchRef = match "^ref: (.*)$" fileContent;
139+ in if matchRef == null
140 then fileContent
141 else readCommitFromFile (lib.head matchRef) path
142+143+ else if pathIsRegularFile packedRefsName
144 # Sometimes, the file isn't there at all and has been packed away in the
145 # packed-refs file, so we have to grep through it:
0146 then
147 let fileContent = readFile packedRefsName;
148 matchRef = match (".*\n([^\n ]*) " + file + "\n.*") fileContent;
149+ in if matchRef == null
150 then throw ("Could not find " + file + " in " + packedRefsName)
151 else lib.head matchRef
152+153 else throw ("Not a .git directory: " + path);
154 in readCommitFromFile "HEAD";
155
···174checkConfigOutput "true" config.submodule.outer ./declare-submoduleWith-modules.nix
175176## Paths should be allowed as values and work as expected
177-# Temporarily disabled until https://github.com/NixOS/nixpkgs/pull/76861
178-#checkConfigOutput "true" config.submodule.enable ./declare-submoduleWith-path.nix
179180# Check that disabledModules works recursively and correctly
181checkConfigOutput "true" config.enable ./disable-recursive/main.nix
···174checkConfigOutput "true" config.submodule.outer ./declare-submoduleWith-modules.nix
175176## Paths should be allowed as values and work as expected
177+checkConfigOutput "true" config.submodule.enable ./declare-submoduleWith-path.nix
0178179# Check that disabledModules works recursively and correctly
180checkConfigOutput "true" config.enable ./disable-recursive/main.nix
+1-1
lib/trivial.nix
···191 let
192 revisionFile = "${toString ./..}/.git-revision";
193 gitRepo = "${toString ./..}/.git";
194- in if lib.pathIsDirectory gitRepo
195 then lib.commitIdFromGitRepo gitRepo
196 else if lib.pathExists revisionFile then lib.fileContents revisionFile
197 else default;
···191 let
192 revisionFile = "${toString ./..}/.git-revision";
193 gitRepo = "${toString ./..}/.git";
194+ in if builtins.pathExists gitRepo
195 then lib.commitIdFromGitRepo gitRepo
196 else if lib.pathExists revisionFile then lib.fileContents revisionFile
197 else default;
+64-12
lib/types.nix
···340 let
341 padWidth = stringLength (toString (length def.value));
342 unnamed = i: unnamedPrefix + fixedWidthNumber padWidth i;
0000000000000000000000000000000000000000000000000343 res =
344 { inherit (def) file;
345 value = listToAttrs (
346 imap1 (elemIdx: elem:
347- { name = elem.name or (unnamed elemIdx);
348 value = elem;
349 }) def.value);
350 };
351 option = concatStringsSep "." loc;
352 sample = take 3 def.value;
353- list = concatMapStrings (x: ''{ name = "${x.name or "unnamed"}"; ...} '') sample;
354- set = concatMapStrings (x: ''${x.name or "unnamed"} = {...}; '') sample;
0355 msg = ''
356 In file ${def.file}
357 a list is being assigned to the option config.${option}.
···359 See https://git.io/fj2zm for more information.
360 Do
361 ${option} =
362- { ${set}...}
363 instead of
364 ${option} =
365- [ ${list}...]
366 '';
367 in
368 lib.warn msg res
···430 else unify (if shorthandOnlyDefinesConfig then { config = value; } else value);
431432 allModules = defs: modules ++ imap1 (n: { value, file }:
433- # Annotate the value with the location of its definition for better error messages
434- coerce (lib.modules.unifyModuleSyntax file "${toString file}-${toString n}") value
00435 ) defs;
436437 in
438 mkOptionType rec {
439 name = "submodule";
440- check = x: isAttrs x || isFunction x;
441 merge = loc: defs:
442 (evalModules {
443 modules = allModules defs;
···538 tail' = tail ts;
539 in foldl' either head' tail';
540541- # Either value of type `finalType` or `coercedType`, the latter is
542 # converted to `finalType` using `coerceFunc`.
543 coercedTo = coercedType: coerceFunc: finalType:
544 assert lib.assertMsg (coercedType.getSubModules == null)
···547 mkOptionType rec {
548 name = "coercedTo";
549 description = "${finalType.description} or ${coercedType.description} convertible to it";
550- check = x: finalType.check x || (coercedType.check x && finalType.check (coerceFunc x));
551 merge = loc: defs:
552 let
553 coerceVal = val:
554- if finalType.check val then val
555- else coerceFunc val;
556 in finalType.merge loc (map (def: def // { value = coerceVal def.value; }) defs);
557 emptyValue = finalType.emptyValue;
558 getSubOptions = finalType.getSubOptions;
···340 let
341 padWidth = stringLength (toString (length def.value));
342 unnamed = i: unnamedPrefix + fixedWidthNumber padWidth i;
343+ anyString = placeholder "name";
344+ nameAttrs = [
345+ { path = [ "environment" "etc" ];
346+ name = "target";
347+ }
348+ { path = [ "containers" anyString "bindMounts" ];
349+ name = "mountPoint";
350+ }
351+ { path = [ "programs" "ssh" "knownHosts" ];
352+ # hostNames is actually a list so we would need to handle it only when singleton
353+ name = "hostNames";
354+ }
355+ { path = [ "fileSystems" ];
356+ name = "mountPoint";
357+ }
358+ { path = [ "boot" "specialFileSystems" ];
359+ name = "mountPoint";
360+ }
361+ { path = [ "services" "znapzend" "zetup" ];
362+ name = "dataset";
363+ }
364+ { path = [ "services" "znapzend" "zetup" anyString "destinations" ];
365+ name = "label";
366+ }
367+ { path = [ "services" "geoclue2" "appConfig" ];
368+ name = "desktopID";
369+ }
370+ ];
371+ matched = let
372+ equals = a: b: b == anyString || a == b;
373+ fallback = { name = "name"; };
374+ in findFirst ({ path, ... }: all (v: v == true) (zipListsWith equals loc path)) fallback nameAttrs;
375+ nameAttr = matched.name;
376+ nameValueOld = value:
377+ if isList value then
378+ if length value > 0 then
379+ "[ " + concatMapStringsSep " " escapeNixString value + " ]"
380+ else
381+ "[ ]"
382+ else
383+ escapeNixString value;
384+ nameValueNew = value: unnamed:
385+ if isList value then
386+ if length value > 0 then
387+ head value
388+ else
389+ unnamed
390+ else
391+ value;
392 res =
393 { inherit (def) file;
394 value = listToAttrs (
395 imap1 (elemIdx: elem:
396+ { name = nameValueNew (elem.${nameAttr} or (unnamed elemIdx)) (unnamed elemIdx);
397 value = elem;
398 }) def.value);
399 };
400 option = concatStringsSep "." loc;
401 sample = take 3 def.value;
402+ more = lib.optionalString (length def.value > 3) "... ";
403+ list = concatMapStrings (x: ''{ ${nameAttr} = ${nameValueOld (x.${nameAttr} or "unnamed")}; ...} '') sample;
404+ set = concatMapStrings (x: ''${nameValueNew (x.${nameAttr} or "unnamed") "unnamed"} = {...}; '') sample;
405 msg = ''
406 In file ${def.file}
407 a list is being assigned to the option config.${option}.
···409 See https://git.io/fj2zm for more information.
410 Do
411 ${option} =
412+ { ${set}${more}}
413 instead of
414 ${option} =
415+ [ ${list}${more}]
416 '';
417 in
418 lib.warn msg res
···480 else unify (if shorthandOnlyDefinesConfig then { config = value; } else value);
481482 allModules = defs: modules ++ imap1 (n: { value, file }:
483+ if isAttrs value || isFunction value then
484+ # Annotate the value with the location of its definition for better error messages
485+ coerce (lib.modules.unifyModuleSyntax file "${toString file}-${toString n}") value
486+ else value
487 ) defs;
488489 in
490 mkOptionType rec {
491 name = "submodule";
492+ check = x: isAttrs x || isFunction x || path.check x;
493 merge = loc: defs:
494 (evalModules {
495 modules = allModules defs;
···590 tail' = tail ts;
591 in foldl' either head' tail';
592593+ # Either value of type `coercedType` or `finalType`, the former is
594 # converted to `finalType` using `coerceFunc`.
595 coercedTo = coercedType: coerceFunc: finalType:
596 assert lib.assertMsg (coercedType.getSubModules == null)
···599 mkOptionType rec {
600 name = "coercedTo";
601 description = "${finalType.description} or ${coercedType.description} convertible to it";
602+ check = x: (coercedType.check x && finalType.check (coerceFunc x)) || finalType.check x;
603 merge = loc: defs:
604 let
605 coerceVal = val:
606+ if coercedType.check val then coerceFunc val
607+ else val;
608 in finalType.merge loc (map (def: def // { value = coerceVal def.value; }) defs);
609 emptyValue = finalType.emptyValue;
610 getSubOptions = finalType.getSubOptions;
···257 <listitem>
258 <para>
259 A set of sub options <replaceable>o</replaceable>.
260- <replaceable>o</replaceable> can be an attribute set or a function
261- returning an attribute set. Submodules are used in composed types to
262- create modular options. This is equivalent to
263 <literal>types.submoduleWith { modules = toList o; shorthandOnlyDefinesConfig = true; }</literal>.
264 Submodules are detailed in
265 <xref
···257 <listitem>
258 <para>
259 A set of sub options <replaceable>o</replaceable>.
260+ <replaceable>o</replaceable> can be an attribute set, a function
261+ returning an attribute set, or a path to a file containing such a value. Submodules are used in
262+ composed types to create modular options. This is equivalent to
263 <literal>types.submoduleWith { modules = toList o; shorthandOnlyDefinesConfig = true; }</literal>.
264 Submodules are detailed in
265 <xref
···391 <link xlink:href="https://github.com/NixOS/nixpkgs/pull/63103">PR #63103</link>.
392 </para>
393 </listitem>
394+ <listitem>
395+ <para>
396+ For NixOS modules, the types <literal>types.submodule</literal> and <literal>types.submoduleWith</literal> now support
397+ paths as allowed values, similar to how <literal>imports</literal> supports paths.
398+ Because of this, if you have a module that defines an option of type
399+ <literal>either (submodule ...) path</literal>, it will break since a path
400+ is now treated as the first type instead of the second. To fix this, change
401+ the type to <literal>either path (submodule ...)</literal>.
402+ </para>
403+ </listitem>
404 </itemizedlist>
405 </section>
406
+2-1
nixos/lib/test-driver/test-driver.py
···704705 def process_serial_output() -> None:
706 for _line in self.process.stdout:
707- line = _line.decode("unicode_escape").replace("\r", "").rstrip()
0708 eprint("{} # {}".format(self.name, line))
709 self.logger.enqueue({"msg": line, "machine": self.name})
710
···704705 def process_serial_output() -> None:
706 for _line in self.process.stdout:
707+ # Ignore undecodable bytes that may occur in boot menus
708+ line = _line.decode(errors="ignore").replace("\r", "").rstrip()
709 eprint("{} # {}".format(self.name, line))
710 self.logger.enqueue({"msg": line, "machine": self.name})
711
···21 ###### implementation
2223 config = mkIf config.hardware.usbWwan.enable {
24+ # Attaches device specific handlers.
25 services.udev.packages = with pkgs; [ usb-modeswitch-data ];
26+27+ # Triggered by udev, usb-modeswitch creates systemd services via a
28+ # template unit in the usb-modeswitch package.
29+ systemd.packages = with pkgs; [ usb-modeswitch ];
30+31+ # The systemd service requires the usb-modeswitch-data. The
32+ # usb-modeswitch package intends to discover this via the
33+ # filesystem at /usr/share/usb_modeswitch, and merge it with user
34+ # configuration in /etc/usb_modeswitch.d. Configuring the correct
35+ # path in the package is difficult, as it would cause a cyclic
36+ # dependency.
37+ environment.etc."usb_modeswitch.d".source = "${pkgs.usb-modeswitch-data}/share/usb_modeswitch";
38 };
39}
+2-2
nixos/modules/misc/version.nix
···91 # These defaults are set here rather than up there so that
92 # changing them would not rebuild the manual
93 version = mkDefault (cfg.release + cfg.versionSuffix);
94- revision = mkIf (pathIsDirectory gitRepo) (mkDefault gitCommitId);
95- versionSuffix = mkIf (pathIsDirectory gitRepo) (mkDefault (".git." + gitCommitId));
96 };
9798 # Generate /etc/os-release. See
···91 # These defaults are set here rather than up there so that
92 # changing them would not rebuild the manual
93 version = mkDefault (cfg.release + cfg.versionSuffix);
94+ revision = mkIf (pathExists gitRepo) (mkDefault gitCommitId);
95+ versionSuffix = mkIf (pathExists gitRepo) (mkDefault (".git." + gitCommitId));
96 };
9798 # Generate /etc/os-release. See
···612 {
613614 environment = {
615- etc = singleton
616- { source = "/var/lib/postfix/conf";
617- target = "postfix";
618- };
619620 # This makes it comfortable to run 'postqueue/postdrop' for example.
621 systemPackages = [ pkgs.postfix ];
···612 {
613614 environment = {
615+ etc.postfix.source = "/var/lib/postfix/conf";
000616617 # This makes it comfortable to run 'postqueue/postdrop' for example.
618 systemPackages = [ pkgs.postfix ];
···100 '' + stdenv.lib.optionalString verifyCargoDeps ''
101 if ! diff source/Cargo.lock $cargoDeps/Cargo.lock ; then
102 echo
103- echo "ERROR: cargoSha256 is out of date."
104 echo
105- echo "Cargo.lock is not the same in $cargoDeps."
106 echo
107 echo "To fix the issue:"
108 echo '1. Use "1111111111111111111111111111111111111111111111111111" as the cargoSha256 value'
···100 '' + stdenv.lib.optionalString verifyCargoDeps ''
101 if ! diff source/Cargo.lock $cargoDeps/Cargo.lock ; then
102 echo
103+ echo "ERROR: cargoSha256 is out of date"
104 echo
105+ echo "Cargo.lock is not the same in $cargoDeps"
106 echo
107 echo "To fix the issue:"
108 echo '1. Use "1111111111111111111111111111111111111111111111111111" as the cargoSha256 value'
+2-2
pkgs/data/fonts/victor-mono/default.nix
···23let
4 pname = "victor-mono";
5- version = "1.3.0";
6in fetchFromGitHub rec {
7 name = "${pname}-${version}";
8···26 unzip -j VictorMonoAll.zip \*.otf -d $out/share/fonts/opentype/${pname}
27 '';
2829- sha256 = "1lv2x7kfspabnhvm8z79n165fw3awvzj1r8f0g5zn26wgdalgw69";
3031 meta = with lib; {
32 description = "Free programming font with cursive italics and ligatures";
···23let
4 pname = "victor-mono";
5+ version = "1.3.1";
6in fetchFromGitHub rec {
7 name = "${pname}-${version}";
8···26 unzip -j VictorMonoAll.zip \*.otf -d $out/share/fonts/opentype/${pname}
27 '';
2829+ sha256 = "1yj91rhs9pd705406r4lqabdfzjclbz837nzm6z1rziy6mbpd61s";
3031 meta = with lib; {
32 description = "Free programming font with cursive italics and ligatures";
···9 sha256 = "1ygahl3r26r38ai8yyblq9nhf3v5i6n6r6672p5wf88wg5h9n0rz";
10 };
1112- inherit (usb-modeswitch) makeFlags;
0001314 prePatch = ''
15- sed -i 's@usb_modeswitch@${usb-modeswitch}/bin/usb_modeswitch@g' 40-usb_modeswitch.rules
16 '';
1718 # we add tcl here so we can patch in support for new devices by dropping config into
···9 sha256 = "1ygahl3r26r38ai8yyblq9nhf3v5i6n6r6672p5wf88wg5h9n0rz";
10 };
1112+ makeFlags = [
13+ "PREFIX=$(out)"
14+ "DESTDIR=$(out)"
15+ ];
1617 prePatch = ''
18+ sed -i 's@usb_modeswitch@${usb-modeswitch}/lib/udev/usb_modeswitch@g' 40-usb_modeswitch.rules
19 '';
2021 # we add tcl here so we can patch in support for new devices by dropping config into
···36 sed -e "s@/etc/@$out/etc/@g" -e "/chmod u+s/d" -i Makefile
37 '';
3839- # We need to set the directory for the .local override files back to
40 # /etc/firejail so we can actually override them
41 postInstall = ''
42- sed -E -e 's@^include (.*)(/firejail/.*.local)$@include /etc\2@g' -i $out/etc/firejail/*.profile
43 '';
4445 # At high parallelism, the build sometimes fails with:
···36 sed -e "s@/etc/@$out/etc/@g" -e "/chmod u+s/d" -i Makefile
37 '';
3839+ # We need to set the directory for the .local override files to
40 # /etc/firejail so we can actually override them
41 postInstall = ''
42+ sed -E -e 's@^include (.*.local)$@include /etc/firejail/\1@g' -i $out/etc/firejail/*.profile
43 '';
4445 # At high parallelism, the build sometimes fails with:
+2-2
pkgs/os-specific/linux/kernel/linux-4.14.nix
···3with stdenv.lib;
45buildLinux (args // rec {
6- version = "4.14.163";
78 # modDirVersion needs to be x.y.z, will automatically add .0 if needed
9 modDirVersion = if (modDirVersionArg == null) then concatStringsSep "." (take 3 (splitVersion "${version}.0")) else modDirVersionArg;
···1314 src = fetchurl {
15 url = "mirror://kernel/linux/kernel/v4.x/linux-${version}.tar.xz";
16- sha256 = "0jdh54rqdsb3b908v2q4xjn8y45b7rdnwgab0s4qf5alznfcqagb";
17 };
18} // (args.argsOverride or {}))
···3with stdenv.lib;
45buildLinux (args // rec {
6+ version = "4.14.164";
78 # modDirVersion needs to be x.y.z, will automatically add .0 if needed
9 modDirVersion = if (modDirVersionArg == null) then concatStringsSep "." (take 3 (splitVersion "${version}.0")) else modDirVersionArg;
···1314 src = fetchurl {
15 url = "mirror://kernel/linux/kernel/v4.x/linux-${version}.tar.xz";
16+ sha256 = "0jzbgpxlfy64q7zaqix87k8ci1fr9lkx1xr9m5zjniziydhi00x2";
17 };
18} // (args.argsOverride or {}))
+2-2
pkgs/os-specific/linux/kernel/linux-4.19.nix
···3with stdenv.lib;
45buildLinux (args // rec {
6- version = "4.19.94";
78 # modDirVersion needs to be x.y.z, will automatically add .0 if needed
9 modDirVersion = if (modDirVersionArg == null) then concatStringsSep "." (take 3 (splitVersion "${version}.0")) else modDirVersionArg;
···1314 src = fetchurl {
15 url = "mirror://kernel/linux/kernel/v4.x/linux-${version}.tar.xz";
16- sha256 = "0rvlz94mjl7ygpmhz0yn2whx9dq9fmy0w1472bj16hkwbaki0an6";
17 };
18} // (args.argsOverride or {}))
···3with stdenv.lib;
45buildLinux (args // rec {
6+ version = "4.19.95";
78 # modDirVersion needs to be x.y.z, will automatically add .0 if needed
9 modDirVersion = if (modDirVersionArg == null) then concatStringsSep "." (take 3 (splitVersion "${version}.0")) else modDirVersionArg;
···1314 src = fetchurl {
15 url = "mirror://kernel/linux/kernel/v4.x/linux-${version}.tar.xz";
16+ sha256 = "1c2g5wcf4zgy5q51qrf0s4hf3pr1j8gi8gn27w8cafn1xqrcmvaa";
17 };
18} // (args.argsOverride or {}))
···22 description = "Console downloading program with some features for parallel connections for faster downloading";
23 homepage = "https://github.com/axel-download-accelerator/axel";
24 maintainers = with maintainers; [ pSub ];
25- platforms = with platforms; linux;
26 license = licenses.gpl2;
27 };
28}
···22 description = "Console downloading program with some features for parallel connections for faster downloading";
23 homepage = "https://github.com/axel-download-accelerator/axel";
24 maintainers = with maintainers; [ pSub ];
25+ platforms = with platforms; unix;
26 license = licenses.gpl2;
27 };
28}
···1-{ stdenv, fetchFromGitHub, rustPlatform }:
23rustPlatform.buildRustPackage rec {
4 pname = "jwt-cli";
···12 };
1314 cargoSha256 = "005y92acsn5j490jkp23ny7bsjd9ql1glybmbh4cyc8b15hmy618";
001516 meta = with stdenv.lib; {
17 description = "Super fast CLI tool to decode and encode JWTs";
···1+{ stdenv, fetchFromGitHub, rustPlatform, Security }:
23rustPlatform.buildRustPackage rec {
4 pname = "jwt-cli";
···12 };
1314 cargoSha256 = "005y92acsn5j490jkp23ny7bsjd9ql1glybmbh4cyc8b15hmy618";
15+16+ buildInputs = stdenv.lib.optional stdenv.isDarwin Security;
1718 meta = with stdenv.lib; {
19 description = "Super fast CLI tool to decode and encode JWTs";
+6
pkgs/tools/security/pass/default.nix
···111 '' + stdenv.lib.optionalString stdenv.isDarwin ''
112 # 'pass edit' uses hdid, which is not available from the sandbox.
113 rm -f tests/t0200-edit-tests.sh
000000114 '';
115116 doCheck = false;
···111 '' + stdenv.lib.optionalString stdenv.isDarwin ''
112 # 'pass edit' uses hdid, which is not available from the sandbox.
113 rm -f tests/t0200-edit-tests.sh
114+ rm -f tests/t0010-generate-tests.sh
115+ rm -f tests/t0020-show-tests.sh
116+ rm -f tests/t0050-mv-tests.sh
117+ rm -f tests/t0100-insert-tests.sh
118+ rm -f tests/t0300-reencryption.sh
119+ rm -f tests/t0400-grep.sh
120 '';
121122 doCheck = false;
+7-5
pkgs/tools/text/mdcat/default.nix
···23rustPlatform.buildRustPackage rec {
4 pname = "mdcat";
5- version = "0.14.0";
67 src = fetchFromGitHub {
8 owner = "lunaryorn";
9 repo = pname;
10 rev = "mdcat-${version}";
11- sha256 = "1q8h6pc1i89j1zl4s234inl9v95vsdrry1fzlis89sl2mnbv8ywy";
12 };
1314 nativeBuildInputs = [ pkgconfig ];
15 buildInputs = [ openssl ] ++ stdenv.lib.optional stdenv.isDarwin Security;
1617- cargoSha256 = "1hxsfls6fpllc9yg5ib3qz6pa62j1y1va8a6356j6812csk4ifnn";
1819 checkInputs = [ ansi2html ];
20 checkPhase = ''
21 # Skip tests that use the network and that include files.
22- cargo test -- --skip terminal::iterm2 --skip terminal::resources::tests::remote \
23 --skip magic::tests::detect_mimetype_of_svg_image \
24- --skip magic::tests::detect_mimetype_of_png_image
0025 '';
2627 meta = with stdenv.lib; {