Nixpkgs: Graphical ISOs and OVAs are too large

Created on 24 Sep 2018  ·  10Comments  ·  Source: NixOS/nixpkgs

Issue description

The graphical ISO and OVA files are about 1.1 GB. This is too big and can probably be made smaller. From nixos-18.09beta521.e4966591ef6-x86_64-linux.ova:

$ du -sch /nix/store/*
51M     /nix/store/6b6lzbq74g95j8qlbrdjzkn2ghh81mgy-python-2.7.15
53M     /nix/store/4rv37m88jmjiqpr9d4r2s0r2c4cxmcpm-spidermonkey-52.9.0
55M     /nix/store/z6kbqvfdv48vxcmzsnmdy24q2dbxjygp-plasma-desktop-5.13.4
57M     /nix/store/2iq0jp4m5nmak16gsgbaypqg92p96a4k-samba-4.7.9
57M     /nix/store/q9ajsngf2w3r10dg7b1148wzq1avp4gj-perl-5.28.0
58M     /nix/store/zsp6g66hr0l4dgllj56ah9jk19v5nz4v-qtwebkit-5.212-alpha-01-26-2018
64M     /nix/store/hy65mn4wjswqih75gfr6g4q3xgqdm325-python3-3.6.6
67M     /nix/store/kr3qbmrx11sj4zccg1g9glsb3rby626q-mesa-noglu-18.1.7-drivers
72M     /nix/store/8cj5ib60ak732yprp4cz13sp0ig0qsv9-llvm-6.0.1-lib
73M     /nix/store/z910rqvwsxrkz57fi9ckbrlfvshgd453-breeze-icons-5.49.0
74M     /nix/store/lkc9g7gqfqxbssmnb3gpxxbk10zd1ycj-linux-4.14.71
92M     /nix/store/gyx36j03n7dhwm27b7sqkdz0cdp4x8rh-system-path
122M    /nix/store/78yiqfgzz2b32pn391najl1k1jqch2hf-glibc-locales-2.27
125M    /nix/store/0id5ff5l5xaa7d1hfj8p3afs69il80rf-qt-4.8.7
130M    /nix/store/vv4r320p5yd1k01kld62q1lppjxcswhb-gcc-7.3.0
138M    /nix/store/p6mid5fjaj0jpr1h1ksndwr1l4hr0g4j-firefox-unwrapped-61.0.2
140M    /nix/store/67f8paqxk686v9nxf3qhzn0v5vf12wi1-nixos-18.09beta521.e4966591ef6

I think we should be able to get rid of dependencies on:

  • gcc-7.3.0
  • qt-4.8.7
  • firefox
  • llvm-6.0.1
stale closure-size

All 10 comments

Um, why remove firefox? You just added it to the OVA.

Well it's already in the ISO. This just makes things consistent. Eventually we should move to either Konqueror or Falkon, maybe?

llvm.lib is probably unavoidable due to mesa drivers, at least for the graphical image.

@matthewbauer i'm not sure if anyone uses Konqueror, but it would be consistent since it's the default KDE web-browser. When we could remove it from the image to save some space, we could discuss to include Chromium (Chrome is the most popular browser with about 60% market share http://gs.statcounter.com/) or Firefox (it's popular by privacy activists i think).

Two more possible optimizations:

  • I am seeing two copies of Nixpkgs in the images:
142M    94k9ygl28nmfixlkbsnf37fdrzbz9gwp-nixos-19.03pre153635.9bfd864c592
142M    d9agl1376dd99wr3c8mi791nnrvm6l9i-nixos-19.03pre153635.9bfd864c592

We should only need one.

  • Some headers are getting pulled in incorrectly like gtk-dev:
$ nix why-depends /run/current-system /nix/store/f6raam3phafpy23l3gak2mvk8gpvbky3-gtk+3-3.22.30-dev
/nix/store/wr9lf4v5p4rm8wjn56k5ab5jyykfnqwl-nixos-system-nixos-19.03pre153635.9bfd864c592
╚═══activate: …/kcheckpass.echo -n "/nix/store/gdfndzkmz221lnhfkfa1z7c2mdr0yqc7-plasma-workspace-5.13.5-bin/lib…
    => /nix/store/gdfndzkmz221lnhfkfa1z7c2mdr0yqc7-plasma-workspace-5.13.5-bin
    ╚═══nix-support/propagated-user-env-packages: …kr7-kholidays-5.50.0 /nix/store/daxbb8q8khn1n7x1z58i0ivwjyv2giav-qtgraphicaleffects-5.11.1 /nix/…
        => /nix/store/daxbb8q8khn1n7x1z58i0ivwjyv2giav-qtgraphicaleffects-5.11.1
        ╚═══nix-support/propagated-build-inputs: …/nix/store/0xpd1a07sr37wjwbk28j70a23v3pn0r3-qtdeclarative-5.11.1-dev …
            => /nix/store/0xpd1a07sr37wjwbk28j70a23v3pn0r3-qtdeclarative-5.11.1-dev
            ╚═══nix-support/propagated-build-inputs: …/nix/store/rrrkknw8v4xq02wkc20brwdc2jrxm8hl-qtbase-5.11.1-dev /nix/store/2r…
                => /nix/store/rrrkknw8v4xq02wkc20brwdc2jrxm8hl-qtbase-5.11.1-dev
                ╚═══mkspecs/modules/qt_lib_widgets_private.pri: ….QMAKE_INCDIR_GTK3 = /nix/store/f6raam3phafpy23l3gak2mvk8gpvbky3-gtk+3-3.22.30-dev/include/>
                    => /nix/store/f6raam3phafpy23l3gak2mvk8gpvbky3-gtk+3-3.22.30-dev

This chain would probably best get resolved by adding .dev for qtgraphicaleffects, but there may remain other references to gtk.dev and splits themselves aren't always problem-free...

It might be the only qt framework without a dev output though. The default for qt modules is "dev" and "out". Not sure if avoiding it for qtgraphicaleffects was intentional though? (qtdoc is also out-only)

/cc @ttuegel

I think qtgraphicaleffects has one output to avoid circular dependencies. It could probably still be split, but I never tried.

Falkon seems too new to include and Konqueror seems too broken to include (I don't know anyone who uses Konqueror on a daily basis).

Thank you for your contributions.

This has been automatically marked as stale because it has had no activity for 180 days.

If this is still important to you, we ask that you leave a comment below. Your comment can be as simple as "still important to me". This lets people see that at least one person still cares about this. Someone will have to do this at most twice a year if there is no other activity.

Here are suggestions that might help resolve this more quickly:

  1. Search for maintainers and people that previously touched the related code and @ mention them in a comment.
  2. Ask on the NixOS Discourse.
  3. Ask on the #nixos channel on irc.freenode.net.
Was this page helpful?
0 / 5 - 0 ratings