diff --git a/.gitignore b/.gitignore index 2d5df85..f717ddd 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ /target +/result .direnv diff --git a/flake.nix b/flake.nix index f0f8f7b..7d3f567 100644 --- a/flake.nix +++ b/flake.nix @@ -15,18 +15,51 @@ let overlays = [ (import rust-overlay) ]; pkgs = import nixpkgs { inherit system overlays; }; + lib = nixpkgs.lib; rust = pkgs.rust-bin; rustToolchain = rust.fromRustupToolchainFile ./rust-toolchain.toml; rustNightlyToolchain = rust.selectLatestNightlyWith (t: t.minimal.override { extensions = [ "rustfmt" ]; }); + rustPlatform = pkgs.makeRustPlatform { + cargo = rustToolchain; + rustc = rustToolchain; + }; buildTools = [ rustToolchain rustNightlyToolchain ]; + + manifest = lib.importTOML ./Cargo.toml; + packageName = manifest.package.name; + packageVersion = manifest.package.version; + + package = rustPlatform.buildRustPackage { + nativeBuildInputs = buildTools; + + pname = packageName; + version = packageVersion; + src = lib.cleanSource ./.; + + verbose = true; + + cargoLock = { + lockFile = ./Cargo.lock; + allowBuiltinFetchGit = true; + }; + + meta = { + mainProgram = packageName; + }; + }; in { + packages = { + default = package; + ${packageName} = package; + }; + devShells.default = pkgs.mkShell { name = "projtool";