diff options
Diffstat (limited to 'flake.nix')
-rw-r--r-- | flake.nix | 82 |
1 files changed, 41 insertions, 41 deletions
@@ -3,54 +3,54 @@ inputs = { nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; - flake-utils.url = "github:numtide/flake-utils"; - rust-overlay.url = "github:oxalica/rust-overlay"; - naersk.url = "github:nmattia/naersk"; - helix = { + nixCargoIntegration = { + url = "github:yusdacra/nix-cargo-integration"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + flakeCompat = { + url = "github:edolstra/flake-compat"; flake = false; - url = "https://github.com/helix-editor/helix"; + }; + helix = { + url = "https://github.com/helix-editor/helix.git"; type = "git"; + flake = false; submodules = true; }; }; - outputs = inputs@{ self, nixpkgs, naersk, rust-overlay, flake-utils, ... }: - let - rust = pkgs: - (pkgs.rustChannelOf { - date = "2021-05-01"; - channel = "nightly"; - }).minimal; # cargo, rustc and rust-std - - mkNaerskLib = system: pkgs: - naersk.lib."${system}".override { - # naersk can't build with stable?! - # inherit (pkgs.rust-bin.stable.latest) rustc cargo; - rustc = rust pkgs; - cargo = rust pkgs; + outputs = inputs@{ nixCargoIntegration, helix, ... }: + nixCargoIntegration.lib.makeOutputs { + root = ./.; + buildPlatform = "crate2nix"; + renameOutputs = { "helix-term" = "helix"; }; + # Set default app to hx (binary is from helix-term release build) + # Set default package to helix-term release build + defaultOutputs = { app = "hx"; package = "helix"; }; + overrides = { + crateOverrides = common: _: { + helix-term = prev: { buildInputs = (prev.buildInputs or [ ]) ++ [ common.cCompiler.cc.lib ]; }; + # link runtime since helix-core expects it because of embed_runtime feature + helix-core = _: { preConfigure = "ln -s ${common.root + "/runtime"} ../runtime"; }; + # link languages and theme toml files since helix-view expects them + helix-view = _: { preConfigure = "ln -s ${common.root}/{languages.toml,theme.toml} .."; }; + helix-syntax = prev: { + src = common.pkgs.runCommand prev.src.name { } '' + mkdir -p $out + ln -s ${prev.src}/* $out + ln -sf ${helix}/helix-syntax/languages $out + ''; + }; }; - - pkg = naerskLib: - naerskLib.buildPackage { - pname = "helix"; - root = inputs.helix; - cargoBuildOptions = self: self ++ [ ''--features "embed_runtime"'' ]; + shell = common: prev: { + packages = prev.packages ++ (with common.pkgs; [ lld_10 lldb ]); + env = prev.env ++ [ + { name = "HELIX_RUNTIME"; eval = "$PWD/runtime"; } + { name = "RUST_BACKTRACE"; value = "1"; } + { name = "RUSTFLAGS"; value = "-C link-arg=-fuse-ld=lld -C target-cpu=native"; } + ]; }; - - in flake-utils.lib.eachDefaultSystem (system: - let - pkgs = import nixpkgs { - inherit system; - overlays = [ rust-overlay.overlay ]; - }; - naerskLib = mkNaerskLib system pkgs; - in rec { - packages.helix = pkg naerskLib; - defaultPackage = packages.helix; - devShell = pkgs.callPackage ./shell.nix { }; - }) // { - overlay = final: prev: - let naerskLib = mkNaerskLib prev.system final; - in (rust-overlay.overlay final prev) // { helix = pkg naerskLib; }; + build = _: prev: { rootFeatures = prev.rootFeatures ++ [ "embed_runtime" ]; }; }; + }; } |