Nix · 2482 bytes Raw Blame History
1 {
2 description = "WANDA - WeMod launcher for Linux";
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 # Rust toolchain
22 rustToolchain = pkgs.rust-bin.stable.latest.default.override {
23 extensions = [ "rust-src" "rust-analyzer" ];
24 };
25
26 # Common build inputs for Tauri
27 tauriBuildInputs = with pkgs; [
28 pkg-config
29 gtk3
30 webkitgtk_4_1
31 libappindicator-gtk3
32 librsvg
33 openssl
34 glib
35 cairo
36 pango
37 gdk-pixbuf
38 atk
39 libsoup_3
40 ];
41
42 # Development tools
43 devTools = with pkgs; [
44 rustToolchain
45 nodejs_20
46 nodePackages.npm
47 cargo-tauri
48 ];
49
50 in {
51 devShells.default = pkgs.mkShell {
52 buildInputs = tauriBuildInputs ++ devTools;
53
54 PKG_CONFIG_PATH = with pkgs; lib.makeSearchPath "lib/pkgconfig" [
55 gtk3.dev
56 webkitgtk_4_1.dev
57 libappindicator-gtk3.dev
58 openssl.dev
59 glib.dev
60 cairo.dev
61 pango.dev
62 gdk-pixbuf.dev
63 atk.dev
64 libsoup_3.dev
65 ];
66
67 RUST_SRC_PATH = "${rustToolchain}/lib/rustlib/src/rust/library";
68
69 shellHook = ''
70 echo "🪄 WANDA development environment"
71 echo ""
72 echo "Commands:"
73 echo " cargo build -p wanda-cli # Build CLI only"
74 echo " cargo build -p wanda-gui # Build GUI"
75 echo " cargo tauri dev # Run GUI in dev mode"
76 echo ""
77 '';
78 };
79
80 packages.default = pkgs.rustPlatform.buildRustPackage {
81 pname = "wanda-cli";
82 version = "0.1.0";
83 src = ./.;
84 cargoLock.lockFile = ./Cargo.lock;
85 buildInputs = tauriBuildInputs;
86 nativeBuildInputs = [ pkgs.pkg-config ];
87
88 # Only build CLI for now
89 cargoBuildFlags = [ "-p" "wanda-cli" ];
90 };
91 }
92 );
93 }