diff --git a/flake.nix b/flake.nix index d2e93e8..4c9828c 100644 --- a/flake.nix +++ b/flake.nix @@ -10,64 +10,69 @@ flake-utils.url = "github:numtide/flake-utils"; }; - outputs = { self, nixpkgs, rust-overlay, flake-utils }: - flake-utils.lib.eachDefaultSystem (system: - let - overlays = [ (import rust-overlay) ]; - pkgs = import nixpkgs { inherit system overlays; }; - isLinux = pkgs.lib.hasInfix "linux" system; + outputs = { + self, + nixpkgs, + rust-overlay, + flake-utils, + }: + flake-utils.lib.eachDefaultSystem (system: let + overlays = [(import rust-overlay)]; + pkgs = import nixpkgs {inherit system overlays;}; + isLinux = pkgs.lib.hasInfix "linux" system; - rustToolchain = pkgs.rust-bin.stable.latest.default.override { - extensions = [ "rust-src" "clippy" "rustfmt" ]; - targets = pkgs.lib.optionals isLinux [ "x86_64-unknown-linux-musl" ]; - }; - in - { - devShells.default = pkgs.mkShell ({ - nativeBuildInputs = [ - rustToolchain - pkgs.pkg-config - ] ++ pkgs.lib.optionals isLinux [ - # Provide cc (gcc) for building proc-macro / build-script crates - # that target the host (x86_64-unknown-linux-gnu). - pkgs.gcc - # musl-gcc wrapper for the static musl target. - pkgs.pkgsMusl.stdenv.cc - ]; + rustToolchain = pkgs.rust-bin.stable.latest.default.override { + extensions = ["rust-src" "clippy" "rustfmt"]; + targets = pkgs.lib.optionals isLinux ["x86_64-unknown-linux-musl"]; + }; + in { + devShells.default = pkgs.mkShell ({ + nativeBuildInputs = + [ + rustToolchain + pkgs.pkg-config + ] + ++ pkgs.lib.optionals isLinux [ + # Provide cc (gcc) for building proc-macro / build-script crates + # that target the host (x86_64-unknown-linux-gnu). + pkgs.gcc + # musl-gcc wrapper for the static musl target. + pkgs.pkgsMusl.stdenv.cc + ]; RUST_BACKTRACE = "1"; - } // pkgs.lib.optionalAttrs isLinux { + } + // pkgs.lib.optionalAttrs isLinux { # Tell Cargo which linker to use for each target so it never # falls back to rust-lld (which can't find glibc on NixOS). - CARGO_TARGET_X86_64_UNKNOWN_LINUX_GNU_LINKER = - "${pkgs.gcc}/bin/gcc"; - CARGO_TARGET_X86_64_UNKNOWN_LINUX_MUSL_LINKER = - "${pkgs.pkgsMusl.stdenv.cc}/bin/cc"; + CARGO_TARGET_X86_64_UNKNOWN_LINUX_GNU_LINKER = "${pkgs.gcc}/bin/gcc"; + CARGO_TARGET_X86_64_UNKNOWN_LINUX_MUSL_LINKER = "${pkgs.pkgsMusl.stdenv.cc}/bin/cc"; # Default build target: static musl binary. CARGO_BUILD_TARGET = "x86_64-unknown-linux-musl"; }); - packages.default = - if isLinux then - (pkgs.pkgsMusl.makeRustPlatform { - cargo = rustToolchain; - rustc = rustToolchain; - }).buildRustPackage { - pname = "improvise"; - version = "0.1.0"; - src = ./.; - cargoLock.lockFile = ./Cargo.lock; - } - else - (pkgs.makeRustPlatform { - cargo = rustToolchain; - rustc = rustToolchain; - }).buildRustPackage { - pname = "improvise"; - version = "0.1.0"; - src = ./.; - cargoLock.lockFile = ./Cargo.lock; - }; - }); + packages.default = + if isLinux + then + (pkgs.pkgsMusl.makeRustPlatform { + cargo = rustToolchain; + rustc = rustToolchain; + }).buildRustPackage { + pname = "improvise"; + version = "0.1.0"; + src = ./.; + cargoLock.lockFile = ./Cargo.lock; + } + else + (pkgs.makeRustPlatform { + cargo = rustToolchain; + rustc = rustToolchain; + }).buildRustPackage { + pname = "improvise"; + version = "0.1.0"; + src = ./.; + cargoLock.lockFile = ./Cargo.lock; + }; + }); }