So I’ve been iso live testing Manjaro KDE Plasma lately and it looks very polished.

On the other hand, there is a negative vibe towards it.

Why the hate?

  • Atemu
    link
    fedilink
    arrow-up
    7
    arrow-down
    1
    ·
    1 year ago

    there’s a different nvidia driver for each kernel version. Already a stupid design

    That’s not a stupid design at all. A nvidia kernel module artifact is only compatible with exactly one kernel ABI. Thus you need one binary nvidia package for each kernel you ship.

    Arch also has one package for every kernel ABI they ship: nvidia and nvidia-lts.
    Though it should be noted that their design assumes that these two ABIs are the only possible ABIs which isn’t strictly the case as the zen, hardened or RT variants may sometimes lag behind their regular counterpart. That’s a stupid design if anything as it increases the friction of kernel ABI upgrades as a kernel package maintainer.

    We at NixOS also ship the nvidia module for each of our ~50 kernel variants; all major versions of the Nvidia module compatible with that kernel in fact.
    The only possible way to access these nvidia kernel modules is via a certain kernel’s linuxPackages attribute set that contains all packages that rely on a kernel ABI such as kernel modules or packages like perf. That’s good design if you ask me but I’m obviously biased ;)

    • highduc
      link
      fedilink
      arrow-up
      2
      ·
      1 year ago

      I know you need a new nvidia driver every time the kernel updates, but why keep 50 kernel versions? My beef was them offering so many (outdated) versions instead of keeping the latest one which would make things very simple for users (imo).

      • Atemu
        link
        fedilink
        arrow-up
        2
        ·
        1 year ago

        These aren’t all versions per se but mostly variants, versions and versions of variants. For example, we have packaged the xanmod kernel which is a modified kernel optimised for desktop use but it has two variants: Main and LTS. We have packaged both.

        Here are the names of all of our kernels currently to give you an idea (as a JSON list):

        [
          "linuxPackages",
          "linuxPackages-libre",
          "linuxPackages-rt",
          "linuxPackages-rt_latest",
          "linuxPackages_4_14",
          "linuxPackages_4_19",
          "linuxPackages_4_19_hardened",
          "linuxPackages_4_9",
          "linuxPackages_5_10",
          "linuxPackages_5_10_hardened",
          "linuxPackages_5_15",
          "linuxPackages_5_15_hardened",
          "linuxPackages_5_18",
          "linuxPackages_5_19",
          "linuxPackages_5_4",
          "linuxPackages_5_4_hardened",
          "linuxPackages_6_0",
          "linuxPackages_6_1",
          "linuxPackages_6_1_hardened",
          "linuxPackages_6_2",
          "linuxPackages_6_3",
          "linuxPackages_6_4",
          "linuxPackages_6_5",
          "linuxPackages_6_5_hardened",
          "linuxPackages_6_6",
          "linuxPackages_custom",
          "linuxPackages_custom_tinyconfig_kernel",
          "linuxPackages_hardened",
          "linuxPackages_latest",
          "linuxPackages_latest-libre",
          "linuxPackages_latest_hardened",
          "linuxPackages_latest_xen_dom0",
          "linuxPackages_latest_xen_dom0_hardened",
          "linuxPackages_lqx",
          "linuxPackages_rpi0",
          "linuxPackages_rpi02w",
          "linuxPackages_rpi1",
          "linuxPackages_rpi2",
          "linuxPackages_rpi3",
          "linuxPackages_rpi4",
          "linuxPackages_rt_5_10",
          "linuxPackages_rt_5_15",
          "linuxPackages_rt_5_4",
          "linuxPackages_rt_6_1",
          "linuxPackages_testing",
          "linuxPackages_testing_bcachefs",
          "linuxPackages_xanmod",
          "linuxPackages_xanmod_latest",
          "linuxPackages_xanmod_stable",
          "linuxPackages_xen_dom0",
          "linuxPackages_xen_dom0_hardened",
          "linuxPackages_zen"
        ]
        

        (Note that some of these are aliases; linuxPackages_latest is currently linuxPackages_6_6 for example.)

        Each of these has the following nvidiaPackages (modulo incompatibilities):

        [
          "beta",
          "dc",
          "dc_520",
          "latest",
          "legacy_340",
          "legacy_390",
          "legacy_470",
          "production",
          "stable",
          "vulkan_beta"
        ]
        

        (Again, some of these are aliases.)

        This is useful to have because users might have hardware constraints. It’s not hard to imagine a scenario where a user might have a WiFi chip that only works with kernel ABIs < 5.4 and require the 470 nvidia driver for their old GPU. Packaging just the latest kernel and just the latest Nvidia driver would make this user unable to use their system.