有普通用户的nix配置文件吗?

有普通用户的nix配置文件吗?

在设置 NixOS(截至 22.11)时,我想将 Emacs 添加到系统中/etc/nixos/configuration.nix,以便默认情况下它始终位于操作系统中。为了使用 Emacs 编辑系统配置,我必须首先安装 Emacs:

nix-env -i emacs

正如预期的那样,编辑environment.systemPackagesnixos-rebuild命令后,我的操作系统中就有了 emacs,下次我重建 nixos 时,Emacs 就会在那里(即使我nix-env --uninstall emacs)。

现在的问题是,我安装的东西nix-env -i没有反映在/etc/nixos/configuration.nix文件中。由于它是在命令行中执行的,因此这些本地安装的命令集的重现性不太好。 (我要添加的配置也是如此~/.emacs.d

我的问题是:

有没有办法使本地安装(例如emacs此处)或本地配置(例如.emacs.d)也可以通过配置文件重现?

答案1

我不建议使用nix-env -i安装任何软件,以确保系统可重现,所有系统更改都应通过编辑进行nixos-configuration.nix

至于emacs的配置,建议通过home-manager修改。

如果配置较少,可以直接通过家庭经理 -programs.emacs.extraConfig)。

如果配置较多,建议使用家庭经理 -home.file.<name>.source用于管理。

为了使系统更具可重复性,我建议将 NixOS 与 Flakes 一起使用,以下是相关指南:

https://github.com/ryan4yin/nixos-and-flakes-book

答案2

不建议使用 nix-env 为系统安装软件包。如果您想为所有用户添加软件包到系统中,检查手册的这一部分。简而言之,您编辑configuration.nix以具有:

environment.systemPackages = with pkgs; [
    <your package here>
]

然后,如果您想编辑它的配置,您可以访问这个网站查看该包的选项。例如,在 vim 的情况下,示例配置为:

programs.vim = {
    enable = true;
    defaultEditor = true;
};

这样,您就可以使整个配置都是声明性的。如果您想要每个用户的程序和配置,您可以按照 @Vladimír Čunát 对 home-manager 的评论中的指南进行操作。这是一些额外的设置,但它与为整个系统安装东西的方式非常相似。家庭管理器还为某些软件包提供了一些额外的选项,因此请务必在家庭管理器手册中检查它们,其中之一可以在这里找到。

相关内容