← На главную

Энтузиаст сжал NixOS с 458 до 183 МБ, удалив Python, systemd и Perl

19.06.2026 21:55 · hackernews

Вот пересказ статьи:

Автор взял голый ISO-образ NixOS и обнаружил, что он весит 458 МБ — почти в 10 раз больше, чем Damn Small Linux из детства. Для сравнения, Alpine VM ISO — около 66 МБ. Он решил выяснить, куда уходят мегабайты, и максимально ужать образ.

Внутри ISO: 416 МБ занимает nix-store.squashfs, 26 МБ — initrd, 13 МБ — ядро. В squashfs обнаружились гиганты: Python3-3.13.13 (128 МБ), systemd-260.1 (60 МБ), perl-5.42.0 (56 МБ), модули ядра linux-6.18.35-modules (144 МБ), два экземпляра grub-2.12 (суммарно 62 МБ), icu4c, glibc, boost и т. д.

Автор начал «сбрасывать балласт». Первым делом отключил сам Nix (nix.enable = false) и документацию (documentation.enable = false). Но образ уменьшился лишь до 384 МБ — Boost всё ещё тянулся через сервис register-nix-paths. Отключив и его, автор добился 360 МБ, но Boost наконец исчез.

Дальше — сложнее. SSH встроен в corePackages без прямого выключателя. Пришлось импортировать заглушку для programs.ssh, отключить модуль через disabledModules и обнулить environment.defaultPackages. Также убрали GRUB (62 МБ) — для этого автор вручную переопределил systemPackages и extraDependencies.

Самый жирный кусок — 144 МБ модулей ядра. Их удалили целиком командой rm $out/kernel-modules в systemBuilderCommands. Это сломало переключение разрешения экрана, но образ остался загружаемым. Размер упал до 197 МБ.

Оставался Perl (56 МБ) — он нужен только для настройки /etc и пользователей при активации системы. Автор переключился на экспериментальные функции: system.etc.overlay.enable = true и services.userborn.enable = true. Это выкинуло Perl. Итоговый ISO — 183 МБ, почти треть от исходника.

Автор предупреждает: такая конфигурация — не для продакшена. Всё вырезанное там было не просто так. Но если нужен крошечный образ для одноразового эксперимента — это рабочий вариант. Он оставил «домашнее задание» читателям: например, разобраться с дублированием systemd и systemdMinimal или убрать ещё более мелкие пакеты.

Читать оригинал →