# 软件安装
# 搜索软件包
在 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