From 4d68cbc6ae8420bffba213b2e5fc9308aeff18cf Mon Sep 17 00:00:00 2001 From: Ryan Mulligan Date: Wed, 14 Jan 2026 14:27:01 -0800 Subject: [PATCH 1/3] bump nixpkgs Why === * dotnet10 was segfaulting on the old version What changed === * Moved python 3.9 to historical modules since it is out of support * Moved python-with-prybar-3.10 to historical modules since we aren't supporting prybar any more and it was having trouble evaluating with the new nixpkgs * Update lua language server based on deprecation recommendations in nixpkgs * Update ruby from 3.1 to 4.0 Test plan === ``` nix build '.#"dotnet-10.0"' ``` builds now --- flake.lock | 6 +- pkgs/historical-modules/default.nix | 60 +++++++---- pkgs/modules/c/default.nix | 2 +- pkgs/modules/cpp/default.nix | 2 +- pkgs/modules/default.nix | 107 ++++++++++++-------- pkgs/modules/lua/default.nix | 5 +- pkgs/modules/python-with-prybar/default.nix | 70 ------------- 7 files changed, 109 insertions(+), 143 deletions(-) delete mode 100644 pkgs/modules/python-with-prybar/default.nix diff --git a/flake.lock b/flake.lock index 4130956b..d285dc6e 100644 --- a/flake.lock +++ b/flake.lock @@ -184,11 +184,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1752683762, - "narHash": "sha256-CVC4bpthYhKk4Qb4mt00SqfJ7CJ4vfTX06pLN2OHa1c=", + "lastModified": 1768364046, + "narHash": "sha256-PDFfpswLiuG/DcadTBb7dEfO3jX1fcGlCD4ZKSkC0M8=", "owner": "nixos", "repo": "nixpkgs", - "rev": "fa64ec5c1ca6f17746f3defedb988b9248e97616", + "rev": "ea30586ee015f37f38783006a9bc9e4aa64d7d61", "type": "github" }, "original": { diff --git a/pkgs/historical-modules/default.nix b/pkgs/historical-modules/default.nix index 446f4d02..46e79730 100644 --- a/pkgs/historical-modules/default.nix +++ b/pkgs/historical-modules/default.nix @@ -221,6 +221,13 @@ let displayVersion = "3.8"; }; } + { + moduleId = "python-3.9"; + commit = "ae6ed05c623804560afd1cf3d80d13b6170d5c24"; + overrides = { + displayVersion = "3.9"; + }; + } { moduleId = "r-4.2"; commit = "1e1bb663068482cdb7c04bf585daed00205c0140"; @@ -248,9 +255,22 @@ let displayVersion = "0"; }; } + { + moduleId = "python-with-prybar-3.10"; + commit = "ae6ed05c623804560afd1cf3d80d13b6170d5c24"; + overrides = { + displayVersion = "3.10"; + }; + } ]; - moduleFromHistory = { moduleId, commit, deployment ? false, overrides }: + moduleFromHistory = + { + moduleId, + commit, + deployment ? false, + overrides, + }: let flake = getFlake "github:replit/nixmodules/${commit}"; module = @@ -263,30 +283,28 @@ let name = "replit-module-${moduleId}"; buildCommand = '' set -x - ${pkgs.jq}/bin/jq --argjson overrides '${builtins.toJSON(overrides)}' '. * $overrides' < ${module} > $out + ${pkgs.jq}/bin/jq --argjson overrides '${builtins.toJSON (overrides)}' '. * $overrides' < ${module} > $out ''; }; - modules = foldl' - (acc: module: - acc // ({ - ${module.moduleId} = moduleFromHistory module; - }) - ) - { } - historicalModulesList; + modules = foldl' ( + acc: module: + acc + // ({ + ${module.moduleId} = moduleFromHistory module; + }) + ) { } historicalModulesList; - deploymentModules = foldl' - (acc: module: - acc // ({ - ${module.moduleId} = moduleFromHistory { - inherit (module) moduleId commit overrides; - deployment = true; - }; - }) - ) - { } - historicalModulesList; + deploymentModules = foldl' ( + acc: module: + acc + // ({ + ${module.moduleId} = moduleFromHistory { + inherit (module) moduleId commit overrides; + deployment = true; + }; + }) + ) { } historicalModulesList; in { diff --git a/pkgs/modules/c/default.nix b/pkgs/modules/c/default.nix index b973a95d..15618bc0 100644 --- a/pkgs/modules/c/default.nix +++ b/pkgs/modules/c/default.nix @@ -1,6 +1,6 @@ { pkgs, lib, ... }: let - clang = pkgs.clang_14; + clang = pkgs.clang_20; run-extensions = [ ".c" ]; # use this list for file-param runners because # we don't want .h files to be runnable clang-compile = import ../../clang-compile { diff --git a/pkgs/modules/cpp/default.nix b/pkgs/modules/cpp/default.nix index 355638a7..211cd45a 100644 --- a/pkgs/modules/cpp/default.nix +++ b/pkgs/modules/cpp/default.nix @@ -1,6 +1,6 @@ { pkgs, lib, ... }: let - clang = pkgs.clang_14; + clang = pkgs.clang_20; clang-compile = import ../../clang-compile { inherit pkgs; inherit clang; diff --git a/pkgs/modules/default.nix b/pkgs/modules/default.nix index 3a8134df..df418adc 100644 --- a/pkgs/modules/default.nix +++ b/pkgs/modules/default.nix @@ -1,15 +1,27 @@ -{ pkgs, pkgs-23_05, pkgs-24_11, pkgs-25_05, pkgs-master, pkgs-staging, ... }: +{ + pkgs, + pkgs-23_05, + pkgs-24_11, + pkgs-25_05, + pkgs-master, + pkgs-staging, + ... +}: with builtins; let - mkModule = path: pkgs.callPackage ../moduleit/entrypoint.nix { - configPath = path; - inherit pkgs-23_05 pkgs-24_11; - }; - mkDeploymentModule = path: pkgs.callPackage ../moduleit/entrypoint.nix { - configPath = path; - inherit pkgs-23_05 pkgs-24_11; - deployment = true; - }; + mkModule = + path: + pkgs.callPackage ../moduleit/entrypoint.nix { + configPath = path; + inherit pkgs-23_05 pkgs-24_11; + }; + mkDeploymentModule = + path: + pkgs.callPackage ../moduleit/entrypoint.nix { + configPath = path; + inherit pkgs-23_05 pkgs-24_11; + deployment = true; + }; apply-upgrade-map = import ../upgrade-map; historical = pkgs.callPackage ../historical-modules { }; @@ -19,31 +31,29 @@ let pypkgs = pkgs-24_11.python39Packages; }) (import ./python { - python = pkgs.python310Full; + python = pkgs.python310; pypkgs = pkgs.python310Packages; }) (import ./python { - python = pkgs.python311Full; + python = pkgs.python311; pypkgs = pkgs.python311Packages; }) (import ./python { - python = pkgs.python312Full; + python = pkgs.python312; pypkgs = pkgs.python312Packages; }) (import ./python-base { - python = pkgs.python311Full; + python = pkgs.python311; pypkgs = pkgs.python311Packages; }) (import ./python-base { - python = pkgs.python312Full; + python = pkgs.python312; pypkgs = pkgs.python312Packages; }) (import ./python-base { - python = pkgs.python313Full; + python = pkgs.python313; pypkgs = pkgs.python313Packages; }) - (import ./python-with-prybar) - (import ./pyright-extended { nodejs = pkgs-24_11.nodejs-18_x; }) @@ -119,8 +129,8 @@ let (import ./R) (import ./replit) (import ./ruby { - ruby = pkgs.ruby_3_1; - rubyPackages = pkgs.rubyPackages_3_1; + ruby = pkgs.ruby_4_0; + rubyPackages = pkgs.rubyPackages_4_0; }) ( # pinning ruby to specific version to avoid breaking gems with built .so's @@ -156,47 +166,54 @@ let ]; activeModules = listToAttrs ( - map - (moduleInput: - let - module = mkModule moduleInput; - in - { - name = get-module-id module; - value = module; - } - ) - modulesList + map ( + moduleInput: + let + module = mkModule moduleInput; + in + { + name = get-module-id module; + value = module; + } + ) modulesList ); modules = apply-upgrade-map (activeModules // historical.modules); activeDeploymentModules = listToAttrs ( - map - (moduleInput: - let - module = mkDeploymentModule moduleInput; - in - { - name = get-deployment-module-id module; - value = module; - } - ) - modulesList + map ( + moduleInput: + let + module = mkDeploymentModule moduleInput; + in + { + name = get-deployment-module-id module; + value = module; + } + ) modulesList ); deploymentModules = apply-upgrade-map (activeDeploymentModules // historical.deploymentModules); - get-module-id = module: + get-module-id = + module: let match = builtins.match "^\/nix\/store\/([^-]+)-replit-module-(.+)$" module.outPath; in builtins.elemAt match 1; - get-deployment-module-id = module: + get-deployment-module-id = + module: let match = builtins.match "^\/nix\/store\/([^-]+)-replit-deployment-module-(.+)$" module.outPath; in builtins.elemAt match 1; in -{ inherit modules activeModules deploymentModules activeDeploymentModules; } +{ + inherit + modules + activeModules + deploymentModules + activeDeploymentModules + ; +} diff --git a/pkgs/modules/lua/default.nix b/pkgs/modules/lua/default.nix index 1e971d47..0062035a 100644 --- a/pkgs/modules/lua/default.nix +++ b/pkgs/modules/lua/default.nix @@ -1,5 +1,6 @@ { pkgs, lib, ... }: -let lua-version = lib.versions.majorMinor pkgs.lua.version; +let + lua-version = lib.versions.majorMinor pkgs.lua.version; in { id = "lua-${lua-version}"; @@ -25,6 +26,6 @@ in name = "lua-language-server"; language = "lua"; - start = "${pkgs.sumneko-lua-language-server}/bin/lua-language-server"; + start = "${pkgs.lua-language-server}/bin/lua-language-server"; }; } diff --git a/pkgs/modules/python-with-prybar/default.nix b/pkgs/modules/python-with-prybar/default.nix deleted file mode 100644 index fb211547..00000000 --- a/pkgs/modules/python-with-prybar/default.nix +++ /dev/null @@ -1,70 +0,0 @@ -{ pkgs -, pkgs-23_05 -, lib -, ... -}: -let - python = pkgs-23_05.python310Full; - - pypkgs = pkgs-23_05.python310Packages; - - pythonVersion = lib.versions.majorMinor python.version; - - pythonUtils = import ../../python-utils { - inherit python pypkgs; - pkgs = pkgs-23_05; - }; - - pythonWrapper = pythonUtils.pythonWrapper; - - prybar-python-version = lib.strings.concatStrings (lib.strings.splitString "." pythonVersion); - - stderred = pkgs.callPackage ../../stderred { }; - - run-prybar-bin = pkgs-23_05.writeShellApplication { - name = "run-prybar"; - text = '' - ${stderred}/bin/stderred -- ${ - pkgs.prybar."prybar-python${prybar-python-version}" - }/bin/prybar-python${prybar-python-version} -q --ps1 "''$(printf '\u0001\u001b[33m\u0002\u0001\u001b[00m\u0002 ')" -i "''$1" - ''; - }; - - run-prybar = pythonWrapper { - bin = "${run-prybar-bin}/bin/run-prybar"; - name = "run-prybar"; - }; -in -{ - - id = lib.mkForce "python-with-prybar-${pythonVersion}"; - - name = lib.mkForce "Python ${pythonVersion} Tools (with Prybar)"; - - displayVersion = pythonVersion; - - demoted = true; - - description = lib.mkForce '' - Python tools with the Prybar interpreter. Prybar is an interactive console that allows you to type and evaluate Python code in a prompt after hitting "Run". - ''; - - imports = [ - (import ../python { - inherit python pypkgs; - }) - ]; - - replit.packages = [ - run-prybar - ]; - - replit.runners = lib.mkForce { - python-prybar = { - name = "Prybar for Python ${pythonVersion}"; - optionalFileParam = true; - language = "python3"; - start = "${run-prybar}/bin/run-prybar $file"; - }; - }; -} From f86be3ac78f06b0488ebfe2eadd243fad7b0db49 Mon Sep 17 00:00:00 2001 From: Ryan Mulligan Date: Wed, 14 Jan 2026 14:40:16 -0800 Subject: [PATCH 2/3] more fixes for darta and ruby in historical modules --- pkgs/historical-modules/default.nix | 14 +++++++++++++ pkgs/upgrade-map/default.nix | 31 +++++++++++++++-------------- 2 files changed, 30 insertions(+), 15 deletions(-) diff --git a/pkgs/historical-modules/default.nix b/pkgs/historical-modules/default.nix index 46e79730..530a1fd0 100644 --- a/pkgs/historical-modules/default.nix +++ b/pkgs/historical-modules/default.nix @@ -262,6 +262,20 @@ let displayVersion = "3.10"; }; } + { + moduleId = "dart-3.8"; + commit = "ae6ed05c623804560afd1cf3d80d13b6170d5c24"; + overrides = { + displayVersion = "3.8"; + }; + } + { + moduleId = "ruby-3.1"; + commit = "ae6ed05c623804560afd1cf3d80d13b6170d5c24"; + overrides = { + displayVersion = "3.1"; + }; + } ]; moduleFromHistory = diff --git a/pkgs/upgrade-map/default.nix b/pkgs/upgrade-map/default.nix index 5cc9f9ec..25b53097 100644 --- a/pkgs/upgrade-map/default.nix +++ b/pkgs/upgrade-map/default.nix @@ -16,6 +16,7 @@ let "dart-3.3" = "dart-3.4"; "dart-3.4" = "dart-3.5"; "dart-3.5" = "dart-3.8"; + "dart-3.8" = "dart-3.10"; "elixir-1_16" = "elixir-1_17"; "elixir-1_17" = "elixir-1_18"; "go" = "go-1.19"; @@ -26,24 +27,24 @@ let "rust-1.69" = "rust-1.70"; "rust-1.70" = "rust-1.72"; "rust-1.72" = "rust-stable"; + "ruby-3.1" = "ruby-3.2"; "swift" = "swift-5.6"; }; - upgrade-module = moduleId: - if hasAttr moduleId upgrade-map then - upgrade-module upgrade-map.${moduleId} - else - moduleId; + upgrade-module = + moduleId: if hasAttr moduleId upgrade-map then upgrade-module upgrade-map.${moduleId} else moduleId; - apply-upgrade-map = modules: - foldl' - (acc: moduleId: - let upgraded = upgrade-module moduleId; - in acc // { - ${moduleId} = modules.${upgraded}; - } - ) - modules - (attrNames upgrade-map); + apply-upgrade-map = + modules: + foldl' ( + acc: moduleId: + let + upgraded = upgrade-module moduleId; + in + acc + // { + ${moduleId} = modules.${upgraded}; + } + ) modules (attrNames upgrade-map); in apply-upgrade-map From f7548a81cee2a71c4f06377a62d86d57e936fa0d Mon Sep 17 00:00:00 2001 From: Ryan Mulligan Date: Wed, 14 Jan 2026 15:37:28 -0800 Subject: [PATCH 3/3] remove debuggers --- pkgs/dap-cpp/default.nix | 33 ----------- pkgs/dap-cpp/messages.nix | 46 --------------- pkgs/dapPython/default.nix | 24 -------- pkgs/dapPython/wrapper.py | 46 --------------- pkgs/historical-modules/default.nix | 63 ++++++++++++-------- pkgs/moduleit/example.nix | 67 +++++++--------------- pkgs/modules/c/default.nix | 25 +------- pkgs/modules/cpp/default.nix | 12 +--- pkgs/modules/default.nix | 63 ++++++++++---------- pkgs/modules/java/default.nix | 42 -------------- pkgs/modules/nodejs/default.nix | 64 ++++++--------------- pkgs/modules/python/default.nix | 89 +++++++++++------------------ pkgs/upgrade-map/default.nix | 24 ++++---- 13 files changed, 157 insertions(+), 441 deletions(-) delete mode 100644 pkgs/dap-cpp/default.nix delete mode 100644 pkgs/dap-cpp/messages.nix delete mode 100644 pkgs/dapPython/default.nix delete mode 100644 pkgs/dapPython/wrapper.py diff --git a/pkgs/dap-cpp/default.nix b/pkgs/dap-cpp/default.nix deleted file mode 100644 index 2f329364..00000000 --- a/pkgs/dap-cpp/default.nix +++ /dev/null @@ -1,33 +0,0 @@ -{ pkgs, stdenv, fetchurl, bash, coreutils, unzip }: - -stdenv.mkDerivation rec { - pname = "vscode-cpptools-dap"; - version = "1.3.1"; - - phases = "installPhase fixupPhase"; - - src = fetchurl { - url = "https://github.com/microsoft/vscode-cpptools/releases/download/${version}/cpptools-linux.vsix"; - sha256 = "e88008c3d1a19e2b65152b39b94a792b451fad99e51da59f0500e6efd2ccc168"; - }; - - # TODO: this has an implicit dependency on gdb. - - buildInputs = [ bash coreutils unzip ]; - - installPhase = '' - mkdir -p $out/share/dap/cpp $out/bin - ${unzip}/bin/unzip -q ${src} -d $out/share/dap/cpp - chmod +x $out/share/dap/cpp/extension/debugAdapters/OpenDebugAD7 $out/share/dap/cpp/extension/debugAdapters/mono.linux-x86_64 - - # OpenDebugAD7 doesn't quite like being called through a symlink, since it - # does some path manipulation based on $0. Create a tiny wrapper shell script - # for it. - cat< $out/bin/dap-cpp - #!${stdenv.shell} - export PATH="${pkgs.lib.makeBinPath [pkgs.gdb pkgs.coreutils]}" - exec $out/share/dap/cpp/extension/debugAdapters/OpenDebugAD7 "\$@" - EOF - chmod +x $out/bin/dap-cpp - ''; -} diff --git a/pkgs/dap-cpp/messages.nix b/pkgs/dap-cpp/messages.nix deleted file mode 100644 index 9053fc2d..00000000 --- a/pkgs/dap-cpp/messages.nix +++ /dev/null @@ -1,46 +0,0 @@ -{ - dapInitializeMessage = { - command = "initialize"; - type = "request"; - arguments = { - adapterID = "cppdbg"; - clientID = "replit"; - clientName = "replit.com"; - columnsStartAt1 = true; - linesStartAt1 = true; - locale = "en-us"; - pathFormat = "path"; - supportsInvalidatedEvent = true; - supportsProgressReporting = true; - supportsRunInTerminalRequest = true; - supportsVariablePaging = true; - supportsVariableType = true; - }; - }; - - dapLaunchMessage = program: { - command = "launch"; - type = "request"; - arguments = { - MIMode = "gdb"; - arg = [ ]; - cwd = "."; - environment = [ ]; - externalConsole = false; - logging = { }; - miDebuggerPath = "gdb"; - name = "gcc - Build and debug active file"; - inherit program; - request = "launch"; - setupCommands = [ - { - description = "Enable pretty-printing for gdb"; - ignoreFailures = true; - text = "-enable-pretty-printing"; - } - ]; - stopAtEntry = false; - type = "cppdbg"; - }; - }; -} diff --git a/pkgs/dapPython/default.nix b/pkgs/dapPython/default.nix deleted file mode 100644 index 21efdbbc..00000000 --- a/pkgs/dapPython/default.nix +++ /dev/null @@ -1,24 +0,0 @@ -{ pkgs, python, pypkgs, debugpy ? pypkgs.debugpy }: - -let - pythonVersion = pkgs.lib.versions.majorMinor python.version; -in -pkgs.stdenv.mkDerivation { - name = "dap-python"; - version = debugpy.version; - propagatedBuildInputs = [ - (python.withPackages (_: [ - debugpy - ])) - ]; - dontUnpack = true; - installPhase = '' - mkdir -p $out/bin - cp ${./wrapper.py} $out/bin/dap-python - chmod +x $out/bin/dap-python - - substituteInPlace $out/bin/dap-python \ - --replace "@python-bin@" "${python}/bin/python3" \ - --replace "@debugpy-path@" "${debugpy.out}/lib/python${pythonVersion}/site-packages" - ''; -} diff --git a/pkgs/dapPython/wrapper.py b/pkgs/dapPython/wrapper.py deleted file mode 100644 index 11f2f00b..00000000 --- a/pkgs/dapPython/wrapper.py +++ /dev/null @@ -1,46 +0,0 @@ -#!@python-bin@ -"""A small wrapper around debugpy's cli. - -This wrapper is roughly equivalent to: - - python3 -m debugpy --listen localhost:0 --wait-for-client "$@" - -with the added twist that it reports the port used back through fd 3. -""" - -import os -import os.path -import sys -import runpy - -# Permit interpolated path to be sensibly replaced. -for idx, path in enumerate("@debugpy-path@".split(":")): - sys.path.insert(idx, path) - -import debugpy -import debugpy.server - - -def _main() -> None: - if len(sys.argv) < 2: - print(f'Usage: {sys.argv[0]}