/ 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  }