Current nixpkgs deferred nixpkgs.config breaks generated NixOS hosts
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 35/100
- Tipo di issue
- Bug
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Ferma
- Ambito
- build-system
Direzione di ricerca
Start with flake.nix and the mkFlake channel configuration, then reproduce the failure with the provided nix eval command. Check the pinned flake-utils-plus host wrapper and upstream issue #162; done means Snowfall evaluates the affected NixOS hosts without the deferred nixpkgs.config assertion after an upstream update or compatibility patch.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Summary
Current nixpkgs breaks Snowfall-generated NixOS configurations because Snowfall still pins a flake-utils-plus host wrapper whose nixpkgs.config detection is incompatible with the option's current deferred-module semantics.
This is related to, but distinct from, #24 and #73. Those reports involved user modules explicitly setting nixpkgs.config. In this case the failure occurs on a host that has no host-level nixpkgs.config definition.
Versions
- Snowfall Lib:
6ee3542cb459ca4b038cfe50ceb8797f05cdabad(currentmainwhen reproduced) - Snowfall's pinned flake-utils-plus:
3542fe9126dc492e53ddd252bb0260fe035f2c0f - nixpkgs:
f13ff45afd1bb73e640eaa08a7066dbed07e3238fromnixos-unstable
Reproduction
A normal Snowfall configuration with channel configuration is sufficient:
lib.mkFlake {
channels-config.allowUnfree = true;
# regular discovered systems/modules
}
Then evaluate a discovered NixOS host which does not define nixpkgs.config itself:
$ nix eval '.#nixosConfigurations.ceres.config.system.build.toplevel.drvPath'
error:
Failed assertions:
- Your system configures nixpkgs with an externally created instance.
`nixpkgs.config` options should be passed when creating the instance instead.
Defined in:
- .../flake.nix
Cause
Snowfall maps channels-config to flake-utils-plus' channelsConfig, which is correct. The problem is in the pinned flake-utils-plus host builder.
It pre-evaluates the host and tests:
hostConfig.nixpkgs.config == { }
Current nixpkgs declares nixpkgs.config as a deferredModuleWith option and applies it as:
apply = _: finalPkgs.config;
Therefore reading hostConfig.nixpkgs.config returns the fully applied pkgs.config, not the raw module definitions. The empty-config check is no longer valid and the wrapper takes its re-import path even when the host did not configure the option.
The wrapper then defines both:
nixpkgs.pkgs = ...;
nixpkgs.config = lib.mkForce { };
Current nixpkgs rejects any non-default definition of nixpkgs.config when nixpkgs.pkgs is externally supplied, including an explicitly forced empty value.
Tested workaround / fix direction
I tested overriding Snowfall's transitive flake-utils-plus input with a compatibility version that:
- Keeps the raw channel configuration and overlay list when importing each channel.
- Stops pre-evaluating and reading the applied
hostConfig.nixpkgs.configvalue. - Does not define external
nixpkgs.pkgsfor NixOS hosts. - Supplies the raw channel config and overlays as ordinary
nixpkgs.configandnixpkgs.overlaysmodule definitions, allowing NixOS to construct the package set.
With that change, three active hosts evaluate, including one with a host-specific permittedInsecurePackages value. Home Manager still uses global packages and the configured overlays remain active.
Simply overriding to flake-utils-plus v1.6.0 did not help because the relevant host wrapper is still present there.
Would you be open to updating the transitive dependency once flake-utils-plus fixes this, or carrying a compatibility patch in Snowfall in the meantime?
Related upstream issues: gytis-ivaskevicius/flake-utils-plus#136 and gytis-ivaskevicius/flake-utils-plus#142.
Tracking
The corresponding flake-utils-plus report is gytis-ivaskevicius/flake-utils-plus#162. The underlying wrapper fix belongs there; this issue tracks updating or patching Snowfall's transitive dependency.
- Lingua principale
- Nix
- Stelle
- 627
- Fork
- 66
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Preparare l'ambiente
Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di snowfallorg/lib
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
snowfallorg/lib#159 · 3 reazioni ·
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 48/100
snowfallorg/lib#190 · 1 commento ·
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 45/100
snowfallorg/lib#188 · 1 commento ·
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 25/100
snowfallorg/lib#186 ·
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 25/100
snowfallorg/lib#185 · 5 commenti ·
Tutte le issue di snowfallorg/lib
Issue simili
-
Build: the CUDA backend fails without cuDNN instead of skipping the cuDNN shim (as the cuDF shim does)Forse già presa Una pull request collegata a questa issue è aperta o già unita. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
beehive-lab/TornadoVM#1248 ·
I maintainer di solito rispondono entro 1 giorno
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
SimVascular/svZeroDSolver#253 ·
-
difficulty: easy domain: devops effort: 1-4h enhancement good first issue smart-contracts Stellar Wave
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
Kaycee276/Chesster#469 · 2 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
ai-generated bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
VV01T3K/ResearchCruiseApp#463 ·
I maintainer di solito rispondono entro 2 giorni
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 75/100
tesseract-ocr/tesseract#4653 ·
I maintainer di solito rispondono entro 1 giorno