[Nix-dev] Move NodeJS to separate overlay repository?

Profpatsch mail at profpatsch.de
Sun Mar 12 15:25:25 CET 2017


On 17-03-11 09:46pm, zimbatm wrote:
> And finally, I don't want
> nixpkgs to be much larger and slow down my `nix-channel --update` because
> it's downloading all the haskell, ruby, python, ... library descriptions.
> […]

Right now it’s a ~10Mb download (tar.xz);
See bottom of the mail for full output of `du -ha | sort -hr`.

67M	./pkgs
30M	./pkgs/development
13M	./pkgs/applications
8.7M	./pkgs/development/libraries
8.3M	./pkgs/tools

8.2M	./pkgs/development/haskell-modules
7.5M	./pkgs/development/haskell-modules/hackage-packages.nix

5.6M	./nixos
5.0M	./pkgs/applications/editors
4.5M	./nixos/modules

4.4M	./pkgs/applications/editors/emacs-modes

3.7M	./programs.sqlite

[…]
480K	./nixos/doc

30.0M development packages, 7.5M of that generated haskell set.
13.0M application packages, 5.0M editors, 4.4M of that emacs modes (I think autogenerated)
 5.6M nixos
 0.5M nixos docs

The schema seems to be around 1/3 autogenerated,
though that might rise in the future (think pythonPackages).

It’s probably okay to check in autogenerated derivations,
but their code size needs to be as small as possible.
So basically remove any kind of duplication.
Not sure how much of that is already handled by xz though?
Would be worth testing out the compression rate I think!
 

> […] I created https://github.com/zimbatm/nix-rubygems […]
> `du -sh. ` gives me > 3.5GB for 720312 gems, that's ~5KB per gem probably due to all the inodes
> and the .git repo. I think it's possible to bring it down to ~50MB using
> binary packing

There’s the other problem of nixpkgs git repo size.
Not sure if anything about the current size (TODO GB),
but keeping diffs small would help in the future.
As your example shows also putting everything into one big
generated file instead of one per package.


Complete list of sizes:

67M	./pkgs
30M	./pkgs/development
13M	./pkgs/applications
8.7M	./pkgs/development/libraries
8.3M	./pkgs/tools
8.2M	./pkgs/development/haskell-modules
7.5M	./pkgs/development/haskell-modules/hackage-packages.nix
5.6M	./nixos
5.0M	./pkgs/applications/editors
4.5M	./nixos/modules
4.4M	./pkgs/applications/editors/emacs-modes
3.7M	./programs.sqlite
3.7M	./pkgs/top-level
3.0M	./pkgs/desktops
2.8M	./pkgs/applications/editors/emacs-modes/melpa-generated.nix
2.8M	./nixos/modules/services
2.7M	./pkgs/os-specific
2.4M	./pkgs/servers
2.2M	./pkgs/development/tools
2.1M	./pkgs/os-specific/linux
2.1M	./pkgs/development/node-packages
2.1M	./pkgs/applications/networking
1.9M	./pkgs/games
1.9M	./pkgs/development/r-modules
1.8M	./pkgs/development/compilers
1.6M	./pkgs/top-level/node-packages-generated.nix
1.6M	./pkgs/applications/misc
1.5M	./pkgs/tools/misc
1.4M	./pkgs/tools/networking
1.4M	./pkgs/development/r-modules/cran-packages.nix
1.3M	./pkgs/development/beam-modules
1.3M	./pkgs/applications/editors/emacs-modes/melpa-stable-generated.nix
1.2M	./pkgs/tools/typesetting
1.2M	./pkgs/tools/security
1.2M	./pkgs/development/node-packages/node-packages-v4.nix
1.2M	./pkgs/development/beam-modules/hex-packages.nix
1.2M	./pkgs/applications/audio
1.1M	./pkgs/desktops/gnome-3/3.20
1.1M	./pkgs/desktops/gnome-3
1016K	./pkgs/tools/typesetting/tex
988K	./pkgs/build-support
924K	./pkgs/tools/typesetting/tex/texlive
876K	./pkgs/misc
852K	./pkgs/top-level/python-packages.nix
832K	./pkgs/development/node-packages/node-packages-v6.nix
820K	./pkgs/applications/science
812K	./pkgs/desktops/kde-4.14
796K	./pkgs/development/interpreters
792K	./pkgs/development/libraries/qt-5
772K	./pkgs/development/ocaml-modules
732K	./nixos/modules/services/networking
704K	./pkgs/data
684K	./pkgs/development/python-modules
680K	./pkgs/development/tools/misc
576K	./pkgs/development/haskell-modules/configuration-hackage2nix.yaml
572K	./pkgs/desktops/gnome-3/3.20/core
568K	./pkgs/os-specific/darwin
548K	./pkgs/top-level/all-packages.nix
544K	./pkgs/applications/version-management
540K	./pkgs/applications/graphics
520K	./pkgs/top-level/perl-packages.nix
504K	./pkgs/development/mobile
492K	./pkgs/tools/typesetting/tex/texlive/pkgs.nix
480K	./pkgs/tools/filesystems
480K	./nixos/doc/manual
480K	./nixos/doc
476K	./pkgs/applications/networking/browsers
472K	./pkgs/tools/security/qdigidoc
472K	./pkgs/data/fonts
468K	./pkgs/tools/security/qdigidoc/certs.patch
468K	./pkgs/games/ue4
464K	./pkgs/desktops/kde-5
460K	./pkgs/games/ue4/cdn-deps.nix
460K	./nixos/tests
456K	./pkgs/os-specific/darwin/apple-source-releases
444K	./pkgs/tools/text
444K	./pkgs/tools/system
428K	./pkgs/development/libraries/kde-frameworks
420K	./pkgs/tools/graphics
416K	./pkgs/development/mobile/androidenv
412K	./nixos/modules/services/misc
408K	./pkgs/applications/video
392K	./pkgs/applications/networking/instant-messengers
384K	./pkgs/tools/typesetting/tex/texlive/fixedHashes.nix
384K	./pkgs/applications/networking/cluster
384K	./doc

-- 
Proudly written in Mutt with Vim on NixOS.
Q: Why is this email five sentences or less?
A: http://five.sentenc.es
May take up to five days to read your message. If it’s urgent, call me.


More information about the nix-dev mailing list