Things
This commit is contained in:
parent
2a1f2576e4
commit
a7ac7b4b74
8 changed files with 232 additions and 72 deletions
86
flake.lock
generated
86
flake.lock
generated
|
@ -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": {
|
||||
|
|
12
flake.nix
12
flake.nix
|
@ -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"];
|
||||
|
|
|
@ -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
91
init.el
|
@ -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
10
packages/combobulate.nix
Normal file
|
@ -0,0 +1,10 @@
|
|||
{
|
||||
trivialBuild,
|
||||
src,
|
||||
...
|
||||
}:
|
||||
trivialBuild {
|
||||
inherit src;
|
||||
version = "git";
|
||||
pname = "combombulate";
|
||||
}
|
|
@ -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
9
packages/nix-ts-mode.nix
Normal file
|
@ -0,0 +1,9 @@
|
|||
{
|
||||
trivialBuild,
|
||||
src,
|
||||
}:
|
||||
trivialBuild {
|
||||
inherit src;
|
||||
pname = "nix-ts-mode";
|
||||
version = "git";
|
||||
}
|
|
@ -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
|
||||
]
|
||||
|
|
Reference in a new issue