From 7a1a900334653e7cadfd60e1c92c128bf9c5a951 Mon Sep 17 00:00:00 2001 From: Azat Bahawi Date: Tue, 16 Aug 2022 02:01:55 +0300 Subject: 2022-08-16 --- flake.lock | 441 +++++++++++++++++++++++++++++--- flake.nix | 13 +- modules/nixfiles/default.nix | 2 +- modules/nixfiles/emacs.nix | 69 ----- modules/nixfiles/emacs/default.nix | 81 ++++++ modules/nixfiles/emacs/doom/config.el | 183 +++++++++++++ modules/nixfiles/emacs/doom/custom.el | 0 modules/nixfiles/emacs/doom/init.el | 134 ++++++++++ modules/nixfiles/emacs/doom/packages.el | 23 ++ 9 files changed, 846 insertions(+), 100 deletions(-) delete mode 100644 modules/nixfiles/emacs.nix create mode 100644 modules/nixfiles/emacs/default.nix create mode 100644 modules/nixfiles/emacs/doom/config.el create mode 100644 modules/nixfiles/emacs/doom/custom.el create mode 100644 modules/nixfiles/emacs/doom/init.el create mode 100644 modules/nixfiles/emacs/doom/packages.el diff --git a/flake.lock b/flake.lock index a43b116..16be0a7 100644 --- a/flake.lock +++ b/flake.lock @@ -78,6 +78,39 @@ "type": "github" } }, + "doom-emacs": { + "flake": false, + "locked": { + "lastModified": 1659994866, + "narHash": "sha256-6lxvYfoPtzvinBHKvuUDpCz44IJpmZMLfLMy5q9UcFk=", + "owner": "doomemacs", + "repo": "doomemacs", + "rev": "b06fd63dcb686045d0c105f93e07f80cb8de6800", + "type": "github" + }, + "original": { + "owner": "doomemacs", + "ref": "master", + "repo": "doomemacs", + "type": "github" + } + }, + "doom-snippets": { + "flake": false, + "locked": { + "lastModified": 1655900328, + "narHash": "sha256-fEYwFxW2sdzNK14DrS92OCGy8KDPZKewrHljnE/RlzQ=", + "owner": "doomemacs", + "repo": "snippets", + "rev": "6b2bd5a77c536ed414794ecf71d37a60ebd4663e", + "type": "github" + }, + "original": { + "owner": "doomemacs", + "repo": "snippets", + "type": "github" + } + }, "emacs-overlay": { "inputs": { "flake-utils": [ @@ -88,11 +121,11 @@ ] }, "locked": { - "lastModified": 1660536682, - "narHash": "sha256-CGbMejdZReOEVZxuv+mGudFE+YR/XAJWgfFihyqEEyM=", + "lastModified": 1660589839, + "narHash": "sha256-leEjC9NmyMwUr/YPrr5w2UQD0WHDqh586V3JnSLs8W4=", "owner": "nix-community", "repo": "emacs-overlay", - "rev": "3d062518dc99ec4841b08c1a3c4f64ef2df330ca", + "rev": "864c7d3ec1e42ac7983d832dea7f737047a9ede9", "type": "github" }, "original": { @@ -102,19 +135,114 @@ "type": "github" } }, + "emacs-so-long": { + "flake": false, + "locked": { + "lastModified": 1575031854, + "narHash": "sha256-xIa5zO0ZaToDrec1OFjBK6l39AbA4l/CE4LInVu2hi0=", + "owner": "hlissner", + "repo": "emacs-so-long", + "rev": "ed666b0716f60e8988c455804de24b55919e71ca", + "type": "github" + }, + "original": { + "owner": "hlissner", + "repo": "emacs-so-long", + "type": "github" + } + }, + "evil-escape": { + "flake": false, + "locked": { + "lastModified": 1588439096, + "narHash": "sha256-aB2Ge5o/93B18tPf4fN1c+O46CNh/nOqwLJbox4c8Gw=", + "owner": "hlissner", + "repo": "evil-escape", + "rev": "819f1ee1cf3f69a1ae920e6004f2c0baeebbe077", + "type": "github" + }, + "original": { + "owner": "hlissner", + "repo": "evil-escape", + "type": "github" + } + }, + "evil-markdown": { + "flake": false, + "locked": { + "lastModified": 1626852210, + "narHash": "sha256-HBBuZ1VWIn6kwK5CtGIvHM1+9eiNiKPH0GUsyvpUVN8=", + "owner": "Somelauw", + "repo": "evil-markdown", + "rev": "8e6cc68af83914b2fa9fd3a3b8472573dbcef477", + "type": "github" + }, + "original": { + "owner": "Somelauw", + "repo": "evil-markdown", + "type": "github" + } + }, + "evil-org-mode": { + "flake": false, + "locked": { + "lastModified": 1607203864, + "narHash": "sha256-JxwqVYDN6OIJEH15MVI6XOZAPtUWUhJQWHyzcrUvrFg=", + "owner": "hlissner", + "repo": "evil-org-mode", + "rev": "a9706da260c45b98601bcd72b1d2c0a24a017700", + "type": "github" + }, + "original": { + "owner": "hlissner", + "repo": "evil-org-mode", + "type": "github" + } + }, + "evil-quick-diff": { + "flake": false, + "locked": { + "lastModified": 1575189609, + "narHash": "sha256-oGzl1ayW9rIuq0haoiFS7RZsS8NFMdEA7K1BSozgnJU=", + "owner": "rgrinberg", + "repo": "evil-quick-diff", + "rev": "69c883720b30a892c63bc89f49d4f0e8b8028908", + "type": "github" + }, + "original": { + "owner": "rgrinberg", + "repo": "evil-quick-diff", + "type": "github" + } + }, + "explain-pause-mode": { + "flake": false, + "locked": { + "lastModified": 1595842060, + "narHash": "sha256-++znrjiDSx+cy4okFBBXUBkRFdtnE2x+trkmqjB3Njs=", + "owner": "lastquestion", + "repo": "explain-pause-mode", + "rev": "2356c8c3639cbeeb9751744dbe737267849b4b51", + "type": "github" + }, + "original": { + "owner": "lastquestion", + "repo": "explain-pause-mode", + "type": "github" + } + }, "flake-compat": { "flake": false, "locked": { - "lastModified": 1627913399, - "narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=", + "lastModified": 1650374568, + "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", "owner": "edolstra", "repo": "flake-compat", - "rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2", + "rev": "b4a34015c698c7793d592d66adbab377907a2be8", "type": "github" }, "original": { "owner": "edolstra", - "ref": "master", "repo": "flake-compat", "type": "github" } @@ -152,6 +280,23 @@ "type": "github" } }, + "format-all": { + "flake": false, + "locked": { + "lastModified": 1581716637, + "narHash": "sha256-ul7LCe60W8TIvUmUtZtZRo8489TK9iTPDsLHmzxY57M=", + "owner": "lassik", + "repo": "emacs-format-all-the-code", + "rev": "47d862d40a088ca089c92cd393c6dca4628f87d3", + "type": "github" + }, + "original": { + "owner": "lassik", + "repo": "emacs-format-all-the-code", + "rev": "47d862d40a088ca089c92cd393c6dca4628f87d3", + "type": "github" + } + }, "home-manager": { "inputs": { "nixpkgs": [ @@ -162,11 +307,11 @@ ] }, "locked": { - "lastModified": 1660505226, - "narHash": "sha256-Jl1w6X3qNfp0Y5PwRlz/tlhVa6Wzzceq1iScni3gb9s=", + "lastModified": 1660574517, + "narHash": "sha256-Lp5D2pAPrM3iAc1eeR0iGwz5rM+SYOWzVxI3p17nlrU=", "owner": "nix-community", "repo": "home-manager", - "rev": "ff5133843c26979f8abb5dd801b32f40287692fa", + "rev": "688e5c85b7537f308b82167c8eb4ecfb70a49861", "type": "github" }, "original": { @@ -176,6 +321,71 @@ "type": "github" } }, + "nix-doom-emacs": { + "inputs": { + "doom-emacs": "doom-emacs", + "doom-snippets": "doom-snippets", + "emacs-overlay": [ + "emacs-overlay" + ], + "emacs-so-long": "emacs-so-long", + "evil-escape": "evil-escape", + "evil-markdown": "evil-markdown", + "evil-org-mode": "evil-org-mode", + "evil-quick-diff": "evil-quick-diff", + "explain-pause-mode": "explain-pause-mode", + "flake-compat": "flake-compat", + "flake-utils": [ + "flake-utils" + ], + "format-all": "format-all", + "nix-straight": "nix-straight", + "nixpkgs": [ + "nixpkgs" + ], + "nose": "nose", + "ob-racket": "ob-racket", + "org": "org", + "org-contrib": "org-contrib", + "org-yt": "org-yt", + "php-extras": "php-extras", + "revealjs": "revealjs", + "rotate-text": "rotate-text", + "sln-mode": "sln-mode", + "ts-fold": "ts-fold", + "ws-butler": "ws-butler" + }, + "locked": { + "lastModified": 1660129951, + "narHash": "sha256-uY0fxCwUQ5LmfX2CoklqOebKl6GM96qir2Zv1cbHdQI=", + "owner": "nix-community", + "repo": "nix-doom-emacs", + "rev": "20ca56a17dc33d67ed7d61b0e84205c617394b5b", + "type": "github" + }, + "original": { + "owner": "nix-community", + "ref": "master", + "repo": "nix-doom-emacs", + "type": "github" + } + }, + "nix-straight": { + "flake": false, + "locked": { + "lastModified": 1656684255, + "narHash": "sha256-ZefQiv4Ipu2VkLjs1oyelTLU7kBVJgkcQd+yBpJU0yo=", + "owner": "nix-community", + "repo": "nix-straight.el", + "rev": "fb8dd5c44cde70abd13380766e40af7a63888942", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nix-straight.el", + "type": "github" + } + }, "nixos-hardware": { "locked": { "lastModified": 1660407119, @@ -194,11 +404,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1660524483, - "narHash": "sha256-Rb/AZ5FErbML2f6+XxJTo+BbDMVtiTVGWML4pOiwBSE=", + "lastModified": 1660551188, + "narHash": "sha256-a1LARMMYQ8DPx1BgoI/UN4bXe12hhZkCNqdxNi6uS0g=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "680f04a9930fa0b9572abda5a9429cb2b1c77655", + "rev": "441dc5d512153039f19ef198e662e4f3dbb9fd65", "type": "github" }, "original": { @@ -210,11 +420,11 @@ }, "nixpkgs-master": { "locked": { - "lastModified": 1660546381, - "narHash": "sha256-rEzCjeWVGhK5AyHxm1zet0lF6+AVSW3JuU5LAU2SMYU=", + "lastModified": 1660604230, + "narHash": "sha256-TqiA8OkurjHr+ulXwcIvZHQsv9Qs+r25Po69ptjQ8Mk=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "eb642f80f9aecc19312909e08601a3c2020b5ce2", + "rev": "8138a92a2af2b5071e8d2b8e5e066dd4f7c10dbf", "type": "github" }, "original": { @@ -226,11 +436,11 @@ }, "nixpkgs-stable": { "locked": { - "lastModified": 1660525516, - "narHash": "sha256-oklU9Q6YoooEAibAzjewb6ijW9cHVwsi45RwwhIE9LY=", + "lastModified": 1660600974, + "narHash": "sha256-Oaba9SQmoIPbEehbX/TMV2eCJlwyXFuX8Xi6tsx1nuU=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "cfabaa15e98b54dc0e9bacbecb19ee850fdba240", + "rev": "50b6709b401f0bfa7e8fadd50c14a8c63c319156", "type": "github" }, "original": { @@ -274,13 +484,29 @@ "type": "github" } }, + "nose": { + "flake": false, + "locked": { + "lastModified": 1400604510, + "narHash": "sha256-daEi8Kta1oGaDEmUUDDQMahTTPOpvNpDKk22rlr7cB0=", + "owner": "emacsattic", + "repo": "nose", + "rev": "f8528297519eba911696c4e68fa88892de9a7b72", + "type": "github" + }, + "original": { + "owner": "emacsattic", + "repo": "nose", + "type": "github" + } + }, "nur": { "locked": { - "lastModified": 1660549024, - "narHash": "sha256-4N3bQuvigu6S1VixOya0YNjX/pEQ38oZ4M0ky2NVolA=", + "lastModified": 1660587989, + "narHash": "sha256-ednhBmap0xROu9m6KxrclF1YWZuiXC2syUREsv/kKZk=", "owner": "nix-community", "repo": "NUR", - "rev": "cd96964dbf39599a9a4106b84f8db05a848ac5ae", + "rev": "0207414d63f3a319587f957eda2bd6ec4e9951a2", "type": "github" }, "original": { @@ -290,6 +516,86 @@ "type": "github" } }, + "ob-racket": { + "flake": false, + "locked": { + "lastModified": 1584656173, + "narHash": "sha256-rBUYDDCXb+3D4xTPQo9UocbTPZ32kWV1Uya/1DmZknU=", + "owner": "xchrishawk", + "repo": "ob-racket", + "rev": "83457ec9e1e96a29fd2086ed19432b9d75787673", + "type": "github" + }, + "original": { + "owner": "xchrishawk", + "repo": "ob-racket", + "type": "github" + } + }, + "org": { + "flake": false, + "locked": { + "lastModified": 1659533964, + "narHash": "sha256-ipwJjcRzY9iqEjkG4m8EXZ6+8OMdANuXRnSwct2LByQ=", + "owner": "emacs-straight", + "repo": "org-mode", + "rev": "4702a73031c77ba03b480b0848c137d5d8773e07", + "type": "github" + }, + "original": { + "owner": "emacs-straight", + "repo": "org-mode", + "type": "github" + } + }, + "org-contrib": { + "flake": false, + "locked": { + "lastModified": 1659039737, + "narHash": "sha256-ig8pVl790DopN6ZrCTIrvojt5/0Y+aOsjE87pqIVz8M=", + "owner": "emacsmirror", + "repo": "org-contrib", + "rev": "39e2abc5629c1be6186bb6489ec4f76524edf82a", + "type": "github" + }, + "original": { + "owner": "emacsmirror", + "repo": "org-contrib", + "type": "github" + } + }, + "org-yt": { + "flake": false, + "locked": { + "lastModified": 1527381913, + "narHash": "sha256-dzQ6B7ryzatHCTLyEnRSbWO0VUiX/FHYnpHTs74aVUs=", + "owner": "TobiasZawada", + "repo": "org-yt", + "rev": "40cc1ac76d741055cbefa13860d9f070a7ade001", + "type": "github" + }, + "original": { + "owner": "TobiasZawada", + "repo": "org-yt", + "type": "github" + } + }, + "php-extras": { + "flake": false, + "locked": { + "lastModified": 1573312690, + "narHash": "sha256-r4WyVbzvT0ra4Z6JywNBOw5RxOEYd6Qe2IpebHXkj1U=", + "owner": "arnested", + "repo": "php-extras", + "rev": "d410c5af663c30c01d461ac476d1cbfbacb49367", + "type": "github" + }, + "original": { + "owner": "arnested", + "repo": "php-extras", + "type": "github" + } + }, "pre-commit-hooks": { "inputs": { "flake-utils": [ @@ -314,6 +620,22 @@ "type": "github" } }, + "revealjs": { + "flake": false, + "locked": { + "lastModified": 1653993278, + "narHash": "sha256-X43lsjoLBWmttIKj9Jzut0UP0dZlsue3fYbJ3++ojbU=", + "owner": "hakimel", + "repo": "reveal.js", + "rev": "039972c730690af7a83a5cb832056a7cc8b565d7", + "type": "github" + }, + "original": { + "owner": "hakimel", + "repo": "reveal.js", + "type": "github" + } + }, "root": { "inputs": { "agenix": "agenix", @@ -323,6 +645,7 @@ "flake-registry": "flake-registry", "flake-utils": "flake-utils", "home-manager": "home-manager", + "nix-doom-emacs": "nix-doom-emacs", "nixos-hardware": "nixos-hardware", "nixpkgs": "nixpkgs", "nixpkgs-master": "nixpkgs-master", @@ -335,6 +658,22 @@ "xmonad-ng": "xmonad-ng" } }, + "rotate-text": { + "flake": false, + "locked": { + "lastModified": 1322962747, + "narHash": "sha256-SOeOgSlcEIsKhUiYDJv0p+mLUb420s9E2BmvZQvZ0wk=", + "owner": "debug-ito", + "repo": "rotate-text.el", + "rev": "48f193697db996855aee1ad2bc99b38c6646fe76", + "type": "github" + }, + "original": { + "owner": "debug-ito", + "repo": "rotate-text.el", + "type": "github" + } + }, "simple-nixos-mailserver": { "inputs": { "blobs": "blobs", @@ -363,25 +702,69 @@ "type": "gitlab" } }, + "sln-mode": { + "flake": false, + "locked": { + "lastModified": 1423727528, + "narHash": "sha256-XqkqPyEJuTtFslOz1fpTf/Klbd/zA7IGpzpmum/MGao=", + "owner": "sensorflo", + "repo": "sln-mode", + "rev": "0f91d1b957c7d2a7bab9278ec57b54d57f1dbd9c", + "type": "github" + }, + "original": { + "owner": "sensorflo", + "repo": "sln-mode", + "type": "github" + } + }, + "ts-fold": { + "flake": false, + "locked": { + "lastModified": 1659171920, + "narHash": "sha256-/yY3Ph/BE3PFZhnBIQIHkwOW/43phSI7WeoMvU83TG4=", + "owner": "jcs-elpa", + "repo": "ts-fold", + "rev": "17d131f69a717d7e8cc6d3af9dfa7d2b5e2b78ef", + "type": "github" + }, + "original": { + "owner": "jcs-elpa", + "repo": "ts-fold", + "type": "github" + } + }, + "ws-butler": { + "flake": false, + "locked": { + "lastModified": 1634511126, + "narHash": "sha256-c0y0ZPtxxICPk+eaNbbQf6t+FRCliNY54CCz9QHQ8ZI=", + "owner": "hlissner", + "repo": "ws-butler", + "rev": "572a10c11b6cb88293de48acbb59a059d36f9ba5", + "type": "github" + }, + "original": { + "owner": "hlissner", + "repo": "ws-butler", + "type": "github" + } + }, "xmonad-ng": { "inputs": { - "flake-compat": "flake-compat", "flake-utils": [ "flake-utils" ], "nixpkgs": [ "nixpkgs" - ], - "pre-commit-hooks": [ - "pre-commit-hooks" ] }, "locked": { - "lastModified": 1644967454, - "narHash": "sha256-LYdzh5e5nITWbW7lFb9r5xva5k5YQ9rcFIsORgV7zZE=", + "lastModified": 1660604184, + "narHash": "sha256-iZLY0PNsscaAgHQOY/iuV9yFIHdkEVF1m9mHfN0lT/c=", "owner": "azahi", "repo": "xmonad-ng", - "rev": "0a150971e7cc05f518e290ad6d4d21b9311e6147", + "rev": "ba163659c9652efe46dd22cb4ad38e8a99adaf7c", "type": "gitlab" }, "original": { diff --git a/flake.nix b/flake.nix index 5893e49..4db413f 100644 --- a/flake.nix +++ b/flake.nix @@ -63,6 +63,18 @@ }; }; + nix-doom-emacs = { + type = "github"; + owner = "nix-community"; + repo = "nix-doom-emacs"; + ref = "master"; + inputs = { + flake-utils.follows = "flake-utils"; + emacs-overlay.follows = "emacs-overlay"; + nixpkgs.follows = "nixpkgs"; + }; + }; + dns-nix = { type = "github"; owner = "kirelagin"; @@ -141,7 +153,6 @@ inputs = { flake-utils.follows = "flake-utils"; nixpkgs.follows = "nixpkgs"; - pre-commit-hooks.follows = "pre-commit-hooks"; }; }; diff --git a/modules/nixfiles/default.nix b/modules/nixfiles/default.nix index 8d26e7f..8632833 100644 --- a/modules/nixfiles/default.nix +++ b/modules/nixfiles/default.nix @@ -15,7 +15,7 @@ ./direnv.nix ./docker.nix ./dwm.nix - ./emacs.nix + ./emacs ./endlessh-go.nix ./endlessh.nix ./fail2ban.nix diff --git a/modules/nixfiles/emacs.nix b/modules/nixfiles/emacs.nix deleted file mode 100644 index 230b965..0000000 --- a/modules/nixfiles/emacs.nix +++ /dev/null @@ -1,69 +0,0 @@ -{ - config, - lib, - pkgs, - ... -}: -with lib; let - cfg = config.nixfiles.modules.emacs; -in { - options.nixfiles.modules.emacs.enable = - mkEnableOption "Whether to enable the GNU Emacs."; - - # TODO Nixify. - config = mkIf cfg.enable { - hm = { - home = { - packages = with pkgs; [ - cmigemo # :lang japanese - gcc # :lang (org +roam2) - gnuplot # :lang (org +gnuplot) - gnutls # :app irc - graphviz # :lang (org +roam2) - grip # :lang (markdown +grip) - maim # :lang (org +dragndrop) - pandoc # :lang org markdown latex - plantuml # :lang plantuml - pre-commit # :tools magit - sqlite # :lang (org +roam2) - texlive.combined.scheme-full # :lang org tex - xclip # :os (tty +osc) - ]; - - activation = { - symlinkMigemoFiles = '' - target="${config.dirs.data}/migemo" - [[ -L "$target" ]] && rm "$target" - ln -s ${pkgs.cmigemo}/share/migemo "$target" - ''; - symlinkSkkFiles = '' - target="${config.dirs.data}/skk" - [[ -L "$target" ]] && rm "$target" - ln -s ${pkgs.skk-dicts}/share "$target" - ''; - symlinkPlantumlFiles = '' - target="${config.dirs.data}/plantuml" - [[ -L "$target" ]] && rm "$target" - ln -s ${pkgs.plantuml}/lib "$target" - ''; - }; - }; - - programs.emacs = { - enable = true; - package = pkgs.emacs28.override {nativeComp = true;}; - extraPackages = p: - with p; [ - vterm # :term vterm - ]; - }; - - services.emacs = { - enable = true; - client.enable = true; - }; - }; - - fonts.fonts = with pkgs; [emacs-all-the-icons-fonts]; - }; -} diff --git a/modules/nixfiles/emacs/default.nix b/modules/nixfiles/emacs/default.nix new file mode 100644 index 0000000..3ebab5f --- /dev/null +++ b/modules/nixfiles/emacs/default.nix @@ -0,0 +1,81 @@ +{ + config, + inputs, + lib, + pkgs, + ... +}: +with lib; let + cfg = config.nixfiles.modules.emacs; +in { + options.nixfiles.modules.emacs.enable = + mkEnableOption "Whether to enable the GNU Emacs."; + + # TODO Nixify. + config = mkIf cfg.enable { + hm = { + imports = [ + inputs.nix-doom-emacs.hmModule + ]; + + home = { + packages = with pkgs; [ + cmigemo # :lang japanese + gcc # :lang (org +roam2) + gnuplot # :lang (org +gnuplot) + gnutls # :app irc + graphviz # :lang (org +roam2) + grip # :lang (markdown +grip) + maim # :lang (org +dragndrop) + pandoc # :lang org markdown latex + plantuml # :lang plantuml + pre-commit # :tools magit + sqlite # :lang (org +roam2) + texlive.combined.scheme-full # :lang org tex + xclip # :os (tty +osc) + ]; + + activation = { + symlinkMigemoFiles = '' + target="${config.dirs.data}/migemo" + [[ -L "$target" ]] && rm "$target" + ln -s ${pkgs.cmigemo}/share/migemo "$target" + ''; + symlinkSkkFiles = '' + target="${config.dirs.data}/skk" + [[ -L "$target" ]] && rm "$target" + ln -s ${pkgs.skk-dicts}/share "$target" + ''; + symlinkPlantumlFiles = '' + target="${config.dirs.data}/plantuml" + [[ -L "$target" ]] && rm "$target" + ln -s ${pkgs.plantuml}/lib "$target" + ''; + }; + }; + + programs = { + emacs = { + enable = true; + # extraPackages = p: + # with p; [ + # vterm # :term vterm + # ]; + }; + + doom-emacs = { + enable = true; + doomPrivateDir = ./doom; + emacsPackage = pkgs.emacs28.override {nativeComp = true;}; + }; + }; + + services.emacs = { + enable = true; + client.enable = true; + }; + }; + + fonts.fonts = with pkgs; [emacs-all-the-icons-fonts]; + }; +} diff --git a/modules/nixfiles/emacs/doom/config.el b/modules/nixfiles/emacs/doom/config.el new file mode 100644 index 0000000..d641e2d --- /dev/null +++ b/modules/nixfiles/emacs/doom/config.el @@ -0,0 +1,183 @@ +;;; config.el -*- lexical-binding: t; -*- + +(setq user-full-name "Azat Bahawi" + user-mail-address "frodo@gondor.net") + +(setq doom-theme 'doom-tomorrow-night) + +(setq doom-font (font-spec + :family "Iosevka" + :size 18)) + +(setq frame-title-format '("Emacs") + icon-title-format frame-title-format) + +(setq org-directory "~/doc/org/" + org-roam-directory "~/doc/roam/" + org-roam-db-location (concat org-roam-directory ".db")) +(setq deft-directory org-directory + deft-default-extension "org") + +(use-package! websocket + :after org-roam) + +(use-package! org-roam-ui + :after org-roam + :config + (setq org-roam-ui-sync-theme t + org-roam-ui-follow t + org-roam-ui-update-on-save t + org-roam-ui-open-on-start t)) + +(setq org-plantuml-jar-path "~/.local/share/plantuml/plantuml.jar") + +(setq migemo-dictionary "~/.local/share/migemo/utf-8/migemo-dict") + +(setq skk-large-jisyo "~/.local/share/skk/SKK-JISYO.L") + +(setq lsp-haskell-formatting-provider "brittany") + +(after! lsp-mode + (add-to-list 'lsp-language-id-configuration '(nix-mode . "nix")) + (lsp-register-client + (make-lsp-client :new-connection (lsp-stdio-connection '("rnix-lsp")) + :major-modes '(nix-mode) + :server-id 'nix)) + (add-hook 'nix-mode-hook #'lsp!)) + +(setq-hook! 'yaml-mode-hook +format-with-lsp nil) + +(setq +format-on-save-enabled-modes + '(not yaml-mode nix-mode)) + +(add-hook 'org-mode-hook + (lambda (&rest _) + (setq fill-column 80))) +(add-hook 'org-mode-hook 'auto-fill-mode) + +(add-hook 'org-mode-hook + (lambda (&rest _) + (electric-indent-local-mode -1))) + +;; TODO This directory will be synced with Syncthing to persist database across +;; all machies. This is an attempt to mimic the guide from the link below +;; http://babbagefiles.blogspot.com/2017/03/take-elfeed-everywhere-mobile-rss.html +(setq elfeed-db-directory "~/.elfeed" + elfeed-enclosure-default-dir (concat elfeed-db-directory "/enclosures") + rmh-elfeed-org-files (list (concat elfeed-db-directory "/index.org")) + elfeed-goodies/powerline-default-separator nil + elfeed-goodies/entry-pane-size 0.75 + elfeed-goodies/entry-pane-position 'bottom) + +(setq display-line-numbers-type t) + +(when (eq initial-window-system 'x) + (toggle-frame-maximized) + (toggle-frame-fullscreen)) + +(setq browse-url-generic-program (executable-find "firefox") + browse-url-browser-function 'browse-url-generic) + +(setq mu4e-root-maildir "~/mail" + mu4e-context-policy 'ask-if-none + mu4e-compose-context-policy 'always-ask + mu4e-compose--org-msg-toggle-next nil + sendmail-program (executable-find "msmtp") + send-mail-function #'smtpmail-send-it + message-sendmail-f-is-evil t + message-sendmail-extra-arguments '("--read-envelope-from") + message-send-mail-function #'message-send-mail-with-sendmail + +mu4e-personal-addresses (list "frodo@gondor.net" + "frodo@rohan.net" + "azahi@shire.me" + "a.gondor@yahoo.com" + "a.gondor@yahoo.com")) + + +(set-email-account! "shire" + '( + (mu4e-drafts-folder . "/shire/Drafts") + (mu4e-refile-folder . "/shire/Archive") + (mu4e-sent-folder . "/shire/Sent") + (mu4e-trash-folder . "/shire/Trash") + (smtpmail-smtp-user . "azahi")) + t) + +(set-email-account! "yahoo" + '( + (mu4e-sent-folder . "/yahoo/Sent") + (mu4e-drafts-folder . "/yahoo/Drafts") + (mu4e-trash-folder . "/yahoo/Trash") + (mu4e-refile-folder . "/yahoo/Archive") + (smtpmail-smtp-user . "a.gondor")) + t) + +(setq circe-default-nick "azahi" + circe-default-realname "frodo@gondor.net" + circe-default-user circe-default-nick) + +(set-irc-server! "libera" + `( + :host "shire.me" + :port 6667 + :user "azahi/libera" + :pass (lambda (&rest _) + (+pass-get-secret "server/soju.manwe.shire.me/azahi")))) + +(set-irc-server! "oftc" + `( + :host "shire.me" + :port 6667 + :user "azahi/oftc" + :pass (lambda (&rest _) + (+pass-get-secret "server/soju.manwe.shire.me/azahi")))) + +(set-irc-server! "rizon" + `( + :host "shire.me" + :port 6667 + :user "azahi/rizon" + :pass (lambda (&rest _) + (+pass-get-secret "server/soju.manwe.shire.me/azahi")))) + +(use-package! hledger-mode + :mode ("\\.journal\\'") + :hook ((hledger-view-mode . hl-line-mode) + (hledger-view-mode . center-text-for-reading)) + :init + (setq hledger-jfile "~/doc/accounting/current.journal") + :config + (set-company-backend! 'hledger-mode + 'hledger-company) + + (add-hook 'hledger-mode-hook + (lambda (&rest _) + (make-local-variable 'company-backends) + (add-to-list 'company-backends 'hledger-company)))) + +(use-package! hledger-input + :hook ((hledger-input-post-commit . hledger-show-new-balances) + (hledger-input-mode . auto-fill-mode) + (hledger-input-mode . (lambda (&rest _) + (make-local-variable 'compay-idle-delay) + (setq-local company-idle-delay 0.1)))) + :init + (setq hledger-input-buffer-height 20)) + +(use-package! kubernetes + :defer t + :commands (kubernetes-overview) + :init (setq kubernetes-poll-frequency 3600 + kubernetes-redraw-frequency 3600)) + +(use-package! kubernetes-evil + :after kubernetes-overview) + +(use-package! kubernetes-tramp + :defer t) + +(use-package! elpher + :init (setq elpher-default-url-type "gemini")) + +(provide 'config) +;;; config.el ends here diff --git a/modules/nixfiles/emacs/doom/custom.el b/modules/nixfiles/emacs/doom/custom.el new file mode 100644 index 0000000..e69de29 diff --git a/modules/nixfiles/emacs/doom/init.el b/modules/nixfiles/emacs/doom/init.el new file mode 100644 index 0000000..486010a --- /dev/null +++ b/modules/nixfiles/emacs/doom/init.el @@ -0,0 +1,134 @@ +;;; init.el -*- lexical-binding: t; -*- + +(doom! + :input + japanese + + :completion + company + vertico + + :ui + deft + doom + ;; doom-dashboard + ;; doom-quit + ;; (emoji +unicode) + hl-todo + hydra + indent-guides + ;; ligatures + ;; (modeline +light) + nav-flash + ophints + (popup +defaults) + ;; tabs + ;; treemacs + unicode + vc-gutter + vi-tilde-fringe + window-select + workspaces + zen + + :editor + (evil +everywhere) + file-templates + fold + (format +onsave) + lispy + multiple-cursors + (objed +manual) + parinfer + rotate-text + snippets + word-wrap + + :emacs + dired + electric + ibuffer + (undo +tree) + vc + + :term + eshell + vterm + + :checkers + syntax + (spell +flyspell) + grammar + + :tools + ansible + debugger + direnv + (docker +lsp) + editorconfig + (eval +overlay) + (lookup +dictionary +offline) + (lsp +peek) + magit + make + (pass +auth) + pdf + ;; rgb + ;; taskrunner + terraform + tmux + upload + + :os + (tty +osc) + + :lang + (cc +lsp) + common-lisp + ;; (csharp +lsp) + data + dhall + emacs-lisp + (go +lsp) + (haskell +lsp) + ;; (java +lsp) + ;; (javascript +lsp) + (json +lsp) + (latex +lsp) + ;; (lua +lsp) + markdown + nix + (org + +brain + +dragndrop + +gnuplot + +hugo + +journal + +noter + +pandoc + +pomodoro + +present + +roam2) + plantuml + ;; (php +lsp) + (python +lsp) + (racket +lsp) + ;; (rust +lsp) + (scheme +racket) + (sh +lsp) + web + (yaml +lsp) + (zig +lsp) + + :email + mu4e + + :app + calendar + emms + everywhere + irc + (rss +org) + + :config + (default +bindings +smartparens)) diff --git a/modules/nixfiles/emacs/doom/packages.el b/modules/nixfiles/emacs/doom/packages.el new file mode 100644 index 0000000..72c3945 --- /dev/null +++ b/modules/nixfiles/emacs/doom/packages.el @@ -0,0 +1,23 @@ +;;; packages.el -*- no-byte-compile: t; -*- + +(package! hledger-mode) + +(package! kubernetes) +(package! kubernetes-evil) +(package! kubernetes-tramp) + +(package! elpher) + +(unpin! org-roam) +(package! org-roam + :recipe (:host github + :repo "org-roam/org-roam" + :branch "main" + :files (:defaults "extensions/*"))) +(package! org-roam-ui + :recipe (:host github + :repo "org-roam/org-roam-ui" + :branch "main" + :files ("*.el" "out"))) + +(package! modus-themes) -- cgit v1.2.3