Johan Rong 3 veckor sedan
förälder
incheckning
3f47a25b23

+ 8 - 7
home/modules/apps/emacs/default.nix

@@ -2,18 +2,19 @@
 {
   programs.emacs = {
     enable = true;
-    package = pkgs.emacs;
     
-    extraPackages = epkgs: [
+    extraPackages = epkgs: with epkgs; [
+      all-the-icons-dired
+      dired-open
+      multiple-cursors
     ];
 
-    extraConfig = builtins.readFile ./config/emacs.el;
+    extraConfig = builtins.readFile (./. + "/config/emacs.el");
   };
 
   services.emacs = {
     enable = true;
-    package = pkgs.emacs;
-    socketActivation.enable = true; # Starts Emacs on demand when emacsclient is called
-    startWithUserSession = "graphical"; # Launch with graphical session or true for default.target
+    socketActivation.enable = true; 
+    startWithUserSession = "graphical";
   };
-}
+}

+ 38 - 0
home/modules/apps/neovim/default.nix

@@ -0,0 +1,38 @@
+{ pkgs, ... }:
+
+let
+  dired-nvim = pkgs.vimUtils.buildVimPlugin {
+    name = "dired.nvim";
+    src = pkgs.fetchFromGitHub {
+      owner = "X3eRo0";
+      repo = "dired.nvim";
+      rev = "master"; 
+      sha256 = "sha256-cPbfSoVxKlsUaiHMJ74FROL+9KnZRE4Ed+n823gc/04=";
+    };
+    dependencies = [ pkgs.vimPlugins.nui-nvim ];
+  };
+in
+{
+  xdg.configFile."nvim/lua".source = ./. + "/lua";
+
+  programs.neovim = {
+    enable = true;
+    defaultEditor = true;
+    viAlias = true;
+    vimAlias = true;
+    withNodeJs = true;
+    withPython3 = true;
+    
+    plugins = with pkgs.vimPlugins; [
+      vim-visual-multi
+      nui-nvim
+      dired-nvim
+      barbar-nvim
+      nvim-web-devicons
+    ];
+
+    extraLuaConfig = ''
+      require("neovim")
+    '';
+  };
+}

+ 2 - 0
home/modules/apps/neovim/lua/modules/keybinds.lua

@@ -0,0 +1,2 @@
+vim.keymap.set('i', '<F12>', '<Esc>', { noremap = true, silent = true })
+vim.keymap.set('i', '<Esc>', '<Nop>', { noremap = true, silent = true })

+ 3 - 0
home/modules/apps/neovim/lua/neovim.lua

@@ -0,0 +1,3 @@
+require("modules.keybinds")
+
+require("plugins.dired")

+ 0 - 0
home/modules/apps/neovim/lua/plugins/barbar.lua


+ 43 - 0
home/modules/apps/neovim/lua/plugins/dired.lua

@@ -0,0 +1,43 @@
+require("dired").setup({
+    path_separator = "/",
+    show_hidden = false,
+    show_icons = false,
+    show_banner = false,
+    hide_details = false,
+    sort_order = "name",
+    override_cwd = true,
+
+    keybinds = {
+        dired_enter = "<CR>",
+        dired_back = "-",
+        dired_up = "_",
+        dired_rename = "R",
+        dired_create = "d",
+        dired_delete = "D",
+        dired_delete_range = "D",
+        dired_copy = "C",
+        dired_copy_range = "C",
+        dired_copy_marked = "MC",
+        dired_move = "X",
+        dired_move_range = "X",
+        dired_move_marked = "MX",
+        dired_paste = "P",
+        dired_mark = "M",
+        dired_mark_range = "M",
+        dired_delete_marked = "MD",
+        dired_shell_cmd = "!",
+        dired_shell_cmd_marked = "&",
+        dired_toggle_hidden = ".",
+        dired_toggle_sort_order = ",",
+        dired_toggle_icons = "*",
+        dired_toggle_colors = "c",
+        dired_toggle_hide_details = "(",
+        dired_quit = "q",
+    },
+
+    colors = {
+        DiredDimText = { link = {}, bg = "NONE", fg = "505050", gui = "NONE" },
+        DiredDirectoryName = { link = {}, bg = "NONE", fg = "9370DB", gui = "NONE" },
+        DiredMoveFile = { link = {}, bg = "NONE", fg = "ff3399", gui = "bold" },
+    },
+})

+ 0 - 0
home/modules/apps/neovim/lua/plugins/vim-visual-multi.lua


+ 2 - 1
home/modules/desktop/hyprland/lua/modules/keybindings.lua

@@ -5,7 +5,8 @@ local terminal    = "alacritty"
 local fileManager = "dolphin"
 
 -- Example binds, see https://wiki.hypr.land/Configuring/Basics/Binds/ for more
-hl.bind(mainMod .. " + Return", hl.dsp.exec_cmd(terminal))
+hl.bind(mainMod .. " + RETURN", hl.dsp.exec_cmd(terminal))
+hl.bind(mainMod .. " + SHIFT + RETURN", hl.dsp.exec_cmd("nvim"))
 hl.bind(mainMod .. " + SHIFT + Q", hl.dsp.window.close())
 --hl.bind(mainMod .. " + M", hl.dsp.exec_cmd("command -v hyprshutdown >/dev/null 2>&1 && hyprshutdown || hyprctl dispatch 'hl.dsp.exit()'"))
 hl.bind(mainMod .. " + P", hl.dsp.window.pseudo())

+ 1 - 0
hosts/nixstation/home/default.nix

@@ -10,5 +10,6 @@
     ../../../home/modules/apps/alacritty.nix
     ../../../home/modules/apps/fish
     ../../../home/modules/apps/emacs
+    ../../../home/modules/apps/neovim
   ];
 }