首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从nixos安装virtualbox模块-在configuration.nix中不稳定

从nixos安装virtualbox模块-在configuration.nix中不稳定
EN

Stack Overflow用户
提问于 2018-02-17 06:01:37
回答 2查看 3K关注 0票数 4

可以使用来自/etc/nixos/configuration.nix的配置从nixos安装包--在这个答案中是不稳定的。

下面是一个从nixos-不稳定安装htop包的示例:

代码语言:javascript
复制
{ config, pkgs, ... }:

let
  unstableTarball =
    fetchTarball
      https://github.com/NixOS/nixpkgs-channels/archive/nixos-unstable.tar.gz;
in
{
  ...

  nixpkgs.config = {
    packageOverrides = pkgs: {
      unstable = import unstableTarball {
        config = config.nixpkgs.config;
      };
    };
  };

  environment.systemPackages = with pkgs; [
    ...
    unstable.htop
  ];

  ...
};

我希望能够从nixos安装Virtualbox包(以及相关的内核模块)--也不稳定。

天真地将virtualbox包添加到environment.systemPackages并不像我预期的那样工作。不安装与不稳定版本Virtualbox匹配的Virtualbox模块。这是我的/etc/nixos/configuration.nix的一个片段

代码语言:javascript
复制
  nixpkgs.config.virtualbox.enableExtensionPack = true;
  virtualisation.virtualbox.host.enable = true;
  environment.systemPackages = with pkgs; [
    ...
    unstable.virtualbox
  ];

上面的代码将正确地从nixos(不稳定的,但不是Virtualbox内核模块)安装virtualbox包。

如何从nixos安装Virtualbox内核模块-也不稳定?为什么上面的方法不起作用?

EN

回答 2

Stack Overflow用户

发布于 2018-02-17 15:01:59

您的配置无法工作,因为virtualbox模块对virtualbox包有自己的引用。也许它应该像一些其他模块那样公开一个覆盖包的选项,但是现在它没有,为它发出一个拉请求应该不难。

另一种方法是替换违规模块/模块,禁用使用的disabledModules,然后用imports导入替换。

无论哪种方式,你的里程都可能不同。对于我来说,第一个选项似乎是最干净的,但您可能希望检查发行版中的nixos模块与不稳定版本之间的差异。

票数 1
EN

Stack Overflow用户

发布于 2018-03-08 23:28:58

安装了原始内核模块,因为它是针对特定内核单独构建的。通常,虚拟盒-主机模块使内核模块和用户程序保持同步。

当您想要覆盖用户程序时,还需要重写内核模块。这相当于这样的东西:

!!未测试代码

代码语言:javascript
复制
  ...

  boot.kernelPackages = pkgs.linuxPackages.extend (self: super: {
    virtualbox = super.virtualbox.override {
      inherit (self) kernel;
    };
    virtualboxGuestAdditions = super.virtualboxGuestAdditions.override {
      inherit (self) kernel;
    };
  });
  ## also, the user program override should be introduced 
  ## directly at packageOverrides
  nixpkgs.config.packageOverrides = pkgs: rec {
    unstable = import
      (fetchTarball https://github.com/NixOS/nixpkgs-channels/archive/nixos-unstable.tar.gz) {
        config = config.nixpkgs.config;
      };
    virtualbox = unstable.virtualbox;
  };

  ...

类似这样的东西应该允许您运行常规的virtualbox-主机模块,并注入不稳定的包。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48838411

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档