Skip to content
This repository has been archived by the owner on Oct 15, 2022. It is now read-only.

A way to exclude directory from watch? #6

Open
danbst opened this issue Mar 29, 2019 · 15 comments
Open

A way to exclude directory from watch? #6

danbst opened this issue Mar 29, 2019 · 15 comments
Assignees
Labels
documentation Doc improvements needed P2 major: an upcoming release user-facing Improvement that increases user experience
Projects

Comments

@danbst
Copy link

danbst commented Mar 29, 2019

I have a little postgresql state dir inside my project's dot files, and when PG is running, it does changes some files regularly

[2019-03-29T06:46:35Z DEBUG lorri::watch] Event path ("/home/danbst/dev/jobs/_build/pgdata/base/13393/2601") parent ("/home/danbst/dev/jobs/_build/pgdata/base/13393") matches watched path
[2019-03-29T06:46:35Z DEBUG lorri::watch] Watch Event: RawEvent {
    path: Some(
        "/home/danbst/dev/jobs/_build/pgdata/base/13393/2601"
    ),
    op: Ok(
        CLOSE_WRITE
    ),
    cookie: None
}
[2019-03-29T06:46:35Z DEBUG lorri::watch] watch event: (
    Ok(
        CLOSE_WRITE
    ),
    Some(
        "/home/danbst/dev/jobs/_build/pgdata/base/13393/2601"
    )
)
[2019-03-29T06:46:35Z DEBUG lorri::watch] Received event: RawEvent {
    path: Some(
        "/home/danbst/dev/jobs/_build/pgdata/base/13393/2601"
    ),
    op: Ok(
        CLOSE_WRITE
    ),
    cookie: None
}
[2019-03-29T06:46:35Z INFO  lorri::watch] Found 28 events
Started
[2019-03-29T06:46:36Z DEBUG lorri::build_loop] original paths: 1235
[2019-03-29T06:46:36Z DEBUG lorri::build_loop]   -> reduced to: 4
[2019-03-29T06:46:36Z DEBUG lorri::build_loop] named drvs: {
    "shell_gc_root": "/nix/store/dhziglbpkwx0ssmq21lckcwc394wb623-lorri-keep-env-hack-shell.drv",
    "shell": "/nix/store/4w3nl3h4x0gl3q6myf6x0nl6hy8ldfsj-shell.drv"
}

It causes regular direnv reloads, like every 10 seconds and direnv debug log on each trivial command.

Is there way to exclude files from watching, probably even use .gitignore?

@Profpatsch
Copy link
Collaborator

If it is inside your project, you can use https://github.com/siers/nix-gitignore (which went into nixpkgs master a month or so ago) or https://github.com/Profpatsch/nixperiments/blob/master/filterSourceGitignore.nix (which is a bit more restrictive but should have less corner cases).

If it is from a transitive dependency lorri picks up, we’ll have to think of something and this is likely a bug.

@Profpatsch Profpatsch added documentation Doc improvements needed user-facing Improvement that increases user experience labels Mar 29, 2019
@danbst
Copy link
Author

danbst commented Mar 29, 2019

No, it is the problem with source-less nix-shells

$ cat shell.nix 
with import <nixpkgs> {};
mkShell {
  buildInputs = [ hello ];
}

$ touch bla
direnv: loading .envrc
direnv: using nix
direnv: export +AR +AS +CC +CONFIG_SHELL +CXX +HOST_PATH +IN_NIX_SHELL +LD +NIX_BINTOOLS +NIX_BINTOOLS_WRAPPER_x86_64_unknown_linux_gnu_TARGET_HOST +NIX_BUILD_CORES +NIX_BUILD_TOP +NIX_CC +NIX_CC_WRAPPER_x86_64_unknown_linux_gnu_TARGET_HOST +NIX_ENFORCE_NO_NATIVE +NIX_HARDENING_ENABLE +NIX_INDENT_MAKE +NIX_LDFLAGS +NIX_LOG_FD +NIX_STORE +NM +OBJCOPY +OBJDUMP +RANLIB +READELF +SIZE +SOURCE_DATE_EPOCH +STRINGS +STRIP +_PATH +buildInputs +builder +configureFlags +depsBuildBuild +depsBuildBuildPropagated +depsBuildTarget +depsBuildTargetPropagated +depsHostHost +depsHostHostPropagated +depsTargetTarget +depsTargetTargetPropagated +doCheck +doInstallCheck +name +nativeBuildInputs +nobuildPhase +origArgs +origBuilder +origPATH +origSystem +out +outputs +phases +propagatedBuildInputs +propagatedNativeBuildInputs +shell +stdenv +strictDeps +system ~PATH

In my case something like touch bla occures quite often to make those envrc reloadings annoying.

EDIT: wait, this works just fine. I have still to extract the problem

@infinisil
Copy link

I've just tried lorri with my small Haskell project. It uses nixpkgs' lib.sourceByRegex to filter what gets included:

{
    soph = (self.callCabal2nix "soph" (lib.sourceByRegex ./. [
      "^\\src.*$"
      "^.*\\.cabal$"
      "^LICENSE$"
    ]) {}).overrideAttrs (/** ... **/);
}

However this ends up including probably every file in that directory, as seen from the debug output:

[2019-03-29T23:43:50Z DEBUG lorri] Input options: Arguments { verbosity: 0, command: Watch }
Started
[2019-03-29T23:43:53Z DEBUG lorri::build_loop] original paths: 2200
[2019-03-29T23:43:53Z DEBUG lorri::build_loop]   -> reduced to: 3
[2019-03-29T23:43:53Z DEBUG lorri::build_loop] named drvs: {
    "shell_gc_root": "/nix/store/a9pk62bspr6gyyd2fvzpjc7y35yksrkq-lorri-keep-env-hack-ghc-shell-for-soph-0.1.0.0.drv",
    "shell": "/nix/store/vp2815qa2hiq55v13db1gilr45g4kasx-ghc-shell-for-soph-0.1.0.0.drv"
}
[2019-03-29T23:43:53Z DEBUG lorri::roots] Adding root from "/nix/store/a9pk62bspr6gyyd2fvzpjc7y35yksrkq-lorri-keep-env-hack-ghc-shell-for-soph-0.1.0.0.drv" to "/home/infinisil/.cache/lorri/soph/gc_root/attr-shell_gc_root"
[2019-03-29T23:43:53Z DEBUG lorri::roots] Connecting root from "/home/infinisil/.cache/lorri/soph/gc_root/attr-shell_gc_root" to "/nix/var/nix/gcroots/per-user/infinisil/e6ac3dbbabb84a2c7278d7bc89fbceab-6e3035ad701422ecf26b4a2fc73eb320-attr-shell_gc_root"
[2019-03-29T23:43:53Z DEBUG lorri::roots] Adding root from "/nix/store/vp2815qa2hiq55v13db1gilr45g4kasx-ghc-shell-for-soph-0.1.0.0.drv" to "/home/infinisil/.cache/lorri/soph/gc_root/attr-shell"
[2019-03-29T23:43:53Z DEBUG lorri::roots] Connecting root from "/home/infinisil/.cache/lorri/soph/gc_root/attr-shell" to "/nix/var/nix/gcroots/per-user/infinisil/e6ac3dbbabb84a2c7278d7bc89fbceab-6e3035ad701422ecf26b4a2fc73eb320-attr-shell"
[2019-03-29T23:43:53Z DEBUG lorri::roots] Adding root from "/nix/store/hwid4kk5bcpg8xiyzyq4n8w2f5k7x8hv-lorri-keep-env-hack-ghc-shell-for-soph-0.1.0.0" to "/home/infinisil/.cache/lorri/soph/gc_root/build-0"
[2019-03-29T23:43:53Z DEBUG lorri::roots] Connecting root from "/home/infinisil/.cache/lorri/soph/gc_root/build-0" to "/nix/var/nix/gcroots/per-user/infinisil/e6ac3dbbabb84a2c7278d7bc89fbceab-6e3035ad701422ecf26b4a2fc73eb320-build-0"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/.config/nixpkgs/config.nix"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching parent path "/home/infinisil/.config/nixpkgs"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/.config/nixpkgs/overlays"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching parent path "/home/infinisil/.config/nixpkgs"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching parent path "/home/infinisil/prj"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/src"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/result"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/branches"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/17"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/60"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/ec"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/bd"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/3f"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/4a"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/84"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/25"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/af"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/fa"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/5b"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/97"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/79"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/f1"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/04"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/e9"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/41"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/36"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/b4"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/31"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/46"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/e4"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/b3"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/5e"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/2b"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/09"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/90"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/pack"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/a1"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/f6"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/74"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/03"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/d7"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/c0"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/55"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/28"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/0c"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/7d"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/89"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/67"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/10"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/bc"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/4f"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/3a"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/83"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/69"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/87"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/4b"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/3e"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/fb"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/ae"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/d9"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/26"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/51"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/c4"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/70"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/a5"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/f8"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/94"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/2f"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/e0"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/35"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/6c"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/48"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/e7"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/45"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/32"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/6d"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/38"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/00"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/77"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/99"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/f5"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/a2"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/a8"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/dd"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/2a"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/ab"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/c9"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/9c"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/21"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/c3"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/d4"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/80"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/19"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/3b"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/13"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/64"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/29"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/7e"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/0b"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/54"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/9a"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/c1"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/d6"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/82"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/ee"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/bb"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/88"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/66"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/b2"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/e5"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/30"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/f7"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/a0"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/df"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/2c"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/5d"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/72"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/05"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/a7"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/5c"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/2d"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/96"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/78"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/e2"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/37"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/8e"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/1f"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/info"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/e8"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/85"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/eb"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/61"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/16"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/59"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/7b"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/9f"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/d1"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/c6"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/c2"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/9b"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/20"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/7f"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/ac"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/c8"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/12"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/ba"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/81"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/18"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/3c"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/1b"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/39"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/8a"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/33"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/44"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/b1"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/92"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/a9"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/cb"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/f4"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/76"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/f9"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/f3"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/a4"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/06"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/6b"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/49"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/8f"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/43"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/34"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/b6"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/e1"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/15"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/ea"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/bf"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/86"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/3d"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/c5"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/d2"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/50"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/27"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/fc"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/objects/d8"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/logs"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/logs/refs"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/logs/refs/heads"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/logs/refs/remotes"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/logs/refs/remotes/origin"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/info"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/hooks"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/refs"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/refs/tags"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/refs/remotes"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/refs/remotes/origin"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.git/refs/heads"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.stack-work"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.stack-work/install"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.stack-work/install/x86_64-linux-nix"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.stack-work/install/x86_64-linux-nix/lts-12.16"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.stack-work/install/x86_64-linux-nix/lts-12.16/8.4.4"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.stack-work/install/x86_64-linux-nix/lts-12.16/8.4.4/doc"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.stack-work/install/x86_64-linux-nix/lts-12.16/8.4.4/doc/blockhash-0.1.0.0"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.stack-work/install/x86_64-linux-nix/lts-12.16/8.4.4/doc/soph-0.1.0.0"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.stack-work/install/x86_64-linux-nix/lts-12.16/8.4.4/doc/bktrees-0.3.1"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.stack-work/install/x86_64-linux-nix/lts-12.16/8.4.4/doc/broadcast-chan-conduit-0.2.0.1"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.stack-work/install/x86_64-linux-nix/lts-12.16/8.4.4/doc/broadcast-chan-0.2.0.1"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.stack-work/install/x86_64-linux-nix/lts-12.16/8.4.4/installed-packages"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.stack-work/install/x86_64-linux-nix/lts-12.16/8.4.4/lib"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.stack-work/install/x86_64-linux-nix/lts-12.16/8.4.4/lib/x86_64-linux-ghc-8.4.4"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.stack-work/install/x86_64-linux-nix/lts-12.16/8.4.4/lib/x86_64-linux-ghc-8.4.4/broadcast-chan-0.2.0.1-KURtMSj4dP5DHqzso29DFD"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.stack-work/install/x86_64-linux-nix/lts-12.16/8.4.4/lib/x86_64-linux-ghc-8.4.4/broadcast-chan-0.2.0.1-KURtMSj4dP5DHqzso29DFD/BroadcastChan"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.stack-work/install/x86_64-linux-nix/lts-12.16/8.4.4/lib/x86_64-linux-ghc-8.4.4/broadcast-chan-conduit-0.2.0.1-LGgrVN27zhk7n0w8a84OEZ"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.stack-work/install/x86_64-linux-nix/lts-12.16/8.4.4/lib/x86_64-linux-ghc-8.4.4/broadcast-chan-conduit-0.2.0.1-LGgrVN27zhk7n0w8a84OEZ/BroadcastChan"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.stack-work/install/x86_64-linux-nix/lts-12.16/8.4.4/lib/x86_64-linux-ghc-8.4.4/broadcast-chan-conduit-0.2.0.1-LGgrVN27zhk7n0w8a84OEZ/BroadcastChan/Conduit"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.stack-work/install/x86_64-linux-nix/lts-12.16/8.4.4/lib/x86_64-linux-ghc-8.4.4/blockhash-0.1.0.0-9o9RiZwMsT7HoLE98rUT7M"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.stack-work/install/x86_64-linux-nix/lts-12.16/8.4.4/lib/x86_64-linux-ghc-8.4.4/blockhash-0.1.0.0-9o9RiZwMsT7HoLE98rUT7M/Data"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.stack-work/install/x86_64-linux-nix/lts-12.16/8.4.4/lib/x86_64-linux-ghc-8.4.4/bktrees-0.3.1-7uVUOiNKgFTH5YH8xQfVSp"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.stack-work/install/x86_64-linux-nix/lts-12.16/8.4.4/lib/x86_64-linux-ghc-8.4.4/bktrees-0.3.1-7uVUOiNKgFTH5YH8xQfVSp/Data"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.stack-work/install/x86_64-linux-nix/lts-12.16/8.4.4/lib/x86_64-linux-ghc-8.4.4/bktrees-0.3.1-7uVUOiNKgFTH5YH8xQfVSp/Data/Set"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.stack-work/install/x86_64-linux-nix/lts-12.16/8.4.4/lib/x86_64-linux-ghc-8.4.4/bktrees-0.3.1-7uVUOiNKgFTH5YH8xQfVSp/Data/Set/BKTree"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.stack-work/install/x86_64-linux-nix/lts-12.16/8.4.4/pkgdb"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.stack-work/install/x86_64-linux-nix/lts-12.16/8.4.4/bin"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.stack-work/install/x86_64-linux-nix/lts-12.16/8.4.4/flag-cache"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.stack-work/logs"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.stack-work/dist"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.stack-work/dist/x86_64-linux-nix"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.stack-work/dist/x86_64-linux-nix/Cabal-2.2.0.1"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.stack-work/dist/x86_64-linux-nix/Cabal-2.2.0.1/stack-build-caches"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.stack-work/dist/x86_64-linux-nix/Cabal-2.2.0.1/package.conf.inplace"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.stack-work/dist/x86_64-linux-nix/Cabal-2.2.0.1/build"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.stack-work/dist/x86_64-linux-nix/Cabal-2.2.0.1/build/soph"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.stack-work/dist/x86_64-linux-nix/Cabal-2.2.0.1/build/soph/autogen"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.stack-work/dist/x86_64-linux-nix/Cabal-2.2.0.1/build/soph/soph-tmp"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/.stack-work/dist/x86_64-linux-nix/Cabal-2.2.0.1/build/soph/soph-tmp/src"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/dist"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/dist/package.conf.inplace"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/dist/build"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/dist/build/soph"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/dist/build/soph/autogen"
[2019-03-29T23:43:53Z DEBUG lorri::watch] Watching path "/home/infinisil/prj/soph/dist/build/soph/soph-tmp"
Completed(
    BuildResults {
        drvs: {
            0: "/home/infinisil/.cache/lorri/soph/gc_root/build-0"
        },
        named_drvs: {
            "shell": "/home/infinisil/.cache/lorri/soph/gc_root/attr-shell",
            "shell_gc_root": "/home/infinisil/.cache/lorri/soph/gc_root/attr-shell_gc_root"
        }
    }
)

@infinisil
Copy link

Some more info:

$ nix-instantiate --eval --strict --read-write-mode -A src
{ _isLibCleanSourceWith = true; filter = <LAMBDA>; origSrc = /home/infinisil/prj/soph;
  outPath = "/nix/store/9blqrn193vmlvzrv5y612rhkrmn77yrj-soph"; }
$ tree -A /nix/store/9blqrn193vmlvzrv5y612rhkrmn77yrj-soph
/nix/store/9blqrn193vmlvzrv5y612rhkrmn77yrj-soph
├── LICENSE
├── soph.cabal
└── src
    ├── Config.hs
    ├── Hashing.hs
    ├── Log.hs
    └── Main.hs

1 directory, 6 files

@anka-213
Copy link

I have the same problem as @infinisil with the added detail that every time the git lockfile .git/index.lock is touched, lorri will rebuild the environment. Since my shell prompt checks the git status at every prompt, this is every time any command is run.

@infinisil
Copy link

@anka-213 Yeah I'm having that problem as well :(

@dudebout
Copy link
Contributor

dudebout commented Apr 1, 2019

@infinisil, your problem stems from the first line in your shell.nix file:

with import ./. {};

Because it imports "the current directory", that directory ends up being watched recursively by lorri. By changing this line to:

with import ./default.nix {};

you can bypass the issue.

@dudebout
Copy link
Contributor

dudebout commented Apr 1, 2019

I have noticed two other cases that make lorri watch more directories than one would want:

  1. if you use a git checkout for nixpkgs instead of a channel, then lorri watches every directory in that checkout, including the .git directory and its subdirectories
  2. if you use an src that is not computed from filterSource, then lorri watches all the subdirectories of src. I think this is because:
    • when using filterSource, the src is added to the nix store via primops:addPath which does not echo anything
    • when not using filterSource, the src is added to the nix store via eval:copyPathToStore which echoes "copied source" and leads lorri to watch the directory

(Arguably using 1. and 2. are not good practice, but we should document these corner cases for users and in case the logging in nix changes which could cause changes in behavior)

@dudebout
Copy link
Contributor

dudebout commented Apr 1, 2019

Created #21 to document my findings.

@nyarly
Copy link
Collaborator

nyarly commented Apr 20, 2019

One case I think I've discovered: I'm working on a Rubygem, and bundix adds an entry for the gemspec as source = ./.

@Profpatsch
Copy link
Collaborator

Update: we have implemented the default.nix logic now.

If you can, please try out the #146 branch (you can clone, switch to branch and then use lorri self-upgrade local /path/to/checkout to do that).

There are still more issues with watching the minimal amount of files necessary, so please report any inconsistencies that you see.

@Profpatsch Profpatsch added this to To do in lorri via automation Oct 4, 2019
@Profpatsch Profpatsch added the P2 major: an upcoming release label Oct 4, 2019
@Profpatsch Profpatsch self-assigned this Oct 4, 2019
@masaeedu
Copy link

masaeedu commented Nov 30, 2019

@dudebout The README currently suggests a workaround for 2. Is there a workaround for 1?

I'm using niv to manage my nixpkgs checkout, and lorri seems to be in an infinite loop:

[2019-11-30T05:17:04Z DEBUG lorri::watch] Event path ("/mnt/data/depot/git/haskell/repos/filterable/.git/index.lock") parent ("/mnt/data/depot/git/haskell/repos/filterable/.git") matches watched path
[2019-11-30T05:17:04Z DEBUG lorri::watch] Watch Event: RawEvent {
    path: Some(
        "/mnt/data/depot/git/haskell/repos/filterable/.git/index.lock",
    ),
    op: Ok(
        REMOVE,
    ),
    cookie: None,
}
[2019-11-30T05:17:04Z INFO  lorri::watch] identified file removal: "/mnt/data/depot/git/haskell/repos/filterable/.git/index.lock"
[2019-11-30T05:17:04Z DEBUG lorri::watch] Received event: RawEvent {
    path: Some(
        "/mnt/data/depot/git/haskell/repos/filterable/.git/index.lock",
    ),
    op: Ok(
        REMOVE,
    ),
    cookie: None,
}

@dudebout
Copy link
Contributor

dudebout commented Dec 1, 2019 via email

@masaeedu
Copy link

masaeedu commented Dec 2, 2019

@dudebout You're right, it looks like niv uses a tarball. The .git folder that's causing an infinite loop seems to be the actual project I'm working on.

@willbush
Copy link

Note regarding the issue where src = ./. causes rebuilding on any file change applies to root when using developPackage.

let
  # ... elided
  haskellPkgs = pkgs.haskell.packages.${compiler};

in haskellPkgs.developPackage rec {
  root = ./.;
  # ... elided
}

If you look at the source it's because root eventually gets passed to src.

Likewise, this can be fixed with root = pkgs.nix-gitignore.gitignoreSource [] ./.;.

However, in that case the name has to be provided (e.g. name = builtins.baseNameOf ./.;) because the default implementation of name uses builtins.baseNameOf root which will result in a store path and give an error: "is not allowed to refer to a store path"

Here is the full (fixed) default.nix where I ran into this issue:

{ compiler ? "ghc865"
, doBenchmark ? false
, doProfiling ? false
, doStrict ? false
}:

let
  sources = import ./nix/sources.nix;
  pkgs = import sources.nixpkgs {
    config.allowUnfree = true;
    config.allowBroken = false;
    overlays = [
      (self: super: {
        haskell = super.haskell // {
          packages = super.haskell.packages // {
            ${compiler} = super.haskell.packages.${compiler} // rec {
              ghc = super.haskell.packages.${compiler}.ghc // {
                withPackages =
                  super.haskell.packages.${compiler}.ghc.withHoogle;
              };
              ghcWithPackages = ghc.withPackages;
            };
          };
        };
      })
    ];
  };
  haskellPkgs = pkgs.haskell.packages.${compiler};

in haskellPkgs.developPackage rec {
  name = builtins.baseNameOf ./.;
  # Must filter root otherwise `src = ./.` and lorri will get its known issue
  # where it rebuilds on any file change
  # (https://github.com/target/lorri/issues/6). When the root is filtered we
  # must provide a name (above) because the default implementation uses:
  # `builtins.baseNameOf root` which results in a name that refers to a store
  # path and end up with the error: "is not allowed to refer to a store path".
  root = pkgs.nix-gitignore.gitignoreSource [] ./.;

  modifier = drv:
    pkgs.haskell.lib.overrideCabal drv (attrs: {
      buildTools = (attrs.buildTools or [ ]) ++ [ haskellPkgs.cabal-install haskellPkgs.ghc ];

      enableLibraryProfiling = doProfiling;
      enableExecutableProfiling = doProfiling;

      testHaskellDepends = (attrs.testHaskellDepends or [ ])
        ++ [ haskellPkgs.criterion ];

      inherit doBenchmark;

      configureFlags =
        pkgs.stdenv.lib.optional doStrict "--ghc-options=-Werror";

      passthru = {
        nixpkgs = pkgs;
        inherit haskellPkgs;
      };
    });

  returnShellEnv = false;
}

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
documentation Doc improvements needed P2 major: an upcoming release user-facing Improvement that increases user experience
Projects
lorri
  
To do
Development

No branches or pull requests

8 participants