Evie Litherland-Smith
d973beca07
Add some specific workspaces (emacs, firefox, libreoffice, chat, steam) with custom icons, reduce persistent workspaces to those 5, update windowrules and binds accordingly
162 lines
3.9 KiB
Nix
162 lines
3.9 KiB
Nix
{
|
|
config,
|
|
pkgs,
|
|
...
|
|
}: {
|
|
imports = [../git/default.nix ../prog/default.nix];
|
|
programs.git.extraConfig.core.editor = "${config.programs.emacs.finalPackage}/bin/emacs";
|
|
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 = with builtins;
|
|
with config; let
|
|
shell = "${pkgs.zsh}/bin/zsh";
|
|
font = "${stylix.fonts.monospace.name}-${toString stylix.fonts.sizes.applications}";
|
|
fixed-font-family = "${stylix.fonts.monospace.name}";
|
|
variable-font-family = "${stylix.fonts.sansSerif.name}";
|
|
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}"))
|
|
(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
|
|
|
|
# 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-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
|
|
doom-modeline
|
|
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.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.combine {
|
|
inherit (pkgs.texlive) scheme-medium dvisvgm dvipng wrapfig amsmath ulem hyperref capt-of;
|
|
})
|
|
];
|
|
}
|