Commit graph

95 commits

Author SHA1 Message Date
Dyego Aurélio
28096cc5e3 treewide: apply nixfmt 1.2.0 2026-01-22 18:37:56 -03:00
Adam Dinwoodie
8e94561d62 nixpkgs: pass lib to config function
Nixpkgs config, for defining things like which licenses are
permitted, can either be an attrset or a function that is passed a
`pkgs` argument.  Evaluating that `pkgs` argument requires computing the
Nixpkgs fixpoint, which requires checking whether the derivations used
in the Nixpkgs bootstrap have valid licenses.  This works provided
nothing tries to use Nixpkgs functions to validate or merge anything
included in the configuration.

f5deefd463 (config: add and document {allow,block}listedLicenses,
2025-08-31), in #437723, added type checking and merging to the lists of
permitted/forbidden licenses.  That resulted in a recursion loop if a
list of licenses included, say, `pkgs.lib.licenses.bsd0`.

To allow licenses to be specified from Nixpkgs' library, pass `lib` as
well as `pkgs` to any config function.  Computing `lib` doesn't require
working out the full Nixpkgs fixpoint.  The change in #437723 will still
break things for some people, but it at least provides a sensible route
to getting the config working again.

Fixes #456994.
2026-01-05 21:36:29 +00:00
Klaus Frank
14b19cf62d
docs: Make nixpkgs.pkgs defaultText c'n'p-able
Currently the defaultText of nixpkgs.pkgs uses the cfg variable. The search.nixos.org page is not able to resolve that variable.

Replacing "cfg" within this docs text with the non-aliased "config.nixpkgs".
2025-12-05 16:39:33 +01:00
Wolfgang Walther
f2640ee208
top-level: return __splicedPackages 2025-10-31 20:34:05 +01:00
éclairevoyant
45193d5a8c
nixos/nixpkgs: correct some option defaults 2025-09-11 17:12:35 -04:00
Robert Hensing
0b47fba230 Revert "nixos/nixpkgs: make config.nixpkgs.{localSystem,crossSystem,buildPlatform,hostPlatform} write only"
This reverts commit 0a19371146.
2025-02-05 14:29:18 +01:00
Wolfgang Walther
0a19371146
nixos/nixpkgs: make config.nixpkgs.{localSystem,crossSystem,buildPlatform,hostPlatform} write only
The description for options.nixpkgs.system already hints at this:

  Neither ${opt.system} nor any other option in nixpkgs.* is meant
  to be read by modules and configurations.
  Use pkgs.stdenv.hostPlatform instead.

We can support this goal by not elaborating the systems anymore, forcing
users to go via pkgs.stdenv.

This will prevent problems when making the top-level package sets
composable in the next commit. For this to work, you should pass a fully
elaborated system to nixpkgs' localSystem or crossSystem options.
2025-02-01 12:04:59 +01:00
K900
7c251e2b5f
Revert "pkgs/top-level: make package sets composable" 2025-01-26 09:43:44 +03:00
Wolfgang Walther
eec21001b0
nixos/nixpkgs: pass original system args instead of elaborated
Passing the elaborated system defeats what pkgs/top-level/default.nix
tries to do: Pass only the original args and let defaults be inferred.

The underlying problem is that lib.systems.elaborate can not deal with
arbitrary overrides, but will often return an inconsistent system
description when partially overriding some values. This becomes most
prominent if trying to override an already elaborated system.
2025-01-25 18:55:03 +01:00
Silvan Mosberger
4f0dadbf38 treewide: format all inactive Nix files
After final improvements to the official formatter implementation,
this commit now performs the first treewide reformat of Nix files using it.
This is part of the implementation of RFC 166.

Only "inactive" files are reformatted, meaning only files that
aren't being touched by any PR with activity in the past 2 months.
This is to avoid conflicts for PRs that might soon be merged.
Later we can do a full treewide reformat to get the rest,
which should not cause as many conflicts.

A CI check has already been running for some time to ensure that new and
already-formatted files are formatted, so the files being reformatted here
should also stay formatted.

This commit was automatically created and can be verified using

    nix-build https://github.com/infinisil/treewide-nixpkgs-reformat-script/archive/a08b3a4d199c6124ac5b36a889d9099b4383463f.tar.gz \
      --argstr baseRev b32a094368
    result/bin/apply-formatting $NIXPKGS_PATH
2024-12-10 20:26:33 +01:00
Matt Sturgeon
6d9dfef94f
nixos/nixpkgs: show definition files in config assertion 2024-09-20 10:42:45 +01:00
Matt Sturgeon
1bd4da1848
nixos/nixpkgs: fix config assertion text
The assertion message should include the `nixpkgs.config` value, however
it currently includes the entire `nixpkgs.config` _option_.

This means the type, declarations, definitions, etc were all printed.
2024-09-20 10:42:05 +01:00
Felix Buehler
22cbc6c0f6 nixos/nixpkgs: fix incorrect lib usage 2024-09-16 21:07:34 +02:00
Felix Buehler
609e57485d nixos/nixpkgs: remove with lib; 2024-09-15 10:43:45 +02:00
Valentin Gagarin
e6057cfd59 doc: link to Nixpkgs manual for global configuration options
Co-authored-by: Dominic Mills <dominic.millz27@gmail.com>
2024-04-15 17:00:26 +02:00
stuebinm
6afb255d97 nixos: remove all uses of lib.mdDoc
these changes were generated with nixq 0.0.2, by running

  nixq ">> lib.mdDoc[remove] Argument[keep]" --batchmode nixos/**.nix
  nixq ">> mdDoc[remove] Argument[keep]" --batchmode nixos/**.nix
  nixq ">> Inherit >> mdDoc[remove]" --batchmode nixos/**.nix

two mentions of the mdDoc function remain in nixos/, both of which
are inside of comments.

Since lib.mdDoc is already defined as just id, this commit is a no-op as
far as Nix (and the built manual) is concerned.
2024-04-13 10:07:35 -07:00
Jared Baur
3794246066
nixos/nixpkgs: fix determination for cross-compiled nixos system
Since the output of `lib.systems.elaborate` contains functions, an
equality check with `==` does not suffice, `lib.systems.equals` should
be used instead.
2024-03-01 09:05:08 -08:00
Alyssa Ross
a3ba049545 nixos/nixpkgs.nix: use less confusing example systems
system and config shouldn't both be specified — each will be filled in
based on the other when the system is elaborated.
2023-10-25 08:33:14 +00:00
K900
eb8ce7930d
Merge pull request #257458 from K900/die-nixpkgs-config-die
treewide: fail when `nixpkgs.config` is set with explicit `pkgs`, remove all `nixpkgs.config` usages in in-tree modules
2023-10-01 10:11:15 +03:00
Silvan Mosberger
11406bdc0e nixos/nixpkgs: Rewrite overlays option docs
henrik-ch was also here :)

Co-Authored-By: Valentin Gagarin <valentin.gagarin@tweag.io>
2023-09-28 16:27:33 +02:00
K900
ce87196a00 nixos/nixpkgs: assert that nixpkgs.config is not set when pkgs is passed in externally
This is a common footgun people hit often. Remove it.
2023-09-26 18:02:00 +03:00
Robert Hensing
8f31bff794 nixos/nixpkgs: Don't check when _module.args.pkgs is set 2023-06-16 22:08:16 +02:00
Robert Hensing
a742767baf nixos/nixpkgs: Make default Nixpkgs lazy when overridden 2023-06-16 21:46:26 +02:00
Robert Hensing
6e594fedb3 nixos/nixpkgs: Use types.pkgs 2023-05-10 15:55:09 +02:00
figsoda
fd4f865645 nixos/nixpkgs: remove unused binding 2022-11-30 17:27:31 -05:00
Brian Cooper
8b013b65a6
nixos/misc: fix grammar typo 2022-11-16 06:54:04 +00:00
Robert Hensing
5d663a9171 nixos/nixpkgs.nix: Fix assertion when nixpkgs.pkgs is set 2022-10-27 13:41:01 +02:00
Robert Hensing
1e9864c85e nixos/nixpkgs: Only error when nixpkgs options are actually used 2022-10-20 11:19:20 +02:00
Christian Kögler
f7077ba131
nixos: Fix cross compilation of derivations defined in NixOS via pkgs 2022-09-11 17:11:37 +02:00
pennae
f2ea09ecbe nixos/*: convert options with listings
minor rendering changes.
2022-08-31 17:27:36 +02:00
pennae
6039648c50 nixos/*: automatically convert option docs 2022-08-19 22:40:58 +02:00
pennae
087472b1e5 nixos/*: automatically convert option docs 2022-08-06 20:39:12 +02:00
pennae
16102dce2f nixos/*: replace <code> in option docs with <literal>
markdown can't represent the difference without another extension and
both the html manual and the manpage render them the same, so keeping the
distinction is not very useful on its own. with the distinction removed
we can automatically convert many options that use <code> tags to markdown.

the manpage remains unchanged, html manual does not render
differently (but class names on code tags do change from "code" to "literal").
2022-08-03 21:03:23 +02:00
Robert Hensing
acd969a4dd nixos/nixpkgs.nix: Recommend hostPlatform instead of system
The ${opt.*} syntax will print the full path when NixOS is used
as a submodule.

nixpkgs.system / nixpkgs.localSystem must not be read by any
other module because its meaning is ambiguous in cross vs
non-cross contexts. hostPlatform is generally what you need.
*Where* you build something generally doesn't matter in a
system _configuration_ context like NixOS.
2022-07-10 13:36:24 +02:00
Robert Hensing
985b6812d6 nixos/nixpkgs.nix: Ignore the default system in check
We might want to make this more strict at some point.
2022-06-25 10:40:41 +02:00
Robert Hensing
c9fea8c03c nixos: Add simplified nixpkgs.{hostSystem,buildSystem} 2022-06-21 14:22:36 +02:00
David Arnold
646e214e11
nixos: remove effect-less nixpgks.initialSystem
- initialSystem was keeping track of the evaluating system
- it had been used by `nesting.children`
- since, 20.09, `nesting.children` has been replaced with named
  specializations

It appears that this option was left over and not cleand up properly.
2022-05-26 20:00:05 -05:00
Robert Hensing
6b9ef93b98 Revert "flake.nix: Set nixpkgs.config.path"
This reverts commit 0b222173db.
2022-01-27 12:53:29 +01:00
Robert Hensing
0b222173db flake.nix: Set nixpkgs.config.path 2022-01-22 16:43:05 +01:00
Robert Hensing
be3967e351 nixos/nixpkgs.nix: Make independent
(cherry picked from commit 62e7f0eda1)
2022-01-10 12:26:59 +01:00
pennae
fc614c37c6 nixos/documentation: split options doc build
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.
2022-01-02 19:46:13 +01:00
Naïm Favier
2ddc335e6f
nixos/doc: clean up defaults and examples 2021-10-04 12:47:20 +02:00
Ben Siraphob
1c2a2b0a08 treewide: fold -> foldr 2021-01-26 10:57:07 +07:00
volth
bc0d605cf1 treewide: fix double quoted strings in meta.description
Signed-off-by: Ben Siraphob <bensiraphob@gmail.com>
2021-01-24 19:56:59 +07:00
Robert Hensing
4d43de37b2 nixos/nixpkgs.nix: Correct crossSystem default literal
The default is null and the documentation should reflect that.
2020-08-26 13:35:35 +02:00
Matthew Bauer
9d8d66baf5
nixos/nixpkgs.nix: Allow just using config in system (#80818)
* nixos/nixpkgs.nix: Allow just using config in system

This assertion requires system to work properly. We might not have
this in cases where the user just sets config and wants Nixpkgs to
infer system from that. This adds a default for when this happens,
using doubleFromSystem.

* parens
2020-03-21 23:23:24 -04:00
Andrew Childs
ce416779bb nixos/activation: use eval-config's system argument for nesting
This avoids a possible surprise if the user is using `nixpkgs.system`
and `nesting.children`. `nesting.children` is expected to ignore all
parent configuration so we shouldn't propagate the user-facing option
`nixpkgs.system`. To avoid doing so, we introduce a new internal
option for holding the value passed to eval-config.nix, and use that
when recursing for nesting.
2020-03-05 20:28:31 +09:00
Silvan Mosberger
ca3820dd00
nixos/misc: Fix nixpkgs.config merge function
Previously nested attrsets would override each other
2019-08-10 20:03:11 +02:00
Eelco Dolstra
7eb332af5d
Remove default value for nixpkgs.system
Using "builtins.currentSystem" doesn't work in pure evaluation mode,
and even when it's explicitly set (which it always is, in
nixos/lib/eval-config.nix), it breaks manual generation because the
manual tries to render the default value.
2019-06-19 14:07:45 +02:00
Andreas Rammhold
45f58cad33
nixos/misc/nixpkgs: fixed syntax error in overlays example
I was pointed towards a small syntax error in the `nixpkgs.overlays`
documentation. There was a trailing semicolon after the overlay
function.

I also aligned the code a bit better so opening and closing brackets can
be visually matched much better (IMO).
2019-05-04 17:29:04 +02:00