Will using nixpkgs-unstable instead of the ambiguous nixpkgs, in flake.nix follows expression cause a lock difference? Claude says so...
#693
|
Hi Lucca, I've made my reference to
Sounds like faulty reasoning to my current level of understanding, and My Home Manager {
description = "Home Manager configuration of <username>";
inputs = {
nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-26.05";
nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable";
yazelix = {
url = "github:Yazelix/nova/stable";
inputs.nixpkgs.follows = "nixpkgs-unstable"; #Maybe this should be inputs.nixpkgs.follows = "pkgs-unstable"; ?
};
home-manager = {
url = "github:nix-community/home-manager";
inputs.nixpkgs.follows = "nixpkgs-stable";
};
};
outputs = inputs@ { self, nixpkgs-stable, nixpkgs-unstable, yazelix, home-manager, ... }:
let
system = "x86_64-linux";
pkgs-stable = import nixpkgs-stable { inherit system; };
pkgs-unstable = import nixpkgs-unstable { inherit system; };
in
{
homeConfigurations."<username>" = home-manager.lib.homeManagerConfiguration {
pkgs = pkgs-unstable;
extraSpecialArgs = { inherit inputs pkgs-stable pkgs-unstable; };
modules = [
./home.nix
];
};
};
}Do you see a problem? My assertion is that my |
Replies: 4 comments 14 replies
|
The final Home Manager {
description = "Home Manager configuration of username";
inputs = {
nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-26.05";
nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable";
nixpkgs-yazelix.url = "github:NixOS/nixpkgs/567a49d1913ce81ac6e9582e3553dd90a955875f";
yazelix = {
url = "github:Yazelix/nova/42b0e0c490a3b940f9a2df2d5672afa4cf28c79f";
inputs = {
nixpkgs.follows = "nixpkgs-yazelix";
yazelixScreen.inputs.fenix.follows = "yazelix/novaBar/fenix";
yazelixZellijPaneOrchestrator.inputs.fenix.follows = "yazelix/novaBar/fenix";
yazelixZellijPopup.inputs.fenix.follows = "yazelix/novaBar/fenix";
yazelixHelix.inputs.rust-overlay.follows = "yazelix/rio/rust-overlay";
zjstatus.inputs.rust-overlay.follows = "yazelix/rio/rust-overlay";
yazelixZellijPopup.inputs.flake-utils.follows = "yazelix/yazelixZellijPaneOrchestrator/flake-utils";
zjstatus.inputs.flake-utils.follows = "yazelix/yazelixZellijPaneOrchestrator/flake-utils";
};
};
home-manager = {
url = "github:nix-community/home-manager/release-26.05";
inputs.nixpkgs.follows = "nixpkgs-stable";
};
};
outputs = inputs@ { self, nixpkgs-stable, nixpkgs-unstable, yazelix, home-manager, ... }:
let
system = "x86_64-linux";
pkgs-stable = import nixpkgs-stable { inherit system; };
pkgs-unstable = import nixpkgs-unstable { inherit system; };
in
{
homeConfigurations."dev" = home-manager.lib.homeManagerConfiguration {
pkgs = pkgs-stable;
extraSpecialArgs = { inherit inputs pkgs-stable pkgs-unstable; };
modules = [
./home.nix
./yazelix.nix
];
};
};
}This resulted in the compilation of the major applications as Cachix was bypassed. About 30 minutes of 100% usage on 12 "host" type vCPU-cores (mapped 1:1 to host CPU cores) and 70% usage of 64GB RAM assigned to a virtual machine.
{ inputs, pkgs, ... }:
{
imports = [ inputs.yazelix.homeManagerModules.default ];
programs.yazelix = {
enable = true;
package = inputs.yazelix.packages.${pkgs.stdenv.hostPlatform.system}.yazelix-no-rio;
};
} |
|
hi, thanks for reaching out, this is Astra's take: Your intuition about the names is right: naming an input
Your later configuration also changes internal dependencies. I checked Nova's lockfile at your selected revision: Helix and Rio have different For a default install, I would simplify Nova's declaration to: inputs.yazelix.url = "github:Yazelix/nova/stable";Remove the nested Nova input overrides and keep your Also verify that the Yazelix cache URL and public key are enabled in the Nix configuration that controls your builds. The changed dependencies are a plausible explanation for rebuilds, but the posted configuration alone does not prove whether your cache was ignored or lacked matching outputs. The Home Manager guide includes the simpler default, explicit cache setup, optional overrides, and a dry-run command for inspecting the build plan. |
|
Hi Lucca, it is interesting that GPT6 sees no value in refining the dependency nodes and it is not clear if it actually analysed the differences between the instances. Yazelix is running for me so far so will keep the config that removes the redundancies across what should be a singular node -- as you have done with all your modules. The coupling that will definitely, 100% break in my config will be the pinning of Yazelix to its version's specific Commit. I'll try to write a function that automatically finds and inserts the specific Commit of each Yazelix release during evaluation. Thanks. |
|
Thanks for running with this, Lucca. I'm currently working with |
Tracking this in #697 — Deduplicate compatible Nova flake inputs, paired with our Bead. We’ll start with identical dependency graphs, assess compatibility before aligning differing pins, and verify the resulting builds and cache delivery on Linux and macOS. Thanks for raising it.