aboutsummaryrefslogtreecommitdiff
path: root/flake.nix
diff options
context:
space:
mode:
Diffstat (limited to 'flake.nix')
-rw-r--r--flake.nix82
1 files changed, 41 insertions, 41 deletions
diff --git a/flake.nix b/flake.nix
index 82ee5073..a5e44000 100644
--- a/flake.nix
+++ b/flake.nix
@@ -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" ]; };
};
+ };
}