diff --git a/.gitea/template b/.gitea/template index dbe479f..042bf3c 100644 --- a/.gitea/template +++ b/.gitea/template @@ -1,2 +1,3 @@ README.md Cargo.toml +flake.nix diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..3e538cd --- /dev/null +++ b/flake.nix @@ -0,0 +1,34 @@ +{ + description = "A flake for building ${REPO_NAME}."; + + inputs = { + nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; + + flake-utils.url = "github:numtide/flake-utils"; + + treefmt-nix.url = "github:numtide/treefmt-nix"; + treefmt-nix.inputs.nixpkgs.follows = "nixpkgs"; + }; + + outputs = { self, nixpkgs, flake-utils, treefmt-nix, ... }@inputs: + flake-utils.lib.eachDefaultSystem (system: + let + pkgs = nixpkgs.legacyPackages.$${system}; + + cargoToml = builtins.fromTOML (builtins.readFile ./Cargo.toml); + + treefmtEval = treefmt-nix.lib.evalModule pkgs (pkgs: { + projectRootFile = "flake.nix"; + programs.rustfmt.enable = true; + programs.nixfmt.enable = true; + }); + in { + packages.default = pkgs.rustPlatform.buildRustPackage { + inherit (cargoToml.package) name version; + src = ./.; + cargoLock.lockFile = ./Cargo.lock; + }; + + formatter = treefmtEval.config.build.wrapper; + }); +}