about summary refs log tree commit diff
path: root/pkgs/default.nix
blob: 8b6050c71e0bbc3cf670200ea7b0a9d6b891625b (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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
{ pkgs ? import (import ../nixpkgs-path.nix) {} }:

let
  inherit (pkgs.lib) callPackageWith isFunction;
  callPackage = callPackageWith (pkgs // self.vuizvui);
  callPackage_i686 = callPackageWith (pkgs.pkgsi686Linux // self.vuizvui);

  callPackageScope = fn: let
    f = if isFunction fn then fn else import fn;

    toplevel = pkgs // self.vuizvui;
    toplevel_i686 = pkgs.pkgsi686Linux // self.vuizvui;

    autoArgs = toplevel // {
      callPackage = callPackageWith (toplevel // super);
      callPackage_i686 = callPackageWith (toplevel_i686 // super);
    };
    args = builtins.intersectAttrs (builtins.functionArgs f) autoArgs;

    mkOverridable = overrideFun: origArgs: let
      superSet = overrideFun origArgs;
      overrideWith = newArgs: let
        overridden = if isFunction newArgs then newArgs origArgs else newArgs;
      in origArgs // overridden;
    in superSet // {
      override = newArgs: mkOverridable overrideFun (overrideWith newArgs);
    };

    super = mkOverridable f args;

  in pkgs.recurseIntoAttrs super;

  self.vuizvui = pkgs.recurseIntoAttrs {
    mkChannel = callPackage ./build-support/channel.nix { };

    list-gamecontrollers = callPackage ./list-gamecontrollers { };
    show-qr-code = callPackage ./show-qr-code { };

    games = import ./games {
      inherit pkgs;
      config = pkgs.config.vuizvui.games or null;
    };

    openlab = pkgs.recurseIntoAttrs {
      gitit = callPackage ./openlab/gitit { hlib = pkgs.haskell.lib; };
      stackenblocken = callPackage ./openlab/stackenblocken {};
    };

    aszlig = callPackageScope ./aszlig;

    profpatsch = pkgs.recurseIntoAttrs {
      display-infos = callPackage ./profpatsch/display-infos {};
      nman = callPackage ./profpatsch/nman {};
      warpspeed = callPackage ./profpatsch/warpspeed {
        inherit (pkgs.haskellPackages) ghcWithPackages;
      };

      jmtpfs = pkgs.jmtpfs.override {
        libmtp = pkgs.libmtp.overrideDerivation (old: {
          patches = old.patches or [] ++ [
            ./profpatsch/patches/mtp-jolla.patch
          ];
        });
      };

      # patched version of droopy, with javascript user-enhancement
      droopy = pkgs.droopy.overrideDerivation (old: {
        src = pkgs.fetchFromGitHub {
          owner = "Profpatsch";
          repo = "Droopy";
          rev = "dc63d0ac9cecd74cdff84ab9ea2a5849d6953e8a";
          sha256 = "09sms524wrnpdkhnpv9f2qbq30s8h02ljiv934g0dvmxy8571ph7";
        };
        installPhase = old.installPhase or "" + ''
          mkdir -p $out/share/droopy
          cp -r $src/static $out/share/droopy
        '';
        makeWrapperArgs = old.makeWrapperArgs or [] ++ [
          "--set DROOPY_STATIC \"$out/share/droopy/static\""
        ];

      });
    };
    sternenseemann = pkgs.recurseIntoAttrs {
      spacecookie = pkgs.haskellPackages.callPackage ./sternenseemann/spacecookie {};
      logbook = pkgs.ocamlPackages_4_02.callPackage ./sternenseemann/logbook {};
    };
  };
in pkgs // self