about summary refs log tree commit diff
path: root/lib
AgeCommit message (Collapse)AuthorFilesLines
2019-09-05lib/makeOverridable: Deduplicate override definitionSilvan Mosberger1-2/+5
And call it overrideArgs in the let binding because that's what it does
2019-08-27Merge pull request #66407 from Infinisil/fix-option-renameSilvan Mosberger1-10/+8
lib/modules: Use options `apply` function even if no values are defined
2019-08-26lib/options: fix path in commentJan Tojnar1-1/+1
2019-08-18Merge branch 'master' into flip-map-foreachdanbst4-0/+30
2019-08-13Merge pull request #65728 from Infinisil/types-eithersAaron Andersen4-0/+30
lib/types: Add oneOf, extension of either to a list of types
2019-08-10lib/modules: Use options `apply` function even if no values are definedSilvan Mosberger1-10/+8
This allows `apply` functions to return a valid value if they completely ignore their argument, which is the case for the option renaming functions like `mkAliasOptionModule`. Therefore this solves issue #63693
2019-08-06lib/types: Add oneOf, extension of either to a list of typesSilvan Mosberger4-0/+30
2019-08-05and one more placedanbst1-1/+1
2019-08-05Merge branch 'master' into flip-map-foreachDanylo Hlynskyi4-12/+28
2019-08-05rename foreach -> forEachdanbst1-3/+3
2019-07-29Merge pull request #65380 from danbst/int-merge-one-optionSilvan Mosberger1-5/+5
lib/types: change merge strategy for `str`, `int`, `float`, `path` and `enum`
2019-07-25Add RISC-V embedded crossSystemsJay Kruer2-1/+13
2019-07-25lib/types: change merge strategy for `str`, `int`, `float` and `enum`danbst1-5/+5
Change to `mergeEqualOption`.
2019-07-19lib: allow sourceByRegex to be composed after cleanSourceWithBas van Dijk1-6/+10
`sourceByRegex src regexes` should include a source file if one of the regular expressions `regexes` matches the path of that file relative to `src`. However to compute this relative path `sourceByRegex` uses: ``` relPath = lib.removePrefix (toString src + "/") (toString path); ``` Note that `toString path` evaluates to an absolute file somewhere under `src` and not under `/nix/store`. The problem is that this doesn't work if `src` is a `cleanSourceWith` invocation as well because `toString src` will then evaluate to `src.outPath` which will evaluate to `builtins.filterSource ...` which evaluates to a path in `/nix/store` which is not a prefix of `path`. The solution is to replace `src` with `origSrc` where ``` origSrc = if isFiltered then src.origSrc else src; isFiltered = src ? _isLibCleanSourceWith; ``` Test this by executing the following from the nixpkgs repo: ``` (cat << 'EOI' let pkgs = import ./. {}; in pkgs.runCommand "test-sourceByRegex" { test_sourceByRegex = let src1 = pkgs.lib.sourceByRegex ./. [ "^test-sourceByRegex.nix$" ]; src2 = pkgs.lib.sourceByRegex src1 [ "^test-sourceByRegex.nix$" ]; in src2 + "/test-sourceByRegex.nix"; } '' cp $test_sourceByRegex $out '' EOI ) > test-sourceByRegex.nix nix-build test-sourceByRegex.nix ```
2019-07-14lib: introduce `foreach` = flip mapdanbst2-1/+14
The main purpose is to bring attention to `flip map`, which improves code readablity. It is useful when ad-hoc anonymous function grows two or more lines in `map` application: ``` map (lcfg: let port = lcfg.port; portStr = if port != defaultPort then ":${toString port}" else ""; scheme = if cfg.enableSSL then "https" else "http"; in "${scheme}://cfg.hostName${portStr}" ) (getListen cfg); ``` Compare this to `foreach`-style: ``` foreach (getListen cfg) (lcfg: let port = lcfg.port; portStr = if port != defaultPort then ":${toString port}" else ""; scheme = if cfg.enableSSL then "https" else "http"; in "${scheme}://cfg.hostName${portStr}" ); ``` This is similar to Haskell's `for` (http://hackage.haskell.org/package/base-4.12.0.0/docs/Data-Traversable.html#v:for)
2019-07-11make-tarball / lib-tests: reduce duplicationFrederik Rietdijk1-11/+4
The misc.nix and systems.nix tests were invoked at three different places. Let's not that.
2019-07-10Revert "Revert "systems/doubles.nix: add Apple doubles""Matthew Bauer2-4/+6
This reverts commit ce2f74df2cade57e74c235292c8b074281903e71. Doubles are treated as -darwin here, to provide some consistency. There is some ambiguity between “x86_64-darwin” and “i686-darwin” which could refer to binaries linked between iOS simulator or real macOS binaries. useiOSPrebuilt can be used to determine which to use, however.
2019-07-10Revert "systems/doubles.nix: add Apple doubles"Frederik Rietdijk1-3/+1
The lib tests need to be fixed as well. This unbreaks the tarball job. This reverts commit 00ba557856d6217121e50ea69c251e9458d9dc08.
2019-07-08systems/doubles.nix: add Apple doublesMatthew Bauer1-1/+3
These are used in cross-compilation to iOS devices and simulators. Fallout from #60349.
2019-06-16treewide: remove unused variables (#63177)volth1-1/+1
* treewide: remove unused variables * making ofborg happy
2019-06-13Merge pull request #62712 from danbst/module-conflict-namingDanylo Hlynskyi1-1/+1
NixOS module system: improve one of error messages
2019-06-12licenses: refer to libpng2 using spdxOrivej Desh1-3/+3
https://spdx.org/licenses/libpng-2.0.html
2019-06-06licenses: fix LGPL 2.1 full nameOrivej Desh1-2/+2
2019-06-05module system: prettify a bit error when unique option defined twicedanbst1-1/+1
The error can be reproduced like: ``` $ nix-instantiate ./nixos -A system --arg configuration ' { fileSystems."/".device = "nodev"; boot.loader.grub.devices = [ "nodev" ]; containers.t.config.imports = [ <nixpkgs/nixos/modules/virtualisation/amazon-image.nix> ]; }' ``` Previously error was: ``` error: The unique option `containers.t.networking.hostName' is defined multiple times, in `/nix/var/nix/profiles/per-user/root/channels/nixpkgs/nixos/modules/virtualisation/amazon-image.nix' and `module at /home/danbst/dev/nixpkgs/nixos/modules/virtualisation/containers.nix:470'. (use '--show-trace' to show detailed location information) ``` Now it is: ``` error: The unique option `containers.t.networking.hostName' is defined multiple times, in: - /nix/var/nix/profiles/per-user/root/channels/nixpkgs/nixos/modules/virtualisation/amazon-image.nix - module at /home/danbst/dev/nixpkgs/nixos/modules/virtualisation/containers.nix:470. (use '--show-trace' to show detailed location information) ``` Related: https://github.com/NixOS/nixpkgs/issues/15747
2019-06-04systems: fix lib-testsMatthew Bauer3-5/+8
These were broken by the added system doubles. This just adds those to the lib-tests.
2019-06-04systems: fixup from last commitMatthew Bauer1-1/+1
it’s powerpc-none not ppc-none
2019-06-04systems: add missing doublesMatthew Bauer1-0/+4
in https://github.com/NixOS/nixpkgs/pull/60349, the attr handling was removed. This means we rely on these double values for determing what we are compatible with. This adds some of the missing doubles to this list. https://hydra.nixos.org/eval/1523389#tabs-removed
2019-06-04Merge pull request #60349 from matthewbauer/fix-60345Matthew Bauer4-41/+7
check-meta: use system tuple in platforms
2019-06-04systems: allow passing in string for cross/localSystemMatthew Bauer1-1/+3
This makes things a little bit more convenient. Just pass in like: $ nix-build ’<nixpkgs>’ -A hello --argstr localSystem x86_64-linux --argstr crossSystem aarch64-linux
2019-06-04systems: remove forMetaMatthew Bauer2-39/+0
This is unused now.
2019-05-18Merge pull request #60406 from JohnAZoidberg/remove-isnullRobin Gloster3-4/+4
treewide: Remove usage of isNull
2019-05-05Adds pkgsCross.gnu32 and pkgsCross.gnu64 platformsLionello Lunesu1-0/+3
2019-04-30systems: add riscv doubleMatthew Bauer1-0/+3
This was never listed in doubles.nix! Not sure why?
2019-04-30check-meta: use system tuple in platformsMatthew Bauer1-1/+1
Fixes #60345
2019-04-29treewide: Remove usage of isNullDaniel Schaefer3-4/+4
isNull "is deprecated; just write e == null instead" says the Nix manual
2019-04-27Merge master into staging-nextFrederik Rietdijk1-0/+6
2019-04-25tests/systems: fix testsMatthew Bauer1-1/+1
2019-04-24lib.licences: Add CC-BY-NC-3.0Mario Rodas1-0/+6
2019-04-23Merge pull request #56555 from matthewbauer/wasmMatthew Bauer6-5/+25
Initial WebAssembly/WASI cross-compilation support
2019-04-23wasmtime: init and use for emulationMatthew Bauer1-2/+2
This isn’t really an "emulator" but it’s the closest concept we have right now.
2019-04-23wasm: don’t assume muslMatthew Bauer1-1/+1
2019-04-23wasm: init cross targetMatthew Bauer6-4/+24
Adds pkgsCross.wasm32 and pkgsCross.wasm64. Use it to build Nixpkgs with a WebAssembly toolchain. stdenv/cross: use static overlay on isWasm isWasm doesn’t make sense dynamically linked.
2019-04-20cc-wrapper: make machine configuration configurableMatthew Bauer1-18/+18
It is useful to make these dynamic and not bake them into gcc. This means we don’t have to rebuild gcc to change these values. Instead, we will pass cflags to gcc based on platform values. This was already done hackily for android gcc (which is multi-target), but not for our own gccs which are single target. To accomplish this, we need to add a few things: - add ‘arch’ to cpu - add NIX_CFLAGS_COMPILE_BEFORE flag (goes before args) - set -march everywhere - set mcpu, mfpu, mmode, and mtune based on targetPlatform.gcc flags cc-wrapper: only set -march when it is in the cpu type Some architectures don’t have a good mapping of -march. For instance POWER architecture doesn’t support the -march flag at all! https://gcc.gnu.org/onlinedocs/gcc/RS_002f6000-and-PowerPC-Options.html#RS_002f6000-and-PowerPC-Options
2019-04-20release-cross: remove alpha-elf targetMatthew Bauer1-5/+0
This doesn’t appear to ever have worked. binutils doesn’t seem to support the alpha-elf target at all. It doesn’t make sense to keep this around. https://hydra.nixos.org/build/92403855/nixlog/1/tail
2019-04-19kernel-headers: infer ARCH from config tripleMatthew Bauer1-0/+7
This makes us less reliant on the systems/examples.nix. You should be able to cross compile with just your triple: $ nix build --arg crossSystem '{ config = "armv6l-unknown-linux-gnueabi"; }' stdenv
2019-04-19systems: correct qemu architecturesMatthew Bauer1-3/+2
ppc64le and ppc64 are different targets in the configure script. We can’t use the same one. TODO: canonicalize similar ones based on qemu’s configure script.
2019-04-19systems: fix emulator identityMatthew Bauer1-1/+1
Squashed to fix shell quoting, thanks @Ericson2314
2019-04-19systems/parse.nix: fixup arm compatibilitiesMatthew Bauer1-13/+33
2019-04-18Merge master into staging-nextFrederik Rietdijk2-4/+6
2019-04-17lib.converge: optimiseAlyssa Ross1-3/+6