9e0fdd3973
I'm not sure if this commit breaks everything in my monorepo. I think it will. Why am I doing this? Perhaps it's a bad idea. I don't fully understand how readTree works. My ignorance is costing me hours of time spent debugging. In an effort to better understand readTree, I'm removing the default values for my Nix expression parameters, which I believe have preventing errors from surfacing.
167 lines
4 KiB
Nix
167 lines
4 KiB
Nix
{ pkgs, depot, ... }:
|
|
|
|
let
|
|
utils = import <briefcase/utils>;
|
|
# NOTE: I'm trying to keep the list of dependencies herein constrained to a
|
|
# list of generic dependencies (i.e. not project or language specific). For
|
|
# language-specific tooling, I'm intending to use shell.nix alongside lorri
|
|
# and direnv.
|
|
emacsBinPath = pkgs.lib.strings.makeBinPath (with pkgs; [
|
|
lorri
|
|
direnv
|
|
tdesktop # native telegram client
|
|
diskus
|
|
bat
|
|
exa
|
|
fd
|
|
fzf
|
|
tldr
|
|
tokei
|
|
nmap
|
|
ripgrep
|
|
gitAndTools.hub
|
|
kubectl
|
|
google-cloud-sdk
|
|
xsv
|
|
scrot
|
|
clipmenu
|
|
]);
|
|
emacsWithPackages = (pkgs.emacsPackagesNgGen pkgs.emacs26).emacsWithPackages;
|
|
wpcarrosEmacs = emacsWithPackages (epkgs:
|
|
(with epkgs.elpaPackages; [
|
|
exwm
|
|
]) ++
|
|
|
|
(with epkgs.melpaPackages; [
|
|
ts
|
|
vterm
|
|
base16-theme
|
|
ivy-pass
|
|
clipmon # TODO: Prefer an Emacs client for clipmenud.
|
|
protobuf-mode # TODO: Determine if this is coming from google-emacs.
|
|
# docker
|
|
evil
|
|
evil-collection
|
|
evil-magit
|
|
evil-commentary
|
|
evil-surround
|
|
key-chord
|
|
add-node-modules-path # TODO: Assess whether or not I need this with Nix.
|
|
web-mode
|
|
rjsx-mode
|
|
tide
|
|
prettier-js
|
|
flycheck
|
|
diminish
|
|
doom-themes
|
|
neotree # TODO: Remove this dependency from my config.
|
|
which-key
|
|
ivy
|
|
restclient
|
|
package-lint
|
|
parsec
|
|
magit-popup
|
|
direnv
|
|
emr
|
|
ivy-prescient
|
|
all-the-icons
|
|
all-the-icons-ivy
|
|
alert
|
|
nix-mode
|
|
racer
|
|
rust-mode
|
|
rainbow-delimiters
|
|
racket-mode
|
|
lispyville
|
|
elisp-slime-nav
|
|
py-yapf
|
|
reason-mode
|
|
elixir-mode
|
|
go-mode
|
|
company
|
|
markdown-mode
|
|
refine
|
|
deferred
|
|
magit
|
|
request
|
|
pcre2el
|
|
helpful
|
|
exec-path-from-shell # TODO: Determine if Nix solves this problem.
|
|
yasnippet
|
|
projectile
|
|
deadgrep
|
|
counsel
|
|
counsel-projectile
|
|
engine-mode # TODO: Learn what this is.
|
|
eglot
|
|
dap-mode
|
|
lsp-ui
|
|
company-lsp
|
|
suggest
|
|
paradox
|
|
# emr
|
|
flymake-shellcheck
|
|
fish-mode
|
|
tuareg
|
|
haskell-mode
|
|
lsp-haskell
|
|
use-package
|
|
general
|
|
clojure-mode
|
|
cider
|
|
f
|
|
dash
|
|
company
|
|
counsel
|
|
flycheck
|
|
ivy
|
|
magit
|
|
]) ++
|
|
|
|
(with depot.tools.emacs-pkgs; [
|
|
dottime
|
|
]));
|
|
|
|
# TODO: Do I need `pkgs.lib.fix`?
|
|
in pkgs.lib.fix(self: l: f: pkgs.writeShellScriptBin "wpcarros-emacs" ''
|
|
# TODO: Is this the best way to handle environment variables using Nix?
|
|
export BRIEFCASE=$HOME/briefcase
|
|
export DEPOT=$HOME/depot
|
|
|
|
export PATH="${emacsBinPath}:$PATH"
|
|
exec ${wpcarrosEmacs}/bin/emacs \
|
|
--debug-init \
|
|
--no-site-file \
|
|
--no-site-lisp \
|
|
--directory ${ ./.emacs.d/vendor } \
|
|
--directory ${ ./.emacs.d/wpc } \
|
|
--load ${ ./.emacs.d/wpc/wpc-package.el } \
|
|
--load ${ ./.emacs.d/init.el } \
|
|
--no-init-file $@
|
|
'' // {
|
|
# TODO: Ascertain whether I need this.
|
|
overrideEmacs = f': self l f';
|
|
|
|
# Call with a local.el file containing local system configuration.
|
|
withLocalConfig = confDir: self confDir f;
|
|
|
|
# This accepts the path to an Emacs binary outside of /nix/store. On gLinux,
|
|
# this will ensure that X and GL linkage behaves as expected.
|
|
withLocalEmacs = emacsBin: pkgs.writeShellScriptBin "wpcarros-emacs" ''
|
|
# TODO: Is this the best way to handle environment variables using Nix?
|
|
export BRIEFCASE=$HOME/briefcase
|
|
export DEPOT=$HOME/depot
|
|
|
|
export PATH="${emacsBinPath}:$PATH"
|
|
export EMACSLOADPATH="${wpcarrosEmacs.deps}/share/emacs/site-lisp:"
|
|
exec ${emacsBin} \
|
|
--debug-init \
|
|
--no-site-file \
|
|
--no-site-lisp \
|
|
--directory ${ ./.emacs.d/vendor } \
|
|
--directory ${ ./.emacs.d/wpc } \
|
|
--load ${ ./.emacs.d/wpc/wpc-package.el } \
|
|
--load ${ ./.emacs.d/init.el } \
|
|
--no-init-file $@
|
|
'';
|
|
}) null utils.identity
|