forked from lix-project/lix
d2162e7acd
As discussed in #7417, it would be good to make more string values work as installables. That is to say, if an installable refers to a value, and the value is a string, it used to not work at all, since #7484, it works somewhat, and this PR make it work some more. The new cases that are added for `BuiltPath` contexts: - Fixed input- or content-addressed derivation: ``` nix-repl> hello.out.outPath "/nix/store/jppfl2bp1zhx8sgs2mgifmsx6dv16mv2-hello-2.12" nix-repl> :p builtins.getContext hello.out.outPath { "/nix/store/c7jrxqjhdda93lhbkanqfs07x2bzazbm-hello-2.12.drv" = { outputs = [ "out" ]; }; } The string matches the specified single output of that derivation, so it should also be valid. - Floating content-addressed derivation: ``` nix-repl> (hello.overrideAttrs (_: { __contentAddressed = true; })).out.outPath "/1a08j26xqc0zm8agps8anxpjji410yvsx4pcgyn4bfan1ddkx2g0" nix-repl> :p builtins.getContext (hello.overrideAttrs (_: { __contentAddressed = true; })).out.outPath { "/nix/store/qc645pyf9wl37c6qvqzaqkwsm1gp48al-hello-2.12.drv" = { outputs = [ "out" ]; }; } ``` The string is not a path but a placeholder, however it also matches the context, and because it is a CA derivation we have no better option. This should also be valid. We may also want to think about richer attrset based values (also discussed in that issue and #6507), but this change "completes" our string-based building blocks, from which the others can be desugared into or at least described/document/taught in terms of. Progress towards #7417 Co-authored-by: Robert Hensing <roberth@users.noreply.github.com> |
||
---|---|---|
.. | ||
ca | ||
common | ||
config | ||
dyn-drv | ||
flakes | ||
installer | ||
lang | ||
nixos | ||
plugins | ||
add.sh | ||
bad.tar.xz | ||
bash-profile.sh | ||
big-derivation-attr.nix | ||
binary-cache-build-remote.sh | ||
binary-cache.sh | ||
brotli.sh | ||
build-delete.sh | ||
build-dry.sh | ||
build-hook-ca-fixed.nix | ||
build-hook-ca-floating.nix | ||
build-hook.nix | ||
build-remote-content-addressed-fixed.sh | ||
build-remote-content-addressed-floating.sh | ||
build-remote-input-addressed.sh | ||
build-remote-trustless-after.sh | ||
build-remote-trustless-should-fail-0.sh | ||
build-remote-trustless-should-pass-0.sh | ||
build-remote-trustless-should-pass-1.sh | ||
build-remote-trustless-should-pass-2.sh | ||
build-remote-trustless-should-pass-3.sh | ||
build-remote-trustless.sh | ||
build-remote.sh | ||
build.sh | ||
ca-shell.nix | ||
case-hack.sh | ||
case.nar | ||
check-refs.nix | ||
check-refs.sh | ||
check-reqs.nix | ||
check-reqs.sh | ||
check.nix | ||
check.sh | ||
common.sh | ||
completions.sh | ||
compression-levels.sh | ||
compute-levels.sh | ||
config.nix.in | ||
config.sh | ||
db-migration.sh | ||
dependencies.builder0.sh | ||
dependencies.nix | ||
dependencies.sh | ||
derivation-json.sh | ||
dummy | ||
dump-db.sh | ||
eval-store.sh | ||
eval.nix | ||
eval.sh | ||
experimental-features.sh | ||
export-graph.nix | ||
export-graph.sh | ||
export.sh | ||
failing.nix | ||
fetchClosure.sh | ||
fetchGit.sh | ||
fetchGitRefs.sh | ||
fetchGitSubmodules.sh | ||
fetchMercurial.sh | ||
fetchPath.sh | ||
fetchTree-file.sh | ||
fetchurl.sh | ||
filter-source.nix | ||
filter-source.sh | ||
fixed.builder1.sh | ||
fixed.builder2.sh | ||
fixed.nix | ||
fixed.sh | ||
fmt.sh | ||
fmt.simple.sh | ||
function-trace.sh | ||
gc-auto.sh | ||
gc-concurrent.builder.sh | ||
gc-concurrent.nix | ||
gc-concurrent.sh | ||
gc-concurrent2.builder.sh | ||
gc-non-blocking.sh | ||
gc-runtime.nix | ||
gc-runtime.sh | ||
gc.sh | ||
hash-check.nix | ||
hash.sh | ||
import-derivation.nix | ||
import-derivation.sh | ||
impure-derivations.nix | ||
impure-derivations.sh | ||
init.sh | ||
install-darwin.sh | ||
lang.sh | ||
legacy-ssh-store.sh | ||
linux-sandbox.sh | ||
local-store.sh | ||
local.mk | ||
logging.sh | ||
misc.sh | ||
multiple-outputs.nix | ||
multiple-outputs.sh | ||
nar-access.nix | ||
nar-access.sh | ||
nix-build-examples.nix | ||
nix-build.sh | ||
nix-channel.sh | ||
nix-copy-ssh.sh | ||
nix-daemon-untrusting.sh | ||
nix-profile.sh | ||
nix-shell.sh | ||
nix_path.sh | ||
optimise-store.sh | ||
output-normalization.sh | ||
parallel.builder.sh | ||
parallel.nix | ||
parallel.sh | ||
pass-as-file.sh | ||
path-from-hash-part.sh | ||
path.nix | ||
placeholders.sh | ||
plugins.sh | ||
post-hook.sh | ||
pure-eval.nix | ||
pure-eval.sh | ||
push-to-store-old.sh | ||
push-to-store.sh | ||
readfile-context.nix | ||
readfile-context.sh | ||
recursive.nix | ||
recursive.sh | ||
referrers.sh | ||
remote-store.sh | ||
repair.sh | ||
repl.sh | ||
restricted.nix | ||
restricted.sh | ||
search.nix | ||
search.sh | ||
secure-drv-outputs.nix | ||
secure-drv-outputs.sh | ||
selfref-gc.sh | ||
shell-hello.nix | ||
shell.nix | ||
shell.sh | ||
shell.shebang.rb | ||
shell.shebang.sh | ||
signing.sh | ||
simple-failing.nix | ||
simple.builder.sh | ||
simple.nix | ||
simple.sh | ||
ssh-relay.sh | ||
store-ping.sh | ||
structured-attrs-shell.nix | ||
structured-attrs.nix | ||
structured-attrs.sh | ||
substitute-with-invalid-ca.sh | ||
suggestions.sh | ||
tarball.sh | ||
test-infra.sh | ||
timeout.nix | ||
timeout.sh | ||
toString-path.sh | ||
undefined-variable.nix | ||
user-envs-migration.sh | ||
user-envs.builder.sh | ||
user-envs.nix | ||
user-envs.sh | ||
why-depends.sh | ||
zstd.sh |