Commit graph

152 commits

Author SHA1 Message Date
Philip Taron 44998896c6
lib: remove optional builtins prefixes from prelude functions (#447402) 2025-09-30 16:28:04 +00:00
NAHO 6177c4ad72
lib: remove optional builtins prefixes from prelude functions
Remove optional builtins prefixes from prelude functions by running:

    builtins=(
      abort
      baseNameOf
      break
      derivation
      derivationStrict
      dirOf
      false
      fetchGit
      fetchMercurial
      fetchTarball
      fetchTree
      fromTOML
      import
      isNull
      map
      null
      placeholder
      removeAttrs
      scopedImport
      throw
      toString
      true
    )

    fd --type file . lib --exec-batch sed --in-place --regexp-extended "
      s/\<builtins\.($(
        printf '%s\n' "${builtins[@]}" |
          paste --delimiter '|' --serial -
      ))\>/\1/g
    "

    nix fmt
2025-09-30 09:02:59 +02:00
David McFarland 39fd8e4adf cygwin: init as a target toolchain
The old cygwin support used -pc-windows-cygnus as the config.  This is
supported by LLVM, but not by GNU. This will change it to -pc-cygwin,
which is more generally supported.

Because the kernel is now 'cygwin' rather than 'windows', isWindows will
return false. There are lots of different reasons isWindows is used in
nixpkgs, but in my experience they often have to do with posix
compatibility and don't apply to cygwin.

Co-authored-by: Brian McKenna <brian@brianmckenna.org>
2025-09-27 13:29:44 -03:00
nixpkgs-ci[bot] c0dd2454fa
Merge staging-next into staging 2025-08-01 00:21:45 +00:00
Ross Smyth 4af7c6bdee lib.systems: Add examples & helpers for MSVC 2025-07-31 11:41:15 -04:00
Wolfgang Walther 90604d95bc
Merge branch 'staging-next' into staging 2025-07-24 14:33:09 +02:00
Wolfgang Walther 5a0711127c
treewide: run nixfmt 1.0.0 2025-07-24 13:55:40 +02:00
Colin b3daf8c3a5 nodejs: split destCPU into stdenv.$platform.node
this architecture mapping is used broadly in the node ecosystem.
an assortment of tools and hooks, like buildNpmPackage or
pnpm.configHook, will benefit from reusing these values. placing them in
stdenv makes sense because (1) several of these tools don't currently
depend on nodejs, and may even be available where nodejs is not and (2)
`stdenv.{build,host,target}Platform` seems to be less error-prone than
`pkgs*.nodejs.{os,arch}` -- especially for setup hooks where the offsets
are shifted.
2025-07-07 03:07:58 +00:00
Alyssa Ross f4c841ae5e
lib.systems: don't throw if go unsupported
Better to have a value that can actually be checked for, rather than
throwing, so optional Go support can be disabled when unsupported.
2025-05-30 14:57:33 +02:00
Gutyina Gergő b3b0fd266b
lib: prefer replaceString over replaceStrings 2025-05-28 00:20:57 +02:00
Aleksana b2fc900a32
lib.systems.elaborate.canExecute: handle different gcc.arch (#403549) 2025-05-23 09:59:10 +08:00
aleksana 1802f697e4 lib.systems.elaborate.canExecute: handle different gcc.arch 2025-05-22 18:57:28 +08:00
Morgan Jones 9d3c069cbd
lib/systems: remove android cruft
These used legacy names for Android SDK and NDK versions, so now we can
do away with them.
2025-05-12 23:43:16 -07:00
aleksana e1828f9668 lib.systems: add golang platform dialect 2025-04-30 22:05:32 +08:00
zowoq 0931f4e861 Revert "pkgs/top-level/stage.nix: add pkgsLLVMLibc"
This reverts commit 41b14024d2.
2025-04-24 14:04:25 +10:00
Alyssa Ross 904b79c696
lib.systems: force qemuArch to "aarch64" on aarch64
qemu architecture names are fixed — we're using uname here just
because it's more likely to be correct than CPU name (see e.g. POWER).
This means that aarch64 is always called aarch64, even on Darwin where
uname reports arm64.

Fixes: 61582c7043 ("lib/systems: use Darwin architecture names for `config` and `uname`")
2025-04-11 10:32:19 +02:00
Emily 61582c7043 lib/systems: use Darwin architecture names for config and uname
`aarch64-apple-darwin` no longer works with LLVM 20.
2025-04-02 21:22:47 +01:00
Silvan Mosberger e52d633a63 Merge remote-tracking branch 'upstream/staging-next' into staging 2025-04-02 18:30:54 +02:00
Silvan Mosberger 374e6bcc40 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](8616af08d9/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.
2025-04-01 20:10:43 +02:00
Tristan Ross 05219927d0
lib.systems: mark LLVM libc as static 2025-03-24 06:55:06 -07:00
Tristan Ross 41b14024d2
pkgs/top-level/stage.nix: add pkgsLLVMLibc 2025-01-10 20:54:19 -08:00
github-actions[bot] 1ae7d136e8
Merge staging-next into staging 2024-11-30 00:04:18 +00:00
Emily 2b1f3bb342 lib/systems: ensure native emulator is a string
Fixes eval of `mesonEmulatorHook.crossFile`.
2024-11-23 17:24:48 +00:00
Emily 561a54f356
lib/systems: use a shell script for native emulator (#357309) 2024-11-20 16:31:43 +00:00
Emily 4c81eb7651 lib/systems: use a shell script for native emulator
This avoids pulling in all of `execline`’s closure.

Co-authored-by: sternenseemann <sternenseemann@systemli.org>
2024-11-19 15:43:55 +00:00
Emily 0f9067f865 darwin: set the minimum version to macOS 11.3 2024-11-18 00:05:22 +00:00
Wolfgang Walther 3c21a5c9d6
lib/systems: elaborate properly with non-matching system / config / parsed args
When elaborating a system with both "config" and "system" arguments
given, they might not match the parsed results.  Example:

elaborate {
  config = "i686-unknown-linux-gnu";
  system = "x86_64-linux";
}

This would result in a parsed system for i686, because the config
argument is preferred.  But since "// args //" comes after system has
been inferred from parsed, it is overwritten again.  This results in
config and parsed all pointing to i686, while system still tells the
story of x86_64.

Inconsistent arguments can also be given when passing "parsed" directly.
This happened in stage.nix for the various package sets.

The solution is simple: One of the three arguments needs to be treated
as the ultimate source of truth.  "system" can already be losslessly
extracted from "parsed".  However, "config" currently can not, for
example for various -mingw32 cases.  Thus everything must be derived
from "config".

To do so, "system" and "parsed" arguments are made non-overrideable for
systems.elaborate.  This means, that "system" will be used to parse when
"config" is not given - and "parsed" will be ignored entirely.

The systemToAttrs helper is exposed on lib.systems, because it's useful
to deal with top-level localSystem / crossSystem arguments elsewhere.
2024-11-03 17:38:19 +01:00
Zhaofeng Li b8c1ef98e4 nixos/binfmt: Add option to use static emulators when available
The fixBinary flag will be enabled if a static emulator is in use.
2024-10-01 15:05:32 +09:00
Julius Michaelis 4658a06076 lib/systems: use qemu-user package instead of custom definition 2024-10-01 15:05:32 +09:00
oxalica a9fe4d6d8c lib.systems: fix rustTarget for WASI
The corresponding Rust target name is "wasm32-wasip?", not
"wasm32-unknown-wasi".
2024-09-30 23:34:40 +02:00
github-actions[bot] ce19166255
Merge master into staging-next 2024-09-02 18:04:19 +00:00
Alyssa Ross 4b6c89a670 lib.systems: add rustTarget for riscv32
Fixes buildPackages.rustc when cross compiling to riscv32.
2024-09-02 15:15:37 +02:00
Robert Hensing b2d208b70d
Merge pull request #324071 from tie/emulator-exec
lib/systems: use execline’s exec instead of runtimeShell
2024-08-25 19:06:15 +02:00
Artturin c9270f6274
Merge pull request #329964 from Artturin/androidrenamesdk
treewide: Rename android `sdkVer` and `ndkVer`
2024-08-17 19:22:42 +03:00
Tristan Ross 527de075a3 lib.systems: mark windows as having shared libs 2024-08-10 08:34:57 +02:00
Ivan Trubach 4c6e132c7e lib/systems: use execline’s exec instead of runtimeShell 2024-07-30 12:23:31 +03:00
Artturin 35e5943d69 lib.systems: throw if sdkVer or ndkVer are used for android.
Those attrs have been renamed and throwing is the best way to show it,
if we only warned then the user would only get an error like this `error: Unsupported sdk: 33`
from `pkgs/top-level/darwin-packages.nix`.

If someone wants to support multiple NixOS versions then they can simply
set both attrs. (`!args ? androidSdkVersion` is for that)
2024-07-25 23:49:18 +03:00
Ilan Joselevich bf61b8c8fb
lib.systems: Fix setting rust.platform.os for wasm32-unknown-unknown
Previously we would fallback to using `kernel` as the `os` which would
result in using the wrong `os` value (`none`) when actually we want
`unknown`. This seems to be a special case for wasm32-unknown-unknown
and wasm64-unknown-unknown so I extended the if statement to support it.
2024-07-05 19:43:10 +03:00
Florian Klink 641b2f29b6
Merge pull request #319153 from Kranzes/buildRustCrate-wasm
buildRustCrate: add support for compiling to wasm32-unknown-unknown
2024-06-30 14:05:33 +03:00
Ilan Joselevich 957116419d
lib.systems.examples: add wasm32-unknown-none
This system was added to use the nixpkgs cross compilation logic when
compiling to wasm32-unknown-unknown in rust.
2024-06-24 19:27:13 +03:00
John Ericson bab20def47 lib.systems: Default useLLVM to true with OpenBSD too
Not just FreeBSD.
2024-06-18 13:23:58 -04:00
Ali Abrar 888dee445d openbsd: init at 7.5 2024-05-26 10:55:56 -04:00
Artemis Tosini 06b05d2289 freebsd: Cleanup, get ready to support version 14
* Extend libc

  Include non-libc core libraries in the libc package. Many of these
  mirror libraries present in glibc on linux, such as libgcc, libraries
  used for iconv, and libraries used for reading kernel info (libkvm,
  libprocstat, libmemstat).

  Without this many packages outside the freebsd tree would need to be
  modified to include standard dependencies which would already be on
  the system for other packages.

* Mark FreeBSD as using LLVM

* Update default LLVM version FreeBSD

* Use patch monolith

  The patchesRoot system combined with the fact that each derivation
  will Request specific names of patches makes it very annoying to use
  other FreeBSD source trees with nixpkgs. This new system allows
  providing one Or more entire trees of patches whose contents will be
  dynamically Parsed and only the relevant patches will be applied for
  any one Derivation.

  With this commit, the following knobs are available for specifying the
  FreeBSD source:

  - overriding `freebsd.versionInfo`, for picking another official
    supported FreeBSD release.

  - overriding `freebsd.source` for specifying a specific unpatched
    FreeBSD source tree.

  - overriding `freebsd.patches`, for specifying the patches to apply.

Co-Authored-by: Audrey Dutcher <audrey@rhelmot.io>
Co-Authored-by: John Ericson <John.Ericson@Obsidian.Systems>
2024-05-11 21:52:07 -04:00
Johannes Kirschbauer c0f5f271d1
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>
2024-04-04 16:36:07 +02:00
Silvan Mosberger b803ba5a48
Merge pull request #295374 from philiptaron/issue-208242/lib.systems
lib: use explicit name imports in `lib/systems`
2024-03-25 18:41:46 +01:00
Philip Taron 5988f8f841
lib.systems: use explicit attrset instead of rec
This allows refactoring in the file without accidentally modifying the
public interface of the file.

Also, pull in symbols consistently from `lib` instead of `builtins`.
2024-03-19 16:09:37 -07:00
Thomas Watson 91ad438400 lib/systems: remove more features from qemu-user
alsaSupport/jackSupport: unnecessary multimedia systems

tpmSupport/capstoneSupport: unlikely to come up as an exe emulator
2024-03-11 20:16:04 -05:00
Jeff Huffman 94a3c17582
lib.systems.elaborate: add libDir attribute 2023-12-03 16:23:44 -05:00
Alyssa Ross 973120823b
lib.systems.elaborate: fix passing rust (more) (#271707)
An important idea around the rust stuff in lib.systems is that it's
elaborated — this means that it should idempotently add to the values
passed in, if any.  But we missed that the names used for the
parameter and the elaborated value for "rustcTarget"/"config" didn't
line up.  The intention was to use "rustcTarget" everywhere in the new
interface, as a more descriptive name than "config".

This fixes setting the system in NixOS configuration, which results in
an already elaborated system being elaborated again.  Before, this
wouldn't produce the correct result:

% nix-instantiate --eval -A stdenv.hostPlatform.rust.rustcTarget --system armv7l-linux
"armv7-unknown-linux-gnueabihf"
% NIX_PATH= nix-instantiate --eval -E '(import nixos/lib/eval-config.nix { system = "armv7l-linux"; modules = []; }).pkgs.stdenv.hostPlatform.rust.rustcTarget'
"arm-unknown-linux-gnueabihf"

Fixes: e3e57b8f18 ("lib.systems: elaborate Rust metadata")
Fixes: https://github.com/NixOS/nixpkgs/issues/271000
2023-12-03 01:32:01 +01:00
Alyssa Ross 62f7a6dcc1 lib.systems.elaborate: fix passing rust
Usually, attributes passed explicitly to elaborate take precedence
over the elaborated ones, but since we also elaborate the nested
"rust" attrset, we need to push that one level down, so the rest of
"rust" is still filled in if you just pass
{ rust = { config = ... } }.

I've had to drop the assertion that checked that at most one of "rust"
and "rustc" was part of the un-elaborated system, because doing this
broke passing an elaborated system in, which should be idempotent.

For the same reason, I've also had to make it possible for
rust.rustcTargetSpec to be passed in.  Otherwise, on the second call,
since platform was filled in by the first, the custom target file
would be constructed.  The only other way to avoid this would be to
compare the platform attrs to all built in Rust targets to check it
wasn't one of those, and that isn't feasible.

Fixes: e3e57b8f18 ("lib.systems: elaborate Rust metadata")
2023-11-24 12:21:30 +01:00