| Commit message (Expand) | Author | Age | Files | Lines |
| * | lib/modules: Use fixed lib instead of args.lib•••The practical use for this should be very limited because I don't
think anyone should change `lib`, let alone change `lib.functionArgs`,
but, but it would be even stranger to rely on `args.lib` (or really
`specialArgs.lib` for what's clearly a behavior of the current
`evalModules`, which uses its own ambient lib for basically everything.
The shadowing of `lib` by `args.lib` here seems to be a small mistake,
which is easy to make.
| Robert Hensing | 2024-07-03 | 1 | -0/+28 |
| * | Merge pull request #284551 from hercules-ci/types-attrTag•••Add `types.attrTag` | Silvan Mosberger | 2024-04-09 | 3 | -0/+190 |
| |\ |
|
| | * | lib.types.attrTag: Fix declarationPositions after merge | Robert Hensing | 2024-04-04 | 1 | -3/+17 |
| | * | lib/tests/modules/types-attrTag.nix: Test other option doc attrs | Robert Hensing | 2024-04-04 | 1 | -0/+9 |
| | * | lib/tests/modules/types-attrTag.nix: Clean up unneeded comment | Robert Hensing | 2024-04-04 | 1 | -1/+0 |
| | * | lib.types.attrTag: Custom error when passing bare type | Robert Hensing | 2024-04-04 | 1 | -0/+14 |
| | * | lib/tests/modules/types-attrTag: Test against unexpected attrs•••Thank you lheckemann for pointing this out!
| Robert Hensing | 2024-04-04 | 1 | -6/+6 |
| | * | lib.types.attrTag: Provide declarations, definitions | Robert Hensing | 2024-04-04 | 1 | -0/+1 |
| | * | lib.types.attrTag: Support type merging | Robert Hensing | 2024-04-04 | 1 | -0/+10 |
| | * | lib.types.attrTag: Take options instead of types | Robert Hensing | 2024-04-04 | 1 | -15/+34 |
| | * | lib.types.attrTag: Support module docs | Robert Hensing | 2024-04-04 | 2 | -0/+60 |
| | * | lib.types.attrTag: init | Robert Hensing | 2024-02-11 | 1 | -0/+64 |
| * | | doc: migrate trivial files to doc-comment format (#299986)•••* doc: migrate trivial files to doc-comment format
* fix: revert some comments
* Apply suggestions from code review
Thanks @danielSidhion
Co-authored-by: Daniel Sidhion <DanielSidhion@users.noreply.github.com>
* Update lib/types.nix
---------
Co-authored-by: Daniel Sidhion <DanielSidhion@users.noreply.github.com>
Co-authored-by: Silvan Mosberger <github@infinisil.com> | Johannes Kirschbauer | 2024-04-04 | 1 | -2/+2 |
| * | | Avoid top-level `with ...;` in lib/tests/modules/extendModules-168767-imports... | Philip Taron | 2024-03-11 | 1 | -1/+8 |
| * | | Avoid top-level `with ...;` in lib/tests/modules/alias-with-priority.nix | Philip Taron | 2024-03-11 | 1 | -3/+10 |
| * | | Avoid top-level `with ...;` in lib/tests/modules/alias-with-priority-can-over... | Philip Taron | 2024-03-11 | 1 | -3/+10 |
| |/ |
|
| * | Merge pull request #284512 from hercules-ci/lib-types-unique-merge•••lib.types.unique: Check inner type deeply | Silvan Mosberger | 2024-02-10 | 1 | -0/+27 |
| |\ |
|
| | * | lib.types.unique: Check inner type deeply•••This doesn't change uniq. Why not?
- In NixOS it seems that uniq is only used with
simple types that are fully checked by t.check.
- It exists for much longer and is used more widely.
- I believe we should deprecate it, because unique was
already better.
- unique can be a proving ground.
| Robert Hensing | 2024-01-28 | 1 | -0/+27 |
| * | | lib.modules.doRename: Add condition parameter•••This is to support single-to-multi service migrations, so that the
`to` (e.g. `foos.""`) isn't defined unconditionally. See test cases.
| Robert Hensing | 2024-02-02 | 4 | -0/+71 |
| * | | feat: add test for nonEmptyListOf submodule | Danila Danko | 2024-01-30 | 1 | -0/+7 |
| |/ |
|
| * | lib: `modules.sh` should check JSON output for predictability•••Currently, the `lib/tests/modules.sh` test checks the output of
`nix-instantiate --eval` without `--json`, which outputs an unspecified
human-readable format.
This patch modifies `modules.sh` to use the `--json` output instead, to
be robust against future changes to `nix-instantiate` output.
| Rebecca Turner | 2023-12-19 | 3 | -3/+10 |
| * | Merge pull request #272709 from hercules-ci/module-system-test-pr-131205•••lib/modules: Test optionless module errors from #131205 | Maximilian Bosch | 2023-12-10 | 2 | -0/+26 |
| |\ |
|
| | * | lib/modules: Test optionless module errors from #131205 | Robert Hensing | 2023-12-09 | 2 | -0/+26 |
| * | | lib.types.boolByOr: init•••This type is necessary to have correct merging behavior for
`allowUnfreePredicate` and `allowInsecurePredicate`
Co-authored-by: Robert Hensing <roberth@users.noreply.github.com>
| Silvan Mosberger | 2023-12-08 | 1 | -0/+14 |
| |/ |
|
| * | lib/tests: add test for pkgsText parameter and package set selection of mkPac... | Anselm Schüler | 2023-10-10 | 1 | -0/+8 |
| * | lib/tests: add more tests for mkPackageOption | Anselm Schüler | 2023-10-06 | 1 | -0/+26 |
| * | lib.gvariant: make the tests really work | linsui | 2023-09-28 | 1 | -86/+54 |
| * | Merge pull request #249243 from lf-/jade/declarationsWithLocations•••nixos/modules: Add declarationPositions | Robert Hensing | 2023-09-17 | 1 | -0/+49 |
| |\ |
|
| | * | nixos/modules: Add declarationPositions•••What it does: line and column level *declaration* position information:
$ nix repl .
nix-repl> :p nixosConfigurations.micro.options.environment.systemPackages.declarationPositions
[ { column = 7; file = "/nix/store/24aj3k7fgqv3ly7qkbf98qvphasrw9nb-source/nixos/modules/config/system-path.nix"; line = 63; } ]
Use cases:
- ctags over NixOS options, as will be presented at NixCon 2023 ;)
- improving the documentation pages to go to the exact line of the
declarations.
Related work:
- https://github.com/NixOS/nixpkgs/pull/65024
This one does it for all *definitions* rather than declarations, and
it was not followed through with due to performance worries.
- https://github.com/NixOS/nixpkgs/pull/208173
The basis for this change. This change is just a rebase of that one.
I split it out to add the capability before adding users of it, in
order to simplify review. However, the ctags script in there is a
sample user of this feature.
Benchmarks: conducted by evaluating my own reasonably complex NixOS
configuration with the command:
`hyperfine -S none -w 1 -- "nix eval .#nixosConfigurations.snowflake.config.system.build.toplevel.outPath"`
```
Benchmark 1: nix eval .#nixosConfigurations.snowflake.config.system.build.toplevel.outPath
Time (mean ± σ): 8.971 s ± 0.254 s [User: 5.872 s, System: 1.388 s]
Range (min … max): 8.574 s … 9.327 s 10 runs
Benchmark 1: nix eval .#nixosConfigurations.snowflake.config.system.build.toplevel.outPath
Time (mean ± σ): 8.766 s ± 0.160 s [User: 5.873 s, System: 1.346 s]
Range (min … max): 8.496 s … 9.033 s 10 runs
```
Summary of results: it seems to be in the noise, this does not cause any
visible regression in times.
| Jade Lovelace | 2023-09-08 | 1 | -0/+49 |
| * | | lib/gvariant: init | linsui | 2023-08-15 | 1 | -0/+93 |
| * | | lib/modules: Report a good error when option tree has bare type•••Note that this removes the possibility of declaring an option
named `_type`.
| Robert Hensing | 2023-08-14 | 3 | -0/+16 |
| |/ |
|
| * | Merge pull request #243139 from hercules-ci/modules-test-default-argument•••lib/tests/modules: Test that _module.args works when a default argume… | Robert Hensing | 2023-08-02 | 1 | -0/+9 |
| |\ |
|
| | * | lib/tests/modules: Test that _module.args works when a default argument is set | Robert Hensing | 2023-07-12 | 1 | -0/+9 |
| * | | Merge pull request #245271 from sternenseemann/module-system-merge-no-type•••lib/modules: handle typeless options in mergeModules | Robert Hensing | 2023-07-27 | 1 | -0/+25 |
| |\ \
| |/
|/| |
|
| | * | lib/modules: handle typeless options in mergeModules•••mkOption does not require a `type` argument and does not set the
resulting attribute if it is not given. Consequently, we need to be
prepared to merge options that have no type information.
| sternenseemann | 2023-07-26 | 1 | -0/+25 |
| * | | lib/tests: invalidate hashes•••Having the current bash hash present in the nixpkgs tree makes Nix
detect bash as a runtime dependency of nixpkgs, which in turns messes up
`fetchFromGitHub` due to https://github.com/NixOS/nix/issues/6660
| Naïm Favier | 2023-07-05 | 1 | -3/+3 |
| |/ |
|
| * | lib/tests/modules.sh: Test types.pathInStore•••Add missing test cases. I think the .links case should be rejected
even though it's technically a path in the store.
| Robert Hensing | 2023-06-27 | 1 | -0/+24 |
| * | lib.modules: Add mergeAttrDefinitionsWithPrio•••This will let us make assertions involving _module.args.pkgs, which
is not an option but a value attribute, and therefore doesn't have
its own highestPrio to inspect. The new function gives us that info.
| Robert Hensing | 2023-06-16 | 1 | -0/+21 |
| * | lib/tests: add mkPackageOption tests | Naïm Favier | 2023-05-20 | 1 | -0/+19 |
| * | lib.modules: Change class declaration in module to _class | Robert Hensing | 2023-05-06 | 3 | -4/+4 |
| * | lib/tests/modules.sh: Add submodule + class tests | Robert Hensing | 2023-05-06 | 1 | -0/+41 |
| * | lib/modules: Move class out of specialArgs | Robert Hensing | 2023-05-06 | 1 | -3/+3 |
| * | lib/modules: Only interpret class declaration in non-shorthand mode•••This is to avoid stealing keys from submodules. `class` might be
common enough that reinterpreting existing `class` attributes in
configurations as a declaration leads to fairly widespread problems.
| Robert Hensing | 2023-05-06 | 2 | -0/+16 |
| * | lib/modules: Improve error when a configuration is imported•••This is appears to be a fairly common mistake for beginners who want
to build larger things from the system configurations, such as NixOps
networks, etc. Further explanation seems appropriate.
| Robert Hensing | 2023-05-06 | 1 | -0/+12 |
| * | lib/modules: Check against importing things with a _type | Robert Hensing | 2023-05-06 | 2 | -0/+8 |
| * | lib/modules: Add class concept to check imports•••This improves the error message when an incompatible module is
imported.
| Robert Hensing | 2023-05-06 | 3 | -0/+42 |
| * | lib/modules: Allow an "anonymous" module with key in disabledModules•••This makes the following work
disabledModules = [ foo.nixosModules.bar ];
even if `bar` is not a path, but rather a module such as
{ key = "/path/to/foo#nixosModules.bar"; config = ...; }
By supporting this, the user will often be able to use the same syntax
for both importing and disabling a module. This is becoming more relevant
because flakes promote the use of attributes to reference modules. Not
all of these modules in flake attributes will be identifiable, but with
the help of a framework such as flake-parts, these attributes can be
guaranteed to be identifiable (by outPath + attribute path).
| Robert Hensing | 2023-03-01 | 4 | -0/+133 |
| * | lib/modules: Add context to the "option does not exist" error•••Add trace items that provide context for a failed definition that
can not be caught within the Nix language.
This also adds a test for the `tryEval` behavior of `showDefs`.
| Robert Hensing | 2022-12-02 | 2 | -0/+6 |
| * | lib/tests/modules: Test doRenameorigin/doRename-no-warning | Robert Hensing | 2022-11-03 | 2 | -0/+25 |
| * | lib/modules: Fix meta duplication in shorthand syntax | Robert Hensing | 2022-09-21 | 1 | -0/+19 |