nix/src/libcmd
John Ericson d2162e7acd Make more string values work as installables
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>
2023-05-15 09:03:38 -04:00
..
command-installable-value.cc Finish converting existing comments for internal API docs (#8146) 2023-04-07 13:55:28 +00:00
command-installable-value.hh Ensure all headers have #pragma once and are in API docs 2023-03-31 23:19:44 -04:00
command.cc nix: Support the --repair flag 2023-04-28 17:03:04 +02:00
command.hh Ensure all headers have #pragma once and are in API docs 2023-03-31 23:19:44 -04:00
common-eval-args.cc Backport SourcePath from the lazy-trees branch 2023-04-06 13:15:50 +02:00
common-eval-args.hh nix: Support the --repair flag 2023-04-28 17:03:04 +02:00
editor-for.cc Backport SourcePath from the lazy-trees branch 2023-04-06 13:15:50 +02:00
editor-for.hh Merge remote-tracking branch 'upstream/master' into source-path 2023-04-17 11:41:50 +02:00
installable-attr-path.cc Make more string values work as installables 2023-05-15 09:03:38 -04:00
installable-attr-path.hh Ensure all headers have #pragma once and are in API docs 2023-03-31 23:19:44 -04:00
installable-derived-path.cc Stratify ExtraPathInfo along Installable hierarchy 2023-03-24 12:22:40 -04:00
installable-derived-path.hh Ensure all headers have #pragma once and are in API docs 2023-03-31 23:19:44 -04:00
installable-flake.cc Make more string values work as installables 2023-05-15 09:03:38 -04:00
installable-flake.hh Fix nix print-dev-env & nix develop with drv paths 2023-05-10 11:29:45 -04:00
installable-value.cc Make more string values work as installables 2023-05-15 09:03:38 -04:00
installable-value.hh Make more string values work as installables 2023-05-15 09:03:38 -04:00
installables.cc Merge remote-tracking branch 'origin/master' into source-path 2023-04-24 13:20:36 +02:00
installables.hh Ensure all headers have #pragma once and are in API docs 2023-03-31 23:19:44 -04:00
legacy.cc Move command plugin interface to libnixcmd 2021-01-26 06:22:24 -05:00
legacy.hh Ensure all headers have #pragma once and are in API docs 2023-03-31 23:19:44 -04:00
local.mk Split out CmdRepl and editorFor 2023-02-20 09:45:29 -05:00
markdown.cc do not render relative links in help pages 2022-08-26 17:10:41 +02:00
markdown.hh Ensure all headers have #pragma once and are in API docs 2023-03-31 23:19:44 -04:00
nix-cmd.pc.in Fix building with GCC 9 2023-02-10 18:38:57 +01:00
repl.cc Merge remote-tracking branch 'origin/master' into source-path 2023-04-24 13:20:36 +02:00
repl.hh Ensure all headers have #pragma once and are in API docs 2023-03-31 23:19:44 -04:00