lorri
lorri copied to clipboard
A way to exclude directory from watch?
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
?
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.
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
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"
}
}
)
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
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.
@anka-213 Yeah I'm having that problem as well :(
@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.
I have noticed two other cases that make lorri
watch more directories than one would want:
- 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 - if you use an
src
that is not computed fromfilterSource
, thenlorri
watches all the subdirectories ofsrc
. I think this is because:- when using
filterSource
, thesrc
is added to the nix store via primops:addPath which does not echo anything - when not using
filterSource
, thesrc
is added to the nix store via eval:copyPathToStore which echoes "copied source" and leadslorri
to watch the directory
- when using
(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)
Created https://github.com/target/lorri/pull/21 to document my findings.
One case I think I've discovered: I'm working on a Rubygem, and bundix
adds an entry for the gemspec as source = ./.
Update: we have implemented the default.nix
logic now.
If you can, please try out the https://github.com/target/lorri/pull/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.
@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,
}
I am not aware of such a workaround. I have a feeling that in most cases this should not be a problem though, since working on nixpkgs or working on the project backed by lorri are fairly distinct operations. If I remember correctly, I noticed 1) while investigating this issue, but this was not something that was in the way.
Are you sure niv is using a git checkout of nixpkgs? From what niv does, and from reading its README, it does not seem to be the case, at least in its default mode of operation.
On Sat, Nov 30, 2019 at 12:19 AM Asad Saeeduddin [email protected] wrote:
@dudebout https://github.com/dudebout The README currently suggests a workaround for 2. Is there a workaround for 1?
— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/target/lorri/issues/6?email_source=notifications&email_token=AAC5LGSKQDW2NYHERXBEW2TQWHZXHA5CNFSM4HCHAFNKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEFPZW4Y#issuecomment-559913843, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAC5LGTKJRZ6KS4WAIXP6H3QWHZXHANCNFSM4HCHAFNA .
@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.
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;
}