我正在尝试建立我的 Nix 配置在 GitLab CI 中,确保任何更改至少有机会在 NixOS 中发挥作用。这官方 Nix Docker 镜像与 NixOS 有非常不同的结构(基于阿尔派),并且我不断收到错误,我不知道如何解决:
$ docker run --volume=$(pwd):/etc/nixos --interactive --rm --tty nixos/nix
5cc8dad8d887:/# nix-build /etc/nixos/configuration.nix
error: cannot auto-call a function that has an argument without a default value ('config')
甚至生成的文件也nixos-generate-config
有同样的问题:
$ cd "$(mktemp --directory)"
$ nixos-generate-config --root .
$ nix-build etc/nixos/configuration.nix
error: cannot auto-call a function that has an argument without a default value ('config')
唯一的另一个回购协议我发现做类似的事情是很多比我希望在这里做的更复杂。
答案1
解决了, 最后:
build:
stage: test
image: nixos/nix
before_script:
- echo system-features = kvm | tee -a /etc/nix/nix.conf
- echo {} | tee common.nix hardware-configuration.nix host.nix
- nix-env --install --attr nixpkgs.nixos-rebuild nixpkgs.man
script:
- nix-build '<nixpkgs/nixos>' -I nixos-config=ci.nix
cache:
- key:
files:
- configuration.nix
paths:
- /nix/store
ci.nix 重写了一些能够构建的东西:
{ lib, ... }: {
imports = [ ./configuration.nix ];
boot = lib.mkForce { };
environment.systemPackages = lib.mkForce [ ];
}
注意:为了避免磁盘空间不足(或必须创建和维护我自己的运行程序),我已清空environment.systemPackages
ci.yml。