29 Jul 2025 |
hexa (clat on linux when) | 170 vs 67 MiB | 14:42:23 |
hexa (clat on linux when) | * 171 vs 67 MiB | 14:42:34 |
emily | huh minimal is still that big? | 14:42:44 |
hexa (clat on linux when) | on master | 14:42:51 |
Marcel | In reply to @emilazy:matrix.org but sounds like upstream already knows/is working on that Yeah I've already suggested that I'll start working on it. But he wants to do it himself, but between 40h work there is only so much time | 14:42:55 |
hexa (clat on linux when) | and before compression | 14:43:06 |
Sandro 🐧 | ➜ command nix-shell -p "python3Minimal.withPackages(ps : with ps; [ jsonschema pyroute2 pyyaml setproctitle ])"
unpacking 'https://github.com/SuperSandro2000/nixpkgs/archive/nixos-unstable.tar.gz' into the Git cache...
these 102 derivations will be built:
/nix/store/360br147q16qx2z682f9l70a8awpy2vb-wrap-python-hook.drv
/nix/store/3ab0x57snwzq8ynh5g995lbj1iqcimpg-python-catch-conflicts-hook.drv
/nix/store/3ia10cxslfs0dnyv81slpy35l7ximrlm-python3.13-bootstrap-flit-core-3.12.0.drv
/nix/store/lzdqnxi3n0vp1b6fy5lbwlbili4pybbm-python3.13-bootstrap-installer-0.7.0.drv
/nix/store/6s0wga19czpsqvzjs07dx2f53hrxcbsn-python3.13-bootstrap-tomli-2.2.1.drv
/nix/store/fycn3n4hb5qab5xpn8iacm6wnzrqgkv2-python3.13-bootstrap-pyproject-hooks-1.2.0.drv
/nix/store/mmmi8jm117wj9sj3hbkldkddcr6kz4sn-python3.13-bootstrap-packaging-25.0.drv
/nix/store/69h6khdidhli6r33m61dgsmvamqglr03-python3.13-bootstrap-build-1.2.2.post1.drv
/nix/store/25i9vfk0vl2plplh2dgjdsi21p7n1417-pypa-build-hook.sh.drv
/nix/store/2nhals8gpzxlwfz1w4h74nfiwyrr3aid-pypa-install-hook.drv
/nix/store/3dajgrq6mq1kqr4r4iwmm9yighk5a072-python3.13-bootstrap-packaging-25.0.drv
/nix/store/hqpspynn8mx101allg1pbk3631fzy6bj-python-runtime-deps-check-hook.sh.drv
/nix/store/xbjz3p51cdlh9arblv1nngi3bs62rjwx-python-imports-check-hook.sh.drv
/nix/store/hbwlxmpga35szfgn13asm05v1qfw946x-python3.13-flit-core-3.12.0.drv
/nix/store/k9aiqj2n06s84ckyn9qgk4vvxbvwskpa-python3.13-installer-0.7.0.drv
/nix/store/pcvpizzmb6lmnihyi5rfh585vanqdkb1-pypa-install-hook.drv
/nix/store/g6i34qgpps97wbmxjzid0nhyx308s9x9-python3.13-pyproject-hooks-1.2.0.drv
/nix/store/gqsxww79hpj6z8rylnz53wpjc0lvzkh0-python3.13-packaging-25.0.drv
/nix/store/5dqj3131qj1y0p22chv51kzhai6j1bif-python3.13-build-1.2.2.post1.drv
/nix/store/vcbizp7ds815n6xx6ngjd8p39nw4mrf5-python3.13-wheel-0.46.1.drv
/nix/store/q196yw1cfahyqmgfzyfdwsgv835pvyas-pypa-build-hook.sh.drv
/nix/store/vy0r6bl5b17bx9mawf13cz9ny4zgzcxr-python-runtime-deps-check-hook.sh.drv
/nix/store/b5hf5qsh3vgkkzdhxzhnks353zy62vy0-python3.13-setuptools-80.7.1.drv
/nix/store/ah298q3d5qb7hfz2syaaska2nbzyzs1l-python3.13-editables-0.5.drv
/nix/store/y2hzk8y835k0glwxggmdxkyqhlfmiw9l-python3.13-calver-2025.04.17.drv
/nix/store/nifapj3l1xp3rv9hgykz9nimkb3lvi8y-python3.13-trove-classifiers-2025.5.9.12.drv
/nix/store/vr9cf2rh791f5hsvv9j9ab3rj3ilgsf0-python3.13-typing-extensions-4.13.2.drv
/nix/store/c9x7vcd6c83chxdj7gccciskq3hys6nx-python3.13-setuptools-scm-8.3.1.drv
/nix/store/ryb4wl613rccl6xqxr5rnpgdpjar11zq-python3.13-pluggy-1.6.0.drv
/nix/store/g1385366vg9wnwfvkkixm72c1fmamd9b-unittest-check-hook.drv
/nix/store/xri9jilh9jkiz4izrs1m41is934y1imk-python3.13-pathspec-0.12.1.drv
/nix/store/dx4v5rm1cap3jnh1k94rg9i28whcaspa-python3.13-hatchling-1.27.0.drv
/nix/store/bg7qypn06ibrk6k2f649knn8f8y6hy2y-python3.13-iniconfig-2.1.0.drv
/nix/store/dkjmqp5cv8c9spdws8c0asfzq75mgqcg-python3.13-pytest-8.3.5.drv
/nix/store/152zq6ncf1dz5bac4l5dnqfny0graqjm-pytest-check-hook.drv
/nix/store/0200x7ac4rsc78fmqm7phi31mf8k6765-python3.13-psutil-7.0.0.drv
/nix/store/kyf6x907mhkmk0md4wlq96vphl5zrhyq-python3.13-pycparser-2.22.drv
/nix/store/9zpk8vyjlyh81nbzwl9hghjgxdngg927-python3.13-cffi-1.17.1.drv
/nix/store/c700zr3jz5w46978siw6gvjjm4xdwxzc-python3.13-cython-3.0.12.drv
/nix/store/hhic2r79v72gh2m3r99r4sk7vnvk6fpd-python3.13-zope-event-5.0.drv
/nix/store/kkvwi1z8qvilp3rfp3ygakx6pwqnyhpj-python3.13-greenlet-3.2.2.drv
/nix/store/v3kjapxg2bk5d1g72aqqpr27vy46qv3j-python3.13-zope-interface-7.2.drv
/nix/store/ady7svpj5gyq8mkkspd5h1jjdwgdwfpb-python3.13-zipp-3.21.0.drv
/nix/store/2y2ypgi1i67afw0d087xc915cysmbn51-setuptools-build-hook.drv
/nix/store/jv5kcjjlicylx5k6svjqldh07fckdjdw-python3.13-toml-0.10.2.drv
/nix/store/yjiv07cxglxlkhgypqlzj4nd008m6f63-python3.13-importlib-metadata-8.7.0.drv
/nix/store/04xxb7rz88yhd9mab88ix7rs1c84x03m-python3.13-gevent-24.11.1.drv
/nix/store/05qas827pmanks6hkrm1jhdbc35xlvmc-python3.13-pytest-asyncio-0.26.0.drv
/nix/store/4506c94hxk8gz490bvxfgwmdmxzngns3-python3.13-lxml-5.4.0.drv
/nix/store/cg4xbb3dd9xhvrm921sdlvq6jjw0j9ha-python3.13-types-psutil-7.0.0.20250401.drv
/nix/store/w8lqhaz61g82xk1y4k1ybfx0gaxhlsm4-python3.13-hatch-vcs-0.4.0.drv
/nix/store/gs8dqlab5vi8r3ygigcwq9lpw15dvvf7-python3.13-execnet-2.1.1.drv
/nix/store/4396dincpfjmfxnck3bk8aimi4sh3hak-python3.13-pytest-mock-3.14.1.drv
/nix/store/nz2a1b8nm9d3w133jh7ddwm4s3s1760h-python3.13-filelock-3.18.0.drv
/nix/store/mkw7h8h9df1xm4zy0a5mzacs94c1344b-python3.13-pytest-xdist-3.6.1.drv
/nix/store/n344hbdirr9cir2ia7ijc3q55r4gk0gn-python3.13-attrs-25.3.0.drv
/nix/store/p8cb957caam9zhcbnm1a0nb98j1qz1k8-python3.13-mypy-extensions-1.1.0.drv
/nix/store/s8r7jjld7sj9pg02x8jdvhnx1hmiij64-python3.13-tomli-2.2.1.drv
/nix/store/xzwdb5ia0zjdpbha7fjry5xfjg61fixb-python3.13-types-setuptools-78.1.0.20250329.drv
/nix/store/irdj8pypwm6fhp4825alyl9lqv5a703d-python3.13-mypy-1.15.0.drv
/nix/store/0x06yh0dkp6lk5a029qlbg25mr8kyx07-python3.13-charset-normalizer-3.4.2.drv
/nix/store/1khvbv0xaa2clb3llmqf0mzj9c1cpxiz-python3.13-roman-numerals-py-3.1.0.drv
/nix/store/3z4mgbkqlqn97ls1b7pn8h3l1mc1fd5l-python3.13-idna-3.10.drv
/nix/store/dp1lmkskvwk87jw5rq1khlp7xq1ivdbl-python3.13-markupsafe-3.0.2.drv
/nix/store/i7lldz0v6nkisisc8qssbqa8xgx3jry5-python3.13-six-1.17.0.drv
/nix/store/av728zfq1lm7w1zln91rmgl4g6xmx24p-python3.13-python-dateutil-2.9.0.post0.drv
/nix/store/9pa6vsia5dw3k7glb1r8g9b6fiiqnnlh-python3.13-freezegun-1.5.1.drv
/nix/store/jvxj90z0202z4hvbcny0raqc81cdny60-python3.13-pytz-2025.2.drv
/nix/store/r3agbbyv3k4yasi7aa7cpn86q52qjxk1-python3.13-babel-2.17.0.drv
/nix/store/58grs33r23x266ds0p1qa4asjl84afl3-python3.13-jinja2-3.1.6.drv
/nix/store/9vw67l9wli2138hff5kc2kq0vg5ims5m-python3.13-pystemmer-2.2.0.1.drv
/nix/store/8xvwsvm5d3xk15hczh05pvqzvpri2n83-python3.13-snowballstemmer-3.0.1.drv
/nix/store/9v4gw0l6n4i0k0ypskg8mrsj3c4ibm9q-python3.13-defusedxml-0.8.0rc2.drv
/nix/store/dvi5nw200q947nmr2kppq3n4q4s5y21m-python3.13-certifi-2025.06.15.drv
/nix/store/r2y7wfm55crzqg4b5vfjxyc7vzmfws99-python3.13-pysocks-1.7.1.drv
/nix/store/y52vyxrmr0sb9c3c2iap9c7z0378qj4m-python3.13-urllib3-2.4.0.drv
/nix/store/c1qzp594zp148wqxw2cfa7rj07azw3dg-python3.13-requests-2.32.4.drv
/nix/store/c4pz2rhkm6cd3kiam22bzhmfr2frqlzv-python3.13-pygments-2.19.1.drv
/nix/store/d7ixs3clj8rx462x66wgh7m49bq3nhm6-python3.13-sphinxcontrib-htmlhelp-2.1.0.drv
/nix/store/hkfwlv5wwxmgsrq3l89hybsnsf1x7r9f-python3.13-sphinxcontrib-devhelp-2.0.0.drv
/nix/store/iw5kaz14i5aj7fi01811glg0sxp44h9a-python3.13-alabaster-1.0.0.drv
/nix/store/jvz1jn8rx5acaqw1k5vrhzz0j8q9akbs-python3.13-sphinxcontrib-serializinghtml-2.0.0.drv
/nix/store/kl0xwl8jh3y9ax4402f3lvr8n71bpy5b-python3.13-sphinxcontrib-applehelp-2.0.0.drv
/nix/store/njp0kckl4r3brsnldgbs7jhs95iyp7sf-python3.13-sphinxcontrib-qthelp-2.0.0.drv
/nix/store/pz6f7601yqx61cxz1dabcxazspbrg04w-python3.13-sphinxcontrib-jsmath-1.0.1.drv
/nix/store/pap893ydamp7xw2rrlg6g05vkrgjbh2l-python3.13-webencodings-0.5.1.drv
/nix/store/x634yv5bmbm63jmir1yzb7x5187ya8vh-python3.13-html5lib-1.1.drv
/nix/store/xfjzmhqqmgcnhhgq6pgcv3j4k3nlbf7f-python3.13-docutils-0.21.2.drv
/nix/store/yi4950hpyxgjmadl5bazffy1jsalcjc8-python3.13-imagesize-1.4.1.drv
/nix/store/yimwybpgjhx6bj9skd9rzl8hll8hqx24-python3.13-sphinxcontrib-websupport-2.0.0.drv
/nix/store/bmvgd1plfar01d5sai19514asidfkxw7-python3.13-sphinx-8.2.3.drv
/nix/store/96kxcnadlpgl332p9i89gwm3zyf25wk3-python3.13-sphinx-issues-3.0.1.drv
/nix/store/5r4ykz2pid3kiy1bimyi6717f069gfxx-python3.13-pip-25.0.1.drv
/nix/store/xbgh51jrzwbg0ixaz70svjzhfynjbnka-python3.13-rpds-py-0.25.0.drv
/nix/store/cjrbfyh8vhsz5zimy5dqci6i7f6k8gjp-python3.13-referencing-0.36.2.drv
/nix/store/fars6z053psd85lrl9msz584fxpm29sx-python3.13-jsonschema-specifications-2025.4.1.drv
/nix/store/sw2zwn2nv8r113kgjvp5hqm15jvp1m9z-python3.13-hatch-fancy-pypi-readme-24.1.0.drv
/nix/store/kzy97q89y01n4fvmvbjf354g4xqrl3ql-python3.13-jsonschema-4.23.0.drv
/nix/store/nxzi98la1jfv5p8m2y7rnxn261p19jhg-python3.13-pyroute2-0.9.2.drv
/nix/store/y4caivayijw3iy5p4ishvs9ai6lb2ghz-python3.13-pyyaml-6.0.2.drv
/nix/store/yyzk7i18br1as3nzcyw8na3zzgrpdj94-python3.13-setproctitle-1.3.6.drv
/nix/store/i704dxx61hbqg4nh42m5vmyjq74pz3z3-python3-minimal-3.13.5-env.drv
these 16 paths will be fetched (12.29 MiB download, 49.54 MiB unpacked):
/nix/store/aa9r63f0gpq92w4i9d6xq2xdxbz47fd8-c-ares-1.34.5-dev
/nix/store/rfd6qwz6va5y574yx2rpqnxwnxxsaz73-jsonschema_specifications-2025.4.1.tar.gz
/nix/store/n8iszi9xk7yrkrciv96mcpnkc0a7r0vh-libstemmer-2.2.0
/nix/store/497q1aj5gwqz5dqfn98kqaxwdc40hnwg-libyaml-0.2.5-dev
/nix/store/d9i9hgx7l3qbkx3yaabifdsx7gf88zxz-maturin-1.8.6
/nix/store/bj7yb9dvv3dj9v73k1553l3k0vx2svxk-maturin-build-hook.sh
/nix/store/gz9v41phbrm3cn4zdb34nx047iah9c21-pytest-hook
/nix/store/8z90x6mrchihy6y4i59bvw1aaz8i6zby-remove-hatch-plugins.patch
/nix/store/32j52513j279nnn9mq36wjw907syv8gn-rpds-py-0.25.0-vendor
/nix/store/i5d6lipz0a4a3ya2hl014ahj61jlghrq-rpds_py-0.25.0.tar.gz
/nix/store/bvds6my78r221488clc307iblh3pnbpg-setproctitle-1.3.6.tar.gz
/nix/store/zd2x78pz8abrw2dbm5q42zffilcg2msh-snowballstemmer-3.0.1.tar.gz
/nix/store/9qvmyahfp1zdfn1c7h2kr7vddfgjcicv-source
/nix/store/rvgmfk5jmz04nd0zwghfrzriq45n0j49-source
/nix/store/zch8izi9mwrm1aqr4ymwb0p3fqlb2fp1-source
/nix/store/ihrgrmzm64sjra9cq8wgzpm7xa5zhaz6-version.patch
| 14:44:59 |
Sandro 🐧 | urg | 14:45:01 |
Sandro 🐧 | and fails in flit-core
Building wheel from /build/source/flit_core
Traceback (most recent call last):
File "<frozen runpy>", line 198, in _run_module_as_main
File "<frozen runpy>", line 88, in _run_code
File "/build/source/flit_core/flit_core/wheel.py", line 259, in <module>
main()
~~~~^^
File "/build/source/flit_core/flit_core/wheel.py", line 255, in main
info = make_wheel_in(pyproj_toml, outdir)
File "/build/source/flit_core/flit_core/wheel.py", line 222, in make_wheel_in
wb = WheelBuilder.from_ini_path(ini_path, fp)
File "/build/source/flit_core/flit_core/wheel.py", line 89, in from_ini_path
return cls(
directory, module, metadata, entrypoints, target_fp, ini_info.data_directory
)
File "/build/source/flit_core/flit_core/wheel.py", line 78, in __init__
self.wheel_zip = zipfile.ZipFile(target_fp, 'w',
~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^
compression=zipfile.ZIP_DEFLATED)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/nix/store/2bh3ww7jpp1cvd921r3lmsw1kkgrycb5-python3-minimal-3.13.5/lib/python3.13/zipfile/__init__.py", line 1335, in __init__
_check_compression(compression)
~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
File "/nix/store/2bh3ww7jpp1cvd921r3lmsw1kkgrycb5-python3-minimal-3.13.5/lib/python3.13/zipfile/__init__.py", line 754, in _check_compression
raise RuntimeError(
"Compression requires the (missing) zlib module")
RuntimeError: Compression requires the (missing) zlib module
| 14:45:30 |
hexa (clat on linux when) | meh | 14:45:42 |
hexa (clat on linux when) | yeah, nvm | 14:45:51 |
hexa (clat on linux when) | bootstrapping the package set doesn't work with minimal | 14:45:59 |
hexa (clat on linux when) | not sure how I forgot | 14:46:08 |
hexa (clat on linux when) | python3Small when | 14:46:26 |
hexa (clat on linux when) | * python3Smol when | 14:46:31 |
hexa (clat on linux when) | * python3Smol when | 14:46:42 |
Sandro 🐧 | hehe, let me try that | 14:47:59 |
emily | you could build with python3 and deploy with minimal but I'm also guessing that's hard for a billion reasons | 14:50:04 |
Sandro 🐧 | that shouldn't be that hard to do but then you have no test coverage if something is missing | 14:58:06 |
emily | yeah | 15:03:48 |
emily | well hopefully IfState is going to have end-to-end NixOS tests… right? :) | 15:03:57 |
emily | not like you can unit test most of the really important stuff there | 15:04:05 |
Marcel | In reply to @emilazy:matrix.org well hopefully IfState is going to have end-to-end NixOS tests… right? :) The funny thing is that he did not really had an idea how to implement automatic tests and them I showed him Nixos tests and now there is nix code upstream. But I've already have VM tests in my nixpkgs fork on the ifstate branch | 15:05:00 |
Sandro 🐧 | diff --git a/pkgs/development/interpreters/python/default.nix b/pkgs/development/interpreters/python/default.nix
index 5d60226aeb9c..8e38fe089aa9 100644
--- a/pkgs/development/interpreters/python/default.nix
+++ b/pkgs/development/interpreters/python/default.nix
@@ -145,6 +145,54 @@
pname = "python3-minimal";
});
+ # Minimal versions of Python (built without optional dependencies)
+ python3Smol =
+ (callPackage ./cpython (
+ {
+ self = __splicedPackages.python3Smol;
+ inherit passthruFun;
+ pythonAttr = "python3Smol";
+ # strip down that python version as much as possible
+ openssl = null;
+ readline = null;
+ ncurses = null;
+ gdbm = null;
+ sqlite = null;
+ tzdata = null;
+ libuuid = null;
+ bzip2 = null;
+ libxcrypt = null;
+ xz = null;
+ stripConfig = true;
+ stripIdlelib = true;
+ stripTests = true;
+ stripTkinter = true;
+ rebuildBytecode = false;
+ stripBytecode = true;
+ includeSiteCustomize = false;
+ enableOptimizations = false;
+ enableLTO = false;
+ mimetypesSupport = false;
+ withExpat = false;
+ withMpdecimal = false;
+ /*
+ The actual 'allowedReferences' attribute is set inside the cpython derivation.
+ This is necessary in order to survive overrides of dependencies.
+ */
+ allowedReferenceNames = [
+ "bashNonInteractive"
+ "libffi"
+ "zlib"
+ ];
+ }
+ // sources.python313
+ )).overrideAttrs
+ (old: {
+ # TODO(@Artturin): Add this to the main cpython expr
+ strictDeps = true;
+ pname = "python3-smol";
+ });
+
pypy27 = callPackage ./pypy {
self = __splicedPackages.pypy27;
sourceVersion = {
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index c0e953a8d19e..14cb4c3e1ef1 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -6578,6 +6578,7 @@
python313
python314
python3Minimal
+ python3Smol
pypy27
pypy310
pypy311
| 16:25:48 |
Sandro 🐧 | This got me pretty far. pyroute2 is failing for some seemingly unrelated error. | 16:25:48 |
ElvishJerricco | I'm not 100% opposed to this but I certainly don't like it | 17:36:52 |
ElvishJerricco | I mean I can think of how to do it with no new features too | 17:37:08 |
emily | would you like it if we just… made the closures of things small enough that we can use it for everything? | 17:37:15 |
emily | without the current hacks | 17:37:23 |
ElvishJerricco | i.e. make a derivation that creates symlinks to everything listed in a ${closureInfo}/store-paths | 17:37:38 |