diff --git a/.envrc b/.envrc index 3550a30..043e2f1 100644 --- a/.envrc +++ b/.envrc @@ -1 +1,4 @@ +if ! has nix_direnv_version || ! nix_direnv_version 3.0.6; then + source_url "https://raw.githubusercontent.com/nix-community/nix-direnv/3.0.6/direnvrc" "sha256-RYcUJaRMf8oF5LznDrlCXbkOQrywm0HDv1VjYGaJGdM=" +fi use flake diff --git a/.gitignore b/.gitignore index 3f1d26f..83e1d12 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,5 @@ # binaries /target + +# nix-direnv +/.direnv diff --git a/flake.lock b/flake.lock index 473b8da..abc937c 100644 --- a/flake.lock +++ b/flake.lock @@ -1,17 +1,12 @@ { "nodes": { "crane": { - "inputs": { - "nixpkgs": [ - "nixpkgs" - ] - }, "locked": { - "lastModified": 1716080827, - "narHash": "sha256-2R9LBCR8TlMuK4Md9ELwPVuwRQWI3pAh7Nj9e318Hk4=", + "lastModified": 1725409566, + "narHash": "sha256-PrtLmqhM6UtJP7v7IGyzjBFhbG4eOAHT6LPYOFmYfbk=", "owner": "ipetkov", "repo": "crane", - "rev": "a7146b04405d93b24a1bac76d93270787872c8be", + "rev": "7e4586bad4e3f8f97a9271def747cf58c4b68f3c", "type": "github" }, "original": { @@ -40,11 +35,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1716097317, - "narHash": "sha256-1UMrLtgzielG/Sop6gl6oTSM4pDt7rF9j9VuxhDWDlY=", + "lastModified": 1725534445, + "narHash": "sha256-Yd0FK9SkWy+ZPuNqUgmVPXokxDgMJoGuNpMEtkfcf84=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "8535fb92661f37ff9f0da3007fbc942f7d134b41", + "rev": "9bb1e7571aadf31ddb4af77fc64b2d59580f9a39", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index 81f4eac..510ba3f 100644 --- a/flake.nix +++ b/flake.nix @@ -3,58 +3,68 @@ inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; - crane.url = "github:ipetkov/crane"; - crane.inputs.nixpkgs.follows = "nixpkgs"; - flake-utils.url = "github:numtide/flake-utils"; }; - outputs = { self, nixpkgs, crane, flake-utils, ... }: - flake-utils.lib.eachDefaultSystem (system: - let - pkgs = nixpkgs.legacyPackages.${system}; + outputs = { + self, + nixpkgs, + crane, + flake-utils, + ... + }: + flake-utils.lib.eachDefaultSystem (system: let + pkgs = nixpkgs.legacyPackages.${system}; - craneLib = crane.mkLib pkgs; + craneLib = crane.mkLib pkgs; - # Common arguments can be set here to avoid repeating them later - # Note: changes here will rebuild all dependency crates - commonArgs = { - src = craneLib.cleanCargoSource (craneLib.path ./.); - strictDeps = true; + # Common arguments can be set here to avoid repeating them later + # Note: changes here will rebuild all dependency crates + commonArgs = { + src = craneLib.cleanCargoSource ./.; + strictDeps = true; - buildInputs = [ - # Add additional build inputs here - ] ++ pkgs.lib.optionals pkgs.stdenv.isDarwin [ pkgs.libiconv ]; - }; - - breeze = craneLib.buildPackage (commonArgs // { - cargoArtifacts = craneLib.buildDepsOnly commonArgs; - }); - in - { - checks = { - inherit breeze; - }; - - packages.default = breeze; - - apps.default = flake-utils.lib.mkApp { - drv = breeze; - }; - - devShells.default = craneLib.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.rewrk + buildInputs = + [ + pkgs.openssl + ] + ++ pkgs.lib.optionals pkgs.stdenv.isDarwin [ + # Additional darwin specific inputs can be set here + pkgs.libiconv ]; - }; - }); -} + }; + breeze = craneLib.buildPackage (commonArgs + // { + cargoArtifacts = craneLib.buildDepsOnly commonArgs; + + # Additional environment variables or build phases/hooks can be set + # here *without* rebuilding all dependency crates + # MY_CUSTOM_VAR = "some value"; + }); + in { + checks = { + inherit breeze; + }; + + packages.default = breeze; + + apps.default = flake-utils.lib.mkApp { + drv = breeze; + }; + + devShells.default = craneLib.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.rewrk + ]; + }; + }); +}