Evie Litherland-Smith
3e0a4bb725
Move alacritty opacity and decoration settings to sway only. Remove Emacs opacity by default, todo maybe add to sway only somehow...
188 lines
4.4 KiB
Nix
188 lines
4.4 KiB
Nix
{
|
|
config,
|
|
pkgs,
|
|
fonts,
|
|
...
|
|
}: {
|
|
imports = [
|
|
../shell/default.nix
|
|
./python/default.nix
|
|
./lua/default.nix
|
|
./javascript/default.nix
|
|
];
|
|
services.emacs = {
|
|
enable = true;
|
|
package = config.programs.emacs.finalPackage;
|
|
defaultEditor = true;
|
|
client.enable = true;
|
|
socketActivation.enable = true;
|
|
startWithUserSession = false;
|
|
};
|
|
programs.emacs = {
|
|
# Clone emacs config from https://git.xenia.me.uk/pixelifytica/emacs.git
|
|
# git clone https://git.xenia.me.uk/pixelifytica/emacs.git ~/.emacs.d
|
|
enable = true;
|
|
package = pkgs.emacs29-pgtk;
|
|
extraConfig = let
|
|
fixed-font-family = "${fonts.monospace.name}";
|
|
variable-font-family = "${fonts.sansSerif.name}";
|
|
font-height = builtins.toString (builtins.floor (builtins.mul fonts.sizes.applications 10));
|
|
custom-theme-name = "nix";
|
|
custom-theme = pkgs.writeTextFile {
|
|
name = "custom-emacs-theme";
|
|
destination = "/${custom-theme-name}-theme.el";
|
|
text = ''
|
|
(deftheme ${custom-theme-name}
|
|
"Use Nix customised fonts for main faces")
|
|
|
|
(custom-theme-set-variables
|
|
'${custom-theme-name}
|
|
'(menu-bar-mode nil))
|
|
|
|
(custom-theme-set-faces
|
|
'${custom-theme-name}
|
|
'(default ((t (:family "${fixed-font-family}" :height ${font-height}))))
|
|
'(fixed-pitch ((t (:family "${fixed-font-family}"))))
|
|
'(fixed-pitch-serif ((t (:family "${fixed-font-family}"))))
|
|
'(variable-pitch ((t (:family "${variable-font-family}")))))
|
|
|
|
(provide-theme '${custom-theme-name})
|
|
'';
|
|
};
|
|
custom-theme-hash = builtins.hashFile "sha256" "${custom-theme}/${custom-theme-name}-theme.el";
|
|
in ''
|
|
(add-to-list 'custom-theme-load-path "${custom-theme}")
|
|
(add-to-list 'custom-safe-themes "${custom-theme-hash}")
|
|
(load-theme '${custom-theme-name})
|
|
'';
|
|
extraPackages = epkgs:
|
|
with epkgs; [
|
|
# Tree-sitter grammars, not a real Emacs package
|
|
treesit-grammars.with-all-grammars
|
|
# Theme
|
|
base16-theme
|
|
# UI
|
|
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
|
|
ace-window
|
|
link-hint
|
|
diff-hl
|
|
# Completion
|
|
cape
|
|
consult
|
|
consult-eglot
|
|
consult-flyspell
|
|
corfu
|
|
corfu-terminal
|
|
embark
|
|
embark-consult
|
|
marginalia
|
|
orderless
|
|
vertico
|
|
# Templates
|
|
tempel
|
|
license-templates
|
|
gitignore-templates
|
|
# spell-checking
|
|
flyspell-correct
|
|
# password-store
|
|
pass
|
|
password-store
|
|
# IDE
|
|
treesit-auto
|
|
flymake-popon
|
|
flymake-shellcheck
|
|
flymake-yamllint
|
|
flymake-eslint
|
|
apheleia
|
|
envrc
|
|
rainbow-delimiters
|
|
aggressive-indent
|
|
python-docstring
|
|
nix-mode
|
|
lua-mode
|
|
# Media
|
|
emms
|
|
# org-mode
|
|
org-roam
|
|
org-noter
|
|
# org-cite
|
|
citar
|
|
citar-embark
|
|
# org-mode HTML export
|
|
htmlize
|
|
# Projects
|
|
magit
|
|
forge
|
|
treemacs
|
|
treemacs-nerd-icons
|
|
# Writing
|
|
markdown-mode
|
|
pandoc-mode
|
|
auctex
|
|
auctex-latexmk
|
|
latex-preview-pane
|
|
# Contacts
|
|
mu4e
|
|
bbdb
|
|
ement
|
|
# RSS feeds
|
|
elfeed
|
|
elfeed-org
|
|
elfeed-tube
|
|
];
|
|
};
|
|
home.packages = with pkgs; [
|
|
# Emacs requirements
|
|
imagemagick
|
|
languagetool
|
|
wordnet
|
|
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;})
|
|
python3Packages.pygments
|
|
|
|
# Development tools
|
|
## Code screenshots
|
|
silicon
|
|
|
|
## Linters
|
|
shellcheck
|
|
yamllint
|
|
nodePackages.eslint
|
|
|
|
## Formatters
|
|
alejandra
|
|
shfmt
|
|
ruff
|
|
black
|
|
isort
|
|
stylua
|
|
nodePackages.prettier
|
|
|
|
## Language servers
|
|
nil # Nix lsp
|
|
lua-language-server
|
|
nodePackages.pyright
|
|
nodePackages.typescript-language-server
|
|
];
|
|
}
|