difftreelog
feat pass flake inputs to nixos config args
in: trunk
2 files changed
lib/flakePart.nixdiffbeforeafterboth1{crane}: {2 fleetLib,3 lib,4 config,5 inputs ? {},6 ...7}: let8 inherit (lib.options) mkOption;9 inherit (lib.attrsets) mapAttrs;10 inherit (lib.types) lazyAttrsOf deferredModule unspecified;11 inherit (lib.strings) isPath;12 inherit (fleetLib.options) mkHostsOption;13in {14 options.fleetModules = mkOption {15 type = lazyAttrsOf unspecified;16 default = {};17 };18 options.fleetConfigurations = mkOption {19 type = lazyAttrsOf deferredModule;20 apply = nameToModule:21 mapAttrs (22 name: module: data: let23 # To use user-provided nixpkgs, we first need to extract wanted nixpkgs attribute,24 # to do that, evaluate all the modules with only needed option declared.25 bootstrapEval = lib.evalModules {26 modules = [27 module28 {29 options.nixpkgs.buildUsing = mkOption {30 description = ''31 Nixpkgs to use for fleetConfiguration evaluation.32 '';33 };34 config._module.check = false;35 }36 ];37 };38 bootstrapNixpkgs = bootstrapEval.config.nixpkgs.buildUsing;39 normalEval = bootstrapNixpkgs.lib.evalModules {40 modules =41 (import ../modules/module-list.nix)42 ++ [43 module44 {45 options.hosts = mkHostsOption {46 nixos.nixpkgs.overlays = [47 (final: prev:48 import ../pkgs {49 inherit (prev) callPackage;50 craneLib = crane.mkLib prev;51 })52 ];53 };54 config = {55 data =56 if isPath data57 then import data58 else data;59 };60 }61 ];62 specialArgs = {63 fleetLib = import ../lib {64 inherit (bootstrapNixpkgs) lib;65 };66 inputs = inputs;67 };68 };69 in70 normalEval71 )72 nameToModule;73 };74 config = {75 _module.args.fleetLib = import ../lib {inherit lib;};76 flake.fleetConfigurations = config.fleetConfigurations;77 flake.fleetModules = config.fleetModules;78 };7980 _file = ./flakePart.nix;81}1{crane}: {2 fleetLib,3 lib,4 config,5 inputs ? {},6 ...7}: let8 inherit (lib.options) mkOption;9 inherit (lib.attrsets) mapAttrs;10 inherit (lib.types) lazyAttrsOf deferredModule unspecified;11 inherit (lib.strings) isPath;12 inherit (fleetLib.options) mkHostsOption;13in {14 options.fleetModules = mkOption {15 type = lazyAttrsOf unspecified;16 default = {};17 };18 options.fleetConfigurations = mkOption {19 type = lazyAttrsOf deferredModule;20 apply = nameToModule:21 mapAttrs (22 name: module: data: let23 # To use user-provided nixpkgs, we first need to extract wanted nixpkgs attribute,24 # to do that, evaluate all the modules with only needed option declared.25 bootstrapEval = lib.evalModules {26 modules = [27 module28 {29 options.nixpkgs.buildUsing = mkOption {30 description = ''31 Nixpkgs to use for fleetConfiguration evaluation.32 '';33 };34 config._module.check = false;35 }36 ];37 };38 bootstrapNixpkgs = bootstrapEval.config.nixpkgs.buildUsing;39 normalEval = bootstrapNixpkgs.lib.evalModules {40 modules =41 (import ../modules/module-list.nix)42 ++ [43 module44 {45 options.hosts = mkHostsOption {46 nixos.nixpkgs.overlays = [47 (final: prev:48 import ../pkgs {49 inherit (prev) callPackage;50 craneLib = crane.mkLib prev;51 })52 ];53 };54 config = {55 data =56 if isPath data57 then import data58 else data;59 };60 }61 ];62 specialArgs = {63 inherit inputs;64 fleetLib = import ../lib {65 inherit (bootstrapNixpkgs) lib;66 };67 };68 };69 in70 normalEval71 )72 nameToModule;73 };74 config = {75 _module.args.fleetLib = import ../lib {inherit lib;};76 flake.fleetConfigurations = config.fleetConfigurations;77 flake.fleetModules = config.fleetModules;78 };7980 _file = ./flakePart.nix;81}modules/nixos.nixdiffbeforeafterboth--- a/modules/nixos.nix
+++ b/modules/nixos.nix
@@ -1,6 +1,7 @@
{
lib,
fleetLib,
+ inputs,
config,
...
}: let
@@ -35,7 +36,7 @@
(config.nixos // {key = "attr<fleet.nixos>";})
];
specialArgs = {
- inherit fleetLib;
+ inherit fleetLib inputs;
};
};
};