tvl-depot/nix
sterni 23dd8067c5 feat(nix/sparseTree): get a directory with only selected children
Given a path (which points to a directory and a list of paths which
are below that path, build a “sparse” version of that directory, so
that it only contains the listed paths (and their children):

    $ nix-build -E 'with import ./. {}; nix.sparseTree ./. [
        ./default.nix
        ./nix/readTree
        ./nix/buildLisp
        ./third_party/nixpkgs
        ./third_party/overlays
      ]'
    /nix/store/0ynj0gc613fs6mfp9snqcvdj5gfxbdzg-sparse-depot
    $ lr -t 'type == d' result/
    result/
    result/nix
    result/nix/buildLisp
    result/nix/buildLisp/example
    result/nix/readTree
    result/nix/readTree/tests
    […]
    result/third_party
    result/third_party/nixpkgs
    result/third_party/overlays
    result/third_party/overlays/haskell
    result/third_party/overlays/haskell/patches
    result/third_party/overlays/patches

This is useful if a derivation depends on depot.path (e. g. if it wants
to import depot at runtime). Usually this means that on every depot
commit (or even worse, every change of .git on a local machine), this
derivation has to be rebuild. By using sparseTree you can instead depend
on a stripped down version of depot which only contains the bits you
actually depend on, avoiding unrelated rebuilds.

Change-Id: I127b108c8b177c657fb46786d0a6256516fd2c52
Reviewed-on: https://cl.tvl.fyi/c/depot/+/3503
Tested-by: BuildkiteCI
Reviewed-by: tazjin <mail@tazj.in>
2021-09-09 15:57:58 +00:00
..
binify refactor(nix): use our own writeScript(Bin) 2020-06-30 00:19:27 +00:00
bufCheck refactor(bufCheck): Assume bufCheck is run in depot checkout 2021-08-29 12:41:07 +00:00
buildGo feat(nix/buildGo): add the import position to errmsg 2021-04-23 16:35:57 +00:00
buildLisp docs(nix/buildLisp): document NIX_BUILDLISP_LISP_ARGS 2021-08-26 11:26:52 +00:00
buildManPages refactor(sterni): use pkgs over third_party to import from nixpkgs 2021-04-10 11:40:18 +00:00
drvSeqL feat(nix/drvSeqL): make build of a drv depend on unrelated drvs 2021-02-14 12:40:06 +00:00
emptyDerivation feat(nix/emptyDerivation) add emptyDerivation 2020-06-28 17:59:46 +00:00
escapeExecline chore(OWNERS): move Profpatsch up to nix/ 2021-01-01 19:03:15 +00:00
getBins chore(OWNERS): move Profpatsch up to nix/ 2021-01-01 19:03:15 +00:00
mergePatch feat(nix): add mergePatch 2021-01-01 19:03:02 +00:00
netstring feat(nix): add basic netstring nix generation functions 2021-04-24 09:54:34 +00:00
readTree refactor(nix/readTree): use throw instead of assertMsg 2021-09-09 12:52:16 +00:00
runExecline feat(users/Profpatsch/blog): implement blog engine lol 2021-04-30 21:47:42 +00:00
runTestsuite fix(nix/runTestsuite): use s6-portable-utils 2021-03-26 11:01:20 +00:00
sparseTree feat(nix/sparseTree): get a directory with only selected children 2021-09-09 15:57:58 +00:00
tag feat(nix): add nix.tag, a way of discriminating via tagged unions 2021-01-30 15:41:08 +00:00
tailscale refactor: Replace some uses of builtins.toFile with pkgs.writeText 2021-03-25 19:14:36 +00:00
utils refactor(users/grfn/gws.fyi): implement isDirectory in pure nix 2021-08-24 12:13:06 +00:00
writeElispBin chore(writeElispBin): Move from //overrides to //nix 2020-12-01 12:55:59 +00:00
writeExecline chore(OWNERS): move Profpatsch up to nix/ 2021-01-01 19:03:15 +00:00
writers fix(nix/writers/rust): remove args override 2021-05-17 23:00:57 +00:00
writeScript refactor(nix): use our own writeScript(Bin) 2020-06-30 00:19:27 +00:00
writeScriptBin refactor(nix): use our own writeScript(Bin) 2020-06-30 00:19:27 +00:00
yants fix(nix/yants): make (typedef …).checkType return a result set 2021-02-19 16:14:55 +00:00
OWNERS chore(OWNERS): move Profpatsch up to nix/ 2021-01-01 19:03:15 +00:00