Add nix flake for dev environment
Authored by
mfwolffe <wolffemf@dukes.jmu.edu>
- SHA
8b30643bf899c474abbd0bf29f8c97029ac94d55- Parents
-
22f9d66 - Tree
edd78ef
8b30643
8b30643bf899c474abbd0bf29f8c97029ac94d5522f9d66
edd78ef| Status | File | + | - |
|---|---|---|---|
| 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 | +} | |