Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Let's upstream all profiles in common/ to nixos #992

Open
6 of 28 tasks
Mic92 opened this issue Jun 20, 2024 · 10 comments
Open
6 of 28 tasks

Let's upstream all profiles in common/ to nixos #992

Mic92 opened this issue Jun 20, 2024 · 10 comments

Comments

@Mic92
Copy link
Member

Mic92 commented Jun 20, 2024

Having generic hardware modules profiles available allows us to include them automatically
in tools like nixos-generate-config and co.

Hence I am proposing to upstream all our modules in common and remove them from this repository:

Open questions:

  • Do we upstream them as module options or as importable profiles?
@Mic92 Mic92 pinned this issue Jun 20, 2024
@SuperSandro2000
Copy link
Member

I want to throw the following snippet from nixos-modules into the ring, too.

    hardware.opengl = {
      extraPackages = with pkgs; [
        intel-compute-runtime # OpenCL library for iGPU
        # video encoding/decoding hardware acceleration
        intel-media-driver # broadwell or newer
        intel-vaapi-driver # older hardware like haswell
      ];
      extraPackages32 = with pkgs.pkgsi686Linux; [
        # video encoding/decoding hardware acceleration
        intel-media-driver # broadwell or newer
        intel-vaapi-driver # older hardware like haswell
      ];
    };

I think we should not upstream them as is, otherwise we have 20+ new modules which only contain minimal things. We should probably combine them into a general intel module where we have some options for CPU/GPU/etc.

@Mic92
Copy link
Member Author

Mic92 commented Jun 20, 2024

We should be soon able to drop the amdgpu module from nixos-hardware after https://nixpk.gs/pr-tracker.html?pr=319865 landed.

@Lyndeno
Copy link
Contributor

Lyndeno commented Jun 24, 2024

I like the idea of configurable modules. Then we can have generic cpu/gpu modules where we can specify say, "kaby lake" or "rdna2", etc.

@Lyndeno
Copy link
Contributor

Lyndeno commented Jun 25, 2024

Something along the idea of:

hardware.graphics.family = "rdna2";
hardware.processor.family = "zen3";
hardware.graphics.opencl.enable = true;
hardware.processor.enableMicrocode = true;

Then have the modules enable the proper settings: opencl packages, vaapi, thermald, patches, microcode (if unsupported in tree, perhaps for apple m series?) all configured for the given hardware families.

Since it is possible to have multiple GPUs, perhaps the graphics.family setting could take a list of families, and ensure setup for each.

@Mic92
Copy link
Member Author

Mic92 commented Jun 25, 2024

We should have at least a vendor for both gpu and cpus, to avoid collision names between family names.

@Mic92
Copy link
Member Author

Mic92 commented Jun 25, 2024

We want to provide the needed information with this project: https://github.com/numtide/nixos-facter

Lyndeno added a commit to Lyndeno/nixos-hardware that referenced this issue Jul 1, 2024
mergify bot pushed a commit that referenced this issue Jul 9, 2024
@MattSturgeon
Copy link

MattSturgeon commented Jul 18, 2024

What's the migration path if I'm using some of the deprecated/removed modules?

Neither the warning or the issue description describe what I should do as an end-user 😉

The PR talks about upstreaming stuff, but I can't see any obvious recent changes in nixpkgs/nixos/hardware's history 🤔


For my case specifically:

I was using the common-cpu-intel-kaby-lake module, which was renamed to common-gpu-intel-kaby-lake without any deprecation warnings or aliases.
I just got an "attr doesn't exist" error after updating my lockfile, so I had to go hunting for recent changes.

The new name has a deprecation warning, but I can't work out what the alternative is supposed to be?

@Lyndeno
Copy link
Contributor

Lyndeno commented Jul 18, 2024

There is no alternative currently.

I plan to upstream some of this soon. Perhaps we should not have a deprecation warning until then.

@ahydronous
Copy link

ahydronous commented Nov 22, 2024

Before you upstream things, a large corrective+feature pass would be nice to do, as I assume afterwards it might be harder to get things in there.

#1205
#1243
#1244
#1245
#1246

In general the Intel GPU side needs a lot of work. There is for example a comet-lake.nix, but no such Intel iGPU generation exists. 10th gen (Comet Lake) CPUs use the Ice Lake GPU generation. There's a lot of places where psr, fbc and guc are manually set to 1 or 2 when they already already set to -1 ( = turn on, unless problematic) by default by the kernel for those devices.

It'd also just be nice to add all the CPU and GPU gens, even if it'll be mostly copy-paste/boilerplate. Perhaps also nice to either add the generation name in the filename or file itself. For example for Intel CPUs, doing skylake-7.nix and coffeelake-8.nix. Most people don't know their CPU generation's name, but they know 11400 = 11th gen.

I'm fully willing to do the labor for that once I have the time, but I thought I should bring it up before an upstream happens.

@Mic92
Copy link
Member Author

Mic92 commented Nov 22, 2024

Why not bring it up, while you upstream a module? The modules that we bring upstream do not need to be literally the same but can be improved version. They just need to cover the same area so. But you can also do pull requests in nixos-hardware if you want. Sorry, I don't have time to go and address your issues, but I would merge your pull requests.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants