--- a/crates/fleet-base/src/host.rs +++ b/crates/fleet-base/src/host.rs @@ -61,6 +61,7 @@ pub host_config: Option, pub nixos_config: OnceCell, + pub pkgs_override: Option, // TODO: Move command helpers away with connectivity refactor pub local: bool, @@ -297,6 +298,9 @@ /// Packages for this host, resolved with nixpkgs overlays pub async fn pkgs(&self) -> Result { + if let Some(value) = &self.pkgs_override { + return Ok(value.clone()); + } let Some(host_config) = &self.host_config else { bail!("local host has no host_config"); }; @@ -310,8 +314,6 @@ ConfigHost { config: self.clone(), name: "".to_owned(), - local: true, - session: OnceLock::new(), host_config: None, nixos_config: OnceCell::new(), groups: { @@ -319,6 +321,10 @@ let _ = cell.set(vec![]); cell }, + pkgs_override: Some(self.default_pkgs.clone()), + + local: true, + session: OnceLock::new(), } } @@ -332,7 +338,8 @@ host_config: Some(host_config), nixos_config: OnceCell::new(), groups: OnceCell::new(), - + pkgs_override: None, + // TODO: Remove with connectivit refactor local: self.localhost == name, session: OnceLock::new(), --- a/crates/fleet-base/src/opts.rs +++ b/crates/fleet-base/src/opts.rs @@ -196,11 +196,11 @@ let import = nix_go!(builtins_field.import); let overlays = nix_go!(config_field.nixpkgs.overlays); - let nixpkgs = nix_go!(fleet_field.nixpkgs.buildUsing | import); + let nixpkgs = nix_go!(config_field.nixpkgs.buildUsing | import); let default_pkgs = nix_go!(nixpkgs(Obj { overlays, - system: { self.local_system.clone() }, + system: { local_system.clone() }, })); Ok(Config(Arc::new(FleetConfigInternals { --- a/lib/flakePart.nix +++ b/lib/flakePart.nix @@ -9,7 +9,6 @@ inherit (lib.attrsets) mapAttrs; inherit (lib.types) lazyAttrsOf deferredModule unspecified; inherit (lib.strings) isPath; - inherit (fleetLib.options) mkHostsOption; in { options.fleetModules = mkOption { type = lazyAttrsOf unspecified; @@ -42,20 +41,18 @@ ++ [ module { - options.hosts = mkHostsOption { - nixos.nixpkgs.overlays = [ + config = { + data = + if isPath data + then import data + else data; + nixpkgs.overlays = [ (final: prev: import ../pkgs { inherit (prev) callPackage; craneLib = crane.mkLib prev; }) ]; - }; - config = { - data = - if isPath data - then import data - else data; }; } ];