purcell / envrc

Emacs support for direnv which operates buffer-locally
378 stars 35 forks source link

Incorrect path when using `M-x compile` #92

Closed mjrusso closed 1 month ago

mjrusso commented 1 month ago

@purcell thanks so much for envrc; it is solid and works reliably everywhere (except in compilation buffers... but I'm certain that's an issue with on my end).

On that note, I've searched through past issues hoping to find a clue that would help me debug what's going on, but no luck. Is there anything else I can do to help narrow this down?


On my system, both M-x compile and M-x shell have the wrong PATH.

My system setup: MacOS with nix, flakes, nix-darwin, nix-direnv, home-manager, and fish.

In a directory without an .envrc file, M-x compile with the command echo $PATH returns the value I would expect:

/Users/mjrusso/.nix-profile/bin /run/current-system/sw/bin /nix/var/nix/profiles/default/bin /usr/local/bin /usr/bin /usr/sbin /bin /sbin /opt/homebrew/bin

In a vterm buffer in that same directory:

$ echo $PATH
/Users/mjrusso/.nix-profile/bin /run/current-system/sw/bin /nix/var/nix/profiles/default/bin /usr/local/bin /usr/bin /usr/sbin /bin /sbin /opt/homebrew/bin

$ fish -c "echo $PATH"
/Users/mjrusso/.nix-profile/bin:/run/current-system/sw/bin:/nix/var/nix/profiles/default/bin:/usr/local/bin:/usr/bin:/usr/sbin:/bin:/sbin:/opt/homebrew/bin

So far so good.

Note that from a buffer in the same directory, M-x gentenv PATH returns:

/Users/mjrusso/.nix-profile/bin:/run/current-system/sw/bin:/nix/var/nix/profiles/default/bin:/usr/local/bin:/System/Cryptexes/App/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin:/Library/Apple/usr/bin:/opt/homebrew/bin

...which is approximately the same, with the exception of the Apple security-related entries. (I have a feeling they're related to how I'm launching Emacs; I'm mentioning this for completeness, but I don't think they're material here.)

Repeating the above steps but from a directory with an .envrc file, M-x compile with the command echo $PATH returns the same value as the non-.envrc case:

/Users/mjrusso/.nix-profile/bin /run/current-system/sw/bin /nix/var/nix/profiles/default/bin /usr/local/bin /usr/bin /usr/sbin /bin /sbin /opt/homebrew/bin

Which is not the correct value.

For posterity, here's the full compilation buffer output:

-*- mode: compilation; default-directory: "~/Library/CloudStorage/Dropbox/Projects/whittle/lib/" -*-
Compilation started at Sat Oct 12 14:02:31

echo $PATH
/Users/mjrusso/.nix-profile/bin /run/current-system/sw/bin /nix/var/nix/profiles/default/bin /usr/local/bin /usr/bin /usr/sbin /bin /sbin /opt/homebrew/bin

Compilation finished at Sat Oct 12 14:02:31, duration 0.15 s

The PATH is correct in other contexts. For example, from a vterm buffer:

$ echo $PATH
/nix/store/ycf3h2kh6azqxcffif7d7bmbr8xf0a3h-elixir-ls-0.21.3/bin:...snip...

$ fish -c "echo $PATH"
/nix/store/ycf3h2kh6azqxcffif7d7bmbr8xf0a3h-elixir-ls-0.21.3/bin:...snip...

M-x gentenv PATH also returns the correct value:

/nix/store/ycf3h2kh6azqxcffif7d7bmbr8xf0a3h-elixir-ls-0.21.3/bin:...snip...

From this same directory, if I run M-x compile with the command eval $(direnv export fish); echo $PATH, the PATH is still wrong:

-*- mode: compilation; default-directory: "~/Library/CloudStorage/Dropbox/Projects/whittle/lib/" -*-
Compilation started at Sat Oct 12 14:14:16

eval $(direnv export fish); echo $PATH
/Users/mjrusso/.nix-profile/bin /run/current-system/sw/bin /nix/var/nix/profiles/default/bin /usr/local/bin /usr/bin /usr/sbin /bin /sbin /opt/homebrew/bin

Compilation finished at Sat Oct 12 14:14:16, duration 0.17 s

M-x shell also has the wrong PATH. I noticed something interesting though...

If I run M-x shell, check the PATH, then run direnv reload, then check the PATH again, the PATH updates correctly in this context (as expected):

Welcome to fish, the friendly interactive shell
        Type help for instructions on how to use fish

$ echo $PATH
/Users/mjrusso/.nix-profile/bin /run/current-system/sw/bin /nix/var/nix/profiles/default/bin /usr/local/bin /usr/bin /usr/sbin /bin /sbin /opt/homebrew/bin

$ direnv reload
  ⏎
direnv: loading ~/Library/CloudStorage/Dropbox/Projects/whittle/.envrc
direnv: using flake .
warning: Git tree '/Users/mjrusso/Library/CloudStorage/Dropbox/Projects/whittle' is dirty
direnv: ([/nix/store/b862impi4vy6hx7irfhnp3y5padbw0jl-direnv-2.35.0/bin/direnv export fish]) is taking a while to execute. Use CTRL-C to give up.
warning: Git tree '/Users/mjrusso/Library/CloudStorage/Dropbox/Projects/whittle' is dirty
direnv: nix-direnv: Renewed cache
direnv: export +AR +AS +CC +CONFIG_SHELL +CXX +ERL_AFLAGS +HEX_HOME +HOST_PATH +IN_NIX_SHELL +LD +LD_DYLD_PATH +MACOSX_DEPLOYMENT_TARGET +MIX_HOME +NIX_BINTOOLS +NIX_BINTOOLS_WRAPPER_TARGET_HOST_aarch64_apple_darwin +NIX_BUILD_CORES +NIX_CC +NIX_CC_WRAPPER_TARGET_HOST_aarch64_apple_darwin +NIX_CFLAGS_COMPILE +NIX_DONT_SET_RPATH +NIX_DONT_SET_RPATH_FOR_BUILD +NIX_DONT_SET_RPATH_FOR_TARGET +NIX_ENFORCE_NO_NATIVE +NIX_HARDENING_ENABLE +NIX_IGNORE_LD_THROUGH_GCC +NIX_LDFLAGS +NIX_NO_SELF_RPATH +NIX_STORE +NM +NODE_COOKIE +NODE_NAME +NODE_PATH +OBJCOPY +OBJDUMP +PATH_LOCALE +RANLIB +SIZE +SOURCE_DATE_EPOCH +STRINGS +STRIP +XDG_DATA_DIRS +ZERO_AR_DATE +__darwinAllowLocalNetworking +__impureHostDeps +__propagatedImpureHostDeps +__propagatedSandboxProfile +__sandboxProfile +__structuredAttrs +buildInputs +buildPhase +builder +cmakeFlags +configureFlags +depsBuildBuild +depsBuildBuildPropagated +depsBuildTarget +depsBuildTargetPropagated +depsHostHost +depsHostHostPropagated +depsTargetTarget +depsTargetTargetPropagated +doCheck +doInstallCheck +dontAddDisableDepTrack +mesonFlags +name +nativeBuildInputs +out +outputs +patches +phases +preferLocalBuild +propagatedBuildInputs +propagatedNativeBuildInputs +shell +shellHook +stdenv +strictDeps +system ~PATH ~XPC_SERVICE_NAME

$ echo $PATH
/nix/store/ycf3h2kh6azqxcffif7d7bmbr8xf0a3h-elixir-ls-0.21.3/bin ...snip...

...but, after doing the above, if I run M-x compile again with the command eval $(direnv export fish); echo $PATH:

-*- mode: compilation; default-directory: "~/Library/CloudStorage/Dropbox/Projects/whittle/lib/" -*-
Compilation started at Sat Oct 12 14:07:10

eval $(direnv export fish); echo $PATH
direnv: loading ~/Library/CloudStorage/Dropbox/Projects/whittle/.envrc
direnv: using flake .
warning: Git tree '/Users/mjrusso/Library/CloudStorage/Dropbox/Projects/whittle' is dirty
evaluating derivation 'git+file:///Users/mjrusso/Library/CloudStorage/Dropbox/Projects/whittle#devShells.aarch64-darwin.default'direnv: ([direnv export fish]) is taking a while to execute. Use CTRL-C to give up.
warning: Git tree '/Users/mjrusso/Library/CloudStorage/Dropbox/Projects/whittle' is dirty
direnv: nix-direnv: Renewed cache
direnv: export +AR +AS +CC +CONFIG_SHELL +CXX +ERL_AFLAGS +HEX_HOME +HOST_PATH +IN_NIX_SHELL +LD +LD_DYLD_PATH +MACOSX_DEPLOYMENT_TARGET +MIX_HOME +NIX_BINTOOLS +NIX_BINTOOLS_WRAPPER_TARGET_HOST_aarch64_apple_darwin +NIX_BUILD_CORES +NIX_CC +NIX_CC_WRAPPER_TARGET_HOST_aarch64_apple_darwin +NIX_CFLAGS_COMPILE +NIX_DONT_SET_RPATH +NIX_DONT_SET_RPATH_FOR_BUILD +NIX_DONT_SET_RPATH_FOR_TARGET +NIX_ENFORCE_NO_NATIVE +NIX_HARDENING_ENABLE +NIX_IGNORE_LD_THROUGH_GCC +NIX_LDFLAGS +NIX_NO_SELF_RPATH +NIX_STORE +NM +NODE_COOKIE +NODE_NAME +NODE_PATH +OBJCOPY +OBJDUMP +PATH_LOCALE +RANLIB +SIZE +SOURCE_DATE_EPOCH +STRINGS +STRIP +XDG_DATA_DIRS +ZERO_AR_DATE +__darwinAllowLocalNetworking +__impureHostDeps +__propagatedImpureHostDeps +__propagatedSandboxProfile +__sandboxProfile +__structuredAttrs +buildInputs +buildPhase +builder +cmakeFlags +configureFlags +depsBuildBuild +depsBuildBuildPropagated +depsBuildTarget +depsBuildTargetPropagated +depsHostHost +depsHostHostPropagated +depsTargetTarget +depsTargetTargetPropagated +doCheck +doInstallCheck +dontAddDisableDepTrack +mesonFlags +name +nativeBuildInputs +out +outputs +patches +phases +preferLocalBuild +propagatedBuildInputs +propagatedNativeBuildInputs +shell +shellHook +stdenv +strictDeps +system ~PATH ~XPC_SERVICE_NAME
/nix/store/ycf3h2kh6azqxcffif7d7bmbr8xf0a3h-elixir-ls-0.21.3/bin ...snip...

Compilation finished at Sat Oct 12 14:07:20, duration 9.70 s

So the behaviour changes, which is odd (although I'd imagine there's some underlying implementation detail that explains this).


The example above use a .envrc file with use flake; I also tried with a basic .envrc file like the following:

PATH_add /foo/bar

But no change.


Output from `*envrc-debug*` (launching Emacs, opening the project with an `.envrc` file, and then running `M-x compile`)... ``` [*envrc-debug*] reset environment to default [*scratch*] reset environment to default [*Messages*] reset environment to default [ *code-conversion-work*] reset environment to default [*straight-process*] reset environment to default [ *Echo Area 0*] reset environment to default [ *Echo Area 1*] reset environment to default [*Async-native-compile-log*] reset environment to default [*copilot stderr*] reset environment to default [ *checkdoc-temp*] reset environment to default [*scratch*] reset environment to default [ *checkdoc-temp*] reset environment to default Direnv exited with 0 and stderr="direnv: loading ~/Library/CloudStorage/Dropbox/Projects/whittle/.envrc direnv: using flake . direnv: nix-direnv: Using cached dev shell direnv: export +AR +AS +CC +CONFIG_SHELL +CXX +ERL_AFLAGS +HEX_HOME +HOST_PATH +IN_NIX_SHELL +LD +LD_DYLD_PATH +MACOSX_DEPLOYMENT_TARGET +MIX_HOME +NIX_BINTOOLS +NIX_BINTOOLS_WRAPPER_TARGET_HOST_aarch64_apple_darwin +NIX_BUILD_CORES +NIX_CC +NIX_CC_WRAPPER_TARGET_HOST_aarch64_apple_darwin +NIX_CFLAGS_COMPILE +NIX_DONT_SET_RPATH +NIX_DONT_SET_RPATH_FOR_BUILD +NIX_DONT_SET_RPATH_FOR_TARGET +NIX_ENFORCE_NO_NATIVE +NIX_HARDENING_ENABLE +NIX_IGNORE_LD_THROUGH_GCC +NIX_LDFLAGS +NIX_NO_SELF_RPATH +NIX_STORE +NM +NODE_COOKIE +NODE_NAME +NODE_PATH +OBJCOPY +OBJDUMP +PATH_LOCALE +RANLIB +SIZE +SOURCE_DATE_EPOCH +STRINGS +STRIP +XDG_DATA_DIRS +ZERO_AR_DATE +__darwinAllowLocalNetworking +__impureHostDeps +__propagatedImpureHostDeps +__propagatedSandboxProfile +__sandboxProfile +__structuredAttrs +buildInputs +buildPhase +builder +cmakeFlags +configureFlags +depsBuildBuild +depsBuildBuildPropagated +depsBuildTarget +depsBuildTargetPropagated +depsHostHost +depsHostHostPropagated +depsTargetTarget +depsTargetTargetPropagated +doCheck +doInstallCheck +dontAddDisableDepTrack +mesonFlags +name +nativeBuildInputs +out +outputs +patches +phases +preferLocalBuild +propagatedBuildInputs +propagatedNativeBuildInputs +shell +shellHook +stdenv +strictDeps +system ~PATH ~XPC_SERVICE_NAME ", stdout="{ \"AR\": \"ar\", \"AS\": \"as\", \"CC\": \"clang\", \"CONFIG_SHELL\": \"/nix/store/iafzjk7zbkqaszqfp6n006vvxjrpn4f6-bash-5.2p32/bin/bash\", \"CXX\": \"clang++\", \"DIRENV_DIFF\": \"eJzsOmlv2zq2f0XQDDAfprK1LxncD47tJL514lwnbdIigEGRlESJoiRS1ja4__1Bst2kse_MS9MP7wENEIsieRYeHZ6N_Lecy2f_lm8n91fymTz-JDAX4zTmWyGy8YiRRsl5FhCKxz5hZ2O-ZWO45RyzUhGtKHE6FvVuiJFmXAE-PPcwYoxwALa03M3YCj6mGQR093q3g5_yNi9xg8V4kufDnG-Th8a3NzG0dr89oYGXLB2BPKd4JDDcclK2I7jDh8YwQ7gZ7bn0s6wUJQf5ay7eieln4BhACCsxZweulsTngLe9SCh-JpTl5TjKUuxzPEhd_iA_3k43d_P158V0vrmZXM_lM7nHRyAoScZGGQ9HIduO5imAYqRphmFZrr5veKb85weZ9QowWfeAXP4gT-76lpA_yNOpfCZDCljYv6xuLhaXm7ur-XLZa0r_mUWZcTwmIOjixOn8pACiK4LcZqpqV1UT85yZga34QESKNdJzQ--ZHvfvPcbHxwP-f_5T_iDPFuv5zefNbNGzorxSxYNApjTborsy4yDE4xnPcj9rxrc8izEsxbiOSFlS_IzsYrGcH-v1m5CNR5hVHD7jfJjcT6_mvZTw762aiO1q3s3_WAebC9uOPWcJ0PKu-bqYXjyQ-ePXZQEd6MNYN5LfXeyK5Hz2O_i4_H19e33-GQefeFDFFx6dXbopUFfu5zv7sSujpuiC-6U1KT5NN_onl1y4wGGT8y1jSQW3TGGPCQ-yB_uBwYesXGCtXq2_3n5O71fZJ7VL4sfHOoq20cMnHm5xXib8ga-72lMy7UuO20i959PJ5zydZNt1neXW-lq7IN1jrZxrkxtteenoi8ePk0t7YfCwu3_AwaRI41hdx7PbZC0uzY9d_Ae7uvWdWv3sfqkVs3msV5-n2H74AunvH6_Axz9WSZZuz3V3XhYz2_qcTsn6PvmDqcb1H_jr5Sz7et66FzSbPqbMo9rH-efVJt9cPJj31fYcflUeV5eGchUsPwmBPs6jWyEutqnrqpvzYqUmD5tt-7gNPwYVulOyML81vwBxHl_dX1K-_WQZ0NAty51MJrPNxsFfrkH2m_xBnq-Xm8nFcnLZfzslwZxhKokIU7qJSK_LrYQZ8ClG0snRTQ7KSPrH0zvVqTeqA97xCPNe-5U9_if5H_IH-Wr-uLlaXb9fbV_QiXDTY17d3W8Olv55_2rU1ExHa2xOA4dapik0v0mKIsxzjnQ3VWDG8bYkVCjeyHo29jtomxBu0xiZLWCuFlJu1ZHRQa-xqBrUKFYCwtAO2hxp6kh9jcA0_RYgpNO6IMhRAeBJjJoiNX0GUhIECiJBsENgjLQjcNvR8irPQ4i6EDWJH4Whb3VaJwzUqJ7dKiHbCowUc-S9Bs0tp7YcRpnTxlXsWcSraaM7oRNCVoch6EFDjvOervYaGBYgMGDjqgSFXsMLCGyL56kBGjfVm7xQQlAnvdUb6a9B3dy3zbazk4rkLWtqP43dykhDU-c6IMzv6ZaAK9rIOBK3phWa45tFi3ytM2kiBE07y9Mp0oI88n0l7EiuaCPNeA3ZxEFudqFZda7aQs_qAtjVVgVVL44hD5nidyTXFW2kjlxlMNOvBJ1CRNLCtvw8TUwIhV8nblcUlVpbTpOQnusUJFgxR-boSFxvdRLfyculqdblgWWpxIupZrIkSnkd5InlRJYRKTkoYaToI2dkv4Z1qshO7SZp7QhwFbYoyVNauBpV26KjfqE0nWKN7JF-asmQkApVlaEVHEJheZUX8RZAK-5SyyhqovRBjmKNTGvvjBc3m5vF4zcnSdJ8y3tvtJzJZzJFQ2sz-7KcfduGQzRC_DFqh-HryXR197iZzW-Xqy_X85v7zf1kfTm_l89kTRup_YzFzzcPKenNQ8_5-eLmfrVa3n1vIUKkASMSwElRRUnsNzbSfOLHAdM1i_mJAmGZZVT0MtztVAR4TZhSc5DnmCuaqqkj-xWNzcN6cns7X--XuBnMEwAcRra5GWKizQ5Nv_gD7KfFcraZrtaD_9XUffcQqbzUGGhUBkddRSzDNhsv9SyPxG1rE5AWgRUoQ9TxzJ49emZvOv0RxqaDX9lMV9e3u5BDUgIOGMpSRWCMftMJz8NI1WMqKUS0gmdZKb3gmCVu7DRFo_mt6la1bkUG9Zkdk7oCjQOpIlDSwyi9GoyvAVzdPfbNkUDJDmOJ05cIo4ZqiVuEKU-1KiiswNQ8Upl163ee6IpCYRnCsVB0daQ5I3VMGKRbhCWFBBykuM548hJdUUPQeoTlXRyrYVyD1G5SUtmW2bmN5ujKIBflG6wyzTi-yLYMDXHowPZI_aajF4d54iTzWmpHXho0ENLYsapEtJUZR7wOLFslqQ4VSvzMj-EB7X9hXm1cNUTCVllo-0hLXegGViAYiU0Q5Jpxkvk7zCsCsfiPrJ8kZyAtciIjCq1azxuN0UQDVFCv6eKQxVVyTO7iBpdD6820_NZxLZWZJNYql7k-iBGv2sSxYlUUgDsnlzbZIpK9nRZPWr3I1ahmvl5Qvw7jOvH0QDhaHnokKP6a1n2b_4ggPbd1IyACrhvIFzSgnmlrptZAL_FawwiOCC5WH0n5djp65Khpnge8EcRCIiZG4yCiO0bT5cAq4BGdGRHJhPuk5P9du09SFIkbgECvOCQxyVHQkcT285AIyzci5tpHFG9weXH3djqmg3xHa1GeotRWQWwFhcW8qAFCFXbn5Ed07vaJ6xs3bK6rah2qnU9bQuzcYLTyXVBpLm0cPRB0T4cSv_-fzdf_bcvaPmu1wIlcoyjqoEny1lNt1w39tk2KvD3eQ_vteg0YCHGK2X9WgxMrCFgFAzu2Pc_mWhjrThsRUXSuS9RQ1_Keb9g0e1-hIFy9WMIxuraouQraxkOeprrU0kMQBEYei8RpCSKeArM0JxRzhZcD6tOIT8omgcyrDRtYjsGixKcWJA4AeoUSvbAS7Vh53mWLfzmSX47klyP55Uh-OZJfjuR_a4v3SdFsdXO_uZvfb9b7dFc7ObC5WK13md1_nvKcCu_nzG8uVuvpfHOz2txM7hef5y_Gribr2fxmcXO5md9MzoeUzCcMsayWgoynoOwfJQnaw9OQcgIljinPJFECmOQ8KzEsMy6JkhNYZhXmAc1qqcM8g4DSrcCI4_Cw2sXlzWo93yxnm_ur9erT5dXmcshLDxwtZ4fao6Qs3-GjKPG_R2DFFWx47WkQMj-2me0kbgJNDSWWx0GRfK9xx_BdnZKambRohFY3VhFFVZwA5kQFciwf5n-lYseY_l8vZf-Zblabu_ny4khn7-5X6_l3ZYZ-4Fo-k1nat1az-Wa6Wn1c9JP2VRaYZQnBiqGbnpEAKuJAwbVp2aZ7gNgf2TwfXAy9x0Xat0ZhlPjjvmuTZmhLca-jq_Pfp6vbL_KZ3H-CLG93fbNP17e7PrRNc_mDfEy8hYER6Ulkg65oYBCQwEGOn_rcbQIVGJGCKWkIV6hQ1JGujY5qj74weO2mrHIskgQ6RF6g1lZX-TGtwi4MFYobAgHtjRamWd6b3R2O70tch2rWNEN4jBuOcyryUxPfVSr_uQhT0oyxgJzkpfi5WN_NJhACl-I7PRmPXhecDb2qnaRGDWK-E_Gk0xOg2lWEwtCw9UrZn2Hozkg9LvvarRHxWNPqXA-KMDa0Fuoa9UGYxoEqoHnQHK3X2qPCbyrCOo8F123VYSlNzUBNKLTV1KnaXKdCCUmp6CPTPj5VeOt-eQWut7lTJ5XGgyC3ajUMYpF6fluDJooh45ZSYp4SBqjCspIEBHNFH5043IgigzdIJxwkAYksvwiN3C2sFuQmi4QdKHzLQJ6_Bqtgq0ZeZ1l6yDUWRSgN68TzfCBUquchUHrNPwEX6DYqdM_SYuI01AImDxIrgMI0YidRDaYQ3MCj8vqPFEtfI2lR3OhmncIchkkcMpVqjGtR6OsAsdbx90hOA7_vBOonVaePxFI0PAGR0dKmK_qQmqZtUXGEeNe13Db-Eu1pdL9O2X6dsv06ZXv_Kds7XSgiHLPqFKJfl53-7192GlLB5Wo6WX4fiY8tj4YJjCyREFp4cWo1aWs7bgPTporj2FYAqjYwRULRNE8ZJILHIgIc78TTR97ryc1ycS6fyRywXTpwt_ja0xGk68fvVp_6ZHM2uZ9v5reraR8kG5plGbqrqv34_XpxM-R3fb7Ihryw77vd9_Sx9ePsskcw2cwW61eHrG8MlQbmfzRYOgJ-a7g0IDh9-6wXxdf5erWZrAdZ7VOozf7MdEJpVi97me9LlYSF8pk8zNidl19lopzhXPTi6c2FiKRvx-SU-LudNDofobZP_74N7bWNEn_L4GEQ4Wrcp-u71u5AdtfeHl52JAb6Oc9yEIISo8VrTl6N3wGG_Ky53W39w7g43VvyLSy3HKNJWfI9Mn9LKFqwfFu-7LiNgOjh_i1hGGXSk6y84-9J_tcTkw6YpIfJ-mZxc3kmlRGWcENEiRnEUhZIZUSENNxtIkJiWSmFW8ABKzFGo1dIFmU_BzDpsIMlkuZ0KJMNJSEJ4RIQKgUZl_IkFKM0uesTlld4ftKyhsbfpDWGGUcSoFQapCiRQa4SEBLfspKkWEI4xwxhBgkWA3STZ7z81xP7U3raqqqBd7_Sk_z3bFs-yU_s8Ekw_zm3HWHvtS8oCPffG2YsIOGWv-xDOBfnPdHh51Tf7TcNfDV6D3iIy5Odp2B6ze7_j3tOzd7heU3iZe8RVDaNMEwOLwsmSkDpd32snCA0IwL4FM9wfs_BMNbbihSLjL2QCwNpvyu-pb8KZtXQXZIKn3-3k344c5V-2BRLP2aE33HGJv2ETPXnn8n97IMy6e15tPQDObT01vxZ_iBn2_K996-ybdmrbP_cIdwr8O59iLXxXv3z3iv07Rc-4oOccxxgPnjSg7nQhu7DTjx_7WKeh25O7Bz5gzxsrp9j7gZUV1nWb-m_SROEJJanCtnZAYwknzDACRZSmQ0OqY_sRk9sZ5eHt9_-fvsw--sS1d_7OU_sif1N6mWNpYNB3fmhISKXAEPSvvQm9fmp5LfSNWkkwnZOb4j9pD4ngGXG29ETSxNEuKTk0qti2zfWDvfvduz91azdAg5zxy8YPj3hW4HweFkARnhYyKkFHhZ1hd-8qAg_s3u4c3y8qJezdjwf5o5ffYX5cHV6d2NaOtyn7uOAxbx5_rLPd7B_e3rPHeynJ_mI11e3qZ-e5H_sPbkoUe8yvr_UCNrIjGsnpjryU2LSDqgujSOP8LgjjaXsgPZVnQEJJ_BFPLgLOOUzeX818DDzzz__JwAA__9dRbhc\", \"DIRENV_DIR\": \"-/Users/mjrusso/Library/CloudStorage/Dropbox/Projects/whittle\", \"DIRENV_FILE\": \"/Users/mjrusso/Library/CloudStorage/Dropbox/Projects/whittle/.envrc\", \"DIRENV_WATCHES\": \"eJy0ksuOEzEQRf_F66j97LadLSxZICFWiEXZLqc7cbcj23kJ8e8skBDJaKLJRPMBVefUrfvjF9lDG8ma0O8VS6XzthxqzfTL5AqUC_2U8iF8a7nABunnkvcun-nXkrfoW6WncWotIe1wORZPVmTOoU0zkjXXwhhuhWUrgueptkrWrRzw9-o1Ypeyh0TrCAVpmAouRwop5RM1FizXw-B1AN1LG72IXKAG6I3rgzTWefAqmjj0RjDPkRsG4KzjQnHPb7w0V8Yw-4xXwOVCe6WYclJKHaKQOkomuB28EtqD65VmCiRTkQn03MQeZGDoZBy8FloCXmn9l1KEVO_p_FW4TvuBcZ-XOG3-HfLUssdKEhPssFum880_BqO0kW_uyXugKfvdS-ogpP4YasBjHTGlruU53c32558AAAD__7eYMao=\", \"ERL_AFLAGS\": \"-kernel shell_history enabled -kernel shell_history_path '\\\"/Users/mjrusso/Library/CloudStorage/Dropbox/Projects/whittle/.nix-shell/.erlang-history\\\"'\", \"HEX_HOME\": \"/Users/mjrusso/Library/CloudStorage/Dropbox/Projects/whittle/.nix-shell/.hex\", \"HOST_PATH\": \"/nix/store/1l41471x6rlf7l544s1bxkqqgpprd28m-coreutils-9.5/bin:/nix/store/6iir6ljd4yan81glr5wh3zc9x5l0fwdj-findutils-4.10.0/bin:/nix/store/44byadd2lwqid70aarkjdxqm4bnamiff-diffutils-3.10/bin:/nix/store/671pvppgcdzgdxkbhggb5z1zs3dx096y-gnused-4.9/bin:/nix/store/p57w57nln7yjvj95i9wlx27g7gcnwgga-gnugrep-3.11/bin:/nix/store/cqaf3cx80idg9xrqca65rpm3ax8m2xpq-gawk-5.2.2/bin:/nix/store/8pb64yz6kvipynxwbmj8v3mg42r2ainb-gnutar-1.35/bin:/nix/store/11q17b4qydb1z4lksslmz592ld1fphbb-gzip-1.13/bin:/nix/store/xjfp4zg4vz80yc95zfczw5vc09jjcrgn-bzip2-1.0.8-bin/bin:/nix/store/6mcdimq65bpmk4ccsbwk8zqqv0w57xki-gnumake-4.4.1/bin:/nix/store/iafzjk7zbkqaszqfp6n006vvxjrpn4f6-bash-5.2p32/bin:/nix/store/88lm1zpf550i9jl14nkhmrwfpk57h53h-patch-2.7.6/bin:/nix/store/7vh6m6xky6har0cydkpmlq81l0yqzlbq-xz-5.6.2-bin/bin:/nix/store/ciivdvv31qrccs59v9hryac5jzm53qwi-file-5.45/bin\", \"IN_NIX_SHELL\": \"impure\", \"LD\": \"ld\", \"LD_DYLD_PATH\": \"/usr/lib/dyld\", \"MACOSX_DEPLOYMENT_TARGET\": \"11.0\", \"MIX_HOME\": \"/Users/mjrusso/Library/CloudStorage/Dropbox/Projects/whittle/.nix-shell/.mix\", \"NIX_BINTOOLS\": \"/nix/store/gd1a3hsa7mdvlijbx6d1bibjfn215nbk-cctools-binutils-darwin-wrapper-1010.6\", \"NIX_BINTOOLS_WRAPPER_TARGET_HOST_aarch64_apple_darwin\": \"1\", \"NIX_BUILD_CORES\": \"10\", \"NIX_CC\": \"/nix/store/8c3v3rdzvi5364x9m959ijyy6iamqf5f-clang-wrapper-16.0.6\", \"NIX_CC_WRAPPER_TARGET_HOST_aarch64_apple_darwin\": \"1\", \"NIX_CFLAGS_COMPILE\": \" -frandom-seed=2irpgh02jl -isysroot /nix/store/nk8j7xqx1by08vw25h3lbn6jiwvax7cl-sdkroot-11.0/MacOSX11.0.sdk -isystem /nix/store/hxl1k8qgmrm1vfq5f419iv4wybz9szqq-nodejs-20.17.0/include -iframework /nix/store/qwcay9inpzjj0gjwam6xmiv654z8x172-apple-framework-CoreFoundation-11.0.0/Library/Frameworks -isystem /nix/store/1m6h9mfxcclj75vksyv4jhrwf560im2c-libobjc-11.0.0/include -iframework /nix/store/0x80gds60ng6bd1m8c8f5fsnij4afp13-apple-framework-CoreServices-11.0.0/Library/Frameworks -iframework /nix/store/3d1h7h3hg5w2px1nlk1alsl9xzjgnjvk-apple-framework-CFNetwork-11.0.0/Library/Frameworks -iframework /nix/store/by7850n4ij1v8n8bajdrvyk75j0sqar7-apple-framework-CoreAudio-11.0.0/Library/Frameworks -iframework /nix/store/rky2qp0hwnb2qlbwgjwk92fs71pg9ifq-apple-framework-CoreAudioTypes-11.0.0/Library/Frameworks -iframework /nix/store/98y8hasfr23dbslfl946141xc9k9y33f-apple-framework-IOKit-11.0.0/Library/Frameworks -iframework /nix/store/2h70mppfrxsi5dsji3x7di273xzpa5qc-apple-framework-DiskArbitration-11.0.0/Library/Frameworks -iframework /nix/store/sk8faf2vrcijipdfzik6bpgis5b3hn86-apple-framework-NetFS-11.0.0/Library/Frameworks -iframework /nix/store/47db71ydpmdm60aj5fq5n9hxas0s6z7p-apple-framework-Security-11.0.0/Library/Frameworks -isystem /nix/store/p200wg0zblyii6p3nlvb8av18lx72fsl-apple-lib-libDER/include -iframework /nix/store/6bny1f7h83qqwfxkpy90688gbyykqpyk-apple-framework-ServiceManagement-11.0.0/Library/Frameworks -isystem /nix/store/pfnvcf6j6996r1gj27yhisqz88i0g21p-libcxx-16.0.6-dev/include -isystem /nix/store/yqwr0ayx9d9108l52gaff3pjsk7yidi9-compiler-rt-libc-16.0.6-dev/include -iframework /nix/store/kcn9w36a573nhkbl5ci7aa2vdk2q5k16-apple-framework-CoreFoundation-11.0.0/Library/Frameworks -isystem /nix/store/hxl1k8qgmrm1vfq5f419iv4wybz9szqq-nodejs-20.17.0/include -iframework /nix/store/qwcay9inpzjj0gjwam6xmiv654z8x172-apple-framework-CoreFoundation-11.0.0/Library/Frameworks -isystem /nix/store/1m6h9mfxcclj75vksyv4jhrwf560im2c-libobjc-11.0.0/include -iframework /nix/store/0x80gds60ng6bd1m8c8f5fsnij4afp13-apple-framework-CoreServices-11.0.0/Library/Frameworks -iframework /nix/store/3d1h7h3hg5w2px1nlk1alsl9xzjgnjvk-apple-framework-CFNetwork-11.0.0/Library/Frameworks -iframework /nix/store/by7850n4ij1v8n8bajdrvyk75j0sqar7-apple-framework-CoreAudio-11.0.0/Library/Frameworks -iframework /nix/store/rky2qp0hwnb2qlbwgjwk92fs71pg9ifq-apple-framework-CoreAudioTypes-11.0.0/Library/Frameworks -iframework /nix/store/98y8hasfr23dbslfl946141xc9k9y33f-apple-framework-IOKit-11.0.0/Library/Frameworks -iframework /nix/store/2h70mppfrxsi5dsji3x7di273xzpa5qc-apple-framework-DiskArbitration-11.0.0/Library/Frameworks -iframework /nix/store/sk8faf2vrcijipdfzik6bpgis5b3hn86-apple-framework-NetFS-11.0.0/Library/Frameworks -iframework /nix/store/47db71ydpmdm60aj5fq5n9hxas0s6z7p-apple-framework-Security-11.0.0/Library/Frameworks -isystem /nix/store/p200wg0zblyii6p3nlvb8av18lx72fsl-apple-lib-libDER/include -iframework /nix/store/6bny1f7h83qqwfxkpy90688gbyykqpyk-apple-framework-ServiceManagement-11.0.0/Library/Frameworks -isystem /nix/store/pfnvcf6j6996r1gj27yhisqz88i0g21p-libcxx-16.0.6-dev/include -isystem /nix/store/yqwr0ayx9d9108l52gaff3pjsk7yidi9-compiler-rt-libc-16.0.6-dev/include -iframework /nix/store/kcn9w36a573nhkbl5ci7aa2vdk2q5k16-apple-framework-CoreFoundation-11.0.0/Library/Frameworks\", \"NIX_DONT_SET_RPATH\": \"1\", \"NIX_DONT_SET_RPATH_FOR_BUILD\": \"1\", \"NIX_DONT_SET_RPATH_FOR_TARGET\": \"1\", \"NIX_ENFORCE_NO_NATIVE\": \"1\", \"NIX_HARDENING_ENABLE\": \"bindnow format fortify fortify3 pic relro stackprotector strictoverflow zerocallusedregs\", \"NIX_IGNORE_LD_THROUGH_GCC\": \"1\", \"NIX_LDFLAGS\": \" -L/nix/store/1m6h9mfxcclj75vksyv4jhrwf560im2c-libobjc-11.0.0/lib -L/nix/store/5jvcxrw91ccnbj6n67k8kc41dk59raqk-libcxx-16.0.6/lib -L/nix/store/zwmiwn4lqxs1wx5qhhvjkan7hqd75bcp-compiler-rt-libc-16.0.6/lib -L/nix/store/1m6h9mfxcclj75vksyv4jhrwf560im2c-libobjc-11.0.0/lib -L/nix/store/5jvcxrw91ccnbj6n67k8kc41dk59raqk-libcxx-16.0.6/lib -L/nix/store/zwmiwn4lqxs1wx5qhhvjkan7hqd75bcp-compiler-rt-libc-16.0.6/lib\", \"NIX_NO_SELF_RPATH\": \"1\", \"NIX_STORE\": \"/nix/store\", \"NM\": \"nm\", \"NODE_COOKIE\": \"whittlecookie\", \"NODE_NAME\": \"whittle\", \"NODE_PATH\": \"/nix/store/hxl1k8qgmrm1vfq5f419iv4wybz9szqq-nodejs-20.17.0/lib/node_modules\", \"OBJCOPY\": \"objcopy\", \"OBJDUMP\": \"objdump\", \"PATH\": \"/nix/store/ycf3h2kh6azqxcffif7d7bmbr8xf0a3h-elixir-ls-0.21.3/bin:/nix/store/bs3rw8mnv75ikf2cd9f0w5zvbjlvgzgg-lexical-development/bin:/Users/mjrusso/Dropbox/Code/exreplsp/bin:/Users/mjrusso/Library/CloudStorage/Dropbox/Projects/whittle/.nix-shell/.hex/bin:/Users/mjrusso/Library/CloudStorage/Dropbox/Projects/whittle/.nix-shell/.mix/escripts:/Users/mjrusso/Library/CloudStorage/Dropbox/Projects/whittle/.nix-shell/.mix/bin:/Users/mjrusso/Library/CloudStorage/Dropbox/Projects/whittle/assets/node_modules/.bin:/nix/store/132vw7kwdxdnb7hrkz2ka06vhdgg362v-erlang-27.0.1/bin:/nix/store/6y3hrj11wp2fqgj31yc21lbagmjf0sc4-elixir-1.17.2/bin:/nix/store/msgwpjsr2607nmlm4f0klc60m7vyp2ls-git-2.46.0/bin:/nix/store/hxl1k8qgmrm1vfq5f419iv4wybz9szqq-nodejs-20.17.0/bin:/nix/store/2yp7wkv1rffp5w0gfjsm9bywaxhjcnr5-terminal-notifier-2.0.0/bin:/nix/store/hh3rxd2irakfih5bqg3p8q5yap4nhs6f-runapp/bin:/nix/store/vcy0h9z552gr1nhhdmgwk99bas0l2pga-replapp/bin:/nix/store/f26dq2951ji7xl5a4rfk5fcs43j7k03n-iexc/bin:/nix/store/8c3v3rdzvi5364x9m959ijyy6iamqf5f-clang-wrapper-16.0.6/bin:/nix/store/ydjx24wmcpcgkjgn0l1nr1hgb2adny7b-clang-16.0.6/bin:/nix/store/1l41471x6rlf7l544s1bxkqqgpprd28m-coreutils-9.5/bin:/nix/store/gd1a3hsa7mdvlijbx6d1bibjfn215nbk-cctools-binutils-darwin-wrapper-1010.6/bin:/nix/store/8qxrkah3ylxzqbpgilmyqvrddrzzyr63-cctools-binutils-darwin-1010.6/bin:/nix/store/1l41471x6rlf7l544s1bxkqqgpprd28m-coreutils-9.5/bin:/nix/store/6iir6ljd4yan81glr5wh3zc9x5l0fwdj-findutils-4.10.0/bin:/nix/store/44byadd2lwqid70aarkjdxqm4bnamiff-diffutils-3.10/bin:/nix/store/671pvppgcdzgdxkbhggb5z1zs3dx096y-gnused-4.9/bin:/nix/store/p57w57nln7yjvj95i9wlx27g7gcnwgga-gnugrep-3.11/bin:/nix/store/cqaf3cx80idg9xrqca65rpm3ax8m2xpq-gawk-5.2.2/bin:/nix/store/8pb64yz6kvipynxwbmj8v3mg42r2ainb-gnutar-1.35/bin:/nix/store/11q17b4qydb1z4lksslmz592ld1fphbb-gzip-1.13/bin:/nix/store/xjfp4zg4vz80yc95zfczw5vc09jjcrgn-bzip2-1.0.8-bin/bin:/nix/store/6mcdimq65bpmk4ccsbwk8zqqv0w57xki-gnumake-4.4.1/bin:/nix/store/iafzjk7zbkqaszqfp6n006vvxjrpn4f6-bash-5.2p32/bin:/nix/store/88lm1zpf550i9jl14nkhmrwfpk57h53h-patch-2.7.6/bin:/nix/store/7vh6m6xky6har0cydkpmlq81l0yqzlbq-xz-5.6.2-bin/bin:/nix/store/ciivdvv31qrccs59v9hryac5jzm53qwi-file-5.45/bin:/Users/mjrusso/Library/CloudStorage/Dropbox/Projects/whittle/.direnv/bin:/Users/mjrusso/.nix-profile/bin:/run/current-system/sw/bin:/nix/var/nix/profiles/default/bin:/usr/local/bin:/System/Cryptexes/App/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin:/Library/Apple/usr/bin:/opt/homebrew/bin\", \"PATH_LOCALE\": \"/nix/store/59lgkch5skilq9jm5xmy678xcmxvjjj6-adv_cmds-119-locale/share/locale\", \"RANLIB\": \"ranlib\", \"SIZE\": \"size\", \"SOURCE_DATE_EPOCH\": \"315532800\", \"STRINGS\": \"strings\", \"STRIP\": \"strip\", \"XDG_DATA_DIRS\": \"/nix/store/6y3hrj11wp2fqgj31yc21lbagmjf0sc4-elixir-1.17.2/share:/nix/store/msgwpjsr2607nmlm4f0klc60m7vyp2ls-git-2.46.0/share:/nix/store/hxl1k8qgmrm1vfq5f419iv4wybz9szqq-nodejs-20.17.0/share\", \"XPC_SERVICE_NAME\": \"0\", \"ZERO_AR_DATE\": \"1\", \"__darwinAllowLocalNetworking\": \"\", \"__impureHostDeps\": \"/bin/sh /usr/lib/libSystem.B.dylib /usr/lib/system/libunc.dylib /dev/zero /dev/random /dev/urandom /bin/sh\", \"__propagatedImpureHostDeps\": \"\", \"__propagatedSandboxProfile\": \"\", \"__sandboxProfile\": \"\", \"__structuredAttrs\": \"\", \"buildInputs\": \"\", \"buildPhase\": \"{ echo \\\"------------------------------------------------------------\\\";\\n echo \\\" WARNING: the existence of this path is not guaranteed.\\\";\\n echo \\\" It is an internal implementation detail for pkgs.mkShell.\\\";\\n echo \\\"------------------------------------------------------------\\\";\\n echo;\\n # Record all build inputs as runtime dependencies\\n export;\\n} \\u003e\\u003e \\\"$out\\\"\\n\", \"builder\": \"/nix/store/iafzjk7zbkqaszqfp6n006vvxjrpn4f6-bash-5.2p32/bin/bash\", \"cmakeFlags\": \"\", \"configureFlags\": \"\", \"depsBuildBuild\": \"\", \"depsBuildBuildPropagated\": \"\", \"depsBuildTarget\": \"\", \"depsBuildTargetPropagated\": \"\", \"depsHostHost\": \"\", \"depsHostHostPropagated\": \"\", \"depsTargetTarget\": \"\", \"depsTargetTargetPropagated\": \"\", \"doCheck\": \"\", \"doInstallCheck\": \"\", \"dontAddDisableDepTrack\": \"1\", \"mesonFlags\": \"\", \"name\": \"nix-shell-env\", \"nativeBuildInputs\": \"/nix/store/132vw7kwdxdnb7hrkz2ka06vhdgg362v-erlang-27.0.1 /nix/store/6y3hrj11wp2fqgj31yc21lbagmjf0sc4-elixir-1.17.2 /nix/store/msgwpjsr2607nmlm4f0klc60m7vyp2ls-git-2.46.0 /nix/store/hxl1k8qgmrm1vfq5f419iv4wybz9szqq-nodejs-20.17.0 /nix/store/2yp7wkv1rffp5w0gfjsm9bywaxhjcnr5-terminal-notifier-2.0.0 /nix/store/qwcay9inpzjj0gjwam6xmiv654z8x172-apple-framework-CoreFoundation-11.0.0 /nix/store/0x80gds60ng6bd1m8c8f5fsnij4afp13-apple-framework-CoreServices-11.0.0 /nix/store/hh3rxd2irakfih5bqg3p8q5yap4nhs6f-runapp /nix/store/vcy0h9z552gr1nhhdmgwk99bas0l2pga-replapp /nix/store/f26dq2951ji7xl5a4rfk5fcs43j7k03n-iexc\", \"out\": \"/Users/mjrusso/Library/CloudStorage/Dropbox/Projects/whittle/outputs/out\", \"outputs\": \"out\", \"patches\": \"\", \"phases\": \"buildPhase\", \"preferLocalBuild\": \"1\", \"propagatedBuildInputs\": \"\", \"propagatedNativeBuildInputs\": \"\", \"shell\": \"/nix/store/iafzjk7zbkqaszqfp6n006vvxjrpn4f6-bash-5.2p32/bin/bash\", \"shellHook\": \"# Add npm-installed binaries to the PATH.\\nexport PATH=$PWD/assets/node_modules/.bin:$PATH\\n\\n# Store configuration files and scripts used by Mix in this local directory.\\nmkdir -p .nix-shell/.mix\\nexport MIX_HOME=$PWD/.nix-shell/.mix\\nexport PATH=$MIX_HOME/bin:$PATH\\nexport PATH=$MIX_HOME/escripts:$PATH\\n\\n# Store cache and configuration files used by Hex in this local directory.\\nmkdir -p .nix-shell/.hex\\nexport HEX_HOME=$PWD/.nix-shell/.hex\\nexport PATH=$HEX_HOME/bin:$PATH\\n\\n# Enable shell history for IEx.\\nexport ERL_AFLAGS=\\\"-kernel shell_history enabled -kernel shell_history_path '\\\\\\\"$PWD/.nix-shell/.erlang-history\\\\\\\"'\\\"\\n\", \"stdenv\": \"/nix/store/gayh4jw7jl2dbmi4lza08ljh9irjzix5-stdenv-darwin\", \"strictDeps\": \"\", \"system\": \"aarch64-darwin\" }" Direnv exited with 0 and stderr="direnv: loading ~/Library/CloudStorage/Dropbox/Projects/whittle/.envrc direnv: using flake . direnv: nix-direnv: Using cached dev shell direnv: export +AR +AS +CC +CONFIG_SHELL +CXX +ERL_AFLAGS +HEX_HOME +HOST_PATH +IN_NIX_SHELL +LD +LD_DYLD_PATH +MACOSX_DEPLOYMENT_TARGET +MIX_HOME +NIX_BINTOOLS +NIX_BINTOOLS_WRAPPER_TARGET_HOST_aarch64_apple_darwin +NIX_BUILD_CORES +NIX_CC +NIX_CC_WRAPPER_TARGET_HOST_aarch64_apple_darwin +NIX_CFLAGS_COMPILE +NIX_DONT_SET_RPATH +NIX_DONT_SET_RPATH_FOR_BUILD +NIX_DONT_SET_RPATH_FOR_TARGET +NIX_ENFORCE_NO_NATIVE +NIX_HARDENING_ENABLE +NIX_IGNORE_LD_THROUGH_GCC +NIX_LDFLAGS +NIX_NO_SELF_RPATH +NIX_STORE +NM +NODE_COOKIE +NODE_NAME +NODE_PATH +OBJCOPY +OBJDUMP +PATH_LOCALE +RANLIB +SIZE +SOURCE_DATE_EPOCH +STRINGS +STRIP +XDG_DATA_DIRS +ZERO_AR_DATE +__darwinAllowLocalNetworking +__impureHostDeps +__propagatedImpureHostDeps +__propagatedSandboxProfile +__sandboxProfile +__structuredAttrs +buildInputs +buildPhase +builder +cmakeFlags +configureFlags +depsBuildBuild +depsBuildBuildPropagated +depsBuildTarget +depsBuildTargetPropagated +depsHostHost +depsHostHostPropagated +depsTargetTarget +depsTargetTargetPropagated +doCheck +doInstallCheck +dontAddDisableDepTrack +mesonFlags +name +nativeBuildInputs +out +outputs +patches +phases +preferLocalBuild +propagatedBuildInputs +propagatedNativeBuildInputs +shell +shellHook +stdenv +strictDeps +system ~PATH ~XPC_SERVICE_NAME ", stdout="{ \"AR\": \"ar\", \"AS\": \"as\", \"CC\": \"clang\", \"CONFIG_SHELL\": \"/nix/store/iafzjk7zbkqaszqfp6n006vvxjrpn4f6-bash-5.2p32/bin/bash\", \"CXX\": \"clang++\", \"DIRENV_DIFF\": \"eJzsOmlv2zq2f0XQDDAfprK1LxncD47tJL514lwnbdIigEGRlESJoiRS1ja4__1Bst2kse_MS9MP7wENEIsieRYeHZ6N_Lecy2f_lm8n91fymTz-JDAX4zTmWyGy8YiRRsl5FhCKxz5hZ2O-ZWO45RyzUhGtKHE6FvVuiJFmXAE-PPcwYoxwALa03M3YCj6mGQR093q3g5_yNi9xg8V4kufDnG-Th8a3NzG0dr89oYGXLB2BPKd4JDDcclK2I7jDh8YwQ7gZ7bn0s6wUJQf5ay7eieln4BhACCsxZweulsTngLe9SCh-JpTl5TjKUuxzPEhd_iA_3k43d_P158V0vrmZXM_lM7nHRyAoScZGGQ9HIduO5imAYqRphmFZrr5veKb85weZ9QowWfeAXP4gT-76lpA_yNOpfCZDCljYv6xuLhaXm7ur-XLZa0r_mUWZcTwmIOjixOn8pACiK4LcZqpqV1UT85yZga34QESKNdJzQ--ZHvfvPcbHxwP-f_5T_iDPFuv5zefNbNGzorxSxYNApjTborsy4yDE4xnPcj9rxrc8izEsxbiOSFlS_IzsYrGcH-v1m5CNR5hVHD7jfJjcT6_mvZTw762aiO1q3s3_WAebC9uOPWcJ0PKu-bqYXjyQ-ePXZQEd6MNYN5LfXeyK5Hz2O_i4_H19e33-GQefeFDFFx6dXbopUFfu5zv7sSujpuiC-6U1KT5NN_onl1y4wGGT8y1jSQW3TGGPCQ-yB_uBwYesXGCtXq2_3n5O71fZJ7VL4sfHOoq20cMnHm5xXib8ga-72lMy7UuO20i959PJ5zydZNt1neXW-lq7IN1jrZxrkxtteenoi8ePk0t7YfCwu3_AwaRI41hdx7PbZC0uzY9d_Ae7uvWdWv3sfqkVs3msV5-n2H74AunvH6_Axz9WSZZuz3V3XhYz2_qcTsn6PvmDqcb1H_jr5Sz7et66FzSbPqbMo9rH-efVJt9cPJj31fYcflUeV5eGchUsPwmBPs6jWyEutqnrqpvzYqUmD5tt-7gNPwYVulOyML81vwBxHl_dX1K-_WQZ0NAty51MJrPNxsFfrkH2m_xBnq-Xm8nFcnLZfzslwZxhKokIU7qJSK_LrYQZ8ClG0snRTQ7KSPrH0zvVqTeqA97xCPNe-5U9_if5H_IH-Wr-uLlaXb9fbV_QiXDTY17d3W8Olv55_2rU1ExHa2xOA4dapik0v0mKIsxzjnQ3VWDG8bYkVCjeyHo29jtomxBu0xiZLWCuFlJu1ZHRQa-xqBrUKFYCwtAO2hxp6kh9jcA0_RYgpNO6IMhRAeBJjJoiNX0GUhIECiJBsENgjLQjcNvR8irPQ4i6EDWJH4Whb3VaJwzUqJ7dKiHbCowUc-S9Bs0tp7YcRpnTxlXsWcSraaM7oRNCVoch6EFDjvOervYaGBYgMGDjqgSFXsMLCGyL56kBGjfVm7xQQlAnvdUb6a9B3dy3zbazk4rkLWtqP43dykhDU-c6IMzv6ZaAK9rIOBK3phWa45tFi3ytM2kiBE07y9Mp0oI88n0l7EiuaCPNeA3ZxEFudqFZda7aQs_qAtjVVgVVL44hD5nidyTXFW2kjlxlMNOvBJ1CRNLCtvw8TUwIhV8nblcUlVpbTpOQnusUJFgxR-boSFxvdRLfyculqdblgWWpxIupZrIkSnkd5InlRJYRKTkoYaToI2dkv4Z1qshO7SZp7QhwFbYoyVNauBpV26KjfqE0nWKN7JF-asmQkApVlaEVHEJheZUX8RZAK-5SyyhqovRBjmKNTGvvjBc3m5vF4zcnSdJ8y3tvtJzJZzJFQ2sz-7KcfduGQzRC_DFqh-HryXR197iZzW-Xqy_X85v7zf1kfTm_l89kTRup_YzFzzcPKenNQ8_5-eLmfrVa3n1vIUKkASMSwElRRUnsNzbSfOLHAdM1i_mJAmGZZVT0MtztVAR4TZhSc5DnmCuaqqkj-xWNzcN6cns7X--XuBnMEwAcRra5GWKizQ5Nv_gD7KfFcraZrtaD_9XUffcQqbzUGGhUBkddRSzDNhsv9SyPxG1rE5AWgRUoQ9TxzJ49emZvOv0RxqaDX9lMV9e3u5BDUgIOGMpSRWCMftMJz8NI1WMqKUS0gmdZKb3gmCVu7DRFo_mt6la1bkUG9Zkdk7oCjQOpIlDSwyi9GoyvAVzdPfbNkUDJDmOJ05cIo4ZqiVuEKU-1KiiswNQ8Upl163ee6IpCYRnCsVB0daQ5I3VMGKRbhCWFBBykuM548hJdUUPQeoTlXRyrYVyD1G5SUtmW2bmN5ujKIBflG6wyzTi-yLYMDXHowPZI_aajF4d54iTzWmpHXho0ENLYsapEtJUZR7wOLFslqQ4VSvzMj-EB7X9hXm1cNUTCVllo-0hLXegGViAYiU0Q5Jpxkvk7zCsCsfiPrJ8kZyAtciIjCq1azxuN0UQDVFCv6eKQxVVyTO7iBpdD6820_NZxLZWZJNYql7k-iBGv2sSxYlUUgDsnlzbZIpK9nRZPWr3I1ahmvl5Qvw7jOvH0QDhaHnokKP6a1n2b_4ggPbd1IyACrhvIFzSgnmlrptZAL_FawwiOCC5WH0n5djp65Khpnge8EcRCIiZG4yCiO0bT5cAq4BGdGRHJhPuk5P9du09SFIkbgECvOCQxyVHQkcT285AIyzci5tpHFG9weXH3djqmg3xHa1GeotRWQWwFhcW8qAFCFXbn5Ed07vaJ6xs3bK6rah2qnU9bQuzcYLTyXVBpLm0cPRB0T4cSv_-fzdf_bcvaPmu1wIlcoyjqoEny1lNt1w39tk2KvD3eQ_vteg0YCHGK2X9WgxMrCFgFAzu2Pc_mWhjrThsRUXSuS9RQ1_Keb9g0e1-hIFy9WMIxuraouQraxkOeprrU0kMQBEYei8RpCSKeArM0JxRzhZcD6tOIT8omgcyrDRtYjsGixKcWJA4AeoUSvbAS7Vh53mWLfzmSX47klyP55Uh-OZJfjuR_a4v3SdFsdXO_uZvfb9b7dFc7ObC5WK13md1_nvKcCu_nzG8uVuvpfHOz2txM7hef5y_Gribr2fxmcXO5md9MzoeUzCcMsayWgoynoOwfJQnaw9OQcgIljinPJFECmOQ8KzEsMy6JkhNYZhXmAc1qqcM8g4DSrcCI4_Cw2sXlzWo93yxnm_ur9erT5dXmcshLDxwtZ4fao6Qs3-GjKPG_R2DFFWx47WkQMj-2me0kbgJNDSWWx0GRfK9xx_BdnZKambRohFY3VhFFVZwA5kQFciwf5n-lYseY_l8vZf-Zblabu_ny4khn7-5X6_l3ZYZ-4Fo-k1nat1az-Wa6Wn1c9JP2VRaYZQnBiqGbnpEAKuJAwbVp2aZ7gNgf2TwfXAy9x0Xat0ZhlPjjvmuTZmhLca-jq_Pfp6vbL_KZ3H-CLG93fbNP17e7PrRNc_mDfEy8hYER6Ulkg65oYBCQwEGOn_rcbQIVGJGCKWkIV6hQ1JGujY5qj74weO2mrHIskgQ6RF6g1lZX-TGtwi4MFYobAgHtjRamWd6b3R2O70tch2rWNEN4jBuOcyryUxPfVSr_uQhT0oyxgJzkpfi5WN_NJhACl-I7PRmPXhecDb2qnaRGDWK-E_Gk0xOg2lWEwtCw9UrZn2Hozkg9LvvarRHxWNPqXA-KMDa0Fuoa9UGYxoEqoHnQHK3X2qPCbyrCOo8F123VYSlNzUBNKLTV1KnaXKdCCUmp6CPTPj5VeOt-eQWut7lTJ5XGgyC3ajUMYpF6fluDJooh45ZSYp4SBqjCspIEBHNFH5043IgigzdIJxwkAYksvwiN3C2sFuQmi4QdKHzLQJ6_Bqtgq0ZeZ1l6yDUWRSgN68TzfCBUquchUHrNPwEX6DYqdM_SYuI01AImDxIrgMI0YidRDaYQ3MCj8vqPFEtfI2lR3OhmncIchkkcMpVqjGtR6OsAsdbx90hOA7_vBOonVaePxFI0PAGR0dKmK_qQmqZtUXGEeNe13Db-Eu1pdL9O2X6dsv06ZXv_Kds7XSgiHLPqFKJfl53-7192GlLB5Wo6WX4fiY8tj4YJjCyREFp4cWo1aWs7bgPTporj2FYAqjYwRULRNE8ZJILHIgIc78TTR97ryc1ycS6fyRywXTpwt_ja0xGk68fvVp_6ZHM2uZ9v5reraR8kG5plGbqrqv34_XpxM-R3fb7Ihryw77vd9_Sx9ePsskcw2cwW61eHrG8MlQbmfzRYOgJ-a7g0IDh9-6wXxdf5erWZrAdZ7VOozf7MdEJpVi97me9LlYSF8pk8zNidl19lopzhXPTi6c2FiKRvx-SU-LudNDofobZP_74N7bWNEn_L4GEQ4Wrcp-u71u5AdtfeHl52JAb6Oc9yEIISo8VrTl6N3wGG_Ky53W39w7g43VvyLSy3HKNJWfI9Mn9LKFqwfFu-7LiNgOjh_i1hGGXSk6y84-9J_tcTkw6YpIfJ-mZxc3kmlRGWcENEiRnEUhZIZUSENNxtIkJiWSmFW8ABKzFGo1dIFmU_BzDpsIMlkuZ0KJMNJSEJ4RIQKgUZl_IkFKM0uesTlld4ftKyhsbfpDWGGUcSoFQapCiRQa4SEBLfspKkWEI4xwxhBgkWA3STZ7z81xP7U3raqqqBd7_Sk_z3bFs-yU_s8Ekw_zm3HWHvtS8oCPffG2YsIOGWv-xDOBfnPdHh51Tf7TcNfDV6D3iIy5Odp2B6ze7_j3tOzd7heU3iZe8RVDaNMEwOLwsmSkDpd32snCA0IwL4FM9wfs_BMNbbihSLjL2QCwNpvyu-pb8KZtXQXZIKn3-3k344c5V-2BRLP2aE33HGJv2ETPXnn8n97IMy6e15tPQDObT01vxZ_iBn2_K996-ybdmrbP_cIdwr8O59iLXxXv3z3iv07Rc-4oOccxxgPnjSg7nQhu7DTjx_7WKeh25O7Bz5gzxsrp9j7gZUV1nWb-m_SROEJJanCtnZAYwknzDACRZSmQ0OqY_sRk9sZ5eHt9_-fvsw--sS1d_7OU_sif1N6mWNpYNB3fmhISKXAEPSvvQm9fmp5LfSNWkkwnZOb4j9pD4ngGXG29ETSxNEuKTk0qti2zfWDvfvduz91azdAg5zxy8YPj3hW4HweFkARnhYyKkFHhZ1hd-8qAg_s3u4c3y8qJezdjwf5o5ffYX5cHV6d2NaOtyn7uOAxbx5_rLPd7B_e3rPHeynJ_mI11e3qZ-e5H_sPbkoUe8yvr_UCNrIjGsnpjryU2LSDqgujSOP8LgjjaXsgPZVnQEJJ_BFPLgLOOUzeX818DDzzz__JwAA__9dRbhc\", \"DIRENV_DIR\": \"-/Users/mjrusso/Library/CloudStorage/Dropbox/Projects/whittle\", \"DIRENV_FILE\": \"/Users/mjrusso/Library/CloudStorage/Dropbox/Projects/whittle/.envrc\", \"DIRENV_WATCHES\": \"eJy0ksuOEzEQRf_F66j97LadLSxZICFWiEXZLqc7cbcj23kJ8e8skBDJaKLJRPMBVefUrfvjF9lDG8ma0O8VS6XzthxqzfTL5AqUC_2U8iF8a7nABunnkvcun-nXkrfoW6WncWotIe1wORZPVmTOoU0zkjXXwhhuhWUrgueptkrWrRzw9-o1Ypeyh0TrCAVpmAouRwop5RM1FizXw-B1AN1LG72IXKAG6I3rgzTWefAqmjj0RjDPkRsG4KzjQnHPb7w0V8Yw-4xXwOVCe6WYclJKHaKQOkomuB28EtqD65VmCiRTkQn03MQeZGDoZBy8FloCXmn9l1KEVO_p_FW4TvuBcZ-XOG3-HfLUssdKEhPssFum880_BqO0kW_uyXugKfvdS-ogpP4YasBjHTGlruU53c32558AAAD__7eYMao=\", \"ERL_AFLAGS\": \"-kernel shell_history enabled -kernel shell_history_path '\\\"/Users/mjrusso/Library/CloudStorage/Dropbox/Projects/whittle/.nix-shell/.erlang-history\\\"'\", \"HEX_HOME\": \"/Users/mjrusso/Library/CloudStorage/Dropbox/Projects/whittle/.nix-shell/.hex\", \"HOST_PATH\": \"/nix/store/1l41471x6rlf7l544s1bxkqqgpprd28m-coreutils-9.5/bin:/nix/store/6iir6ljd4yan81glr5wh3zc9x5l0fwdj-findutils-4.10.0/bin:/nix/store/44byadd2lwqid70aarkjdxqm4bnamiff-diffutils-3.10/bin:/nix/store/671pvppgcdzgdxkbhggb5z1zs3dx096y-gnused-4.9/bin:/nix/store/p57w57nln7yjvj95i9wlx27g7gcnwgga-gnugrep-3.11/bin:/nix/store/cqaf3cx80idg9xrqca65rpm3ax8m2xpq-gawk-5.2.2/bin:/nix/store/8pb64yz6kvipynxwbmj8v3mg42r2ainb-gnutar-1.35/bin:/nix/store/11q17b4qydb1z4lksslmz592ld1fphbb-gzip-1.13/bin:/nix/store/xjfp4zg4vz80yc95zfczw5vc09jjcrgn-bzip2-1.0.8-bin/bin:/nix/store/6mcdimq65bpmk4ccsbwk8zqqv0w57xki-gnumake-4.4.1/bin:/nix/store/iafzjk7zbkqaszqfp6n006vvxjrpn4f6-bash-5.2p32/bin:/nix/store/88lm1zpf550i9jl14nkhmrwfpk57h53h-patch-2.7.6/bin:/nix/store/7vh6m6xky6har0cydkpmlq81l0yqzlbq-xz-5.6.2-bin/bin:/nix/store/ciivdvv31qrccs59v9hryac5jzm53qwi-file-5.45/bin\", \"IN_NIX_SHELL\": \"impure\", \"LD\": \"ld\", \"LD_DYLD_PATH\": \"/usr/lib/dyld\", \"MACOSX_DEPLOYMENT_TARGET\": \"11.0\", \"MIX_HOME\": \"/Users/mjrusso/Library/CloudStorage/Dropbox/Projects/whittle/.nix-shell/.mix\", \"NIX_BINTOOLS\": \"/nix/store/gd1a3hsa7mdvlijbx6d1bibjfn215nbk-cctools-binutils-darwin-wrapper-1010.6\", \"NIX_BINTOOLS_WRAPPER_TARGET_HOST_aarch64_apple_darwin\": \"1\", \"NIX_BUILD_CORES\": \"10\", \"NIX_CC\": \"/nix/store/8c3v3rdzvi5364x9m959ijyy6iamqf5f-clang-wrapper-16.0.6\", \"NIX_CC_WRAPPER_TARGET_HOST_aarch64_apple_darwin\": \"1\", \"NIX_CFLAGS_COMPILE\": \" -frandom-seed=2irpgh02jl -isysroot /nix/store/nk8j7xqx1by08vw25h3lbn6jiwvax7cl-sdkroot-11.0/MacOSX11.0.sdk -isystem /nix/store/hxl1k8qgmrm1vfq5f419iv4wybz9szqq-nodejs-20.17.0/include -iframework /nix/store/qwcay9inpzjj0gjwam6xmiv654z8x172-apple-framework-CoreFoundation-11.0.0/Library/Frameworks -isystem /nix/store/1m6h9mfxcclj75vksyv4jhrwf560im2c-libobjc-11.0.0/include -iframework /nix/store/0x80gds60ng6bd1m8c8f5fsnij4afp13-apple-framework-CoreServices-11.0.0/Library/Frameworks -iframework /nix/store/3d1h7h3hg5w2px1nlk1alsl9xzjgnjvk-apple-framework-CFNetwork-11.0.0/Library/Frameworks -iframework /nix/store/by7850n4ij1v8n8bajdrvyk75j0sqar7-apple-framework-CoreAudio-11.0.0/Library/Frameworks -iframework /nix/store/rky2qp0hwnb2qlbwgjwk92fs71pg9ifq-apple-framework-CoreAudioTypes-11.0.0/Library/Frameworks -iframework /nix/store/98y8hasfr23dbslfl946141xc9k9y33f-apple-framework-IOKit-11.0.0/Library/Frameworks -iframework /nix/store/2h70mppfrxsi5dsji3x7di273xzpa5qc-apple-framework-DiskArbitration-11.0.0/Library/Frameworks -iframework /nix/store/sk8faf2vrcijipdfzik6bpgis5b3hn86-apple-framework-NetFS-11.0.0/Library/Frameworks -iframework /nix/store/47db71ydpmdm60aj5fq5n9hxas0s6z7p-apple-framework-Security-11.0.0/Library/Frameworks -isystem /nix/store/p200wg0zblyii6p3nlvb8av18lx72fsl-apple-lib-libDER/include -iframework /nix/store/6bny1f7h83qqwfxkpy90688gbyykqpyk-apple-framework-ServiceManagement-11.0.0/Library/Frameworks -isystem /nix/store/pfnvcf6j6996r1gj27yhisqz88i0g21p-libcxx-16.0.6-dev/include -isystem /nix/store/yqwr0ayx9d9108l52gaff3pjsk7yidi9-compiler-rt-libc-16.0.6-dev/include -iframework /nix/store/kcn9w36a573nhkbl5ci7aa2vdk2q5k16-apple-framework-CoreFoundation-11.0.0/Library/Frameworks -isystem /nix/store/hxl1k8qgmrm1vfq5f419iv4wybz9szqq-nodejs-20.17.0/include -iframework /nix/store/qwcay9inpzjj0gjwam6xmiv654z8x172-apple-framework-CoreFoundation-11.0.0/Library/Frameworks -isystem /nix/store/1m6h9mfxcclj75vksyv4jhrwf560im2c-libobjc-11.0.0/include -iframework /nix/store/0x80gds60ng6bd1m8c8f5fsnij4afp13-apple-framework-CoreServices-11.0.0/Library/Frameworks -iframework /nix/store/3d1h7h3hg5w2px1nlk1alsl9xzjgnjvk-apple-framework-CFNetwork-11.0.0/Library/Frameworks -iframework /nix/store/by7850n4ij1v8n8bajdrvyk75j0sqar7-apple-framework-CoreAudio-11.0.0/Library/Frameworks -iframework /nix/store/rky2qp0hwnb2qlbwgjwk92fs71pg9ifq-apple-framework-CoreAudioTypes-11.0.0/Library/Frameworks -iframework /nix/store/98y8hasfr23dbslfl946141xc9k9y33f-apple-framework-IOKit-11.0.0/Library/Frameworks -iframework /nix/store/2h70mppfrxsi5dsji3x7di273xzpa5qc-apple-framework-DiskArbitration-11.0.0/Library/Frameworks -iframework /nix/store/sk8faf2vrcijipdfzik6bpgis5b3hn86-apple-framework-NetFS-11.0.0/Library/Frameworks -iframework /nix/store/47db71ydpmdm60aj5fq5n9hxas0s6z7p-apple-framework-Security-11.0.0/Library/Frameworks -isystem /nix/store/p200wg0zblyii6p3nlvb8av18lx72fsl-apple-lib-libDER/include -iframework /nix/store/6bny1f7h83qqwfxkpy90688gbyykqpyk-apple-framework-ServiceManagement-11.0.0/Library/Frameworks -isystem /nix/store/pfnvcf6j6996r1gj27yhisqz88i0g21p-libcxx-16.0.6-dev/include -isystem /nix/store/yqwr0ayx9d9108l52gaff3pjsk7yidi9-compiler-rt-libc-16.0.6-dev/include -iframework /nix/store/kcn9w36a573nhkbl5ci7aa2vdk2q5k16-apple-framework-CoreFoundation-11.0.0/Library/Frameworks\", \"NIX_DONT_SET_RPATH\": \"1\", \"NIX_DONT_SET_RPATH_FOR_BUILD\": \"1\", \"NIX_DONT_SET_RPATH_FOR_TARGET\": \"1\", \"NIX_ENFORCE_NO_NATIVE\": \"1\", \"NIX_HARDENING_ENABLE\": \"bindnow format fortify fortify3 pic relro stackprotector strictoverflow zerocallusedregs\", \"NIX_IGNORE_LD_THROUGH_GCC\": \"1\", \"NIX_LDFLAGS\": \" -L/nix/store/1m6h9mfxcclj75vksyv4jhrwf560im2c-libobjc-11.0.0/lib -L/nix/store/5jvcxrw91ccnbj6n67k8kc41dk59raqk-libcxx-16.0.6/lib -L/nix/store/zwmiwn4lqxs1wx5qhhvjkan7hqd75bcp-compiler-rt-libc-16.0.6/lib -L/nix/store/1m6h9mfxcclj75vksyv4jhrwf560im2c-libobjc-11.0.0/lib -L/nix/store/5jvcxrw91ccnbj6n67k8kc41dk59raqk-libcxx-16.0.6/lib -L/nix/store/zwmiwn4lqxs1wx5qhhvjkan7hqd75bcp-compiler-rt-libc-16.0.6/lib\", \"NIX_NO_SELF_RPATH\": \"1\", \"NIX_STORE\": \"/nix/store\", \"NM\": \"nm\", \"NODE_COOKIE\": \"whittlecookie\", \"NODE_NAME\": \"whittle\", \"NODE_PATH\": \"/nix/store/hxl1k8qgmrm1vfq5f419iv4wybz9szqq-nodejs-20.17.0/lib/node_modules\", \"OBJCOPY\": \"objcopy\", \"OBJDUMP\": \"objdump\", \"PATH\": \"/nix/store/ycf3h2kh6azqxcffif7d7bmbr8xf0a3h-elixir-ls-0.21.3/bin:/nix/store/bs3rw8mnv75ikf2cd9f0w5zvbjlvgzgg-lexical-development/bin:/Users/mjrusso/Dropbox/Code/exreplsp/bin:/Users/mjrusso/Library/CloudStorage/Dropbox/Projects/whittle/.nix-shell/.hex/bin:/Users/mjrusso/Library/CloudStorage/Dropbox/Projects/whittle/.nix-shell/.mix/escripts:/Users/mjrusso/Library/CloudStorage/Dropbox/Projects/whittle/.nix-shell/.mix/bin:/Users/mjrusso/Library/CloudStorage/Dropbox/Projects/whittle/assets/node_modules/.bin:/nix/store/132vw7kwdxdnb7hrkz2ka06vhdgg362v-erlang-27.0.1/bin:/nix/store/6y3hrj11wp2fqgj31yc21lbagmjf0sc4-elixir-1.17.2/bin:/nix/store/msgwpjsr2607nmlm4f0klc60m7vyp2ls-git-2.46.0/bin:/nix/store/hxl1k8qgmrm1vfq5f419iv4wybz9szqq-nodejs-20.17.0/bin:/nix/store/2yp7wkv1rffp5w0gfjsm9bywaxhjcnr5-terminal-notifier-2.0.0/bin:/nix/store/hh3rxd2irakfih5bqg3p8q5yap4nhs6f-runapp/bin:/nix/store/vcy0h9z552gr1nhhdmgwk99bas0l2pga-replapp/bin:/nix/store/f26dq2951ji7xl5a4rfk5fcs43j7k03n-iexc/bin:/nix/store/8c3v3rdzvi5364x9m959ijyy6iamqf5f-clang-wrapper-16.0.6/bin:/nix/store/ydjx24wmcpcgkjgn0l1nr1hgb2adny7b-clang-16.0.6/bin:/nix/store/1l41471x6rlf7l544s1bxkqqgpprd28m-coreutils-9.5/bin:/nix/store/gd1a3hsa7mdvlijbx6d1bibjfn215nbk-cctools-binutils-darwin-wrapper-1010.6/bin:/nix/store/8qxrkah3ylxzqbpgilmyqvrddrzzyr63-cctools-binutils-darwin-1010.6/bin:/nix/store/1l41471x6rlf7l544s1bxkqqgpprd28m-coreutils-9.5/bin:/nix/store/6iir6ljd4yan81glr5wh3zc9x5l0fwdj-findutils-4.10.0/bin:/nix/store/44byadd2lwqid70aarkjdxqm4bnamiff-diffutils-3.10/bin:/nix/store/671pvppgcdzgdxkbhggb5z1zs3dx096y-gnused-4.9/bin:/nix/store/p57w57nln7yjvj95i9wlx27g7gcnwgga-gnugrep-3.11/bin:/nix/store/cqaf3cx80idg9xrqca65rpm3ax8m2xpq-gawk-5.2.2/bin:/nix/store/8pb64yz6kvipynxwbmj8v3mg42r2ainb-gnutar-1.35/bin:/nix/store/11q17b4qydb1z4lksslmz592ld1fphbb-gzip-1.13/bin:/nix/store/xjfp4zg4vz80yc95zfczw5vc09jjcrgn-bzip2-1.0.8-bin/bin:/nix/store/6mcdimq65bpmk4ccsbwk8zqqv0w57xki-gnumake-4.4.1/bin:/nix/store/iafzjk7zbkqaszqfp6n006vvxjrpn4f6-bash-5.2p32/bin:/nix/store/88lm1zpf550i9jl14nkhmrwfpk57h53h-patch-2.7.6/bin:/nix/store/7vh6m6xky6har0cydkpmlq81l0yqzlbq-xz-5.6.2-bin/bin:/nix/store/ciivdvv31qrccs59v9hryac5jzm53qwi-file-5.45/bin:/Users/mjrusso/Library/CloudStorage/Dropbox/Projects/whittle/.direnv/bin:/Users/mjrusso/.nix-profile/bin:/run/current-system/sw/bin:/nix/var/nix/profiles/default/bin:/usr/local/bin:/System/Cryptexes/App/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin:/Library/Apple/usr/bin:/opt/homebrew/bin\", \"PATH_LOCALE\": \"/nix/store/59lgkch5skilq9jm5xmy678xcmxvjjj6-adv_cmds-119-locale/share/locale\", \"RANLIB\": \"ranlib\", \"SIZE\": \"size\", \"SOURCE_DATE_EPOCH\": \"315532800\", \"STRINGS\": \"strings\", \"STRIP\": \"strip\", \"XDG_DATA_DIRS\": \"/nix/store/6y3hrj11wp2fqgj31yc21lbagmjf0sc4-elixir-1.17.2/share:/nix/store/msgwpjsr2607nmlm4f0klc60m7vyp2ls-git-2.46.0/share:/nix/store/hxl1k8qgmrm1vfq5f419iv4wybz9szqq-nodejs-20.17.0/share\", \"XPC_SERVICE_NAME\": \"0\", \"ZERO_AR_DATE\": \"1\", \"__darwinAllowLocalNetworking\": \"\", \"__impureHostDeps\": \"/bin/sh /usr/lib/libSystem.B.dylib /usr/lib/system/libunc.dylib /dev/zero /dev/random /dev/urandom /bin/sh\", \"__propagatedImpureHostDeps\": \"\", \"__propagatedSandboxProfile\": \"\", \"__sandboxProfile\": \"\", \"__structuredAttrs\": \"\", \"buildInputs\": \"\", \"buildPhase\": \"{ echo \\\"------------------------------------------------------------\\\";\\n echo \\\" WARNING: the existence of this path is not guaranteed.\\\";\\n echo \\\" It is an internal implementation detail for pkgs.mkShell.\\\";\\n echo \\\"------------------------------------------------------------\\\";\\n echo;\\n # Record all build inputs as runtime dependencies\\n export;\\n} \\u003e\\u003e \\\"$out\\\"\\n\", \"builder\": \"/nix/store/iafzjk7zbkqaszqfp6n006vvxjrpn4f6-bash-5.2p32/bin/bash\", \"cmakeFlags\": \"\", \"configureFlags\": \"\", \"depsBuildBuild\": \"\", \"depsBuildBuildPropagated\": \"\", \"depsBuildTarget\": \"\", \"depsBuildTargetPropagated\": \"\", \"depsHostHost\": \"\", \"depsHostHostPropagated\": \"\", \"depsTargetTarget\": \"\", \"depsTargetTargetPropagated\": \"\", \"doCheck\": \"\", \"doInstallCheck\": \"\", \"dontAddDisableDepTrack\": \"1\", \"mesonFlags\": \"\", \"name\": \"nix-shell-env\", \"nativeBuildInputs\": \"/nix/store/132vw7kwdxdnb7hrkz2ka06vhdgg362v-erlang-27.0.1 /nix/store/6y3hrj11wp2fqgj31yc21lbagmjf0sc4-elixir-1.17.2 /nix/store/msgwpjsr2607nmlm4f0klc60m7vyp2ls-git-2.46.0 /nix/store/hxl1k8qgmrm1vfq5f419iv4wybz9szqq-nodejs-20.17.0 /nix/store/2yp7wkv1rffp5w0gfjsm9bywaxhjcnr5-terminal-notifier-2.0.0 /nix/store/qwcay9inpzjj0gjwam6xmiv654z8x172-apple-framework-CoreFoundation-11.0.0 /nix/store/0x80gds60ng6bd1m8c8f5fsnij4afp13-apple-framework-CoreServices-11.0.0 /nix/store/hh3rxd2irakfih5bqg3p8q5yap4nhs6f-runapp /nix/store/vcy0h9z552gr1nhhdmgwk99bas0l2pga-replapp /nix/store/f26dq2951ji7xl5a4rfk5fcs43j7k03n-iexc\", \"out\": \"/Users/mjrusso/Library/CloudStorage/Dropbox/Projects/whittle/outputs/out\", \"outputs\": \"out\", \"patches\": \"\", \"phases\": \"buildPhase\", \"preferLocalBuild\": \"1\", \"propagatedBuildInputs\": \"\", \"propagatedNativeBuildInputs\": \"\", \"shell\": \"/nix/store/iafzjk7zbkqaszqfp6n006vvxjrpn4f6-bash-5.2p32/bin/bash\", \"shellHook\": \"# Add npm-installed binaries to the PATH.\\nexport PATH=$PWD/assets/node_modules/.bin:$PATH\\n\\n# Store configuration files and scripts used by Mix in this local directory.\\nmkdir -p .nix-shell/.mix\\nexport MIX_HOME=$PWD/.nix-shell/.mix\\nexport PATH=$MIX_HOME/bin:$PATH\\nexport PATH=$MIX_HOME/escripts:$PATH\\n\\n# Store cache and configuration files used by Hex in this local directory.\\nmkdir -p .nix-shell/.hex\\nexport HEX_HOME=$PWD/.nix-shell/.hex\\nexport PATH=$HEX_HOME/bin:$PATH\\n\\n# Enable shell history for IEx.\\nexport ERL_AFLAGS=\\\"-kernel shell_history enabled -kernel shell_history_path '\\\\\\\"$PWD/.nix-shell/.erlang-history\\\\\\\"'\\\"\\n\", \"stdenv\": \"/nix/store/gayh4jw7jl2dbmi4lza08ljh9irjzix5-stdenv-darwin\", \"strictDeps\": \"\", \"system\": \"aarch64-darwin\" }" [*envrc*] applied merged environment [*scratch* (whittle)] applied merged environment [magit: whittle] applied merged environment [bookmarks] reset environment to default [bookmarks] reset environment to default [whittle.ex] applied merged environment [whittle.ex] applied merged environment [*EGLOT (whittle/(elixir-ts-mode)) stderr*] applied merged environment [ *eldoc*] applied merged environment [*compilation*] applied merged environment ```
Output from `*envrc*`... ``` ──── 2024-10-13 07:44:24 ──── /Users/mjrusso/Library/CloudStorage/Dropbox/Projects/whittle/ ──── direnv: loading ~/Library/CloudStorage/Dropbox/Projects/whittle/.envrc direnv: using flake . direnv: nix-direnv: Using cached dev shell direnv: export +AR +AS +CC +CONFIG_SHELL +CXX +ERL_AFLAGS +HEX_HOME +HOST_PATH +IN_NIX_SHELL +LD +LD_DYLD_PATH +MACOSX_DEPLOYMENT_TARGET +MIX_HOME +NIX_BINTOOLS +NIX_BINTOOLS_WRAPPER_TARGET_HOST_aarch64_apple_darwin +NIX_BUILD_CORES +NIX_CC +NIX_CC_WRAPPER_TARGET_HOST_aarch64_apple_darwin +NIX_CFLAGS_COMPILE +NIX_DONT_SET_RPATH +NIX_DONT_SET_RPATH_FOR_BUILD +NIX_DONT_SET_RPATH_FOR_TARGET +NIX_ENFORCE_NO_NATIVE +NIX_HARDENING_ENABLE +NIX_IGNORE_LD_THROUGH_GCC +NIX_LDFLAGS +NIX_NO_SELF_RPATH +NIX_STORE +NM +NODE_COOKIE +NODE_NAME +NODE_PATH +OBJCOPY +OBJDUMP +PATH_LOCALE +RANLIB +SIZE +SOURCE_DATE_EPOCH +STRINGS +STRIP +XDG_DATA_DIRS +ZERO_AR_DATE +__darwinAllowLocalNetworking +__impureHostDeps +__propagatedImpureHostDeps +__propagatedSandboxProfile +__sandboxProfile +__structuredAttrs +buildInputs +buildPhase +builder +cmakeFlags +configureFlags +depsBuildBuild +depsBuildBuildPropagated +depsBuildTarget +depsBuildTargetPropagated +depsHostHost +depsHostHostPropagated +depsTargetTarget +depsTargetTargetPropagated +doCheck +doInstallCheck +dontAddDisableDepTrack +mesonFlags +name +nativeBuildInputs +out +outputs +patches +phases +preferLocalBuild +propagatedBuildInputs +propagatedNativeBuildInputs +shell +shellHook +stdenv +strictDeps +system ~PATH ~XPC_SERVICE_NAME ──── 2024-10-13 07:44:24 ──── /Users/mjrusso/Library/CloudStorage/Dropbox/Projects/whittle/ ──── direnv: loading ~/Library/CloudStorage/Dropbox/Projects/whittle/.envrc direnv: using flake . direnv: nix-direnv: Using cached dev shell direnv: export +AR +AS +CC +CONFIG_SHELL +CXX +ERL_AFLAGS +HEX_HOME +HOST_PATH +IN_NIX_SHELL +LD +LD_DYLD_PATH +MACOSX_DEPLOYMENT_TARGET +MIX_HOME +NIX_BINTOOLS +NIX_BINTOOLS_WRAPPER_TARGET_HOST_aarch64_apple_darwin +NIX_BUILD_CORES +NIX_CC +NIX_CC_WRAPPER_TARGET_HOST_aarch64_apple_darwin +NIX_CFLAGS_COMPILE +NIX_DONT_SET_RPATH +NIX_DONT_SET_RPATH_FOR_BUILD +NIX_DONT_SET_RPATH_FOR_TARGET +NIX_ENFORCE_NO_NATIVE +NIX_HARDENING_ENABLE +NIX_IGNORE_LD_THROUGH_GCC +NIX_LDFLAGS +NIX_NO_SELF_RPATH +NIX_STORE +NM +NODE_COOKIE +NODE_NAME +NODE_PATH +OBJCOPY +OBJDUMP +PATH_LOCALE +RANLIB +SIZE +SOURCE_DATE_EPOCH +STRINGS +STRIP +XDG_DATA_DIRS +ZERO_AR_DATE +__darwinAllowLocalNetworking +__impureHostDeps +__propagatedImpureHostDeps +__propagatedSandboxProfile +__sandboxProfile +__structuredAttrs +buildInputs +buildPhase +builder +cmakeFlags +configureFlags +depsBuildBuild +depsBuildBuildPropagated +depsBuildTarget +depsBuildTargetPropagated +depsHostHost +depsHostHostPropagated +depsTargetTarget +depsTargetTargetPropagated +doCheck +doInstallCheck +dontAddDisableDepTrack +mesonFlags +name +nativeBuildInputs +out +outputs +patches +phases +preferLocalBuild +propagatedBuildInputs +propagatedNativeBuildInputs +shell +shellHook +stdenv +strictDeps +system ~PATH ~XPC_SERVICE_NAME ``` (The same output repeats in the log; not sure if that is expected.)

My envrc configuration is straightforward:

(use-package envrc
  :init (setq envrc-debug t)
  :hook (after-init . envrc-global-mode)
  )

My fish config.

storvik commented 1 month ago

I am experiencing the exact same behavior with the same system system setup (MacOS M3 with nix, flakes, nix-darwin, nix-direnv, home-manager, and fish). Using emacs-pgtk from the emacs overlay, not sure if it matters.

Everything is loaded and available in the buffer, but if I run shell, async command or compile nothing from direnv is available. Have tried both use flake and PATH_add and the behavior is the same. While trying to research this I installed direnv.el too, but couldn't get that to work either.

mjrusso commented 1 month ago

Using emacs-pgtk from the emacs overlay, not sure if it matters.

I'm also using the Emacs overlay (my current config). But this gave me the idea to try another Emacs install, just to rule that variable out. I downloaded Emacs-pretest-30.0.91-universal.dmg from https://emacsformacosx.com/builds and gave it a spin.

And... M-x compile works properly!!!!

That being said, I'm not 100% sure that this is an emacs-overlay-specific issue though. I've had this problem with M-x compile for a long time and am almost certain that it pre-dates my switch to Nix (before switching, I most recently installed Emacs via https://github.com/d12frosted/homebrew-emacs-plus).

In any event, this should help narrow the problem down. I'll give homebrew-emacs-plus another spin on my system and report back.

mjrusso commented 1 month ago

...and am almost certain that it pre-dates my switch to Nix...

I'll give homebrew-emacs-plus another spin on my system and report back.

Looks like my recollection was incorrect. I just tried homebrew-emacs-plus again, with:

$ brew tap d12frosted/emacs-plus
$ brew install emacs-plus@31 --with-native-comp

And M-x compile also works as expected with this Emacs installation.

storvik commented 1 month ago

Hmm, this is weird. Did the same experiment as you, but with different results. I find that homebrew-emacs-plus has the same issue as my nix installed Emacs. However https://emacsformacosx.com/builds works as expected and both M-x shell and M-x compile picks up on the environment.

Note that nix handles my homebrew installation, though I'm not sure that should matter.

mjrusso commented 1 month ago

Weird indeed. FWIW I've kept my Homebrew installation separate from Nix, but I suspect there's some other underlying configuration difference between our systems that's responsible.

I suppose the next thing to try is non-overlayed Emacs, straight out of nixpkgs. I would expect that to also be broken, but who knows. Knowing either way might help track this down.

mjrusso commented 1 month ago

I just tried emacs30 and emacs-macport... and they both work too. Not at all what I was expecting. @storvik hopefully the same is true on your system; if so that might make this easier to track down.

storvik commented 1 month ago

How are you installing emacs when testing this?

I installed emacs30 from nixpkgs by replacing package in home-managers Emacs module, but the result was the same. compile and shell did not work. To make sure that I was using the correct version (emacs30) I executed which emacs to find that I used /nix/store/8dyfqjiq9336k56kwmnbd5ad6kmfqw68-emacs-with-packages-30.0.91/bin/emacs. I think the emacs-with-packages part is a result of using home-managers extraPackages, which I use to get working treesitter, jinx and mu4e.

I then decided to comment out the emacs home-manager module and just put emacs30 to my home.packages and it worked. Then, for fun, I retried emacs-git from the emacs overlay, still adding it to home.packages and it still seems to be working.

mjrusso commented 1 month ago

Yes, I tested the above by adding directly to home.packages.

I wonder if the issue is caused by something emacsWithPackages is doing (and not necessarily the overlay?).

mjrusso commented 1 month ago

I wonder if the issue is caused by something emacsWithPackages is doing (and not necessarily the overlay?).

Doesn't look like this is the case. With my overlay, I added my-emacs to home.packages (instead of my normal my-emacs-with-packages, which uses emacsWithPackages etc.), but M-x compile still doesn't work.

storvik commented 1 month ago

Well, I'm not sure what is happening. Seems to work whenever I run emacs from my shell, but not when running from applications launcher. EmacsForMacOSX seems to be launching emacs from a custom rust program that does some env magic, https://github.com/caldwell/build-emacs/blob/master/launch.rs.

I am using https://github.com/purcell/exec-path-from-shell in my config.

Could this be related somehow https://github.com/d12frosted/homebrew-emacs-plus?tab=readme-ov-file#injected-path

mjrusso commented 1 month ago

I wonder if the issue is caused by something emacsWithPackages is doing (and not necessarily the overlay?).

Doesn't look like this is the case. With my overlay, I added my-emacs to home.packages (instead of my normal my-emacs-with-packages, which uses emacsWithPackages etc.), but M-x compile still doesn't work.

I just tried using my-emacs-base, which is just:

  my-emacs-base = super.emacs-git.override {
    withSQLite3 = true;
    withWebP = true;
    withImageMagick = true;
    withTreeSitter = true;
  };

And that still doesn't work.

I'm trying again without the overrides, which I think may work based on your earlier test.

Well, I'm not sure what is happening. Seems to work whenever I run emacs from my shell, but not when running from applications launcher. EmacsForMacOSX seems to be launching emacs from a custom rust program that does some env magic, https://github.com/caldwell/build-emacs/blob/master/launch.rs.

I am using https://github.com/purcell/exec-path-from-shell in my config.

Could this be related somehow https://github.com/d12frosted/homebrew-emacs-plus?tab=readme-ov-file#injected-path

I'm also using exec-path-from-shell. I'm certain that I tested emacs-macport from the application launcher, which worked properly when installed via nix.

More generally though, I'm not convinced that the issue is related to PATH injection, because the PATH is correct everywhere (except M-x compile and M-x shell, of course).

mjrusso commented 1 month ago

I'm trying again without the overrides, which I think may work based on your earlier test.

I just tried this (i.e., using emacs-git without any overrides specified). It worked when I launched the GUI app by invoking emacs from my terminal, but not when I launched the app from Finder.

It's good that we're seeing the same behaviour at least (and we're getting closer to nailing this down).


Could this be related somehow https://github.com/d12frosted/homebrew-emacs-plus?tab=readme-ov-file#injected-path

Homebrew prints the following after the install:

Your PATH value was injected into Emacs.app/Contents/Info.plist

I just checked what was there:

$ cat /opt/homebrew/opt/emacs-plus@31/Emacs.app/Contents/Info.plist

...snip...
    <dict>
        <key>PATH</key>
        <string>/Users/mjrusso/.nix-profile/bin:/run/current-system/sw/bin:/nix/var/nix/profiles/default/bin:/usr/local/bin:/System/Cryptexes/App/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin:/opt/X11/bin:/Library/Apple/usr/bin:/opt/homebrew/bin</string>
    </dict>
...snip...

This matches what I see when I launch Emacs from Finder (I'd imagine because of exec-path-from-shell), so I don't think this explains it. Something else is responsible. (Note to self: perhaps Fish-related?)

mjrusso commented 1 month ago

I've confirmed that my original Emacs overlay works properly when launched from the terminal. I compared the value of process-environment in both cases (terminal launch vs application launcher) and there are a number of differences, but PATH and SHELL are identical.

The former (terminal launch) has the following though, which I think might be a clue:

__fish_nixos_env_preinit_sourced=1

There are also a number of NIX_* related entries that are only present when launched via terminal, which may play a role.

Reviewing the exec-path-from-shell README, it seems like we should be configuring (at least) the NIX_* environment variables to be copied before calling exec-path-from-shell-initialize.

mjrusso commented 1 month ago

EmacsForMacOSX seems to be launching emacs from a custom rust program that does some env magic, https://github.com/caldwell/build-emacs/blob/master/launch.rs.

This was an excellent clue. I just launched that version of Emacs and checked process-environment for comparison purposes, and it has a lot of vars that are missing when launched via the other application launcher, such as:

__fish_nixos_env_preinit_sourced=1
__NIX_DARWIN_SET_ENVIRONMENT_DONE=1
__HM_SESS_VARS_SOURCED=1
XDG_DATA_DIRS=/Users/mjrusso/.nix-profile/share:/run/current-system/sw/share:/nix/var/nix/profiles/default/share
XDG_CONFIG_DIRS=/Users/mjrusso/.nix-profile/etc/xdg:/run/current-system/sw/etc/xdg:/nix/var/nix/profiles/default/etc/xdg
NIX_USER_PROFILE_DIR=/nix/var/nix/profiles/per-user/mjrusso
NIX_SSL_CERT_FILE=/etc/ssl/certs/ca-certificates.crt
NIX_REMOTE=daemon
NIX_PROFILES=/nix/var/nix/profiles/default /run/current-system/sw /Users/mjrusso/.nix-profile
NIX_PATH=nixpkgs=flake:nixpkgs:/nix/var/nix/profiles/per-user/root/channels
mjrusso commented 1 month ago

This works!

diff --git a/conf/path.el b/conf/path.el
index fb73342..983cc12 100644
--- a/conf/path.el
+++ b/conf/path.el
@@ -3,6 +3,18 @@
 (use-package exec-path-from-shell
   :config
   (when (memq window-system '(mac ns x))
+    (dolist (var '("SSH_AUTH_SOCK"
+                   "SSH_AGENT_PID"
+                   "XDG_DATA_DIRS"
+                   "XDG_CONFIG_DIRS"
+                   "__fish_nixos_env_preinit_sourced"
+                   "__NIX_DARWIN_SET_ENVIRONMENT_DONE"
+                   "__HM_SESS_VARS_SOURCED"
+                   "NIX_USER_PROFILE_DIR"
+                   "NIX_SSL_CERT_FILE"
+                   "NIX_PROFILES"
+                   "NIX_PATH"))
+      (add-to-list 'exec-path-from-shell-variables var))
     (exec-path-from-shell-initialize)))

I also tried without __fish_nixos_env_preinit_sourced, __NIX_DARWIN_SET_ENVIRONMENT_DONE, and __HM_SESS_VARS_SOURCED, but (at least one of) these are necessary.

storvik commented 1 month ago

Great work! I have tested the solution above and everything seems to be working for me now.

mjrusso commented 1 month ago

Thanks for helping to track this down :)

axelknock commented 3 weeks ago

I just troubleshooted the same issue, except that I use emacs as a daemon using launchd, and use zsh as my shell. The solution was to have a nix-darwin plist as follows:

  launchd.user.agents.emacs.serviceConfig = {
    Label = "gnu.emacs.daemon";
    KeepAlive = true;
    ProgramArguments = [
      "/bin/zsh"
      "-ilc"
      "emacs --fg-daemon"
    ];
    RunAtLoad = true;
    ProcessType = "Interactive";
    StandardErrorPath = "/tmp/emacs.err.log";
    StandardOutPath = "/tmp/emacs.out.log";
  };

This is just launching the emacs process via zsh, which as stated above inherits environment variables correctly. This means that when I use M-x compile in an environment where .envrc loads a flake.nix that sets up the development environment, it has the correct environment variables, including PATH, like other buffers managed by envrc-mode.

I presume the problem was a faulty launchd configuration, rather than missing environment variables.