about summary refs log tree commit diff
path: root/pkgs/build-support/vm/deb/deb-closure.nix
blob: 64db0307ffa3605eaafd9be74342ed461ced8e36 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
with import ../../../nixpkgs {};

rec {

  debClosureGenerator =
    {name, packages, urlPrefix, toplevel}:
    runCommand name {} ''
      ensureDir $out
      bunzip2 < ${packages} > ./Packages
      ${perl}/bin/perl -I${dpkg} -w ${./deb-closure.pl} \
        ./Packages ${urlPrefix} ${toString toplevel} > $out/${name}.nix
    '';


  commonPackages = [
    "base-passwd"
    "dpkg"
    "libc6-dev"
    "perl"
    "sysvinit"
    "bash"
    "gzip"
    "bzip2"
    "tar"
    "grep"
    "findutils"
    "g++"
    "make"
    "curl"
    "patch"
    "diff"
  ];

  
  # Ubuntu 7.10 "Gutsy Gibbon", i386.

  packagesUbuntuGutsyI386 = fetchurl {
    url = mirror://ubuntu/dists/gutsy/main/binary-i386/Packages.bz2;
    sha1 = "8b52ee3d417700e2b2ee951517fa25a8792cabfd";
  };

  debsUbuntuGutsyI386 = debClosureGenerator {
    name = "ubuntu-7.10-gutsy-i386";
    packages = packagesUbuntuGutsyI386;
    urlPrefix = mirror://ubuntu;
    toplevel = commonPackages;
  };


  # Debian 4.0r3 "Etch", i386.

  packagesDebianEtchR3I386 = fetchurl {
    url = mirror://debian/dists/etch/main/binary-i386/Packages.bz2;
    sha256 = "7a8f2777315d71fd7321d1076b3bf5f76afe179fe66c2ce8e1ff4baed6424340";
  };

  debsDebianEtchR3I386 = debClosureGenerator {
    name = "debian-4.0r3-etch-i386";
    packages = packagesDebianEtchR3I386;
    urlPrefix = mirror://debian;
    toplevel = commonPackages;
  };


  # To update the Nix expressions for all distributions, do
  # $ nix-build deb-closure.nix -A allDists
  # $ cp -f result*/*.nix .
  allDists = [
    debsUbuntuGutsyI386
    debsDebianEtchR3I386
  ];

}