#nix #命令行工具 #修改 #查询 #实用程序 #文件 #nixpkgs

应用 nixcfg

用于查询和修改 .nix 文件的命令行工具

1 个不稳定版本

使用旧的 Rust 2015

0.2.0 2018 年 9 月 9 日

#7#nixpkgs

MIT 许可证

16KB
249 行代码(不含注释)

nixcfg

用于查询和修改 .nix 文件的命令行工具。

用法

nixcfg 0.1.0
Grégoire Geis <git@gregoirege.is>
Command line utility to query and modify .nix files.

USAGE:
    nixcfg [FLAGS] [OPTIONS] <SUBCOMMAND>

FLAGS:
    -h, --help        Prints help information
    -i, --in-place    Modify in place instead of printing result to stdout.
    -V, --version     Prints version information

OPTIONS:
    -f, --file <input>    Input .nix file to query or modify. [default: /etc/nixos/configuration.nix]

SUBCOMMANDS:
    get     Get the value at the given path.
    set     Set the value at the given path.

示例

考虑以下文件

# file.nix
{ pkgs, config, ... }:

{
  environment.systemPackages = with pkgs; [ ];

  networking.firewall.enable = true;
  networking.firewall.allowedTCPPorts = [ 80 8080 8000 24800 ];

  nixpkgs.config = { allowBroken = false; allowUnfree = true; };
}

查询值

  • nixpkg -.nix get environment.systemPackages 返回 with pkgs; [ ]
  • nixpkg -.nix get nixpkgs.config 返回 { allowBroken = false; allowUnfree = true; }
  • nixpkg -.nix get nixpkgs.config.allowBroken 返回 false

请注意,nixcfg 不识别属于同一对象的值。

  • nixpkg -.nix get networking.firewall.enable 返回 true
  • nixpkg -.nix get networking.firewall.allowedTCPPorts 返回 [ 80 8080 8000 24800 ]
  • nixpkg -.nix get networking.firewall 无法找到匹配的值。

更新值

nixpkg-f file.nix set networking.firewall.enablefalse

yields

# file.nix
{ pkgs, config, ... }:

{
  environment.systemPackages = with pkgs; [ ];

  networking.firewall.enable = false;
  networking.firewall.allowedTCPPorts = [ 80 8080 8000 24800 ];

  nixpkgs.config = { allowBroken = false; allowUnfree = true; };
}

待办事项

  • 添加如果键之前不存在,则插入值的函数。

免责声明

此项目非常新,仅在有限的测试套件中进行了测试。
自行承担风险使用。

依赖关系

~3.5MB
~67K SLoC