Evie Litherland-Smith
513a2df379
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
167 lines
3.8 KiB
Nix
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;
|
|
})
|
|
];
|
|
}
|