Как я могу настроить приоритет nix pkg для ghcWithPackages (в коде) - PullRequest
0 голосов
/ 07 мая 2019

Я работаю на nixOS.Как пользователь я устанавливаю xmonad-with-packages & ghc-with-packages.У меня есть файл конфигурации и оверлеи для достижения этой цели, но я регулярно сталкиваюсь с конфликтами:

error: packages '/nix/store/jzjxvm4kll3b2pw7plhksgl1jxvwnkw8-xmonad-with-packages-8.6.4/share/man/man1/ghc.1.gz' and '/nix/store/dnk4znsf8avwjalj350wj59vznpzcihl-ghc-8.6.4-with-packages/share/man/man1/ghc.1.gz' have the same priority 5; use 'nix-env --set-flag priority NUMBER INSTALLED_PKGNAME' to change the priority of one of the conflicting packages (0 being the highest priority)

Я могу использовать nix-env --set-flag priority для решения этой проблемы, но

  1. Этокажется странным - иногда это работает, иногда нет.Я хотел бы сказать, что я не согласен с использованием, но я не верю, что я есть.Например, с указанной выше ошибкой я запускаю

    nix-env --set-flag priority 4 ghc-8.6.4-with-packages
    setting flag on 'ghc-8.6.4-with-packages'
    

    ... и затем при повторном запуске nix-env -i я вижу ту же ошибку: - (

  2. Всякий раз, когда я меняю хост (слишком часто), мне приходится запускать его снова, что раздражает, но, к тому же, приводит к потенциальному несоответствию, которого я стараюсь избегать с помощью nix.

Мне бы очень хотелось настроить приоритеты в моих оверлеях (или config.nix), но как мне это сделать? Мой overlays/myHaskellEnv.nix выглядит так:

self: super: {
  myHaskellEnv = self.haskellPackages.ghcWithHoogle
                     (haskellPackages: with haskellPackages;
                      [ aeson ... ])
}

мойoverlays/myXmonad.nix вот так:

self: super: {
  myXmonad = super.xmonad-with-packages.override {
    packages = hPkgs: with hPkgs; [ xmonad-contrib ];
  };
}

и мой config.nix вот так:

{ nixpkgs ? import <nixpkgs> {} }:

with nixpkgs;
{
  inherit myXmonad myHaskellEnv;
}

Любая помощь или указатели с благодарностью получены!

...