about summary refs log tree commit diff
path: root/lib
AgeCommit message (Collapse)AuthorFilesLines
2022-03-18lib.lists: Use builtins.groupBy for lib.groupBySilvan Mosberger2-9/+26
builtins.groupBy is much more performant. It was introduced in https://github.com/NixOS/nix/pull/5715
2022-03-18lib.attrsets: Introduce showAttrPathSilvan Mosberger3-2/+38
2022-03-02Merge pull request #162283 from Infinisil/functionTo.descriptionSilvan Mosberger1-1/+1
lib/types: Fix functionTo description
2022-03-02Merge pull request #149689 from Infinisil/types-typeSilvan Mosberger6-3/+120
Introduce `types.optionType` and use it for `freeformType`
2022-03-01lib.modules: Use types.optionType for _module.freeformTypeSilvan Mosberger3-2/+28
This ensures that the module file locations are propagated to the freeform type, which makes it so that submodules in freeform types now have their declaration location shown in the manual, fixing https://github.com/NixOS/nixpkgs/issues/132085. In addition, this also newly allows freeformTypes to be declared multiple times and all declarations being merged together according to normal option merging. This also removes some awkwardness regarding the type of `freeformType`
2022-03-01lib.types: Introduce `types.optionType`Silvan Mosberger4-1/+92
This type correctly merges multiple option types together while also annotating them with file information. In a future commit this will be used for `_module.freeformType`
2022-03-01lib/types: Fix functionTo descriptionSilvan Mosberger1-1/+1
2022-02-28Merge pull request #157301 from pennae/lib-add-mkPackageOption0x4A6F1-1/+1
lib: add mkPackageOption to default.nix
2022-02-22lib/modules: Use types.raw for _module.argsSilvan Mosberger1-1/+1
Fixes https://github.com/NixOS/nixpkgs/issues/53458, as types.raw doesn't allow setting multiple values
2022-02-22lib/types: Introduce types.raw for unprocessed valuesSilvan Mosberger3-0/+43
2022-02-17lib/tests: Add tests for emptyValueSilvan Mosberger2-0/+45
2022-02-17lib/types: Fix emptyValue of listOf and nonEmptyListOfSilvan Mosberger1-2/+2
An empty list is [], not {}! Also, non-empty lists shouldn't have a default of an empty list!
2022-02-16Merge pull request #155707 from 06kellyjac/fehRenaud1-0/+5
feh: correct license
2022-02-10Merge remote-tracking branch 'origin/master' into staging-nextJonathan Ringer1-1/+1
Conflicts: pkgs/top-level/aliases.nix
2022-02-10fix: typo in lib/attrsets.nixJohn Rinehart1-1/+1
2022-02-06Merge remote-tracking branch 'origin/master' into staging-nextJonathan Ringer2-7/+9
Conflicts: pkgs/development/python-modules/pysdl2/default.nix pkgs/top-level/aliases.nix
2022-02-06Merge pull request #126769 from ncfavier/nixosSystem-libRobert Hensing2-7/+9
nixos: move default module location logic to `eval-config.nix`
2022-02-06Merge remote-tracking branch 'origin/master' into staging-nextJonathan Ringer2-53/+72
Conflicts: pkgs/tools/graphics/scrot/default.nix
2022-01-30lib.sources: Improve docsJan Tojnar1-48/+67
Change comment type so than nixdoc picks them up into Nixpkgs manual. Also improve phrasing a bit and move stuff around so that it is formatted better.
2022-01-30lib.trivial: Change comment type before concat functionJan Tojnar1-5/+5
C-style comment was being picked up by nixdoc as a documentation comment for the function.
2022-01-29lib: add mkPackageOption to default.nixpennae1-1/+1
this was forgotten in #155669
2022-01-28feh: correct license06kellyjac1-0/+5
2022-01-27lib/modules: introduce setDefaultModuleLocationNaïm Favier2-7/+9
Wraps a module with a default location for reporting errors.
2022-01-27Merge branch 'staging-next' into stagingDmitry Kalinkin3-8/+24
Conflicts: nixos/doc/manual/from_md/release-notes/rl-2205.section.xml nixos/doc/manual/release-notes/rl-2205.section.md pkgs/development/python-modules/aioesphomeapi/default.nix pkgs/development/python-modules/mat2/default.nix pkgs/development/python-modules/pydevccu/default.nix pkgs/development/python-modules/pywlroots/default.nix pkgs/development/python-modules/rokuecp/default.nix
2022-01-25Merge pull request #156503 from hercules-ci/nixos-add-system.build-optionsRobert Hensing3-8/+24
nixos: Add `system.build.`{`toplevel`,`installBootLoader`}, improve error message
2022-01-24Merge remote-tracking branch 'origin/staging-next' into stagingJonathan Ringer2-1/+45
Conflicts: pkgs/development/python-modules/googleapis-common-protos/default.nix
2022-01-24lib/meta: fix typo in platformMatch commentThiago Kenji Okada1-1/+1
2022-01-24Merge remote-tracking branch 'nixpkgs/staging-next' into stagingAlyssa Ross1-0/+5
Conflicts: pkgs/development/python-modules/cupy/default.nix pkgs/development/python-modules/staticjinja/default.nix
2022-01-24lib.modules: Define mergeOneOption in terms of mergeUniqueOptionRobert Hensing1-5/+1
2022-01-24lib.types: Add unique like uniq, but custom errorsRobert Hensing3-3/+23
Couldn't extend types.uniq and it had a silly name anyway. Now we can have better error messages.
2022-01-24Merge pull request #155669 from schuelermine/patch-mkPackageOptionpennae1-0/+44
lib/options: Add mkPackageOption
2022-01-24Merge pull request #156215 from Atemu/update/svt-av1Martin Weinelt1-0/+5
2022-01-23nixos/docs/option-declarations: Document mkEnableOption and mkPackageOptionAnselm Schüler1-15/+40
This is a squashed commit. These are the original commit messages: lib/option: Improve comment better comment Update documentation Updated nixos/doc/manual/development/options-declarations.md with info on mkEnableOption and mkPackageOption. Updated the comment on mkEnableOption in lib/options.nix remove trailing whitespace nixos/doc/option-declarations: Update IDs & formatting nixos/docs/option-declarations: Escape angle brackets Build DB from MD (Amended) Fix typo Co-authored-by: pennae <82953136+pennae@users.noreply.github.com> (Amended) Build DB from MD (again)
2022-01-23lib.licenses: add MIT-advertisingc0bw3b1-0/+5
2022-01-23lib/options: Add mkPackageOptionAnselm Schüler1-0/+19
This is a squashed commit. These are the original commit messages: lib/options: Add mkPackageOption lib/options: Add missing semicolon lib/options.nix: Make mkPackageOption more complicated lib/options: Fix indent. & spacing lib/options.nix: Remove example and align comment lib/options: ravenous overuse of arguments lib/options: Format better lib/options: Add default examplePath decl lib/options: Make better mkPackageOption function lib/options: Remove trailing whitespace lib/options: Improve mkPackageOptions lib/options: Remove pkgs prefixing Co-authored-by: pennae <82953136+pennae@users.noreply.github.com> lib/options: Slim down mkPackageOption further lib/options: mkPackageOption: Add "pkgs." to example lib/options: mkPackageOption: Make name & pkgs single arguments lib/options: mkPackageOption: Swap name & pkgs lib/options: Remove unnecessary import Co-authored-by: pennae <82953136+pennae@users.noreply.github.com>
2022-01-22licenses: add Alliance for Open Media Patent License 1.0Atemu1-0/+5
2022-01-22lib.licenses: add Imlib2c0bw3b1-0/+5
2022-01-21Merge pull request #155522 from Julow/single_line_strRobert Hensing1-0/+13
types.singleLineStr: strings that don't contain '\n'
2022-01-21types.singleLineStr: Improve descriptionJules Aguillon1-1/+1
Co-authored-by: pennae <82953136+pennae@users.noreply.github.com>
2022-01-20types.singleLineStr: Allow and trim trailing \nJules Aguillon1-5/+12
Allow a \n character at the end of the string and remove it during the merge function. An option of this type will resolve to the value "foo" whether it is set to "foo" or "foo\n". This is useful when using 'builtins.readFile' or ''-strings, which might add an unintended newline (for example, bash trim the final newline from a subshell).
2022-01-19lib/asserts: use throw to display message for assertMsgsternenseemann1-12/+10
`assert` has the annoying property that it dumps a lot of code at the user without the built in capability to display a nicer message. We have worked around this using `assertMsg` which would *additionally* display a nice message. We can do even better: By using `throw` we can make evaluation fail before assert draws its conclusions and prevent it from displaying the code making up the assert condition, so we get the nicer message of `throw` and the syntactical convenience of `assert`. Before: nix-repl> python.override { reproducibleBuild = true; stripBytecode = false; } trace: Deterministic builds require stripping bytecode. error: assertion (((lib).assertMsg (reproducibleBuild -> stripBytecode)) "Deterministic builds require stripping bytecode.") failed at /home/lukas/src/nix/nixpkgs/pkgs/development/interpreters/python/cpython/2.7/default.nix:45:1 After: nix-repl> python.override { reproducibleBuild = true; stripBytecode = false; } error: Deterministic builds require stripping bytecode.
2022-01-18types.singleLineStr: Disallow \rJules Aguillon1-3/+2
2022-01-18types.singleLineStr: strings that don't contain '\n'Jules Aguillon1-0/+7
Add a new type, inheriting 'types.str' but checking whether the value doesn't contain any newline characters. The motivation comes from a problem with the 'users.users.${u}.openssh.authorizedKeys' option. It is easy to unintentionally insert a newline character at the end of a string, or even in the middle, for example: restricted_ssh_keys = command: keys: let prefix = '' command="${command}",no-pty,no-agent-forwarding,no-port-forwarding,no-X11-forwarding ''; in map (key: "${prefix} ${key}") keys; The 'prefix' string ends with a newline, which ends up in the middle of a key entry after a few manipulations. This is problematic because the key file is built by concatenating all the keys with 'concatStringsSep "\n"', with result in two entries for the faulty key: '' command="...",options... MY_KEY '' This is hard to debug and might be dangerous. This is now caught at build time.
2022-01-11Merge pull request #152392 from polykernel/attrset-optimizations-patch-1pennae1-17/+14
lib/attrset: various function optimizations
2022-01-10Merge pull request #152046 from pennae/optimize-modules-byNameRobert Hensing2-9/+9
lib/modules: optimize byName
2022-01-09lib.checkListOfEnum: initJosé Romildo2-1/+18
2022-01-05Merge pull request #151748 from hercules-ci/check-nixpkgs-overlays-typeRobert Hensing2-1/+24
Check nixpkgs overlays argument types
2022-01-02nixos/documentation: split options doc buildpennae1-1/+1
most modules can be evaluated for their documentation in a very restricted environment that doesn't include all of nixpkgs. this evaluation can then be cached and reused for subsequent builds, merging only documentation that has changed into the cached set. since nixos ships with a large number of modules of which only a few are used in any given config this can save evaluation a huge percentage of nixos options available in any given config. in tests of this caching, despite having to copy most of nixos/, saves about 80% of the time needed to build the system manual, or about two second on the machine used for testing. build time for a full system config shrank from 9.4s to 7.4s, while turning documentation off entirely shortened the build to 7.1s.
2021-12-28lib/modules: extract multiply-used value in byNamepennae1-4/+4
module.${attr} is used at least twice, so it must be evaluated at least twice (and since it's a function argument, be turned into a thunk twice).
2021-12-27lib/attrset: miscellaneous optimizationspolykernel1-10/+10
- Eta reduce `mapAttrsRecursiveCond`, `foldAttrs`, `getAttrFromPath`. - Modify `matchAttrs` to use `elemAt` instead of `head (tail xs)` to access elements. - Modify `matchAttrs` to use `any id` instead of `foldr and true`.