From 805cb01ca6e297fcb4127494c3db49a6c4427650 Mon Sep 17 00:00:00 2001 From: Ray Andrew Date: Fri, 19 Dec 2025 01:13:32 -0600 Subject: [PATCH] fix!: make pickwick usable again --- ...l.properties => davmail.darwin.properties} | 2 +- config/davmail/davmail.linux.properties | 33 ++++ config/ghostty/config | 2 +- config/nvim/init.lua | 27 ++-- home/colors.nix | 73 +++++++++ home/email/default.nix | 6 +- home/gui.nix | 37 ++++- home/i3/default.nix | 141 +++++++++++++++++- home/i3/i3status.config | 3 + hosts/pickwick/default.nix | 16 ++ 10 files changed, 319 insertions(+), 21 deletions(-) rename config/davmail/{davmail.properties => davmail.darwin.properties} (91%) create mode 100644 config/davmail/davmail.linux.properties create mode 100644 home/colors.nix diff --git a/config/davmail/davmail.properties b/config/davmail/davmail.darwin.properties similarity index 91% rename from config/davmail/davmail.properties rename to config/davmail/davmail.darwin.properties index 34879c5..5919ebf 100644 --- a/config/davmail/davmail.properties +++ b/config/davmail/davmail.darwin.properties @@ -19,7 +19,7 @@ davmail.logFilePath=/tmp/davmail.log davmail.logFileSize=1MB # OAuth token storage -davmail.oauth.tokenFilePath=/Users/rayandrew/.local/state/davmail-tokens +davmail.oauth.tokenFilePath=/home/rayandrew/.local/state/davmail-tokens # Log levels log4j.logger.davmail=WARN diff --git a/config/davmail/davmail.linux.properties b/config/davmail/davmail.linux.properties new file mode 100644 index 0000000..5919ebf --- /dev/null +++ b/config/davmail/davmail.linux.properties @@ -0,0 +1,33 @@ +# DavMail configuration +# See: http://davmail.sourceforge.net/serversetup.html + +davmail.server=true +davmail.disableUpdateCheck=true +davmail.mode=O365Manual +davmail.url=https://outlook.office365.com/EWS/Exchange.asmx +davmail.keepDelay=30 + +# Ports +davmail.caldavPort=1080 +davmail.imapPort=1143 +davmail.ldapPort=1389 +davmail.popPort=1110 +davmail.smtpPort=1025 + +# Logging +davmail.logFilePath=/tmp/davmail.log +davmail.logFileSize=1MB + +# OAuth token storage +davmail.oauth.tokenFilePath=/home/rayandrew/.local/state/davmail-tokens + +# Log levels +log4j.logger.davmail=WARN +log4j.logger.httpclient.wire=WARN +log4j.logger.org.apache.commons.httpclient=WARN +log4j.rootLogger=WARN + +# log4j.logger.davmail=DEBUG +# log4j.logger.httpclient.wire=DEBUG +# log4j.logger.org.apache.commons.httpclient=DEBUG +# log4j.rootLogger=DEBUG diff --git a/config/ghostty/config b/config/ghostty/config index 5545089..03e9afb 100644 --- a/config/ghostty/config +++ b/config/ghostty/config @@ -3,7 +3,7 @@ gtk-single-instance = true gtk-titlebar = false window-decoration = server quit-after-last-window-closed = true -gtk-adwaita = false +# gtk-adwaita = false # font-family = ${system-font} font-family = Consolas font-family = Symbols Nerd Font Mono diff --git a/config/nvim/init.lua b/config/nvim/init.lua index 009a5c7..237dcf8 100644 --- a/config/nvim/init.lua +++ b/config/nvim/init.lua @@ -58,9 +58,9 @@ add 'aserowy/tmux.nvim' add 'NMAC427/guess-indent.nvim' add 'wakatime/vim-wakatime' add 'OXY2DEV/markview.nvim' -add { source = 'R-nvim/R.nvim', depends = { 'nvim-treesitter/nvim-treesitter' } } -add 'nvim-treesitter/nvim-treesitter' -add 'nvim-treesitter/nvim-treesitter-textobjects' +add { source = 'R-nvim/R.nvim', depends = { { source = 'nvim-treesitter/nvim-treesitter', checkout = 'main' } } } +add { source = 'nvim-treesitter/nvim-treesitter', checkout = 'main' } +add { source = 'nvim-treesitter/nvim-treesitter-textobjects', checkout = 'main' } add { source = 'nvim-pack/nvim-spectre', depends = { 'nvim-lua/plenary.nvim' } } add 'lervag/vimtex' add 'micangl/cmp-vimtex' @@ -345,7 +345,7 @@ later(function() require('tmux').setup {} -- Ensure treesitter parsers are installed - require('nvim-treesitter.configs').setup { + require('nvim-treesitter.config').setup { ensure_installed = { 'r', 'rnoweb', @@ -595,20 +595,21 @@ later(function() 'clangd', -- C/C++ 'copilot', 'marksman', -- Markdown + Zettelkasten + 'stylua', }, automatic_installation = true, } -- Ensure formatters are installed - local mason_registry = require 'mason-registry' - local formatters = { - 'stylua', - } - - for _, formatter in ipairs(formatters) do - local package = mason_registry.get_package(formatter) - if not package:is_installed() then package:install() end - end + -- local mason_registry = require 'mason-registry' + -- local formatters = { + -- 'stylua', + -- } + -- + -- for _, formatter in ipairs(formatters) do + -- local package = mason_registry.get_package(formatter) + -- if not package:is_installed() then package:install() end + -- end -- LSP keybindings and options vim.api.nvim_create_autocmd('LspAttach', { diff --git a/home/colors.nix b/home/colors.nix new file mode 100644 index 0000000..86a5acd --- /dev/null +++ b/home/colors.nix @@ -0,0 +1,73 @@ +# Noctis Azureus color palette +# Based on https://github.com/EastSun5566/ghostty-noctis-themes +# This is the single source of truth for colors across the dotfiles +{ + # UI backgrounds (from ghostty theme) + bg = "#051b29"; + bg_dark = "#041520"; + bg_darker = "#030f18"; + bg_float = "#07273b"; + bg_highlight = "#0c3f5f"; + bg_visual = "#1679b6"; + + # Diff backgrounds + diff_add = "#1a3328"; + diff_delete = "#3d2a2a"; + diff_change = "#153a5b"; + + # Foreground + fg = "#becfda"; + fg_dark = "#aec3d0"; + fg_gutter = "#475e6c"; + + # Syntax colors (from terminal palette) + comment = "#475e6c"; # bright black + keyword = "#df769b"; # magenta + tag = "#e66533"; # red + variable = "#e4b781"; # yellow + string = "#49e9a6"; # green + string_escape = "#60ebb1"; # bright green + number = "#49ace9"; # blue + func = "#49d6e9"; # cyan + type = "#e97749"; # bright red + constant = "#e69533"; # bright yellow + support = "#60dbeb"; # bright cyan + misc = "#60b6eb"; # bright blue + + # Semantic colors + error = "#e66533"; # red + warning = "#e4b781"; # yellow + info = "#49ace9"; # blue + hint = "#49e9a6"; # green + + # UI accents + border = "#28353e"; # black + cursor = "#becfda"; + search = "#49e9a6"; + match = "#e4b781"; + + # Bar/statusline specific (matches sketchybar approach) + bar_bg = "#030f18"; # bg_darker - same as sketchybar + bar_fg = "#aec3d0"; # fg_dark - slightly muted + bar_accent = "#49ace9"; # blue - for focused workspace + + # Terminal colors (ANSI) + black = "#28353e"; + red = "#e66533"; + green = "#49e9a6"; + yellow = "#e4b781"; + blue = "#49ace9"; + magenta = "#df769b"; + cyan = "#49d6e9"; + white = "#becfda"; + + # Bright terminal colors + bright_black = "#475e6c"; + bright_red = "#e97749"; + bright_green = "#60ebb1"; + bright_yellow = "#e69533"; + bright_blue = "#60b6eb"; + bright_magenta = "#df769b"; + bright_cyan = "#60dbeb"; + bright_white = "#d0dfe8"; +} diff --git a/home/email/default.nix b/home/email/default.nix index 0c59ae4..6751447 100644 --- a/home/email/default.nix +++ b/home/email/default.nix @@ -21,7 +21,11 @@ # DavMail service (Exchange gateway) services.davmail = { enable = config.custom.email.davmail; - configFile = "${dots}/config/davmail/davmail.properties"; + configFile = + if pkgs.stdenv.isDarwin then + "${dots}/config/davmail/davmail.darwin.properties" + else + "${dots}/config/davmail/davmail.linux.properties"; }; # Mbsync service (mail sync) diff --git a/home/gui.nix b/home/gui.nix index f94cf13..40d84dd 100644 --- a/home/gui.nix +++ b/home/gui.nix @@ -32,6 +32,9 @@ firefox = { enable = mkEnableOption "Enable Firefox"; }; + qutebrowser = { + enable = mkEnableOption "Enable qutebrowser"; + }; }; config = lib.mkMerge [ @@ -58,6 +61,21 @@ } (lib.mkIf config.custom.gui.default.enable { + home.packages = with pkgs; [ + qutebrowser + ]; + + xdg.mimeApps = { + enable = true; + defaultApplications = { + "text/html" = "firefox.desktop"; + "x-scheme-handler/http" = "firefox.desktop"; + "x-scheme-handler/https" = "firefox.desktop"; + "x-scheme-handler/about" = "firefox.desktop"; + "x-scheme-handler/unknown" = "firefox.desktop"; + }; + }; + dconf.settings = { "org/gnome/desktop/interface" = { color-scheme = "prefer-dark"; @@ -65,6 +83,22 @@ clock-format = "12h"; }; }; + gtk = { + enable = true; + theme = { + name = "Adwaita-dark"; + package = pkgs.gnome-themes-extra; + }; + gtk3.extraConfig.gtk-application-prefer-dark-theme = 1; + gtk4.extraConfig.gtk-application-prefer-dark-theme = 1; + }; + + qt = { + enable = true; + style = { + name = "adwaita-dark"; + }; + }; }) (lib.mkIf config.custom.gui.vscode.enable { @@ -115,9 +149,8 @@ spotify slack webex - whatsapp-for-linux + wasistlos teams-for-linux - skypeforlinux inputs.zen-browser.packages."${system}".twilight chromium arandr diff --git a/home/i3/default.nix b/home/i3/default.nix index 94eba5f..4b35d40 100644 --- a/home/i3/default.nix +++ b/home/i3/default.nix @@ -6,6 +6,9 @@ system, ... }: +let + colors = import ../colors.nix; +in { options.custom.gui = with lib; { i3 = { @@ -13,12 +16,74 @@ }; }; config = lib.mkIf config.custom.gui.i3.enable { - xdg.configFile."i3status/config".source = pkgs.replaceVars ./i3status.config { }; + xdg.configFile."i3status/config".source = pkgs.replaceVars ./i3status.config { + inherit (colors) green warning error; + }; services.picom = { enable = true; }; services.dunst = { enable = true; + settings = { + global = { + width = 300; + height = 300; + origin = "top-right"; + offset = "10x50"; + notification_limit = 5; + progress_bar = true; + progress_bar_height = 10; + progress_bar_frame_width = 1; + progress_bar_min_width = 150; + progress_bar_max_width = 300; + transparency = 0; + separator_height = 2; + padding = 8; + horizontal_padding = 8; + frame_width = 2; + frame_color = colors.border; + separator_color = "frame"; + sort = true; + idle_threshold = 120; + font = "Monospace 10"; + line_height = 0; + markup = "full"; + format = "%s\\n%b"; + alignment = "left"; + vertical_alignment = "center"; + show_age_threshold = 60; + ellipsize = "middle"; + stack_duplicates = true; + show_indicators = true; + icon_position = "left"; + min_icon_size = 32; + max_icon_size = 128; + sticky_history = true; + history_length = 20; + corner_radius = 8; + mouse_left_click = "close_current"; + mouse_middle_click = "do_action, close_current"; + mouse_right_click = "close_all"; + }; + urgency_low = { + background = colors.bg; + foreground = colors.fg; + frame_color = colors.border; + timeout = 5; + }; + urgency_normal = { + background = colors.bg; + foreground = colors.fg; + frame_color = colors.info; + timeout = 10; + }; + urgency_critical = { + background = colors.bg_dark; + foreground = colors.fg; + frame_color = colors.error; + timeout = 0; + }; + }; }; home.pointerCursor = { package = pkgs.adwaita-icon-theme; @@ -40,7 +105,8 @@ if test -e $HOME/.Xresources; then ${pkgs.xorg.xrdb}/bin/xrdb -merge $HOME/.Xresources &disown fi - echo "Xft.dpi: 192" | ${pkgs.xorg.xrdb}/bin/xrdb -merge + # echo "Xft.dpi: 192" | ${pkgs.xorg.xrdb}/bin/xrdb -merge + echo "Xft.dpi: 144" | ${pkgs.xorg.xrdb}/bin/xrdb -merge ''; windowManager.i3 = let @@ -86,6 +152,10 @@ enable = true; config = { inherit modifier terminal; + fonts = { + names = [ "SpaceMono Nerd Font" ]; + size = 10.0; + }; keybindings = lib.mkOptionDefault { "${modifier}+h" = "focus left"; "${modifier}+j" = "focus down"; @@ -174,9 +244,74 @@ } // exitMode; }; + colors = { + focused = { + border = colors.info; + background = colors.bg_highlight; + text = colors.fg; + indicator = colors.info; + childBorder = colors.info; + }; + focusedInactive = { + border = colors.border; + background = colors.bg_float; + text = colors.fg_dark; + indicator = colors.border; + childBorder = colors.border; + }; + unfocused = { + border = colors.bg_dark; + background = colors.bg_dark; + text = colors.comment; + indicator = colors.bg_dark; + childBorder = colors.bg_dark; + }; + urgent = { + border = colors.error; + background = colors.error; + text = colors.fg; + indicator = colors.error; + childBorder = colors.error; + }; + }; + bars = [ + { + position = "bottom"; + statusCommand = "${pkgs.i3status}/bin/i3status"; + fonts = { + names = [ "SpaceMono Nerd Font" ]; + size = 10.0; + }; + colors = { + background = colors.bar_bg; + statusline = colors.fg; + separator = colors.border; + focusedWorkspace = { + border = colors.bar_accent; + background = colors.bar_accent; + text = colors.bg_darker; + }; + activeWorkspace = { + border = colors.bg_highlight; + background = colors.bg_highlight; + text = colors.fg; + }; + inactiveWorkspace = { + border = colors.bar_bg; + background = colors.bar_bg; + text = colors.fg_dark; + }; + urgentWorkspace = { + border = colors.error; + background = colors.error; + text = colors.fg; + }; + }; + } + ]; startup = [ { - command = "${pkgs.hsetroot}/bin/hsetroot -solid \"#062329\""; + command = "${pkgs.hsetroot}/bin/hsetroot -solid \"${colors.bg}\""; notification = false; } { diff --git a/home/i3/i3status.config b/home/i3/i3status.config index 58b9133..ee50f86 100644 --- a/home/i3/i3status.config +++ b/home/i3/i3status.config @@ -1,6 +1,9 @@ general { colors = true interval = 5 + color_good = "@green@" + color_degraded = "@warning@" + color_bad = "@error@" } # order += "ipv6" diff --git a/hosts/pickwick/default.nix b/hosts/pickwick/default.nix index 39ce079..19fe9aa 100644 --- a/hosts/pickwick/default.nix +++ b/hosts/pickwick/default.nix @@ -1,6 +1,7 @@ { user, pkgs, + home-dir, ... }: { @@ -54,19 +55,34 @@ # home manager hm.custom = { + environment = { + enable = true; + variables = { + EDITOR = "nvim"; + SOPS_AGE_KEY_FILE = "${home-dir}/.config/sops/age/keys.txt"; + }; + }; emacs.enable = true; + neovim.enable = true; latex.enable = true; + tmux.enable = true; gui = { default.enable = true; i3.enable = true; ghostty.enable = true; firefox.enable = true; + linux.enable = true; + kitty.enable = true; + zathura.enable = true; + sioyek.enable = true; }; email = { enable = true; davmail = true; neomutt = true; mbsync = true; + mailcap = true; + notmuch = true; }; }; }