This commit is contained in:
Andrea Ciceri 2023-09-19 21:44:19 +02:00
parent 2a1f2576e4
commit a7ac7b4b74
Signed by: aciceri
SSH key fingerprint: SHA256:/AagBweyV4Hlfg9u092n8hbHwD5fcB6A3qhDiDA65Rg
8 changed files with 232 additions and 72 deletions

86
flake.lock generated
View file

@ -1,5 +1,21 @@
{
"nodes": {
"combobulate": {
"flake": false,
"locked": {
"lastModified": 1695034590,
"narHash": "sha256-YZgYaRVX8cO5W90MUD9CJO8sfiqhDyJDV58hE7utbVI=",
"owner": "mickeynp",
"repo": "combobulate",
"rev": "d51ca57221f8c2689665da4dbe55dc618f0d04e0",
"type": "github"
},
"original": {
"owner": "mickeynp",
"repo": "combobulate",
"type": "github"
}
},
"emacs-overlay": {
"inputs": {
"flake-utils": "flake-utils",
@ -7,11 +23,11 @@
"nixpkgs-stable": "nixpkgs-stable"
},
"locked": {
"lastModified": 1691921730,
"narHash": "sha256-2vTR0Vq2VRQt7+4todEdOJRGIU/qyPdVCXJgbosz3Aw=",
"lastModified": 1694602127,
"narHash": "sha256-8lcpkk35COSkygePlvsOtSpR7tZx1SIgxdltZ0UZvXM=",
"owner": "nix-community",
"repo": "emacs-overlay",
"rev": "9279ce7180483c5ec9e6da74b87000a49a4942c0",
"rev": "b99f00b0bc835dd490b455c8df0bab2acc16021c",
"type": "github"
},
"original": {
@ -43,11 +59,11 @@
"systems": "systems"
},
"locked": {
"lastModified": 1689068808,
"narHash": "sha256-6ixXo3wt24N/melDWjq70UuHQLxGV8jZvooRanIHXw0=",
"lastModified": 1694529238,
"narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "919d646de7be200f3bf08cb76ae1f09402b6f9b4",
"rev": "ff7b65b44d01cf9ba6a71320833626af21126384",
"type": "github"
},
"original": {
@ -59,11 +75,11 @@
"indent-bars": {
"flake": false,
"locked": {
"lastModified": 1691609947,
"narHash": "sha256-hLIqwuWt75kEQqfzZ+VKQsSVhuHqFRzN8ko29Y/Pi/o=",
"lastModified": 1695000820,
"narHash": "sha256-qJy9g/tdce74Rh7FyMxCSBZjK6paZrPaL4UpS/uxPSg=",
"owner": "jdtsmith",
"repo": "indent-bars",
"rev": "7da1a4a2a4d7e024a7eff99fde08844049287e04",
"rev": "2b0a4ad16804fb48821f661cd6be4652c0e37d72",
"type": "github"
},
"original": {
@ -72,13 +88,30 @@
"type": "github"
}
},
"nix-ts-mode": {
"flake": false,
"locked": {
"lastModified": 1694965545,
"narHash": "sha256-HijDb+2ojDk1Evv/KEIrZ/xW+QXz6IJoUllniTsE3hs=",
"owner": "aciceri",
"repo": "nix-ts-mode",
"rev": "8da9a76cd014d56ee734553a32c9e006e375bce4",
"type": "github"
},
"original": {
"owner": "aciceri",
"ref": "improved",
"repo": "nix-ts-mode",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1691654369,
"narHash": "sha256-gSILTEx1jRaJjwZxRlnu3ZwMn1FVNk80qlwiCX8kmpo=",
"lastModified": 1694422566,
"narHash": "sha256-lHJ+A9esOz9vln/3CJG23FV6Wd2OoOFbDeEs4cMGMqc=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "ce5e4a6ef2e59d89a971bc434ca8ca222b9c7f5e",
"rev": "3a2786eea085f040a66ecde1bc3ddc7099f6dbeb",
"type": "github"
},
"original": {
@ -108,11 +141,11 @@
},
"nixpkgs-stable": {
"locked": {
"lastModified": 1691693223,
"narHash": "sha256-9t8ZY1XNAsWqxAJmXgg+GXqF5chORMVnBT6PSHaRV3I=",
"lastModified": 1694499547,
"narHash": "sha256-R7xMz1Iia6JthWRHDn36s/E248WB1/je62ovC/dUVKI=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "18784aac1013da9b442adf29b6c7c228518b5d3f",
"rev": "e5f018cf150e29aac26c61dac0790ea023c46b24",
"type": "github"
},
"original": {
@ -122,15 +155,30 @@
"type": "github"
}
},
"nixpkgs_2": {
"locked": {
"lastModified": 1694422566,
"narHash": "sha256-lHJ+A9esOz9vln/3CJG23FV6Wd2OoOFbDeEs4cMGMqc=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "3a2786eea085f040a66ecde1bc3ddc7099f6dbeb",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"root": {
"inputs": {
"combobulate": "combobulate",
"emacs-overlay": "emacs-overlay",
"flake-parts": "flake-parts",
"indent-bars": "indent-bars",
"nixpkgs": [
"emacs-overlay",
"nixpkgs"
]
"nix-ts-mode": "nix-ts-mode",
"nixpkgs": "nixpkgs_2"
}
},
"systems": {

View file

@ -4,14 +4,22 @@
inputs = {
flake-parts.url = "github:hercules-ci/flake-parts";
emacs-overlay.url = "github:nix-community/emacs-overlay";
nixpkgs.follows = "emacs-overlay/nixpkgs";
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
indent-bars = {
# TODO remove when it lands on (M)ELPA
url = "github:jdtsmith/indent-bars";
flake = false;
};
nix-ts-mode = {
url = "github:aciceri/nix-ts-mode/improved";
flake = false;
};
combobulate = {
url = "github:mickeynp/combobulate";
# url = "github:aciceri/combobulate/nix";
flake = false;
};
};
outputs = inputs @ {flake-parts, ...}:
flake-parts.lib.mkFlake {inherit inputs;} {
systems = ["x86_64-linux"];

View file

@ -44,24 +44,17 @@
};
home.packages = with pkgs;
[
# TODO add epub-thumbnailer to nixpkgs
nil
terraform-lsp
imagemagick
ffmpegthumbnailer
mediainfo
unzipNLS
binutils
(ripgrep.override {withPCRE2 = true;})
gnutls
fd
imagemagick
sqlite
maim
jq
xclip
hunspell
python3
imagemagick
ffmpegthumbnailer
mediainfo
unzipNLS
pkgs.tree-sitter-grammars.tree-sitter-nix
]
++ (with hunspellDicts; [
en_US-large
@ -76,6 +69,7 @@
"$HOME/.config/emacs"
$DRY_RUN_CMD ln -s "$HOME/.config/emacs" "$HOME/emacs"
fi
$DRY_RUN_CMD ln -sfn ${self.packages.${pkgs.system}.treesitGrammars} "$HOME/.config/emacs/tree-sitter"
'';
};
};

91
init.el
View file

@ -105,11 +105,14 @@
(use-package indent-bars
:custom
(indent-bars-treesit-support t)
(indent-bars-spacing-override 2)
;; (indent-bars-treesit-wrap '())
(indent-bars-color '(highlight :face-bg t :blend 0.2))
(indent-bars-highlight-current-depth '(:blend 0.4))
(indent-bars-no-stipple-char (string-to-char "")))
(use-package diredf
(use-package diredfl
:config (diredfl-global-mode))
(use-package treemacs
@ -344,10 +347,16 @@
:hook ((prog-mode . hl-line-mode)
(prog-mode . display-line-numbers-mode)))
(use-package which-key :delight :config (which-key-mode))
(use-package which-key :delight :config
(which-key-mode)
(which-key-setup-side-window-right))
(use-package magit
:hook (magit-mode . magit-delta-mode)
:hook ((magit-mode . magit-delta-mode))
:custom
(magit-todos-keyword-suffix "([^)]+):")
:config
(magit-todos-mode +1)
:bind (("C-c o g" . magit)))
(use-package sideline
@ -365,13 +374,24 @@
(+ (apply #'+ lengths) (if (display-graphic-p) 1 3)))))
(advice-add 'sideline--align :override #'ccr-sideline--align))
(use-package nix-mode
:delight nix-prettify-mode
:hook ((nix-mode . eglot-ensure)
(nix-mode . tree-sitter-hl-mode)
(nix-mode . (lambda () (setq indent-bars-spacing-override 2) (indent-bars-mode))))
:config
(global-nix-prettify-mode))
;; FIXME there is something deeply wrong about how nix is configured here
;; (use-package nix-mode
;; :delight nix-prettify-mode
;; :config
;; (global-nix-prettify-mode))
(use-package nix-ts-mode
:hook (
(nix-ts-mode . (lambda ()
(require 'eglot)
(add-to-list 'eglot-server-programs
'(nix-ts-mode . ("nil")))
(eglot-ensure)))
(nix-ts-mode . electric-pair-mode)
(nix-ts-mode . (lambda () (setq indent-bars-spacing-override 2) (indent-bars-mode)))
)
:mode "\\.nix\\'"
)
(use-package haskell-mode
:hook ((haskell-mode . eglot-ensure)
@ -381,6 +401,10 @@
:hook (purescript-mode . turn-on-purescript-indentation))
(use-package terraform-mode
:after eglot
:config
(add-to-list 'eglot-server-programs
'(terraform-mode . ("terraform-lsp")))
:hook ((terraform-mode . eglot-ensure)
(terraform-mode . tree-sitter-hl-mode)))
@ -390,6 +414,20 @@
(use-package sh-mode
:hook (sh-mode . tree-sitter-hl-mode))
;; FIXME
;; (use-package mmm-mode
;; :config
;; (mmm-add-group 'nix-sh
;; '((sh-command
;; :submode sh-mode
;; :face mmm-output-submode-face
;; :front "[^'a-zA-Z]''[^']"
;; :back "''[^$\\']"
;; :include-front t
;; :front-offset 4
;; :end-not-begin t)))
;; (mmm-add-mode-ext-class 'nix-mode "\\.nix\\'" 'nix-sh))
(use-package paredit
:delight
:hook ((lisp-mode . enable-paredit-mode)
@ -398,8 +436,6 @@
(use-package eldoc
:delight)
(use-package tree-sitter :delight)
(use-package diff-hl
:init
(global-diff-hl-mode 1)
@ -416,20 +452,24 @@
(use-package eat
:custom
(eat-kill-buffer-on-exit t)
:bind (("C-c o t" . eat-project)))
:bind (("C-c o t" . eat-project))
;; doesn't work well
;; ((eat-mode . compilation-shell-minor-mode))
)
(use-package popper
:custom
(popper-reference-buffers '("\*Messages\*"
"Output\*$"
"\\*Async Shell Command\\*"
(completion-list-mode . hide)
help-mode
compilation-mode
"^\\*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-window-height 0.33)
(popper-echo-lines 1)
(popper-mode-line nil)
@ -440,10 +480,33 @@
("C-c t c" . popper-cycle)
("C-c t p" . popper-toggle-type)))
(use-package org-roam)
(use-package consult-org-roam
:delight
:after org-roam
:init
(require 'consult-org-roam)
;; Activate the minor mode
(consult-org-roam-mode 1)
:custom
(consult-org-roam-grep-func #'consult-ripgrep)
(consult-org-roam-buffer-narrow-key ?r)
(consult-org-roam-buffer-after-buffers t)
:config
(consult-customize
consult-org-roam-forward-links
:preview-key (kbd "M-."))
:bind
("C-c n f" . consult-org-roam-file-find)
("C-c n b" . consult-org-roam-backlinks)
("C-c n l" . consult-org-roam-forward-links)
("C-c n r" . consult-org-roam-search))
(provide 'init)
;;; init.el ends here
;; Local Variables:
;; byte-compile-warnings: (not free-vars noruntime unresolved)
;; End:

10
packages/combobulate.nix Normal file
View file

@ -0,0 +1,10 @@
{
trivialBuild,
src,
...
}:
trivialBuild {
inherit src;
version = "git";
pname = "combombulate";
}

View file

@ -18,43 +18,61 @@
# https://github.com/NixOS/nixpkgs/issues/209114
_module.args.pkgs = inputs.nixpkgs.legacyPackages.${system}.extend (self: super: {
indent-bars-source = inputs.indent-bars;
tree-sitter-grammars =
super.tree-sitter-grammars
// {
tree-sitter-rust = super.tree-sitter-grammars.tree-sitter-rust.overrideAttrs (_: {
nativeBuildInputs = [self.nodejs self.tree-sitter];
configurePhase = ''
tree-sitter generate --abi 13 src/grammar.json
'';
});
};
nix-ts-mode-source = inputs.nix-ts-mode;
combobulate-source = inputs.combobulate;
# tree-sitter-grammars =
# super.tree-sitter-grammars
# // {
# tree-sitter-rust = super.tree-sitter-grammars.tree-sitter-rust.overrideAttrs (_: {
# nativeBuildInputs = [self.nodejs self.tree-sitter];
# configurePhase = ''
# tree-sitter generate --abi 13 src/grammar.json
# '';
# });
# };
});
packages = {
treesitGrammars = let
all-grammars = pkgs.tree-sitter.withPlugins builtins.attrValues;
in
pkgs.runCommand "treesit-grammars" {} ''
mkdir $out
for f in ${all-grammars}/*
do
cp $f $out/"libtree-sitter-$(basename $f)"
done
'';
ccrEmacsWithoutPackages =
(inputs'.emacs-overlay.packages.emacs-unstable.override {
# treeSitterPlugins =
# builtins.attrValues
# (builtins.removeAttrs pkgs.tree-sitter-grammars ["recurseForDerivations"]);
withNS = false;
withX = false;
withGTK2 = false;
withGTK3 = false;
withWebP = false;
withPgtk = true;
# withNS = false;
# withX = false;
# withGTK2 = false;
# withGTK3 = false;
# withWebP = false;
})
.overrideAttrs (old: {
name = "ccr-emacs";
version = "29";
});
ccrEmacs =
(emacsPackagesFor self'.packages.ccrEmacsWithoutPackages).emacsWithPackages
(import ./packages.nix pkgs);
ccrEmacs = let
emacs =
(emacsPackagesFor self'.packages.ccrEmacsWithoutPackages).emacsWithPackages
(import ./packages.nix pkgs);
in
pkgs.runCommand "emacs" {} ''
cp -r ${emacs} emacs
chmod 700 -R emacs
mkdir emacs/share/emacs
cp -r emacs $out
'';
default = self'.packages.ccrEmacs;
};
apps = {
ccrEmacs.program = "${self'.packages.ccrEmacs}/bin/emacs";
default = self'.apps.ccrEmacs;
default = config.apps.ccrEmacs;
};
};
}

9
packages/nix-ts-mode.nix Normal file
View file

@ -0,0 +1,9 @@
{
trivialBuild,
src,
}:
trivialBuild {
inherit src;
pname = "nix-ts-mode";
version = "git";
}

View file

@ -22,13 +22,17 @@ with epkgs; [
embark-consult
magit
magit-delta
magit-todos
diff-hl
corfu
corfu-terminal
kind-icon
cape
which-key
nix-mode
# nix-mode
(nix-ts-mode.overrideAttrs (_: {
src = pkgs.nix-ts-mode-source;
}))
unisonlang-mode
purescript-mode
dhall-mode
@ -36,8 +40,6 @@ with epkgs; [
inheritenv
popper
paredit
tree-sitter
tree-sitter-langs
yaml-mode
hl-todo
markdown-mode
@ -48,4 +50,12 @@ with epkgs; [
src = pkgs.indent-bars-source;
inherit (epkgs) trivialBuild compat;
})
(pkgs.callPackage ./combobulate.nix {
src = pkgs.combobulate-source;
inherit (epkgs) trivialBuild;
})
org-roam
consult-org-roam
ement
]