diff --git a/flake.lock b/flake.lock index 9457803..595409c 100644 --- a/flake.lock +++ b/flake.lock @@ -23,11 +23,11 @@ }, "catppuccin": { "locked": { - "lastModified": 1731232837, - "narHash": "sha256-0aIwr/RC/oe7rYkfJb47xjdEQDSNcqpFGsEa+EPlDEs=", + "lastModified": 1732838231, + "narHash": "sha256-KJTRqfEcGpONBK/6BkMdWmbGth0r/nYWY3k/rvZl4es=", "owner": "catppuccin", "repo": "nix", - "rev": "32359bf226fe874d3b7a0a5753d291a4da9616fe", + "rev": "becc64812c8d6af24dedc2f75c5c63ebf778a115", "type": "github" }, "original": { @@ -80,11 +80,11 @@ ] }, "locked": { - "lastModified": 1731549112, - "narHash": "sha256-c9I3i1CwZ10SoM5npQQVnfwgvB86jAS3lT4ZqkRoSOI=", + "lastModified": 1732742778, + "narHash": "sha256-i+Uw8VOHzQe9YdNwKRbzvaPWLE07tYVqUDzSFTXhRgk=", "owner": "nix-community", "repo": "disko", - "rev": "5fd852c4155a689098095406500d0ae3d04654a8", + "rev": "341482e2f4d888e3f60cae1c12c3df896e7230d8", "type": "github" }, "original": { @@ -100,11 +100,11 @@ "pyproject-nix": "pyproject-nix" }, "locked": { - "lastModified": 1731424167, - "narHash": "sha256-nKKeRwq7mxcW8cBTmPKzSg0DR/inVrtuJudVM81GISU=", + "lastModified": 1732214960, + "narHash": "sha256-ViyEMSYwaza6y55XTDrsRi2K4YKCLsefMTorjWSE27s=", "owner": "nix-community", "repo": "dream2nix", - "rev": "44d41411686bc798876bd6d9f36a4c1143138d85", + "rev": "a8dac99db44307fdecead13a39c584b97812d0d4", "type": "github" }, "original": { @@ -119,11 +119,11 @@ "nixpkgs-stable": "nixpkgs-stable" }, "locked": { - "lastModified": 1731574827, - "narHash": "sha256-QneOtCpfBNkgJCs32Y8LaKDpontw7W9ATQxIW4qb6qc=", + "lastModified": 1732871643, + "narHash": "sha256-YrjBqjdNvOSGtYDR4ijVqQwDB6fwhLx//p162TlrkzM=", "owner": "nix-community", "repo": "emacs-overlay", - "rev": "4639038b0f5e66e7d0f3d103b8e44ded3ab7e337", + "rev": "ca218dbd42ae4b16bc4378a06f5f1310b69a32af", "type": "github" }, "original": { @@ -209,11 +209,11 @@ ] }, "locked": { - "lastModified": 1727826117, - "narHash": "sha256-K5ZLCyfO/Zj9mPFldf3iwS6oZStJcU4tSpiXTMYaaL0=", + "lastModified": 1730504689, + "narHash": "sha256-hgmguH29K2fvs9szpq2r3pz2/8cJd2LPS+b4tfNFCwE=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "3d04084d54bedc3d6b8b736c70ef449225c361b1", + "rev": "506278e768c2a08bec68eb62932193e341f55c90", "type": "github" }, "original": { @@ -287,11 +287,11 @@ "systems": "systems_2" }, "locked": { - "lastModified": 1726560853, - "narHash": "sha256-X6rJYSESBVr3hBoH0WbKE5KvhPU5bloyZ2L4K60/fPQ=", + "lastModified": 1731533236, + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", "owner": "numtide", "repo": "flake-utils", - "rev": "c1dfcf08411b08f6b8615f7d8971a2bfa81d5e8a", + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", "type": "github" }, "original": { @@ -361,11 +361,11 @@ "nixpkgs-stable": "nixpkgs-stable_2" }, "locked": { - "lastModified": 1731363552, - "narHash": "sha256-vFta1uHnD29VUY4HJOO/D6p6rxyObnf+InnSMT4jlMU=", + "lastModified": 1732021966, + "narHash": "sha256-mnTbjpdqF0luOkou8ZFi2asa1N3AA2CchR/RqCNmsGE=", "owner": "cachix", "repo": "git-hooks.nix", - "rev": "cd1af27aa85026ac759d5d3fccf650abe7e1bbf0", + "rev": "3308484d1a443fc5bc92012435d79e80458fe43c", "type": "github" }, "original": { @@ -485,11 +485,11 @@ ] }, "locked": { - "lastModified": 1731535640, - "narHash": "sha256-2EckCJn4wxran/TsRiCOFcmVpep2m9EBKl99NBh2GnM=", + "lastModified": 1732884235, + "narHash": "sha256-r8j6R3nrvwbT1aUp4EPQ1KC7gm0pu9VcV1aNaB+XG6Q=", "owner": "nix-community", "repo": "home-manager", - "rev": "35b055009afd0107b69c286fca34d2ad98940d57", + "rev": "819f682269f4e002884702b87e445c82840c68f2", "type": "github" }, "original": { @@ -546,11 +546,11 @@ "rust-overlay": "rust-overlay" }, "locked": { - "lastModified": 1730739295, - "narHash": "sha256-aYeJ/P/9AuK6Kee63ZdsmDjEwhnksF+gIv/OyGtlBJE=", + "lastModified": 1731941836, + "narHash": "sha256-zpmAzrvK8KdssBSwiIwwRxaUJ77oWORbW0XFvgCFpTE=", "owner": "nix-community", "repo": "lanzaboote", - "rev": "cef39a78679c266300874e7a7000b4da066228d4", + "rev": "2f48272f34174fd2a5ab3df4d8a46919247be879", "type": "github" }, "original": { @@ -589,11 +589,11 @@ "treefmt-nix": "treefmt-nix" }, "locked": { - "lastModified": 1731185443, - "narHash": "sha256-9qkRZFTgbMonlBaLqL+OW6iiHLWXuBJlThISMhwQuGg=", + "lastModified": 1732351635, + "narHash": "sha256-H94CcQ3yamG5+RMxtxXllR02YIlxQ5WD/8PcolO9yEA=", "ref": "refs/heads/main", - "rev": "57ddb99e781d19704f8a84036f9890e6ca554c41", - "revCount": 613, + "rev": "dfc286ca3dc49118c30d8d6205d6d6af76c62b7a", + "revCount": 617, "type": "git", "url": "https://git.lix.systems/lix-project/nix-eval-jobs" }, @@ -614,11 +614,11 @@ ] }, "locked": { - "lastModified": 1731185731, - "narHash": "sha256-RNaIu43b9PoXEhW4OqXUNZKY/jezQyCYWwdv1M0VjsA=", + "lastModified": 1732603698, + "narHash": "sha256-Jw2MhzgCCrKV2MJytehG0cCLIAosBX71p8qmQ6XQlR4=", "ref": "refs/heads/main", - "rev": "691193879d96bdfd1e6ab5ebcca2fadc7604cf34", - "revCount": 117, + "rev": "15b999f9c958c475f71fb8c543b9fc2f36ae8730", + "revCount": 123, "type": "git", "url": "https://git.lix.systems/lix-project/nixos-module" }, @@ -630,11 +630,11 @@ "mobile-nixos": { "flake": false, "locked": { - "lastModified": 1730912712, - "narHash": "sha256-T5A9I6Tfh9zrv9sRWfu/ZKN6VkE670YQ6bjC5sbpTzk=", + "lastModified": 1732728683, + "narHash": "sha256-gp7JS5X27aH+J/A0kCWsPTNiq8a+5m+hZ5Bs/BcurI4=", "owner": "NixOS", "repo": "mobile-nixos", - "rev": "2268e358ed407d9c0a4499ae767d105eeaeec586", + "rev": "d6befd062162de8a70ae9943b76eb08204446f8a", "type": "github" }, "original": { @@ -652,11 +652,11 @@ "treefmt-nix": "treefmt-nix_2" }, "locked": { - "lastModified": 1730278911, - "narHash": "sha256-CrbqsC+lEA3w6gLfpqfDMDEKoEta2sl4sbQK6Z/gXak=", + "lastModified": 1732540608, + "narHash": "sha256-y1Q87PRcztZ2C1J/xGHk0VxY/T9wB6YL1nLtRbMYW5g=", "owner": "Mic92", "repo": "nix-fast-build", - "rev": "8e7c9d76979381441facb8888f21408312cf177a", + "rev": "f51f479d001317204f1a47302db36473dc12fc8f", "type": "github" }, "original": { @@ -699,11 +699,11 @@ ] }, "locked": { - "lastModified": 1729742964, - "narHash": "sha256-B4mzTcQ0FZHdpeWcpDYPERtyjJd/NIuaQ9+BV1h+MpA=", + "lastModified": 1731952509, + "narHash": "sha256-p4gB3Rhw8R6Ak4eMl8pqjCPOLCZRqaehZxdZ/mbFClM=", "owner": "nix-community", "repo": "nix-github-actions", - "rev": "e04df33f62cdcf93d73e9a04142464753a16db67", + "rev": "7b5f051df789b6b20d259924d349a9ba3319b226", "type": "github" }, "original": { @@ -740,11 +740,11 @@ "nixpkgs": "nixpkgs_5" }, "locked": { - "lastModified": 1731454423, - "narHash": "sha256-TtwvgFxUa0wyptLhQbKaixgNW1UXf3+TDqfX3Kp63oM=", + "lastModified": 1732603785, + "narHash": "sha256-AEjWTJwOmSnVYsSJCojKgoguGfFfwel6z/6ud6UFMU8=", "owner": "LnL7", "repo": "nix-darwin", - "rev": "6c71c49e2448e51ad830ed211024e6d0edc50116", + "rev": "6ab87b7c84d4ee873e937108c4ff80c015a40c7a", "type": "github" }, "original": { @@ -763,11 +763,11 @@ "osx-kvm": "osx-kvm" }, "locked": { - "lastModified": 1731194612, - "narHash": "sha256-xOvzIdIFzy1LUgGLlOcimeHruZPLJpVdeEoHVOpH7sM=", + "lastModified": 1732478008, + "narHash": "sha256-Axdo+bDlmFU19lBWIkhbAeV7RMO1JD9T1t51sfcWCTA=", "owner": "MatthewCroughan", "repo": "NixThePlanet", - "rev": "ef5fad336a55fcbb0680ad21aa58812b2f826435", + "rev": "00d07c86548805eab1bc0dac2f95fce8d7e9aac6", "type": "github" }, "original": { @@ -778,11 +778,11 @@ }, "nixosHardware": { "locked": { - "lastModified": 1731403644, - "narHash": "sha256-T9V7CTucjRZ4Qc6pUEV/kpgNGzQbHWfGcfK6JJLfUeI=", + "lastModified": 1732483221, + "narHash": "sha256-kF6rDeCshoCgmQz+7uiuPdREVFuzhIorGOoPXMalL2U=", "owner": "NixOS", "repo": "nixos-hardware", - "rev": "f6581f1c3b137086e42a08a906bdada63045f991", + "rev": "45348ad6fb8ac0e8415f6e5e96efe47dd7f39405", "type": "github" }, "original": { @@ -871,11 +871,11 @@ }, "nixpkgs-stable": { "locked": { - "lastModified": 1731386116, - "narHash": "sha256-lKA770aUmjPHdTaJWnP3yQ9OI1TigenUqVC3wweqZuI=", + "lastModified": 1732749044, + "narHash": "sha256-T38FQOg0BV5M8FN1712fovzNakSOENEYs+CSkg31C9Y=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "689fed12a013f56d4c4d3f612489634267d86529", + "rev": "0c5b4ecbed5b155b705336aa96d878e55acd8685", "type": "github" }, "original": { @@ -935,11 +935,11 @@ }, "nixpkgs_3": { "locked": { - "lastModified": 1731319897, - "narHash": "sha256-PbABj4tnbWFMfBp6OcUK5iGy1QY+/Z96ZcLpooIbuEI=", + "lastModified": 1732521221, + "narHash": "sha256-2ThgXBUXAE1oFsVATK1ZX9IjPcS4nKFOAjhPNKuiMn0=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "dc460ec76cbff0e66e269457d7b728432263166c", + "rev": "4633a7c72337ea8fd23a4f2ba3972865e3ec685d", "type": "github" }, "original": { @@ -996,11 +996,11 @@ }, "nixpkgs_7": { "locked": { - "lastModified": 1731319897, - "narHash": "sha256-PbABj4tnbWFMfBp6OcUK5iGy1QY+/Z96ZcLpooIbuEI=", + "lastModified": 1732521221, + "narHash": "sha256-2ThgXBUXAE1oFsVATK1ZX9IjPcS4nKFOAjhPNKuiMn0=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "dc460ec76cbff0e66e269457d7b728432263166c", + "rev": "4633a7c72337ea8fd23a4f2ba3972865e3ec685d", "type": "github" }, "original": { @@ -1284,11 +1284,11 @@ ] }, "locked": { - "lastModified": 1729613947, - "narHash": "sha256-XGOvuIPW1XRfPgHtGYXd5MAmJzZtOuwlfKDgxX5KT3s=", + "lastModified": 1732292307, + "narHash": "sha256-5WSng844vXt8uytT5djmqBCkopyle6ciFgteuA9bJpw=", "owner": "numtide", "repo": "treefmt-nix", - "rev": "aac86347fb5063960eccb19493e0cadcdb4205ca", + "rev": "705df92694af7093dfbb27109ce16d828a79155f", "type": "github" }, "original": { @@ -1325,11 +1325,11 @@ ] }, "locked": { - "lastModified": 1730321837, - "narHash": "sha256-vK+a09qq19QNu2MlLcvN4qcRctJbqWkX7ahgPZ/+maI=", + "lastModified": 1732643199, + "narHash": "sha256-uI7TXEb231o8dkwB5AUCecx3AQtosRmL6hKgnckvjps=", "owner": "numtide", "repo": "treefmt-nix", - "rev": "746901bb8dba96d154b66492a29f5db0693dbfcc", + "rev": "84637a7ab04179bdc42aa8fd0af1909fba76ad0c", "type": "github" }, "original": { diff --git a/hmModules/chirp/default.nix b/hmModules/chirp/default.nix new file mode 100644 index 0000000..7353aee --- /dev/null +++ b/hmModules/chirp/default.nix @@ -0,0 +1,8 @@ +{ pkgs, ... }: +let +in +# nixpkgs = builtins.getFlake "github:NixOS/nixpkgs/932fc16b263f26803d3960e4400bc13dde84a972"; +# chirp = nixpkgs.legacyPackages.${pkgs.system}.chirp; +{ + home.packages = [ pkgs.chirp ]; +} diff --git a/hmModules/emacs/init.el b/hmModules/emacs/init.el index d69b69c..e1bd97a 100644 --- a/hmModules/emacs/init.el +++ b/hmModules/emacs/init.el @@ -33,8 +33,8 @@ (use-package consult-eglot :after (consult eglot embark) :config - (require 'consult-eglot-embark) - (consult-eglot-embark-mode) + (require 'consult-eglot-embark) + (consult-eglot-embark-mode) ) (use-package emacs @@ -123,9 +123,20 @@ (use-package rainbow-delimiters :hook (prog-mode . rainbow-delimiters-mode)) +(use-package pulsar + :after (consult imenu) + :config + (pulsar-global-mode) + ;; TODO use :hook (I've tried but it didn't work, why?) + (add-hook 'consult-after-jump-hook #'pulsar-recenter-top) + (add-hook 'consult-after-jump-hook #'pulsar-reveal-entry) + (add-hook 'imenu-after-jump-hook #'pulsar-recenter-top) + (add-hook 'imenu-after-jump-hook #'pulsar-reveal-entry) + (add-hook 'next-error-hook #'pulsar-pulse-line) + ) + (use-package clipetty :delight - :ensure t :hook (after-init . global-clipetty-mode)) (use-package nerd-icons) @@ -145,8 +156,8 @@ (treemacs-load-theme "nerd-icons")) (use-package nerd-icons-dired - :hook - (dired-mode . nerd-icons-dired-mode)) + :hook + (dired-mode . nerd-icons-dired-mode)) (use-package indent-bars :config @@ -158,7 +169,7 @@ (indent-bars-color-by-depth '(:regexp "outline-\\([0-9]+\\)" :blend 0.4)) (indent-bars-no-stipple-char (string-to-char "┋")) (indent-bars-prefer-character 't) ;; so it works also in terminal -) + ) (use-package diredfl :config (diredfl-global-mode)) @@ -263,7 +274,7 @@ '("s" . meow-kill) '("t" . meow-till) '("u" . meow-undo) - '("U" . meow-undo-in-selection) + '("U" . vundo) '("/" . meow-visit) '("v" . meow-visit) '("w" . meow-mark-word) @@ -310,27 +321,27 @@ (call-interactively 'ccr/h-resize)) (t (push key unread-command-events)))) :bind (("C-c w k" . windmove-up) - ("C-c w l" . windmove-right) - ("C-c w j" . windmove-down) - ("C-c w h" . windmove-left) - ("M-k" . windmove-up) - ("M-l" . windmove-right) - ("M-j" . windmove-down) - ("M-h" . windmove-left) - ("C-c w " . windmove-up) - ("C-c w " . windmove-right) - ("C-c w " . windmove-down) - ("C-c w " . windmove-left) - ("C-c w q" . delete-window) - ("C-c w K" . windmove-delete-up) - ("C-c w L" . windmove-delete-right) - ("C-c w J" . windmove-delete-down) - ("C-c w H" . windmove-delete-left) - ("C-c w x" . kill-buffer-and-window) - ("C-c w v" . split-window-right) - ("C-c w s" . split-window-below) - ("C-c w V" . ccr/v-resize) - ("C-c w S" . ccr/h-resize))) + ("C-c w l" . windmove-right) + ("C-c w j" . windmove-down) + ("C-c w h" . windmove-left) + ("M-k" . windmove-up) + ("M-l" . windmove-right) + ("M-j" . windmove-down) + ("M-h" . windmove-left) + ("C-c w " . windmove-up) + ("C-c w " . windmove-right) + ("C-c w " . windmove-down) + ("C-c w " . windmove-left) + ("C-c w q" . delete-window) + ("C-c w K" . windmove-delete-up) + ("C-c w L" . windmove-delete-right) + ("C-c w J" . windmove-delete-down) + ("C-c w H" . windmove-delete-left) + ("C-c w x" . kill-buffer-and-window) + ("C-c w v" . split-window-right) + ("C-c w s" . split-window-below) + ("C-c w V" . ccr/v-resize) + ("C-c w S" . ccr/h-resize))) (use-package vertico :custom @@ -341,8 +352,8 @@ (vertico-cycle t) (vertico-mode t) :bind (:map vertico-map - (("DEL" . vertico-directory-delete-char) - ("C-DEL" . vertico-directory-delete-word)))) + (("DEL" . vertico-directory-delete-char) + ("C-DEL" . vertico-directory-delete-word)))) ;; (use-package vertico-posframe ;; :after vertico @@ -370,24 +381,26 @@ ([remap goto-line] . consult-goto-line) ([remazp imenu] . consult-imenu) ([remap project-switch-to-buffer] . consult-project-buffer) - ("C-c b b" . consult-project-buffer) - ("C-c b B" . consult-buffer) - ("C-c g l" . consult-goto-line) - ("C-c b i" . consult-imenu) - ("C-c f f" . consult-find) - ("C-c F" . consult-ripgrep) - ("C-c f" . consult-find) - ("C-c l" . consult-line) - ("C-c m" . wconsult-mark) - ("C-c o o" . consult-outline) - ("C-c e" . consult-flymake)) + ("C-c b b" . consult-project-buffer) + ("C-c b B" . consult-buffer) + ("C-c g l" . consult-goto-line) + ("C-c b i" . consult-imenu) + ("C-c f f" . consult-find) + ("C-c F" . consult-ripgrep) + ("C-c f" . consult-find) + ("C-c l" . consult-line) + ("C-c L" . consult-focus-lines) + ("C-c m" . consult-mark) + ("C-c o o" . consult-outline) + ("C-c e" . consult-flymake)) :custom (xref-show-xrefs-function #'consult-xref) (xref-show-definitions-function #'consult-xref)) (use-package orderless :custom - (completion-styles '(orderless))) + (completion-styles '(orderless basic)) + (completion-category-overrides '((file (styles basic partial-completion))))) (use-package embark :bind (("C-'" . embark-act) @@ -403,9 +416,9 @@ (tab-always-indent 'complete) (kind-icon-default-face 'corfu-default) :bind (:map corfu-map - (("M-d" . corfu-doc-toggle) - ("M-l" . corfu-show-location) - ("SPC" . corfu-insert-separator))) + (("M-d" . corfu-doc-toggle) + ("M-l" . corfu-show-location) + ("SPC" . corfu-insert-separator))) :init (global-corfu-mode)) @@ -473,7 +486,7 @@ :feature 'function :override t `((formal) @font-lock-type-face) - + :language 'nix :feature 'function `((attrpath) @font-lock-function-name-face) @@ -495,8 +508,8 @@ (use-package typescript-ts-mode :hook ((typescript-ts-mode . (lambda () - (require 'eglot) - (eglot-ensure)))) + (require 'eglot) + (eglot-ensure)))) :mode "\\.ts\\'") (use-package haskell-ts-mode @@ -550,6 +563,10 @@ :hook ((lisp-mode . enable-paredit-mode) (emacs-lisp-mode . enable-paredit-mode))) +(use-package aggressive-indent + :hook ((lisp-mode . aggressive-indent-mode) + (emacs-lisp-mode . aggressive-indent-mode))) + (use-package eldoc :delight) @@ -560,10 +577,10 @@ (eldoc-box-lighter "ElBox") :bind (("C-c h" . eldoc-box-help-at-point))) - (use-package diff-hl - :init - (global-diff-hl-mode 1) - (diff-hl-margin-mode 1)) +(use-package diff-hl + :init + (global-diff-hl-mode 1) + (diff-hl-margin-mode 1)) (use-package envrc :config @@ -595,7 +612,7 @@ (use-package eshell :init (require 'eshell) ;; this slows down Emacs startup but it's needed when starting eshell with - ;; emacsclient --eval before opening another eshell buffer directly from inside Emacs + ;; emacsclient --eval before opening another eshell buffer directly from inside Emacs (eat-eshell-mode) (eat-eshell-visual-command-mode) :custom ((eshell-prefer-lisp-functions t) @@ -652,18 +669,19 @@ (use-package popper :custom - (popper-reference-buffers '("\*Messages\*" - "Output\*$" - "\\*Async Shell Command\\*" - (completion-list-mode . hide) - help-mode - compilation-mode - "^\\*Nix-REPL*\\*$" nix-repl-mode ;eshell as a popup - "^\\*.+-eshell.*\\*$" eshell-mode ;eshell as a popup - "^\\*shell.*\\*$" shell-mode ;shell as a popup - "^\\*term.*\\*$" term-mode ;term as a popup - "^\\*eat.*\\*$" eat-mode ;eat as a popup - )) + (popper-reference-buffers + '("\*Messages\*" + "Output\*$" + "\\*Async Shell Command\\*" + (completion-list-mode . hide) + help-mode + compilation-mode + "^\\*Nix-REPL*\\*$" nix-repl-mode + "^\\*.+-eshell.*\\*$" eshell-mode + "^\\*shell.*\\*$" shell-mode + "^\\*term.*\\*$" term-mode + "^\\*eat.*\\*$" eat-mode + )) (popper-window-height 0.33) (popper-echo-lines 1) (popper-mode-line nil) @@ -751,18 +769,18 @@ This is meant to be an helper to be called from the window manager." ;; FIXME the following doesn't work when using the daemon, it should be executed only ;; one time after the first frame is created :hook (server-after-make-frame . (lambda () - (set-face-font 'variable-pitch "Dejavu Serif-14") - (set-face-font 'fixed-pitch "Iosevka Comfy-14") - (set-face-font 'org-table "Iosevka Comfy-14") - (set-face-font 'org-meta-line "Iosevka Comfy-14") - (set-face-font 'org-drawer "Iosevka Comfy-14") - (set-face-font 'org-special-keyword "Iosevka Comfy-14") - (set-face-font 'org-property-value "Iosevka Comfy-14") - (set-face-font 'org-block "Iosevka Comfy-14") - (set-face-font 'org-modern-tag "Iosevka Comfy-14") - (set-face-font 'org-modern-date-active "Iosevka Comfy-14") - (set-face-font 'org-modern-date-inactive "Iosevka Comfy-14"))) -) + (set-face-font 'variable-pitch "Dejavu Serif-14") + (set-face-font 'fixed-pitch "Iosevka Comfy-14") + (set-face-font 'org-table "Iosevka Comfy-14") + (set-face-font 'org-meta-line "Iosevka Comfy-14") + (set-face-font 'org-drawer "Iosevka Comfy-14") + (set-face-font 'org-special-keyword "Iosevka Comfy-14") + (set-face-font 'org-property-value "Iosevka Comfy-14") + (set-face-font 'org-block "Iosevka Comfy-14") + (set-face-font 'org-modern-tag "Iosevka Comfy-14") + (set-face-font 'org-modern-date-active "Iosevka Comfy-14") + (set-face-font 'org-modern-date-inactive "Iosevka Comfy-14"))) + ) (use-package org-roam :custom @@ -795,23 +813,23 @@ This is meant to be an helper to be called from the window manager." (string-to-number (cdr (assoc "SPENT" (org-roam-node-properties node))))) (defun org-roam-node-date (node) "Return the org datestring when a node was created (obtained from the filename)" - (format "<%s>" (file-name-sans-extension (file-name-nondirectory (org-roam-node-file node))))) + (format "<%s>" (file-name-sans-extension (file-name-nondirectory (org-roam-node-file node))))) (org-roam-ql-defpred - 'date-range - "Check if node was created in given time range" - #'org-roam-node-date - #'(lambda (node-date start-date end-date) - (let ((node-date (condition-case nil - ;; if the entry is not from the journal (i.e. the filename is not something like "2024-10-10.org") - ;; then it's always discarded (the epoch time is given to it) - (encode-time (org-parse-time-string node-date)) - (error (encode-time (org-parse-time-string "<1970-01-01>"))))) - (start-date (encode-time (org-parse-time-string start-date))) - (end-date (encode-time (org-parse-time-string end-date)))) - (and (time-less-p start-date node-date) - (time-less-p node-date end-date))) - )) + 'date-range + "Check if node was created in given time range" + #'org-roam-node-date + #'(lambda (node-date start-date end-date) + (let ((node-date (condition-case nil + ;; if the entry is not from the journal (i.e. the filename is not something like "2024-10-10.org") + ;; then it's always discarded (the epoch time is given to it) + (encode-time (org-parse-time-string node-date)) + (error (encode-time (org-parse-time-string "<1970-01-01>"))))) + (start-date (encode-time (org-parse-time-string start-date))) + (end-date (encode-time (org-parse-time-string end-date)))) + (and (time-less-p start-date node-date) + (time-less-p node-date end-date))) + )) (defun ccr/org-roam-spent-hours (client &optional date-start date-end) "Return the total spent hours on something (usually a client)" @@ -851,13 +869,13 @@ This is meant to be an helper to be called from the window manager." ("C-c n s" . consult-org-roam-search)) (use-package org-roam-ui - :after org-roam - :hook (after-init . org-roam-ui-mode) ;; don't care about startup time since I'm using Emacs daemonized - :config - (setq org-roam-ui-sync-theme t - org-roam-ui-follow t - org-roam-ui-update-on-save t - org-roam-ui-open-on-start nil)) + :after org-roam + :hook (after-init . org-roam-ui-mode) ;; don't care about startup time since I'm using Emacs daemonized + :config + (setq org-roam-ui-sync-theme t + org-roam-ui-follow t + org-roam-ui-update-on-save t + org-roam-ui-open-on-start nil)) (use-package gptel :custom diff --git a/hmModules/gpg/default.nix b/hmModules/gpg/default.nix index 469c27a..d3aa919 100644 --- a/hmModules/gpg/default.nix +++ b/hmModules/gpg/default.nix @@ -3,7 +3,6 @@ services.gpg-agent = { enable = true; enableSshSupport = true; - sshKeys = [ "CE2FD0D9BECBD8876811714925066CC257413416" ]; extraConfig = let pinentryRofi = pkgs.writeShellApplication { diff --git a/hosts/janeway/default.nix b/hosts/janeway/default.nix index 150e4e0..59733f6 100644 --- a/hosts/janeway/default.nix +++ b/hosts/janeway/default.nix @@ -46,7 +46,6 @@ in $DRY_RUN_CMD echo ${hosts.sisko} >> "${config.user.home}/.ssh/authorized_keys" $DRY_RUN_CMD echo ${hosts.kirk} >> "${config.user.home}/.ssh/authorized_keys" $DRY_RUN_CMD echo ${users.ccr-ssh} >> "${config.user.home}/.ssh/authorized_keys" - $DRY_RUN_CMD echo ${users.ccr-gpg} >> "${config.user.home}/.ssh/authorized_keys" if [[ ! -d "${sshdDirectory}" ]]; then $DRY_RUN_CMD rm $VERBOSE_ARG --recursive --force "${sshdTmpDirectory}" diff --git a/hosts/picard/default.nix b/hosts/picard/default.nix index fd17130..5842bf7 100644 --- a/hosts/picard/default.nix +++ b/hosts/picard/default.nix @@ -90,6 +90,7 @@ "libreoffice" "emacs" "vial" + "chirp" ]; extraGroups = [ ]; backupPaths = [ ]; diff --git a/lib/default.nix b/lib/default.nix index 7b98ca0..a923f7d 100644 --- a/lib/default.nix +++ b/lib/default.nix @@ -1,7 +1,6 @@ { keys = { users = { - ccr-gpg = "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC5cEUx25pnZiH3eBrE2xNbJ92gJiKSznDUNRzcEL4ti6FlJm+75p4q0hgdqHwStR8+uCWBL6viVFCGutOVMFE5MX1Oc3A8fJdR6H9Rrwvk/1UQzqzc9tWxw1qPLKz+fnPDomjOvNofghCWQRwX3Xf1HnIqvRwELpNbR9i+/cHkDGzLJxkstbt4gol8ywMPkw02QdKk8s5MEd1vawxc+7Chs0JPW57RDqDYFErYys52JLeAViCBB9bofF+KT42LuRXKSjWlvCV9kR5TL49vUeBgzMQWMh++WQdN4m9lpqFqYyc75I49/E0HGf8LChDSS+hvRnb5MbtnVGjEA4WDHyldmJCvUNob5CUo4FjoSPRi+S/J3Ads8D4JVwaJOJEVqmMKEhiQ0Hzk4hwe3eV/VumlZj4U/QjaCrqqi4TW/iP0gNRfzcfiM+G/z5R7w1NMUpTX7oilyKjMQmGnXB857D3SSptS7dwh5OiKhVmrQMRCduooUsj236abqLU28K//RnxhOgh8kDGgoUHApnTiMZNKhgLiR42lKrubNcW1tAAqoNyFLMwwXeMLjh0iP1b5y8ntfNPNIcGb7vcwpS24z/aIjW7rQ4J7x5EBphHGhys6ne+irdhOM8c7kFr+c8+Q2oU0YAtFuMYztAFOHm1e20X00Zvys2nuee+hT9F1NungAQ== andrea.ciceri@autistici.org"; ccr-ssh = "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCzCmDCtlGscpesHuoiruVWD2IjYEFtaIl9Y2JZGiOAyf3V17KPx0MikcknfmxSHi399SxppiaXQHxo/1wjGxXkXNTTv6h1fBuqwhJE6C8+ZSV+gal81vEnXX+/9w2FQqtVgnG2/mO7oJ0e3FY+6kFpOsGEhYexoGt/UxIpAZoqIN+CWNhJIASUkneaZWtgwiL8Afb59kJQ2E7WbBu+PjYZ/s5lhPobhlkz6s8rkhItvYdiSHT0DPDKvp1oEbxsxd4E4cjJFbahyS8b089NJd9gF5gs0b74H/2lUUymnl63cV37Mp4iXB4rtE69MbjqsGEBKTPumLualmc8pOGBHqWIdhAqGdZQeBajcb6VK0E3hcU0wBB+GJgm7KUzlAHGdC3azY0KlHMrLaZN0pBrgCVR6zBNWtZz2B2qMBZ8Cw+K4vut8GuspdXZscID10U578GxQvJAB9CdxNUtrzSmKX2UtZPB1udWjjIAlejzba4MG73uXgQEdv0NcuHNwaLuCWxTUT5QQF18IwlJ23Mg8aPK8ojUW5A+kGHAu9wtgZVcX1nS5cmYKSgLzcP1LA1l9fTJ1vqBSuy38GTdUzfzz7AbnkRfGPj2ALDgyx17Rc5ommjc1k0gFoeIqiLaxEs5FzDcRyo7YvZXPsGeIqNCYwQWw3+U+yUEJby8bxGb2d/6YQ== andrea.ciceri@autistici.org"; oneplus8t = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIO8da1Mf11vXFF0kVDgxocVoGwpHHMEs9emS9T+v8hLb oneplus8t"; hercules-ci-agent = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGPupm00BiveTIYF6CNwuMijF5VvEaPDMjvt+vMlAy+N hercules-ci-agent"; diff --git a/modules/adguard-home/default.nix b/modules/adguard-home/default.nix index 988b8ca..a1ec2aa 100644 --- a/modules/adguard-home/default.nix +++ b/modules/adguard-home/default.nix @@ -2,6 +2,7 @@ services.adguardhome = { enable = true; port = 3000; + mutableSettings = true; settings = { openFirewall = true; }; @@ -11,4 +12,7 @@ 53 ]; networking.firewall.allowedUDPPorts = [ 53 ]; + environment.persistence."/persist".directories = [ + "/var/lib/AdGuardHome" + ]; } diff --git a/modules/forgejo-runners/default.nix b/modules/forgejo-runners/default.nix index e9b52b9..3234a46 100644 --- a/modules/forgejo-runners/default.nix +++ b/modules/forgejo-runners/default.nix @@ -3,6 +3,7 @@ config, pkgs, lib, + fleetFlake, ... }: let @@ -24,6 +25,7 @@ let curl tea attic-client + fleetFlake.packages.${pkgs.system}.forgejo-report-checks ] }; do for bin in "$dir"/bin/*; do diff --git a/modules/forgejo/default.nix b/modules/forgejo/default.nix index d67ccc5..a0940ab 100644 --- a/modules/forgejo/default.nix +++ b/modules/forgejo/default.nix @@ -1,11 +1,35 @@ { config, + pkgs, + lib, ... }: +let + theme = pkgs.fetchzip { + url = "https://github.com/catppuccin/gitea/releases/download/v1.0.1/catppuccin-gitea.tar.gz"; + hash = "sha256-et5luA3SI7iOcEIQ3CVIu0+eiLs8C/8mOitYlWQa/uI="; + stripRoot = false; + }; +in { + systemd.services = { + forgejo = { + preStart = + let + inherit (config.services.forgejo) stateDir; + in + lib.mkAfter '' + rm -rf ${stateDir}/custom/public/assets + mkdir -p ${stateDir}/custom/public/assets + ln -sf ${theme} ${stateDir}/custom/public/assets/css + ''; + }; + }; + services.forgejo = { # TODO migrate to Postgres enable = true; + package = pkgs.forgejo; settings = { DEFAULT = { RUN_MODE = "prod"; # set to prod for better logs (worse performance) @@ -18,6 +42,7 @@ HTTP_PORT = 3002; ROOT_URL = "https://git.aciceri.dev"; }; + federation.ENABLED = true; mailer = { ENABLED = true; PROTOCOL = "smtp+starttls"; @@ -29,6 +54,20 @@ other = { SHOW_FOOTER_VERSION = false; }; + ui = { + DEFAULT_THEME = "catppuccin-mocha-blue"; + THEMES = builtins.concatStringsSep "," ( + [ "auto,forgejo-auto,forgejo-dark,forgejo-light,arc-gree,gitea" ] + ++ (map (name: lib.removePrefix "theme-" (lib.removeSuffix ".css" name)) ( + builtins.attrNames (builtins.readDir theme) + )) + ); + }; + "ui.meta" = { + AUTHOR = "Andrea Ciceri"; + DESCRIPTION = "My personal git forge"; + KEYWORDS = "git,self-hosted,forgejo,open-source,nix,nixos"; + }; }; secrets.mailer.PASSWD = config.age.secrets.autistici-password.path; dump.enable = true; diff --git a/modules/home-assistant/default.nix b/modules/home-assistant/default.nix index 9cde4b4..b0e4a63 100644 --- a/modules/home-assistant/default.nix +++ b/modules/home-assistant/default.nix @@ -13,8 +13,8 @@ let garmin_connect = pkgs.fetchFromGitHub { owner = "cyberjunky"; repo = "home-assistant-garmin_connect"; - rev = "d42edcabc67ba6a7f960e849c8aaec1aabef87c0"; - hash = "sha256-KqbP6TpH9B0/AjtsW5TcWSNgUhND+w8rO6X8fHqtsDI="; + rev = "e2deaed42b66c982b150ca9a9e543031ad51228c"; + hash = "sha256-TtrcgLGnhNRBF1SqKMkPlEi/XEBUtDAnaWfzkh50+D8="; }; in { @@ -51,6 +51,10 @@ in "wake_on_lan" "prometheus" ]; + customComponents = with pkgs.home-assistant-custom-components; [ + tuya_local + localtuya + ]; extraPackages = python3Packages: with python3Packages; [ # used by pun_sensor diff --git a/modules/ssh-initrd/default.nix b/modules/ssh-initrd/default.nix index a67e1f3..067f08d 100644 --- a/modules/ssh-initrd/default.nix +++ b/modules/ssh-initrd/default.nix @@ -15,7 +15,6 @@ HostKey /ssh_initrd_host_ed25519_key ''; authorizedKeys = with (import ../../lib).keys; [ - users.ccr-gpg users.ccr-ssh hosts.sisko ]; diff --git a/packages/emacs/packages.nix b/packages/emacs/packages.nix index 7b1d204..cf81eca 100644 --- a/packages/emacs/packages.nix +++ b/packages/emacs/packages.nix @@ -117,6 +117,7 @@ let agenix solidity-mode telega + aggressive-indent # org-re-reveal # FIXME very not nice hash mismatch when building ] ) @@ -126,6 +127,8 @@ let ef-themes indent-bars ement + vundo + pulsar ]) ++ (with nongnuPackages; [ eat diff --git a/packages/forgejo-report-checks/forgejo-report-checks.py b/packages/forgejo-report-checks/forgejo-report-checks.py index 7ea3f2c..a66a825 100644 --- a/packages/forgejo-report-checks/forgejo-report-checks.py +++ b/packages/forgejo-report-checks/forgejo-report-checks.py @@ -6,16 +6,17 @@ from os import environ client = AuthenticatedClient(base_url=environ["GITHUB_API_URL"], token=environ["GITHUB_TOKEN"]) -print("hello") - with open('result.json', 'r') as file: data = json.load(file) +print("Reporting statuses acording to the following result.json") +print(json.dumps(data, indent=2)) + for result in data['results']: attr = result['attr'] success = result['success'] type = result['type'] - print(attr) + print(f"Report status success={success} for {type} {attr}") response = repo_create_status.sync_detailed( owner="aciceri", repo="nixfleet", @@ -24,7 +25,9 @@ for result in data['results']: body=CreateStatusOption( context=type, description=attr, - target_url="https://google.com", + target_url="https://git.aciceri.dev", # FIXME state="success" if success else "failure" # ma be pending,success,failure,error_message ) ) + +print("Done reporting statuses") diff --git a/secrets/secrets.nix b/secrets/secrets.nix index 52a3217..2cebf84 100644 --- a/secrets/secrets.nix +++ b/secrets/secrets.nix @@ -6,7 +6,6 @@ with keys.users; { "cachix-personal-token.age".publicKeys = [ ccr-ssh - ccr-gpg mothership kirk sisko @@ -15,90 +14,85 @@ with keys.users; ]; "magit-forge-github-token.age".publicKeys = [ ccr-ssh - ccr-gpg mothership kirk ]; "git-workspace-tokens.age".publicKeys = [ ccr-ssh - ccr-gpg mothership kirk picard ]; "hydra-admin-password.age".publicKeys = [ ccr-ssh - ccr-gpg mothership ]; "hydra-github-token.age".publicKeys = [ ccr-ssh - ccr-gpg mothership ]; "cache-private-key.age".publicKeys = [ ccr-ssh - ccr-gpg mothership ]; "autistici-password.age".publicKeys = [ ccr-ssh - ccr-gpg + kirk picard sisko ]; "hercules-ci-join-token.age".publicKeys = [ ccr-ssh - ccr-gpg + mothership sisko picard ]; "hercules-ci-binary-caches.age".publicKeys = [ ccr-ssh - ccr-gpg + mothership sisko picard ]; "hercules-ci-secrets-json.age".publicKeys = [ ccr-ssh - ccr-gpg + mothership sisko picard ]; "minio-credentials.age".publicKeys = [ ccr-ssh - ccr-gpg + picard sisko ]; "aws-credentials.age".publicKeys = [ ccr-ssh - ccr-gpg + picard sisko ]; "nextcloud-admin-pass.age".publicKeys = [ ccr-ssh - ccr-gpg + sisko ]; "home-planimetry.age".publicKeys = [ ccr-ssh - ccr-gpg + sisko ]; "home-assistant-token.age".publicKeys = [ ccr-ssh - ccr-gpg + sisko ]; "chatgpt-token.age".publicKeys = [ ccr-ssh - ccr-gpg + kirk mothership picard @@ -106,86 +100,86 @@ with keys.users; ]; "cloudflare-dyndns-api-token.age".publicKeys = [ ccr-ssh - ccr-gpg + sisko ]; "restic-hetzner-password.age".publicKeys = [ ccr-ssh - ccr-gpg + picard sisko kirk ]; "hass-ssh-key.age".publicKeys = [ ccr-ssh - ccr-gpg + sisko ]; "grafana-password.age".publicKeys = [ ccr-ssh - ccr-gpg + sisko ]; "matrix-registration-shared-secret.age".publicKeys = [ ccr-ssh - ccr-gpg + sisko ]; "matrix-sliding-sync-secret.age".publicKeys = [ ccr-ssh - ccr-gpg + sisko ]; "forgejo-runners-token.age".publicKeys = [ ccr-ssh - ccr-gpg + picard ]; "forgejo-nix-access-tokens.age".publicKeys = [ ccr-ssh - ccr-gpg + picard ]; "garmin-collector-environment.age".publicKeys = [ ccr-ssh - ccr-gpg + sisko ]; "hetzner-storage-box-sisko-ssh-password.age".publicKeys = [ ccr-ssh - ccr-gpg + sisko ]; "sisko-restic-password.age".publicKeys = [ ccr-ssh - ccr-gpg + sisko ]; "sisko-attic-environment-file.age".publicKeys = [ ccr-ssh - ccr-gpg + sisko ]; # WireGuard "picard-wireguard-private-key.age".publicKeys = [ ccr-ssh - ccr-gpg + picard ]; "sisko-wireguard-private-key.age".publicKeys = [ ccr-ssh - ccr-gpg + sisko ]; "kirk-wireguard-private-key.age".publicKeys = [ ccr-ssh - ccr-gpg + kirk ]; "deltaflyer-wireguard-private-key.age".publicKeys = [ ccr-ssh - ccr-gpg + deltaflyer ]; }