summaryrefslogtreecommitdiffstats
path: root/flake.nix
diff options
context:
space:
mode:
Diffstat (limited to 'flake.nix')
-rw-r--r--flake.nix105
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
+ ];
+ };
+ }
+ );
+}