Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Always run 'evaluating derivation' in direnv export (cache check broken?) #528

Closed
ryota2357 opened this issue Oct 13, 2024 · 8 comments
Closed

Comments

@ryota2357
Copy link

ryota2357 commented Oct 13, 2024

Thank you for the great tools!

I'm a beginner in Nix, So I apologize if this is my configuration problem.

Problem

  • direnv export [fish|zsh] always do 'evaluating derivation'.

Expected

  • nix-direnv uses cache and does not do 'evaluating derivation'.

Context

  • I'm using the direnv by eval "$(direnv hook zsh)" with zsh, direnv hook fish | source with fish.
  • Whenever I start a new shell, direnv (internally nix) builds derivation if the PWD is direnv directory.
  • I noticed that nix-direnv has a cache strategy that prevents it from building more derivation than necessary.

    nix-direnv/direnvrc

    Lines 318 to 328 in 0d71ed4

    for file in "${watches[@]}"; do
    if [[ $file -nt $profile_rc ]]; then
    need_update=1
    break
    fi
    done
    if [[ ! -e $profile ||
    ! -e $profile_rc ||
    $need_update -eq 1 ]] \
    ; then

My .envrc is only "use flake".

What I checked

I read nix-direnv/direnvrc and found that nix-direnv checks the modified time of $DIRENV_WATCHES.
This is my $DIRENV_WATCHES when activated direnv.

$ direnv show_dump $DIRENV_WATCHES
[
  {
    "exists": true,
    "modtime": 1728821529,
    "path": "/Users/ryota2357/dotfiles/.envrc"
  },
  {
    "exists": true,
    "modtime": 1728045165,
    "path": "/Users/ryota2357/.local/share/direnv/allow/793c978290d2a425576d9100922614cb89e2f768fb7f15ed3d5a59babc48cd57"
  },
  {
    "exists": false,
    "modtime": 0,
    "path": "/Users/ryota2357/.local/share/direnv/deny/dab39993aec798c20bb4cc2dc1fb3551ca0614579b41a4cba65495cb56bd8e1b"
  },
  {
    "exists": true,
    "modtime": 1728174491,
    "path": "/Users/ryota2357/dotfiles/flake.nix"
  },
  {
    "exists": true,
    "modtime": 1728724931,
    "path": "/Users/ryota2357/dotfiles/flake.lock"
  }
]

My environment has no /Users/ryota2357/.local/share/direnv/deny/da..1b. Moreover, there is no $HOME/.local/share/direnv/deny directory.
Therefore, I assumed that need_update=1 is always set and causing this problem. So I actually created that file and the problem seemed to be fixed. (misunderstand)

Environment

  • macOS 15.0.1 (arm64)
  • nix version: 2.24.7
  • direnv version: 2.35.0
@ryota2357 ryota2357 changed the title Always run 'evaluating derivation' in direnv export (cache broken?) Always run 'evaluating derivation' in direnv export (cache check broken?) Oct 13, 2024
@Mic92
Copy link
Member

Mic92 commented Oct 13, 2024

I checked if there is anything suspicious in the changelog of the last release, but I can't find anything: direnv/direnv@v2.34.0...v2.35.0

@Mic92
Copy link
Member

Mic92 commented Oct 13, 2024

Also just updated to this version, but cannot reproduce the bug.

╭─[~/.homesick/repos/dotfiles]─[main*]─⇡
nix-shell-env % direnv show_dump $DIRENV_WATCHES
[
  {
    "exists": true,
    "modtime": 1728832121,
    "path": "/home/joerg/.homesick/repos/dotfiles/.envrc"
  },
  {
    "exists": true,
    "modtime": 1720696669,
    "path": "/home/joerg/.local/share/direnv/allow/3ef8d74f3682ea6e110725b26cfc791f129173787a3505e90d6e2b0a963709ca"
  },
  {
    "exists": false,
    "modtime": 0,
    "path": "/home/joerg/.local/share/direnv/deny/2bae9cba9e25642826370501475bfbeb63aa64c0afbb890ca284e7629d50b6bf"
  },
  {
    "exists": true,
    "modtime": 1719843813,
    "path": "/home/joerg/.direnvrc"
  },
  {
    "exists": false,
    "modtime": 0,
    "path": "/home/joerg/.config/direnv/direnvrc"
  },
  {
    "exists": true,
    "modtime": 1728648466,
    "path": "/home/joerg/.homesick/repos/dotfiles/flake.nix"
  },
  {
    "exists": true,
    "modtime": 1728731554,
    "path": "/home/joerg/.homesick/repos/dotfiles/flake.lock"
  },
  {
    "exists": false,
    "modtime": 0,
    "path": "/home/joerg/.homesick/repos/dotfiles/devshell.toml"
  }
]

That deny file also doesn't exist but doesn't cause any trouble.


╭─[~/.homesick/repos/dotfiles]─[main*]─⇡
nix-shell-env % ls -al /home/joerg/.local/share/direnv/deny/2bae9cba9e25642826370501475bfbeb63aa64c0afbb890ca284e7629d50b6bf
lsd: /home/joerg/.local/share/direnv/deny/2bae9cba9e25642826370501475bfbeb63aa64c0afbb890ca284e7629d50b6bf: No such file or directory (os error 2)

Is there something in your shell hook that constantly updates any of the watched files?

@Mic92
Copy link
Member

Mic92 commented Oct 13, 2024

Adding set -x before use flake will give you a trace that should explain why your setup constantly has to re-evaluate.

@ryota2357
Copy link
Author

ryota2357 commented Oct 13, 2024

Thank you, this is my log when starts a new shell (fish)

direnv: loading ~/dotfiles/.envrc
++ use flake
++ local cmd=flake
++ log_status 'using flake'
++ [[ -n direnv: %s ]]
++ local 'msg=using flake' color_normal=
++ [[ -t 2 ]]
++ color_normal='\e[m'
++ printf '\e[mdirenv: %s\n' 'using flake'
direnv: using flake
++ shift
++ use_flake
++ watch_file flake.nix
+++ /Users/ryota2357/.nix-profile/bin/direnv watch bash flake.nix
++ eval 'export DIRENV_WATCHES=$'\''eJyk0EtOKzEQheG9eBzFb7vc-7ijKwZV5bLSwulG7SYkQuydGYoiYMIGjr7z_39XL7if1KT0vyHb0Ntt3dH5mHVd9zZ3Gfooy2VjdVDnte7zWdRkswPwzoM5KLnOYx9q2rdX-Tj8PHfsK2PX44Sb6Dpvslw09r6-6WwDpCSuuYQxZWiJgSkRMudKJORbAoCGJhIbAckVW-FqIvnmKH8jCyb-TVZluemK5EspHoVzAXaGKDC7yraRj9EymmRDzIWCxcCEKYYSmWKiCmLpHnZXqmEfv4K-yreOz3Jc5uvjRZtDKPbh4tNnAAAA__9Kx5Nk'\'';'
+++ export DIRENV_WATCHES=eJyk0EtOKzEQheG9eBzFb7vc-7ijKwZV5bLSwulG7SYkQuydGYoiYMIGjr7z_39XL7if1KT0vyHb0Ntt3dH5mHVd9zZ3Gfooy2VjdVDnte7zWdRkswPwzoM5KLnOYx9q2rdX-Tj8PHfsK2PX44Sb6Dpvslw09r6-6WwDpCSuuYQxZWiJgSkRMudKJORbAoCGJhIbAckVW-FqIvnmKH8jCyb-TVZluemK5EspHoVzAXaGKDC7yraRj9EymmRDzIWCxcCEKYYSmWKiCmLpHnZXqmEfv4K-yreOz3Jc5uvjRZtDKPbh4tNnAAAA__9Kx5Nk
+++ DIRENV_WATCHES=eJyk0EtOKzEQheG9eBzFb7vc-7ijKwZV5bLSwulG7SYkQuydGYoiYMIGjr7z_39XL7if1KT0vyHb0Ntt3dH5mHVd9zZ3Gfooy2VjdVDnte7zWdRkswPwzoM5KLnOYx9q2rdX-Tj8PHfsK2PX44Sb6Dpvslw09r6-6WwDpCSuuYQxZWiJgSkRMudKJORbAoCGJhIbAckVW-FqIvnmKH8jCyb-TVZluemK5EspHoVzAXaGKDC7yraRj9EymmRDzIWCxcCEKYYSmWKiCmLpHnZXqmEfv4K-yreOz3Jc5uvjRZtDKPbh4tNnAAAA__9Kx5Nk
++ watch_file flake.lock
+++ /Users/ryota2357/.nix-profile/bin/direnv watch bash flake.lock
++ eval 'export DIRENV_WATCHES=$'\''eJyk0EtqKzEQheG9aGys96v3cUeXDKpKJdxY7g4txbEJ2XtmwTRJCGQDP985_9_EM4yTmIT813nrcruvA4z1UZZ11Llxl0derhuJg7isZcwXFpOOJiVrbFIHwbe5jy6msb3w--H73LGtBE32E2wsy7zxcpXQ2voqo3YpBDbVBPAhphooEQYEolgQGW0NKaUKyiMpThwL1ExFebTVYPxC5pT_m6zwcpcF0OacLTDFnMgoREdkCumK1ntNoIJ2PmZ0GhwhBO-yJ_QBS2KNj7CHpyq0_iPo8_na4MzHZb7tJ-roXNa_n7grtpXO-2Q0Ltt98ukjAAD__5ILrqg='\'';'
+++ export DIRENV_WATCHES=eJyk0EtqKzEQheG9aGys96v3cUeXDKpKJdxY7g4txbEJ2XtmwTRJCGQDP985_9_EM4yTmIT813nrcruvA4z1UZZ11Llxl0derhuJg7isZcwXFpOOJiVrbFIHwbe5jy6msb3w--H73LGtBE32E2wsy7zxcpXQ2voqo3YpBDbVBPAhphooEQYEolgQGW0NKaUKyiMpThwL1ExFebTVYPxC5pT_m6zwcpcF0OacLTDFnMgoREdkCumK1ntNoIJ2PmZ0GhwhBO-yJ_QBS2KNj7CHpyq0_iPo8_na4MzHZb7tJ-roXNa_n7grtpXO-2Q0Ltt98ukjAAD__5ILrqg=
+++ DIRENV_WATCHES=eJyk0EtqKzEQheG9aGys96v3cUeXDKpKJdxY7g4txbEJ2XtmwTRJCGQDP985_9_EM4yTmIT813nrcruvA4z1UZZ11Llxl0derhuJg7isZcwXFpOOJiVrbFIHwbe5jy6msb3w--H73LGtBE32E2wsy7zxcpXQ2voqo3YpBDbVBPAhphooEQYEolgQGW0NKaUKyiMpThwL1ExFebTVYPxC5pT_m6zwcpcF0OacLTDFnMgoREdkCumK1ntNoIJ2PmZ0GhwhBO-yJ_QBS2KNj7CHpyq0_iPo8_na4MzHZb7tJ-roXNa_n7grtpXO-2Q0Ltt98ukjAAD__5ILrqg=
+++ direnv_layout_dir
+++ echo /Users/ryota2357/dotfiles/.direnv
++ mkdir -p /Users/ryota2357/dotfiles/.direnv
++++ direnv_layout_dir
++++ echo /Users/ryota2357/dotfiles/.direnv
+++ nix --extra-experimental-features 'nix-command flakes' print-dev-env --profile /Users/ryota2357/dotfiles/.direnv/flake-profile
warning: Git tree '/Users/ryota2357/dotfiles' is dirty
++ eval 'unset shellHook
PATH=${PATH:-}
nix_saved_PATH="$PATH"
XDG_DATA_DIRS=${XDG_DATA_DIRS:-}
nix_saved_XDG_DATA_DIRS="$XDG_DATA_DIRS"
BASH='\''/nix/store/iafzjk7zbkqaszqfp6n006vvxjrpn4f6-bash-5.2p32/bin/bash'\''
CONFIG_SHELL='\''/nix/store/iafzjk7zbkqaszqfp6n006vvxjrpn4f6-bash-5.2p32/bin/bash'\''
export CONFIG_SHELL
HOSTTYPE='\''aarch64'\''
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'\''
export HOST_PATH
IFS='\''
'\''
IN_NIX_SHELL='\''impure'\''
export IN_NIX_SHELL
LINENO='\''76'\''
MACHTYPE='\''aarch64-apple-darwin23.6.0'\''
MACOSX_DEPLOYMENT_TARGET='\''11.0'\''
export MACOSX_DEPLOYMENT_TARGET
NIX_BUILD_CORES='\''10'\''
export NIX_BUILD_CORES
NIX_CFLAGS_COMPILE='\'' -frandom-seed=5prr9pzb7x -isysroot /nix/store/nk8j7xqx1by08vw25h3lbn6jiwvax7cl-sdkroot-11.0/MacOSX11.0.sdk'\''
export NIX_CFLAGS_COMPILE
NIX_DONT_SET_RPATH='\''1'\''
export NIX_DONT_SET_RPATH
NIX_DONT_SET_RPATH_FOR_BUILD='\''1'\''
export NIX_DONT_SET_RPATH_FOR_BUILD
NIX_DONT_SET_RPATH_FOR_TARGET='\''1'\''
export NIX_DONT_SET_RPATH_FOR_TARGET
NIX_ENFORCE_NO_NATIVE='\''1'\''
export NIX_ENFORCE_NO_NATIVE
NIX_IGNORE_LD_THROUGH_GCC='\''1'\''
export NIX_IGNORE_LD_THROUGH_GCC
NIX_NO_SELF_RPATH='\''1'\''
export NIX_NO_SELF_RPATH
NIX_STORE='\''/nix/store'\''
export NIX_STORE
OLDPWD='\'''\''
export OLDPWD
OPTERR='\''1'\''
OSTYPE='\''darwin23.6.0'\''
PATH='\''/nix/store/9hsv3szycrhby31if26h6b7ngmr20bqf-lua-language-server-3.11.1/bin:/nix/store/bjq8a9aqgmx5kj2bl4xs91dqbla4b35s-vim-language-server-2.3.1/bin:/nix/store/ij8h81g2vsqq8723xlqb89wcj16fz8n2-nil-2024-08-06/bin:/nix/store/2v0yy9j3x5vdgn389l236lizcwkfxay1-stylua-0.20.0/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'\''
export PATH
PATH_LOCALE='\''/nix/store/59lgkch5skilq9jm5xmy678xcmxvjjj6-adv_cmds-119-locale/share/locale'\''
export PATH_LOCALE
PS4='\''+ '\''
SHELL='\''/nix/store/iafzjk7zbkqaszqfp6n006vvxjrpn4f6-bash-5.2p32/bin/bash'\''
export SHELL
SOURCE_DATE_EPOCH='\''315532800'\''
export SOURCE_DATE_EPOCH
XDG_DATA_DIRS='\''/nix/store/9hsv3szycrhby31if26h6b7ngmr20bqf-lua-language-server-3.11.1/share'\''
export XDG_DATA_DIRS
__darwinAllowLocalNetworking='\'''\''
export __darwinAllowLocalNetworking
__impureHostDeps='\''/bin/sh /usr/lib/libSystem.B.dylib /usr/lib/system/libunc.dylib /dev/zero /dev/random /dev/urandom /bin/sh'\''
export __impureHostDeps
__propagatedImpureHostDeps='\'''\''
export __propagatedImpureHostDeps
__propagatedSandboxProfile='\'''\''
export __propagatedSandboxProfile
__sandboxProfile='\'''\''
export __sandboxProfile
__structuredAttrs='\'''\''
export __structuredAttrs
_substituteStream_has_warned_replace_deprecation='\''false'\''
buildInputs='\'''\''
export buildInputs
buildPhase='\''{ echo "------------------------------------------------------------";
  echo " WARNING: the existence of this path is not guaranteed.";
  echo " It is an internal implementation detail for pkgs.mkShell.";
  echo "------------------------------------------------------------";
  echo;
  # Record all build inputs as runtime dependencies
  export;
} >> "$out"
'\''
export buildPhase
builder='\''/nix/store/iafzjk7zbkqaszqfp6n006vvxjrpn4f6-bash-5.2p32/bin/bash'\''
export builder
cmakeFlags='\'''\''
export cmakeFlags
configureFlags='\'''\''
export configureFlags
defaultBuildInputs='\''/nix/store/kcn9w36a573nhkbl5ci7aa2vdk2q5k16-apple-framework-CoreFoundation-11.0.0'\''
defaultNativeBuildInputs='\''/nix/store/l1f08wg4f988zngb4xvg936lpf96kc3a-update-autotools-gnu-config-scripts-hook /nix/store/nk8j7xqx1by08vw25h3lbn6jiwvax7cl-sdkroot-11.0 /nix/store/h9lc1dpi14z7is86ffhl3ld569138595-audit-tmpdir.sh /nix/store/m54bmrhj6fqz8nds5zcj97w9s9bckc9v-compress-man-pages.sh /nix/store/wgrbkkaldkrlrni33ccvm3b6vbxzb656-make-symlinks-relative.sh /nix/store/5yzw0vhkyszf2d179m0qfkgxmp5wjjx4-move-docs.sh /nix/store/fyaryjvghbkpfnsyw97hb3lyb37s1pd6-move-lib64.sh /nix/store/kd4xwxjpjxi71jkm6ka0np72if9rm3y0-move-sbin.sh /nix/store/pag6l61paj1dc9sv15l7bm5c17xn5kyk-move-systemd-user-units.sh /nix/store/jivxp510zxakaaic7qkrb7v1dd2rdbw9-multiple-outputs.sh /nix/store/12lvf0c7xric9cny7slvf9cmhypl1p67-patch-shebangs.sh /nix/store/cickvswrvann041nqxb0rxilc46svw1n-prune-libtool-files.sh /nix/store/xyff06pkhki3qy1ls77w10s0v79c9il0-reproducible-builds.sh /nix/store/aazf105snicrlvyzzbdj85sx4179rpfp-set-source-date-epoch-to-latest.sh /nix/store/gps9qrh99j7g02840wv5x78ykmz30byp-strip.sh'\''
depsBuildBuild='\'''\''
export depsBuildBuild
depsBuildBuildPropagated='\'''\''
export depsBuildBuildPropagated
depsBuildTarget='\'''\''
export depsBuildTarget
depsBuildTargetPropagated='\'''\''
export depsBuildTargetPropagated
depsHostHost='\'''\''
export depsHostHost
depsHostHostPropagated='\'''\''
export depsHostHostPropagated
depsTargetTarget='\'''\''
export depsTargetTarget
depsTargetTargetPropagated='\'''\''
export depsTargetTargetPropagated
doCheck='\'''\''
export doCheck
doInstallCheck='\'''\''
export doInstallCheck
dontAddDisableDepTrack='\''1'\''
export dontAddDisableDepTrack
declare -a envBuildBuildHooks=()
declare -a envBuildHostHooks=()
declare -a envBuildTargetHooks=()
declare -a envHostHostHooks=('\''sdkRootHook'\'' )
declare -a envHostTargetHooks=('\''sdkRootHook'\'' )
declare -a envTargetTargetHooks=()
declare -a fixupOutputHooks=('\''if [[ -z "${noAuditTmpdir-}" && -e "$prefix" ]]; then auditTmpdir "$prefix"; fi'\'' '\''if [ -z "${dontGzipMan-}" ]; then compressManPages "$prefix"; fi'\'' '\''_moveLib64'\'' '\''_moveSbin'\'' '\''_moveSystemdUserUnits'\'' '\''patchShebangsAuto'\'' '\''_pruneLibtoolFiles'\'' '\''_doStrip'\'' )
guess='\''10'\''
initialPath='\''/nix/store/1l41471x6rlf7l544s1bxkqqgpprd28m-coreutils-9.5 /nix/store/6iir6ljd4yan81glr5wh3zc9x5l0fwdj-findutils-4.10.0 /nix/store/44byadd2lwqid70aarkjdxqm4bnamiff-diffutils-3.10 /nix/store/671pvppgcdzgdxkbhggb5z1zs3dx096y-gnused-4.9 /nix/store/p57w57nln7yjvj95i9wlx27g7gcnwgga-gnugrep-3.11 /nix/store/cqaf3cx80idg9xrqca65rpm3ax8m2xpq-gawk-5.2.2 /nix/store/8pb64yz6kvipynxwbmj8v3mg42r2ainb-gnutar-1.35 /nix/store/11q17b4qydb1z4lksslmz592ld1fphbb-gzip-1.13 /nix/store/xjfp4zg4vz80yc95zfczw5vc09jjcrgn-bzip2-1.0.8-bin /nix/store/6mcdimq65bpmk4ccsbwk8zqqv0w57xki-gnumake-4.4.1 /nix/store/iafzjk7zbkqaszqfp6n006vvxjrpn4f6-bash-5.2p32 /nix/store/88lm1zpf550i9jl14nkhmrwfpk57h53h-patch-2.7.6 /nix/store/7vh6m6xky6har0cydkpmlq81l0yqzlbq-xz-5.6.2-bin /nix/store/ciivdvv31qrccs59v9hryac5jzm53qwi-file-5.45'\''
mesonFlags='\'''\''
export mesonFlags
name='\''nix-shell-env'\''
export name
nativeBuildInputs='\''/nix/store/9hsv3szycrhby31if26h6b7ngmr20bqf-lua-language-server-3.11.1 /nix/store/bjq8a9aqgmx5kj2bl4xs91dqbla4b35s-vim-language-server-2.3.1 /nix/store/ij8h81g2vsqq8723xlqb89wcj16fz8n2-nil-2024-08-06 /nix/store/2v0yy9j3x5vdgn389l236lizcwkfxay1-stylua-0.20.0'\''
export nativeBuildInputs
out='\''/Users/ryota2357/dotfiles/outputs/out'\''
export out
outputBin='\''out'\''
outputDev='\''out'\''
outputDevdoc='\''REMOVE'\''
outputDevman='\''out'\''
outputDoc='\''out'\''
outputInclude='\''out'\''
outputInfo='\''out'\''
outputLib='\''out'\''
outputMan='\''out'\''
outputs='\''out'\''
export outputs
patches='\'''\''
export patches
phases='\''buildPhase'\''
export phases
pkg='\''/nix/store/kcn9w36a573nhkbl5ci7aa2vdk2q5k16-apple-framework-CoreFoundation-11.0.0'\''
declare -a pkgsBuildBuild=()
declare -a pkgsBuildHost=('\''/nix/store/9hsv3szycrhby31if26h6b7ngmr20bqf-lua-language-server-3.11.1'\'' '\''/nix/store/bjq8a9aqgmx5kj2bl4xs91dqbla4b35s-vim-language-server-2.3.1'\'' '\''/nix/store/ij8h81g2vsqq8723xlqb89wcj16fz8n2-nil-2024-08-06'\'' '\''/nix/store/2v0yy9j3x5vdgn389l236lizcwkfxay1-stylua-0.20.0'\'' '\''/nix/store/l1f08wg4f988zngb4xvg936lpf96kc3a-update-autotools-gnu-config-scripts-hook'\'' '\''/nix/store/nk8j7xqx1by08vw25h3lbn6jiwvax7cl-sdkroot-11.0'\'' '\''/nix/store/h9lc1dpi14z7is86ffhl3ld569138595-audit-tmpdir.sh'\'' '\''/nix/store/m54bmrhj6fqz8nds5zcj97w9s9bckc9v-compress-man-pages.sh'\'' '\''/nix/store/wgrbkkaldkrlrni33ccvm3b6vbxzb656-make-symlinks-relative.sh'\'' '\''/nix/store/5yzw0vhkyszf2d179m0qfkgxmp5wjjx4-move-docs.sh'\'' '\''/nix/store/fyaryjvghbkpfnsyw97hb3lyb37s1pd6-move-lib64.sh'\'' '\''/nix/store/kd4xwxjpjxi71jkm6ka0np72if9rm3y0-move-sbin.sh'\'' '\''/nix/store/pag6l61paj1dc9sv15l7bm5c17xn5kyk-move-systemd-user-units.sh'\'' '\''/nix/store/jivxp510zxakaaic7qkrb7v1dd2rdbw9-multiple-outputs.sh'\'' '\''/nix/store/12lvf0c7xric9cny7slvf9cmhypl1p67-patch-shebangs.sh'\'' '\''/nix/store/cickvswrvann041nqxb0rxilc46svw1n-prune-libtool-files.sh'\'' '\''/nix/store/xyff06pkhki3qy1ls77w10s0v79c9il0-reproducible-builds.sh'\'' '\''/nix/store/aazf105snicrlvyzzbdj85sx4179rpfp-set-source-date-epoch-to-latest.sh'\'' '\''/nix/store/gps9qrh99j7g02840wv5x78ykmz30byp-strip.sh'\'' )
declare -a pkgsBuildTarget=()
declare -a pkgsHostHost=()
declare -a pkgsHostTarget=('\''/nix/store/kcn9w36a573nhkbl5ci7aa2vdk2q5k16-apple-framework-CoreFoundation-11.0.0'\'' '\''/nix/store/1m6h9mfxcclj75vksyv4jhrwf560im2c-libobjc-11.0.0'\'' )
declare -a pkgsTargetTarget=()
declare -a postFixupHooks=('\''_makeSymlinksRelativeInAllOutputs'\'' '\''_multioutPropagateDev'\'' )
declare -a postUnpackHooks=('\''_updateSourceDateEpochFromSourceRoot'\'' )
declare -a preConfigureHooks=('\''_multioutConfig'\'' )
preConfigurePhases='\'' updateAutotoolsGnuConfigScriptsPhase'\''
declare -a preFixupHooks=('\''_moveToShare'\'' '\''_multioutDocs'\'' '\''_multioutDevs'\'' )
preferLocalBuild='\''1'\''
export preferLocalBuild
prefix='\''/Users/ryota2357/dotfiles/outputs/out'\''
declare -a propagatedBuildDepFiles=('\''propagated-build-build-deps'\'' '\''propagated-native-build-inputs'\'' '\''propagated-build-target-deps'\'' )
propagatedBuildInputs='\'''\''
export propagatedBuildInputs
declare -a propagatedHostDepFiles=('\''propagated-host-host-deps'\'' '\''propagated-build-inputs'\'' )
propagatedNativeBuildInputs='\'''\''
export propagatedNativeBuildInputs
declare -a propagatedTargetDepFiles=('\''propagated-target-target-deps'\'' )
shell='\''/nix/store/iafzjk7zbkqaszqfp6n006vvxjrpn4f6-bash-5.2p32/bin/bash'\''
export shell
shellHook='\'''\''
export shellHook
stdenv='\''/nix/store/kabfxkadn2b8vn6ms91c9vy4q6ks7mkl-stdenv-darwin'\''
export stdenv
strictDeps='\'''\''
export strictDeps
stripDebugFlags='\''-S'\''
system='\''aarch64-darwin'\''
export system
declare -a unpackCmdHooks=('\''_defaultUnpack'\'' )
_activatePkgs ()
{

    local hostOffset targetOffset;
    local pkg;
    for hostOffset in "${allPlatOffsets[@]}";
    do
        local pkgsVar="${pkgAccumVarVars[hostOffset + 1]}";
        for targetOffset in "${allPlatOffsets[@]}";
        do
            (( hostOffset <= targetOffset )) || continue;
            local pkgsRef="${pkgsVar}[$targetOffset - $hostOffset]";
            local pkgsSlice="${!pkgsRef}[@]";
            for pkg in ${!pkgsSlice+"${!pkgsSlice}"};
            do
                activatePackage "$pkg" "$hostOffset" "$targetOffset";
            done;
        done;
    done
}
_addRpathPrefix ()
{

    if [ "${NIX_NO_SELF_RPATH:-0}" != 1 ]; then
        export NIX_LDFLAGS="-rpath $1/lib ${NIX_LDFLAGS-}";
    fi
}
_addToEnv ()
{

    local depHostOffset depTargetOffset;
    local pkg;
    for depHostOffset in "${allPlatOffsets[@]}";
    do
        local hookVar="${pkgHookVarVars[depHostOffset + 1]}";
        local pkgsVar="${pkgAccumVarVars[depHostOffset + 1]}";
        for depTargetOffset in "${allPlatOffsets[@]}";
        do
            (( depHostOffset <= depTargetOffset )) || continue;
            local hookRef="${hookVar}[$depTargetOffset - $depHostOffset]";
            if [[ -z "${strictDeps-}" ]]; then
                local visitedPkgs="";
                for pkg in "${pkgsBuildBuild[@]}" "${pkgsBuildHost[@]}" "${pkgsBuildTarget[@]}" "${pkgsHostHost[@]}" "${pkgsHostTarget[@]}" "${pkgsTargetTarget[@]}";
                do
                    if [[ "$visitedPkgs" = *"$pkg"* ]]; then
                        continue;
                    fi;
                    runHook "${!hookRef}" "$pkg";
                    visitedPkgs+=" $pkg";
                done;
            else
                local pkgsRef="${pkgsVar}[$depTargetOffset - $depHostOffset]";
                local pkgsSlice="${!pkgsRef}[@]";
                for pkg in ${!pkgsSlice+"${!pkgsSlice}"};
                do
                    runHook "${!hookRef}" "$pkg";
                done;
            fi;
        done;
    done
}
_allFlags ()
{

    export system pname name version;
    while IFS='\'''\'' read -r varName; do
        nixTalkativeLog "@${varName}@ -> ${!varName}";
        args+=("--subst-var" "$varName");
    done < <(awk '\''BEGIN { for (v in ENVIRON) if (v ~ /^[a-z][a-zA-Z0-9_]*$/) print v }'\'')
}
_assignFirst ()
{

    local varName="$1";
    local _var;
    local REMOVE=REMOVE;
    shift;
    for _var in "$@";
    do
        if [ -n "${!_var-}" ]; then
            eval "${varName}"="${_var}";
            return;
        fi;
    done;
    echo;
    echo "error: _assignFirst: could not find a non-empty variable whose name to assign to ${varName}.";
    echo "       The following variables were all unset or empty:";
    echo "           $*";
    if [ -z "${out:-}" ]; then
        echo '\''       If you do not want an "out" output in your derivation, make sure to define'\'';
        echo '\''       the other specific required outputs. This can be achieved by picking one'\'';
        echo "       of the above as an output.";
        echo '\''       You do not have to remove "out" if you want to have a different default'\'';
        echo '\''       output, because the first output is taken as a default.'\'';
        echo;
    fi;
    return 1
}
_callImplicitHook ()
{

    local def="$1";
    local hookName="$2";
    if declare -F "$hookName" > /dev/null; then
        nixTalkativeLog "calling implicit '\''$hookName'\'' function hook";
        "$hookName";
    else
        if type -p "$hookName" > /dev/null; then
            nixTalkativeLog "sourcing implicit '\''$hookName'\'' script hook";
            source "$hookName";
        else
            if [ -n "${!hookName:-}" ]; then
                nixTalkativeLog "evaling implicit '\''$hookName'\'' string hook";
                eval "${!hookName}";
            else
                return "$def";
            fi;
        fi;
    fi
}
_defaultUnpack ()
{

    local fn="$1";
    local destination;
    if [ -d "$fn" ]; then
        destination="$(stripHash "$fn")";
        if [ -e "$destination" ]; then
            echo "Cannot copy $fn to $destination: destination already exists!";
            echo "Did you specify two \"srcs\" with the same \"name\"?";
            return 1;
        fi;
        cp -pr --reflink=auto -- "$fn" "$destination";
    else
        case "$fn" in
            *.tar.xz | *.tar.lzma | *.txz)
                ( XZ_OPT="--threads=$NIX_BUILD_CORES" xz -d < "$fn";
                true ) | tar xf - --mode=+w --warning=no-timestamp
            ;;
            *.tar | *.tar.* | *.tgz | *.tbz2 | *.tbz)
                tar xf "$fn" --mode=+w --warning=no-timestamp
            ;;
            *)
                return 1
            ;;
        esac;
    fi
}
_doStrip ()
{

    local -ra flags=(dontStripHost dontStripTarget);
    local -ra debugDirs=(stripDebugList stripDebugListTarget);
    local -ra allDirs=(stripAllList stripAllListTarget);
    local -ra stripCmds=(STRIP STRIP_FOR_TARGET);
    local -ra ranlibCmds=(RANLIB RANLIB_FOR_TARGET);
    stripDebugList=${stripDebugList[*]:-lib lib32 lib64 libexec bin sbin};
    stripDebugListTarget=${stripDebugListTarget[*]:-};
    stripAllList=${stripAllList[*]:-};
    stripAllListTarget=${stripAllListTarget[*]:-};
    local i;
    for i in ${!stripCmds[@]};
    do
        local -n flag="${flags[$i]}";
        local -n debugDirList="${debugDirs[$i]}";
        local -n allDirList="${allDirs[$i]}";
        local -n stripCmd="${stripCmds[$i]}";
        local -n ranlibCmd="${ranlibCmds[$i]}";
        if [[ -n "${dontStrip-}" || -n "${flag-}" ]] || ! type -f "${stripCmd-}" 2> /dev/null 1>&2; then
            continue;
        fi;
        stripDirs "$stripCmd" "$ranlibCmd" "$debugDirList" "${stripDebugFlags[*]:--S -p}";
        stripDirs "$stripCmd" "$ranlibCmd" "$allDirList" "${stripAllFlags[*]:--s -p}";
    done
}
_eval ()
{

    if declare -F "$1" > /dev/null 2>&1; then
        "$@";
    else
        eval "$1";
    fi
}
_logHook ()
{

    if [[ -z ${NIX_LOG_FD-} ]]; then
        return;
    fi;
    local hookKind="$1";
    local hookExpr="$2";
    shift 2;
    if declare -F "$hookExpr" > /dev/null 2>&1; then
        nixTalkativeLog "calling '\''$hookKind'\'' function hook '\''$hookExpr'\''" "$@";
    else
        if type -p "$hookExpr" > /dev/null; then
            nixTalkativeLog "sourcing '\''$hookKind'\'' script hook '\''$hookExpr'\''";
        else
            if [[ "$hookExpr" != "_callImplicitHook"* ]]; then
                local exprToOutput;
                if [[ ${NIX_DEBUG:-0} -ge 5 ]]; then
                    exprToOutput="$hookExpr";
                else
                    local hookExprLine;
                    while IFS= read -r hookExprLine; do
                        hookExprLine="${hookExprLine#"${hookExprLine%%[![:space:]]*}"}";
                        if [[ -n "$hookExprLine" ]]; then
                            exprToOutput+="$hookExprLine\\n ";
                        fi;
                    done <<< "$hookExpr";
                    exprToOutput="${exprToOutput%%\\n }";
                fi;
                nixTalkativeLog "evaling '\''$hookKind'\'' string hook '\''$exprToOutput'\''";
            fi;
        fi;
    fi
}
_makeSymlinksRelative ()
{

    local symlinkTarget;
    if [ "${dontRewriteSymlinks-}" ] || [ ! -e "$prefix" ]; then
        return;
    fi;
    while IFS= read -r -d '\'''\'' f; do
        symlinkTarget=$(readlink "$f");
        if [[ "$symlinkTarget"/ != "$prefix"/* ]]; then
            continue;
        fi;
        if [ ! -e "$symlinkTarget" ]; then
            echo "the symlink $f is broken, it points to $symlinkTarget (which is missing)";
        fi;
        echo "rewriting symlink $f to be relative to $prefix";
        ln -snrf "$symlinkTarget" "$f";
    done < <(find $prefix -type l -print0)
}
_makeSymlinksRelativeInAllOutputs ()
{

    local output;
    for output in $(getAllOutputNames);
    do
        prefix="${!output}" _makeSymlinksRelative;
    done
}
_moveLib64 ()
{

    if [ "${dontMoveLib64-}" = 1 ]; then
        return;
    fi;
    if [ ! -e "$prefix/lib64" -o -L "$prefix/lib64" ]; then
        return;
    fi;
    echo "moving $prefix/lib64/* to $prefix/lib";
    mkdir -p $prefix/lib;
    shopt -s dotglob;
    for i in $prefix/lib64/*;
    do
        mv --no-clobber "$i" $prefix/lib;
    done;
    shopt -u dotglob;
    rmdir $prefix/lib64;
    ln -s lib $prefix/lib64
}
_moveSbin ()
{

    if [ "${dontMoveSbin-}" = 1 ]; then
        return;
    fi;
    if [ ! -e "$prefix/sbin" -o -L "$prefix/sbin" ]; then
        return;
    fi;
    echo "moving $prefix/sbin/* to $prefix/bin";
    mkdir -p $prefix/bin;
    shopt -s dotglob;
    for i in $prefix/sbin/*;
    do
        mv "$i" $prefix/bin;
    done;
    shopt -u dotglob;
    rmdir $prefix/sbin;
    ln -s bin $prefix/sbin
}
_moveSystemdUserUnits ()
{

    if [ "${dontMoveSystemdUserUnits:-0}" = 1 ]; then
        return;
    fi;
    if [ ! -e "${prefix:?}/lib/systemd/user" ]; then
        return;
    fi;
    local source="$prefix/lib/systemd/user";
    local target="$prefix/share/systemd/user";
    echo "moving $source/* to $target";
    mkdir -p "$target";
    ( shopt -s dotglob;
    for i in "$source"/*;
    do
        mv "$i" "$target";
    done );
    rmdir "$source";
    ln -s "$target" "$source"
}
_moveToShare ()
{

    if [ -n "$__structuredAttrs" ]; then
        if [ -z "${forceShare-}" ]; then
            forceShare=(man doc info);
        fi;
    else
        forceShare=(${forceShare:-man doc info});
    fi;
    if [[ -z "$out" ]]; then
        return;
    fi;
    for d in "${forceShare[@]}";
    do
        if [ -d "$out/$d" ]; then
            if [ -d "$out/share/$d" ]; then
                echo "both $d/ and share/$d/ exist!";
            else
                echo "moving $out/$d to $out/share/$d";
                mkdir -p $out/share;
                mv $out/$d $out/share/;
            fi;
        fi;
    done
}
_multioutConfig ()
{

    if [ "$(getAllOutputNames)" = "out" ] || [ -z "${setOutputFlags-1}" ]; then
        return;
    fi;
    if [ -z "${shareDocName:-}" ]; then
        local confScript="${configureScript:-}";
        if [ -z "$confScript" ] && [ -x ./configure ]; then
            confScript=./configure;
        fi;
        if [ -f "$confScript" ]; then
            local shareDocName="$(sed -n "s/^PACKAGE_TARNAME='\''\(.*\)'\''$/\1/p" < "$confScript")";
        fi;
        if [ -z "$shareDocName" ] || echo "$shareDocName" | grep -q '\''[^a-zA-Z0-9_-]'\''; then
            shareDocName="$(echo "$name" | sed '\''s/-[^a-zA-Z].*//'\'')";
        fi;
    fi;
    prependToVar configureFlags --bindir="${!outputBin}"/bin --sbindir="${!outputBin}"/sbin --includedir="${!outputInclude}"/include --oldincludedir="${!outputInclude}"/include --mandir="${!outputMan}"/share/man --infodir="${!outputInfo}"/share/info --docdir="${!outputDoc}"/share/doc/"${shareDocName}" --libdir="${!outputLib}"/lib --libexecdir="${!outputLib}"/libexec --localedir="${!outputLib}"/share/locale;
    prependToVar installFlags pkgconfigdir="${!outputDev}"/lib/pkgconfig m4datadir="${!outputDev}"/share/aclocal aclocaldir="${!outputDev}"/share/aclocal
}
_multioutDevs ()
{

    if [ "$(getAllOutputNames)" = "out" ] || [ -z "${moveToDev-1}" ]; then
        return;
    fi;
    moveToOutput include "${!outputInclude}";
    moveToOutput lib/pkgconfig "${!outputDev}";
    moveToOutput share/pkgconfig "${!outputDev}";
    moveToOutput lib/cmake "${!outputDev}";
    moveToOutput share/aclocal "${!outputDev}";
    for f in "${!outputDev}"/{lib,share}/pkgconfig/*.pc;
    do
        echo "Patching '\''$f'\'' includedir to output ${!outputInclude}";
        sed -i "/^includedir=/s,=\${prefix},=${!outputInclude}," "$f";
    done
}
_multioutDocs ()
{

    local REMOVE=REMOVE;
    moveToOutput share/info "${!outputInfo}";
    moveToOutput share/doc "${!outputDoc}";
    moveToOutput share/gtk-doc "${!outputDevdoc}";
    moveToOutput share/devhelp/books "${!outputDevdoc}";
    moveToOutput share/man "${!outputMan}";
    moveToOutput share/man/man3 "${!outputDevman}"
}
_multioutPropagateDev ()
{

    if [ "$(getAllOutputNames)" = "out" ]; then
        return;
    fi;
    local outputFirst;
    for outputFirst in $(getAllOutputNames);
    do
        break;
    done;
    local propagaterOutput="$outputDev";
    if [ -z "$propagaterOutput" ]; then
        propagaterOutput="$outputFirst";
    fi;
    if [ -z "${propagatedBuildOutputs+1}" ]; then
        local po_dirty="$outputBin $outputInclude $outputLib";
        set +o pipefail;
        propagatedBuildOutputs=`echo "$po_dirty"             | tr -s '\'' '\'' '\''\n'\'' | grep -v -F "$propagaterOutput"             | sort -u | tr '\''\n'\'' '\'' '\'' `;
        set -o pipefail;
    fi;
    if [ -z "$propagatedBuildOutputs" ]; then
        return;
    fi;
    mkdir -p "${!propagaterOutput}"/nix-support;
    for output in $propagatedBuildOutputs;
    do
        echo -n " ${!output}" >> "${!propagaterOutput}"/nix-support/propagated-build-inputs;
    done
}
_overrideFirst ()
{

    if [ -z "${!1-}" ]; then
        _assignFirst "$@";
    fi
}
_pruneLibtoolFiles ()
{

    if [ "${dontPruneLibtoolFiles-}" ] || [ ! -e "$prefix" ]; then
        return;
    fi;
    find "$prefix" -type f -name '\''*.la'\'' -exec grep -q '\''^# Generated by .*libtool'\'' {} \; -exec grep -q "^old_library='\'''\''" {} \; -exec sed -i {} -e "/^dependency_libs='\''[^'\'']/ c dependency_libs='\'''\'' #pruned" \;
}
_updateSourceDateEpochFromSourceRoot ()
{

    if [ -n "$sourceRoot" ]; then
        updateSourceDateEpoch "$sourceRoot";
    fi
}
activatePackage ()
{

    local pkg="$1";
    local -r hostOffset="$2";
    local -r targetOffset="$3";
    (( hostOffset <= targetOffset )) || exit 1;
    if [ -f "$pkg" ]; then
        nixTalkativeLog "sourcing setup hook '\''$pkg'\''";
        source "$pkg";
    fi;
    if [[ -z "${strictDeps-}" || "$hostOffset" -le -1 ]]; then
        addToSearchPath _PATH "$pkg/bin";
    fi;
    if (( hostOffset <= -1 )); then
        addToSearchPath _XDG_DATA_DIRS "$pkg/share";
    fi;
    if [[ "$hostOffset" -eq 0 && -d "$pkg/bin" ]]; then
        addToSearchPath _HOST_PATH "$pkg/bin";
    fi;
    if [[ -f "$pkg/nix-support/setup-hook" ]]; then
        nixTalkativeLog "sourcing setup hook '\''$pkg/nix-support/setup-hook'\''";
        source "$pkg/nix-support/setup-hook";
    fi
}
addEnvHooks ()
{

    local depHostOffset="$1";
    shift;
    local pkgHookVarsSlice="${pkgHookVarVars[$depHostOffset + 1]}[@]";
    local pkgHookVar;
    for pkgHookVar in "${!pkgHookVarsSlice}";
    do
        eval "${pkgHookVar}s"'\''+=("$@")'\'';
    done
}
addToSearchPath ()
{

    addToSearchPathWithCustomDelimiter ":" "$@"
}
addToSearchPathWithCustomDelimiter ()
{

    local delimiter="$1";
    local varName="$2";
    local dir="$3";
    if [[ -d "$dir" && "${!varName:+${delimiter}${!varName}${delimiter}}" != *"${delimiter}${dir}${delimiter}"* ]]; then
        export "${varName}=${!varName:+${!varName}${delimiter}}${dir}";
    fi
}
appendToVar ()
{

    local -n nameref="$1";
    local useArray type;
    if [ -n "$__structuredAttrs" ]; then
        useArray=true;
    else
        useArray=false;
    fi;
    if type=$(declare -p "$1" 2> /dev/null); then
        case "${type#* }" in
            -A*)
                echo "appendToVar(): ERROR: trying to use appendToVar on an associative array, use variable+=([\"X\"]=\"Y\") instead." 1>&2;
                return 1
            ;;
            -a*)
                useArray=true
            ;;
            *)
                useArray=false
            ;;
        esac;
    fi;
    shift;
    if $useArray; then
        nameref=(${nameref+"${nameref[@]}"} "$@");
    else
        nameref="${nameref-} $*";
    fi
}
auditTmpdir ()
{

    local dir="$1";
    [ -e "$dir" ] || return 0;
    echo "checking for references to $TMPDIR/ in $dir...";
    local i;
    find "$dir" -type f -print0 | while IFS= read -r -d '\'''\'' i; do
        if [[ "$i" =~ .build-id ]]; then
            continue;
        fi;
        if isELF "$i"; then
            if {
                printf :;
                patchelf --print-rpath "$i"
            } | grep -q -F ":$TMPDIR/"; then
                echo "RPATH of binary $i contains a forbidden reference to $TMPDIR/";
                exit 1;
            fi;
        fi;
        if isScript "$i"; then
            if [ -e "$(dirname "$i")/.$(basename "$i")-wrapped" ]; then
                if grep -q -F "$TMPDIR/" "$i"; then
                    echo "wrapper script $i contains a forbidden reference to $TMPDIR/";
                    exit 1;
                fi;
            fi;
        fi;
    done
}
buildPhase ()
{

    runHook preBuild;
    if [[ -z "${makeFlags-}" && -z "${makefile:-}" && ! ( -e Makefile || -e makefile || -e GNUmakefile ) ]]; then
        echo "no Makefile or custom buildPhase, doing nothing";
    else
        foundMakefile=1;
        local flagsArray=(${enableParallelBuilding:+-j${NIX_BUILD_CORES}} SHELL="$SHELL");
        concatTo flagsArray makeFlags makeFlagsArray buildFlags buildFlagsArray;
        echoCmd '\''build flags'\'' "${flagsArray[@]}";
        make ${makefile:+-f $makefile} "${flagsArray[@]}";
        unset flagsArray;
    fi;
    runHook postBuild
}
checkPhase ()
{

    runHook preCheck;
    if [[ -z "${foundMakefile:-}" ]]; then
        echo "no Makefile or custom checkPhase, doing nothing";
        runHook postCheck;
        return;
    fi;
    if [[ -z "${checkTarget:-}" ]]; then
        if make -n ${makefile:+-f $makefile} check > /dev/null 2>&1; then
            checkTarget="check";
        else
            if make -n ${makefile:+-f $makefile} test > /dev/null 2>&1; then
                checkTarget="test";
            fi;
        fi;
    fi;
    if [[ -z "${checkTarget:-}" ]]; then
        echo "no check/test target in ${makefile:-Makefile}, doing nothing";
    else
        local flagsArray=(${enableParallelChecking:+-j${NIX_BUILD_CORES}} SHELL="$SHELL");
        concatTo flagsArray makeFlags makeFlagsArray checkFlags=VERBOSE=y checkFlagsArray checkTarget;
        echoCmd '\''check flags'\'' "${flagsArray[@]}";
        make ${makefile:+-f $makefile} "${flagsArray[@]}";
        unset flagsArray;
    fi;
    runHook postCheck
}
compressManPages ()
{

    local dir="$1";
    if [ -L "$dir"/share ] || [ -L "$dir"/share/man ] || [ ! -d "$dir/share/man" ]; then
        return;
    fi;
    echo "gzipping man pages under $dir/share/man/";
    find "$dir"/share/man/ -type f -a '\''!'\'' -regex '\''.*\.\(bz2\|gz\|xz\)$'\'' -print0 | while IFS= read -r -d '\'''\'' f; do
        if gzip -c -n "$f" > "$f".gz; then
            rm "$f";
        else
            rm "$f".gz;
        fi;
    done;
    find "$dir"/share/man/ -type l -a '\''!'\'' -regex '\''.*\.\(bz2\|gz\|xz\)$'\'' -print0 | sort -z | while IFS= read -r -d '\'''\'' f; do
        local target;
        target="$(readlink -f "$f")";
        if [ -f "$target".gz ]; then
            ln -sf "$target".gz "$f".gz && rm "$f";
        fi;
    done
}
concatStringsSep ()
{

    local sep="$1";
    local name="$2";
    local type oldifs;
    if type=$(declare -p "$name" 2> /dev/null); then
        local -n nameref="$name";
        case "${type#* }" in
            -A*)
                echo "concatStringsSep(): ERROR: trying to use concatStringsSep on an associative array." 1>&2;
                return 1
            ;;
            -a*)
                local IFS="$sep";
                echo -n "${nameref[*]}"
            ;;
            *)
                echo -n "${nameref// /"${sep}"}"
            ;;
        esac;
    fi
}
concatTo ()
{

    local -n targetref="$1";
    shift;
    local arg default name type;
    for arg in "$@";
    do
        IFS="=" read -r name default <<< "$arg";
        local -n nameref="$name";
        if [[ ! -n "${nameref[@]}" && -n "$default" ]]; then
            targetref+=("$default");
        else
            if type=$(declare -p "$name" 2> /dev/null); then
                case "${type#* }" in
                    -A*)
                        echo "concatTo(): ERROR: trying to use concatTo on an associative array." 1>&2;
                        return 1
                    ;;
                    -a*)
                        targetref+=("${nameref[@]}")
                    ;;
                    *)
                        if [[ "$name" = *"Array" ]]; then
                            nixErrorLog "concatTo(): $name is not declared as array, treating as a singleton. This will become an error in future";
                            targetref+=(${nameref+"${nameref[@]}"});
                        else
                            targetref+=(${nameref-});
                        fi
                    ;;
                esac;
            fi;
        fi;
    done
}
configurePhase ()
{

    runHook preConfigure;
    : "${configureScript=}";
    if [[ -z "$configureScript" && -x ./configure ]]; then
        configureScript=./configure;
    fi;
    if [ -z "${dontFixLibtool:-}" ]; then
        export lt_cv_deplibs_check_method="${lt_cv_deplibs_check_method-pass_all}";
        local i;
        find . -iname "ltmain.sh" -print0 | while IFS='\'''\'' read -r -d '\'''\'' i; do
            echo "fixing libtool script $i";
            fixLibtool "$i";
        done;
        CONFIGURE_MTIME_REFERENCE=$(mktemp configure.mtime.reference.XXXXXX);
        find . -executable -type f -name configure -exec grep -l '\''GNU Libtool is free software; you can redistribute it and/or modify'\'' {} \; -exec touch -r {} "$CONFIGURE_MTIME_REFERENCE" \; -exec sed -i s_/usr/bin/file_file_g {} \; -exec touch -r "$CONFIGURE_MTIME_REFERENCE" {} \;;
        rm -f "$CONFIGURE_MTIME_REFERENCE";
    fi;
    if [[ -z "${dontAddPrefix:-}" && -n "$prefix" ]]; then
        prependToVar configureFlags "${prefixKey:---prefix=}$prefix";
    fi;
    if [[ -f "$configureScript" ]]; then
        if [ -z "${dontAddDisableDepTrack:-}" ]; then
            if grep -q dependency-tracking "$configureScript"; then
                prependToVar configureFlags --disable-dependency-tracking;
            fi;
        fi;
        if [ -z "${dontDisableStatic:-}" ]; then
            if grep -q enable-static "$configureScript"; then
                prependToVar configureFlags --disable-static;
            fi;
        fi;
        if [ -z "${dontPatchShebangsInConfigure:-}" ]; then
            patchShebangs --build "$configureScript";
        fi;
    fi;
    if [ -n "$configureScript" ]; then
        local -a flagsArray;
        concatTo flagsArray configureFlags configureFlagsArray;
        echoCmd '\''configure flags'\'' "${flagsArray[@]}";
        $configureScript "${flagsArray[@]}";
        unset flagsArray;
    else
        echo "no configure script, doing nothing";
    fi;
    runHook postConfigure
}
consumeEntire ()
{

    if IFS='\'''\'' read -r -d '\'''\'' "$1"; then
        echo "consumeEntire(): ERROR: Input null bytes, won'\''t process" 1>&2;
        return 1;
    fi
}
distPhase ()
{

    runHook preDist;
    local flagsArray=();
    concatTo flagsArray distFlags distFlagsArray distTarget=dist;
    echo '\''dist flags: %q'\'' "${flagsArray[@]}";
    make ${makefile:+-f $makefile} "${flagsArray[@]}";
    if [ "${dontCopyDist:-0}" != 1 ]; then
        mkdir -p "$out/tarballs";
        cp -pvd ${tarballs[*]:-*.tar.gz} "$out/tarballs";
    fi;
    runHook postDist
}
dumpVars ()
{

    if [ "${noDumpEnvVars:-0}" != 1 ]; then
        {
            install -m 0600 /dev/null "$NIX_BUILD_TOP/env-vars" && export 2> /dev/null >| "$NIX_BUILD_TOP/env-vars"
        } || true;
    fi
}
echoCmd ()
{

    printf "%s:" "$1";
    shift;
    printf '\'' %q'\'' "$@";
    echo
}
exitHandler ()
{

    exitCode="$?";
    set +e;
    if [ -n "${showBuildStats:-}" ]; then
        read -r -d '\'''\'' -a buildTimes < <(times);
        echo "build times:";
        echo "user time for the shell             ${buildTimes[0]}";
        echo "system time for the shell           ${buildTimes[1]}";
        echo "user time for all child processes   ${buildTimes[2]}";
        echo "system time for all child processes ${buildTimes[3]}";
    fi;
    if (( "$exitCode" != 0 )); then
        runHook failureHook;
        if [ -n "${succeedOnFailure:-}" ]; then
            echo "build failed with exit code $exitCode (ignored)";
            mkdir -p "$out/nix-support";
            printf "%s" "$exitCode" > "$out/nix-support/failed";
            exit 0;
        fi;
    else
        runHook exitHook;
    fi;
    return "$exitCode"
}
findInputs ()
{

    local -r pkg="$1";
    local -r hostOffset="$2";
    local -r targetOffset="$3";
    (( hostOffset <= targetOffset )) || exit 1;
    local varVar="${pkgAccumVarVars[hostOffset + 1]}";
    local varRef="$varVar[$((targetOffset - hostOffset))]";
    local var="${!varRef}";
    unset -v varVar varRef;
    local varSlice="$var[*]";
    case "${!varSlice-}" in
        *" $pkg "*)
            return 0
        ;;
    esac;
    unset -v varSlice;
    eval "$var"'\''+=("$pkg")'\'';
    if ! [ -e "$pkg" ]; then
        echo "build input $pkg does not exist" 1>&2;
        exit 1;
    fi;
    function mapOffset ()
    {
        local -r inputOffset="$1";
        local -n outputOffset="$2";
        if (( inputOffset <= 0 )); then
            outputOffset=$((inputOffset + hostOffset));
        else
            outputOffset=$((inputOffset - 1 + targetOffset));
        fi
    };
    local relHostOffset;
    for relHostOffset in "${allPlatOffsets[@]}";
    do
        local files="${propagatedDepFilesVars[relHostOffset + 1]}";
        local hostOffsetNext;
        mapOffset "$relHostOffset" hostOffsetNext;
        (( -1 <= hostOffsetNext && hostOffsetNext <= 1 )) || continue;
        local relTargetOffset;
        for relTargetOffset in "${allPlatOffsets[@]}";
        do
            (( "$relHostOffset" <= "$relTargetOffset" )) || continue;
            local fileRef="${files}[$relTargetOffset - $relHostOffset]";
            local file="${!fileRef}";
            unset -v fileRef;
            local targetOffsetNext;
            mapOffset "$relTargetOffset" targetOffsetNext;
            (( -1 <= hostOffsetNext && hostOffsetNext <= 1 )) || continue;
            [[ -f "$pkg/nix-support/$file" ]] || continue;
            local pkgNext;
            read -r -d '\'''\'' pkgNext < "$pkg/nix-support/$file" || true;
            for pkgNext in $pkgNext;
            do
                findInputs "$pkgNext" "$hostOffsetNext" "$targetOffsetNext";
            done;
        done;
    done
}
fixLibtool ()
{

    local search_path;
    for flag in $NIX_LDFLAGS;
    do
        case $flag in
            -L*)
                search_path+=" ${flag#-L}"
            ;;
        esac;
    done;
    sed -i "$1" -e "s^eval \(sys_lib_search_path=\).*^\1'\''${search_path:-}'\''^" -e '\''s^eval sys_lib_.+search_path=.*^^'\''
}
fixupPhase ()
{

    local output;
    for output in $(getAllOutputNames);
    do
        if [ -e "${!output}" ]; then
            chmod -R u+w,u-s,g-s "${!output}";
        fi;
    done;
    runHook preFixup;
    local output;
    for output in $(getAllOutputNames);
    do
        prefix="${!output}" runHook fixupOutput;
    done;
    recordPropagatedDependencies;
    if [ -n "${setupHook:-}" ]; then
        mkdir -p "${!outputDev}/nix-support";
        substituteAll "$setupHook" "${!outputDev}/nix-support/setup-hook";
    fi;
    if [ -n "${setupHooks:-}" ]; then
        mkdir -p "${!outputDev}/nix-support";
        local hook;
        for hook in ${setupHooks[@]};
        do
            local content;
            consumeEntire content < "$hook";
            substituteAllStream content "file '\''$hook'\''" >> "${!outputDev}/nix-support/setup-hook";
            unset -v content;
        done;
        unset -v hook;
    fi;
    if [ -n "${propagatedUserEnvPkgs:-}" ]; then
        mkdir -p "${!outputBin}/nix-support";
        printWords $propagatedUserEnvPkgs > "${!outputBin}/nix-support/propagated-user-env-packages";
    fi;
    runHook postFixup
}
genericBuild ()
{

    export GZIP_NO_TIMESTAMPS=1;
    if [ -f "${buildCommandPath:-}" ]; then
        source "$buildCommandPath";
        return;
    fi;
    if [ -n "${buildCommand:-}" ]; then
        eval "$buildCommand";
        return;
    fi;
    if [ -z "${phases[*]:-}" ]; then
        phases="${prePhases[*]:-} unpackPhase patchPhase ${preConfigurePhases[*]:-}             configurePhase ${preBuildPhases[*]:-} buildPhase checkPhase             ${preInstallPhases[*]:-} installPhase ${preFixupPhases[*]:-} fixupPhase installCheckPhase             ${preDistPhases[*]:-} distPhase ${postPhases[*]:-}";
    fi;
    for curPhase in ${phases[*]};
    do
        runPhase "$curPhase";
    done
}
getAllOutputNames ()
{

    if [ -n "$__structuredAttrs" ]; then
        echo "${!outputs[*]}";
    else
        echo "$outputs";
    fi
}
getHostRole ()
{

    getRole "$hostOffset"
}
getHostRoleEnvHook ()
{

    getRole "$depHostOffset"
}
getRole ()
{

    case $1 in
        -1)
            role_post='\''_FOR_BUILD'\''
        ;;
        0)
            role_post='\'''\''
        ;;
        1)
            role_post='\''_FOR_TARGET'\''
        ;;
        *)
            echo "@name@: used as improper sort of dependency" 1>&2;
            return 1
        ;;
    esac
}
getTargetRole ()
{

    getRole "$targetOffset"
}
getTargetRoleEnvHook ()
{

    getRole "$depTargetOffset"
}
getTargetRoleWrapper ()
{

    case $targetOffset in
        -1)
            export NIX_@wrapperName@_TARGET_BUILD_@suffixSalt@=1
        ;;
        0)
            export NIX_@wrapperName@_TARGET_HOST_@suffixSalt@=1
        ;;
        1)
            export NIX_@wrapperName@_TARGET_TARGET_@suffixSalt@=1
        ;;
        *)
            echo "@name@: used as improper sort of dependency" 1>&2;
            return 1
        ;;
    esac
}
installCheckPhase ()
{

    runHook preInstallCheck;
    if [[ -z "${foundMakefile:-}" ]]; then
        echo "no Makefile or custom installCheckPhase, doing nothing";
    else
        if [[ -z "${installCheckTarget:-}" ]] && ! make -n ${makefile:+-f $makefile} "${installCheckTarget:-installcheck}" > /dev/null 2>&1; then
            echo "no installcheck target in ${makefile:-Makefile}, doing nothing";
        else
            local flagsArray=(${enableParallelChecking:+-j${NIX_BUILD_CORES}} SHELL="$SHELL");
            concatTo flagsArray makeFlags makeFlagsArray installCheckFlags installCheckFlagsArray installCheckTarget=installcheck;
            echoCmd '\''installcheck flags'\'' "${flagsArray[@]}";
            make ${makefile:+-f $makefile} "${flagsArray[@]}";
            unset flagsArray;
        fi;
    fi;
    runHook postInstallCheck
}
installPhase ()
{

    runHook preInstall;
    if [[ -z "${makeFlags-}" && -z "${makefile:-}" && ! ( -e Makefile || -e makefile || -e GNUmakefile ) ]]; then
        echo "no Makefile or custom installPhase, doing nothing";
        runHook postInstall;
        return;
    else
        foundMakefile=1;
    fi;
    if [ -n "$prefix" ]; then
        mkdir -p "$prefix";
    fi;
    local flagsArray=(${enableParallelInstalling:+-j${NIX_BUILD_CORES}} SHELL="$SHELL");
    concatTo flagsArray makeFlags makeFlagsArray installFlags installFlagsArray installTargets=install;
    echoCmd '\''install flags'\'' "${flagsArray[@]}";
    make ${makefile:+-f $makefile} "${flagsArray[@]}";
    unset flagsArray;
    runHook postInstall
}
isELF ()
{

    local fn="$1";
    local fd;
    local magic;
    exec {fd}< "$fn";
    read -r -n 4 -u "$fd" magic;
    exec {fd}>&-;
    if [ "$magic" = '\''ELF'\'' ]; then
        return 0;
    else
        return 1;
    fi
}
isMachO ()
{

    local fn="$1";
    local fd;
    local magic;
    exec {fd}< "$fn";
    read -r -n 4 -u "$fd" magic;
    exec {fd}>&-;
    if [[ "$magic" = $(echo -ne "\xfe\xed\xfa\xcf") || "$magic" = $(echo -ne "\xcf\xfa\xed\xfe") ]]; then
        return 0;
    else
        if [[ "$magic" = $(echo -ne "\xfe\xed\xfa\xce") || "$magic" = $(echo -ne "\xce\xfa\xed\xfe") ]]; then
            return 0;
        else
            if [[ "$magic" = $(echo -ne "\xca\xfe\xba\xbe") || "$magic" = $(echo -ne "\xbe\xba\xfe\xca") ]]; then
                return 0;
            else
                return 1;
            fi;
        fi;
    fi
}
isScript ()
{

    local fn="$1";
    local fd;
    local magic;
    exec {fd}< "$fn";
    read -r -n 2 -u "$fd" magic;
    exec {fd}>&-;
    if [[ "$magic" =~ \#! ]]; then
        return 0;
    else
        return 1;
    fi
}
mapOffset ()
{

    local -r inputOffset="$1";
    local -n outputOffset="$2";
    if (( inputOffset <= 0 )); then
        outputOffset=$((inputOffset + hostOffset));
    else
        outputOffset=$((inputOffset - 1 + targetOffset));
    fi
}
moveToOutput ()
{

    local patt="$1";
    local dstOut="$2";
    local output;
    for output in $(getAllOutputNames);
    do
        if [ "${!output}" = "$dstOut" ]; then
            continue;
        fi;
        local srcPath;
        for srcPath in "${!output}"/$patt;
        do
            if [ ! -e "$srcPath" ] && [ ! -L "$srcPath" ]; then
                continue;
            fi;
            if [ "$dstOut" = REMOVE ]; then
                echo "Removing $srcPath";
                rm -r "$srcPath";
            else
                local dstPath="$dstOut${srcPath#${!output}}";
                echo "Moving $srcPath to $dstPath";
                if [ -d "$dstPath" ] && [ -d "$srcPath" ]; then
                    rmdir "$srcPath" --ignore-fail-on-non-empty;
                    if [ -d "$srcPath" ]; then
                        mv -t "$dstPath" "$srcPath"/*;
                        rmdir "$srcPath";
                    fi;
                else
                    mkdir -p "$(readlink -m "$dstPath/..")";
                    mv "$srcPath" "$dstPath";
                fi;
            fi;
            local srcParent="$(readlink -m "$srcPath/..")";
            if [ -n "$(find "$srcParent" -maxdepth 0 -type d -empty 2> /dev/null)" ]; then
                echo "Removing empty $srcParent/ and (possibly) its parents";
                rmdir -p --ignore-fail-on-non-empty "$srcParent" 2> /dev/null || true;
            fi;
        done;
    done
}
nixChattyLog ()
{

    if [[ -z ${NIX_LOG_FD-} ]] || [[ ${NIX_DEBUG:-0} -lt 5 ]]; then
        return;
    fi;
    printf "%s\n" "$*" >&"$NIX_LOG_FD"
}
nixDebugLog ()
{

    if [[ -z ${NIX_LOG_FD-} ]] || [[ ${NIX_DEBUG:-0} -lt 6 ]]; then
        return;
    fi;
    printf "%s\n" "$*" >&"$NIX_LOG_FD"
}
nixErrorLog ()
{

    if [[ -z ${NIX_LOG_FD-} ]] || [[ ${NIX_DEBUG:-0} -lt 0 ]]; then
        return;
    fi;
    printf "%s\n" "$*" >&"$NIX_LOG_FD"
}
nixInfoLog ()
{

    if [[ -z ${NIX_LOG_FD-} ]] || [[ ${NIX_DEBUG:-0} -lt 3 ]]; then
        return;
    fi;
    printf "%s\n" "$*" >&"$NIX_LOG_FD"
}
nixNoticeLog ()
{

    if [[ -z ${NIX_LOG_FD-} ]] || [[ ${NIX_DEBUG:-0} -lt 2 ]]; then
        return;
    fi;
    printf "%s\n" "$*" >&"$NIX_LOG_FD"
}
nixTalkativeLog ()
{

    if [[ -z ${NIX_LOG_FD-} ]] || [[ ${NIX_DEBUG:-0} -lt 4 ]]; then
        return;
    fi;
    printf "%s\n" "$*" >&"$NIX_LOG_FD"
}
nixVomitLog ()
{

    if [[ -z ${NIX_LOG_FD-} ]] || [[ ${NIX_DEBUG:-0} -lt 7 ]]; then
        return;
    fi;
    printf "%s\n" "$*" >&"$NIX_LOG_FD"
}
nixWarnLog ()
{

    if [[ -z ${NIX_LOG_FD-} ]] || [[ ${NIX_DEBUG:-0} -lt 1 ]]; then
        return;
    fi;
    printf "%s\n" "$*" >&"$NIX_LOG_FD"
}
patchPhase ()
{

    runHook prePatch;
    local -a patchesArray;
    concatTo patchesArray patches;
    for i in "${patchesArray[@]}";
    do
        echo "applying patch $i";
        local uncompress=cat;
        case "$i" in
            *.gz)
                uncompress="gzip -d"
            ;;
            *.bz2)
                uncompress="bzip2 -d"
            ;;
            *.xz)
                uncompress="xz -d"
            ;;
            *.lzma)
                uncompress="lzma -d"
            ;;
        esac;
        local -a flagsArray;
        concatTo flagsArray patchFlags=-p1;
        $uncompress < "$i" 2>&1 | patch "${flagsArray[@]}";
    done;
    runHook postPatch
}
patchShebangs ()
{

    local pathName;
    local update;
    while [[ $# -gt 0 ]]; do
        case "$1" in
            --host)
                pathName=HOST_PATH;
                shift
            ;;
            --build)
                pathName=PATH;
                shift
            ;;
            --update)
                update=true;
                shift
            ;;
            --)
                shift;
                break
            ;;
            -* | --*)
                echo "Unknown option $1 supplied to patchShebangs" 1>&2;
                return 1
            ;;
            *)
                break
            ;;
        esac;
    done;
    echo "patching script interpreter paths in $@";
    local f;
    local oldPath;
    local newPath;
    local arg0;
    local args;
    local oldInterpreterLine;
    local newInterpreterLine;
    if [[ $# -eq 0 ]]; then
        echo "No arguments supplied to patchShebangs" 1>&2;
        return 0;
    fi;
    local f;
    while IFS= read -r -d '\'''\'' f; do
        isScript "$f" || continue;
        read -r oldInterpreterLine < "$f" || [ "$oldInterpreterLine" ];
        read -r oldPath arg0 args <<< "${oldInterpreterLine:2}";
        if [[ -z "${pathName:-}" ]]; then
            if [[ -n $strictDeps && $f == "$NIX_STORE"* ]]; then
                pathName=HOST_PATH;
            else
                pathName=PATH;
            fi;
        fi;
        if [[ "$oldPath" == *"/bin/env" ]]; then
            if [[ $arg0 == "-S" ]]; then
                arg0=${args%% *};
                args=${args#* };
                newPath="$(PATH="${!pathName}" type -P "env" || true)";
                args="-S $(PATH="${!pathName}" type -P "$arg0" || true) $args";
            else
                if [[ $arg0 == "-"* || $arg0 == *"="* ]]; then
                    echo "$f: unsupported interpreter directive \"$oldInterpreterLine\" (set dontPatchShebangs=1 and handle shebang patching yourself)" 1>&2;
                    exit 1;
                else
                    newPath="$(PATH="${!pathName}" type -P "$arg0" || true)";
                fi;
            fi;
        else
            if [[ -z $oldPath ]]; then
                oldPath="/bin/sh";
            fi;
            newPath="$(PATH="${!pathName}" type -P "$(basename "$oldPath")" || true)";
            args="$arg0 $args";
        fi;
        newInterpreterLine="$newPath $args";
        newInterpreterLine=${newInterpreterLine%${newInterpreterLine##*[![:space:]]}};
        if [[ -n "$oldPath" && ( "$update" == true || "${oldPath:0:${#NIX_STORE}}" != "$NIX_STORE" ) ]]; then
            if [[ -n "$newPath" && "$newPath" != "$oldPath" ]]; then
                echo "$f: interpreter directive changed from \"$oldInterpreterLine\" to \"$newInterpreterLine\"";
                escapedInterpreterLine=${newInterpreterLine//\\/\\\\};
                timestamp=$(stat --printf "%y" "$f");
                sed -i -e "1 s|.*|#\!$escapedInterpreterLine|" "$f";
                touch --date "$timestamp" "$f";
            fi;
        fi;
    done < <(find "$@" -type f -perm -0100 -print0)
}
patchShebangsAuto ()
{

    if [[ -z "${dontPatchShebangs-}" && -e "$prefix" ]]; then
        if [[ "$output" != out && "$output" = "$outputDev" ]]; then
            patchShebangs --build "$prefix";
        else
            patchShebangs --host "$prefix";
        fi;
    fi
}
prependToVar ()
{

    local -n nameref="$1";
    local useArray type;
    if [ -n "$__structuredAttrs" ]; then
        useArray=true;
    else
        useArray=false;
    fi;
    if type=$(declare -p "$1" 2> /dev/null); then
        case "${type#* }" in
            -A*)
                echo "prependToVar(): ERROR: trying to use prependToVar on an associative array." 1>&2;
                return 1
            ;;
            -a*)
                useArray=true
            ;;
            *)
                useArray=false
            ;;
        esac;
    fi;
    shift;
    if $useArray; then
        nameref=("$@" ${nameref+"${nameref[@]}"});
    else
        nameref="$* ${nameref-}";
    fi
}
printLines ()
{

    (( "$#" > 0 )) || return 0;
    printf '\''%s\n'\'' "$@"
}
printWords ()
{

    (( "$#" > 0 )) || return 0;
    printf '\''%s '\'' "$@"
}
recordPropagatedDependencies ()
{

    declare -ra flatVars=(depsBuildBuildPropagated propagatedNativeBuildInputs depsBuildTargetPropagated depsHostHostPropagated propagatedBuildInputs depsTargetTargetPropagated);
    declare -ra flatFiles=("${propagatedBuildDepFiles[@]}" "${propagatedHostDepFiles[@]}" "${propagatedTargetDepFiles[@]}");
    local propagatedInputsIndex;
    for propagatedInputsIndex in "${!flatVars[@]}";
    do
        local propagatedInputsSlice="${flatVars[$propagatedInputsIndex]}[@]";
        local propagatedInputsFile="${flatFiles[$propagatedInputsIndex]}";
        [[ -n "${!propagatedInputsSlice}" ]] || continue;
        mkdir -p "${!outputDev}/nix-support";
        printWords ${!propagatedInputsSlice} > "${!outputDev}/nix-support/$propagatedInputsFile";
    done
}
runHook ()
{

    local hookName="$1";
    shift;
    local hooksSlice="${hookName%Hook}Hooks[@]";
    local hook;
    for hook in "_callImplicitHook 0 $hookName" ${!hooksSlice+"${!hooksSlice}"};
    do
        _logHook "$hookName" "$hook" "$@";
        _eval "$hook" "$@";
    done;
    return 0
}
runOneHook ()
{

    local hookName="$1";
    shift;
    local hooksSlice="${hookName%Hook}Hooks[@]";
    local hook ret=1;
    for hook in "_callImplicitHook 1 $hookName" ${!hooksSlice+"${!hooksSlice}"};
    do
        _logHook "$hookName" "$hook" "$@";
        if _eval "$hook" "$@"; then
            ret=0;
            break;
        fi;
    done;
    return "$ret"
}
runPhase ()
{

    local curPhase="$*";
    if [[ "$curPhase" = unpackPhase && -n "${dontUnpack:-}" ]]; then
        return;
    fi;
    if [[ "$curPhase" = patchPhase && -n "${dontPatch:-}" ]]; then
        return;
    fi;
    if [[ "$curPhase" = configurePhase && -n "${dontConfigure:-}" ]]; then
        return;
    fi;
    if [[ "$curPhase" = buildPhase && -n "${dontBuild:-}" ]]; then
        return;
    fi;
    if [[ "$curPhase" = checkPhase && -z "${doCheck:-}" ]]; then
        return;
    fi;
    if [[ "$curPhase" = installPhase && -n "${dontInstall:-}" ]]; then
        return;
    fi;
    if [[ "$curPhase" = fixupPhase && -n "${dontFixup:-}" ]]; then
        return;
    fi;
    if [[ "$curPhase" = installCheckPhase && -z "${doInstallCheck:-}" ]]; then
        return;
    fi;
    if [[ "$curPhase" = distPhase && -z "${doDist:-}" ]]; then
        return;
    fi;
    showPhaseHeader "$curPhase";
    dumpVars;
    local startTime endTime;
    startTime=$(date +"%s");
    eval "${!curPhase:-$curPhase}";
    endTime=$(date +"%s");
    showPhaseFooter "$curPhase" "$startTime" "$endTime";
    if [ "$curPhase" = unpackPhase ]; then
        [ -n "${sourceRoot:-}" ] && chmod +x -- "${sourceRoot}";
        cd -- "${sourceRoot:-.}";
    fi
}
sdkRootHook ()
{

    local role_post;
    getHostRoleEnvHook;
    if [[ ! $NIX_CFLAGS_COMPILE =~ isysroot ]]; then
        export NIX_CFLAGS_COMPILE${role_post}+='\'' -isysroot /nix/store/nk8j7xqx1by08vw25h3lbn6jiwvax7cl-sdkroot-11.0/MacOSX11.0.sdk'\'';
    fi
}
showPhaseFooter ()
{

    local phase="$1";
    local startTime="$2";
    local endTime="$3";
    local delta=$(( endTime - startTime ));
    (( delta < 30 )) && return;
    local H=$((delta/3600));
    local M=$((delta%3600/60));
    local S=$((delta%60));
    echo -n "$phase completed in ";
    (( H > 0 )) && echo -n "$H hours ";
    (( M > 0 )) && echo -n "$M minutes ";
    echo "$S seconds"
}
showPhaseHeader ()
{

    local phase="$1";
    echo "Running phase: $phase";
    if [[ -z ${NIX_LOG_FD-} ]]; then
        return;
    fi;
    printf "@nix { \"action\": \"setPhase\", \"phase\": \"%s\" }\n" "$phase" >&"$NIX_LOG_FD"
}
stripDirs ()
{

    local cmd="$1";
    local ranlibCmd="$2";
    local paths="$3";
    local stripFlags="$4";
    local excludeFlags=();
    local pathsNew=;
    [ -z "$cmd" ] && echo "stripDirs: Strip command is empty" 1>&2 && exit 1;
    [ -z "$ranlibCmd" ] && echo "stripDirs: Ranlib command is empty" 1>&2 && exit 1;
    local pattern;
    if [ -n "${stripExclude:-}" ]; then
        for pattern in "${stripExclude[@]}";
        do
            excludeFlags+=(-a '\''!'\'' '\''('\'' -name "$pattern" -o -wholename "$prefix/$pattern" '\'')'\'');
        done;
    fi;
    local p;
    for p in ${paths};
    do
        if [ -e "$prefix/$p" ]; then
            pathsNew="${pathsNew} $prefix/$p";
        fi;
    done;
    paths=${pathsNew};
    if [ -n "${paths}" ]; then
        echo "stripping (with command $cmd and flags $stripFlags) in $paths";
        local striperr;
        striperr="$(mktemp --tmpdir="$TMPDIR" '\''striperr.XXXXXX'\'')";
        find $paths -type f "${excludeFlags[@]}" -a '\''!'\'' -path "$prefix/lib/debug/*" -printf '\''%D-%i,%p\0'\'' | sort -t, -k1,1 -u -z | cut -d, -f2- -z | xargs -r -0 -n1 -P "$NIX_BUILD_CORES" -- $cmd $stripFlags 2> "$striperr" || exit_code=$?;
        [[ "$exit_code" = 123 || -z "$exit_code" ]] || ( cat "$striperr" 1>&2 && exit 1 );
        rm "$striperr";
        find $paths -name '\''*.a'\'' -type f -exec $ranlibCmd '\''{}'\'' \; 2> /dev/null;
    fi
}
stripHash ()
{

    local strippedName casematchOpt=0;
    strippedName="$(basename -- "$1")";
    shopt -q nocasematch && casematchOpt=1;
    shopt -u nocasematch;
    if [[ "$strippedName" =~ ^[a-z0-9]{32}- ]]; then
        echo "${strippedName:33}";
    else
        echo "$strippedName";
    fi;
    if (( casematchOpt )); then
        shopt -s nocasematch;
    fi
}
substitute ()
{

    local input="$1";
    local output="$2";
    shift 2;
    if [ ! -f "$input" ]; then
        echo "substitute(): ERROR: file '\''$input'\'' does not exist" 1>&2;
        return 1;
    fi;
    local content;
    consumeEntire content < "$input";
    if [ -e "$output" ]; then
        chmod +w "$output";
    fi;
    substituteStream content "file '\''$input'\''" "$@" > "$output"
}
substituteAll ()
{

    local input="$1";
    local output="$2";
    local -a args=();
    _allFlags;
    substitute "$input" "$output" "${args[@]}"
}
substituteAllInPlace ()
{

    local fileName="$1";
    shift;
    substituteAll "$fileName" "$fileName" "$@"
}
substituteAllStream ()
{

    local -a args=();
    _allFlags;
    substituteStream "$1" "$2" "${args[@]}"
}
substituteInPlace ()
{

    local -a fileNames=();
    for arg in "$@";
    do
        if [[ "$arg" = "--"* ]]; then
            break;
        fi;
        fileNames+=("$arg");
        shift;
    done;
    for file in "${fileNames[@]}";
    do
        substitute "$file" "$file" "$@";
    done
}
substituteStream ()
{

    local var=$1;
    local description=$2;
    shift 2;
    while (( "$#" )); do
        local replace_mode="$1";
        case "$1" in
            --replace)
                if ! "$_substituteStream_has_warned_replace_deprecation"; then
                    echo "substituteStream() in derivation $name: WARNING: '\''--replace'\'' is deprecated, use --replace-{fail,warn,quiet}. ($description)" 1>&2;
                    _substituteStream_has_warned_replace_deprecation=true;
                fi;
                replace_mode='\''--replace-warn'\''
            ;&
            --replace-quiet | --replace-warn | --replace-fail)
                pattern="$2";
                replacement="$3";
                shift 3;
                local savedvar;
                savedvar="${!var}";
                eval "$var"'\''=${'\''"$var"'\''//"$pattern"/"$replacement"}'\'';
                if [ "$pattern" != "$replacement" ]; then
                    if [ "${!var}" == "$savedvar" ]; then
                        if [ "$replace_mode" == --replace-warn ]; then
                            printf "substituteStream() in derivation $name: WARNING: pattern %q doesn'\''t match anything in %s\n" "$pattern" "$description" 1>&2;
                        else
                            if [ "$replace_mode" == --replace-fail ]; then
                                printf "substituteStream() in derivation $name: ERROR: pattern %q doesn'\''t match anything in %s\n" "$pattern" "$description" 1>&2;
                                return 1;
                            fi;
                        fi;
                    fi;
                fi
            ;;
            --subst-var)
                local varName="$2";
                shift 2;
                if ! [[ "$varName" =~ ^[a-zA-Z_][a-zA-Z0-9_]*$ ]]; then
                    echo "substituteStream() in derivation $name: ERROR: substitution variables must be valid Bash names, \"$varName\" isn'\''t." 1>&2;
                    return 1;
                fi;
                if [ -z ${!varName+x} ]; then
                    echo "substituteStream() in derivation $name: ERROR: variable \$$varName is unset" 1>&2;
                    return 1;
                fi;
                pattern="@$varName@";
                replacement="${!varName}";
                eval "$var"'\''=${'\''"$var"'\''//"$pattern"/"$replacement"}'\''
            ;;
            --subst-var-by)
                pattern="@$2@";
                replacement="$3";
                eval "$var"'\''=${'\''"$var"'\''//"$pattern"/"$replacement"}'\'';
                shift 3
            ;;
            *)
                echo "substituteStream() in derivation $name: ERROR: Invalid command line argument: $1" 1>&2;
                return 1
            ;;
        esac;
    done;
    printf "%s" "${!var}"
}
unpackFile ()
{

    curSrc="$1";
    echo "unpacking source archive $curSrc";
    if ! runOneHook unpackCmd "$curSrc"; then
        echo "do not know how to unpack source archive $curSrc";
        exit 1;
    fi
}
unpackPhase ()
{

    runHook preUnpack;
    if [ -z "${srcs:-}" ]; then
        if [ -z "${src:-}" ]; then
            echo '\''variable $src or $srcs should point to the source'\'';
            exit 1;
        fi;
        srcs="$src";
    fi;
    local -a srcsArray;
    concatTo srcsArray srcs;
    local dirsBefore="";
    for i in *;
    do
        if [ -d "$i" ]; then
            dirsBefore="$dirsBefore $i ";
        fi;
    done;
    for i in "${srcsArray[@]}";
    do
        unpackFile "$i";
    done;
    : "${sourceRoot=}";
    if [ -n "${setSourceRoot:-}" ]; then
        runOneHook setSourceRoot;
    else
        if [ -z "$sourceRoot" ]; then
            for i in *;
            do
                if [ -d "$i" ]; then
                    case $dirsBefore in
                        *\ $i\ *)

                        ;;
                        *)
                            if [ -n "$sourceRoot" ]; then
                                echo "unpacker produced multiple directories";
                                exit 1;
                            fi;
                            sourceRoot="$i"
                        ;;
                    esac;
                fi;
            done;
        fi;
    fi;
    if [ -z "$sourceRoot" ]; then
        echo "unpacker appears to have produced no directories";
        exit 1;
    fi;
    echo "source root is $sourceRoot";
    if [ "${dontMakeSourcesWritable:-0}" != 1 ]; then
        chmod -R u+w -- "$sourceRoot";
    fi;
    runHook postUnpack
}
updateAutotoolsGnuConfigScriptsPhase ()
{

    if [ -n "${dontUpdateAutotoolsGnuConfigScripts-}" ]; then
        return;
    fi;
    for script in config.sub config.guess;
    do
        for f in $(find . -type f -name "$script");
        do
            echo "Updating Autotools / GNU config script to a newer upstream version: $f";
            cp -f "/nix/store/z2f4kldxr4w99s9a0nsjip3vk692yhxs-gnu-config-2024-01-01/$script" "$f";
        done;
    done
}
updateSourceDateEpoch ()
{

    local path="$1";
    [[ $path == -* ]] && path="./$path";
    local -a res=($(find "$path" -type f -not -newer "$NIX_BUILD_TOP/.." -printf '\''%T@ %p\0'\'' | sort -n --zero-terminated | tail -n1 --zero-terminated | head -c -1));
    local time="${res[0]//\.[0-9]*/}";
    local newestFile="${res[1]}";
    if [ "${time:-0}" -gt "$SOURCE_DATE_EPOCH" ]; then
        echo "setting SOURCE_DATE_EPOCH to timestamp $time of file $newestFile";
        export SOURCE_DATE_EPOCH="$time";
        local now="$(date +%s)";
        if [ "$time" -gt $((now - 60)) ]; then
            echo "warning: file $newestFile may be generated; SOURCE_DATE_EPOCH may be non-deterministic";
        fi;
    fi
}
PATH="$PATH${nix_saved_PATH:+:$nix_saved_PATH}"
XDG_DATA_DIRS="$XDG_DATA_DIRS${nix_saved_XDG_DATA_DIRS:+:$nix_saved_XDG_DATA_DIRS}"
export NIX_BUILD_TOP="$(mktemp -d -t nix-shell.XXXXXX)"
export TMP="$NIX_BUILD_TOP"
export TMPDIR="$NIX_BUILD_TOP"
export TEMP="$NIX_BUILD_TOP"
export TEMPDIR="$NIX_BUILD_TOP"
eval "${shellHook:-}"'
+++ unset shellHook
+++ PATH='/Users/ryota2357/.local/bin:/Users/ryota2357/.local/share/cargo/bin:/Users/ryota2357/.nix-profile/bin:/nix/var/nix/profiles/default/bin:/opt/homebrew/opt/llvm/bin:/opt/homebrew/bin:/opt/homebrew/sbin:/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:/usr/local/share/dotnet:~/.dotnet/tools:/Applications/Wireshark.app/Contents/MacOS'
+++ nix_saved_PATH='/Users/ryota2357/.local/bin:/Users/ryota2357/.local/share/cargo/bin:/Users/ryota2357/.nix-profile/bin:/nix/var/nix/profiles/default/bin:/opt/homebrew/opt/llvm/bin:/opt/homebrew/bin:/opt/homebrew/sbin:/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:/usr/local/share/dotnet:~/.dotnet/tools:/Applications/Wireshark.app/Contents/MacOS'
+++ XDG_DATA_DIRS=/usr/local/share:/usr/share:/nix/var/nix/profiles/default/share
+++ nix_saved_XDG_DATA_DIRS=/usr/local/share:/usr/share:/nix/var/nix/profiles/default/share
+++ BASH=/nix/store/iafzjk7zbkqaszqfp6n006vvxjrpn4f6-bash-5.2p32/bin/bash
+++ CONFIG_SHELL=/nix/store/iafzjk7zbkqaszqfp6n006vvxjrpn4f6-bash-5.2p32/bin/bash
+++ export CONFIG_SHELL
+++ HOSTTYPE=aarch64
+++ 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
+++ export HOST_PATH
+++ IFS='
'
+++ IN_NIX_SHELL=impure
+++ export IN_NIX_SHELL
+++ LINENO=76
+++ MACHTYPE=aarch64-apple-darwin23.6.0
+++ MACOSX_DEPLOYMENT_TARGET=11.0
+++ export MACOSX_DEPLOYMENT_TARGET
+++ NIX_BUILD_CORES=10
+++ export NIX_BUILD_CORES
+++ NIX_CFLAGS_COMPILE=' -frandom-seed=5prr9pzb7x -isysroot /nix/store/nk8j7xqx1by08vw25h3lbn6jiwvax7cl-sdkroot-11.0/MacOSX11.0.sdk'
+++ export NIX_CFLAGS_COMPILE
+++ NIX_DONT_SET_RPATH=1
+++ export NIX_DONT_SET_RPATH
+++ NIX_DONT_SET_RPATH_FOR_BUILD=1
+++ export NIX_DONT_SET_RPATH_FOR_BUILD
+++ NIX_DONT_SET_RPATH_FOR_TARGET=1
+++ export NIX_DONT_SET_RPATH_FOR_TARGET
+++ NIX_ENFORCE_NO_NATIVE=1
+++ export NIX_ENFORCE_NO_NATIVE
+++ NIX_IGNORE_LD_THROUGH_GCC=1
+++ export NIX_IGNORE_LD_THROUGH_GCC
+++ NIX_NO_SELF_RPATH=1
+++ export NIX_NO_SELF_RPATH
+++ NIX_STORE=/nix/store
+++ export NIX_STORE
+++ OLDPWD=
+++ export OLDPWD
+++ OPTERR=1
+++ OSTYPE=darwin23.6.0
+++ PATH=/nix/store/9hsv3szycrhby31if26h6b7ngmr20bqf-lua-language-server-3.11.1/bin:/nix/store/bjq8a9aqgmx5kj2bl4xs91dqbla4b35s-vim-language-server-2.3.1/bin:/nix/store/ij8h81g2vsqq8723xlqb89wcj16fz8n2-nil-2024-08-06/bin:/nix/store/2v0yy9j3x5vdgn389l236lizcwkfxay1-stylua-0.20.0/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
+++ export PATH
+++ PATH_LOCALE=/nix/store/59lgkch5skilq9jm5xmy678xcmxvjjj6-adv_cmds-119-locale/share/locale
+++ export PATH_LOCALE
+++ PS4='+ '
+++ SHELL=/nix/store/iafzjk7zbkqaszqfp6n006vvxjrpn4f6-bash-5.2p32/bin/bash
+++ export SHELL
+++ SOURCE_DATE_EPOCH=315532800
+++ export SOURCE_DATE_EPOCH
+++ XDG_DATA_DIRS=/nix/store/9hsv3szycrhby31if26h6b7ngmr20bqf-lua-language-server-3.11.1/share
+++ export XDG_DATA_DIRS
+++ __darwinAllowLocalNetworking=
+++ export __darwinAllowLocalNetworking
+++ __impureHostDeps='/bin/sh /usr/lib/libSystem.B.dylib /usr/lib/system/libunc.dylib /dev/zero /dev/random /dev/urandom /bin/sh'
+++ export __impureHostDeps
+++ __propagatedImpureHostDeps=
+++ export __propagatedImpureHostDeps
+++ __propagatedSandboxProfile=
+++ export __propagatedSandboxProfile
+++ __sandboxProfile=
+++ export __sandboxProfile
+++ __structuredAttrs=
+++ export __structuredAttrs
+++ _substituteStream_has_warned_replace_deprecation=false
+++ buildInputs=
+++ export buildInputs
+++ buildPhase='{ echo "------------------------------------------------------------";
  echo " WARNING: the existence of this path is not guaranteed.";
  echo " It is an internal implementation detail for pkgs.mkShell.";
  echo "------------------------------------------------------------";
  echo;
  # Record all build inputs as runtime dependencies
  export;
} >> "$out"
'
+++ export buildPhase
+++ builder=/nix/store/iafzjk7zbkqaszqfp6n006vvxjrpn4f6-bash-5.2p32/bin/bash
+++ export builder
+++ cmakeFlags=
+++ export cmakeFlags
+++ configureFlags=
+++ export configureFlags
+++ defaultBuildInputs=/nix/store/kcn9w36a573nhkbl5ci7aa2vdk2q5k16-apple-framework-CoreFoundation-11.0.0
+++ defaultNativeBuildInputs='/nix/store/l1f08wg4f988zngb4xvg936lpf96kc3a-update-autotools-gnu-config-scripts-hook /nix/store/nk8j7xqx1by08vw25h3lbn6jiwvax7cl-sdkroot-11.0 /nix/store/h9lc1dpi14z7is86ffhl3ld569138595-audit-tmpdir.sh /nix/store/m54bmrhj6fqz8nds5zcj97w9s9bckc9v-compress-man-pages.sh /nix/store/wgrbkkaldkrlrni33ccvm3b6vbxzb656-make-symlinks-relative.sh /nix/store/5yzw0vhkyszf2d179m0qfkgxmp5wjjx4-move-docs.sh /nix/store/fyaryjvghbkpfnsyw97hb3lyb37s1pd6-move-lib64.sh /nix/store/kd4xwxjpjxi71jkm6ka0np72if9rm3y0-move-sbin.sh /nix/store/pag6l61paj1dc9sv15l7bm5c17xn5kyk-move-systemd-user-units.sh /nix/store/jivxp510zxakaaic7qkrb7v1dd2rdbw9-multiple-outputs.sh /nix/store/12lvf0c7xric9cny7slvf9cmhypl1p67-patch-shebangs.sh /nix/store/cickvswrvann041nqxb0rxilc46svw1n-prune-libtool-files.sh /nix/store/xyff06pkhki3qy1ls77w10s0v79c9il0-reproducible-builds.sh /nix/store/aazf105snicrlvyzzbdj85sx4179rpfp-set-source-date-epoch-to-latest.sh /nix/store/gps9qrh99j7g02840wv5x78ykmz30byp-strip.sh'
+++ depsBuildBuild=
+++ export depsBuildBuild
+++ depsBuildBuildPropagated=
+++ export depsBuildBuildPropagated
+++ depsBuildTarget=
+++ export depsBuildTarget
+++ depsBuildTargetPropagated=
+++ export depsBuildTargetPropagated
+++ depsHostHost=
+++ export depsHostHost
+++ depsHostHostPropagated=
+++ export depsHostHostPropagated
+++ depsTargetTarget=
+++ export depsTargetTarget
+++ depsTargetTargetPropagated=
+++ export depsTargetTargetPropagated
+++ doCheck=
+++ export doCheck
+++ doInstallCheck=
+++ export doInstallCheck
+++ dontAddDisableDepTrack=1
+++ export dontAddDisableDepTrack
+++ envBuildBuildHooks=()
+++ declare -a envBuildBuildHooks
+++ envBuildHostHooks=()
+++ declare -a envBuildHostHooks
+++ envBuildTargetHooks=()
+++ declare -a envBuildTargetHooks
+++ envHostHostHooks=('sdkRootHook')
+++ declare -a envHostHostHooks
+++ envHostTargetHooks=('sdkRootHook')
+++ declare -a envHostTargetHooks
+++ envTargetTargetHooks=()
+++ declare -a envTargetTargetHooks
+++ fixupOutputHooks=('if [[ -z "${noAuditTmpdir-}" && -e "$prefix" ]]; then auditTmpdir "$prefix"; fi' 'if [ -z "${dontGzipMan-}" ]; then compressManPages "$prefix"; fi' '_moveLib64' '_moveSbin' '_moveSystemdUserUnits' 'patchShebangsAuto' '_pruneLibtoolFiles' '_doStrip')
+++ declare -a fixupOutputHooks
+++ guess=10
+++ initialPath='/nix/store/1l41471x6rlf7l544s1bxkqqgpprd28m-coreutils-9.5 /nix/store/6iir6ljd4yan81glr5wh3zc9x5l0fwdj-findutils-4.10.0 /nix/store/44byadd2lwqid70aarkjdxqm4bnamiff-diffutils-3.10 /nix/store/671pvppgcdzgdxkbhggb5z1zs3dx096y-gnused-4.9 /nix/store/p57w57nln7yjvj95i9wlx27g7gcnwgga-gnugrep-3.11 /nix/store/cqaf3cx80idg9xrqca65rpm3ax8m2xpq-gawk-5.2.2 /nix/store/8pb64yz6kvipynxwbmj8v3mg42r2ainb-gnutar-1.35 /nix/store/11q17b4qydb1z4lksslmz592ld1fphbb-gzip-1.13 /nix/store/xjfp4zg4vz80yc95zfczw5vc09jjcrgn-bzip2-1.0.8-bin /nix/store/6mcdimq65bpmk4ccsbwk8zqqv0w57xki-gnumake-4.4.1 /nix/store/iafzjk7zbkqaszqfp6n006vvxjrpn4f6-bash-5.2p32 /nix/store/88lm1zpf550i9jl14nkhmrwfpk57h53h-patch-2.7.6 /nix/store/7vh6m6xky6har0cydkpmlq81l0yqzlbq-xz-5.6.2-bin /nix/store/ciivdvv31qrccs59v9hryac5jzm53qwi-file-5.45'
+++ mesonFlags=
+++ export mesonFlags
+++ name=nix-shell-env
+++ export name
+++ nativeBuildInputs='/nix/store/9hsv3szycrhby31if26h6b7ngmr20bqf-lua-language-server-3.11.1 /nix/store/bjq8a9aqgmx5kj2bl4xs91dqbla4b35s-vim-language-server-2.3.1 /nix/store/ij8h81g2vsqq8723xlqb89wcj16fz8n2-nil-2024-08-06 /nix/store/2v0yy9j3x5vdgn389l236lizcwkfxay1-stylua-0.20.0'
+++ export nativeBuildInputs
+++ out=/Users/ryota2357/dotfiles/outputs/out
+++ export out
+++ outputBin=out
+++ outputDev=out
+++ outputDevdoc=REMOVE
+++ outputDevman=out
+++ outputDoc=out
+++ outputInclude=out
+++ outputInfo=out
+++ outputLib=out
+++ outputMan=out
+++ outputs=out
+++ export outputs
+++ patches=
+++ export patches
+++ phases=buildPhase
+++ export phases
+++ pkg=/nix/store/kcn9w36a573nhkbl5ci7aa2vdk2q5k16-apple-framework-CoreFoundation-11.0.0
+++ pkgsBuildBuild=()
+++ declare -a pkgsBuildBuild
+++ pkgsBuildHost=('/nix/store/9hsv3szycrhby31if26h6b7ngmr20bqf-lua-language-server-3.11.1' '/nix/store/bjq8a9aqgmx5kj2bl4xs91dqbla4b35s-vim-language-server-2.3.1' '/nix/store/ij8h81g2vsqq8723xlqb89wcj16fz8n2-nil-2024-08-06' '/nix/store/2v0yy9j3x5vdgn389l236lizcwkfxay1-stylua-0.20.0' '/nix/store/l1f08wg4f988zngb4xvg936lpf96kc3a-update-autotools-gnu-config-scripts-hook' '/nix/store/nk8j7xqx1by08vw25h3lbn6jiwvax7cl-sdkroot-11.0' '/nix/store/h9lc1dpi14z7is86ffhl3ld569138595-audit-tmpdir.sh' '/nix/store/m54bmrhj6fqz8nds5zcj97w9s9bckc9v-compress-man-pages.sh' '/nix/store/wgrbkkaldkrlrni33ccvm3b6vbxzb656-make-symlinks-relative.sh' '/nix/store/5yzw0vhkyszf2d179m0qfkgxmp5wjjx4-move-docs.sh' '/nix/store/fyaryjvghbkpfnsyw97hb3lyb37s1pd6-move-lib64.sh' '/nix/store/kd4xwxjpjxi71jkm6ka0np72if9rm3y0-move-sbin.sh' '/nix/store/pag6l61paj1dc9sv15l7bm5c17xn5kyk-move-systemd-user-units.sh' '/nix/store/jivxp510zxakaaic7qkrb7v1dd2rdbw9-multiple-outputs.sh' '/nix/store/12lvf0c7xric9cny7slvf9cmhypl1p67-patch-shebangs.sh' '/nix/store/cickvswrvann041nqxb0rxilc46svw1n-prune-libtool-files.sh' '/nix/store/xyff06pkhki3qy1ls77w10s0v79c9il0-reproducible-builds.sh' '/nix/store/aazf105snicrlvyzzbdj85sx4179rpfp-set-source-date-epoch-to-latest.sh' '/nix/store/gps9qrh99j7g02840wv5x78ykmz30byp-strip.sh')
+++ declare -a pkgsBuildHost
+++ pkgsBuildTarget=()
+++ declare -a pkgsBuildTarget
+++ pkgsHostHost=()
+++ declare -a pkgsHostHost
+++ pkgsHostTarget=('/nix/store/kcn9w36a573nhkbl5ci7aa2vdk2q5k16-apple-framework-CoreFoundation-11.0.0' '/nix/store/1m6h9mfxcclj75vksyv4jhrwf560im2c-libobjc-11.0.0')
+++ declare -a pkgsHostTarget
+++ pkgsTargetTarget=()
+++ declare -a pkgsTargetTarget
+++ postFixupHooks=('_makeSymlinksRelativeInAllOutputs' '_multioutPropagateDev')
+++ declare -a postFixupHooks
+++ postUnpackHooks=('_updateSourceDateEpochFromSourceRoot')
+++ declare -a postUnpackHooks
+++ preConfigureHooks=('_multioutConfig')
+++ declare -a preConfigureHooks
+++ preConfigurePhases=' updateAutotoolsGnuConfigScriptsPhase'
+++ preFixupHooks=('_moveToShare' '_multioutDocs' '_multioutDevs')
+++ declare -a preFixupHooks
+++ preferLocalBuild=1
+++ export preferLocalBuild
+++ prefix=/Users/ryota2357/dotfiles/outputs/out
+++ propagatedBuildDepFiles=('propagated-build-build-deps' 'propagated-native-build-inputs' 'propagated-build-target-deps')
+++ declare -a propagatedBuildDepFiles
+++ propagatedBuildInputs=
+++ export propagatedBuildInputs
+++ propagatedHostDepFiles=('propagated-host-host-deps' 'propagated-build-inputs')
+++ declare -a propagatedHostDepFiles
+++ propagatedNativeBuildInputs=
+++ export propagatedNativeBuildInputs
+++ propagatedTargetDepFiles=('propagated-target-target-deps')
+++ declare -a propagatedTargetDepFiles
+++ shell=/nix/store/iafzjk7zbkqaszqfp6n006vvxjrpn4f6-bash-5.2p32/bin/bash
+++ export shell
+++ shellHook=
+++ export shellHook
+++ stdenv=/nix/store/kabfxkadn2b8vn6ms91c9vy4q6ks7mkl-stdenv-darwin
+++ export stdenv
+++ strictDeps=
+++ export strictDeps
+++ stripDebugFlags=-S
+++ system=aarch64-darwin
+++ export system
+++ unpackCmdHooks=('_defaultUnpack')
+++ declare -a unpackCmdHooks
+++ PATH='/nix/store/9hsv3szycrhby31if26h6b7ngmr20bqf-lua-language-server-3.11.1/bin:/nix/store/bjq8a9aqgmx5kj2bl4xs91dqbla4b35s-vim-language-server-2.3.1/bin:/nix/store/ij8h81g2vsqq8723xlqb89wcj16fz8n2-nil-2024-08-06/bin:/nix/store/2v0yy9j3x5vdgn389l236lizcwkfxay1-stylua-0.20.0/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/ryota2357/.local/bin:/Users/ryota2357/.local/share/cargo/bin:/Users/ryota2357/.nix-profile/bin:/nix/var/nix/profiles/default/bin:/opt/homebrew/opt/llvm/bin:/opt/homebrew/bin:/opt/homebrew/sbin:/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:/usr/local/share/dotnet:~/.dotnet/tools:/Applications/Wireshark.app/Contents/MacOS'
+++ XDG_DATA_DIRS=/nix/store/9hsv3szycrhby31if26h6b7ngmr20bqf-lua-language-server-3.11.1/share:/usr/local/share:/usr/share:/nix/var/nix/profiles/default/share
++++ mktemp -d -t nix-shell.XXXXXX
+++ export NIX_BUILD_TOP=/var/folders/9q/dvfvj1610rn4hj0tdf98pccr0000gn/T/nix-shell.0zhxrz
+++ NIX_BUILD_TOP=/var/folders/9q/dvfvj1610rn4hj0tdf98pccr0000gn/T/nix-shell.0zhxrz
+++ export TMP=/var/folders/9q/dvfvj1610rn4hj0tdf98pccr0000gn/T/nix-shell.0zhxrz
+++ TMP=/var/folders/9q/dvfvj1610rn4hj0tdf98pccr0000gn/T/nix-shell.0zhxrz
+++ export TMPDIR=/var/folders/9q/dvfvj1610rn4hj0tdf98pccr0000gn/T/nix-shell.0zhxrz
+++ TMPDIR=/var/folders/9q/dvfvj1610rn4hj0tdf98pccr0000gn/T/nix-shell.0zhxrz
+++ export TEMP=/var/folders/9q/dvfvj1610rn4hj0tdf98pccr0000gn/T/nix-shell.0zhxrz
+++ TEMP=/var/folders/9q/dvfvj1610rn4hj0tdf98pccr0000gn/T/nix-shell.0zhxrz
+++ export TEMPDIR=/var/folders/9q/dvfvj1610rn4hj0tdf98pccr0000gn/T/nix-shell.0zhxrz
+++ TEMPDIR=/var/folders/9q/dvfvj1610rn4hj0tdf98pccr0000gn/T/nix-shell.0zhxrz
+++ eval ''
+++ direnv_layout_dir
+++ echo /Users/ryota2357/dotfiles/.direnv
++ nix --extra-experimental-features 'nix-command flakes' profile wipe-history --profile /Users/ryota2357/dotfiles/.direnv/flake-profile
+ popd
+ popd
+ __dump_at_exit
+ local ret=0
+ /Users/ryota2357/.nix-profile/bin/direnv dump json ''
+ trap - EXIT
+ exit 0
direnv: export +CONFIG_SHELL +HOST_PATH +IN_NIX_SHELL +MACOSX_DEPLOYMENT_TARGET +NIX_BUILD_CORES +NIX_BUILD_TOP +NIX_CFLAGS_COMPILE +NIX_DONT_SET_RPATH +NIX_DONT_SET_RPATH_FOR_BUILD +NIX_DONT_SET_RPATH_FOR_TARGET +NIX_ENFORCE_NO_NATIVE +NIX_IGNORE_LD_THROUGH_GCC +NIX_NO_SELF_RPATH +NIX_STORE +PATH_LOCALE +SOURCE_DATE_EPOCH +TEMP +TEMPDIR +TMP +__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 ~TMPDIR ~XDG_DATA_DIRS

@ryota2357
Copy link
Author

Is there something in your shell hook that constantly updates any of the watched files?

I couldn't find anything.

Time stamps also look correct.

スクリーンショット 2024-10-14 0 24 48

@ryota2357
Copy link
Author

ryota2357 commented Oct 13, 2024

@Mic92 I apologize. when start new shell is incorrect.

I'm using Tmux. The correct word is when creating new pain like this.
And of course, when starting a new terminal emulator and moving to that direnv directory.

2024-10-14.0.37.27.mov

@ryota2357
Copy link
Author

It was completely my configuration problem. I apologize for taking so much of your time.

スクリーンショット 2024-10-14 1 14 02

The cache is now working and running fast. Thank you very much.

@Mic92
Copy link
Member

Mic92 commented Oct 14, 2024

If you use Home-Manager there is also a direnv module upstream for it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants