/ flake.nix
flake.nix
1 { 2 description = "A Clicks project"; 3 inputs.flake-utils.url = "github:numtide/flake-utils"; 4 inputs.fenix = { 5 url = "github:nix-community/fenix"; 6 inputs.nixpkgs.follows = "nixpkgs"; 7 }; 8 outputs = 9 { nixpkgs, flake-utils, fenix, ... }: 10 flake-utils.lib.eachDefaultSystem ( 11 system: 12 let 13 pkgs = import nixpkgs { 14 inherit system; 15 overlays = [ fenix.overlays.default ]; 16 }; 17 tauri_libraries = with pkgs; [ 18 webkitgtk 19 gtk3 20 cairo 21 gdk-pixbuf 22 glib 23 dbus 24 openssl_3 25 librsvg 26 ]; 27 tauri_packages = with pkgs; [ 28 curl 29 wget 30 pkg-config 31 dbus 32 openssl_3 33 glib 34 gtk3 35 libsoup 36 webkitgtk 37 librsvg 38 ]; 39 in 40 { 41 devShells.default = pkgs.mkShell { 42 packages = [ 43 pkgs.nodePackages.pnpm 44 pkgs.nodejs_22 45 pkgs.eslint_d 46 pkgs.cargo-tauri 47 (pkgs.fenix.stable.withComponents [ 48 "cargo" 49 "clippy" 50 "rust-src" 51 "rustc" 52 "rustfmt" 53 "rust-analyzer" 54 ]) 55 pkgs.bacon 56 pkgs.pkg-config 57 ] ++ tauri_packages; 58 shellHook = '' 59 export PKG_CONFIG_PATH=${ 60 pkgs.lib.makeSearchPathOutput "dev" "lib/pkgconfig" [ 61 pkgs.at-spi2-atk 62 pkgs.atkmm 63 pkgs.cairo 64 pkgs.gdk-pixbuf 65 pkgs.glib 66 pkgs.gobject-introspection 67 pkgs.gobject-introspection.dev 68 pkgs.gtk3 69 pkgs.gtk-layer-shell 70 pkgs.harfbuzz 71 pkgs.librsvg 72 pkgs.libsoup_3 73 pkgs.openssl_3 74 pkgs.pango 75 pkgs.webkitgtk_4_1 76 pkgs.webkitgtk_4_1.dev 77 ] 78 } 79 export LD_LIBRARY_PATH=${pkgs.lib.makeLibraryPath tauri_libraries}:$LD_LIBRARY_PATH 80 export XDG_DATA_DIRS=${pkgs.gsettings-desktop-schemas}/share/gsettings-schemas/${pkgs.gsettings-desktop-schemas.name}:${pkgs.gtk3}/share/gsettings-schemas/${pkgs.gtk3.name}:$XDG_DATA_DIRS 81 ''; 82 }; 83 formatter = pkgs.nixfmt; 84 } 85 ); 86 }