diff --git a/configurations/host/materusPC/home/materus/default.nix b/configurations/host/materusPC/home/materus/default.nix
index 821b62a..1462705 100644
--- a/configurations/host/materusPC/home/materus/default.nix
+++ b/configurations/host/materusPC/home/materus/default.nix
@@ -17,7 +17,7 @@
     enableTerminal = lib.mkDefault true;
     enableTerminalExtra = lib.mkDefault true;
     enableNixDevel = lib.mkDefault true;
-    editor.emacs.enable = false;
+    editor.emacs.enable = true;
     editor.code.fhs.enable = true;
     editor.code.fhs.packages = (ps: with ps; let llvmpkgs = llvmPackages_18; in [
       llvmpkgs.clang
diff --git a/configurations/profile/home/editor/emacs/default.nix b/configurations/profile/home/editor/emacs/default.nix
index c487090..e7916cb 100644
--- a/configurations/profile/home/editor/emacs/default.nix
+++ b/configurations/profile/home/editor/emacs/default.nix
@@ -3,30 +3,48 @@
   lib,
   pkgs,
   materusArg,
-  materusCfg,
   ...
-}:
-let
+}: let
   emacs-pkg = pkgs.emacs;
 
-  materus-config =
-    e:
+  materus-nix = e:
     e.trivialBuild {
-      pname = "materus-config";
-      src = pkgs.writeText "materus-config.el" ''
+      pname = "materus-nix";
+      src = pkgs.writeText "materus-nix.el" ''
         (when (file-exists-p "${config.programs.emacs.package}/opt/emacs/buildtime")
         (setq emacs-build-time (decode-time (seconds-to-time (string-to-number (with-temp-buffer
         (insert-file-contents "${config.programs.emacs.package}/opt/emacs/buildtime")
         (buffer-string)))))))
-        (provide 'materus-config)
+
+
+
+
+        (defvar lsp-java-configuration-runtimes nil)
+        (setq dap-lldb-debug-program '("${pkgs.llvmPackages.lldb}/bin/lldb-vscode"))
+        (setq lsp-java-configuration-runtimes '[(:name "JavaSE-1.8"
+                                                      :path "${pkgs.jdk8}/lib/openjdk/")
+                                                (:name "JavaSE-17"
+                                                      :path "${pkgs.jdk17}/lib/openjdk/")
+                                                (:name "JavaSE-21"
+                                                      :path "${pkgs.jdk21}/lib/openjdk/"
+                                                      :default t)])
+
+        (setq lsp-nix-nixd-nixos-options-expr (concat "(builtins.getFlake \"/etc/nixos\").nixosConfigurations." (system-name) ".options"))
+        (setenv "JAVA_HOME" "${pkgs.jdk21}/lib/openjdk")
+        (setenv "PATH" (concat "${emacsEnv}/bin:" (getenv "PATH")))
+        (setq exec-path (append '("${emacsEnv}/bin") exec-path))
+
+
+        (call-process-shell-command "${pkgs.xorg.xmodmap}/bin/xmodmap -e \"keycode 148 = Hyper_L\" -e \"remove Mod4 = Hyper_L\" -e \"add Mod3 = Hyper_L\" &" nil 0)
+        (call-process-shell-command "${pkgs.xorg.xmodmap}/bin/xmodmap -e \"keycode 66 = Hyper_L\" -e \"remove Mod4 = Hyper_L\" -e \"add Mod3 = Hyper_L\" &" nil 0)
+
+        (provide 'materus-nix)
       '';
       version = "1.0.0";
     };
 
-  configPath = "${materusArg.cfg.path}" + "/extraFiles/config/emacs/";
-  packages =
-    epkgs: with epkgs; [
-      (materus-config epkgs)
+  packages = epkgs:
+    with epkgs; [
       treesit-grammars.with-all-grammars
       use-package
       elcord
@@ -150,12 +168,18 @@ let
   emacsEnv = pkgs.buildEnv {
     name = "emacs-env";
     paths = with pkgs; [
+      jdk21
+
       luaformatter
       pandoc
-      (luajit.withPackages (p: [p.fennel p.lua-lsp]))
+      (luajit.withPackages (p: [
+        p.fennel
+        p.lua-lsp
+      ]))
       fennel-ls
       fnlfmt
-      
+      sbcl
+      silver-searcher
       guile
       plantuml
       mermaid-cli
@@ -176,7 +200,6 @@ let
       gdb
       materusArg.unstable.nixd
       jdt-language-server
-      jdk
       gradle
       fpc
       nodejs
@@ -186,50 +209,12 @@ let
   };
 
   cfg = config.materus.profile.editor.emacs;
-
-  setNixInit = ''
-    (defvar lsp-java-configuration-runtimes nil)
-    (setq dap-lldb-debug-program '("${pkgs.llvmPackages.lldb}/bin/lldb-vscode"))
-    (setq lsp-java-configuration-runtimes '[(:name "JavaSE-1.8"
-                                                   :path "${pkgs.jdk8}/lib/openjdk/")
-                                            (:name "JavaSE-17"
-                                                   :path "${pkgs.jdk17}/lib/openjdk/")
-                                            (:name "JavaSE-21"
-                                                   :path "${pkgs.jdk21}/lib/openjdk/"
-                                                   :default t)])
-    (setq lsp-nix-nixd-nixos-options-expr (concat "(builtins.getFlake \"/etc/nixos\").nixosConfigurations." (system-name) ".options"))                                           
-    (setenv "PATH" (concat (getenv "PATH") ":${emacsEnv}/bin"))
-    (setq exec-path (append exec-path '("${emacsEnv}/bin")))
-    (call-process-shell-command "${pkgs.xorg.xmodmap}/bin/xmodmap -e \"keycode 148 = Hyper_L\" -e \"remove Mod4 = Hyper_L\" -e \"add Mod3 = Hyper_L\" &" nil 0)
-    (call-process-shell-command "${pkgs.xorg.xmodmap}/bin/xmodmap -e \"keycode 66 = Hyper_L\" -e \"remove Mod4 = Hyper_L\" -e \"add Mod3 = Hyper_L\" &" nil 0)
-  '';
-in
-{
-  options.materus.profile.editor.emacs.enable = materusArg.pkgs.lib.mkBoolOpt false "Enable emacs with materus cfg";
+in {
+  options.materus.profile.editor.emacs.enable =
+    materusArg.pkgs.lib.mkBoolOpt false "Enable emacs with materus cfg";
 
   config = lib.mkIf cfg.enable {
-    home.activation.emacsSetup = lib.hm.dag.entryAfter [ "linkGeneration" ] ''
-      mkdir -p ${config.xdg.configHome}/emacs/var/recovery
-      mkdir -p ${config.xdg.configHome}/emacs/etc/materus
-      mkdir -p ${config.xdg.configHome}/emacs/var/backups
-      ${pkgs.rsync}/bin/rsync -zr --no-times --chmod=744 "${configPath}" "${config.xdg.configHome}/emacs"
-
-
-      run ${config.programs.emacs.finalPackage}/bin/emacs -Q --batch \
-      --eval '(setq warning-minimum-log-level :error)' \
-      --eval '(setq package-user-dir (concat user-emacs-directory "var/elpa/" emacs-version "/" ))' \
-      --eval '(setq package-gnupghome-dir (concat user-emacs-directory "var/elpa/gnupg/" ))' \
-      --eval '(package-initialize)' \
-      --eval '(byte-recompile-directory (concat user-emacs-directory "etc/materus/extra") 0 t)' \
-      --eval '(byte-compile-file "${config.xdg.configHome}/emacs/early-init.el")' \
-      --eval '(byte-compile-file "${config.xdg.configHome}/emacs/init.el")' \
-      --eval '(byte-compile-file "${config.xdg.configHome}/emacs/etc/materus/nix-init.el")' \
-      --eval '(byte-compile-file "${config.xdg.configHome}/emacs/etc/materus/emacs-config.el")'
-    '';
-
-    xdg.configFile = {
-      "emacs/etc/materus/nix-init.el".text = setNixInit;
-    };
+    home.activation.emacsSetup = lib.hm.dag.entryAfter ["linkGeneration"] '''';
 
     #Emacsclient with COLORTERM env variable, without it display in "-nw" client is broken
     xdg.desktopEntries.emacs = {
@@ -274,6 +259,7 @@ in
 
     programs.emacs = {
       enable = true;
+      extraPackages = epkgs: [(materus-nix epkgs) epkgs.vterm epkgs.treesit-grammars.with-all-grammars];
       package = lib.mkDefault (
         (emacs-pkg.override {
           withSQLite3 = true;
@@ -282,111 +268,24 @@ in
           #withXwidgets = true;
           withGTK3 = true;
           withAlsaLib = true;
+
           #withGconf = true;
           withImageMagick = true;
-        }).overrideAttrs
-          (
-            f: p: {
-              #Remove .desktop files, will use my own. Add file with buildtime in case of using elpaca
-              postInstall =
-                p.postInstall
-                + ''
-                  rm -fr $out/share/applications/*
-                  mkdir -p $out/opt/emacs
-                  date +%s | tr -d '\n' > $out/opt/emacs/buildtime
-                '';
-            }
-          )
+        })
+        .overrideAttrs
+        (
+          f: p: {
+            #Remove .desktop files, will use my own. Add file with buildtime in case of using elpaca
+            postInstall =
+              p.postInstall
+              + ''
+                rm -fr $out/share/applications/*
+                mkdir -p $out/opt/emacs
+                date +%s | tr -d '\n' > $out/opt/emacs/buildtime
+              '';
+          }
+        )
       );
-      extraPackages =
-        epkgs:
-        (packages (
-          epkgs.overrideScope (
-            ff: pp: {
-              #Build lsp-mode with plist support, need to set this in emacs too
-
-              lsp-mode = (
-                pp.lsp-mode.overrideAttrs (
-                  f: p: {
-                    patches = [ ./lsp-mode.patch ];
-                    buildPhase =
-                      ''
-                        export LSP_USE_PLISTS=true
-                      ''
-                      + p.buildPhase;
-                  }
-                )
-              );
-              lsp-java = (
-                pp.lsp-java.overrideAttrs (
-                  f: p: {
-                    buildPhase =
-                      ''
-                        export LSP_USE_PLISTS=true
-                      ''
-                      + p.buildPhase;
-                  }
-                )
-              );
-              lsp-jedi = (
-                pp.lsp-jedi.overrideAttrs (
-                  f: p: {
-                    buildPhase =
-                      ''
-                        export LSP_USE_PLISTS=true
-                      ''
-                      + p.buildPhase;
-                  }
-                )
-              );
-              lsp-haskell = (
-                pp.lsp-haskell.overrideAttrs (
-                  f: p: {
-                    buildPhase =
-                      ''
-                        export LSP_USE_PLISTS=true
-                      ''
-                      + p.buildPhase;
-                  }
-                )
-              );
-              lsp-ui = (
-                pp.lsp-ui.overrideAttrs (
-                  f: p: {
-                    buildPhase =
-                      ''
-                        export LSP_USE_PLISTS=true
-                      ''
-                      + p.buildPhase;
-                  }
-                )
-              );
-              lsp-treemacs = (
-                pp.lsp-treemacs.overrideAttrs (
-                  f: p: {
-                    buildPhase =
-                      ''
-                        export LSP_USE_PLISTS=true
-                      ''
-                      + p.buildPhase;
-                  }
-                )
-              );
-              dap-mode = (
-                pp.dap-mode.overrideAttrs (
-                  f: p: {
-                    buildPhase =
-                      ''
-                        export LSP_USE_PLISTS=true
-                      ''
-                      + p.buildPhase;
-                  }
-                )
-              );
-            }
-          )
-        ));
     };
-
   };
 }
diff --git a/EMACS-CONFIG.org b/extraFiles/config/emacs/EMACS-CONFIG.org
similarity index 50%
rename from EMACS-CONFIG.org
rename to extraFiles/config/emacs/EMACS-CONFIG.org
index cba178a..2f36303 100644
--- a/EMACS-CONFIG.org
+++ b/extraFiles/config/emacs/EMACS-CONFIG.org
@@ -2,12 +2,76 @@
 #+AUTHOR: materus
 #+DESCRIPTION: materus emacs configuration
 #+STARTUP: overview
-#+PROPERTY: header-args :tangle (expand-file-name "init.el" user-emacs-directory)
+#+PROPERTY: header-args :tangle no :noweb yes
 #+OPTIONS: \n:t
 #+auto_tangle: t
+* Table of Contents    :noexport:TOC_3:
+- [[#early-init][Early Init]]
+- [[#init-core][Init Core]]
+  - [[#prepare][Prepare]]
+  - [[#elpaca][Elpaca]]
+  - [[#functions][Functions]]
+  - [[#custom-file][Custom File]]
+  - [[#font--text][Font & Text]]
+  - [[#frame][Frame]]
+  - [[#mouse][Mouse]]
+- [[#packages--settings][Packages & Settings]]
+  - [[#visual][Visual]]
+    - [[#theme][Theme]]
+    - [[#rainbow-mode][Rainbow mode]]
+    - [[#delimiters][Delimiters]]
+    - [[#modeline][Modeline]]
+    - [[#dashboard][Dashboard]]
+    - [[#highlight-indent-guides][Highlight Indent Guides]]
+  - [[#terminal][Terminal]]
+    - [[#eat][Eat]]
+    - [[#vterm][Vterm]]
+  - [[#navigation-and-completion][Navigation and Completion]]
+    - [[#helm][HELM]]
+    - [[#comapny][Comapny]]
+    - [[#dirvish][Dirvish]]
+    - [[#treemacs][Treemacs]]
+  - [[#programming][Programming]]
+    - [[#general][General]]
+    - [[#snippets][Snippets]]
+    - [[#cc][C/C++]]
+    - [[#java][Java]]
+    - [[#python][Python]]
+    - [[#nix][Nix]]
+    - [[#lisp--scheme][Lisp / Scheme]]
+    - [[#shell][Shell]]
+  - [[#version-control][Version Control]]
+    - [[#diff-highlight][Diff Highlight]]
+    - [[#magit][Magit]]
+    - [[#git-timemachine][Git Timemachine]]
+  - [[#notes--organization][Notes & Organization]]
+    - [[#org-mode][Org Mode]]
+  - [[#other--misc][Other & Misc]]
+    - [[#undo-tree][Undo-tree]]
+    - [[#which-key][which-key]]
+    - [[#projectile][projectile]]
+    - [[#perspective][Perspective]]
+    - [[#elcord][Elcord]]
+    - [[#drag-stuff][drag-stuff]]
+    - [[#popper][popper]]
+    - [[#visual-fill-column][visual-fill-column]]
+    - [[#so-long][so-long]]
+    - [[#vlf][vlf]]
+    - [[#crux][crux]]
+    - [[#no-littering][No Littering]]
+  - [[#libraries][Libraries]]
+    - [[#nerd-icons][Nerd Icons]]
+    - [[#svg-lib][SVG Lib]]
+    - [[#transient][Transient]]
+- [[#keybindings][Keybindings]]
+- [[#final-code][Final Code]]
+- [[#links][Links]]
+- [[#archive][Archive]]
+  - [[#minibuffer-orderless-vertico-marginalia-consult][minibuffer (orderless, vertico, marginalia, consult)]]
+  - [[#code-completion-cape-corfu][Code completion (Cape, corfu)]]
 
 * Early Init
-#+begin_src emacs-lisp :tangle (expand-file-name "early-init.el" user-emacs-directory)  
+#+begin_src emacs-lisp :tangle (expand-file-name "early-init.el" user-emacs-directory) :noweb-ref early-init
   ;;; -*- lexical-binding: t; -*-
     
   ;;; VARIABLES
@@ -100,18 +164,25 @@
 #+end_src
 
 * Init Core
-** TMP
-#+begin_src emacs-lisp
-    ;;; -*- lexical-binding: t; -*-
-
+:PROPERTIES:
+:header-args: :tangle no 
+:END:
+** Prepare
+#+begin_src emacs-lisp :noweb-ref init
+;; Prepare
+  (require 'materus-nix nil t)
+  (require 'elec-pair)
   (when (not emacs-build-time)
     (print "WARN: emacs-build-time not set up, using current time")
     (setq emacs-build-time (decode-time (current-time))))
-  (add-to-list 'load-path (concat user-emacs-directory "etc/materus/extra"))                ; Extra load path for packages
-  (defvar electric-pair-inhibit-predicate nil)
-
+  (add-to-list 'load-path (concat user-emacs-directory "etc/pkgs/"))                ; Extra load path for packages
 
+  (setq read-process-output-max (* 1024 1024 3))
 
+#+END_src
+** Elpaca
+#+begin_src emacs-lisp :noweb-ref init-elpaca
+  ;; Elpaca Init
   (defvar elpaca-installer-version 0.11)
   (defvar elpaca-directory (expand-file-name "var/elpaca/" user-emacs-directory))
   (defvar elpaca-builds-directory (expand-file-name (concat "builds/" emacs-version "/") elpaca-directory))
@@ -130,7 +201,7 @@
       (when (<= emacs-major-version 28) (require 'subr-x))
       (condition-case-unless-debug err
           (if-let* ((buffer (pop-to-buffer-same-window "*elpaca-bootstrap*"))
-  		  ((zerop (apply #'call-process `("git" nil ,buffer t "clone"
+      		      ((zerop (apply #'call-process `("git" nil ,buffer t "clone"
                                                     ,@(when-let* ((depth (plist-get order :depth)))
                                                         (list (format "--depth=%d" depth) "--no-single-branch"))
                                                     ,(plist-get order :repo) ,repo))))
@@ -155,19 +226,485 @@
     (elpaca-use-package-mode)
     (setq elpaca-use-package-by-default t))
 
+#+END_src
+** Functions
+#+begin_src emacs-lisp :noweb-ref init-functions
+  ;; Use package preffering built-in / nix packages
+  (defmacro materus/use-package (package &rest body)
+    (if (locate-library (symbol-name `,package))
+        `(progn
+           (cl-pushnew (quote ,package) elpaca-ignored-dependencies)
+           (use-package ,package :ensure nil ,@body))
+      `(use-package ,package ,@body)))
+
+#+END_src
+
+** Custom File
+#+begin_src emacs-lisp :noweb-ref init-custom-file
+  ;; Custom File
+  (add-hook 'elpaca-after-init-hook (lambda () (load custom-file 'noerror)))
+#+end_src
+
+** Font & Text
+#+begin_src emacs-lisp :noweb-ref init-extra
+  ;; Font & Text init
+  (when (display-graphic-p)
+    (set-frame-font "Hack Nerd Font" nil t))
+  (setq-default cursor-type '(bar . 2))
+  (setq truncate-string-ellipsis "…")
 
 
+  (setq text-mode-ispell-word-completion nil) ; Disable ispell
+  (global-completion-preview-mode 1)
+  (electric-pair-mode 1)
+  (electric-indent-mode -1)
+#+end_src
 
-  (use-package no-littering
+** Frame
+#+begin_src emacs-lisp :noweb-ref init-extra
+  ;; Frame Init
+  (when (daemonp)
+    (add-hook 'after-make-frame-functions 
+              (lambda (frame) (when (= (length (frame-list)) 2)
+                                (set-frame-parameter frame 'fullscreen 'maximized)) 
+                (select-frame-set-input-focus frame) )))
+  (global-tab-line-mode 1)
+  (setq window-divider-default-bottom-width 1)
+  (setq window-divider-default-right-width 1)
+  (window-divider-mode 1)
+  (tool-bar-mode -1)
+  (setq-default display-line-numbers-width 3)
+  (setq-default display-line-numbers-widen t)
+
+   (defun startup-screen-advice (orig-fun &rest args)
+    (when (= (seq-count #'buffer-file-name (buffer-list)) 0)
+      (apply orig-fun args)))
+  (advice-add 'display-startup-screen :around #'startup-screen-advice) ; Hide startup screen if started with file
+#+end_src
+** Mouse
+Setting up mouse
+#+begin_src emacs-lisp :noweb-ref init-extra
+  ;; Mouse Init
+  (context-menu-mode 1)
+  (setq mouse-wheel-follow-mouse 't)
+  (setq scroll-step 1)
+  (setq mouse-drag-and-drop-region t)
+  (xterm-mouse-mode 1)
+  (pixel-scroll-precision-mode 1)
+  (setq-default pixel-scroll-precision-large-scroll-height 10.0)
+#+end_src
+* Packages & Settings
+:PROPERTIES:
+:header-args: :tangle no  :noweb-ref packages
+:END:
+** Visual
+*** Theme
+#+begin_src emacs-lisp
+  (use-package dracula-theme :config
+    (if (daemonp)
+        (add-hook 'after-make-frame-functions
+                  (lambda (frame)
+                    (with-selected-frame frame (load-theme 'dracula t))))
+      (load-theme 'dracula t)))
+
+#+end_src
+*** Rainbow mode
+#+begin_src emacs-lisp
+  (use-package rainbow-mode
+    :hook
+    ((org-mode . rainbow-mode)
+     (prog-mode . rainbow-mode)))
+#+end_src
+*** Delimiters
+#+begin_src emacs-lisp
+  (use-package rainbow-delimiters
+    :hook
+    (prog-mode . rainbow-delimiters-mode)
     :config
-    (require 'recentf)
-    (setq package-quickstart-file  
-          (concat user-emacs-directory "var/quickstart/package-quickstart-" emacs-version ".el" ))
-    (add-to-list 'recentf-exclude
-                 (recentf-expand-file-name no-littering-var-directory))
-    (add-to-list 'recentf-exclude
-                 (recentf-expand-file-name no-littering-etc-directory)))
-  (use-package org
+    (set-face-attribute 'rainbow-delimiters-depth-1-face nil :foreground "#FFFFFF")
+    (set-face-attribute 'rainbow-delimiters-depth-2-face nil :foreground "#FFFF00")
+    (set-face-attribute 'rainbow-delimiters-depth-5-face nil :foreground "#6A5ACD")
+    (set-face-attribute 'rainbow-delimiters-unmatched-face nil :foreground "#FF0000"))
+
+#+end_src
+*** Modeline
+#+begin_src emacs-lisp
+  ;; (use-package doom-modeline
+  ;;   :init (setq doom-modeline-support-imenu t)
+  ;;   :hook (elpaca-after-init . doom-modeline-mode)
+  ;;   :config
+  ;;   (setq doom-modeline-icon t)
+  ;;   (setq doom-modeline-project-detection 'auto)
+  ;;   (setq doom-modeline-height 20)
+  ;;   (setq doom-modeline-enable-word-count t)
+  ;;   (setq doom-modeline-minor-modes t)
+  ;;   (setq display-time-24hr-format t)
+  ;;   (display-time-mode 1)
+  ;;   (column-number-mode 1)
+  ;;   (line-number-mode 1))
+
+  (use-package minions
+    :hook (elpaca-after-init . minions-mode))
+#+end_src
+*** Dashboard
+#+begin_src emacs-lisp
+  (use-package dashboard
+    :after (nerd-icons projectile)
+    :config
+    (setq dashboard-center-content t)
+    (setq dashboard-display-icons-p t)
+    (setq dashboard-icon-type 'nerd-icons)
+    (setq dashboard-projects-backend 'projectile)
+    (setq dashboard-items '((recents   . 5)
+                            (bookmarks . 5)
+                            (projects  . 5)
+                            (agenda    . 5)
+                            (registers . 5)))
+    (when (or (daemonp) (< (length command-line-args) 2))
+      (add-hook 'elpaca-after-init-hook #'dashboard-insert-startupify-lists)
+      (add-hook 'elpaca-after-init-hook #'dashboard-initialize)
+      (dashboard-setup-startup-hook)))
+  (when (daemonp)
+    (setq initial-buffer-choice (lambda () (get-buffer "*dashboard*")))) ; Show dashboard when emacs is running as daemon)
+    #+end_src
+#+begin_src emacs-lisp :tangle no :noweb-ref keybindings
+  ;; Dashboard
+  (define-key dashboard-mode-map (kbd "C-r") #'dashboard-refresh-buffer)
+#+end_src
+*** Highlight Indent Guides
+[[https://github.com/DarthFennec/highlight-indent-guides][highlight-indent-guides]]
+#+begin_src emacs-lisp
+  (use-package highlight-indent-guides
+    :hook ((prog-mode . highlight-indent-guides-mode)))
+#+end_src
+** Terminal
+*** Eat
+#+begin_src emacs-lisp
+  (use-package eat)
+
+#+end_src
+#+begin_src emacs-lisp :tangle no :noweb-ref keybindings
+  ;; Eat
+  (defvar cua--eat-semi-char-keymap (copy-keymap cua--cua-keys-keymap) "EAT semi-char mode CUA keymap")
+  (defvar cua--eat-char-keymap (copy-keymap cua--cua-keys-keymap) "EAT char mode CUA keymap")
+
+
+  (define-key cua--eat-semi-char-keymap (kbd "C-v") #'eat-yank)
+  (define-key cua--eat-char-keymap (kbd "C-S-v") #'eat-yank)
+  (define-key cua--eat-semi-char-keymap (kbd "C-c") #'copy-region-as-kill)
+  (define-key cua--eat-char-keymap (kbd "C-S-c") #'copy-region-as-kill)
+  (define-key eat-mode-map (kbd "C-<right>") #'eat-self-input)
+  (define-key eat-mode-map (kbd "C-<left>") #'eat-self-input)
+
+
+  (defun cua--eat-semi-char-override-keymap ()
+    (setq-local cua--keymap-alist (copy-tree cua--keymap-alist))
+    (setf (alist-get 'cua--ena-cua-keys-keymap cua--keymap-alist) cua--eat-semi-char-keymap))
+  (defun cua--eat-char-override-keymap ()
+    (setq-local cua--keymap-alist (copy-tree cua--keymap-alist))
+    (setf (alist-get 'cua--ena-cua-keys-keymap cua--keymap-alist) cua--eat-char-keymap))
+
+  (advice-add 'eat-semi-char-mode :after #'cua--eat-semi-char-override-keymap)
+  (advice-add 'eat-char-mode :after #'cua--eat-char-override-keymap)
+  (add-hook 'eat-char-mode-hook #'cua--eat-char-override-keymap)
+
+#+end_src
+*** Vterm
+#+begin_src emacs-lisp
+(materus/use-package vterm)
+#+end_src
+** Navigation and Completion
+*** HELM
+#+begin_src emacs-lisp
+  (use-package helm
+    :config
+    (setq helm-x-icons-provider 'nerd-icons)
+    (setq helm-move-to-line-cycle-in-source nil)
+    (helm-mode 1)
+    )
+  (use-package helm-projectile
+    :after (helm projectile))
+  (use-package helm-ag
+    :after (helm))
+  (use-package helm-rg
+    :after (helm)) 
+  (use-package helm-ls-git
+    :after (helm))
+#+end_src
+#+begin_src emacs-lisp :tangle no :noweb-ref keybindings
+  ;; Helm
+  (global-set-key (kbd "M-x") 'helm-M-x)
+  (global-set-key (kbd "C-x r b") #'helm-filtered-bookmarks)
+  (global-set-key (kbd "C-x C-f") #'helm-find-files)
+  (global-set-key (kbd "C-x b") #'helm-mini)
+#+end_src
+*** Comapny
+#+begin_src emacs-lisp
+    (use-package company
+      :hook
+      ((prog-mode . company-mode)))
+    (use-package slime-company
+      :if (executable-find "sbcl")
+      :after (company slime))
+
+#+end_src
+*** Dirvish
+#+begin_src emacs-lisp
+  (use-package dirvish
+    :after (nerd-icons)
+   :config
+   (setq dired-mouse-drag-files t)
+   (dirvish-override-dired-mode 1)
+   (setq dirvish-attributes
+         '(vc-state
+           subtree-state
+           nerd-icons
+           collapse
+           git-msg
+           file-time 
+           file-size)))
+
+#+end_src
+*** Treemacs
+#+begin_src emacs-lisp
+  (use-package treemacs)
+  (use-package treemacs-projectile
+    :after (projectile treemacs))
+  (use-package treemacs-nerd-icons
+    :after (nerd-icons treemacs))
+  (use-package treemacs-perspective
+    :after (treemacs))
+  (use-package treemacs-mouse-interface
+    :after (treemacs)
+    :ensure nil)
+#+end_src
+#+begin_src emacs-lisp :tangle no :noweb-ref keybindings
+  ;; Treemacs
+  (define-key global-map (kbd "C-H-t") 'treemacs)
+#+end_src
+** Programming
+*** General
+**** Settings
+#+begin_src emacs-lisp :noweb-ref init-extra
+  (add-to-list 'c-default-style '(awk-mode . "awk"))
+  (add-to-list 'c-default-style '(other . "bsd"))
+
+  (setq-default tab-width 4)
+  (setq-default indent-tabs-mode nil)
+  (setq-default c-basic-offset 4)
+  (setq-default c-indent-level 4)
+
+  (setq-default c-ts-mode-indent-offset 4)
+  (setq-default c-ts-mode-indent-style 'bsd)
+
+  (setq-default c-hungry-delete-key t)
+
+
+
+  (add-hook 'prog-mode-hook 'display-line-numbers-mode)
+  (add-hook 'prog-mode-hook 'electric-indent-local-mode)
+#+end_src
+**** LSP
+#+begin_src emacs-lisp
+  (use-package lsp-ui
+    :after (lsp-mode))
+  (use-package lsp-mode
+    ;; :custom
+    ;; (lsp-completion-provider :none) ;; we use Corfu!
+    :config
+    (setq lsp-keep-workspace-alive nil)
+
+    
+    (defun lsp-booster--advice-json-parse (old-fn &rest args)
+      "Try to parse bytecode instead of json."
+      (or
+       (when (equal (following-char) ?#)
+         (let ((bytecode (read (current-buffer))))
+           (when (byte-code-function-p bytecode)
+             (funcall bytecode))))
+       (apply old-fn args)))
+    (advice-add (if (progn (require 'json)
+                           (fboundp 'json-parse-buffer))
+                    'json-parse-buffer
+                  'json-read)
+                :around
+                #'lsp-booster--advice-json-parse)
+
+    (defun lsp-booster--advice-final-command (old-fn cmd &optional test?)
+      "Prepend emacs-lsp-booster command to lsp CMD."
+      (let ((orig-result (funcall old-fn cmd test?)))
+        (if (and (not test?)                                                             ; for check lsp-server-present?
+                 (not (file-remote-p default-directory))                                 ; see lsp-resolve-final-command, it would add extra shell wrapper
+                 lsp-use-plists
+                 (not (functionp 'json-rpc-connection))                                  ; native json-rpc
+                 (executable-find "emacs-lsp-booster"))
+            (progn
+              (when-let* ((command-from-exec-path (executable-find (car orig-result))))  ; resolve command from exec-path (in case not found in $PATH)
+                (setcar orig-result command-from-exec-path))
+              (message "Using emacs-lsp-booster for %s!" orig-result)
+              (cons "emacs-lsp-booster" orig-result))
+          orig-result)))
+    (advice-add 'lsp-resolve-final-command :around #'lsp-booster--advice-final-command))
+  (use-package lsp-treemacs
+    :after (lsp-mode treemacs)
+    :config
+    (lsp-treemacs-sync-mode 1))
+
+
+#+end_src
+**** Debug
+#+begin_src emacs-lisp
+  (use-package dap-mode
+    :after (lsp-mode)
+    :config
+    (require 'dap-lldb)
+    (require 'dap-gdb-lldb)
+    (require 'dap-cpptools)
+    (setq dap-gdb-lldb-extension-version "0.27.0")
+    (dap-auto-configure-mode 1))
+
+#+end_src
+*** Snippets
+#+begin_src emacs-lisp 
+  (use-package yasnippet
+    :config
+    (yas-global-mode 1))
+#+end_src
+
+*** C/C++
+#+begin_src emacs-lisp
+  (use-package lsp-clangd
+    :ensure nil
+    :after (lsp-mode)
+    :config
+    (setq lsp-clients-clangd-args '("--fallback-style=microsoft"))
+
+    (add-hook 'c-mode-hook 'lsp-deferred)
+    (add-hook 'c-mode-hook 'display-line-numbers-mode)
+    (add-hook 'c-ts-mode-hook 'lsp-deferred)
+    (add-hook 'c-ts-mode-hook 'display-line-numbers-mode)
+
+    (add-hook 'c++-mode-hook 'lsp-deferred)
+    (add-hook 'c++-mode-hook 'display-line-numbers-mode)
+    (add-hook 'c++-ts-mode-hook 'lsp-deferred)
+    (add-hook 'c++-ts-mode-hook 'display-line-numbers-mode)
+    ;(when (treesit-language-available-p 'c) (push '(c-mode . c-ts-mode) major-mode-remap-alist))
+    ;(when (treesit-language-available-p 'cpp) (push '(c++-mode . c++-ts-mode) major-mode-remap-alist))
+
+    (add-to-list 'c-default-style '(c-mode . "bsd"))
+    (add-to-list 'c-default-style '(c++-mode . "bsd"))
+    (add-to-list 'c-default-style '(c-ts-mode . "bsd"))
+    (add-to-list 'c-default-style '(c++-ts-mode . "bsd")))
+
+#+end_src
+*** Java
+#+begin_src emacs-lisp
+  (use-package lsp-java
+    :after (lsp-mode)
+    :config
+    (setq lsp-java-vmargs '("-XX:+UseParallelGC" "-XX:GCTimeRatio=4" "-XX:AdaptiveSizePolicyWeight=90" "-Dsun.zip.disableMemoryMapping=true" "-Xmx4G" "-Xms512m"))
+    ;;(add-hook 'java-mode-hook (lambda ()  (when (getenv "JDTLS_PATH") (setq lsp-java-server-install-dir (getenv "JDTLS_PATH")))))
+    (add-hook 'java-mode-hook 'lsp-deferred)
+    (add-hook 'java-mode-hook 'display-line-numbers-mode)
+
+    ;;(add-hook 'java-ts-mode-hook (lambda ()  (when (getenv "JDTLS_PATH") (setq lsp-java-server-install-dir (getenv "JDTLS_PATH")))))
+    (add-hook 'java-ts-mode-hook 'lsp-deferred)
+    (add-hook 'java-ts-mode-hook 'display-line-numbers-mode)
+
+    (when (treesit-language-available-p 'java) (push '(java-mode . java-ts-mode) major-mode-remap-alist))
+
+    (add-to-list 'c-default-style '(java-mode . "java"))
+    (add-to-list 'c-default-style '(java-ts-mode . "java")))
+#+end_src
+*** Python
+#+begin_src emacs-lisp
+  (use-package lsp-pyright
+    :after (lsp-mode)
+    :if (executable-find "python")
+    :config
+    (setq lsp-pyright-langserver-command "pyright")
+    (add-hook 'python-mode-hook 'lsp-deferred)
+    (add-hook 'python-ts-mode-hook 'lsp-deferred)
+    (when (treesit-language-available-p 'python) (push '(python-mode . python-ts-mode) major-mode-remap-alist)))
+#+end_src
+*** Nix
+#+begin_src emacs-lisp
+  (use-package nix-mode)
+  (use-package nix-ts-mode)
+  (use-package lsp-nix
+    :after (lsp-mode nix-mode nix-ts-mode)
+    :ensure nil
+    :config
+    (add-to-list 'lsp-disabled-clients '(nix-mode . nix-nil)) 
+    (setq lsp-nix-nixd-server-path "nixd")
+    (when (executable-find "nixfmt")  
+      (setq lsp-nix-nixd-formatting-command [ "nixfmt" ]) )
+    
+
+    (unless lsp-nix-nixd-nixos-options-expr
+      (setq lsp-nix-nixd-nixos-options-expr (concat "(builtins.getFlake \"/etc/nixos\").nixosConfigurations." (system-name) ".options")))
+    (unless lsp-nix-nixd-nixpkgs-expr
+      (setq lsp-nix-nixd-nixpkgs-expr (concat "(builtins.getFlake \"/etc/nixos\").nixosConfigurations." (system-name) ".pkgs")))
+    (add-hook 'nix-mode-hook 'lsp-deferred)
+    (add-hook 'nix-mode-hook 'display-line-numbers-mode)
+
+    (add-hook 'nix-ts-mode-hook 'lsp-deferred)
+    (add-hook 'nix-ts-mode-hook 'display-line-numbers-mode)
+
+    (when (treesit-language-available-p 'nix) (push '(nix-mode . nix-ts-mode) major-mode-remap-alist)))
+#+end_src
+*** Lisp / Scheme
+#+begin_src emacs-lisp
+(use-package paredit)
+#+end_src
+**** Emacs Lisp
+#+begin_src emacs-lisp
+
+#+end_src
+**** Common Lisp
+#+begin_src emacs-lisp
+  (use-package slime
+    :if (executable-find "sbcl")
+    :config
+    (setq inferior-lisp-program "sbcl")
+    (slime-setup '(slime-fancy slime-company)))
+#+end_src
+*** Shell
+**** Bash
+[[https://github.com/szermatt/emacs-bash-completion][Bash-completion]]
+#+begin_src emacs-lisp
+  (use-package bash-completion)
+#+end_src
+
+** Version Control
+*** Diff Highlight
+[[https://github.com/dgutov/diff-hl][diff-hl]]
+#+begin_src emacs-lisp
+  (use-package diff-hl
+    :config
+    (setq diff-hl-side 'right)
+    (global-diff-hl-mode 1)
+    (diff-hl-margin-mode 1)
+    (diff-hl-flydiff-mode 1)
+    (global-diff-hl-show-hunk-mouse-mode 1))
+#+end_src
+*** Magit
+[[https://magit.vc][Magit]]
+#+begin_src emacs-lisp
+  
+  (use-package magit
+    :after (transient))
+
+#+end_src
+*** Git Timemachine
+#+begin_src emacs-lisp
+(use-package git-timemachine
+  :defer t)
+#+end_src
+** Notes & Organization
+*** Org Mode
+#+begin_src emacs-lisp
+    (use-package org
     :mode (("\\.org$" . org-mode))
     :hook
     ((org-mode . org-indent-mode)
@@ -195,77 +732,9 @@
                                 `(lambda (c)
                                    (if
                                        (char-equal c ?<) t (,electric-pair-inhibit-predicate c)))))))
-  (elpaca-wait)
-
-
-
-  ;;(load custom-file t)
-
-
 #+end_src
 
-** Lexical Binding
-
 #+begin_src emacs-lisp
-  ;;; -*- lexical-binding: t; -*-
-#+end_src
-** Font & Text
-#+begin_src emacs-lisp
-  (when (display-graphic-p)
-     (set-frame-font "Hack Nerd Font" nil t))
-  (setq-default cursor-type '(bar . 2))
-  (setq truncate-string-ellipsis "…")
-
-
-  (setq text-mode-ispell-word-completion nil) ; Disable ispell
-  (global-completion-preview-mode 1)
-#+end_src
-
-** Frame
-#+begin_src emacs-lisp
-  (when (daemonp)
-    (add-hook 'after-make-frame-functions 
-              (lambda (frame) (when (= (length (frame-list)) 2)
-                                (set-frame-parameter frame 'fullscreen 'maximized)) 
-                (select-frame-set-input-focus frame) )))
-  (global-tab-line-mode 1)
-  (setq window-divider-default-bottom-width 1)
-  (setq window-divider-default-right-width 1)
-  (window-divider-mode 1)
-  (tool-bar-mode -1)
-  (setq-default display-line-numbers-width 3)
-  (setq-default display-line-numbers-widen t)
-
-   (defun startup-screen-advice (orig-fun &rest args)
-    (when (= (seq-count #'buffer-file-name (buffer-list)) 0)
-      (apply orig-fun args)))
-  (advice-add 'display-startup-screen :around #'startup-screen-advice) ; Hide startup screen if started with file
-#+end_src
-** Mouse
-Setting up mouse
-#+begin_src emacs-lisp
-  (context-menu-mode 1)
-  (setq mouse-wheel-follow-mouse 't)
-  (setq scroll-step 1)
-  (setq mouse-drag-and-drop-region t)
-  (xterm-mouse-mode 1)
-  (pixel-scroll-precision-mode 1)
-  (setq-default pixel-scroll-precision-large-scroll-height 10.0)
-#+end_src
-* Packages
-** Theme
-#+begin_src emacs-lisp
-  (use-package dracula-theme :config
-    (if (daemonp)
-        (add-hook 'after-make-frame-functions
-                  (lambda (frame)
-                    (with-selected-frame frame (load-theme 'dracula t))))
-      (load-theme 'dracula t)))
-
-#+end_src
-** org
-#+begin_src emacs-lisp
-
   (use-package org-modern
     :after (org)
     :hook
@@ -273,46 +742,36 @@ Setting up mouse
     (org-agenda-finalize . org-modern-agenda)
     :config 
     (setq org-modern-block-name '("▼ " . "▲ ")))
+#+end_src
+
+#+begin_src emacs-lisp
   (use-package org-auto-tangle
     :after (org)
     :hook (org-mode . org-auto-tangle-mode)
     )
+#+end_src
+
+#+begin_src emacs-lisp
   (use-package toc-org
     :after (org)
     :hook
     ((org-mode . toc-org-mode )
      (markdown-mode . toc-org-mode)))
-
 #+end_src
-** rainbow-mode
+
 #+begin_src emacs-lisp
-  (use-package rainbow-mode
-    :hook
-    ((org-mode . rainbow-mode)
-     (prog-mode . rainbow-mode)))
+  (use-package org-transclusion
+    :after (org))
 #+end_src
-** delimiters
+
 #+begin_src emacs-lisp
-  (use-package rainbow-delimiters
-    :hook
-    (prog-mode . rainbow-delimiters-mode)
-    :config
-    (set-face-attribute 'rainbow-delimiters-depth-1-face nil :foreground "#FFFFFF")
-    (set-face-attribute 'rainbow-delimiters-depth-2-face nil :foreground "#FFFF00")
-    (set-face-attribute 'rainbow-delimiters-depth-5-face nil :foreground "#6A5ACD")
-    (set-face-attribute 'rainbow-delimiters-unmatched-face nil :foreground "#FF0000"))
-
-#+end_src
-** eat
-#+begin_src emacs-lisp
-  (use-package eat
-    :config
-    (defvar cua--eat-semi-char-keymap (copy-keymap cua--cua-keys-keymap) "EAT semi-char mode CUA keymap")
-    (defvar cua--eat-char-keymap (copy-keymap cua--cua-keys-keymap) "EAT char mode CUA keymap"))
+  (use-package org-roam
+    :after (org))
 
 #+end_src
 
-** Undo-tree
+** Other & Misc
+*** Undo-tree
 #+begin_src emacs-lisp
   (use-package undo-tree
     :config
@@ -326,153 +785,19 @@ Setting up mouse
 
 #+end_src
 
-** Dirvish
+*** which-key
 #+begin_src emacs-lisp
-  (use-package dirvish
-    :after (nerd-icons)
-   :config
-   (setq dired-mouse-drag-files t)
-   (dirvish-override-dired-mode 1)
-   (setq dirvish-attributes
-         '(vc-state
-           subtree-state
-           nerd-icons
-           collapse
-           git-msg
-           file-time 
-           file-size)))
-
-#+end_src
-** orderless
-#+begin_src emacs-lisp
-   (use-package orderless
-    :init
-    ;; Tune the global completion style settings to your liking!
-    ;; This affects the minibuffer and non-lsp completion at point.
-    (setq completion-styles '(basic partial-completion orderless)
-          completion-category-defaults nil
-          completion-category-overrides nil))
-#+end_src
-** minibuffer
-#+begin_src emacs-lisp
-  (use-package consult)
-  (use-package marginalia)
-
   (use-package which-key
-    :config
-    (which-key-mode 1))
-
-  (use-package vertico
-    :after (consult marginalia)
-    :config
-    (setq completion-in-region-function
-          (lambda (&rest args)
-            (apply (if vertico-mode
-                       #'consult-completion-in-region
-                     #'completion--in-region)
-                   args)))
-    (vertico-mode 1)
-    (marginalia-mode 1))
-  (use-package vertico-mouse
-    :config
-    (vertico-mouse-mode 1)
-    :ensure nil
-    :after (vertico))
+      :config
+      (which-key-mode 1))
 #+end_src
 
-** nerd-icons
-#+begin_src emacs-lisp
-  (use-package nerd-icons)
-  (use-package nerd-icons-completion
-    :after (marginalia)
-    :config 
-    (nerd-icons-completion-mode 1)
-    (add-hook 'marginalia-mode-hook #'nerd-icons-completion-marginalia-setup))
-
-#+end_src
-** diff-hl
-#+begin_src emacs-lisp
-  (use-package diff-hl
-    :config
-    (setq diff-hl-side 'right)
-    (global-diff-hl-mode 1)
-    (diff-hl-margin-mode 1)
-    (diff-hl-flydiff-mode 1)
-    (global-diff-hl-show-hunk-mouse-mode 1))
-
-#+end_src
-
-** modelinne
-#+begin_src emacs-lisp
-  ;; (use-package doom-modeline
-  ;;   :init (setq doom-modeline-support-imenu t)
-  ;;   :hook (elpaca-after-init . doom-modeline-mode)
-  ;;   :config
-  ;;   (setq doom-modeline-icon t)
-  ;;   (setq doom-modeline-project-detection 'auto)
-  ;;   (setq doom-modeline-height 20)
-  ;;   (setq doom-modeline-enable-word-count t)
-  ;;   (setq doom-modeline-minor-modes t)
-  ;;   (setq display-time-24hr-format t)
-  ;;   (display-time-mode 1)
-  ;;   (column-number-mode 1)
-  ;;   (line-number-mode 1))
-
-  (use-package minions
-    :hook (elpaca-after-init . minions-mode))
-#+end_src
-
-** dashboard
-#+begin_src emacs-lisp
-  (use-package dashboard
-    :after (nerd-icons projectile)
-    :config
-    (setq dashboard-center-content t)
-    (setq dashboard-display-icons-p t)
-    (setq dashboard-icon-type 'nerd-icons)
-    (setq dashboard-projects-backend 'projectile)
-    (setq dashboard-items '((recents   . 5)
-                            (bookmarks . 5)
-                            (projects  . 5)
-                            (agenda    . 5)
-                            (registers . 5)))
-    (when (or (daemonp) (< (length command-line-args) 2))
-      (add-hook 'elpaca-after-init-hook #'dashboard-insert-startupify-lists)
-      (add-hook 'elpaca-after-init-hook #'dashboard-initialize)
-      (dashboard-setup-startup-hook)))
-  (when (daemonp)
-    (setq initial-buffer-choice (lambda () (get-buffer "*dashboard*")))) ; Show dashboard when emacs is running as daemon)
-
-    #+end_src
-** treemacs
-#+begin_src emacs-lisp
-  (use-package treemacs)
-  (use-package treemacs-projectile
-    :after (projectile treemacs))
-  (use-package treemacs-nerd-icons
-    :after (nerd-icons treemacs))
-  (use-package treemacs-perspective
-    :after (treemacs))
-  (use-package treemacs-mouse-interface
-    :after (treemacs)
-    :ensure nil)
-
-#+end_src
-
-** magit
-
-#+begin_src emacs-lisp
-  (use-package transient)
-  (use-package magit
-    :after (transient))
-
-#+end_src
-** projectile
+*** projectile
 #+begin_src emacs-lisp
   (use-package projectile
     :config (projectile-mode 1))
 #+end_src
-** Perspective 
+*** Perspective 
 #+begin_src emacs-lisp
   (use-package  perspective
     :config
@@ -495,26 +820,180 @@ Setting up mouse
     (add-hook 'after-delete-frame-functions 'materus/elcord-toggle)
     (add-hook 'server-after-make-frame-hook 'materus/elcord-toggle))
 #+end_src
-** yasnippet
-#+begin_src emacs-lisp 
-  (use-package yasnippet
-    :config
-    (yas-global-mode 1))
-#+end_src
-** Code completion
-#+begin_src emacs-lisp
 
+*** drag-stuff
+#+begin_src emacs-lisp
+  (use-package drag-stuff)
+#+end_src
+*** popper
+#+begin_src emacs-lisp
+  (use-package popper)
+#+end_src
+
+*** visual-fill-column
+#+begin_src emacs-lisp
+  (use-package visual-fill-column)
+#+end_src
+*** so-long
+#+begin_src emacs-lisp
+  (use-package so-long
+    :defer t)
+#+end_src
+*** vlf
+#+begin_src emacs-lisp
+  (use-package vlf
+    :defer t)
+#+end_src
+
+*** crux
+#+begin_src emacs-lisp
+(use-package crux)
+
+#+end_src
+*** No Littering
+#+begin_src emacs-lisp :noweb-ref package-no-littering
+  (use-package no-littering
+    :ensure (:wait t)
+    :config
+    (require 'recentf)
+    (setq package-quickstart-file  
+          (concat user-emacs-directory "var/quickstart/package-quickstart-" emacs-version ".el" ))
+    (add-to-list 'recentf-exclude
+                 (recentf-expand-file-name no-littering-var-directory))
+    (add-to-list 'recentf-exclude
+                 (recentf-expand-file-name no-littering-etc-directory)))
+
+#+END_src
+** Libraries
+*** Nerd Icons
+#+begin_src emacs-lisp
+  (use-package nerd-icons)
+#+end_src
+*** SVG Lib
+#+begin_src emacs-lisp
+  (use-package svg-lib)  
+#+end_src
+*** Transient
+#+begin_src emacs-lisp
+  (use-package transient)
+#+end_src
+* Keybindings
+#+begin_src emacs-lisp :noweb-ref keys
+  ;; Keybindings
+  (defun materus/keybind-set ()
+    (require 'cua-base)                               
+
+    ;; CUA-like global
+    (define-key global-map (kbd "C-s") 'save-buffer)
+    (define-key global-map (kbd "C-r") 'query-replace)
+    (define-key global-map (kbd "C-S-r") 'replace-string)
+    (define-key global-map (kbd "M-r") 'query-replace-regexp)
+    (define-key global-map (kbd "M-S-r") 'replace-regexp)
+    (define-key global-map (kbd "C-a") 'mark-whole-buffer)
+    (define-key global-map (kbd "C-f") 'isearch-forward)
+    (define-key global-map (kbd "C-S-f") 'isearch-backward)
+    (define-key isearch-mode-map (kbd "C-f") 'isearch-repeat-forward)
+    (define-key isearch-mode-map (kbd "C-S-f") 'isearch-repeat-backward)
+
+    ;; CUA
+    (define-key cua--cua-keys-keymap (kbd "C-z") 'undo-tree-undo)
+    (define-key cua--cua-keys-keymap (kbd "C-y") 'undo-tree-redo)
+    (define-key cua-global-keymap (kbd "C-SPC") 'completion-at-point)
+    (define-key cua-global-keymap (kbd "C-M-SPC") 'cua-set-mark)
+    (cua-mode 1)
+    ;; TAB
+    (define-key global-map (kbd "C-<iso-lefttab>") #'indent-rigidly-left)
+    (define-key global-map (kbd "C-<tab>") #'indent-rigidly-right)
+
+    ;; Hyper
+    (define-key key-translation-map (kbd "<XF86Calculator>") 'event-apply-hyper-modifier )
+    (define-key key-translation-map (kbd "<Calculator>") 'event-apply-hyper-modifier )
+    (define-key key-translation-map (kbd "∇") 'event-apply-hyper-modifier )
+
+   
+    ;; Unbind
+    (define-key isearch-mode-map (kbd "C-s") nil)
+    (define-key isearch-mode-map (kbd "C-r") nil)
+
+
+    <<keybindings>>)
+
+
+  (add-hook 'elpaca-after-init-hook #'materus/keybind-set )
+#+end_src
+
+
+* Final Code
+#+begin_src emacs-lisp :tangle (expand-file-name "init.el" user-emacs-directory) :noweb-ref final
+  ;;; -*- lexical-binding: t; -*-
+  <<init>>
+  <<init-elpaca>>
+  <<init-functions>>
+  <<package-no-littering>>
+  <<init-extra>>
+  <<packages>>
+  <<keys>>
+  <<init-custom-file>>
+#+end_src
+Make copy in this repository
+#+begin_src emacs-lisp :tangle ./early-init.el
+  <<early-init>>
+#+end_src
+#+begin_src emacs-lisp :tangle ./init.el
+  <<final>>
+#+end_src
+* Links
+[[https://github.com/emacs-tw/awesome-emacs][awesome-emacs]]
+* Archive
+:PROPERTIES:
+:header-args: :tangle no
+:END:
+** minibuffer (orderless, vertico, marginalia, consult)
+#+begin_src emacs-lisp
+  (use-package orderless
+    :init
+    ;; Tune the global completion style settings to your liking!
+    ;; This affects the minibuffer and non-lsp completion at point.
+    (setq completion-styles '(basic partial-completion orderless)
+          completion-category-defaults nil
+          completion-category-overrides nil))
+  (use-package consult)
+  (use-package marginalia)
+
+  
+
+  (use-package vertico
+    :after (consult marginalia)
+    :config
+    (setq completion-in-region-function
+          (lambda (&rest args)
+            (apply (if vertico-mode
+                       #'consult-completion-in-region
+                     #'completion--in-region)
+                   args)))
+    (vertico-mode 1)
+    (marginalia-mode 1))
+  (use-package vertico-mouse
+    :config
+    (vertico-mouse-mode 1)
+    :ensure nil
+    :after (vertico))
+#+end_src
+
+** Code completion (Cape, corfu)
+#+begin_src emacs-lisp
   (use-package cape)
 
   (use-package corfu
+    :after (lsp-mode cape)
     ;; Optional customizations
     :custom
-    (corfu-cycle nil)                ;; Enable cycling for `corfu-next/previous'
-    (corfu-auto t)                 ;; Enable auto completion
+    (corfu-cycle nil)                 ;; Enable cycling for `corfu-next/previous'
+    (corfu-auto t)                    ;; Enable auto completion
     (global-corfu-minibuffer nil)
     ;; (corfu-quit-at-boundary nil)   ;; Never quit at completion boundary
     ;; (corfu-quit-no-match nil)      ;; Never quit, even if there is no match
-    (corfu-preview-current nil)    ;; Disable current candidate preview
+    (corfu-preview-current nil)       ;; Disable current candidate preview
     ;; (corfu-preselect 'prompt)      ;; Preselect the prompt
     ;; (corfu-on-exact-match nil)     ;; Configure handling of exact matches
 
@@ -529,7 +1008,22 @@ Setting up mouse
     :init
     (global-corfu-mode 1)
     (corfu-popupinfo-mode 1)
-    (corfu-history-mode 1))
+    (corfu-history-mode 1)
+
+    (defun materus/orderless-dispatch-flex-first (_pattern index _total)
+      (and (eq index 0) 'orderless-flex))
+
+    (defun materus/lsp-mode-setup-completion ()
+      (setf (alist-get 'styles (alist-get 'lsp-capf completion-category-defaults))
+            '(orderless))
+      ;; Optionally configure the first word as flex filtered.
+      (add-hook 'orderless-style-dispatchers #'materus/orderless-dispatch-flex-first nil 'local)
+      ;; Optionally configure the cape-capf-buster.
+      (setq-local completion-at-point-functions (list (cape-capf-buster #'lsp-completion-at-point))))
+
+    :hook
+    (lsp-completion-mode . materus/lsp-mode-setup-completion))
+
 
 
   (use-package corfu-terminal
@@ -540,7 +1034,8 @@ Setting up mouse
 
   ;; (use-package corfu-mouse
   ;;   :after (corfu)
-  ;;   :config 
+  ;;   :config
+  ;;   :ensure nil
   ;;   (corfu-mouse-mode)
   ;;   (keymap-set corfu--mouse-ignore-map "<mouse-movement>" 'ignore)
   ;;   (keymap-set corfu-map "<mouse-movement>" 'ignore))
@@ -553,71 +1048,3 @@ Setting up mouse
 
 
  #+end_src
-* keys
-#+begin_src emacs-lisp
-  (require 'cua-base)
-
-          ;;; Keybinds
-  ;; Eat Term
-  ;(define-key cua--eat-semi-char-keymap (kbd "C-v") #'eat-yank)
-  ;(define-key cua--eat-char-keymap (kbd "C-S-v") #'eat-yank)
-  ;(define-key cua--eat-semi-char-keymap (kbd "C-c") #'copy-region-as-kill)
-  ;(define-key cua--eat-char-keymap (kbd "C-S-c") #'copy-region-as-kill)
-  ;(define-key eat-mode-map (kbd "C-<right>") #'eat-self-input)
-  ;(define-key eat-mode-map (kbd "C-<left>") #'eat-self-input)
-  ;; perspective
-  (define-key global-map (kbd "C-x C-b") #'persp-list-buffers)
-  (define-key global-map (kbd "C-x C-B") #'list-buffers)
-  (define-key global-map (kbd "C-x b") #'persp-switch-to-buffer*)
-  (define-key global-map (kbd "C-x B") #'consult-buffer)
-  ;; CUA-like global
-  (define-key global-map (kbd "C-s") 'save-buffer)
-  (define-key global-map (kbd "C-r") 'query-replace)
-  (define-key global-map (kbd "C-S-r") 'replace-string)
-  (define-key global-map (kbd "M-r") 'query-replace-regexp)
-  (define-key global-map (kbd "M-S-r") 'replace-regexp)
-  (define-key global-map (kbd "C-a") 'mark-whole-buffer)
-  (define-key global-map (kbd "C-f") 'isearch-forward)
-  (define-key global-map (kbd "C-S-f") 'isearch-backward)
-  (define-key isearch-mode-map (kbd "C-f") 'isearch-repeat-forward)
-  (define-key isearch-mode-map (kbd "C-S-f") 'isearch-repeat-backward)
-  (define-key global-map (kbd "M-f") 'consult-ripgrep)
-  (define-key global-map (kbd "C-M-f") 'consult-find)
-  ;; CUA
-  (define-key cua--cua-keys-keymap (kbd "C-z") 'undo-tree-undo)
-  (define-key cua--cua-keys-keymap (kbd "C-y") 'undo-tree-redo)
-  (define-key cua-global-keymap (kbd "C-SPC") 'completion-at-point)
-  (define-key cua-global-keymap (kbd "C-M-SPC") 'cua-set-mark)
-  (cua-mode 1)
-  ;; TAB
-  (define-key global-map (kbd "C-<iso-lefttab>") #'indent-rigidly-left)
-  (define-key global-map (kbd "C-<tab>") #'indent-rigidly-right)
-  ;; Dashboard
-  ;(define-key dashboard-mode-map (kbd "C-r") #'dashboard-refresh-buffer)
-
-  ;; Hyper
-  (define-key key-translation-map (kbd "<XF86Calculator>") 'event-apply-hyper-modifier )
-  (define-key key-translation-map (kbd "<Calculator>") 'event-apply-hyper-modifier )
-  (define-key key-translation-map (kbd "∇") 'event-apply-hyper-modifier )
-  ;; Treemacs
-  (define-key global-map (kbd "C-H-t") 'treemacs)
-
-  ;; Unbind
-  (define-key isearch-mode-map (kbd "C-s") nil)
-  (define-key isearch-mode-map (kbd "C-r") nil)
-#+end_src
-
-** CUA Overrides
-
-#+begin_src emacs-lisp
-  ;; (defun cua--eat-semi-char-override-keymap ()
-  ;;   (setq-local cua--keymap-alist (copy-tree cua--keymap-alist))
-  ;;   (setf (alist-get 'cua--ena-cua-keys-keymap cua--keymap-alist) cua--eat-semi-char-keymap))
-  ;; (defun cua--eat-char-override-keymap ()
-  ;;   (setq-local cua--keymap-alist (copy-tree cua--keymap-alist))
-  ;;   (setf (alist-get 'cua--ena-cua-keys-keymap cua--keymap-alist) cua--eat-char-keymap))
-
-  ;; (advice-add 'eat-semi-char-mode :after #'cua--eat-semi-char-override-keymap)
-  ;; (advice-add 'eat-char-mode :after #'cua--eat-char-override-keymap)
-  ;(add-hook 'eat-char-mode-hook #'cua--eat-char-override-keymap)
-#+end_src
diff --git a/extraFiles/config/emacs/early-init.el b/extraFiles/config/emacs/early-init.el
index 5e8a868..3fdaff4 100644
--- a/extraFiles/config/emacs/early-init.el
+++ b/extraFiles/config/emacs/early-init.el
@@ -1,12 +1,10 @@
 ;;; -*- lexical-binding: t; -*-
+  
+;;; VARIABLES
 
-;; [[file:emacs-materus-config.org::*Early Init Variables][Early Init Variables:1]]
-(defvar materus/init-early t
-  "Is emacs using materus early init")                                                    ; Var to ensure early-init loaded, not used anymore but keeping it anyway
-(setq materus/init-early t)                                                               ; Probably useless
 
 (setenv "LSP_USE_PLISTS" "true")                                                          ; Make lsp-mode use plists
-;; 
+
 (setq c-default-style nil)                                                                ; Clear default styles for languages, will set them up later
 (setq default-input-method nil)                                                           ; Disable default input method, I'm not using them anyway so far
 (setq initial-major-mode 'fundamental-mode)                                               ; Use fundamental mode in scratch buffer, speed up loading, not really important when emacs used as daemon
@@ -18,14 +16,16 @@
 (setq auto-save-list-file-prefix (concat user-emacs-directory "var/auto-save/sessions/")) ; Set auto-save-list location
 (setq load-prefer-newer t)                                                                ; Prefer newer files to load
 
-;; Packages
-(setq package-enable-at-startup t)                                                        ; Ensure packages are enable since I'm either using built in package manager or nix
-(setq package-quickstart nil)                                                             ; Disable package quickstart, it's annoying if forget to update it and doesn't speed up much
-;;
+
+(setq package-enable-at-startup nil)                                                       
+(setq package-quickstart nil)                                                             ; Disable package quickstart
+
+(setq inhibit-startup-screen t)
 
 (setq inhibit-compacting-font-caches t)                                                   ; Don't compact fonts
 
 (set-language-environment "UTF-8")                                                        ; Use UTF-8
+(setq-default buffer-file-coding-system 'utf-8-unix)
 
 (setq custom-file (concat user-emacs-directory "etc/custom.el"))                          ; Set custom file location, don't want clutter in main directory
 (setq custom-theme-directory
@@ -34,19 +34,22 @@
 (setq ring-bell-function 'ignore)                                                         ; Disable bell
 
 
-(defvar materus-emacs-gc-cons-threshold (* 64 1024 1024)
+(defvar materus/emacs-gc-cons-threshold (* 64 1024 1024)
   "The value of `gc-cons-threshold' after Emacs startup.")                                ; Define after init garbage collector threshold
-;; Early Init Variables:1 ends here
 
-;; [[file:emacs-materus-config.org::*Garbage Collector][Garbage Collector:1]]
+
+;;; GARBAGE COLLECTOR 
 (setq gc-cons-threshold most-positive-fixnum)                                             ; Set `gc-cons-threshold' so it won't collectect during initialization 
 
 (add-hook 'emacs-startup-hook
           (lambda ()
-            (setq gc-cons-threshold materus-emacs-gc-cons-threshold)))                    ; Set `gc-cons-threshold' to desired value after startup
-;; Garbage Collector:1 ends here
+            (setq gc-cons-threshold materus/emacs-gc-cons-threshold)))                    ; Set `gc-cons-threshold' to desired value after startup
+
+
+
+
+;;; FRAMES
 
-;; [[file:emacs-materus-config.org::*Early Frame Settings][Early Frame Settings:1]]
 (setq frame-inhibit-implied-resize t)
 (setq frame-resize-pixelwise t)
 (setq window-resize-pixelwise t)                                ; Allow pixelwise resizing of window and frame
@@ -64,9 +67,10 @@
               (advice-remove #'tty-run-terminal-initialization #'ignore) 
               (tty-run-terminal-initialization (selected-frame) nil t)
               )))
-;; Early Frame Settings:1 ends here
 
-;; [[file:emacs-materus-config.org::*Native compilation][Native compilation:1]]
+
+;;; NATIVE COMPILATION
+
 (setq native-comp-async-report-warnings-errors nil) ; Silence warnings
 (setq native-comp-speed 3)                          ; Set native-comp speed
 
@@ -83,4 +87,3 @@
   (startup-redirect-eln-cache
    (convert-standard-filename
     (concat user-emacs-directory "var/eln-cache/"))))
-;; Native compilation:1 ends here
diff --git a/extraFiles/config/emacs/emacs-materus-config.org b/extraFiles/config/emacs/emacs-materus-config.org
deleted file mode 100644
index de4a813..0000000
--- a/extraFiles/config/emacs/emacs-materus-config.org
+++ /dev/null
@@ -1,608 +0,0 @@
-#+TITLE: Materus Emacs Cfg
-#+AUTHOR: materus
-#+DESCRIPTION: materus emacs configuration
-#+STARTUP: overview
-#+PROPERTY: EMACS-DIR: ./
-#+PROPERTY: header-args :tangle (concat (org-entry-get nil "EMACS-DIR" t) "etc/materus/emacs-config.el") :comments link
-#+OPTIONS: \n:t
-#+auto_tangle: t
- 
-My emacs config, tangled file is [[file:etc/materus/emacs-config.el][there]]
-
-* Table of Contents    :noexport:TOC_3:
-- [[#init-files][Init Files]]
-  - [[#early-init][Early Init]]
-    - [[#early-init-variables][Early Init Variables]]
-    - [[#garbage-collector][Garbage Collector]]
-    - [[#early-frame-settings][Early Frame Settings]]
-    - [[#native-compilation][Native compilation]]
-  - [[#init][Init]]
-  - [[#compile-time][Compile Time]]
-- [[#packages][Packages]]
-  - [[#init-package-manager-config][Init package manager config]]
-  - [[#packages-list--function][Packages list & function]]
-- [[#configuration][Configuration]]
-  - [[#no-littering][No Littering]]
-  - [[#graphical][Graphical]]
-    - [[#mouse][Mouse]]
-    - [[#misc][Misc]]
-    - [[#dashboard][Dashboard]]
-    - [[#modeline][Modeline]]
-    - [[#diff-hl][Diff-hl]]
-  - [[#org-mode][Org-mode]]
-  - [[#completions][Completions]]
-    - [[#style][Style]]
-    - [[#minibuffer][Minibuffer]]
-  - [[#miscellaneous][Miscellaneous]]
-- [[#programming][Programming]]
-  - [[#lsp][LSP]]
-  - [[#dap][DAP]]
-  - [[#nix][Nix]]
-  - [[#emacs-lisp][Emacs Lisp]]
-  - [[#cc][C/C++]]
-  - [[#python][Python]]
-  - [[#java][Java]]
-  - [[#other][Other]]
-- [[#keybindings][Keybindings]]
-  - [[#keys][Keys]]
-- [[#snippets][Snippets]]
-  - [[#yasnippet-init][Yasnippet init]]
-- [[#other-1][Other]]
-  - [[#update-config-script][Update config script]]
-  - [[#byte-compile][Byte compile]]
-- [[#test][Test]]
-
-* Init Files
-** Early Init
-:PROPERTIES:
-:header-args: :tangle (concat (org-entry-get nil "EMACS-DIR" t) "early-init.el") :comments link
-:END:
-Early init file, setting for GC and some paths.
-Tangled file is [[./early-init.el][there]]
-#+begin_src emacs-lisp :comments no
-  ;;; -*- lexical-binding: t; -*-
-#+end_src
-*** Early Init Variables
-Setting early init variables
-#+begin_src emacs-lisp
-  (defvar materus/init-early t
-    "Is emacs using materus early init")                                                    ; Var to ensure early-init loaded, not used anymore but keeping it anyway
-  (setq materus/init-early t)                                                               ; Probably useless
-
-  (setenv "LSP_USE_PLISTS" "true")                                                          ; Make lsp-mode use plists
-  ;; 
-  (setq c-default-style nil)                                                                ; Clear default styles for languages, will set them up later
-  (setq default-input-method nil)                                                           ; Disable default input method, I'm not using them anyway so far
-  (setq initial-major-mode 'fundamental-mode)                                               ; Use fundamental mode in scratch buffer, speed up loading, not really important when emacs used as daemon
-  (setq auto-save-default nil)                                                              ; TODO: configure auto saves, disable for now
-  (setq backup-directory-alist
-        `((".*" . ,(concat user-emacs-directory "var/backups/"))))                          ; Set backup location
-  (setq auto-save-file-name-transforms
-        `((".*" ,(concat user-emacs-directory "var/recovery/") t)))                         ; Set auto-save location  
-  (setq auto-save-list-file-prefix (concat user-emacs-directory "var/auto-save/sessions/")) ; Set auto-save-list location
-  (setq load-prefer-newer t)                                                                ; Prefer newer files to load
-
-  ;; Packages
-  (setq package-enable-at-startup t)                                                        ; Ensure packages are enable since I'm either using built in package manager or nix
-  (setq package-quickstart nil)                                                             ; Disable package quickstart, it's annoying if forget to update it and doesn't speed up much
-  ;;
-
-  (setq inhibit-compacting-font-caches t)                                                   ; Don't compact fonts
-
-  (set-language-environment "UTF-8")                                                        ; Use UTF-8
-
-  (setq custom-file (concat user-emacs-directory "etc/custom.el"))                          ; Set custom file location, don't want clutter in main directory
-  (setq custom-theme-directory
-        (concat user-emacs-directory "/etc/materus/themes" ))                               ; Set custom themes location
-
-  (setq ring-bell-function 'ignore)                                                         ; Disable bell
-
-
-  (defvar materus-emacs-gc-cons-threshold (* 64 1024 1024)
-    "The value of `gc-cons-threshold' after Emacs startup.")                                ; Define after init garbage collector threshold
-#+end_src
-*** Garbage Collector
-Settings for garbage collector
-#+begin_src emacs-lisp
-  (setq gc-cons-threshold most-positive-fixnum)                                             ; Set `gc-cons-threshold' so it won't collectect during initialization 
-
-  (add-hook 'emacs-startup-hook
-            (lambda ()
-              (setq gc-cons-threshold materus-emacs-gc-cons-threshold)))                    ; Set `gc-cons-threshold' to desired value after startup
-#+end_src
-*** Early Frame Settings
-Early frame settings, maybe some could be move to normal init
-#+begin_src emacs-lisp
-  (setq frame-inhibit-implied-resize t)
-  (setq frame-resize-pixelwise t)
-  (setq window-resize-pixelwise t)                                ; Allow pixelwise resizing of window and frame
-
-  (unless (daemonp)
-    (add-to-list 'initial-frame-alist '(fullscreen . maximized))) ; Start first frame maximized if not running as daemon, daemon frame are set up later in config
-  (setq default-frame-alist                                       ; Set default size for frames
-        '((width . 130)   
-          (height . 40)))                 
-
-  (advice-add #'tty-run-terminal-initialization :override #'ignore)
-  (add-hook 'window-setup-hook
-            (lambda ()
-              (unless (display-graphic-p)
-                (advice-remove #'tty-run-terminal-initialization #'ignore) 
-                (tty-run-terminal-initialization (selected-frame) nil t)
-                )))
-#+end_src
-*** Native compilation
-#+begin_src emacs-lisp
-  (setq native-comp-async-report-warnings-errors nil) ; Silence warnings
-  (setq native-comp-speed 3)                          ; Set native-comp speed
-
-  (setq native-comp-jit-compilation t
-        ;;native-comp-deferred-compilation t 
-        package-native-compile t)
-
-
-  ;; Setting up native-comp cache location
-
-  (when (and (fboundp 'startup-redirect-eln-cache)
-             (fboundp 'native-comp-available-p)
-             (native-comp-available-p))
-    (startup-redirect-eln-cache
-     (convert-standard-filename
-      (concat user-emacs-directory "var/eln-cache/"))))
-#+end_src
-
-** Init
-:PROPERTIES:
-:header-args: :tangle (concat (org-entry-get nil "EMACS-DIR" t) "init.el") :comments link
-:END:
-Init File, tangled [[./init.el][there]]
-Checking if using emacs from my nix config, loads config and custom.el
-Sets up package.el 
-#+begin_src emacs-lisp :comments no
-  ;;; -*- lexical-binding: t; -*-
-#+end_src
-
-#+begin_src emacs-lisp
-  (setq-default materus/use-nix-packages (require 'materus-config nil 'noerror))
-  (require 'cl-lib)
-  (require 'package)
-
-  (add-to-list 'load-path (concat user-emacs-directory "etc/materus/extra"))                ; Extra load path for packages
-  (setq package-user-dir (concat user-emacs-directory "var/elpa/" emacs-version "/" ))      ; Set elpa path for this emacs version, should use nix packages anyway so keeping just in case
-  (setq package-gnupghome-dir (concat user-emacs-directory "var/elpa/gnupg/" ))             ; Set path to gnupg for elpa
-  (add-to-list 'package-archives 
-               '("nongnu-devel" . "https://elpa.nongnu.org/nongnu-devel/"))                 ; Add nongnu-devel repo to package manager
-  (add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/") t)              ; Add melpa repo to package manager
-  (customize-set-variable 'package-archive-priorities '(("gnu"    . 99)
-                                                        ("nongnu" . 80)
-                                                        ("nongnu-devel" . 70)
-                                                        ("melpa"  . 0)))                    ; Repository priority
-
-  (load (concat user-emacs-directory "etc/materus/nix-init") t)
-  (load (concat user-emacs-directory "etc/materus/emacs-config"))
-  (load custom-file t)
-#+end_src
-** Compile Time
-Some defvar so native-compile wont complain
-#+begin_src emacs-lisp :comments no
-  ;;; -*- lexical-binding: t; -*-
-#+end_src
-#+begin_src emacs-lisp
-  (eval-when-compile 
-    (defvar doom-modeline-support-imenu nil)
-    (defvar display-time-24hr-format nil)
-    (defvar lsp-nix-nixd-formatting-command nil)
-    (defvar cua--cua-keys-keymap nil)
-    (declare-function lsp-stdio-connection "lsp-mode" (COMMAND &optional TEST-COMMAND))
-    (declare-function make-lsp-client "lsp-mode")
-    (declare-function lsp-register-client "lsp-mode" ( CLIENT ))
-    )
-#+end_src
-* Packages
-Package manager config if not using nix.
-After some testing default package manager works best for me.
-** Init package manager config
-
-#+begin_src emacs-lisp
-  
-#+end_src
-
-** Packages list & function
-Packages to install
-#+begin_src emacs-lisp
-  (defvar materus/packages
-    '(
-      use-package
-      elcord
-      dashboard
-      magit
-      git-timemachine
-      avy
-      vterm
-      direnv
-      projectile
-      clipetty
-      which-key
-      iedit
-      hideshowvis
-      evil
-      perspective
-      treemacs-evil
-      treemacs
-      treemacs-nerd-icons
-      treemacs-perspective
-      treemacs-icons-dired
-      treemacs-magit
-      treemacs-projectile
-      tree-edit
-      nerd-icons
-      nerd-icons-completion
-      minions
-      rainbow-delimiters
-      rainbow-mode
-      cmake-mode
-      lsp-mode
-      lsp-java
-      lsp-jedi
-      lsp-haskell
-      lsp-ui
-      lsp-treemacs
-      flycheck
-      gradle-mode
-      groovy-mode
-      kotlin-mode
-      dap-mode
-      d-mode
-      lua-mode
-      multiple-cursors
-      org
-      org-contrib
-      org-ql
-      org-rainbow-tags
-      org-roam
-      org-roam-ui
-      org-review
-      org-present
-      org-superstar
-      org-auto-tangle
-      visual-fill-column
-      csharp-mode
-      markdown-mode
-      json-mode
-      nix-mode
-      nixfmt
-      no-littering
-      right-click-context
-      dracula-theme
-      doom-themes
-      doom-modeline
-      popper
-      undo-tree
-      bash-completion
-      eldoc-box
-      yasnippet
-      async
-      request
-      nix-ts-mode
-      markdown-ts-mode
-      llvm-ts-mode
-      treesit-fold
-      treesit-auto
-      tree-sitter-langs
-      eat
-      vlf
-      edit-indirect
-      zones
-      sudo-edit
-      toc-org
-      empv
-      volatile-highlights
-      highlight
-      elfeed
-      elfeed-goodies
-      drag-stuff
-      dirvish
-      rg
-      shfmt
-      ;; Completions & Minibuffer
-      corfu
-      company
-      company-quickhelp
-      cape
-      embark
-      embark-consult
-      orderless
-      vertico
-      marginalia
-      )
-    "A list of packages to ensure are installed at launch.")
-
-  (defun materus/packages-installed-p ()
-    (cl-loop for p in materus/packages
-             when (not (package-installed-p p)) do (cl-return nil)
-             finally (cl-return t)))
-
-  (defun materus/install-packages ()
-    (unless (materus/packages-installed-p)
-      (package-refresh-contents)
-      (dolist (p materus/packages)
-        (when (not (package-installed-p p))
-          (package-install p)))))
-  (unless materus/use-nix-packages 
-    (materus/install-packages))
-#+end_src
-
-* Configuration
-General configurations of packages modes etc.
-** No Littering
-Set up no littering
-
-** Graphical
-Graphical related settings.
-*** Mouse
-
-*** Misc
-#+begin_src emacs-lisp
-
-  ;; Rainbow mode
-
-
-#+end_src
-*** Dashboard
-
-*** Modeline
-
-*** Diff-hl
-
-** Org-mode
-Org mode settings
-
-#+begin_SRC emacs-lisp
-  
-
-#+end_SRC
-** Completions
-*** Style
-
-*** Minibuffer
-
-
-
-** Miscellaneous
-
-
-
-
-
-
-* Programming
-** LSP
-#+begin_src emacs-lisp
-  (use-package lsp-mode
-    :custom
-    (lsp-completion-provider :none) ;; we use Corfu!
-    :config
-    (setq lsp-keep-workspace-alive nil)
-    (require 'lsp-ui)
-    :init
-    (defun materus/orderless-dispatch-flex-first (_pattern index _total)
-      (and (eq index 0) 'orderless-flex))
-
-    (defun materus/lsp-mode-setup-completion ()
-      (setf (alist-get 'styles (alist-get 'lsp-capf completion-category-defaults))
-            '(orderless))
-      ;; Optionally configure the first word as flex filtered.
-      (add-hook 'orderless-style-dispatchers #'materus/orderless-dispatch-flex-first nil 'local)
-      ;; Optionally configure the cape-capf-buster.
-      (setq-local completion-at-point-functions (list (cape-capf-buster #'lsp-completion-at-point))))
-
-    :hook
-    (lsp-completion-mode . materus/lsp-mode-setup-completion))
-
-   
-
-
-    (setq read-process-output-max (* 1024 1024 3))
-
-    (defun lsp-booster--advice-json-parse (old-fn &rest args)
-      "Try to parse bytecode instead of json."
-      (or
-       (when (equal (following-char) ?#)
-         (let ((bytecode (read (current-buffer))))
-           (when (byte-code-function-p bytecode)
-             (funcall bytecode))))
-       (apply old-fn args)))
-    (advice-add (if (progn (require 'json)
-                           (fboundp 'json-parse-buffer))
-                    'json-parse-buffer
-                  'json-read)
-                :around
-                #'lsp-booster--advice-json-parse)
-
-    (defun lsp-booster--advice-final-command (old-fn cmd &optional test?)
-      "Prepend emacs-lsp-booster command to lsp CMD."
-      (let ((orig-result (funcall old-fn cmd test?)))
-        (if (and (not test?)                                                             ; for check lsp-server-present?
-                 (not (file-remote-p default-directory))                                 ; see lsp-resolve-final-command, it would add extra shell wrapper
-                 lsp-use-plists
-                 (not (functionp 'json-rpc-connection))                                  ; native json-rpc
-                 (executable-find "emacs-lsp-booster"))
-            (progn
-              (when-let* ((command-from-exec-path (executable-find (car orig-result))))  ; resolve command from exec-path (in case not found in $PATH)
-                (setcar orig-result command-from-exec-path))
-              (message "Using emacs-lsp-booster for %s!" orig-result)
-              (cons "emacs-lsp-booster" orig-result))
-          orig-result)))
-    (advice-add 'lsp-resolve-final-command :around #'lsp-booster--advice-final-command)
-#+end_src
-** DAP
-#+begin_src emacs-lisp
-  (use-package dap-mode
-    :config
-    (require 'dap-lldb)
-    (require 'dap-gdb-lldb)
-    (require 'dap-cpptools)
-    (setq dap-gdb-lldb-extension-version "0.27.0")
-    (dap-auto-configure-mode 1)
-    )
-
-#+end_src
-** Nix
-#+begin_src emacs-lisp
-  (use-package nix-mode)
-  (use-package nix-ts-mode)
-  (use-package nixfmt)
-  (use-package lsp-nix)
-  (with-eval-after-load 'lsp-mode
-    (add-to-list 'lsp-disabled-clients '(nix-mode . nix-nil)) 
-    (setq lsp-nix-nixd-server-path "nixd"
-          lsp-nix-nixd-formatting-command [ "nixfmt" ]
-          lsp-nix-nixd-nixpkgs-expr "import <nixpkgs> { }"))
-
-  (setq lsp-nix-nixd-formatting-command "nixfmt")
-  (add-hook 'nix-mode-hook 'lsp-deferred)
-  (add-hook 'nix-mode-hook 'display-line-numbers-mode)
-
-  (add-hook 'nix-ts-mode-hook 'lsp-deferred)
-  (add-hook 'nix-ts-mode-hook 'display-line-numbers-mode)
-
-  (when (treesit-language-available-p 'nix) (push '(nix-mode . nix-ts-mode) major-mode-remap-alist))
-#+end_src
-** Emacs Lisp
-#+begin_src emacs-lisp
-  (add-hook 'emacs-lisp-mode-hook 'display-line-numbers-mode)
-#+end_src
-** C/C++
-#+begin_src emacs-lisp
-  (use-package lsp-clangd)
-  (setq lsp-clients-clangd-args '("--fallback-style=microsoft"))
-
-  (add-hook 'c-mode-hook 'lsp-deferred)
-  (add-hook 'c-mode-hook 'display-line-numbers-mode)
-  (add-hook 'c-ts-mode-hook 'lsp-deferred)
-  (add-hook 'c-ts-mode-hook 'display-line-numbers-mode)
-
-  (add-hook 'c++-mode-hook 'lsp-deferred)
-  (add-hook 'c++-mode-hook 'display-line-numbers-mode)
-  (add-hook 'c++-ts-mode-hook 'lsp-deferred)
-  (add-hook 'c++-ts-mode-hook 'display-line-numbers-mode)
-  (when (treesit-language-available-p 'c) (push '(c-mode . c-ts-mode) major-mode-remap-alist))
-  (when (treesit-language-available-p 'cpp) (push '(c++-mode . c++-ts-mode) major-mode-remap-alist))
-
-  (add-to-list 'c-default-style '(c-mode . "bsd"))
-  (add-to-list 'c-default-style '(c++-mode . "bsd"))
-  (add-to-list 'c-default-style '(c-ts-mode . "bsd"))
-  (add-to-list 'c-default-style '(c++-ts-mode . "bsd"))
-#+end_src
-** Python
-#+begin_src emacs-lisp
-  (use-package lsp-pyright)
-  (setq lsp-pyright-langserver-command "pyright")
-  (add-hook 'python-mode-hook 'lsp-deferred)
-  (add-hook 'python-ts-mode-hook 'lsp-deferred)
-  (when (treesit-language-available-p 'python) (push '(python-mode . python-ts-mode) major-mode-remap-alist))
-#+end_src
-** Java
-#+begin_src emacs-lisp
-  (use-package lsp-java)
-  (setq lsp-java-vmargs '("-XX:+UseParallelGC" "-XX:GCTimeRatio=4" "-XX:AdaptiveSizePolicyWeight=90" "-Dsun.zip.disableMemoryMapping=true" "-Xmx2G" "-Xms100m"))
-  (add-hook 'java-mode-hook (lambda ()  (when (getenv "JDTLS_PATH") (setq lsp-java-server-install-dir (getenv "JDTLS_PATH")))))
-  (add-hook 'java-mode-hook 'lsp-deferred)
-  (add-hook 'java-mode-hook 'display-line-numbers-mode)
-
-  (add-hook 'java-ts-mode-hook (lambda ()  (when (getenv "JDTLS_PATH") (setq lsp-java-server-install-dir (getenv "JDTLS_PATH")))))
-  (add-hook 'java-ts-mode-hook 'lsp-deferred)
-  (add-hook 'java-ts-mode-hook 'display-line-numbers-mode)
-
-  (when (treesit-language-available-p 'java) (push '(java-mode . java-ts-mode) major-mode-remap-alist))
-
-  (add-to-list 'c-default-style '(java-mode . "java"))
-  (add-to-list 'c-default-style '(java-ts-mode . "java"))
-#+end_src
-
-** Other
-#+begin_src emacs-lisp
-  (add-to-list 'c-default-style '(awk-mode . "awk"))
-  (add-to-list 'c-default-style '(other . "bsd"))
-
-
-
-
-  (setq-default c-basic-offset 4)
-  (setq-default c-indent-level 4)
-
-  (setq-default c-ts-mode-indent-offset 4)
-  (setq-default c-ts-mode-indent-style 'bsd)
-
-  (setq-default c-hungry-delete-key t)
-
-  (electric-pair-mode 1)
-  (electric-indent-mode -1)
-  (setq-default tab-width 4)
-  (setq-default indent-tabs-mode nil)
-
-  (add-hook 'prog-mode-hook 'display-line-numbers-mode)
-  (add-hook 'prog-mode-hook 'electric-indent-local-mode)
-#+end_src
-* Keybindings
-** Keys
-
-
-
-* Snippets
-** Yasnippet init
-
-
-
-* Other
-** Update config script
-#+begin_src emacs-lisp
-  (defun materus/sync-config ()
-    "Function to sync config from MATERUS_CONFIG_DIR to emacs folder"
-    (if (getenv "MATERUS_CONFIG_DIR")
-        (progn (copy-directory (concat (getenv "MATERUS_CONFIG_DIR") "extraFiles/config/emacs/") 
-                               user-emacs-directory t t t) t)
-      (progn (message "Can't use if MATERUS_CONFIG_DIR is not set!") nil)))
-  (defun materus/compare-file-time (file1 file2)
-    "Returns t when file1 is newer than file2"
-    (time-less-p 
-     (nth 5 (file-attributes file2))
-     (nth 5 (file-attributes file1))
-     ))
-  (defun materus/compile-if-needed (file)
-    (unless (and (file-exists-p (concat user-emacs-directory file "c"))
-                 (materus/compare-file-time (concat user-emacs-directory file "c")
-                                            (concat user-emacs-directory file)))
-      (byte-compile-file (concat user-emacs-directory file)))
-    )
-  (defun materus/compile-config-if-needed ()
-    (materus/compile-if-needed "early-init.el")
-    (materus/compile-if-needed "init.el")
-    (materus/compile-if-needed "etc/materus/emacs-config.el"))
-  (defun materus/update-config ()
-    "Will sync and compile config"
-    (interactive)
-    (when (materus/sync-config) (materus/compile-config-if-needed) (byte-recompile-directory (concat user-emacs-directory "etc/materus/extra") 0 t)))
-#+end_src
-
-** Byte compile
-Byte compile files.
-#+begin_src emacs-lisp
-  (materus/compile-config-if-needed)
-#+end_src
-* Test
-Just for testing some code
-#+begin_src emacs-lisp 
-  ;;; (global-set-key (kbd "C-∇") (kbd "C-H"))
-  ;;; (global-set-key (kbd "H-∇") (lambda () (interactive) (insert-char #x2207)))
-  ;;; (buffer-text-pixel-size)
-  ;;; (set-window-vscroll nil 960 t t)
-
-  ;;;  (set-window-margins (selected-window) 0 0)
-
-  ;;; (buffer-local-value 'var (get-buffer  "your-buffer-name"))
-
-  ;;; (setq completion-styles '(orderless basic)
-  ;;;   completion-category-defaults nil
-  ;;;   completion-category-overrides '((file (styles partial-completion))))
-#+end_src 
diff --git a/extraFiles/config/emacs/etc/materus/emacs-config.el b/extraFiles/config/emacs/etc/materus/emacs-config.el
deleted file mode 100644
index f0e1c6b..0000000
--- a/extraFiles/config/emacs/etc/materus/emacs-config.el
+++ /dev/null
@@ -1,362 +0,0 @@
-;;; -*- lexical-binding: t; -*-
-
-;; [[file:../../emacs-materus-config.org::*Compile Time][Compile Time:2]]
-(eval-when-compile 
-  (defvar doom-modeline-support-imenu nil)
-  (defvar display-time-24hr-format nil)
-  (defvar lsp-nix-nixd-formatting-command nil)
-  (defvar cua--cua-keys-keymap nil)
-  (declare-function lsp-stdio-connection "lsp-mode" (COMMAND &optional TEST-COMMAND))
-  (declare-function make-lsp-client "lsp-mode")
-  (declare-function lsp-register-client "lsp-mode" ( CLIENT ))
-  )
-;; Compile Time:2 ends here
-
-;; [[file:../../emacs-materus-config.org::*Init package manager config][Init package manager config:1]]
-
-;; Init package manager config:1 ends here
-
-;; [[file:../../emacs-materus-config.org::*Packages list & function][Packages list & function:1]]
-(defvar materus/packages
-  '(
-    use-package
-    elcord
-    dashboard
-    magit
-    git-timemachine
-    avy
-    vterm
-    direnv
-    projectile
-    clipetty
-    which-key
-    iedit
-    hideshowvis
-    evil
-    perspective
-    treemacs-evil
-    treemacs
-    treemacs-nerd-icons
-    treemacs-perspective
-    treemacs-icons-dired
-    treemacs-magit
-    treemacs-projectile
-    tree-edit
-    nerd-icons
-    nerd-icons-completion
-    minions
-    rainbow-delimiters
-    rainbow-mode
-    cmake-mode
-    lsp-mode
-    lsp-java
-    lsp-jedi
-    lsp-haskell
-    lsp-ui
-    lsp-treemacs
-    flycheck
-    gradle-mode
-    groovy-mode
-    kotlin-mode
-    dap-mode
-    d-mode
-    lua-mode
-    multiple-cursors
-    org
-    org-contrib
-    org-ql
-    org-rainbow-tags
-    org-roam
-    org-roam-ui
-    org-review
-    org-present
-    org-superstar
-    org-auto-tangle
-    visual-fill-column
-    csharp-mode
-    markdown-mode
-    json-mode
-    nix-mode
-    nixfmt
-    no-littering
-    right-click-context
-    dracula-theme
-    doom-themes
-    doom-modeline
-    popper
-    undo-tree
-    bash-completion
-    eldoc-box
-    yasnippet
-    async
-    request
-    nix-ts-mode
-    markdown-ts-mode
-    llvm-ts-mode
-    treesit-fold
-    treesit-auto
-    tree-sitter-langs
-    eat
-    vlf
-    edit-indirect
-    zones
-    sudo-edit
-    toc-org
-    empv
-    volatile-highlights
-    highlight
-    elfeed
-    elfeed-goodies
-    drag-stuff
-    dirvish
-    rg
-    shfmt
-    ;; Completions & Minibuffer
-    corfu
-    company
-    company-quickhelp
-    cape
-    embark
-    embark-consult
-    orderless
-    vertico
-    marginalia
-    )
-  "A list of packages to ensure are installed at launch.")
-
-(defun materus/packages-installed-p ()
-  (cl-loop for p in materus/packages
-           when (not (package-installed-p p)) do (cl-return nil)
-           finally (cl-return t)))
-
-(defun materus/install-packages ()
-  (unless (materus/packages-installed-p)
-    (package-refresh-contents)
-    (dolist (p materus/packages)
-      (when (not (package-installed-p p))
-        (package-install p)))))
-(unless materus/use-nix-packages 
-  (materus/install-packages))
-;; Packages list & function:1 ends here
-
-;; [[file:../../emacs-materus-config.org::*Misc][Misc:1]]
-;; Rainbow mode
-;; Misc:1 ends here
-
-;; [[file:../../emacs-materus-config.org::*Org-mode][Org-mode:1]]
-
-;; Org-mode:1 ends here
-
-;; [[file:../../emacs-materus-config.org::*LSP][LSP:1]]
-(use-package lsp-mode
-  :custom
-  (lsp-completion-provider :none) ;; we use Corfu!
-  :config
-  (setq lsp-keep-workspace-alive nil)
-  (require 'lsp-ui)
-  :init
-  (defun materus/orderless-dispatch-flex-first (_pattern index _total)
-    (and (eq index 0) 'orderless-flex))
-
-  (defun materus/lsp-mode-setup-completion ()
-    (setf (alist-get 'styles (alist-get 'lsp-capf completion-category-defaults))
-          '(orderless))
-    ;; Optionally configure the first word as flex filtered.
-    (add-hook 'orderless-style-dispatchers #'materus/orderless-dispatch-flex-first nil 'local)
-    ;; Optionally configure the cape-capf-buster.
-    (setq-local completion-at-point-functions (list (cape-capf-buster #'lsp-completion-at-point))))
-
-  :hook
-  (lsp-completion-mode . materus/lsp-mode-setup-completion))
-
- 
-
-
-  (setq read-process-output-max (* 1024 1024 3))
-
-  (defun lsp-booster--advice-json-parse (old-fn &rest args)
-    "Try to parse bytecode instead of json."
-    (or
-     (when (equal (following-char) ?#)
-       (let ((bytecode (read (current-buffer))))
-         (when (byte-code-function-p bytecode)
-           (funcall bytecode))))
-     (apply old-fn args)))
-  (advice-add (if (progn (require 'json)
-                         (fboundp 'json-parse-buffer))
-                  'json-parse-buffer
-                'json-read)
-              :around
-              #'lsp-booster--advice-json-parse)
-
-  (defun lsp-booster--advice-final-command (old-fn cmd &optional test?)
-    "Prepend emacs-lsp-booster command to lsp CMD."
-    (let ((orig-result (funcall old-fn cmd test?)))
-      (if (and (not test?)                                                             ; for check lsp-server-present?
-               (not (file-remote-p default-directory))                                 ; see lsp-resolve-final-command, it would add extra shell wrapper
-               lsp-use-plists
-               (not (functionp 'json-rpc-connection))                                  ; native json-rpc
-               (executable-find "emacs-lsp-booster"))
-          (progn
-            (when-let* ((command-from-exec-path (executable-find (car orig-result))))  ; resolve command from exec-path (in case not found in $PATH)
-              (setcar orig-result command-from-exec-path))
-            (message "Using emacs-lsp-booster for %s!" orig-result)
-            (cons "emacs-lsp-booster" orig-result))
-        orig-result)))
-  (advice-add 'lsp-resolve-final-command :around #'lsp-booster--advice-final-command)
-;; LSP:1 ends here
-
-;; [[file:../../emacs-materus-config.org::*DAP][DAP:1]]
-(use-package dap-mode
-  :config
-  (require 'dap-lldb)
-  (require 'dap-gdb-lldb)
-  (require 'dap-cpptools)
-  (setq dap-gdb-lldb-extension-version "0.27.0")
-  (dap-auto-configure-mode 1)
-  )
-;; DAP:1 ends here
-
-;; [[file:../../emacs-materus-config.org::*Nix][Nix:1]]
-(use-package nix-mode)
-(use-package nix-ts-mode)
-(use-package nixfmt)
-(use-package lsp-nix)
-(with-eval-after-load 'lsp-mode
-  (add-to-list 'lsp-disabled-clients '(nix-mode . nix-nil)) 
-  (setq lsp-nix-nixd-server-path "nixd"
-        lsp-nix-nixd-formatting-command [ "nixfmt" ]
-        lsp-nix-nixd-nixpkgs-expr "import <nixpkgs> { }"))
-
-(setq lsp-nix-nixd-formatting-command "nixfmt")
-(add-hook 'nix-mode-hook 'lsp-deferred)
-(add-hook 'nix-mode-hook 'display-line-numbers-mode)
-
-(add-hook 'nix-ts-mode-hook 'lsp-deferred)
-(add-hook 'nix-ts-mode-hook 'display-line-numbers-mode)
-
-(when (treesit-language-available-p 'nix) (push '(nix-mode . nix-ts-mode) major-mode-remap-alist))
-;; Nix:1 ends here
-
-;; [[file:../../emacs-materus-config.org::*Emacs Lisp][Emacs Lisp:1]]
-(add-hook 'emacs-lisp-mode-hook 'display-line-numbers-mode)
-;; Emacs Lisp:1 ends here
-
-;; [[file:../../emacs-materus-config.org::*C/C++][C/C++:1]]
-(use-package lsp-clangd)
-(setq lsp-clients-clangd-args '("--fallback-style=microsoft"))
-
-(add-hook 'c-mode-hook 'lsp-deferred)
-(add-hook 'c-mode-hook 'display-line-numbers-mode)
-(add-hook 'c-ts-mode-hook 'lsp-deferred)
-(add-hook 'c-ts-mode-hook 'display-line-numbers-mode)
-
-(add-hook 'c++-mode-hook 'lsp-deferred)
-(add-hook 'c++-mode-hook 'display-line-numbers-mode)
-(add-hook 'c++-ts-mode-hook 'lsp-deferred)
-(add-hook 'c++-ts-mode-hook 'display-line-numbers-mode)
-(when (treesit-language-available-p 'c) (push '(c-mode . c-ts-mode) major-mode-remap-alist))
-(when (treesit-language-available-p 'cpp) (push '(c++-mode . c++-ts-mode) major-mode-remap-alist))
-
-(add-to-list 'c-default-style '(c-mode . "bsd"))
-(add-to-list 'c-default-style '(c++-mode . "bsd"))
-(add-to-list 'c-default-style '(c-ts-mode . "bsd"))
-(add-to-list 'c-default-style '(c++-ts-mode . "bsd"))
-;; C/C++:1 ends here
-
-;; [[file:../../emacs-materus-config.org::*Python][Python:1]]
-(use-package lsp-pyright)
-(setq lsp-pyright-langserver-command "pyright")
-(add-hook 'python-mode-hook 'lsp-deferred)
-(add-hook 'python-ts-mode-hook 'lsp-deferred)
-(when (treesit-language-available-p 'python) (push '(python-mode . python-ts-mode) major-mode-remap-alist))
-;; Python:1 ends here
-
-;; [[file:../../emacs-materus-config.org::*Java][Java:1]]
-(use-package lsp-java)
-(setq lsp-java-vmargs '("-XX:+UseParallelGC" "-XX:GCTimeRatio=4" "-XX:AdaptiveSizePolicyWeight=90" "-Dsun.zip.disableMemoryMapping=true" "-Xmx2G" "-Xms100m"))
-(add-hook 'java-mode-hook (lambda ()  (when (getenv "JDTLS_PATH") (setq lsp-java-server-install-dir (getenv "JDTLS_PATH")))))
-(add-hook 'java-mode-hook 'lsp-deferred)
-(add-hook 'java-mode-hook 'display-line-numbers-mode)
-
-(add-hook 'java-ts-mode-hook (lambda ()  (when (getenv "JDTLS_PATH") (setq lsp-java-server-install-dir (getenv "JDTLS_PATH")))))
-(add-hook 'java-ts-mode-hook 'lsp-deferred)
-(add-hook 'java-ts-mode-hook 'display-line-numbers-mode)
-
-(when (treesit-language-available-p 'java) (push '(java-mode . java-ts-mode) major-mode-remap-alist))
-
-(add-to-list 'c-default-style '(java-mode . "java"))
-(add-to-list 'c-default-style '(java-ts-mode . "java"))
-;; Java:1 ends here
-
-;; [[file:../../emacs-materus-config.org::*Other][Other:1]]
-(add-to-list 'c-default-style '(awk-mode . "awk"))
-(add-to-list 'c-default-style '(other . "bsd"))
-
-
-
-
-(setq-default c-basic-offset 4)
-(setq-default c-indent-level 4)
-
-(setq-default c-ts-mode-indent-offset 4)
-(setq-default c-ts-mode-indent-style 'bsd)
-
-(setq-default c-hungry-delete-key t)
-
-(electric-pair-mode 1)
-(electric-indent-mode -1)
-(setq-default tab-width 4)
-(setq-default indent-tabs-mode nil)
-
-(add-hook 'prog-mode-hook 'display-line-numbers-mode)
-(add-hook 'prog-mode-hook 'electric-indent-local-mode)
-;; Other:1 ends here
-
-;; [[file:../../emacs-materus-config.org::*Update config script][Update config script:1]]
-(defun materus/sync-config ()
-  "Function to sync config from MATERUS_CONFIG_DIR to emacs folder"
-  (if (getenv "MATERUS_CONFIG_DIR")
-      (progn (copy-directory (concat (getenv "MATERUS_CONFIG_DIR") "extraFiles/config/emacs/") 
-                             user-emacs-directory t t t) t)
-    (progn (message "Can't use if MATERUS_CONFIG_DIR is not set!") nil)))
-(defun materus/compare-file-time (file1 file2)
-  "Returns t when file1 is newer than file2"
-  (time-less-p 
-   (nth 5 (file-attributes file2))
-   (nth 5 (file-attributes file1))
-   ))
-(defun materus/compile-if-needed (file)
-  (unless (and (file-exists-p (concat user-emacs-directory file "c"))
-               (materus/compare-file-time (concat user-emacs-directory file "c")
-                                          (concat user-emacs-directory file)))
-    (byte-compile-file (concat user-emacs-directory file)))
-  )
-(defun materus/compile-config-if-needed ()
-  (materus/compile-if-needed "early-init.el")
-  (materus/compile-if-needed "init.el")
-  (materus/compile-if-needed "etc/materus/emacs-config.el"))
-(defun materus/update-config ()
-  "Will sync and compile config"
-  (interactive)
-  (when (materus/sync-config) (materus/compile-config-if-needed) (byte-recompile-directory (concat user-emacs-directory "etc/materus/extra") 0 t)))
-;; Update config script:1 ends here
-
-;; [[file:../../emacs-materus-config.org::*Byte compile][Byte compile:1]]
-(materus/compile-config-if-needed)
-;; Byte compile:1 ends here
-
-;; [[file:../../emacs-materus-config.org::*Test][Test:1]]
-;;; (global-set-key (kbd "C-∇") (kbd "C-H"))
-;;; (global-set-key (kbd "H-∇") (lambda () (interactive) (insert-char #x2207)))
-;;; (buffer-text-pixel-size)
-;;; (set-window-vscroll nil 960 t t)
-
-;;;  (set-window-margins (selected-window) 0 0)
-
-;;; (buffer-local-value 'var (get-buffer  "your-buffer-name"))
-
-;;; (setq completion-styles '(orderless basic)
-;;;   completion-category-defaults nil
-;;;   completion-category-overrides '((file (styles partial-completion))))
-;; Test:1 ends here
diff --git a/extraFiles/config/emacs/init.el b/extraFiles/config/emacs/init.el
index 75ca2e3..d2a2483 100644
--- a/extraFiles/config/emacs/init.el
+++ b/extraFiles/config/emacs/init.el
@@ -1,22 +1,548 @@
 ;;; -*- lexical-binding: t; -*-
+;; Prepare
+  (require 'materus-nix nil t)
+  (require 'elec-pair)
+  (when (not emacs-build-time)
+    (print "WARN: emacs-build-time not set up, using current time")
+    (setq emacs-build-time (decode-time (current-time))))
+  (add-to-list 'load-path (concat user-emacs-directory "etc/pkgs/"))                ; Extra load path for packages
 
-;; [[file:emacs-materus-config.org::*Init][Init:2]]
-(setq-default materus/use-nix-packages (require 'materus-config nil 'noerror))
-(require 'cl-lib)
-(require 'package)
+  (setq read-process-output-max (* 1024 1024 3))
 
-(add-to-list 'load-path (concat user-emacs-directory "etc/materus/extra"))                ; Extra load path for packages
-(setq package-user-dir (concat user-emacs-directory "var/elpa/" emacs-version "/" ))      ; Set elpa path for this emacs version, should use nix packages anyway so keeping just in case
-(setq package-gnupghome-dir (concat user-emacs-directory "var/elpa/gnupg/" ))             ; Set path to gnupg for elpa
-(add-to-list 'package-archives 
-             '("nongnu-devel" . "https://elpa.nongnu.org/nongnu-devel/"))                 ; Add nongnu-devel repo to package manager
-(add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/") t)              ; Add melpa repo to package manager
-(customize-set-variable 'package-archive-priorities '(("gnu"    . 99)
-                                                      ("nongnu" . 80)
-                                                      ("nongnu-devel" . 70)
-                                                      ("melpa"  . 0)))                    ; Repository priority
+;; Elpaca Init
+(defvar elpaca-installer-version 0.11)
+(defvar elpaca-directory (expand-file-name "var/elpaca/" user-emacs-directory))
+(defvar elpaca-builds-directory (expand-file-name (concat "builds/" emacs-version "/") elpaca-directory))
+(defvar elpaca-repos-directory (expand-file-name "repos/" elpaca-directory))
+(defvar elpaca-order '(elpaca :repo "https://github.com/progfolio/elpaca.git"
+                              :ref nil :depth 1 :inherit ignore
+                              :files (:defaults "elpaca-test.el" (:exclude "extensions"))
+                              :build (:not elpaca--activate-package)))
+(let* ((repo  (expand-file-name "elpaca/" elpaca-repos-directory))
+       (build (expand-file-name "elpaca/" elpaca-builds-directory))
+       (order (cdr elpaca-order))
+       (default-directory repo))
+  (add-to-list 'load-path (if (file-exists-p build) build repo))
+  (unless (file-exists-p repo)
+    (make-directory repo t)
+    (when (<= emacs-major-version 28) (require 'subr-x))
+    (condition-case-unless-debug err
+        (if-let* ((buffer (pop-to-buffer-same-window "*elpaca-bootstrap*"))
+    		      ((zerop (apply #'call-process `("git" nil ,buffer t "clone"
+                                                  ,@(when-let* ((depth (plist-get order :depth)))
+                                                      (list (format "--depth=%d" depth) "--no-single-branch"))
+                                                  ,(plist-get order :repo) ,repo))))
+                  ((zerop (call-process "git" nil buffer t "checkout"
+                                        (or (plist-get order :ref) "--"))))
+                  (emacs (concat invocation-directory invocation-name))
+                  ((zerop (call-process emacs nil buffer nil "-Q" "-L" "." "--batch"
+                                        "--eval" "(byte-recompile-directory \".\" 0 'force)")))
+                  ((require 'elpaca))
+                  ((elpaca-generate-autoloads "elpaca" repo)))
+            (progn (message "%s" (buffer-string)) (kill-buffer buffer))
+          (error "%s" (with-current-buffer buffer (buffer-string))))
+      ((error) (warn "%s" err) (delete-directory repo 'recursive))))
+  (unless (require 'elpaca-autoloads nil t)
+    (require 'elpaca)
+    (elpaca-generate-autoloads "elpaca" repo)
+    (let ((load-source-file-function nil)) (load "./elpaca-autoloads"))))
+(add-hook 'after-init-hook #'elpaca-process-queues)
+(elpaca `(,@elpaca-order))
 
-(load (concat user-emacs-directory "etc/materus/nix-init") t)
-(load (concat user-emacs-directory "etc/materus/emacs-config"))
-(load custom-file t)
-;; Init:2 ends here
+(elpaca elpaca-use-package
+  (elpaca-use-package-mode)
+  (setq elpaca-use-package-by-default t))
+
+;; Use package preffering built-in / nix packages
+(defmacro materus/use-package (package &rest body)
+  (if (locate-library (symbol-name `,package))
+      `(progn
+         (cl-pushnew (quote ,package) elpaca-ignored-dependencies)
+         (use-package ,package :ensure nil ,@body))
+    `(use-package ,package ,@body)))
+
+(use-package no-littering
+  :ensure (:wait t)
+  :config
+  (require 'recentf)
+  (setq package-quickstart-file  
+        (concat user-emacs-directory "var/quickstart/package-quickstart-" emacs-version ".el" ))
+  (add-to-list 'recentf-exclude
+               (recentf-expand-file-name no-littering-var-directory))
+  (add-to-list 'recentf-exclude
+               (recentf-expand-file-name no-littering-etc-directory)))
+
+;; Font & Text init
+(when (display-graphic-p)
+  (set-frame-font "Hack Nerd Font" nil t))
+(setq-default cursor-type '(bar . 2))
+(setq truncate-string-ellipsis "…")
+
+
+(setq text-mode-ispell-word-completion nil) ; Disable ispell
+(global-completion-preview-mode 1)
+(electric-pair-mode 1)
+(electric-indent-mode -1)
+;; Frame Init
+(when (daemonp)
+  (add-hook 'after-make-frame-functions 
+            (lambda (frame) (when (= (length (frame-list)) 2)
+                              (set-frame-parameter frame 'fullscreen 'maximized)) 
+              (select-frame-set-input-focus frame) )))
+(global-tab-line-mode 1)
+(setq window-divider-default-bottom-width 1)
+(setq window-divider-default-right-width 1)
+(window-divider-mode 1)
+(tool-bar-mode -1)
+(setq-default display-line-numbers-width 3)
+(setq-default display-line-numbers-widen t)
+
+ (defun startup-screen-advice (orig-fun &rest args)
+  (when (= (seq-count #'buffer-file-name (buffer-list)) 0)
+    (apply orig-fun args)))
+(advice-add 'display-startup-screen :around #'startup-screen-advice) ; Hide startup screen if started with file
+;; Mouse Init
+(context-menu-mode 1)
+(setq mouse-wheel-follow-mouse 't)
+(setq scroll-step 1)
+(setq mouse-drag-and-drop-region t)
+(xterm-mouse-mode 1)
+(pixel-scroll-precision-mode 1)
+(setq-default pixel-scroll-precision-large-scroll-height 10.0)
+(add-to-list 'c-default-style '(awk-mode . "awk"))
+(add-to-list 'c-default-style '(other . "bsd"))
+
+(setq-default tab-width 4)
+(setq-default indent-tabs-mode nil)
+(setq-default c-basic-offset 4)
+(setq-default c-indent-level 4)
+
+(setq-default c-ts-mode-indent-offset 4)
+(setq-default c-ts-mode-indent-style 'bsd)
+
+(setq-default c-hungry-delete-key t)
+
+
+
+(add-hook 'prog-mode-hook 'display-line-numbers-mode)
+(add-hook 'prog-mode-hook 'electric-indent-local-mode)
+(use-package dracula-theme :config
+  (if (daemonp)
+      (add-hook 'after-make-frame-functions
+                (lambda (frame)
+                  (with-selected-frame frame (load-theme 'dracula t))))
+    (load-theme 'dracula t)))
+
+(use-package rainbow-mode
+  :hook
+  ((org-mode . rainbow-mode)
+   (prog-mode . rainbow-mode)))
+(use-package rainbow-delimiters
+  :hook
+  (prog-mode . rainbow-delimiters-mode)
+  :config
+  (set-face-attribute 'rainbow-delimiters-depth-1-face nil :foreground "#FFFFFF")
+  (set-face-attribute 'rainbow-delimiters-depth-2-face nil :foreground "#FFFF00")
+  (set-face-attribute 'rainbow-delimiters-depth-5-face nil :foreground "#6A5ACD")
+  (set-face-attribute 'rainbow-delimiters-unmatched-face nil :foreground "#FF0000"))
+
+;; (use-package doom-modeline
+;;   :init (setq doom-modeline-support-imenu t)
+;;   :hook (elpaca-after-init . doom-modeline-mode)
+;;   :config
+;;   (setq doom-modeline-icon t)
+;;   (setq doom-modeline-project-detection 'auto)
+;;   (setq doom-modeline-height 20)
+;;   (setq doom-modeline-enable-word-count t)
+;;   (setq doom-modeline-minor-modes t)
+;;   (setq display-time-24hr-format t)
+;;   (display-time-mode 1)
+;;   (column-number-mode 1)
+;;   (line-number-mode 1))
+
+(use-package minions
+  :hook (elpaca-after-init . minions-mode))
+(use-package dashboard
+  :after (nerd-icons projectile)
+  :config
+  (setq dashboard-center-content t)
+  (setq dashboard-display-icons-p t)
+  (setq dashboard-icon-type 'nerd-icons)
+  (setq dashboard-projects-backend 'projectile)
+  (setq dashboard-items '((recents   . 5)
+                          (bookmarks . 5)
+                          (projects  . 5)
+                          (agenda    . 5)
+                          (registers . 5)))
+  (when (or (daemonp) (< (length command-line-args) 2))
+    (add-hook 'elpaca-after-init-hook #'dashboard-insert-startupify-lists)
+    (add-hook 'elpaca-after-init-hook #'dashboard-initialize)
+    (dashboard-setup-startup-hook)))
+(when (daemonp)
+  (setq initial-buffer-choice (lambda () (get-buffer "*dashboard*")))) ; Show dashboard when emacs is running as daemon)
+(use-package highlight-indent-guides
+  :hook ((prog-mode . highlight-indent-guides-mode)))
+(use-package eat)
+
+(materus/use-package vterm)
+(use-package helm
+  :config
+  (setq helm-x-icons-provider 'nerd-icons)
+  (setq helm-move-to-line-cycle-in-source nil)
+  (helm-mode 1)
+  )
+(use-package helm-projectile
+  :after (helm projectile))
+(use-package helm-ag
+  :after (helm))
+(use-package helm-rg
+  :after (helm)) 
+(use-package helm-ls-git
+  :after (helm))
+(use-package company
+  :hook
+  ((prog-mode . company-mode)))
+(use-package slime-company
+  :if (executable-find "sbcl")
+  :after (company slime))
+
+(use-package dirvish
+  :after (nerd-icons)
+ :config
+ (setq dired-mouse-drag-files t)
+ (dirvish-override-dired-mode 1)
+ (setq dirvish-attributes
+       '(vc-state
+         subtree-state
+         nerd-icons
+         collapse
+         git-msg
+         file-time 
+         file-size)))
+
+(use-package treemacs)
+(use-package treemacs-projectile
+  :after (projectile treemacs))
+(use-package treemacs-nerd-icons
+  :after (nerd-icons treemacs))
+(use-package treemacs-perspective
+  :after (treemacs))
+(use-package treemacs-mouse-interface
+  :after (treemacs)
+  :ensure nil)
+(use-package lsp-ui
+  :after (lsp-mode))
+(use-package lsp-mode
+  ;; :custom
+  ;; (lsp-completion-provider :none) ;; we use Corfu!
+  :config
+  (setq lsp-keep-workspace-alive nil)
+
+  
+  (defun lsp-booster--advice-json-parse (old-fn &rest args)
+    "Try to parse bytecode instead of json."
+    (or
+     (when (equal (following-char) ?#)
+       (let ((bytecode (read (current-buffer))))
+         (when (byte-code-function-p bytecode)
+           (funcall bytecode))))
+     (apply old-fn args)))
+  (advice-add (if (progn (require 'json)
+                         (fboundp 'json-parse-buffer))
+                  'json-parse-buffer
+                'json-read)
+              :around
+              #'lsp-booster--advice-json-parse)
+
+  (defun lsp-booster--advice-final-command (old-fn cmd &optional test?)
+    "Prepend emacs-lsp-booster command to lsp CMD."
+    (let ((orig-result (funcall old-fn cmd test?)))
+      (if (and (not test?)                                                             ; for check lsp-server-present?
+               (not (file-remote-p default-directory))                                 ; see lsp-resolve-final-command, it would add extra shell wrapper
+               lsp-use-plists
+               (not (functionp 'json-rpc-connection))                                  ; native json-rpc
+               (executable-find "emacs-lsp-booster"))
+          (progn
+            (when-let* ((command-from-exec-path (executable-find (car orig-result))))  ; resolve command from exec-path (in case not found in $PATH)
+              (setcar orig-result command-from-exec-path))
+            (message "Using emacs-lsp-booster for %s!" orig-result)
+            (cons "emacs-lsp-booster" orig-result))
+        orig-result)))
+  (advice-add 'lsp-resolve-final-command :around #'lsp-booster--advice-final-command))
+(use-package lsp-treemacs
+  :after (lsp-mode treemacs)
+  :config
+  (lsp-treemacs-sync-mode 1))
+
+
+(use-package dap-mode
+  :after (lsp-mode)
+  :config
+  (require 'dap-lldb)
+  (require 'dap-gdb-lldb)
+  (require 'dap-cpptools)
+  (setq dap-gdb-lldb-extension-version "0.27.0")
+  (dap-auto-configure-mode 1))
+
+(use-package yasnippet
+  :config
+  (yas-global-mode 1))
+(use-package lsp-clangd
+  :ensure nil
+  :after (lsp-mode)
+  :config
+  (setq lsp-clients-clangd-args '("--fallback-style=microsoft"))
+
+  (add-hook 'c-mode-hook 'lsp-deferred)
+  (add-hook 'c-mode-hook 'display-line-numbers-mode)
+  (add-hook 'c-ts-mode-hook 'lsp-deferred)
+  (add-hook 'c-ts-mode-hook 'display-line-numbers-mode)
+
+  (add-hook 'c++-mode-hook 'lsp-deferred)
+  (add-hook 'c++-mode-hook 'display-line-numbers-mode)
+  (add-hook 'c++-ts-mode-hook 'lsp-deferred)
+  (add-hook 'c++-ts-mode-hook 'display-line-numbers-mode)
+  ;(when (treesit-language-available-p 'c) (push '(c-mode . c-ts-mode) major-mode-remap-alist))
+  ;(when (treesit-language-available-p 'cpp) (push '(c++-mode . c++-ts-mode) major-mode-remap-alist))
+
+  (add-to-list 'c-default-style '(c-mode . "bsd"))
+  (add-to-list 'c-default-style '(c++-mode . "bsd"))
+  (add-to-list 'c-default-style '(c-ts-mode . "bsd"))
+  (add-to-list 'c-default-style '(c++-ts-mode . "bsd")))
+
+(use-package lsp-java
+  :after (lsp-mode)
+  :config
+  (setq lsp-java-vmargs '("-XX:+UseParallelGC" "-XX:GCTimeRatio=4" "-XX:AdaptiveSizePolicyWeight=90" "-Dsun.zip.disableMemoryMapping=true" "-Xmx4G" "-Xms512m"))
+  ;;(add-hook 'java-mode-hook (lambda ()  (when (getenv "JDTLS_PATH") (setq lsp-java-server-install-dir (getenv "JDTLS_PATH")))))
+  (add-hook 'java-mode-hook 'lsp-deferred)
+  (add-hook 'java-mode-hook 'display-line-numbers-mode)
+
+  ;;(add-hook 'java-ts-mode-hook (lambda ()  (when (getenv "JDTLS_PATH") (setq lsp-java-server-install-dir (getenv "JDTLS_PATH")))))
+  (add-hook 'java-ts-mode-hook 'lsp-deferred)
+  (add-hook 'java-ts-mode-hook 'display-line-numbers-mode)
+
+  (when (treesit-language-available-p 'java) (push '(java-mode . java-ts-mode) major-mode-remap-alist))
+
+  (add-to-list 'c-default-style '(java-mode . "java"))
+  (add-to-list 'c-default-style '(java-ts-mode . "java")))
+(use-package lsp-pyright
+  :after (lsp-mode)
+  :if (executable-find "python")
+  :config
+  (setq lsp-pyright-langserver-command "pyright")
+  (add-hook 'python-mode-hook 'lsp-deferred)
+  (add-hook 'python-ts-mode-hook 'lsp-deferred)
+  (when (treesit-language-available-p 'python) (push '(python-mode . python-ts-mode) major-mode-remap-alist)))
+(use-package nix-mode)
+(use-package nix-ts-mode)
+(use-package lsp-nix
+  :after (lsp-mode nix-mode nix-ts-mode)
+  :ensure nil
+  :config
+  (add-to-list 'lsp-disabled-clients '(nix-mode . nix-nil)) 
+  (setq lsp-nix-nixd-server-path "nixd")
+  (when (executable-find "nixfmt")  
+    (setq lsp-nix-nixd-formatting-command [ "nixfmt" ]) )
+  
+
+  (unless lsp-nix-nixd-nixos-options-expr
+    (setq lsp-nix-nixd-nixos-options-expr (concat "(builtins.getFlake \"/etc/nixos\").nixosConfigurations." (system-name) ".options")))
+  (unless lsp-nix-nixd-nixpkgs-expr
+    (setq lsp-nix-nixd-nixpkgs-expr (concat "(builtins.getFlake \"/etc/nixos\").nixosConfigurations." (system-name) ".pkgs")))
+  (add-hook 'nix-mode-hook 'lsp-deferred)
+  (add-hook 'nix-mode-hook 'display-line-numbers-mode)
+
+  (add-hook 'nix-ts-mode-hook 'lsp-deferred)
+  (add-hook 'nix-ts-mode-hook 'display-line-numbers-mode)
+
+  (when (treesit-language-available-p 'nix) (push '(nix-mode . nix-ts-mode) major-mode-remap-alist)))
+(use-package paredit)
+
+(use-package slime
+  :if (executable-find "sbcl")
+  :config
+  (setq inferior-lisp-program "sbcl")
+  (slime-setup '(slime-fancy slime-company)))
+(use-package bash-completion)
+(use-package diff-hl
+  :config
+  (setq diff-hl-side 'right)
+  (global-diff-hl-mode 1)
+  (diff-hl-margin-mode 1)
+  (diff-hl-flydiff-mode 1)
+  (global-diff-hl-show-hunk-mouse-mode 1))
+
+(use-package magit
+  :after (transient))
+
+(use-package git-timemachine
+  :defer t)
+(use-package org
+:mode (("\\.org$" . org-mode))
+:hook
+((org-mode . org-indent-mode)
+ (org-mode . display-line-numbers-mode)
+ )
+:config
+(require 'org-mouse)
+(require 'org-tempo)
+(setq org-src-window-setup 'current-window)
+(setq org-latex-pdf-process '("latexmk -xelatex -quiet -shell-escape -f -output-directory=%o %f"))
+(org-babel-do-load-languages
+ 'org-babel-load-languages
+ '((latex . t)
+   (emacs-lisp . t)
+   (shell . t)
+   (css . t)
+   (C . t)
+   (calc . t)
+   (awk . t)
+   (sql . t)
+   (sqlite . t)))
+(add-hook 'org-mode-hook (lambda ()
+                           (setq-local
+                            electric-pair-inhibit-predicate
+                            `(lambda (c)
+                               (if
+                                   (char-equal c ?<) t (,electric-pair-inhibit-predicate c)))))))
+(use-package org-modern
+  :after (org)
+  :hook
+  (org-indent-mode . org-modern-mode)
+  (org-agenda-finalize . org-modern-agenda)
+  :config 
+  (setq org-modern-block-name '("▼ " . "▲ ")))
+(use-package org-auto-tangle
+  :after (org)
+  :hook (org-mode . org-auto-tangle-mode)
+  )
+(use-package toc-org
+  :after (org)
+  :hook
+  ((org-mode . toc-org-mode )
+   (markdown-mode . toc-org-mode)))
+(use-package org-transclusion
+  :after (org))
+(use-package org-roam
+  :after (org))
+
+(use-package undo-tree
+  :config
+  (global-undo-tree-mode 1)
+  (defvar materus/undo-tree-dir (concat user-emacs-directory "var/undo-tree/"))
+  (unless (file-exists-p materus/undo-tree-dir)
+    (make-directory materus/undo-tree-dir t))
+  (setq undo-tree-visualizer-diff t)
+  (setq undo-tree-history-directory-alist `(("." . ,materus/undo-tree-dir )))
+  (setq undo-tree-visualizer-timestamps t))
+
+(use-package which-key
+    :config
+    (which-key-mode 1))
+(use-package projectile
+  :config (projectile-mode 1))
+(use-package  perspective
+  :config
+  (setq persp-mode-prefix-key (kbd "C-c M-p"))
+  (setq persp-modestring-short t)
+  (persp-mode 1)
+  )
+(defun materus/elcord-toggle (&optional _frame)
+  "Toggle elcord based on visible frames"
+  (if (> (length (frame-list)) 1)
+      (elcord-mode 1)
+    (elcord-mode -1))
+  )
+(use-package elcord
+  :config
+  (unless (daemonp) (elcord-mode 1))
+  (add-hook 'after-delete-frame-functions 'materus/elcord-toggle)
+  (add-hook 'server-after-make-frame-hook 'materus/elcord-toggle))
+(use-package drag-stuff)
+(use-package popper)
+(use-package visual-fill-column)
+(use-package so-long
+  :defer t)
+(use-package vlf
+  :defer t)
+(use-package crux)
+
+(use-package nerd-icons)
+(use-package svg-lib)  
+(use-package transient)
+;; Keybindings
+(defun materus/keybind-set ()
+  (require 'cua-base)                               
+
+  ;; CUA-like global
+  (define-key global-map (kbd "C-s") 'save-buffer)
+  (define-key global-map (kbd "C-r") 'query-replace)
+  (define-key global-map (kbd "C-S-r") 'replace-string)
+  (define-key global-map (kbd "M-r") 'query-replace-regexp)
+  (define-key global-map (kbd "M-S-r") 'replace-regexp)
+  (define-key global-map (kbd "C-a") 'mark-whole-buffer)
+  (define-key global-map (kbd "C-f") 'isearch-forward)
+  (define-key global-map (kbd "C-S-f") 'isearch-backward)
+  (define-key isearch-mode-map (kbd "C-f") 'isearch-repeat-forward)
+  (define-key isearch-mode-map (kbd "C-S-f") 'isearch-repeat-backward)
+
+  ;; CUA
+  (define-key cua--cua-keys-keymap (kbd "C-z") 'undo-tree-undo)
+  (define-key cua--cua-keys-keymap (kbd "C-y") 'undo-tree-redo)
+  (define-key cua-global-keymap (kbd "C-SPC") 'completion-at-point)
+  (define-key cua-global-keymap (kbd "C-M-SPC") 'cua-set-mark)
+  (cua-mode 1)
+  ;; TAB
+  (define-key global-map (kbd "C-<iso-lefttab>") #'indent-rigidly-left)
+  (define-key global-map (kbd "C-<tab>") #'indent-rigidly-right)
+
+  ;; Hyper
+  (define-key key-translation-map (kbd "<XF86Calculator>") 'event-apply-hyper-modifier )
+  (define-key key-translation-map (kbd "<Calculator>") 'event-apply-hyper-modifier )
+  (define-key key-translation-map (kbd "∇") 'event-apply-hyper-modifier )
+
+ 
+  ;; Unbind
+  (define-key isearch-mode-map (kbd "C-s") nil)
+  (define-key isearch-mode-map (kbd "C-r") nil)
+
+
+  ;; Dashboard
+  (define-key dashboard-mode-map (kbd "C-r") #'dashboard-refresh-buffer)
+  ;; Eat
+  (defvar cua--eat-semi-char-keymap (copy-keymap cua--cua-keys-keymap) "EAT semi-char mode CUA keymap")
+  (defvar cua--eat-char-keymap (copy-keymap cua--cua-keys-keymap) "EAT char mode CUA keymap")
+  
+  
+  (define-key cua--eat-semi-char-keymap (kbd "C-v") #'eat-yank)
+  (define-key cua--eat-char-keymap (kbd "C-S-v") #'eat-yank)
+  (define-key cua--eat-semi-char-keymap (kbd "C-c") #'copy-region-as-kill)
+  (define-key cua--eat-char-keymap (kbd "C-S-c") #'copy-region-as-kill)
+  (define-key eat-mode-map (kbd "C-<right>") #'eat-self-input)
+  (define-key eat-mode-map (kbd "C-<left>") #'eat-self-input)
+  
+  
+  (defun cua--eat-semi-char-override-keymap ()
+    (setq-local cua--keymap-alist (copy-tree cua--keymap-alist))
+    (setf (alist-get 'cua--ena-cua-keys-keymap cua--keymap-alist) cua--eat-semi-char-keymap))
+  (defun cua--eat-char-override-keymap ()
+    (setq-local cua--keymap-alist (copy-tree cua--keymap-alist))
+    (setf (alist-get 'cua--ena-cua-keys-keymap cua--keymap-alist) cua--eat-char-keymap))
+  
+  (advice-add 'eat-semi-char-mode :after #'cua--eat-semi-char-override-keymap)
+  (advice-add 'eat-char-mode :after #'cua--eat-char-override-keymap)
+  (add-hook 'eat-char-mode-hook #'cua--eat-char-override-keymap)
+  
+  ;; Helm
+  (global-set-key (kbd "M-x") 'helm-M-x)
+  (global-set-key (kbd "C-x r b") #'helm-filtered-bookmarks)
+  (global-set-key (kbd "C-x C-f") #'helm-find-files)
+  (global-set-key (kbd "C-x b") #'helm-mini)
+  ;; Treemacs
+  (define-key global-map (kbd "C-H-t") 'treemacs))
+
+
+(add-hook 'elpaca-after-init-hook #'materus/keybind-set )
+;; Custom File
+(add-hook 'elpaca-after-init-hook (lambda () (load custom-file 'noerror)))