summaryrefslogtreecommitdiff
path: root/nix/package.nix
blob: e0fcbacf5e739a59ee955c04e1777b51d33d8b54 (plain)
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
{
  stdenv,
  lib,
  fetchFromGitHub,
  fetchFromGitLab,
  makeWrapper,
  git,
  meson,
  ninja,
  vala,
  sassc,
  pkg-config,
  gobject-introspection,
  wayland-scanner,
  wayland-protocols,
  glib,
  gtk4,
  json-glib,
  gmp,
  librsvg,
  networkmanager,
  wayland,
  libpulseaudio,
  alsa-lib,
  upower,
  brightnessctl
}:
  let
    dep-gtk4-layer-shell = fetchFromGitHub {
      owner = "wmww";
      repo = "gtk4-layer-shell";
      rev = "v1.1.1";
      hash = "sha256-decjPkFkYy7kIjyozsB7BEmw33wzq1EQyIBrxO36984=";
    };
    dep-gvc = fetchFromGitLab {
      domain = "gitlab.gnome.org";
      owner = "GNOME";
      repo = "libgnome-volume-control";
      rev = "91f3f41490666a526ed78af744507d7ee1134323";
      hash = "sha256-lpDWVlRFngMSNfACrfJ5vRTZ2xdlwcrh4/YGcNDogys=";
    };
  in stdenv.mkDerivation {
    pname = "foobar";
    version = "1.0.0";
    src = ./..;
    postUnpack = ''
      pushd "$sourceRoot"
      cp -R --no-preserve=mode,ownership ${dep-gtk4-layer-shell} subprojects/gtk4-layer-shell
      cp -R --no-preserve=mode,ownership ${dep-gvc} subprojects/gvc
      popd
    '';
    # needed to enable support for SVG icons in GTK
    postInstall = ''
      wrapProgram "$out/bin/foobar" \
        --set GDK_PIXBUF_MODULE_FILE ${librsvg.out}/lib/gdk-pixbuf-2.0/2.10.0/loaders.cache
    '';

    nativeBuildInputs = [ makeWrapper git meson ninja vala sassc pkg-config gobject-introspection wayland-scanner ];
    buildInputs = [ glib gtk4 json-glib gmp librsvg networkmanager wayland libpulseaudio alsa-lib upower brightnessctl ];

    meta = with lib; {
      homepage = "https://github.com/hannesschulze/foobar";
      description = "A simple bar, launcher, control center, and notification daemon.";
      maintainers = [
        { name = "Hannes Schulze"; }
      ];
      license = licenses.mit;
      mainProgram = "foobar";
    };
  }