Johan Rong 3 周之前
父節點
當前提交
2dd06933cc

+ 76 - 1
flake.lock

@@ -110,6 +110,27 @@
         "type": "github"
       }
     },
+    "flake-parts_2": {
+      "inputs": {
+        "nixpkgs-lib": [
+          "nixvim",
+          "nixpkgs"
+        ]
+      },
+      "locked": {
+        "lastModified": 1790898470,
+        "narHash": "sha256-zTwuwezD0w3hpga6a6P8emidzAZFyWqlNeRBlpWOOl8=",
+        "owner": "hercules-ci",
+        "repo": "flake-parts",
+        "rev": "024633cd702b10285db5cb19b40ad48d2399ba60",
+        "type": "github"
+      },
+      "original": {
+        "owner": "hercules-ci",
+        "repo": "flake-parts",
+        "type": "github"
+      }
+    },
     "flake-utils": {
       "inputs": {
         "systems": [
@@ -222,6 +243,42 @@
         "type": "github"
       }
     },
+    "nixpkgs_2": {
+      "locked": {
+        "lastModified": 1790981744,
+        "narHash": "sha256-sm6DclXJudZfP/pcDBQQsRqyMxBcQsuw+7yQr4rBBLE=",
+        "owner": "NixOS",
+        "repo": "nixpkgs",
+        "rev": "55ba7f49ef2962b42cbd126522b7df5f95037679",
+        "type": "github"
+      },
+      "original": {
+        "owner": "NixOS",
+        "ref": "nixpkgs-unstable",
+        "repo": "nixpkgs",
+        "type": "github"
+      }
+    },
+    "nixvim": {
+      "inputs": {
+        "flake-parts": "flake-parts_2",
+        "nixpkgs": "nixpkgs_2",
+        "systems": "systems_2"
+      },
+      "locked": {
+        "lastModified": 1791235629,
+        "narHash": "sha256-ySIbhYpjg8CnfuJTs/cfkEQuGpk02IzT+a3VDz7Cec0=",
+        "owner": "nix-community",
+        "repo": "nixvim",
+        "rev": "8fbc7d3ff1154fab898895e7c4e71a4d06936ce3",
+        "type": "github"
+      },
+      "original": {
+        "owner": "nix-community",
+        "repo": "nixvim",
+        "type": "github"
+      }
+    },
     "root": {
       "inputs": {
         "dank-greeter": "dank-greeter",
@@ -229,7 +286,8 @@
         "home-manager": "home-manager",
         "mangowm": "mangowm",
         "nix-flatpak": "nix-flatpak",
-        "nixpkgs": "nixpkgs"
+        "nixpkgs": "nixpkgs",
+        "nixvim": "nixvim"
       }
     },
     "scenefx": {
@@ -269,6 +327,23 @@
         "repo": "default-linux",
         "type": "github"
       }
+    },
+    "systems_2": {
+      "flake": false,
+      "locked": {
+        "lastModified": 1774449309,
+        "narHash": "sha256-brhZ8DmuGtzkCYHJg4HEd602amKm89Y9ytsFZ5uWD1w=",
+        "owner": "nix-systems",
+        "repo": "default",
+        "rev": "c29398b59d2048c4ab79345812849c9bd15e9150",
+        "type": "github"
+      },
+      "original": {
+        "owner": "nix-systems",
+        "ref": "future-26.11",
+        "repo": "default",
+        "type": "github"
+      }
     }
   },
   "root": "root",

+ 3 - 0
flake.nix

@@ -20,6 +20,9 @@
       url = "github:mangowm/mango";
       inputs.nixpkgs.follows = "nixpkgs";
     };
+    nixvim = {
+      url = "github:nix-community/nixvim";
+    };
   };
 
   outputs =

+ 69 - 15
home/modules/apps/neovim/default.nix

@@ -1,4 +1,4 @@
-{ pkgs, ... }:
+{ pkgs, inputs, ... }:
 
 let
   dired-nvim = pkgs.vimUtils.buildVimPlugin {
@@ -13,26 +13,80 @@ let
   };
 in
 {
-  xdg.configFile."nvim/lua".source = ./. + "/lua";
+  imports = [
+    inputs.nixvim.homeModules.nixvim
+  ];
 
-  programs.neovim = {
+  programs.nixvim = {
     enable = true;
-    defaultEditor = true;
-    viAlias = true;
-    vimAlias = true;
-    withNodeJs = true;
-    withPython3 = true;
-    
-    plugins = with pkgs.vimPlugins; [
-      vim-visual-multi
+
+    nixpkgs.config.allowUnfree = true; 
+
+    opts = {
+      number = true;
+      relativenumber = true;
+
+      shiftwidth = 4;
+    };
+
+    keymaps = [
+      {
+        mode = [ "i" "v" "c" ];
+        key = "<F12>";
+        action = "<C-c>";
+      }
+      {
+        mode = [ "i" "v" "c" ];
+        key = "<Esc>";
+        action = "<Nop>";
+      }
+      {
+        mode = [ "n" "v" ];
+        key = "ø";
+        action = ":";
+      }
+      {
+        mode = [ "n" "v" ];
+        key = ":";
+        action = "<Nop>";
+      }
+    ];
+
+    colorscheme = "retrobox";
+
+    plugins = {
+      visual-multi.enable = true;
+      barbar = {
+        enable = true;
+        settings = {
+          pinned = {
+            button = false;
+          };
+          icons = {
+            button = false;
+            modified.button = false;
+            buffer_index = false;
+            filetype = {
+              custom_colors = false;
+              enabled = true;
+            };
+          };
+        };
+      };
+      web-devicons.enable = true;
+    };
+
+    extraPlugins = with pkgs.vimPlugins; [
       nui-nvim
       dired-nvim
-      barbar-nvim
-      nvim-web-devicons
     ];
 
-    extraLuaConfig = ''
-      require("neovim")
+    extraConfigLua = ''
+      require("dired").setup({
+        path_separator = "/",
+        show_hidden = true,
+        show_icons = true,
+      })
     '';
   };
 }

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

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

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

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

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


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

@@ -1,43 +0,0 @@
-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

@@ -3,10 +3,11 @@ local secMod = "SUPER"
 
 local terminal    = "alacritty"
 local fileManager = "dolphin"
+local editor = "nvim"
 
 -- Example binds, see https://wiki.hypr.land/Configuring/Basics/Binds/ for more
 hl.bind(mainMod .. " + RETURN", hl.dsp.exec_cmd(terminal))
-hl.bind(mainMod .. " + SHIFT + RETURN", hl.dsp.exec_cmd("nvim"))
+hl.bind(mainMod .. " + SHIFT + RETURN", hl.dsp.exec_cmd(terminal .. " -e " .. editor))
 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())

+ 2 - 0
home/modules/system/home-base.nix

@@ -6,6 +6,8 @@ in
 {
   news.display = "silent";
 
+  nixpkgs.config.allowUnfree = true;
+
   home = {
     username = users.default;
     homeDirectory = "/home/${users.default}";

+ 0 - 1
nixos/profiles/development/default.nix

@@ -2,7 +2,6 @@
 {
   environment.systemPackages = with pkgs; [
     vscode
-    zed-editor
     gdb
     onefetch
     graphite-cli

+ 0 - 1
nixos/profiles/workstation/default.nix

@@ -94,7 +94,6 @@
 
   environment.variables = {
     QT_QPA_PLATFORMTHEME = "qt6ct";
-    EDITOR = "nano";
   };
 
   services.xserver.xkb = {