diff options
author | Kenny Ballou <kb@devnulllabs.io> | 2021-08-26 23:15:14 -0600 |
---|---|---|
committer | Kenny Ballou <kb@devnulllabs.io> | 2021-09-03 17:50:01 -0600 |
commit | d8758760e5b5d50587ed21e2be29ab073eb1413b (patch) | |
tree | f061c178708e27a4fd61f4ffdecb7b80959ddea9 /packages | |
parent | 37da48b9d31633275e9c095f9a6572c5908d9062 (diff) | |
download | dotfiles-d8758760e5b5d50587ed21e2be29ab073eb1413b.tar.gz dotfiles-d8758760e5b5d50587ed21e2be29ab073eb1413b.tar.xz |
move emacs overlay into package definition
Instead of creating an overlay for emacs and installing the overlay
package, create a package definition and use home-manager
`programs.emacs` to install into system environment.
Signed-off-by: Kenny Ballou <kb@devnulllabs.io>
Diffstat (limited to 'packages')
-rw-r--r-- | packages/emacs/builders/elisp.nix | 36 | ||||
-rw-r--r-- | packages/emacs/default.nix | 19 | ||||
-rw-r--r-- | packages/emacs/packages.nix | 269 |
3 files changed, 324 insertions, 0 deletions
diff --git a/packages/emacs/builders/elisp.nix b/packages/emacs/builders/elisp.nix new file mode 100644 index 00000000..90adea0f --- /dev/null +++ b/packages/emacs/builders/elisp.nix @@ -0,0 +1,36 @@ +# https://github.com/jwiegley/nix-config/blob/ba43753/overlays/emacs/builder.nix +{ stdenv +, pkgs +, emacs +, name +, src +, buildInputs ? [] +, patches ? [] +, preBuild ? "" +}: + +stdenv.mkDerivation { + inherit name src patches; + unpackCmd = '' + test -f "${src}" && mkdir el && cp -p ${src} el/${name} + ''; + buildInputs = [ emacs ] ++ buildInputs; + buildPhase = '' + ${preBuild} + ARGS=$(find ${pkgs.lib.concatStrings + (builtins.map (arg: arg + "/share/emacs/site-lisp ") buildInputs)} \ + -type d -exec echo -L {} \;) + mkdir $out + export HOME=$out + ${emacs}/bin/emacs -Q -nw -L . --batch -f batch-byte-compile *.el + ''; + installPhase = '' + mkdir -p $out/share/emacs/site-lisp + install *.el* $out/share/emacs/site-lisp + ''; + meta = { + description = "Emacs projects from the Internet that just compile `.el` files"; + homepage = http://www.emacswiki.org; + platforms = pkgs.lib.platforms.all; + }; +} diff --git a/packages/emacs/default.nix b/packages/emacs/default.nix new file mode 100644 index 00000000..d10370a7 --- /dev/null +++ b/packages/emacs/default.nix @@ -0,0 +1,19 @@ +{ pkgs ? import <nixpkgs> { }, ... }: +let + utils = import ../../nix/utils.nix { pkgs = pkgs; }; + gtk3-emacs = (pkgs.emacs.override { + withGTK3 = true; + withGTK2 = false; + }); + lucid-emacs = (pkgs.emacs.override { + # enable lucid + withGTK3 = false; + withGTK2 = false; + }); + ePackages = pkgs.callPackage ./packages.nix { }; + emacsWithPackages = emacs: + (pkgs.emacsPackagesFor emacs).emacsWithPackages + (ePackages.emacs-package-list pkgs.emacsPackages); + +in + emacsWithPackages gtk3-emacs diff --git a/packages/emacs/packages.nix b/packages/emacs/packages.nix new file mode 100644 index 00000000..513ad5f2 --- /dev/null +++ b/packages/emacs/packages.nix @@ -0,0 +1,269 @@ +# https://github.com/jwiegley/nix-config/blob/master/overlays/10-emacs.nix +{ pkgs, ... }: +let + inherit (pkgs) fetchurl fetchgit fetchFromGitHub stdenv; + + withPatches = pkg: patches: + pkg.OverrideAttrs(attrs: { inherit patches; }); + compileElispFiles = pkgs.callPackage ./builders/elisp.nix; + fetchFromEmacsWiki = pkgs.callPackage ({ fetchurl, name, sha256 }: + fetchurl { + inherit sha256; + url = "https://www.emacswiki.org/emacs/download/" + name; + }); + compileEmacsWikiFile = { name, sha256, buildInputs ? [], patches ? [] }: + compileElispFiles { + inherit name buildInputs patches; + src = fetchFromEmacsWiki { inherit name sha256; }; + }; +in rec { + ascii = compileEmacsWikiFile { + name = "ascii.el"; + sha256 = "1ijpnk334fbah94vm7dkcd2w4zcb0l7yn4nr9rwgpr2l25llnr0f"; + }; + hexrgb = compileEmacsWikiFile { + name = "hexrgb.el"; + sha256 = "18hb8brf7x92aidjfgczxangri6rkqq4x5d06lh41193f97rslm8"; + }; + + palette = compileEmacsWikiFile { + name = "palette.el"; + sha256 = "149y6bmn0njgq632m9zdnaaw7wrvxvfqndpqlgcizn6dwzixiih6"; + buildInputs = [ hexrgb ]; + }; + + awqat = compileElispFiles { + name = "awqat.el"; + src = fetchFromGitHub { + owner = "waqtalsalah"; + repo = "awqat"; + rev = "09106d79f50a1b8fbb0cbc017da0714a7c4ce3b3"; + sha256 = "1my82b2yzirzmphv25cyk0yldvg0fxaa43vrpxg7x6ldn7npvfvj"; + }; + }; + + emacs-package-list = (epkgs: (with epkgs.melpaPackages; [ + all-the-icons + all-the-icons-dired + all-the-icons-gnus + all-the-icons-ibuffer + add-node-modules-path + adoc-mode + ag + alchemist + anaconda-mode + anti-zenburn-theme + anzu + auctex-latexmk + autodisass-java-bytecode + avy + bash-completion + bind-key + bnf-mode + browse-kill-ring + buffer-move + bundler + cider + cljsbuild-mode + clojure-mode + coffee-mode + company + counsel + counsel-projectile + counsel-tramp + coverlay + css-eldoc + csv + d-mode + dap-mode + define-word + diff-hl + diminish + direnv + disable-mouse + docker + docker-compose-mode + docker-tramp + dockerfile-mode + doom-themes + editorconfig + edts + ein + elein + elfeed + elfeed-org + elixir-mode + elm-mode + erlang + ess + exec-path-from-shell + expand-region + f + flycheck + flycheck-clojure + flycheck-color-mode-line + flycheck-credo + flycheck-elixir + flycheck-elm + flycheck-haskell + flycheck-ledger + flycheck-ocaml + flycheck-popup-tip + flycheck-pos-tip + flycheck-posframe + flycheck-rust + flycheck-vale + fold-dwim + forge + fullframe + geben + geben-helm-projectile + geiser + git-auto-commit-mode + git-commit + git-timemachine + gitconfig-mode + gitignore-mode + go-autocomplete + go-eldoc + go-mode + go-stacktracer + #goto-gem + gnuplot + graphviz-dot-mode + guix + gxref + haml-mode + haskell-mode + helm + helm-bbdb + helm-bibtex + helm-descbinds + helm-flycheck + helm-flyspell + helm-gtags + helm-lsp + helm-mu + helm-pass + helm-projectile + helm-rg + helm-sql-connect + helm-tramp + helm-wordnet + helm-xref + highlight-escape-sequences + #hindent + htmlize + hydra + ibuffer-vc + import-js + inf-ruby + ivy + jedi + js-comint + js2-mode + json-mode + ledger-mode + less-css-mode + list-unicode-display + lsp-haskell + lsp-mode + lsp-java + lsp-ui + lua-mode + magit + markdown-mode + mbsync + mmm-mode + modus-themes + mpdel + multiple-cursors + mwim + nix-buffer + nix-mode + nix-update + ob-elixir + ob-go + ob-ipython + ob-mongo + olivetti + org-babel-eval-in-repl + org-cliplink + org-gcal + org-pomodoro + org-projectile + org-ref + org-sync + ox-gfm + page-break-lines + pass + pcmpl-args + pcmpl-git + pcmpl-pip + pcomplete-extension + pdf-tools + peep-dired + php-mode + pip-requirements + polymode + projectile + racer + rainbow-delimiters + realgud + realgud-jdb + regex-tool + robe + rspec-mode + ruby-compilation + ruby-hash-syntax + rust-mode + sass-mode + scss-mode + session + skewer-less + skewer-mode + smartparens + smex + smooth-scrolling + solarized-theme + spacemacs-theme + spaceline + swiper + swiper-helm + switch-window + tagedit + toml-mode + treemacs + treemacs-all-the-icons + tuareg + typescript-mode + unfill + unicode-fonts + unicode-whitespace + use-package + virtualenvwrapper + wgrep-ag + which-key + whitespace-cleanup-mode + whole-line-or-region + with-editor + xref-js2 + yari + yasnippet + z3-mode + zeal-at-point + zenburn-theme + ]) ++ (with epkgs.elpaPackages; [ + auctex + pinentry + python + rainbow-mode + spinner + undo-tree + ]) ++ (with epkgs.melpaStablePackages; [ + ]) ++ [ + awqat + ascii + hexrgb + ]); +} |