Commit Graph

49 Commits

Author SHA1 Message Date
Profpatsch
320cdecd16 lib/trivial: add assertOneOf 2018-09-06 18:14:27 +02:00
Profpatsch
0e2aa97f3a lib/trivial: add assertMsg 2018-09-06 18:14:27 +02:00
Vladimír Čunát
608730af44
lib/trivial.nix: fix missing parens
Broken in 62dca7c9a; the tricky thing is that it depends on nix version.
Explanation: https://github.com/NixOS/nix/issues/629
2018-09-03 14:18:26 +02:00
Profpatsch
62dca7c9ab lib/trivial: move zipIntBits to its own file
The amount of implementation detail really should not be the first thing in a
prominent file called `trivial.nix`.
2018-07-26 20:36:45 +02:00
Profpatsch
af10842940 lib/trivial: unify & improve docstrings
- add section headers
- unify comment syntax
- add examples

Tested with:
nix-instantiate --strict --eval ./lib/tests/misc.nix
2018-07-26 20:36:45 +02:00
Richard Marko
4a310a0404 lib: add float option type 2018-07-03 00:11:11 +02:00
volth
3c2bbe217c lib: bitAnd, bitOr, bitXor (bitsize-agnostic fallback function) (#41491)
* lib: bitAnd, bitOr, bitXor

* lib: test for bitAnd, bitOr, bitXor

* lib: bitsize-agnostic zipIntBits

* lib: bitNot

* lib: bitNot
2018-06-10 21:25:48 +02:00
Profpatsch
f98272d6e2 Revert "lib: bitAnd, bitOr, bitXor" 2018-06-05 18:45:20 +02:00
volth
0addac3b0a lib: bitAnd, bitOr, bitXor 2018-06-01 21:36:31 +00:00
Maximilian Bosch
9274ea3903
treewide: rename version attributes
As suggested in https://github.com/NixOS/nixpkgs/pull/39416#discussion_r183845745
the versioning attributes in `lib` should be consistent to
`nixos/version` which implicates the following changes:

* `lib.trivial.version` -> `lib.trivial.release`
* `lib.trivial.suffix` -> `lib.trivial.versionSuffix`
* `lib.nixpkgsVersion` -> `lib.version`

As `lib.nixpkgsVersion` is referenced several times in `NixOS/nixpkgs`,
`NixOS/nix` and probably several user's setups. As the rename will cause
a notable impact it's better to keep `lib.nixpkgsVersion` as alias with
a warning yielded by `builtins.trace`.
2018-04-28 14:23:53 +02:00
Maximilian Bosch
39909289f4
lib: deduplicate version/suffix references
The logic regarding the generated `.version-suffix` file is already
defined in `lib/trivial.nix` and shouldn't be duplicated in
`nixos/version`.
2018-04-28 14:23:13 +02:00
Jan Malakhovski
ee3220440d lib: implement compare, splitByAndCompare, and compareLists 2018-02-09 19:51:05 +00:00
Shea Levy
943592f698
Add setFunctionArgs lib function.
Among other things, this will allow *2nix tools to output plain data
while still being composable with the traditional
callPackage/.override interfaces.
2018-01-31 14:02:19 -05:00
Graham Christensen
b5a61f2c59
Revert "nixos: doc: implement related packages in the manual" 2017-12-23 07:19:45 -05:00
Jan Malakhovski
bccab965b9 lib: implement compare, splitByAndCompare, and compareLists 2017-12-07 21:26:30 +00:00
Graham Christensen
152c63c9ff
Convert libs to a fixed-point
This does break the API of being able to import any lib file and get
its libs, however I'm not sure people did this.

I made this while exploring being able to swap out docFn with a stub
in #2305, to avoid functor performance problems. I don't know if that
is going to move forward (or if it is a problem or not,) but after
doing all this work figured I'd put it up anyway :)

Two notable advantages to this approach:

1. when a lib inherits another lib's functions, it doesn't
   automatically get put in to the scope of lib
2. when a lib implements a new obscure functions, it doesn't
   automatically get put in to the scope of lib

Using the test script (later in this commit) I got the following diff
on the API:

  + diff master fixed-lib
  11764a11765,11766
  > .types.defaultFunctor
  > .types.defaultTypeMerge
  11774a11777,11778
  > .types.isOptionType
  > .types.isType
  11781a11786
  > .types.mkOptionType
  11788a11794
  > .types.setType
  11795a11802
  > .types.types

This means that this commit _adds_ to the API, however I can't find a
way to fix these last remaining discrepancies. At least none are
_removed_.

Test script (run with nix-repl in the PATH):

  #!/bin/sh

  set -eux

  repl() {
      suff=${1:-}
      echo "(import ./lib)$suff" \
          | nix-repl 2>&1
  }

  attrs_to_check() {
      repl "${1:-}" \
          | tr ';'  $'\n' \
          | grep "\.\.\." \
          | cut -d' ' -f2 \
          | sed -e "s/^/${1:-}./" \
          | sort
  }

  summ() {
      repl "${1:-}" \
          | tr ' ' $'\n' \
          | sort \
          | uniq
  }

  deep_summ() {
      suff="${1:-}"
      depth="${2:-4}"
      depth=$((depth - 1))
      summ "$suff"

      for attr in $(attrs_to_check "$suff" | grep -v "types.types"); do
          if [ $depth -eq 0 ]; then
              summ "$attr" | sed -e "s/^/$attr./"
          else
              deep_summ "$attr" "$depth" | sed -e "s/^/$attr./"
          fi
      done
  }

  (
      cd nixpkgs

      #git add .
      #git commit -m "Auto-commit, sorry" || true
      git checkout fixed-lib
      deep_summ > ../fixed-lib
      git checkout master
      deep_summ > ../master
  )

  if diff master fixed-lib; then
      echo "SHALLOW MATCH!"
  fi

  (
      cd nixpkgs
      git checkout fixed-lib
      repl .types
  )
2017-09-16 21:36:43 -04:00
Domen Kožar
97a4088d33
Add lib.mod: integer modulus 2017-08-30 14:32:27 +02:00
John Ericson
87b4a91fc4 lib: Move fixed-point combinators out of trivial
Trivia != prelude. This is a better organized and less likely to
scare off new contributors.
2017-05-29 18:09:52 -04:00
Jörg Thalheim
948488343b Merge pull request #24835 from Profpatsch/lib-doc-improvements
Lib doc improvements
2017-05-05 07:10:11 +01:00
Peter Simons
a502e327d3 Merge pull request #25201 from ebzzry/fix-typo
Fix typo in trivial.nix
2017-04-25 14:55:52 +02:00
Rommel Martinez
a8fc60745f Fix typo in trivial.nix 2017-04-25 14:36:22 +08:00
Profpatsch
46a36d82ee lib/trivial.nix: add type for fix 2017-04-18 02:57:28 +02:00
John Ericson
37e5e71fdf Merge pull request #24974 from Ericson2314/mapNullable
Introduce `mapNullable` into lib and use it in a few places
2017-04-17 17:12:14 -04:00
John Ericson
85aa5005af Introduce mapNullable into lib and use it in a few places
Also simply some configure flag logic my grep also alerted me too.
2017-04-17 17:04:04 -04:00
Vladimír Čunát
2090aa4f65
Merge: fixup a bad merge
For details see:
https://github.com/NixOS/nixpkgs/commit/24444513fb5#commitcomment-21767916
2017-04-14 19:11:17 +02:00
Vladimír Čunát
24444513fb
Merge branch 'staging' 2017-04-14 10:32:13 +02:00
Franz Pletz
3ab45f4b36
treewide: use boolToString function 2017-04-11 18:18:53 +02:00
Shea Levy
0a15af2ed1 lib: Add composeExtensions for composing extension functions 2017-04-07 14:30:05 -04:00
Profpatsch
b052a36294 lib/trivial: expand function docs 2017-03-15 18:29:33 +01:00
Eelco Dolstra
c20cc6d0b3
Excise use of importJSON
Putting information in external JSON files is IMHO not an improvement
over the idiomatic style of Nix expressions. The use of JSON doesn't
add anything over Nix expressions (in fact it removes expressive
power). And scattering package info over lots of little files makes
packages less readable over having the info in one file.
2017-01-30 11:44:08 +01:00
Eelco Dolstra
e3a873479e
Remove fetchMD5warn
Deprecation warnings should not be used in Nixpkgs because they spam
innocent "nix-env -qa" users with (in this case) dozens of messages
that they can't do anything about.

This also reverts commit 2ca8833383.
2016-11-30 15:14:30 +01:00
Charles Strahan
ca2b03439f Merge pull request #19496 from Ericson2314/overridePackages
Make `overridePackages` extend rather than replace existing overrides
2016-10-26 14:01:13 -04:00
John Ericson
e4cd45a30c top-level: Make overridePackages extend rather than replace existing overrides 2016-10-13 11:14:11 -04:00
Michael Raskin
e207ba7d6a fetchMD5warn: use INFO, maybe Hydra will like this more 2016-10-12 09:31:38 +02:00
Charles Strahan
da36847d92
nixos: make it easy to apply kernel patches
This makes it easy to specify kernel patches:

    boot.kernelPatches = [ pkgs.kernelPatches.ubuntu_fan_4_4 ];

To make the `boot.kernelPatches` option possible, this also makes it
easy to extend and/or modify the kernel packages within a linuxPackages
set. For example:

    pkgs.linuxPackages.extend (self: super: {
      kernel = super.kernel.override {
        kernelPatches = super.kernel.kernelPatches ++ [
          pkgs.kernelPatches.ubuntu_fan_4_4
        ];
      };
    });

Closes #15095
2016-10-11 19:59:00 -04:00
Michael Raskin
f603dc11a6 fetch*: print a trace warning about md5 deprecation 2016-10-09 16:19:04 +02:00
Dan Peebles
4dfdb27e00 lib.{warn, info}: add simple helpers
See also https://github.com/NixOS/nix/issues/749.
2016-08-15 13:54:23 -04:00
Vladimír Čunát
d4de02c46e treewide: change $IN_NIX_SHELL handling
... to be compatible with https://github.com/NixOS/nix/pull/933
while not breaking compatibility with current nix.
2016-08-11 16:40:44 +02:00
Eric Sagnes
e276842f6a lib: refactor nixpkgsVersion with fileContents 2016-08-01 18:35:26 +09:00
zimbatm
22d7c08dc5 lib.trivial: add a new importJSON function
This is meant to be used by packages who often re-generate their inputs.

Producing valid JSON is easier than nix, and also garantees it's purity.
2016-02-29 11:21:56 +00:00
Peter Simons
89a5717c7a lib/trivial.nix: improve spelling 2015-11-25 11:30:43 +01:00
Peter Simons
405fda497a lib: document fix and add fix', extends functions
These functions used to live in pkgs/development/haskell-modules/default.nix,
but they are generic, really, and should be easily accessible to everyone.
2015-11-24 12:48:03 +01:00
Eelco Dolstra
0ae8b365b3 Rename misc.nix -> deprecated.nix 2015-07-23 18:31:54 +02:00
Eelco Dolstra
ef0e4d56f5 Use builtin seq/deepSeq 2015-03-20 19:29:21 +01:00
Eelco Dolstra
5d7000df68 Automatically set nix.nrBuildUsers to at least nix.maxJobs 2015-02-16 12:02:49 +01:00
Eelco Dolstra
4a91cfd32b Add a global variable ‘inNixShell’
This is primarily useful in Nix expressions that are also intended to
be used by nix-shell.  It allows saying things like:

  buildInputs = [ ... ] ++ (if inNixShell then [ emacs ] else [ ]);

This should not be used in Nixpkgs (since the question of what
constitutes a useful nix-shell environment is very subjective).
2014-02-19 19:03:16 +01:00
Eelco Dolstra
484403bf0e Add a constant ‘nixpkgsVersion’
This makes it a bit easier to find out the current Nixpkgs version,
e.g.

  $ nix-instantiate --eval '<nixpkgs>' -A lib.nixpkgsVersion
  "14.02.35657.66f51a9"
2014-02-19 19:03:16 +01:00
Eelco Dolstra
785eaf2cea Add some primops to lib 2013-11-12 13:48:30 +01:00
Eelco Dolstra
5fef92c4a0 Move pkgs/lib/ to lib/ 2013-10-10 13:28:21 +02:00