summaryrefslogtreecommitdiff
path: root/users/seth/programs
diff options
context:
space:
mode:
authorSeth Flynn <[email protected]>2025-02-14 01:18:47 -0500
committerSeth Flynn <[email protected]>2025-02-14 01:29:06 -0500
commit3e208d20934bedd8cd7769f23f35cfae9d8e7d0d (patch)
tree452399d770df6be2589be3c92771b1999dd1b93a /users/seth/programs
parentc1bea770122a7cf2dea5113387265f59010d5a7f (diff)
seth: simplify module structure
Moving to mixins generally reduces the boilerplate in all configurations, and less custom "stuff" These are then enabled by the regular options in programs.nix for example Many of the other options (like desktops) also had little use in being abstracted as there's no situation where I'd *not* want them to be applied when said desktop is in use
Diffstat (limited to 'users/seth/programs')
-rw-r--r--users/seth/programs/bash.nix47
-rw-r--r--users/seth/programs/chromium.nix40
-rw-r--r--users/seth/programs/default.nix60
-rw-r--r--users/seth/programs/firefox/arkenfox.nix80
-rw-r--r--users/seth/programs/firefox/default.nix55
-rw-r--r--users/seth/programs/fish.nix72
-rw-r--r--users/seth/programs/gh.nix36
-rw-r--r--users/seth/programs/ghostty.nix27
-rw-r--r--users/seth/programs/git.nix44
-rw-r--r--users/seth/programs/gpg.nix27
-rw-r--r--users/seth/programs/mangohud.nix28
-rw-r--r--users/seth/programs/neovim.nix36
-rw-r--r--users/seth/programs/nu.nix45
-rw-r--r--users/seth/programs/ssh.nix69
-rw-r--r--users/seth/programs/vim.nix52
-rw-r--r--users/seth/programs/vscode.nix21
-rw-r--r--users/seth/programs/zsh.nix118
17 files changed, 0 insertions, 857 deletions
diff --git a/users/seth/programs/bash.nix b/users/seth/programs/bash.nix
deleted file mode 100644
index 692ec58..0000000
--- a/users/seth/programs/bash.nix
+++ /dev/null
@@ -1,47 +0,0 @@
-{ config, lib, ... }:
-let
- cfg = config.seth.programs.bash;
-in
-{
- options.seth.programs.bash = {
- enable = lib.mkEnableOption "Bash configuration" // {
- default = config.seth.enable;
- defaultText = lib.literalExpression "config.seth.enable";
- };
- };
-
- config = lib.mkIf cfg.enable (
- lib.mkMerge [
- {
- programs.bash = {
- enable = true;
-
- historyFile = "${config.xdg.stateHome}/bash/history";
- historyFileSize = 1000;
- historySize = 100;
-
- shellOptions = [
- "cdspell"
- "checkjobs"
- "checkwinsize"
- "dirspell"
- "globstar"
- "histappend"
- "no_empty_cmd_completion"
- ];
- };
- }
-
- # TODO: find out if i need this anymore with standalone HM
- (lib.mkIf config.seth.standalone.enable {
- programs.bash = {
-
- bashrcExtra = ''
- nixfile=${config.home.homeDirectory}/.nix-profile/etc/profile.d/nix.sh
- [ -e "$nixfile" ] && source "$nixfile"
- '';
- };
- })
- ]
- );
-}
diff --git a/users/seth/programs/chromium.nix b/users/seth/programs/chromium.nix
deleted file mode 100644
index 31b1988..0000000
--- a/users/seth/programs/chromium.nix
+++ /dev/null
@@ -1,40 +0,0 @@
-{
- config,
- lib,
- pkgs,
- ...
-}:
-let
- cfg = config.seth.programs.chromium;
-in
-{
- options.seth.programs.chromium = {
- enable = lib.mkEnableOption "Chromium configuration" // {
- default = config.seth.desktop.enable;
- defaultText = lib.literalExpression "config.seth.desktop.enable";
- };
- };
-
- config = lib.mkIf cfg.enable {
- catppuccin.chromium.enable = false;
-
- programs.chromium = {
- enable = true;
-
- dictionaries = [ pkgs.hunspellDictsChromium.en_US ];
-
- extensions = [
- # uBlock Origin Lite
- { id = "ddkjiahejlhfcafbddmgiahcphecmpfh"; }
- # Bitwarden
- { id = "nngceckbapebfimnlniiiahkandclblb"; }
- # Floccus Bookmark Sync
- { id = "fnaicdffflnofjppbagibeoednhnbjhg"; }
- # Tabby Cat
- { id = "mefhakmgclhhfbdadeojlkbllmecialg"; }
- # Startpage
- { id = "fgmjlmbojbkmdpofahffgcpkhkngfpef"; }
- ];
- };
- };
-}
diff --git a/users/seth/programs/default.nix b/users/seth/programs/default.nix
deleted file mode 100644
index 6900766..0000000
--- a/users/seth/programs/default.nix
+++ /dev/null
@@ -1,60 +0,0 @@
-{
- config,
- lib,
- pkgs,
- inputs,
- ...
-}:
-{
- imports = [
- inputs.nix-index-database.hmModules.nix-index
-
- ./bash.nix
- ./chromium.nix
- ./firefox
- ./fish.nix
- ./gh.nix
- ./ghostty.nix
- ./git.nix
- ./gpg.nix
- ./mangohud.nix
- ./neovim.nix
- ./nu.nix
- ./ssh.nix
- ./vim.nix
- ./vscode.nix
- ./zsh.nix
- ];
-
- config = lib.mkIf config.seth.enable {
- home.packages = with pkgs; [
- hydra-check
- nixfmt-rfc-style
- (nurl.override { nix = config.nix.package; })
- ];
-
- programs = {
- bat.enable = lib.mkDefault true;
- btop.enable = lib.mkDefault true;
-
- direnv = {
- enable = lib.mkDefault true;
- nix-direnv = {
- enable = true;
- package = pkgs.nix-direnv.override { nix = config.nix.package; };
- };
- };
-
- eza = {
- enable = lib.mkDefault true;
- icons = "auto";
- };
-
- fd.enable = lib.mkDefault true;
- ripgrep.enable = lib.mkDefault true;
- nix-index-database.comma.enable = true;
- };
-
- xdg.enable = true;
- };
-}
diff --git a/users/seth/programs/firefox/arkenfox.nix b/users/seth/programs/firefox/arkenfox.nix
deleted file mode 100644
index 8ae4af3..0000000
--- a/users/seth/programs/firefox/arkenfox.nix
+++ /dev/null
@@ -1,80 +0,0 @@
-{
- config,
- lib,
- inputs,
- ...
-}:
-let
- cfg = config.seth.programs.firefox.arkenfox;
-in
-{
- imports = [ inputs.arkenfox.hmModules.arkenfox ];
-
- options.seth.programs.firefox.arkenfox = {
- enable = lib.mkEnableOption "Arkenfox settings for Firefox" // {
- default = true;
- };
- };
-
- config = lib.mkIf cfg.enable {
- programs.firefox = {
- arkenfox = {
- enable = true;
- version = "128.0";
- };
-
- profiles.arkenfox.arkenfox =
- let
- enableSections =
- sections:
- lib.genAttrs sections (_: {
- enable = true;
- });
- in
- lib.recursiveUpdate
- {
- enable = true;
-
- # enable safe browsing
- "0400"."0403"."browser.safebrowsing.downloads.remote.enabled".value = true;
-
- # fix hulu
- "1200"."1201"."security.ssl.require_safe_negotiation".value = false;
-
- "2600"."2651"."browser.download.useDownloadDir" = {
- enable = true;
- value = true;
- };
-
- # disable rfp letterboxing
- "4500"."4504"."privacy.resistFingerprinting.letterboxing".value = false;
-
- "5000" = {
- "5003"."signon.rememberSignons".enable = true;
- # enable search autocomplete
- "5021"."keyword.enabled".value = true;
- };
- }
- (enableSections [
- "0100"
- "0200"
- "0300"
- "0400"
- "0600"
- "0700"
- "0800"
- "0900"
- "1000"
- "1200"
- "1600"
- "1700"
- "2000"
- "2400"
- "2600"
- "2700"
- "2800"
- "4500"
- ]);
- };
- };
-}
diff --git a/users/seth/programs/firefox/default.nix b/users/seth/programs/firefox/default.nix
deleted file mode 100644
index 3eff2f3..0000000
--- a/users/seth/programs/firefox/default.nix
+++ /dev/null
@@ -1,55 +0,0 @@
-{
- config,
- lib,
- inputs,
- ...
-}:
-let
- cfg = config.seth.programs.firefox;
-in
-{
- options.seth.programs.firefox = {
- enable = lib.mkEnableOption "Firefox configuration";
- };
-
- imports = [
- inputs.getchpkgs.nixosModules.firefox-addons
- # Requires `github:dwarfmaster/arkenfox-nixos`
- # ./arkenfox.nix
- ];
-
- config = lib.mkIf cfg.enable {
- home.sessionVariables = {
- MOZ_ENABLE_WAYLAND = "1";
- };
-
- programs.firefox = {
- enable = true;
-
- addons = [
- # uBlock Origin
- # Bitwarden
- "{446900e4-71c2-419f-a6a7-df9c091e268b}"
- # Floccus
- ];
-
- profiles.arkenfox = {
- isDefault = true;
-
- settings = {
- # disable firefox accounts & pocket
- "extensions.pocket.enabled" = false;
- "identity.fxaccounts.enabled" = false;
-
- # hw accel
- "media.ffmpeg.vaapi.enabled" = true;
-
- # widevine drm
- "media.gmp-widevinecdm.enabled" = true;
- };
- };
- };
- };
-}
diff --git a/users/seth/programs/fish.nix b/users/seth/programs/fish.nix
deleted file mode 100644
index f853b1b..0000000
--- a/users/seth/programs/fish.nix
+++ /dev/null
@@ -1,72 +0,0 @@
-{
- config,
- lib,
- pkgs,
- ...
-}:
-let
- cfg = config.seth.programs.fish;
-in
-{
- options.seth.programs.fish = {
- enable = lib.mkEnableOption "Fish configuration";
- hydro.enable = lib.mkEnableOption "Hydra prompt" // {
- default = true;
- };
- };
-
- config = lib.mkIf cfg.enable (
- lib.mkMerge [
- {
- programs.fish = {
- enable = true;
-
- functions = {
- last_history_item.body = "echo $history[1]";
- };
-
- shellAbbrs = {
- nixgc = "sudo nix-collect-garbage -d && nix-collect-garbage -d";
- "!!" = {
- position = "anywhere";
- function = "last_history_item";
- };
- };
- };
- }
-
- (lib.mkIf cfg.hydro.enable {
- programs.fish = {
- interactiveShellInit = ''
- set --global hydro_symbol_prompt ">"
-
- set --global hydro_color_duration $fish_color_end
- set --global hydro_color_error $fish_color_error
- set --global hydro_color_git cba6f7
- set --global hydro_color_prompt $fish_color_cwd
- set --global hydro_color_pwd $fish_color_user
- '';
-
- plugins = [
- {
- name = "hydro";
- inherit (pkgs.fishPlugins.hydro) src;
- }
- ];
- };
- })
-
- # TODO: do i still need this weird sourcing?
- (lib.mkIf config.seth.standalone.enable {
- programs.fish = {
- interactiveShellInit = ''
- set -l nixfile ${config.home.homeDirectory}/.nix-profile/etc/profile.d/nix.fish
- if test -e $nixfile
- source $nixfile
- end
- '';
- };
- })
- ]
- );
-}
diff --git a/users/seth/programs/gh.nix b/users/seth/programs/gh.nix
deleted file mode 100644
index 8b33162..0000000
--- a/users/seth/programs/gh.nix
+++ /dev/null
@@ -1,36 +0,0 @@
-{
- config,
- lib,
- ...
-}:
-let
- cfg = config.seth.programs.gh;
-in
-{
- options.seth.programs.gh = {
- enable = lib.mkEnableOption "GitHub CLI" // {
- default = config.seth.programs.git.enable;
- defaultText = "config.seth.programs.git.enable";
- };
- };
-
- config = lib.mkIf cfg.enable {
- programs.gh = {
- enable = true;
-
- settings = {
- git_protocol = "https";
- editor = "nvim";
- prompt = "enabled";
- };
-
- gitCredentialHelper = {
- enable = true;
- hosts = [
- "https://github.com"
- "https://github.example.com"
- ];
- };
- };
- };
-}
diff --git a/users/seth/programs/ghostty.nix b/users/seth/programs/ghostty.nix
deleted file mode 100644
index 0bf480b..0000000
--- a/users/seth/programs/ghostty.nix
+++ /dev/null
@@ -1,27 +0,0 @@
-{ config, lib, ... }:
-
-let
- cfg = config.seth.programs.ghostty;
-in
-
-{
- options.seth.programs.ghostty = {
- enable = lib.mkEnableOption "Ghostty configuration" // {
- default = config.seth.desktop.enable;
- defaultText = lib.literalExample "config.seth.desktop.enable";
- };
- };
-
- config = lib.mkIf cfg.enable {
- programs.ghostty = {
- enable = true;
-
- enableBashIntegration = true;
- enableFishIntegration = true;
-
- settings = {
- bold-is-bright = true;
- };
- };
- };
-}
diff --git a/users/seth/programs/git.nix b/users/seth/programs/git.nix
deleted file mode 100644
index e2f7ab0..0000000
--- a/users/seth/programs/git.nix
+++ /dev/null
@@ -1,44 +0,0 @@
-{
- config,
- lib,
- pkgs,
- inputs,
- ...
-}:
-let
- cfg = config.seth.programs.git;
-in
-{
- imports = [ inputs.getchpkgs.homeModules.riff ];
-
- options.seth.programs.git = {
- enable = lib.mkEnableOption "Git configuration settings" // {
- default = config.seth.enable;
- defaultText = lib.literalExpression "config.seth.enable";
- };
- };
-
- config = lib.mkIf cfg.enable {
- home.packages = [ pkgs.git-branchless ];
-
- programs.git = {
- enable = true;
-
- riff.enable = true;
-
- extraConfig = {
- init = {
- defaultBranch = "main";
- };
- };
-
- signing = {
- key = "D31BD0D494BBEE86";
- signByDefault = true;
- };
-
- userEmail = "[email protected]";
- userName = "Seth Flynn";
- };
- };
-}
diff --git a/users/seth/programs/gpg.nix b/users/seth/programs/gpg.nix
deleted file mode 100644
index bd4428e..0000000
--- a/users/seth/programs/gpg.nix
+++ /dev/null
@@ -1,27 +0,0 @@
-{
- config,
- lib,
- pkgs,
- osConfig,
- ...
-}:
-let
- cfg = config.seth.programs.gpg;
-in
-{
- options.seth.programs.gpg = {
- enable = lib.mkEnableOption "GnuPG configuration" // {
- default = config.seth.enable;
- defaultText = lib.literalExpression "config.seth.enable";
- };
- };
-
- config = lib.mkIf cfg.enable {
- programs.gpg.enable = true;
-
- services.gpg-agent = lib.mkIf pkgs.stdenv.isLinux {
- enable = true;
- pinentryPackage = osConfig.programs.gnupg.agent.pinentryPackage or pkgs.pinentry-curses;
- };
- };
-}
diff --git a/users/seth/programs/mangohud.nix b/users/seth/programs/mangohud.nix
deleted file mode 100644
index eecb780..0000000
--- a/users/seth/programs/mangohud.nix
+++ /dev/null
@@ -1,28 +0,0 @@
-{ config, lib, ... }:
-let
- cfg = config.seth.programs.mangohud;
-in
-{
- options.seth.programs.mangohud = {
- enable = lib.mkEnableOption "MangoHud configuration" // {
- default = config.seth.desktop.enable;
- defaultText = lib.literalExpression "config.seth.desktop.enable";
- };
- };
-
- config = lib.mkIf cfg.enable {
- programs.mangohud = {
- enable = true;
- settings = {
- cpu_stats = true;
- cpu_temp = true;
- gpu_stats = true;
- gpu_temp = true;
- fps = true;
- frametime = true;
- media_player = true;
- media_player_name = "spotify";
- };
- };
- };
-}
diff --git a/users/seth/programs/neovim.nix b/users/seth/programs/neovim.nix
deleted file mode 100644
index 13f0d96..0000000
--- a/users/seth/programs/neovim.nix
+++ /dev/null
@@ -1,36 +0,0 @@
-{
- config,
- lib,
- pkgs,
- inputs',
- ...
-}:
-let
- cfg = config.seth.programs.neovim;
-in
-{
- options.seth.programs.neovim = {
- enable = lib.mkEnableOption "Neovim configuration" // {
- default = config.seth.enable;
- defaultText = lib.literalExpression "config.seth.enable";
- };
- };
-
- config = lib.mkIf cfg.enable {
- home.packages = [
- (
- let
- getchvim = inputs'.getchvim.packages.default;
- in
- # remove desktop file
- pkgs.symlinkJoin {
- name = "${getchvim.name}-nodesktop";
- paths = [ getchvim ];
- postBuild = ''
- rm -rf $out/share/{applications,icons}
- '';
- }
- )
- ];
- };
-}
diff --git a/users/seth/programs/nu.nix b/users/seth/programs/nu.nix
deleted file mode 100644
index 89a6803..0000000
--- a/users/seth/programs/nu.nix
+++ /dev/null
@@ -1,45 +0,0 @@
-{
- config,
- lib,
- pkgs,
- ...
-}:
-let
- cfg = config.seth.programs.nushell;
- theme = "catppuccin-${config.catppuccin.flavor}";
-in
-{
- options.seth.programs.nushell = {
- enable = lib.mkEnableOption "Nushell configuration";
- };
-
- config = lib.mkIf cfg.enable {
- programs = {
- nushell = {
- enable = true;
-
- configFile.text = ''
- def "nixgc" [] {
- sudo nix-collect-garbage -d; nix-collect-garbage -d
- }
- '';
-
- envFile.text = ''
- use ${pkgs.nu_scripts}/share/nu_scripts/themes/nu-themes/${theme}.nu
- $env.config.color_config = (${theme})
- '';
-
- inherit (config.home) shellAliases;
- };
-
- bash.initExtra = lib.mkAfter ''
- if [[ $(ps --no-header --pid=$PPID --format=comm) != "nu" && -z ''${BASH_EXECUTION_STRING} ]]; then
- exec ${lib.getExe config.programs.nushell.package}
- fi
- '';
-
- # builtin `ls` is good here!
- eza.enable = lib.mkForce false;
- };
- };
-}
diff --git a/users/seth/programs/ssh.nix b/users/seth/programs/ssh.nix
deleted file mode 100644
index 9cef7ff..0000000
--- a/users/seth/programs/ssh.nix
+++ /dev/null
@@ -1,69 +0,0 @@
-{
- config,
- lib,
- pkgs,
- ...
-}:
-let
- cfg = config.seth.programs.ssh;
-in
-{
- options.seth.programs.ssh = {
- enable = lib.mkEnableOption "SSH configuration" // {
- default = config.seth.enable;
- defaultText = lib.literalExpression "config.seth.enable";
- };
- };
-
- config = lib.mkIf cfg.enable {
- programs.ssh = {
- enable = true;
- package = pkgs.openssh;
-
- matchBlocks =
- let
- sshDir = "${config.home.homeDirectory}/.ssh";
- in
- {
- # git forges
- "codeberg.org" = {
- identityFile = "${sshDir}/codeberg";
- user = "git";
- };
-
- "github.com" = {
- identityFile = "${sshDir}/github";
- user = "git";
- };
-
- # linux packaging
- "aur.archlinux.org" = {
- identityFile = "${sshDir}/aur";
- user = "aur";
- };
-
- "pagure.io" = {
- identityFile = "${sshDir}/copr";
- user = "git";
- };
-
- # macstadium m1
- "mini.scrumplex.net" = {
- identityFile = "${sshDir}/macstadium";
- user = "bob-the-builder";
- };
-
- # router
- "192.168.1.1" = {
- identityFile = "${sshDir}/openwrt";
- user = "root";
- };
-
- # servers
- "atlas".user = "atlas";
- };
- };
-
- services.ssh-agent.enable = pkgs.stdenv.isLinux;
- };
-}
diff --git a/users/seth/programs/vim.nix b/users/seth/programs/vim.nix
deleted file mode 100644
index 157e9fb..0000000
--- a/users/seth/programs/vim.nix
+++ /dev/null
@@ -1,52 +0,0 @@
-{
- config,
- lib,
- pkgs,
- ...
-}:
-let
- cfg = config.seth.programs.vim;
- inherit (config.xdg) configHome dataHome stateHome;
-in
-{
- options.seth.programs.vim = {
- enable = lib.mkEnableOption "Vim configuration" // {
- default = config.seth.enable;
- defaultText = lib.literalExpression "config.seth.enable";
- };
- };
-
- config = lib.mkIf cfg.enable {
- programs.vim = {
- enable = true;
- packageConfigurable = pkgs.vim;
-
- settings = {
- expandtab = false;
- shiftwidth = 2;
- tabstop = 2;
- };
-
- extraConfig = ''
- " https://wiki.archlinux.org/title/XDG_Base_Directory
- set runtimepath^=${configHome}/vim
- set runtimepath+=${dataHome}/vim
- set runtimepath+=${configHome}/vim/after
-
- set packpath^=${dataHome}/vim,${configHome}/vim
- set packpath+=${configHome}/vim/after,${dataHome}/vim/after
- set packpath^=${dataHome}/vim,${configHome}/vim
- set packpath+=${configHome}/vim/after,${dataHome}/vim/after
-
- let g:netrw_home = "${dataHome}/vim"
- call mkdir("${dataHome}/vim/spell", 'p')
-
- set backupdir=${stateHome}/vim/backup | call mkdir(&backupdir, 'p')
- set directory=${stateHome}/vim/swap | call mkdir(&directory, 'p')
- set undodir=${stateHome}/vim/undo | call mkdir(&undodir, 'p')
- set viewdir=${stateHome}/vim/view | call mkdir(&viewdir, 'p')
- set viminfofile=${stateHome}/vim/viminfo
- '';
- };
- };
-}
diff --git a/users/seth/programs/vscode.nix b/users/seth/programs/vscode.nix
deleted file mode 100644
index 91aa1a5..0000000
--- a/users/seth/programs/vscode.nix
+++ /dev/null
@@ -1,21 +0,0 @@
-{
- config,
- lib,
- pkgs,
- ...
-}:
-let
- cfg = config.seth.programs.vscode;
-in
-{
- options.seth.programs.vscode = {
- enable = lib.mkEnableOption "VSCode configuration";
- };
-
- config = lib.mkIf cfg.enable {
- programs.vscode = {
- enable = true;
- package = pkgs.vscode.fhs;
- };
- };
-}
diff --git a/users/seth/programs/zsh.nix b/users/seth/programs/zsh.nix
deleted file mode 100644
index 7a7f935..0000000
--- a/users/seth/programs/zsh.nix
+++ /dev/null
@@ -1,118 +0,0 @@
-{
- config,
- lib,
- pkgs,
- ...
-}:
-let
- cfg = config.seth.programs.zsh;
-in
-{
- options.seth.programs.zsh = {
- enable = lib.mkEnableOption "Zsh configuration";
- withPlugins = lib.mkEnableOption "Zsh plugins" // {
- default = true;
- };
- };
-
- config = lib.mkIf cfg.enable {
- programs.zsh = lib.mkMerge [
- {
- enable = true;
-
- completionInit = ''
- autoload -Uz bashcompinit compinit
- local zdump="${config.xdg.cacheHome}/zsh/zdump"
- bashcompinit
- compinit -d "$zdump"
- if [[ ! "$zdump.zwc" -nt "$zdump" ]]
- then
- zcompile "$zdump"
- fi
- unset zdump
- '';
-
- defaultKeymap = "emacs";
- dotDir = ".config/zsh";
-
- initExtra = ''
- if [[ -r "$XDG_CACHE_HOME/p10k-instant-prompt-*.zsh" ]]; then
- source "$XDG_CACHE_HOME/p10k-instant-prompt-*.zsh"
- fi
- autoload -Uz promptinit colors
- promptinit
- colors
-
- zmodload zsh/zutil
- zmodload zsh/complist
- zstyle ":completion::*" group-name ""
- zstyle ":completion:*" menu "select"
- zstyle ":completion:*" squeeze-slashes "true"
- zstyle ":completion::*" use-cache "true"
- zstyle ":completion::*" cache-path "$zdump"
-
- unsetopt beep
- unsetopt hist_beep
- unsetopt ignore_braces
- unsetopt list_beep
- setopt always_to_end
- setopt prompt_subst
- setopt share_history
-
- # clear backbuffer with ctrl-l
- function clear-screen-and-scrollback() {
- echoti civis >"$TTY"
- printf '%b' '\e[H\e[2J' >"$TTY"
- zle .reset-prompt
- zle -R
- printf '%b' '\e[3J' >"$TTY"
- echoti cnorm >"$TTY"
- }
-
- zle -N clear-screen-and-scrollback
- bindkey '^L' clear-screen-and-scrollback
-
- [[ ! -f ~/.config/zsh/.p10k.zsh ]] || source ~/.config/zsh/.p10k.zsh
- '';
-
- history = {
- expireDuplicatesFirst = true;
- path = "${config.xdg.stateHome}/zsh/zsh_history";
- save = 1000;
- size = 100;
- };
- }
-
- (lib.mkIf cfg.withPlugins {
- plugins = [
- {
- name = "nix-zsh-completions";
- src = pkgs.nix-zsh-completions;
- file = "share/zsh/plugins/nix/nix-zsh-completions.plugin.zsh";
- }
-
- {
- name = "powerlevel10k";
- src = pkgs.zsh-powerlevel10k;
- file = "share/zsh-powerlevel10k/powerlevel10k.zsh-theme";
- }
-
- {
- name = "zsh-autopair";
- src = pkgs.zsh-autopair;
- file = "share/zsh/zsh-autopair/autopair.zsh";
- }
-
- {
- name = "zsh-completions";
- src = pkgs.zsh-completions;
- file = "share/zsh-completions/zsh-completions.plugin.zsh";
- }
- ];
-
- autosuggestion.enable = true;
- syntaxHighlighting.enable = true;
- })
- ];
- };
-}