首页 文章

不使用Nixos时如何使用nix配置?

提问于
浏览
2

所以我've installed Nix on Arch linux and I'能够运行 nix-env -i example ,但是如何定义Nix配置呢?

因为我没有任何 /nixos/configuration.nix 文件 .

这可能吗?


我的目标是能够定义一个配置,然后我可以使用 nixos-rebuild switch 之类的东西来安装和配置所有软件 .

2 回答

  • 2

    我使用NixOS,但我使用 /etc/nixos/configuration.nix 来描述我的系统;我保持相当小,并且不想通过编辑configuration.nix来安装"user"软件 .

    所以我做的是使用我的 ~/.nixpkgs/config.nix (我相信即使在非NixOS nix安装中你也有相同的东西?我从来没有单独使用过nix) .

    我使用的基本结构是这样的:

    {
      packageOverrides = nixpkgs: with nixpkgs; rec {
        mine = with pkgs; buildEnv {
          name = "mine";
          paths = [
            # your packages here
          ];
        };
      };
    }
    

    buildEnv 是一个来自nix的便利函数,它使一个"environment"包从其他一些包中出来;安装包 mine 取决于(以及安装) paths 中列出的所有内容,并确保它们包含在 PATH 之类的东西中 .

    然后我只使用 nix-env -riA nixos.mine 来部署我对环境描述所做的更改(或者在 Channels 更新后重建我的环境) . -r 告诉它从新一代我的 Profiles 中删除除 mine 以外的所有其他内容,这意味着我可以(ab?)使用 nix-env -i some-package 作为"temporarily"安装 some-package 的方式,如果我不知道't decide I like it enough to actually record it in my config.nix it' ll下次我也会被删除部署 .

  • 1

    您当然可以创建自己的配置 . 例如,您可以执行以下操作:

    let
        pkgs = import <nixpkgs> {};
    in
        {    
            packages = [
                pkgs.vim
                pkgs.gimp
            ];
        }
    

    这将产生一个包含名为 packages 的属性的集合,其中包含一个Nix包列表 . 但是,您需要开发一个工具来构建环境,这是 nix-env 的一部分 . 例如,该工具可以使用 nix-env 来确定已安装的内容,将其与配置中的选定软件包进行比较,然后相应地安装/卸载软件包 .

    你没有 /etc/nixos/configuration.nix ,因为's NixOS-specific. So while you can do as you asked, you' d必须推出你自己的解决方案 .

相关问题