lix/src/libstore
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
..
build Add support for impure derivations 2022-03-31 13:43:20 +02:00
builtins buildProfile(): Ignore manifest.{nix,json} 2022-03-22 10:48:02 +01:00
tests
binary-cache-store.cc Remove std::string alias (for real this time) 2022-02-25 16:13:02 +01:00
binary-cache-store.hh Factor out a LogStore interface 2022-03-11 13:32:16 +00:00
build-result.hh BuildResult: Remove unused drvPath field 2022-03-09 20:31:50 +01:00
builtins.hh
ca-specific-schema.sql
content-address.cc
content-address.hh
crypto.cc
crypto.hh
daemon.cc Generalize DerivationType in preparation for impure derivations 2022-03-18 14:59:56 +00:00
daemon.hh
derivations.cc Add support for impure derivations 2022-03-31 13:43:20 +02:00
derivations.hh Add support for impure derivations 2022-03-31 13:43:20 +02:00
derived-path.cc Clean up DerivationOutput, and headers 2022-03-17 22:35:53 +00:00
derived-path.hh nix profile install: Don't use queryDerivationOutputMap() 2022-03-28 14:23:39 +02:00
dummy-store.cc Remove std::string alias (for real this time) 2022-02-25 16:13:02 +01:00
export-import.cc
filetransfer.cc Fix segfault in headerCallback() 2022-03-03 11:11:16 +01:00
filetransfer.hh Remove std::string alias (for real this time) 2022-02-25 16:13:02 +01:00
fs-accessor.hh
gc-store.hh Deduplicate the Store downcasting with a template 2022-03-11 13:32:33 +00:00
gc.cc gc: don't visit implicit referrers on garbage collection 2022-03-17 18:47:29 +00:00
globals.cc Remove std::string alias (for real this time) 2022-02-25 16:13:02 +01:00
globals.hh Move some stuff from Settings to a new FetchSettings. 2022-03-01 01:39:25 +00:00
http-binary-cache-store.cc
legacy-ssh-store.cc BuildResult: Use DerivedPath 2022-03-09 12:25:35 +01:00
local-binary-cache-store.cc
local-fs-store.cc Remove std::string alias (for real this time) 2022-02-25 16:13:02 +01:00
local-fs-store.hh Factor out a LogStore interface 2022-03-11 13:32:16 +00:00
local-store.cc Add support for impure derivations 2022-03-31 13:43:20 +02:00
local-store.hh Factor out a GcStore interface 2022-03-03 19:01:25 +00:00
local.mk
lock.cc
lock.hh Remove std::string alias (for real this time) 2022-02-25 16:13:02 +01:00
log-store.hh Deduplicate the Store downcasting with a template 2022-03-11 13:32:33 +00:00
machines.cc Remove std::string alias (for real this time) 2022-02-25 16:13:02 +01:00
machines.hh
make-content-addressed.cc Add a test for fetchClosure and 'nix store make-content-addressed' 2022-03-24 21:33:33 +01:00
make-content-addressed.hh fetchClosure: Allow a path to be rewritten to CA on the fly 2022-03-24 21:33:33 +01:00
misc.cc Clean up DerivationOutput, and headers 2022-03-17 22:35:53 +00:00
names.cc
names.hh
nar-accessor.cc Remove std::string alias (for real this time) 2022-02-25 16:13:02 +01:00
nar-accessor.hh
nar-info-disk-cache.cc
nar-info-disk-cache.hh
nar-info.cc Remove std::string alias (for real this time) 2022-02-25 16:13:02 +01:00
nar-info.hh
nix-store.pc.in
optimise-store.cc Remove std::string alias (for real this time) 2022-02-25 16:13:02 +01:00
parsed-derivations.cc Generalize DerivationType in preparation for impure derivations 2022-03-18 14:59:56 +00:00
parsed-derivations.hh Clean up DerivationOutput, and headers 2022-03-17 22:35:53 +00:00
path-info.cc
path-info.hh
path-with-outputs.cc Factor out a GcStore interface 2022-03-03 19:01:25 +00:00
path-with-outputs.hh
path.cc Add support for impure derivations 2022-03-31 13:43:20 +02:00
path.hh Add support for impure derivations 2022-03-31 13:43:20 +02:00
pathlocks.cc Remove std::string alias (for real this time) 2022-02-25 16:13:02 +01:00
pathlocks.hh Remove std::string alias (for real this time) 2022-02-25 16:13:02 +01:00
profiles.cc Remove std::string alias (for real this time) 2022-02-25 16:13:02 +01:00
profiles.hh Remove std::string alias (for real this time) 2022-02-25 16:13:02 +01:00
realisation.cc
realisation.hh
references.cc Remove std::string alias (for real this time) 2022-02-25 16:13:02 +01:00
references.hh
remote-fs-accessor.cc
remote-fs-accessor.hh
remote-store.cc BuildResult: Use DerivedPath 2022-03-09 12:25:35 +01:00
remote-store.hh Factor out a LogStore interface 2022-03-11 13:32:16 +00:00
repair-flag.hh Clean up DerivationOutput, and headers 2022-03-17 22:35:53 +00:00
s3-binary-cache-store.cc Remove std::string alias (for real this time) 2022-02-25 16:13:02 +01:00
s3-binary-cache-store.hh
s3.hh
sandbox-defaults.sb
sandbox-minimal.sb
sandbox-network.sb
schema.sql
serve-protocol.hh
sqlite.cc Remove std::string alias (for real this time) 2022-02-25 16:13:02 +01:00
sqlite.hh
ssh-store.cc Factor out a LogStore interface 2022-03-11 13:32:16 +00:00
ssh.cc Remove std::string alias (for real this time) 2022-02-25 16:13:02 +01:00
ssh.hh
store-api.cc Clean up DerivationOutput, and headers 2022-03-17 22:35:53 +00:00
store-api.hh Clean up DerivationOutput, and headers 2022-03-17 22:35:53 +00:00
store-cast.hh Deduplicate the Store downcasting with a template 2022-03-11 13:32:33 +00:00
uds-remote-store.cc
uds-remote-store.hh
worker-protocol.hh Add Store::buildPathsWithResults() 2022-03-08 19:56:34 +01:00