From: Andrew Date: Sat, 8 Nov 2025 18:32:13 +0000 (-0500) Subject: dotfile managment X-Git-Url: http://git.skullheadx.com/tech/index.html?a=commitdiff_plain;h=0f94e226637a238d33f7c6e5b359b6b65f733a70;p=nixos.git dotfile managment --- diff --git a/TODO.md b/TODO.md index 2b44050..24d0168 100644 --- 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 index 0000000..a235620 --- /dev/null +++ b/dotfiles.nix @@ -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"; + }; + }; + }; +} diff --git a/flake.lock b/flake.lock index 0e34c66..bf9fe02 100644 --- a/flake.lock +++ b/flake.lock @@ -68,21 +68,6 @@ "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": { @@ -99,38 +84,6 @@ "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": [ @@ -153,66 +106,6 @@ } }, "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", @@ -266,33 +159,6 @@ "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": [ @@ -313,68 +179,6 @@ "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, @@ -391,18 +195,6 @@ "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, @@ -419,38 +211,6 @@ "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", @@ -495,85 +255,14 @@ "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", @@ -581,13 +270,13 @@ "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", @@ -623,36 +312,6 @@ "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": { diff --git a/flake.nix b/flake.nix index 801ffa7..7ee6bf4 100644 --- a/flake.nix +++ b/flake.nix @@ -11,10 +11,6 @@ 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 @@ -38,13 +32,6 @@ config.allowUnfree = true; overlays = [nur.overlay]; }; - skullNeovim = nvf.lib.neovimConfiguration { - inherit pkgs; - modules = [ - ./neovim.nix - ]; - extraSpecialArgs = {inherit inputs;}; - }; in { nixosConfigurations = { home = lib.nixosSystem { @@ -63,11 +50,12 @@ 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; }; } diff --git a/ghostty.nix b/ghostty.nix index c7cf640..c598066 100644 --- a/ghostty.nix +++ b/ghostty.nix @@ -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"; diff --git a/home.nix b/home.nix index 14a08da..c3762bc 100644 --- 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 @@ -145,8 +140,6 @@ # /etc/profiles/per-user/andrew/etc/profile.d/hm-session-vars.sh # home.sessionVariables = { - EDITOR = "nvim"; - VISUAL = "nvim"; NIXOS_OZONE_WL = "1"; }; diff --git a/hyprland/hyprland.nix b/hyprland/hyprland.nix index ef7e70e..4fabdd4 100644 --- a/hyprland/hyprland.nix +++ b/hyprland/hyprland.nix @@ -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; }; diff --git a/neovim.nix b/neovim.nix index 9c5e715..a10b650 100644 --- a/neovim.nix +++ b/neovim.nix @@ -4,850 +4,13 @@ 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: - 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 = "?"; - action = ":Cheatsheet"; - } - { - mode = "n"; - key = "e"; - action = ":Neotree toggle"; - } - ]; - - 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; } diff --git a/tmux.nix b/tmux.nix index 745b21c..feff8e9 100644 --- a/tmux.nix +++ b/tmux.nix @@ -13,57 +13,57 @@ 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 ''; };