commit:     156f0b3bcd4f10ad46e5101c55905f2d4e1abf8c
Author:     Ionen Wolkens <ionen <AT> gentoo <DOT> org>
AuthorDate: Thu Jan 29 20:13:40 2026 +0000
Commit:     Ionen Wolkens <ionen <AT> gentoo <DOT> org>
CommitDate: Thu Jan 29 20:13:43 2026 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=156f0b3b

x11-drivers/nvidia-drivers: restore 580.95.05 for now

I've seen bug #969413's shutdown issue mentioned now and then (no real
idea for a cause) but thought it only affected 590.x, NVIDIA may
potentially have backported whatever has been causing it.

Unfortunate given this version is affected by a security vulnerability
wrt bug #969395, but restore it so affected users have an alternative
until nvidia fixes this.

Not aware of this affecting /everyone/ and will still 580.126.09 stable
due to the security issue though.

Bug: https://bugs.gentoo.org/969395
Bug: https://bugs.gentoo.org/969413
Signed-off-by: Ionen Wolkens <ionen <AT> gentoo.org>

 x11-drivers/nvidia-drivers/Manifest                |   8 +
 ...kernel-module-source-580.95.05-kernel6.18.patch |  21 +
 .../nvidia-drivers/nvidia-drivers-580.95.05.ebuild | 587 +++++++++++++++++++++
 3 files changed, 616 insertions(+)

diff --git a/x11-drivers/nvidia-drivers/Manifest 
b/x11-drivers/nvidia-drivers/Manifest
index 8bab2de12a61..51b7e5cebfbd 100644
--- a/x11-drivers/nvidia-drivers/Manifest
+++ b/x11-drivers/nvidia-drivers/Manifest
@@ -1,6 +1,7 @@
 DIST NVIDIA-Linux-aarch64-535.288.01.run 269886661 BLAKE2B 
9f9e994fcefd81e75db9a9c280668ad55423085e34eb9083043bad3f1317379ba14ffc9442fe94ee26b600f1ecf2e19f83708dae1c599b6a9df69d94ac3e116f
 SHA512 
e8df9e97500a87d68e8c8d1f9601a8b37f2dd93773928a96b605a515d37e9382782cbdc0900cd6151923ae385045c644af3e37cc006771830ac0b0a532afb09c
 DIST NVIDIA-Linux-aarch64-570.211.01.run 290912556 BLAKE2B 
4335d6a6b7a55bc7d2717071c6be968b63c90932592534be8eff28290a8bf98614b37bb52b4ee0f9563a6f0fdacf6b0e8a04b8eedbe8081587962f3599209a88
 SHA512 
22816d8f798d6ce141ff2ce750b5df1ca4fef9b1ba79762157fd7f93c1ea905c74f421dc6ac2b7bf5b383192d2baa735d7a7d240523be815defb68be54c4a6be
 DIST NVIDIA-Linux-aarch64-580.126.09.run 313588580 BLAKE2B 
bb98dc322fb0bb21a11aaebd2101528efc651ed833870326fbc4570f54264a4b536e8669351153817b47dcb81b9aeac88b7d664cf6971e5182b9d4203c453a29
 SHA512 
7ec0fd917bade1eb14b135bab2ade17a5116546190c3011379be7105404485016e26a5fb1ece5a4800eea39ac10c1abea19cc40be6f8f31188b3eeb78344a6c7
+DIST NVIDIA-Linux-aarch64-580.95.05.run 313379170 BLAKE2B 
70431f394ce9d112afcf0742539289e399286ecefbdd86ad71c750acee21c3b965b435d77d54b290866a6c60c7601da5c8bbc2d6edce0b8e4dcd43d21ee2ec35
 SHA512 
e07b31824f7e6dd485df5c73e3a58f85962239ea20a92f18d82b9c55564d69309fe5bb279f39ed8ef152ccdbffc6d0fdf7bccfa3c794e4ecd9fac83bcfbb91a9
 DIST NVIDIA-Linux-aarch64-590.48.01.run 319634379 BLAKE2B 
ff1b0641f8d4dfc834d9627fa934c5491bddcb9e6f5396a07d6d7831c15e2ab396614ff1ab6b5af4a69b42b8c6a022215cc1e3531eca7ca177c9d940f52281ea
 SHA512 
ec81da1a11dd9609427e40434cba69d7c0426e4d60cb5c078c66ec992b6dd44483df2c9dfe02deb4db3a815a4c801b3c42f6ac2b08f0506327f1cdfe5446211d
 DIST NVIDIA-Linux-x86-390.157.run 49417041 BLAKE2B 
435b5e0e60468cc74b41cc5d9b5bb0105d29c11a2d408457835212a96519c9334ecf19278b36749d3ff7f498f5b0ae45a2efae2d428703dac21245c62f1efebe
 SHA512 
dae9ac2c12f9ad90f7441e00e01a984147c577892421911d7f67f6a31e616ac1cb7d434bc9c7f58fbd9b8ae909521b5bece607a63c79588c0bb9d99c6bad5fb0
 DIST NVIDIA-Linux-x86_64-390.157.run 85835541 BLAKE2B 
44b855cd11f3b2f231f9fb90492ae2e67a67ea3ea83c413e7c90956d38c9730a8bd0321281ae03c6afce633d102f5b499aed25622b9bfd31bdd2c98f0717e95b
 SHA512 
4780503a4cff0180b1b1f37d20a6ba3438dd78b51fa7f69b98d35521835e5d61099129746929d51d63afa2d47b672b3e145e1e1897584dc3799e7f822c5b3a0a
@@ -9,39 +10,46 @@ DIST NVIDIA-Linux-x86_64-535.288.01.run 341968325 BLAKE2B 
e37428855b41c295e5c6df
 DIST NVIDIA-Linux-x86_64-570.211.01.run 376192072 BLAKE2B 
56a135681eba576377106b5ee4bad4e0ec7e41e512db8e32297fbafe03455ee4e9e0dafe782588dd3832fde74ecfd9ee5858ec662f3dc2ef3f1e1dab7a9c909d
 SHA512 
3e751d90a8f126e369c5167e2d5ba8b218dd306ccf00907290ae70fb1c3f752f0ad0b973ce356a1a24cd0f19c31a07169cfd5705613a6bbb5918881635650839
 DIST NVIDIA-Linux-x86_64-580.126.09.run 396807358 BLAKE2B 
a8b7fe16718a8f9ec6d93cad71e07c96d837ff612ae21a96018981fc904839c6d85dc2515c1d640361483fad59b5fd79bdae6a32951ec2f5db4a9115d24798dc
 SHA512 
d5c41131304b29d55d0caf8cd84c95b454d81e68d7b23ca893504c63d84dd78726e2dbd7f076b7f12be518e641d110d131ac178336d61a00bcc81b7a1890799d
 DIST NVIDIA-Linux-x86_64-580.94.16.run 397141116 BLAKE2B 
403b28d2cb8da21915c9a51daa3d467414a06164530fc135d3dd92914bcb9690d92c5d7d470c9af54d077d198cf7c0e8bb9b30b5c777f187e3f108480b5fa41d
 SHA512 
bd322f99c2f57118f6932bb9a0f5a16f20d3e63396871a05507b54c2351862da628e37663828e72e5aba8efaf8ad117f80a5b0b2fcdbd7e25e11fbbcd28e8789
+DIST NVIDIA-Linux-x86_64-580.95.05.run 396658958 BLAKE2B 
7e23e5243023de357329f8f57b65a386306fd898a78c68b01d67a9572ac0d64b2d87c0cf3265c23fc4c13192d92060196ee173c34cb485a693035478cb3fc82e
 SHA512 
21e8076f593ce255c8e96dd456524f700e76b230130659ed73a279432dd9f2aa60735411c6fc906e9f60882e905cc1c5b91aaf80d5d5e64d317b1dd27f6e4c13
 DIST NVIDIA-Linux-x86_64-590.48.01.run 416273526 BLAKE2B 
57bc232f3d5cc52b3ba7c097e5c04b0e128947b34f75c8c7a75135ebbdda565dd9ae829f3707cfef35a9b8b554f2b46a50756f6b256a0f0280c22cf9ecefb2e1
 SHA512 
31fd82af707dbe9a6d3848766925386f5e91c5fae0a605819450eb8e5a5a52eaab3ae5cff50b4dd36bc5c32fe1aabc29a6a79438d6614988c7b08f509ef0da6d
 DIST NVIDIA-kernel-module-source-535.288.01.tar.xz 12538144 BLAKE2B 
597c58a62591e82b77fb29527d240bd2043b37439a1e7089ce5ab7ecb514ca3cae5be415aa4324f1156c08ddc1138c02e58337df5f38eaf7f19294773e4bcebc
 SHA512 
b70d95af6737c36f8573d877a3473d38ecf3d7a4a35b899c38c1682888b455dcc60f6738ccee60a584477856b79dd25e6a10ffd1a4503c1d78a88902ba8329b4
 DIST NVIDIA-kernel-module-source-570.211.01.tar.xz 17951900 BLAKE2B 
d40d2c1b4a92dfe8da95e1000413dfb484c9c96ad232dd5db14246378f6df8e73f04706592a536025c3d5512d5e663e7841de8bda782e3611b4b594b9b107ad4
 SHA512 
c988270d3aaa707310c3924de83eb5f5bdc4d022d1666eb3f41ed46eff35e98a765d4d6d34c22c02ac507016bed3c34af1da2e1befc285ec9158031a4a1447e4
 DIST NVIDIA-kernel-module-source-580.126.09.tar.xz 22250272 BLAKE2B 
218c0df05f9506b22281a575db566d48760a7ab3df7f2c4d171d5157f44979efb6f40e8aebaec26e830cf3495bf2366ab406919293d2eab6e543567c0cae14fb
 SHA512 
1c62f12e39d827f1a9dc13d934f8d690e3cf3da7838f39044b1175b612eb03e2f452424f6e456fed81bfa448c8a2dfe94b58e71bff08c4e5d5d8c944c74cdb2e
+DIST NVIDIA-kernel-module-source-580.95.05.tar.xz 22215620 BLAKE2B 
179e2e1f820840273e54b55cd45233c6b5e26c1eb80e8e4fc7099a1704820cfe761c17839befcb9ddca2fe7e85b7ddf62e9a51b912e1f300b02ee8941d6467db
 SHA512 
183e35afc583748f5d5fc60970be7e1e0b99de40bf0e9428d3acfd56f913724cc8aa242a276c327ad11e09290818883c8045ab3319dc0e919201687359f7cdc6
 DIST NVIDIA-kernel-module-source-590.48.01.tar.xz 22530000 BLAKE2B 
eae57ceccc78f0730fc4962b20f08f270bd21960e84ad5985433590e5229403a74bfc2518540f9e2ef07d319d9cb2288edfbe0d5f7a27cc7e0903aa61fed388c
 SHA512 
6fe32d5d1a84df0baeaaecd4a847ba73a89bcd1b51d5f9c7525efd2af891f6d5512c1ac97c8b766ba1d1103312c53e5406653589e22684df9260fd75977591a6
 DIST nvidia-installer-390.157.tar.bz2 150323 BLAKE2B 
8058ca87a6dea956d564af9f7eab9b1fc82b1f2382bd5cb2f6d97cbe2e19292533522d5f8f2eacbeb16520372715fcb72f8f9b0998962af5d4e75522c8d74524
 SHA512 
93a7ece648602157496c8e27a88864ede341a100f5328a4c1a25faf8f0b94d252060e5e2f71d0c302fd0566c10773c30b76b3b5f431d8039b71c90a7969f7d7e
 DIST nvidia-installer-470.256.02.tar.bz2 146269 BLAKE2B 
4402e725c8fd0157eb84d4ec140a33f97e873014577487ef1e32fb8921cabe79c60ff46532e5bfaabb2b6ac894f7c80086dbab19e61906e2e27346fb85f98829
 SHA512 
c962dc17d9696256d1ebedcaeb3010994f2ce3895aedc47987599ebfec132a9b9a249d2ece6502b15bd4a93f9b0106aa13487a7da5f64199c274ce11eba27cfd
 DIST nvidia-installer-535.288.01.tar.bz2 148906 BLAKE2B 
c559bfaeddd1af6c72647fb2e5c46638817339bd59ced80bcc6acfa14304f5ab07123aa0e43d18feff5d2582f08ceb0f84d2b97eef783bcd833c12f751e4c945
 SHA512 
b5d92a68b39a11709dae83ded0d9b860f9ff4cef514a1eb957305daf80d4354a272a88e4a58db61547b0073e57c2913f2dc038c2d51b2eb649fc9ae25eb42954
 DIST nvidia-installer-570.211.01.tar.bz2 169330 BLAKE2B 
100cdb3e0cccb19e3bbf69d4289d079a64cbca95fc20f4d48179190b5e61cfdcbfeb5b95c381c70824c185975356a70af4c89efb53ca0cbc5c61fc95d974ca77
 SHA512 
90efcd442feacd7f9d9bf25fddb77c521b2e7c79063703c320ce2bbd50a5cce950b0937ec926e89081634c6606c18861efda0e6288e24fab5ee31cd5d52d211f
 DIST nvidia-installer-580.126.09.tar.bz2 169652 BLAKE2B 
664354a67b56f3fbf323b7231b73c7af3510ec4b8f00533904e0771c6c76dfe98855cb7348bf177fc4902109519d1803ff8074f1fa2c4b7b0b007e459b9eb743
 SHA512 
9cb0be263204d6a90aeacd694066c12790d1dd513e40deef284fdb979e4227764fdf5e7692956cc08d4db270f17c4c7a3fa53e3033c863ec652fb4f48c33a8ef
+DIST nvidia-installer-580.95.05.tar.bz2 169558 BLAKE2B 
5e52aca8950b83b2a0366fc39dba5b89d22248ced974807f33dababfc06b41b5c40ff238552e61fec54625a6b2bceb8401ebb4fb69b47e33e565058d1796cb9e
 SHA512 
1f20838f4e20d77c9596aa886f53bc4abedfc5e5634665d3bd571fb920013b2dfdf7dcd082b0cfebdf4d104e87203965cff6a04863f9b0bd43f9e25264217578
 DIST nvidia-installer-590.48.01.tar.bz2 170826 BLAKE2B 
450bd298e6c574ae6dc085714c130984058f6e606c3de628c5adeefddbfde3bf2e025b1e422948311e9e028cfbc6e8d4c68a22a10d30a9a28466f3105aa7c13c
 SHA512 
4c776ad602594a5d2ced2570fd26b51e5fdf5b7613c43263a7f647a5d3d550c6c35960a6cd8884766a71f0b34c397e7d8bd0507b84043cbbc1c04a82ec067932
 DIST nvidia-modprobe-390.157.tar.bz2 35306 BLAKE2B 
80d202b39c2f95ec0f909712c2e101483af50124092c32efb33bd98ff58ddfb97b737ff07f1ddc941f688c1b4c26a15f392566d522e18506771f10422fcd571c
 SHA512 
109bbe24a3758b568ea65fe1e9d78f69fae6108ec0497b796c885a3912825fe04ffd7389a3e22987f1a10a2926bf6eaa384faabc59478aa3ee244dd3ac91c6d3
 DIST nvidia-modprobe-470.256.02.tar.bz2 38769 BLAKE2B 
0db444b09b0b6d24c04877fae95249e781d82b3141f90eb05d869b64d2b6e65ad00bf44c4e427c64dbd4765fa99a8699f80a1d95b00c66137a54dc878d7ea298
 SHA512 
c1cbfa6c8e188e5a5eb5d390b9a903406cbff103d212fc30e611e4023be3fde896ad84e8bb45b030beb5d1bcd8155c9e55a8f9636c45ce1e2a5c03f672989a31
 DIST nvidia-modprobe-535.288.01.tar.bz2 40729 BLAKE2B 
60a8a22bcbaefb4d7ab1bbddba814939078b88a0ffb3f3fafece04910b476370f5e1f38878b1c0f109abe4449193dcbfcd308efadd03d28786b78dd2eaeac75b
 SHA512 
0acb8e676fbc230978b97302df98450ee11fc7d59927c46643a8f92d5aec99a5d1d1bca861203a013cfbc61cadf89ed74e2fa999932264b833e3b5a53d42836e
 DIST nvidia-modprobe-570.211.01.tar.bz2 41631 BLAKE2B 
953113337b742ea246bf24a47cbe679f03d89ecfa48a655f179b0913dd7d9c1742f4b1bd765c4d4263c9d45c352de87bff9f0a5a2c3aa48c86f221177cd5d1fb
 SHA512 
c1bbba303b587f18e824cd2dd9a74341d5a03ee56c6adff67bb33c4f65ed16742f094dca9457a04d68b676c3671756e47d996090523827f42c8780329988e3fb
 DIST nvidia-modprobe-580.126.09.tar.bz2 41685 BLAKE2B 
6024b6ecbd8732c98892c01920b633de6e96316d63d80570befb7cb35078349b6737371592d92ac8d60b3662454a9bd5f6f9be8023a614e6233186b48204d8ee
 SHA512 
fecbebeeb9add103726bab211f58d1f4afb85cb47affa960a19e057c78c7ccf975b8e32043591a6e9c93402a8ae7f7232ba3b5aadd4f30e2f531914bb4787c43
+DIST nvidia-modprobe-580.95.05.tar.bz2 41708 BLAKE2B 
17988280c9c54fdc86dcf757903f18f83d1eb44b25a1386f8cc9bf098aec87b77c52bd3da9ea77511716c678e4354e8a40bee1561a953ed56eda350ab4a3e464
 SHA512 
67faabda2388515fcad71ffc965c7506156116f4e020837da33b0f17bd30aa05cd2d28a54711990684110133ad1a58a8db5473f58f2e5e587bc8edf5253a9351
 DIST nvidia-modprobe-590.48.01.tar.bz2 41660 BLAKE2B 
0780a1aa529d95323b37115efa529dab030cbea589a03ddc70460f4176e7aa88388401ce8508a093a2e9a0ad406589e9e94ff0391021307e879cbcacec8b6759
 SHA512 
805a70d5012fbc26af3787104e39b3626b2ed7d53a4989365d2fbf6926daf817eec1dc6b7cd50dfbfe29bbd71569ac3095f0a37cad2199994dbdaa76720d8fb0
 DIST nvidia-persistenced-390.157.tar.bz2 48654 BLAKE2B 
2cf6c92da90acff55e8c180a06b0c6a29d48be9fd8ca3c541202fd14f0697220fba6b66452942aa7ae7cc8821f5c5eb9fa8f7a31d2248624e5f9141d83a176b8
 SHA512 
70f0707ed6f2b877e69ef90cf782f66cbc9d2071db53ca09ceb7b89427b0fe176708517340621fa251539b7d481b238adeeb60261674eed74de1f62db6dbb72e
 DIST nvidia-persistenced-470.256.02.tar.bz2 46567 BLAKE2B 
8f837322a3b88412fd2f6acf38721b49a6cb444fbd842d652519e5596f2e545d8f06bbdf017f46a22301ce87455f96147fab2829ca5fbf26131ec3e4a772e282
 SHA512 
4fd19258649b7d39945fb5c8578bf11ab118617dd14f3d11cdf15cb3fe77daf7b4719e4ae57af59031b1b809d02f4e8e8afed0ec60b9d0aed4d2488bd3013cd9
 DIST nvidia-persistenced-535.288.01.tar.bz2 48600 BLAKE2B 
025d2d28a078354898a501eef857d496e504279e45ab2b167a4abd5345d50e8effa1432a46da7ffc0276faed5698fb02afec21eee810335daac638e4656d7ce8
 SHA512 
b92c96b12346d8e26321679ae51532e8d28eff6c2998b6e781ea840eecf022823e47b48ac0c918c1069eb04a601833c4e70c88f66eb4891bdea2a85666597d90
 DIST nvidia-persistenced-570.211.01.tar.bz2 61779 BLAKE2B 
02ac6f53eb4c053ca894f79b49d2a4b1b1f8e9f1a349053794542e72112bf0fab87aa2ee317d486758aaf77811c929d0aa8fbbcef9de8cc59836445ef845cb7d
 SHA512 
5cb8feb56bf245e8e51e65d3d6d31f2b588e7b84ca29330e564d3c27ab37ceb67df0f80f8b37dfafb49a9fe8d7fef6b26d6334c6403902737298e8f3b23d1cb3
 DIST nvidia-persistenced-580.126.09.tar.bz2 62240 BLAKE2B 
980dfd0a2c852c97e246f36f69c984808ca01cdba299b2be51a2cd7e5125d56a98280a003a32ccaf6873afc3183f13aed0433077aa399475fb404e5d7811b37c
 SHA512 
b6699cafb543d958911086c6773f7ac1ac3c32bb20b3a88c92e029f303f48f8daec7338cf080bf74ff97f26f4c92f640c1f51cf95fc9a601e666317fadf882ea
+DIST nvidia-persistenced-580.95.05.tar.bz2 62343 BLAKE2B 
ad5a8b185accac6e8488f7b6d138e71db783590ca3b9890a1034771977b2f598c4f920bc48e65dc254b925e71d7f59e935cf1e43c90982e81b48266ac5da4171
 SHA512 
624c052fd7e7aab74e86c07ab281448415f9900cade11c255f7b6907e7de26180513e83d7374b4a823ab431a0ce2c5a74ae51f8de3889bddeb959ec73c373605
 DIST nvidia-persistenced-590.48.01.tar.bz2 62193 BLAKE2B 
e6f03ce2f24f1ddc6b1dc9b7a8dd22de4541d5ec82f85c58943cf48f295e7f77555765b01edcce1c7f5ba67580c51273de8b8200d522c49e2321cffcfc8aeb6b
 SHA512 
960f37355e58da20af92f0f0df091709623e32d9ef4eaba34d1f6b52f71227ac7c3a7f84aec64460952fa32986672f9373774ab1e65149ed426c59be47d7f2d8
 DIST nvidia-settings-390.157.tar.bz2 1108938 BLAKE2B 
d9ec1ab5d7f157d74627272adf752a671dd17e2ede02069437b6180b927fe315b15cc6416d584ab2f038b76fe01e5b64514a834f24d88ac16676e55205fdecdd
 SHA512 
b16699009bf56a1ff3b623a528c58061c4f5a2c5c4a373756a07bcd667743a1df7c733a572d2d0baa835a904ac2fda8a5c85890dcc00c3a0f223e0467aea902d
 DIST nvidia-settings-470.256.02.tar.bz2 1062273 BLAKE2B 
8e66201e7861469b12932595ef8f9fd29d4cfd570c2576ae7fbb7383f61c55ac71fe721cc431e79d6d69f86d998b5b4c3cafe531b573f439e6b499b0fc047a19
 SHA512 
626e66118ae2e62eacfdf44e37529c409b945a6f33637b9690d74abd87a2afb581aaca5f90328d280da99ceb659959d0e5dc5c22ef8013b2205b2b1c72e08007
 DIST nvidia-settings-535.288.01.tar.bz2 1094513 BLAKE2B 
8b7112b44bbe3445b63ddc245edbdb717436432482e9f87398863ffd08c520b6ac3527d3d47a75cc7e0ddec3931302e3029ccd7050db1abcc317ebf697284e01
 SHA512 
f1a817d9463a928fe47fed14da5d1bc0b9cbe0a910cbf01fca0d4edbee0effa989ec1cbf34e0aba6cc8516cf7bdadbc60ee6f0e4178e3c6cfb78301a1ef5aa8b
 DIST nvidia-settings-570.211.01.tar.bz2 1123957 BLAKE2B 
7355319d29f96aeeada3cd1ffd08b053fa76a5f2f0dd35fac383ff5c1ffd4abba95d0a7f0f421fc4b74a11f2c94352c9e2db363034e5361a0d18017a321261f2
 SHA512 
8f29c02597eedd934531e703c617aaa7504effe836257de07c664145e07690b0b34b8c893c01e9e561bf90cb3c15b1b6c116e2a7a88ea1a733f2872490c10441
 DIST nvidia-settings-580.126.09.tar.bz2 1132737 BLAKE2B 
9d32e702265c8802fee8694cd5b1170c4c19dce8e5c33047376368492a6b531ee09b9aaa81617db5b48dde6e8d1b34f5010fbe7e720598997e68f754c5985b05
 SHA512 
57ae5968056fbe5c76a2a0bebcd42c5a530874c787be2439ed7dd0e916dad20b1151f9ab91073751bbf0bbd344e70d32598ceec03344691a7fe2812e8a3d1c19
+DIST nvidia-settings-580.95.05.tar.bz2 1131496 BLAKE2B 
5eb45787d743319593ca36c6d95fc9e93a020615935211c627dbebccecf92b8dd7d28c6d63a95a07c8cad1a70a65b0ddcc0040564ece0bf3383478ae59bd3aa2
 SHA512 
8c60d4df230e253d5fdeda972f0a8a9285ee419fe9be34aa3d25c06d4954bb9b6fc6db789f3a621813fb817f6de6fbdec6d79f70d519f1ddcb6b25b8378d6480
 DIST nvidia-settings-590.48.01.tar.bz2 1134292 BLAKE2B 
901a3bad03d4eaca3f78afc154539f72aa882ae19052b43b6bfb267a3be1ded4af607fbc05d1a379a8038a22fa5a9c19dd6c393f3436cda97cc7049820f1ec57
 SHA512 
c82737dc8894a35b7e87afd99fb98c0a4093ec8fd48590cc8e09154d55f948ceaf48fff31c7d015adcceab31a00c5ec4334fe1e90aec94c4bb076118b789dd4c
 DIST nvidia-xconfig-390.157.tar.bz2 107399 BLAKE2B 
0cbb3b1ba508ddc3ba4a161c290b31bf7a67f67880bdbd01171a962c5fa97ca945b1ef17932403f8589309380743f1da632c728d8accb6d4e56dbd895e7486bb
 SHA512 
50b390811c9bf091b14add41f886925b17496b41006b7d3981d2398caa65cf5db8a579c8cebed78278384bf3acc629befb07b54339c61abcc75852c0dcb8b8ca
 DIST nvidia-xconfig-470.256.02.tar.bz2 108698 BLAKE2B 
e468574e4bc57e7279d4120e2b08a201671b50d408be0c530eabe5da7d45daaf21cbf5c7fa31410d0d732fe8ea1551cbfb21d1ae193c1b3f5b5c50c764c9e236
 SHA512 
9dcec1e0c2b56b4d38a5f2c76086302f8bc0860cc15012cce29c3a5062f801a48b6a2bb78344361b07a2717b58502783441a2daf402d9973a17526175b1f15ca
 DIST nvidia-xconfig-535.288.01.tar.bz2 110671 BLAKE2B 
94f8f5c651df7d43de308938312b2c97e8a0292a2575914250e22dc62e139cba36be038453d6f1688e8ebb90883ce0806424eee7ca6fd3a5cee5e9884cfc8d60
 SHA512 
4368625df5eec5ec8296b9f561a8dc32fda958fd4ea37a4bc9da42303529d6366b41a028d2d9614ba0dcd029a3a5740c15e4fa1febec31da7df51b0b276a831c
 DIST nvidia-xconfig-570.211.01.tar.bz2 111263 BLAKE2B 
9d6e7e973156d91ce1a213a95aa31269d811024ebf358dfad42c0771cafc6c4f2d4257994d67e67ac637a1107527511d8f8219446e9a57560bab8ba7d4d2684c
 SHA512 
8e8be1e95998fde590bdb5c0246764a426d623c8bf9e705e7bff649f1daebb86726cead4add570622e34aea9a38b697d31d11d7a2fc741dd91af2ccaaa024cd1
 DIST nvidia-xconfig-580.126.09.tar.bz2 111541 BLAKE2B 
bab1f4347613ffe30ada9df4fa387a8426f4c829c4346cdb57cfa4334f93b2048b1296033e8ea79c1a5210ae8021ab5e4aa7d8dcbec216a886f5be14b684fdf4
 SHA512 
810e831e2522029e82e5bde1eab9ec641da271336c430eb2ce5645e7e765f179694fdb93a41e49ba2c951c0b0edc2fdffa77d088e9678ab206eabe45866c6c09
+DIST nvidia-xconfig-580.95.05.tar.bz2 111488 BLAKE2B 
abaf3fa63c19129df539a1e0eb4466ff7b8ccf81527c69b6bcfb16df2abf0950541791ecca130ff59ec0028a5a92c1a0912bc1d35a48efbd331a58f224699db6
 SHA512 
4fa0d411e8c41ee5f24443ef9f88a261c006b5b487f6745d54eac27805a8a810ef5ffba1da3952a39978e1ccfe39114399722e392d282791a648c69a88b7777e
 DIST nvidia-xconfig-590.48.01.tar.bz2 110986 BLAKE2B 
6ec7f5eee2ca4c4a96f0607ac94ec3d491137a0e8750a6ae4c46feddced61f7a8b1eb77aa333008a69ceab7ad071671b7449bb2ed9ba285359fd1cb991a9c9b2
 SHA512 
e85dbd9ba5e056fb6f8a4618df35fa1692d0037e50122a5659ebda043a9b380fdf72aaa56f82b64e5525c36f429ed9bbd7f0e319c608f7c50355d47ab3b24077
 DIST open-gpu-kernel-modules-580.94.16.tar.gz 23302184 BLAKE2B 
94330cda25e6a36737958f9e64848c013cd80f21bf9b79118a202d633b9335e7227f73a4926fe1d5ca82f3bd43309428ce2de65b9f93bb8425e56ae3d17b5bbf
 SHA512 
82270737dc36e52ef7496302eea5c1f64989f24b5cca5ce582124b00c8b591a50adc4cde0f0c17e859a9f166040b63b2cefb205bb72fe4ed3525491c24b2e4c2

diff --git 
a/x11-drivers/nvidia-drivers/files/nvidia-kernel-module-source-580.95.05-kernel6.18.patch
 
b/x11-drivers/nvidia-drivers/files/nvidia-kernel-module-source-580.95.05-kernel6.18.patch
new file mode 100644
index 000000000000..c0e061b6f4dc
--- /dev/null
+++ 
b/x11-drivers/nvidia-drivers/files/nvidia-kernel-module-source-580.95.05-kernel6.18.patch
@@ -0,0 +1,21 @@
+get_dev_pagemap() is only used with CONFIG_ZONE_DEVICE and
+USE=kernel-open, and in kernel 6.18 takes one argument in less that
+NVIDIA seemingly did not need.
+
+This is a simplified version of 590.44.01's fix which skips the
+conftest.sh changes for easier backporting (at worst the simple version
+check may break if the kernel backports this to older kernels).
+
+[1] https://github.com/NVIDIA/open-gpu-kernel-modules/pull/951
+--- a/kernel-module-source/kernel-open/nvidia-uvm/uvm_va_range_device_p2p.c
++++ b/kernel-module-source/kernel-open/nvidia-uvm/uvm_va_range_device_p2p.c
+@@ -361,5 +361,9 @@
+         if (gpu->parent->cdmm_enabled) {
+             get_page(page);
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,18,0)
++            get_dev_pagemap(page_to_pfn(page));
++#else
+             get_dev_pagemap(page_to_pfn(page), NULL);
++#endif
+         }
+ #else

diff --git a/x11-drivers/nvidia-drivers/nvidia-drivers-580.95.05.ebuild 
b/x11-drivers/nvidia-drivers/nvidia-drivers-580.95.05.ebuild
new file mode 100644
index 000000000000..1d06075a882e
--- /dev/null
+++ b/x11-drivers/nvidia-drivers/nvidia-drivers-580.95.05.ebuild
@@ -0,0 +1,587 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+MODULES_OPTIONAL_IUSE=+modules
+inherit desktop dot-a eapi9-pipestatus flag-o-matic linux-mod-r1
+inherit readme.gentoo-r1 systemd toolchain-funcs unpacker user-info
+
+MODULES_KERNEL_MAX=6.18
+NV_URI="https://download.nvidia.com/XFree86/";
+
+DESCRIPTION="NVIDIA Accelerated Graphics Driver"
+HOMEPAGE="https://www.nvidia.com/";
+SRC_URI="
+       amd64? ( ${NV_URI}Linux-x86_64/${PV}/NVIDIA-Linux-x86_64-${PV}.run )
+       arm64? ( ${NV_URI}Linux-aarch64/${PV}/NVIDIA-Linux-aarch64-${PV}.run )
+       $(printf "${NV_URI}%s/%s-${PV}.tar.bz2 " \
+               nvidia-{installer,modprobe,persistenced,settings,xconfig}{,})
+       
${NV_URI}NVIDIA-kernel-module-source/NVIDIA-kernel-module-source-${PV}.tar.xz
+"
+# nvidia-installer is unused but here for GPL-2's "distribute sources"
+S=${WORKDIR}
+
+LICENSE="
+       NVIDIA-2025 Apache-2.0 Boost-1.0 BSD BSD-2 GPL-2 MIT ZLIB
+       curl openssl public-domain
+"
+SLOT="0/${PV%%.*}"
+KEYWORDS="-* amd64 ~arm64"
+IUSE="+X abi_x86_32 abi_x86_64 kernel-open persistenced powerd +static-libs 
+tools wayland"
+
+COMMON_DEPEND="
+       acct-group/video
+       X? ( x11-libs/libpciaccess )
+       persistenced? (
+               acct-user/nvpd
+               net-libs/libtirpc:=
+       )
+       tools? (
+               >=app-accessibility/at-spi2-core-2.46:2
+               dev-libs/glib:2
+               dev-libs/jansson:=
+               media-libs/harfbuzz:=
+               x11-libs/cairo
+               x11-libs/gdk-pixbuf:2
+               x11-libs/gtk+:3[X]
+               x11-libs/libX11
+               x11-libs/libXext
+               x11-libs/libXxf86vm
+               x11-libs/pango
+       )
+"
+RDEPEND="
+       ${COMMON_DEPEND}
+       dev-libs/openssl:0/3
+       sys-libs/glibc
+       X? (
+               media-libs/libglvnd[X,abi_x86_32(-)?]
+               x11-libs/libX11[abi_x86_32(-)?]
+               x11-libs/libXext[abi_x86_32(-)?]
+       )
+       powerd? ( sys-apps/dbus[abi_x86_32(-)?] )
+       wayland? (
+               >=gui-libs/egl-gbm-1.1.1-r2[abi_x86_32(-)?]
+               || (
+                       >=gui-libs/egl-wayland-1.1.13.1[abi_x86_32(-)?]
+                       gui-libs/egl-wayland2[abi_x86_32(-)?]
+               )
+               X? ( gui-libs/egl-x11[abi_x86_32(-)?] )
+       )
+"
+DEPEND="
+       ${COMMON_DEPEND}
+       static-libs? (
+               x11-base/xorg-proto
+               x11-libs/libX11
+               x11-libs/libXext
+       )
+       tools? (
+               dev-util/vulkan-headers
+               media-libs/libglvnd
+               sys-apps/dbus
+               x11-base/xorg-proto
+               x11-libs/libXrandr
+               x11-libs/libXv
+               x11-libs/libvdpau
+       )
+"
+BDEPEND="
+       app-alternatives/awk
+       sys-devel/m4
+       virtual/pkgconfig
+"
+
+# there is some non-prebuilt exceptions but rather not maintain a list
+QA_PREBUILT="lib/firmware/* usr/bin/* usr/lib*"
+
+PATCHES=(
+       "${FILESDIR}"/nvidia-modprobe-390.141-uvm-perms.patch
+       "${FILESDIR}"/nvidia-settings-530.30.02-desktop.patch
+       "${FILESDIR}"/nvidia-kernel-module-source-580.95.05-kernel6.18.patch
+)
+
+pkg_setup() {
+       use modules && [[ ${MERGE_TYPE} != binary ]] || return
+
+       # do early before linux-mod-r1 so can use chkconfig to setup 
CONFIG_CHECK
+       get_version
+       require_configured_kernel
+
+       local CONFIG_CHECK="
+               PROC_FS
+               ~DRM_KMS_HELPER
+               ~DRM_FBDEV_EMULATION
+               ~SYSVIPC
+               ~!LOCKDEP
+               ~!PREEMPT_RT
+               ~!SLUB_DEBUG_ON
+               !DEBUG_MUTEXES
+               $(usev powerd '~CPU_FREQ')
+       "
+
+       kernel_is -ge 6 11 && linux_chkconfig_present DRM_FBDEV_EMULATION &&
+               CONFIG_CHECK+=" DRM_TTM_HELPER"
+
+       use amd64 && kernel_is -ge 5 8 && CONFIG_CHECK+=" X86_PAT" #817764
+
+       use kernel-open && CONFIG_CHECK+=" MMU_NOTIFIER" #843827
+
+       local drm_helper_msg="Cannot be directly selected in the kernel's 
config menus, and may need
+       selection of a DRM device even if unused, e.g. CONFIG_DRM_QXL=m or
+       DRM_AMDGPU=m (among others, consult the kernel config's help), can
+       also use DRM_NOUVEAU=m as long as built as module *not* built-in."
+       local ERROR_DRM_KMS_HELPER="CONFIG_DRM_KMS_HELPER: is not set but 
needed for Xorg auto-detection
+       of drivers (no custom config), and for wayland / nvidia-drm.modeset=1.
+       ${drm_helper_msg}"
+       local ERROR_DRM_TTM_HELPER="CONFIG_DRM_TTM_HELPER: is not set but is 
needed to compile when using
+       kernel version 6.11.x or newer while DRM_FBDEV_EMULATION is set.
+       ${drm_helper_msg}"
+       local ERROR_DRM_FBDEV_EMULATION="CONFIG_DRM_FBDEV_EMULATION: is not set 
but is needed for
+       nvidia-drm.fbdev=1 support, currently off-by-default and it could
+       be ignored, but note that is due to change in the future."
+       local ERROR_MMU_NOTIFIER="CONFIG_MMU_NOTIFIER: is not set but needed to 
build with USE=kernel-open.
+       Cannot be directly selected in the kernel's menuconfig, and may need
+       selection of another option that requires it such as CONFIG_AMD_IOMMU=y,
+       or DRM_I915=m (among others, consult the kernel config's help)."
+       local ERROR_PREEMPT_RT="CONFIG_PREEMPT_RT: is set but is unsupported by 
NVIDIA upstream and
+       will fail to build unless the env var IGNORE_PREEMPT_RT_PRESENCE=1 is
+       set. Please do not report issues if run into e.g. kernel panics while
+       ignoring this."
+
+       linux-mod-r1_pkg_setup
+}
+
+src_prepare() {
+       # make patches usable across versions
+       rm nvidia-modprobe && mv nvidia-modprobe{-${PV},} || die
+       rm nvidia-persistenced && mv nvidia-persistenced{-${PV},} || die
+       rm nvidia-settings && mv nvidia-settings{-${PV},} || die
+       rm nvidia-xconfig && mv nvidia-xconfig{-${PV},} || die
+       mv NVIDIA-kernel-module-source-${PV} kernel-module-source || die
+
+       default
+
+       # prevent detection of incomplete kernel DRM support (bug #603818)
+       sed 's/defined(CONFIG_DRM/defined(CONFIG_DRM_KMS_HELPER/g' \
+               -i kernel{,-module-source/kernel-open}/conftest.sh || die
+
+       sed 's/__USER__/nvpd/' \
+               
nvidia-persistenced/init/systemd/nvidia-persistenced.service.template \
+               > "${T}"/nvidia-persistenced.service || die
+
+       # use alternative vulkan icd option if USE=-X (bug #909181)
+       use X || sed -i 's/"libGLX/"libEGL/' nvidia_{layers,icd}.json || die
+
+       # enable nvidia-drm.modeset=1 by default with USE=wayland
+       cp "${FILESDIR}"/nvidia-570.conf "${T}"/nvidia.conf || die
+       use !wayland || sed -i '/^#.*modeset=1$/s/^#//' "${T}"/nvidia.conf || 
die
+
+       # makefile attempts to install wayland library even if not built
+       use wayland || sed -i 's/ WAYLAND_LIB_install$//' \
+               nvidia-settings/src/Makefile || die
+}
+
+src_compile() {
+       tc-export AR CC CXX LD OBJCOPY OBJDUMP PKG_CONFIG
+
+       # extra flags for the libXNVCtrl.a static library
+       local xnvflags=-fPIC #840389
+       tc-is-lto && xnvflags+=" $(test-flags-CC -ffat-lto-objects)"
+
+       NV_ARGS=(
+               PREFIX="${EPREFIX}"/usr
+               HOST_CC="$(tc-getBUILD_CC)"
+               HOST_LD="$(tc-getBUILD_LD)"
+               BUILD_GTK2LIB=
+               NV_USE_BUNDLED_LIBJANSSON=0
+               NV_VERBOSE=1 DO_STRIP= MANPAGE_GZIP= OUTPUTDIR=out
+               WAYLAND_AVAILABLE=$(usex wayland 1 0)
+               XNVCTRL_CFLAGS="${xnvflags}"
+       )
+
+       if use modules; then
+               local o_cflags=${CFLAGS} o_cxxflags=${CXXFLAGS} 
o_ldflags=${LDFLAGS}
+
+               local modlistargs=video:kernel
+               if use kernel-open; then
+                       
modlistargs+=-module-source:kernel-module-source/kernel-open
+
+                       # environment flags are normally unused for modules, 
but nvidia
+                       # uses it for building the "blob" and it is a bit 
fragile
+                       filter-flags -fno-plt #912949
+                       filter-lto
+                       CC=${KERNEL_CC} CXX=${KERNEL_CXX} 
strip-unsupported-flags
+
+                       LDFLAGS=$(raw-ldflags)
+               fi
+
+               local modlist=( 
nvidia{,-drm,-modeset,-peermem,-uvm}=${modlistargs} )
+               local modargs=(
+                       IGNORE_CC_MISMATCH=yes NV_VERBOSE=1
+                       SYSOUT="${KV_OUT_DIR}" SYSSRC="${KV_DIR}"
+
+                       # kernel takes "x86" and "x86_64" as meaning the same, 
but nvidia
+                       # makes the distinction (since 550.135) and is not 
happy with "x86"
+                       # TODO?: it should be ok/better for tc-arch-kernel to 
do x86_64
+                       $(usev amd64 ARCH=x86_64)
+               )
+
+               # temporary workaround for bug #914468
+               addpredict "${KV_OUT_DIR}"
+
+               linux-mod-r1_src_compile
+               CFLAGS=${o_cflags} CXXFLAGS=${o_cxxflags} LDFLAGS=${o_ldflags}
+       fi
+
+       emake "${NV_ARGS[@]}" -C nvidia-modprobe
+       use persistenced && emake "${NV_ARGS[@]}" -C nvidia-persistenced
+       use X && emake "${NV_ARGS[@]}" -C nvidia-xconfig
+
+       if use tools; then
+               # avoid noisy *very* noisy logs with deprecation warnings
+               CFLAGS="-Wno-deprecated-declarations ${CFLAGS}" \
+                       emake "${NV_ARGS[@]}" -C nvidia-settings
+       elif use static-libs; then
+               # pretend GTK+3 is available, not actually used (bug #880879)
+               emake "${NV_ARGS[@]}" BUILD_GTK3LIB=1 \
+                       -C nvidia-settings/src out/libXNVCtrl.a
+       fi
+}
+
+src_install() {
+       local libdir=$(get_libdir) libdir32=$(ABI=x86 get_libdir)
+
+       NV_ARGS+=( DESTDIR="${D}" LIBDIR="${ED}"/usr/${libdir} )
+
+       local -A paths=(
+               [APPLICATION_PROFILE]=/usr/share/nvidia
+               [CUDA_ICD]=/etc/OpenCL/vendors
+               
[EGL_EXTERNAL_PLATFORM_JSON]=/usr/share/egl/egl_external_platform.d
+               [FIRMWARE]=/lib/firmware/nvidia/${PV}
+               [GBM_BACKEND_LIB_SYMLINK]=/usr/${libdir}/gbm
+               [GLVND_EGL_ICD_JSON]=/usr/share/glvnd/egl_vendor.d
+               [OPENGL_DATA]=/usr/share/nvidia
+               [VULKANSC_ICD_JSON]=/usr/share/vulkansc
+               [VULKAN_ICD_JSON]=/usr/share/vulkan
+               [WINE_LIB]=/usr/${libdir}/nvidia/wine
+               [XORG_OUTPUTCLASS_CONFIG]=/usr/share/X11/xorg.conf.d
+
+               [GLX_MODULE_SHARED_LIB]=/usr/${libdir}/xorg/modules/extensions
+               [GLX_MODULE_SYMLINK]=/usr/${libdir}/xorg/modules
+               [XMODULE_SHARED_LIB]=/usr/${libdir}/xorg/modules
+       )
+
+       local skip_files=(
+               $(usev !X "libGLX_nvidia libglxserver_nvidia")
+               libGLX_indirect # non-glvnd unused fallback
+               libnvidia-{gtk,wayland-client} nvidia-{settings,xconfig} # from 
source
+               libnvidia-egl-gbm 15_nvidia_gbm # gui-libs/egl-gbm
+               libnvidia-egl-wayland 10_nvidia_wayland # gui-libs/egl-wayland
+               libnvidia-egl-xcb 20_nvidia_xcb.json # gui-libs/egl-x11
+               libnvidia-egl-xlib 20_nvidia_xlib.json # gui-libs/egl-x11
+               libnvidia-pkcs11.so # using the openssl3 version instead
+       )
+       local skip_modules=(
+               $(usev !X "nvfbc vdpau xdriver")
+               $(usev !modules gsp)
+               $(usev !powerd nvtopps)
+               installer nvpd # handled separately / built from source
+       )
+       local skip_types=(
+               GLVND_LIB GLVND_SYMLINK EGL_CLIENT.\* GLX_CLIENT.\* # 
media-libs/libglvnd
+               OPENCL_WRAPPER.\* # virtual/opencl
+               DOCUMENTATION DOT_DESKTOP .\*_SRC DKMS_CONF SYSTEMD_UNIT # 
handled separately / unused
+       )
+
+       local DOCS=(
+               README.txt NVIDIA_Changelog supported-gpus/supported-gpus.json
+               nvidia-settings/doc/{FRAMELOCK,NV-CONTROL-API}.txt
+       )
+       local HTML_DOCS=( html/. )
+       einstalldocs
+
+       local DISABLE_AUTOFORMATTING=yes
+       local DOC_CONTENTS="\
+Trusted users should be in the 'video' group to use NVIDIA devices.
+You can add yourself by using: gpasswd -a my-user video\
+$(usev modules "
+
+Like all out-of-tree kernel modules, it is necessary to rebuild
+${PN} after upgrading or rebuilding the Linux kernel
+by for example running \`emerge @module-rebuild\`. Alternatively,
+if using a distribution kernel (sys-kernel/gentoo-kernel{,-bin}),
+this can be automated by setting USE=dist-kernel globally.
+
+Loaded kernel modules also must not mismatch with the installed
+${PN} version (excluding -r revision), meaning should
+ensure \`eselect kernel list\` points to the kernel that will be
+booted before building and preferably reboot after upgrading
+${PN} (the ebuild will emit a warning if mismatching).
+
+See '${EPREFIX}/etc/modprobe.d/nvidia.conf' for modules options.")\
+$(use amd64 && usev !abi_x86_32 "
+
+Note that without USE=abi_x86_32 on ${PN}, 32bit applications
+(typically using wine / steam) will not be able to use GPU acceleration.")
+
+Be warned that USE=kernel-open may need to be either enabled or
+disabled for certain cards to function:
+- GTX 50xx (blackwell) and higher require it to be enabled
+- GTX 1650 and higher (pre-blackwell) should work either way
+- Older cards require it to be disabled
+
+For additional information or for troubleshooting issues, please see
+https://wiki.gentoo.org/wiki/NVIDIA/nvidia-drivers and NVIDIA's own
+documentation that is installed alongside this README."
+       readme.gentoo_create_doc
+
+       if use modules; then
+               linux-mod-r1_src_install
+
+               insinto /etc/modprobe.d
+               doins "${T}"/nvidia.conf
+
+               # used for gpu verification with binpkgs (not kept, see 
pkg_preinst)
+               insinto /usr/share/nvidia
+               doins supported-gpus/supported-gpus.json
+       fi
+
+       emake "${NV_ARGS[@]}" -C nvidia-modprobe install
+       fowners :video /usr/bin/nvidia-modprobe #505092
+       fperms 4710 /usr/bin/nvidia-modprobe
+
+       if use persistenced; then
+               emake "${NV_ARGS[@]}" -C nvidia-persistenced install
+               newconfd "${FILESDIR}"/nvidia-persistenced.confd 
nvidia-persistenced
+               newinitd "${FILESDIR}"/nvidia-persistenced.initd 
nvidia-persistenced
+               systemd_dounit "${T}"/nvidia-persistenced.service
+       fi
+
+       if use tools; then
+               emake "${NV_ARGS[@]}" -C nvidia-settings install
+
+               doicon nvidia-settings/doc/nvidia-settings.png
+               domenu nvidia-settings/doc/nvidia-settings.desktop
+
+               exeinto /etc/X11/xinit/xinitrc.d
+               newexe "${FILESDIR}"/95-nvidia-settings-r1 95-nvidia-settings
+       fi
+
+       if use static-libs; then
+               dolib.a nvidia-settings/src/out/libXNVCtrl.a
+               strip-lto-bytecode
+
+               insinto /usr/include/NVCtrl
+               doins nvidia-settings/src/libXNVCtrl/NVCtrl{Lib,}.h
+       fi
+
+       use X && emake "${NV_ARGS[@]}" -C nvidia-xconfig install
+
+       # mimic nvidia-installer by reading .manifest to install files
+       # 0:file 1:perms 2:type 3+:subtype/arguments -:module
+       local m into
+       while IFS=' ' read -ra m; do
+               ! [[ ${#m[@]} -ge 2 && ${m[-1]} =~ MODULE: ]] ||
+                       [[ " ${m[0]##*/}" =~ ^(\ ${skip_files[*]/%/.*|\\} )$ ]] 
||
+                       [[ " ${m[2]}" =~ ^(\ ${skip_types[*]/%/|\\} )$ ]] ||
+                       has ${m[-1]#MODULE:} "${skip_modules[@]}" && continue
+
+               case ${m[2]} in
+                       MANPAGE)
+                               gzip -dc ${m[0]} | newman - ${m[0]%.gz}
+                               pipestatus || die
+                               continue
+                       ;;
+                       GBM_BACKEND_LIB_SYMLINK) m[4]=../${m[4]};; # missing ../
+                       VDPAU_SYMLINK) m[4]=vdpau/; m[5]=${m[5]#vdpau/};; # .so 
to vdpau/
+               esac
+
+               if [[ -v 'paths[${m[2]}]' ]]; then
+                       into=${paths[${m[2]}]}
+               elif [[ ${m[2]} == EXPLICIT_PATH ]]; then
+                       into=${m[3]}
+               elif [[ ${m[2]} == *_BINARY ]]; then
+                       into=/usr/bin
+               elif [[ ${m[3]} == COMPAT32 ]]; then
+                       use abi_x86_32 || continue
+                       into=/usr/${libdir32}
+               elif [[ ${m[2]} == *_@(LIB|SYMLINK) ]]; then
+                       into=/usr/${libdir}
+               else
+                       die "No known installation path for ${m[0]}"
+               fi
+               [[ ${m[3]: -2} == ?/ ]] && into+=/${m[3]%/}
+               [[ ${m[4]: -2} == ?/ ]] && into+=/${m[4]%/}
+
+               if [[ ${m[2]} =~ _SYMLINK$ ]]; then
+                       [[ ${m[4]: -1} == / ]] && m[4]=${m[5]}
+                       dosym ${m[4]} ${into}/${m[0]}
+                       continue
+               fi
+               # avoid portage warning due to missing soname links in manifest
+               [[ ${m[0]} =~ ^libnvidia-ngx.so ]] &&
+                       dosym ${m[0]} ${into}/${m[0]%.so*}.so.1
+
+               printf -v m[1] %o $((m[1] | 0200)) # 444->644
+               insopts -m${m[1]}
+               insinto ${into}
+               doins ${m[0]}
+       done < .manifest || die
+       insopts -m0644 # reset
+
+       # MODULE:installer non-skipped extras
+       : "$(systemd_get_sleepdir)"
+       exeinto "${_#"${EPREFIX}"}"
+       doexe systemd/system-sleep/nvidia
+       dobin systemd/nvidia-sleep.sh
+       systemd_dounit 
systemd/system/nvidia-{hibernate,resume,suspend,suspend-then-hibernate}.service
+
+       dobin nvidia-bug-report.sh
+
+       insinto /usr/share/nvidia/files.d
+       doins sandboxutils-filelist.json
+
+       # MODULE:powerd extras
+       if use powerd; then
+               newinitd "${FILESDIR}"/nvidia-powerd.initd nvidia-powerd #923117
+               systemd_dounit systemd/system/nvidia-powerd.service
+
+               insinto /usr/share/dbus-1/system.d
+               doins nvidia-dbus.conf
+       fi
+
+       # enabling is needed for sleep to work properly and little reason not 
to do
+       # it unconditionally for a better user experience
+       : "$(systemd_get_systemunitdir)"
+       local unitdir=${_#"${EPREFIX}"}
+       # not using relative symlinks to match systemd's own links
+       dosym 
{"${unitdir}",/etc/systemd/system/systemd-hibernate.service.wants}/nvidia-hibernate.service
+       dosym 
{"${unitdir}",/etc/systemd/system/systemd-hibernate.service.wants}/nvidia-resume.service
+       dosym 
{"${unitdir}",/etc/systemd/system/systemd-suspend.service.wants}/nvidia-suspend.service
+       dosym 
{"${unitdir}",/etc/systemd/system/systemd-suspend.service.wants}/nvidia-resume.service
+       dosym 
{"${unitdir}",/etc/systemd/system/systemd-suspend-then-hibernate.service.wants}/nvidia-suspend-then-hibernate.service
+       dosym 
{"${unitdir}",/etc/systemd/system/systemd-suspend-then-hibernate.service.wants}/nvidia-resume.service
+       # also add a custom elogind hook to do the equivalent of the above
+       exeinto /usr/lib/elogind/system-sleep
+       newexe "${FILESDIR}"/system-sleep.elogind nvidia
+       # <elogind-255.5 used a different path (bug #939216), keep a compat 
symlink
+       # TODO: cleanup after 255.5 been stable for a few months
+       dosym {/usr/lib,/"${libdir}"}/elogind/system-sleep/nvidia
+
+       # needed with >=systemd-256 or may fail to resume with some setups
+       # https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1072722
+       insinto "${unitdir}"/systemd-homed.service.d
+       newins - 10-nvidia.conf <<-EOF
+               [Service]
+               Environment=SYSTEMD_HOME_LOCK_FREEZE_SESSION=false
+       EOF
+       insinto "${unitdir}"/systemd-suspend.service.d
+       newins - 10-nvidia.conf <<-EOF
+               [Service]
+               Environment=SYSTEMD_SLEEP_FREEZE_USER_SESSIONS=false
+       EOF
+       dosym -r 
"${unitdir}"/systemd-{suspend,hibernate}.service.d/10-nvidia.conf
+       dosym -r 
"${unitdir}"/systemd-{suspend,hybrid-sleep}.service.d/10-nvidia.conf
+       dosym -r 
"${unitdir}"/systemd-{suspend,suspend-then-hibernate}.service.d/10-nvidia.conf
+
+       # symlink non-versioned so nvidia-settings can use it even if 
misdetected
+       dosym nvidia-application-profiles-${PV}-key-documentation \
+               
${paths[APPLICATION_PROFILE]}/nvidia-application-profiles-key-documentation
+
+       # don't attempt to strip firmware files (silences errors)
+       dostrip -x ${paths[FIRMWARE]}
+
+       # sandbox issues with /dev/nvidiactl and others (bug #904292,#921578)
+       # are widespread and sometime affect revdeps of packages built with
+       # USE=opencl/cuda making it hard to manage in ebuilds (minimal set,
+       # ebuilds should handle manually if need others or addwrite)
+       insinto /etc/sandbox.d
+       newins - 20nvidia 
<<<'SANDBOX_PREDICT="/dev/nvidiactl:/dev/nvidia-caps:/dev/char"'
+
+       # dracut does not use /etc/modprobe.d if hostonly=no, but want to make 
sure
+       # our settings are used for bug 932781#c8 and nouveau blacklist if 
either
+       # modules are included (however, just best-effort without initramfs 
regen)
+       if use modules; then
+               echo "install_items+=\" ${EPREFIX}/etc/modprobe.d/nvidia.conf 
\"" >> \
+                       "${ED}"/usr/lib/dracut/dracut.conf.d/10-${PN}.conf || 
die
+       fi
+}
+
+pkg_preinst() {
+       has_version "${CATEGORY}/${PN}[kernel-open]" && NV_HAD_KERNEL_OPEN=
+       has_version "${CATEGORY}/${PN}[wayland]" && NV_HAD_WAYLAND=
+
+       use modules || return
+
+       # set video group id based on live system (bug #491414)
+       local g=$(egetent group video | cut -d: -f3)
+       [[ ${g} =~ ^[0-9]+$ ]] || die "Failed to determine video group id (got 
'${g}')"
+       sed -i "s/@VIDEOGID@/${g}/" "${ED}"/etc/modprobe.d/nvidia.conf || die
+
+       # try to find driver mismatches using temporary supported-gpus.json
+       for g in $(grep -l 0x10de /sys/bus/pci/devices/*/vendor 2>/dev/null); do
+               g=$(grep -io 
"\"devid\":\"$(<${g%vendor}device)\"[^}]*branch\":\"[0-9]*" \
+                       "${ED}"/usr/share/nvidia/supported-gpus.json 
2>/dev/null)
+               if [[ ${g} ]]; then
+                       g=$((${g##*\"}+1))
+                       if ver_test -ge ${g}; then
+                               NV_LEGACY_MASK=">=${CATEGORY}/${PN}-${g}"
+                               break
+                       fi
+               fi
+       done
+       rm "${ED}"/usr/share/nvidia/supported-gpus.json || die
+}
+
+pkg_postinst() {
+       linux-mod-r1_pkg_postinst
+
+       readme.gentoo_print_elog
+
+       if [[ -r /proc/driver/nvidia/version &&
+               $(</proc/driver/nvidia/version) != *"  ${PV}  "* ]]; then
+               ewarn "\nCurrently loaded NVIDIA modules do not match the newly 
installed"
+               ewarn "libraries and may prevent launching GPU-accelerated 
applications."
+               if use modules; then
+                       ewarn "Easiest way to fix this is normally to reboot. 
If still run into issues"
+                       ewarn "(e.g. API mismatch messages in the \`dmesg\` 
output), please verify"
+                       ewarn "that the running kernel is ${KV_FULL} and that 
(if used) the"
+                       ewarn "initramfs does not include NVIDIA modules (or at 
least, not old ones)."
+               fi
+       fi
+
+       if [[ $(</proc/cmdline) == *slub_debug=[!-]* ]]; then
+               ewarn "\nDetected that the current kernel command line is using 
'slub_debug=',"
+               ewarn "this may lead to system instability/freezes with this 
version of"
+               ewarn "${PN}. Bug: https://bugs.gentoo.org/796329";
+       fi
+
+       if [[ -v NV_LEGACY_MASK ]]; then
+               ewarn "\n***WARNING***"
+               ewarn "\nYou are installing a version of ${PN} known not to 
work"
+               ewarn "with a GPU of the current system. If unwanted, add the 
mask:"
+               if [[ -d ${EROOT}/etc/portage/package.mask ]]; then
+                       ewarn "  echo '${NV_LEGACY_MASK}' > 
${EROOT}/etc/portage/package.mask/${PN}"
+               else
+                       ewarn "  echo '${NV_LEGACY_MASK}' >> 
${EROOT}/etc/portage/package.mask"
+               fi
+               ewarn "...then downgrade to a legacy[1] branch if possible (not 
all old versions"
+               ewarn "are available or fully functional, may need to consider 
nouveau[2])."
+               ewarn "[1] https://www.nvidia.com/object/IO_32667.html";
+               ewarn "[2] https://wiki.gentoo.org/wiki/Nouveau";
+       fi
+
+       if use kernel-open && use modules && [[ ! -v NV_HAD_KERNEL_OPEN ]]; then
+               ewarn "\nOpen source variant of ${PN} was selected, note that 
it requires"
+               ewarn "Turing/Ampere+ GPUs (aka GTX 1650+). Try disabling if 
run into issues."
+               ewarn "Also see: 
${EROOT}/usr/share/doc/${PF}/html/kernel_open.html"
+       fi
+
+       if use wayland && use modules && [[ ! -v NV_HAD_WAYLAND ]]; then
+               elog "\nNote that with USE=wayland, nvidia-drm.modeset=1 will 
be enabled"
+               elog "in '${EROOT}/etc/modprobe.d/nvidia.conf'. *If* experience 
issues,"
+               elog "either disable wayland or edit nvidia.conf."
+       fi
+}


Reply via email to