PackageGraph first working version

This commit is contained in:
2025-10-08 18:02:47 -04:00
parent 9899426f60
commit 5cbd13fb3c
6 changed files with 515 additions and 347 deletions

View File

@@ -15,8 +15,13 @@
enable = true; enable = true;
requirements = '' requirements = ''
beautifulsoup4==4.14.2 beautifulsoup4==4.14.2
certifi==2025.10.5
charset-normalizer==3.4.3
idna==3.10
requests==2.32.5
soupsieve==2.8 soupsieve==2.8
typing_extensions==4.15.0 typing_extensions==4.15.0
urllib3==2.5.0
''; '';
}; };
}; };

View File

@@ -1,310 +1,310 @@
Name,Packages,Fresh Packages name,color,packages,freshPackages
Adélie Linux current,8243,2091 Adélie Linux current,#27f676,8243,2091
AIX Open Source Packages,8065,260 AIX Open Source Packages,#e1d77b,8065,260
AIX Toolbox,644,116 AIX Toolbox,#6b0b92,644,116
AlmaLinux 8,5986,750 AlmaLinux 8,#e7b63a,5986,750
AlmaLinux 9,3034,655 AlmaLinux 9,#3a17d8,3034,655
Alpine Linux 3.15,15848,2873 Alpine Linux 3.15,#0d597f,15848,2873
Alpine Linux 3.16,17032,3179 Alpine Linux 3.16,#0d597f,17032,3179
Alpine Linux 3.17,17811,3675 Alpine Linux 3.17,#0d597f,17811,3695
Alpine Linux 3.18,20062,4597 Alpine Linux 3.18,#0d597f,20062,4617
Alpine Linux 3.19,23027,5654 Alpine Linux 3.19,#0d597f,23027,5677
Alpine Linux 3.20,24163,6561 Alpine Linux 3.20,#0d597f,24163,6582
Alpine Linux 3.21,25389,8133 Alpine Linux 3.21,#0d597f,25389,8154
Alpine Linux 3.22,26312,11533 Alpine Linux 3.22,#0d597f,26312,11521
Alpine Linux Edge,34749,22634 Alpine Linux Edge,#0d597f,34749,22568
ALT Linux p9,18262,4531 ALT Linux p9,#7bdee9,18262,4531
ALT Linux p10,19057,5321 ALT Linux p10,#e35430,19057,5322
ALT Linux p11,19794,7204 ALT Linux p11,#cf81dd,19795,7204
ALT Sisyphus,20700,10196 ALT Sisyphus,#115799,20700,10202
Amazon Linux 1,3448,298 Amazon Linux 1,#2f2558,3448,298
Amazon Linux 2,7253,717 Amazon Linux 2,#234b7a,7255,717
AOSC,5749,2188 AOSC,#0af098,5749,2184
Apertis v2023,5612,1131 Apertis v2023,#4205cd,5612,1131
Apertis v2024,5976,1296 Apertis v2024,#b1b089,5977,1297
Apertis v2025,5981,1297 Apertis v2025,#d9ba1d,5981,1298
Apertis v2026 Development,6825,2581 Apertis v2026 Development,#9bc337,6825,2581
Arch Linux,15099,11591 Arch Linux,#02ba84,15099,11588
Arch Testing,307,222 Arch Testing,#bf6e11,263,194
Arch Linux ARM aarch64,21174,11004 Arch Linux ARM aarch64,#3ca5dc,21174,10946
ArchPOWER powerpc,5417,2531 ArchPOWER powerpc,#7beb18,5417,2529
ArchPOWER powerpc64le,5650,2559 ArchPOWER powerpc64le,#dd275f,5650,2558
ArchPOWER riscv64,5330,2169 ArchPOWER riscv64,#16ece5,5330,2169
AUR,100544,28117 AUR,#1793d1,100533,28097
Artix,8904,5688 Artix,#f0c1fa,8904,5643
Artix Testing,163,129 Artix Testing,#7fa3b3,163,116
BackBox 6,19,3 BackBox 6,#9997c4,19,2
BackBox 7,26,8 BackBox 7,#02b384,26,7
Baulk,71,50 Baulk,#16e637,71,48
BioArch,5251,4631 BioArch,#7b8a5b,5251,4629
BlackArch,5578,1420 BlackArch,#0a499c,5578,1418
Calculate,88,9 Calculate,#45ee36,88,9
Carbs Linux,347,99 Carbs Linux,#7557f4,347,100
CentOS 6,2399,316 CentOS 6,#b53b07,2399,316
CentOS 7,3541,493 CentOS 7,#227ce7,3541,493
CentOS 8,3380,535 CentOS 8,#f44498,3380,535
CentOS Stream 8,9841,794 CentOS Stream 8,#33d093,9841,794
CentOS Stream 9,6029,929 CentOS Stream 9,#0ee97e,6029,929
CentOS Stream 10,6072,1967 CentOS Stream 10,#0f0726,6072,1968
Chimera Linux,11338,7594 Chimera Linux,#545112,11344,7591
Chocolatey,4042,1552 Chocolatey,#848169,4042,1506
Chromebrew,2458,1118 Chromebrew,#5f5949,2458,1099
ConanCenter,5821,736 ConanCenter,#55432b,5827,736
CPAN,9696,9519 CPAN,#2b9c3f,9699,9517
MetaCPAN,11349,9211 MetaCPAN,#58ed89,11503,9199
CRAN,22832,22445 CRAN,#0d2702,22682,22445
crates.io,4978,4670 crates.io,#50a416,4979,4671
CRUX 3.6,2070,451 CRUX 3.6,#7a9f20,2070,452
CRUX 3.7,2374,1220 CRUX 3.7,#edbab6,2374,1215
CRUX 3.8,2402,2143 CRUX 3.8,#1b1f08,2402,2155
Cygwin,11520,3674 Cygwin,#164dbb,11523,3683
Deb Multimedia Unstable,438,316 Deb Multimedia Unstable,#396954,438,316
Debian 11,32129,7992 Debian 11,#d80150,32129,7998
Debian 12,35113,10168 Debian 12,#d80150,35113,10178
Debian 12 Backports,1018,173 Debian 12 Backports,#d80150,1018,172
Debian 12 Backports sloppy,4,2 Debian 12 Backports sloppy,#d80150,4,2
Debian 13,38138,16317 Debian 13,#d80150,38138,16327
Debian 13 Backports,129,65 Debian 13 Backports,#d80150,129,65
Debian 14,38390,18950 Debian 14,#d80150,38433,19085
Debian Unstable,40247,19811 Debian Unstable,#d80150,40247,19858
Debian Experimental,1180,354 Debian Experimental,#d80150,1178,351
deepin 20,29950,6345 deepin 20,#b49487,29950,6353
deepin 23,11181,2840 deepin 23,#5aa976,11181,2841
Devuan 4.0,31290,7955 Devuan 4.0,#c74001,31290,7961
Devuan Unstable,39510,19710 Devuan Unstable,#c5a2df,39500,19758
distri,541,31 distri,#5dd3d8,541,31
ELRepo el8,190,5 ELRepo el8,#2a1eab,190,5
ELRepo el8 Testing,11,0 ELRepo el8 Testing,#c3c746,11,1
ELRepo el9,174,6 ELRepo el9,#731a49,174,6
ELRepo el9 Testing,15,0 ELRepo el9 Testing,#f45275,16,1
Endless OS 4.0,116,3 Endless OS 4.0,#572032,116,3
Endless OS master,100,6 Endless OS master,#ee1231,100,6
EPEL 6,5978,1002 EPEL 6,#104bec,5978,1002
EPEL 7,7303,1593 EPEL 7,#5c4e96,7303,1593
EPEL 8,5210,1659 EPEL 8,#f562dd,5210,1659
EPEL 9,7974,3440 EPEL 9,#57ef37,7971,3443
EPEL 10,6262,3679 EPEL 10,#ce5625,6269,3904
EuroLinux 8,8070,678 EuroLinux 8,#357d95,8070,678
EuroLinux 9,7422,888 EuroLinux 9,#23092a,7422,888
Exherbo,8605,3637 Exherbo,#f4067d,8604,3650
F-Droid,10973,379 F-Droid,#417588,10986,386
Fedora 37,29763,8271 Fedora 37,#294072,29763,8272
Fedora 38,30232,8926 Fedora 38,#294072,30232,8931
Fedora 39,29890,9699 Fedora 39,#294072,29890,9702
Fedora 40,31164,11094 Fedora 40,#294072,31164,11094
Fedora 41,30595,12992 Fedora 41,#294072,30595,12989
Fedora 42,29193,14406 Fedora 42,#294072,29200,14399
Fedora Rawhide,23805,15722 Fedora Rawhide,#294072,23783,15634
FreeBSD Ports,37153,22108 FreeBSD Ports,#f8bd97,37162,22096
Gentoo,29958,10960 Gentoo,#fd50aa,29980,10998
Gentoo overlay GURU,3023,971 Gentoo overlay GURU,#0833e8,3029,995
Gentoo overlay Pentoo,1160,323 Gentoo overlay Pentoo,#320606,1160,323
Gentoo Science overlay,745,166 Gentoo Science overlay,#3e6a59,745,165
glaucus,119,31 glaucus,#4a4605,119,31
GNU Elpa,478,465 GNU Elpa,#715082,478,466
GNU Guix,29927,9074 GNU Guix,#627484,29927,9060
GoboLinux,3775,840 GoboLinux,#cae358,3775,841
Hackage,18316,18219 Hackage,#f66bb8,18399,18302
HaikuPorts master,3893,1107 HaikuPorts master,#728050,3893,1099
Homebrew,11881,6386 Homebrew,#474193,11963,6422
Homebrew Casks,2242,1657 Homebrew Casks,#d6a8e7,2243,1654
Homebrew tap Brewsci/bio,318,94 Homebrew tap Brewsci/bio,#dae89f,318,93
HP-UX 11.31,2259,527 HP-UX 11.31,#966c7c,2260,529
IBM i,315,30 IBM i,#e55874,315,30
IzzyOnDroid,2554,366 IzzyOnDroid,#fe4491,2549,363
Kali Linux Bleeding Edge,84,2 Kali Linux Bleeding Edge,#5a1f1d,84,2
Kali Linux Rolling,38755,18712 Kali Linux Rolling,#95e659,38801,18919
KaOS,2116,1763 KaOS,#865f75,2116,1745
KaOS Build,44,38 KaOS Build,#99f29d,54,47
KDE neon Testing,929,18 KDE neon Testing,#ea8b8b,929,18
KDE neon Unstable,980,19 KDE neon Unstable,#13feb2,980,19
KDE neon User,1992,36 KDE neon User,#e2aa26,1992,36
KDE neon User LTS,541,23 KDE neon User LTS,#79cd19,541,23
KISS Community - main,152,128 KISS Community - main,#f7148c,152,127
KISS Community - community,394,147 KISS Community - community,#a15c95,394,148
Libregamewiki,651,249 Libregamewiki,#269f00,651,249
LiGurOS stable,32494,10419 LiGurOS stable,#5e6670,32494,10429
LiGurOS develop,32521,11861 LiGurOS develop,#99c0d7,32525,11835
LuaRocks,7457,573 LuaRocks,#59937e,7459,573
MacPorts,38061,16613 MacPorts,#a04660,38065,16569
Mageia 8,17033,3349 Mageia 8,#12e19a,17033,3349
Mageia 9,17504,4265 Mageia 9,#c995b0,17504,4266
Mageia cauldron,16944,8196 Mageia cauldron,#d58be0,16944,8184
Manjaro Stable,15827,10594 Manjaro Stable,#f48f55,15827,10523
Manjaro Testing,15847,11496 Manjaro Testing,#1f1346,15865,11783
Manjaro Unstable,15865,11887 Manjaro Unstable,#586bd7,15863,11851
MELPA,5962,0 MELPA,#26bee7,5962,0
MELPA Stable,3234,3179 MELPA Stable,#ca0898,3234,3178
MidnightBSD mports,7141,2761 MidnightBSD mports,#04ed66,7141,2759
MPR,926,166 MPR,#45feab,926,165
MSYS2 clang64,3450,2434 MSYS2 clang64,#acd000,3450,2427
MSYS2 clangarm64,3363,2407 MSYS2 clangarm64,#fa82fd,3363,2400
MSYS2 mingw,3989,2837 MSYS2 mingw,#6d8331,3989,2827
MSYS2 msys2,748,518 MSYS2 msys2,#4e00e0,748,524
MSYS2 ucrt64,3534,2490 MSYS2 ucrt64,#3f7a69,3534,2483
MX Linux MX-21,708,67 MX Linux MX-21,#728b48,708,67
MX Linux MX-21 Testing,546,66 MX Linux MX-21 Testing,#652a7e,546,66
MX Linux MX-23,449,68 MX Linux MX-23,#b70e44,449,68
MX Linux MX-23 Testing,363,71 MX Linux MX-23 Testing,#f7442f,363,71
nixpkgs stable 22.11,95572,32675 nixpkgs stable 22.11,#4f73bd,95572,32670
nixpkgs stable 23.05,99994,35717 nixpkgs stable 23.05,#4f73bd,99994,35711
nixpkgs stable 23.11,107004,40861 nixpkgs stable 23.11,#4f73bd,107004,40851
nixpkgs stable 24.05,114973,48855 nixpkgs stable 24.05,#4f73bd,114973,48842
nixpkgs stable 24.11,120736,53957 nixpkgs stable 24.11,#4f73bd,120736,53933
nixpkgs stable 25.05,128147,64601 nixpkgs stable 25.05,#4f73bd,128154,64513
nixpkgs unstable,130313,83168 nixpkgs unstable,#4f73bd,129995,83052
NOIR Linux Main,243,59 NOIR Linux Main,#4c7c34,243,60
Npackd Stable,13040,186 Npackd Stable,#3a1e98,13043,182
Npackd Stable64,7742,82 Npackd Stable64,#120f93,7748,80
Npackd Unstable,96,0 Npackd Unstable,#2b8b36,96,0
opam,1191,962 opam,#2297f9,1191,962
OpenBSD Ports,12177,6940 OpenBSD Ports,#891876,12177,6914
openEuler 20.03-LTS-SP3,3382,725 openEuler 20.03-LTS-SP3,#18bd9c,3382,725
openEuler 20.03-LTS-SP4,3418,735 openEuler 20.03-LTS-SP4,#919d1b,3418,735
openEuler 22.03-LTS,4234,1066 openEuler 22.03-LTS,#c4ad42,4234,1066
openEuler 22.03-LTS-SP1,4266,1181 openEuler 22.03-LTS-SP1,#a405a5,4266,1181
openEuler 22.03-LTS-SP2,4275,1188 openEuler 22.03-LTS-SP2,#ca0e55,4275,1188
openEuler 22.03-LTS-SP3,4307,1219 openEuler 22.03-LTS-SP3,#ab42b1,4307,1219
openEuler 22.03-LTS-SP4,4320,1221 openEuler 22.03-LTS-SP4,#580c72,4320,1221
openEuler 23.03,4294,1242 openEuler 23.03,#326384,4294,1243
openEuler 23.09,4617,1434 openEuler 23.09,#7d1c84,4617,1435
openEuler 24.03-LTS,4876,1750 openEuler 24.03-LTS,#9c9543,4876,1751
openEuler 24.03-LTS-SP1,4905,1753 openEuler 24.03-LTS-SP1,#cd2051,4905,1754
openEuler 24.09,4880,1912 openEuler 24.09,#23dc5d,4880,1912
openEuler 25.03,4990,2238 openEuler 25.03,#5937f1,4990,2238
OpenIndiana packages,6052,4060 OpenIndiana packages,#a74006,6071,4032
openmamba,5951,4625 openmamba,#fd5169,5956,4629
OpenMandriva 4.3,12605,3228 OpenMandriva 4.3,#075f75,12605,3228
OpenMandriva 5.0,15311,3332 OpenMandriva 5.0,#f156ba,15311,3333
OpenMandriva 6.0,16177,4649 OpenMandriva 6.0,#1d0a44,16177,4647
OpenMandriva Rolling,16176,4647 OpenMandriva Rolling,#02f5d9,16176,4645
OpenMandriva Cooker,16059,5829 OpenMandriva Cooker,#570f0f,16064,5828
OpenPKG,2386,695 OpenPKG,#b97229,2386,691
openSUSE Leap 15.4,19608,3511 openSUSE Leap 15.4,#97b4d1,19608,3510
openSUSE Leap 15.5,20732,4214 openSUSE Leap 15.5,#0d90e3,20732,4212
openSUSE Leap 15.6,20362,4658 openSUSE Leap 15.6,#5b1cb0,20411,4658
openSUSE Tumbleweed,16640,9861 openSUSE Tumbleweed,#5bf012,16644,9811
openSUSE Education Tumbleweed,380,130 openSUSE Education Tumbleweed,#dd60fa,371,129
openSUSE Emulators Tumbleweed,143,55 openSUSE Emulators Tumbleweed,#078d37,143,57
openSUSE games Tumbleweed,934,509 openSUSE games Tumbleweed,#20def3,928,510
openSUSE graphics Tumbleweed,317,170 openSUSE graphics Tumbleweed,#9a1ea7,324,184
openSUSE hardware:sdr Tumbleweed,181,71 openSUSE hardware:sdr Tumbleweed,#85dbee,181,72
openSUSE multimedia:apps Tumbleweed,386,219 openSUSE multimedia:apps Tumbleweed,#7b3b31,389,223
openSUSE multimedia:libs Tumbleweed,348,235 openSUSE multimedia:libs Tumbleweed,#7fe250,353,244
openSUSE network Tumbleweed,266,141 openSUSE network Tumbleweed,#6503eb,266,143
openSUSE science Tumbleweed,1150,485 openSUSE science Tumbleweed,#da6270,1168,499
openSUSE security Tumbleweed,295,157 openSUSE security Tumbleweed,#938865,295,157
openSUSE server:irc Tumbleweed,43,27 openSUSE server:irc Tumbleweed,#33ffac,43,27
openSUSE shells Tumbleweed,45,15 openSUSE shells Tumbleweed,#8b4d82,45,16
Open VSX,352,295 Open VSX,#b9e6d6,354,296
OpenWrt 23.05 x86_64,8976,908 OpenWrt 23.05 x86_64,#4120a0,8976,909
OpenWrt 24.10 x86_64,9433,1180 OpenWrt 24.10 x86_64,#96e1e9,9127,1180
OS4Depot,946,280 OS4Depot,#504257,946,280
PackMan openSUSE Tumbleweed,641,266 PackMan openSUSE Tumbleweed,#6ee548,639,264
PackMan SLE 12,259,66 PackMan SLE 12,#7bc2cd,259,66
PackMan SLE 15,80,29 PackMan SLE 15,#e20898,85,33
pacstall,864,204 pacstall,#2805fa,865,201
Parabola,15519,11074 Parabola,#bfea9d,15524,11085
Parabola Testing,29,4 Parabola Testing,#2a6c01,29,2
Pardus 21,32630,8009 Pardus 21,#f4772f,32630,8015
Pardus 23,365,15 Pardus 23,#d31d86,365,15
Parrot,70726,20592 Parrot,#2ee02f,70726,20612
PCLinuxOS,12198,3098 PCLinuxOS,#3ae8ee,12198,3095
Pisi Linux,3400,1566 Pisi Linux,#0e3ce2,3400,1568
Pisi Linux Contrib,138,27 Pisi Linux Contrib,#7c744e,138,26
pkgsrc current,20099,11165 pkgsrc current,#00175f,20109,11226
PLD Linux,14171,5713 PLD Linux,#6c408b,14171,5707
postmarketOS 22.12,436,10 postmarketOS 22.12,#18a24f,436,10
postmarketOS 23.06,434,12 postmarketOS 23.06,#d554fb,434,12
postmarketOS 23.12,487,8 postmarketOS 23.12,#6ac29d,487,8
postmarketOS 24.06,1189,17 postmarketOS 24.06,#d25d55,1189,17
postmarketOS 24.12,1247,22 postmarketOS 24.12,#723926,1247,22
postmarketOS master,1583,56 postmarketOS master,#f494c6,1583,56
PTXdist,956,285 PTXdist,#5fc7b3,956,283
PureOS amber,28585,6322 PureOS amber,#cb7004,28585,6330
PureOS byzantium,30901,7897 PureOS byzantium,#f97445,30901,7903
PureOS landing,37686,16203 PureOS landing,#8c4f15,37686,16214
PyPI,27537,19657 PyPI,#b0b02d,27564,19661
Raspbian Oldstable,35274,8814 Raspbian Oldstable,#770eb3,35274,8820
Raspbian Stable,39331,11189 Raspbian Stable,#6464d2,39331,11200
Raspbian Testing,43680,17717 Raspbian Testing,#e63299,43680,17727
Ravenports,3728,3051 Ravenports,#f8a053,3733,3370
ReactOS rapps,198,58 ReactOS rapps,#58b95d,198,58
RebornOS,422,69 RebornOS,#59ff67,422,69
Rocky Linux 8,4991,659 Rocky Linux 8,#f6ebc7,4991,659
Rocky Linux 9,3394,727 Rocky Linux 9,#7dcd4b,3394,727
Rosa 2021.1,20016,5406 Rosa 2021.1,#97c3d3,20016,5407
Rosa 13,21087,7584 Rosa 13,#b4c1ad,21087,7577
RPM Fusion EL 6,74,15 RPM Fusion EL 6,#2de995,74,15
RPM Fusion EL 7,142,24 RPM Fusion EL 7,#a6739d,142,24
RPM Fusion EL 8,119,23 RPM Fusion EL 8,#c58faa,119,23
RPM Fusion EL 9,68,11 RPM Fusion EL 9,#8a57ff,68,11
RPM Fusion Fedora 39,451,110 RPM Fusion Fedora 39,#f92297,451,110
RPM Fusion Fedora 40,437,121 RPM Fusion Fedora 40,#16f121,437,121
RPM Fusion Fedora 41,439,165 RPM Fusion Fedora 41,#d0e95c,439,165
RPM Fusion Fedora Rawhide,307,170 RPM Fusion Fedora Rawhide,#ec9021,307,170
RPM Sphere,2874,1079 RPM Sphere,#f6f97e,2874,1079
RubyGems,4443,4191 RubyGems,#15938d,4443,4191
SageMath stable,372,116 SageMath stable,#3ac6c0,372,116
SageMath development,370,129 SageMath development,#156a83,370,131
Salix 14.2,735,52 Salix 14.2,#f0f291,735,52
Scientific Linux 7.x,12293,1110 Scientific Linux 7.x,#151d89,12293,1110
Software Collections,416,41 Software Collections,#cad081,416,41
Scoop,4469,2540 Scoop,#a1e30a,4471,2535
Side Linux,951,680 Side Linux,#49532c,951,677
Siduction,580,4 Siduction,#4777fa,580,4
Siduction Experimental,30,0 Siduction Experimental,#aa1eb5,30,0
SlackBuilds,9959,4446 SlackBuilds,#fce93a,9959,4429
Slackware 14.2,1599,308 Slackware 14.2,#6c14f7,1599,308
Slackware 15.0,1923,350 Slackware 15.0,#a22b02,1923,351
Slackware current,1816,1077 Slackware current,#980320,1816,1076
Slackware64 14.2,1586,306 Slackware64 14.2,#d6d7fe,1586,306
Slackware64 15.0,1887,347 Slackware64 15.0,#2e9a90,1887,348
Slackware64 current,1815,1074 Slackware64 current,#ddb20d,1815,1073
Slackwarearm 14.2,1578,295 Slackwarearm 14.2,#00da1f,1578,295
Slackwarearm 15.0,1814,341 Slackwarearm 15.0,#b7db19,1815,343
SliTaz Cooking,5922,1649 SliTaz Cooking,#97e44a,5922,1650
SliTaz Current,1863,243 SliTaz Current,#37210f,1863,243
SliTaz Next,12181,1977 SliTaz Next,#5b3349,12181,1979
Solus,11646,5954 Solus,#a9b7c9,11649,5949
Spack,9685,2920 Spack,#192307,9686,2913
Stackage LTS Haskell,3411,3248 Stackage LTS Haskell,#627186,3413,3245
Stackage Nightly,3262,3212 Stackage Nightly,#eed336,3283,3232
stal/IX,1380,1188 stal/IX,#a406c8,1380,1184
stal/IX dev,1381,1194 stal/IX dev,#215855,1381,1190
T2 SDE,6175,5160 T2 SDE,#2ddf69,6176,5157
Tails stable,3,1 Tails stable,#87aae6,3,1
Tails devel,3,1 Tails devel,#ea6ad5,3,1
Termux,2674,2097 Termux,#e00735,2675,2098
Termux User Repository,297,127 Termux User Repository,#92c6da,298,129
Terra 39,2351,413 Terra 39,#fbb1b6,2351,413
Terra 40,2865,894 Terra 40,#84ac9a,2865,888
Terra 41,3221,1484 Terra 41,#3fc0ce,3232,1526
Terra rawhide,3395,1645 Terra rawhide,#7e6353,3428,1717
Tin Can Linux,81,42 Tin Can Linux,#373572,81,41
Trisquel 10.0,32930,7062 Trisquel 10.0,#bcd150,32930,7067
Trisquel 10.0 backports,82,10 Trisquel 10.0 backports,#cf06fb,82,10
Trisquel 11.0,36144,8844 Trisquel 11.0,#14ab52,36148,8850
Trisquel 11.0 backports,64,7 Trisquel 11.0 backports,#9aeca9,64,7
UBI 8,1623,157 UBI 8,#86a4f1,1623,157
Ubuntu 14.04,24127,3793 Ubuntu 14.04,#e95420,24127,3792
Ubuntu 14.04 Backports,109,2 Ubuntu 14.04 Backports,#e95420,109,2
Ubuntu 16.04,27276,4738 Ubuntu 16.04,#e95420,27276,4739
Ubuntu 16.04 Backports,25,0 Ubuntu 16.04 Backports,#e95420,25,0
Ubuntu 18.04,30870,5904 Ubuntu 18.04,#e95420,30870,5911
Ubuntu 18.04 Backports,18,0 Ubuntu 18.04 Backports,#e95420,18,0
Ubuntu 20.04,32759,7096 Ubuntu 20.04,#e95420,32759,7101
Ubuntu 20.04 Backports,21,1 Ubuntu 20.04 Backports,#e95420,21,1
Ubuntu 22.04,36182,8883 Ubuntu 22.04,#e95420,36192,8890
Ubuntu 22.04 Backports,21,1 Ubuntu 22.04 Backports,#e95420,21,1
Ubuntu 24.04,38934,11974 Ubuntu 24.04,#e95420,38934,11984
Ubuntu 24.04 Backports,18,1 Ubuntu 24.04 Backports,#e95420,18,1
Ubuntu 25.04,39935,15714 Ubuntu 25.04,#e95420,39939,15724
Ubuntu 25.04 Backports,3,0 Ubuntu 25.04 Backports,#e95420,3,0
Ubuntu 25.10,39745,17706 Ubuntu 25.10,#e95420,39743,17734
Ubuntu 25.10 Proposed,273,90 Ubuntu 25.10 Proposed,#e95420,243,70
Vcpkg,2696,1217 Vcpkg,#b3633a,2698,1218
Void Linux x86_64,14331,7324 Void Linux x86_64,#cce6b9,14332,7324
WakeMeOps,3981,153 WakeMeOps,#a47399,3986,151
Wikidata,5553,3039 Wikidata,#d0de02,5553,3022
YACP,3724,2215 YACP,#668578,3724,2216
1 Name name color Fresh Packages Packages packages freshPackages
2 Adélie Linux current Adélie Linux current #27f676 2091 8243 2091
3 AIX Open Source Packages #e1d77b 260 8065 260
4 AIX Toolbox #6b0b92 116 644 116
5 AlmaLinux 8 #e7b63a 750 5986 750
6 AlmaLinux 9 #3a17d8 655 3034 655
7 Alpine Linux 3.15 #0d597f 2873 15848 2873
8 Alpine Linux 3.16 #0d597f 3179 17032 3179
9 Alpine Linux 3.17 #0d597f 3675 17811 3695
10 Alpine Linux 3.18 #0d597f 4597 20062 4617
11 Alpine Linux 3.19 #0d597f 5654 23027 5677
12 Alpine Linux 3.20 #0d597f 6561 24163 6582
13 Alpine Linux 3.21 #0d597f 8133 25389 8154
14 Alpine Linux 3.22 #0d597f 11533 26312 11521
15 Alpine Linux Edge #0d597f 22634 34749 22568
16 ALT Linux p9 #7bdee9 4531 18262 4531
17 ALT Linux p10 #e35430 5321 19057 5322
18 ALT Linux p11 #cf81dd 7204 19794 19795 7204
19 ALT Sisyphus #115799 10196 20700 10202
20 Amazon Linux 1 #2f2558 298 3448 298
21 Amazon Linux 2 #234b7a 717 7253 7255 717
22 AOSC #0af098 2188 5749 2184
23 Apertis v2023 #4205cd 1131 5612 1131
24 Apertis v2024 #b1b089 1296 5976 5977 1297
25 Apertis v2025 #d9ba1d 1297 5981 1298
26 Apertis v2026 Development #9bc337 2581 6825 2581
27 Arch Linux #02ba84 11591 15099 11588
28 Arch Testing #bf6e11 222 307 263 194
29 Arch Linux ARM aarch64 #3ca5dc 11004 21174 10946
30 ArchPOWER powerpc #7beb18 2531 5417 2529
31 ArchPOWER powerpc64le #dd275f 2559 5650 2558
32 ArchPOWER riscv64 #16ece5 2169 5330 2169
33 AUR #1793d1 28117 100544 100533 28097
34 Artix #f0c1fa 5688 8904 5643
35 Artix Testing #7fa3b3 129 163 116
36 BackBox 6 #9997c4 3 19 2
37 BackBox 7 #02b384 8 26 7
38 Baulk #16e637 50 71 48
39 BioArch #7b8a5b 4631 5251 4629
40 BlackArch #0a499c 1420 5578 1418
41 Calculate #45ee36 9 88 9
42 Carbs Linux #7557f4 99 347 100
43 CentOS 6 #b53b07 316 2399 316
44 CentOS 7 #227ce7 493 3541 493
45 CentOS 8 #f44498 535 3380 535
46 CentOS Stream 8 #33d093 794 9841 794
47 CentOS Stream 9 #0ee97e 929 6029 929
48 CentOS Stream 10 #0f0726 1967 6072 1968
49 Chimera Linux #545112 7594 11338 11344 7591
50 Chocolatey #848169 1552 4042 1506
51 Chromebrew #5f5949 1118 2458 1099
52 ConanCenter #55432b 736 5821 5827 736
53 CPAN #2b9c3f 9519 9696 9699 9517
54 MetaCPAN #58ed89 9211 11349 11503 9199
55 CRAN #0d2702 22445 22832 22682 22445
56 crates.io #50a416 4670 4978 4979 4671
57 CRUX 3.6 #7a9f20 451 2070 452
58 CRUX 3.7 #edbab6 1220 2374 1215
59 CRUX 3.8 #1b1f08 2143 2402 2155
60 Cygwin #164dbb 3674 11520 11523 3683
61 Deb Multimedia Unstable #396954 316 438 316
62 Debian 11 #d80150 7992 32129 7998
63 Debian 12 #d80150 10168 35113 10178
64 Debian 12 Backports #d80150 173 1018 172
65 Debian 12 Backports sloppy #d80150 2 4 2
66 Debian 13 #d80150 16317 38138 16327
67 Debian 13 Backports #d80150 65 129 65
68 Debian 14 #d80150 18950 38390 38433 19085
69 Debian Unstable #d80150 19811 40247 19858
70 Debian Experimental #d80150 354 1180 1178 351
71 deepin 20 #b49487 6345 29950 6353
72 deepin 23 #5aa976 2840 11181 2841
73 Devuan 4.0 #c74001 7955 31290 7961
74 Devuan Unstable #c5a2df 19710 39510 39500 19758
75 distri #5dd3d8 31 541 31
76 ELRepo el8 #2a1eab 5 190 5
77 ELRepo el8 Testing #c3c746 0 11 1
78 ELRepo el9 #731a49 6 174 6
79 ELRepo el9 Testing #f45275 0 15 16 1
80 Endless OS 4.0 #572032 3 116 3
81 Endless OS master #ee1231 6 100 6
82 EPEL 6 #104bec 1002 5978 1002
83 EPEL 7 #5c4e96 1593 7303 1593
84 EPEL 8 #f562dd 1659 5210 1659
85 EPEL 9 #57ef37 3440 7974 7971 3443
86 EPEL 10 #ce5625 3679 6262 6269 3904
87 EuroLinux 8 #357d95 678 8070 678
88 EuroLinux 9 #23092a 888 7422 888
89 Exherbo #f4067d 3637 8605 8604 3650
90 F-Droid #417588 379 10973 10986 386
91 Fedora 37 #294072 8271 29763 8272
92 Fedora 38 #294072 8926 30232 8931
93 Fedora 39 #294072 9699 29890 9702
94 Fedora 40 #294072 11094 31164 11094
95 Fedora 41 #294072 12992 30595 12989
96 Fedora 42 #294072 14406 29193 29200 14399
97 Fedora Rawhide #294072 15722 23805 23783 15634
98 FreeBSD Ports #f8bd97 22108 37153 37162 22096
99 Gentoo #fd50aa 10960 29958 29980 10998
100 Gentoo overlay GURU #0833e8 971 3023 3029 995
101 Gentoo overlay Pentoo #320606 323 1160 323
102 Gentoo Science overlay #3e6a59 166 745 165
103 glaucus #4a4605 31 119 31
104 GNU Elpa #715082 465 478 466
105 GNU Guix #627484 9074 29927 9060
106 GoboLinux #cae358 840 3775 841
107 Hackage #f66bb8 18219 18316 18399 18302
108 HaikuPorts master #728050 1107 3893 1099
109 Homebrew #474193 6386 11881 11963 6422
110 Homebrew Casks #d6a8e7 1657 2242 2243 1654
111 Homebrew tap Brewsci/bio #dae89f 94 318 93
112 HP-UX 11.31 #966c7c 527 2259 2260 529
113 IBM i #e55874 30 315 30
114 IzzyOnDroid #fe4491 366 2554 2549 363
115 Kali Linux Bleeding Edge #5a1f1d 2 84 2
116 Kali Linux Rolling #95e659 18712 38755 38801 18919
117 KaOS #865f75 1763 2116 1745
118 KaOS Build #99f29d 38 44 54 47
119 KDE neon Testing #ea8b8b 18 929 18
120 KDE neon Unstable #13feb2 19 980 19
121 KDE neon User #e2aa26 36 1992 36
122 KDE neon User LTS #79cd19 23 541 23
123 KISS Community - main #f7148c 128 152 127
124 KISS Community - community #a15c95 147 394 148
125 Libregamewiki #269f00 249 651 249
126 LiGurOS stable #5e6670 10419 32494 10429
127 LiGurOS develop #99c0d7 11861 32521 32525 11835
128 LuaRocks #59937e 573 7457 7459 573
129 MacPorts #a04660 16613 38061 38065 16569
130 Mageia 8 #12e19a 3349 17033 3349
131 Mageia 9 #c995b0 4265 17504 4266
132 Mageia cauldron #d58be0 8196 16944 8184
133 Manjaro Stable #f48f55 10594 15827 10523
134 Manjaro Testing #1f1346 11496 15847 15865 11783
135 Manjaro Unstable #586bd7 11887 15865 15863 11851
136 MELPA #26bee7 0 5962 0
137 MELPA Stable #ca0898 3179 3234 3178
138 MidnightBSD mports #04ed66 2761 7141 2759
139 MPR #45feab 166 926 165
140 MSYS2 clang64 #acd000 2434 3450 2427
141 MSYS2 clangarm64 #fa82fd 2407 3363 2400
142 MSYS2 mingw #6d8331 2837 3989 2827
143 MSYS2 msys2 #4e00e0 518 748 524
144 MSYS2 ucrt64 #3f7a69 2490 3534 2483
145 MX Linux MX-21 #728b48 67 708 67
146 MX Linux MX-21 Testing #652a7e 66 546 66
147 MX Linux MX-23 #b70e44 68 449 68
148 MX Linux MX-23 Testing #f7442f 71 363 71
149 nixpkgs stable 22.11 #4f73bd 32675 95572 32670
150 nixpkgs stable 23.05 #4f73bd 35717 99994 35711
151 nixpkgs stable 23.11 #4f73bd 40861 107004 40851
152 nixpkgs stable 24.05 #4f73bd 48855 114973 48842
153 nixpkgs stable 24.11 #4f73bd 53957 120736 53933
154 nixpkgs stable 25.05 #4f73bd 64601 128147 128154 64513
155 nixpkgs unstable #4f73bd 83168 130313 129995 83052
156 NOIR Linux Main #4c7c34 59 243 60
157 Npackd Stable #3a1e98 186 13040 13043 182
158 Npackd Stable64 #120f93 82 7742 7748 80
159 Npackd Unstable #2b8b36 0 96 0
160 opam #2297f9 962 1191 962
161 OpenBSD Ports #891876 6940 12177 6914
162 openEuler 20.03-LTS-SP3 #18bd9c 725 3382 725
163 openEuler 20.03-LTS-SP4 #919d1b 735 3418 735
164 openEuler 22.03-LTS #c4ad42 1066 4234 1066
165 openEuler 22.03-LTS-SP1 #a405a5 1181 4266 1181
166 openEuler 22.03-LTS-SP2 #ca0e55 1188 4275 1188
167 openEuler 22.03-LTS-SP3 #ab42b1 1219 4307 1219
168 openEuler 22.03-LTS-SP4 #580c72 1221 4320 1221
169 openEuler 23.03 #326384 1242 4294 1243
170 openEuler 23.09 #7d1c84 1434 4617 1435
171 openEuler 24.03-LTS #9c9543 1750 4876 1751
172 openEuler 24.03-LTS-SP1 #cd2051 1753 4905 1754
173 openEuler 24.09 #23dc5d 1912 4880 1912
174 openEuler 25.03 #5937f1 2238 4990 2238
175 OpenIndiana packages #a74006 4060 6052 6071 4032
176 openmamba #fd5169 4625 5951 5956 4629
177 OpenMandriva 4.3 #075f75 3228 12605 3228
178 OpenMandriva 5.0 #f156ba 3332 15311 3333
179 OpenMandriva 6.0 #1d0a44 4649 16177 4647
180 OpenMandriva Rolling #02f5d9 4647 16176 4645
181 OpenMandriva Cooker #570f0f 5829 16059 16064 5828
182 OpenPKG #b97229 695 2386 691
183 openSUSE Leap 15.4 #97b4d1 3511 19608 3510
184 openSUSE Leap 15.5 #0d90e3 4214 20732 4212
185 openSUSE Leap 15.6 #5b1cb0 4658 20362 20411 4658
186 openSUSE Tumbleweed #5bf012 9861 16640 16644 9811
187 openSUSE Education Tumbleweed #dd60fa 130 380 371 129
188 openSUSE Emulators Tumbleweed #078d37 55 143 57
189 openSUSE games Tumbleweed #20def3 509 934 928 510
190 openSUSE graphics Tumbleweed #9a1ea7 170 317 324 184
191 openSUSE hardware:sdr Tumbleweed #85dbee 71 181 72
192 openSUSE multimedia:apps Tumbleweed #7b3b31 219 386 389 223
193 openSUSE multimedia:libs Tumbleweed #7fe250 235 348 353 244
194 openSUSE network Tumbleweed #6503eb 141 266 143
195 openSUSE science Tumbleweed #da6270 485 1150 1168 499
196 openSUSE security Tumbleweed #938865 157 295 157
197 openSUSE server:irc Tumbleweed #33ffac 27 43 27
198 openSUSE shells Tumbleweed #8b4d82 15 45 16
199 Open VSX #b9e6d6 295 352 354 296
200 OpenWrt 23.05 x86_64 #4120a0 908 8976 909
201 OpenWrt 24.10 x86_64 #96e1e9 1180 9433 9127 1180
202 OS4Depot #504257 280 946 280
203 PackMan openSUSE Tumbleweed #6ee548 266 641 639 264
204 PackMan SLE 12 #7bc2cd 66 259 66
205 PackMan SLE 15 #e20898 29 80 85 33
206 pacstall #2805fa 204 864 865 201
207 Parabola #bfea9d 11074 15519 15524 11085
208 Parabola Testing #2a6c01 4 29 2
209 Pardus 21 #f4772f 8009 32630 8015
210 Pardus 23 #d31d86 15 365 15
211 Parrot #2ee02f 20592 70726 20612
212 PCLinuxOS #3ae8ee 3098 12198 3095
213 Pisi Linux #0e3ce2 1566 3400 1568
214 Pisi Linux Contrib #7c744e 27 138 26
215 pkgsrc current #00175f 11165 20099 20109 11226
216 PLD Linux #6c408b 5713 14171 5707
217 postmarketOS 22.12 #18a24f 10 436 10
218 postmarketOS 23.06 #d554fb 12 434 12
219 postmarketOS 23.12 #6ac29d 8 487 8
220 postmarketOS 24.06 #d25d55 17 1189 17
221 postmarketOS 24.12 #723926 22 1247 22
222 postmarketOS master #f494c6 56 1583 56
223 PTXdist #5fc7b3 285 956 283
224 PureOS amber #cb7004 6322 28585 6330
225 PureOS byzantium #f97445 7897 30901 7903
226 PureOS landing #8c4f15 16203 37686 16214
227 PyPI #b0b02d 19657 27537 27564 19661
228 Raspbian Oldstable #770eb3 8814 35274 8820
229 Raspbian Stable #6464d2 11189 39331 11200
230 Raspbian Testing #e63299 17717 43680 17727
231 Ravenports #f8a053 3051 3728 3733 3370
232 ReactOS rapps #58b95d 58 198 58
233 RebornOS #59ff67 69 422 69
234 Rocky Linux 8 #f6ebc7 659 4991 659
235 Rocky Linux 9 #7dcd4b 727 3394 727
236 Rosa 2021.1 #97c3d3 5406 20016 5407
237 Rosa 13 #b4c1ad 7584 21087 7577
238 RPM Fusion EL 6 #2de995 15 74 15
239 RPM Fusion EL 7 #a6739d 24 142 24
240 RPM Fusion EL 8 #c58faa 23 119 23
241 RPM Fusion EL 9 #8a57ff 11 68 11
242 RPM Fusion Fedora 39 #f92297 110 451 110
243 RPM Fusion Fedora 40 #16f121 121 437 121
244 RPM Fusion Fedora 41 #d0e95c 165 439 165
245 RPM Fusion Fedora Rawhide #ec9021 170 307 170
246 RPM Sphere #f6f97e 1079 2874 1079
247 RubyGems #15938d 4191 4443 4191
248 SageMath stable #3ac6c0 116 372 116
249 SageMath development #156a83 129 370 131
250 Salix 14.2 #f0f291 52 735 52
251 Scientific Linux 7.x #151d89 1110 12293 1110
252 Software Collections #cad081 41 416 41
253 Scoop #a1e30a 2540 4469 4471 2535
254 Side Linux #49532c 680 951 677
255 Siduction #4777fa 4 580 4
256 Siduction Experimental #aa1eb5 0 30 0
257 SlackBuilds #fce93a 4446 9959 4429
258 Slackware 14.2 #6c14f7 308 1599 308
259 Slackware 15.0 #a22b02 350 1923 351
260 Slackware current #980320 1077 1816 1076
261 Slackware64 14.2 #d6d7fe 306 1586 306
262 Slackware64 15.0 #2e9a90 347 1887 348
263 Slackware64 current #ddb20d 1074 1815 1073
264 Slackwarearm 14.2 #00da1f 295 1578 295
265 Slackwarearm 15.0 #b7db19 341 1814 1815 343
266 SliTaz Cooking #97e44a 1649 5922 1650
267 SliTaz Current #37210f 243 1863 243
268 SliTaz Next #5b3349 1977 12181 1979
269 Solus #a9b7c9 5954 11646 11649 5949
270 Spack #192307 2920 9685 9686 2913
271 Stackage LTS Haskell #627186 3248 3411 3413 3245
272 Stackage Nightly #eed336 3212 3262 3283 3232
273 stal/IX #a406c8 1188 1380 1184
274 stal/IX dev #215855 1194 1381 1190
275 T2 SDE #2ddf69 5160 6175 6176 5157
276 Tails stable #87aae6 1 3 1
277 Tails devel #ea6ad5 1 3 1
278 Termux #e00735 2097 2674 2675 2098
279 Termux User Repository #92c6da 127 297 298 129
280 Terra 39 #fbb1b6 413 2351 413
281 Terra 40 #84ac9a 894 2865 888
282 Terra 41 #3fc0ce 1484 3221 3232 1526
283 Terra rawhide #7e6353 1645 3395 3428 1717
284 Tin Can Linux #373572 42 81 41
285 Trisquel 10.0 #bcd150 7062 32930 7067
286 Trisquel 10.0 backports #cf06fb 10 82 10
287 Trisquel 11.0 #14ab52 8844 36144 36148 8850
288 Trisquel 11.0 backports #9aeca9 7 64 7
289 UBI 8 #86a4f1 157 1623 157
290 Ubuntu 14.04 #e95420 3793 24127 3792
291 Ubuntu 14.04 Backports #e95420 2 109 2
292 Ubuntu 16.04 #e95420 4738 27276 4739
293 Ubuntu 16.04 Backports #e95420 0 25 0
294 Ubuntu 18.04 #e95420 5904 30870 5911
295 Ubuntu 18.04 Backports #e95420 0 18 0
296 Ubuntu 20.04 #e95420 7096 32759 7101
297 Ubuntu 20.04 Backports #e95420 1 21 1
298 Ubuntu 22.04 #e95420 8883 36182 36192 8890
299 Ubuntu 22.04 Backports #e95420 1 21 1
300 Ubuntu 24.04 #e95420 11974 38934 11984
301 Ubuntu 24.04 Backports #e95420 1 18 1
302 Ubuntu 25.04 #e95420 15714 39935 39939 15724
303 Ubuntu 25.04 Backports #e95420 0 3 0
304 Ubuntu 25.10 #e95420 17706 39745 39743 17734
305 Ubuntu 25.10 Proposed #e95420 90 273 243 70
306 Vcpkg #b3633a 1217 2696 2698 1218
307 Void Linux x86_64 #cce6b9 7324 14331 14332 7324
308 WakeMeOps #a47399 153 3981 3986 151
309 Wikidata #d0de02 3039 5553 3022
310 YACP #668578 2215 3724 2216

View File

@@ -1,21 +1,46 @@
import csv import csv
import math
import random
import requests
from bs4 import BeautifulSoup, Tag from bs4 import BeautifulSoup, Tag
# Load your HTML (replace this with reading from a file or requests.get().text)
with open("packages_table.html", "r", encoding="utf-8") as f:
html = f.read()
soup = BeautifulSoup(html, "html.parser") def repo_color(name: str) -> str:
lower_name = name.lower()
if lower_name.startswith("ubuntu"):
return "#e95420"
if lower_name.startswith("nixpkgs"):
return "#4f73bd"
if lower_name.startswith("debian"):
return "#d80150"
if lower_name.startswith("alpine"):
return "#0d597f"
if lower_name.startswith("fedora"):
return "#294072"
if lower_name.startswith("aur"):
return "#1793d1"
rows: list[tuple[str, str, str]] = [] return f"#{math.floor(random.random() * 0xFFFFFF):06x}"
URL = "https://repology.org/repositories/packages"
HEADERS = {
"User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:142.0) Gecko/20100101 Firefox/142.0"
}
response = requests.get(URL, headers=HEADERS)
response.raise_for_status()
soup = BeautifulSoup(response.text, "html.parser")
rows: list[tuple[str, str, str, str]] = []
for tr in soup.select("tbody > tr"): for tr in soup.select("tbody > tr"):
# 1 First column: repo name # First column: repo name
name_tag = tr.select_one("th a") name_tag = tr.select_one("th a")
name = name_tag.get_text(strip=True) if name_tag else "" name = name_tag.get_text(strip=True) if name_tag else ""
# 2 Second and third columns: prefer span[title], fall back to span text # Second and third columns: prefer span[title], fall back to span text
td_tags = tr.select("td") td_tags = tr.select("td")
if len(td_tags) >= 2: if len(td_tags) >= 2:
@@ -37,12 +62,14 @@ for tr in soup.select("tbody > tr"):
else: else:
packages = fresh_packages = "" packages = fresh_packages = ""
rows.append((name, packages, fresh_packages)) color = repo_color(name)
rows.append((name, color, packages, fresh_packages))
# Write to CSV # Write to CSV
with open("packages.csv", "w", newline="", encoding="utf-8") as f: with open("packages.csv", "w", newline="", encoding="utf-8") as f:
writer = csv.writer(f) writer = csv.writer(f)
writer.writerow(["Name", "Packages", "Fresh Packages"]) writer.writerow(["name", "color", "packages", "freshPackages"])
writer.writerows(rows) writer.writerows(rows)
print("✅ Extracted", len(rows), "rows into packages.csv") print("✅ Extracted", len(rows), "rows into packages.csv")

View File

@@ -1,39 +1,33 @@
<script lang="ts"> <script lang="ts">
import 'reveal.js/dist/reveal.css' import 'reveal.js/dist/reveal.css'
import 'reveal.js/dist/theme/black.css' import 'reveal.js/dist/theme/black.css'
import 'reveal.js/plugin/highlight/monokai.css' import 'reveal.js/plugin/highlight/monokai.css'
import Reveal from 'reveal.js' import Reveal from 'reveal.js'
import Markdown from 'reveal.js/plugin/markdown/markdown.esm.js' import Markdown from 'reveal.js/plugin/markdown/markdown.esm.js'
import RevealHighlight from 'reveal.js/plugin/highlight/highlight.esm.js' import RevealHighlight from 'reveal.js/plugin/highlight/highlight.esm.js'
import { onMount, tick } from 'svelte'; import { onMount, tick } from 'svelte'
onMount(async () => { import Title from './slides/Title.svelte'
await tick() import PackageGraph from './slides/PackageGraph.svelte'
const deck = new Reveal({
plugins: [Markdown, RevealHighlight], onMount(async () => {
await tick()
const deck = new Reveal({
plugins: [Markdown, RevealHighlight],
})
deck.initialize()
}) })
deck.initialize()
})
</script> </script>
<svelte:head> <svelte:head>
<title>Nix Presentation</title> <title>Nix Presentation</title>
</svelte:head> </svelte:head>
<div class="reveal"> <div class="reveal">
<div class="slides"> <div class="slides">
<section data-markdown> <Title />
<textarea data-template> <PackageGraph />
## Slide 1 </div>
A paragraph with some text and a [link](https://hakim.se). </div>
---
## Slide 2
---
## Slide 3
</textarea>
</section>
</div>
</div>

View File

@@ -0,0 +1,141 @@
<script lang="ts">
import * as d3 from 'd3'
import { onMount } from 'svelte'
import PackagePoint from '../lib/PackagePoint.svelte'
type PackageStat = {
name: string
color: string
packages: number
freshPackages: number
}
let queuedRepositories: PackageStat[] = []
let repositories: PackageStat[] = []
export let width: number = 800
export let height: number = 500
export let marginTop: number = 30
export let marginRight: number = 80
export let marginBottom: number = 50
export let marginLeft: number = 70
let gx: SVGGElement, gy: SVGGElement
$: innerWidth = width - marginLeft - marginRight
$: innerHeight = height - marginTop - marginBottom
$: x = d3
.scaleLinear([0, Math.max(...repositories.map((d) => d.packages))], [0, innerWidth])
.nice()
$: y = d3
.scaleLinear([0, Math.max(...repositories.map((d) => d.freshPackages))], [innerHeight, 0])
.nice()
// render axes with transitions
$: if (gx && repositories.length > 0) {
const t = d3.transition().duration(750).ease(d3.easeCubicInOut)
d3.select(gx).transition(t).call(d3.axisBottom(x))
}
$: if (gy && repositories.length > 0) {
const t = d3.transition().duration(750).ease(d3.easeCubicInOut)
d3.select(gy).transition(t).call(d3.axisLeft(y))
}
onMount(async () => {
const nixpkgsOrAUR = (pkg: PackageStat) =>
pkg.name.startsWith('nixpkgs') || pkg.name === 'AUR'
const res = await d3.csv<PackageStat, string>('packages.csv', d3.autoType)
repositories = res.filter((pkg) => !nixpkgsOrAUR(pkg))
queuedRepositories = res.filter(nixpkgsOrAUR).sort((a, b) => {
if (a.name === 'AUR' && b.name !== 'AUR') return -1
if (b.name === 'AUR' && a.name !== 'AUR') return 1
return b.packages - a.packages
})
})
let highlightedRepos: Set<string> = new Set()
let grayRepos: boolean = false
function* animations(): Generator<() => void> {
yield () => {
grayRepos = true
highlightedRepos.add('ubuntu')
highlightedRepos = highlightedRepos
}
yield () => {
highlightedRepos.add('debian')
highlightedRepos = highlightedRepos
}
yield () => {
highlightedRepos.add('fedora')
highlightedRepos = highlightedRepos
}
yield () => {
highlightedRepos.add('alpine')
highlightedRepos = highlightedRepos
}
grayRepos = false
highlightedRepos.clear()
highlightedRepos = highlightedRepos
while (queuedRepositories.length > 0) {
const nextPkg = queuedRepositories.shift()!
yield () => {
highlightedRepos.add(nextPkg.name.toLowerCase().split(' ')[0])
highlightedRepos = highlightedRepos
repositories = [...repositories, nextPkg]
}
}
}
const animate = animations()
</script>
<section
role="presentation"
on:mouseup={() => {
const fun = animate.next()
if (!fun.done) fun.value()
}}
>
<strong>Packages</strong>
<svg {width} {height}>
<g transform="translate({marginLeft},{marginTop})">
<g bind:this={gx} transform="translate(0,{innerHeight})" fill="white">
<text fill="white" text-anchor="middle" x={innerWidth / 2} y="40">Packages</text>
</g>
<g bind:this={gy} x={-innerHeight / 2} y={-50} fill="white" text-anchor="middle">
<text
transform="rotate(-90)"
fill="white"
text-anchor="middle"
x={-innerHeight / 2}
y={-50}>Fresh Packages</text
>
</g>
{#each repositories as { name, color, packages, freshPackages } (name)}
{@const highlight = highlightedRepos.has(name.toLowerCase().split(' ')[0])}
<circle
fill={!grayRepos || highlight ? color : '#666666'}
cx={x(packages)}
cy={y(freshPackages)}
r="5"
/>
{#if highlight}
<text fill="white" x={x(packages) + 7} y={y(freshPackages)} font-size="8"
>{name}</text
>
{/if}
{/each}
</g>
</svg>
</section>
<style>
circle {
transition: all 750ms ease-in-out;
}
</style>

1
src/slides/Title.svelte Normal file
View File

@@ -0,0 +1 @@
<section>Nick's guide to Nix</section>