gardesk/gartray / 8b30643

Browse files

Add nix flake for dev environment

Authored by mfwolffe <wolffemf@dukes.jmu.edu>
SHA
8b30643bf899c474abbd0bf29f8c97029ac94d55
Parents
22f9d66
Tree
edd78ef

1 changed file

StatusFile+-
A flake.nix 78 0
flake.nixadded
@@ -0,0 +1,78 @@
1
+{
2
+  description = "gartray - System tray and quick settings panel";
3
+
4
+  inputs = {
5
+    nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
6
+    flake-utils.url = "github:numtide/flake-utils";
7
+    rust-overlay = {
8
+      url = "github:oxalica/rust-overlay";
9
+      inputs.nixpkgs.follows = "nixpkgs";
10
+    };
11
+  };
12
+
13
+  outputs = { self, nixpkgs, flake-utils, rust-overlay }:
14
+    flake-utils.lib.eachDefaultSystem (system:
15
+      let
16
+        overlays = [ (import rust-overlay) ];
17
+        pkgs = import nixpkgs {
18
+          inherit system overlays;
19
+        };
20
+
21
+        rustToolchain = pkgs.rust-bin.stable.latest.default.override {
22
+          extensions = [ "rust-src" "rust-analyzer" ];
23
+        };
24
+      in
25
+      {
26
+        devShells.default = pkgs.mkShell {
27
+          buildInputs = with pkgs; [
28
+            rustToolchain
29
+            pkg-config
30
+
31
+            # X11 dependencies
32
+            xorg.libX11
33
+            xorg.libXcursor
34
+            xorg.libXrandr
35
+            xorg.libXi
36
+            xorg.libxcb
37
+
38
+            # GLib/GTK for gartk-render
39
+            glib
40
+            cairo
41
+            pango
42
+
43
+            # Audio (PulseAudio)
44
+            libpulseaudio
45
+
46
+            # D-Bus for SNI/zbus
47
+            dbus
48
+          ];
49
+
50
+          shellHook = ''
51
+            echo "gartray development shell"
52
+            echo "Run 'cargo build' to build"
53
+            echo "Run 'cargo run -- daemon' to start daemon"
54
+          '';
55
+
56
+          RUST_BACKTRACE = 1;
57
+        };
58
+
59
+        packages.default = pkgs.rustPlatform.buildRustPackage {
60
+          pname = "gartray";
61
+          version = "0.1.0";
62
+          src = ./.;
63
+          cargoLock.lockFile = ./Cargo.lock;
64
+
65
+          nativeBuildInputs = with pkgs; [ pkg-config ];
66
+          buildInputs = with pkgs; [
67
+            xorg.libX11
68
+            xorg.libxcb
69
+            glib
70
+            cairo
71
+            pango
72
+            libpulseaudio
73
+            dbus
74
+          ];
75
+        };
76
+      }
77
+    );
78
+}