{ lib, ... }: { flake.nixosModules.emacs = { config, pkgs, lib, ... }: { # Optie om de module aan/uit te zetten options.mySystem.system.emacs.enable = lib.mkEnableOption "Enable Emacs config"; config = lib.mkIf (config.mySystem.system.emacs.enable or false) { # System packages (optioneel) environment.systemPackages = with pkgs; [ # Voeg systeem-brede packages toe als je wilt ]; # Home Manager configuratie home-manager.users.henrov = { programs.emacs = { enable = true; package = pkgs.emacs-pgtk.override { withTreeSitter = true; }; extraPackages = epkgs: with epkgs; [ # Tree-sitter and language support manualPackages.treesit-grammars.with-all-grammars rust-mode rustic nix-mode hcl-mode # UI/UX and navigation nerd-icons doom-modeline diminish eldoc eldoc-box pulsar which-key avy consult vertico marginalia crux shell-pop # Completion and snippets nerd-icons-corfu corfu cape orderless yasnippet yasnippet-snippets # Utilities and tools rg exec-path-from-shell eat f gptel nixpkgs-fmt envrc # Theming catppuccin-theme # Git magit # Editing and workflow expreg vundo puni # Error and side panel support sideline sideline-flymake sideline-eglot ]; }; home.sessionVariables = { EDITOR = "emacs"; XDG_SCREENSHOTS_DIR = "~/screenshots"; }; }; }; }; }