aboutsummaryrefslogtreecommitdiff
path: root/packages
diff options
context:
space:
mode:
authorKenny Ballou <kb@devnulllabs.io>2021-08-26 23:15:14 -0600
committerKenny Ballou <kb@devnulllabs.io>2021-09-03 17:50:01 -0600
commitd8758760e5b5d50587ed21e2be29ab073eb1413b (patch)
treef061c178708e27a4fd61f4ffdecb7b80959ddea9 /packages
parent37da48b9d31633275e9c095f9a6572c5908d9062 (diff)
downloaddotfiles-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.nix36
-rw-r--r--packages/emacs/default.nix19
-rw-r--r--packages/emacs/packages.nix269
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
+ ]);
+}