NixOS / nixos-hardware

A collection of NixOS modules covering hardware quirks.
Creative Commons Zero v1.0 Universal
2.04k stars 631 forks source link

Config for GA402X broken? #889

Open codingCoffee opened 8 months ago

codingCoffee commented 8 months ago

I'm trying to configure my Asus Zephyrus G14 GA402X laptop with viz this

Here is my flake.nix

{
  description = "my flake!";

  inputs = {
    nixpkgs = {
      url = "github:NixOS/nixpkgs/nixos-23.11";
    };

    nixos-hardware = {
      url = "github:NixOS/nixos-hardware/master";
    };
  };

  outputs = { self, nixpkgs, ... }@inputs:
    let
      lib = nixpkgs.lib;
    in
    {
      nixosConfigurations = {
        zephyrus = lib.nixosSystem {
          system = "x86_64-linux";
          specialArgs = {inherit inputs;};
          modules = [
            ./configuration.nix
            inputs.nixos-hardware.nixosModules.asus-zephyrus-ga402x
          ];
        };
      };
    };
}

Ref: picked up the config from

https://github.com/NixOS/nixos-hardware/blob/ad2fd7b978d5e462048729a6c635c45d3d33c9ba/flake.nix#L25

This is the error I'm facing

$ sudo nixos-rebuild switch --flake .
error:
       … while calling the 'seq' builtin

         at /nix/store/x06xw73q4lpsa83amgnyy1fmaark3pg3-source/lib/modules.nix:320:18:

          319|         options = checked options;
          320|         config = checked (removeAttrs config [ "_module" ]);
             |                  ^
          321|         _module = checked (config._module);

       … while calling the 'throw' builtin

         at /nix/store/x06xw73q4lpsa83amgnyy1fmaark3pg3-source/lib/modules.nix:296:18:

          295|                     ''
          296|             else throw baseMsg
             |                  ^
          297|         else null;

       error: The option `amdgpu' does not exist. Definition values:
       - In `/nix/store/x06xw73q4lpsa83amgnyy1fmaark3pg3-source/flake.nix': <function, args: {config, lib, pkgs}>

I'm relatively new to nix, so is this some relative import problem? Or is my method of using nixos-hardware repo incorrect?

codingCoffee commented 8 months ago

Dug a little deeper, realized the problem was in my config. I need to explicitly mention which GPU config I'd like to use.

https://github.com/NixOS/nixos-hardware/blob/ad2fd7b978d5e462048729a6c635c45d3d33c9ba/asus/zephyrus/ga402x/default.nix#L4

https://github.com/NixOS/nixos-hardware/blob/ad2fd7b978d5e462048729a6c635c45d3d33c9ba/asus/zephyrus/ga402x/default.nix#L9

So, effectively my config became

{
  description = "my flake!";

  inputs = {
    nixpkgs = {
      url = "github:NixOS/nixpkgs/nixos-23.11";
    };

    nixos-hardware = {
      url = "github:NixOS/nixos-hardware/master";
    };
  };

  outputs = { self, nixpkgs, ... }@inputs:
    let
      lib = nixpkgs.lib;
    in
    {
      nixosConfigurations = {
        zephyrus = lib.nixosSystem {
          system = "x86_64-linux";
          specialArgs = {inherit inputs;};
          modules = [
            ./configuration.nix
            inputs.nixos-hardware.nixosModules.asus-zephyrus-ga402x.nvidia
          ];
        };
      };
    };
}

The issue can be closed. But should this be fixed in flake.nix file by splitting it into 2 lines to make it easier for a newcomer? https://github.com/NixOS/nixos-hardware/blob/ad2fd7b978d5e462048729a6c635c45d3d33c9ba/flake.nix#L24