nix-super/src/libexpr
Eelco Dolstra 5cd72598fe Add support for impure derivations
Impure derivations are derivations that can produce a different result
every time they're built. Example:

  stdenv.mkDerivation {
    name = "impure";
    __impure = true; # marks this derivation as impure
    outputHashAlgo = "sha256";
    outputHashMode = "recursive";
    buildCommand = "date > $out";
  };

Some important characteristics:

* This requires the 'impure-derivations' experimental feature.

* Impure derivations are not "cached". Thus, running "nix-build" on
  the example above multiple times will cause a rebuild every time.

* They are implemented similar to CA derivations, i.e. the output is
  moved to a content-addressed path in the store. The difference is
  that we don't register a realisation in the Nix database.

* Pure derivations are not allowed to depend on impure derivations. In
  the future fixed-output derivations will be allowed to depend on
  impure derivations, thus forming an "impurity barrier" in the
  dependency graph.

* When sandboxing is enabled, impure derivations can access the
  network in the same way as fixed-output derivations. In relaxed
  sandboxing mode, they can access the local filesystem.
2022-03-31 13:43:20 +02:00
..
flake Document getFlake 2022-03-25 14:19:55 +01:00
primops Only provide builtin.{getFlake,fetchClosure} is the corresponding experimental feature is enabled 2022-03-25 14:04:18 +01:00
attr-path.cc Implement a suggestions mechanism 2022-03-07 10:09:09 +01:00
attr-path.hh Remove std::string alias (for real this time) 2022-02-25 16:13:02 +01:00
attr-set.cc Remove EvalState::mkAttrs() 2022-01-04 20:29:17 +01:00
attr-set.hh Remove std::string alias (for real this time) 2022-02-25 16:13:02 +01:00
common-eval-args.cc Remove std::string alias (for real this time) 2022-02-25 16:13:02 +01:00
common-eval-args.hh Remove std::string alias (for real this time) 2022-02-25 16:13:02 +01:00
eval-cache.cc Decode string context straight to using StorePaths 2022-03-18 15:36:11 +00:00
eval-cache.hh Create some type aliases for string Contexts 2022-03-11 22:30:10 +00:00
eval-inline.hh add HAVE_BOEHMGC guards to batched allocation functions 2022-03-09 00:18:50 +01:00
eval.cc Add support for impure derivations 2022-03-31 13:43:20 +02:00
eval.hh Add support for impure derivations 2022-03-31 13:43:20 +02:00
fetchurl.nix Move <nix/fetchurl.nix> into the nix binary 2020-12-22 14:43:20 +01:00
function-trace.cc Revert the enum struct change 2020-06-18 22:11:26 +00:00
function-trace.hh Hide FunctionCallTrace constructor/destructor 2020-01-05 16:21:34 +01:00
get-drvs.cc Clean up DerivationOutput, and headers 2022-03-17 22:35:53 +00:00
get-drvs.hh nix-env: always print output names in JSON and XML 2022-03-16 21:26:19 +01:00
imported-drv-to-derivation.nix Move some corepkgs into the nix binary 2020-03-11 16:57:48 +01:00
json-to-value.cc return string_views from forceString* 2022-01-27 17:15:43 +01:00
json-to-value.hh return string_views from forceString* 2022-01-27 17:15:43 +01:00
lexer.l lexer: add error location to lexer errors 2022-03-24 08:16:14 +00:00
local.mk Merge pull request #5175 from Pamplemousse/make 2021-08-30 12:44:29 +02:00
nix-expr.pc.in pkg-config files: Use c++17 2019-03-14 14:11:12 +01:00
nixexpr.cc Remove std::string alias (for real this time) 2022-02-25 16:13:02 +01:00
nixexpr.hh make Pos smaller 2022-03-08 23:30:18 +01:00
parser.y Remove std::string alias (for real this time) 2022-02-25 16:13:02 +01:00
primops.cc Add support for impure derivations 2022-03-31 13:43:20 +02:00
primops.hh Only provide builtin.{getFlake,fetchClosure} is the corresponding experimental feature is enabled 2022-03-25 14:04:18 +01:00
symbol-table.hh Remove std::string alias 2022-02-21 16:37:25 +01:00
value-to-json.cc Support range-based for loop over list values 2021-11-25 16:31:39 +01:00
value-to-json.hh toJSON: report error position for fancier output 2021-10-25 21:17:52 +00:00
value-to-xml.cc Remove std::string alias (for real this time) 2022-02-25 16:13:02 +01:00
value-to-xml.hh toXML: display errors position 2021-11-13 20:33:34 -05:00
value.hh Don't hide repeated values while generating manifest.nix 2022-03-22 13:18:56 +01:00