Evie Litherland-Smith
2ac1d1a63e
Add stylix with theme, font and image configuration. Change all relevant (current) options to that nix evaluates without error, not fully tested yet though. Remove plasma manager and associated components. Condensed some files - remove some standalone files for packages with much smaller configuration now that they're not being manually themed.
138 lines
3.3 KiB
Nix
138 lines
3.3 KiB
Nix
{
|
|
config,
|
|
pkgs,
|
|
fonts,
|
|
...
|
|
}:
|
|
{
|
|
imports = [ ../shell/default.nix ];
|
|
stylix.targets.emacs.enable = false;
|
|
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; [
|
|
treesit-grammars.with-all-grammars
|
|
mu4e
|
|
emacsql-sqlite
|
|
];
|
|
};
|
|
home.packages = with pkgs; [
|
|
# Emacs requirements
|
|
imagemagick
|
|
languagetool
|
|
wordnet
|
|
|
|
# Plugin requirements
|
|
gcc
|
|
sqlite
|
|
pandoc
|
|
ghostscript
|
|
poppler_utils
|
|
graphviz
|
|
mp3info
|
|
|
|
# Customised LaTeX install
|
|
(texlive.combine {
|
|
inherit (texlive)
|
|
scheme-medium
|
|
dvisvgm
|
|
dvipng
|
|
wrapfig
|
|
amsmath
|
|
ulem
|
|
hyperref
|
|
capt-of
|
|
listings
|
|
;
|
|
})
|
|
|
|
# Development tools
|
|
## Code screenshots
|
|
silicon
|
|
|
|
## Python Environments
|
|
uv
|
|
poetry
|
|
|
|
## Linters
|
|
shellcheck
|
|
yamllint
|
|
ruff
|
|
nodePackages.eslint
|
|
|
|
## Formatters
|
|
nixfmt-rfc-style
|
|
shfmt
|
|
stylua
|
|
nodePackages.prettier
|
|
|
|
## Language servers
|
|
nixd
|
|
lua-language-server
|
|
nodePackages.typescript-language-server
|
|
|
|
## Interpreters
|
|
(python3.withPackages (
|
|
ps: with ps; [
|
|
tkinter
|
|
python-lsp-server
|
|
mypy
|
|
numpy
|
|
scipy
|
|
xarray
|
|
matplotlib
|
|
]
|
|
))
|
|
(luajit.withPackages (ps: [ (ps.callPackage ./luarocks/scilua.nix { }) ]))
|
|
];
|
|
xdg.configFile = {
|
|
"ruff/pyproject.toml".source = ./ruff.toml;
|
|
"pypoetry/config.toml".source = ./pypoetry.toml;
|
|
};
|
|
}
|