summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFrederik Rietdijk <fridh@fridh.nl>2020-01-13 16:08:59 +0100
committerFrederik Rietdijk <fridh@fridh.nl>2020-01-13 16:08:59 +0100
commited1b0d0bac6438fbfcb2dca77493edcbe3384114 (patch)
treed9ddecb505723c8c45ca2837e08e121f41b49fd2
parent960f062825d22e328828766f4910b702f81ddade (diff)
parentde66fc6a2a2483f4bbbb759c55176643df6e38ba (diff)
Merge master into staging-next
-rw-r--r--doc/languages-frameworks/rust.section.md18
-rw-r--r--lib/default.nix2
-rw-r--r--lib/sources.nix34
-rwxr-xr-xlib/tests/modules.sh3
-rw-r--r--lib/trivial.nix2
-rw-r--r--lib/types.nix80
-rw-r--r--maintainers/maintainer-list.nix12
-rw-r--r--nixos/doc/manual/development/option-types.xml6
-rw-r--r--nixos/doc/manual/release-notes/rl-2003.xml10
-rw-r--r--nixos/modules/misc/version.nix4
-rw-r--r--nixos/modules/services/continuous-integration/buildbot/master.nix2
-rw-r--r--nixos/modules/services/continuous-integration/buildbot/worker.nix2
-rw-r--r--nixos/modules/services/continuous-integration/jenkins/slave.nix2
-rw-r--r--nixos/modules/services/databases/openldap.nix2
-rw-r--r--nixos/modules/services/hardware/usbmuxd.nix2
-rw-r--r--nixos/modules/services/mail/postfix.nix5
-rw-r--r--nixos/modules/services/mail/spamassassin.nix2
-rw-r--r--nixos/modules/services/misc/gitea.nix2
-rw-r--r--nixos/modules/services/misc/paperless.nix14
-rw-r--r--nixos/modules/services/networking/ndppd.nix20
-rw-r--r--nixos/modules/services/networking/wpa_supplicant.nix7
-rw-r--r--nixos/modules/services/security/certmgr.nix4
-rw-r--r--pkgs/applications/editors/emacs-modes/elpa-generated.nix8
-rw-r--r--pkgs/applications/editors/emacs-modes/melpa-packages.nix5
-rw-r--r--pkgs/applications/editors/neovim/qt.nix4
-rw-r--r--pkgs/applications/misc/font-manager/default.nix19
-rw-r--r--pkgs/applications/misc/mako/default.nix6
-rw-r--r--pkgs/applications/networking/cawbird/default.nix4
-rw-r--r--pkgs/applications/networking/cluster/cni/plugins.nix4
-rw-r--r--pkgs/applications/networking/mailreaders/mutt/default.nix4
-rw-r--r--pkgs/build-support/rust/default.nix4
-rw-r--r--pkgs/data/fonts/victor-mono/default.nix4
-rw-r--r--pkgs/desktops/gnome-3/apps/seahorse/default.nix4
-rw-r--r--pkgs/development/compilers/bs-platform/default.nix2
-rw-r--r--pkgs/development/compilers/ghc/8.10.1.nix6
-rw-r--r--pkgs/development/interpreters/perl/default.nix3
-rw-r--r--pkgs/development/libraries/alure2/default.nix24
-rw-r--r--pkgs/development/libraries/cln/default.nix4
-rw-r--r--pkgs/development/libraries/cpp-netlib/default.nix16
-rw-r--r--pkgs/development/libraries/glfw/3.x.nix4
-rw-r--r--pkgs/development/libraries/glog/default.nix12
-rw-r--r--pkgs/development/libraries/leptonica/default.nix4
-rw-r--r--pkgs/development/libraries/libdeflate/default.nix6
-rw-r--r--pkgs/development/libraries/libvirt/default.nix1
-rw-r--r--pkgs/development/libraries/physics/rivet/default.nix4
-rw-r--r--pkgs/development/libraries/science/biology/htslib/default.nix4
-rw-r--r--pkgs/development/ocaml-modules/sqlite3/default.nix20
-rw-r--r--pkgs/development/ocaml-modules/uchar/default.nix6
-rw-r--r--pkgs/development/python-modules/django-extensions/default.nix11
-rw-r--r--pkgs/development/python-modules/gpxpy/default.nix27
-rw-r--r--pkgs/development/python-modules/python-olm/default.nix5
-rw-r--r--pkgs/development/python-modules/srsly/default.nix4
-rw-r--r--pkgs/development/tools/boomerang/default.nix4
-rw-r--r--pkgs/development/tools/rnix-lsp/default.nix22
-rw-r--r--pkgs/games/mindustry/default.nix106
-rw-r--r--pkgs/games/ultrastardx/default.nix8
-rw-r--r--pkgs/misc/vim-plugins/generated.nix285
-rw-r--r--pkgs/misc/vim-plugins/vim-plugin-names1
-rw-r--r--pkgs/os-specific/linux/firejail/default.nix4
-rw-r--r--pkgs/os-specific/linux/kernel/linux-4.14.nix4
-rw-r--r--pkgs/os-specific/linux/kernel/linux-4.19.nix4
-rw-r--r--pkgs/os-specific/linux/kernel/linux-4.4.nix4
-rw-r--r--pkgs/os-specific/linux/kernel/linux-4.9.nix4
-rw-r--r--pkgs/os-specific/linux/kernel/linux-5.3.nix18
-rw-r--r--pkgs/os-specific/linux/kernel/linux-5.4.nix4
-rw-r--r--pkgs/os-specific/linux/kernel/linux-libre.nix2
-rw-r--r--pkgs/os-specific/linux/kernel/linux-testing.nix4
-rw-r--r--pkgs/os-specific/linux/rfkill/udev.nix22
-rw-r--r--pkgs/servers/dante/default.nix4
-rw-r--r--pkgs/servers/rippled/default.nix74
-rw-r--r--pkgs/servers/web-apps/moodle/default.nix4
-rw-r--r--pkgs/tools/misc/broot/default.nix23
-rw-r--r--pkgs/tools/networking/axel/default.nix2
-rw-r--r--pkgs/tools/security/fido2luks/default.nix32
-rw-r--r--pkgs/tools/security/jwt-cli/default.nix4
-rw-r--r--pkgs/top-level/all-packages.nix30
-rw-r--r--pkgs/top-level/python-packages.nix2
-rw-r--r--pkgs/top-level/release-small.nix1
-rw-r--r--pkgs/top-level/release.nix1
79 files changed, 753 insertions, 384 deletions
diff --git a/doc/languages-frameworks/rust.section.md b/doc/languages-frameworks/rust.section.md
index 709a0d504cf7..0edf03ad26a9 100644
--- a/doc/languages-frameworks/rust.section.md
+++ b/doc/languages-frameworks/rust.section.md
@@ -32,17 +32,17 @@ Rust applications are packaged by using the `buildRustPackage` helper from `rust
```
rustPlatform.buildRustPackage rec {
- name = "ripgrep-${version}";
- version = "0.4.0";
+ pname = "ripgrep";
+ version = "11.0.2";
src = fetchFromGitHub {
owner = "BurntSushi";
- repo = "ripgrep";
- rev = "${version}";
- sha256 = "0y5d1n6hkw85jb3rblcxqas2fp82h3nghssa4xqrhqnz25l799pj";
+ repo = pname;
+ rev = version;
+ sha256 = "1iga3320mgi7m853la55xip514a3chqsdi1a1rwv25lr9b1p7vd3";
};
- cargoSha256 = "0q68qyl2h6i0qsz82z840myxlnjay8p1w5z7hfyr8fqp7wgwa9cx";
+ cargoSha256 = "17ldqr3asrdcsh4l29m3b5r37r5d0b3npq1lrgjmxb6vlx6a36qh";
verifyCargoDeps = true;
meta = with stdenv.lib; {
@@ -66,7 +66,11 @@ added in `cargoPatches` will also be prepended to the patches in `patches` at
build-time.
When `verifyCargoDeps` is set to `true`, the build will also verify that the
-`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.
+`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.
### Building a crate for a different target
diff --git a/lib/default.nix b/lib/default.nix
index 9f7a088d792d..77dda17f3b4f 100644
--- a/lib/default.nix
+++ b/lib/default.nix
@@ -100,7 +100,7 @@ let
inherit (sources) pathType pathIsDirectory cleanSourceFilter
cleanSource sourceByRegex sourceFilesBySuffices
commitIdFromGitRepo cleanSourceWith pathHasContext
- canCleanSource;
+ canCleanSource pathIsRegularFile;
inherit (modules) evalModules unifyModuleSyntax
applyIfFunction mergeModules
mergeModules' mergeOptionDecls evalOptionValue mergeDefinitions
diff --git a/lib/sources.nix b/lib/sources.nix
index 51bcf5559e32..0fd172c42b77 100644
--- a/lib/sources.nix
+++ b/lib/sources.nix
@@ -9,6 +9,9 @@ rec {
# Returns true if the path exists and is a directory, false otherwise
pathIsDirectory = p: if builtins.pathExists p then (pathType p) == "directory" else false;
+ # Returns true if the path exists and is a regular file, false otherwise
+ pathIsRegularFile = p: if builtins.pathExists p then (pathType p) == "regular" else false;
+
# Bring in a path as a source, filtering out all Subversion and CVS
# directories, as well as backup files (*~).
cleanSourceFilter = name: type: let baseName = baseNameOf (toString name); in ! (
@@ -110,24 +113,43 @@ rec {
with builtins;
let fileName = toString path + "/" + file;
packedRefsName = toString path + "/packed-refs";
- in if lib.pathExists fileName
+ in if pathIsRegularFile path
+ # Resolve git worktrees. See gitrepository-layout(5)
+ then
+ let m = match "^gitdir: (.*)$" (lib.fileContents path);
+ in if m == null
+ then throw ("File contains no gitdir reference: " + path)
+ else
+ let gitDir = lib.head m;
+ commonDir' = if pathIsRegularFile "${gitDir}/commondir"
+ then lib.fileContents "${gitDir}/commondir"
+ else gitDir;
+ commonDir = if lib.hasPrefix "/" commonDir'
+ then commonDir'
+ else toString (/. + "${gitDir}/${commonDir'}");
+ refFile = lib.removePrefix "${commonDir}/" "${gitDir}/${file}";
+ in readCommitFromFile refFile commonDir
+
+ else if pathIsRegularFile fileName
+ # Sometimes git stores the commitId directly in the file but
+ # sometimes it stores something like: «ref: refs/heads/branch-name»
then
let fileContent = lib.fileContents fileName;
- # Sometimes git stores the commitId directly in the file but
- # sometimes it stores something like: «ref: refs/heads/branch-name»
matchRef = match "^ref: (.*)$" fileContent;
- in if matchRef == null
+ in if matchRef == null
then fileContent
else readCommitFromFile (lib.head matchRef) path
+
+ else if pathIsRegularFile packedRefsName
# Sometimes, the file isn't there at all and has been packed away in the
# packed-refs file, so we have to grep through it:
- else if lib.pathExists packedRefsName
then
let fileContent = readFile packedRefsName;
matchRef = match (".*\n([^\n ]*) " + file + "\n.*") fileContent;
- in if matchRef == null
+ in if matchRef == null
then throw ("Could not find " + file + " in " + packedRefsName)
else lib.head matchRef
+
else throw ("Not a .git directory: " + path);
in readCommitFromFile "HEAD";
diff --git a/lib/tests/modules.sh b/lib/tests/modules.sh
index c8340ff7f157..8cd632a439cd 100755
--- a/lib/tests/modules.sh
+++ b/lib/tests/modules.sh
@@ -174,8 +174,7 @@ checkConfigOutput "true" config.submodule.inner ./declare-submoduleWith-modules.
checkConfigOutput "true" config.submodule.outer ./declare-submoduleWith-modules.nix
## Paths should be allowed as values and work as expected
-# Temporarily disabled until https://github.com/NixOS/nixpkgs/pull/76861
-#checkConfigOutput "true" config.submodule.enable ./declare-submoduleWith-path.nix
+checkConfigOutput "true" config.submodule.enable ./declare-submoduleWith-path.nix
# Check that disabledModules works recursively and correctly
checkConfigOutput "true" config.enable ./disable-recursive/main.nix
diff --git a/lib/trivial.nix b/lib/trivial.nix
index 3a25e31fb052..940ec1a3d59e 100644
--- a/lib/trivial.nix
+++ b/lib/trivial.nix
@@ -191,7 +191,7 @@ rec {
let
revisionFile = "${toString ./..}/.git-revision";
gitRepo = "${toString ./..}/.git";
- in if lib.pathIsDirectory gitRepo
+ in if builtins.pathExists gitRepo
then lib.commitIdFromGitRepo gitRepo
else if lib.pathExists revisionFile then lib.fileContents revisionFile
else default;
diff --git a/lib/types.nix b/lib/types.nix
index e86f6d364761..ab325fd20091 100644
--- a/lib/types.nix
+++ b/lib/types.nix
@@ -340,18 +340,80 @@ rec {
let
padWidth = stringLength (toString (length def.value));
unnamed = i: unnamedPrefix + fixedWidthNumber padWidth i;
+ anyString = placeholder "name";
+ nameAttrs = [
+ { path = [ "environment" "etc" ];
+ name = "target";
+ }
+ { path = [ "containers" anyString "bindMounts" ];
+ name = "mountPoint";
+ }
+ { path = [ "programs" "ssh" "knownHosts" ];
+ # hostNames is actually a list so we would need to handle it only when singleton
+ name = "hostNames";
+ }
+ { path = [ "fileSystems" ];
+ name = "mountPoint";
+ }
+ { path = [ "boot" "specialFileSystems" ];
+ name = "mountPoint";
+ }
+ { path = [ "services" "znapzend" "zetup" ];
+ name = "dataset";
+ }
+ { path = [ "services" "znapzend" "zetup" anyString "destinations" ];
+ name = "label";
+ }
+ { path = [ "services" "geoclue2" "appConfig" ];
+ name = "desktopID";
+ }
+ { path = [ "home-manager" "users" anyString "programs" "ssh" "matchBlocks" ];
+ name = "host"; # https://github.com/rycee/home-manager/blob/e8dbc3561373b68d12decb3c0d7c1ba245f138f7/modules/programs/ssh.nix#L265
+ }
+ { path = [ "home-manager" "users" anyString "home" "file" ];
+ name = "target"; # https://github.com/rycee/home-manager/blob/0e9b7aab3c6c27bf020402e0e2ef20b65c040552/modules/files.nix#L33
+ }
+ { path = [ "home-manager" "users" anyString "xdg" "configFile" ];
+ name = "target"; # https://github.com/rycee/home-manager/blob/54de0e1d79a1370e57a8f23bef89f99f9b92ab67/modules/misc/xdg.nix#L41
+ }
+ { path = [ "home-manager" "users" anyString "xdg" "dataFile" ];
+ name = "target"; # https://github.com/rycee/home-manager/blob/54de0e1d79a1370e57a8f23bef89f99f9b92ab67/modules/misc/xdg.nix#L58
+ }
+ ];
+ matched = let
+ equals = a: b: b == anyString || a == b;
+ fallback = { name = "name"; };
+ in findFirst ({ path, ... }: all (v: v == true) (zipListsWith equals loc path)) fallback nameAttrs;
+ nameAttr = matched.name;
+ nameValueOld = value:
+ if isList value then
+ if length value > 0 then
+ "[ " + concatMapStringsSep " " escapeNixString value + " ]"
+ else
+ "[ ]"
+ else
+ escapeNixString value;
+ nameValueNew = value: unnamed:
+ if isList value then
+ if length value > 0 then
+ head value
+ else
+ unnamed
+ else
+ value;
res =
{ inherit (def) file;
value = listToAttrs (
imap1 (elemIdx: elem:
- { name = elem.name or (unnamed elemIdx);
+ { name = nameValueNew (elem.${nameAttr} or (unnamed elemIdx)) (unnamed elemIdx);
value = elem;
}) def.value);
};
option = concatStringsSep "." loc;
sample = take 3 def.value;
- list = concatMapStrings (x: ''{ name = "${x.name or "unnamed"}"; ...} '') sample;
- set = concatMapStrings (x: ''${x.name or "unnamed"} = {...}; '') sample;
+ more = lib.optionalString (length def.value > 3) "... ";
+ list = concatMapStrings (x: ''{ ${nameAttr} = ${nameValueOld (x.${nameAttr} or "unnamed")}; ...} '') sample;
+ set = concatMapStrings (x: ''${nameValueNew (x.${nameAttr} or "unnamed") "unnamed"} = {...}; '') sample;
msg = ''
In file ${def.file}
a list is being assigned to the option config.${option}.
@@ -359,10 +421,10 @@ rec {
See https://git.io/fj2zm for more information.
Do
${option} =
- { ${set}...}
+ { ${set}${more}}
instead of
${option} =
- [ ${list}...]
+ [ ${list}${more}]
'';
in
lib.warn msg res
@@ -430,14 +492,16 @@ rec {
else unify (if shorthandOnlyDefinesConfig then { config = value; } else value);
allModules = defs: modules ++ imap1 (n: { value, file }:
- # Annotate the value with the location of its definition for better error messages
- coerce (lib.modules.unifyModuleSyntax file "${toString file}-${toString n}") value
+ if isAttrs value || isFunction value then
+ # Annotate the value with the location of its definition for better error messages
+ coerce (lib.modules.unifyModuleSyntax file "${toString file}-${toString n}") value
+ else value
) defs;
in
mkOptionType rec {
name = "submodule";
- check = x: isAttrs x || isFunction x;
+ check = x: isAttrs x || isFunction x || path.check x;
merge = loc: defs:
(evalModules {
modules = allModules defs;
diff --git a/maintainers/maintainer-list.nix b/maintainers/maintainer-list.nix
index fc9991b42433..180eca8fe322 100644
--- a/maintainers/maintainer-list.nix
+++ b/maintainers/maintainer-list.nix
@@ -505,6 +505,12 @@
githubId = 750786;
name = "Justin Wood";
};
+ anmonteiro = {
+ email = "anmonteiro@gmail.com";
+ github = "anmonteiro";
+ githubId = 661909;
+ name = "Antonio Nuno Monteiro";
+ };
anpryl = {
email = "anpryl@gmail.com";
github = "anpryl";
@@ -4430,6 +4436,12 @@
githubId = 158568;
name = "Matthias C. M. Troffaes";
};
+ McSinyx = {
+ email = "vn.mcsinyx@gmail.com";
+ github = "McSinyx";
+ githubId = 13689192;
+ name = "Nguyễn Gia Phong";
+ };
mdaiter = {
email = "mdaiter8121@gmail.com";
github = "mdaiter";
diff --git a/nixos/doc/manual/development/option-types.xml b/nixos/doc/manual/development/option-types.xml
index 55d9c123e3f1..957349ad1811 100644
--- a/nixos/doc/manual/development/option-types.xml
+++ b/nixos/doc/manual/development/option-types.xml
@@ -257,9 +257,9 @@
<listitem>
<para>
A set of sub options <replaceable>o</replaceable>.
- <replaceable>o</replaceable> can be an attribute set or a function
- returning an attribute set. Submodules are used in composed types to
- create modular options. This is equivalent to
+ <replaceable>o</replaceable> can be an attribute set, a function
+ returning an attribute set, or a path