From 5c0f2c0209eb946a080a59185dfc0ae54cdb16db Mon Sep 17 00:00:00 2001 From: Nico Date: Mon, 25 Nov 2024 21:31:03 +0100 Subject: [PATCH] not far till perfection --- configuration.nix | 3 +- configuration.nix~ | 7 +- home-nico.nix~ | 27 +++ packages/default.nix | 1 + packages/default.nix~ | 16 ++ packages/emacs/#default.nix# | 273 ++++++++++++++++++++++++++++++ packages/emacs/default.nix | 192 ++++++++++++++++++++- packages/emacs/default.nix~ | 196 ++++++++++++++++++++- packages/emacs/flutter/flake.nix | 60 +++++++ packages/emacs/flutter/init.el | 32 ++++ packages/kitty/default.nix | 24 +++ packages/kitty/default.nix~ | 161 ++++++++++++++++++ packages/qutebrowser/default.nix | 13 ++ packages/qutebrowser/default.nix~ | 13 ++ 14 files changed, 1008 insertions(+), 10 deletions(-) create mode 100644 home-nico.nix~ create mode 100644 packages/default.nix~ create mode 100644 packages/emacs/#default.nix# create mode 100644 packages/emacs/flutter/flake.nix create mode 100644 packages/emacs/flutter/init.el create mode 100644 packages/kitty/default.nix~ create mode 100644 packages/qutebrowser/default.nix create mode 100644 packages/qutebrowser/default.nix~ diff --git a/configuration.nix b/configuration.nix index e78f288..7099a67 100644 --- a/configuration.nix +++ b/configuration.nix @@ -107,6 +107,7 @@ programs.light.enable = true; programs.zsh.enable = true; +# programs.nushell.enable = true; # Define a user account. Don't forget to set a password with ‘passwd’. users.users.n = { @@ -115,7 +116,7 @@ extraGroups = [ "networkmanager" "wheel" "video" "adbusers" ]; packages = with pkgs; [ ]; - shell = pkgs.zsh; + shell = pkgs.nushell; }; diff --git a/configuration.nix~ b/configuration.nix~ index e891c92..ab45a77 100644 --- a/configuration.nix~ +++ b/configuration.nix~ @@ -107,6 +107,7 @@ programs.light.enable = true; programs.zsh.enable = true; + programs.nushell.enable = true; # Define a user account. Don't forget to set a password with ‘passwd’. users.users.n = { @@ -115,7 +116,7 @@ extraGroups = [ "networkmanager" "wheel" "video" "adbusers" ]; packages = with pkgs; [ ]; - shell = pkgs.zsh; + shell = pkgs.nushell; }; @@ -137,11 +138,9 @@ nodejs musescore anki-bin - flutter unzip # nvim - lunarvim gnumake python312Packages.pip python312 @@ -149,7 +148,7 @@ ripgrep gcc - # # sway + # sway networkmanagerapplet grim # screenshot functionality slurp # screenshot functionality diff --git a/home-nico.nix~ b/home-nico.nix~ new file mode 100644 index 0000000..34fa1bf --- /dev/null +++ b/home-nico.nix~ @@ -0,0 +1,27 @@ +{ config, pkgs, inputs, ... }: + +{ + home.username = "n"; + home.homeDirectory = "/home/n"; + + imports = [ + ./packages + ]; + + nixpkgs = { + config = { + allowUnfree = true; + allowUnfreePredicate = (_: true); + }; + }; + + home.packages = with pkgs; [ + brave + go + ]; + + home.stateVersion = "24.05"; + + programs.home-manager.enable = true; + +} diff --git a/packages/default.nix b/packages/default.nix index 2ee7984..e36c1f9 100644 --- a/packages/default.nix +++ b/packages/default.nix @@ -9,6 +9,7 @@ ./nvim ./emacs ./kitty +# ./qutebrowser # ./hyprland # ./vscode ]; diff --git a/packages/default.nix~ b/packages/default.nix~ new file mode 100644 index 0000000..619dae3 --- /dev/null +++ b/packages/default.nix~ @@ -0,0 +1,16 @@ +{ ... }: +{ + imports = [ +# ./ags + ./other + ./sway + ./waybar + ./wpaperd + ./nvim + ./emacs + ./kitty + ./qutebrowser +# ./hyprland +# ./vscode + ]; +} diff --git a/packages/emacs/#default.nix# b/packages/emacs/#default.nix# new file mode 100644 index 0000000..20e57da --- /dev/null +++ b/packages/emacs/#default.nix# @@ -0,0 +1,273 @@ +{ config, pkgs, ... }: + +let + emacsWithPackages = (pkgs.emacsPackagesFor pkgs.emacs).emacsWithPackages; +in { + programs.emacs = { + enable = true; + extraConfig = '' +(load-theme 'catppuccin :no-confirm) +(global-display-line-numbers-mode 1) +(setq-default truncate-lines t) +(telephone-line-mode 1) +(xterm-mouse-mode 1) + +(setq evil-want-C-u-scroll t) + +(menu-bar--display-line-numbers-mode-relative) +(global-display-line-numbers-mode 1) + +(electric-pair-mode) + +;;(menu-bar-mode -1) + +(require 'yasnippet) +(yas-global-mode 1) + +(require 'which-key) +(which-key-mode) + +(require 'evil-god-state) +(evil-define-key 'normal global-map "," 'evil-execute-in-god-state) + +(which-key-enable-god-mode-support) + +(require 'nix-mode) +(add-to-list 'auto-mode-alist '("\\.nix\\'" . nix-mode)) + +(use-package treemacs + :ensure t + :defer t + :init + (with-eval-after-load 'winum + (define-key winum-keymap (kbd "M-0") #'treemacs-select-window)) + :config + (progn + (setq treemacs-collapse-dirs (if treemacs-python-executable 3 0) + treemacs-deferred-git-apply-delay 0.5 + treemacs-directory-name-transformer #'identity + treemacs-display-in-side-window t + treemacs-eldoc-display 'simple + treemacs-file-event-delay 2000 + treemacs-file-extension-regex treemacs-last-period-regex-value + treemacs-file-follow-delay 0.2 + treemacs-file-name-transformer #'identity + treemacs-follow-after-init t + treemacs-expand-after-init t + treemacs-find-workspace-method 'find-for-file-or-pick-first + treemacs-git-command-pipe "" + treemacs-goto-tag-strategy 'refetch-index + treemacs-header-scroll-indicators '(nil . "^^^^^^") + treemacs-hide-dot-git-directory t + treemacs-indentation 2 + treemacs-indentation-string " " + treemacs-is-never-other-window nil + treemacs-max-git-entries 5000 + treemacs-missing-project-action 'ask + treemacs-move-files-by-mouse-dragging t + treemacs-move-forward-on-expand nil + treemacs-no-png-images nil + treemacs-no-delete-other-windows t + treemacs-project-follow-cleanup nil + treemacs-persist-file (expand-file-name ".cache/treemacs-persist" user-emacs-directory) + treemacs-position 'left + treemacs-read-string-input 'from-child-frame + treemacs-recenter-distance 0.1 + treemacs-recenter-after-file-follow nil + treemacs-recenter-after-tag-follow nil + treemacs-recenter-after-project-jump 'always + treemacs-recenter-after-project-expand 'on-distance + treemacs-litter-directories '("/node_modules" "/.venv" "/.cask") + treemacs-project-follow-into-home nil + treemacs-show-cursor nil + treemacs-show-hidden-files t + treemacs-silent-filewatch nil + treemacs-silent-refresh nil + treemacs-sorting 'alphabetic-asc + treemacs-select-when-already-in-treemacs 'move-back + treemacs-space-between-root-nodes t + treemacs-tag-follow-cleanup t + treemacs-tag-follow-delay 1.5 + treemacs-text-scale nil + treemacs-user-mode-line-format nil + treemacs-user-header-line-format nil + treemacs-wide-toggle-width 70 + treemacs-width 35 + treemacs-width-increment 1 + treemacs-width-is-initially-locked t + treemacs-workspace-switch-cleanup nil) + + ;; The default width and height of the icons is 22 pixels. If you are + ;; using a Hi-DPI display, uncomment this to double the icon size. + ;;(treemacs-resize-icons 44) + + (treemacs-follow-mode t) + (treemacs-filewatch-mode t) + (treemacs-fringe-indicator-mode 'always) + (when treemacs-python-executable + (treemacs-git-commit-diff-mode t)) + + (pcase (cons (not (null (executable-find "git"))) + (not (null treemacs-python-executable))) + (`(t . t) + (treemacs-git-mode 'deferred)) + (`(t . _) + (treemacs-git-mode 'simple))) + + (treemacs-hide-gitignored-files-mode nil)) + :bind + (:map global-map + ("M-0" . treemacs-select-window) + ("C-x t 1" . treemacs-delete-other-windows) + ("C-x t t" . treemacs) + ("C-x t d" . treemacs-select-directory) + ("C-x t B" . treemacs-bookmark) + ("C-x t C-t" . treemacs-find-file) + ("C-x t M-t" . treemacs-find-tag))) + +(use-package treemacs-evil + :after (treemacs evil) + :ensure t) + +(use-package treemacs-projectile + :after (treemacs projectile) + :ensure t) + +(use-package treemacs-icons-dired + :hook (dired-mode . treemacs-icons-dired-enable-once) + :ensure t) + +(use-package treemacs-magit + :after (treemacs magit) + :ensure t) + +(use-package treemacs-persp ;;treemacs-perspective if you use perspective.el vs. persp-mode + :after (treemacs persp-mode) ;;or perspective vs. persp-mode + :ensure t + :config (treemacs-set-scope-type 'Perspectives)) + +(use-package treemacs-tab-bar ;;treemacs-tab-bar if you use tab-bar-mode + :after (treemacs) + :ensure t + :config (treemacs-set-scope-type 'Tabs)) + +(treemacs-start-on-boot) +(treemacs-project-follow-mode) + +(setq evil-want-keybinding nil) +(require 'evil) +(when (require 'evil-collection nil t) + (evil-collection-init)) + +(require 'evil) + +(evil-mode 1) + +(defun my-evil-jump-out-or-indent () + "Springe aus Klammern oder Anführungszeichen heraus oder führe eine Einrückung durch." + (interactive) + (let ((pos (point))) + (cond + ;; Wenn der Cursor auf einem Escape-Zeichen ist, gehe zurück + ((looking-at-p "[\\]") (backward-char 1)) + ;; Wenn der Cursor auf einem öffnenden Zeichen ist, gehe vorwärts + ((looking-at-p "[\"'()\\[\\{]") (forward-char 1)) + ;; Wenn der Cursor hinter einem schließenden Zeichen ist, gehe zurück + ((looking-back "[\"'()\\[\\{]" (line-beginning-position)) (backward-char 1)) + ;; Wenn der Cursor nicht in Klammern oder Anführungszeichen ist, führe eine Einrückung durch + (t (indent-for-tab-command))))) + +(define-key evil-insert-state-map (kbd "TAB") 'my-evil-jump-out-or-indent) + +(with-eval-after-load 'flycheck + (add-hook 'flycheck-mode-hook #'flycheck-inline-mode)) + +(global-flycheck-mode 1) + +(evil-define-key 'god global-map [escape] 'evil-god-state-bail) + +(require 'smex) +(smex-initialize) + + (global-set-key (kbd "M-x") 'smex) + (global-set-key (kbd "M-X") 'smex-major-mode-commands) + ;; This is your old M-x. + (global-set-key (kbd "C-c C-c M-x") 'execute-extended-command) + + +(add-hook 'prog-mode-hook #'rainbow-delimiters-mode) + +(setq gc-cons-threshold (* 100 1024 1024) + read-process-output-max (* 1024 1024)) + +;;Exit insert mode by pressing j and then k quickly +(setq key-chord-two-keys-delay 0.5) +(key-chord-define evil-insert-state-map "jk" 'evil-normal-state) +(key-chord-mode 1) + + + (setq company-idle-delay + (lambda () (if (company-in-string-or-comment) nil 0.1))) + +(setq company-minimum-prefix-length 1) +(add-hook 'after-init-hook 'global-company-mode) + +(custom-set-faces + '(company-tooltip + ((t (:background "black" :foreground "thistle1")))) + '(company-tooltip-selection + ((t (:background "bdarkslateblue" :foreground "thistle1")))) +) + +(with-eval-after-load 'evil + (define-key evil-normal-state-map (kbd "C-h") 'windmove-left) + (define-key evil-normal-state-map (kbd "C-j") 'windmove-down) + (define-key evil-normal-state-map (kbd "C-k") 'windmove-up) + (define-key evil-normal-state-map (kbd "C-l") 'windmove-right) + + (define-key evil-motion-state-map (kbd "C-h") 'windmove-left) + (define-key evil-motion-state-map (kbd "C-j") 'windmove-down) + (define-key evil-motion-state-map (kbd "C-k") 'windmove-up) + (define-key evil-motion-state-map (kbd "C-l") 'windmove-right)) + + +(setq lsp-keymap-prefix "C-c l") + + ''; + package = emacsWithPackages (epkgs: (with epkgs.melpaStablePackages; [ + catppuccin-theme + ]) + ++ (with epkgs.melpaPackages; [ + evil + nix-mode + lsp-treemacs + treemacs-evil + treemacs-tab-bar + flycheck + flycheck-inline + lsp-mode + company + rainbow-delimiters + undo-fu + key-chord + telephone-line + smex + ranger + evil-god-state + which-key + magit + format-all + ]) + ++ (with epkgs.elpaPackages; [ + undo-tree + ]) + ++ [ + epkgs.yasnippet +# epkgs.yasnippet-snippets + + ]); + }; + +} + + diff --git a/packages/emacs/default.nix b/packages/emacs/default.nix index 16d1bc6..de82805 100644 --- a/packages/emacs/default.nix +++ b/packages/emacs/default.nix @@ -8,11 +8,21 @@ in { extraConfig = '' (load-theme 'catppuccin :no-confirm) (global-display-line-numbers-mode 1) +(setq-default truncate-lines t) (telephone-line-mode 1) +(xterm-mouse-mode 1) (setq evil-want-C-u-scroll t) -(menu-bar-mode -1) +(menu-bar--display-line-numbers-mode-relative) +(global-display-line-numbers-mode 1) + +(electric-pair-mode) + +;;(menu-bar-mode -1) + +(require 'yasnippet) +(yas-global-mode 1) (require 'which-key) (which-key-mode) @@ -25,11 +35,153 @@ in { (require 'nix-mode) (add-to-list 'auto-mode-alist '("\\.nix\\'" . nix-mode)) +(use-package treemacs + :ensure t + :defer t + :init + (with-eval-after-load 'winum + (define-key winum-keymap (kbd "M-0") #'treemacs-select-window)) + :config + (progn + (setq treemacs-collapse-dirs (if treemacs-python-executable 3 0) + treemacs-deferred-git-apply-delay 0.5 + treemacs-directory-name-transformer #'identity + treemacs-display-in-side-window t + treemacs-eldoc-display 'simple + treemacs-file-event-delay 2000 + treemacs-file-extension-regex treemacs-last-period-regex-value + treemacs-file-follow-delay 0.2 + treemacs-file-name-transformer #'identity + treemacs-follow-after-init t + treemacs-expand-after-init t + treemacs-find-workspace-method 'find-for-file-or-pick-first + treemacs-git-command-pipe "" + treemacs-goto-tag-strategy 'refetch-index + treemacs-header-scroll-indicators '(nil . "^^^^^^") + treemacs-hide-dot-git-directory t + treemacs-indentation 2 + treemacs-indentation-string " " + treemacs-is-never-other-window nil + treemacs-max-git-entries 5000 + treemacs-missing-project-action 'ask + treemacs-move-files-by-mouse-dragging t + treemacs-move-forward-on-expand nil + treemacs-no-png-images nil + treemacs-no-delete-other-windows t + treemacs-project-follow-cleanup nil + treemacs-persist-file (expand-file-name ".cache/treemacs-persist" user-emacs-directory) + treemacs-position 'left + treemacs-read-string-input 'from-child-frame + treemacs-recenter-distance 0.1 + treemacs-recenter-after-file-follow nil + treemacs-recenter-after-tag-follow nil + treemacs-recenter-after-project-jump 'always + treemacs-recenter-after-project-expand 'on-distance + treemacs-litter-directories '("/node_modules" "/.venv" "/.cask") + treemacs-project-follow-into-home nil + treemacs-show-cursor nil + treemacs-show-hidden-files t + treemacs-silent-filewatch nil + treemacs-silent-refresh nil + treemacs-sorting 'alphabetic-asc + treemacs-select-when-already-in-treemacs 'move-back + treemacs-space-between-root-nodes t + treemacs-tag-follow-cleanup t + treemacs-tag-follow-delay 1.5 + treemacs-text-scale nil + treemacs-user-mode-line-format nil + treemacs-user-header-line-format nil + treemacs-wide-toggle-width 70 + treemacs-width 35 + treemacs-width-increment 1 + treemacs-width-is-initially-locked t + treemacs-workspace-switch-cleanup nil) + + ;; The default width and height of the icons is 22 pixels. If you are + ;; using a Hi-DPI display, uncomment this to double the icon size. + ;;(treemacs-resize-icons 44) + + (treemacs-follow-mode t) + (treemacs-filewatch-mode t) + (treemacs-fringe-indicator-mode 'always) + (when treemacs-python-executable + (treemacs-git-commit-diff-mode t)) + + (pcase (cons (not (null (executable-find "git"))) + (not (null treemacs-python-executable))) + (`(t . t) + (treemacs-git-mode 'deferred)) + (`(t . _) + (treemacs-git-mode 'simple))) + + (treemacs-hide-gitignored-files-mode nil)) + :bind + (:map global-map + ("M-0" . treemacs-select-window) + ("C-x t 1" . treemacs-delete-other-windows) + ("C-x t t" . treemacs) + ("C-x t d" . treemacs-select-directory) + ("C-x t B" . treemacs-bookmark) + ("C-x t C-t" . treemacs-find-file) + ("C-x t M-t" . treemacs-find-tag))) + +(use-package treemacs-evil + :after (treemacs evil) + :ensure t) + +(use-package treemacs-projectile + :after (treemacs projectile) + :ensure t) + +(use-package treemacs-icons-dired + :hook (dired-mode . treemacs-icons-dired-enable-once) + :ensure t) + +(use-package treemacs-magit + :after (treemacs magit) + :ensure t) + +(use-package treemacs-persp ;;treemacs-perspective if you use perspective.el vs. persp-mode + :after (treemacs persp-mode) ;;or perspective vs. persp-mode + :ensure t + :config (treemacs-set-scope-type 'Perspectives)) + +(use-package treemacs-tab-bar ;;treemacs-tab-bar if you use tab-bar-mode + :after (treemacs) + :ensure t + :config (treemacs-set-scope-type 'Tabs)) + +(treemacs-start-on-boot) +(treemacs-project-follow-mode) + +(setq evil-want-keybinding nil) +(require 'evil) +(when (require 'evil-collection nil t) + (evil-collection-init)) (require 'evil) (evil-mode 1) +(defun my-evil-jump-out-or-indent () + "Springe aus Klammern oder Anführungszeichen heraus oder führe eine Einrückung durch." + (interactive) + (let ((pos (point))) + (cond + ;; Wenn der Cursor auf einem Escape-Zeichen ist, gehe zurück + ((looking-at-p "[\\]") (backward-char 1)) + ;; Wenn der Cursor auf einem öffnenden Zeichen ist, gehe vorwärts + ((looking-at-p "[\"'()\\[\\{]") (forward-char 1)) + ;; Wenn der Cursor hinter einem schließenden Zeichen ist, gehe zurück + ((looking-back "[\"'()\\[\\{]" (line-beginning-position)) (backward-char 1)) + ;; Wenn der Cursor nicht in Klammern oder Anführungszeichen ist, führe eine Einrückung durch + (t (indent-for-tab-command))))) + +(define-key evil-insert-state-map (kbd "TAB") 'my-evil-jump-out-or-indent) + +(with-eval-after-load 'flycheck + (add-hook 'flycheck-mode-hook #'flycheck-inline-mode)) + (global-flycheck-mode 1) (evil-define-key 'god global-map [escape] 'evil-god-state-bail) @@ -53,6 +205,33 @@ in { (key-chord-define evil-insert-state-map "jk" 'evil-normal-state) (key-chord-mode 1) + + (setq company-idle-delay + (lambda () (if (company-in-string-or-comment) nil 0.1))) + +(setq company-minimum-prefix-length 1) +(add-hook 'after-init-hook 'global-company-mode) + +(custom-set-faces + '(company-tooltip + ((t (:background "black" :foreground "thistle1")))) + '(company-tooltip-selection + ((t (:background "bdarkslateblue" :foreground "thistle1")))) +) + +(with-eval-after-load 'evil + (define-key evil-normal-state-map (kbd "C-h") 'windmove-left) + (define-key evil-normal-state-map (kbd "C-j") 'windmove-down) + (define-key evil-normal-state-map (kbd "C-k") 'windmove-up) + (define-key evil-normal-state-map (kbd "C-l") 'windmove-right) + + (define-key evil-motion-state-map (kbd "C-h") 'windmove-left) + (define-key evil-motion-state-map (kbd "C-j") 'windmove-down) + (define-key evil-motion-state-map (kbd "C-k") 'windmove-up) + (define-key evil-motion-state-map (kbd "C-l") 'windmove-right)) + +(setq lsp-keymap-prefix "C-c l") +(require 'lsp-mode) ''; package = emacsWithPackages (epkgs: (with epkgs.melpaStablePackages; [ catppuccin-theme @@ -61,7 +240,10 @@ in { evil nix-mode lsp-treemacs + treemacs-evil + treemacs-tab-bar flycheck + flycheck-inline lsp-mode company rainbow-delimiters @@ -73,12 +255,18 @@ in { evil-god-state which-key magit + format-all ]) ++ (with epkgs.elpaPackages; [ undo-tree ]) - ++ [ pkgs.notmuch ]); + ++ [ + epkgs.yasnippet +# epkgs.yasnippet-snippets + + ]); }; + } diff --git a/packages/emacs/default.nix~ b/packages/emacs/default.nix~ index a7669d6..bf56289 100644 --- a/packages/emacs/default.nix~ +++ b/packages/emacs/default.nix~ @@ -8,9 +8,21 @@ in { extraConfig = '' (load-theme 'catppuccin :no-confirm) (global-display-line-numbers-mode 1) +(setq-default truncate-lines t) (telephone-line-mode 1) +(xterm-mouse-mode 1) -(menu-bar-mode -1) +(setq evil-want-C-u-scroll t) + +(menu-bar--display-line-numbers-mode-relative) +(global-display-line-numbers-mode 1) + +(electric-pair-mode) + +;;(menu-bar-mode -1) + +(require 'yasnippet) +(yas-global-mode 1) (require 'which-key) (which-key-mode) @@ -23,12 +35,153 @@ in { (require 'nix-mode) (add-to-list 'auto-mode-alist '("\\.nix\\'" . nix-mode)) -(setq evil-want-C-u-scroll t) +(use-package treemacs + :ensure t + :defer t + :init + (with-eval-after-load 'winum + (define-key winum-keymap (kbd "M-0") #'treemacs-select-window)) + :config + (progn + (setq treemacs-collapse-dirs (if treemacs-python-executable 3 0) + treemacs-deferred-git-apply-delay 0.5 + treemacs-directory-name-transformer #'identity + treemacs-display-in-side-window t + treemacs-eldoc-display 'simple + treemacs-file-event-delay 2000 + treemacs-file-extension-regex treemacs-last-period-regex-value + treemacs-file-follow-delay 0.2 + treemacs-file-name-transformer #'identity + treemacs-follow-after-init t + treemacs-expand-after-init t + treemacs-find-workspace-method 'find-for-file-or-pick-first + treemacs-git-command-pipe "" + treemacs-goto-tag-strategy 'refetch-index + treemacs-header-scroll-indicators '(nil . "^^^^^^") + treemacs-hide-dot-git-directory t + treemacs-indentation 2 + treemacs-indentation-string " " + treemacs-is-never-other-window nil + treemacs-max-git-entries 5000 + treemacs-missing-project-action 'ask + treemacs-move-files-by-mouse-dragging t + treemacs-move-forward-on-expand nil + treemacs-no-png-images nil + treemacs-no-delete-other-windows t + treemacs-project-follow-cleanup nil + treemacs-persist-file (expand-file-name ".cache/treemacs-persist" user-emacs-directory) + treemacs-position 'left + treemacs-read-string-input 'from-child-frame + treemacs-recenter-distance 0.1 + treemacs-recenter-after-file-follow nil + treemacs-recenter-after-tag-follow nil + treemacs-recenter-after-project-jump 'always + treemacs-recenter-after-project-expand 'on-distance + treemacs-litter-directories '("/node_modules" "/.venv" "/.cask") + treemacs-project-follow-into-home nil + treemacs-show-cursor nil + treemacs-show-hidden-files t + treemacs-silent-filewatch nil + treemacs-silent-refresh nil + treemacs-sorting 'alphabetic-asc + treemacs-select-when-already-in-treemacs 'move-back + treemacs-space-between-root-nodes t + treemacs-tag-follow-cleanup t + treemacs-tag-follow-delay 1.5 + treemacs-text-scale nil + treemacs-user-mode-line-format nil + treemacs-user-header-line-format nil + treemacs-wide-toggle-width 70 + treemacs-width 35 + treemacs-width-increment 1 + treemacs-width-is-initially-locked t + treemacs-workspace-switch-cleanup nil) + + ;; The default width and height of the icons is 22 pixels. If you are + ;; using a Hi-DPI display, uncomment this to double the icon size. + ;;(treemacs-resize-icons 44) + + (treemacs-follow-mode t) + (treemacs-filewatch-mode t) + (treemacs-fringe-indicator-mode 'always) + (when treemacs-python-executable + (treemacs-git-commit-diff-mode t)) + + (pcase (cons (not (null (executable-find "git"))) + (not (null treemacs-python-executable))) + (`(t . t) + (treemacs-git-mode 'deferred)) + (`(t . _) + (treemacs-git-mode 'simple))) + + (treemacs-hide-gitignored-files-mode nil)) + :bind + (:map global-map + ("M-0" . treemacs-select-window) + ("C-x t 1" . treemacs-delete-other-windows) + ("C-x t t" . treemacs) + ("C-x t d" . treemacs-select-directory) + ("C-x t B" . treemacs-bookmark) + ("C-x t C-t" . treemacs-find-file) + ("C-x t M-t" . treemacs-find-tag))) + +(use-package treemacs-evil + :after (treemacs evil) + :ensure t) + +(use-package treemacs-projectile + :after (treemacs projectile) + :ensure t) + +(use-package treemacs-icons-dired + :hook (dired-mode . treemacs-icons-dired-enable-once) + :ensure t) + +(use-package treemacs-magit + :after (treemacs magit) + :ensure t) + +(use-package treemacs-persp ;;treemacs-perspective if you use perspective.el vs. persp-mode + :after (treemacs persp-mode) ;;or perspective vs. persp-mode + :ensure t + :config (treemacs-set-scope-type 'Perspectives)) + +(use-package treemacs-tab-bar ;;treemacs-tab-bar if you use tab-bar-mode + :after (treemacs) + :ensure t + :config (treemacs-set-scope-type 'Tabs)) + +(treemacs-start-on-boot) +(treemacs-project-follow-mode) + +(setq evil-want-keybinding nil) +(require 'evil) +(when (require 'evil-collection nil t) + (evil-collection-init)) (require 'evil) (evil-mode 1) +(defun my-evil-jump-out-or-indent () + "Springe aus Klammern oder Anführungszeichen heraus oder führe eine Einrückung durch." + (interactive) + (let ((pos (point))) + (cond + ;; Wenn der Cursor auf einem Escape-Zeichen ist, gehe zurück + ((looking-at-p "[\\]") (backward-char 1)) + ;; Wenn der Cursor auf einem öffnenden Zeichen ist, gehe vorwärts + ((looking-at-p "[\"'()\\[\\{]") (forward-char 1)) + ;; Wenn der Cursor hinter einem schließenden Zeichen ist, gehe zurück + ((looking-back "[\"'()\\[\\{]" (line-beginning-position)) (backward-char 1)) + ;; Wenn der Cursor nicht in Klammern oder Anführungszeichen ist, führe eine Einrückung durch + (t (indent-for-tab-command))))) + +(define-key evil-insert-state-map (kbd "TAB") 'my-evil-jump-out-or-indent) + +(with-eval-after-load 'flycheck + (add-hook 'flycheck-mode-hook #'flycheck-inline-mode)) + (global-flycheck-mode 1) (evil-define-key 'god global-map [escape] 'evil-god-state-bail) @@ -52,6 +205,34 @@ in { (key-chord-define evil-insert-state-map "jk" 'evil-normal-state) (key-chord-mode 1) + + (setq company-idle-delay + (lambda () (if (company-in-string-or-comment) nil 0.1))) + +(setq company-minimum-prefix-length 1) +(add-hook 'after-init-hook 'global-company-mode) + +(custom-set-faces + '(company-tooltip + ((t (:background "black" :foreground "thistle1")))) + '(company-tooltip-selection + ((t (:background "bdarkslateblue" :foreground "thistle1")))) +) + +(with-eval-after-load 'evil + (define-key evil-normal-state-map (kbd "C-h") 'windmove-left) + (define-key evil-normal-state-map (kbd "C-j") 'windmove-down) + (define-key evil-normal-state-map (kbd "C-k") 'windmove-up) + (define-key evil-normal-state-map (kbd "C-l") 'windmove-right) + + (define-key evil-motion-state-map (kbd "C-h") 'windmove-left) + (define-key evil-motion-state-map (kbd "C-j") 'windmove-down) + (define-key evil-motion-state-map (kbd "C-k") 'windmove-up) + (define-key evil-motion-state-map (kbd "C-l") 'windmove-right)) + +(setq lsp-keymap-prefix "C-c l") +(require 'lsp-mode) +(add-hook dart-mode-hook #'lsp) ''; package = emacsWithPackages (epkgs: (with epkgs.melpaStablePackages; [ catppuccin-theme @@ -60,7 +241,10 @@ in { evil nix-mode lsp-treemacs + treemacs-evil + treemacs-tab-bar flycheck + flycheck-inline lsp-mode company rainbow-delimiters @@ -72,12 +256,18 @@ in { evil-god-state which-key magit + format-all ]) ++ (with epkgs.elpaPackages; [ undo-tree ]) - ++ [ pkgs.notmuch ]); + ++ [ + epkgs.yasnippet +# epkgs.yasnippet-snippets + + ]); }; + } diff --git a/packages/emacs/flutter/flake.nix b/packages/emacs/flutter/flake.nix new file mode 100644 index 0000000..37e6f3d --- /dev/null +++ b/packages/emacs/flutter/flake.nix @@ -0,0 +1,60 @@ +{ +description = "Flutter 3.13.x"; +inputs = { + nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; + flake-utils.url = "github:numtide/flake-utils"; +}; +outputs = { self, nixpkgs, flake-utils }: + flake-utils.lib.eachDefaultSystem (system: + let + pkgs = import nixpkgs { + inherit system; + config = { + android_sdk.accept_license = true; + allowUnfree = true; + }; + }; + buildToolsVersion = "34.0.0"; + androidComposition = pkgs.androidenv.composeAndroidPackages { + buildToolsVersions = [ buildToolsVersion "33.0.1" ]; + platformVersions = [ "34" "33" "28" ]; + abiVersions = [ "armeabi-v7a" "arm64-v8a" ]; + }; + androidSdk = androidComposition.androidsdk; + in + { + devShell = + with pkgs; mkShell rec { + shellHook = '' + nu + exit + ''; + GRADLE_OPTS = "-Dorg.gradle.project.android.aapt2FromMavenOverride=${androidSdk}/libexec/android-sdk/build-tools/33.0.1/aapt2"; + + ANDROID_SDK_ROOT = "${androidSdk}/libexec/android-sdk"; + buildInputs = [ + flutter + androidSdk # The customized SDK that we've made above + jdk17 + vscode + + (vscode-with-extensions.override { + vscode = vscodium; + vscodeExtensions = with vscode-extensions; [ + vscodevim.vim + dart-code.dart-code + dart-code.flutter + ] ++ pkgs.vscode-utils.extensionsFromVscodeMarketplace[ + { + name = "awesome-flutter-snippets"; + publisher = "nash"; + version = "4.0.1"; + sha256 = "lXdos/xB18h3Z0YfkgEk55G2JvRMYudUUIltugQjylU="; + } + ]; + }) + ]; + + }; + }); +} diff --git a/packages/emacs/flutter/init.el b/packages/emacs/flutter/init.el new file mode 100644 index 0000000..76dc612 --- /dev/null +++ b/packages/emacs/flutter/init.el @@ -0,0 +1,32 @@ +;;; /path/zum/separaten-emacs-init-file.el + +(require 'package) +(add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/")) +(unless (package-installed-p 'dart-mode) + (package-refresh-contents) + (package-install 'dart-mode)) +(unless (package-installed-p 'flutter) + (package-install 'flutter)) +(unless (package-installed-p 'lsp-dart) + (package-install 'lsp-dart)) +(unless (package-installed-p 'hover) + (package-install 'hover)) + +(setq lsp-keymap-prefix "C-c C-l") + +(require 'lsp-mode) +(add-hook 'dart-mode-hook 'lsp) +(setq gc-cons-threshold (* 100 1024 1024) + read-process-output-max (* 1024 1024)) + +;; Assuming usage with dart-mode +(use-package dart-mode + ;; Optional + :hook (dart-mode . flutter-test-mode)) + +(use-package flutter + :after dart-mode + :bind (:map dart-mode-map + ("C-c C-c" . #'flutter-run-or-hot-reload)) + ) + diff --git a/packages/kitty/default.nix b/packages/kitty/default.nix index 5918d8b..421667d 100644 --- a/packages/kitty/default.nix +++ b/packages/kitty/default.nix @@ -5,6 +5,25 @@ ]; + + +programs.nushell = { + enable = true; + extraConfig = '' + $env.config = { + show_banner: false, + edit_mode: vi + } + ''; + shellAliases = { + update = "sudo nixos-rebuild switch --flake /etc/nixos/#my-nixos"; + emacs = "emacs -nw"; + femacs = "emacs -nw --load /etc/nixos/packages/emacs/flutter/init.el"; + pemacs = "emacs -nw --load /home/n/Documents/Shells//python/init.el"; + }; +}; + + programs.starship = { enable = true; @@ -13,6 +32,10 @@ programs.starship = { }; }; +programs.carapace = { + enable = true; + enableNushellIntegration = true; +}; programs.zsh = { @@ -60,6 +83,7 @@ programs.kitty = { ## upstream: https://github.com/catppuccin/kitty/blob/main/themes/mocha.conf ## blurb: Soothing pastel theme for the high-spirited! +map ctrl+shift+w no_op # The basic colors diff --git a/packages/kitty/default.nix~ b/packages/kitty/default.nix~ new file mode 100644 index 0000000..0d0f99f --- /dev/null +++ b/packages/kitty/default.nix~ @@ -0,0 +1,161 @@ + +{ pkgs, config, lib,... }: +{ + home.packages = with pkgs; [ + + ]; + + + +programs.nushell = { + enable = true; + extraConfig = '' + $env.config = { + show_banner: false, + edit_mode: vi + } + ''; + shellAliases = { + update = "sudo nixos-rebuild switch --flake /etc/nixos/#my-nixos"; + emacs = "emacs -nw"; + femacs = "emacs -nw --load /home/n/Documents/Shells/flutter/init.el"; + pemacs = "emacs -nw --load /home/n/Documents/Shells//python/init.el"; + }; +}; + + +programs.starship = { + enable = true; + + settings = { + + }; +}; + +programs.carapace = { + enable = true; + enableNushellIntegration = true; +}; + + +programs.zsh = { + enable = true; + enableCompletion = true; + autosuggestion.enable = true; + syntaxHighlighting.enable = true; + initExtra = '' + eval "$(starship init zsh)" + ''; + + + shellAliases = { + update = "sudo nixos-rebuild switch --flake /etc/nixos/#my-nixos"; + emacs = "emacs -nw"; + femacs = "emacs -nw --load /home/n/Documents/Shells/flutter/init.el"; + pemacs = "emacs -nw --load /home/n/Documents/Shells//python/init.el"; + }; + zplug = { + enable = true; + plugins = [ + { name = "zsh-users/zsh-autosuggestions"; } # Simple plugin installation + ]; + }; + + oh-my-zsh = { + enable = true; + plugins = [ "git" ]; + theme = "agnoster"; + }; +}; + + + +programs.kitty = { + enable = true; + + extraConfig = '' + +# vim:ft=kitty + +## name: Catppuccin Kitty Mocha +## author: Catppuccin Org +## license: MIT +## upstream: https://github.com/catppuccin/kitty/blob/main/themes/mocha.conf +## blurb: Soothing pastel theme for the high-spirited! + +map ctrl+shift+w no_op + + +# The basic colors +foreground #cdd6f4 +background #1e1e2e +selection_foreground #1e1e2e +selection_background #f5e0dc + +# Cursor colors +cursor #f5e0dc +cursor_text_color #1e1e2e + +# URL underline color when hovering with mouse +url_color #f5e0dc + +# Kitty window border colors +active_border_color #b4befe +inactive_border_color #6c7086 +bell_border_color #f9e2af + +# OS Window titlebar colors +wayland_titlebar_color system +macos_titlebar_color system + +# Tab bar colors +active_tab_foreground #11111b +active_tab_background #cba6f7 +inactive_tab_foreground #cdd6f4 +inactive_tab_background #181825 +tab_bar_background #11111b + +# Colors for marks (marked text in the terminal) +mark1_foreground #1e1e2e +mark1_background #b4befe +mark2_foreground #1e1e2e +mark2_background #cba6f7 +mark3_foreground #1e1e2e +mark3_background #74c7ec + +# The 16 terminal colors + +# black +color0 #45475a +color8 #585b70 + +# red +color1 #f38ba8 +color9 #f38ba8 + +# green +color2 #a6e3a1 +color10 #a6e3a1 + +# yellow +color3 #f9e2af +color11 #f9e2af + +# blue +color4 #89b4fa +color12 #89b4fa + +# magenta +color5 #f5c2e7 +color13 #f5c2e7 + +# cyan +color6 #94e2d5 +color14 #94e2d5 + +# white +color7 #bac2de +color15 #a6adc8 + ''; +}; +} diff --git a/packages/qutebrowser/default.nix b/packages/qutebrowser/default.nix new file mode 100644 index 0000000..604d447 --- /dev/null +++ b/packages/qutebrowser/default.nix @@ -0,0 +1,13 @@ + +{ pkgs, config, lib,... }: + +{ + + programs.qutebrowser = { + enable = true; + }; + + + + +} diff --git a/packages/qutebrowser/default.nix~ b/packages/qutebrowser/default.nix~ new file mode 100644 index 0000000..0fb0596 --- /dev/null +++ b/packages/qutebrowser/default.nix~ @@ -0,0 +1,13 @@ + +{ pkgs, config, lib,... }: + +{ + + programs.qutebrowser = { + enable = true; + } + + + + +}