Господа, давайте закроем тему, почему хэш перед именем, а не после, навсегда.Да, вы можете "вырезать" хэш с конца строки "/nix/store/foo-1.2.3-<hash>". Но такая задача не стоит вообще: не возникает необходимости этого делать.
Задача, которая реально стоит - это во время сборки найти в произвольном файле (во всех файлах) ссылки на другие пакеты.
Проще всего это продемонстировать на примере текстовых скриптов, но и бинарные файлы тоже ссылаются на другие пакеты, например:
objdump -p /nix/store/1pfwvyjl6rh57hbcj9w7yb16wb5djjx3-systemd-238/lib/systemd/systemd | grep -F RUNPATH
RUNPATH /nix/store/1pfwvyjl6rh57hbcj9w7yb16wb5djjx3-systemd-238/lib/systemd:/nix/store/hs26ajisl0xgb9ihvakmff7i0kjgzb7i-libseccomp-2.3.3-lib/lib:/nix/store/qd072spxcp4dqqjzwdybj59nna2adjmi-util-linux-2.32/lib:/nix/store/nazwqg290a3i5jrvwg8cqvqnh8n8pinf-audit-2.8.3/lib:/nix/store/9y8vpz8kdv463lz7qimapqiak4wh9vnk-kmod-25/lib:/nix/store/av4z4031zmss39xbzzfgkxjj5m7i420y-libapparmor-2.12.0/lib:/nix/store/nfh0wdwg24cf5xk0pw7n8w7m4d57wjs1-linux-pam-1.3.0/lib:/nix/store/93ljbaqhsipwamcn1acrv94jm6rjpcnd-acl-2.2.52/lib:/nix/store/83lrbvbmxrgv7iz49mgd42yvhi473xp6-glibc-2.27/lib
Вот ваша строка: /nix/store/1pfwvyjl6rh57hbcj9w7yb16wb5djjx3-systemd-238/lib/systemd:/nix/store/hs26ajisl0xgb9ihvakmff7i0kjgzb7i-libseccomp-2.3.3-lib/lib:/nix/store/qd072spxcp4dqqjzwdybj59nna2adjmi-util-linux-2.32/lib:/nix/store/nazwqg290a3i5jrvwg8cqvqnh8n8pinf-audit-2.8.3/lib:/nix/store/9y8vpz8kdv463lz7qimapqiak4wh9vnk-kmod-25/lib:/nix/store/av4z4031zmss39xbzzfgkxjj5m7i420y-libapparmor-2.12.0/lib:/nix/store/nfh0wdwg24cf5xk0pw7n8w7m4d57wjs1-linux-pam-1.3.0/lib:/nix/store/93ljbaqhsipwamcn1acrv94jm6rjpcnd-acl-2.2.52/lib:/nix/store/83lrbvbmxrgv7iz49mgd42yvhi473xp6-glibc-2.27/lib
Где здесь конец? Даже в этом простом случае "/83lrbvbmxrgv7iz49mgd42yvhi473xp6-glibc-2.27/lib" где конец? Если вы думаете про "первый слэш", подумайте еще: не все "пакеты" являются директориями, некоторые - простые файлы типа "/nix/store/830rbvbmxrgv7iz49mgd42yvhi473xp6-nginx.conf".
Короче, если ставить хэш "в конце", его просто не найти.
Если же хэш "в начале" (сразу после /nix/store), то всё значительно упрощается: нашли /nix/store, отсчитали n байт. Всё.
Напоследок, вот как работает Никс:
Вход:
```
#!${pkgs.bash}/bin/bash
${pkgs.coreutils}/bin/date -d now +%s
```
Выход:
```
#!/nix/store/8zkg9ac4s4alzyf4a8kfrig1j73z66dw-bash-4.4-p23/bin/bash
/nix/store/afd7zfah20ki5qxzic3z8sizgkmcjwnh-coreutils-8.27/bin/date -d now +%s
```