diff options
Diffstat (limited to 'flake.nix')
-rw-r--r-- | flake.nix | 105 |
1 files changed, 105 insertions, 0 deletions
diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..037d269 --- /dev/null +++ b/flake.nix @@ -0,0 +1,105 @@ +{ + description = "The pixi package manager"; + inputs = { + nixpkgs.url = "nixpkgs/nixos-23.05"; + flake-utils.url = "github:numtide/flake-utils"; + crane = { + url = "github:ipetkov/crane"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + rust-overlay = { + url = "github:oxalica/rust-overlay"; + inputs = { + nixpkgs.follows = "nixpkgs"; + flake-utils.follows = "flake-utils"; + }; + }; + }; + + outputs = inputs: inputs.flake-utils.lib.eachDefaultSystem + (system: + let + pkgs = import inputs.nixpkgs { + inherit system; + overlays = [ (import inputs.rust-overlay) ]; + }; + + rustTarget = pkgs.rust-bin.fromRustupToolchainFile ./rust-toolchain.toml; + craneLib = (inputs.crane.mkLib pkgs).overrideToolchain rustTarget; + tomlInfo = craneLib.crateNameFromCargoToml { cargoToml = ./Cargo.toml; }; + src = pkgs.nix-gitignore.gitignoreSource [ ] ./.; + + cargoArtifacts = craneLib.buildDepsOnly { + inherit src; + inherit (tomlInfo) pname version; + + buildInputs = [ + pkgs.pkg-config + pkgs.openssl + pkgs.cmake + ]; + }; + + pixi = craneLib.buildPackage { + inherit cargoArtifacts src; + inherit (tomlInfo) pname version; + + cargoExtraArgs = "--all-features"; + + buildInputs = [ + pkgs.pkg-config + pkgs.openssl + pkgs.cmake + ]; + + doCheck = false; + }; + in + rec { + checks = { + inherit pixi; + + pixi-clippy = craneLib.cargoClippy { + inherit cargoArtifacts src; + inherit (tomlInfo) pname version; + cargoClippyExtraArgs = "--benches --examples --tests --all-features -- --deny warnings"; + }; + + pixi-clippy-no-features = craneLib.cargoClippy { + inherit cargoArtifacts src; + inherit (tomlInfo) pname version; + cargoClippyExtraArgs = "--benches --examples --tests --no-default-features -- --deny warnings"; + }; + + pixi-fmt = craneLib.cargoFmt { + inherit cargoArtifacts src; + inherit (tomlInfo) pname version; + }; + }; + + packages = { + default = packages.pixi; + inherit pixi; + }; + + apps = { + pixi = inputs.flake-utils.lib.mkApp { + drv = pixi; + }; + }; + + devShells.default = devShells.pixi; + devShells.pixi = pkgs.mkShell { + buildInputs = [ + pkgs.pkg-config + pkgs.openssl + pkgs.cmake + ]; + + nativeBuildInputs = [ + rustTarget + ]; + }; + } + ); +} |