Commit graph

912 commits

Author SHA1 Message Date
0850c39eca emacs: Deploy doomemacs config via home-manager
This makes managing two distinct repos unnecessary, and only single repo
is required.

Since doom config repo was intended to be public anyway, there are no
secrets (I hope).

Pros are being able to deploy doom configs via single repo, which might
come in handy in future.

Cons are the need to redeploy NixOS config again just to deploy Emacs
config. Another config is increased Emacs startup time, because now it
has to traverse through the symlinks to nix-store to get the file
contents.

But, this is an experiment worth trying, so let's try this. Doom's setup
is still done imperatively via its own installer, but the config itself
is deployed via NixOS. We'll see how the trade-off goes.
2023-04-19 20:41:32 +05:30
5288e3d858 Merge remote-tracking branch 'remotes/doom/master' 2023-04-19 20:33:39 +05:30
a985b3099a emacs: try to fix broken tree-sitter grammars
from https://github.com/nix-community/emacs-overlay/issues/312#issuecomment-1506416929
2023-04-16 19:32:49 +05:30
598da76b20 Emacs: Switch to Unstable build (29.0.90)
Now that the Emacs unstable branch has switched to 29.0, I am getting
off the wild ride of master. Hopefully doom will also stablize pretty
soon, and this was planned all along.
2023-04-16 19:14:08 +05:30
8269c8e1d4 minor prose correction 2023-04-05 05:00:12 +05:30
0d25bc1c44 bhankas: Add keybinding to contract region
Opposite of er/expand-region, and something I often miss.
Keybind is same as S-{expand-region}
2023-04-05 04:59:08 +05:30
92e9595812 magit: Force set popup rule
I like the default behavior of magit, but after increasing font size it
suddenly started opening from bottom instead of from the right.

There's probably some config somewhere to decide this (probably
line-length limit), but for now I'm not going to spend much effort on
it. doom's popup rule macro is good enough™.
2023-04-05 04:59:03 +05:30
cec3e63daa Doom: increase font size to 30
This makes it comparable to Fira Code at 28
2023-04-05 04:37:24 +05:30
9e4127445d modus-themes: Minor color tweak
- Comments are brownish rather than yellow
- Strings are more intense green

I'm digging the comments, but strings are sort of too pronounced
compared to rest of the code. Might want to revert to orignal
green-cooler if it gets distracting.
2023-04-05 02:13:37 +05:30
9216007632 emacs: Add database packages
- sqlite
- dbeaver
- flyway
2023-04-05 01:57:48 +05:30
738c50b82a emacs: Remove graalvm package
It is provided by etc.environment in hermes/configuration.nix
2023-04-05 01:56:50 +05:30
b993049baa doom: Use IBM Plex Mono font
It comes with italics, and while I still prefer Fira Code, this, for
now, is good enough.
2023-04-05 01:55:25 +05:30
7df38eda05 eglot: minor changes for java modes
Still doesn't work :(
2023-04-04 23:35:01 +05:30
466f250866 Enable rust module 2023-04-04 18:28:52 +05:30
43368f7fcb hermes: Add JDK and GraalVM paths to /etc/
Makes much easier to configure IDEs than using env vars
2023-04-04 14:54:25 +05:30
184b582ea2 dict: update 2023-04-04 14:53:55 +05:30
a157b4d690 org: Add new capture template for blog-braindump 2023-04-04 14:53:38 +05:30
57913bacef hermes: Add gradle 2023-04-02 20:48:44 +05:30
c93f89958e hermes/home: Remove Zola, add Hugo
Some component in ox-zola+ox-hugo+zola was making markdown not be
rendered properly to HTML. I had no time to figure it out so Hugo was
it.

ox-hugo is well maintained by Kaushal Modi and others, has much more
widespread use, is well documented, and Hugo even uses it automatically!

Overall, I'm liking the result, and keeping it.
2023-04-02 09:21:35 +05:30
5d8b8ba46d org: More config for Hugo
Things seem to be working well enough now, with few papercuts, but
overall I'm fairly happy at the result and low maintenance mode of the
whole thing.
2023-04-02 02:26:16 +05:30
36726129ec org: Remove config for ox-zola
I moved my blog to Hugo. Zola's markdown rendering wasn't really
working, and I didn;t want to debug that at this moment.

Hugo worked much much better, with no intermediary step for converting
to md, as it supports orgmode by default.
2023-04-01 22:57:07 +05:30
d039f11f30 hermes: Add bunch of dev tools for Java, Go, Rust
..and move all dev tools to home-manager
2023-04-01 14:52:47 +05:30
751c6422a9 emacs: Add jinx+enchant library 2023-03-31 12:54:33 +05:30
07d4ebc620 org: Create draft template by default for blog 2023-03-31 12:53:29 +05:30
84ef12caae spell: Use enchant instead of aspell directly 2023-03-31 12:52:14 +05:30
e55eddf1f2 org: Enable hugo flag
For working with Ox-zola
2023-03-31 12:51:48 +05:30
b7b36b7c24 hermes: Add Zola 2023-03-25 17:43:15 +05:30
f66d6b76e1 org/blog: Configure for Zola 2023-03-25 17:40:48 +05:30
01a80063c4 Eglot: Remove inlay-hints-mode conffig
It now comes enabled by default.
2023-03-06 19:28:58 +05:30
92a3a6418a org: Set lexical t as default for emacs lisp 2023-03-05 14:19:51 +05:30
859ef1a0fe gnus: Add feedbase as alternate source
It allows RSS feeds to be accessed via nntp.
Gnus makes fetching slow, but the interface can be learned to be good enough.
2023-03-03 23:38:39 +05:30
a4d9ae1831 Add and enable EditorConfig
Because now Nixpkgs requires this for contributions.
2023-02-28 23:07:02 +05:30
c7b25fa6b0 Hermes: Remove Rust dev tooling
This reverts commit 84542f7b3e.
2023-02-24 21:00:48 +05:30
84542f7b3e Revert "Hermes: Remove Rust dev tooling"
This reverts commit a714495ea0.
2023-02-24 20:55:34 +05:30
b6794d2944 hermes/emacs: Remove Clojure packages 2023-02-24 20:45:19 +05:30
b313a0354b Eglot: If eglot version supports it, enable inlay hints 2023-02-24 20:43:36 +05:30
f7251da5f6 Eglot: Prefer built-in package
eglot is now part of Emacs, and doom's pinning doesn't make sense here,
so just get rid of it.
2023-02-24 20:42:54 +05:30
208ba92f52 Clojure: Disable module and remove config 2023-02-23 13:59:15 +05:30
e9a73a6aa5 dict: update 2023-01-22 00:13:52 +05:30
ac9829293a emacs/completion: Enable completion auto select 2023-01-11 13:38:27 +05:30
19c2cf3481 modus-themes: More changes for v4
partly inspired by
https://christiantietze.de/posts/2023/01/modus-themes-v4-changes/

- Use variable pitch font in some org-agenda constructs
- Enable mixed-fonts
- Use medium and italic for prompts
- use medium weight instead of semibold for default org headings
- Use :custom keyword in use-package config
2023-01-11 13:36:21 +05:30
5956c8be65 hermes/emacs: Add saveplace-pdf-view 2023-01-04 19:11:52 +05:30
2c0769b636 modus-themes: Update prose to match config 2023-01-02 16:51:25 +05:30
d1f5a6f822 modus-themes: Update config for 4.0.0
This is a major, breaking change.

Nearly all the variables are gone, and face-by-face override is
necessary. Modus-themes are now a theme-engine with some reasonable
defaults. This makes it more customizable, but also needs more tweaking
than before and knowing more about Emacs faces.

Anyway, I got to a reasonably close approximation of what I had before,
but there are things remaining. Namely, completions, org-blocks,
org-agenda bolds and hl-line brightness.

But, for now, its mostly good enough.
2023-01-02 16:24:23 +05:30
3a0fb2b43b dict: update 2023-01-01 00:00:35 +05:30
ce4fbcbbd2 hermes: Add nix-ld with default set of libs used by binaries
This is the ultimate solution for weird intricacies of Rust programs
or SBCL needing OpenSSL for compiling stuff, or pre-compiled internet
binaries (not that they're good..) needing specific libs in specific
places that don't exist on NixOS.

While this makes the system less good, it does make it a more
accommodating citizen in the Unix land. This is also a lot more
declarative than any other system out there, so that's an added benefit.

If this works out as advertised, this is going to change a lot of things.
2022-12-31 19:42:13 +05:30
a7b48bef0e eglot-java: Add java-ts-mode hook 2022-12-29 14:39:58 +05:30
49875352c4 bibtex: Add minor prose 2022-12-29 14:37:48 +05:30
302e574668 eglot: add new java-ts-mode for java java config 2022-12-29 14:37:21 +05:30
52c1e36ad3 bibtex: Use default references directory for citar-org-roam 2022-12-28 12:41:58 +05:30
51db7367e2 bibtex: Promote to top-level heading 2022-12-27 15:08:05 +05:30
293f3dca5a bibtex: Initial config
- Add arxiv-citation
  - Download arxiv PDFs
  - Automatically add bibtex entry to specified file
- Minor modifications to Citar config
- Configure citar-org-roam to not use any subdirectory
2022-12-27 15:00:00 +05:30
56ee23c1e6 xref/ripgrep: Use ripgrep as search program for xref
grep is slower than ripgrep and xref already supports ripgrep as an
alternative, so might as well switch to it.
2022-12-27 09:38:15 +05:30
d3f091d16e magit: Set message line length limit to 72 instead of default 80
The commit line length in Doom by default is 80. However, because of my
current laptop screen and split screen editing of commit message in
magit is configured, the line endings happen very awkwardly with single
character on newline. This is generally not an issue, but its just a
nagging thing that I personally do not like.

One of the obvious fix is to simply set the commit message line length
limit to 72 characters as does Linux kernel (and hopefully other GNU
projects, possibly including Emacs itself). This doesn't make too much
difference in usability, while preserving the aesthetics on my laptop
display.

Because this utilizes both the hook and a check for buffer name, this
should not modify the line length for any other buffer and remain at 80.
2022-12-26 11:35:04 +05:30
dedda2fd4e wsl: Better use-package keyword usage
Like Prot, I have concerns on use-package DSL becoming a problem, but for now, I
find the declarative nature of it to be a good thing and consider it worthwhile.
2022-12-26 11:19:03 +05:30
c3871ad750 org: Better specify dependencies in some config blocks 2022-12-26 11:17:26 +05:30
4bc0050133 avy: Defer loading until invoked
Unlike ctrlf mode, which overrides default isearch, avy has single point of
entry for my personal use. So its loading can be deferred until needed.
2022-12-26 11:16:06 +05:30
23c0608fed avy,ctrlf: Always load Avy and ctrlf packages
They are fundamental enough to the Emacs experience that its worth loading them
ahead of time.
2022-12-26 11:13:24 +05:30
e9759dc7e0 doom: Actually finally complete use-package migration
The last block remaining was the theme and font loading and this makes the whole
thing declarative.
2022-12-26 11:09:25 +05:30
7cca0de57b Stock: Minor adjustment to evaluation order
Set variables in init block and activate modes after emacs package gets loaded.
2022-12-26 01:22:22 +05:30
79a662f4c0 everywhere: use-package! all the things
With package emacs, and use-package being part of core now, it is quite nice to
make everything declarative.
2022-12-25 22:44:29 +05:30
0e0fde7f09 ctrlf: Add initial config for Ctrlf package
Its a better more ergonomic replacement for isearch (C-s/C-r) commands.

In cursory usage I like it, its use is a bit less in collapsed Org content, but
otherwise the UX is well thought out.
2022-12-25 16:42:45 +05:30
624397a933 dict: update 2022-12-25 15:37:54 +05:30
ea887e55f1 avy: Minor changes to config 2022-12-21 21:41:51 +05:30
b09d59f062 org: Remove properties drawer 2022-12-19 21:37:22 +05:30
422c15b5ca meta: Remove properties from all headings
I've never used them since adding them, and the plans to publish it regularly
did not materialize. So rather than have these useless properties cluttering
space (especially apparent because I no longer hide them, thanks to notes in
org-mode), I just remove them.
2022-12-19 20:17:44 +05:30
73ec1310ae avy: Change keybinding
C-SPC SPC is bit too "luxury" and too easy to hit by mistake for my taste. This
should kinda sorta match the imenu behavior. We'll see.
2022-12-19 20:12:40 +05:30
d55681de5d org: Use same keybinding for opening consult-imenu as every other mode
By default, Org binds C-' to cycling org-agenda-files, which is useless for me,
since my agenda is collected from hundreds of files.

Since discovering imenu, I am probably going to use it more going forward, and
making this experience uniform across all modes, as is The Emacs Way™, it only
makes sense to reset the keybinding here.
2022-12-19 19:47:03 +05:30
c2f7ba89d6 dict: Add word 2022-12-19 19:37:01 +05:30
36a0ae0f80 Avy: Add global keybinding for avy-goto-char-timer
This appears to be only useful for current buffer, so will need to find a way to
jump across all visible Emacs windows, we'll see.
2022-12-19 18:08:31 +05:30
c146b8258a Disable Rust module 2022-12-14 14:51:41 +05:30
73557935b1 org: Switch to overlays for fold style
text-properties are still slightly faster than overlays, but over long enough
timeline (Emacs 32+) they will probably be deprecated in favor of fast overlay
implementation in newer Emacs versions.

Since the speed it pretty much the same (I do not have very large Org buffers),
it makes sense to just keep the forward compatible behavior.
2022-12-13 18:36:29 +05:30
f79cb5c993 Magit: Default to stock window behavior
I like the alternating half-screen windows from original magit compared to the
full page doom behavior that wastes right side of screen and overlaps the commit
message and changes.

This is better IMO, and I remember I missed it quite dearly after switching to
doom first time around. Nice to have it back :)
2022-12-13 18:10:54 +05:30
f6ff6fd905 yasnippet: Automatically attach resume.pdf with naukri template
.. while maintaining cursor position and attaching the file in correct place (at
the end)
2022-12-13 13:22:41 +05:30
a714495ea0 Hermes: Remove Rust dev tooling 2022-12-12 14:01:12 +05:30
0b54d339d3 Clojure: Add popup rule for CIDER nREPL
Instead of popping a tiny buffer from the bottom, it now opens a buffer from
right, taking half the screen space. This is more comfortable for me right now,
especially since my programs tend to be small and do not extend to the right too
much.
2022-12-09 09:23:31 +05:30
ac4fa8d9b2 Doc: Remove some irrelevant documentation 2022-12-09 08:11:00 +05:30
57da012049 org-modern: Clean up config and load globally instead of using hooks
use-package allows specifying dependencies and only loading org-modern after
org-mode is loaded, and pretty much ensure global activation of org-modern
immediately after org-mode is loaded.
2022-12-07 17:52:32 +05:30
a1b58be0c1 org-roam: Try to fix cursor position on one template 2022-12-07 15:58:32 +05:30
f89807e15a org-roam: Correct params and set cursor positions for some templates 2022-12-07 12:06:40 +05:30
a7f1f7ac7a Minor correction to prose 2022-12-04 23:06:47 +05:30
0e29d311b8 dict: update 2022-12-04 22:49:56 +05:30
46b6686411 org: Add and enable org-modern
Org-modern is a new package by minad (of consult, vertico and marginalia). The
package attempts to make org-mode a bit more pretty and nicer looking, but
instead of using images or heavy regex overrides, it uses box properties. It
kinda fits better in Emacs aesthetics IMO and looks kinda nice and clean.

Instead of colored text abound everywhere, the boxes make spotting things
slightly easier, although reduces text size on those boxes might be annoying
down the road.

Although cleaner and faster than its other brethren, there still is a
performance impact. It is noticeable when doing for eg. big scrolling fast, and
that might just make me hesitant to use it long term, but for now, I'm going to
give it honest and good test run for a while.
2022-12-04 21:19:08 +05:30
9a818e3927 Emacs: re-add tree-sitter grammars explicitly
I had hoped the default additions in upstream derivations mean this would not be
necessary, but apparently that is not the case.
2022-12-04 20:18:08 +05:30
ffdb6aa301 org: Add CATEGORY property to all capture templates
CATEGORY property is picked to show in agenda instead of filename.
since my filenames are quite long and contain unhelpful numbers in front, this
makes the agenda a lot cleaner. It is not perfect, but its better than before.
2022-12-04 13:26:54 +05:30
113cc293f6 clojure: Enable clojure module
Without LSP flag. I want to try out this CIDER+nREPL thing and see how good it
is compared to LSP.
2022-12-04 13:26:17 +05:30
51b6211c3c Hermes: Add stuff for Clojure development 2022-12-04 13:25:39 +05:30
963ea13f76 Emacs: Update expression for emacs-overlay
- Native comp is now enabled by default
- Tree-sitter is enabled by default
- Some tree-sitter grammars are enabled by default
2022-12-03 12:10:43 +05:30
da0a28738e eglot: Install from ELPA instead of using built-in
For some reason built in version is giving errors, and downloading from ELPA
worked.
2022-12-02 22:22:19 +05:30
40ad066572 pdf-tools: Temporarily disable pdf-tools
emacs-overlay has not updated ELPA packages in a while and until that is fixed,
this might remain broken.
2022-12-01 18:32:10 +05:30
4b5b99b65b Revert "Blink cursor by default"
This reverts commit 1531d7fdf8.

I do not like blinking cursor as much as I thought I would
2022-12-01 18:31:47 +05:30
3354ec4393 pdf-tools: Move config to last
So that in odd scenarios where it breaks, rest of the config is still loaded.
2022-12-01 18:30:58 +05:30
1531d7fdf8 Blink cursor by default 2022-12-01 09:47:40 +05:30
30b81ed8e8 vertico: Enable icons
This machine is fast enough to handle them, but I want to see how the UX looks
2022-11-29 13:38:36 +05:30
5c8766bce8 org: Updates from Orgmode release 9.6
Some nice new features and options.
2022-11-29 13:05:05 +05:30
86e56c13b8 Revert "straight.el: Temporarily pin to newer version to fix NonGNU ELPA"
This reverts commit 5ca9d84c72.
2022-11-29 11:10:06 +05:30
5ca9d84c72 straight.el: Temporarily pin to newer version to fix NonGNU ELPA 2022-11-27 13:35:09 +05:30
1ea467da85 yasnippet: Add a snippet for replying to job emails 2022-11-25 14:15:13 +05:30
3b796b8a5d org: Open drawers under heading by default
Since discovering how easy it is to add timestamped notes to headings, I have
been using that. It is quite convenient, and might just save me from
consolidating lot of daily notes.

But the notes are added under LOGBOOK drawer and since it does not open
automatically, I lose the sight of how extensive the notes are. This variable
opens all the drawers, and I'll have to see how much I like that, but its a
decent compromise for now.
2022-11-18 13:21:22 +05:30
8cf1e6ffd8 mu4e: Use day/month/year date format in headers view 2022-11-16 15:36:22 +05:30
9f0910887f eglot: use built-in version of eglot
Because eglot now comes bundled-in with Emacs :)
2022-11-12 22:44:09 +05:30
dfbb1f36b7 org: rename sub-headers
since there is no index any more
2022-11-12 22:43:45 +05:30
df3b895c40 dict: update 2022-11-08 11:18:08 +05:30
3c62ec8436 tab-bar: Disable fixed width for tabs
While it is generally nice, I don't use a lot of tabs (yet) and it wastes space
on shorter tab names and crops longer tab names, making both scenarios fairly
problematic.
2022-11-08 10:24:27 +05:30
6587c8e0f0 org: Switch back to tex-properties for fold style
It is default in upcoming org release, and I see no issues nor benefits either
way. Might just stick with defaults.
2022-11-08 07:59:25 +05:30
db98545aea Revert "emacs: Build emacs with tree-sitter packages"
This reverts commit c231b52b0f.
2022-11-06 10:30:36 +05:30
c0c0ffc18e Revert "tree-sitter: Get all packages from emacs closure generated by NixOS"
This reverts commit d41448cdcb.
2022-11-06 09:45:00 +05:30
d41448cdcb tree-sitter: Get all packages from emacs closure generated by NixOS 2022-11-06 09:31:08 +05:30
c231b52b0f emacs: Build emacs with tree-sitter packages
This is in hopes that the ABI mismatch will be less likely, but it still happens
sometimes. Anyway, since tree-sitter needs a dynamic module for now, its better
to include all the related packages from NixOS.
2022-11-06 09:29:25 +05:30
bb90075668 org: Use overlays for folding
This is to test out the new fast overlays in 29. Apparemtly Ihor's
text-properties based folding is fast, but takes large files to be really
noticeable. But overlays have been made nearly (equally?) as fast now, and the
variable doc says they are probably more compatible with 3rd party packages.
2022-11-05 17:21:20 +05:30
2fbbb2a689 Eglot: Update eglot-java config to match upstream suggestion
eglot-java now comes with minor mode and does not need to be initialized with
separate function.
2022-11-04 13:18:32 +05:30
2949ef9589 hermes/mail: remove redundant import 2022-11-03 17:55:42 +05:30
f678cc8a89 hermes: Disable Docker
I'm not using it anymore
2022-11-03 17:52:33 +05:30
e31e851c59 hermes: Add Rustfmt 2022-11-03 17:41:56 +05:30
d9b2d8e22f hermes: Remove picard and youtube-dl
They are used so infrequently that I might just use nix-shell
2022-11-03 10:03:03 +05:30
c2a9dc5ca3 hermes/navidrome: Remove navidrome module from hermes and delete its config
Now that Music collection from WSL can be accessed by Strawberry directly from
filesystem, it is not necessary to keep navidrome service around any more.
2022-11-01 13:07:56 +05:30
824cffc7ee Remove ef-themes
Over couple of months I had them installed, beyond first testing I have never
used them, and am highly unlikely to use them in future.
2022-11-01 12:26:36 +05:30
c20fa2456a Remove Elixir and Exercism modules 2022-11-01 12:26:20 +05:30
402d841348 hermes/emacs: Remove exercism 2022-11-01 12:24:32 +05:30
69c55c9f0b hermes/emacs: Remove dockerfile-language-server 2022-11-01 12:24:16 +05:30
ef339bf13b Elixir: Remove Elixir module
also remove commented import for elixir module from Hermes
2022-11-01 12:22:12 +05:30
e3deed71e5 Hermes/Emacs: Add tree-sitter grammar for Rust 2022-11-01 12:15:59 +05:30
d2ef77795f Enable Rust module with tree-sitter and lsp flags 2022-11-01 12:15:03 +05:30
d79e29acc4 Hermes: Add Rust packages
Because Elixir dev env issues are killing motivation for Neha, we are evaluating
Rust.

We know the trade-offs, and this is just an evaluation, to see how things end up
with improved dev experience.
2022-10-31 13:40:58 +05:30
fb96abbed9 Hermes: Disable Elixir modules
We are trying out Rust because Neha's system still does not have Elixir dev env
setup and that is killing motivation.
2022-10-31 13:09:52 +05:30
21eb2d0ca9 dict: update 2022-10-27 12:25:56 +05:30
4612dd4ca8 Disable docker module
I am not actively using it everyday and it seems to be using deprecated package.
2022-10-25 18:43:18 +05:30
3411c2590b Hermes: Enable docker and add docker LSP server
Because Elixir dev env for other people is nearing frustration levels of that of
Python. Not quite there yet, but approaching close
2022-10-24 20:49:10 +05:30
3ea4138dd0 Ement: Add ement.el for using matrix within Emacs
- Add keybinding and hack around limitation of package loading detection
- Change C-SPC 1 keybinding title to "news" from elfeed
- Save matrix session to avoid logging in too often
2022-10-23 17:36:00 +05:30
f359276c9a tab-bar: Another attempt to fix new tab page 2022-10-22 13:52:55 +05:30
12c7689983 Eglot: Set correct path for Elixir-LS
..instead of hacky envvars or shell-path modifications. Now it calls right
executable that is included in path by NixOS module.
2022-10-21 23:01:41 +05:30
862a6ab89b Revert "Eglot: Remove adjusting path for elixir-LS"
This reverts commit 37a89c9a8f.
2022-10-21 22:58:56 +05:30
37a89c9a8f Eglot: Remove adjusting path for elixir-LS
Now NixOS automatically adds Elixir-LS path to $PATH via fish shell config, so
this extra hoop is not needed anymore.
2022-10-21 22:51:47 +05:30
764f2909ad org-roam+bhankas: Fix load order
Due to some weird combination of use-package and doom-emacs' org-roam module,
the usual keywords from use-package are not working (:custom, :init, :config
etc).

But this weird ordering appears to be working, so this is what we shall keep.
2022-10-20 11:23:41 +05:30
2d50a5bd92 dict: update 2022-10-20 10:51:27 +05:30
9643d8d7d4 Minor correction for tab-bar config 2022-10-19 22:48:11 +05:30
82ebd20703 org: Remove org-publish 2022-10-19 22:40:58 +05:30
f38e78b5c5 everywhere: Configure lot more packages with use-package
Might be going bit overboard, but I like my config declarative
2022-10-19 22:39:43 +05:30
4ea8bf583c Exercism: Adjust loading and add keybinding 2022-10-19 21:50:10 +05:30
2fc5ffaa31 Hyperbole: Configure with use-package! macro
..and shave off half a second on startup time. Considering this is on SSD, this
half second is actually fairly impressive, and brings load time consisitently
below 4 seconds.
2022-10-19 21:47:34 +05:30
650fa47e09 Org: Show all headings by default instead of folding all
This is bit of an experiment, so see all the headings (including sub-headings)
by default, but none of the content, kind of giving a complete outline of the
document, but we'll see if I want to keep it down the road
2022-10-19 20:37:13 +05:30
7210eac4f4 org: Update variable name for latest org update 2022-10-19 20:36:58 +05:30
aa50694f5a org: Move most variable setting from under :init to :config
Because apparently setting some variables before org is loaded meant their
default values were set by the mode and not the config.

Setting them after loading the mode worked as expected, as was the working
config before.
2022-10-19 20:35:39 +05:30
4fbf3f7905 dired+dirvish: Configure with use-package! macro 2022-10-19 20:35:13 +05:30
35efb83aa7 bhankas.el: Remove commented dependencies line 2022-10-19 20:22:32 +05:30
f13f0090b2 org: Move org-src popup config inside use-package! for org-mode
Make things more tidy and arrange them where they belong, with mode specific
config neatly nestled inside use-package for that mode or package forming nice
islands of declarative config.
2022-10-19 18:48:44 +05:30
f093449477 mu4e: Move complete config inside use-package! macro 2022-10-19 18:48:09 +05:30
b3d5c3aa48 bhankas.el: Configure with use-package
Formalize and declaratively state dependencies for bhankas as well as dependency
on bhankas by org-roam. No more ad-hoc `require` and `load`!
2022-10-19 18:43:09 +05:30
bd12886229 Elfeed: Configure with use-package! macro 2022-10-19 14:54:51 +05:30
3f16125c8c Elixir: Refactor with use-package and add keybinding to format buffer via eglot 2022-10-19 14:00:18 +05:30
050bf35e13 Hermes/Emacs: Add minor comment 2022-10-18 22:16:27 +05:30
162a9e8169 ReST: Enable +j1 flag 2022-10-18 22:11:16 +05:30
374e57bfd2 web: Enable LSP and tree-sitter flags for module
Not sure which LSP it is supposed to use, but the flag is there regardless
2022-10-18 22:10:48 +05:30
3dfa4e03a1 latex: Enable LSP flag 2022-10-18 22:10:34 +05:30
924de03f1d Hermes/Emacs: Add Digestif LaTeX LSP server
Currently added with Lua 5.3, but might want to try out LuaJIT variant, since
I've heard LuaJIT is crazy fast.
2022-10-18 22:09:08 +05:30
4e83004604 Eglot: Remove workaround for lsp-deferred 2022-10-18 13:59:50 +05:30
b0e7261757 Eglot: Move to top-level heading 2022-10-18 13:57:57 +05:30
9f72753804 Eglot: Add and enable eglot-java
It supposedly adds a few niceties, which I'm not sure I need, but it
automatically downloaded the JDT ls server, which made me realise that Nixpkgs
version was too old, and thats why it did not provide autocompletions for Spring
Boot annotations etc
2022-10-17 21:55:42 +05:30
7bc66c1796 Disable syntax module (flycheck)
Because flycheck has some error with recursion, so the advice is to disable the
module for now.
2022-10-17 17:53:33 +05:30
36d6cc0afa Hermes/Emacs: Minor syntax adjustment for tree-sitter language plugins 2022-10-17 14:38:21 +05:30
1f32bc55c6 WSL: Correct fixed mount path for windows executables 2022-10-17 12:54:31 +05:30
715f13dcc2 Exercism: Autoload command for exercism.el
So manually running (require 'exercism) is not necessary every time.
2022-10-17 12:15:52 +05:30
02bf865b13 hermes: Add Exircism package
For easy exercism exercises from eithin Emacs
2022-10-16 19:20:07 +05:30
5afb4134e4 WSL: Add a hacky workaround to copy text to shared clipboard
Still need to work out a way to get text from Windows to WSL
2022-10-16 13:57:07 +05:30
ea46b13ac0 hermes: Enable JDK 2022-10-11 07:29:54 +05:30
0dc42fc290 bebop/pihole: Revert to previous config as the new one does not work 2022-10-11 07:29:26 +05:30
aa484b948b bebop/pihole: Explicitly update PiHole image 2022-10-10 18:17:45 +05:30
6f10f41508 dict: update 2022-10-10 15:32:04 +05:30
b5fa7697d0 nano-modeline: Add bit of padding between prefix and buffer name 2022-10-10 15:31:41 +05:30
31ab68a858 Refactor config for multiple packages with use-package! macro
This makes things declarative and easier to find bugs and dependency graph.

There are quite a few things not working as expected, but we'll see about that
in due time.
2022-10-08 18:38:07 +05:30
0205c8234e Minor code adjustment 2022-10-08 18:13:48 +05:30
716327f497 pdf-tools: Finally get it back working
Now that I know what is going on, here's how to fix it for next time:

- Remove all old pdf package repos related to this
- doom purge
- doom sync -u

This is to be done after nixos-switch is successful.
2022-10-08 13:02:57 +05:30
577a3329a7 eglot: Add hook to enable eglot for java-mode buffers
Also do minor refactor to use use-package! instead of after! macro.
2022-10-07 08:14:57 +05:30
c50bff2418 hermes: Add java LSP server from eclipse
I've recognised the need to have familiar and lightweight Java development
environment, which appears as simple editor, and unrecognizable to those who
know Eclipse/Intellij but still comes to aid in lightweight problem solving,
helping fix syntax and linting issues, in case the person with me (*cough*)
finds it 'difficult' to understand the program (facepalm).
2022-10-06 21:40:06 +05:30
a290c8968b java: Enable and configure eglot to find correct Java LSP 2022-10-06 21:39:24 +05:30
b448b619d0 org: Refactor and autoload for mu4e captures
- Refactor org config and set most variables before loading org, as is
recommended, rather than after
- autoload org on mu4e-org-store-and-capture command
- Keep the hook removal after loading, as it makes kinda sense
2022-10-06 21:37:40 +05:30
7c2263dfb0 Hermes: Change GDK_DPI_SCALE from 0.75 to 1.5
Windows updated and never to disappoint, broke HiDPI config for WSL.

For now, after much experimentation, I've settled on this half-assed fix where
fonts are legible, but everything else is tiny. It'll have to do for time being.
2022-10-06 13:34:13 +05:30
ebac5dd98e doom: Increase font size from 14 to 28
Windows updated and never to fail, it screwed up DPI for WSLg, setting it back
to tiny fonts.

So, this makes things slightly better, by making most text legible.

It still means some things are tiny, but such is the life in Microsoft World™
2022-10-06 13:12:30 +05:30
cdb207c51c Remove minions-mode
With NANO-modeline, minions is not necessary.
2022-10-05 12:14:43 +05:30
49dabd3e36 Initial config for NANO-modeline
This is the modeline from NANO emacs, and by default it is configured to be
*very* minimal.

It is an experiment, although am not quite sure how to carry it forward.

Will see how it goes. It definitely is less crowded than doom-modeline, and
definitely easier to make look short, but we'll see, I guess.
2022-10-05 12:08:49 +05:30
14eed04538 Org: Export CSS in separate file rather than inline
This is supposed to help with exporting during batch operations.
2022-10-04 12:34:06 +05:30
bee4e27070 Re-allow markdown-mode
Eglot uses it to format the help buffers
2022-10-04 12:33:30 +05:30
5c66dfb6b6 mu4e: Add couple of keybindings to capture/store mu4e links 2022-09-30 17:36:04 +05:30
0870746fb8 mail: sync mail on receiving imapnotify notification
This is bit experimental still, so needs testing.
2022-09-29 16:20:03 +05:30
b7295491cf mail: Remove obsolete flag from 'mu index' operation 2022-09-29 16:04:54 +05:30
a326d9124a mail: Change sync frequency from 5 to 15 min
With imapnotify, I expect the sync to happen every time a new mail arrives in
inbox. As such, incessant sync every 5 minutes is not necessary.
2022-09-29 16:00:53 +05:30
d2224666e8 mail: Minor rearrangement 2022-09-29 15:56:50 +05:30
2ab2a5481f mail: Enable imapnotify
To sync whenever new email arrives.

Keep the desktop notification disabled, since there is no desktop in WSL :)
2022-09-29 15:54:13 +05:30
15eeea7387 mail: Fix mbsync service
Correctly configure preExec commands, and give correct path for cat.
2022-09-29 15:53:16 +05:30
627ef1f332 mail: Remove unnecessary lib import
It was required for desktop notification, but since I don't have graphical DE in
WSL, it is not needed.
2022-09-29 15:52:14 +05:30
014a167f1e emacs: Remove minions package
doom is fixed and being pure elisp, it doesn't make sense to have this package here.
2022-09-28 13:09:15 +05:30
08d6703419 Prefer built-in for some packages
- emacsql
- emacsql-sqlite
- emacsql-sqlite-builtin
- tree-sitter-langs

These all need external native component, so kinda makes sense to keep it like
this.
It is an experiment, particularly to see how org-roam accepts emacsql to be
built in, I'd prefer for it to not incessantly compile so often.

Tree-sitter-langs is a curious one. Without it being preferred built-in, it does
not seem to work. But, the highlights are almost always worse than otherwise,
and kinda useless. It is going to be interesting to see how that one plays out.
2022-09-28 13:02:33 +05:30
59500d9e25 eglot: Fix elixir-ls path, again 2022-09-27 22:39:21 +05:30
0932e2687b Hermes/Emacs: Use Nil instead of rnix-lsp as Nix language server
rnix-lsp has never quite worked right for me, especially with proper
suggestions, so this new LSP server is worth a try.

https://github.com/oxalica/nil
https://discourse.nixos.org/t/nil-yet-another-language-server-for-nix/21843
2022-09-27 21:09:18 +05:30
9452f8c712 Eglot/Nix: Use Nil as language server
rnix-lsp has never quite worked for me, its development has also been kinda dead
for a while, so this new server is worth a shot at minimum.

repo: https://github.com/oxalica/nil
source: https://discourse.nixos.org/t/nil-yet-another-language-server-for-nix/21843
2022-09-27 21:02:55 +05:30
0680a71104 yasnippet: Fix flake.lock snippet
It was not printing correct date, but instead "YY".

I have wrapped it with (insert), while not recommended, it works.
2022-09-27 20:20:58 +05:30
47b0d6ad70 Elixir: Reduce message spam for non-elixir projects 2022-09-27 18:54:54 +05:30
af3c0764b5 Add exercism
I'm intending to follow Elixir track on exercism, and this package is a nice way
to skip some copy-paste cludge.
2022-09-27 17:44:55 +05:30
87a3ccbe88 gnus: prefetch all images in HTML articles
Previously only few images were fetched
2022-09-26 20:56:30 +05:30
22c812fc57 mu4e: Set variables after mu4e is loaded
This is because setting them before meant some variables are overridden. e.g.
sending emails via msmtp does not work, because sendmail-function is overridden.
2022-09-26 20:54:00 +05:30
02b2abe2d5 gnus: Require ol-gnus before loading Gnus
ol-gnus allows org-store-link to work with Gnus modes, making it easier to
capture Gnus emails to org-mode.
2022-09-26 10:34:07 +05:30
31c643f76e pdf: Disable pdf module temporarily
Emacs 29 + doom + pdf-tools/pdf-occur is having issues.

After many an attempts, solution seems to be disabling pdf module entirely.
2022-09-25 21:05:01 +05:30
3d1c803cc0 dict: update 2022-09-25 21:04:45 +05:30
4ebc830f44 mu4e/gnus: Refactor and rearrange bunch of config
- Make Gnus require mu4e by loading it before gnus via use-package
- Set all relevant stock variables before mu4e is loaded
- Add rudimentary contact filtering to mu4e
- Do full search for mu4e
- Consolidate all mu4e variables in single setq expression
- consolidate all gnus variables in single setq expression
- generally make better use of use-package keywords
2022-09-25 21:01:37 +05:30
64fcec0db1 mu4e: Always do full search on query
Default search limit is of 500 items, which was pretty fair before latest
update. With newer versions, search query is insanely fast and the results
appear before noticeable delay. My mailbox is also not too big, and it is
possible to keep doing full search with my latest hardware.
2022-09-24 20:53:08 +05:30
e71b6e98fb mu4e: Initial filtering of saved contacts
mu4e has limit of some 2000 contacts. So it makes sense to not save the BS
contacts. This function was inspired by:

https://www.djcbsoftware.nl/code/mu/mu4e/Contact-functions.html

If proven useful, it can be extended to add more matches, e.g. donotreply,
linkedin, other internet pests etc
2022-09-24 18:19:53 +05:30
620dbcf8f9 Emacs/org: Set bookmarks under ~/org
This will persist bookmarks across doom/emacs re-installations.
2022-09-24 10:13:23 +05:30
45640dd337 mu4e: update index non-lazily in several scenarios automatically
- when switching to mu4e-headers-mode and mu4e-main-mode
- After executing marks, usually done for deleting/trashing mails
- dedicated keybind (originally for lazy index update)

This is done because I noticed index not updating after deleting/trashing emails
and needed to manually execute 'mu index'.
2022-09-23 11:29:46 +05:30
8fce72bb2a org: Set org/attach as default directory for org-mode attachments 2022-09-21 14:30:24 +05:30
a0e84d1363 Hermes/Emacs: Add org-noter and minions
Doom is having issues with latest Emacs 29 so my hackneyed fix is to just
include any package remotely having issues with the emacs-pgtk-with-pkgs
derivation.

I'm not fully sure if it works, but it don't cost, so might as well..

Might also provide future opportunity to bundle it all with NixOS build,
especially since upstream NixOS now compiles and provides binaries for all
ELPA/MELPA packages via cache.nixos.org.
2022-09-20 14:54:01 +05:30
a91e65c7c3 Elixir: Add a function to find Elixir project in dirs without git/vc
By default elixirLS looks for .git in root and checks for mix file present in
it.

For projects that are not under vc/git, such as all the ones during my current
learning phase, this becomes tedious and makes the language server half useless.

This little snippet found on github:
https://github.com/elixir-lsp/elixir-ls/issues/364#issuecomment-690987776

..makes it possible for elixirLS to work with projects even without being
tracked under git.
2022-09-14 13:06:28 +05:30
e74b534c61 org-mode: Minor code cleanup/readjustment 2022-09-14 12:48:37 +05:30
23509ea6f2 org-mode: Disable async export
This does not work for some reason, and ends in unexpected failure.

Disabling this works as expected.
2022-09-14 12:04:45 +05:30
b8bc93bc27 org-publish: Disable loading blog-related org packages
Including ox-publish, ox-RSS and bhankas-blog.el

I haven't worked on blog since May, not sure when I'll work on it, so might as
well stop loading them.

Also stops the white flash of Emacs window when starting in WSL
2022-09-14 11:59:19 +05:30
d9e81ead6c Eglot: Add temporary QnD hack to fix eglot regression upstream
Upstream updates to modulep! macro made autoload buggy and not recognise eglot.
So instead of eglot-ensure, it now tries to call lsp-deferred function, which
doesn't exist because lsp-mode is not installed.

Instead of staying on older doom version, just define lsp-deferred to call
eglot-ensure, and problem goes away. Remove once upstream issue is closed:

https://github.com/doomemacs/doomemacs/issues/6771
2022-09-14 09:44:20 +05:30
07217976d0 Disable alchemist.el
Per https://github.com/doomemacs/doomemacs/pull/5488#issuecomment-1242902603

alchemist has not been maintained for 5+ years and is better disabled.

Apparently Eglot + Elixir-LS are good enough.
2022-09-11 13:16:50 +05:30
453a851017 Revert "Hermes/Emacs: Temporarily override to enable withGTK3 flag"
This reverts commit 8b79893f8f.

Upstream PR was merged, and this is no longer necessary.
2022-09-11 13:00:13 +05:30
8b79893f8f Hermes/Emacs: Temporarily override to enable withGTK3 flag
Apparently emacs-pgtk now requires GTK+3 to be present. The build fails without
it.

It was reported with solution:
https://github.com/nix-community/emacs-overlay/issues/244

I created a PR to fix: https://github.com/nix-community/emacs-overlay/issues/245

After the PR is merged and builds are pushed to cachix, override can be removed.
2022-09-11 09:10:55 +05:30
586a3bfbc0 Yasnippet: Suppress warning for executing elisp while expanding snippet 2022-09-11 08:25:57 +05:30
866b555cc6 Emacs+Fonts: Fix all-the-icons flag icons in mu4e
After bit of investigation across doom and package wiki and source code, bit
more googling to see why the flags were missing, turns out the font package was
missing from NixOS.

all-the-icons package in emacs closure is not strictly necessary, as doom is
expected to download it automatically, but I'll probably always have it, so its
a safe bet to keep both in sync.
2022-09-08 20:59:32 +05:30
f16adce240 Enable multiple-cursors module
Not yet sure how I'll use it, but we'll see.

Doom's module is also intended to make multiple cursors more integrated with
Evil-mode which I have left many moons ago, so further scrutiny needed.
2022-09-07 16:01:33 +05:30
295b56cb2d org: Log more TODO changes
Now logs practically every change in TODO status with a note except moving to
TODO (rather than WAITING, CANCELLED or DONE, which are all logged with
timestamp+note).

Also logs all reschedule, redeadline and repeats with timestamp as well as note.

This way the org file themselves can become transactional and log all state
changes to become a log themselves. They can then be used to produce graphs or
whatever.
2022-09-07 15:59:37 +05:30
c5eca86514 dict: update 2022-09-06 15:39:53 +05:30
44a216fd54 dict: update 2022-09-06 10:32:31 +05:30
8db193ca00 magit: Remove custom keybindings for magit-status and magit-blame-echo
Doom provides bindings for them and I've gotten reasonably used to them.
2022-09-05 17:38:16 +05:30
69f18f993e org-mode/org-roam: Use standard org-todo-keywords everywhere
IIRC originally I chose to have file level keywords for better visibility as
well as to have ability to change them top level in future and still have
old individual files be able to transition between TODO states.

At this point, my TODO keywords have not changed for a while, they seem to be
doing the job well enough, and I have gotten much better used to the states so
far.

After getting used to this setup, I am also more reluctant to introduce more
custom TODO states for individual projects as this one works for me, but if the
need arises in future, I can simply add them back in new templates.
2022-09-05 17:24:12 +05:30
f2dbf31f88 org-roam: Replace TODO keywords with variable
Instead of re-declaring TODO keywords everywhere, define them once and reuse so
as to avoid the 'CANCELED' mistake again.
2022-09-05 17:11:29 +05:30
654b8871ba org-roam: Remove #+filetags from dailies template
Daily notes are meant to be general sandbox of the day's notes and not intended
to be associated with any particular topic/tag.
2022-09-05 16:53:01 +05:30
acb98a19d4 dict: update 2022-09-05 16:49:07 +05:30
fdec9a362d mu4e: Always load mu4e in case Gnus is launched first
My mail compose is set to use mu4e (which uses Gnus mail compose facilities with
its own flavors on top). If I open Gnus and try replying to email before having
opened mu4e in that session, mu4e special sauce in compose is missing and mail
sending fails since that is also handled by mu4e along with sending account.

So, the choice was to always load mu4e.

This has the effect of increasing Emacs launch times, but I think that is
alright. So far, even with increasing number of packages being eagerly loaded,
my Emacs launches under 5 seconds consistently. But, this might be good time to
think about managing dependencies fully lazily with use-package effectively.
2022-09-05 16:45:49 +05:30
51e9a0fc34 dict: update 2022-09-03 20:01:06 +05:30
10337e2e14 org: Use #+filetags attribute to tag stuff
If I feel the need for org-roam links as tags, maybe I can add another line with
'- tags ::' again.
2022-09-03 20:00:17 +05:30
058469d17e yasnippet: Add another git commit message snippet 2022-09-02 20:58:03 +05:30
00db4cfc11 dict: update 2022-09-02 20:57:50 +05:30
68b1a5573f Hermes/mail: try to index before sync
This is an experiment, because Gmail does not allow deletion, but only trashing.
Doom's mu4e module has some implementation regarding that.

Anyway, we'll see how this one goes
2022-09-02 14:21:53 +05:30
2d3ac8d3fd org: Finally fix org-agenda not including newly created files
The bug was happening because simply setting org-agenda-files to
global-org-directory does not scan org for org files recursively. Which means
daily files were not part of agenda.

My patchfix for that was to recursively list all org files in
global-org-directory recursively. Problem with that is it only scans all files
once, during Emacs startup. If any new files are created after startup, e.g. new
daily file is started, it is not part of org-agenda-files in that Emacs session,
and agenda does not include that until
- Emacs is restarted, triggering a rescan OR
- Manual restart is triggered

I wrote a function to do that in bhankas.el, but that was still clukny and
hacky, required manual operation and there was no nice solution.

But, I just tried out simply listing directories, had to debug a bit, turns out
the ffap function I was using to recursively list subdirectories was not loaded
on startup. Once I require'd it, org-agenda worked and started showing new files
immediately!

It is nice to not have to worry about this problem any more :)
2022-09-02 11:14:27 +05:30
b2960a5243 org: Correct CANCELLED todo keyword spelling
It won't change in previously created files, but over time it'll be fine
2022-09-02 08:53:28 +05:30
c369b30be0 Hermes/Mail: Switch mbsync sync to 0 offset of hour instead of moving 2 minutes 2022-09-01 21:10:34 +05:30
5df7c790e6 Remove childframe flag from 'syntax' module.
This seems to have only changed the color of tooltip, but we'll see.

Generally in Emacs land the less stuff piled on the better.
2022-09-01 16:30:38 +05:30
9f84f51f2e dict: update 2022-08-31 09:24:03 +05:30
ea22d31b82 modus-themes: Remove mode-line padding and height config
The bug that caused doom+modus to inflate mode-line height by 2 pixels appears
to be resolved, so there is no longer need to reduce the font size and custom
padding parameter.

If in future this bug reappears, this commit can be safely reverted to get
original appearance back.
2022-08-30 14:31:41 +05:30
5feda0f1f5 Hermes: Setup Elixir + Phoenix liveView packages
The LSP setup was bit more involved than expected, but it works.

- Create environment variable with ls package path.
- Do this globally because Fish is not yet managed by home-manager
- Use the variable to get package path in Emacs (configured in Doom Emacs
 config)

Currently the Elixir stuff is installed globally but this can work as far as I
can see. I might have to synchronise between project and system flake
occasionally, but I think it will be manageable for a while.
2022-08-28 11:07:16 +05:30
b35dc2576e dict: update 2022-08-28 11:06:36 +05:30
6f73b24d22 Disable beancount and Janet modules
I really should get on the beancount setup, but Janet is unlikely at this point.
2022-08-28 11:06:05 +05:30
25b87ae57f Enable Elixir module with LSP
Since I'm playing around with Elixir and Phoenix LiveView framework, and it
being less IDE supported, dynamically typed language, I'm gonna make use of
Emacs to develop.

Doom has built-in module for Elixir, with LSP support (no tree-sitter, sadly),
and enabling that was easy.

Getting LSP to work was bit more involved.
- add elixir_lsp to global packages in NixOS
- create environment variable to get the elixir_lsp package path. This had to be
done globally because my shell is not managed by home-manager yet
- remove default language_server.sh path from eglot server list for elixir. This
is kinda weird, because the elixir ls does not have a simple binary, but instead
uses a shell script in its dir to start up. As expected that was more involved
setup with NixOS
- Add correct path to language_server.sh path by using the environment variable
defined in NixOS config.

After this, eglot finds and connects to elixir LS correctly. There are
supposedly some issues with mix file, but that can wait for now.
2022-08-28 11:01:11 +05:30
673ce6dbef Hermes/Emacs: Add Elixir tree-sitter grammar 2022-08-28 01:00:41 +05:30
6568564586 Hermes/Emacs: Remove beancount tree-sitter grammar 2022-08-28 01:00:20 +05:30
438ad568c2 Update comments to latest font selection 2022-08-26 12:42:33 +05:30
5863bfd6de Change font back to Fira Code
It looks a lot better on HiDPI display and larger font size.

So, I will probably keep it for time being.

Also remove all other fonts. I had picked them from tecosaur's config, but
didn't really see any use of them, so might as well remove the extra fluff.
2022-08-26 12:40:39 +05:30
fa4e5f7e00 Hermes: Remove beancount and its ilk
It was commented out anyway, but for now I am not looking to focus and get it to work.
2022-08-26 12:39:48 +05:30