Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'flake.nix')
| -rw-r--r-- | flake.nix | 124 |
1 files changed, 60 insertions, 64 deletions
@@ -3,6 +3,7 @@ inputs = { nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; + flake-utils.url = "github:numtide/flake-utils"; rust-overlay = { url = "github:oxalica/rust-overlay"; inputs.nixpkgs.follows = "nixpkgs"; @@ -12,82 +13,77 @@ outputs = { self, nixpkgs, + flake-utils, rust-overlay, ... }: let - inherit (nixpkgs) lib; - eachSystem = lib.genAttrs lib.systems.flakeExposed; - pkgsFor = eachSystem (system: - import nixpkgs { - localSystem.system = system; - overlays = [(import rust-overlay) self.overlays.helix]; - }); gitRev = self.rev or self.dirtyRev or null; - in { - packages = eachSystem (system: { - inherit (pkgsFor.${system}) helix; - /* - The default Helix build. Uses the latest stable Rust toolchain, and unstable - nixpkgs. + in + flake-utils.lib.eachDefaultSystem (system: let + pkgs = import nixpkgs { + inherit system; + overlays = [(import rust-overlay)]; + }; - The build inputs can be overridden with the following: + # Get Helix's MSRV toolchain to build with by default. + msrvToolchain = pkgs.pkgsBuildHost.rust-bin.fromRustupToolchainFile ./rust-toolchain.toml; + msrvPlatform = pkgs.makeRustPlatform { + cargo = msrvToolchain; + rustc = msrvToolchain; + }; + in { + packages = rec { + helix = pkgs.callPackage ./default.nix {inherit gitRev;}; - packages.${system}.default.override { rustPlatform = newPlatform; }; + /** + The default Helix build. Uses the latest stable Rust toolchain, and unstable + nixpkgs. + + The build inputs can be overriden with the following: + + packages.${system}.default.override { rustPlatform = newPlatform; }; + + Overriding a derivation attribute can be done as well: + + packages.${system}.default.overrideAttrs { buildType = "debug"; }; + */ + default = helix; + }; - Overriding a derivation attribute can be done as well: + checks.helix = self.outputs.packages.${system}.helix.override { + buildType = "debug"; + rustPlatform = msrvPlatform; + }; - packages.${system}.default.overrideAttrs { buildType = "debug"; }; - */ - default = self.packages.${system}.helix; - }); - checks = - lib.mapAttrs (system: pkgs: let - # Get Helix's MSRV toolchain to build with by default. - msrvToolchain = pkgs.pkgsBuildHost.rust-bin.fromRustupToolchainFile ./rust-toolchain.toml; - msrvPlatform = pkgs.makeRustPlatform { - cargo = msrvToolchain; - rustc = msrvToolchain; - }; - in { - helix = self.packages.${system}.helix.override { - rustPlatform = msrvPlatform; + # Devshell behavior is preserved. + devShells.default = let + commonRustFlagsEnv = "-C link-arg=-fuse-ld=lld -C target-cpu=native --cfg tokio_unstable"; + platformRustFlagsEnv = pkgs.lib.optionalString pkgs.stdenv.isLinux "-Clink-arg=-Wl,--no-rosegment"; + in + pkgs.mkShell + { + inputsFrom = [self.checks.${system}.helix]; + nativeBuildInputs = with pkgs; + [ + lld + cargo-flamegraph + rust-bin.nightly.latest.rust-analyzer + ] + ++ (lib.optional (stdenv.isx86_64 && stdenv.isLinux) cargo-tarpaulin) + ++ (lib.optional stdenv.isLinux lldb) + ++ (lib.optional stdenv.isDarwin darwin.apple_sdk.frameworks.CoreFoundation); + shellHook = '' + export RUST_BACKTRACE="1" + export RUSTFLAGS="''${RUSTFLAGS:-""} ${commonRustFlagsEnv} ${platformRustFlagsEnv}" + ''; }; - }) - pkgsFor; - - # Devshell behavior is preserved. - devShells = - lib.mapAttrs (system: pkgs: { - default = let - commonRustFlagsEnv = "-C link-arg=-fuse-ld=lld -C target-cpu=native --cfg tokio_unstable"; - platformRustFlagsEnv = lib.optionalString pkgs.stdenv.isLinux "-Clink-arg=-Wl,--no-rosegment"; - in - pkgs.mkShell { - inputsFrom = [self.checks.${system}.helix]; - nativeBuildInputs = with pkgs; - [ - lld - cargo-flamegraph - rust-bin.nightly.latest.rust-analyzer - ] - ++ (lib.optional (stdenv.isx86_64 && stdenv.isLinux) cargo-tarpaulin) - ++ (lib.optional stdenv.isLinux lldb); - shellHook = '' - export RUST_BACKTRACE="1" - export RUSTFLAGS="''${RUSTFLAGS:-""} ${commonRustFlagsEnv} ${platformRustFlagsEnv}" - ''; - }; - }) - pkgsFor; - - overlays = { - helix = final: prev: { + }) + // { + overlays.default = final: prev: { helix = final.callPackage ./default.nix {inherit gitRev;}; }; - - default = self.overlays.helix; }; - }; + nixConfig = { extra-substituters = ["https://helix.cachix.org"]; extra-trusted-public-keys = ["helix.cachix.org-1:ejp9KQpR1FBI2onstMQ34yogDm4OgU2ru6lIwPvuCVs="]; |