Хотелось бы иметь кэш, чтобы каждый раз не собирать одни и те же пакеты.
Кэш будет и так и так (просто это разные кэши)
Тогда буду использовать cabal2nix, так как там меньше париться надо с установкой
Похоже, cabal2nix работает хорошо для тривиальных случаев. Создал проект, использовал библиотеки attoparsec и text, сделал nix-build. Далее написал какой-то код, использующий эти две библиотеки, и уже в nix-shell запустил cabal run. В итоге никакой компиляции attoparsec и text не было. Это говорит о том, что всё работает
Они бы и просто кабалом кэшировались, если честно :-) я на NixOS для маленьких вещей использую голый Кабал и норм. Бывают конечно проблемки (типа требования упомянутого выше zlib.dev), но для "простых вещей" норм
Кешировались даже между проектами? Ну, как минимум, не будет проблем с выбором версии GHC. Ну, то есть можно поставить nix и всё — development environment уже готов, а так бы пришлось ставить ghcup или ещё что-нибудь...
Есть такая штука, называется cabal store, там всё прекрасно кэшируется между проектами. Разные версии ghc требуют разных пакетов в любом случае, с никсом или без
Ну ладно, тогда такой плюс: не пришлось собирать зависимости (как я понял, nix скачал их, а не собирал). Как я знаю, cabal бы из исходников начал собирать все зависимости
Если на основе nix базироваться, то строго больше промежуточных сущностей (типа cabal2nix, nix-shell)
Похоже, если использовать cabal2nix, то нельзя поменять флаги оптимизации. Пробовал в cabal файле написать ghc-options: -O2, но потерпел неудачу
Обсуждают сегодня