CI runner cannot find sh in PATH

I know a title like this sounds stupid but please hear me out :)

My setup seems to work, it can run echo using the busybox image: https://gitlab.com/phunehehe/my-env/pipelines/4308920.

When I throw in my image phunehehe/nix, it stops working (https://gitlab.com/phunehehe/my-env/builds/4236388):

ERROR: Build failed (system failure): API error (404): oci runtime error: exec: "sh": executable file not found in $PATH

So there is a problem with the image right? Either sh is not in the right place or something is wrong with PATH? Nope:

12:28:53 phunehehe@phunehehe-do3 /home/phunehehe sudo docker run --rm -it phunehehe/nix sh
sh-4.3# echo $PATH
/nix/var/nix/profiles/default/bin
sh-4.3# type sh
sh is /nix/var/nix/profiles/default/bin/sh
sh-4.3# ls -l /bin/sh      
lrwxrwxrwx 1 root 0 36 Sep 12 12:14 /bin/sh -> /nix/var/nix/profiles/default/bin/sh
sh-4.3# sh -c 'echo yay'
yay

Even stranger, gitlab-runner exec works just fine:

12:35:09 phunehehe@phunehehe-do3 /home/phunehehe/my-env sudo -u gitlab-runner env -i PATH=/nix/store/i7hx6w6zy3bv53f2xm1r23ya8qbzn4is-bash-4.3-p42/bin:/nix/store/w8vzn0lsahbd9sfh0v30x65qwq6xrpa8-coreutils-8.25/bin:/nix/store/nx01h8z6k9vv9hb8md39qggnrnn9asry-git-2.7.4/bin /nix/store/4x4qngw8a67znsrwja4ydh1gxm7yb86d-gitlab-runner/bin/gitlab-runner exec docker build                               
Running with gitlab-ci-multi-runner 1.5.3 (fb49c47)
Using Docker executor with image phunehehe/nix:16.03 ...
Pulling docker image phunehehe/nix:16.03 ...
Running on runner--project-1-concurrent-0 via phunehehe-do3...
Cloning repository...
Cloning into '/builds/project-1'...
done.
Checking out 2c593678 as wip...
$ echo yay
yay
Build succeeded

Do I miss something or is the runner trying to do something weird with PATH?