diff --git a/configurations/home-manager/eve/packages.nix b/configurations/home-manager/eve/packages.nix index f738fe2..f7f0c78 100644 --- a/configurations/home-manager/eve/packages.nix +++ b/configurations/home-manager/eve/packages.nix @@ -17,6 +17,7 @@ in { # See https://search.nixos.org/packages for all options home.packages = lib.lists.optionals userConfig.isDesktopUser ( with pkgs; [ + ungoogled-chromium gnomeExtensions.dash-to-panel ] ); @@ -60,7 +61,6 @@ in { steam.enable = true; piper.enable = hardware.piperMouse.enable; krita.enable = true; - ungoogled-chromium.enable = true; }) ]; }; diff --git a/configurations/home-manager/leyla/packages/default.nix b/configurations/home-manager/leyla/packages/default.nix index 86bbd96..717b153 100644 --- a/configurations/home-manager/leyla/packages/default.nix +++ b/configurations/home-manager/leyla/packages/default.nix @@ -37,12 +37,6 @@ in { dbeaver-bin.enable = true; bruno.enable = true; piper.enable = hardware.piperMouse.enable; - proxmark3.enable = true; - openrgb.enable = hardware.openRGB.enable; - via.enable = hardware.viaKeyboard.enable; - claude-code.enable = osConfig.host.ai.enable; - davinci-resolve.enable = hardware.graphicsAcceleration.enable; - mfoc.enable = true; }) (lib.mkIf (hardware.directAccess.enable && config.user.isDesktopUser) { anki.enable = true; @@ -56,19 +50,6 @@ in { firefox.enable = true; steam.enable = true; krita.enable = true; - ungoogled-chromium.enable = true; - libreoffice.enable = true; - inkscape.enable = true; - gimp.enable = true; - freecad.enable = true; - onionshare.enable = true; - pdfarranger.enable = true; - picard.enable = true; - qflipper.enable = true; - openvpn.enable = true; - noisetorch.enable = true; - tor-browser.enable = true; - gdx-liftoff.enable = true; }) ]; } @@ -85,6 +66,53 @@ in { nixpkgs.config = { allowUnfree = true; }; + + home.packages = ( + (with pkgs; [ + proxmark3 + ]) + ++ ( + lib.lists.optionals hardware.directAccess.enable (with pkgs; [ + #foss platforms + ungoogled-chromium + libreoffice + inkscape + gimp + freecad + # cura + # kicad-small + onionshare + # rhythmbox + + # wireshark + # rpi-imager + # fritzing + mfoc + tor-browser + pdfarranger + picard + + gdx-liftoff + + # proprietary platforms + (lib.mkIf hardware.graphicsAcceleration.enable davinci-resolve) + + # development tools + # androidStudioPackages.canary + qFlipper + + # system tools + openvpn + noisetorch + + # hardware management tools + (lib.mkIf hardware.openRGB.enable openrgb) + (lib.mkIf hardware.viaKeyboard.enable via) + + (lib.mkIf osConfig.host.ai.enable claude-code) + ]) + ) + ); }) ]; } diff --git a/configurations/home-manager/leyla/packages/vscode/default.nix b/configurations/home-manager/leyla/packages/vscode/default.nix index 583f440..778439a 100644 --- a/configurations/home-manager/leyla/packages/vscode/default.nix +++ b/configurations/home-manager/leyla/packages/vscode/default.nix @@ -72,34 +72,12 @@ in { enable = true; mcp = { nixos.enable = true; - eslint = { - enable = true; - autoApprove = { - lint-files = true; - }; - }; - vitest = { - enable = true; - autoApprove = { - list_tests = true; - run_tests = true; - analyze_coverage = true; - }; - }; - sleep = { - enable = true; - timeout = 18000; # 5 hours to match claude codes timeout - autoApprove = { - sleep = true; - }; - }; + eslint.enable = true; }; }; # misc extensions evenBetterToml.enable = true; - direnv.enable = config.programs.direnv.enable; - conventionalCommits.enable = true; }; extensions = let diff --git a/configurations/nixos/emergent/configuration.nix b/configurations/nixos/emergent/configuration.nix index 90aecab..bb671f7 100644 --- a/configurations/nixos/emergent/configuration.nix +++ b/configurations/nixos/emergent/configuration.nix @@ -67,6 +67,8 @@ }; }; + services.tailscale.enable = true; + # Configure keymap in X11 # services.xserver.xkb.layout = "us"; # services.xserver.xkb.options = "eurosign:e,caps:escape"; diff --git a/flake.lock b/flake.lock index 6ea6f9b..5b4d6a3 100644 --- a/flake.lock +++ b/flake.lock @@ -25,11 +25,11 @@ ] }, "locked": { - "lastModified": 1757255839, - "narHash": "sha256-XH33B1X888Xc/xEXhF1RPq/kzKElM0D5C9N6YdvOvIc=", + "lastModified": 1756733629, + "narHash": "sha256-dwWGlDhcO5SMIvMSTB4mjQ5Pvo2vtxvpIknhVnSz2I8=", "owner": "nix-community", "repo": "disko", - "rev": "c8a0e78d86b12ea67be6ed0f7cae7f9bfabae75a", + "rev": "a5c4f2ab72e3d1ab43e3e65aa421c6f2bd2e12a1", "type": "github" }, "original": { @@ -46,11 +46,11 @@ }, "locked": { "dir": "pkgs/firefox-addons", - "lastModified": 1757304222, - "narHash": "sha256-s070stByAXxeCLgftTXxFxZ2ynJhghne4Y6cTuqGAaw=", + "lastModified": 1756699417, + "narHash": "sha256-rpRy5ae5ijEGaK+Cr66NqCQJ6ZeUE5Zi8gUWgKhesto=", "owner": "rycee", "repo": "nur-expressions", - "rev": "fa312c0175ffb82bc67da095439b9cb683ac52bd", + "rev": "007b803d1eff595d25e7886e83054dbd038bf029", "type": "gitlab" }, "original": { @@ -118,11 +118,11 @@ ] }, "locked": { - "lastModified": 1757256385, - "narHash": "sha256-WK7tOhWwr15mipcckhDg2no/eSpM1nIh4C9le8HgHhk=", + "lastModified": 1756734952, + "narHash": "sha256-H6jmduj4QIncLPAPODPSG/8ry9lpr1kRq6fYytU52qU=", "owner": "nix-community", "repo": "home-manager", - "rev": "f35703b412c67b48e97beb6e27a6ab96a084cd37", + "rev": "29ab63bbb3d9eee4a491f7ce701b189becd34068", "type": "github" }, "original": { @@ -175,11 +175,11 @@ ] }, "locked": { - "lastModified": 1757130842, - "narHash": "sha256-4i7KKuXesSZGUv0cLPLfxbmF1S72Gf/3aSypgvVkwuA=", + "lastModified": 1755825449, + "narHash": "sha256-XkiN4NM9Xdy59h69Pc+Vg4PxkSm9EWl6u7k6D5FZ5cM=", "owner": "LnL7", "repo": "nix-darwin", - "rev": "15f067638e2887c58c4b6ba1bdb65a0b61dc58c5", + "rev": "8df64f819698c1fee0c2969696f54a843b2231e8", "type": "github" }, "original": { @@ -217,11 +217,11 @@ ] }, "locked": { - "lastModified": 1757296711, - "narHash": "sha256-7u9/tXUdmTj8x7ofet8aELLBlCHSoA+QOhYKheRdacM=", + "lastModified": 1756692643, + "narHash": "sha256-SVos3AYuLvF6bD8Y0b6EiLABoEaiAOa4M/fTCBe0FV8=", "owner": "nix-community", "repo": "nix-vscode-extensions", - "rev": "ab9374ac8c162dacffcd4400e668fd7f9b6f173a", + "rev": "2f1d16db96f1ce8ee3c893ea9dc49c0035846988", "type": "github" }, "original": { @@ -232,11 +232,11 @@ }, "nixos-hardware": { "locked": { - "lastModified": 1757103352, - "narHash": "sha256-PtT7ix43ss8PONJ1VJw3f6t2yAoGH+q462Sn8lrmWmk=", + "lastModified": 1756245047, + "narHash": "sha256-9bHzrVbjAudbO8q4vYFBWlEkDam31fsz0J7GB8k4AsI=", "owner": "NixOS", "repo": "nixos-hardware", - "rev": "11b2a10c7be726321bb854403fdeec391e798bf0", + "rev": "a65b650d6981e23edd1afa1f01eb942f19cdcbb7", "type": "github" }, "original": { @@ -264,11 +264,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1757068644, - "narHash": "sha256-NOrUtIhTkIIumj1E/Rsv1J37Yi3xGStISEo8tZm3KW4=", + "lastModified": 1756542300, + "narHash": "sha256-tlOn88coG5fzdyqz6R93SQL5Gpq+m/DsWpekNFhqPQk=", "owner": "nixos", "repo": "nixpkgs", - "rev": "8eb28adfa3dc4de28e792e3bf49fcf9007ca8ac9", + "rev": "d7600c775f877cd87b4f5a831c28aa94137377aa", "type": "github" }, "original": { diff --git a/modules/home-manager-modules/programs/davinci-resolve.nix b/modules/home-manager-modules/programs/davinci-resolve.nix deleted file mode 100644 index 00ba525..0000000 --- a/modules/home-manager-modules/programs/davinci-resolve.nix +++ /dev/null @@ -1,30 +0,0 @@ -{ - lib, - pkgs, - config, - osConfig, - ... -}: { - options.programs.davinci-resolve = { - enable = lib.mkEnableOption "enable davinci-resolve"; - }; - - config = lib.mkIf config.programs.davinci-resolve.enable (lib.mkMerge [ - { - home.packages = with pkgs; [ - davinci-resolve - ]; - } - ( - lib.mkIf osConfig.host.impermanence.enable { - home.persistence."/persist${config.home.homeDirectory}" = { - directories = [ - "${config.xdg.dataHome}/DaVinciResolve" - "${config.xdg.configHome}/blackmagic" - ]; - allowOther = true; - }; - } - ) - ]); -} diff --git a/modules/home-manager-modules/programs/default.nix b/modules/home-manager-modules/programs/default.nix index d1c13db..f2a22ee 100644 --- a/modules/home-manager-modules/programs/default.nix +++ b/modules/home-manager-modules/programs/default.nix @@ -19,23 +19,5 @@ ./dbeaver.nix ./steam.nix ./vscode - ./ungoogled-chromium.nix - ./libreoffice.nix - ./inkscape.nix - ./gimp.nix - ./proxmark3.nix - ./freecad.nix - ./onionshare.nix - ./mfoc.nix - ./pdfarranger.nix - ./picard.nix - ./qflipper.nix - ./openvpn.nix - ./noisetorch.nix - ./openrgb.nix - ./via.nix - ./davinci-resolve.nix - ./gdx-liftoff.nix - ./tor-browser.nix ]; } diff --git a/modules/home-manager-modules/programs/freecad.nix b/modules/home-manager-modules/programs/freecad.nix deleted file mode 100644 index ec17205..0000000 --- a/modules/home-manager-modules/programs/freecad.nix +++ /dev/null @@ -1,29 +0,0 @@ -{ - lib, - pkgs, - config, - osConfig, - ... -}: { - options.programs.freecad = { - enable = lib.mkEnableOption "enable freecad"; - }; - - config = lib.mkIf config.programs.freecad.enable (lib.mkMerge [ - { - home.packages = with pkgs; [ - freecad - ]; - } - ( - lib.mkIf osConfig.host.impermanence.enable { - home.persistence."/persist${config.home.homeDirectory}" = { - directories = [ - "${config.xdg.configHome}/FreeCAD" - ]; - allowOther = true; - }; - } - ) - ]); -} diff --git a/modules/home-manager-modules/programs/gdx-liftoff.nix b/modules/home-manager-modules/programs/gdx-liftoff.nix deleted file mode 100644 index b29230d..0000000 --- a/modules/home-manager-modules/programs/gdx-liftoff.nix +++ /dev/null @@ -1,17 +0,0 @@ -{ - lib, - pkgs, - config, - osConfig, - ... -}: { - options.programs.gdx-liftoff = { - enable = lib.mkEnableOption "enable gdx-liftoff"; - }; - - config = lib.mkIf config.programs.gdx-liftoff.enable { - home.packages = with pkgs; [ - gdx-liftoff - ]; - }; -} diff --git a/modules/home-manager-modules/programs/gimp.nix b/modules/home-manager-modules/programs/gimp.nix deleted file mode 100644 index 428068e..0000000 --- a/modules/home-manager-modules/programs/gimp.nix +++ /dev/null @@ -1,29 +0,0 @@ -{ - lib, - pkgs, - config, - osConfig, - ... -}: { - options.programs.gimp = { - enable = lib.mkEnableOption "enable gimp"; - }; - - config = lib.mkIf config.programs.gimp.enable (lib.mkMerge [ - { - home.packages = with pkgs; [ - gimp - ]; - } - ( - lib.mkIf osConfig.host.impermanence.enable { - home.persistence."/persist${config.home.homeDirectory}" = { - directories = [ - "${config.xdg.configHome}/GIMP" - ]; - allowOther = true; - }; - } - ) - ]); -} diff --git a/modules/home-manager-modules/programs/inkscape.nix b/modules/home-manager-modules/programs/inkscape.nix deleted file mode 100644 index facb08f..0000000 --- a/modules/home-manager-modules/programs/inkscape.nix +++ /dev/null @@ -1,29 +0,0 @@ -{ - lib, - pkgs, - config, - osConfig, - ... -}: { - options.programs.inkscape = { - enable = lib.mkEnableOption "enable inkscape"; - }; - - config = lib.mkIf config.programs.inkscape.enable (lib.mkMerge [ - { - home.packages = with pkgs; [ - inkscape - ]; - } - ( - lib.mkIf osConfig.host.impermanence.enable { - home.persistence."/persist${config.home.homeDirectory}" = { - directories = [ - "${config.xdg.configHome}/inkscape" - ]; - allowOther = true; - }; - } - ) - ]); -} diff --git a/modules/home-manager-modules/programs/libreoffice.nix b/modules/home-manager-modules/programs/libreoffice.nix deleted file mode 100644 index b61ea58..0000000 --- a/modules/home-manager-modules/programs/libreoffice.nix +++ /dev/null @@ -1,29 +0,0 @@ -{ - lib, - pkgs, - config, - osConfig, - ... -}: { - options.programs.libreoffice = { - enable = lib.mkEnableOption "enable libreoffice"; - }; - - config = lib.mkIf config.programs.libreoffice.enable (lib.mkMerge [ - { - home.packages = with pkgs; [ - libreoffice - ]; - } - ( - lib.mkIf osConfig.host.impermanence.enable { - home.persistence."/persist${config.home.homeDirectory}" = { - directories = [ - "${config.xdg.configHome}/libreoffice" - ]; - allowOther = true; - }; - } - ) - ]); -} diff --git a/modules/home-manager-modules/programs/mfoc.nix b/modules/home-manager-modules/programs/mfoc.nix deleted file mode 100644 index 7b92007..0000000 --- a/modules/home-manager-modules/programs/mfoc.nix +++ /dev/null @@ -1,17 +0,0 @@ -{ - lib, - pkgs, - config, - osConfig, - ... -}: { - options.programs.mfoc = { - enable = lib.mkEnableOption "enable mfoc"; - }; - - config = lib.mkIf config.programs.mfoc.enable { - home.packages = with pkgs; [ - mfoc - ]; - }; -} diff --git a/modules/home-manager-modules/programs/noisetorch.nix b/modules/home-manager-modules/programs/noisetorch.nix deleted file mode 100644 index c53e3a9..0000000 --- a/modules/home-manager-modules/programs/noisetorch.nix +++ /dev/null @@ -1,17 +0,0 @@ -{ - lib, - pkgs, - config, - osConfig, - ... -}: { - options.programs.noisetorch = { - enable = lib.mkEnableOption "enable noisetorch"; - }; - - config = lib.mkIf config.programs.noisetorch.enable { - home.packages = with pkgs; [ - noisetorch - ]; - }; -} diff --git a/modules/home-manager-modules/programs/onionshare.nix b/modules/home-manager-modules/programs/onionshare.nix deleted file mode 100644 index ed1903d..0000000 --- a/modules/home-manager-modules/programs/onionshare.nix +++ /dev/null @@ -1,17 +0,0 @@ -{ - lib, - pkgs, - config, - osConfig, - ... -}: { - options.programs.onionshare = { - enable = lib.mkEnableOption "enable onionshare"; - }; - - config = lib.mkIf config.programs.onionshare.enable { - home.packages = with pkgs; [ - onionshare - ]; - }; -} diff --git a/modules/home-manager-modules/programs/openrgb.nix b/modules/home-manager-modules/programs/openrgb.nix deleted file mode 100644 index 0260c91..0000000 --- a/modules/home-manager-modules/programs/openrgb.nix +++ /dev/null @@ -1,17 +0,0 @@ -{ - lib, - pkgs, - config, - osConfig, - ... -}: { - options.programs.openrgb = { - enable = lib.mkEnableOption "enable openrgb"; - }; - - config = lib.mkIf config.programs.openrgb.enable { - home.packages = with pkgs; [ - openrgb - ]; - }; -} diff --git a/modules/home-manager-modules/programs/openvpn.nix b/modules/home-manager-modules/programs/openvpn.nix deleted file mode 100644 index 814c16d..0000000 --- a/modules/home-manager-modules/programs/openvpn.nix +++ /dev/null @@ -1,17 +0,0 @@ -{ - lib, - pkgs, - config, - osConfig, - ... -}: { - options.programs.openvpn = { - enable = lib.mkEnableOption "enable openvpn"; - }; - - config = lib.mkIf config.programs.openvpn.enable { - home.packages = with pkgs; [ - openvpn - ]; - }; -} diff --git a/modules/home-manager-modules/programs/pdfarranger.nix b/modules/home-manager-modules/programs/pdfarranger.nix deleted file mode 100644 index d4e33b5..0000000 --- a/modules/home-manager-modules/programs/pdfarranger.nix +++ /dev/null @@ -1,17 +0,0 @@ -{ - lib, - pkgs, - config, - osConfig, - ... -}: { - options.programs.pdfarranger = { - enable = lib.mkEnableOption "enable pdfarranger"; - }; - - config = lib.mkIf config.programs.pdfarranger.enable { - home.packages = with pkgs; [ - pdfarranger - ]; - }; -} diff --git a/modules/home-manager-modules/programs/picard.nix b/modules/home-manager-modules/programs/picard.nix deleted file mode 100644 index d2c1fe2..0000000 --- a/modules/home-manager-modules/programs/picard.nix +++ /dev/null @@ -1,29 +0,0 @@ -{ - lib, - pkgs, - config, - osConfig, - ... -}: { - options.programs.picard = { - enable = lib.mkEnableOption "enable picard"; - }; - - config = lib.mkIf config.programs.picard.enable (lib.mkMerge [ - { - home.packages = with pkgs; [ - picard - ]; - } - ( - lib.mkIf osConfig.host.impermanence.enable { - home.persistence."/persist${config.home.homeDirectory}" = { - directories = [ - "${config.xdg.configHome}/MusicBrainz" - ]; - allowOther = true; - }; - } - ) - ]); -} diff --git a/modules/home-manager-modules/programs/proxmark3.nix b/modules/home-manager-modules/programs/proxmark3.nix deleted file mode 100644 index ad1e298..0000000 --- a/modules/home-manager-modules/programs/proxmark3.nix +++ /dev/null @@ -1,17 +0,0 @@ -{ - lib, - pkgs, - config, - osConfig, - ... -}: { - options.programs.proxmark3 = { - enable = lib.mkEnableOption "enable proxmark3"; - }; - - config = lib.mkIf config.programs.proxmark3.enable { - home.packages = with pkgs; [ - proxmark3 - ]; - }; -} diff --git a/modules/home-manager-modules/programs/qflipper.nix b/modules/home-manager-modules/programs/qflipper.nix deleted file mode 100644 index abc2442..0000000 --- a/modules/home-manager-modules/programs/qflipper.nix +++ /dev/null @@ -1,29 +0,0 @@ -{ - lib, - pkgs, - config, - osConfig, - ... -}: { - options.programs.qflipper = { - enable = lib.mkEnableOption "enable qflipper"; - }; - - config = lib.mkIf config.programs.qflipper.enable (lib.mkMerge [ - { - home.packages = with pkgs; [ - qFlipper - ]; - } - ( - lib.mkIf osConfig.host.impermanence.enable { - home.persistence."/persist${config.home.homeDirectory}" = { - directories = [ - "${config.xdg.configHome}/qFlipper" - ]; - allowOther = true; - }; - } - ) - ]); -} diff --git a/modules/home-manager-modules/programs/tor-browser.nix b/modules/home-manager-modules/programs/tor-browser.nix deleted file mode 100644 index 2c58578..0000000 --- a/modules/home-manager-modules/programs/tor-browser.nix +++ /dev/null @@ -1,29 +0,0 @@ -{ - lib, - pkgs, - config, - osConfig, - ... -}: { - options.programs.tor-browser = { - enable = lib.mkEnableOption "enable tor-browser"; - }; - - config = lib.mkIf config.programs.tor-browser.enable (lib.mkMerge [ - { - home.packages = with pkgs; [ - tor-browser - ]; - } - ( - lib.mkIf osConfig.host.impermanence.enable { - home.persistence."/persist${config.home.homeDirectory}" = { - directories = [ - "${config.xdg.dataHome}/torbrowser" - ]; - allowOther = true; - }; - } - ) - ]); -} diff --git a/modules/home-manager-modules/programs/ungoogled-chromium.nix b/modules/home-manager-modules/programs/ungoogled-chromium.nix deleted file mode 100644 index 5b52cd6..0000000 --- a/modules/home-manager-modules/programs/ungoogled-chromium.nix +++ /dev/null @@ -1,29 +0,0 @@ -{ - lib, - pkgs, - config, - osConfig, - ... -}: { - options.programs.ungoogled-chromium = { - enable = lib.mkEnableOption "enable ungoogled-chromium"; - }; - - config = lib.mkIf config.programs.ungoogled-chromium.enable (lib.mkMerge [ - { - home.packages = with pkgs; [ - ungoogled-chromium - ]; - } - ( - lib.mkIf osConfig.host.impermanence.enable { - home.persistence."/persist${config.home.homeDirectory}" = { - directories = [ - "${config.xdg.configHome}/chromium" - ]; - allowOther = true; - }; - } - ) - ]); -} diff --git a/modules/home-manager-modules/programs/via.nix b/modules/home-manager-modules/programs/via.nix deleted file mode 100644 index 0b79452..0000000 --- a/modules/home-manager-modules/programs/via.nix +++ /dev/null @@ -1,17 +0,0 @@ -{ - lib, - pkgs, - config, - osConfig, - ... -}: { - options.programs.via = { - enable = lib.mkEnableOption "enable via"; - }; - - config = lib.mkIf config.programs.via.enable { - home.packages = with pkgs; [ - via - ]; - }; -} diff --git a/modules/home-manager-modules/programs/vscode/claudeDev.nix b/modules/home-manager-modules/programs/vscode/claudeDev.nix index 0e34f97..11eb155 100644 --- a/modules/home-manager-modules/programs/vscode/claudeDev.nix +++ b/modules/home-manager-modules/programs/vscode/claudeDev.nix @@ -10,6 +10,10 @@ mcp-nixos = inputs.mcp-nixos.packages.${pkgs.stdenv.hostPlatform.system}.default; + mcp-eslint = pkgs.writeShellScriptBin "mcp-eslint" '' + ${pkgs.nodejs}/bin/npx --yes @modelcontextprotocol/server-eslint "$@" + ''; + anyProfileHasMcpNixos = lib.any ( profile: profile.extraExtensions.claudeDev.enable @@ -21,44 +25,6 @@ profile.extraExtensions.claudeDev.enable && profile.extraExtensions.claudeDev.mcp.eslint.enable ) (lib.attrValues config.programs.vscode.profiles); - - anyProfileHasMcpVitest = lib.any ( - profile: - profile.extraExtensions.claudeDev.enable - && profile.extraExtensions.claudeDev.mcp.vitest.enable - ) (lib.attrValues config.programs.vscode.profiles); - - anyProfileHasMcpSleep = lib.any ( - profile: - profile.extraExtensions.claudeDev.enable - && profile.extraExtensions.claudeDev.mcp.sleep.enable - ) (lib.attrValues config.programs.vscode.profiles); - - anyProfileHasMcp = anyProfileHasMcpNixos || anyProfileHasMcpEslint || anyProfileHasMcpVitest || anyProfileHasMcpSleep; - - getMcpTimeout = serverName: - lib.findFirst (timeout: timeout != null) null (map ( - profile: - if profile.extraExtensions.claudeDev.enable && profile.extraExtensions.claudeDev.mcp.${serverName}.enable - then profile.extraExtensions.claudeDev.mcp.${serverName}.timeout - else null - ) (lib.attrValues config.programs.vscode.profiles)); - - getMcpAutoApprove = serverName: - lib.foldl' ( - acc: profile: - if profile.extraExtensions.claudeDev.enable && profile.extraExtensions.claudeDev.mcp.${serverName}.enable - then acc // profile.extraExtensions.claudeDev.mcp.${serverName}.autoApprove - else acc - ) {} (lib.attrValues config.programs.vscode.profiles); - - getMcpPackage = serverName: - lib.findFirst (package: package != null) null (map ( - profile: - if profile.extraExtensions.claudeDev.enable && profile.extraExtensions.claudeDev.mcp.${serverName}.enable - then profile.extraExtensions.claudeDev.mcp.${serverName}.package - else null - ) (lib.attrValues config.programs.vscode.profiles)); in { options.programs.vscode.profiles = lib.mkOption { type = lib.types.attrsOf (lib.types.submodule ({config, ...}: { @@ -75,53 +41,6 @@ in { }; eslint = { enable = lib.mkEnableOption "enable ESLint MCP server for Claude Dev"; - package = lib.mkOption { - type = lib.types.str; - default = "@eslint/mcp@latest"; - description = "NPM package to use for ESLint MCP server"; - }; - timeout = lib.mkOption { - type = lib.types.nullOr lib.types.int; - default = null; - description = "Timeout in seconds for ESLint MCP server operations"; - }; - autoApprove = { - lint-files = lib.mkEnableOption "Should the lint-files tool be auto approved for ESLint MCP server"; - }; - }; - vitest = { - enable = lib.mkEnableOption "enable Vitest MCP server for Claude Dev"; - package = lib.mkOption { - type = lib.types.str; - default = "@djankies/vitest-mcp"; - description = "NPM package to use for Vitest MCP server"; - }; - timeout = lib.mkOption { - type = lib.types.nullOr lib.types.int; - default = null; - description = "Timeout in seconds for Vitest MCP server operations"; - }; - autoApprove = { - list_tests = lib.mkEnableOption "Should the list_tests tool be auto approved for Vitest MCP server"; - run_tests = lib.mkEnableOption "Should the run_tests tool be auto approved for Vitest MCP server"; - analyze_coverage = lib.mkEnableOption "Should the analyze_coverage tool be auto approved for Vitest MCP server"; - }; - }; - sleep = { - enable = lib.mkEnableOption "enable Sleep MCP server for Claude Dev"; - package = lib.mkOption { - type = lib.types.str; - default = "sleep-mcp"; - description = "NPM package to use for Sleep MCP server"; - }; - timeout = lib.mkOption { - type = lib.types.nullOr lib.types.int; - default = null; - description = "Timeout in seconds for Sleep MCP server operations"; - }; - autoApprove = { - sleep = lib.mkEnableOption "Should the sleep tool be auto approved for Sleep MCP server"; - }; }; }; }; @@ -141,7 +60,14 @@ in { ]; }) - (lib.mkIf anyProfileHasMcp { + (lib.mkIf anyProfileHasMcpEslint { + home.packages = [ + mcp-eslint + pkgs.eslint + ]; + }) + + (lib.mkIf (anyProfileHasMcpNixos || anyProfileHasMcpEslint) { home.file."${config.xdg.configHome}/VSCodium/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json" = { text = builtins.toJSON { mcpServers = @@ -151,43 +77,9 @@ in { }; }) // (lib.optionalAttrs anyProfileHasMcpEslint { - eslint = - { - command = "${pkgs.nodejs}/bin/npx"; - args = ["-y" (getMcpPackage "eslint")]; - } - // (lib.optionalAttrs ((getMcpTimeout "eslint") != null) { - timeout = getMcpTimeout "eslint"; - }) - // (lib.optionalAttrs ((getMcpAutoApprove "eslint") != {}) { - autoApprove = builtins.attrNames (lib.filterAttrs (_: v: v) (getMcpAutoApprove "eslint")); - }); - }) - // (lib.optionalAttrs anyProfileHasMcpVitest { - vitest = - { - command = "${pkgs.nodejs}/bin/npx"; - args = ["-y" (getMcpPackage "vitest")]; - } - // (lib.optionalAttrs ((getMcpTimeout "vitest") != null) { - timeout = getMcpTimeout "vitest"; - }) - // (lib.optionalAttrs ((getMcpAutoApprove "vitest") != {}) { - autoApprove = builtins.attrNames (lib.filterAttrs (_: v: v) (getMcpAutoApprove "vitest")); - }); - }) - // (lib.optionalAttrs anyProfileHasMcpSleep { - sleep-mcp = - { - command = "${pkgs.nodejs}/bin/npx"; - args = ["-y" (getMcpPackage "sleep")]; - } - // (lib.optionalAttrs ((getMcpTimeout "sleep") != null) { - timeout = getMcpTimeout "sleep"; - }) - // (lib.optionalAttrs ((getMcpAutoApprove "sleep") != {}) { - autoApprove = builtins.attrNames (lib.filterAttrs (_: v: v) (getMcpAutoApprove "sleep")); - }); + eslint = { + command = "${mcp-eslint}/bin/mcp-eslint"; + }; }); }; force = true; diff --git a/modules/home-manager-modules/programs/vscode/conventionalCommits.nix b/modules/home-manager-modules/programs/vscode/conventionalCommits.nix deleted file mode 100644 index 5bc8124..0000000 --- a/modules/home-manager-modules/programs/vscode/conventionalCommits.nix +++ /dev/null @@ -1,34 +0,0 @@ -{ - lib, - pkgs, - config, - ... -}: let - pkgsRepositories = pkgs.nix-vscode-extensions.forVSCodeVersion config.programs.vscode.package.version; - pkgsRepository = pkgsRepositories.vscode-marketplace; -in { - options.programs.vscode.profiles = lib.mkOption { - type = lib.types.attrsOf (lib.types.submodule ({config, ...}: { - options = { - extraExtensions.conventionalCommits = { - enable = lib.mkEnableOption "Enable VSCode Conventional Commits extension"; - extension = lib.mkPackageOption pkgsRepository "conventional-commits" { - default = ["vivaxy" "vscode-conventional-commits"]; - }; - - gitmoji = lib.mkEnableOption "should emoji be prompted for as a part of the commit message./"; - - promptScopes = lib.mkEnableOption "prompting for scopes in conventional commits"; - }; - }; - config = lib.mkIf config.extraExtensions.conventionalCommits.enable { - extensions = [config.extraExtensions.conventionalCommits.extension]; - - userSettings = { - "conventionalCommits.gitmoji" = config.extraExtensions.conventionalCommits.gitmoji; - "conventionalCommits.promptScopes" = config.extraExtensions.conventionalCommits.promptScopes; - }; - }; - })); - }; -} diff --git a/modules/home-manager-modules/programs/vscode/default.nix b/modules/home-manager-modules/programs/vscode/default.nix index 85f4a62..50b323d 100644 --- a/modules/home-manager-modules/programs/vscode/default.nix +++ b/modules/home-manager-modules/programs/vscode/default.nix @@ -21,7 +21,5 @@ ./claudeDev.nix ./nearley.nix ./vitest.nix - ./direnv.nix - ./conventionalCommits.nix ]; } diff --git a/modules/home-manager-modules/programs/vscode/direnv.nix b/modules/home-manager-modules/programs/vscode/direnv.nix deleted file mode 100644 index 231ea17..0000000 --- a/modules/home-manager-modules/programs/vscode/direnv.nix +++ /dev/null @@ -1,25 +0,0 @@ -{ - lib, - pkgs, - config, - ... -}: let - pkgsRepositories = pkgs.nix-vscode-extensions.forVSCodeVersion config.programs.vscode.package.version; - pkgsRepository = pkgsRepositories.vscode-marketplace; -in { - options.programs.vscode.profiles = lib.mkOption { - type = lib.types.attrsOf (lib.types.submodule ({config, ...}: { - options = { - extraExtensions.direnv = { - enable = lib.mkEnableOption "Enable direnv extension"; - extension = lib.mkPackageOption pkgsRepository "direnv" { - default = ["mkhl" "direnv"]; - }; - }; - }; - config = lib.mkIf config.extraExtensions.direnv.enable { - extensions = [config.extraExtensions.direnv.extension]; - }; - })); - }; -} diff --git a/modules/nixos-modules/server/paperless.nix b/modules/nixos-modules/server/paperless.nix index b97c48d..0243d53 100644 --- a/modules/nixos-modules/server/paperless.nix +++ b/modules/nixos-modules/server/paperless.nix @@ -51,9 +51,10 @@ in { }; }; services.paperless = { - domain = "${config.services.paperless.subdomain}.${config.host.reverse_proxy.hostname}"; configureTika = true; settings = { + PAPERLESS_URL = "https://${config.services.paperless.subdomain}.${config.host.reverse_proxy.hostname}"; + PAPERLESS_DBENGINE = "postgresql"; PAPERLESS_DBHOST = "/run/postgresql"; PAPERLESS_DBNAME = config.services.paperless.database.user;