aboutsummaryrefslogtreecommitdiff
path: root/nixos/.flake/home/programs
diff options
context:
space:
mode:
authorJacob Janzen <jacob.a.s.janzen@gmail.com>2024-09-27 18:27:52 -0500
committerJacob Janzen <jacob.a.s.janzen@gmail.com>2024-09-27 18:27:52 -0500
commitf7229cd87555011865a1bfbed9e36230d63d891e (patch)
tree048a80d3497b6a96a6c9f9be3957639fb2814593 /nixos/.flake/home/programs
parenta9ce5f278243198310577165bb593a9eededad6c (diff)
move nixos to org
Diffstat (limited to 'nixos/.flake/home/programs')
-rw-r--r--nixos/.flake/home/programs/core.nix32
-rw-r--r--nixos/.flake/home/programs/core.org39
-rw-r--r--nixos/.flake/home/programs/fastfetch.nix79
-rw-r--r--nixos/.flake/home/programs/fastfetch.org84
-rw-r--r--nixos/.flake/home/programs/foot.org (renamed from nixos/.flake/home/programs/foot.nix)5
-rw-r--r--nixos/.flake/home/programs/git.nix9
-rw-r--r--nixos/.flake/home/programs/git.org18
-rw-r--r--nixos/.flake/home/programs/hyprlock.nix37
-rw-r--r--nixos/.flake/home/programs/hyprlock.org42
-rw-r--r--nixos/.flake/home/programs/ncmpcpp.org (renamed from nixos/.flake/home/programs/ncmpcpp.nix)5
-rw-r--r--nixos/.flake/home/programs/ssh.nix8
-rw-r--r--nixos/.flake/home/programs/ssh.org13
-rw-r--r--nixos/.flake/home/programs/waybar.nix145
-rw-r--r--nixos/.flake/home/programs/waybar.org149
-rw-r--r--nixos/.flake/home/programs/zsh.nix47
-rw-r--r--nixos/.flake/home/programs/zsh.org88
16 files changed, 443 insertions, 357 deletions
diff --git a/nixos/.flake/home/programs/core.nix b/nixos/.flake/home/programs/core.nix
deleted file mode 100644
index 7fb94d1..0000000
--- a/nixos/.flake/home/programs/core.nix
+++ /dev/null
@@ -1,32 +0,0 @@
-{ config, pkgs, ... }:
-
-{
- imports = [
- ./fastfetch.nix
- ./foot.nix
- ./git.nix
- ./hyprlock.nix
- ./ncmpcpp.nix
- ./ssh.nix
- ./waybar.nix
- ./zsh.nix
- ];
-
- home.packages = with pkgs; [
- discord # not FOSS
- fuzzel
- gcc
- htop
- hyfetch
- hyprshot
- mpc-cli
- mpv
- networkmanagerapplet
- obs-studio
- pavucontrol
- prismlauncher # minecraft
- python3
- swaybg
- texliveFull
- ];
-}
diff --git a/nixos/.flake/home/programs/core.org b/nixos/.flake/home/programs/core.org
new file mode 100644
index 0000000..7c64b46
--- /dev/null
+++ b/nixos/.flake/home/programs/core.org
@@ -0,0 +1,39 @@
+#+title: Core Program Configuration
+
+This is the core of my program configuration. This file installs programs that do not require additional configuration. Note that Discord is not FOSS and that =prismlauncher= is a launcher for Minecraft.
+#+begin_src nix :tangle ~/.flake/home/programs/core.nix :mkdirp yes
+ { config, pkgs, ... }:
+
+ {
+ imports = [
+ ./fastfetch.nix
+ ./foot.nix
+ ./git.nix
+ ./hyprlock.nix
+ ./ncmpcpp.nix
+ ./ssh.nix
+ ./waybar.nix
+ ./zsh.nix
+ ];
+
+ home.packages = with pkgs; [
+ discord # not FOSS
+ eza
+ fuzzel
+ gcc
+ htop
+ hyfetch
+ hyprshot
+ lesspipe
+ mpc-cli
+ mpv
+ networkmanagerapplet
+ obs-studio
+ pavucontrol
+ prismlauncher # minecraft
+ python3
+ swaybg
+ texliveFull
+ ];
+ }
+#+end_src
diff --git a/nixos/.flake/home/programs/fastfetch.nix b/nixos/.flake/home/programs/fastfetch.nix
deleted file mode 100644
index f143bd6..0000000
--- a/nixos/.flake/home/programs/fastfetch.nix
+++ /dev/null
@@ -1,79 +0,0 @@
-{ config, pkgs, ... }:
-
-{
- programs.fastfetch = {
- enable = true;
- settings = {
- logo = {
- type = "raw";
- source = "~/.config/fastfetch/logo.sixel";
- width = 40;
- height = 19;
- };
- display = {
- separator = " ";
- };
- modules = [
- "title"
- {
- type = "custom";
- format = "──────────────────────────────────";
- }
- {
- type = "os";
- key = "";
- }
- {
- type = "kernel";
- key = "󰞸";
- }
- {
- type = "uptime";
- key = "";
- }
- {
- type = "packages";
- key = "";
- }
- {
- type = "shell";
- key = "";
- }
- {
- type = "display";
- key = "󰍹";
- }
- {
- type = "wm";
- key = "";
- }
- {
- type = "terminal";
- key = "";
- }
- {
- type = "cpu";
- key = "";
- }
- {
- type = "gpu";
- key = "";
- }
- {
- type = "memory";
- key = "";
- }
- {
- type = "disk";
- key = "";
- }
- {
- type = "locale";
- key = "";
- }
- "break"
- "colors"
- ];
- };
- };
-}
diff --git a/nixos/.flake/home/programs/fastfetch.org b/nixos/.flake/home/programs/fastfetch.org
new file mode 100644
index 0000000..96b2044
--- /dev/null
+++ b/nixos/.flake/home/programs/fastfetch.org
@@ -0,0 +1,84 @@
+#+title: Fastfetch Configuration
+
+Specify the layout for =fastfetch=.
+#+begin_src nix :tangle ~/.flake/home/programs/fastfetch.nix :mkdirp yes
+ { config, pkgs, ... }:
+
+ {
+ programs.fastfetch = {
+ enable = true;
+ settings = {
+ logo = {
+ type = "raw";
+ source = "~/.config/fastfetch/logo.sixel";
+ width = 40;
+ height = 19;
+ };
+ display = {
+ separator = " ";
+ };
+ modules = [
+ "title"
+ {
+ type = "custom";
+ format = "──────────────────────────────────";
+ }
+ {
+ type = "os";
+ key = "";
+ }
+ {
+ type = "kernel";
+ key = "󰞸";
+ }
+ {
+ type = "uptime";
+ key = "";
+ }
+ {
+ type = "packages";
+ key = "";
+ }
+ {
+ type = "shell";
+ key = "";
+ }
+ {
+ type = "display";
+ key = "󰍹";
+ }
+ {
+ type = "wm";
+ key = "";
+ }
+ {
+ type = "terminal";
+ key = "";
+ }
+ {
+ type = "cpu";
+ key = "";
+ }
+ {
+ type = "gpu";
+ key = "";
+ }
+ {
+ type = "memory";
+ key = "";
+ }
+ {
+ type = "disk";
+ key = "";
+ }
+ {
+ type = "locale";
+ key = "";
+ }
+ "break"
+ "colors"
+ ];
+ };
+ };
+ }
+#+end_src
diff --git a/nixos/.flake/home/programs/foot.nix b/nixos/.flake/home/programs/foot.org
index 18d7263..3490bed 100644
--- a/nixos/.flake/home/programs/foot.nix
+++ b/nixos/.flake/home/programs/foot.org
@@ -1,3 +1,7 @@
+#+title: Foot Terminal Configuration
+
+Specify my font and colour scheme for =foot=.
+#+begin_src nix :tangle ~/.flake/home/programs/foot.nix :mkdirp yes
{ config, pkgs, ... }:
{
@@ -35,3 +39,4 @@
};
};
}
+#+end_src
diff --git a/nixos/.flake/home/programs/git.nix b/nixos/.flake/home/programs/git.nix
deleted file mode 100644
index d9c126a..0000000
--- a/nixos/.flake/home/programs/git.nix
+++ /dev/null
@@ -1,9 +0,0 @@
-{ config, pkgs, ... }:
-
-{
- programs.git = {
- enable = true;
- userName = "Jacob Janzen";
- userEmail = "jacob.a.s.janzen@gmail.com";
- };
-}
diff --git a/nixos/.flake/home/programs/git.org b/nixos/.flake/home/programs/git.org
new file mode 100644
index 0000000..baf3aaa
--- /dev/null
+++ b/nixos/.flake/home/programs/git.org
@@ -0,0 +1,18 @@
+#+title: Git Configuration
+
+Specify my name and email for =git=. Also enable =delta= and =pull.rebase=.
+#+begin_src nix :tangle ~/.flake/home/programs/git.nix :mkdirp yes
+{ config, pkgs, ... }:
+
+{
+ programs.git = {
+ enable = true;
+ userName = "Jacob Janzen";
+ userEmail = "jacob.a.s.janzen@gmail.com";
+ delta.enable = true;
+ extraConfig = {
+ pull.rebase = true;
+ };
+ };
+}
+#+end_src
diff --git a/nixos/.flake/home/programs/hyprlock.nix b/nixos/.flake/home/programs/hyprlock.nix
deleted file mode 100644
index 175331d..0000000
--- a/nixos/.flake/home/programs/hyprlock.nix
+++ /dev/null
@@ -1,37 +0,0 @@
-{ config, pkgs, ... }:
-
-{
- programs.hyprlock = {
- enable = true;
- settings = {
- general = {
- disable_loading_bar = true;
- grace = 0;
- hide_cursor = true;
- no_fade_in = false;
- };
- background = [
- {
- path = "~/.wallpaper";
- blur_passes = 3;
- blur_size = 8;
- }
- ];
- input-field = [
- {
- size = "200, 50";
- position = "0, -80";
- monitor = "";
- dots_center = true;
- fade_on_empty = false;
- font_color = "rgb(202, 211, 245)";
- inner_color = "rgb(91, 96, 120)";
- outer_color = "rgb(24, 25, 38)";
- outline_thickness = 5;
- placeholder_text = "<span foreground=\"##cad3f5\">Password...</span>";
- shadow_passes = 2;
- }
- ];
- };
- };
-}
diff --git a/nixos/.flake/home/programs/hyprlock.org b/nixos/.flake/home/programs/hyprlock.org
new file mode 100644
index 0000000..4e94386
--- /dev/null
+++ b/nixos/.flake/home/programs/hyprlock.org
@@ -0,0 +1,42 @@
+#+title: Hyprlock Configuration
+
+Place a textbox in the middle of the screen and use my blurred wallpaper as the background when locking.
+#+begin_src nix :tangle ~/.flake/home/programs/hyprlock.nix :mkdirp yes
+ { config, pkgs, ... }:
+
+ {
+ programs.hyprlock = {
+ enable = true;
+ settings = {
+ general = {
+ disable_loading_bar = true;
+ grace = 0;
+ hide_cursor = true;
+ no_fade_in = false;
+ };
+ background = [
+ {
+ path = "~/.wallpaper";
+ blur_passes = 3;
+ blur_size = 8;
+ }
+ ];
+ input-field = [
+ {
+ size = "200, 50";
+ position = "0, -80";
+ monitor = "";
+ dots_center = true;
+ fade_on_empty = false;
+ font_color = "rgb(202, 211, 245)";
+ inner_color = "rgb(91, 96, 120)";
+ outer_color = "rgb(24, 25, 38)";
+ outline_thickness = 5;
+ placeholder_text = "<span foreground=\"##cad3f5\">Password...</span>";
+ shadow_passes = 2;
+ }
+ ];
+ };
+ };
+ }
+#+end_src
diff --git a/nixos/.flake/home/programs/ncmpcpp.nix b/nixos/.flake/home/programs/ncmpcpp.org
index f9ab2b9..eb1f02f 100644
--- a/nixos/.flake/home/programs/ncmpcpp.nix
+++ b/nixos/.flake/home/programs/ncmpcpp.org
@@ -1,3 +1,7 @@
+#+title: =ncmpcpp= Configuration
+
+Enable =vi=-like controls and specify directories and MPD address.
+#+begin_src nix :tangle ~/.flake/home/programs/ncmpcpp.nix :mkdirp yes
{ config, pkgs, ... }:
{
@@ -21,3 +25,4 @@
};
};
}
+#+end_src
diff --git a/nixos/.flake/home/programs/ssh.nix b/nixos/.flake/home/programs/ssh.nix
deleted file mode 100644
index 960a5cd..0000000
--- a/nixos/.flake/home/programs/ssh.nix
+++ /dev/null
@@ -1,8 +0,0 @@
-{ config, pkgs, ... }:
-
-{
- programs.ssh = {
- enable = true;
- addKeysToAgent = "yes";
- };
-}
diff --git a/nixos/.flake/home/programs/ssh.org b/nixos/.flake/home/programs/ssh.org
new file mode 100644
index 0000000..a7502d2
--- /dev/null
+++ b/nixos/.flake/home/programs/ssh.org
@@ -0,0 +1,13 @@
+#+title: SSH Configuration
+
+Add keys to SSH agent.
+#+begin_src nix :tangle ~/.flake/home/programs/ssh.nix :mkdirp yes
+{ config, pkgs, ... }:
+
+{
+ programs.ssh = {
+ enable = true;
+ addKeysToAgent = "yes";
+ };
+}
+#+end_src
diff --git a/nixos/.flake/home/programs/waybar.nix b/nixos/.flake/home/programs/waybar.nix
deleted file mode 100644
index 5ef4b17..0000000
--- a/nixos/.flake/home/programs/waybar.nix
+++ /dev/null
@@ -1,145 +0,0 @@
-{ config, pkgs, ... }:
-
-{
- programs.waybar = {
- enable = true;
- settings = {
- mainBar = {
- height = 30;
- spacing = 4;
- modules-left = [ "hyprland/workspaces" ];
- modules-center = [ "hyprland/window" ];
- modules-right = [ "mpd" "pulseaudio" "cpu" "memory" "clock" "tray" ];
- mpd = {
- format = "{stateIcon} {artist} - {album} - {title} ({elapsedTime:%M:%S}/{totalTime:%M:%S}) [{songPosition}|{queueLength}] 🎵";
- format-disconnected = "Disconnected 🎵";
- format-stopped = "{consumeIcon}Stopped 🎵";
- unknown-tag = "N/A";
- interval = 2;
- state-icons = {
- paused = "";
- playing = "";
- };
- tooltip-format = "MPD (connected)";
- tooltip-format-disconnected = "MPD (disconnected)";
- on-click = "foot -e ncmpcpp";
- };
- tray = {
- icon-size = 21;
- spacing = 10;
- show-passive-items = true;
- };
- clock = {
- format = "{:%H:%M\t%Y-%m-%d}";
- };
- cpu = {
- format = "{usage}% ";
- tooltip = false;
- };
- memory = {
- format = "{}% ";
- };
- network = {
- format-wifi = "";
- tooltip = false;
- format-ethernet = "";
- format-linked = "";
- format-disconnected = "⚠";
- on-click = "kcmshell5 kcm_networkmanagement";
- };
- pulseaudio = {
- format = "{volume}% {icon}";
- format-bluetooth = "{volume}% {icon}";
- format-bluetooth-muted = " {icon}";
- format-muted = " ";
- format-source = "{volume}% ";
- format-source-muted = "";
- format-icons = {
- headphone = "";
- hands-free = "";
- headset = "";
- phone = "";
- portable = "";
- car = "";
- default = ["" "" ""];
- };
- on-click = "pavucontrol";
- };
- };
- };
- style = ''
- window#waybar {
- font-family: FontAwesome, Roboto, Helvetica, Arial, sans-serif;
- font-size: 13px;
- background: transparent;
- color: #ffffff;
- text-shadow: 1px 1px #64727D;
- transition-property: background-color;
- transition-duration: .5s;
- }
- button {
- border: none;
- border-radius: 0;
- }
- button:hover {
- background: inherit;
- box-shadow: inset 0 -3px #ffffff;
- }
- #workspaces button {
- padding: 0 5px;
- text-shadow: 1px 1px #64727D;
- background-color: transparent;
- color: #ffffff;
- }
- #workspaces button:hover {
- background: rgba(0, 0, 0, 0.2);
- }
- #workspaces button.focused {
- background: transparent;
- box-shadow: inset 0 -3px #ffffff;
- }
- #workspaces button.urgent {
- background-color: #eb4d4b;
- }
- #clock,
- #cpu,
- #memory,
- #disk,
- #network,
- #pulseaudio,
- #wireplumber,
- #custom-media,
- #tray,
- #mode,
- #scratchpad,
- #mpd {
- padding: 0 10px;
- }
- #window,
- #workspaces {
- margin: 0 4px;
- }
- .modules-left > widget:first-child > #workspaces {
- margin-left: 0;
- }
-
- /* If workspaces is the rightmost module, omit right margin */
- .modules-right > widget:last-child > #workspaces {
- margin-right: 0;
- }
- #tray > .passive {
- -gtk-icon-effect: dim;
- }
- #tray > .needs-attention {
- -gtk-icon-effect: highlight;
- }
- #scratchpad {
- background: rgba(0, 0, 0, 0.2);
- }
-
- #scratchpad.empty {
- background-color: transparent;
- }
- '';
- };
-}
diff --git a/nixos/.flake/home/programs/waybar.org b/nixos/.flake/home/programs/waybar.org
new file mode 100644
index 0000000..7fe40f3
--- /dev/null
+++ b/nixos/.flake/home/programs/waybar.org
@@ -0,0 +1,149 @@
+#+title: Waybar Configuration
+
+Show workspaces on the left, the current window in the centre, and MPD status, audio, cpu and memory status, clock, and system tray on the right.
+#+begin_src nix :tangle ~/.flake/home/programs/waybar.nix :mkdirp yes
+ { config, pkgs, ... }:
+
+ {
+ programs.waybar = {
+ enable = true;
+ settings = {
+ mainBar = {
+ height = 30;
+ spacing = 4;
+ modules-left = [ "hyprland/workspaces" ];
+ modules-center = [ "hyprland/window" ];
+ modules-right = [ "mpd" "pulseaudio" "cpu" "memory" "clock" "tray" ];
+ mpd = {
+ format = "{stateIcon} {artist} - {album} - {title} ({elapsedTime:%M:%S}/{totalTime:%M:%S}) [{songPosition}|{queueLength}] 🎵";
+ format-disconnected = "Disconnected 🎵";
+ format-stopped = "{consumeIcon}Stopped 🎵";
+ unknown-tag = "N/A";
+ interval = 2;
+ state-icons = {
+ paused = "";
+ playing = "";
+ };
+ tooltip-format = "MPD (connected)";
+ tooltip-format-disconnected = "MPD (disconnected)";
+ on-click = "foot -e ncmpcpp";
+ };
+ tray = {
+ icon-size = 21;
+ spacing = 10;
+ show-passive-items = true;
+ };
+ clock = {
+ format = "{:%H:%M\t%Y-%m-%d}";
+ };
+ cpu = {
+ format = "{usage}% ";
+ tooltip = false;
+ };
+ memory = {
+ format = "{}% ";
+ };
+ network = {
+ format-wifi = "";
+ tooltip = false;
+ format-ethernet = "";
+ format-linked = "";
+ format-disconnected = "⚠";
+ on-click = "kcmshell5 kcm_networkmanagement";
+ };
+ pulseaudio = {
+ format = "{volume}% {icon}";
+ format-bluetooth = "{volume}% {icon}";
+ format-bluetooth-muted = " {icon}";
+ format-muted = " ";
+ format-source = "{volume}% ";
+ format-source-muted = "";
+ format-icons = {
+ headphone = "";
+ hands-free = "";
+ headset = "";
+ phone = "";
+ portable = "";
+ car = "";
+ default = ["" "" ""];
+ };
+ on-click = "pavucontrol";
+ };
+ };
+ };
+ style = ''
+ window#waybar {
+ font-family: FontAwesome, Roboto, Helvetica, Arial, sans-serif;
+ font-size: 13px;
+ background: transparent;
+ color: #ffffff;
+ text-shadow: 1px 1px #64727D;
+ transition-property: background-color;
+ transition-duration: .5s;
+ }
+ button {
+ border: none;
+ border-radius: 0;
+ }
+ button:hover {
+ background: inherit;
+ box-shadow: inset 0 -3px #ffffff;
+ }
+ #workspaces button {
+ padding: 0 5px;
+ text-shadow: 1px 1px #64727D;
+ background-color: transparent;
+ color: #ffffff;
+ }
+ #workspaces button:hover {
+ background: rgba(0, 0, 0, 0.2);
+ }
+ #workspaces button.focused {
+ background: transparent;
+ box-shadow: inset 0 -3px #ffffff;
+ }
+ #workspaces button.urgent {
+ background-color: #eb4d4b;
+ }
+ #clock,
+ #cpu,
+ #memory,
+ #disk,
+ #network,
+ #pulseaudio,
+ #wireplumber,
+ #custom-media,
+ #tray,
+ #mode,
+ #scratchpad,
+ #mpd {
+ padding: 0 10px;
+ }
+ #window,
+ #workspaces {
+ margin: 0 4px;
+ }
+ .modules-left > widget:first-child > #workspaces {
+ margin-left: 0;
+ }
+
+ .modules-right > widget:last-child > #workspaces {
+ margin-right: 0;
+ }
+ #tray > .passive {
+ -gtk-icon-effect: dim;
+ }
+ #tray > .needs-attention {
+ -gtk-icon-effect: highlight;
+ }
+ #scratchpad {
+ background: rgba(0, 0, 0, 0.2);
+ }
+
+ #scratchpad.empty {
+ background-color: transparent;
+ }
+ '';
+ };
+ }
+#+end_src
diff --git a/nixos/.flake/home/programs/zsh.nix b/nixos/.flake/home/programs/zsh.nix
deleted file mode 100644
index 8b8bfad..0000000
--- a/nixos/.flake/home/programs/zsh.nix
+++ /dev/null
@@ -1,47 +0,0 @@
-{ config, pkgs, ... }:
-
-{
- programs.zsh = {
- enable = true;
- autocd = true;
- autosuggestion = {
- enable = true;
- };
- defaultKeymap = "viins";
- history = {
- append = true;
- ignoreAllDups = true;
- };
- shellAliases = {
- "ll" = "ls -alF";
- "la" = "ls -a";
- "l" = "ls -F";
- "sl" = "ls";
- };
- syntaxHighlighting.enable = true;
- initExtra = ''
- which lesspipe.sh &> /dev/null && export LESSOPEN="|lesspipe.sh %s"
- which eza &> /dev/null && alias ls=eza
- which nvim &> /dev/null && alias vi=nvim && alias vim=nvim
- parse_git_dirty() {
- git_status="$(git status 2> /dev/null)"
- [[ "$git_status" =~ "use \"git push\" to publish your local commits" ]] && echo -n " %F{green}%f"
- [[ "$git_status" =~ "Changes to be committed:" ]] && echo -n " %F{magenta}%f"
- [[ "$git_status" =~ "Changes not staged for commit:" ]] && echo -n " %F{yellow}%f"
- [[ "$git_status" =~ "Untracked files:" ]] && echo -n " %F{red}%f"
- }
- setopt prompt_subst
- autoload -Uz vcs_info
- precmd () { vcs_info }
- zstyle ':vcs_info:*' formats ' %F{blue}%b%f' # git(main)
- PS1='%(?..%B%F{red}[%?%\]%f%b )%F{green}%20<...<%~%<<%f$vcs_info_msg_0_$(parse_git_dirty) $ '
- '';
- profileExtra = ''
- if [ ! -S ~/.ssh/ssh_auth_sock ]; then
- eval `ssh-agent` > /dev/null
- ln -sf "$SSH_AUTH_SOCK" ~/.ssh/ssh_auth_sock
- fi
- export SSH_AUTH_SOCK=~/.ssh/ssh_auth_sock
- '';
- };
-}
diff --git a/nixos/.flake/home/programs/zsh.org b/nixos/.flake/home/programs/zsh.org
new file mode 100644
index 0000000..f2368e2
--- /dev/null
+++ b/nixos/.flake/home/programs/zsh.org
@@ -0,0 +1,88 @@
+#+title: ZSH Configuration
+
+Open =zsh= configuration.
+#+begin_src nix :tangle ~/.flake/home/programs/zsh.nix :mkdirp yes
+ { config, pkgs, ... }:
+
+ {
+ programs.zsh = {
+ enable = true;
+#+end_src
+
+Automatically =cd= if only the path is used.
+#+begin_src nix :tangle ~/.flake/home/programs/zsh.nix :mkdirp yes
+ autocd = true;
+#+end_src
+
+Enable auto-suggestions.
+#+begin_src nix :tangle ~/.flake/home/programs/zsh.nix :mkdirp yes
+ autosuggestion = {
+ enable = true;
+ };
+#+end_src
+
+Use =vi= keybindings.
+#+begin_src nix :tangle ~/.flake/home/programs/zsh.nix :mkdirp yes
+ defaultKeymap = "viins";
+#+end_src
+
+Append to the history and ignore duplicates.
+#+begin_src nix :tangle ~/.flake/home/programs/zsh.nix :mkdirp yes
+ history = {
+ append = true;
+ ignoreAllDups = true;
+ };
+#+end_src
+
+Specify =ls= aliases.
+#+begin_src nix :tangle ~/.flake/home/programs/zsh.nix :mkdirp yes
+ shellAliases = {
+ "ll" = "ls -alF";
+ "la" = "ls -a";
+ "l" = "ls -F";
+ "sl" = "ls";
+ };
+#+end_src
+
+Enable syntax highlighting.
+#+begin_src nix :tangle ~/.flake/home/programs/zsh.nix :mkdirp yes
+ syntaxHighlighting.enable = true;
+#+end_src
+
+Create potential aliases and create the prompt.
+#+begin_src nix :tangle ~/.flake/home/programs/zsh.nix :mkdirp yes
+ initExtra = ''
+ which lesspipe.sh &> /dev/null && export LESSOPEN="|lesspipe.sh %s"
+ which eza &> /dev/null && alias ls=eza
+ which nvim &> /dev/null && alias vi=nvim && alias vim=nvim
+ parse_git_dirty() {
+ git_status="$(git status 2> /dev/null)"
+ [[ "$git_status" =~ "use \"git push\" to publish your local commits" ]] && echo -n " %F{green}%f"
+ [[ "$git_status" =~ "Changes to be committed:" ]] && echo -n " %F{magenta}%f"
+ [[ "$git_status" =~ "Changes not staged for commit:" ]] && echo -n " %F{yellow}%f"
+ [[ "$git_status" =~ "Untracked files:" ]] && echo -n " %F{red}%f"
+ }
+ setopt prompt_subst
+ autoload -Uz vcs_info
+ precmd () { vcs_info }
+ zstyle ':vcs_info:*' formats ' %F{blue}%b%f' # git(main)
+ PS1='%(?..%B%F{red}[%?%\]%f%b )%F{green}%20<...<%~%<<%f$vcs_info_msg_0_$(parse_git_dirty) $ '
+ '';
+#+end_src
+
+Launch =ssh-agent= at login.
+#+begin_src nix :tangle ~/.flake/home/programs/zsh.nix :mkdirp yes
+ profileExtra = ''
+ if [ ! -S ~/.ssh/ssh_auth_sock ]; then
+ eval `ssh-agent` > /dev/null
+ ln -sf "$SSH_AUTH_SOCK" ~/.ssh/ssh_auth_sock
+ fi
+ export SSH_AUTH_SOCK=~/.ssh/ssh_auth_sock
+ '';
+#+end_src
+
+Close =zsh= configuration.
+#+begin_src nix :tangle ~/.flake/home/programs/zsh.nix :mkdirp yes
+ };
+ }
+#+end_src