Compare commits

..

21 commits

Author SHA1 Message Date
33175c5757 flake.lock: Update
Some checks failed
UPLOAD x86_64-linux.pre-commit
DOWNLOAD x86_64-linux.pre-commit
CACHIX x86_64-linux.pre-commit
ATTIC x86_64-linux.pre-commit
EVAL aarch64-linux.sisko
BUILD aarch64-linux.sisko
/ test (push) Successful in 29m29s
Flake lock file updates:

• Updated input 'agenix':
    'github:ryantm/agenix/96e078c646b711aee04b82ba01aefbff87004ded' (2025-04-26)
  → 'github:ryantm/agenix/4835b1dc898959d8547a871ef484930675cb47f1' (2025-05-18)
• Updated input 'catppuccin':
    'github:catppuccin/nix/a5db9e41a4dccfa5ffe38e6f1841a5f9ad5c5c04' (2025-05-02)
  → 'github:catppuccin/nix/0ba11b12be81f0849a89ed17ab635164ea8f0112' (2025-05-24)
• Updated input 'disko':
    'github:nix-community/disko/d0c543d740fad42fe2c035b43c9d41127e073c78' (2025-04-28)
  → 'github:nix-community/disko/a894f2811e1ee8d10c50560551e50d6ab3c392ba' (2025-05-26)
• Updated input 'dream2nix':
    'github:nix-community/dream2nix/8ce6284ff58208ed8961681276f82c2f8f978ef4' (2024-12-25)
  → 'github:nix-community/dream2nix/6fd6d9188f32efd1e1656b3c3e63a67f9df7b636' (2025-05-19)
• Updated input 'emacs-overlay':
    'github:nix-community/emacs-overlay/66bb2d7a4df96d0c1e63648850b7aed1b2e8d683' (2025-05-03)
  → 'github:nix-community/emacs-overlay/e048433838750a5fd9036e56dd8f59affa6d676b' (2025-05-26)
• Updated input 'emacs-overlay/nixpkgs':
    'github:NixOS/nixpkgs/f02fddb8acef29a8b32f10a335d44828d7825b78' (2025-05-01)
  → 'github:NixOS/nixpkgs/063f43f2dbdef86376cc29ad646c45c46e93234c' (2025-05-23)
• Updated input 'emacs-overlay/nixpkgs-stable':
    'github:NixOS/nixpkgs/bf3287dac860542719fe7554e21e686108716879' (2025-05-02)
  → 'github:NixOS/nixpkgs/f09dede81861f3a83f7f06641ead34f02f37597f' (2025-05-23)
• Updated input 'git-hooks-nix':
    'github:cachix/git-hooks.nix/dcf5072734cb576d2b0c59b2ac44f5050b5eac82' (2025-03-22)
  → 'github:cachix/git-hooks.nix/80479b6ec16fefd9c1db3ea13aeb038c60530f46' (2025-05-16)
• Updated input 'homeManager':
    'github:nix-community/home-manager/c0962eeeabfb8127713f859ec8a5f0e86dead0f2' (2025-05-03)
  → 'github:nix-community/home-manager/d23d20f55d49d8818ac1f1b2783671e8a6725022' (2025-05-26)
• Updated input 'lanzaboote':
    'github:nix-community/lanzaboote/995637eb3ab78eac33f8ee6b45cc2ecd5ede12ba' (2025-04-21)
  → 'github:nix-community/lanzaboote/2e425f3da6ce7f5b34fa6eaf7a2a7f78dbabcc85' (2025-05-12)
• Updated input 'lanzaboote/crane':
    'github:ipetkov/crane/bb1c9567c43e4434f54e9481eb4b8e8e0d50f0b5' (2025-03-09)
  → 'github:ipetkov/crane/dfd9a8dfd09db9aad544c4d3b6c47b12562544a5' (2025-05-03)
• Updated input 'lanzaboote/flake-parts':
    'github:hercules-ci/flake-parts/f4330d22f1c5d2ba72d3d22df5597d123fdb60a9' (2025-03-07)
  → 'github:hercules-ci/flake-parts/c621e8422220273271f52058f618c94e405bb0f5' (2025-04-01)
• Updated input 'lanzaboote/pre-commit-hooks-nix':
    'github:cachix/pre-commit-hooks.nix/b5a62751225b2f62ff3147d0a334055ebadcd5cc' (2025-03-07)
  → 'github:cachix/pre-commit-hooks.nix/fa466640195d38ec97cf0493d6d6882bc4d14969' (2025-05-06)
• Updated input 'lanzaboote/rust-overlay':
    'github:oxalica/rust-overlay/c777dc8a1e35407b0e80ec89817fe69970f4e81a' (2025-03-10)
  → 'github:oxalica/rust-overlay/5b07506ae89b025b14de91f697eba23b48654c52' (2025-05-12)
• Updated input 'lix':
    'git+https://git@git.lix.systems/lix-project/lix?ref=refs/heads/main&rev=4e84fd9a0061a04627ec6962c0ed08c2ad0b8a7f' (2025-05-02)
  → 'git+https://git@git.lix.systems/lix-project/lix?ref=refs/heads/main&rev=dbff52bfbc48ead789888bf24422d0ef6f7ba9a8' (2025-05-25)
• Updated input 'lix-module':
    'git+https://git.lix.systems/lix-project/nixos-module?ref=refs/heads/main&rev=fa69ae26cc32dda178117b46487c2165c0e08316' (2025-03-25)
  → 'git+https://git.lix.systems/lix-project/nixos-module?ref=refs/heads/main&rev=3c23c6ae2aecc1f76ae7993efe1a78b5316f0700' (2025-05-19)
• Updated input 'mobile-nixos':
    'github:NixOS/mobile-nixos/6679fd7a8dd4ccf4aa538b82216723861cfe61a2' (2025-04-05)
  → 'github:NixOS/mobile-nixos/6e249e58b5d8166738ebcfd401f05f7496049dd3' (2025-05-25)
• Updated input 'nix-on-droid':
    'github:nix-community/nix-on-droid/5d88ff2519e4952f8d22472b52c531bb5f1635fc' (2024-09-06)
  → 'github:nix-community/nix-on-droid/40b8c7465f78887279a0a3c743094fa6ea671ab1' (2025-05-16)
• Updated input 'nixosHardware':
    'github:NixOS/nixos-hardware/72081c9fbbef63765ae82bff9727ea79cc86bd5b' (2025-04-29)
  → 'github:NixOS/nixos-hardware/11f2d9ea49c3e964315215d6baa73a8d42672f06' (2025-05-22)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/f02fddb8acef29a8b32f10a335d44828d7825b78' (2025-05-01)
  → 'github:NixOS/nixpkgs/063f43f2dbdef86376cc29ad646c45c46e93234c' (2025-05-23)
• Updated input 'treefmt-nix':
    'github:numtide/treefmt-nix/29ec5026372e0dec56f890e50dbe4f45930320fd' (2025-05-02)
  → 'github:numtide/treefmt-nix/1f3f7b784643d488ba4bf315638b2b0a4c5fb007' (2025-05-26)
2025-05-26 15:02:07 +00:00
81da82c1fb
Backup /mnt/hd/roam directory with restic
All checks were successful
/ test (push) Successful in -45s
2025-05-24 10:12:20 +02:00
7188dbf665
Add nix-netrc secret to picard, pike, kirk and sisko
All checks were successful
EVAL aarch64-linux.sisko
/ test (push) Successful in -2s
2025-05-23 21:34:13 +02:00
959016455f
Remove unused caches 2025-05-23 21:32:48 +02:00
ddfb93214f
Use netrc provided by agenix 2025-05-23 21:32:34 +02:00
c8e32b689b
Add netrc secret 2025-05-23 21:32:11 +02:00
8e28001eab
Org-roam changes
Some checks are pending
/ test (push) Waiting to run
2025-05-23 21:08:53 +02:00
6cd58095e4
Keybinding for quick fixes 2025-05-23 21:08:37 +02:00
146eee5abe
Fix typo 2025-05-23 21:08:32 +02:00
1fd1c845e8
Move arbi configuration file to secrets
Some checks failed
/ test (push) Has been cancelled
2025-05-21 21:04:04 +02:00
7e92d09299
Format 2025-05-21 21:03:54 +02:00
9b907264c2
Disable subscript after _ 2025-05-21 21:03:24 +02:00
24a80896a8
New gptel tools
All checks were successful
EVAL aarch64-linux.sisko
/ test (push) Successful in 10s
2025-05-21 17:59:56 +02:00
6d715d8878
Rename org-roam directory 2025-05-21 17:59:27 +02:00
a7f927516e
Format 2025-05-21 17:59:21 +02:00
fd793b791d
Backup roam directory with unison 2025-05-21 17:58:55 +02:00
5692a37c88
Add org-roam-download 2025-05-21 17:58:22 +02:00
ff5359cd50
Disable syncthing 2025-05-21 17:58:04 +02:00
22b1484026
Allow jellyfin access amule downloads
All checks were successful
EVAL aarch64-linux.sisko
BUILD aarch64-linux.sisko
UPLOAD aarch64-linux.sisko
DOWNLOAD aarch64-linux.sisko
CACHIX aarch64-linux.sisko
ATTIC aarch64-linux.sisko
/ test (push) Successful in 40m25s
2025-05-20 09:41:29 +02:00
839cf0df5f
Use NVidia GPU 2025-05-20 09:40:48 +02:00
251266db4c
Remove unused secrets 2025-05-20 09:40:33 +02:00
16 changed files with 304 additions and 219 deletions

76
flake.lock generated
View file

@ -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": {

View file

@ -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")
))

View 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";
};
};
};
};
}

View file

@ -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" = { };
};
};

View file

@ -28,13 +28,11 @@
"pam"
"wireguard-client"
"greetd"
"syncthing"
"mount-sisko"
"adb"
"binfmt"
"prometheus-exporters"
"alloy"
"syncthing"
"zerotier"
]
++ [ ./disko.nix ];

View file

@ -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 = [ ];

View file

@ -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";
};
}

View file

@ -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";

View file

@ -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 = [

View file

@ -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

View file

@ -20,20 +20,20 @@
"root"
"@wheel"
];
netrc-file = "/etc/nix/netrc";
netrc-file = config.age.secrets.nix-netrc.path;
substituters = [
# "s3://cache?profile=default&region=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" ];
};

View file

@ -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;

View file

@ -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

Binary file not shown.

BIN
secrets/nix-netrc.age Normal file

Binary file not shown.

View file

@ -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 = [