Files
AsdamNixOS/modules/features/zsh.nix

184 lines
5.0 KiB
Nix

{ inputs, lib, self, ... }: {
flake.nixosModules.zsh = { pkgs, config, ... }: {
imports = [ # Include the results of the hardware scan.
self.nixosModules.fastfetch
];
programs.zsh.enable = true;
programs.zsh.syntaxHighlighting.enable = true;
programs.zsh.histSize=1000;
programs.zsh.histFile="${config.users.users.adam.home}/.local/histfile";
programs.zsh.setOptions= [
"beep"
"prompt_subst"
];
programs.zsh.shellInit =
''
bindkey -v
bindkey "^H" backward-delete-char
bindkey "^?" backward-delete-char
'';
environment.sessionVariables = rec {
EDITOR = "nvim";
BROWSER = "firefox";
ZDOTDIR = "/etc/";
};
programs.zsh.shellAliases = {
fs = "lf";
ls = "ls --color=auto";
cp = "cp -v";
mkdir = "mkdir -v";
mv = "mv -v";
rm = "rm -v";
};
programs.zsh.promptInit =
''
autoload -Uz add-zsh-hook vcs_info
add-zsh-hook precmd vcs_info
sep=""
rsep=""
purple="#957fb8"
blue="#7e9cd8"
black="#090618"
green="#76946a"
zstyle ':vcs_info:*' formats "%F{$purple}%K{$blue}$sep%k%f%K{$blue}%F{$black} (%r:%b) %F{$blue}"
export PS1='%K{$purple}%F{$black} %1~ %F{$purple}''${vcs_info_msg_0_}%k$sep%k%f '
export RPROMPT="%F{$green}$rsep%f%K{$green}%F{$black} %n@%m %f%k"
tty > /dev/null && (clear ; fastfetch)
'';
system.userActivationScripts.zshrc = "touch .zshrc";
};
flake.nixosModules.fastfetch = { pkgs, ... }: let
selfpkgs = self.packages."${pkgs.stdenv.hostPlatform.system}";
in {
environment.systemPackages = [
selfpkgs.myFastfetch
];
};
perSystem = { pkgs, ... }: let
conf =
pkgs.writeText "config.jsonc"
''
{
"''$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json",
"logo": {
"type": "auto",
"color": {
"1": "35",
},
},
"display": {
"separator": " ",
"constants": [
""
],
"key": {
"type": "icon",
"paddingLeft": 2
},
"color": {
"keys": "35",
},
},
"modules": [
{
"type": "custom", // HardwareStart
"format": "{''$1} {#1}Hardware Information{#} {''$1}"
},
//"host",
"cpu",
"gpu",
"disk",
"swap",
"display",
"brightness",
"battery",
"poweradapter",
"bluetooth",
//"sound",
"memory",
"gamepad",
{
"type": "custom", // SoftwareStart
"format": "{''$1} {#1}Software Information{#} {''$1}"
},
/*{
"type": "title",
"keyIcon": "",
"key": "Title", // Title module has no key by default, so that icon is not displayed
"format": "{user-name}@{host-name}"
},*/
"os",
//"kernel",
//"lm",
"de",
"wm",
"shell",
"terminal",
"terminalfont",
"theme",
"icons",
"wallpaper",
"packages",
"uptime",
//"media",
/*{
"type": "localip",
"compact": true
},
"publicip",
{
"type": "wifi",
"format": "{ssid}"
},
"locale",*/
{
"type": "custom", // InformationEnd
"format": "{''$1}{''$1}"
},
{
"type": "colors",
"paddingLeft": 2,
"symbol": "circle"
}
]
}
'';
logo =
pkgs.writeText "navi.txt"
''
/X\
XXX
\X/
/X/ /XXXXXXXXX\ \X\
/XXX/ /XXX/ \XXX\ \XXX\
/XX/ /XXX/ \XXX\ \XX\
/XX/ XXX /XXX\ XXX \XX\
XXX XXX /XXXXX\ XXX XXX
XXX\ XXX \XXXXX/ XXX /XXX
\XX\ \XX\ \XXX/ /XX/ /XX/
\XXX\ \XX\ /XX/ /XXX/
XX \XX\ \XXX\ /XXX/ /XX/ XX
XX \XX\ /XX/ XX
XXX XXX
XXX XXX
\XX\ /XX/ \XX\ /XX/
\XXXXXXX/ \XXXXXXX/
'';
in {
packages.myFastfetch = inputs.wrappers.lib.wrapPackage {
inherit pkgs;
package = pkgs.fastfetch;
flags = {
"--config" = "${conf}";
"--logo" = "${logo}";
};
};
};
}