{ pkgs, config, ... }:
let
xdg_data = config.xdg.dataHome;
xdg_config = config.xdg.configHome;
xdg_cache = config.xdg.cacheHome;
xdg_state = config.xdg.stateHome;
in
rec {
xdg.enable = true;
home = {
sessionVariables = {
EDITOR = "nvim";
GHCUP_USE_XDG_DIRS = "true";
HISTFILE = "${xdg_state}/bash/history";
CABAL_CONFIG = "${xdg_config}/cabal/config";
CABAL_DIR = "${xdg_data}/cabal";
DOCKER_CONFIG = "${xdg_config}/docker";
IPYTHONDIR = "${xdg_config}/ipython";
JUPYTER_CONFIG_DIR = "${xdg_config}/jupyter";
LESSHISTFILE = "${xdg_cache}/less/history";
MPLCONFIGDIR = "${xdg_config}/matplotlib";
TERMINFO = "${xdg_data}/terminfo";
PSQL_HISTORY = "${xdg_data}/psql_history";
BUNDLE_USER_CONFIG = "${xdg_config}/bundle";
BUNDLE_USER_CACHE = "${xdg_cache}/bundle";
BUNDLE_USER_PLUGIN = "${xdg_data}/bundle";
GRADLE_USER_HOME = "${xdg_data}/gradle";
ANDROID_USER_HOME = "${xdg_data}/android";
XDG_CONFIG_HOME = "${xdg_config}";
GOPATH = "${xdg_data}/go";
MINT_PATH = "${xdg_data}/mint";
MINT_LINK_PATH = "${xdg_data}/mint/bin";
};
shellAliases = {
cat = "bat --plain";
fopen = "open (fzf)";
rebuild = "darwin-rebuild switch --flake ~/.config/darwin#weethet";
yarn = "yarn --use-yarnrc ~/.config/yarnrc";
brew = "/opt/homebrew/bin/brew";
mint = "/opt/homebrew/bin/mint";
};
};
programs.nushell = {
enable = true;
environmentVariables = {
EDITOR = "nvim";
CARGO_HOME = "${xdg_data}/cargo";
RUSTUP_HOME = "${xdg_data}/rustup";
};
shellAliases = home.shellAliases;
configFile = {
text = ''
$env.config = {
show_banner: false,
filesize: {
metric: true,
}
table: {
mode: rounded
}
rm: {
always_trash: true # always act as if -t was given. Can be overridden with -p
}
}
'';
};
envFile = {
text = ''
$env.NIX_SSL_CERT_FILE = '/etc/ssl/certs/ca-certificates.crt'
$env.PATH = ($env.PATH
| split row (char esep)
| prepend [
'/etc/profiles/per-user/weethet/bin',
'/nix/var/nix/profiles/default/bin',
'/run/current-system/sw/bin/'
]
| append [
'${xdg_data}/cargo/bin',
]
)
$env.NIX_PROFILES = [
'/nix/var/nix/profiles/default',
'/etc/profiles/per-user/weethet/bin'
]
'';
};
};
programs.fish = {
enable = true;
interactiveShellInit = ''
set fish_greeting
set tmp_paths $fish_user_paths
set -x fish_user_paths
for p in (string split ":" $PATH)
if string match -q '/nix/store/*/bin' $p
set -a fish_user_paths $p
end
end
# for p in (string split ":" $PATH)
# if string match -q '*/.devenv/*/bin' $p
# set -a fish_user_paths $p
# end
# end
for p in (string split " " $NIX_PROFILES)
set -a fish_user_paths $p/bin
end
set -a fish_user_paths $HOME/.local/bin
set -a fish_user_paths $HOME/Library/Python/3.9/bin
set -a fish_user_paths $HOME/.local/share/cargo/bin
set -a fish_user_paths ${xdg_data}/mint/bin
for p in $tmp_paths
if not contains $p $fish_user_paths
set -a fish_user_paths $p
end
end
'';
};
xdg.configFile."fish/themes" = {
source =
pkgs.fetchFromGitHub {
owner = "vitallium";
repo = "tokyonight-fish";
rev = "26a5f1d02ee6bdae1d7793a656d276de1402d315";
sha256 = "M2eP7qLhS+Iw/QaKtyoAFqgVgRIUkaSmoC6xe2mhhcM=";
}
+ "/themes";
};
}