--- a/cmds/fleet/src/cmds/build_systems.rs +++ b/cmds/fleet/src/cmds/build_systems.rs @@ -133,7 +133,14 @@ ) .args(&config.nix_args); - nix_build.run_nix().await?; + nix_build.run_nix().await.map_err(|e| { + if action.build_attr() == "sdImage" { + info!("sd-image build failed"); + info!("Make sure you have imported modulesPath/installer/sd-card/sd-image-[-installer].nix (For installer, you may want to check config)"); + info!("This module was automatically imported before, but was removed for better customization") + } + e + })?; let built = std::fs::canonicalize(built)?; match action { --- a/lib/default.nix +++ b/lib/default.nix @@ -53,13 +53,21 @@ inherit configuredHosts configuredSecrets configuredSystems; configUnchecked = root.config; buildSystems = { - toplevel = builtins.mapAttrs (_name: value: value.config.system.build.toplevel) (configuredSystemsWithExtraModules [ ]); + toplevel = builtins.mapAttrs (_name: value: value.config.system.build.toplevel) (configuredSystemsWithExtraModules [ + ({...}: { + buildTarget = "toplevel"; + }) + ]); sdImage = builtins.mapAttrs (_name: value: value.config.system.build.sdImage) (configuredSystemsWithExtraModules [ - (nixpkgs + "/nixos/modules/installer/sd-card/sd-image-aarch64-installer.nix") + #(nixpkgs + "/nixos/modules/installer/sd-card/sd-image-aarch64-installer.nix") + ({...}: { + buildTarget = "sd-image"; + }) ]); installationCd = builtins.mapAttrs (_name: value: value.config.system.build.isoImage) (configuredSystemsWithExtraModules [ (nixpkgs + "/nixos/modules/installer/cd-dvd/installation-cd-minimal.nix") ({ lib, ... }: { + buildTarget = "installation-cd"; # Needed for https://github.com/NixOS/nixpkgs/issues/58959 boot.supportedFilesystems = lib.mkForce [ "btrfs" "reiserfs" "vfat" "f2fs" "xfs" "ntfs" "cifs" ]; }) --- a/nixos/meta.nix +++ b/nixos/meta.nix @@ -24,6 +24,9 @@ }; description = "Network definition of host"; }; + buildTarget = mkOption { + type = enum ["toplevel" "sd-image" "installation-cd"]; + }; }; config = { tags = [ "all" ];