From 415d9e829f6f6c78931b132f8d0774ad20828d12 Mon Sep 17 00:00:00 2001 From: Michael Smith Date: Thu, 5 Sep 2024 17:51:22 +0200 Subject: [PATCH] Add installer image package --- flake.nix | 16 +++ machines/installer-image/default.nix | 183 +++++++++++++++++++++++++++ 2 files changed, 199 insertions(+) create mode 100644 machines/installer-image/default.nix diff --git a/flake.nix b/flake.nix index 7127f5c..62cfb0e 100644 --- a/flake.nix +++ b/flake.nix @@ -76,6 +76,22 @@ ''; installer-iso = inputs.self.nixosConfigurations.installer.config.system.build.isoImage; + + installer-image = nixos-generators.nixosGenerate { + system = system; + specialArgs = { + pkgs = pkgs; + diskSize = 20 * 1024; + }; + modules = [ + # Pin nixpkgs to the flake input, so that the packages installed + # come from the flake inputs.nixpkgs.url. + ({ ... }: { nix.registry.nixpkgs.flake = nixpkgs; }) + # Apply the rest of the config. + ./machines/installer-image + ]; + format = "raw-efi"; + }; }); apps = forAllSystems (system: { diff --git a/machines/installer-image/default.nix b/machines/installer-image/default.nix new file mode 100644 index 0000000..dcb7707 --- /dev/null +++ b/machines/installer-image/default.nix @@ -0,0 +1,183 @@ +{ + config, + lib, + options, + pkgs, + inputs, + modulesPath, + ... +}: +with lib; let + calamares-nixos-autostart = pkgs.makeAutostartItem { + name = "io.calamares.calamares"; + package = pkgs.calamares-nixos; + }; + calamares-extensions-desk-os = pkgs.callPackage ../../packages/calamares-extensions {}; +in { + imports = [ + (modulesPath + "/profiles/all-hardware.nix") + (modulesPath + "/profiles/base.nix") + (modulesPath + "/profiles/installation-device.nix") + ]; + + nixpkgs = { + hostPlatform = lib.mkDefault "x86_64-linux"; + config.allowUnfree = true; + }; + + nix = { + settings.experimental-features = ["nix-command" "flakes"]; + extraOptions = "experimental-features = nix-command flakes"; + }; + + boot = { + supportedFilesystems = lib.mkForce ["btrfs" "reiserfs" "vfat" "f2fs" "xfs" "ntfs" "cifs"]; + }; + + networking.hostName = "desk-os-installer"; + + services.openssh.enable = lib.mkForce false; + + # Inhibit sleep, suspend, hibernate + systemd.targets = { + sleep.enable = false; + suspend.enable = false; + hibernate.enable = false; + hybrid-sleep.enable = false; + }; + + boot = { + consoleLogLevel = 0; + kernelParams = ["quiet"]; + initrd.verbose = false; + loader.systemd-boot.enable = true; + loader.timeout = lib.mkForce 0; + plymouth = { + enable = true; + theme = "breeze"; + }; + }; + + # Adds terminus_font for people with HiDPI displays + console.packages = options.console.packages.default ++ [pkgs.terminus_font]; + + # An installation media cannot tolerate a host config defined file + # system layout on a fresh machine, before it has been formatted. + swapDevices = mkImageMediaOverride []; + # fileSystems = mkImageMediaOverride config.lib.isoFileSystems; + + boot.postBootCommands = '' + for o in $(