142 lines
4.4 KiB
Nix
142 lines
4.4 KiB
Nix
{ config, pkgs, ... }: {
|
|
#TODO: Submit a PR to nixpkgs to add xonsh support to the Starship module
|
|
# After that, we can remove this import and the disabledModules line
|
|
disabledModules = [ "programs/starship.nix" ];
|
|
imports = [ /bulk/home/cswimr/Projects/nixpkgs/nixos/modules/programs/starship.nix ];
|
|
|
|
# starship - a customizable prompt for any shell
|
|
programs.starship = {
|
|
enable = true;
|
|
# custom settings
|
|
settings = {
|
|
format =
|
|
"[](bg:#1e1e2e fg:#a6e3a1)$username$hostname[](fg:#a6e3a1 bg:#89b4fa)$directory[](fg:#89b4fa bg:#cba6f7)$direnv[](fg:#cba6f7 bg:#f9e2af)$git_branch$git_status[](fg:#f9e2af bg:#1e1e2e)$character";
|
|
username = {
|
|
show_always = true;
|
|
format = "[ $user@]($style)";
|
|
style_user = "fg:#313244 bg:#a6e3a1";
|
|
style_root = "fg:#313244 bg:#a6e3a1";
|
|
};
|
|
hostname = {
|
|
ssh_only = false;
|
|
format = "[$hostname $ssh_symbol]($style)";
|
|
style = "fg:#313244 bg:#a6e3a1";
|
|
};
|
|
directory = {
|
|
format = "[ $path ]($style)";
|
|
style = "fg:#313244 bg:#89b4fa";
|
|
};
|
|
git_branch = {
|
|
format = "[ $symbol$branch(:$remote_branch) ]($style)";
|
|
symbol = " ";
|
|
style = "fg:#313244 bg:#f9e2af";
|
|
};
|
|
direnv = {
|
|
symbol = " ";
|
|
format = "[ $symbol$loaded/$allowed ]($style)";
|
|
disabled = false;
|
|
style = "fg:#313244 bg:#cba6f7";
|
|
};
|
|
git_status = {
|
|
format = "[$all_status]($style)";
|
|
style = "fg:#313244 bg:#f9e2af";
|
|
};
|
|
git_metrics = {
|
|
format = "([+$added]($added_style))[]($added_style)";
|
|
added_style = "fg:#313244 bg:#f9e2af";
|
|
deleted_style = "fg:bright-red bg:235";
|
|
disabled = false;
|
|
};
|
|
hg_branch = {
|
|
format = "[ $symbol$branch ]($style)";
|
|
symbol = " ";
|
|
};
|
|
cmd_duration = {
|
|
format = "[ $duration ]($style)";
|
|
style = "fg:bright-white bg:18";
|
|
};
|
|
character = {
|
|
success_symbol = "[ ](#a6e3a1) ";
|
|
error_symbol = "[ ✗](#f38ba8) ";
|
|
};
|
|
add_newline = false;
|
|
};
|
|
};
|
|
|
|
# enable bash completions
|
|
# even though we don't use bash as our shell, xonsh uses bash completion scripts
|
|
programs.bash.completion.enable = true;
|
|
|
|
users.defaultUserShell = pkgs.xonsh;
|
|
programs.xonsh = let bashcfg = config.programs.bash;
|
|
in {
|
|
enable = true;
|
|
config = ''
|
|
$BASH_COMPLETIONS = ('${bashcfg.completion.package}/etc/profile.d/bash_completion.sh')
|
|
#execx($(starship init xonsh))
|
|
#xontrib load cd
|
|
xontrib load direnv
|
|
xontrib load sh
|
|
'';
|
|
package = pkgs.xonsh.override {
|
|
extraPackages = ps: [
|
|
# (ps.buildPythonPackage rec {
|
|
# name = "xontrib-cd";
|
|
# version = "0.3.1";
|
|
|
|
# src = pkgs.fetchFromGitHub {
|
|
# owner = "eugenesvk";
|
|
# repo = name;
|
|
# rev = version;
|
|
# sha256 = "XxSxjyCg7PeX1v3e2KKicvAPmNeq+qVqbW4fXTwAiic=";
|
|
# };
|
|
|
|
# meta = {
|
|
# homepage = "https://github.com/eugenesvk/xontrib-cd";
|
|
# description =
|
|
# "`cd` to any path without escaping in xonsh shell: `cd ~/[te] st`";
|
|
# license = pkgs.lib.licenses.mit;
|
|
# maintainers = [ "cswimr" ];
|
|
# };
|
|
# })
|
|
(ps.buildPythonPackage rec {
|
|
name = "xonsh-direnv";
|
|
version = "1.6.5";
|
|
|
|
src = pkgs.fetchFromGitHub {
|
|
owner = "74th";
|
|
repo = name;
|
|
rev = version;
|
|
sha256 = "huBJ7WknVCk+WgZaXHlL+Y1sqsn6TYqMP29/fsUPSyU=";
|
|
};
|
|
|
|
meta = {
|
|
homepage = "https://github.com/74th/xonsh-direnv";
|
|
description = "xonsh extension for using direnv";
|
|
license = pkgs.lib.licenses.mit;
|
|
maintainers = [ "cswimr" ];
|
|
};
|
|
})
|
|
(ps.buildPythonPackage rec {
|
|
name = "xontrib-sh";
|
|
version = "0.3.1";
|
|
|
|
src = pkgs.fetchFromGitHub {
|
|
owner = "anki-code";
|
|
repo = name;
|
|
rev = version;
|
|
sha256 = "KL/AxcsvjxqxvjDlf1axitgME3T+iyuW6OFb1foRzN8=";
|
|
};
|
|
|
|
meta = {
|
|
homepage = "https://github.com/anki-code/xontrib-sh";
|
|
description =
|
|
"Paste and run commands from bash, zsh, fish, tcsh in xonsh shell.";
|
|
license = pkgs.lib.licenses.mit;
|
|
maintainers = [ "cswimr" ];
|
|
};
|
|
})
|
|
];
|
|
};
|
|
};
|
|
}
|