jmacs.scm 16 KB

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