| Commit message (Expand) | Author | Age | Files | Lines |
| * | treewide: Format all Nix files•••Format all Nix files using the officially approved formatter,
making the CI check introduced in the previous commit succeed:
nix-build ci -A fmt.check
This is the next step of the of the [implementation](https://github.com/NixOS/nixfmt/issues/153)
of the accepted [RFC 166](https://github.com/NixOS/rfcs/pull/166).
This commit will lead to merge conflicts for a number of PRs,
up to an estimated ~1100 (~33%) among the PRs with activity in the past 2
months, but that should be lower than what it would be without the previous
[partial treewide format](https://github.com/NixOS/nixpkgs/pull/322537).
Merge conflicts caused by this commit can now automatically be resolved while rebasing using the
[auto-rebase script](https://github.com/NixOS/nixpkgs/tree/8616af08d915377bd930395f3b700a0e93d08728/maintainers/scripts/auto-rebase).
If you run into any problems regarding any of this, please reach out to the
[formatting team](https://nixos.org/community/teams/formatting/) by
pinging @NixOS/nix-formatting.
| Silvan Mosberger | 2025-04-01 | 1 | -248/+356 |
| * | lib.generators.toLua: support path-values | Matt Sturgeon | 2025-03-15 | 1 | -2/+2 |
| * | treewide: Fix incorrect string indentations | piegames | 2025-01-07 | 1 | -6/+6 |
| * | lib.generators.toPlist: escape XML syntax in strings & keys•••Before this patch, code like this would break generate invalid XML:
lib.generators.toPlist {} "ab<cd"
That's obviously bad, since the call to toPlist often happens through
indirection, as is the case in e.g. the nix-darwin project. A user might
not realize that they have to escape the strings.
This patch adds the argument 'escape' to lib.generators.plist and emits
a warning if it is not set to true. In a future release, this behavior
should become the default.
I have also added a note for future maintainers, in case I forget to
actually remove the deprecated functionality in a future release.
| Linnnus | 2024-12-23 | 1 | -6/+16 |
| * | doc: add arguments for toKeyValue | Johannes Kirschbauer | 2024-05-21 | 1 | -2/+14 |
| * | doc: init lib.generators reference documentation | Johannes Kirschbauer | 2024-05-21 | 1 | -193/+385 |
| * | lib: use names from `lib` in `lib/generators.nix`, rather than `builtins` or ...•••There's not a lot of rhyme to which names are exported from which module,
as I see it, but everything is found somewhere.
| Philip Taron | 2024-03-16 | 1 | -36/+24 |
| * | lib/generators: use the explicit public interface pattern•••This enables further refactoring without accidentally changing the public interface.
| Philip Taron | 2024-03-14 | 1 | -19/+37 |
| * | lib/generators: explicitly import names from `lib.trivial`•••Everything else was already imported.
| Philip Taron | 2024-03-14 | 1 | -1/+5 |
| * | lib/generators: explicitly import names from `lib.attrsets`•••Everything used was already imported.
| Philip Taron | 2024-03-14 | 1 | -7/+5 |
| * | lib/generators: explicitly import names from `lib.string`•••A couple of these were imports from `builtins`.
| Philip Taron | 2024-03-14 | 1 | -15/+24 |
| * | lib/generators: explicitly import names from `lib`•••I followed the `inherit` chains in `lib/default.nix` to arrive at these imports.
| Philip Taron | 2024-03-14 | 1 | -18/+41 |
| * | lib/generators: builtins.isFloat is in Nix 2.3•••There's a couple of aliases in play:
1. `lib.isList` is an alias for `builtins.isList`.
2. `lib.strings.concatStringsSep` is an alias for `builtins.concatStringsSep`
| Philip Taron | 2024-03-14 | 1 | -22/+39 |
| * | lib.generators: made toLua accept derivations too•••While trying to extend generateLuarocksConfig, I had infinite loops caused by toLua considering derivations as attrSets
| Matthieu Coudron | 2023-12-15 | 1 | -0/+2 |
| * | Merge pull request #250220•••lib.generators.toGitINI: escape string values in configuration | Robert Helgesson | 2023-09-11 | 1 | -3/+11 |
| |\ |
|
| | * | lib.generators.toGitINI: escape string values in configuration•••This should handle the special characters that typically occur.
Upstreaming of https://github.com/nix-community/home-manager/commit/642d9ffe24eec1290e94d70e8129ba74922fddf2
| Robert Helgesson | 2023-08-19 | 1 | -3/+11 |
| * | | nixos/dconf: add settings support | linsui | 2023-08-15 | 1 | -0/+8 |
| |/ |
|
| * | lib/generators/toKeyValue: add `indent` parameter•••toKeyValue is generic enough that it is sometimes used as part of other
format generators, where it might be useful to specify the indentation
level.
| Naïm Favier | 2023-07-22 | 1 | -2/+3 |
| * | lib.generators.toINIWithGlobalSection: give sections a default•••often sections aren't needed when using globalSection
currently one has to `sections = { }` when using only globalSection
```
lib.generators.toINIWithGlobalSection { } {
globalSection = {
background_color = "1d202199";
};
sections = { };
};
````
| Artturin | 2023-06-29 | 1 | -1/+1 |
| * | lib: fix typos | figsoda | 2023-05-19 | 1 | -1/+1 |
| * | Merge pull request #223407 from AngryAnt/toplist-path•••lib.toPlist: Add support for path values | toonn | 2023-05-05 | 1 | -0/+2 |
| |\ |
|
| | * | lib.toPlist: support for path values | Emil "AngryAnt" Johansen | 2023-03-27 | 1 | -0/+2 |
| * | | lib.generators.toLua: asBindings option•••Allows to generate code block for setting of global variables
| Mykola Orliuk | 2023-04-29 | 1 | -3/+21 |
| * | | lib.generators.toLua: allow disabling multiline | Mykola Orliuk | 2023-04-23 | 1 | -8/+16 |
| * | | lib.generators.toLua: tune comment for noogle use•••See https://github.com/nix-community/noogle
| Mykola Orliuk | 2023-04-23 | 1 | -22/+36 |
| * | | lib/generators: add toLua/mkLuaInline•••Suitable to simplify Lua-based configurations like neovim-lspconfig that
might need to interpolate Nix package paths.
| Mykola Orliuk | 2023-04-23 | 1 | -0/+55 |
| |/ |
|
| * | treewide: deprecate isNull•••https://nixos.org/manual/nix/stable/language/builtins.html#builtins-isNull
| Felix Buehler | 2023-03-06 | 1 | -1/+1 |
| * | stdenv/check-meta: do deep type checks•••Use a wrapper around `mergeDefinitions` to type-check values deeply, so
that e.g. `maintainers = [ 42 ];` is an error.
| Naïm Favier | 2023-01-01 | 1 | -2/+4 |
| * | lib.generators.toPretty: Add attribute name to error context | Robert Hensing | 2022-12-10 | 1 | -1/+4 |
| * | nixos/doc: render option values using `lib.generators.toPretty`•••Render un`_type`d defaults and examples as `literalExpression`s using
`lib.generators.toPretty` so that consumers don't have to reinvent Nix
pretty-printing. `renderOptionValue` is kept internal for now intentionally.
Make `toPretty` print floats as valid Nix values (without a tilde).
Get rid of the now-obsolete `substSpecial` function.
Move towards disallowing evaluation of packages in the manual by
raising a warning on `pkgs.foo.{outPath,drvPath}`; later, this should
throw an error. Instead, module authors should use `literalExpression`
and `mkPackageOption`.
| Naïm Favier | 2022-12-08 | 1 | -4/+10 |
| * | lib/generators.toPretty: escape strings properly | Naïm Favier | 2022-12-08 | 1 | -11/+13 |
| * | lib/generators.toPretty: don't evaluate derivations•••With the goal of making `toPretty` suitable for rendering option
values, render derivations as `<derivation foo-1.0>` instead of
`<derivation /nix/store/…-foo-1.0.drv>`.
This is to avoid causing sudden evaluation errors for out-of-tree
projects that have options with `default = pkgs.someUnfreePackage;` and
no `defaultText`.
| Naïm Favier | 2022-12-08 | 1 | -1/+1 |
| * | treewide: optional -> optionals where the argument is a list•••the argument to optional should not be list
| Artturin | 2022-10-10 | 1 | -1/+1 |
| * | lib.generators: simplify toYAML | figsoda | 2022-09-28 | 1 | -1/+1 |
| * | lib/generators.nix: remove unused bindings | figsoda | 2022-09-26 | 1 | -2/+2 |
| * | lib/generators: withRecursion: don't break attr-sets with special attrs•••Closes #168327
The issue reported there can be demonstrated with the following
expression:
→ nix-instantiate --eval -E "with import ./. {}; pkgs.lib.options.showDefs [ { file = \"foo\"; value = pkgs.rust.packages.stable.buildRustPackages; } ]"
error: attempt to call something which is not a function but a string
at /home/ma27/Projects/nixpkgs/lib/trivial.nix:442:35:
441| isFunction = f: builtins.isFunction f ||
442| (f ? __functor && isFunction (f.__functor f));
| ^
443|
Basically, if a `__functor` is in an attribute-set at depth-limit,
`__functor` will be set to `"<unevaluated>"`. This however breaks
`lib.isFunction` which checks for a `__functor` by invoking `__functor`
with `f` itself.
The same issue - "magic" attributes being shadowed by `withRecursion` -
also applies to others such as
`__pretty`/`__functionArgs`/`__toString`.
Since these attributes have a low-risk of causing a stack overflow
(because these are flat attr-sets or even functions), ignoring them in
`withRecursion` seems like a valid solution.
| Maximilian Bosch | 2022-04-12 | 1 | -1/+11 |
| * | lib.generators: fix references to test file | Profpatsch | 2022-03-14 | 1 | -3/+3 |
| * | lib.generators: add toINIWithGlobalSection•••As discussed in
https://github.com/NixOS/nixpkgs/pull/118925#issuecomment-821112723,
this is the best way of adding global sections to `toINI` without
employing heuristics (i.e. checking whether something is an attrset).
| Profpatsch | 2022-03-14 | 1 | -0/+45 |
| * | Merge pull request #131205 from Ma27/showdefs-overflow•••lib/modules: improve errors for `options`/`config`-mixups | Linus Heckemann | 2021-09-29 | 1 | -1/+26 |
| |\ |
|
| | * | lib/generators: fix error message | Maximilian Bosch | 2021-09-28 | 1 | -2/+2 |
| | * | lib/generators: move limit detection into `withRecursion`•••As suggested in #131205.
Now it's possible to pretty-print a value with `lib.generators` like
this:
with lib.generators;
toPretty { }
(withRecursion { depthLimit = 10; } /* arbitrarily complex value */)
Also, this can be used for any other pretty-printer now if needed.
| Maximilian Bosch | 2021-08-26 | 1 | -15/+30 |
| | * | lib/generators/toPretty: add evaluation-limit•••When having e.g. recursive attr-set, it cannot be printed which is
solved by Nix itself like this:
$ nix-instantiate --eval -E 'let a.b = 1; a.c = a; in builtins.trace a 1'
trace: { b = 1; c = <CYCLE>; }
1
However, `generators.toPretty` tries to evaluate something until it's
done which can result in a spurious `stack-overflow`-error:
$ nix-instantiate --eval -E 'with import <nixpkgs/lib>; generators.toPretty { } (mkOption { type = types.str; })'
error: stack overflow (possible infinite recursion)
Those attr-sets are in fact rather common, one example is shown above, a
`types.<type>`-declaration is such an example. By adding an optional
`depthLimit`-argument, `toPretty` will stop evaluating as soon as the
limit is reached:
$ nix-instantiate --eval -E 'with import ./Projects/nixpkgs-update-int/lib; generators.toPretty { depthLimit = 2; } (mkOption { type = types.str; })' |xargs -0 echo -e
"{
_type = \"option\";
type = {
_type = \"option-type\";
check = <function>;
deprecationMessage = null;
description = \"string\";
emptyValue = { };
functor = {
binOp = <unevaluated>;
name = <unevaluated>;
payload = <unevaluated>;
type = <unevaluated>;
wrapped = <unevaluated>;
};
getSubModules = null;
getSubOptions = <function>;
merge = <function>;
name = \"str\";
nestedTypes = { };
substSubModules = <function>;
typeMerge = <function>;
};
}"
Optionally, it's also possible to let `toPretty` throw an error if the
limit is exceeded.
| Maximilian Bosch | 2021-08-25 | 1 | -7/+17 |
| * | | lib.generators.toINI: serialize derivations to string•••This is the common case when passing a derivation, we want to access the
store path.
| zimbatm | 2021-09-12 | 1 | -0/+2 |
| * | | lib.generators.toGitINI: don't traverse derivations•••Consider a derivation a value to be serialized.
nix-repl> lib.generators.toGitINI { hello = { drv = pkgs.hello; }; }
error: evaluation aborted with the following error message: 'generators.mkValueStringDefault: attrsets not supported: <derivation /nix/store/533q15q67sl6dl0272dyi7m7w5pwkkjh-hello-2.10.drv>'
Fixes #137390
| zimbatm | 2021-09-12 | 1 | -1/+1 |
| |/ |
|
| * | lib.generators: Handle no drvPath in toPretty•••Previously, if a derivation without a `drvPath` was handled, an error
would be thrown:
nix-repl> lib.generators.toPretty {} { type = "derivation"; }
error: attribute 'drvPath' missing, at /home/infinisil/src/nixpkgs/lib/generators.nix:251:24
With this commit it doesn't anymore:
nix-repl> lib.generators.toPretty {} { type = "derivation"; }
"<derivation ???>"
This matches what `nix repl` outputs:
nix-repl> { type = "derivation"; }
«derivation ???»
| Silvan Mosberger | 2021-08-11 | 1 | -1/+1 |
| * | lib/generators: add toDhall | Emery Hemingway | 2021-04-01 | 1 | -0/+24 |
| * | Revert "lib/generators: fix toPretty throwing on (partially applied) builtins"•••This reverts commit d9a7d03da8c58aa863911506ae3153729f8931da.
Reason for this is that it actually doesn't migitate the issue on nix
stable for another reason: builtins.tryEval doesn't prevent the error
generated by builtins.functionArgs from halting evaluation:
> builtins.tryEval (builtins.functionArgs builtins.functionArgs)
error: 'functionArgs' requires a function, at (string):1:19
Thus it seems that there is no workaround to make
lib.generators.toPretty work with nix stable and primops since there is
no way to distinguish between primops and lambdas in nix.
| sternenseemann | 2021-02-01 | 1 | -9/+4 |
| * | lib/generators: fix toPretty throwing on (partially applied) builtins•••An high level example case of this problem occuring can be found below:
nix-repl> lib.generators.toPretty {} (lib.concatStringsSep "\n")
error: 'functionArgs' requires a function, at /home/lukas/src/nix/nixpkgs/lib/trivial.nix:334:42
However this does not happen on other partially applied functions:
nix-repl> lib.generators.toPretty {} (lib.concatMapStringsSep "\n")
"<function>"
The issue, as it turns out is that while builtins are functions,
builtins.functionArgs throws if is passed a builtin or a partially
applied builtin:
nix-repl> lib.generators.toPretty {} builtins.toString
error: 'functionArgs' requires a function, at /home/lukas/src/nix/nixpkgs/lib/trivial.nix:334:42
nix-repl> lib.generators.toPretty {} (builtins.foldl' (a: b: a + b))
error: 'functionArgs' requires a function, at /home/lukas/src/nix/nixpkgs/lib/trivial.nix:334:42
I'm pretty sure this qualifies as a nix bug and should be filed
accordingly, but we can work around it in lib.generators.toPretty by
using tryEval and falling back to {} which functionArgs _should_ return
for builtins.
The nix behavior is inconsistent to say the least:
nix-repl> builtins.functionArgs builtins.functionArgs
error: 'functionArgs' requires a function, at (string):1:1
nix-repl> builtins.typeOf builtins.functionArgs
"lambda"
builtins.functionArgs (a: 1 + a)
{ }
nix-repl> builtins.typeOf (a: 1 + a)
"lambda"
| sternenseemann | 2021-01-31 | 1 | -4/+9 |
| * | lib/generators.toPretty: functors should print as functions•••Not attribute sets. So move the function case forward
| Silvan Mosberger | 2020-09-17 | 1 | -7/+7 |
| * | lib/generators.toPretty: Print [] and {} compactly | Silvan Mosberger | 2020-09-17 | 1 | -2/+5 |