From dec99e46ed491af184e9df7b54cbd44e638292e4 Mon Sep 17 00:00:00 2001 From: Daniel Barter Date: Sun, 12 May 2024 13:28:24 -0700 Subject: [PATCH] - adding an iso package to the flake - floating dtbName up into the flake so it can be referenced by the module and the iso - linting with nixfmt-rfc-style --- .gitignore | 1 + flake.nix | 80 ++++++++++++++++++++++++++++++++++++++++++------------ module.nix | 7 ++--- 3 files changed, 65 insertions(+), 23 deletions(-) diff --git a/.gitignore b/.gitignore index af8f4e4..fa03c52 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ .secret.envrc +result diff --git a/flake.nix b/flake.nix index 1e1db5d..a280fbd 100644 --- a/flake.nix +++ b/flake.nix @@ -6,6 +6,9 @@ outputs = inputs@{ flake-parts, self, ... }: + let + dtbName = "sc8280xp-lenovo-thinkpad-x13s.dtb"; + in flake-parts.lib.mkFlake { inherit inputs; } { imports = [ ./packages/part.nix ]; @@ -18,30 +21,71 @@ { pkgs, ... }: { devShells.default = pkgs.mkShellNoCC { packages = [ pkgs.npins ]; }; + packages = { + iso = self.nixosConfigurations.iso.config.system.build.isoImage; + }; }; - flake.nixosModules.default = import ./module.nix; + flake.nixosModules.default = import ./module.nix { inherit dtbName; }; - flake.nixosConfigurations.example = inputs.nixpkgs.lib.nixosSystem { - system = "aarch64-linux"; - modules = [ - self.nixosModules.default - { - nixos-x13s.enable = true; - nixos-x13s.kernel = "jhovold"; # jhovold is default, but mainline supported + flake.nixosConfigurations = { + example = inputs.nixpkgs.lib.nixosSystem { + system = "aarch64-linux"; + modules = [ + self.nixosModules.default + { + nixos-x13s.enable = true; + nixos-x13s.kernel = "jhovold"; # jhovold is default, but mainline supported - # install multiple kernels! note this increases eval time for each specialization - # specialisation = { - # mainline.configuration.nixos-x13s.kernel = "mainline"; - # }; + # install multiple kernels! note this increases eval time for each specialization + # specialisation = { + # mainline.configuration.nixos-x13s.kernel = "mainline"; + # }; - # allow unfree firmware - nixpkgs.config.allowUnfree = true; + # allow unfree firmware + nixpkgs.config.allowUnfree = true; - # define your fileSystems - fileSystems."/".device = "/dev/notreal"; - } - ]; + # define your fileSystems + fileSystems."/".device = "/dev/notreal"; + } + ]; + }; + + iso = inputs.nixpkgs.lib.nixosSystem { + system = "aarch64-linux"; + modules = [ + + self.nixosModules.default + { + nixos-x13s = { + enable = true; + kernel = "mainline"; + }; + } + + ( + { modulesPath, config, ... }: + let + dtb = "${config.boot.kernelPackages.kernel}/dtbs/qcom/${dtbName}"; + in + { + imports = [ "${toString modulesPath}/installer/cd-dvd/iso-image.nix" ]; + nixpkgs.config.allowUnfree = true; + isoImage = { + makeEfiBootable = true; + makeUsbBootable = true; + + contents = [ + { + source = dtb; + target = "/" + dtbName; + } + ]; + }; + } + ) + ]; + }; }; }; } diff --git a/module.nix b/module.nix index 1ec2f47..fbbcdd6 100644 --- a/module.nix +++ b/module.nix @@ -1,3 +1,4 @@ +{ dtbName }: { config, lib, @@ -9,16 +10,12 @@ let x13sPackages = import ./packages/default.nix { inherit lib pkgs; }; - dtbName = "sc8280xp-lenovo-thinkpad-x13s.dtb"; linuxPackages_x13s = if cfg.kernel == "mainline" then pkgs.linuxPackages_latest else pkgs.linuxPackagesFor ( - if cfg.kernel == "jhovold" then - x13sPackages.linux_jhovold - else - throw "Unsupported kernel" + if cfg.kernel == "jhovold" then x13sPackages.linux_jhovold else throw "Unsupported kernel" ); dtb = "${linuxPackages_x13s.kernel}/dtbs/qcom/${dtbName}"; dtbEfiPath = "dtbs/${cfg.kernel}/${config.boot.kernelPackages.kernel.version}/${dtbName}";