3个版本
0.1.2 | 2022年6月25日 |
---|---|
0.1.1 | 2022年5月20日 |
0.1.0 | 2022年5月12日 |
14 在 #nixos 中
53KB
1.5K SLoC
Npkg
Npkg 是一个小的工具,允许您在一个地方配置所有您的NixOS软件包。
Npkg 使用 rust 编写,并使用 nix-editor 和 rnix-parser 解析和编辑配置文件。
警告
此工具仍然是新的/实验性的,并且由于它直接修改关键文件,例如 /etc/nixos/configuration.nix
,请确保您有备份,以防它损坏或删除此类文件。我已经为了虚无牺牲了一些我的文件,不要让这种情况发生在你身上!
NixOS 安装
git clone https://github.com/vlinkz/npkg
nix-env -f npkg -i npkg
然后修改 ~/npkg/config.json
以匹配您的配置。
与Nix Flakes一起使用
nix run github:vlinkz/npkg -- --help
声明性系统安装
configuration.nix
的头部
{ config, pkgs, lib, ... }:
let
npkg = (import (pkgs.fetchFromGitHub {
owner = "vlinkz";
repo = "npkg";
rev = "0.1.2";
sha256 = "0000000000000000000000000000000000000000000000000000";
})).default;
in
{
imports =
# rest of configuration
软件包
environment.systemPackages =
with pkgs; [
npkg
# rest of your packages
];
参数
USAGE:
npkg [OPTIONS] [PACKAGES]...
ARGS:
<PACKAGES>... Packages
OPTIONS:
-d, --dry-run Do not build any packages, only edit configuration file
-E, --env Use nix environment 'nix-env'
-h, --help Print help information
-H, --home Use home-manager 'home.nix'
-i, --install Install a package
-l, --list List installed packages
-o, --output <OUTPUT> Output modified configuration file to a specified location
-r, --remove Remove a package
-s, --search Search for a package
-S, --system Use system 'configuration.nix'
-u, --update Update packages
-V, --version Print version information
用例
安装软件包
要安装软件包,您可以运行
npkg -i <PACKAGE>
默认情况下,这将使用 nix-env
并在您当前环境中安装软件包。您可以通过使用 -S
、-H
或 -E
标志来选择使用特定的可用安装程序。
-
npkg -iS hello
将安装
hello
软件包作为系统软件包,通过修改您的/etc/nixos/configuration.nix
文件,然后调用nixos-rebuild switch
。 -
npkg -iH hello
如果已安装,将使用 home-manager 安装
hello
软件包。它将修改~/.config/nixpkgs/home.nix
,然后调用home-manager switch
。 -
npkg -iE hello
将
hello
软件包安装到当前 nix 环境,通过调用nix-env -iA nixos.hello
。
删除软件包
与安装软件包非常相似
npkg -r <PACKAGE>
相同的 -S
、-H
和 -E
标志适用。
更新软件包
更新所有软件包
npkg -u
要指定仅一种类型,可以使用相同的 -S
、-H
和 -E
标志。
列出已安装的软件包
npkg -l
这将列出在 /etc/nixos/configuration.nix
、~/.config/nixpkgs/home.nix
以及通过 nix-env
安装的软件包。
您可以通过使用 -S
、-H
和 -E
标志来指定这些选项之一。
搜索软件包
npkg -s <QUERY>
这将打印与查询匹配的软件包列表。例如
$ npkg -s hello greeting
* hello (2.12) (nix env)
A program that produces a familiar, friendly greeting
这意味着软件包 hello
版本 2.12
目前已通过 nix-env
安装。
配置
配置文件默认存储在 ~/.config/npkg/config.json
中,包含
{
"systemconfig": "/etc/nixos/configuration.nix",
"homeconfig": "/home/$HOME/.config/nixpkgs/home.nix",
"flake": null
}
这些值可以被编辑以指向其他位置。这对于基于 nix flake 的系统 或任何配置文件不在预期位置的系统非常有用。
但为什么?
我想用 nix-editor 作为其他工具的后端来编写一些作为概念的代码。但到目前为止,我几乎每天都在使用它!
未来计划
-
检查其他位置安装的软件包。
例如,如果使用
home-manager
安装hello
,并且它已经通过nix-env
安装,提供一个选项来切换它。 -
在删除软件包时,自动检测安装位置而不是默认使用
nix-env
-
其他任何进入我脑海的想法
依赖项
~17–26MB
~553K SLoC