aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2022-03-26nix eval: Add option `read-only`Erik Arvstedt
2022-03-26Minor comment fixErik Arvstedt
2022-03-18Merge pull request #6284 from obsidiansystems/generlized-derivation-typeThéophane Hufschmitt
Generalize DerivationType in preparation for impure derivations
2022-03-18Generalize `DerivationType` in preparation for impure derivationsJohn Ericson
2022-03-18Avoid some pointless copying of drvsJohn Ericson
2022-03-18Use Deferred when building an input-addressed drvJohn Ericson
Easier than using dummy path with input addressed.
2022-03-18Merge pull request #6283 from obsidiansystems/outputs-less-nestingThéophane Hufschmitt
Clean up `DerivationOutput`, and headers
2022-03-17Clean up `DerivationOutput`, and headersJohn Ericson
1. `DerivationOutput` now as the `std::variant` as a base class. And the variants are given hierarchical names under `DerivationOutput`. In 8e0d0689be797f9e42f9b43b06f50c1af7f20b4a @matthewbauer and I didn't know a better idiom, and so we made it a field. But this sort of "newtype" is anoying for literals downstream. Since then we leaned the base class, inherit the constructors trick, e.g. used in `DerivedPath`. Switching to use that makes this more ergonomic, and consistent. 2. `store-api.hh` and `derivations.hh` are now independent. In bcde5456cc3295061a0726881c3e441444dd6680 I swapped the dependency, but I now know it is better to just keep on using incomplete types as much as possible for faster compilation and good separation of concerns.
2022-03-17Merge pull request #6277 from thufschmitt/ca/nix-build-dry-runEelco Dolstra
Fix `nix build --dry-run` with CA derivations
2022-03-17Merge branch 'avoid-quadratic-gc' of https://github.com/trofi/nixEelco Dolstra
2022-03-17gc: don't visit implicit referrers on garbage collectionSergei Trofimovich
Before the change garbage collector was not considering `.drv` and outputs as alive even if configuration says otherwise. As a result `nix store gc --dry-run` could visit (and parse) `.drv` files multiple times (worst case it's quadratic). It happens because `alive` set was populating only runtime closure without regard for actual configuration. The change fixes it. Benchmark: my system has about 139MB, 40K `.drv` files. Performance before the change: $ time nix store gc --dry-run real 4m22,148s Performance after the change: $ time nix store gc --dry-run real 0m14,178s
2022-03-17Merge pull request #6270 from Artturin/stdinevalThéophane Hufschmitt
nix: allow using --file - to read from stdin
2022-03-17Fix `nix build --dry-run` with CA derivationsThéophane Hufschmitt
Don’t try and assume that we know the output paths when we’ve just built with `--dry-run`. Instead make `--dry-run` follow a different code path that won’t assume the knowledge of the output paths at all. Fix #6275
2022-03-17Merge pull request #6242 from ncfavier/print-output-namesThéophane Hufschmitt
nix-env: always print output names in JSON and XML
2022-03-16Add some tests for `nix-env -q --json`Théophane Hufschmitt
2022-03-16nix-env: print a final newline after JSONNaïm Favier
2022-03-16nix-env: always print output names in JSON and XMLNaïm Favier
The current `--out-path` flag has two disadvantages when one is only concerned with querying the names of outputs: - it requires evaluating every output's `outPath`, which takes significantly more resources and runs into more failures - it destroys the information of the order of outputs so we can't tell which one is the main output This patch makes the output names always present (replacing paths with `null` in JSON if `--out-path` isn't given), and adds an `outputName` field.
2022-03-16Merge pull request #6267 from nomeata/patch-1Théophane Hufschmitt
distributed-builds.md: fixing typo of the most minor sort
2022-03-16add tests for nix eval and nix-instantiateArtturin
2022-03-16nix: allow using --file - to read from stdinArtturin
2022-03-16distributed-builds.md: fixing typo of the most minor sortJoachim Breitner
2022-03-16Merge pull request #6245 from trofi/fix-nix-store-gc-limit-auto-optimise-storeEelco Dolstra
nix store gc: account for auto-optimised store
2022-03-16Merge pull request #6264 from thufschmitt/fix-32bits-testsEelco Dolstra
Fix the tests on 32bits machines
2022-03-16Fix the date in the comment of fetchPath’s testThéophane Hufschmitt
Co-authored-by: pennae <82953136+pennae@users.noreply.github.com>
2022-03-15Merge pull request #6229 from obsidiansystems/refactor-hash-moduloThéophane Hufschmitt
Overhaul derivation hash modulo somewhat
2022-03-15Fix the tests on 32bits machinesregnat
year 2222 is too much for a 32 bit timestamp. So replace it by something smaller
2022-03-15Merge pull request #6119 from Ma27/path-mtimeThéophane Hufschmitt
libfetchers/path: set `lastModified` to path's mtime
2022-03-15Implement simple test for `path`-fetcher setting a correct `lastModifiedDate`Maximilian Bosch
Co-authored-by: Théophane Hufschmitt <7226587+thufschmitt@users.noreply.github.com>
2022-03-15libfetchers: remove obsolete filesystem #includeMaximilian Bosch
2022-03-15libfetchers/path: set `lastModified` to path's mtimeMaximilian Bosch
When importing e.g. a local `nixpkgs` in a flake to test a change like { inputs.nixpkgs.url = path:/home/ma27/Projects/nixpkgs; outputs = /* ... */ } then the input is missing a `lastModified`-field that's e.g. used in `nixpkgs.lib.nixosSystem`. Due to the missing `lastMoified`-field, the mtime is set to 19700101: result -> /nix/store/b7dg1lmmsill2rsgyv2w7b6cnmixkvc1-nixos-system-nixos-22.05.19700101.dirty With this change, the `path`-fetcher now sets a `lastModified` attribute to the `mtime` just like it's the case in the `tarball`-fetcher already. When building NixOS systems with `nixpkgs` being a `path`-input and this patch, the output-path now looks like this: result -> /nix/store/ld2qf9c1s98dxmiwcaq5vn9k5ylzrm1s-nixos-system-nixos-22.05.20220217.dirty
2022-03-14Merge pull request #6244 from Artturin/nixenvbettermessageEelco Dolstra
nix-env: Add a suggestion for when there's a name collision in channels
2022-03-14Merge pull request #6220 from obsidiansystems/log-storeThéophane Hufschmitt
Factor out a `LogStore` interface
2022-03-14Merge pull request #6248 from thkoch2001/patch-1Eelco Dolstra
Add documentation= entry to systemd unit file
2022-03-13Add documentation= entry to systemd unit filethkoch2001
Closes: #6246
2022-03-13nix store gc: account for auto-optimised storeSergei Trofimovich
Before the change on a system with `auto-optimise-store = true`: $ nix store gc --verbose --max 1 deleted all the paths instead of one path (we requested 1 byte limit). It happens because every file in `auto-optimise-store = true` has at least 2 links: file itself and a link in /nix/store/.links/ directory. The change conservatively assumes that any file that has one (as before) or two links (assume auto-potimise mode) will free space. Co-authored-by: Sandro <sandro.jaeckel@gmail.com>
2022-03-13nix-env: Add a suggestion for when there's a name collision in channelsArtturin
help new users find a solution to their problem ./result/bin/nix-env -qa hello warning: name collision in input Nix expressions, skipping '/home/artturin/.nix-defexpr/channels_root/master' suggestion: remove 'master' from either the root channels or the user channels hello-2.12 hello-2.12
2022-03-11Reduce variants for derivation hash moduloJohn Ericson
This changes was taken from dynamic derivation (#4628). It` somewhat undoes the refactors I first did for floating CA derivations, as the benefit of hindsight + requirements of dynamic derivations made me reconsider some things. They aren't to consequential, but I figured they might be good to land first, before the more profound changes @thufschmitt has in the works.
2022-03-11Merge pull request #6230 from obsidiansystems/nix-build-derived-pathEelco Dolstra
Desugar `StorePathWithOutputs` in nix-build implementation
2022-03-11Desugar `StorePathWithOutputs` in nix-build implementationJohn Ericson
`DerivedPath` has replaced `StorePathWithOutputs` internally, so shrinking the usage of `StorePathWithOutputs` to just the boundary is good.
2022-03-11Deduplicate the Store downcasting with a templateJohn Ericson
2022-03-11Factor out a `LogStore` interfaceJohn Ericson
Continue progress on #5729. Just as I hoped, this uncovered an issue: the daemon protocol is missing a way to query build logs. This doesn't effect `unix://`, but does effect `ssh://`. A FIXME is left for this, so we come back to it later.
2022-03-11`GcStore::resolve` should print the URIJohn Ericson
2022-03-11Rename `requireGcStore` to `GcStore::require`John Ericson
I should have done this to begin with. This will be nicer once more Store sub-interfaces exist too, to illustrate the pattern.
2022-03-11Merge remote-tracking branch 'origin/eval-suggestions'Eelco Dolstra
2022-03-11Merge pull request #5865 from pennae/memory-friendlinessEelco Dolstra
be more memory friendly
2022-03-11StyleEelco Dolstra
2022-03-11Merge pull request #5758 from mschwaig/fix-git-workspace-dirty-detectionThéophane Hufschmitt
git fetcher: fix detection of dirty git workspaces
2022-03-09BuildResult: Remove unused drvPath fieldEelco Dolstra
2022-03-09Merge pull request #6221 from NixOS/build-paths-with-resultsEelco Dolstra
Add Store::buildPathsWithResults()
2022-03-09BuildResult: Use DerivedPathEelco Dolstra