Насколько я понял, Nix является альтернативой для cabal sandbox. Наконец, мне удалось установить Nix, но я до сих пор не понимаю, как он может заменить песочницу.
Я понимаю, что вам не нужны кабалы, используя Nix и завернутую версию GHC; однако, если вы хотите для публикации пакета, который вам понадобится в какой-то момент, чтобы упаковать его с помощью cabal. Поэтому вы должны иметь возможность писать и тестировать свою конфигурацию кэша в NIX. Как вы это делаете?
В идеале, я бы хотел, чтобы среда, похожая на песочницу cabal, но содержалась в NIX, это возможно? Фактически, то, что я действительно хотел бы, это эквивалент вложенных песочниц - поскольку я обычно работаю над проектами из нескольких пакетов.
Обновление моего текущего рабочего процесса
В настоящий момент я работаю над 2 или 3 независимыми проектами (P1, P2, P3), каждый из которых состоит из 2 или 3 модулей/пакетов cabal, допустим, для P1: L11, L12 (библиотеки) и E11 (исполняемые файлы). E11 зависит от L12, который зависит от L11. Я в основном разделял исполняемые файлы из библиотеки, потому что они являются частными и хранятся в частном репозитории git.
В теории каждый проект может иметь свою собственную песочницу (разделяемую между ее подмодулями). Я попробовал это (имея общую песочницу для L11 L12 и E11), но это очень раздражает, потому что, если вы изменяете L11, вы не можете его перестроить, потому что E11 зависит от него, поэтому мне сначала нужно удалить E11, чтобы перекомпилировать L11. Это может быть не совсем так, но я сталкиваюсь с подобной проблемой. Это было бы хорошо, если бы я иногда менял L11, но на практике я изменил его больше, чем E11.
Поскольку совместная песочница не работает, я вернулся к одной песочнице для каждого пакетного решения. Он работает, но не идеален. Основная проблема заключается в том, что если я изменяю L11, мне нужно скомпилировать его дважды (один раз в L11, а затем снова в E11). Кроме того, каждый раз, когда я начинаю новую песочницу, как все знают, мне нужно подождать некоторое время, чтобы загрузить и перекомпилировать пакет.
Таким образом, используя Nix, я надеюсь, что вы сможете настроить отдельные "среды" для каждого проекта, которые решают все проблемы.
Надеюсь, что это яснее.