diff --git a/.envrc b/.envrc new file mode 100644 index 0000000..3550a30 --- /dev/null +++ b/.envrc @@ -0,0 +1 @@ +use flake diff --git a/flake.nix b/flake.nix index 1707a30..e52f1ef 100644 --- a/flake.nix +++ b/flake.nix @@ -25,7 +25,23 @@ inherit system; overlays = [(import rust-overlay)]; }; + inherit (pkgs) lib; toolchain = pkgs.rust-bin.fromRustupToolchainFile ./rust-toolchain.toml; + cargoToml = lib.importTOML ./Cargo.toml; + + nativeBuildInputs = with pkgs; [ + pkg-config + ]; + + buildInputs = with pkgs; [ + glib-networking + gobject-introspection + gtk4 + libadwaita + libxkbcommon + wayland + glib + ]; naersk-package = pkgs.callPackage naersk { cargo = toolchain; @@ -33,30 +49,23 @@ clippy = toolchain; }; in { - devShell = with pkgs; + devShells.default = with pkgs; mkShell { - buildInputs = [ - cargo - cargo-info - rustc - rustfmt - clippy - rust-analyzer - just - - eza - fd - fzf - bat + packages = + [ + toolchain + cargo-info + rust-analyzer + just - pkg-config - libxkbcommon - glib - gobject-introspection - gtk4 - libadwaita - ]; - RUST_SRC_PATH = "${pkgs.rust.packages.stable.rustPlatform.rustLibSrc}"; + eza + fd + fzf + bat + ] + ++ nativeBuildInputs + ++ buildInputs; + RUST_SRC_PATH = "${toolchain}/lib/rustlib/src/rust/library"; shellHook = '' alias ls=eza @@ -64,23 +73,31 @@ ''; }; + devShell = self.devShells.${system}.default; + packages.default = naersk-package.buildPackage { - name = "nmrs"; - version = self.shortRev or self.dirtyShortRev; + pname = "nmrs-gui"; + version = cargoToml.package.version; src = ./.; - buildInputs = with pkgs; [ - pkg-config - wrapGAppsHook4 - libxkbcommon - glib - ]; + nativeBuildInputs = + nativeBuildInputs + ++ (with pkgs; [ + wrapGAppsHook4 + ]); + inherit buildInputs; postInstall = '' install -D nmrs.desktop -t $out/share/applications ''; - meta.mainProgram = "nmrs-gui"; + meta = with lib; { + description = cargoToml.package.description; + homepage = cargoToml.package.repository; + license = licenses.mit; + mainProgram = "nmrs-gui"; + platforms = platforms.linux; + }; }; } );