{"guid":"650a8d7a-8042-4e43-81e3-06993ffa78ff","title":"Python packaging with nixpkgs, pyproject.nix \u0026 uv2nix","subtitle":null,"slug":"nixcon2025-56389-python-packaging-with-n","link":"https://talks.nixcon.org/nixcon-2025/talk/Y8TSAW/","description":"There is a broad range of possibilities when packaging Python with Nix.\nThe amount of Python formats alone can be overwhelming: requirements.txt, setup.py \u0026 pyproject.toml, not to mention Conda!\n\nThis talk aims to explain Python packaging with Nix, focusing on pyproject.nix \u0026 uv2nix, but I will also talk about other approaches and their trade-offs.\n\nWe'll start off with a short primer on the different Python packaging formats \u0026 methods while explaining a few of the things that make Python packaging particularly murky \u0026 difficult.\n\nThen we'll go through a range of Nix packaging possibilities, starting with using plain nixpkgs \u0026 culminating in pyproject.nix \u0026 uv2nix.\nAlong the way the pros and cons of each will be explored and what approach to use when and where.","original_language":"eng","persons":["adisbladis"],"tags":["56389","2025","nixcon2025","Lecture Hall","nixcon2025-eng"],"view_count":173,"promoted":false,"date":"2025-09-06T13:35:00.000+02:00","release_date":"2025-09-18T00:00:00.000+02:00","updated_at":"2026-04-06T19:45:06.534+02:00","length":1722,"duration":1722,"thumb_url":"https://static.media.ccc.de/media/events/nixcon/2025/56389-650a8d7a-8042-4e43-81e3-06993ffa78ff.jpg","poster_url":"https://static.media.ccc.de/media/events/nixcon/2025/56389-650a8d7a-8042-4e43-81e3-06993ffa78ff_preview.jpg","timeline_url":"https://static.media.ccc.de/media/events/nixcon/2025/56389-650a8d7a-8042-4e43-81e3-06993ffa78ff.timeline.jpg","thumbnails_url":"https://static.media.ccc.de/media/events/nixcon/2025/56389-650a8d7a-8042-4e43-81e3-06993ffa78ff.thumbnails.vtt","frontend_link":"https://media.ccc.de/v/nixcon2025-56389-python-packaging-with-n","url":"https://api.media.ccc.de/public/events/650a8d7a-8042-4e43-81e3-06993ffa78ff","conference_title":"NixCon 2025","conference_url":"https://api.media.ccc.de/public/conferences/nixcon2025","related":[],"recordings":[{"size":70,"length":1722,"mime_type":"video/webm","language":"eng","filename":"import-56389-eng-Python_packaging_with_nixpkgs_pyprojectnix_uv2nix_webm-sd.webm","state":"new","folder":"webm-sd","high_quality":false,"width":720,"height":576,"updated_at":"2025-09-18T16:37:25.424+02:00","recording_url":"https://cdn.media.ccc.de/events/nixcon/2025/webm-sd/import-56389-eng-Python_packaging_with_nixpkgs_pyprojectnix_uv2nix_webm-sd.webm","url":"https://api.media.ccc.de/public/recordings/91236","event_url":"https://api.media.ccc.de/public/events/650a8d7a-8042-4e43-81e3-06993ffa78ff","conference_url":"https://api.media.ccc.de/public/conferences/nixcon2025"},{"size":163,"length":1722,"mime_type":"video/webm","language":"eng","filename":"import-56389-eng-Python_packaging_with_nixpkgs_pyprojectnix_uv2nix_webm-hd.webm","state":"new","folder":"webm-hd","high_quality":true,"width":1920,"height":1080,"updated_at":"2025-09-18T16:35:09.690+02:00","recording_url":"https://cdn.media.ccc.de/events/nixcon/2025/webm-hd/import-56389-eng-Python_packaging_with_nixpkgs_pyprojectnix_uv2nix_webm-hd.webm","url":"https://api.media.ccc.de/public/recordings/91235","event_url":"https://api.media.ccc.de/public/events/650a8d7a-8042-4e43-81e3-06993ffa78ff","conference_url":"https://api.media.ccc.de/public/conferences/nixcon2025"},{"size":19,"length":1722,"mime_type":"audio/opus","language":"eng","filename":"import-56389-eng-Python_packaging_with_nixpkgs_pyprojectnix_uv2nix_opus.opus","state":"new","folder":"opus","high_quality":false,"width":0,"height":0,"updated_at":"2025-09-18T16:18:17.802+02:00","recording_url":"https://cdn.media.ccc.de/events/nixcon/2025/opus/import-56389-eng-Python_packaging_with_nixpkgs_pyprojectnix_uv2nix_opus.opus","url":"https://api.media.ccc.de/public/recordings/91205","event_url":"https://api.media.ccc.de/public/events/650a8d7a-8042-4e43-81e3-06993ffa78ff","conference_url":"https://api.media.ccc.de/public/conferences/nixcon2025"},{"size":26,"length":1722,"mime_type":"audio/mpeg","language":"eng","filename":"import-56389-eng-Python_packaging_with_nixpkgs_pyprojectnix_uv2nix_mp3.mp3","state":"new","folder":"mp3","high_quality":false,"width":0,"height":0,"updated_at":"2025-09-18T16:18:14.068+02:00","recording_url":"https://cdn.media.ccc.de/events/nixcon/2025/mp3/import-56389-eng-Python_packaging_with_nixpkgs_pyprojectnix_uv2nix_mp3.mp3","url":"https://api.media.ccc.de/public/recordings/91204","event_url":"https://api.media.ccc.de/public/events/650a8d7a-8042-4e43-81e3-06993ffa78ff","conference_url":"https://api.media.ccc.de/public/conferences/nixcon2025"},{"size":48,"length":1722,"mime_type":"video/mp4","language":"eng","filename":"import-56389-eng-Python_packaging_with_nixpkgs_pyprojectnix_uv2nix_sd.mp4","state":"new","folder":"h264-sd","high_quality":false,"width":720,"height":576,"updated_at":"2025-09-18T16:18:10.252+02:00","recording_url":"https://cdn.media.ccc.de/events/nixcon/2025/h264-sd/import-56389-eng-Python_packaging_with_nixpkgs_pyprojectnix_uv2nix_sd.mp4","url":"https://api.media.ccc.de/public/recordings/91203","event_url":"https://api.media.ccc.de/public/events/650a8d7a-8042-4e43-81e3-06993ffa78ff","conference_url":"https://api.media.ccc.de/public/conferences/nixcon2025"},{"size":109,"length":1722,"mime_type":"video/mp4","language":"eng","filename":"import-56389-eng-Python_packaging_with_nixpkgs_pyprojectnix_uv2nix_hd.mp4","state":"new","folder":"h264-hd","high_quality":true,"width":1920,"height":1080,"updated_at":"2025-09-18T15:59:52.325+02:00","recording_url":"https://cdn.media.ccc.de/events/nixcon/2025/h264-hd/import-56389-eng-Python_packaging_with_nixpkgs_pyprojectnix_uv2nix_hd.mp4","url":"https://api.media.ccc.de/public/recordings/91192","event_url":"https://api.media.ccc.de/public/events/650a8d7a-8042-4e43-81e3-06993ffa78ff","conference_url":"https://api.media.ccc.de/public/conferences/nixcon2025"}]}