# 软件安装

# 搜索软件包

在 https://search.nixos.org/packages 中可以搜索 Nix 中已有的软件包,注意选择与自己使用版本匹配的 Channel。

也可以使用 nix search 进行搜索。

# 用户级安装

以安装 vim 为例:

nix-env -iA nixos.vim

如果是在非 NixOS 中使用 Nix,应该使用 nixpkgs.vim 而非 nixos.vim。

这种安装方法不需要 root 权限, 且安装的应用仅对当前用户可见,你可以在 ~/.nix-profile/bin 目录找的 nvim。

# 系统级安装

向 configuration.nix 的 systemPackages 列表中添加软件包:

  environment.systemPackages = with pkgs; [
    vim
  ];

之后执行 nixos-rebuild switch 即可安装。

你可以在 /run/current-system/sw/bin 目录找到 nvim。

但是,上述找到的 nvim 都是软连接,无论哪种方法安装的软件实际都在 /nix/store 中,一个名字类似于 xqjwhyapv15bbrjxxnqia7dpf2smxgfd-neovim-0.6.0 的目录里。

# 使用非自由软件

nix 默认不支持安装非自由软件,但是很多非自由软件是非常有用的,比如google-chrome,vscode。可以通过配置来支持:

如果只是临时允许,可以通过设置环境变量:

 export NIXPKGS_ALLOW_UNFREE=1

对于 nixos-rebuild, 在 configuration.nix 中添加以下配置

{ nixpkgs.config.allowUnfree = true; }

对于 nix-env, nix-build, nix-shell 等命令,在 ~/.config/nixpkgs/config.nix 中添加以下配置:

{ allowUnfree = true; }

如果没有这个文件,直接创建一下就可以了。

# 使用 Flatpak 安装软件

Flatpak (opens new window)是一种构建、发布、安装和运行应用程序的技术。Flatpak的设计目标是使应用程序可以安装在任何一个发行版上.

在 NixOS 中使用 Flatpak, 需要在 configuration.nix 添加以下配置:

 # Enable Flatpak
  services.flatpak.enable = true;
  xdg.portal.enable = true;
  xdg.portal.extraPortals = [ pkgs.xdg-desktop-portal-gtk ];

使用以下命令添加存储库,例如 Flathub:

  flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
  flatpak update

最后,可以搜索并安装程序, 以 typora 为例:

  flatpak search typora
  flatpak install flathub io.typora.Typora
  flatpak run io.typora.Typora

# 在非 NixOS 系统上安装 nix

参考 https://nixos.org/download.html, nix 有两种安装模式,单用户安装和多用户安装。

单用户安装,顾名思义,只允许一个用户使用,即使是 root 用户也不能正常调用 nix (应该不会有人用 root 作为单用户吧)。优点是安装软件不需要 root 权限,不用安装 nix-daemon,也不用建立一堆 nixbuild 用户,

脚本会自动在根目录创建 /nix 目录,当然可以提前手动建立的

比如我想挂载到 /data 分区,可以修改 /etc/fstab

UUID=e007a276-3693-4279-a05f-6435fe4688ab /data          ext4    rw,relatime 0 2
/data/nix /nix none defaults,bind 0 0

如果是单用户安装必须让 /nix 归当前用户所有

chown -R rewine /nix