Я пытаюсь использовать fetchgit
для загрузки исходных репозиториев с частного сервера GitLab моей лаборатории, который в настоящее время самостоятельно подписывает свой сертификат SSL.
default.nix
:
with (import <nixpkgs> {});
{ test-pkg = callPackage ./test-pkg.nix {
buildPythonPackage = python35Packages.buildPythonPackage;
};
}
test-pkg.nix
:
{ buildPythonPackage,fetchgit }:
buildPythonPackage rec {
pname = "test-pkg";
version = "0.2.1";
src = fetchgit {
url = "https://gitlabserver/experiment-deployment/test-pkg";
rev = "refs/tags/v${version}";
sha256 = "43c2c9e5e7a16b6c88ba3088a9bfc82f7db8e13378be7c78d6c14a5f8ed05afd";
};
}
Что приводит к ошибке при вызове nix-shell
fatal: unable to access 'https://gitlabserver/experiment-deployment/test-pkg/': SSL certificate problem: self signed certificate
Глядя на build-support / fetchgit , этоКажется, что fetchgit
сделан с mkDerivation
, поэтому я попытался сделать новый fetchgit
, используя overrideAttrs
. Я передаю переменную среды git, чтобы git игнорировал проверку SSL, ожидая, что переменная будет инициализирована на этапе установки.
исправлено default.nix
:
with (import <nixpkgs> {});
let fetchgit-no-verify = fetchgit.overrideAttrs { GIT_SSL_NO_VERIFY=true;} ;
in rec {
test-pkg = callPackage ./test-pkg.nix {
buildPythonPackage = python35Packages.buildPythonPackage;
fetchgit = fetchgit-no-verify;
};
}
Я думал, чтоочень умно, когда я думал об этом на выходных, я обнаружил, что при реализации моей новой ошибки говорится, что
error: attribute 'overrideAttrs' missing, at [...]/default.nix:2:26
Проверка fetchgit
в nix repl
показывает, что это набор атрибутов functor
. Я попытался немного добраться до overrideAttrs
, но безуспешно. Пытаясь снова, я увидел, что git
может быть передано в fetchGit
,
, пересмотрено default.nix
:
with (import <nixpkgs> {});
let git = git.overrideAttrs { GIT_SSL_NO_VERIFY=true;} ;
fetchgit-no-verify = fetchgit.override { git=git-no-verify;} ;
in rec {
test-pkg = callPackage ./test-pkg.nix {
buildPythonPackage = python35Packages.buildPythonPackage;
fetchgit = fetchgit-no-verify;
};
}
, но новая ошибка:
error: attempt to call something which is not a function but a set, at /nix/store/jmynn33vcn3mcscsch0zf46fz9wsw05y-nixpkgs-20.03pre193309.c4196cca9ac/nixpkgs/pkgs/stdenv/generic/make-derivation.nix:318:55
Наконец, на мои вопросы. Есть ли способ добавить переменную окружения в производные fetchgit
или git
? Возможно, есть другой способ подключения - какой-то встроенный параметр, который я пропустил? Я мог бы использовать частный репозиторий, используя ssh и избегая https, однако из-за того, как мы проводим эксперименты, я бы хотел этого избежать.