about summary refs log tree commit diff
path: root/pkgs/development/misc/bleeding-edge-repos/default.nix
blob: 80cddf9d11edf90aab777f68ee6ce103270e0e96 (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
args: 
  with args;
  let inherit (builtins) pathExists; in
  rec {
  /*
    tries to get source in this order
    1) Local .tar.gz in ${HOME}/managed_repos/dist/name.tar.gz (-> see nixRepositoryManager)
    2) By importing                                           
        pkgs/misc/bleeding-edge-fetch-info/name.nix
        (generated by nixRepositoryManager --publish)
    3) Fall back to fetch_xy given with information given by A) But
      the sum wil propably be wrong..
      (not everything is implemented now)
  */ 

  managedRepoDir = getConfig [ "bleedingEdgeRepos" "managedRepoDir" ] (builtins.getEnv "HOME" + "/managed_repos");

  sourceByName = name : (
    let localTarGZ = managedRepoDir+"/dist/${name}.tar.gz"; 
        fetchUrlInfoFile = ../../../misc/bleeding-edge-fetch-info + "/${name}.nix"; in
    if pathExists localTarGZ
    then localTarGZ
    else if pathExists fetchUrlInfoFile
         then (import fetchUrlInfoFile) { inherit fetchurl; }
         else builtins.trace "warning, no bleeding edge source info (${fetchUrlInfoFile}) found for ${name}, hash will propably be wrong"
               (let attr = __getAttr name repos;
                 in if (attr.type == "darcs")
                   then fetchdarcs_2pre { inherit (attr) url md5; }
                   else throw "TODO") );

  repos = {
    # each repository has 
    # a type, url and maybe a tag
    # you can add groups names to update some repositories at once
    # see nix_repository_manager expression in all-packages.nix

      nix_repository_manager = { type = "darcs"; url = "http://mawercer.de/~marc/repos/nix-repository-manager"; };

      # darcs repositories haskell 
      http =  { type= "darcs"; url="http://darcs.haskell.org/http/"; groups="happs"; };
      syb_with_class =  { type="darcs"; url="http://happs.org/HAppS/syb-with-class"; groups="happs"; };
      happs_data =  { type="darcs"; url=http://happs.org/repos/HAppS-Data; groups="happs"; };
      happs_util =  { type="darcs"; url=http://happs.org/repos/HAppS-Util; groups="happs"; };
      happs_state =  { type="darcs"; url=http://happs.org/repos/HAppS-State; groups="happs"; };
      happs_plugins =  { type="darcs"; url=http://happs.org/repos/HAppS-Plugins; groups="happs"; };
      happs_ixset =  { type="darcs"; url=http://happs.org/repos/HAppS-IxSet; groups="happs"; };
      happs_server =  { type="darcs"; url=http://happs.org/repos/HAppS-Server; groups="happs"; };
      takusen = { type="darcs"; url=http://darcs.haskell.org/takusen/; };
      cabal = { type="darcs"; url=http://darcs.haskell.org/cabal; };


      # git repositories 
      hypertable =  { type="git"; url="git://scm.hypertable.org/pub/repos/hypertable.git"; groups=""; };
    } // getConfig [ "bleedingEdgeRepos" "repos" ] {};
}