an http based roguelike rpg about jelqing
| 1 | { |
| 2 | description = "jelqd, a roguelike played entirely over HTTP"; |
| 3 | |
| 4 | inputs = { |
| 5 | nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; |
| 6 | crane.url = "github:ipetkov/crane"; |
| 7 | flake-utils.url = "github:numtide/flake-utils"; |
| 8 | }; |
| 9 | |
| 10 | outputs = |
| 11 | { |
| 12 | self, |
| 13 | nixpkgs, |
| 14 | crane, |
| 15 | flake-utils, |
| 16 | }: |
| 17 | flake-utils.lib.eachDefaultSystem ( |
| 18 | system: |
| 19 | let |
| 20 | pkgs = nixpkgs.legacyPackages.${system}; |
| 21 | craneLib = crane.mkLib pkgs; |
| 22 | src = craneLib.cleanCargoSource ./.; |
| 23 | commonArgs = { |
| 24 | inherit src; |
| 25 | strictDeps = true; |
| 26 | }; |
| 27 | cargoArtifacts = craneLib.buildDepsOnly commonArgs; |
| 28 | jelqd = craneLib.buildPackage ( |
| 29 | commonArgs |
| 30 | // { |
| 31 | inherit cargoArtifacts; |
| 32 | meta.mainProgram = "jelqd"; |
| 33 | } |
| 34 | ); |
| 35 | in |
| 36 | { |
| 37 | packages.default = jelqd; |
| 38 | |
| 39 | apps.default = flake-utils.lib.mkApp { drv = jelqd; } // { |
| 40 | meta.description = "Run the jelqd server"; |
| 41 | }; |
| 42 | |
| 43 | checks = { |
| 44 | inherit jelqd; |
| 45 | clippy = craneLib.cargoClippy ( |
| 46 | commonArgs |
| 47 | // { |
| 48 | inherit cargoArtifacts; |
| 49 | cargoClippyExtraArgs = "--all-targets -- --deny warnings"; |
| 50 | } |
| 51 | ); |
| 52 | fmt = craneLib.cargoFmt { inherit src; }; |
| 53 | test = craneLib.cargoTest (commonArgs // { inherit cargoArtifacts; }); |
| 54 | }; |
| 55 | |
| 56 | devShells.default = craneLib.devShell { |
| 57 | checks = self.checks.${system}; |
| 58 | packages = [ pkgs.rust-analyzer ]; |
| 59 | }; |
| 60 | |
| 61 | formatter = pkgs.nixfmt; |
| 62 | } |
| 63 | ); |
| 64 | } |