From 84004b6391ca1b98d07462e027aafdf56677e8b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thea=20Sch=C3=B6bl?= Date: Sat, 1 Feb 2025 11:55:20 +0100 Subject: [PATCH] feat: update system --- flake.lock | 162 ++++++------------ flake.nix | 22 +-- hosts/MONSTER/default.nix | 6 +- modules/home-manager/packages/default.nix | 11 +- modules/home-manager/programs/default.nix | 4 + modules/home-manager/programs/neovide.nix | 2 +- .../home-manager/programs/nixvim/default.nix | 55 +++++- .../nixvim/presets/base/completion.nix | 10 +- .../nixvim/presets/base/diagnostics.nix | 38 ++-- .../nixvim/presets/base/spellcheck.nix | 23 +++ .../nixvim/presets/base/status-line.nix | 12 +- .../programs/nixvim/presets/base/tree.nix | 2 +- .../programs/nixvim/presets/default.nix | 10 +- .../programs/nixvim/presets/languages/c.nix | 33 +++- .../programs/nixvim/presets/languages/js.nix | 26 ++- .../programs/nixvim/presets/languages/nix.nix | 4 + .../nixvim/presets/languages/rust.nix | 22 +++ .../nixvim/presets/languages/svelte.nix | 27 +++ .../presets/remaps/wrapped-line-nav.nix | 22 +++ .../programs/nixvim/presets/trouble.nix | 7 +- modules/home-manager/theme/nvim.vim | 11 +- modules/nixos/desktops/hyprland.nix | 32 ++-- modules/nixos/hardware/audio.nix | 1 - modules/nixos/hardware/fv43u.nix | 4 +- modules/nixos/hardware/hid-fanatecff-pkg.nix | 1 + modules/nixos/hardware/virtual-camera.nix | 2 - modules/nixos/usecases/3d-printing.nix | 14 +- overlays/gbmonctl/default.nix | 4 +- overlays/gccdiag/default.nix | 66 +++++++ 29 files changed, 430 insertions(+), 203 deletions(-) create mode 100644 modules/home-manager/programs/nixvim/presets/base/spellcheck.nix create mode 100644 modules/home-manager/programs/nixvim/presets/languages/svelte.nix create mode 100644 modules/home-manager/programs/nixvim/presets/remaps/wrapped-line-nav.nix create mode 100644 overlays/gccdiag/default.nix diff --git a/flake.lock b/flake.lock index 1749656..c4fd86f 100644 --- a/flake.lock +++ b/flake.lock @@ -9,11 +9,11 @@ "systems": "systems" }, "locked": { - "lastModified": 1731092955, - "narHash": "sha256-L1hLXf4IDZ0KoXbFiSNNZJ7IrReEr/J+CLt6Rl4Ea3M=", + "lastModified": 1735301051, + "narHash": "sha256-jU88Q9tP4vuvWYGQcmOdFwI9e2uMPVYJHbXdiklIH9o=", "owner": "Kirottu", "repo": "anyrun", - "rev": "d2017f224b2bfd7e33573c7070e7c3e2960c7dcc", + "rev": "06017e753c8886d5296768dca80745ee09402a2d", "type": "github" }, "original": { @@ -30,11 +30,11 @@ ] }, "locked": { - "lastModified": 1728330715, - "narHash": "sha256-xRJ2nPOXb//u1jaBnDP56M7v5ldavjbtR6lfGqSvcKg=", + "lastModified": 1735644329, + "narHash": "sha256-tO3HrHriyLvipc4xr+Ewtdlo7wM1OjXNjlWRgmM7peY=", "owner": "numtide", "repo": "devshell", - "rev": "dd6b80932022cea34a019e2bb32f6fa9e494dfef", + "rev": "f7795ede5b02664b57035b3b757876703e2c3eac", "type": "github" }, "original": { @@ -44,29 +44,13 @@ } }, "flake-compat": { - "flake": false, "locked": { - "lastModified": 1717312683, - "narHash": "sha256-FrlieJH50AuvagamEvWMIE6D2OAnERuDboFDYAED/dE=", - "owner": "nix-community", - "repo": "flake-compat", - "rev": "38fd3954cf65ce6faf3d0d45cd26059e059f07ea", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-compat_2": { - "locked": { - "lastModified": 1696426674, - "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", - "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", - "revCount": 57, + "lastModified": 1733328505, + "narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=", + "rev": "ff81ac966bb2cae68946d5ed5fc4994f96d0ffec", + "revCount": 69, "type": "tarball", - "url": "https://api.flakehub.com/f/pinned/edolstra/flake-compat/1.0.1/018afb31-abd1-7bff-a5e4-cff7e18efb7a/source.tar.gz" + "url": "https://api.flakehub.com/f/pinned/edolstra/flake-compat/1.1.0/01948eb7-9cba-704f-bbf3-3fa956735b52/source.tar.gz" }, "original": { "type": "tarball", @@ -102,11 +86,11 @@ ] }, "locked": { - "lastModified": 1733312601, - "narHash": "sha256-4pDvzqnegAfRkPwO3wmwBhVi/Sye1mzps0zHWYnP88c=", + "lastModified": 1736143030, + "narHash": "sha256-+hu54pAoLDEZT9pjHlqL9DNzWz0NbUn8NEAHP7PQPzU=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "205b12d8b7cd4802fbcb8e8ef6a0f1408781a4f9", + "rev": "b905f6fc23a9051a6e1b741e1438dbfc0634c6de", "type": "github" }, "original": { @@ -143,18 +127,14 @@ "nixpkgs": [ "nixvim", "nixpkgs" - ], - "nixpkgs-stable": [ - "nixvim", - "nixpkgs" ] }, "locked": { - "lastModified": 1734425854, - "narHash": "sha256-nzE5UbJ41aPEKf8R2ZFYtLkqPmF7EIUbNEdHMBLg0Ig=", + "lastModified": 1737465171, + "narHash": "sha256-R10v2hoJRLq8jcL4syVFag7nIGE7m13qO48wRIukWNg=", "owner": "cachix", "repo": "git-hooks.nix", - "rev": "0ddd26d0925f618c3a5d85a4fa5eb1e23a09491d", + "rev": "9364dc02281ce2d37a1f55b6e51f7c0f65a75f17", "type": "github" }, "original": { @@ -192,11 +172,11 @@ ] }, "locked": { - "lastModified": 1734344598, - "narHash": "sha256-wNX3hsScqDdqKWOO87wETUEi7a/QlPVgpC/Lh5rFOuA=", + "lastModified": 1737630279, + "narHash": "sha256-wJQCxyMRc4P26zDrHmZiRD5bbfcJpqPG3e2djdGG3pk=", "owner": "nix-community", "repo": "home-manager", - "rev": "83ecd50915a09dca928971139d3a102377a8d242", + "rev": "0db5c8bfcce78583ebbde0b2abbc95ad93445f7c", "type": "github" }, "original": { @@ -213,11 +193,11 @@ ] }, "locked": { - "lastModified": 1734344598, - "narHash": "sha256-wNX3hsScqDdqKWOO87wETUEi7a/QlPVgpC/Lh5rFOuA=", + "lastModified": 1737480538, + "narHash": "sha256-rk/cmrvq3In0TegW9qaAxw+5YpJhRWt2p74/6JStrw0=", "owner": "nix-community", "repo": "home-manager", - "rev": "83ecd50915a09dca928971139d3a102377a8d242", + "rev": "4481a16d1ac5bff4a77c608cefe08c9b9efe840d", "type": "github" }, "original": { @@ -282,11 +262,11 @@ ] }, "locked": { - "lastModified": 1733570843, - "narHash": "sha256-sQJAxY1TYWD1UyibN/FnN97paTFuwBw3Vp3DNCyKsMk=", + "lastModified": 1737504076, + "narHash": "sha256-/B4XJnzYU/6K1ZZOBIgsa3K4pqDJrnC2579c44c+4rI=", "owner": "lnl7", "repo": "nix-darwin", - "rev": "a35b08d09efda83625bef267eb24347b446c80b8", + "rev": "65cc1fa8e36ceff067daf6cfb142331f02f524d3", "type": "github" }, "original": { @@ -295,26 +275,19 @@ "type": "github" } }, - "nixos-cosmic": { - "inputs": { - "flake-compat": "flake-compat", - "nixpkgs": [ - "nixpkgs" - ], - "nixpkgs-stable": "nixpkgs-stable", - "rust-overlay": "rust-overlay" - }, + "nix-flatpak": { "locked": { - "lastModified": 1734404414, - "narHash": "sha256-c/7bsbMcVMb8c4wiLA142ZQfL08U8qYJROGf9NCkfQE=", - "owner": "lilyinstarlight", - "repo": "nixos-cosmic", - "rev": "a364e6a5e9eb93253daf93c747b150e31e09b13c", + "lastModified": 1734128415, + "narHash": "sha256-HLwdVNxpuTsLlM3tCkpbQU6yCehdgf3kOS1G2SDlkzY=", + "owner": "gmodena", + "repo": "nix-flatpak", + "rev": "8bdc2540da516006d07b04019eb57ae0781a04b3", "type": "github" }, "original": { - "owner": "lilyinstarlight", - "repo": "nixos-cosmic", + "owner": "gmodena", + "ref": "latest", + "repo": "nix-flatpak", "type": "github" } }, @@ -334,29 +307,13 @@ "type": "github" } }, - "nixpkgs-stable": { - "locked": { - "lastModified": 1734083684, - "narHash": "sha256-5fNndbndxSx5d+C/D0p/VF32xDiJCJzyOqorOYW4JEo=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "314e12ba369ccdb9b352a4db26ff419f7c49fa84", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-24.11", - "repo": "nixpkgs", - "type": "github" - } - }, "nixpkgs_2": { "locked": { - "lastModified": 1734424634, - "narHash": "sha256-cHar1vqHOOyC7f1+tVycPoWTfKIaqkoe1Q6TnKzuti4=", + "lastModified": 1737181194, + "narHash": "sha256-eoGbMQQTjobtGaPyXInuciinBUWOHG68Ft9zcJer6LE=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "d3c42f187194c26d9f0309a8ecc469d6c878ce33", + "rev": "947eb2af89cbad3d4ffb8bdd2557c48045b7f497", "type": "github" }, "original": { @@ -369,7 +326,7 @@ "nixvim": { "inputs": { "devshell": "devshell", - "flake-compat": "flake-compat_2", + "flake-compat": "flake-compat", "flake-parts": "flake-parts_2", "git-hooks": "git-hooks", "home-manager": "home-manager_2", @@ -381,11 +338,11 @@ "treefmt-nix": "treefmt-nix" }, "locked": { - "lastModified": 1734567959, - "narHash": "sha256-ghNQlnI/r6cnknY58x60695sFrYnI6ZUMg65bmoNGqw=", + "lastModified": 1737645531, + "narHash": "sha256-2cLk8KXpFZhMUFg61Fb8ykTp0VWqJSwcg/1o30nDYVo=", "owner": "nix-community", "repo": "nixvim", - "rev": "37608b462772e35220e02bfbd9045d0946564436", + "rev": "e22bb46c8863c30a791a4183aa9013d542cc5be5", "type": "github" }, "original": { @@ -404,11 +361,11 @@ ] }, "locked": { - "lastModified": 1733773348, - "narHash": "sha256-Y47y+LesOCkJaLvj+dI/Oa6FAKj/T9sKVKDXLNsViPw=", + "lastModified": 1737372689, + "narHash": "sha256-nH3zK2ki0fd5o5qvbGHxukE4qnOLJa1uCzoDObG5vrE=", "owner": "NuschtOS", "repo": "search", - "rev": "3051be7f403bff1d1d380e4612f0c70675b44fc9", + "rev": "570cc17bbc25650eb7d69e4fcda8cfd2f1656922", "type": "github" }, "original": { @@ -422,32 +379,11 @@ "anyrun": "anyrun", "home-manager": "home-manager", "matugen": "matugen", - "nixos-cosmic": "nixos-cosmic", + "nix-flatpak": "nix-flatpak", "nixpkgs": "nixpkgs_2", "nixvim": "nixvim" } }, - "rust-overlay": { - "inputs": { - "nixpkgs": [ - "nixos-cosmic", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1734316514, - "narHash": "sha256-0aLx44yMblcOGpfFXKCzp2GhU5JaE6OTvdU+JYrXiUc=", - "owner": "oxalica", - "repo": "rust-overlay", - "rev": "83ee8ff74d6294a7657320f16814754c4594127b", - "type": "github" - }, - "original": { - "owner": "oxalica", - "repo": "rust-overlay", - "type": "github" - } - }, "systems": { "locked": { "lastModified": 1689347949, @@ -501,11 +437,11 @@ ] }, "locked": { - "lastModified": 1733761991, - "narHash": "sha256-s4DalCDepD22jtKL5Nw6f4LP5UwoMcPzPZgHWjAfqbQ=", + "lastModified": 1737483750, + "narHash": "sha256-5An1wq5U8sNycOBBg3nsDDgpwBmR9liOpDGlhliA6Xo=", "owner": "numtide", "repo": "treefmt-nix", - "rev": "0ce9d149d99bc383d1f2d85f31f6ebd146e46085", + "rev": "f2cc121df15418d028a59c9737d38e3a90fbaf8f", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index a68bdc5..6a11d89 100644 --- a/flake.nix +++ b/flake.nix @@ -14,10 +14,7 @@ url = "github:Kirottu/anyrun"; inputs.nixpkgs.follows = "nixpkgs"; }; - nixos-cosmic = { - url = "github:lilyinstarlight/nixos-cosmic"; - inputs.nixpkgs.follows = "nixpkgs"; - }; + nix-flatpak.url = "github:gmodena/nix-flatpak/?ref=latest"; }; outputs = @@ -27,7 +24,7 @@ nixvim, anyrun, matugen, - nixos-cosmic, + nix-flatpak, ... }@inputs: let @@ -47,6 +44,7 @@ (final: prev: { anyrunPlugins = anyrun.packages.${prev.system}; matugen = matugen.packages.${prev.system}.default; + gccdiag = prev.callPackage ./overlays/gccdiag { }; gbmonctl = prev.callPackage ./overlays/gbmonctl { }; lpc21isp = prev.callPackage ./overlays/lpc21isp { }; rquickshare = prev.callPackage ./overlays/rquickshare { }; @@ -68,22 +66,13 @@ ./modules/nixos ./hosts/${hostname} home-manager.nixosModules.home-manager - nixos-cosmic.nixosModules.default - { - nix.settings = { - substituters = [ - "https://cosmic.cachix.org/" - ]; - trusted-public-keys = [ - "cosmic.cachix.org-1:Dya9IyXD4xdBehWjrkPv6rtxpmMdRel02smYzA85dPE=" - ]; - }; - } + nix-flatpak.nixosModules.nix-flatpak { _module.args = { inherit username; }; networking.hostName = hostname; + services.flatpak.enable = true; home-manager = { useGlobalPkgs = true; useUserPackages = true; @@ -93,6 +82,7 @@ users.${username} = { imports = [ matugen.homeManagerModules.default + nix-flatpak.homeManagerModules.nix-flatpak ./modules/home-manager ./hosts/${hostname}/home.nix ]; diff --git a/hosts/MONSTER/default.nix b/hosts/MONSTER/default.nix index 2581b44..5d6b8d6 100644 --- a/hosts/MONSTER/default.nix +++ b/hosts/MONSTER/default.nix @@ -15,7 +15,6 @@ }; }; - # Bootloader. boot = { quiet.enable = true; @@ -49,11 +48,8 @@ waybar.enable = true; dunst.enable = true; }; - services.desktopManager.cosmic.enable = true; - services.displayManager.cosmic-greeter.enable = true; desktops = { hyprland.enable = true; - # gamescope.enable = true; }; locale.preset.theaninova.enable = true; @@ -65,7 +61,7 @@ services.printing = { enable = true; drivers = with pkgs; [ - rastertokpsl-re + # rastertokpsl-re ]; }; diff --git a/modules/home-manager/packages/default.nix b/modules/home-manager/packages/default.nix index e9251f8..64362c1 100644 --- a/modules/home-manager/packages/default.nix +++ b/modules/home-manager/packages/default.nix @@ -6,6 +6,7 @@ cachix # lorri vulnix + gccdiag # browsers firefox @@ -44,17 +45,19 @@ blender-hip # development - insomnia # TODO: .NET 6 avalonia-ilspy # ghidra - # ida-free # utils libqalculate ranger - neofetch filezilla yubikey-manager - # rquickshare + (pkgs.writeShellApplication { + name = "fix-yubikey"; + text = '' + gpg-connect-agent --hex "scd apdu 00 f1 00 00" /bye + ''; + }) ]; } diff --git a/modules/home-manager/programs/default.nix b/modules/home-manager/programs/default.nix index f757834..783e9d6 100644 --- a/modules/home-manager/programs/default.nix +++ b/modules/home-manager/programs/default.nix @@ -1,5 +1,9 @@ { pkgs, ... }: { + services.flatpak.update.auto = { + enable = true; + onCalendar = "weekly"; + }; programs = { home-manager.enable = true; rbw = { diff --git a/modules/home-manager/programs/neovide.nix b/modules/home-manager/programs/neovide.nix index 3e18f19..5946b79 100644 --- a/modules/home-manager/programs/neovide.nix +++ b/modules/home-manager/programs/neovide.nix @@ -6,7 +6,7 @@ fork = true; font = { normal = [ "FiraCode Nerd Font" ]; - size = 12.75; + size = 12; edging = "subpixelantialias"; hinting = "full"; features."FiraCode Nerd Font" = [ diff --git a/modules/home-manager/programs/nixvim/default.nix b/modules/home-manager/programs/nixvim/default.nix index 4a014be..a5c335f 100644 --- a/modules/home-manager/programs/nixvim/default.nix +++ b/modules/home-manager/programs/nixvim/default.nix @@ -46,13 +46,17 @@ enable = true; prettier = true; }; + spellcheck.enable = false; status-line.enable = true; syntax.enable = true; tree.enable = true; }; languages = { angular.enable = true; - c.enable = true; + c = { + enable = true; + cppcheck = true; + }; css = { enable = true; stylelint = true; @@ -68,21 +72,64 @@ python.enable = true; rust.enable = true; shell.enable = true; + svelte.enable = true; }; remaps = { half-page-scroll.enable = true; no-accidental-macro.enable = true; paste-keep-buffer.enable = true; + wrapped-line-nav.enable = true; }; }; + extraPlugins = [ pkgs.vimPlugins.tiny-inline-diagnostic-nvim ]; + extraConfigLua = '' + require("tiny-inline-diagnostic").setup({ + preset = "modern", + hi = { + arrow = "LineNr", + background = "LineNr", + }, + options = { + show_source = true, + use_icons_from_diagnostic = true, + add_messages = true, + throttle = 0, + softwrap = 30, + multiple_diag_under_cursor = true, + multilines = { + enabled = true, + always_show = true, + }, + show_all_diags_on_cursorline = false, + enable_on_insert = true, + enable_on_select = true, + severity = { + vim.diagnostic.severity.ERROR, + vim.diagnostic.severity.WARN, + vim.diagnostic.severity.INFO, + vim.diagnostic.severity.HINT, + }, + }, + }) + ''; + diagnostics.virtual_text = false; + plugins = { leap.enable = true; vim-surround.enable = true; which-key.enable = true; schemastore.enable = true; - # TODO: looks weird with neovide - # treesitter-context.enable = true; + comment.enable = true; + debugprint.enable = true; + todo-comments.enable = true; + treesitter-context = { + enable = false; # TODO: looks weird with Neovide + settings = { + line_numbers = false; + }; + }; + none-ls.settings.debug = true; lsp.servers = { html.enable = true; @@ -97,7 +144,7 @@ copilot-lua = { enable = true; - suggestion.autoTrigger = true; + settings.suggestion.auto_trigger = true; }; }; } diff --git a/modules/home-manager/programs/nixvim/presets/base/completion.nix b/modules/home-manager/programs/nixvim/presets/base/completion.nix index ef6b076..a2b619f 100644 --- a/modules/home-manager/programs/nixvim/presets/base/completion.nix +++ b/modules/home-manager/programs/nixvim/presets/base/completion.nix @@ -41,8 +41,14 @@ in snippet.expand = # lua "function(args) require('luasnip').lsp_expand(args.body) end"; window = { - completion.border = "rounded"; - documentation.border = "rounded"; + completion = { + border = "solid"; + zindex = 10; + }; + documentation = { + border = "solid"; + zindex = 10; + }; }; }; }; diff --git a/modules/home-manager/programs/nixvim/presets/base/diagnostics.nix b/modules/home-manager/programs/nixvim/presets/base/diagnostics.nix index 586612d..fe8f49e 100644 --- a/modules/home-manager/programs/nixvim/presets/base/diagnostics.nix +++ b/modules/home-manager/programs/nixvim/presets/base/diagnostics.nix @@ -15,6 +15,7 @@ in config = lib.mkIf cfg.enable { extraConfigLuaPre = # lua '' + vim.lsp.set_log_level("off") require("actions-preview").setup({}) local signs = { @@ -28,15 +29,19 @@ in vim.fn.sign_define(sign.name, { texthl = sign.name, text = sign.text, numhl = "" }) end - vim.diagnostic.config({ - virtual_text = true, - signs = true, - underline = true, - update_in_insert = true, - severity_sort = false, - }) - vim.lsp.handlers["textDocument/hover"] = vim.lsp.with(vim.lsp.handlers.hover, { border = "rounded" }) + vim.lsp.handlers["textDocument/hover"] = vim.lsp.with(vim.lsp.handlers.hover, { border = "solid" }) ''; + diagnostics = { + signs.text = { + "__rawKey__vim.diagnostic.severity.ERROR" = ""; + "__rawKey__vim.diagnostic.severity.WARN" = ""; + "__rawKey__vim.diagnostic.severity.INFO" = ""; + "__rawKey__vim.diagnostic.severity.HINT" = "󰌵"; + }; + underline = true; + update_in_insert = true; + severity_sort = true; + }; keymaps = [ { key = "sa"; @@ -70,9 +75,19 @@ in action.__raw = # lua "vim.lsp.buf.hover"; } + { + key = "sh"; + mode = "n"; + options.silent = true; + action.__raw = # lua + "function() vim.lsp.inlay_hint.enable(not vim.lsp.inlay_hint.is_enabled({0}), {0}) end"; + } ]; plugins = { - lsp.enable = true; + lsp = { + enable = true; + inlayHints = false; + }; telescope = { enable = true; keymaps = { @@ -81,7 +96,6 @@ in "si" = "lsp_implementations"; "sw" = "lsp_workspace_symbols"; "st" = "lsp_type_definitions"; - "sh" = "diagnostics"; }; }; inc-rename.enable = true; @@ -133,8 +147,8 @@ in } { __unkeyed-1 = "sh"; - icon = "󱖫"; - desc = "Diagnostics"; + icon = "󰞂"; + desc = "Inlay Hints"; } { __unkeyed-1 = "sa"; diff --git a/modules/home-manager/programs/nixvim/presets/base/spellcheck.nix b/modules/home-manager/programs/nixvim/presets/base/spellcheck.nix new file mode 100644 index 0000000..44862fb --- /dev/null +++ b/modules/home-manager/programs/nixvim/presets/base/spellcheck.nix @@ -0,0 +1,23 @@ +{ + lib, + config, + hmConfig, + ... +}: +let + cfg = config.presets.base.spellcheck; +in +{ + options.presets.base.spellcheck = { + enable = lib.mkEnableOption "Spellcheck"; + }; + + config = lib.mkIf cfg.enable { + plugins.lsp.servers.harper_ls = { + enable = true; + settings = { + userDictPath = "${hmConfig.xdg.configHome}/harper-user-dictionary.txt"; + }; + }; + }; +} diff --git a/modules/home-manager/programs/nixvim/presets/base/status-line.nix b/modules/home-manager/programs/nixvim/presets/base/status-line.nix index 25d0fed..d61ed3b 100644 --- a/modules/home-manager/programs/nixvim/presets/base/status-line.nix +++ b/modules/home-manager/programs/nixvim/presets/base/status-line.nix @@ -32,8 +32,8 @@ in options = { globalstatus = true; section_separators = { - left = ""; # ""; - right = ""; # ""; + left = ""; + right = ""; }; component_separators = { left = "┊"; @@ -45,8 +45,8 @@ in { __unkeyed-1 = "mode"; separator = { - right = ""; # ""; - left = ""; # ""; + right = ""; + left = ""; }; icon = ""; } @@ -56,8 +56,8 @@ in { __unkeyed-1 = "location"; separator = { - right = ""; # ""; - left = ""; # ""; + right = ""; + left = ""; }; } ]; diff --git a/modules/home-manager/programs/nixvim/presets/base/tree.nix b/modules/home-manager/programs/nixvim/presets/base/tree.nix index 37ac034..6f0349d 100644 --- a/modules/home-manager/programs/nixvim/presets/base/tree.nix +++ b/modules/home-manager/programs/nixvim/presets/base/tree.nix @@ -28,7 +28,7 @@ in filteredItems.visible = true; }; extraSources = [ "document_symbols" ]; - popupBorderStyle = "rounded"; + popupBorderStyle = "solid"; eventHandlers.neo_tree_buffer_leave = # lua '' function() diff --git a/modules/home-manager/programs/nixvim/presets/default.nix b/modules/home-manager/programs/nixvim/presets/default.nix index 2e22b5e..14bfc60 100644 --- a/modules/home-manager/programs/nixvim/presets/default.nix +++ b/modules/home-manager/programs/nixvim/presets/default.nix @@ -1,7 +1,10 @@ -{ lib, ... }: +{ lib, pkgs, ... }: { options.programs.nixvim = lib.mkOption { - type = lib.types.submoduleWith { + type = pkgs.lib.types.submoduleWith { + specialArgs = { + inherit pkgs; + }; modules = [ ./auto-save.nix ./auto-format.nix @@ -15,6 +18,7 @@ ./base/diagnostics.nix ./base/find.nix ./base/formatting.nix + ./base/spellcheck.nix ./base/status-line.nix ./base/syntax.nix ./base/tree.nix @@ -29,10 +33,12 @@ ./languages/python.nix ./languages/rust.nix ./languages/shell.nix + ./languages/svelte.nix ./remaps/half-page-scroll.nix ./remaps/no-accidental-macro.nix ./remaps/paste-keep-buffer.nix + ./remaps/wrapped-line-nav.nix ]; }; }; diff --git a/modules/home-manager/programs/nixvim/presets/languages/c.nix b/modules/home-manager/programs/nixvim/presets/languages/c.nix index 1b65e13..70c5ba3 100644 --- a/modules/home-manager/programs/nixvim/presets/languages/c.nix +++ b/modules/home-manager/programs/nixvim/presets/languages/c.nix @@ -1,10 +1,15 @@ -{ lib, config, ... }: +{ + lib, + config, + ... +}: let cfg = config.presets.languages.c; in { options.presets.languages.c = { enable = lib.mkEnableOption "C/C++"; + cppcheck = lib.mkEnableOption "cppcheck"; }; config = lib.mkIf cfg.enable { @@ -13,12 +18,28 @@ in c = [ "clang-format" ]; cpp = [ "clang-format" ]; }; - lsp.servers.clangd = { + none-ls = { enable = true; - cmd = [ - "clangd" - "--offset-encoding=utf-16" - ]; + sources.diagnostics = { + cppcheck = lib.mkIf cfg.cppcheck { + enable = true; + }; + }; + }; + lsp.servers = { + clangd = { + enable = true; + cmd = [ + "clangd" + "--offset-encoding=utf-16" + ]; + settings.InlayHints = { + Designators = true; + Enabled = true; + ParameterNames = true; + DeducedTypes = true; + }; + }; }; }; }; diff --git a/modules/home-manager/programs/nixvim/presets/languages/js.nix b/modules/home-manager/programs/nixvim/presets/languages/js.nix index c824c15..71f2499 100644 --- a/modules/home-manager/programs/nixvim/presets/languages/js.nix +++ b/modules/home-manager/programs/nixvim/presets/languages/js.nix @@ -42,7 +42,31 @@ in } ]; lsp.servers = { - ts_ls.enable = true; + ts_ls = { + enable = true; + settings = { + typescript.inlayHints = { + includeInlayParameterNameHints = "all"; + includeInlayParameterNameHintsWhenArgumentMatchesName = true; + includeInlayFunctionParameterTypeHints = true; + includeInlayVariableTypeHints = true; + includeInlayVariableTypeHintsWhenTypeMatchesName = true; + includeInlayPropertyDeclarationTypeHints = true; + includeInlayFunctionLikeReturnTypeHints = true; + includeInlayEnumMemberValueHints = true; + }; + javascript.inlayHints = { + includeInlayParameterNameHints = "all"; + includeInlayParameterNameHintsWhenArgumentMatchesName = true; + includeInlayFunctionParameterTypeHints = true; + includeInlayVariableTypeHints = true; + includeInlayVariableTypeHintsWhenTypeMatchesName = true; + includeInlayPropertyDeclarationTypeHints = true; + includeInlayFunctionLikeReturnTypeHints = true; + includeInlayEnumMemberValueHints = true; + }; + }; + }; eslint.enable = lib.mkIf cfg.eslint true; }; }; diff --git a/modules/home-manager/programs/nixvim/presets/languages/nix.nix b/modules/home-manager/programs/nixvim/presets/languages/nix.nix index 5122ee5..f71cd30 100644 --- a/modules/home-manager/programs/nixvim/presets/languages/nix.nix +++ b/modules/home-manager/programs/nixvim/presets/languages/nix.nix @@ -15,6 +15,10 @@ in config = lib.mkIf cfg.enable { plugins = { conform-nvim.settings.formatters_by_ft.nix = [ "nixfmt" ]; + none-ls = { + enable = true; + sources.diagnostics.statix.enable = true; + }; lsp.servers.nil_ls.enable = true; nix.enable = true; }; diff --git a/modules/home-manager/programs/nixvim/presets/languages/rust.nix b/modules/home-manager/programs/nixvim/presets/languages/rust.nix index 81063ee..5f88464 100644 --- a/modules/home-manager/programs/nixvim/presets/languages/rust.nix +++ b/modules/home-manager/programs/nixvim/presets/languages/rust.nix @@ -14,6 +14,28 @@ in enable = true; installCargo = false; installRustc = false; + settings.inlayHints = { + bindingModeHints.enable = false; + chainingHints.enable = true; + closingBraceHints = { + enable = true; + minLines = 25; + }; + closureReturnTypeHints.enable = "never"; + lifetimeElisionHints = { + enable = "never"; + useParameterNames = false; + }; + maxLength = 25; + parameterHints.enable = true; + reborrowHints.enable = "never"; + renderColons = true; + typeHints = { + enable = true; + hideClosureInitialization = false; + hideNamedConstructor = false; + }; + }; }; }; }; diff --git a/modules/home-manager/programs/nixvim/presets/languages/svelte.nix b/modules/home-manager/programs/nixvim/presets/languages/svelte.nix new file mode 100644 index 0000000..6cc6500 --- /dev/null +++ b/modules/home-manager/programs/nixvim/presets/languages/svelte.nix @@ -0,0 +1,27 @@ +{ + lib, + config, + ... +}: +let + cfg = config.presets.languages.svelte; +in +{ + options.presets.languages.svelte = { + enable = lib.mkEnableOption "Svelte"; + }; + + config = lib.mkIf cfg.enable { + plugins.lsp.servers.svelte = { + enable = true; + settings.typescript.inlayHints = { + parameterNames.enabled = "all"; + parameterTypes.enabled = true; + variableTypes.enabled = true; + propertyDeclarationTypes.enabled = true; + functionLikeReturnTypes.enabled = true; + enumMemberValues.enabled = true; + }; + }; + }; +} diff --git a/modules/home-manager/programs/nixvim/presets/remaps/wrapped-line-nav.nix b/modules/home-manager/programs/nixvim/presets/remaps/wrapped-line-nav.nix new file mode 100644 index 0000000..7a1c7f1 --- /dev/null +++ b/modules/home-manager/programs/nixvim/presets/remaps/wrapped-line-nav.nix @@ -0,0 +1,22 @@ +{ lib, config, ... }: +let + cfg = config.presets.remaps.wrapped-line-nav; +in +{ + options.presets.remaps.wrapped-line-nav = { + enable = lib.mkEnableOption "Navigate wrapped lines up and down"; + }; + + config = lib.mkIf cfg.enable { + keymaps = [ + { + key = ""; + action = "g"; + } + { + key = ""; + action = "g"; + } + ]; + }; +} diff --git a/modules/home-manager/programs/nixvim/presets/trouble.nix b/modules/home-manager/programs/nixvim/presets/trouble.nix index faa0a41..f61f633 100644 --- a/modules/home-manager/programs/nixvim/presets/trouble.nix +++ b/modules/home-manager/programs/nixvim/presets/trouble.nix @@ -13,7 +13,7 @@ in key = "xx"; mode = "n"; action.__raw = # lua - "require('trouble').toggle"; + "function() require('trouble').toggle('diagnostics') end"; } { key = "xw"; @@ -42,10 +42,7 @@ in ]; plugins = { web-devicons.enable = true; - trouble = { - enable = true; - settings.use_diagnostic_signs = true; - }; + trouble.enable = true; which-key.settings.spec = [ { __unkeyed-1 = "x"; diff --git a/modules/home-manager/theme/nvim.vim b/modules/home-manager/theme/nvim.vim index 9b309ad..3665283 100644 --- a/modules/home-manager/theme/nvim.vim +++ b/modules/home-manager/theme/nvim.vim @@ -4,14 +4,19 @@ if exists("syntax_on") endif let g:colors_name="md3-evo" -let g:neovide_transparency = {{custom.transparency}} +let g:neovide_transparency = 1.0 +let g:neovide_floating_corner_radius = 0.5 +let g:neovide_normal_opacity = {{custom.transparency}} let g:neovide_padding_top = {{custom.padding}} let g:neovide_padding_bottom = {{custom.padding}} let g:neovide_padding_left = {{custom.padding}} let g:neovide_padding_right = {{custom.padding}} let g:neovide_floating_blur_amount_x = {{custom.blur}} let g:neovide_floating_blur_amount_y = {{custom.blur}} -let g:neovide_floating_shadow = 0 +let g:neovide_floating_shadow = v:true +let g:neovide_floating_z_height = 10 +let g:neovide_light_angle_degrees = 45 +let g:neovide_light_radius = 5 let g:terminal_color_0 = "{{colors.surface.default.hex}}" let g:terminal_color_1 = "{{colors.red.default.hex}}" @@ -204,6 +209,8 @@ hi! IlluminatedWordRead gui=none guibg={{colors.surface_container_highest.defaul hi! IlluminatedWordWrite gui=none guibg={{colors.surface_container_highest.default.hex}} hi! MatchParen gui=none guibg={{colors.surface_container_highest.default.hex}} +hi! LspInlayHint guifg={{colors.on_surface_variant.default.hex}} guibg={{colors.surface_variant.default.hex}} + let g:lualine_theme = { \ "insert": { \ "a": {"fg": "{{colors.on_green.default.hex}}", "bg": "{{colors.green.default.hex}}", "gui": "bold"}, diff --git a/modules/nixos/desktops/hyprland.nix b/modules/nixos/desktops/hyprland.nix index 39570b8..697a084 100644 --- a/modules/nixos/desktops/hyprland.nix +++ b/modules/nixos/desktops/hyprland.nix @@ -34,22 +34,28 @@ in }; }; + # https://github.com/sjcobb2022/nixos-config/blob/70fb548b961c19e9855d2de86ee9569a7a88d976/hosts/common/optional/greetd.nix#L23C1-L33C2 + systemd.services.greetd.serviceConfig = { + Type = "idle"; + StandardInput = "tty"; + StandardOutput = "tty"; + StandardError = "journal"; # Without this errors will spam on screen + # Without these bootlogs will spam on screen + TTYReset = true; + TTYVHangup = true; + TTYVTDisallocate = true; + }; + services = { - /* - greetd = { - enable = true; - settings = { - initial_session = { - command = "${pkgs.hyprland}/bin/Hyprland &> /dev/null"; - user = username; - }; - default_session = { - command = "${pkgs.greetd.tuigreet}/bin/tuigreet --asterisks"; - user = username; - }; + greetd = { + enable = true; + settings = { + default_session = { + command = "${pkgs.greetd.tuigreet}/bin/tuigreet --asterisks --remember --remember-session --sessions ${pkgs.hyprland}/share/wayland-sessions"; + user = username; }; }; - */ + }; dbus.enable = true; diff --git a/modules/nixos/hardware/audio.nix b/modules/nixos/hardware/audio.nix index 145acc6..1ff740f 100644 --- a/modules/nixos/hardware/audio.nix +++ b/modules/nixos/hardware/audio.nix @@ -16,7 +16,6 @@ in config = mkIf cfg.enable { environment.systemPackages = with pkgs; [ pavucontrol ]; - hardware.pulseaudio.enable = false; security.rtkit.enable = true; services.pipewire = { enable = true; diff --git a/modules/nixos/hardware/fv43u.nix b/modules/nixos/hardware/fv43u.nix index 88c51b1..ed3a572 100644 --- a/modules/nixos/hardware/fv43u.nix +++ b/modules/nixos/hardware/fv43u.nix @@ -18,7 +18,7 @@ in config = mkIf cfg.enable { fonts.fontconfig.subpixel.rgba = "bgr"; hardware.gbmonctl.enable = true; - boot.kernelParams = [ "video=3840x2160@120" ]; + boot.kernelParams = [ "video=3840x2160@144" ]; home-manager.users.${username} = { wayland.windowManager.hyprland.settings = { @@ -29,7 +29,7 @@ in mfact = 0.4; }; monitor = [ - "DP-3,3840x2160@120,0x0,1,bitdepth,10" + "DP-3,3840x2160@144,0x0,1,bitdepth,10" "DP-3,addreserved,340,0,0,0" ]; xwayland.force_zero_scaling = true; diff --git a/modules/nixos/hardware/hid-fanatecff-pkg.nix b/modules/nixos/hardware/hid-fanatecff-pkg.nix index e9977c6..e72712e 100644 --- a/modules/nixos/hardware/hid-fanatecff-pkg.nix +++ b/modules/nixos/hardware/hid-fanatecff-pkg.nix @@ -23,6 +23,7 @@ stdenv.mkDerivation rec { makeFlags = kernel.makeFlags ++ [ "KVERSION=${kernel.modDirVersion}" "KERNEL_SRC=${kernel.dev}/lib/modules/${kernel.modDirVersion}/build" + "KBUILD_OUTPUT=${kernel.dev}/lib/modules/${kernel.modDirVersion}/build" ]; patchPhase = '' diff --git a/modules/nixos/hardware/virtual-camera.nix b/modules/nixos/hardware/virtual-camera.nix index 629621d..b69e500 100644 --- a/modules/nixos/hardware/virtual-camera.nix +++ b/modules/nixos/hardware/virtual-camera.nix @@ -1,5 +1,4 @@ { - pkgs, lib, config, ... @@ -16,7 +15,6 @@ in config = mkIf cfg.enable { boot = { - # Virtual Camera/Mic kernelModules = [ "v4l2loopback" "snd-aloop" diff --git a/modules/nixos/usecases/3d-printing.nix b/modules/nixos/usecases/3d-printing.nix index 209afcf..ceb7f8a 100644 --- a/modules/nixos/usecases/3d-printing.nix +++ b/modules/nixos/usecases/3d-printing.nix @@ -2,6 +2,7 @@ config, lib, pkgs, + username, ... }: @@ -20,10 +21,17 @@ in lpc21isp dfu-util openscad - bambu-studio - prusa-slicer # gcode viewer! orca-slicer - freecad ]; + home-manager.users.${username} = { + services.flatpak.packages = [ + "com.bambulab.BambuStudio" + "org.freecad.FreeCAD" + "com.prusa3d.PrusaSlicer" # gcode viewer! + ]; + programs = { + lazygit.enable = true; + }; + }; }; } diff --git a/overlays/gbmonctl/default.nix b/overlays/gbmonctl/default.nix index 91a5645..35e21bc 100644 --- a/overlays/gbmonctl/default.nix +++ b/overlays/gbmonctl/default.nix @@ -1,12 +1,11 @@ { lib, - pkgs, buildGoModule, fetchFromGitHub, hidapi, udev, }: -buildGoModule rec { +buildGoModule { pname = "gbmonctl"; version = "1d01a090"; src = fetchFromGitHub { @@ -28,5 +27,6 @@ buildGoModule rec { meta = with lib; { description = "A CLI tool to change monitor settings over USB to the Gigabyte M32U"; homepage = "https://github.com/kelvie/gbmonctl"; + maintainers = with maintainers; [ theaninova ]; }; } diff --git a/overlays/gccdiag/default.nix b/overlays/gccdiag/default.nix new file mode 100644 index 0000000..2c3125e --- /dev/null +++ b/overlays/gccdiag/default.nix @@ -0,0 +1,66 @@ +{ + lib, + stdenv, + fetchFromGitHub, + fetchFromGitLab, + boost, + libargs, + cmake, +}: +let + cpmCacheDir = ".cpm"; + format = rec { + repo = "Format.cmake"; + src = fetchFromGitHub { + owner = "TheLartians"; + inherit repo; + rev = "v1.7.2"; + hash = "sha256-MFUwJrL0N2wJfj2vkQdKdStPkNJ6AJIYvBhCY6aVpsc="; + }; + originHash = "23e9a6cadcf1af689dbf4cd8e9a7edf67ddb0009"; + cacheDir = "${lib.toLower repo}/${originHash}"; + }; +in +stdenv.mkDerivation rec { + pname = "gccdiag"; + version = "0.2.6"; + + src = fetchFromGitLab { + owner = "andrejr"; + repo = "gccdiag"; + rev = version; + hash = "sha256-Oa4JGHCMnTW9uwxUw/+XCfQCElTAD1ifGQJ3ZFl5mys="; + }; + + preConfigure = '' + export CPM_SOURCE_CACHE=$sourceRoot/${cpmCacheDir} + mkdir -p "$CPM_SOURCE_CACHE/${format.cacheDir}" + cp -R --no-preserve=mode,ownership "${format.src}" "$CPM_SOURCE_CACHE/${format.cacheDir}" + ''; + + nativeBuildInputs = [ cmake ]; + + buildInputs = [ + boost + libargs + ]; + + cmakeFlags = [ + "-Dgccdiag_USE_CONAN=off" + "-Dgccdiag_SOURCE_DIST=on" + "-DGIT_TAG=v${version}" + "-DSEMVER=${version}" + "-DVERSION=${version}" + "-DPROJECT_VERSION=${version}" + "-DVERSON_MAJOR=${builtins.elemAt (lib.strings.splitString "." version) 0}" + "-DVERSON_MINOR=${builtins.elemAt (lib.strings.splitString "." version) 1}" + "-DVERSON_PATCH=${builtins.elemAt (lib.strings.splitString "." version) 2}" + ]; + + meta = with lib; { + description = "A utility to get gcc (or other compiler) diagnostics for a source file, with appropriate flags extracted from a compilation database"; + homepage = "https://gitlab.com/andrejr/gccdiag"; + license = licenses.gpl3Plus; + maintainers = with maintainers; [ theaninova ]; + }; +}