Evie Litherland-Smith
eb7e6c3b13
Use flake8 for python flymake linting (along with mypy of course) Add fortls FORTRAN language server to default installed packages as well
172 lines
3.9 KiB
Nix
172 lines
3.9 KiB
Nix
{
|
|
config,
|
|
pkgs,
|
|
fonts,
|
|
...
|
|
}: {
|
|
imports = [../git/default.nix];
|
|
programs.git.extraConfig.core.editor = "$EDITOR";
|
|
programs.emacs = {
|
|
# Clone emacs config from https://git.xenia.me.uk/pixelifytica/emacs.git
|
|
# git clone https://git.xenia.me.uk/pixelifytica/emacs.git ~/.config/emacs
|
|
enable = true;
|
|
package = pkgs.emacs29-pgtk;
|
|
extraConfig = let
|
|
shell = "${pkgs.zsh}/bin/zsh";
|
|
font = "${fonts.monospace.name}-${toString fonts.sizes.applications}";
|
|
fixed-font-family = "${fonts.monospace.name}";
|
|
variable-font-family = "${fonts.sansSerif.name}";
|
|
alpha = "80";
|
|
in ''
|
|
(customize-set-variable 'shell-file-name "${shell}")
|
|
(add-to-list 'initial-frame-alist '(font . "${font}"))
|
|
(add-to-list 'default-frame-alist '(font . "${font}"))
|
|
(set-face-attribute 'fixed-pitch nil :family "${fixed-font-family}")
|
|
(set-face-attribute 'fixed-pitch-serif nil :family "${fixed-font-family}")
|
|
(set-face-attribute 'variable-pitch nil :family "${variable-font-family}")
|
|
(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
|
|
catppuccin-theme
|
|
|
|
# UI
|
|
all-the-icons
|
|
nerd-icons
|
|
nerd-icons-completion
|
|
nerd-icons-corfu
|
|
nerd-icons-dired
|
|
nerd-icons-ibuffer
|
|
doom-modeline
|
|
diminish
|
|
ligature
|
|
page-break-lines
|
|
helpful
|
|
which-key
|
|
link-hint
|
|
diff-hl
|
|
|
|
# Completion
|
|
cape
|
|
consult
|
|
consult-eglot
|
|
consult-flyspell
|
|
corfu
|
|
corfu-terminal
|
|
embark
|
|
embark-consult
|
|
marginalia
|
|
orderless
|
|
vertico
|
|
|
|
# Snippets
|
|
tempel
|
|
tempel-collection
|
|
|
|
# spell-checking
|
|
flyspell-correct
|
|
|
|
# password-store
|
|
pass
|
|
password-store
|
|
password-store-otp
|
|
|
|
# IDE
|
|
treesit-grammars.with-all-grammars
|
|
treesit-auto
|
|
flymake-popon
|
|
flymake-collection
|
|
flymake-eslint
|
|
flymake-shellcheck
|
|
apheleia
|
|
direnv
|
|
rainbow-delimiters
|
|
aggressive-indent
|
|
nix-mode
|
|
python-docstring
|
|
|
|
# Media
|
|
emms
|
|
|
|
# org-mode
|
|
org-roam
|
|
org-noter
|
|
org-journal
|
|
|
|
# org-cite
|
|
citar
|
|
citar-embark
|
|
|
|
# org-plot
|
|
gnuplot
|
|
|
|
# org-mode HTML export
|
|
htmlize
|
|
|
|
# Projects
|
|
ibuffer-project
|
|
magit
|
|
forge
|
|
|
|
# Writing
|
|
markdown-mode
|
|
pandoc-mode
|
|
auctex
|
|
auctex-latexmk
|
|
latex-preview-pane
|
|
|
|
# Email
|
|
mu4e
|
|
|
|
# RSS feeds
|
|
elfeed
|
|
elfeed-org
|
|
];
|
|
};
|
|
services = {
|
|
emacs = {
|
|
enable = true;
|
|
package = config.programs.emacs.finalPackage;
|
|
defaultEditor = true;
|
|
client.enable = true;
|
|
socketActivation.enable = true;
|
|
startWithUserSession = false;
|
|
};
|
|
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
|
|
poppler_utils
|
|
|
|
# Customised LaTeX install
|
|
(texlive.combine {
|
|
inherit (pkgs.texlive) scheme-medium dvisvgm dvipng wrapfig amsmath ulem hyperref capt-of;
|
|
})
|
|
];
|
|
}
|