From cf0c1a685eb5159f0779eb1aaa23287db04a5ae4 Mon Sep 17 00:00:00 2001 From: materus Date: Mon, 13 Nov 2023 00:44:03 +0100 Subject: [PATCH] configuration: changes to emacs and others --- configurations/host/materusPC/tmp.nix | 20 ++- .../profile/home/editor/emacs/default.nix | 125 ++++++++++++++---- extraFiles/config/emacs/config.el | 41 ------ extraFiles/config/emacs/materus-config.el | 4 + extraFiles/config/emacs/materus/init.el | 96 ++++++++++++++ extraFiles/config/emacs/materus/packages.el | 8 ++ 6 files changed, 223 insertions(+), 71 deletions(-) delete mode 100644 extraFiles/config/emacs/config.el create mode 100644 extraFiles/config/emacs/materus-config.el create mode 100644 extraFiles/config/emacs/materus/init.el create mode 100644 extraFiles/config/emacs/materus/packages.el diff --git a/configurations/host/materusPC/tmp.nix b/configurations/host/materusPC/tmp.nix index 12c8500..9567ade 100644 --- a/configurations/host/materusPC/tmp.nix +++ b/configurations/host/materusPC/tmp.nix @@ -32,8 +32,21 @@ # keyMap = "pl"; useXkbConfig = true; # use xkbOptions in tty. }; - services.xserver.layout = "pl"; + services.xserver.extraLayouts.hyper-pl = { + description = "PL, hyper mod3"; + languages = [ "pol" ]; + symbolsFile = pkgs.writeText "hyper-pl" '' + xkb_symbols "hyper-pl" + { + include "pl(basic)" + name[Group1]="Polish HYPR"; + + modifier_map Mod3 { }; + };''; + }; + services.xserver.layout = "hyper-pl"; + services.xserver.xkbOptions = "caps:hyper"; services.xserver.enable = true; services.xserver.videoDrivers = [ "amdgpu" ]; services.dbus.enable = true; @@ -52,7 +65,7 @@ xdg.portal.wlr.enable = true; xdg.portal.xdgOpenUsePortal = true; - services.xserver.exportConfiguration = true; + services.xserver.exportConfiguration = false; services.xserver.extraConfig = pkgs.lib.mkDefault '' Section "OutputClass" Identifier "amd-options" @@ -117,6 +130,7 @@ XDG_CONFIG_HOME = "\${HOME}/.config"; XDG_BIN_HOME = "\${HOME}/.local/bin"; XDG_DATA_HOME = "\${HOME}/.local/share"; + QT_XKB_CONFIG_ROOT = "\${XKB_CONFIG_ROOT}"; GTK_IM_MODULE="fcitx"; QT_IM_MODULE="fcitx"; XMODIFIERS="@im=fcitx"; @@ -193,6 +207,7 @@ };*/ environment.systemPackages = with pkgs; [ + firefox gamescope #(pkgs.lutris.override { extraLibraries = pkgs: with pkgs; [ pkgs.samba pkgs.jansson pkgs.tdb pkgs.libunwind pkgs.libusb1 pkgs.gnutls pkgs.gtk3 pkgs.pango ]; }) @@ -204,7 +219,6 @@ gtk4 gsettings-desktop-schemas libsForQt5.dolphin - vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default. patchelf diff --git a/configurations/profile/home/editor/emacs/default.nix b/configurations/profile/home/editor/emacs/default.nix index 1f762c0..52001e8 100644 --- a/configurations/profile/home/editor/emacs/default.nix +++ b/configurations/profile/home/editor/emacs/default.nix @@ -1,20 +1,7 @@ { config, lib, pkgs, materusArg, ... }: let - cfg = config.materus.profile.editor.emacs; - configPath = "${materusArg.cfg.path}" + "/extraFiles/config/emacs/"; - emacsPkgs = with pkgs;[ - python3 - lua - ]; -in -{ - options.materus.profile.editor.emacs.enable = materusArg.pkgs.lib.mkBoolOpt false "Enable emacs with materus cfg"; - - config = lib.mkIf cfg.enable { - programs.emacs = { - enable = true; - package = with pkgs; lib.mkDefault (if pkgs ? emacs-pgtk then emacs-pgtk else emacs29-gtk); - extraPackages = epkgs: with epkgs; [ + packages = epkgs: with epkgs; [ + load-relative elcord persp-mode dashboard @@ -25,6 +12,8 @@ in vterm centaur-tabs projectile + company + clipetty treemacs treemacs-nerd-icons @@ -39,11 +28,16 @@ in perspective minions telephone-line + rainbow-delimiters + use-package lsp-mode + lsp-bridge + dap-mode d-mode - + multiple-cursors org + org-rainbow-tags markdown-mode json-mode nix-mode @@ -51,18 +45,95 @@ in minimap moe-theme ]; - extraConfig = '' - ;;;; Set emacs PATH - - (setenv "PATH" (concat (getenv "PATH") ":${lib.makeBinPath emacsPkgs}")) - ${builtins.concatStringsSep "\n" (builtins.map (x: "(setq exec-path (append exec-path '(\""+x+"/bin\")))" ) emacsPkgs)} - - ;;;; Done setting PATH - ;;;; Config - ${builtins.readFile (configPath + "config.el")} - ;;;; Config End - ''; + + default-config = '' + (defvar materus/nix-packages t) + (defvar materus/init-from-home nil) + (defvar materus/init-from-default nil) + (when (not materus/init-from-home) + (setq-default materus/init-from-default t) + (message "Config loading not from homeDir, need "materus/init-from-home" variable in init.el") + ${setNixInit} + (require 'materus-config) + ) + ''; + + + + materus-config = epkgs: epkgs.trivialBuild rec { + pname = "materus-config"; + src = pkgs.symlinkJoin { + name = "materus-emacs-config"; + paths = [ + configPath + ]; + }; + version = "1.0"; + packageRequires = (packages epkgs); + buildPhase = '' + runHook preBuild + + emacs -L . --batch -f batch-byte-compile **/*.el + emacs -L . --batch -f batch-byte-compile *.el + + runHook postBuild + ''; + + installPhase = '' + runHook preInstall + + LISPDIR=$out/share/emacs/site-lisp + install -d $LISPDIR + install **.el **.elc $LISPDIR + cp -r materus $LISPDIR + emacs --batch -l package --eval "(package-generate-autoloads \"${pname}\" \"$LISPDIR\")" + + runHook postInstall + ''; + }; + + + + cfg = config.materus.profile.editor.emacs; + configPath = "${materusArg.cfg.path}" + "/extraFiles/config/emacs/"; + emacsPkgs = with pkgs;[ + python3 + lua + multimarkdown + git + ]; + setNixInit = '' + (setenv "PATH" (concat (getenv "PATH") ":${lib.makeBinPath emacsPkgs}")) + ${builtins.concatStringsSep "\n" (builtins.map (x: "(setq exec-path (append exec-path '(\""+x+"/bin\")))" ) emacsPkgs)} + (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"; + + config = lib.mkIf cfg.enable { + xdg.configFile."emacs/init.el".text = '' + (defvar materus/nix-packages nil) + (defvar materus/init-from-home t) + (defvar materus/init-from-default nil) + ${setNixInit} + (setq-default materus/init-from-home t) + (setq-default materus/nix-packages (require 'materus-config nil 'noerror)) + (when (not materus/nix-packages) + (load (concat user-emacs-directory "materus/init")) + (message "Config loaded from user dir") + ) + ''; + xdg.configFile."emacs/materus" = { + source = configPath + "materus"; + recursive = true; + }; + programs.emacs = { + enable = true; + package = with pkgs; lib.mkDefault (emacs29.override { withX = true; withGTK3 = true; withAlsaLib = true; withGconf = true; withImageMagick = true; withXwidgets = true; }); + extraPackages = epkgs: ((packages epkgs) ++ [(materus-config epkgs)]); + extraConfig = default-config; }; }; diff --git a/extraFiles/config/emacs/config.el b/extraFiles/config/emacs/config.el deleted file mode 100644 index dbf5186..0000000 --- a/extraFiles/config/emacs/config.el +++ /dev/null @@ -1,41 +0,0 @@ -;Graphical -(when (display-graphic-p) - (set-frame-font "FiraCode Nerd Font" nil t) - (tool-bar-mode -1) -) - -(load-theme 'moe-dark) - - -(setq-default cursor-type '(bar . 1)) -(pixel-scroll-precision-mode 1) -(setq pixel-scroll-precision-large-scroll-height 10.0) -(setq mouse-wheel-follow-mouse 't) -(setq scroll-step 1) -(setq mouse-drag-and-drop-region t) -(telephone-line-mode 1) -(minions-mode 1) - -;Hide startup screen if started with file -(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) - - - - - -;Enable dashboard -(dashboard-setup-startup-hook) -(when (daemonp) - (setq initial-buffer-choice (lambda () (get-buffer "*dashboard*"))) ; Show dashboard when emacs is running as daemon -) - - - - -:CUA -(cua-mode 1) -(global-set-key (kbd "C-y") 'undo-redo) - diff --git a/extraFiles/config/emacs/materus-config.el b/extraFiles/config/emacs/materus-config.el new file mode 100644 index 0000000..04a1815 --- /dev/null +++ b/extraFiles/config/emacs/materus-config.el @@ -0,0 +1,4 @@ +(message "Config loading from package") +(setq-default materus/nix-packages t) +(load-relative "materus/init") +(provide 'materus-config) \ No newline at end of file diff --git a/extraFiles/config/emacs/materus/init.el b/extraFiles/config/emacs/materus/init.el new file mode 100644 index 0000000..fe90187 --- /dev/null +++ b/extraFiles/config/emacs/materus/init.el @@ -0,0 +1,96 @@ +(defvar materus/nix-packages nil) +(defvar materus/init-from-home nil) + +(when (not materus/nix-packages) + (message "Not using config from packages, will compile") + (setq native-comp-async-report-warnings-errors nil) + (setq package-enable-at-startup nil) + (defvar straight-use-package-by-default nil) + (setq straight-use-package-by-default t) + (defvar bootstrap-version) + (let ((bootstrap-file + (expand-file-name "straight/repos/straight.el/bootstrap.el" user-emacs-directory)) + (bootstrap-version 6)) + (unless (file-exists-p bootstrap-file) + (with-current-buffer + (url-retrieve-synchronously + "https://raw.githubusercontent.com/radian-software/straight.el/develop/install.el" + 'silent 'inhibit-cookies) + (goto-char (point-max)) + (eval-print-last-sexp))) + (load bootstrap-file nil 'nomessage)) + (declare-function straight-use-package "straight" (&optional ARG)) + (declare-function load-relative "load-relative" (&optional ARG)) + (straight-use-package 'load-relative) + (require 'load-relative) + (load-relative "packages") + + (if materus/init-from-home + (byte-recompile-directory (concat (expand-file-name user-emacs-directory) "materus/" ) 0) + (byte-recompile-directory (expand-file-name user-emacs-directory) 0)) + +) + +(require 'telephone-line) +(require 'elcord) +(require 'dashboard) +(require 'minions) + + +;Graphical +(when (display-graphic-p) + (set-frame-font "FiraCode Nerd Font" nil t) + +) + + + + +(setq custom-file (concat user-emacs-directory "custom.el")) +(when (or (not (display-graphic-p)) (daemonp)) + (xterm-mouse-mode 1) +) + + +(tool-bar-mode -1) +(load-theme 'moe-dark t) + +(setq ring-bell-function 'ignore) +(setq-default cursor-type '(bar . 1)) +(pixel-scroll-precision-mode 1) + +(setq mouse-wheel-follow-mouse 't) +(setq scroll-step 1) +(setq mouse-drag-and-drop-region t) +(telephone-line-mode 1) +(setq-default pixel-scroll-precision-large-scroll-height 10.0) +(minions-mode 1) +(elcord-mode) + +;Hide startup screen if started with file +(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) + + + + + +;Enable dashboard +(setq dashboard-center-content t) +(dashboard-setup-startup-hook) +(when (daemonp) + (setq initial-buffer-choice (lambda () (get-buffer "*dashboard*"))) ; Show dashboard when emacs is running as daemon +) + + + + +;CUA +(cua-mode 1) +(global-set-key (kbd "C-y") 'undo-redo) + +;(define-key key-translation-map [8711] 'event-apply-hyper-modifier ) +;(global-set-key (kbd "C-∇") (kbd "C-H")) +;(global-set-key (kbd "H-∇") (lambda () (interactive) (insert-char #x2207))) diff --git a/extraFiles/config/emacs/materus/packages.el b/extraFiles/config/emacs/materus/packages.el new file mode 100644 index 0000000..1745a71 --- /dev/null +++ b/extraFiles/config/emacs/materus/packages.el @@ -0,0 +1,8 @@ + (straight-use-package 'use-package) + (straight-use-package 'telephone-line) + (straight-use-package 'elcord) + (straight-use-package 'dashboard) + (straight-use-package 'minions) + (straight-use-package 'moe-theme) + +