Size: a a a

2021 June 19

АБ

Александр Бантьев... in NixOS
Но там нет никакой кросс-компиляции в понимании nixpkgs
источник

АБ

Александр Бантьев... in NixOS
Всё куда проще, просто в qemu запускаются нативные для "хоста" (всмысле таргета в общечеловеческом понимании) компиляторы и утилиты
источник

AV

Alexander Vershilov in NixOS
Ага, понимаю
источник

АБ

Александр Бантьев... in NixOS
Возвращаясь к изначальному вопросу, я хоть немного объяснил откуда берутся pkgs и почему это не неявный контекст?
источник

AV

Alexander Vershilov in NixOS
Да
источник

AV

Alexander Vershilov in NixOS
Я вроде понял, спасибо!
источник

АБ

Александр Бантьев... in NixOS
Отлично!
источник

AV

Alexander Vershilov in NixOS
Так, базовые вещи работают буду с более сложными разбираться, тут смежные вопросы
источник

АБ

Александр Бантьев... in NixOS
Ну смежные тоже сюда можно
источник

АБ

Александр Бантьев... in NixOS
Хаскель я люблю, правда почти не умею
источник

AV

Alexander Vershilov in NixOS
Не, всё ещё по никсу, возможно даже примерно о том же
источник

AV

Alexander Vershilov in NixOS
Есть очередной, файл foo/default.nix:

{ pkgs
, dockerTools
, $company
, $package-exe
}:
...
dockerTools.buildImage {
 name = the_prefix + "smt-portal";
 fromImage = $company.docker.base;
 contents = [ ... ];
 tag = the_tag;
 config.Cmd = [ "/bin/tini" "--" "/bin/run" ];
 config.Env = $company.docker.base.config.Env;
}

В оверлеях:

(self: pkgs: { $company.docker  = ((import ((self.$company-repo) + "/nix/docker.nix")) self); })
(self: super:
   let call = self.callPackage;
   in rec
     {
       cheops-smt-portal-docker =
         call ./foo
           { cheops-smt-exe = super.$company.haskellPackages.$package-exe; }

Ругается на то, что нет атрибута docker в строке config.Env = $company.docker
При этом я проверял, что $company.docker.base само по себе собирается
источник

AV

Alexander Vershilov in NixOS
А не! не собирается, чем-то сломал, буду разбираться
источник

AV

Alexander Vershilov in NixOS
Вот! Другой вопрос, оказывается
источник

AV

Alexander Vershilov in NixOS
^ вот это вот, при добавлении второго оверлея $company.docker больше недоступно, как тут быть правильно?
источник

AV

Alexander Vershilov in NixOS
Сделал:

 (self: pkgs:
     let ghcVersion = "ghc8103"; in
     { $company  = pkgs.$company //
        { haskellPackages = pkgs.haskell.packages.${ghcVersion}.override {
           ...
          };
        };
     })

Вроде взлетело, но правильно ли это?
источник

AV

Alexander Vershilov in NixOS
Учитывая, что кажется в pills предлагалось // избегать
источник

АБ

Александр Бантьев... in NixOS
Да, затрет
источник

АБ

Александр Бантьев... in NixOS
Там есть эээ очень хаскельный проектик
источник

АБ

Александр Бантьев... in NixOS
источник