Drop the patch to fish source code, instead opting to employ fish's inbuilt share/fish/vendor_conf.d to add custom code to fish. This is both a bit simpler, and makes it so fish does not have to be compiled on every update to it's source / to my configuration.
46 lines
1.2 KiB
Nix
46 lines
1.2 KiB
Nix
# This shell setup was originally inspired by sioodmy.
|
|
# Some further cool tricks, like using vendor_conf.d to avoid having
|
|
# to build fish myself, are taken from viperml's setup.
|
|
{pkgs, ...}: let
|
|
inherit (pkgs) lib;
|
|
inherit (lib.strings) concatStringsSep;
|
|
inherit (lib.attrsets) mapAttrsToList;
|
|
|
|
toml = pkgs.formats.toml {};
|
|
starship-config = import ./starship.nix;
|
|
aliases = import ./aliases.nix {inherit pkgs;};
|
|
vendorConf = "share/fish/vendor_conf.d";
|
|
|
|
fishinit = import ./fishinit.nix {
|
|
inherit
|
|
pkgs
|
|
aliasesStr
|
|
vendorConf
|
|
;
|
|
};
|
|
|
|
aliasesStr =
|
|
mapAttrsToList (k: v: "alias ${k}=\"${v}\"") aliases
|
|
|> concatStringsSep "\n";
|
|
|
|
packages = import ./packages.nix pkgs;
|
|
in
|
|
(pkgs.symlinkJoin {
|
|
name = "fish";
|
|
paths = [pkgs.fish] ++ packages;
|
|
nativeBuildInputs = [pkgs.makeWrapper];
|
|
postBuild = ''
|
|
wrapProgram $out/bin/fish \
|
|
--set STARSHIP_CONFIG "${toml.generate "starship.toml" starship-config}" \
|
|
--prefix XDG_DATA_DIRS : "${
|
|
lib.makeSearchPathOutput "out" "share" [
|
|
fishinit
|
|
]
|
|
}"
|
|
'';
|
|
})
|
|
.overrideAttrs (_: {
|
|
passthru = {
|
|
shellPath = "/bin/fish";
|
|
};
|
|
})
|