shell: stop fish from having to be built every time
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.
This commit is contained in:
parent
2c8ed668ca
commit
24f35c4ccd
3 changed files with 31 additions and 27 deletions
|
@ -1,34 +1,42 @@
|
||||||
# This shell setup was inspired by sioodmy. Check out his setup!
|
# 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
|
{pkgs, ...}: let
|
||||||
|
inherit (pkgs) lib;
|
||||||
|
inherit (lib.strings) concatStringsSep;
|
||||||
|
inherit (lib.attrsets) mapAttrsToList;
|
||||||
|
|
||||||
toml = pkgs.formats.toml {};
|
toml = pkgs.formats.toml {};
|
||||||
starship-config = import ./starship.nix;
|
starship-config = import ./starship.nix;
|
||||||
aliases = import ./aliases.nix {inherit pkgs;};
|
aliases = import ./aliases.nix {inherit pkgs;};
|
||||||
|
vendorConf = "share/fish/vendor_conf.d";
|
||||||
|
|
||||||
fishinit = import ./fishinit.nix {inherit pkgs aliasesStr;};
|
fishinit = import ./fishinit.nix {
|
||||||
|
inherit
|
||||||
|
pkgs
|
||||||
|
aliasesStr
|
||||||
|
vendorConf
|
||||||
|
;
|
||||||
|
};
|
||||||
|
|
||||||
aliasesStr =
|
aliasesStr =
|
||||||
mapAttrsToList (k: v: "alias ${k}=\"${v}\"") aliases
|
mapAttrsToList (k: v: "alias ${k}=\"${v}\"") aliases
|
||||||
|> concatStringsSep "\n";
|
|> concatStringsSep "\n";
|
||||||
|
|
||||||
packages = import ./packages.nix pkgs;
|
packages = import ./packages.nix pkgs;
|
||||||
|
|
||||||
# this was taken from viperml, check out his config for this!
|
|
||||||
custom-fish = pkgs.fish.overrideAttrs (old: {
|
|
||||||
patches = [./fish-on-tmpfs.patch];
|
|
||||||
doCheck = false;
|
|
||||||
postInstall =
|
|
||||||
old.postInstall
|
|
||||||
+ ''
|
|
||||||
echo "source ${fishinit}" >> $out/etc/fish/config.fish
|
|
||||||
'';
|
|
||||||
});
|
|
||||||
in
|
in
|
||||||
(pkgs.symlinkJoin {
|
(pkgs.symlinkJoin {
|
||||||
name = "fish";
|
name = "fish";
|
||||||
paths = [custom-fish] ++ packages;
|
paths = [pkgs.fish] ++ packages;
|
||||||
nativeBuildInputs = [pkgs.makeWrapper];
|
nativeBuildInputs = [pkgs.makeWrapper];
|
||||||
postBuild = ''
|
postBuild = ''
|
||||||
wrapProgram $out/bin/fish --set STARSHIP_CONFIG "${toml.generate "starship.toml" starship-config}" \
|
wrapProgram $out/bin/fish \
|
||||||
|
--set STARSHIP_CONFIG "${toml.generate "starship.toml" starship-config}" \
|
||||||
|
--prefix XDG_DATA_DIRS : "${
|
||||||
|
lib.makeSearchPathOutput "out" "share" [
|
||||||
|
fishinit
|
||||||
|
]
|
||||||
|
}"
|
||||||
'';
|
'';
|
||||||
})
|
})
|
||||||
.overrideAttrs (_: {
|
.overrideAttrs (_: {
|
||||||
|
|
|
@ -1,10 +0,0 @@
|
||||||
--- a/src/path.rs
|
|
||||||
+++ b/src/path.rs
|
|
||||||
@@ -781,7 +781,7 @@ fn get_cache_directory() -> &'static BaseDirectory {
|
|
||||||
|
|
||||||
fn get_config_directory() -> &'static BaseDirectory {
|
|
||||||
static DIR: Lazy<BaseDirectory> =
|
|
||||||
- Lazy::new(|| make_base_directory(L!("XDG_CONFIG_HOME"), L!("/.config/fish")));
|
|
||||||
+ Lazy::new(|| make_base_directory(L!("XDG_RUNTIME_DIR"), L!("/.config/fish")));
|
|
||||||
&DIR
|
|
||||||
}
|
|
|
@ -1,9 +1,11 @@
|
||||||
{
|
{
|
||||||
pkgs,
|
pkgs,
|
||||||
aliasesStr,
|
aliasesStr,
|
||||||
|
vendorConf,
|
||||||
}:
|
}:
|
||||||
pkgs.writeText "config.fish" ''
|
pkgs.writeTextDir "${vendorConf}/blox_config.fish"
|
||||||
|
# fish
|
||||||
|
''
|
||||||
# source ${pkgs.fishPlugins.sponge}/share/zsh-defer/zsh-defer.plugin.zsh
|
# source ${pkgs.fishPlugins.sponge}/share/zsh-defer/zsh-defer.plugin.zsh
|
||||||
${pkgs.atuin}/bin/atuin init fish | source
|
${pkgs.atuin}/bin/atuin init fish | source
|
||||||
${pkgs.zoxide}/bin/zoxide init fish | source
|
${pkgs.zoxide}/bin/zoxide init fish | source
|
||||||
|
@ -11,6 +13,10 @@ pkgs.writeText "config.fish" ''
|
||||||
${pkgs.direnv}/bin/direnv hook fish | source
|
${pkgs.direnv}/bin/direnv hook fish | source
|
||||||
${pkgs.pay-respects}/bin/pay-respects fish --alias f --nocnf | source
|
${pkgs.pay-respects}/bin/pay-respects fish --alias f --nocnf | source
|
||||||
|
|
||||||
|
# I need to source /etc/profile using foreign-env, to get stuff set by nixos, e.g. environment.systemVariables.
|
||||||
|
# set -p fish_function_path ${pkgs.fishPlugins.foreign-env}/share/fish/vendor_functions.d
|
||||||
|
|
||||||
|
# fenv source /etc/profile
|
||||||
|
|
||||||
source ${./config.fish}
|
source ${./config.fish}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue