From 83dfbf9260ed8b3c6a89f4ded3b29f5272765642 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Fri, 7 Nov 2025 15:44:57 -0500 Subject: [PATCH] add nixvim config --- flake.lock | 144 ++++++++++++++++++++++++++++++++++++ flake.nix | 12 ++- home/alien.nix | 1 - home/all.nix | 197 +++++++++++++++++++++++++++++++++++++++++++++++-- home/peach.nix | 15 +++- hosts/all.nix | 64 +++++++++++++++- 6 files changed, 421 insertions(+), 12 deletions(-) diff --git a/flake.lock b/flake.lock index 63a625a..f86b74f 100644 --- a/flake.lock +++ b/flake.lock @@ -56,6 +56,45 @@ "type": "github" } }, + "flake-parts": { + "inputs": { + "nixpkgs-lib": [ + "nixvim", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1762440070, + "narHash": "sha256-xxdepIcb39UJ94+YydGP221rjnpkDZUlykKuF54PsqI=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "26d05891e14c88eb4a5d5bee659c0db5afb609d8", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-utils": { + "inputs": { + "systems": "systems" + }, + "locked": { + "lastModified": 1731533236, + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, "home-manager": { "inputs": { "nixpkgs": [ @@ -76,6 +115,34 @@ "type": "github" } }, + "ixx": { + "inputs": { + "flake-utils": [ + "nixvim", + "nuschtosSearch", + "flake-utils" + ], + "nixpkgs": [ + "nixvim", + "nuschtosSearch", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1754860581, + "narHash": "sha256-EM0IE63OHxXCOpDHXaTyHIOk2cNvMCGPqLt/IdtVxgk=", + "owner": "NuschtOS", + "repo": "ixx", + "rev": "babfe85a876162c4acc9ab6fb4483df88fa1f281", + "type": "github" + }, + "original": { + "owner": "NuschtOS", + "ref": "v0.1.1", + "repo": "ixx", + "type": "github" + } + }, "nixpkgs": { "locked": { "lastModified": 1762111121, @@ -92,6 +159,52 @@ "type": "github" } }, + "nixvim": { + "inputs": { + "flake-parts": "flake-parts", + "nixpkgs": [ + "nixpkgs" + ], + "nuschtosSearch": "nuschtosSearch", + "systems": "systems_2" + }, + "locked": { + "lastModified": 1762523528, + "narHash": "sha256-VH4+fAB85irWuzxfWPfEEwDOE+eQsB/pljNApM0onuU=", + "owner": "nix-community", + "repo": "nixvim", + "rev": "3031d4ab616323f6d41704dfb46f2b801f29973d", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixvim", + "type": "github" + } + }, + "nuschtosSearch": { + "inputs": { + "flake-utils": "flake-utils", + "ixx": "ixx", + "nixpkgs": [ + "nixvim", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1761730856, + "narHash": "sha256-t1i5p/vSWwueZSC0Z2BImxx3BjoUDNKyC2mk24krcMY=", + "owner": "NuschtOS", + "repo": "search", + "rev": "e29de6db0cb3182e9aee75a3b1fd1919d995d85b", + "type": "github" + }, + "original": { + "owner": "NuschtOS", + "repo": "search", + "type": "github" + } + }, "plasma-manager": { "inputs": { "home-manager": [ @@ -121,8 +234,39 @@ "catppuccin": "catppuccin", "home-manager": "home-manager", "nixpkgs": "nixpkgs", + "nixvim": "nixvim", "plasma-manager": "plasma-manager" } + }, + "systems": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_2": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } } }, "root": "root", diff --git a/flake.nix b/flake.nix index 09b6feb..2b8966d 100644 --- a/flake.nix +++ b/flake.nix @@ -20,6 +20,11 @@ inputs.home-manager.follows = "home-manager"; }; + nixvim = { + url = "github:nix-community/nixvim"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + apple-silicon = { url = "github:nix-community/nixos-apple-silicon"; inputs.nixpkgs.follows = "nixpkgs"; @@ -32,6 +37,7 @@ catppuccin, home-manager, plasma-manager, + nixvim, apple-silicon, ... }: @@ -52,7 +58,10 @@ catppuccin.nixosModules.catppuccin home-manager.nixosModules.home-manager { - home-manager.sharedModules = [ plasma-manager.homeModules.plasma-manager ]; + home-manager.sharedModules = [ + plasma-manager.homeModules.plasma-manager + nixvim.homeModules.nixvim + ]; } ] ++ extraModules; @@ -74,6 +83,7 @@ catppuccin.homeModules.catppuccin home-manager.homeModules.home-manager plasma-manager.homeModules.plasma-manager + nixvim.homeModules.nixvim ]; }; in diff --git a/home/alien.nix b/home/alien.nix index b0cd9b4..441ea22 100644 --- a/home/alien.nix +++ b/home/alien.nix @@ -8,7 +8,6 @@ programs.plasma = { workspace = { - # lookAndFeel = "Catppuccin-Mocha-Blue"; colorScheme = "CatppuccinMochaBlue"; cursor.theme = "catppuccin-mocha-blue-cursors"; splashScreen.theme = "Catpppuccin-Mocha-Blue"; diff --git a/home/all.nix b/home/all.nix index 13eb9c9..46a108f 100755 --- a/home/all.nix +++ b/home/all.nix @@ -3,18 +3,16 @@ { home.packages = with pkgs; [ vesktop - fish gh adwsteamgtk prismlauncher tmux fastfetch btop - neovim + # neovim killall wget ripgrep - kitty ncdu fzf wl-clipboard @@ -48,6 +46,172 @@ }; }; + programs.kitty = { + enable = true; + enableGitIntegration = true; + themeFile = "Catppuccin-Mocha"; + font = { + name = "Noto Sans Mono"; + size = 10; + }; + shellIntegration.enableFishIntegration = true; + extraConfig = "\nwheel_scroll_multiplier 5.0"; + }; + + programs.fish = { + enable = true; + interactiveShellInit = '' + set fish_greeting # Disable greeting + ''; + }; + + programs.nixvim = { + enable = true; + defaultEditor = true; + waylandSupport = true; + viAlias = true; + vimAlias = true; + clipboard = { + register = "unnamedplus"; + providers.wl-copy.enable = true; + }; + opts = { + tabstop = 2; + softtabstop = 2; + shiftwidth = 2; + expandtab = true; + number = true; + }; + colorschemes.catppuccin = { + enable = true; + settings = { + flavour = "mocha"; + }; + }; + keymaps = [ + # --- Normal mode mappings --- + { + mode = "n"; + key = ""; + action = "\"+y"; + options = { + noremap = true; + silent = true; + }; + } + { + mode = "n"; + key = ""; + action = "\"+p"; + options = { + noremap = true; + silent = true; + }; + } + + # --- Visual mode mappings --- + { + mode = "v"; + key = ""; + action = "\"+y"; + options = { + noremap = true; + silent = true; + }; + } + { + mode = "v"; + key = ""; + action = "\"+p"; + options = { + noremap = true; + silent = true; + }; + } + ]; + plugins = { + nvim-autopairs = { + enable = true; + # autoLoad = true; + }; + cmp = { + autoEnableSources = true; + enable = true; + # autoLoad = true; + }; + copilot-lua = { + enable = true; + # autoLoad = true; + }; + conform-nvim = { + enable = true; + # autoLoad = true; + settings = { + formatters_by_ft = { + lua = [ "stylua" ]; + python = [ + "isort" + "black" + ]; + nix = [ "nixfmt" ]; + javascript = [ + "deno fmt" + "prettier" + ]; + css = [ + "deno fmt" + "prettier" + ]; + json = [ + "deno fmt" + "prettier" + ]; + jsonc = [ + "deno fmt" + "prettier" + ]; + }; + + # Default formatting options + default_format_opts = { + lsp_format = "fallback"; + }; + + # Format-on-save behavior + format_on_save = { + timeout_ms = 500; + }; + + # Custom formatter settings + formatters = { + shfmt = { + append_args = [ + "-i" + "2" + ]; + }; + }; + }; + }; + fzf-lua = { + enable = true; + # autoLoad = true; + }; + kitty-scrollback = { + enable = true; + # autoLoad = true; + }; + lsp = { + enable = true; + # autoLoad = true; + }; + lualine = { + enable = true; + # autoLoad = true; + }; + }; + }; + programs.plasma = { enable = true; overrideConfig = true; @@ -65,6 +229,22 @@ cursor.size = 24; }; + kwin = { + titlebarButtons = { + left = [ + "application-menu" + "on-all-desktops" + "keep-below-windows" + "keep-above-windows" + ]; + right = [ + "minimize" + "maximize" + "close" + ]; + }; + }; + configFile = { kwinrc.Desktops.Number = 3; # kdeglobals.KDE.AutomaticLookAndFeel = true; @@ -109,7 +289,8 @@ launchers = [ "applications:firefox.desktop" "applications:org.kde.dolphin.desktop" - "applications:org.kde.konsole.desktop" + "applications:vesktop.desktop" + "applications:kitty.desktop" ]; }; } @@ -131,12 +312,14 @@ shown = [ "org.kde.plasma.battery" "org.kde.plasma.bluetooth" - ]; - # And explicitly hide networkmanagement and volume - hidden = [ "org.kde.plasma.networkmanagement" "org.kde.plasma.volume" ]; + # And explicitly hide networkmanagement and volume + # hidden = [ + # "org.kde.plasma.networkmanagement" + # "org.kde.plasma.volume" + # ]; }; } { diff --git a/home/peach.nix b/home/peach.nix index 7538dcc..26be939 100644 --- a/home/peach.nix +++ b/home/peach.nix @@ -7,8 +7,21 @@ }; programs.plasma = { + + input.touchpads = [ + { + name = "Apple MTP multi-touch"; + vendorId = "05ac"; + productId = "0352"; + disableWhileTyping = false; + enable = true; + tapToClick = false; + naturalScroll = true; + accelerationProfile = "default"; + } + ]; + workspace = { - # lookAndFeel = "Catppuccin-Mocha-Peach"; colorScheme = "CatppuccinMochaPeach"; cursor.theme = "catppuccin-mocha-peach-cursors"; splashScreen.theme = "Catpppuccin-Mocha-Peach"; diff --git a/hosts/all.nix b/hosts/all.nix index ba1d73e..a77456a 100755 --- a/hosts/all.nix +++ b/hosts/all.nix @@ -115,6 +115,68 @@ security.sudo.wheelNeedsPassword = false; + programs.firefox = { + enable = true; + preferences = { + "widget.use-xdg-desktop-portal.file-picker" = 1; + "widget.gtk.global-menu.enabled" = true; + "widget.gtk.global-menu.wayland.enabled" = true; + "browser.tabs.inTitlebar" = 0; + "extensions.pocket.enabled" = false; + "extensions.screenshots.disabled" = true; + "browser.topsites.contile.enabled" = false; + "browser.formfill.enable" = false; + "browser.search.suggest.enabled" = false; + "browser.search.suggest.enabled.private" = false; + "browser.urlbar.suggest.searches" = false; + "browser.urlbar.showSearchSuggestionsFirst" = false; + "browser.newtabpage.activity-stream.feeds.section.topstories" = false; + "browser.newtabpage.activity-stream.feeds.snippets" = false; + "browser.newtabpage.activity-stream.section.highlights.includePocket" = false; + "browser.newtabpage.activity-stream.section.highlights.includeBookmarks" = false; + "browser.newtabpage.activity-stream.section.highlights.includeDownloads" = false; + "browser.newtabpage.activity-stream.section.highlights.includeVisited" = false; + "browser.newtabpage.activity-stream.showSponsored" = false; + "browser.newtabpage.activity-stream.system.showSponsored" = false; + "browser.newtabpage.activity-stream.showSponsoredTopSites" = false; + }; + policies = { + DisableTelemetry = true; + DisableFirefoxStudies = true; + EnableTrackingProtection = { + Value = true; + Locked = true; + Cryptomining = true; + Fingerprinting = true; + }; + DisablePocket = true; + DisableFirefoxScreenshots = true; + OverrideFirstRunPage = ""; + OverridePostUpdatePage = ""; + DontCheckDefaultBrowser = true; + DisplayBookmarksToolbar = "newtab"; # alternatives: "always" or "newtab" + DisplayMenuBar = "default-off"; # alternatives: "always", "never" or "default-on" + SearchBar = "unified"; # alternative: "separate" + + # ---- EXTENSIONS ---- + # Check about:support for extension/add-on ID strings. + # Valid strings for installation_mode are "allowed", "blocked", + # "force_installed" and "normal_installed". + # ExtensionSettings = { + # # blocks all addons except the ones specified below + # "*".installation_mode = "blocked"; + # "uBlock0@raymondhill.net" = { + # install_url = "https://addons.mozilla.org/firefox/downloads/latest/ublock-origin/latest.xpi"; + # installation_mode = "force_installed"; + # }; + # "plasma-browser-integration@kde.org" = { + # install_url = "https://addons.mozilla.org/firefox/downloads/latest/plasma-integration/latest.xpi"; + # installation_mode = "force_installed"; + # }; + # }; + }; + }; + programs.bash = { interactiveShellInit = '' if [[ $(${pkgs.procps}/bin/ps --no-header --pid=$PPID --format=comm) != "fish" && -z ''${BASH_EXECUTION_STRING} ]] @@ -125,8 +187,6 @@ ''; }; - programs.firefox.enable = true; - nixpkgs.config.allowUnfree = true; environment = {