Nixos

如何使用官方 Nix Docker 鏡像來測試配置?

  • August 26, 2021

我正在嘗試在 GitLab CI 中建構我的 Nix 配置,以確保任何更改至少有機會在 NixOS 中工作。Nix Docker 官方鏡像的結構與 NixOS (基於 Alpine )有很大不同,我一直收到一個錯誤,我不知道如何解決:

$ 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')

我發現做類似事情的唯一其他repo比我希望在這裡做的要復雜得多*。*

終於解決了

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 中清空了。

引用自:https://unix.stackexchange.com/questions/658760