diff --git a/flake.lock b/flake.lock index bb226e7c..0383bdb2 100644 --- a/flake.lock +++ b/flake.lock @@ -128,6 +128,29 @@ "type": "github" } }, + "dms": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ], + "quickshell": [ + "quickshell" + ] + }, + "locked": { + "lastModified": 1767906690, + "narHash": "sha256-GQnRxVgmG0UqzbgvxjGtXLsHNzDHQKROK72+KIoYAZk=", + "owner": "AvengeMedia", + "repo": "DankMaterialShell", + "rev": "1ff1f3a7f2db1f9aed4823fe6cd441469352d96f", + "type": "github" + }, + "original": { + "owner": "AvengeMedia", + "repo": "DankMaterialShell", + "type": "github" + } + }, "dn42": { "inputs": { "bird": "bird", @@ -249,7 +272,7 @@ }, "flake-utils_3": { "inputs": { - "systems": "systems_5" + "systems": "systems_6" }, "locked": { "lastModified": 1731533236, @@ -447,6 +470,21 @@ "url": "https://github.com/lucide-icons/lucide/releases/download/0.536.0/lucide-icons-0.536.0.zip" } }, + "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" + } + }, "my-pkgs": { "inputs": { "nixpkgs": [ @@ -467,6 +505,27 @@ "url": "https://git.pyrox.dev/pyrox/pkgs" } }, + "ndg": { + "inputs": { + "nixpkgs": [ + "nvf", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1765720983, + "narHash": "sha256-tWtukpABmux6EC/FuCJEgA1kmRjcRPtED44N+GGPq+4=", + "owner": "feel-co", + "repo": "ndg", + "rev": "f399ace8bb8e1f705dd8942b24d207aa4d75c936", + "type": "github" + }, + "original": { + "owner": "feel-co", + "repo": "ndg", + "type": "github" + } + }, "nix-index-database": { "inputs": { "nixpkgs": [ @@ -563,6 +622,35 @@ "type": "github" } }, + "nvf": { + "inputs": { + "flake-compat": [ + "flake-compat" + ], + "flake-parts": [ + "flake-parts" + ], + "mnw": "mnw", + "ndg": "ndg", + "nixpkgs": [ + "nixpkgs" + ], + "systems": "systems_5" + }, + "locked": { + "lastModified": 1767992839, + "narHash": "sha256-qDcSFxMs6d/WjaVD1RtvFKtlv3FKEt8U10AFMSz+wvE=", + "owner": "notashelf", + "repo": "nvf", + "rev": "5b5548d2182063aa81e1e2dd0f0bc8cbb055179b", + "type": "github" + }, + "original": { + "owner": "notashelf", + "repo": "nvf", + "type": "github" + } + }, "quickshell": { "inputs": { "nixpkgs": [ @@ -588,6 +676,7 @@ "agenix": "agenix", "buildbot-nix": "buildbot-nix", "ctp": "ctp", + "dms": "dms", "dn42": "dn42", "easy-hosts": "easy-hosts", "flake-compat": "flake-compat", @@ -600,6 +689,7 @@ "nix-index-database": "nix-index-database", "nixpkgs": "nixpkgs_2", "nixpkgs-stalwart-fix": "nixpkgs-stalwart-fix", + "nvf": "nvf", "quickshell": "quickshell", "tangled": "tangled", "treefmt-nix": "treefmt-nix" @@ -693,6 +783,21 @@ "type": "github" } }, + "systems_6": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, "tangled": { "inputs": { "actor-typeahead-src": "actor-typeahead-src", diff --git a/flake.nix b/flake.nix index 7fe32bfb..8841bf7e 100644 --- a/flake.nix +++ b/flake.nix @@ -49,6 +49,11 @@ url = "github:pyrox0/dn43.nix"; inputs.nixpkgs.follows = "nixpkgs"; }; + dms = { + url = "github:AvengeMedia/DankMaterialShell"; + inputs.quickshell.follows = "quickshell"; + inputs.nixpkgs.follows = "nixpkgs"; + }; easy-hosts.url = "github:tgirlcloud/easy-hosts"; golink = { url = "github:tailscale/golink"; @@ -65,6 +70,12 @@ url = "github:Mic92/nix-index-database"; inputs.nixpkgs.follows = "nixpkgs"; }; + nvf = { + url = "github:notashelf/nvf"; + inputs.flake-compat.follows = "flake-compat"; + inputs.flake-parts.follows = "flake-parts"; + inputs.nixpkgs.follows = "nixpkgs"; + }; my-pkgs = { url = "git+https://git.pyrox.dev/pyrox/pkgs"; inputs.nixpkgs.follows = "nixpkgs"; @@ -103,6 +114,7 @@ ./homeModules ./templates ./hosts + ./neovim ]; # # Flake attributes diff --git a/homeModules/programs/git/default.nix b/homeModules/programs/git/default.nix index 0fd165b1..acfa3c7c 100644 --- a/homeModules/programs/git/default.nix +++ b/homeModules/programs/git/default.nix @@ -24,7 +24,7 @@ in settings = { branch.sort = "-committerdate"; column.ui = "auto"; - core.editor = lib.getExe pkgs.neovim; + core.editor = "nvim"; "credential \"https://git.pyrox.dev\"".username = "pyrox"; credential.helper = "rbw"; diff = { @@ -95,7 +95,7 @@ in enable = true; gitCredentialHelper.enable = true; settings = { - editor = lib.getExe pkgs.neovim; + editor = "nvim"; git_protocol = "https"; browser = lib.mkIf config.py.profiles.gui.enable pkgs.firefox; prompt = "enabled"; diff --git a/homeModules/programs/neovim/default.nix b/homeModules/programs/neovim/default.nix index 20a53e6e..ff5e7eb3 100644 --- a/homeModules/programs/neovim/default.nix +++ b/homeModules/programs/neovim/default.nix @@ -1,5 +1,4 @@ { - pkgs, config, lib, ... @@ -10,26 +9,7 @@ in { options.py.programs.neovim.enable = lib.mkEnableOption "Neovim Configuration"; - config.programs.neovim = lib.mkIf cfg.enable { - enable = true; - viAlias = true; - vimAlias = true; - vimdiffAlias = true; - withRuby = false; - withNodeJs = false; - withPython3 = false; - extraPackages = [ - pkgs.bottom - pkgs.fd - pkgs.gcc - pkgs.go - pkgs.nodejs - # ] - # ++ lib.optionals config.py.profiles.gui.enable [ - # pkgs.ffmpegthumbnailer - # pkgs.fontpreview - # pkgs.poppler - # pkgs.ueberzug - ]; + config = lib.mkIf cfg.enable { + home.sessionVariables.EDITOR = lib.mkForce "nvim"; }; } diff --git a/neovim/default.nix b/neovim/default.nix new file mode 100644 index 00000000..4680ec8a --- /dev/null +++ b/neovim/default.nix @@ -0,0 +1,19 @@ +{ inputs, ... }: +{ + perSystem = + { + pkgs, + ... + }: + { + packages = { + dishvim = + (inputs.nvf.lib.neovimConfiguration { + inherit pkgs; + modules = [ + ./dishvim.nix + ]; + }).neovim; + }; + }; +} diff --git a/neovim/dishvim.nix b/neovim/dishvim.nix new file mode 100644 index 00000000..8483c771 --- /dev/null +++ b/neovim/dishvim.nix @@ -0,0 +1,155 @@ +{ lib, pkgs, ... }: +{ + config.vim = { + extraPackages = [ + pkgs.rumdl + ]; + diagnostics.enable = true; + options.tabstop = 2; + options.shiftwidth = 2; + withNodeJs = false; + withPython3 = false; + withRuby = false; + syntaxHighlighting = true; + autocomplete.blink-cmp = { + enable = true; + setupOpts.completion.menu.border = "single"; + }; + autopairs.nvim-autopairs.enable = true; + clipboard = { + enable = true; + providers.wl-copy.enable = true; + registers = "unnamedplus"; + }; + formatter.conform-nvim = { + setupOpts = { + formatters_by_ft.markdown = [ "rumdl" ]; + formatters = { + rumdl.command = lib.meta.getExe pkgs.rumdl; + }; + }; + }; + lineNumberMode = "relNumber"; + theme.enable = true; + theme.name = "catppuccin"; + theme.style = "mocha"; + treesitter.enable = true; + git = { + gitsigns.enable = true; + }; + binds.whichKey = { + enable = true; + register = { + "l" = "+LSP"; + }; + }; + lsp = { + enable = true; + formatOnSave = true; + harper-ls.enable = true; + mappings.renameSymbol = "lr"; + }; + # Languages + languages = { + enableFormat = true; + enableTreesitter = true; + css.enable = true; + cue.enable = true; + html.enable = true; + json.enable = true; + just.enable = true; + lua.enable = true; + markdown = { + enable = true; + format.enable = false; + extraDiagnostics.enable = false; + extensions.render-markdown-nvim.enable = true; + lsp.servers = [ "markdown-oxide" ]; + }; + nix = { + enable = true; + format.type = [ "nixfmt" ]; + lsp.servers = [ + "nixd" + "nil" + ]; + }; + python = { + enable = true; + format.type = [ "ruff" ]; + }; + qml.enable = true; + rust = { + enable = true; + extensions.crates-nvim = { + enable = true; + setupOpts = { + completion.crates.enabled = true; + lsp.actions = true; + lsp.completion = true; + lsp.enabled = true; + lsp.hover = true; + }; + }; + }; + sql.enable = true; + sql.dialect = "ansi"; + tailwind.enable = true; + typst = { + enable = true; + extensions.typst-preview-nvim.enable = true; + }; + yaml.enable = true; + }; + statusline.lualine = { + enable = true; + activeSection.c = [ + '' + { + "diff", + colored = true, + diff_color = { + added = 'DiffAdd', + modified = 'DiffChange', + removed = 'DiffDelete', + }, + symbols = { + added = '[+] ', + modified = ' [~] ', + removed = ' [-] ' + }, + separator = { + right = '' + } + } + '' + ]; + }; + ui.borders.enable = true; + ui.borders.globalStyle = "single"; + ui.colorizer.enable = true; + utility.direnv.enable = true; + visuals.fidget-nvim.enable = true; + visuals.indent-blankline.enable = true; + autocmds = [ + { + event = [ "BufWinEnter" ]; + desc = "Restore cursor position"; + once = true; + callback = lib.generators.mkLuaInline '' + function(opts) + local ft = vim.bo[opts.buf].filetype + local last_known_line = vim.api.nvim_buf_get_mark(opts.buf, '"')[1] + if + not (ft:match('commit') and ft:match('rebase')) + and last_known_line > 1 + and last_known_line <= vim.api.nvim_buf_line_count(opts.buf) + then + vim.api.nvim_feedkeys([[g`"]], 'nx', false) + end + end + ''; + } + ]; + }; +} diff --git a/nixosModules/default-config/nixpkgsConfig.nix b/nixosModules/default-config/nixpkgsConfig.nix index 0e5e45ae..867c68d5 100644 --- a/nixosModules/default-config/nixpkgsConfig.nix +++ b/nixosModules/default-config/nixpkgsConfig.nix @@ -7,7 +7,6 @@ overlays = [ inputs.self.overlays.openssh-fixperms inputs.golink.overlays.default - inputs.quickshell.overlays.default ]; config = { allowUnfree = true; diff --git a/nixosModules/programs/dms/default.nix b/nixosModules/programs/dms/default.nix index 2516e938..bcb89d4d 100644 --- a/nixosModules/programs/dms/default.nix +++ b/nixosModules/programs/dms/default.nix @@ -2,17 +2,10 @@ config, lib, inputs', - pkgs, ... }: let cfg = config.py.programs.dms; - # dank-plugins-src = pkgs.fetchFromGitHub { - # owner = "AvengeMedia"; - # repo = "dms-plugins"; - # rev = "8fa7c5286171c66a209dd74e9a47d6e72ccfdad6"; - # hash = ""; - # }; in { options = { @@ -21,26 +14,11 @@ in config = lib.mkIf cfg.enable { programs.dms-shell = { enable = true; - systemd.enable = false; + systemd.enable = true; enableSystemMonitoring = true; enableClipboard = true; + package = inputs'.dms.packages.default; quickshell.package = inputs'.quickshell.packages.quickshell; - # plugins = { - # dankPomodoroTimer.src = dank-plugins-src; - # dankDesktopWeather.src = dank-plugins-src; - # powerUsagePlugin.src = pkgs.fetchFromGitHub { - # owner = "Daniel-42-z"; - # repo = "dms-power-usage"; - # rev = "04b7da69b98be23d6f6bbc0430461680b43809e0"; - # hash = ""; - # }; - # mediaPlayer.src = pkgs.fetchFromGitHub { - # owner = "arrifat346afs"; - # repo = "mediaPlayer"; - # rev = "4d73e6c810f85093339eb6cc6dad251ea6c15b04"; - # hash = ""; - # }; - # }; }; }; } diff --git a/nixosModules/programs/neovim/default.nix b/nixosModules/programs/neovim/default.nix index 6d65389f..6974e736 100644 --- a/nixosModules/programs/neovim/default.nix +++ b/nixosModules/programs/neovim/default.nix @@ -1,6 +1,7 @@ { lib, config, + self', ... }: let @@ -9,13 +10,8 @@ in { options.py.programs.neovim.enable = lib.mkEnableOption "Neovim configuration"; - config.programs.neovim = lib.mkIf cfg.enable { - enable = true; - defaultEditor = true; - viAlias = true; - vimAlias = true; - withRuby = false; - withNodeJs = false; - withPython3 = false; + config = lib.mkIf cfg.enable { + environment.systemPackages = [ self'.packages.dishvim ]; + environment.sessionVariables.EDITOR = lib.mkForce "nvim"; }; }