Compare commits
21 commits
7119b8321c
...
33175c5757
Author | SHA1 | Date | |
---|---|---|---|
33175c5757 | |||
81da82c1fb | |||
7188dbf665 | |||
959016455f | |||
ddfb93214f | |||
c8e32b689b | |||
8e28001eab | |||
6cd58095e4 | |||
146eee5abe | |||
1fd1c845e8 | |||
7e92d09299 | |||
9b907264c2 | |||
24a80896a8 | |||
6d715d8878 | |||
a7f927516e | |||
fd793b791d | |||
5692a37c88 | |||
ff5359cd50 | |||
22b1484026 | |||
839cf0df5f | |||
251266db4c |
16 changed files with 304 additions and 219 deletions
76
flake.lock
generated
76
flake.lock
generated
|
@ -26,11 +26,11 @@
|
|||
"nixpkgs": "nixpkgs_2"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1747519437,
|
||||
"narHash": "sha256-uv9Wv59d+mckS2CkorOF484wp2G5TNGijdoBZ5RkAk0=",
|
||||
"lastModified": 1748080874,
|
||||
"narHash": "sha256-sUebEzAkrY8Aq5G0GHFyRddmRNGP/a2iTtV7ISNvi/c=",
|
||||
"owner": "catppuccin",
|
||||
"repo": "nix",
|
||||
"rev": "3ba714046ee32373e88166e6e9474d6ae6a5b734",
|
||||
"rev": "0ba11b12be81f0849a89ed17ab635164ea8f0112",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -83,11 +83,11 @@
|
|||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1747621015,
|
||||
"narHash": "sha256-j0fo1rNxZvmFLMaE945UrbLJZAHTlQmq0/QMgOP4GTs=",
|
||||
"lastModified": 1748225455,
|
||||
"narHash": "sha256-AzlJCKaM4wbEyEpV3I/PUq5mHnib2ryEy32c+qfj6xk=",
|
||||
"owner": "nix-community",
|
||||
"repo": "disko",
|
||||
"rev": "cec44d77d9dacf0c91d3d51aff128fefabce06ee",
|
||||
"rev": "a894f2811e1ee8d10c50560551e50d6ab3c392ba",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -122,11 +122,11 @@
|
|||
"nixpkgs-stable": "nixpkgs-stable"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1747618089,
|
||||
"narHash": "sha256-mbzwxQlxNamIMErEfwWRZ+ECmlQzxJ4eJvOM6/fxV5s=",
|
||||
"lastModified": 1748248657,
|
||||
"narHash": "sha256-zqhc7qyoRmgZpkvjocYEui9xYlzL90nqPf40zADGruM=",
|
||||
"owner": "nix-community",
|
||||
"repo": "emacs-overlay",
|
||||
"rev": "1b2bc802bbac29f4695e39fbf982944c0999b45d",
|
||||
"rev": "e048433838750a5fd9036e56dd8f59affa6d676b",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -387,11 +387,11 @@
|
|||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1747565775,
|
||||
"narHash": "sha256-B6jmKHUEX1jxxcdoYHl7RVaeohtAVup8o3nuVkzkloA=",
|
||||
"lastModified": 1748227609,
|
||||
"narHash": "sha256-SaSdslyo6UGDpPUlmrPA4dWOEuxCy2ihRN9K6BnqYsA=",
|
||||
"owner": "nix-community",
|
||||
"repo": "home-manager",
|
||||
"rev": "97118a310eb8e13bc1b9b12d67267e55b7bee6c8",
|
||||
"rev": "d23d20f55d49d8818ac1f1b2783671e8a6725022",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -464,11 +464,11 @@
|
|||
"lix": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1747664434,
|
||||
"narHash": "sha256-ph9fCCvzgZ1PNOu82SSoceX/tYZ5MfmX3PkBxBiNxwA=",
|
||||
"lastModified": 1748182888,
|
||||
"narHash": "sha256-tm3yi3KL+KjMnLZFXKR1ioI/Rk8DIa2n1NNE6I99BpU=",
|
||||
"ref": "refs/heads/main",
|
||||
"rev": "eb18a90afbe0ade000d957cda344a5bcb3d565d4",
|
||||
"revCount": 17900,
|
||||
"rev": "dbff52bfbc48ead789888bf24422d0ef6f7ba9a8",
|
||||
"revCount": 17946,
|
||||
"type": "git",
|
||||
"url": "https://git@git.lix.systems/lix-project/lix"
|
||||
},
|
||||
|
@ -489,11 +489,11 @@
|
|||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1746839253,
|
||||
"narHash": "sha256-pRwi8Wn8Yofj459gq+3oIRy8F3SXeEJ6mzfIAUgM9nA=",
|
||||
"lastModified": 1747667424,
|
||||
"narHash": "sha256-7EICjbmG6lApWKhFtwvZovdcdORY1CEe6/K7JwtpYfs=",
|
||||
"ref": "refs/heads/main",
|
||||
"rev": "58baedd53f9da81fd728a4f3b08c378e5ba9ae58",
|
||||
"revCount": 142,
|
||||
"rev": "3c23c6ae2aecc1f76ae7993efe1a78b5316f0700",
|
||||
"revCount": 144,
|
||||
"type": "git",
|
||||
"url": "https://git.lix.systems/lix-project/nixos-module"
|
||||
},
|
||||
|
@ -505,11 +505,11 @@
|
|||
"mobile-nixos": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1743812405,
|
||||
"narHash": "sha256-BedQ9Z3+nqtp9BRjHjJNPUeLIMVbTsP3Udbz0b1cUn0=",
|
||||
"lastModified": 1748200777,
|
||||
"narHash": "sha256-ELbQ7Apk0QzfhO8WjQIqEBuN2bEnGQHNxeiOSx/mU38=",
|
||||
"owner": "NixOS",
|
||||
"repo": "mobile-nixos",
|
||||
"rev": "6679fd7a8dd4ccf4aa538b82216723861cfe61a2",
|
||||
"rev": "6e249e58b5d8166738ebcfd401f05f7496049dd3",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -569,11 +569,11 @@
|
|||
},
|
||||
"nixosHardware": {
|
||||
"locked": {
|
||||
"lastModified": 1747129300,
|
||||
"narHash": "sha256-L3clA5YGeYCF47ghsI7Tcex+DnaaN/BbQ4dR2wzoiKg=",
|
||||
"lastModified": 1747900541,
|
||||
"narHash": "sha256-dn64Pg9xLETjblwZs9Euu/SsjW80pd6lr5qSiyLY1pg=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixos-hardware",
|
||||
"rev": "e81fd167b33121269149c57806599045fd33eeed",
|
||||
"rev": "11f2d9ea49c3e964315215d6baa73a8d42672f06",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -647,11 +647,11 @@
|
|||
},
|
||||
"nixpkgs-stable": {
|
||||
"locked": {
|
||||
"lastModified": 1747485343,
|
||||
"narHash": "sha256-YbsZyuRE1tobO9sv0PUwg81QryYo3L1F3R3rF9bcG38=",
|
||||
"lastModified": 1748037224,
|
||||
"narHash": "sha256-92vihpZr6dwEMV6g98M5kHZIttrWahb9iRPBm1atcPk=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "9b5ac7ad45298d58640540d0323ca217f32a6762",
|
||||
"rev": "f09dede81861f3a83f7f06641ead34f02f37597f",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -711,11 +711,11 @@
|
|||
},
|
||||
"nixpkgs_4": {
|
||||
"locked": {
|
||||
"lastModified": 1747542820,
|
||||
"narHash": "sha256-GaOZntlJ6gPPbbkTLjbd8BMWaDYafhuuYRNrxCGnPJw=",
|
||||
"lastModified": 1748026106,
|
||||
"narHash": "sha256-6m1Y3/4pVw1RWTsrkAK2VMYSzG4MMIj7sqUy7o8th1o=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "292fa7d4f6519c074f0a50394dbbe69859bb6043",
|
||||
"rev": "063f43f2dbdef86376cc29ad646c45c46e93234c",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -742,11 +742,11 @@
|
|||
},
|
||||
"nixpkgs_6": {
|
||||
"locked": {
|
||||
"lastModified": 1747542820,
|
||||
"narHash": "sha256-GaOZntlJ6gPPbbkTLjbd8BMWaDYafhuuYRNrxCGnPJw=",
|
||||
"lastModified": 1748026106,
|
||||
"narHash": "sha256-6m1Y3/4pVw1RWTsrkAK2VMYSzG4MMIj7sqUy7o8th1o=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "292fa7d4f6519c074f0a50394dbbe69859bb6043",
|
||||
"rev": "063f43f2dbdef86376cc29ad646c45c46e93234c",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -1009,11 +1009,11 @@
|
|||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1747469671,
|
||||
"narHash": "sha256-bo1ptiFoNqm6m1B2iAhJmWCBmqveLVvxom6xKmtuzjg=",
|
||||
"lastModified": 1748243702,
|
||||
"narHash": "sha256-9YzfeN8CB6SzNPyPm2XjRRqSixDopTapaRsnTpXUEY8=",
|
||||
"owner": "numtide",
|
||||
"repo": "treefmt-nix",
|
||||
"rev": "ab0378b61b0d85e73a8ab05d5c6029b5bd58c9fb",
|
||||
"rev": "1f3f7b784643d488ba4bf315638b2b0a4c5fb007",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
|
|
@ -28,6 +28,7 @@
|
|||
(eglot-events-buffer-size 0) ; disable events logging, it should be enabled only when debuggigng LSP servers
|
||||
(eglot-sync-connect-nil 0) ; disable UI freeze when opening big files
|
||||
(eglot-connect-timeout nil) ; never timeout
|
||||
:bind (("C-q" . eglot-code-action-quickfix))
|
||||
)
|
||||
|
||||
(use-package consult-eglot
|
||||
|
@ -163,8 +164,8 @@
|
|||
:after marginalia
|
||||
:config (nerd-icons-completion-mode +1)
|
||||
:hook (
|
||||
(marginalia-mode . nerd-icons-completion-marginalia-setup)
|
||||
(ibuffer-mode . nerd-icons-completion-marginalia-setup)))
|
||||
(marginalia-mode . nerd-icons-completion-marginalia-setup)
|
||||
(ibuffer-mode . nerd-icons-completion-marginalia-setup)))
|
||||
|
||||
(use-package nerd-icons-ibuffer
|
||||
:hook (ibuffer-mode . nerd-icons-ibuffer-mode))
|
||||
|
@ -208,7 +209,7 @@
|
|||
(treemacs-display-current-project-exclusively t)
|
||||
(treemacs-git-mode 'deferred)
|
||||
:bind (("C-c w t" . treemacs-select-window)
|
||||
("C-c o T" . treemacs))
|
||||
("C-c o T" . treemacs))
|
||||
)
|
||||
|
||||
(use-package meow
|
||||
|
@ -219,8 +220,8 @@
|
|||
(require 'meow-tree-sitter)
|
||||
(meow-tree-sitter-register-defaults)
|
||||
(add-hook 'after-make-frame-functions (defun ccr/meow--prepare-face (_)
|
||||
(meow--prepare-face)
|
||||
(remove-hook 'after-make-frame-functions 'ccr/meow--prepare-face)))
|
||||
(meow--prepare-face)
|
||||
(remove-hook 'after-make-frame-functions 'ccr/meow--prepare-face)))
|
||||
(add-to-list 'meow-mode-state-list '(eshell-mode . insert))
|
||||
(add-to-list 'meow-mode-state-list '(eat-mode . insert))
|
||||
(add-to-list 'meow-mode-state-list '(notmuch-hello-mode . insert))
|
||||
|
@ -331,44 +332,44 @@
|
|||
"Interactively vertically resize the window"
|
||||
(interactive "cHit >/< to enlarge/shrink")
|
||||
(cond ((eq key (string-to-char ">"))
|
||||
(enlarge-window-horizontally ccr/v-resize-amount)
|
||||
(call-interactively 'ccr/v-resize))
|
||||
((eq key (string-to-char "<"))
|
||||
(enlarge-window-horizontally (- ccr/v-resize-amount))
|
||||
(call-interactively 'ccr/v-resize))
|
||||
(t (push key unread-command-events))))
|
||||
(enlarge-window-horizontally ccr/v-resize-amount)
|
||||
(call-interactively 'ccr/v-resize))
|
||||
((eq key (string-to-char "<"))
|
||||
(enlarge-window-horizontally (- ccr/v-resize-amount))
|
||||
(call-interactively 'ccr/v-resize))
|
||||
(t (push key unread-command-events))))
|
||||
(defun ccr/h-resize (key)
|
||||
"Interactively horizontally resize the window"
|
||||
(interactive "cHit >/< to enlarge/shrink")
|
||||
(cond ((eq key (string-to-char ">"))
|
||||
(enlarge-window ccr/h-resize-amount)
|
||||
(call-interactively 'ccr/h-resize))
|
||||
((eq key (string-to-char "<"))
|
||||
(enlarge-window (- ccr/h-resize-amount))
|
||||
(call-interactively 'ccr/h-resize))
|
||||
(t (push key unread-command-events))))
|
||||
(enlarge-window ccr/h-resize-amount)
|
||||
(call-interactively 'ccr/h-resize))
|
||||
((eq key (string-to-char "<"))
|
||||
(enlarge-window (- ccr/h-resize-amount))
|
||||
(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 <up>" . windmove-up)
|
||||
("C-c w <right>" . windmove-right)
|
||||
("C-c w <down>" . windmove-down)
|
||||
("C-c w <left>" . 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 <up>" . windmove-up)
|
||||
("C-c w <right>" . windmove-right)
|
||||
("C-c w <down>" . windmove-down)
|
||||
("C-c w <left>" . 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
|
||||
|
@ -379,10 +380,10 @@
|
|||
(vertico-cycle t)
|
||||
(vertico-mode t)
|
||||
:bind (:map vertico-map
|
||||
(("DEL" . vertico-directory-delete-char)
|
||||
("C-DEL" . vertico-directory-delete-word)
|
||||
("M-q" . vertico-quick-insert)
|
||||
("C-q" . vertico-quick-exit))))
|
||||
(("DEL" . vertico-directory-delete-char)
|
||||
("C-DEL" . vertico-directory-delete-word)
|
||||
("M-q" . vertico-quick-insert)
|
||||
("C-q" . vertico-quick-exit))))
|
||||
|
||||
;; (use-package vertico-posframe
|
||||
;; :after vertico
|
||||
|
@ -417,7 +418,7 @@
|
|||
("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-line)
|
||||
("C-c L" . consult-focus-lines)
|
||||
("C-c m" . consult-mark)
|
||||
("C-c o o" . consult-outline)
|
||||
|
@ -445,9 +446,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))
|
||||
|
||||
|
@ -458,7 +459,7 @@
|
|||
|
||||
(use-package prog-mode
|
||||
:hook ((prog-mode . hl-line-mode)
|
||||
(prog-mode . display-line-numbers-mode)))
|
||||
(prog-mode . display-line-numbers-mode)))
|
||||
|
||||
(use-package which-key :delight :config
|
||||
(which-key-mode)
|
||||
|
@ -500,28 +501,28 @@
|
|||
|
||||
(use-package nix-ts-mode
|
||||
:hook (
|
||||
(nix-ts-mode . (lambda ()
|
||||
(require 'eglot)
|
||||
(add-to-list 'eglot-server-programs
|
||||
'(nix-ts-mode . ("nixd")))
|
||||
(eglot-ensure)))
|
||||
(nix-ts-mode . electric-pair-mode)
|
||||
(nix-ts-mode . (lambda () (setq-local indent-bars-spacing-override 2) (indent-bars-mode)))
|
||||
(nix-ts-mode . (lambda ()
|
||||
(setq-local
|
||||
treesit-font-lock-settings
|
||||
(append treesit-font-lock-settings
|
||||
(treesit-font-lock-rules
|
||||
:language 'nix
|
||||
:feature 'function
|
||||
:override t
|
||||
`((formal) @font-lock-type-face)
|
||||
|
||||
:language 'nix
|
||||
:feature 'function
|
||||
`((attrpath) @font-lock-function-name-face)
|
||||
)))))
|
||||
)
|
||||
(nix-ts-mode . (lambda ()
|
||||
(require 'eglot)
|
||||
(add-to-list 'eglot-server-programs
|
||||
'(nix-ts-mode . ("nixd")))
|
||||
(eglot-ensure)))
|
||||
(nix-ts-mode . electric-pair-mode)
|
||||
(nix-ts-mode . (lambda () (setq-local indent-bars-spacing-override 2) (indent-bars-mode)))
|
||||
(nix-ts-mode . (lambda ()
|
||||
(setq-local
|
||||
treesit-font-lock-settings
|
||||
(append treesit-font-lock-settings
|
||||
(treesit-font-lock-rules
|
||||
:language 'nix
|
||||
:feature 'function
|
||||
:override t
|
||||
`((formal) @font-lock-type-face)
|
||||
|
||||
:language 'nix
|
||||
:feature 'function
|
||||
`((attrpath) @font-lock-function-name-face)
|
||||
)))))
|
||||
)
|
||||
:mode "\\.nix\\'"
|
||||
)
|
||||
|
||||
|
@ -533,33 +534,33 @@
|
|||
|
||||
(use-package python-ts-mode
|
||||
:hook ((python-ts-mode . (lambda ()
|
||||
(require 'eglot)
|
||||
(add-to-list 'eglot-server-programs
|
||||
'(python-ts-mode . ("jedi-language-server")))
|
||||
(eglot-ensure))))
|
||||
(require 'eglot)
|
||||
(add-to-list 'eglot-server-programs
|
||||
'(python-ts-mode . ("jedi-language-server")))
|
||||
(eglot-ensure))))
|
||||
:mode "\\.py\\'")
|
||||
|
||||
(use-package solidity-mode
|
||||
:hook ((solidity-mode . (lambda ()
|
||||
(require 'eglot)
|
||||
(add-to-list 'eglot-server-programs
|
||||
'(solidity-mode . ("nomicfoundation-solidity-language-server" "--stdio")))
|
||||
(eglot-ensure))))
|
||||
(require 'eglot)
|
||||
(add-to-list 'eglot-server-programs
|
||||
'(solidity-mode . ("nomicfoundation-solidity-language-server" "--stdio")))
|
||||
(eglot-ensure))))
|
||||
:mode "\\.sol\\'")
|
||||
|
||||
|
||||
(use-package typescript-ts-mode
|
||||
:hook ((typescript-ts-mode . (lambda ()
|
||||
(require 'eglot)
|
||||
(eglot-ensure))))
|
||||
(require 'eglot)
|
||||
(eglot-ensure))))
|
||||
:mode "\\.ts\\'")
|
||||
|
||||
(use-package rust-mode
|
||||
:init
|
||||
(setq rust-mode-treesitter-derive t)
|
||||
:hook ((rust-mode . (lambda ()
|
||||
(require 'eglot)
|
||||
(eglot-ensure)))))
|
||||
(require 'eglot)
|
||||
(eglot-ensure)))))
|
||||
|
||||
(use-package haskell-ts-mode
|
||||
:hook ((haskell--ts-mode . eglot-ensure))
|
||||
|
@ -581,11 +582,11 @@
|
|||
:after eglot
|
||||
:config
|
||||
(add-to-list 'eglot-server-programs
|
||||
'(terraform-mode . ("terraform-lsp")))
|
||||
'(terraform-mode . ("terraform-lsp")))
|
||||
:hook ((terraform-mode . eglot-ensure)
|
||||
;; (terraform-mode . tree-sitter-hl-mode)
|
||||
(terraform-mode . (lambda () (setq indent-bars-spacing-override 2) (indent-bars-mode)))
|
||||
))
|
||||
;; (terraform-mode . tree-sitter-hl-mode)
|
||||
(terraform-mode . (lambda () (setq indent-bars-spacing-override 2) (indent-bars-mode)))
|
||||
))
|
||||
|
||||
(use-package yaml-mode
|
||||
:hook (yaml-mode . yaml-ts-mode))
|
||||
|
@ -629,7 +630,7 @@
|
|||
|
||||
(use-package aggressive-indent
|
||||
:hook ((lisp-mode . aggressive-indent-mode)
|
||||
(emacs-lisp-mode . aggressive-indent-mode)))
|
||||
(emacs-lisp-mode . aggressive-indent-mode)))
|
||||
|
||||
(use-package eldoc
|
||||
:delight)
|
||||
|
@ -679,8 +680,8 @@
|
|||
(eat-eshell-mode)
|
||||
(eat-eshell-visual-command-mode)
|
||||
:custom ((eshell-prefer-lisp-functions t)
|
||||
(eshell-history-size 10000)
|
||||
(eshell-banner-message ""))
|
||||
(eshell-history-size 10000)
|
||||
(eshell-banner-message ""))
|
||||
:config
|
||||
(defun ccr/start-eshell () ;; Used from outside Emacs by emacsclient --eval
|
||||
(eshell 'N)
|
||||
|
@ -694,17 +695,17 @@
|
|||
;; (add-to-list 'eshell-modules-list 'eshell-smart) ;; plan 9 style
|
||||
|
||||
(setq ccr/eshell-aliases
|
||||
'((g . magit)
|
||||
(gl . magit-log)
|
||||
(d . dired)
|
||||
(o . find-file)
|
||||
(oo . find-file-other-window)
|
||||
(l . (lambda () (eshell/ls '-la)))
|
||||
(eshell/clear . eshell/clear-scrollback)))
|
||||
'((g . magit)
|
||||
(gl . magit-log)
|
||||
(d . dired)
|
||||
(o . find-file)
|
||||
(oo . find-file-other-window)
|
||||
(l . (lambda () (eshell/ls '-la)))
|
||||
(eshell/clear . eshell/clear-scrollback)))
|
||||
|
||||
(mapc (lambda (alias)
|
||||
(defalias (car alias) (cdr alias)))
|
||||
ccr/eshell-aliases)
|
||||
(defalias (car alias) (cdr alias)))
|
||||
ccr/eshell-aliases)
|
||||
|
||||
|
||||
(defun ccr/eshell-get-current-input ()
|
||||
|
@ -712,35 +713,35 @@
|
|||
(when (eq major-mode 'eshell-mode)
|
||||
(let ((start (save-excursion (eshell-bol) (point)))
|
||||
(end (point-at-eol)))
|
||||
(buffer-substring-no-properties start end))))
|
||||
(buffer-substring-no-properties start end))))
|
||||
|
||||
(defun ccr/eshell-replace-current-input (new-input)
|
||||
(when (eq major-mode 'eshell-mode)
|
||||
(let ((inhibit-read-only t))
|
||||
(eshell-bol)
|
||||
(delete-region (point) (point-at-eol))
|
||||
(insert new-input)
|
||||
(end-of-line))))
|
||||
(eshell-bol)
|
||||
(delete-region (point) (point-at-eol))
|
||||
(insert new-input)
|
||||
(end-of-line))))
|
||||
|
||||
(defun ccr/eshell-history ()
|
||||
(interactive)
|
||||
(when (eq major-mode 'eshell-mode)
|
||||
(let* ((current-input (ccr/eshell-get-current-input))
|
||||
(eshell-history (when (and eshell-history-file-name
|
||||
(file-readable-p eshell-history-file-name))
|
||||
(file-readable-p eshell-history-file-name))
|
||||
(f-read-text eshell-history-file-name)))
|
||||
(bash-history (when (file-readable-p "~/.bash_history")
|
||||
(f-read-text "~/.bash_history")))
|
||||
(history (split-string (concat (or eshell-history "") "\n"
|
||||
(or bash-history "")) "\n" t))
|
||||
(selection (completing-read "History: " history nil t current-input)))
|
||||
(ccr/eshell-replace-current-input selection))))
|
||||
(ccr/eshell-replace-current-input selection))))
|
||||
|
||||
:bind (("C-c o e" . project-eshell)
|
||||
(:map eshell-mode-map
|
||||
("C-r" . ccr/eshell-history)
|
||||
("C-<return>" . corfu-send)
|
||||
))) ;; i.e. just C-r in semi-char-mode
|
||||
(:map eshell-mode-map
|
||||
("C-r" . ccr/eshell-history)
|
||||
("C-<return>" . corfu-send)
|
||||
))) ;; i.e. just C-r in semi-char-mode
|
||||
|
||||
(use-package eshell-command-not-found
|
||||
:custom ((eshell-command-not-found-command "command-not-found"))
|
||||
|
@ -757,7 +758,7 @@
|
|||
|
||||
(use-package eshell-prompt-extras
|
||||
:custom ((eshell-highlight-prompt nil)
|
||||
(eshell-prompt-function 'epe-theme-lambda)))
|
||||
(eshell-prompt-function 'epe-theme-lambda)))
|
||||
|
||||
(use-package popper
|
||||
:custom
|
||||
|
@ -786,35 +787,36 @@
|
|||
|
||||
(use-package org
|
||||
:hook ((org-mode . variable-pitch-mode)
|
||||
(org-mode . visual-line-mode)
|
||||
(org-mode . visual-fill-column-mode))
|
||||
(org-mode . visual-line-mode)
|
||||
(org-mode . visual-fill-column-mode))
|
||||
:custom ((org-log-done nil)
|
||||
(org-return-follows-link t)
|
||||
(org-hide-emphasis-markers t)
|
||||
(visual-fill-column-center-text t)
|
||||
(visual-fill-column-width 100)
|
||||
(fill-column 100)
|
||||
(org-capture-templates '(
|
||||
("j" "Work Log Entry"
|
||||
entry (file+datetree "~/org/work-log.org")
|
||||
"* %?"
|
||||
:empty-lines 0)
|
||||
("n" "Note"
|
||||
entry (file+headline "~/org/notes.org" "Random Notes")
|
||||
"** %?"
|
||||
:empty-lines 0)
|
||||
))
|
||||
(org-auto-align-tags nil)
|
||||
(org-tags-column 0)
|
||||
(org-catch-invisible-edits 'show-and-error)
|
||||
(org-special-ctrl-a/e t)
|
||||
(org-insert-heading-respect-content t)
|
||||
(org-pretty-entities t)
|
||||
(org-ellipsis "…")
|
||||
)
|
||||
(org-return-follows-link t)
|
||||
(org-hide-emphasis-markers t)
|
||||
(visual-fill-column-center-text t)
|
||||
(visual-fill-column-width 100)
|
||||
(fill-column 100)
|
||||
(org-capture-templates '(
|
||||
("j" "Work Log Entry"
|
||||
entry (file+datetree "~/org/work-log.org")
|
||||
"* %?"
|
||||
:empty-lines 0)
|
||||
("n" "Note"
|
||||
entry (file+headline "~/org/notes.org" "Random Notes")
|
||||
"** %?"
|
||||
:empty-lines 0)
|
||||
))
|
||||
(org-auto-align-tags nil)
|
||||
(org-tags-column 0)
|
||||
(org-catch-invisible-edits 'show-and-error)
|
||||
(org-special-ctrl-a/e t)
|
||||
(org-insert-heading-respect-content t)
|
||||
(org-pretty-entities t)
|
||||
(org-ellipsis "…")
|
||||
(org-use-sub-superscripts nil)
|
||||
)
|
||||
:bind (("C-c o l" . org-store-link)
|
||||
("C-c o c" . org-capture)
|
||||
("C-c b o" . org-switchb))
|
||||
("C-c o c" . org-capture)
|
||||
("C-c b o" . org-switchb))
|
||||
:config
|
||||
(defun ccr/org-capture (key)
|
||||
"Capture a note using the template KEY and close the frame when done.
|
||||
|
@ -927,8 +929,8 @@ This is meant to be an helper to be called from the window manager."
|
|||
(require 'org-roam-protocol)
|
||||
:custom
|
||||
(org-roam-v2-ack t)
|
||||
(org-roam-directory (file-truename "~/org"))
|
||||
(org-roam-complete-everywhere 't)
|
||||
(org-roam-directory (file-truename "~/roam"))
|
||||
(org-roam-completion-everywhere 't)
|
||||
(org-roam-dailies-capture-templates
|
||||
'(
|
||||
("d" "Generic entry" entry
|
||||
|
@ -943,20 +945,14 @@ This is meant to be an helper to be called from the window manager."
|
|||
(org-roam-capture-ref-templates
|
||||
'(
|
||||
("r" "Web entry" entry
|
||||
"* ${Title} \n:PROPERTIES:\n:URL: ${ref}\n:END:\n %i"
|
||||
:target (file+head "daily/%<%Y-%m-%d>.org" "#+TITLE: %<%Y-%m-%d>")
|
||||
"** %i \n:PROPERTIES:\n:URL: ${ref}\n:END:"
|
||||
:target (file+olp "inbox.org" ("Web entries"))
|
||||
:create-id t)
|
||||
)
|
||||
)
|
||||
:config
|
||||
(org-roam-db-autosync-mode)
|
||||
|
||||
;; In order to automatically add an org id for some capture templates (using the :create-id keyword)
|
||||
(defun ccr/org-capture-maybe-create-id ()
|
||||
(when (org-capture-get :create-id)
|
||||
(org-id-get-create)))
|
||||
(add-hook 'org-capture-mode-hook #'ccr/org-capture-maybe-create-id)
|
||||
|
||||
;; The following functions name are relevant because org-roam-ql columns in queries use their suffix
|
||||
(defun org-roam-node-spent (node)
|
||||
"Return the hours spent as number"
|
||||
|
@ -970,24 +966,26 @@ This is meant to be an helper to be called from the window manager."
|
|||
"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)))
|
||||
))
|
||||
(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)"
|
||||
(let* ((query-tags `(tags ,client "billable"))
|
||||
(query (if (and date-start date-end)
|
||||
`(and ,query-tags (date-range ,date-start ,date-end))
|
||||
query-tags)))
|
||||
(apply #'+(mapcar #'org-roam-node-spent (org-roam-ql-nodes query))))))
|
||||
(query (if (and date-start date-end)
|
||||
`(and ,query-tags (date-range ,date-start ,date-end))
|
||||
query-tags)))
|
||||
(apply #'+(mapcar #'org-roam-node-spent (org-roam-ql-nodes query)))))
|
||||
:bind
|
||||
(("C-c n i" . org-roam-node-insert)))
|
||||
|
||||
(use-package org-roam-ql
|
||||
:after org-roam
|
||||
|
@ -1027,6 +1025,13 @@ This is meant to be an helper to be called from the window manager."
|
|||
org-roam-ui-update-on-save t
|
||||
org-roam-ui-open-on-start nil))
|
||||
|
||||
(use-package org-download
|
||||
:after org
|
||||
:custom (org-download-image-dir (concat org-roam-directory "/images"))
|
||||
:bind
|
||||
(:map org-mode-map
|
||||
(("M-p" . org-download-clipboard))))
|
||||
|
||||
(use-package gptel
|
||||
:custom
|
||||
(gptel-model 'google/gemini-2.5-flash-preview)
|
||||
|
@ -1057,7 +1062,7 @@ This is meant to be an helper to be called from the window manager."
|
|||
(defun ccr/edit-buffer (buffer-name old-string new-string)
|
||||
"In BUFFER-NAME, replace OLD-STRING with NEW-STRING."
|
||||
(with-current-buffer buffer-name
|
||||
(let ((case-fold-search nil)) ;; Case-sensitive search
|
||||
(let ((case-fold-search nil)) ;; Case-sensitive search
|
||||
(save-excursion
|
||||
(goto-char (point-min))
|
||||
(let ((count 0))
|
||||
|
@ -1152,6 +1157,23 @@ This is meant to be an helper to be called from the window manager."
|
|||
:type string
|
||||
:description "The text to append to the buffer."))
|
||||
:category "emacs")
|
||||
,(gptel-make-tool
|
||||
:function (lambda (buffer text)
|
||||
(with-current-buffer (get-buffer-create buffer)
|
||||
(save-excursion
|
||||
(goto-char (point-max))
|
||||
(insert text)))
|
||||
(format "Appended text to buffer %s" buffer))
|
||||
:name "append_to_buffer"
|
||||
:description "Append text to an Emacs buffer. If the buffer does not exist, it will be created."
|
||||
:confirm t
|
||||
:args (list '(:name "buffer"
|
||||
:type string
|
||||
:description "The name of the buffer to append text to.")
|
||||
'(:name "text"
|
||||
:type string
|
||||
:description "The text to append to the buffer."))
|
||||
:category "emacs")
|
||||
,(gptel-make-tool
|
||||
:name "EditBuffer"
|
||||
:function #'ccr/edit-buffer
|
||||
|
@ -1185,6 +1207,22 @@ This is meant to be an helper to be called from the window manager."
|
|||
:description "Content to write to the buffer"
|
||||
:required t))
|
||||
:category "edit")
|
||||
,(gptel-make-tool
|
||||
:function (lambda (title body)
|
||||
(org-roam-capture-
|
||||
:templates `(("d" "" plain "%?" :target (file+head "%<%Y%m%d%H%M%S>-${slug}.org" ,(concat "#+title: ${title}\n\n" body)))) ; override default template
|
||||
:node (org-roam-node-create :title title)
|
||||
:props '(:unnarrowed 't :tags "gptel"))
|
||||
)
|
||||
:name "create_org_roam_note"
|
||||
:description "Create a new org-roam note."
|
||||
:args (list '(:name "title"
|
||||
:type string
|
||||
:description "The name of the note to create. Try to automatically infere it and ask only if dubious.")
|
||||
'(:name "body"
|
||||
:type string
|
||||
:description "The body of the note write in an org language, aovoid starting with an headline as first line. Feel free to exploit the org syntax."))
|
||||
:category "org-roam")
|
||||
))
|
||||
|
||||
|
||||
|
|
24
hmModules/unison/default.nix
Normal file
24
hmModules/unison/default.nix
Normal file
|
@ -0,0 +1,24 @@
|
|||
{ pkgs, lib, ... }:
|
||||
{
|
||||
home.packages = [ pkgs.unison ];
|
||||
services.unison = {
|
||||
enable = true;
|
||||
pairs = {
|
||||
"roam" = {
|
||||
roots = [
|
||||
# Pair of roots to synchronize
|
||||
"/home/ccr/roam"
|
||||
"ssh://root@sisko.wg.aciceri.dev//mnt/hd/roam"
|
||||
];
|
||||
commandOptions = {
|
||||
auto = "true";
|
||||
batch = "true";
|
||||
log = "false";
|
||||
repeat = "watch";
|
||||
sshcmd = lib.getExe pkgs.openssh;
|
||||
ui = "text";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
|
@ -59,6 +59,7 @@
|
|||
"git-workspace-tokens".owner = "ccr";
|
||||
"autistici-password".owner = "ccr";
|
||||
"restic-hetzner-password" = { };
|
||||
"nix-netrc" = { };
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -87,6 +88,7 @@
|
|||
"restic-hetzner-password" = { };
|
||||
"forgejo-runners-token".owner = "nixuser";
|
||||
"forgejo-nix-access-tokens".owner = "nixuser";
|
||||
"nix-netrc" = { };
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -119,6 +121,8 @@
|
|||
group = "forgejo";
|
||||
};
|
||||
"matrix-registration-shared-secret".owner = "matrix-synapse";
|
||||
"arbi-config".owner = "arbi";
|
||||
"nix-netrc" = { };
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -142,9 +146,7 @@
|
|||
"cachix-personal-token".owner = "ccr";
|
||||
"git-workspace-tokens".owner = "ccr";
|
||||
"autistici-password".owner = "ccr";
|
||||
"restic-hetzner-password" = { };
|
||||
"forgejo-runners-token".owner = "nixuser";
|
||||
"forgejo-nix-access-tokens".owner = "nixuser";
|
||||
"nix-netrc" = { };
|
||||
};
|
||||
};
|
||||
|
||||
|
|
|
@ -28,13 +28,11 @@
|
|||
"pam"
|
||||
"wireguard-client"
|
||||
"greetd"
|
||||
"syncthing"
|
||||
"mount-sisko"
|
||||
"adb"
|
||||
"binfmt"
|
||||
"prometheus-exporters"
|
||||
"alloy"
|
||||
"syncthing"
|
||||
"zerotier"
|
||||
]
|
||||
++ [ ./disko.nix ];
|
||||
|
|
|
@ -31,7 +31,6 @@
|
|||
"wireguard-client"
|
||||
"binfmt"
|
||||
"greetd"
|
||||
"syncthing"
|
||||
"hass-poweroff"
|
||||
"forgejo-runners"
|
||||
"teamviewer"
|
||||
|
@ -99,6 +98,7 @@
|
|||
"pantalaimon"
|
||||
"moonlight"
|
||||
"gimp"
|
||||
"unison"
|
||||
];
|
||||
extraGroups = [ "plugdev" ];
|
||||
backupPaths = [ ];
|
||||
|
|
|
@ -29,7 +29,6 @@
|
|||
"wireguard-client"
|
||||
"binfmt"
|
||||
"greetd"
|
||||
# "syncthing"
|
||||
"teamviewer"
|
||||
"sunshine"
|
||||
"mount-sisko"
|
||||
|
@ -169,4 +168,16 @@
|
|||
enable = true;
|
||||
algorithm = "zstd";
|
||||
};
|
||||
|
||||
hardware.nvidia-container-toolkit.enable = true;
|
||||
services.xserver.videoDrivers = [ "nvidia" ];
|
||||
hardware.nvidia.open = true;
|
||||
hardware.nvidia.prime = {
|
||||
offload = {
|
||||
enable = true;
|
||||
enableOffloadCmd = true;
|
||||
};
|
||||
intelBusId = "PCI:0:2:0";
|
||||
nvidiaBusId = "PCI:1:0:0";
|
||||
};
|
||||
}
|
||||
|
|
|
@ -26,7 +26,6 @@
|
|||
"atuin"
|
||||
"immich"
|
||||
"paperless"
|
||||
"syncthing"
|
||||
"atticd"
|
||||
"jellyfin"
|
||||
"matrix"
|
||||
|
@ -114,6 +113,7 @@
|
|||
|
||||
environment.systemPackages = with pkgs; [
|
||||
cifs-utils
|
||||
unison
|
||||
];
|
||||
|
||||
powerManagement.scsiLinkPolicy = "med_power_with_dipm";
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
{ config, pkgs, ... }:
|
||||
{ config, ... }:
|
||||
let
|
||||
rev = "d531730d9640160f0519ef4b3640f8da49dd96f8";
|
||||
arbi-flake = builtins.getFlake "git+ssh://git@github.com/aciceri/arbi.git?rev=${rev}";
|
||||
|
@ -9,11 +9,7 @@ in
|
|||
services.arbi = {
|
||||
enable = true;
|
||||
log_level = "debug";
|
||||
configFile = pkgs.writeText "arbi-config.kdl" ''
|
||||
endpoint "wss://eth-mainnet.g.alchemy.com/v2/<REDACTED>"
|
||||
pairs_file "pairs.json"
|
||||
concurrency 4
|
||||
'';
|
||||
configFile = config.age.secrets.arbi-config.path;
|
||||
};
|
||||
|
||||
environment.persistence."/persist".directories = [
|
||||
|
|
|
@ -5,7 +5,10 @@
|
|||
openFirewall = true;
|
||||
};
|
||||
|
||||
users.users.jellyfin.extraGroups = [ "transmission" ];
|
||||
users.users.jellyfin.extraGroups = [
|
||||
"transmission"
|
||||
"amule"
|
||||
];
|
||||
|
||||
environment.persistence."/persist".directories = [
|
||||
config.services.jellyfin.dataDir
|
||||
|
|
|
@ -20,20 +20,20 @@
|
|||
"root"
|
||||
"@wheel"
|
||||
];
|
||||
netrc-file = "/etc/nix/netrc";
|
||||
netrc-file = config.age.secrets.nix-netrc.path;
|
||||
substituters = [
|
||||
# "s3://cache?profile=default®ion=eu-south-1&scheme=https&endpoint=cache.aciceri.dev"
|
||||
"https://cache.iog.io"
|
||||
"https://cache.lix.systems"
|
||||
"https://nix-community.cachix.org"
|
||||
"https://mlabs.cachix.org"
|
||||
# "https://mlabs.cachix.org"
|
||||
"http://sisko.wg.aciceri.dev:8081/nixfleet"
|
||||
];
|
||||
trusted-public-keys = [
|
||||
# "cache.aciceri.dev~1:nJMfcBnYieY2WMbYDG0s9S5qUhU+V4RPL+X9zcxXxZY="
|
||||
"hydra.iohk.io:f/Ea+s+dFdN+3Y/G+FDgSq+a5NEWhJGzdjvKNGv0/EQ="
|
||||
"cache.lix.systems:aBnZUw8zA7H35Cz2RyKFVs3H4PlGTLawyY5KRbvJR8o="
|
||||
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
|
||||
"mlabs.cachix.org-1:gStKdEqNKcrlSQw5iMW6wFCj3+b+1ASpBVY2SYuNV2M="
|
||||
# "mlabs.cachix.org-1:gStKdEqNKcrlSQw5iMW6wFCj3+b+1ASpBVY2SYuNV2M="
|
||||
"nixfleet:Bud23440n6mMTmgq/7U+mk91zlLjnx2X3lQQrCBCCU4="
|
||||
];
|
||||
deprecated-features = [ "url-literals" ];
|
||||
};
|
||||
|
|
|
@ -42,6 +42,7 @@ in
|
|||
"/persist"
|
||||
"/mnt/hd/immich"
|
||||
"/mnt/hd/paperless"
|
||||
"/mnt/hd/roam"
|
||||
];
|
||||
exclude = [ " /persist/var/lib/containers" ];
|
||||
passwordFile = config.age.secrets.SISKO_RESTIC_PASSWORD.path;
|
||||
|
|
|
@ -188,6 +188,7 @@ let
|
|||
org-roam
|
||||
org-roam-ql
|
||||
org-roam-ui
|
||||
org-download
|
||||
visual-fill-column
|
||||
consult-org-roam
|
||||
pass
|
||||
|
|
BIN
secrets/arbi-config.age
Normal file
BIN
secrets/arbi-config.age
Normal file
Binary file not shown.
BIN
secrets/nix-netrc.age
Normal file
BIN
secrets/nix-netrc.age
Normal file
Binary file not shown.
|
@ -153,6 +153,17 @@ with keys.users;
|
|||
ccr-ssh
|
||||
sisko
|
||||
];
|
||||
"arbi-config.age".publicKeys = [
|
||||
ccr-ssh
|
||||
sisko
|
||||
];
|
||||
"nix-netrc.age".publicKeys = [
|
||||
ccr-ssh
|
||||
sisko
|
||||
pike
|
||||
picard
|
||||
kirk
|
||||
];
|
||||
|
||||
# WireGuard
|
||||
"picard-wireguard-private-key.age".publicKeys = [
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue