diff --git a/config/home-manager/base.nix b/config/home-manager/base.nix index ec18c787..6f523e17 100644 --- a/config/home-manager/base.nix +++ b/config/home-manager/base.nix @@ -5,6 +5,7 @@ desktop: {pkgs, ...}: { ../programs/tmux.nix ../programs/ssh.nix ../programs/taskwarrior.nix + ../programs/mail.nix ]; programs = { zsh = { @@ -19,6 +20,10 @@ desktop: {pkgs, ...}: { plugins = [ ]; }; + atuin.enable = true; + autojump.enable = true; + jq.enable = true; + ledger.enable = true; }; home.file.".p10k.zsh".source = ./.p10k.zsh; @@ -37,14 +42,25 @@ desktop: {pkgs, ...}: { [ yubico-piv-tool ripgrep - jq gh htop sops + ncdu + progress + hexyl + mc + rclone ] ++ ( if desktop - then [yubikey-manager] + then [ + yubikey-manager + yt-dlp + oxipng + jpegoptim + picard + easytag + ] else [] ); }; diff --git a/config/home-manager/darkkirb.nix b/config/home-manager/darkkirb.nix index 38e95fb5..37b8b663 100644 --- a/config/home-manager/darkkirb.nix +++ b/config/home-manager/darkkirb.nix @@ -28,7 +28,6 @@ ../programs/kicad.nix ../programs/vscode ../programs/misc.nix - ../programs/mail.nix ../programs/zk.nix ] else [] diff --git a/config/programs/git.nix b/config/programs/git.nix index 5334871f..48307923 100644 --- a/config/programs/git.nix +++ b/config/programs/git.nix @@ -11,5 +11,7 @@ init.defaultBranch = "main"; merge.conflictstyle = "diff3"; }; + delta.enable = true; }; + programs.gitui.enable = true; } diff --git a/config/programs/mail.nix b/config/programs/mail.nix index 9be04dc5..67e7be01 100644 --- a/config/programs/mail.nix +++ b/config/programs/mail.nix @@ -1,3 +1,123 @@ -{pkgs, ...}: { - home.packages = with pkgs; [thunderbird]; +{pkgs, ...}: let + mailcap = pkgs.writeText "mailcap" '' + text/html; ${pkgs.w3m}/bin/w3m -I %{charset} -T text/html; copiousoutput; + image/*; ${pkgs.imv}/bin/imv %s + ''; +in { + accounts.email = { + accounts = { + lotte = { + address = "lotte@chir.rs"; + aliases = ["darkkirb@darkkirb.de"]; + gpg = { + encryptByDefault = true; + key = "0xB4E3D4801C49EC5E"; + signByDefault = true; + }; + imap.host = "mail.chir.rs"; + imapnotify = { + enable = true; + boxes = ["Inbox"]; + onNotify = "${pkgs.systemd}/bin/start --user mbsync.service"; + }; + mbsync = { + enable = true; + create = "both"; + expunge = "both"; + remove = "both"; + }; + msmtp.enable = true; + neomutt.enable = true; + notmuch.enable = true; + passwordCommand = "${pkgs.coreutils}/bin/cat /run/secrets/email/lotte@chir.rs"; + primary = true; + realName = "Charlotte 🦝 Delenk"; + signature.text = '' + Charlotte + + @charlotte@akko.chir.rs • https://darkkirb.de • 0xB4E3D4801C49EC5E + ''; + smtp.host = "mail.chir.rs"; + userName = "lotte@chir.rs"; + }; + }; + }; + services = { + imapnotify.enable = true; + mbsync = { + enable = true; + frequency = "*:0/15"; + postExec = "${pkgs.notmuch}/bin/notmuch new"; + }; + }; + + programs = { + afew = { + enable = true; + extraConfig = '' + [ArchiveSentMailsFilter] + [DMARCReportInspectionFilter] + [HeaderMatchingFilter.1] + header = X-Spam + pattern = Yes + tags = +spam + [KillThreadsFilter] + [ListMailsFilter] + [Filter.0] + query = tag:new + tags = +inbox;+unread;-new + ''; + }; + mbsync.enable = true; + msmtp.enable = true; + neomutt = { + enable = true; + binds = [ + { + key = "\\CA"; + action = "sidebar-next"; + map = ["index" "pager"]; + } + { + key = "\\CL"; + action = "sidebar-prev"; + map = ["index" "pager"]; + } + { + key = "\\CP"; + action = "sidebar-open"; + map = ["index" "pager"]; + } + { + key = ""; + action = "display-message"; + map = ["index"]; + } + { + key = "\\CV"; + action = "display-message"; + map = ["index"]; + } + ]; + extraConfig = '' + virtual-mailboxes "To Do" "notmuch://?query=tag:todo" + virtual-mailboxes "To Read" "notmuch://?query=tag:toread" + virtual-mailboxes "Blocked" "notmuch://?query=tag:blocked" + virtual-mailboxes "Archive" "notmuch://?query=tag:archive" + macro index,pager A "+archive -unread -inbox\n" + bind index,pager y modify-labels + set mailcap_path = ${mailcap} + set send_charset="utf-8" + set edit_headers=yes + set use_8bit_mime=yes + ''; + sidebar.enable = true; + }; + notmuch = { + enable = true; + hooks.postNew = '' + ${pkgs.afew}/bin/afew --tag --new + ''; + }; + }; } diff --git a/config/programs/theming.nix b/config/programs/theming.nix index 121c2a56..de3caa0b 100644 --- a/config/programs/theming.nix +++ b/config/programs/theming.nix @@ -1,4 +1,8 @@ -{pkgs, config, ...}: let +{ + pkgs, + config, + ... +}: let theme = import ../../extra/theme.nix; inherit (config.lib.formats.rasi) mkLiteral; rasiColor = c: mkLiteral (theme.cssColor c); @@ -267,18 +271,22 @@ in { text-color = mkLiteral "@fg-col"; }; - element-icon = element // { - size = mkLiteral "25px"; - }; + element-icon = + element + // { + size = mkLiteral "25px"; + }; "element selected" = { background-color = mkLiteral "@selected-col"; text-color = mkLiteral "@fg-col2"; }; - mode-switcher = element // { - spacing = 0; - }; + mode-switcher = + element + // { + spacing = 0; + }; button = { padding = mkLiteral "10px"; @@ -392,7 +400,7 @@ in { # -------------- "ui.background" = { fg = "text"; - bg = "base"; + bg = {}; }; "ui.linenr" = {fg = "surface1";}; @@ -529,4 +537,41 @@ in { }; }; }; + programs.neomutt.extraConfig = '' + color normal default default # Text is "Text" + color index color2 default ~N # New Messages are Green + color index color1 default ~F # Flagged messages are Red + color index color13 default ~T # Tagged Messages are Red + color index color1 default ~D # Messages to delete are Red + color attachment color5 default # Attachments are Pink + color signature color8 default # Signatures are Surface 2 + color search color4 default # Highlighted results are Blue + + color indicator default color8 # currently highlighted message Surface 2=Background Text=Foreground + color error color1 default # error messages are Red + color status color15 default # status line "Subtext 0" + color tree color15 default # thread tree arrows Subtext 0 + color tilde color15 default # blank line padding Subtext 0 + + color hdrdefault color13 default # default headers Pink + color header color13 default "^From:" + color header color13 default "^Subject:" + + color quoted color15 default # Subtext 0 + color quoted1 color7 default # Subtext 1 + color quoted2 color8 default # Surface 2 + color quoted3 color0 default # Surface 1 + color quoted4 color0 default + color quoted5 color0 default + + color body color2 default [\-\.+_a-zA-Z0-9]+@[\-\.a-zA-Z0-9]+ # email addresses Green + color body color2 default (https?|ftp)://[\-\.,/%~_:?&=\#a-zA-Z0-9]+ # URLs Green + color body color4 default (^|[[:space:]])\\*[^[:space:]]+\\*([[:space:]]|$) # *bold* text Blue + color body color4 default (^|[[:space:]])_[^[:space:]]+_([[:space:]]|$) # _underlined_ text Blue + color body color4 default (^|[[:space:]])/[^[:space:]]+/([[:space:]]|$) # /italic/ text Blue + + color sidebar_flagged color1 default # Mailboxes with flagged mails are Red + color sidebar_new color10 default # Mailboxes with new mail are Green + ''; + home.file.".local/share/mc/skins/catppuccin.ini".source = ../../extra/mc-catppuccin.ini; } diff --git a/extra/mc-catppuccin.ini b/extra/mc-catppuccin.ini new file mode 100644 index 00000000..4d162669 --- /dev/null +++ b/extra/mc-catppuccin.ini @@ -0,0 +1,140 @@ +[skin] + description = Catppuccin + +[Lines] + horiz = ─ + vert = │ + lefttop = ╭ + righttop = ╮ + leftbottom = ╰ + rightbottom = ╯ + topmiddle = ┬ + bottommiddle = ┴ + leftmiddle = ├ + rightmiddle = ┤ + cross = ┼ + dhoriz = ─ + dvert = │ + dlefttop = ╭ + drighttop = ╮ + dleftbottom = ╰ + drightbottom = ╯ + dtopmiddle = ┬ + dbottommiddle = ┴ + dleftmiddle = ├ + drightmiddle = ┤ + +[filehighlight] + directory = blue; + executable = red; + symlink = cyan; + hardlink = cyan; + stalelink = cyan; + device = brightgreen; + special = green; + core = red; + temp = brightgreen; + archive = red; + doc = yellow; + source = brightcyan; + media = brightgreen; + graph = cyan; + database = brightred; + +[core] + _default_ = magenta;default + selected = black;cyan + marked = black;cyan + markselect = black;blue + gauge = black;magenta + input = blue;black + inputmark = black;red + inputunchanged = red;black + commandlinemark = white;red + reverse = black;magenta + header = black;magenta + +[dialog] + _default_ = magenta;gray + dfocus = black;magenta + dhotnormal = gray;magenta + dhotfocus = gray;magenta + dtitle = magenta;gray + +[error] + _default_ = red;gray + errdfocus = black;red + errdhotnormal = red;black + errdhotfocus = yellow;red + errdtitle = gray;red + +[menu] + _default_ = white;black + menusel = black;cyan + menuhot = black;cyan + menuhotsel = cyan;black + menuinactive = white;black + +[help] + _default_ = magenta;gray + helpitalic = red;black;italic + helpbold = brightgreen;black;bold + helplink = blue;black + helpslink = gray;blue + helptitle = gray;magenta + +[editor] + _default_ = magenta;default + editbold = brightgreen;black + editmarked = black;cyan + editwhitespace = brightblue;black + editlinestate = white;black + bookmark = black;red + bookmarkfound = black;brightgreen + editrightmargin = brightblue;black + editframe = brightgreen; + editframeactive = white; + editframedrag = brightblue; + +[viewer] + _default_ = magenta;default + viewbold = green;black;bold + viewunderline = red;black + viewselected = blue;black + +[popupmenu] + _default_ = white;black + menusel = black;cyan + menutitle = white;black + +[buttonbar] + hotkey = black;cyan + button = white;black + +[statusbar] + _default_ = white;black + +[diffviewer] + added = black;green + changedline = black;cyan + changednew = red;cyan + changed = black;yellow + removed = black;red + error = red;white + +[widget-common] + sort-sign-up = ↑ + sort-sign-down = ↓ + +[widget-panel] + hiddenfiles-sign-show = • + hiddenfiles-sign-hide = ○ + history-prev-item-sign = « + history-next-item-sign = » + history-show-list-sign = ^ + filename-scroll-left-char = « + filename-scroll-right-char = » + +[widget-editor] + window-state-char = ↕ + window-close-char = ✕