diff --git a/darwin/homebrew.nix b/darwin/homebrew.nix index f3c5132..b99cb07 100644 --- a/darwin/homebrew.nix +++ b/darwin/homebrew.nix @@ -59,6 +59,11 @@ positron = mkEnableOption "Enable positron"; claude = mkEnableOption "Enable claude"; iterm2 = mkEnableOption "Enable iterm2"; + cmake = mkEnableOption "Enable cmake"; + ninja = mkEnableOption "Enable ninja"; + clang-format = mkEnableOption "Enable clang-format"; + marta = mkEnableOption "Enable marta"; + valgrind = mkEnableOption "Enable valgrind"; }; config = lib.mkMerge [ @@ -74,9 +79,10 @@ "homebrew/homebrew-createzap" = inputs.homebrew-createzap; "d12frosted/homebrew-emacs-plus" = inputs.homebrew-emacs-plus; "brewsci/homebrew-bio" = inputs.homebrew-brewsci-bio; + # "LouisBrunner/valgrind" = inputs.homebrew-valgrind; } ]; - mutableTaps = false; + mutableTaps = false; # true to enable valgrind }; homebrew = { enable = true; @@ -342,5 +348,33 @@ "iterm2" ]; }) + (lib.mkIf config.custom.brew.cmake { + homebrew.brews = [ + "cmake" + ]; + }) + (lib.mkIf config.custom.brew.ninja { + homebrew.brews = [ + "ninja" + ]; + }) + (lib.mkIf config.custom.brew.clang-format { + homebrew.brews = [ + "clang-format" + ]; + }) + (lib.mkIf config.custom.brew.marta { + homebrew.casks = [ + "marta" + ]; + }) + (lib.mkIf config.custom.brew.valgrind { + # homebrew.brews = [ + # { + # name = "LouisBrunner/valgrind/valgrind"; + # args = ["HEAD"]; + # } + # ]; + }) ]; } diff --git a/flake.lock b/flake.lock index e897791..d96e751 100644 --- a/flake.lock +++ b/flake.lock @@ -325,6 +325,22 @@ "type": "github" } }, + "homebrew-valgrind": { + "flake": false, + "locked": { + "lastModified": 1760528864, + "narHash": "sha256-l7na1829ushhmKXJi7OicmGlTHdvI+N3MVinY6RQe9w=", + "owner": "LouisBrunner", + "repo": "homebrew-valgrind", + "rev": "c646928f7890281e8d253de193a246dee18d40c5", + "type": "github" + }, + "original": { + "owner": "LouisBrunner", + "repo": "homebrew-valgrind", + "type": "github" + } + }, "mac-app-util": { "inputs": { "cl-nix-lite": "cl-nix-lite", @@ -542,6 +558,7 @@ "homebrew-core": "homebrew-core", "homebrew-createzap": "homebrew-createzap", "homebrew-emacs-plus": "homebrew-emacs-plus", + "homebrew-valgrind": "homebrew-valgrind", "mac-app-util": "mac-app-util", "nix-darwin": "nix-darwin", "nix-homebrew": "nix-homebrew", diff --git a/flake.nix b/flake.nix index 9696e5b..09e98e0 100644 --- a/flake.nix +++ b/flake.nix @@ -38,6 +38,8 @@ homebrew-emacs-plus.flake = false; homebrew-brewsci-bio.url = "github:brewsci/homebrew-bio"; homebrew-brewsci-bio.flake = false; + homebrew-valgrind.url = "github:LouisBrunner/homebrew-valgrind"; + homebrew-valgrind.flake = false; }; outputs = diff --git a/home/emacs/config/lib/naysayer-light-theme.el b/home/emacs/config/lib/naysayer-light-theme.el new file mode 100644 index 0000000..a7008f5 --- /dev/null +++ b/home/emacs/config/lib/naysayer-light-theme.el @@ -0,0 +1,192 @@ +;;; naysayer-light-theme.el --- The naysayer light color theme + +;; Author: Nick Aversano +;; Version: 0.33 +;; Filename: naysayer-light-theme.el +;; Package-Requires: ((emacs "24")) +;; URL: https://github.com/nickav/naysayer-theme.el +;; License: GPL-3+ + +;;; Commentary: + +;; Light version of the naysayer theme. Bright color scheme with warm tones. + +;;; Code: + +(unless (>= emacs-major-version 24) + (error "The naysayer theme requires Emacs 24 or later!")) + +(deftheme naysayer-light "The naysayer light color theme") + +;; Monokai colors +(defcustom naysayer-theme-yellow "#E6DB74" "Primary colors - yellow" :type 'string :group 'monokai) +(defcustom naysayer-theme-orange "#FD971F" "Primary colors - orange" :type 'string :group 'monokai) +(defcustom naysayer-theme-red "#F92672" "Primary colors - red" :type 'string :group 'monokai) +(defcustom naysayer-theme-magenta "#FD5FF0" "Primary colors - magenta" :type 'string :group 'monokai) +(defcustom naysayer-theme-blue "#66D9EF" "Primary colors - blue" :type 'string :group 'monokai) +(defcustom naysayer-theme-green "#A6E22E" "Primary colors - green" :type 'string :group 'monokai) +(defcustom naysayer-theme-cyan "#A1EFE4" "Primary colors - cyan" :type 'string :group 'monokai) +(defcustom naysayer-theme-violet "#AE81FF" "Primary colors - violet" :type 'string :group 'monokai) + +(let ((background "#fafaf5") + (gutters "#fafaf5") + (gutter-fg "#8b7355") + (gutters-active "#f0f0e8") + (builtin "#003030") + (selection "#c8e8c8") + (text "#5a4a3a") + (comments "#18a010") + (punctuation "#18a010") + (keywords "#B05A00") + (variables "#5a4a3a") + (functions "#000000") + (methods "#000000") + (strings "#0c7060") + (constants "#003030") + (macros "#18a010") + (numbers "#003030") + (white "#000000") + (error "#c05040") + (warning "#c05040") + (highlight-line "#e8f4e8") + (line-fg "#70a070") + (modeline-bg "#18a010") + (modeline-fg "#fafaf5")) + + (custom-theme-set-faces + 'naysayer-light + + ;; Default colors + ;; ***************************************************************************** + + `(default ((t (:foreground ,text :background ,background, :weight normal)))) + `(region ((t (:foreground nil :background ,selection)))) + `(cursor ((t (:background ,white )))) + `(fringe ((t (:background ,background :foreground ,white)))) + `(linum ((t (:background ,background :foreground ,gutter-fg)))) + `(highlight ((t (:foreground nil :background ,selection)))) + + ;; Font lock faces + ;; ***************************************************************************** + + `(font-lock-keyword-face ((t (:foreground ,keywords)))) + `(font-lock-type-face ((t (:foreground ,punctuation)))) + `(font-lock-constant-face ((t (:foreground ,constants)))) + `(font-lock-variable-name-face ((t (:foreground ,variables)))) + `(font-lock-builtin-face ((t (:foreground ,builtin)))) + `(font-lock-string-face ((t (:foreground ,strings)))) + `(font-lock-comment-face ((t (:foreground ,comments)))) + `(font-lock-comment-delimiter-face ((t (:foreground ,comments)))) + `(font-lock-doc-face ((t (:foreground ,comments)))) + `(font-lock-function-name-face ((t (:foreground ,functions)))) + `(font-lock-doc-string-face ((t (:foreground ,strings)))) + `(font-lock-preprocessor-face ((t (:foreground ,macros)))) + `(font-lock-warning-face ((t (:foreground ,warning)))) + + ;; Plugins + ;; ***************************************************************************** + `(trailing-whitespace ((t (:foreground nil :background ,warning)))) + `(whitespace-trailing ((t (:background nil :foreground ,warning :inverse-video t)))) + + `(linum ((t (:foreground ,line-fg :background ,background)))) + `(linum-relative-current-face ((t (:foreground ,white :background ,background)))) + `(line-number ((t (:foreground ,line-fg :background ,background)))) + `(line-number-current-line ((t (:foreground ,white :background ,background)))) + + ;; hl-line-mode + `(hl-line ((t (:background ,highlight-line)))) + `(hl-line-face ((t (:background ,highlight-line)))) + + ;; rainbow-delimiters + `(rainbow-delimiters-depth-1-face ((t (:foreground ,naysayer-theme-violet)))) + `(rainbow-delimiters-depth-2-face ((t (:foreground ,naysayer-theme-blue)))) + `(rainbow-delimiters-depth-3-face ((t (:foreground ,naysayer-theme-green)))) + `(rainbow-delimiters-depth-4-face ((t (:foreground ,naysayer-theme-yellow)))) + `(rainbow-delimiters-depth-5-face ((t (:foreground ,naysayer-theme-orange)))) + `(rainbow-delimiters-depth-6-face ((t (:foreground ,naysayer-theme-red)))) + `(rainbow-delimiters-depth-7-face ((t (:foreground ,naysayer-theme-violet)))) + `(rainbow-delimiters-depth-8-face ((t (:foreground ,naysayer-theme-blue)))) + `(rainbow-delimiters-depth-9-face ((t (:foreground ,naysayer-theme-green)))) + `(rainbow-delimiters-depth-10-face ((t (:foreground ,naysayer-theme-yellow)))) + `(rainbow-delimiters-depth-11-face ((t (:foreground ,naysayer-theme-orange)))) + `(rainbow-delimiters-depth-12-face ((t (:foreground ,naysayer-theme-red)))) + + ;; which-func + `(which-func ((t (:inverse-video unspecified + :underline unspecified + :foreground ,background + :weight bold + :box nil)))) + + ;; mode-line and powerline + `(mode-line-buffer-id ((t (:foreground ,modeline-fg :distant-foreground ,modeline-bg :text ,modeline-fg :weight bold)))) + `(mode-line ((t (:inverse-video unspecified + :underline unspecified + :foreground ,modeline-fg + :background ,modeline-bg + :box nil)))) + `(powerline-active1 ((t (:background ,modeline-bg :foreground ,modeline-fg)))) + `(powerline-active2 ((t (:background ,modeline-bg :foreground ,modeline-fg)))) + + `(mode-line-inactive ((t (:inverse-video unspecified + :underline unspecified + :foreground ,text + :background ,background + :box nil)))) + `(powerline-inactive1 ((t (:background ,background :foreground ,text)))) + `(powerline-inactive2 ((t (:background ,background :foreground ,text)))) + + ;; better compatibility with default DOOM mode-line + `(error ((t (:foreground nil :weight normal)))) + `(doom-modeline-project-dir ((t (:foreground nil :weight bold)))) + + ;; js2-mode + `(js2-function-call ((t (:inherit (font-lock-function-name-face))))) + `(js2-function-param ((t (:foreground ,text)))) + `(js2-jsdoc-tag ((t (:foreground ,keywords)))) + `(js2-jsdoc-type ((t (:foreground ,constants)))) + `(js2-jsdoc-value((t (:foreground ,text)))) + `(js2-object-property ((t (:foreground ,text)))) + `(js2-external-variable ((t (:foreground ,constants)))) + `(js2-error ((t (:foreground ,error)))) + `(js2-warning ((t (:foreground ,warning)))) + + ;; highlight numbers + `(highlight-numbers-number ((t (:foreground ,numbers)))) + + ;; tab-bar-mode + `(tab-bar ((t (:inherit modeline)))) + `(tab-bar-tab ((t (:foreground ,modeline-fg :background ,modeline-bg)))) + `(tab-bar-tab-inactive ((t (:foreground ,text :background ,background)))) + ) + + (custom-theme-set-faces + 'naysayer-light + `(my-elisp-plist-keyword-face ((t (:foreground ,keywords))))) + + (font-lock-add-keywords + 'emacs-lisp-mode + '(("\\(:[a-zA-Z0-9-]+\\)" 1 'my-elisp-plist-keyword-face))) + + (custom-theme-set-variables + 'naysayer-light + '(linum-format " %5i ") + ) +) + +;;;###autoload +(when (and (boundp 'custom-theme-load-path) load-file-name) + (add-to-list 'custom-theme-load-path + (file-name-as-directory (file-name-directory load-file-name)))) + +;; ***************************************************************************** + +(provide-theme 'naysayer-light) + +;; Local Variables: +;; no-byte-compile: t +;; End: + +(provide 'naysayer-light-theme) + +;;; naysayer-light-theme.el ends here diff --git a/home/emacs/config/post-init.el b/home/emacs/config/post-init.el index c655ef0..a82ad88 100644 --- a/home/emacs/config/post-init.el +++ b/home/emacs/config/post-init.el @@ -63,6 +63,14 @@ (load-theme 'naysayer t) :load-path rs/lib-dir) +;; (use-package naysayer-light-theme +;; :ensure nil +;; ;; :defer t +;; ;; :elpaca nil +;; :config +;; (load-theme 'naysayer-light t) +;; :load-path rs/lib-dir) + ;; (use-package zenburn-theme ;; :config ;; (load-theme 'zenburn t)) @@ -653,6 +661,10 @@ frame if FRAME is nil, and to 1 if AMT is nil." ("w" "Work" agenda "" ((org-agenda-files '("work.org"))))))) +(use-package wakatime-mode + :config + (global-wakatime-mode)) + ;; (use-package editorconfig ;; :init ;; (setq editorconfig-lisp-use-default-indent t) ; restores alignment for elisp diff --git a/home/emacs/config/pre-early-init.el b/home/emacs/config/pre-early-init.el index c3d247e..4d06fa9 100644 --- a/home/emacs/config/pre-early-init.el +++ b/home/emacs/config/pre-early-init.el @@ -31,7 +31,7 @@ (setenv "LIBRARY_PATH" (mapconcat 'identity '( - "/opt/homebrew/opt/gcc/lib/gcc/14" - "/opt/homebrew/opt/libgccjit/lib/gcc/14" - "/opt/homebrew/opt/gcc/lib/gcc/14/gcc/aarch64-apple-darwin24/14") + "/opt/homebrew/opt/gcc/lib/gcc/15" + "/opt/homebrew/opt/libgccjit/lib/gcc/15" + "/opt/homebrew/opt/gcc/lib/gcc/15/gcc/aarch64-apple-darwin24/15") ":")) diff --git a/home/latex.nix b/home/latex.nix index 9778e5a..4937c4e 100644 --- a/home/latex.nix +++ b/home/latex.nix @@ -16,6 +16,7 @@ config = lib.mkIf config.custom.latex.enable { home.packages = with pkgs; [ config.custom.latex.package + ghostscript ]; }; } diff --git a/hosts/dango/default.nix b/hosts/dango/default.nix index 1e8bc8b..f8934ca 100644 --- a/hosts/dango/default.nix +++ b/hosts/dango/default.nix @@ -63,6 +63,11 @@ positron = true; claude = true; iterm2 = true; + cmake = true; + ninja = true; + clang-format = true; + marta = true; + valgrind = true; }; };