jmacs.scm 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446
  1. ;;; Jmacs is free software; you can redistribute it and/or modify it
  2. ;;; under the terms of the GNU General Public License as published by
  3. ;;; the Free Software Foundation; either version 3 of the License, or (at
  4. ;;; your option) any later version.
  5. ;;;
  6. ;;; Jmacs is distributed in the hope that it will be useful, but
  7. ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
  8. ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  9. ;;; GNU General Public License for more details.
  10. ;;;
  11. ;;; You should have received a copy of the GNU General Public License
  12. ;;; along with Jmacs. If not, see <http://www.gnu.org/licenses/>.
  13. ;; This is my specific customization of Emacs
  14. ;; It loads in some specific emacs packages, and adds those as propogated
  15. ;; inputs to my emacs
  16. ;; I can add in all the optional dependencies of emacs
  17. ;; https://git.savannah.gnu.org/cgit/emacs.git/tree/INSTALL
  18. ;; change the default configure flags:
  19. ;; --with-cairo to enable cairo drawing
  20. ;; I can try using GCC to natively compile elisp!
  21. ;; http://akrl.sdf.org/gccemacs.html#orgdf63763
  22. ;; --with-nativecomp
  23. ;; there may be a nix package for this: https://github.com/NixOS/nixpkgs/issues/87400
  24. ;; https://toobnix.org/videos/watch/1f997b3c-00dc-4f7d-b2ce-74538c194fa7
  25. ;; it is being developed on a branch of the emacs tree!
  26. ;; http://git.savannah.gnu.org/cgit/emacs.git?h=feature%2Fnative-comp
  27. (define-module (gnu packages jmacs)
  28. #:use-module (guix packages)
  29. #:use-module (gnu packages)
  30. #:use-module (gnu packages aspell)
  31. #:use-module (gnu packages base)
  32. #:use-module (gnu packages code)
  33. #:use-module (gnu packages gnome-xyz)
  34. #:use-module (guix build-system emacs)
  35. #:use-module (gnu packages finance)
  36. #:use-module (gnu packages gdb)
  37. #:use-module (gnu packages mail)
  38. #:use-module (gnu packages sqlite)
  39. #:use-module (guix download) ;;so I can download the source code...
  40. #:use-module (gnu packages emacs)
  41. #:use-module (gnu packages emacs-xyz)
  42. #:use-module (gnu packages rust-apps)
  43. #:use-module ((guix licenses) #:prefix license:)
  44. )
  45. ;;(define-public emacs-aggressive-fill-paragraph
  46. ;; (package
  47. ;; (name "emacs-aggressive-fill-paragraph")
  48. ;; (version "20180910.816")
  49. ;; (source
  50. ;; (origin
  51. ;; (method url-fetch)
  52. ;; (uri (string-append
  53. ;; "https://melpa.org/packages/aggressive-fill-paragraph-"
  54. ;; version
  55. ;; ".el"))
  56. ;; (sha256
  57. ;; (base32
  58. ;; "12fi9r1wfzv8iqyzrnh82lq6793i9gxq52hk54acxskax29kmn30"))))
  59. ;; (build-system emacs-build-system)
  60. ;; (propagated-inputs `(("emacs-dash" ,emacs-dash)))
  61. ;; (home-page
  62. ;; "https://github.com/davidshepherd7/aggressive-fill-paragraph-mode")
  63. ;; (synopsis
  64. ;; "A mode to automatically keep paragraphs filled")
  65. ;; (description
  66. ;; "An Emacs minor-mode for keeping paragraphs filled in both comments and prose.")
  67. ;; (license #f)))
  68. (define-public emacs-flycheck-pos-tip
  69. (package
  70. (name "emacs-flycheck-pos-tip")
  71. (version "20200516.1600")
  72. (source
  73. (origin
  74. (method url-fetch)
  75. (uri (string-append
  76. "https://melpa.org/packages/flycheck-pos-tip-"
  77. version
  78. ".el"))
  79. (sha256
  80. (base32
  81. "150sadz6myaw5p5r9xym07jqfrfgipks64av7wndzqkhax8qjmhr"))))
  82. (build-system emacs-build-system)
  83. (propagated-inputs
  84. `(("emacs-flycheck" ,emacs-flycheck)
  85. ("emacs-pos-tip" ,emacs-pos-tip)))
  86. (home-page
  87. "https://github.com/flycheck/flycheck-pos-tip")
  88. (synopsis
  89. "Display Flycheck errors in GUI tooltips")
  90. (description
  91. "Provide an error display function to show errors in a tooltip.
  92. Setup
  93. (with-eval-after-load 'flycheck
  94. (flycheck-pos-tip-mode))
  95. ")
  96. (license #f)))
  97. (define-public emacs-helm-flx
  98. (package
  99. (name "emacs-helm-flx")
  100. (version "20180103.516")
  101. (source
  102. (origin
  103. (method url-fetch)
  104. (uri (string-append
  105. "https://melpa.org/packages/helm-flx-"
  106. version
  107. ".el"))
  108. (sha256
  109. (base32
  110. "0wi5xix1y5cq1v4bsz5rl6kg2axw03s5j9xad174p0mi1pqyh04x"))))
  111. (build-system emacs-build-system)
  112. (propagated-inputs
  113. `(("emacs-helm" ,emacs-helm)
  114. ("emacs-flx" ,emacs-flx)))
  115. (home-page
  116. "https://github.com/PythonNut/helm-flx")
  117. (synopsis "Sort helm candidates by flx score")
  118. (description
  119. "This package implements intelligent helm fuzzy sorting, provided by flx.")
  120. (license license:gpl3+)))
  121. (define-public emacs-all-the-icons-gnus
  122. (package
  123. (name "emacs-all-the-icons-gnus")
  124. (version "20180511.654")
  125. (source
  126. (origin
  127. (method url-fetch)
  128. (uri (string-append
  129. "https://melpa.org/packages/all-the-icons-gnus-"
  130. version
  131. ".el"))
  132. (sha256
  133. (base32
  134. "1w86rmwfljr46di2i19q2jcqp5gdsvfjim005rvzrb4lwnj5dnzb"))))
  135. (build-system emacs-build-system)
  136. (propagated-inputs
  137. `(("emacs-dash" ,emacs-dash)
  138. ("emacs-all-the-icons" ,emacs-all-the-icons)))
  139. (home-page "unspecified")
  140. (synopsis "Shows icons for in Gnus")
  141. (description
  142. "To use this package, do
  143. (require 'all-the-icons-gnus)
  144. (all-the-icons-gnus-setup)")
  145. (license #f)))
  146. (define-public emacs-evil-goggles
  147. (package
  148. (name "emacs-evil-goggles")
  149. (version "20181123.1946")
  150. (source
  151. (origin
  152. (method url-fetch)
  153. (uri (string-append
  154. "https://melpa.org/packages/evil-goggles-"
  155. version
  156. ".el"))
  157. (sha256
  158. (base32
  159. "0zrmflb6fs891dhnjqwgg3cl1rm27kdq00dbwh62vzf3kkji7mkp"))))
  160. (build-system emacs-build-system)
  161. (propagated-inputs `(("emacs-evil" ,emacs-evil)))
  162. (home-page
  163. "http://github.com/edkolev/evil-goggles")
  164. (synopsis "Add a visual hint to evil operations")
  165. (description
  166. "Add a visual hint to evil edit operations such as yank, delete,
  167. paste, etc.")
  168. (license #f)))
  169. (define-public emacs-fsm
  170. (package
  171. (name "emacs-fsm")
  172. (version "0.2.1")
  173. (source
  174. (origin
  175. (method url-fetch)
  176. (uri (string-append
  177. "https://elpa.gnu.org/packages/fsm-"
  178. version
  179. ".el"))
  180. (sha256
  181. (base32
  182. "1jyxyqdbfl8nv7c50q0sg3w5p7whp1sqgi7w921k5hfar4d11qqp"))))
  183. (build-system emacs-build-system)
  184. (home-page
  185. "http://elpa.gnu.org/packages/fsm.html")
  186. (synopsis "state machine library")
  187. (description
  188. "fsm.el is an exercise in metaprogramming inspired by gen_fsm of
  189. Erlang/OTP. It aims to make asynchronous programming in Emacs Lisp
  190. easy and fun. By \"asynchronous\" I mean that long-lasting tasks
  191. don't interfer with normal editing.")
  192. (license license:gpl3+)))
  193. ;; (define-public emacs-jabber
  194. ;; (package
  195. ;; (name "emacs-jabber")
  196. ;; (version "20180927.2325")
  197. ;; (source
  198. ;; (origin
  199. ;; (method url-fetch)
  200. ;; (uri (string-append
  201. ;; "https://melpa.org/packages/jabber-"
  202. ;; version
  203. ;; ".tar"))
  204. ;; (sha256
  205. ;; (base32
  206. ;; "09pc4bjc2ng417r47y8a7jl6xpax9nwcg3b5ir5s9g1njmhxsf26"))))
  207. ;; (build-system emacs-build-system)
  208. ;; (propagated-inputs
  209. ;; `(("emacs-fsm" ,emacs-fsm)
  210. ;; ("emacs-srv" ,emacs-srv)
  211. ;; ))
  212. ;; (home-page "unspecified")
  213. ;; (synopsis "A Jabber client for Emacs.")
  214. ;; (description "No description available.")
  215. ;; (license #f)))
  216. ;;(define-public my-emacs-ledger-mode
  217. ;; (package
  218. ;; (name "emacs-ledger-mode")
  219. ;; (version "20200530.1710")
  220. ;; (source
  221. ;; (origin
  222. ;; (method url-fetch)
  223. ;; (uri (string-append
  224. ;; "https://melpa.org/packages/ledger-mode-"
  225. ;; version
  226. ;; ".tar"))
  227. ;; (sha256
  228. ;; (base32
  229. ;; "1843pa6fkf76v44nwignwwn1h48m01l5g5nmrx7rynmshi95nkj0"))))
  230. ;; (build-system emacs-build-system)
  231. ;; (home-page "unspecified")
  232. ;; (synopsis
  233. ;; "Helper code for use with the \"ledger\" command-line tool")
  234. ;; (description
  235. ;; "Most of the general ledger-mode code is here.
  236. ;;")
  237. ;; (license #f)))
  238. (define-public emacs-scss-mode
  239. (package
  240. (name "emacs-scss-mode")
  241. (version "20180123.1708")
  242. (source
  243. (origin
  244. (method url-fetch)
  245. (uri (string-append
  246. "https://melpa.org/packages/scss-mode-"
  247. version
  248. ".el"))
  249. (sha256
  250. (base32
  251. "15305g09kaw813yib6l1q0ihwqw3hpbm3zg1v5rmc5x2dvcc61bj"))))
  252. (build-system emacs-build-system)
  253. (home-page "https://github.com/antonj/scss-mode")
  254. (synopsis "Major mode for editing SCSS files")
  255. (description
  256. "Command line utility sass is required, see http://sass-lang.com/
  257. To install sass:
  258. gem install sass
  259. Also make sure sass location is in emacs PATH, example:
  260. (setq exec-path (cons (expand-file-name \"~/.gem/ruby/1.8/bin\") exec-path))
  261. or customize `scss-sass-command' to point to your sass executable.
  262. ")
  263. (license #f)))
  264. (define-public emacs-smart-comment
  265. (package
  266. (name "emacs-smart-comment")
  267. (version "20160322.1839")
  268. (source
  269. (origin
  270. (method url-fetch)
  271. (uri (string-append
  272. "https://melpa.org/packages/smart-comment-"
  273. version
  274. ".el"))
  275. (sha256
  276. (base32
  277. "03cqfwk7nxl0bj1cj1kv3hrd0811w82q0lccqxl9l8iqlx5m27yz"))))
  278. (build-system emacs-build-system)
  279. (home-page "unspecified")
  280. (synopsis "smarter commenting")
  281. (description
  282. "Code gets rewritten when refactoring to accomidate for new features or
  283. when fixing bugs. An approach used by many developers is to disable a
  284. piece of code with comments, then rewrite an improved version below,
  285. test that is works and then delete the commented code. smart-comment
  286. makes this and similair workflows much swifter.
  287. smart-comment is implemented on top of the commenting functions built
  288. in to Emacs. It is meant to replace `comment-dwim` as the function you
  289. bind to `M-;`.
  290. It triggers different comment actions taking the current location of
  291. the point into acount. Commenting out lines of code is faster.
  292. Commented lines can be marked for later deletion and then all removed
  293. with a single command.
  294. ")
  295. (license #f)))
  296. (define-public jmacs
  297. (package
  298. (inherit emacs)
  299. (name "jmacs")
  300. ;; (inputs
  301. ;; `(("gnu-make" ,gnu-make)))
  302. (propagated-inputs ;;installed in the store and present in the profile
  303. `(("aspell" ,aspell)
  304. ("aspell-dict-en" ,aspell-dict-en)
  305. ("emacs-2048-game" ,emacs-2048-game)
  306. ("emacs-async" ,emacs-async)
  307. ("emacs-anzu" ,emacs-anzu)
  308. ("emacs-all-the-icons" ,emacs-all-the-icons)
  309. ("emacs-all-the-icons-dired" ,emacs-all-the-icons-dired)
  310. ("emacs-all-the-icons-gnus" ,emacs-all-the-icons-gnus)
  311. ("emacs-alert" ,emacs-alert)
  312. ;; ("emacs-aggressive-fill-paragraph" ,emacs-aggressive-fill-paragraph)
  313. ("emacs-aggressive-indent" ,emacs-aggressive-indent)
  314. ("emacs-ag" ,emacs-ag)
  315. ("emacs-ace-window" ,emacs-ace-window)
  316. ("emacs-avy" ,emacs-avy)
  317. ;; ("emacs-bug-hunter" ,emacs-bug-hunter)
  318. ("emacs-build-farm" ,emacs-build-farm)
  319. ("emacs-bbdb" ,emacs-bbdb)
  320. ("emacs-company" ,emacs-company)
  321. ("emacs-daemons" ,emacs-daemons)
  322. ;; ;; list library
  323. ("emacs-dash" ,emacs-dash)
  324. ;;("emacs-dashboard" ,emacs-dashboard)
  325. ;; ;; show the diffs in a git buffer on the fringe of a buffer.
  326. ("emacs-diff-hl" ,emacs-diff-hl)
  327. ("emacs-dumb-jump" ,emacs-dumb-jump)
  328. ("emacs-ebdb" ,emacs-ebdb)
  329. ("emacs-company-ebdb" ,emacs-company-ebdb)
  330. ("emacs-elfeed" ,emacs-elfeed)
  331. ("emacs-emmet-mode" ,emacs-emmet-mode)
  332. ;;("emacs-emms" ,emacs-emms)
  333. ("emacs-evil" ,emacs-evil)
  334. ("emacs-evil-args" ,emacs-evil-args)
  335. ("emacs-evil-commentary" ,emacs-evil-commentary)
  336. ("emacs-evil-goggles" ,emacs-evil-goggles)
  337. ("emacs-evil-surround" ,emacs-evil-surround)
  338. ;; this lets you use the debian pastebin!!!
  339. ("emacs-debpaste" ,emacs-debpaste)
  340. ("emacs-debbugs" ,emacs-debbugs)
  341. ("emacs-f" ,emacs-f)
  342. ("emacs-f3" ,emacs-f3)
  343. ("emacs-fish-completion" ,emacs-fish-completion)
  344. ("emacs-flycheck" ,emacs-flycheck)
  345. ("emacs-flycheck-pos-tip" ,emacs-flycheck-pos-tip)
  346. ("emacs-flx" ,emacs-flx)
  347. ("emacs-geiser" ,emacs-geiser)
  348. ("emacs-gif-screencast" ,emacs-gif-screencast)
  349. ("emacs-git-timemachine" ,emacs-git-timemachine)
  350. ("emacs-gitpatch" ,emacs-gitpatch)
  351. ("emacs-ggtags" ,emacs-ggtags)
  352. ("emacs-gnuplot" ,emacs-gnuplot)
  353. ("emacs-gnus-harvest" ,emacs-gnus-harvest)
  354. ("emacs-gtk-look" ,emacs-gtk-look)
  355. ;;("emacs-guix" ,emacs-guix)
  356. ("emacs-helm" ,emacs-helm)
  357. ;;("emacs-helm-flx" ,emacs-helm-flx)
  358. ("emacs-helm-ag" ,emacs-helm-ag)
  359. ("emacs-helm-gtags" ,emacs-helm-gtags)
  360. ("emacs-helm-mu" ,emacs-helm-mu)
  361. ("emacs-helm-projectile" ,emacs-helm-projectile)
  362. ("emacs-helm-swoop" ,emacs-helm-swoop)
  363. ("emacs-helm-system-packages" ,emacs-helm-system-packages)
  364. ("emacs-hl-todo" ,emacs-hl-todo)
  365. ("emacs-json-mode" ,emacs-json-mode)
  366. ;;("emacs-jabber" ,emacs-jabber)
  367. ("emacs-js2-mode" ,emacs-js2-mode)
  368. ;;("my-emacs-ledger-mode" ,my-emacs-ledger-mode)
  369. ("emacs-lsp-mode" ,emacs-lsp-mode)
  370. ("vala-language-server" ,vala-language-server)
  371. ("emacs-lua-mode" ,emacs-lua-mode)
  372. ("emacs-magit" ,emacs-magit)
  373. ("emacs-magit-popup" ,emacs-magit-popup)
  374. ("emacs-magit-todos" ,emacs-magit-todos)
  375. ("emacs-magit-org-todos-el" ,emacs-magit-org-todos-el)
  376. ("emacs-mbsync" ,emacs-mbsync)
  377. ("emacs-markdown-mode" ,emacs-markdown-mode)
  378. ("emacs-mu4e-alert" ,emacs-mu4e-alert)
  379. ("emacs-nov-el" ,emacs-nov-el)
  380. ("emacs-nginx-mode" ,emacs-nginx-mode)
  381. ("emacs-org" ,emacs-org)
  382. ("emacs-org-bullets" ,emacs-org-bullets)
  383. ("emacs-org-contrib" ,emacs-org-contrib)
  384. ("emacs-pdf-tools" ,emacs-pdf-tools)
  385. ("emacs-page-break-lines" ,emacs-page-break-lines)
  386. ;; todo make this emacs-parinfer-mode@0.4.10
  387. ("emacs-paredit" ,emacs-paredit)
  388. ("emacs-parinfer-mode" ,emacs-parinfer-mode)
  389. ("emacs-projectile" ,emacs-projectile)
  390. ;; ;; display CSS #000000 as black
  391. ("emacs-rainbow-mode" ,emacs-rainbow-mode)
  392. ("emacs-s" ,emacs-s)
  393. ;;("emacs-smart-mode-line" ,emacs-smart-mode-line)
  394. ("emacs-scss-mode" ,emacs-scss-mode)
  395. ("emacs-smart-comment" ,emacs-smart-comment)
  396. ("emacs-smartparens" ,emacs-smartparens)
  397. ("emacs-transmission" ,emacs-transmission)
  398. ("emacs-which-key" ,emacs-which-key)
  399. ;;("emacs-wget" ,emacs-wget)
  400. ("emacs-web-mode" ,emacs-web-mode)
  401. ("emacs-use-package" ,emacs-use-package)
  402. ("emacs-yasnippet" ,emacs-yasnippet)
  403. ("emacs-yasnippet-snippets" ,emacs-yasnippet-snippets)
  404. ("emacs-youtube-dl" ,emacs-youtube-dl)
  405. ("emacs-zenurnburn-theme" ,emacs-zenburn-theme)
  406. ("gdb" ,gdb)
  407. ("ledger" ,ledger)
  408. ;;("notmuch" ,notmuch)
  409. ("ripgrep" ,ripgrep)
  410. ("emacs-rg" ,emacs-rg)
  411. ("emacs-deadgrep" ,emacs-deadgrep)
  412. ("the-silver-searcher" ,the-silver-searcher)
  413. ("sqlite" ,sqlite)))))
  414. ;; uncomment this to make this work via install file
  415. ;; jmacs
  416. ;; maybe I should use this one day
  417. ;; "emacs-znc"
  418. ;; https://github.com/sshirokov/ZNC.el
  419. ;; znc