diff options
Diffstat (limited to 'flake.nix')
-rw-r--r-- | flake.nix | 99 |
1 files changed, 66 insertions, 33 deletions
@@ -14,10 +14,14 @@ }; }; - outputs = inputs@{ nixCargoIntegration, ... }: + outputs = inputs @ { + nixpkgs, + nixCargoIntegration, + ... + }: nixCargoIntegration.lib.makeOutputs { root = ./.; - renameOutputs = { "helix-term" = "helix"; }; + 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 = { @@ -25,41 +29,70 @@ package = "helix"; }; overrides = { - cCompiler = common: if common.pkgs.stdenv.isLinux then common.pkgs.gcc else common.pkgs.clang; + cCompiler = common: + with common.pkgs; + if stdenv.isLinux + then gcc + else clang; crateOverrides = common: _: { - helix-term = prev: - let - inherit (common) pkgs; - grammars = pkgs.callPackage ./grammars.nix { }; - runtimeDir = pkgs.runCommand "helix-runtime" { } '' - mkdir -p $out - ln -s ${common.root}/runtime/* $out - rm -r $out/grammars - ln -s ${grammars} $out/grammars - ''; - in - { - # disable fetching and building of tree-sitter grammars in the helix-term build.rs - HELIX_DISABLE_AUTO_GRAMMAR_BUILD = "1"; - # link languages and theme toml files since helix-term expects them (for tests) - preConfigure = "ln -s ${common.root}/{languages.toml,theme.toml,base16_theme.toml} .."; - buildInputs = (prev.buildInputs or [ ]) ++ [ common.cCompiler.cc.lib ]; - nativeBuildInputs = [ pkgs.makeWrapper ]; + helix-term = prev: let + inherit (common) pkgs; + mkRootPath = rel: + builtins.path { + path = "${common.root}/${rel}"; + name = rel; + }; + grammars = pkgs.callPackage ./grammars.nix {}; + runtimeDir = pkgs.runCommandNoCC "helix-runtime" {} '' + mkdir -p $out + ln -s ${mkRootPath "runtime"}/* $out + rm -r $out/grammars + ln -s ${grammars} $out/grammars + ''; + in { + # disable fetching and building of tree-sitter grammars in the helix-term build.rs + HELIX_DISABLE_AUTO_GRAMMAR_BUILD = "1"; + # link languages and theme toml files since helix-term expects them (for tests) + preConfigure = + pkgs.lib.concatMapStringsSep + "\n" + (path: "ln -sf ${mkRootPath path} ..") + ["languages.toml" "theme.toml" "base16_theme.toml"]; + buildInputs = (prev.buildInputs or []) ++ [common.cCompiler.cc.lib]; + nativeBuildInputs = [pkgs.makeWrapper]; - postFixup = '' - if [ -f "$out/bin/hx" ]; then - wrapProgram "$out/bin/hx" --set HELIX_RUNTIME "${runtimeDir}" - fi - ''; - }; + postFixup = '' + if [ -f "$out/bin/hx" ]; then + wrapProgram "$out/bin/hx" --set HELIX_RUNTIME "${runtimeDir}" + fi + ''; + }; }; shell = common: prev: { - packages = prev.packages ++ (with common.pkgs; [ lld_13 lldb cargo-tarpaulin cargo-flamegraph ]); - env = prev.env ++ [ - { name = "HELIX_RUNTIME"; eval = "$PWD/runtime"; } - { name = "RUST_BACKTRACE"; value = "1"; } - { name = "RUSTFLAGS"; value = if common.pkgs.stdenv.isLinux then "-C link-arg=-fuse-ld=lld -C target-cpu=native -Clink-arg=-Wl,--no-rosegment" else ""; } - ]; + packages = + prev.packages + ++ ( + with common.pkgs; [lld_13 lldb cargo-tarpaulin cargo-flamegraph] + ); + env = + prev.env + ++ [ + { + name = "HELIX_RUNTIME"; + eval = "$PWD/runtime"; + } + { + name = "RUST_BACKTRACE"; + value = "1"; + } + { + name = "RUSTFLAGS"; + value = + if common.pkgs.stdenv.isLinux + then "-C link-arg=-fuse-ld=lld -C target-cpu=native -Clink-arg=-Wl,--no-rosegment" + else ""; + } + ]; }; }; }; |