]> Skullheadx's Git Forge - nixos.git/commitdiff
dotfile managment
authorAndrew <admonty1@protonmail.com>
Sat, 8 Nov 2025 18:32:13 +0000 (13:32 -0500)
committerAndrew <admonty1@protonmail.com>
Sat, 8 Nov 2025 18:32:13 +0000 (13:32 -0500)
TODO.md
dotfiles.nix [new file with mode: 0644]
flake.lock
flake.nix
ghostty.nix
home.nix
hyprland/hyprland.nix
neovim.nix
tmux.nix

diff --git a/TODO.md b/TODO.md
index 2b440508dc307c12621826fc09199fdcbe90e1d5..24d0168585e5dd053bf71a99bc1b5ea67c46cc1e 100644 (file)
--- a/TODO.md
+++ b/TODO.md
@@ -4,3 +4,7 @@
 
 - [ ] fix workspace 4 icon
 - [ ] fix startup tmux session
+
+## Fish
+
+- [ ] keybind to accept autocomplete other than right arrow
diff --git a/dotfiles.nix b/dotfiles.nix
new file mode 100644 (file)
index 0000000..a235620
--- /dev/null
@@ -0,0 +1,19 @@
+{
+  config,
+  lib,
+  ...
+}: {
+  options = {
+    dotfiles = {
+      mutable = lib.mkEnableOption "mutable dotfiles";
+
+      path = lib.mkOption {
+        type = lib.types.path;
+        apply = toString;
+        default = "${config.home.homeDirectory}/.dotfiles/";
+        example = "${config.home.homeDirectory}/.dotfiles/astronvim-config";
+        description = "Location of the dotfiles working copy";
+      };
+    };
+  };
+}
index 0e34c666bf46fa759ecbc6e9147e6595fb251bd0..bf9fe02363f88d18c3d9cafd33e5e27714115013 100644 (file)
         "type": "github"
       }
     },
-    "crane": {
-      "locked": {
-        "lastModified": 1736032295,
-        "narHash": "sha256-QNRlMxQTT3rdgsQb3QxljO14kE8xxdDXNJ/4jIm4u3Q=",
-        "owner": "ipetkov",
-        "repo": "crane",
-        "rev": "9fa361afe873c740d5ca10ff526463d5807eab88",
-        "type": "github"
-      },
-      "original": {
-        "owner": "ipetkov",
-        "repo": "crane",
-        "type": "github"
-      }
-    },
     "firefox-gnome-theme": {
       "flake": false,
       "locked": {
         "type": "github"
       }
     },
-    "flake-compat": {
-      "flake": false,
-      "locked": {
-        "lastModified": 1751685974,
-        "narHash": "sha256-NKw96t+BgHIYzHUjkTK95FqYRVKB8DHpVhefWSz/kTw=",
-        "ref": "refs/heads/main",
-        "rev": "549f2762aebeff29a2e5ece7a7dc0f955281a1d1",
-        "revCount": 92,
-        "type": "git",
-        "url": "https://git.lix.systems/lix-project/flake-compat.git"
-      },
-      "original": {
-        "type": "git",
-        "url": "https://git.lix.systems/lix-project/flake-compat.git"
-      }
-    },
-    "flake-compat_2": {
-      "flake": false,
-      "locked": {
-        "lastModified": 1747046372,
-        "narHash": "sha256-CIVLLkVgvHYbgI2UpXvIIBJ12HWgX+fjA8Xf8PUmqCY=",
-        "owner": "edolstra",
-        "repo": "flake-compat",
-        "rev": "9100a0f413b0c601e0533d1d94ffd501ce2e7885",
-        "type": "github"
-      },
-      "original": {
-        "owner": "edolstra",
-        "repo": "flake-compat",
-        "type": "github"
-      }
-    },
     "flake-parts": {
       "inputs": {
         "nixpkgs-lib": [
       }
     },
     "flake-parts_2": {
-      "inputs": {
-        "nixpkgs-lib": [
-          "nvf",
-          "nixpkgs"
-        ]
-      },
-      "locked": {
-        "lastModified": 1759362264,
-        "narHash": "sha256-wfG0S7pltlYyZTM+qqlhJ7GMw2fTF4mLKCIVhLii/4M=",
-        "owner": "hercules-ci",
-        "repo": "flake-parts",
-        "rev": "758cf7296bee11f1706a574c77d072b8a7baa881",
-        "type": "github"
-      },
-      "original": {
-        "owner": "hercules-ci",
-        "repo": "flake-parts",
-        "type": "github"
-      }
-    },
-    "flake-parts_3": {
-      "inputs": {
-        "nixpkgs-lib": [
-          "schizofox",
-          "nixpkgs"
-        ]
-      },
-      "locked": {
-        "lastModified": 1754487366,
-        "narHash": "sha256-pHYj8gUBapuUzKV/kN/tR3Zvqc7o6gdFB9XKXIp1SQ8=",
-        "owner": "hercules-ci",
-        "repo": "flake-parts",
-        "rev": "af66ad14b28a127c5c0f3bbb298218fc63528a18",
-        "type": "github"
-      },
-      "original": {
-        "owner": "hercules-ci",
-        "repo": "flake-parts",
-        "type": "github"
-      }
-    },
-    "flake-parts_4": {
-      "inputs": {
-        "nixpkgs-lib": "nixpkgs-lib"
-      },
-      "locked": {
-        "lastModified": 1735774679,
-        "narHash": "sha256-soePLBazJk0qQdDVhdbM98vYdssfs3WFedcq+raipRI=",
-        "owner": "hercules-ci",
-        "repo": "flake-parts",
-        "rev": "f2f7418ce0ab4a5309a4596161d154cfc877af66",
-        "type": "github"
-      },
-      "original": {
-        "owner": "hercules-ci",
-        "repo": "flake-parts",
-        "type": "github"
-      }
-    },
-    "flake-parts_5": {
       "inputs": {
         "nixpkgs-lib": [
           "stylix",
         "type": "github"
       }
     },
-    "hercules-ci-effects": {
-      "inputs": {
-        "flake-parts": [
-          "schizofox",
-          "nixpak",
-          "flake-parts"
-        ],
-        "nixpkgs": [
-          "schizofox",
-          "nixpak",
-          "nixpkgs"
-        ]
-      },
-      "locked": {
-        "lastModified": 1755233722,
-        "narHash": "sha256-AavrbMltJKcC2Fx0lfJoZfmy7g87ebXU0ddVenhajLA=",
-        "owner": "hercules-ci",
-        "repo": "hercules-ci-effects",
-        "rev": "99e03e72e3f7e13506f80ef9ebaedccb929d84d0",
-        "type": "github"
-      },
-      "original": {
-        "owner": "hercules-ci",
-        "repo": "hercules-ci-effects",
-        "type": "github"
-      }
-    },
     "home-manager": {
       "inputs": {
         "nixpkgs": [
         "type": "github"
       }
     },
-    "home-manager_2": {
-      "inputs": {
-        "nixpkgs": [
-          "schizofox",
-          "nixpkgs"
-        ]
-      },
-      "locked": {
-        "lastModified": 1756261190,
-        "narHash": "sha256-eiy0klFK5EVJLNilutR7grsZN/7Itj9DyD75eyOf83k=",
-        "owner": "nix-community",
-        "repo": "home-manager",
-        "rev": "77f348da3176dc68b20a73dab94852a417daf361",
-        "type": "github"
-      },
-      "original": {
-        "owner": "nix-community",
-        "repo": "home-manager",
-        "type": "github"
-      }
-    },
-    "mnw": {
-      "locked": {
-        "lastModified": 1758834834,
-        "narHash": "sha256-Y7IvY4F8vajZyp3WGf+KaiIVwondEkMFkt92Cr9NZmg=",
-        "owner": "Gerg-L",
-        "repo": "mnw",
-        "rev": "cfbc7d1cc832e318d0863a5fc91d940a96034001",
-        "type": "github"
-      },
-      "original": {
-        "owner": "Gerg-L",
-        "repo": "mnw",
-        "type": "github"
-      }
-    },
-    "nixpak": {
-      "inputs": {
-        "flake-parts": [
-          "schizofox",
-          "flake-parts"
-        ],
-        "hercules-ci-effects": "hercules-ci-effects",
-        "nixpkgs": [
-          "schizofox",
-          "nixpkgs"
-        ]
-      },
-      "locked": {
-        "lastModified": 1755744259,
-        "narHash": "sha256-Geu6lISTz97euRVTx4MSksRNafEEXzClN0b15aT/IrE=",
-        "owner": "nixpak",
-        "repo": "nixpak",
-        "rev": "52c4b650843c3aec1ca3a4200c6b7bb7ed0faaed",
-        "type": "github"
-      },
-      "original": {
-        "owner": "nixpak",
-        "repo": "nixpak",
-        "type": "github"
-      }
-    },
     "nixpkgs": {
       "locked": {
         "lastModified": 1761373498,
         "type": "github"
       }
     },
-    "nixpkgs-lib": {
-      "locked": {
-        "lastModified": 1735774519,
-        "narHash": "sha256-CewEm1o2eVAnoqb6Ml+Qi9Gg/EfNAxbRx1lANGVyoLI=",
-        "type": "tarball",
-        "url": "https://github.com/NixOS/nixpkgs/archive/e9b51731911566bbf7e4895475a87fe06961de0b.tar.gz"
-      },
-      "original": {
-        "type": "tarball",
-        "url": "https://github.com/NixOS/nixpkgs/archive/e9b51731911566bbf7e4895475a87fe06961de0b.tar.gz"
-      }
-    },
     "nixpkgs_2": {
       "locked": {
         "lastModified": 1761373498,
         "type": "github"
       }
     },
-    "nixpkgs_3": {
-      "locked": {
-        "lastModified": 1759386674,
-        "narHash": "sha256-wg1Lz/1FC5Q13R+mM5a2oTV9TA9L/CHHTm3/PiLayfA=",
-        "owner": "nixos",
-        "repo": "nixpkgs",
-        "rev": "625ad6366178f03acd79f9e3822606dd7985b657",
-        "type": "github"
-      },
-      "original": {
-        "owner": "nixos",
-        "ref": "nixpkgs-unstable",
-        "repo": "nixpkgs",
-        "type": "github"
-      }
-    },
-    "nixpkgs_4": {
-      "locked": {
-        "lastModified": 1756266583,
-        "narHash": "sha256-cr748nSmpfvnhqSXPiCfUPxRz2FJnvf/RjJGvFfaCsM=",
-        "owner": "NixOS",
-        "repo": "nixpkgs",
-        "rev": "8a6d5427d99ec71c64f0b93d45778c889005d9c2",
-        "type": "github"
-      },
-      "original": {
-        "owner": "NixOS",
-        "ref": "nixos-unstable-small",
-        "repo": "nixpkgs",
-        "type": "github"
-      }
-    },
     "nur": {
       "inputs": {
         "flake-parts": "flake-parts",
         "type": "github"
       }
     },
-    "nvf": {
-      "inputs": {
-        "flake-compat": "flake-compat",
-        "flake-parts": "flake-parts_2",
-        "mnw": "mnw",
-        "nixpkgs": "nixpkgs_3",
-        "systems": "systems"
-      },
-      "locked": {
-        "lastModified": 1761486540,
-        "narHash": "sha256-O0VNqERaZ1H+4P3XwHNd8wVCqUcGtMPJT1z4cJodRFc=",
-        "owner": "notashelf",
-        "repo": "nvf",
-        "rev": "4b904de36157035fa3dddf0312a4242e5d0d9bd0",
-        "type": "github"
-      },
-      "original": {
-        "owner": "notashelf",
-        "repo": "nvf",
-        "type": "github"
-      }
-    },
     "root": {
       "inputs": {
         "home-manager": "home-manager",
         "nixpkgs": "nixpkgs",
         "nur": "nur",
-        "nvf": "nvf",
-        "schizofox": "schizofox",
         "stylix": "stylix"
       }
     },
-    "schizofox": {
-      "inputs": {
-        "flake-compat": "flake-compat_2",
-        "flake-parts": "flake-parts_3",
-        "home-manager": "home-manager_2",
-        "nixpak": "nixpak",
-        "nixpkgs": "nixpkgs_4",
-        "searx-randomizer": "searx-randomizer",
-        "systems": "systems_2"
-      },
-      "locked": {
-        "lastModified": 1756308127,
-        "narHash": "sha256-BGHVikTQAMlGuxhJ3BHh5meuylDh1CZd8I3XGgIK5Hc=",
-        "owner": "schizofox",
-        "repo": "schizofox",
-        "rev": "428833d6a0fbc577b05de130a9bc3c99b027d8da",
-        "type": "github"
-      },
-      "original": {
-        "owner": "schizofox",
-        "repo": "schizofox",
-        "type": "github"
-      }
-    },
-    "searx-randomizer": {
-      "inputs": {
-        "crane": "crane",
-        "flake-parts": "flake-parts_4",
-        "nixpkgs": [
-          "schizofox",
-          "nixpkgs"
-        ]
-      },
-      "locked": {
-        "lastModified": 1736054833,
-        "narHash": "sha256-fSvHee00LQpndvJ0N4ZahRuoAQd06g8ecdUzfNPLvLk=",
-        "owner": "schizofox",
-        "repo": "searx-randomizer",
-        "rev": "63d6fed21ae5a6608bac71665887a432781161c6",
-        "type": "github"
-      },
-      "original": {
-        "owner": "schizofox",
-        "repo": "searx-randomizer",
-        "type": "github"
-      }
-    },
     "stylix": {
       "inputs": {
         "base16": "base16",
         "base16-helix": "base16-helix",
         "base16-vim": "base16-vim",
         "firefox-gnome-theme": "firefox-gnome-theme",
-        "flake-parts": "flake-parts_5",
+        "flake-parts": "flake-parts_2",
         "gnome-shell": "gnome-shell",
         "nixpkgs": [
           "nixpkgs"
         ],
         "nur": "nur_2",
-        "systems": "systems_3",
+        "systems": "systems",
         "tinted-foot": "tinted-foot",
         "tinted-kitty": "tinted-kitty",
         "tinted-schemes": "tinted-schemes",
         "type": "github"
       }
     },
-    "systems_2": {
-      "locked": {
-        "lastModified": 1689347949,
-        "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=",
-        "owner": "nix-systems",
-        "repo": "default-linux",
-        "rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68",
-        "type": "github"
-      },
-      "original": {
-        "owner": "nix-systems",
-        "repo": "default-linux",
-        "type": "github"
-      }
-    },
-    "systems_3": {
-      "locked": {
-        "lastModified": 1681028828,
-        "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
-        "owner": "nix-systems",
-        "repo": "default",
-        "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
-        "type": "github"
-      },
-      "original": {
-        "owner": "nix-systems",
-        "repo": "default",
-        "type": "github"
-      }
-    },
     "tinted-foot": {
       "flake": false,
       "locked": {
index 801ffa72f7363f92bfaf6696cbf0bc2dc81f5280..7ee6bf4bf4c83728ffdd5f716b5a0a8b89188b11 100644 (file)
--- a/flake.nix
+++ b/flake.nix
       url = "github:nix-community/stylix";
       inputs.nixpkgs.follows = "nixpkgs";
     };
-    nvf = {
-      url = "github:notashelf/nvf";
-    };
-    schizofox.url = "github:schizofox/schizofox";
     nur = {
       url = "github:nix-community/NUR";
       #inputs.nixpkgs.follows = "nixpkgs";
@@ -26,8 +22,6 @@
     nixpkgs,
     home-manager,
     stylix,
-    nvf,
-    schizofox,
     nur,
     ...
   } @ inputs: let
       config.allowUnfree = true;
       overlays = [nur.overlay];
     };
-    skullNeovim = nvf.lib.neovimConfiguration {
-      inherit pkgs;
-      modules = [
-        ./neovim.nix
-      ];
-      extraSpecialArgs = {inherit inputs;};
-    };
   in {
     nixosConfigurations = {
       home = lib.nixosSystem {
         modules = [
           stylix.homeModules.stylix
           #nur.modules.nixos.default
+          ./dotfiles.nix
           ./home.nix
+          {dotfiles.mutable = true;}
         ];
-        extraSpecialArgs = {inherit inputs skullNeovim;};
+        extraSpecialArgs = {inherit inputs;};
       };
     };
-    packages.${system}.skull-neovim = skullNeovim.neovim;
   };
 }
index c7cf640d32bb70ce71f48b10014e873382039aa7..c598066f85445aef740dcc94d41fd45b0d21e32c 100644 (file)
@@ -21,7 +21,6 @@
       window-save-state = "always";
       copy-on-select = "clipboard";
       clipboard-read = "allow";
-
       clipboard-write = "allow";
       confirm-close-surface = false;
       auto-update = "off";
index 14a08da3fa41af72f6558e54f8836e40ac3dea2a..c3762bc0a0d88fa3a72b59b16250e8c89d1c006d 100644 (file)
--- a/home.nix
+++ b/home.nix
@@ -3,13 +3,13 @@
   lib,
   pkgs,
   inputs,
-  skullNeovim,
   ...
 }: {
   imports = [
     ./sh.nix
     ./ghostty.nix
     ./tmux.nix
+    ./neovim.nix
     ./hyprland/hyprland.nix
     ./hyprpaper.nix
     ./hypridle.nix
@@ -28,7 +28,6 @@
     ./freetube.nix
     ./qutebrowser.nix
     ./librewolf.nix
-    #./schizofox.nix
   ];
 
   # Home Manager needs a bit of information about you and the paths it should
@@ -48,8 +47,6 @@
   # The home.packages option allows you to install Nix packages into your
   # environment.
   home.packages = with pkgs; [
-    # # Adds the 'hello':wq command to your environment. It prints a friendly
-    # # "Hello, world!" when run.
     audacity
     mpc
     discord
@@ -79,8 +76,6 @@
 
     vlc
 
-    skullNeovim.neovim
-
     protonvpn-cli
     protonvpn-gui
     qbittorrent
   #  /etc/profiles/per-user/andrew/etc/profile.d/hm-session-vars.sh
   #
   home.sessionVariables = {
-    EDITOR = "nvim";
-    VISUAL = "nvim";
     NIXOS_OZONE_WL = "1";
   };
 
index ef7e70e6e00f02547fe28cfdfa3c51b9ac82e571..4fabdd46a9e75349816e653fb5235fde66f6b0c9 100644 (file)
@@ -64,7 +64,7 @@
       ];
       input = {
         kb_layout = "us";
-        kb_options = "caps:escape,altwin:swap_lalt_lwin";
+        kb_options = "caps:escape_shifted_capslock,altwin:swap_lalt_lwin";
 
         numlock_by_default = true;
       };
index 9c5e715d99c45b34c5b515f5dc3d970d53044c62..a10b6507e5b40b409386ea9f1ec73722da97cd27 100644 (file)
   pkgs,
   inputs,
   ...
-}: {
-  config.vim = {
-    viAlias = true;
-    vimAlias = true;
-    debugMode = {
-      enable = false;
-      level = 16;
-      logFile = "/tmp/nvim.log";
-    };
-
-    spellcheck = {
-      enable = true;
-      programmingWordlist.enable = true;
-    };
-
-    lsp = {
-      # This must be enabled for the language modules to hook into
-      # the LSP API.
-      enable = true;
-
-      formatOnSave = true;
-      lspkind.enable = false;
-      lightbulb.enable = true;
-      lspsaga.enable = false;
-      trouble.enable = true;
-      lspSignature.enable = !true; # conflicts with blink in maximal
-      otter-nvim.enable = true;
-      nvim-docs-view.enable = true;
-    };
-
-    debugger = {
-      nvim-dap = {
-        enable = true;
-        ui.enable = true;
-      };
-    };
-
-    # This section does not include a comprehensive list of available language modules.
-    # To list all available language module options, please visit the nvf manual.
-    languages = {
-      enableFormat = true;
-      enableTreesitter = true;
-      enableExtraDiagnostics = true;
-
-      # Languages that will be supported in default and maximal configurations.
-      nix.enable = true;
-      markdown = {
-        enable = true;
-        extensions.render-markdown-nvim = {
-          enable = true;
-          setupOpts = {
-            enabled = true;
-            render_modes = ["n" "c" "t"];
-            max_file_size = 10.0;
-            debounce = 100;
-            preset = "none";
-            log_level = "error";
-            log_runtime = false;
-            file_types = ["markdown"];
-            #ignore = ''
-            #  function()
-            #    return false
-            #  end
-            #'';
-            #nested = true;
-            change_events = {};
-            #restart_highlighter = false;
-            injections = {
-              gitcommit = {
-                enabled = true;
-                query = ''
-                  ((message) @injection.content
-                      (#set! injection.combined)
-                      (#set! injection.include-children)
-                      (#set! injection.language "markdown"))
-                '';
-              };
-            };
-            patterns = {
-              markdown = {
-                disable = true;
-                directives = [
-                  {
-                    id = 17;
-                    name = "conceal_lines";
-                  }
-                  {
-                    id = 18;
-                    name = "conceal_lines";
-                  }
-                ];
-              };
-            };
-            anti_conceal = {
-              enabled = true;
-              disabled_modes = false;
-              above = 0;
-              below = 0;
-              ignore = {
-                code_background = true;
-                indent = true;
-                sign = true;
-                virtual_lines = true;
-              };
-            };
-            padding = {
-              highlight = "Normal";
-            };
-            latex = {
-              enabled = false; # Disabled to resolve :checkhealth warnings
-            };
-            #on = {
-            #  attach = ''
-            #    function() end
-            #  '';
-            #  initial = ''
-            #    function() end
-            #  '';
-            #  render = ''
-            #    function() end
-            #  '';
-            #  clear = ''
-            #    function() end
-            #  '';
-            #};
-            #completions = {
-            #  blink = {enabled = false;};
-            #  coq = {enabled = false;};
-            #  lsp = {enabled = false;};
-            #  filter = {
-            #    callout = ''
-            #      function()
-            #        return true
-            #      end
-            #    '';
-            #    checkbox = ''
-            #      function()
-            #        return true
-            #      end
-            #    '';
-            #  };
-            #};
-            heading = {
-              enabled = true;
-              render_modes = false;
-              atx = true;
-              setext = true;
-              sign = true;
-              icons = ["󰲡 " "󰲣 " "󰲥 " "󰲧 " "󰲩 " "󰲫 "];
-              position = "overlay";
-              signs = ["󰫎 "];
-              width = "full";
-              left_margin = 0;
-              left_pad = 0;
-              right_pad = 0;
-              min_width = 0;
-              border = false;
-              border_virtual = false;
-              border_prefix = false;
-              above = "▄";
-              below = "▀";
-              backgrounds = [
-                "RenderMarkdownH1Bg"
-                "RenderMarkdownH2Bg"
-                "RenderMarkdownH3Bg"
-                "RenderMarkdownH4Bg"
-                "RenderMarkdownH5Bg"
-                "RenderMarkdownH6Bg"
-              ];
-              foregrounds = [
-                "RenderMarkdownH1"
-                "RenderMarkdownH2"
-                "RenderMarkdownH3"
-                "RenderMarkdownH4"
-                "RenderMarkdownH5"
-                "RenderMarkdownH6"
-              ];
-              custom = {};
-            };
-            paragraph = {
-              enabled = true;
-              render_modes = false;
-              left_margin = 0;
-              indent = 0;
-              min_width = 0;
-            };
-            code = {
-              enabled = true;
-              render_modes = false;
-              sign = true;
-              conceal_delimiters = true;
-              language = true;
-              position = "left";
-              language_icon = true;
-              language_name = true;
-              language_info = true;
-              language_pad = 0;
-              disable_background = ["diff"];
-              width = "full";
-              left_margin = 0;
-              left_pad = 0;
-              right_pad = 0;
-              min_width = 0;
-              border = "hide";
-              language_border = "█";
-              language_left = "";
-              language_right = "";
-              above = "▄";
-              below = "▀";
-              inline = true;
-              inline_left = "";
-              inline_right = "";
-              inline_pad = 0;
-              highlight = "RenderMarkdownCode";
-              highlight_info = "RenderMarkdownCodeInfo";
-              highlight_language = null;
-              highlight_border = "RenderMarkdownCodeBorder";
-              highlight_fallback = "RenderMarkdownCodeFallback";
-              highlight_inline = "RenderMarkdownCodeInline";
-              style = "full";
-            };
-            dash = {
-              enabled = true;
-              render_modes = false;
-              icon = "─";
-              width = "full";
-              left_margin = 0;
-              highlight = "RenderMarkdownDash";
-            };
-            document = {
-              enabled = true;
-              render_modes = false;
-              conceal = {
-                char_patterns = {};
-                line_patterns = {};
-              };
-            };
-            bullet = {
-              enabled = true;
-              render_modes = false;
-              icons = ["●" "○" "◆" "◇"];
-              #              ordered_icons = ''
-              #                function(ctx)
-              #                  local value = vim.trim(ctx.value)
-              #                  local index = tonumber(value:sub(1, #value - 1))
-              #                  return ('%d.'):format(index > 1 and index or ctx.index)
-              #                end
-              #              '';
-              left_pad = 0;
-              right_pad = 0;
-              highlight = "RenderMarkdownBullet";
-              scope_highlight = {};
-            };
-            checkbox = {
-              enabled = true;
-              render_modes = false;
-              bullet = false;
-              right_pad = 1;
-              unchecked = {
-                icon = "󰄱 ";
-                highlight = "RenderMarkdownUnchecked";
-                scope_highlight = null;
-              };
-              checked = {
-                icon = "󰱒 ";
-                highlight = "RenderMarkdownChecked";
-                scope_highlight = null;
-              };
-              custom = {
-                todo = {
-                  raw = "[-]";
-                  rendered = "󰥔 ";
-                  highlight = "RenderMarkdownTodo";
-                  scope_highlight = null;
-                };
-              };
-            };
-            quote = {
-              enabled = true;
-              render_modes = false;
-              icon = "▋";
-              repeat_linebreak = false;
-              highlight = [
-                "RenderMarkdownQuote1"
-                "RenderMarkdownQuote2"
-                "RenderMarkdownQuote3"
-                "RenderMarkdownQuote4"
-                "RenderMarkdownQuote5"
-                "RenderMarkdownQuote6"
-              ];
-            };
-            pipe_table = {
-              enabled = true;
-              render_modes = false;
-              preset = "none";
-              cell = "padded";
-              #cell_offset = ''
-              #  function()
-              #    return 0
-              #  end
-              #'';
-              padding = 1;
-              min_width = 0;
-              border = [
-                "┌"
-                "┬"
-                "┐"
-                "├"
-                "┼"
-                "┤"
-                "└"
-                "┴"
-                "┘"
-                "│"
-                "─"
-              ];
-              border_enabled = true;
-              border_virtual = false;
-              alignment_indicator = "━";
-              head = "RenderMarkdownTableHead";
-              row = "RenderMarkdownTableRow";
-              filler = "RenderMarkdownTableFill";
-              style = "full";
-            };
-            callout = {
-              note = {
-                raw = "[!NOTE]";
-                rendered = "󰋽 Note";
-                highlight = "RenderMarkdownInfo";
-                category = "github";
-              };
-              tip = {
-                raw = "[!TIP]";
-                rendered = "󰌶 Tip";
-                highlight = "RenderMarkdownSuccess";
-                category = "github";
-              };
-              important = {
-                raw = "[!IMPORTANT]";
-                rendered = "󰅾 Important";
-                highlight = "RenderMarkdownHint";
-                category = "github";
-              };
-              warning = {
-                raw = "[!WARNING]";
-                rendered = "󰀪 Warning";
-                highlight = "RenderMarkdownWarn";
-                category = "github";
-              };
-              caution = {
-                raw = "[!CAUTION]";
-                rendered = "󰳦 Caution";
-                highlight = "RenderMarkdownError";
-                category = "github";
-              };
-              abstract = {
-                raw = "[!ABSTRACT]";
-                rendered = "󰨸 Abstract";
-                highlight = "RenderMarkdownInfo";
-                category = "obsidian";
-              };
-              summary = {
-                raw = "[!SUMMARY]";
-                rendered = "󰨸 Summary";
-                highlight = "RenderMarkdownInfo";
-                category = "obsidian";
-              };
-              tldr = {
-                raw = "[!TLDR]";
-                rendered = "󰨸 Tldr";
-                highlight = "RenderMarkdownInfo";
-                category = "obsidian";
-              };
-              info = {
-                raw = "[!INFO]";
-                rendered = "󰋽 Info";
-                highlight = "RenderMarkdownInfo";
-                category = "obsidian";
-              };
-              todo = {
-                raw = "[!TODO]";
-                rendered = "󰗡 Todo";
-                highlight = "RenderMarkdownInfo";
-                category = "obsidian";
-              };
-              hint = {
-                raw = "[!HINT]";
-                rendered = "󰌶 Hint";
-                highlight = "RenderMarkdownSuccess";
-                category = "obsidian";
-              };
-              success = {
-                raw = "[!SUCCESS]";
-                rendered = "󰄬 Success";
-                highlight = "RenderMarkdownSuccess";
-                category = "obsidian";
-              };
-              check = {
-                raw = "[!CHECK]";
-                rendered = "󰄬 Check";
-                highlight = "RenderMarkdownSuccess";
-                category = "obsidian";
-              };
-              done = {
-                raw = "[!DONE]";
-                rendered = "󰄬 Done";
-                highlight = "RenderMarkdownSuccess";
-                category = "obsidian";
-              };
-              question = {
-                raw = "[!QUESTION]";
-                rendered = "󰘥 Question";
-                highlight = "RenderMarkdownWarn";
-                category = "obsidian";
-              };
-              help = {
-                raw = "[!HELP]";
-                rendered = "󰘥 Help";
-                highlight = "RenderMarkdownWarn";
-                category = "obsidian";
-              };
-              faq = {
-                raw = "[!FAQ]";
-                rendered = "󰘥 Faq";
-                highlight = "RenderMarkdownWarn";
-                category = "obsidian";
-              };
-              attention = {
-                raw = "[!ATTENTION]";
-                rendered = "󰀪 Attention";
-                highlight = "RenderMarkdownWarn";
-                category = "obsidian";
-              };
-              failure = {
-                raw = "[!FAILURE]";
-                rendered = "󰅖 Failure";
-                highlight = "RenderMarkdownError";
-                category = "obsidian";
-              };
-              fail = {
-                raw = "[!FAIL]";
-                rendered = "󰅖 Fail";
-                highlight = "RenderMarkdownError";
-                category = "obsidian";
-              };
-              missing = {
-                raw = "[!MISSING]";
-                rendered = "󰅖 Missing";
-                highlight = "RenderMarkdownError";
-                category = "obsidian";
-              };
-              danger = {
-                raw = "[!DANGER]";
-                rendered = "󱐌 Danger";
-                highlight = "RenderMarkdownError";
-                category = "obsidian";
-              };
-              error = {
-                raw = "[!ERROR]";
-                rendered = "󱐌 Error";
-                highlight = "RenderMarkdownError";
-                category = "obsidian";
-              };
-              bug = {
-                raw = "[!BUG]";
-                rendered = "󰨰 Bug";
-                highlight = "RenderMarkdownError";
-                category = "obsidian";
-              };
-              example = {
-                raw = "[!EXAMPLE]";
-                rendered = "󰉹 Example";
-                highlight = "RenderMarkdownHint";
-                category = "obsidian";
-              };
-              quote = {
-                raw = "[!QUOTE]";
-                rendered = "󱆨 Quote";
-                highlight = "RenderMarkdownQuote";
-                category = "obsidian";
-              };
-              cite = {
-                raw = "[!CITE]";
-                rendered = "󱆨 Cite";
-                highlight = "RenderMarkdownQuote";
-                category = "obsidian";
-              };
-            };
-            link = {
-              enabled = true;
-              render_modes = false;
-              footnote = {
-                enabled = true;
-                superscript = true;
-                prefix = "";
-                suffix = "";
-              };
-              image = "󰥶 ";
-              email = "󰀓 ";
-              hyperlink = "󰌹 ";
-              highlight = "RenderMarkdownLink";
-              wiki = {
-                icon = "󱗖 ";
-                #body = ''
-                #  function()
-                #    return nil
-                #  end
-                #'';
-                highlight = "RenderMarkdownWikiLink";
-                scope_highlight = null;
-              };
-              custom = {
-                web = {
-                  pattern = "^http";
-                  icon = "󰖟 ";
-                };
-                discord = {
-                  pattern = "discord%.com";
-                  icon = "󰙯 ";
-                };
-                github = {
-                  pattern = "github%.com";
-                  icon = "󰊤 ";
-                };
-                gitlab = {
-                  pattern = "gitlab%.com";
-                  icon = "󰮠 ";
-                };
-                google = {
-                  pattern = "google%.com";
-                  icon = "󰊭 ";
-                };
-                neovim = {
-                  pattern = "neovim%.io";
-                  icon = " ";
-                };
-                reddit = {
-                  pattern = "reddit%.com";
-                  icon = "󰑍 ";
-                };
-                stackoverflow = {
-                  pattern = "stackoverflow%.com";
-                  icon = "󰓌 ";
-                };
-                wikipedia = {
-                  pattern = "wikipedia%.org";
-                  icon = "󰖬 ";
-                };
-                youtube = {
-                  pattern = "youtube%.com";
-                  icon = "󰗃 ";
-                };
-              };
-            };
-            sign = {
-              enabled = true;
-              highlight = "RenderMarkdownSign";
-            };
-            inline_highlight = {
-              enabled = true;
-              render_modes = false;
-              highlight = "RenderMarkdownInlineHighlight";
-            };
-            indent = {
-              enabled = false;
-              render_modes = false;
-              per_level = 2;
-              skip_level = 1;
-              skip_heading = false;
-              icon = "▎";
-              priority = 0;
-              highlight = "RenderMarkdownIndent";
-            };
-            html = {
-              enabled = true;
-              render_modes = false;
-              comment = {
-                conceal = true;
-                text = null;
-                highlight = "RenderMarkdownHtmlComment";
-              };
-              tag = {};
-            };
-            win_options = {
-              conceallevel = {
-                #  default = "vim.o.conceallevel";
-                rendered = 3;
-              };
-              concealcursor = {
-                #default = "vim.o.concealcursor";
-                #rendered = "";
-              };
-            };
-            overrides = {
-              buflisted = {};
-              buftype = {
-                nofile = {
-                  render_modes = true;
-                  padding = {highlight = "NormalFloat";};
-                  sign = {enabled = false;};
-                };
-              };
-              filetype = {};
-            };
-            custom_handlers = {};
-            #yaml = {
-            #  enabled = true;
-            #  render_modes = false;
-            #};
-          };
-        };
-      };
-
-      # Languages that are enabled in the maximal configuration.
-      bash.enable = true;
-      clang.enable = true;
-      css.enable = true;
-      html.enable = true;
-      sql.enable = true;
-      java.enable = true;
-      kotlin.enable = true;
-      ts.enable = true;
-      go.enable = true;
-      lua.enable = true;
-      zig.enable = true;
-      python.enable = true;
-      typst.enable = true;
-      rust = {
-        enable = true;
-        crates.enable = true;
-      };
-
-      # Language modules that are not as common.
-      assembly.enable = false;
-      astro.enable = false;
-      nu.enable = false;
-      csharp.enable = false;
-      julia.enable = false;
-      vala.enable = false;
-      scala.enable = false;
-      r.enable = false;
-      gleam.enable = false;
-      dart.enable = false;
-      ocaml.enable = false;
-      elixir.enable = false;
-      haskell.enable = false;
-      ruby.enable = false;
-      fsharp.enable = false;
-
-      tailwind.enable = false;
-      svelte.enable = false;
-
-      # Nim LSP is broken on Darwin and therefore
-      # should be disabled by default. Users may still enable
-      # `vim.languages.vim` to enable it, this does not restrict
-      # that.
-      # See: <https://github.com/PMunch/nimlsp/issues/178#issue-2128106096>
-      nim.enable = false;
-    };
-
-    visuals = {
-      nvim-scrollbar.enable = true;
-      nvim-web-devicons.enable = true;
-      nvim-cursorline.enable = true;
-      cinnamon-nvim.enable = true;
-      fidget-nvim.enable = true;
-
-      highlight-undo.enable = true;
-      indent-blankline.enable = true;
-
-      # Fun
-      cellular-automaton.enable = false;
-    };
-
-    statusline = {
-      lualine = {
-        enable = true;
-        theme = "catppuccin";
-      };
-    };
-
-    theme = {
-      enable = true;
-      name = "catppuccin";
-      style = "mocha";
-      transparent = false;
-    };
-
-    autopairs.nvim-autopairs.enable = true;
-
-    # nvf provides various autocomplete options. The tried and tested nvim-cmp
-    # is enabled in default package, because it does not trigger a build. We
-    # enable blink-cmp in maximal because it needs to build its rust fuzzy
-    # matcher library.
-    autocomplete = {
-      nvim-cmp.enable = !true;
-      blink-cmp.enable = true;
-    };
-
-    snippets.luasnip.enable = true;
-
-    filetree = {
-      neo-tree = {
-        enable = true;
-      };
-    };
-
-    tabline = {
-      nvimBufferline.enable = true;
-    };
-
-    treesitter.context.enable = true;
-
-    binds = {
-      whichKey.enable = true;
-      cheatsheet.enable = true;
-    };
-
-    keymaps = [
-      {
-        mode = "n";
-        key = "<leader>?";
-        action = ":Cheatsheet<CR>";
-      }
-      {
-        mode = "n";
-        key = "<leader>e";
-        action = ":Neotree toggle<CR>";
-      }
-    ];
-
-    telescope.enable = true;
-
-    git = {
-      enable = true;
-      gitsigns.enable = true;
-      gitsigns.codeActions.enable = false; # throws an annoying debug message
-      neogit.enable = true;
-    };
-
-    minimap = {
-      minimap-vim.enable = false;
-      codewindow.enable = true; # lighter, faster, and uses lua for configuration
-    };
-
-    dashboard = {
-      dashboard-nvim.enable = false;
-      alpha.enable = true;
-    };
-
-    notify = {
-      nvim-notify.enable = true;
-    };
-
-    projects = {
-      project-nvim.enable = true;
-    };
-
-    utility = {
-      ccc.enable = false;
-      vim-wakatime.enable = false;
-      diffview-nvim.enable = true;
-      yanky-nvim.enable = false;
-      icon-picker.enable = true;
-      surround.enable = true;
-      leetcode-nvim.enable = true;
-      multicursors.enable = true;
-      smart-splits.enable = true;
-      undotree.enable = true;
-      nvim-biscuits.enable = true;
-
-      motion = {
-        hop.enable = true;
-        leap.enable = true;
-        precognition.enable = true;
-      };
-      images = {
-        image-nvim.enable = false;
-        img-clip.enable = true;
-      };
-    };
-
-    notes = {
-      obsidian.enable = false; # FIXME: neovim fails to build if obsidian is enabled
-      neorg.enable = false;
-      orgmode.enable = false;
-      mind-nvim.enable = true;
-      todo-comments.enable = true;
-    };
-
-    terminal = {
-      toggleterm = {
-        enable = true;
-        lazygit.enable = true;
-      };
-    };
-
-    ui = {
-      borders.enable = true;
-      noice.enable = true;
-      colorizer.enable = true;
-      modes-nvim.enable = false; # the theme looks terrible with catppuccin
-      illuminate.enable = true;
-      breadcrumbs = {
-        enable = true;
-        navbuddy.enable = true;
-      };
-      smartcolumn = {
-        enable = true;
-        setupOpts.custom_colorcolumn = {
-          # this is a freeform module, it's `buftype = int;` for configuring column position
-          nix = "110";
-          ruby = "120";
-          java = "130";
-          go = ["90" "130"];
-        };
-      };
-      fastaction.enable = true;
-    };
-
-    assistant = {
-      chatgpt.enable = false;
-      copilot = {
-        enable = false;
-        cmp.enable = true;
-      };
-      codecompanion-nvim.enable = false;
-      avante-nvim.enable = true;
-    };
-
-    session = {
-      nvim-session-manager.enable = false;
-    };
-
-    gestures = {
-      gesture-nvim.enable = false;
-    };
-
-    comments = {
-      comment-nvim.enable = true;
-    };
-
-    presence = {
-      neocord.enable = false;
-    };
-  };
+}: let
+  filePath = "${config.dotfiles.path}/astronvim-config/init.lua";
+  configSrc =
+    if !config.dotfiles.mutable
+    then ./init.lua
+    else config.lib.file.mkOutOfStoreSymlink filePath;
+in {
+  home.packages = [pkgs.neovim];
+  xdg.configFile."neovim/config.conf".source = configSrc;
 }
index 745b21c919bbf3ce53e4c97fef07d164f9fff805..feff8e911c13acc7f24462a6e227f66721c4d195 100644 (file)
--- a/tmux.nix
+++ b/tmux.nix
     disableConfirmationPrompt = true;
     mouse = true;
     newSession = true;
+    plugins = with pkgs.tmuxPlugins; [sensible];
 
     extraConfig = ''
-                        unbind C-b
-                        set -g prefix M-b
-                        bind M-b send-prefix
+      unbind %
+      unbind '"'
+      bind -n M-\\ split-window -h -c "#{pane_current_path}"
+      bind -n M-- split-window -v -c "#{pane_current_path}"
 
-                        unbind %
-                        unbind '"'
-                        bind -n M-\\ split-window -h -c "#{pane_current_path}"
-                        bind -n M-- split-window -v -c "#{pane_current_path}"
-
-                        bind -n M-c new-window -c "#{pane_current_path}"
-                        bind -n M-q kill-window
-                        bind -n M-w kill-pane
-                        bind -n M-r command-prompt -I "#W" "rename-window '%%'"
+      bind -n M-c new-window -c "#{pane_current_path}"
+      bind -n M-q kill-window
+      bind -n M-w kill-pane
+      bind -n M-r command-prompt -I "#W" "rename-window '%%'"
       bind -n M-Space display-popup -E "\
-          tmux list-sessions -F '#{session_name}' 2>/dev/null | \
-          fzf --reverse \
-              --header='Alt+Space → Switch or Create Session' \
-              --border=rounded \
-              --height=40% \
-              --print-query \
-              --preview='tmux capture-pane -p -t {} 2>/dev/null || echo \"(new session)\"' | \
-          tail -1 | \
-          xargs -I {} sh -c '\
-            if tmux has-session -t \"{}\" 2>/dev/null; then \
-              tmux switch-client -t \"{}\"; \
-            else \
-              tmux new-session -d -s \"{}\" && tmux switch-client -t \"{}\"; \
-            fi' \
-                        set -g escape-time 10
-                        set -s escape-time 10
-                        bind -n M-1 select-window -t 1
-                        bind -n M-2 select-window -t 2
-                        bind -n M-3 select-window -t 3
-                        bind -n M-4 select-window -t 4
-                        bind -n M-5 select-window -t 5
-                        bind -n M-6 select-window -t 6
-                        bind -n M-7 select-window -t 7
-                        bind -n M-8 select-window -t 8
-                        bind -n M-9 select-window -t 9
+      tmux list-sessions -F '#{session_name}' 2>/dev/null | \
+      fzf --reverse \
+      --header='Alt+Space → Switch or Mreate Session' \
+      --border=rounded \
+      --height=40% \
+      --print-query \
+      --preview='tmux capture-pane -p -t {} 2>/dev/null || echo \"(new session)\"' | \
+      tail -1 | \
+      xargs -I {} sh -c '\
+      if tmux has-session -t \"{}\" 2>/dev/null; then \
+      tmux switch-client -t \"{}\"; \
+      else \
+      tmux new-session -d -s \"{}\" && tmux switch-client -t \"{}\"; \
+      fi' \
+      set -g escape-time 0
+      set -sg repeat-time 1000
+      bind r source-file ~/.config/tmux/tmux.conf \; display "Monfig reloaded!"
+
+
+      bind -n M-1 select-window -t 1
+      bind -n M-2 select-window -t 2
+      bind -n M-3 select-window -t 3
+      bind -n M-4 select-window -t 4
+      bind -n M-5 select-window -t 5
+      bind -n M-6 select-window -t 6
+      bind -n M-7 select-window -t 7
+      bind -n M-8 select-window -t 8
+      bind -n M-9 select-window -t 9
 
-                        bind -n M-h select-pane -L
-                        bind -n M-j select-pane -D
-                        bind -n M-k select-pane -U
-                        bind -n M-l select-pane -R
+      bind -n M-h select-pane -L
+      bind -n M-j select-pane -D
+      bind -n M-k select-pane -U
+      bind -n M-l select-pane -R
 
-                        bind -n M-H swap-pane -U
-                        bind -n M-J swap-pane -D
-                        bind -n M-K swap-pane -U
-                        bind -n M-L swap-pane -D
+      bind -n M-H swap-pane -U
+      bind -n M-J swap-pane -D
+      bind -n M-K swap-pane -U
+      bind -n M-L swap-pane -D
 
     '';
   };