lix/src/nix
Théophane Hufschmitt 390269ed87 Simplify the handling of the hash modulo
Rather than having four different but very similar types of hashes, make
only one, with a tag indicating whether it corresponds to a regular of
deferred derivation.

This implies a slight logical change: The original Nix+multiple-outputs
model assumed only one hash-modulo per derivation. Adding
multiple-outputs CA derivations changed this as these have one
hash-modulo per output. This change is now treating each derivation as
having one hash modulo per output.
This obviously means that we internally loose the guaranty that
all the outputs of input-addressed derivations have the same hash
modulo. But it turns out that it doesn’t matter because there’s nothing
in the code taking advantage of that fact (and it probably shouldn’t
anyways).

The upside is that it is now much easier to work with these hashes, and
we can get rid of a lot of useless `std::visit{ overloaded`.

Co-authored-by: John Ericson <John.Ericson@Obsidian.Systems>
2022-03-29 18:17:35 +02:00
..
realisation fix spelling mistakes reported by Debian's lintian tool 2022-01-30 10:51:39 +02:00
add-file.md Split 'nix store add-to-store' into 'add-path' and 'add-file' 2020-12-04 00:59:24 +01:00
add-path.md Split 'nix store add-to-store' into 'add-path' and 'add-file' 2020-12-04 00:59:24 +01:00
add-to-store.cc Get rid of std::shared_ptr<std::string> and ref<std::string> 2022-01-18 11:12:30 +01:00
app.cc Merge pull request #6237 from obsidiansystems/store-path-string-context 2022-03-22 10:29:46 +01:00
build.cc Fix nix build --dry-run with CA derivations 2022-03-17 11:55:19 +01:00
build.md Fix some typos 2021-03-26 16:14:38 +01:00
bundle.cc Add EvalState::coerceToStorePath() helper 2022-03-02 23:58:58 +01:00
bundle.md Update docs 2022-02-22 14:32:56 +01:00
cat.cc Get rid of std::shared_ptr<std::string> and ref<std::string> 2022-01-18 11:12:30 +01:00
copy.cc Add command 'nix store copy-log' 2022-01-18 14:08:49 +01:00
copy.md Add 'nix copy' manpage 2020-12-21 13:32:27 +01:00
daemon.cc Remove std::string alias (for real this time) 2022-02-25 16:13:02 +01:00
daemon.md Add 'nix daemon' command 2021-01-14 00:05:04 +01:00
describe-stores.cc Remove static variable name clashes 2020-10-06 13:49:20 +02:00
develop.cc Simplify the handling of the hash modulo 2022-03-29 18:17:35 +02:00
develop.md Update docs 2022-02-22 14:32:56 +01:00
diff-closures.cc Move installables-related operations 2022-03-02 19:19:51 +01:00
diff-closures.md Add 'nix store diff-closures' manpage 2020-12-21 13:32:29 +01:00
doctor.cc Split out local-fs-store.hh 2020-10-09 20:18:08 +00:00
dump-path.cc Add 'nix store' NAR-related manpages 2020-12-21 13:32:28 +01:00
edit.cc Rename findDerivationFilename -> findPackageFilename 2021-07-19 18:10:10 +02:00
edit.md nix edit: support kakoune 2022-03-22 23:18:02 +09:00
eval.cc Merge branch 'issue-3505' of https://github.com/kamadorueda/nix 2022-02-04 00:33:13 +01:00
eval.md Add 'nix eval' manpage 2020-12-21 13:32:28 +01:00
flake-archive.md Add 'nix flake' manpages 2020-12-23 18:26:40 +01:00
flake-check.md nix flake check: Fix markdown 2021-11-24 13:53:09 +01:00
flake-clone.md Add 'nix flake' manpages 2020-12-23 18:26:40 +01:00
flake-init.md Update docs 2022-02-22 14:32:56 +01:00
flake-lock.md nix flake update: Recreate the lock file 2021-02-26 14:55:54 +01:00
flake-metadata.md Merge 'nix flake {info,list-inputs}' into 'nix flake metadata' 2021-03-16 17:19:04 +01:00
flake-new.md Add 'nix flake' manpages 2020-12-23 18:26:40 +01:00
flake-prefetch.md nix store prefetch-tarball -> nix flake prefetch 2021-01-11 12:36:39 +01:00
flake-show.md Update docs 2022-02-22 14:32:56 +01:00
flake-update.md nix flake update: Recreate the lock file 2021-02-26 14:55:54 +01:00
flake.cc Style 2022-03-07 20:07:43 +01:00
flake.md Merge pull request #6089 from edolstra/dot-default 2022-02-24 21:16:58 +01:00
get-env.sh Merge branch 'master' into structured-attrs-shell 2021-07-12 15:49:39 +02:00
hash.cc Remove std::string alias (for real this time) 2022-02-25 16:13:02 +01:00
help.md Add 'nix help' manpage 2020-12-21 13:32:29 +01:00
key-convert-secret-to-public.md Add commands for generating secret/public keys 2021-01-06 17:49:31 +01:00
key-generate-secret.md Rename 'nix store sign-paths' to 'nix store sign' 2021-01-13 23:32:37 +01:00
local.mk nix --help: Display help using lowdown instead of man 2021-09-13 14:45:21 +02:00
log.cc Factor out a LogStore interface 2022-03-11 13:32:16 +00:00
log.md Tweak 2020-12-21 13:32:28 +01:00
ls.cc Get rid of std::shared_ptr<std::string> and ref<std::string> 2022-01-18 11:12:30 +01:00
main.cc Only provide builtin.{getFlake,fetchClosure} is the corresponding experimental feature is enabled 2022-03-25 14:04:18 +01:00
make-content-addressed.cc nix store make-content-addressed: Support --from / --to 2022-03-24 21:33:33 +01:00
make-content-addressed.md Rename 'nix store make-content-addressable' to 'nix store make-content-addressed' 2022-03-24 21:33:33 +01:00
nar-cat.md Add 'nix nar' manpages 2020-12-21 13:32:28 +01:00
nar-dump-path.md Add 'nix nar' manpages 2020-12-21 13:32:28 +01:00
nar-ls.md Add 'nix nar' manpages 2020-12-21 13:32:28 +01:00
nar.cc Make '--help' do the same as 'help' (i.e. show a manpage) 2021-01-25 14:38:15 +01:00
nar.md Add 'nix nar' manpages 2020-12-21 13:32:28 +01:00
nix.md Update docs 2022-02-22 14:32:56 +01:00
optimise-store.cc Add 'nix store optimise' manpage 2020-12-21 13:32:28 +01:00
optimise-store.md Add 'nix store optimise' manpage 2020-12-21 13:32:28 +01:00
path-info.cc path-info: use full store paths when we have them 2022-02-19 00:32:05 +01:00
path-info.md Fix markdown error 2021-09-13 14:44:53 +02:00
ping-store.cc nix store ping: Report Nix daemon version 2022-01-25 21:15:58 +01:00
ping-store.md Tweak 2021-01-17 19:49:28 +01:00
prefetch.cc Remove std::string alias (for real this time) 2022-02-25 16:13:02 +01:00
print-dev-env.md nix print-dev-env: Add --json flag 2021-07-09 12:10:48 +02:00
profile-diff-closures.md Add 'nix profile' manpage 2020-12-21 13:32:29 +01:00
profile-history.md nix profile history: Show profile date 2021-09-14 20:47:33 +02:00
profile-install.md Add 'nix profile' manpage 2020-12-21 13:32:29 +01:00
profile-list.md Update docs 2022-02-22 14:32:56 +01:00
profile-remove.md man: fix formatting of nix3-profile-remove 2021-06-28 16:27:03 +02:00
profile-rollback.md Generations -> profile versions 2021-09-14 19:57:45 +02:00
profile-upgrade.md fix doc: nix profile info -> nix profile list 2021-05-24 12:36:08 +02:00
profile-wipe-history.md Add 'nix profile wipe-history' command 2021-09-14 20:35:41 +02:00
profile.cc nix profile install: Don't use queryDerivationOutputMap() 2022-03-28 14:23:39 +02:00
profile.md Fix flake profile use of originalUrl vs. originalUri 2022-03-24 12:28:38 +01:00
realisation.cc Make experimental-features a proper type 2021-10-26 07:02:31 +02:00
registry-add.md nix registry: add --registry flag 2021-06-30 22:13:32 +03:00
registry-list.md Add 'nix registry' manpages 2020-12-21 13:32:27 +01:00
registry-pin.md Style tweaks 2021-07-07 10:02:55 +02:00
registry-remove.md nix registry: add --registry flag 2021-06-30 22:13:32 +03:00
registry.cc nix registry: Mark experimental 2021-11-12 03:18:31 -05:00
registry.md Fix typo 2021-11-27 23:29:48 +03:00
repl.cc nix: allow whitespace characters before command in repl 2022-03-24 21:33:29 -04:00
repl.md nix repl: add :log 2021-12-06 16:52:50 +03:00
run.cc nix {run,shell}: Print a better error message if the store is not local 2022-03-28 14:58:38 +02:00
run.hh nix develop: Support chroot stores 2021-07-27 14:24:03 +02:00
run.md Update docs 2022-02-22 14:32:56 +01:00
search.cc hiliteMatches(): Style fixes, pass more stuff by reference 2022-01-24 14:47:34 +01:00
search.md Add 'nix search' manpage 2020-12-21 13:32:27 +01:00
shell.md Fix typo in src/nix/shell.md 2021-12-15 23:40:37 -08:00
show-config.cc Forward the whole Nix config to the post-build-hook 2021-07-15 18:41:56 +02:00
show-derivation.cc Clean up DerivationOutput, and headers 2022-03-17 22:35:53 +00:00
show-derivation.md Add 'nix show-derivation' manpage 2020-12-21 13:32:29 +01:00
sigs.cc nix key: Fix error message and don't require flakes 2021-11-11 21:31:26 -05:00
store-cat.md Add 'nix store' NAR-related manpages 2020-12-21 13:32:28 +01:00
store-copy-log.cc Deduplicate the Store downcasting with a template 2022-03-11 13:32:33 +00:00
store-copy-log.md Add examples 2022-01-18 17:37:04 +01:00
store-delete.cc Deduplicate the Store downcasting with a template 2022-03-11 13:32:33 +00:00
store-delete.md Add 'nix store delete' command 2021-01-11 19:46:59 +01:00
store-dump-path.md Add 'nix store' NAR-related manpages 2020-12-21 13:32:28 +01:00
store-gc.cc Deduplicate the Store downcasting with a template 2022-03-11 13:32:33 +00:00
store-gc.md Add 'nix store gc' command 2021-01-10 23:29:14 +01:00
store-ls.md Add 'nix store' NAR-related manpages 2020-12-21 13:32:28 +01:00
store-prefetch-file.md Fix some typos 2021-03-26 16:14:38 +01:00
store-repair.cc run(): Move 2021-09-27 11:12:06 +02:00
store-repair.md Add 'nix store repair' command 2021-01-13 23:27:39 +01:00
store.cc Make '--help' do the same as 'help' (i.e. show a manpage) 2021-01-25 14:38:15 +01:00
upgrade-nix.cc Get rid of std::shared_ptr<std::string> and ref<std::string> 2022-01-18 11:12:30 +01:00
upgrade-nix.md Add 'nix upgrade-nix' manpage 2020-12-21 13:32:28 +01:00
verify.cc run(): Move 2021-09-27 11:12:06 +02:00
verify.md Add 'nix store verify' manpage 2020-12-21 13:32:28 +01:00
why-depends.cc Move installables-related operations 2022-03-02 19:19:51 +01:00
why-depends.md Add 'nix why-depends' manpage 2020-12-21 13:32:28 +01:00