mirror of
https://github.com/oddlama/nix-config.git
synced 2025-10-10 14:50:40 +02:00
chore: update flake
This commit is contained in:
parent
7d7ad83c9a
commit
2e654bc7a0
4 changed files with 191 additions and 428 deletions
|
@ -1,154 +0,0 @@
|
|||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
with lib; let
|
||||
cfg = config.programs.starship;
|
||||
|
||||
tomlFormat = pkgs.formats.toml {};
|
||||
|
||||
starshipCmd = "${config.home.profileDirectory}/bin/starship";
|
||||
in {
|
||||
meta.maintainers = [];
|
||||
|
||||
options.programs.starship = {
|
||||
enable = mkEnableOption "starship";
|
||||
|
||||
package = mkOption {
|
||||
type = types.package;
|
||||
default = pkgs.starship;
|
||||
defaultText = literalExpression "pkgs.starship";
|
||||
description = "The package to use for the starship binary.";
|
||||
};
|
||||
|
||||
settings = mkOption {
|
||||
type = with types; let
|
||||
prim = either bool (either int str);
|
||||
primOrPrimAttrs = either prim (attrsOf prim);
|
||||
entry = either prim (listOf primOrPrimAttrs);
|
||||
entryOrAttrsOf = t: either entry (attrsOf t);
|
||||
entries = entryOrAttrsOf (entryOrAttrsOf (entryOrAttrsOf entry));
|
||||
in
|
||||
attrsOf entries // {description = "Starship configuration";};
|
||||
default = {};
|
||||
example = literalExpression ''
|
||||
{
|
||||
add_newline = false;
|
||||
format = lib.concatStrings [
|
||||
"$line_break"
|
||||
"$package"
|
||||
"$line_break"
|
||||
"$character"
|
||||
];
|
||||
scan_timeout = 10;
|
||||
character = {
|
||||
success_symbol = "➜";
|
||||
error_symbol = "➜";
|
||||
};
|
||||
}
|
||||
'';
|
||||
description = ''
|
||||
Configuration written to
|
||||
{file}`$XDG_CONFIG_HOME/starship.toml`.
|
||||
|
||||
See <https://starship.rs/config/> for the full list
|
||||
of options.
|
||||
'';
|
||||
};
|
||||
|
||||
enableBashIntegration =
|
||||
mkEnableOption "Bash integration"
|
||||
// {
|
||||
default = true;
|
||||
};
|
||||
|
||||
enableZshIntegration =
|
||||
mkEnableOption "Zsh integration"
|
||||
// {
|
||||
default = true;
|
||||
};
|
||||
|
||||
enableFishIntegration =
|
||||
mkEnableOption "Fish integration"
|
||||
// {
|
||||
default = true;
|
||||
};
|
||||
|
||||
enableIonIntegration =
|
||||
mkEnableOption "Ion integration"
|
||||
// {
|
||||
default = true;
|
||||
};
|
||||
|
||||
enableNushellIntegration =
|
||||
mkEnableOption "Nushell integration"
|
||||
// {
|
||||
default = true;
|
||||
};
|
||||
|
||||
enableTransience = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = ''
|
||||
The TransientPrompt feature of Starship replaces previous prompts with a
|
||||
custom string. This is only a valid option for the Fish shell.
|
||||
|
||||
For documentation on how to change the default replacement string and
|
||||
for more information visit
|
||||
https://starship.rs/advanced-config/#transientprompt-and-transientrightprompt-in-cmd
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
home.packages = [cfg.package];
|
||||
|
||||
xdg.configFile."starship.toml" = mkIf (cfg.settings != {}) {
|
||||
source = tomlFormat.generate "starship-config" cfg.settings;
|
||||
};
|
||||
|
||||
programs.bash.initExtra = mkIf cfg.enableBashIntegration ''
|
||||
if [[ $TERM != "dumb" ]]; then
|
||||
eval "$(${starshipCmd} init bash --print-full-init)"
|
||||
fi
|
||||
'';
|
||||
|
||||
programs.zsh.initExtra = mkIf cfg.enableZshIntegration ''
|
||||
if [[ $TERM != "dumb" ]]; then
|
||||
eval "$(${starshipCmd} init zsh)"
|
||||
fi
|
||||
'';
|
||||
|
||||
programs.fish.interactiveShellInit = mkIf cfg.enableFishIntegration ''
|
||||
if test "$TERM" != "dumb"
|
||||
eval (${starshipCmd} init fish)
|
||||
${lib.optionalString cfg.enableTransience "enable_transience"}
|
||||
end
|
||||
'';
|
||||
|
||||
programs.ion.initExtra = mkIf cfg.enableIonIntegration ''
|
||||
if test $TERM != "dumb"
|
||||
eval $(${starshipCmd} init ion)
|
||||
end
|
||||
'';
|
||||
|
||||
programs.nushell = mkIf cfg.enableNushellIntegration {
|
||||
# Unfortunately nushell doesn't allow conditionally sourcing nor
|
||||
# conditionally setting (global) environment variables, which is why the
|
||||
# check for terminal compatibility (as seen above for the other shells) is
|
||||
# not done here.
|
||||
extraEnv = ''
|
||||
let starship_cache = "${config.xdg.cacheHome}/starship"
|
||||
if not ($starship_cache | path exists) {
|
||||
mkdir $starship_cache
|
||||
}
|
||||
${starshipCmd} init nu | save --force ${config.xdg.cacheHome}/starship/init.nu
|
||||
'';
|
||||
extraConfig = ''
|
||||
source ${config.xdg.cacheHome}/starship/init.nu
|
||||
'';
|
||||
};
|
||||
};
|
||||
}
|
|
@ -1,28 +1,6 @@
|
|||
{
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
disabledModules = ["programs/starship.nix"];
|
||||
imports = [./starship-module.nix];
|
||||
|
||||
{lib, ...}: {
|
||||
programs.starship = {
|
||||
enable = true;
|
||||
package = let
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "oddlama";
|
||||
repo = "starship";
|
||||
rev = "feat-more-dynamic-username-and-hostname";
|
||||
hash = "sha256-afZO5WSVy9hWRz8Mki3ayCwdvZDZt9L1yegrjRnqYko=";
|
||||
};
|
||||
in
|
||||
pkgs.starship.overrideAttrs (_finalAttrs: previousAttrs: {
|
||||
inherit src;
|
||||
cargoDeps = previousAttrs.cargoDeps.overrideAttrs (_: {
|
||||
inherit src;
|
||||
outputHash = "sha256-bmswPBJi2YpnhnS77S++/+SQnlerWWRqFZPCZkBUeFg=";
|
||||
});
|
||||
});
|
||||
settings = {
|
||||
add_newline = false;
|
||||
format = lib.concatStrings [
|
||||
|
@ -45,17 +23,16 @@
|
|||
];
|
||||
command_timeout = 60; # 60ms must be enough. I like a responsive prompt more than additional git information.
|
||||
username = {
|
||||
format = "[$user]($style) ";
|
||||
show_if_root = false;
|
||||
show_if_ssh = false;
|
||||
style = "yellow";
|
||||
format = "[$user]($style)";
|
||||
style_root = "bold red";
|
||||
style_user = "bold purple";
|
||||
aliases.root = "";
|
||||
};
|
||||
hostname = {
|
||||
format = "[$hostname]($style)[$ssh_symbol](green)";
|
||||
ssh_only = false;
|
||||
ssh_only = true;
|
||||
ssh_symbol = " ";
|
||||
style = "bold purple";
|
||||
user_overrides.root.style = "bold red";
|
||||
style = "bold red";
|
||||
};
|
||||
directory = {
|
||||
format = "[$path]($style)[$read_only]($read_only_style)";
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue