nixos/home/emacs/default.nix
Evie Litherland-Smith 513a2df379 Switch to using nushell as default again
Keep zsh as defaultUserShell (so same for root user), ensure emacs
also uses zsh instead of nu for POSIX compliance

Switch nu tables back to rounded configuration
2024-02-26 08:34:45 +00:00

167 lines
3.8 KiB
Nix

{
config,
pkgs,
...
}: {
imports = [../git/default.nix ../prog/default.nix];
programs.git.extraConfig.core.editor = "${config.programs.emacs.finalPackage}/bin/emacsclient -c";
programs.emacs = {
# Clone emacs config from https://git.xenia.me.uk/xenia/emacs.git
enable = true;
package = pkgs.emacs29-pgtk;
extraConfig = with builtins;
with config; let
shell = "${pkgs.zsh}/bin/zsh";
font = "${stylix.fonts.monospace.name}-${toString stylix.fonts.sizes.applications}";
alpha = "${toString (floor (mul stylix.opacity.applications 100))}";
in ''
(customize-set-variable 'shell-file-name "${shell}")
(add-to-list 'initial-frame-alist '(font . "${font}"))
(add-to-list 'default-frame-alist '(font . "${font}"))
(add-to-list 'initial-frame-alist '(alpha-background . ${alpha}))
(add-to-list 'default-frame-alist '(alpha-background . ${alpha}))
(scroll-bar-mode -1)
(tab-bar-mode -1)
(menu-bar-mode -1)
'';
extraPackages = epkgs:
with epkgs; [
# theme
modus-themes
# spell-checking
flyspell-correct
consult-flyspell
# password-store
password-store
password-store-otp
pass # password-store major mode
# completion-packages
cape
consult
consult-eglot
corfu
corfu-terminal
embark
embark-consult
marginalia
orderless
vertico
tempel
tempel-collection
# ide-packages
treesit-grammars.with-all-grammars
treesit-auto
flymake-popon
flymake-collection
flymake-shellcheck
flymake-clippy
flymake-ruff
flymake-eslint
apheleia
direnv
rainbow-delimiters
aggressive-indent
nix-mode
lua-mode
cargo
# media-packages
emms
# org-packages
org-roam
org-alert
org-noter
org-journal
citar
citar-embark
gnuplot
# project-packages
ibuffer-project
magit
forge
# ui-packages
all-the-icons
nerd-icons
nerd-icons-completion
nerd-icons-corfu
nerd-icons-dired
nerd-icons-ibuffer
diminish
ligature
page-break-lines
helpful
which-key
link-hint
diff-hl
# Tree-Sitter packages
nushell-ts-mode
# writing-packages
markdown-mode
pandoc-mode
auctex
auctex-latexmk
latex-preview-pane
# email-packages
mu4e
# feed-packages
elfeed
elfeed-org
elfeed-tube
elfeed-tube-mpv
];
};
services = {
emacs = {
enable = true;
package = config.programs.emacs.finalPackage;
startWithUserSession = false;
defaultEditor = true;
client.enable = true;
socketActivation.enable = true;
};
git-sync.repositories = with config.xdg.userDirs; {
org = {
path = "${documents}/Org";
uri = "git+https://git.xenia.me.uk/xenia/org.git";
};
references = {
path = "${documents}/References";
uri = "git+https://git.xenia.me.uk/xenia/references.git";
};
};
};
home.packages = with pkgs; [
# Emacs requirements
imagemagick
languagetool
wordnet
gnuplot # For org-plot
graphviz # For org-roam graph
mp3info # For EMMS
# Language-specific requirements
sqlite
pandoc
ghostscript
mupdf
poppler_utils
# Customised LaTeX install
# texlive.combined.scheme-full
(texlive.combine {
inherit (pkgs.texlive) scheme-basic dvisvgm dvipng wrapfig amsmath ulem hyperref capt-of beamer;
})
];
}