From 2b25e0454c60bb30b9a531b94836ca0d64e6c5e1 Mon Sep 17 00:00:00 2001 From: Vika Date: Mon, 19 Aug 2024 21:41:48 +0300 Subject: Initial Nix & Cargo boilerplate for a Relm4 project --- flake.nix | 61 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 flake.nix (limited to 'flake.nix') diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..dc30db3 --- /dev/null +++ b/flake.nix @@ -0,0 +1,61 @@ +{ + inputs = { + flake-utils = { + type = "github"; + owner = "numtide"; + repo = "flake-utils"; + ref = "main"; + }; + crane = { + url = "github:ipetkov/crane"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + nixpkgs = { + type = "github"; + owner = "nixos"; + repo = "nixpkgs"; + ref = "nixos-unstable"; + }; + }; + outputs = { self, nixpkgs, flake-utils, crane }: let + supportedSystems = ["aarch64-linux" "x86_64-linux"]; + forAllSystems = f: flake-utils.lib.eachSystem supportedSystems f; + in forAllSystems (system: let + pkgs = nixpkgs.legacyPackages.${system}; + crane' = crane.mkLib pkgs; + + bowl = pkgs.callPackage ./default.nix { + # XXX may break cross-compilation + craneLib = crane'; + }; + in { + packages = { + bowl = bowl; + default = self.packages.${system}.bowl; + }; + + checks = { + bowl = self.packages.${system}.bowl; + + deps = self.packages.${system}.bowl.cargoArtifacts; + clippy = self.packages.${system}.bowl.clippy; + }; + + apps.default = flake-utils.lib.mkApp { + drv = bowl; + }; + + devShells.default = crane'.devShell { + # Inherit inputs from checks. + checks = self.checks.${system}; + + # Additional dev-shell environment variables can be set directly + # MY_CUSTOM_DEVELOPMENT_VAR = "something else"; + + # Extra inputs can be added here; cargo and rustc are provided by default. + packages = [ + pkgs.rust-analyzer + ]; + }; + }); +} -- cgit 1.4.1