| 29 Jul 2025 |
hexa | yeah, nvm | 14:45:51 |
hexa | bootstrapping the package set doesn't work with minimal | 14:45:59 |
hexa | not sure how I forgot | 14:46:08 |
hexa | python3Small when | 14:46:26 |
hexa | * python3Smol when | 14:46:31 |
hexa | * 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 |