Проблема с менеджером пакетов Nix и GitLab - PullRequest
1 голос
/ 30 марта 2019

Я использую менеджер пакетов Nix в OSX Mojave.

Мои коллеги используют более ранние версии OSX.Не уверен, что именно по этой причине они не сталкиваются с этой проблемой.

Я не могу подключиться к конкретному частному репозиторию gitlab, к которому у меня явно есть доступ.Я могу клонировать его напрямую, но не могу создать его, когда создаю проект, частью которого он является.

Это соответствующая выдержка из моего файла default.nix.Мне сказали, что fetchgitPrivate устарела.Я попытался заменить его на fetchGit в этом файле, но он не работает.

      my-private-gitlab-repo = self.callCabal2nix "my-private-gitlab-repo" (pkgs.fetchgitPrivate {
        url = "git@gitlab.com/namehere/my-private-gitlab-repo.git";
        rev = "...";
        sha256 = "...";
      }) {};

Это ошибка, которую я получаю:

reallymemorables-MacBook-Pro:localclone reallymemorable$ ./scripts/ghci-backend
building '/nix/store/kljskajsdljkdgfhj-cabal2nix-my-private-gitlab-repo.drv'...
exporting ssh://git@gitlab.com/namehere/my-private-gitlab-repo.git (rev kjsdjfksdjklfsjkldjfksjdfskldf) into /nix/store/kljskajsdljkdgfhj-cabal2nix-my-private-gitlab-repo-asddfs
Initialized empty Git repository in /nix/store/kljskajsdljkdgfhj-cabal2nix-my-private-gitlab-repo-asddfs/.git/
git@gitlab.com: Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.
git@gitlab.com: Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.
Unable to checkout khjsdfkhdsjhklsdjhfksdhfjksdh from ssh://git@gitlab.com/namehere/my-private-gitlab-repo.git.
builder for '/nix/store/kljskajsdljkdgfhj-cabal2nix-my-private-gitlab-repo-asdffdsgfd.drv' failed with exit code 1
cannot build derivation '/nix/store/kljskajsdljkdgfhj-cabal2nix-my-private-gitlab-repo.drv': 1 dependencies couldn't be built
error: build of '/nix/store/kljskajsdljkdgfhj-cabal2nix-my-private-gitlab-repo.drv' failed
(use '--show-trace' to show detailed location information)

Я полностью потерянкак действовать.Я попытался поместить мои ключи ssh в Shared и в моего обычного пользователя OSX.Я пробовал миллион разрешений.

1 Ответ

1 голос
/ 30 марта 2019

Правильно использовать с Nix 2.x значение builtins.fetchGit - но это не прямая замена: вам нужно удалить аргумент sha256. Поскольку builtins.fetchGit запускается под вашей собственной учетной записью пользователя , а не как строитель Nix, он полностью решает проблемы с разрешениями: все, к чему вы можете обращаться как от себя (связка ключей, YubiKey или смарт-карта, или просто ваша * 1006) * каталог) может быть доступен с помощью копии git, вызванной builtins.fetchGit.

Таким образом:

my-private-gitlab-repo = self.callCabal2nix "my-private-gitlab-repo" (builtins.fetchGit {
  url = "git@gitlab.com/namehere/my-private-gitlab-repo.git";
  rev = "...";
}) {};
...