Nix派生捆绑多个程序

时间:2019-09-24 19:31:27

标签: nix

我正在尝试编写一个派生版本,它将安装一些可执行文件。我可以使用symlinkJoin轻松完成此操作

{pgm-a, pgm-b, symlinkJoin}: symlinkJoin {
  name = "pgm-env";
  paths = [pgm-a,pgm-b]; }

但是,如果已经安装了pgm-apgm-b,我会收到一个错误消息,其中包含冲突的软件包...

...'<pgm-a>/bin/pgm-a' and '<pgm-env>/bin/pgm-a' have the same priority 5; use 'nix-env --set-flag priority NUMBER INSTALLED_PKGNAME' ...

是否有一种方法可使环境中的可执行文件套件可用,但只会向环境中添加所需的内容(或避免该错误)?

一些背景: 我已经开始为我的实验室策划一个私有存储库。我们设置了VM网络,安装了一些软件,进行了一些测试,冲洗并重复。除了我之外,没有人是Nix用户,所以我希望将nix部分保持尽可能低调-我既不想用户必须设置优先级标志,也不想让他们使用nix-shell 。它们都习惯于做apt-get install ...,所以我的计划是让它们代替nix-env -i并提供ourExperiment-x之类的软件包,以使它们大部分方式正确地配置VM。

1 个答案:

答案 0 :(得分:1)

是的,您可以像这样直接声明时设置包优先级:

    this.updateForm = this.formBuilder.group({
      username: [ '', Validators.required],
      pin: ['', Validators.required],
      adress: ['', Validators.required],
      country: ['', Validators.required],
      city: ['', Validators.required],
      about: ['', Validators.required],

      // file: ['' , requiredFileType('png')],

      first_name: ['', Validators.required],

      last_name: ['', Validators.required],
      email: ['', [Validators.required, Validators.email]],
      password1: ['', [Validators.required, Validators.minLength(1)]],
      password2: ['', [Validators.required, Validators.minLength(1)]]
  });

默认优先级为5,优先级较低的优先级高于优先级,因此,将其设置为10,此派生的文件将仅用作后备。