push sheeet
Some checks failed
Periodic Merges (6h) / master → staging-nixos (push) Failing after 12m50s
Periodic Merges (6h) / master → staging-next (push) Failing after 12m54s
Periodic Merges (24h) / merge-base(master,staging) → haskell-updates (push) Failing after 11m54s
Periodic Merges (6h) / staging-next → staging (push) Failing after 12m13s
Periodic Merges (24h) / staging-next-25.05 → staging-25.05 (push) Failing after 13m24s
Periodic Merges (24h) / release-25.05 → staging-next-25.05 (push) Failing after 14m28s

This commit is contained in:
Dark Steveneq
2025-10-09 14:15:47 +02:00
commit 646b892680
49168 changed files with 5897842 additions and 0 deletions

View File

@@ -0,0 +1,29 @@
{
buildNpmPackage,
fetchFromGitHub,
lib,
}:
buildNpmPackage {
pname = "vsc-leetcode-cli";
version = "unstable-2021-04-11";
src = fetchFromGitHub {
owner = "leetcode-tools";
repo = "leetcode-cli";
rev = "c5f6b8987185ae9f181e138f999825516240f44c";
hash = "sha256-N8hQqIzCUYTT5RAd0eqNynSNkGiN4omFY+8QLBemIbs=";
};
npmDepsHash = "sha256-t8eEnyAKeDmbmduUXuxo/WbJTced5dLeJTbtjxrrxY8=";
dontNpmBuild = true;
meta = with lib; {
description = "CLI tool for leetcode.com";
homepage = "https://github.com/leetcode-tools/leetcode-cli";
license = licenses.mit;
maintainers = with maintainers; [ cpcloud ];
mainProgram = "leetcode";
};
}

View File

@@ -0,0 +1,63 @@
{
lib,
stdenv,
buildNpmPackage,
fetchFromGitHub,
pkg-config,
libsecret,
nodejs,
clang_20,
versionCheckHook,
nix-update-script,
}:
buildNpmPackage (finalAttrs: {
pname = "vsce";
version = "3.6.2";
src = fetchFromGitHub {
owner = "microsoft";
repo = "vscode-vsce";
tag = "v${finalAttrs.version}";
hash = "sha256-TcBzXDNpjJvI+0ir80d+HFp6mF/Ecle4vhOMcACvF7M=";
};
npmDepsHash = "sha256-G09pn6JX389GMbIzYmmLutH7qwiaDb8V9zCGAOFaDdk=";
postPatch = ''
substituteInPlace package.json --replace-fail '"version": "0.0.0"' '"version": "${finalAttrs.version}"'
'';
nativeBuildInputs = [
pkg-config
nodejs.python
]
++ lib.optionals stdenv.isDarwin [ clang_20 ]; # clang_21 breaks @vscode/vsce's optional dependency keytar
buildInputs = [ libsecret ];
makeCacheWritable = true;
doInstallCheck = true;
nativeInstallCheckInputs = [ versionCheckHook ];
versionCheckProgramArg = "--version";
passthru = {
updateScript = nix-update-script {
extraArgs = [
"--version-regex"
"^v(\\d+\\.\\d+\\.\\d+)$"
];
};
};
meta = {
homepage = "https://github.com/microsoft/vscode-vsce";
description = "Visual Studio Code Extension Manager";
maintainers = with lib.maintainers; [
xiaoxiangmoe
];
license = lib.licenses.mit;
mainProgram = "vsce";
};
})

View File

@@ -0,0 +1,51 @@
{
lib,
buildNpmPackage,
fetchFromGitHub,
makeBinaryWrapper,
nodejs,
typescript,
}:
buildNpmPackage (finalAttrs: {
pname = "vscode-css-languageserver";
version = "1.102.0";
src = fetchFromGitHub {
owner = "microsoft";
repo = "vscode";
tag = finalAttrs.version;
hash = "sha256-IfqtwH86R9yp9YEpRHvTz/SUwKzG/nwdEVneRYyAYJ8=";
};
sourceRoot = "${finalAttrs.src.name}/extensions/css-language-features/server";
npmDepsHash = "sha256-DUcH+C5LB794Op3FYnuL3uNrUCNAxWouqrtV6bpgqRI=";
nativeBuildInputs = [
makeBinaryWrapper
typescript
];
buildPhase = ''
runHook preBuild
tsc -p .
runHook postBuild
'';
dontNpmBuild = true;
postInstall = ''
makeBinaryWrapper ${nodejs}/bin/node $out/bin/vscode-css-languageserver \
--add-flags $out/lib/node_modules/vscode-css-languageserver/out/node/cssServerMain.js
ln -s $out/bin/vscode-css-languageserver $out/bin/vscode-css-language-server
'';
meta = {
description = "CSS language server";
homepage = "https://github.com/microsoft/vscode/tree/${finalAttrs.src.tag}/extensions/css-language-features/server";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ ryota2357 ];
mainProgram = "vscode-css-languageserver";
};
})

View File

@@ -0,0 +1,5 @@
{
writeScriptBin,
}:
writeScriptBin "vscode-extension-update" (builtins.readFile ./vscode_extension_update.py)

View File

@@ -0,0 +1,13 @@
{
lib,
vscode-extension-update,
}:
{
attrPath ? null,
extraArgs ? [ ],
}:
[ "${lib.getExe vscode-extension-update}" ]
++ lib.optionals (attrPath != null) [ attrPath ]
++ extraArgs

View File

@@ -0,0 +1,440 @@
#! /usr/bin/env nix-shell
#! nix-shell -i python3 -p nix python3 python3Packages.loguru nodePackages.semver vsce nix-update gitMinimal coreutils common-updater-scripts
import argparse
import json
import os
import re
import subprocess
import sys
from pathlib import Path
from typing import Optional
from loguru import logger
class VSCodeExtensionUpdater:
"""
A class to update VSCode extension version.
"""
def __init__(self):
self.parser = argparse.ArgumentParser(
description="Update VSCode extension version."
)
self.parser.add_argument(
"attribute",
nargs="?",
default=os.getenv("UPDATE_NIX_ATTR_PATH"),
help="nix attribute path of the extension",
)
self.parser.add_argument(
"--override-filename", help="override-filename for nix-update"
)
self.parser.add_argument(
"--pre-release",
action="store_true",
help="allow check pre-release versions",
)
self.parser.add_argument(
"--commit", action="store_true", help="commit the updated package"
)
self.args = self.parser.parse_args()
self.attribute_path = self.args.attribute
if not self.attribute_path:
logger.error("Error: Attribute path is required.")
sys.exit(1)
self.target_vscode_version = self._get_nix_vscode_version()
self.current_version = self._get_nix_vscode_extension_version()
self.override_filename = self.args.override_filename
self.allow_pre_release = self.args.pre_release
self.commit = self.args.commit
self.extension_publisher = self._get_nix_vscode_extension_publisher()
self.extension_name = self._get_nix_vscode_extension_name()
self.extension_marketplace_id = (
f"{self.extension_publisher}.{self.extension_name}"
)
self.nix_system = self.get_nix_system()
nix_vscode_extension_platforms = self._get_nix_vscode_extension_platforms()
if not nix_vscode_extension_platforms and self._has_platform_source():
logger.error("Error: not found meta.platforms.")
sys.exit(1)
self.nix_vscode_extension_platforms = nix_vscode_extension_platforms or [
self.nix_system
]
if self.nix_system in self.nix_vscode_extension_platforms:
self.nix_vscode_extension_platforms.remove(self.nix_system)
self.nix_vscode_extension_platforms.insert(0, self.nix_system)
self.supported_nix_systems = self.get_supported_nix_systems()
logger.info(f"VSCode version: {self.target_vscode_version}")
logger.info(f"Extension Marketplace ID: {self.extension_marketplace_id}")
logger.info(f"Extension Current Version: {self.current_version}")
def execute_command(
self, commandline: list[str], env: Optional[dict[str, str]] = None
) -> str:
"""
Executes a shell command and returns its output.
"""
logger.debug("Executing command: {}", commandline)
return subprocess.run(
commandline,
check=True,
capture_output=True,
text=True,
env=env,
).stdout.strip()
def _get_nix_attribute(self, attribute_path: str) -> str:
"""
Retrieves a raw Nix attribute value.
"""
return self.execute_command([
"nix",
"--extra-experimental-features",
"nix-command",
"eval",
"--raw",
"-f",
".",
attribute_path
])
def get_nix_system(self) -> str:
"""
Retrieves system from Nix.
"""
return self._get_nix_attribute("stdenv.hostPlatform.system")
def get_supported_nix_systems(self) -> list[str]:
nix_config = self.execute_command([
"nix",
"--extra-experimental-features",
"nix-command",
"config",
"show"
])
system = None
extra_platforms = []
for line in nix_config.splitlines():
if "=" not in line:
continue
key, value = line.split("=", 1)
key = key.strip()
value = value.strip()
if key == "system":
system = value
elif key == "extra-platforms":
extra_platforms = value.strip("[]").replace('"', "").split()
return ([system] if system is not None else []) + extra_platforms
def _has_platform_source(self) -> bool:
source_url = self._get_nix_attribute(f"{self.attribute_path}.src.url")
return "targetPlatform=" in source_url
def _get_nix_vscode_extension_src_hash(self, system: str) -> str:
url = self.execute_command([
"nix",
"--extra-experimental-features",
"nix-command",
"eval",
"--raw",
"-f",
".",
f"{self.attribute_path}.src.url",
"--system",
system,
])
sha256 = self.execute_command(["nix-prefetch-url", url])
return self.execute_command([
"nix",
"--extra-experimental-features",
"nix-command",
"hash",
"convert",
"--to",
"sri",
"--hash-algo",
"sha256",
sha256,
])
def get_target_platform(self, nix_system: str) -> str:
"""
Retrieves the VS Code targetPlatform variable based on the Nix system.
"""
platform_mapping = {
"x86_64-linux": "linux-x64",
"aarch64-linux": "linux-arm64",
"armv7l-linux": "linux-armhf",
"x86_64-darwin": "darwin-x64",
"aarch64-darwin": "darwin-arm64",
"x86_64-windows": "win32-x64",
"aarch64-windows": "win32-arm64",
}
try:
return platform_mapping[nix_system]
except KeyError:
logger.error(
f"Error: Unknown Nix system '{nix_system}'. Cannot determine targetPlatform."
)
sys.exit(1)
def _get_nix_vscode_version(self) -> str:
"""
Retrieves the current VSCode version from Nix.
"""
return self._get_nix_attribute("vscode.version")
def _get_nix_vscode_extension_version(self) -> str:
"""
Retrieves the extension current version from Nix.
"""
return os.getenv("UPDATE_NIX_OLD_VERSION") or self._get_nix_attribute(
f"{self.attribute_path}.version"
)
def _get_nix_vscode_extension_platforms(self) -> list[str]:
"""
Retrieves the extension meta.platforms from Nix.
"""
try:
return json.loads(
self.execute_command([
"nix",
"--extra-experimental-features",
"nix-command",
"eval",
"--json",
"-f",
".",
f"{self.attribute_path}.meta.platforms",
])
)
except subprocess.CalledProcessError:
return []
def _get_nix_vscode_extension_publisher(self) -> str:
"""
Retrieves the extension publisher from Nix.
"""
return self._get_nix_attribute(f"{self.attribute_path}.vscodeExtPublisher")
def _get_nix_vscode_extension_name(self) -> str:
"""
Retrieves the extension name from Nix.
"""
return self._get_nix_attribute(f"{self.attribute_path}.vscodeExtName")
def get_marketplace_extension_data(self, extension_id: str) -> dict:
"""
Retrieves extension data from the VSCode Marketplace using vsce.
"""
command = ["vsce", "show", extension_id, "--json"]
try:
output = self.execute_command(command)
return json.loads(output)
except (json.JSONDecodeError, subprocess.CalledProcessError) as e:
logger.exception(e)
sys.exit(1)
def find_compatible_extension_version(
self, extension_versions: list, target_platform: str
) -> str:
"""
Finds the first compatible extension version based on Target Platform and VSCode compatibility.
"""
for version_info in extension_versions:
candidate_platform = version_info.get("targetPlatform", None)
if candidate_platform is not None and candidate_platform != target_platform:
continue
candidate_version = version_info.get("version")
candidate_pre_release = next(
(
prop.get("value")
for prop in version_info.get("properties", [])
if prop.get("key") == "Microsoft.VisualStudio.Code.PreRelease"
),
None,
)
if candidate_pre_release and not self.allow_pre_release:
logger.debug(f"Skipping PreRelease version {candidate_version}")
continue
engine_version_constraint = next(
(
prop.get("value")
for prop in version_info.get("properties", [])
if prop.get("key") == "Microsoft.VisualStudio.Code.Engine"
),
None,
)
if engine_version_constraint:
logger.debug(
f"Testing extension version: {candidate_version} with VSCode {self.target_vscode_version} (constraint: {engine_version_constraint})"
)
engine_version_constraint = self.replace_version_symbol(
engine_version_constraint
)
try:
self.execute_command([
"semver",
self.target_vscode_version,
"-r",
engine_version_constraint,
])
logger.info(f"Compatible version found: {candidate_version}")
return candidate_version
except (ValueError, subprocess.CalledProcessError):
logger.debug(
f"Version {candidate_version} is not compatible with VSCode {self.target_vscode_version} (constraint: {engine_version_constraint})."
)
continue
return candidate_version
logger.error("Error: not found compatible version.")
sys.exit(1)
def replace_version_symbol(self, version: str) -> str:
return re.sub(r"^\^", ">=", version)
def update_version_for_default_nix(self, content: str, new_version: str):
target_name = self.attribute_path.removeprefix("vscode-extensions.")
pattern = re.compile(
rf"{re.escape(target_name)}\s*=\s*buildVscodeMarketplaceExtension\s*\{{",
re.MULTILINE,
)
match = pattern.search(content)
if not match:
raise ValueError("Target block not found.")
brace_start = content.find("{", match.end() - 1)
if brace_start == -1:
raise ValueError("Opening brace not found.")
count = 0
pos = brace_start
text_len = len(content)
while pos < text_len:
if content[pos] == "{":
count += 1
elif content[pos] == "}":
count -= 1
if count == 0:
break
pos += 1
if count != 0:
raise ValueError("Braces mismatch.")
block_end = pos
block_text = content[brace_start : block_end + 1]
version_pattern = re.compile(r'(version\s*=\s*")([^"]+)(";)')
def repl(m):
match_version = m.group(2)
if self.current_version == match_version:
return f"{m.group(1)}{new_version}{m.group(3)}"
return m.group(0)
new_block_text, count_sub = version_pattern.subn(repl, block_text)
if count_sub == 0:
raise ValueError("No version field updated.")
updated_content = (
content[:brace_start] + new_block_text + content[block_end + 1 :]
)
Path(self.override_filename).write_text(updated_content, encoding="utf-8")
def run_nix_update(self, new_version: str, system: str) -> None:
"""
Builds and executes the nix-update command.
"""
if not self.override_filename:
self.override_filename = self.execute_command(
[
"nix",
"edit",
"--extra-experimental-features",
"nix-command",
"-f",
".",
self.attribute_path,
],
env={**os.environ, "EDITOR": "echo"},
)
if (
"pkgs/applications/editors/vscode/extensions/vscode-utils.nix"
in self.override_filename
) and Path(
"pkgs/applications/editors/vscode/extensions/default.nix"
).exists():
self.override_filename = (
"pkgs/applications/editors/vscode/extensions/default.nix"
)
if (
new_version != "skip"
and "pkgs/applications/editors/vscode/extensions/default.nix"
in self.override_filename
):
with logger.catch(exception=(IOError, ValueError)):
content = Path(self.override_filename).read_text(encoding="utf-8")
if content.count(self.current_version) > 1:
self.update_version_for_default_nix(content, new_version)
new_version = "skip"
if system not in self.supported_nix_systems:
src_hash = self._get_nix_vscode_extension_src_hash(system)
update_command = [
"update-source-version",
self.attribute_path,
self.new_version,
src_hash,
f"--system={system}",
"--ignore-same-version",
"--ignore-same-hash",
f"--file={self.override_filename}",
]
else:
update_command = [
"nix-update",
self.attribute_path,
"--version",
new_version,
"--override-filename",
self.override_filename,
"--system",
system,
]
self.execute_command(update_command)
def run(self):
marketplace_data = self.get_marketplace_extension_data(
self.extension_marketplace_id
)
available_versions = marketplace_data.get("versions", [])
logger.info(
f"Total versions found for {self.extension_marketplace_id}: {len(available_versions)}"
)
self.new_version = self.find_compatible_extension_version(
available_versions,
self.get_target_platform(self.nix_vscode_extension_platforms[0]),
)
try:
self.execute_command([
"semver",
self.current_version,
"-r",
f"<{self.new_version}",
])
except subprocess.CalledProcessError:
logger.info("Already up to date or new version is older!")
sys.exit(0)
for i, system in enumerate(self.nix_vscode_extension_platforms):
version = self.new_version if i == 0 else "skip"
self.run_nix_update(version, system)
if self.commit:
self.execute_command(["git", "add", self.override_filename])
self.execute_command([
"git",
"commit",
"-m",
f"{self.attribute_path}: {self.current_version} -> {self.new_version}",
])
if __name__ == "__main__":
updater = VSCodeExtensionUpdater()
updater.run()

View File

@@ -0,0 +1,93 @@
{
lib,
stdenv,
buildNpmPackage,
fetchFromGitHub,
buildPackages,
libsecret,
xcbuild,
pkg-config,
node-gyp,
runCommand,
vscode-js-debug,
nix-update-script,
}:
buildNpmPackage rec {
pname = "vscode-js-debug";
version = "1.104.0";
src = fetchFromGitHub {
owner = "microsoft";
repo = "vscode-js-debug";
rev = "v${version}";
hash = "sha256-CoR3ezhyIQtt5ZlTjfJSNvfMX47U5xSJdzsMN5dkUGI=";
};
npmDepsHash = "sha256-bX4p0LQIL4XF0rL5dnBAvR6Ut+YZ1H676Mu/uCedNtU=";
nativeBuildInputs = [
pkg-config
node-gyp
]
++ lib.optionals stdenv.hostPlatform.isDarwin [ xcbuild ];
buildInputs = lib.optionals (!stdenv.hostPlatform.isDarwin) [ libsecret ];
postPatch = ''
${lib.getExe buildPackages.jq} '
.scripts.postinstall |= empty | # tries to install playwright, not necessary for build
.scripts.build |= "gulp dapDebugServer" | # there is no build script defined
.bin |= "./dist/src/dapDebugServer.js" # there is no bin output defined
' ${src}/package.json > package.json
'';
makeCacheWritable = true;
npmInstallFlags = [ "--include=dev" ];
preBuild = ''
export PATH="node_modules/.bin:$PATH"
'';
passthru.updateScript = nix-update-script {
extraArgs = [
"--version-regex"
"v((?!\\d{4}\\.\\d\\.\\d{3}).*)"
];
};
passthru.tests.test =
runCommand "${pname}-test"
{
nativeBuildInputs = [ vscode-js-debug ];
meta.timeout = 60;
}
''
output=$(js-debug --help 2>&1)
if grep -Fw -- "Usage: dapDebugServer.js [port|socket path=8123] [host=localhost]" - <<< "$output"; then
touch $out
else
echo "Expected help output was not found!" >&2
echo "The output was:" >&2
echo "$output" >&2
exit 1
fi
'';
meta = {
description = "DAP-compatible JavaScript debugger";
longDescription = ''
This is a [DAP](https://microsoft.github.io/debug-adapter-protocol/)-based
JavaScript debugger. It debugs Node.js, Chrome, Edge, WebView2, VS Code
extensions, and more. It has been the default JavaScript debugger in
Visual Studio Code since 1.46, and is gradually rolling out in Visual
Studio proper.
'';
homepage = "https://github.com/microsoft/vscode-js-debug";
changelog = "https://github.com/microsoft/vscode-js-debug/blob/v${version}/CHANGELOG.md";
mainProgram = "js-debug";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ zeorin ];
};
}

View File

@@ -0,0 +1,44 @@
{
lib,
buildNpmPackage,
fetchFromGitHub,
typescript,
}:
buildNpmPackage (finalAttrs: {
pname = "vscode-json-languageserver";
version = "1.3.4";
src = fetchFromGitHub {
owner = "microsoft";
repo = "vscode";
tag = "1.101.2";
hash = "sha256-wdI6VlJ4WoSNnwgkb6dkVYcq/P/yzflv5mE9PuYBVx4=";
};
sourceRoot = "${finalAttrs.src.name}/extensions/json-language-features/server";
npmDepsHash = "sha256-akQukdYTe6um4xo+7T3wHxx+WrXfKYl5a1qwmqX72HQ=";
nativeBuildInputs = [ typescript ];
buildPhase = ''
runHook preBuild
tsc -p .
runHook postBuild
'';
dontNpmBuild = true;
postInstall = ''
ln -s $out/bin/vscode-json-languageserver $out/bin/vscode-json-language-server
'';
meta = {
description = "JSON language server";
homepage = "https://github.com/microsoft/vscode/tree/${finalAttrs.src.tag}/extensions/json-language-features/server";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ ryota2357 ];
mainProgram = "vscode-json-languageserver";
};
})

View File

@@ -0,0 +1,56 @@
{
lib,
stdenv,
buildNpmPackage,
fetchFromGitHub,
unzip,
vscodium,
vscode-extensions,
}:
buildNpmPackage rec {
pname = "vscode-langservers-extracted";
version = "4.10.0";
srcs = [
(fetchFromGitHub {
owner = "hrsh7th";
repo = "vscode-langservers-extracted";
rev = "v${version}";
hash = "sha256-3m9+HZY24xdlLcFKY/5DfvftqprwLJk0vve2ZO1aEWk=";
})
vscodium.src
];
sourceRoot = "source";
npmDepsHash = "sha256-XGlFtmikUrnnWXsAYzTqw2K7Y2O0bUtYug0xXFIASBQ=";
nativeBuildInputs = [ unzip ];
buildPhase =
let
extensions =
if stdenv.hostPlatform.isDarwin then
"../VSCodium.app/Contents/Resources/app/extensions"
else
"../resources/app/extensions";
in
''
npx babel ${extensions}/css-language-features/server/dist/node \
--out-dir lib/css-language-server/node/
npx babel ${extensions}/html-language-features/server/dist/node \
--out-dir lib/html-language-server/node/
npx babel ${extensions}/json-language-features/server/dist/node \
--out-dir lib/json-language-server/node/
cp -r ${vscode-extensions.dbaeumer.vscode-eslint}/share/vscode/extensions/dbaeumer.vscode-eslint/server/out \
lib/eslint-language-server
'';
meta = with lib; {
description = "HTML/CSS/JSON/ESLint language servers extracted from vscode";
homepage = "https://github.com/hrsh7th/vscode-langservers-extracted";
license = licenses.mit;
maintainers = with maintainers; [ lord-valen ];
};
}

View File

@@ -0,0 +1,57 @@
{
lib,
fetchFromGitHub,
buildDartApplication,
kdePackages,
sqlite,
}:
let
version = "1.8.1";
src = fetchFromGitHub {
owner = "Merrit";
repo = "vscode-runner";
rev = "v${version}";
hash = "sha256-ZzAQeSUFbHp2Bwiwsq8kgQqqNlr6hfXuz7PNAOSiBhU=";
};
in
buildDartApplication {
pname = "vscode-runner";
inherit version src;
vendorHash = "sha256-jS4jH00uxZIX81sZQIi+s42ofmXpD4/tPMRV2heaM2U=";
pubspecLock = lib.importJSON ./pubspec.lock.json;
dartEntryPoints = {
"bin/vscode_runner" = "bin/vscode_runner.dart";
};
buildInputs = [ sqlite ];
postInstall = ''
substituteInPlace ./package/codes.merritt.vscode_runner.service \
--replace-fail "Exec=" "Exec=$out/bin/vscode_runner"
install -D \
./package/codes.merritt.vscode_runner.service \
$out/share/dbus-1/services/codes.merritt.vscode_runner.service
install -D \
./package/plasma-runner-vscode_runner.desktop \
$out/share/krunner/dbusplugins/plasma-runner-vscode_runner.desktop
'';
passthru.updateScript = ./update.sh;
meta = {
description = "KRunner plugin for quickly opening recent VSCode workspaces";
homepage = "https://github.com/Merrit/vscode-runner";
changelog = "https://github.com/Merrit/vscode-runner/blob/${src.rev}/CHANGELOG.md";
license = lib.licenses.gpl3Only;
sourceProvenance = [ lib.sourceTypes.fromSource ];
maintainers = [ lib.maintainers.pinage404 ];
mainProgram = "vscode_runner";
inherit (kdePackages.krunner.meta) platforms;
};
}

View File

@@ -0,0 +1,587 @@
{
"packages": {
"_fe_analyzer_shared": {
"dependency": "transitive",
"description": {
"name": "_fe_analyzer_shared",
"sha256": "e55636ed79578b9abca5fecf9437947798f5ef7456308b5cb85720b793eac92f",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "82.0.0"
},
"analyzer": {
"dependency": "transitive",
"description": {
"name": "analyzer",
"sha256": "904ae5bb474d32c38fb9482e2d925d5454cda04ddd0e55d2e6826bc72f6ba8c0",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "7.4.5"
},
"args": {
"dependency": "transitive",
"description": {
"name": "args",
"sha256": "d0481093c50b1da8910eb0bb301626d4d8eb7284aa739614d2b394ee09e3ea04",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "2.7.0"
},
"async": {
"dependency": "transitive",
"description": {
"name": "async",
"sha256": "758e6d74e971c3e5aceb4110bfd6698efc7f501675bcfe0c775459a8140750eb",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "2.13.0"
},
"boolean_selector": {
"dependency": "transitive",
"description": {
"name": "boolean_selector",
"sha256": "8aab1771e1243a5063b8b0ff68042d67334e3feab9e95b9490f9a6ebf73b42ea",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "2.1.2"
},
"cli_config": {
"dependency": "transitive",
"description": {
"name": "cli_config",
"sha256": "ac20a183a07002b700f0c25e61b7ee46b23c309d76ab7b7640a028f18e4d99ec",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "0.2.0"
},
"collection": {
"dependency": "transitive",
"description": {
"name": "collection",
"sha256": "2f5709ae4d3d59dd8f7cd309b4e023046b57d8a6c82130785d2b0e5868084e76",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "1.19.1"
},
"convert": {
"dependency": "transitive",
"description": {
"name": "convert",
"sha256": "b30acd5944035672bc15c6b7a8b47d773e41e2f17de064350988c5d02adb1c68",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "3.1.2"
},
"coverage": {
"dependency": "transitive",
"description": {
"name": "coverage",
"sha256": "802bd084fb82e55df091ec8ad1553a7331b61c08251eef19a508b6f3f3a9858d",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "1.13.1"
},
"crypto": {
"dependency": "transitive",
"description": {
"name": "crypto",
"sha256": "1e445881f28f22d6140f181e07737b22f1e099a5e1ff94b0af2f9e4a463f4855",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "3.0.6"
},
"dbus": {
"dependency": "transitive",
"description": {
"name": "dbus",
"sha256": "79e0c23480ff85dc68de79e2cd6334add97e48f7f4865d17686dd6ea81a47e8c",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "0.7.11"
},
"ffi": {
"dependency": "transitive",
"description": {
"name": "ffi",
"sha256": "289279317b4b16eb2bb7e271abccd4bf84ec9bdcbe999e278a94b804f5630418",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "2.1.4"
},
"file": {
"dependency": "transitive",
"description": {
"name": "file",
"sha256": "a3b4f84adafef897088c160faf7dfffb7696046cb13ae90b508c2cbc95d3b8d4",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "7.0.1"
},
"frontend_server_client": {
"dependency": "transitive",
"description": {
"name": "frontend_server_client",
"sha256": "f64a0333a82f30b0cca061bc3d143813a486dc086b574bfb233b7c1372427694",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "4.0.0"
},
"glob": {
"dependency": "transitive",
"description": {
"name": "glob",
"sha256": "c3f1ee72c96f8f78935e18aa8cecced9ab132419e8625dc187e1c2408efc20de",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "2.1.3"
},
"http_multi_server": {
"dependency": "transitive",
"description": {
"name": "http_multi_server",
"sha256": "aa6199f908078bb1c5efb8d8638d4ae191aac11b311132c3ef48ce352fb52ef8",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "3.2.2"
},
"http_parser": {
"dependency": "transitive",
"description": {
"name": "http_parser",
"sha256": "178d74305e7866013777bab2c3d8726205dc5a4dd935297175b19a23a2e66571",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "4.1.2"
},
"io": {
"dependency": "transitive",
"description": {
"name": "io",
"sha256": "dfd5a80599cf0165756e3181807ed3e77daf6dd4137caaad72d0b7931597650b",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "1.0.5"
},
"js": {
"dependency": "transitive",
"description": {
"name": "js",
"sha256": "53385261521cc4a0c4658fd0ad07a7d14591cf8fc33abbceae306ddb974888dc",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "0.7.2"
},
"krunner": {
"dependency": "direct main",
"description": {
"name": "krunner",
"sha256": "3ed3bb599505ceb62dccc7c60dc69de85c9439aaadf42c8bccdb01edee1f474c",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "1.0.2"
},
"lints": {
"dependency": "direct dev",
"description": {
"name": "lints",
"sha256": "c35bb79562d980e9a453fc715854e1ed39e24e7d0297a880ef54e17f9874a9d7",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "5.1.1"
},
"logger": {
"dependency": "direct main",
"description": {
"name": "logger",
"sha256": "be4b23575aac7ebf01f225a241eb7f6b5641eeaf43c6a8613510fc2f8cf187d1",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "2.5.0"
},
"logging": {
"dependency": "transitive",
"description": {
"name": "logging",
"sha256": "c8245ada5f1717ed44271ed1c26b8ce85ca3228fd2ffdb75468ab01979309d61",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "1.3.0"
},
"matcher": {
"dependency": "transitive",
"description": {
"name": "matcher",
"sha256": "dc58c723c3c24bf8d3e2d3ad3f2f9d7bd9cf43ec6feaa64181775e60190153f2",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "0.12.17"
},
"meta": {
"dependency": "transitive",
"description": {
"name": "meta",
"sha256": "23f08335362185a5ea2ad3a4e597f1375e78bce8a040df5c600c8d3552ef2394",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "1.17.0"
},
"mime": {
"dependency": "transitive",
"description": {
"name": "mime",
"sha256": "41a20518f0cb1256669420fdba0cd90d21561e560ac240f26ef8322e45bb7ed6",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "2.0.0"
},
"node_preamble": {
"dependency": "transitive",
"description": {
"name": "node_preamble",
"sha256": "6e7eac89047ab8a8d26cf16127b5ed26de65209847630400f9aefd7cd5c730db",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "2.0.2"
},
"package_config": {
"dependency": "transitive",
"description": {
"name": "package_config",
"sha256": "f096c55ebb7deb7e384101542bfba8c52696c1b56fca2eb62827989ef2353bbc",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "2.2.0"
},
"path": {
"dependency": "transitive",
"description": {
"name": "path",
"sha256": "75cca69d1490965be98c73ceaea117e8a04dd21217b37b292c9ddbec0d955bc5",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "1.9.1"
},
"petitparser": {
"dependency": "transitive",
"description": {
"name": "petitparser",
"sha256": "07c8f0b1913bcde1ff0d26e57ace2f3012ccbf2b204e070290dad3bb22797646",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "6.1.0"
},
"pool": {
"dependency": "transitive",
"description": {
"name": "pool",
"sha256": "20fe868b6314b322ea036ba325e6fc0711a22948856475e2c2b6306e8ab39c2a",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "1.5.1"
},
"pub_semver": {
"dependency": "transitive",
"description": {
"name": "pub_semver",
"sha256": "5bfcf68ca79ef689f8990d1160781b4bad40a3bd5e5218ad4076ddb7f4081585",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "2.2.0"
},
"shelf": {
"dependency": "transitive",
"description": {
"name": "shelf",
"sha256": "e7dd780a7ffb623c57850b33f43309312fc863fb6aa3d276a754bb299839ef12",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "1.4.2"
},
"shelf_packages_handler": {
"dependency": "transitive",
"description": {
"name": "shelf_packages_handler",
"sha256": "89f967eca29607c933ba9571d838be31d67f53f6e4ee15147d5dc2934fee1b1e",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "3.0.2"
},
"shelf_static": {
"dependency": "transitive",
"description": {
"name": "shelf_static",
"sha256": "c87c3875f91262785dade62d135760c2c69cb217ac759485334c5857ad89f6e3",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "1.1.3"
},
"shelf_web_socket": {
"dependency": "transitive",
"description": {
"name": "shelf_web_socket",
"sha256": "3632775c8e90d6c9712f883e633716432a27758216dfb61bd86a8321c0580925",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "3.0.0"
},
"source_map_stack_trace": {
"dependency": "transitive",
"description": {
"name": "source_map_stack_trace",
"sha256": "c0713a43e323c3302c2abe2a1cc89aa057a387101ebd280371d6a6c9fa68516b",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "2.1.2"
},
"source_maps": {
"dependency": "transitive",
"description": {
"name": "source_maps",
"sha256": "190222579a448b03896e0ca6eca5998fa810fda630c1d65e2f78b3f638f54812",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "0.10.13"
},
"source_span": {
"dependency": "transitive",
"description": {
"name": "source_span",
"sha256": "254ee5351d6cb365c859e20ee823c3bb479bf4a293c22d17a9f1bf144ce86f7c",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "1.10.1"
},
"sqlite3": {
"dependency": "direct main",
"description": {
"name": "sqlite3",
"sha256": "310af39c40dd0bb2058538333c9d9840a2725ae0b9f77e4fd09ad6696aa8f66e",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "2.7.5"
},
"stack_trace": {
"dependency": "transitive",
"description": {
"name": "stack_trace",
"sha256": "8b27215b45d22309b5cddda1aa2b19bdfec9df0e765f2de506401c071d38d1b1",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "1.12.1"
},
"stream_channel": {
"dependency": "transitive",
"description": {
"name": "stream_channel",
"sha256": "969e04c80b8bcdf826f8f16579c7b14d780458bd97f56d107d3950fdbeef059d",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "2.1.4"
},
"string_scanner": {
"dependency": "transitive",
"description": {
"name": "string_scanner",
"sha256": "921cd31725b72fe181906c6a94d987c78e3b98c2e205b397ea399d4054872b43",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "1.4.1"
},
"term_glyph": {
"dependency": "transitive",
"description": {
"name": "term_glyph",
"sha256": "7f554798625ea768a7518313e58f83891c7f5024f88e46e7182a4558850a4b8e",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "1.2.2"
},
"test": {
"dependency": "direct dev",
"description": {
"name": "test",
"sha256": "65e29d831719be0591f7b3b1a32a3cda258ec98c58c7b25f7b84241bc31215bb",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "1.26.2"
},
"test_api": {
"dependency": "transitive",
"description": {
"name": "test_api",
"sha256": "522f00f556e73044315fa4585ec3270f1808a4b186c936e612cab0b565ff1e00",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "0.7.6"
},
"test_core": {
"dependency": "transitive",
"description": {
"name": "test_core",
"sha256": "80bf5a02b60af04b09e14f6fe68b921aad119493e26e490deaca5993fef1b05a",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "0.6.11"
},
"typed_data": {
"dependency": "transitive",
"description": {
"name": "typed_data",
"sha256": "f9049c039ebfeb4cf7a7104a675823cd72dba8297f264b6637062516699fa006",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "1.4.0"
},
"vm_service": {
"dependency": "transitive",
"description": {
"name": "vm_service",
"sha256": "ddfa8d30d89985b96407efce8acbdd124701f96741f2d981ca860662f1c0dc02",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "15.0.0"
},
"watcher": {
"dependency": "transitive",
"description": {
"name": "watcher",
"sha256": "69da27e49efa56a15f8afe8f4438c4ec02eff0a117df1b22ea4aad194fe1c104",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "1.1.1"
},
"web": {
"dependency": "transitive",
"description": {
"name": "web",
"sha256": "868d88a33d8a87b18ffc05f9f030ba328ffefba92d6c127917a2ba740f9cfe4a",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "1.1.1"
},
"web_socket": {
"dependency": "transitive",
"description": {
"name": "web_socket",
"sha256": "34d64019aa8e36bf9842ac014bb5d2f5586ca73df5e4d9bf5c936975cae6982c",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "1.0.1"
},
"web_socket_channel": {
"dependency": "transitive",
"description": {
"name": "web_socket_channel",
"sha256": "d645757fb0f4773d602444000a8131ff5d48c9e47adfe9772652dd1a4f2d45c8",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "3.0.3"
},
"webkit_inspection_protocol": {
"dependency": "transitive",
"description": {
"name": "webkit_inspection_protocol",
"sha256": "87d3f2333bb240704cd3f1c6b5b7acd8a10e7f0bc28c28dcf14e782014f4a572",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "1.2.1"
},
"xdg_desktop_portal": {
"dependency": "direct main",
"description": {
"name": "xdg_desktop_portal",
"sha256": "10d56d2212bfa33a676d209b312a82fe5862fed5a91d2cfcb39143da75d084c1",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "0.1.13"
},
"xdg_directories": {
"dependency": "direct main",
"description": {
"name": "xdg_directories",
"sha256": "7a3f37b05d989967cdddcbb571f1ea834867ae2faa29725fd085180e0883aa15",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "1.1.0"
},
"xml": {
"dependency": "transitive",
"description": {
"name": "xml",
"sha256": "b015a8ad1c488f66851d762d3090a21c600e479dc75e68328c52774040cf9226",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "6.5.0"
},
"yaml": {
"dependency": "transitive",
"description": {
"name": "yaml",
"sha256": "b9da305ac7c39faa3f030eccd175340f968459dae4af175130b3fc47e40d76ce",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "3.1.3"
}
},
"sdks": {
"dart": ">=3.7.0 <4.0.0"
}
}

View File

@@ -0,0 +1,34 @@
#!/usr/bin/env nix-shell
#!nix-shell -i bash -p yq jq common-updater-scripts dart
set -xeu -o pipefail
PACKAGE_DIR="$(realpath "$(dirname "$0")")"
cd "$PACKAGE_DIR/.."
while ! test -f flake.nix; do cd ..; done
NIXPKGS_DIR="$PWD"
# Get latest version number from GitHub
version="$(
curl --silent https://api.github.com/repos/Merrit/vscode-runner/releases/latest |
jq '.tag_name | ltrimstr("v")' --raw-output
)"
# Update to latest version
cd "$NIXPKGS_DIR"
update-source-version vscode-runner "$version"
# Create new pubspec.lock.json
TMPDIR="$(mktemp -d)"
cd "$TMPDIR"
src=$(nix-build --no-link "$NIXPKGS_DIR" -A vscode-runner.src)
cp $src/pubspec.* .
if ! test -f pubspec.lock; then
dart pub update
fi
yq . pubspec.lock > "$PACKAGE_DIR/pubspec.lock.json"
rm -rf "$TMPDIR"

View File

@@ -0,0 +1,35 @@
{
lib,
buildNpmPackage,
fetchFromGitHub,
pkg-config,
libsecret,
}:
buildNpmPackage {
pname = "solidity-language-server";
version = "0.0.185";
src = fetchFromGitHub {
owner = "juanfranblanco";
repo = "vscode-solidity";
rev = "5198201a23874e79248e6b09558ca30e5bf5cdcf";
hash = "sha256-GHa2VbMyYn0FXEhd1my0851rbtoWtlOGmsAF6JDzLkc=";
};
npmDepsHash = "sha256-zXhWtPuiu+CRk712KskuHP4vglogJmFoCak6qWczPFM=";
nativeBuildInputs = [ pkg-config ];
buildInputs = [ libsecret ];
npmBuildScript = "build:cli";
meta = {
description = "Language Server for solidity code";
homepage = "https://github.com/juanfranblanco/vscode-solidity";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ rookeur ];
mainProgram = "solidity-language-server";
};
}

View File

@@ -0,0 +1,104 @@
Description: CVE-2015-1419: config option deny_file is not handled correctly
Author: Marcus Meissner <meissner@suse.com>
Origin: https://bugzilla.novell.com/show_bug.cgi?id=CVE-2015-1419
Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=776922
Last-Update: 2015-02-24
---
This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
Index: trunk/ls.c
===================================================================
--- trunk.orig/ls.c
+++ trunk/ls.c
@@ -7,6 +7,7 @@
* Would you believe, code to handle directory listing.
*/
+#include <stdlib.h>
#include "ls.h"
#include "access.h"
#include "defs.h"
@@ -243,11 +244,42 @@ vsf_filename_passes_filter(const struct
struct mystr temp_str = INIT_MYSTR;
struct mystr brace_list_str = INIT_MYSTR;
struct mystr new_filter_str = INIT_MYSTR;
+ struct mystr normalize_filename_str = INIT_MYSTR;
+ const char *normname;
+ const char *path;
int ret = 0;
char last_token = 0;
int must_match_at_current_pos = 1;
+
str_copy(&filter_remain_str, p_filter_str);
- str_copy(&name_remain_str, p_filename_str);
+
+ /* normalize filepath */
+ path = str_strdup(p_filename_str);
+ normname = realpath(path, NULL);
+ if (normname == NULL)
+ goto out;
+ str_alloc_text(&normalize_filename_str, normname);
+
+ if (!str_isempty (&filter_remain_str) && !str_isempty(&normalize_filename_str)) {
+ if (str_get_char_at(p_filter_str, 0) == '/') {
+ if (str_get_char_at(&normalize_filename_str, 0) != '/') {
+ str_getcwd (&name_remain_str);
+
+ if (str_getlen(&name_remain_str) > 1) /* cwd != root dir */
+ str_append_char (&name_remain_str, '/');
+
+ str_append_str (&name_remain_str, &normalize_filename_str);
+ }
+ else
+ str_copy (&name_remain_str, &normalize_filename_str);
+ } else {
+ if (str_get_char_at(p_filter_str, 0) != '{')
+ str_basename (&name_remain_str, &normalize_filename_str);
+ else
+ str_copy (&name_remain_str, &normalize_filename_str);
+ }
+ } else
+ str_copy(&name_remain_str, &normalize_filename_str);
while (!str_isempty(&filter_remain_str) && *iters < VSFTP_MATCHITERS_MAX)
{
@@ -379,6 +411,9 @@ vsf_filename_passes_filter(const struct
ret = 0;
}
out:
+ free((char*) normname);
+ free((char*) path);
+ str_free(&normalize_filename_str);
str_free(&filter_remain_str);
str_free(&name_remain_str);
str_free(&temp_str);
Index: trunk/str.c
===================================================================
--- trunk.orig/str.c
+++ trunk/str.c
@@ -723,3 +723,14 @@ str_replace_unprintable(struct mystr* p_
}
}
+void
+str_basename (struct mystr* d_str, const struct mystr* path)
+{
+ static struct mystr tmp;
+
+ str_copy (&tmp, path);
+ str_split_char_reverse(&tmp, d_str, '/');
+
+ if (str_isempty(d_str))
+ str_copy (d_str, path);
+}
Index: trunk/str.h
===================================================================
--- trunk.orig/str.h
+++ trunk/str.h
@@ -101,6 +101,7 @@ void str_replace_unprintable(struct myst
int str_atoi(const struct mystr* p_str);
filesize_t str_a_to_filesize_t(const struct mystr* p_str);
unsigned int str_octal_to_uint(const struct mystr* p_str);
+void str_basename (struct mystr* d_str, const struct mystr* path);
/* PURPOSE: Extract a line of text (delimited by \n or EOF) from a string
* buffer, starting at character position 'p_pos'. The extracted line will

View File

@@ -0,0 +1,74 @@
{
lib,
stdenv,
fetchurl,
fetchpatch,
libcap,
libseccomp,
openssl,
pam,
libxcrypt,
nixosTests,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "vsftpd";
version = "3.0.5";
src = fetchurl {
url = "https://security.appspot.com/downloads/vsftpd-${finalAttrs.version}.tar.gz";
hash = "sha256-JrYCrkVLC6bZnvRKCba54N+n9nIoEGc23x8njHC8kdM=";
};
buildInputs = [
libcap
openssl
libseccomp
pam
libxcrypt
];
patches = [
./CVE-2015-1419.patch
# Fix build with gcc15
(fetchpatch {
name = "vsftpd-correct-the-definition-of-setup_bio_callbacks-in-ssl.patch";
url = "https://src.fedoraproject.org/rpms/vsftpd/raw/c31087744900967ff4d572706a296bf6c8c4a68e/f/0076-Correct-the-definition-of-setup_bio_callbacks-in-ssl.patch";
hash = "sha256-eYiY2eKQ+qS3CiRZYGuRHcnAe32zLDdb/GwF6NyHch4=";
})
];
postPatch = ''
sed -i "/VSF_BUILD_SSL/s/^#undef/#define/" builddefs.h
substituteInPlace Makefile \
--replace -dirafter "" \
--replace /usr $out \
--replace /etc $out/etc \
--replace "-Werror" ""
mkdir -p $out/sbin $out/man/man{5,8}
'';
makeFlags = [
"CC=${stdenv.cc.targetPrefix}cc"
];
NIX_LDFLAGS = "-lcrypt -lssl -lcrypto -lpam -lcap -lseccomp";
enableParallelBuilding = true;
passthru = {
tests = { inherit (nixosTests) vsftpd; };
};
meta = {
description = "Very secure FTP daemon";
mainProgram = "vsftpd";
license = lib.licenses.gpl2Only;
maintainers = with lib.maintainers; [ peterhoeg ];
platforms = lib.platforms.linux;
};
})

View File

@@ -0,0 +1,35 @@
{
buildGoModule,
fetchFromGitHub,
lib,
}:
buildGoModule rec {
pname = "vsh";
version = "0.14.0";
src = fetchFromGitHub {
owner = "fishi0x01";
repo = "vsh";
rev = "v${version}";
sha256 = "sha256-rYltOLDmrRc3KsxR5MmpZqf+loAs1KEdPndpnhqkBDM=";
};
# vendor directory is part of repository
vendorHash = null;
# make sure version gets set at compile time
ldflags = [
"-s"
"-w"
"-X main.vshVersion=v${version}"
];
meta = with lib; {
description = "HashiCorp Vault interactive shell";
homepage = "https://github.com/fishi0x01/vsh";
license = licenses.mit;
maintainers = with maintainers; [ fishi0x01 ];
mainProgram = "vsh";
};
}

View File

@@ -0,0 +1,52 @@
{
lib,
stdenv,
pkg-config,
libtool,
autoreconfHook,
pcsclite,
libnfc,
python3,
help2man,
gengetopt,
vsmartcard-vpcd,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "vsmartcard-pcsc-relay";
inherit (vsmartcard-vpcd) version src;
sourceRoot = "${finalAttrs.src.name}/pcsc-relay";
nativeBuildInputs = [
autoreconfHook
libtool
pkg-config
help2man
];
buildInputs = [
pcsclite
libnfc
gengetopt
(python3.withPackages (
pp: with pp; [
pyscard
pycrypto
pbkdf2
pillow
gnureadline
]
))
];
meta = {
description = "Relays a smart card using an contact-less interface";
homepage = "https://frankmorgner.github.io/vsmartcard/pcsc-relay/README.html";
license = lib.licenses.gpl3Only;
platforms = lib.platforms.all;
broken = stdenv.hostPlatform.isDarwin;
maintainers = with lib.maintainers; [ stargate01 ];
};
})

View File

@@ -0,0 +1,58 @@
{
lib,
stdenv,
fetchFromGitHub,
pkg-config,
libtool,
autoreconfHook,
pcsclite,
qrencode,
python3,
help2man,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "vsmartcard-vpcd";
version = "0.9-unstable-2025-01-25";
src = fetchFromGitHub {
owner = "frankmorgner";
repo = "vsmartcard";
rev = "7369dae26bcb709845003ae2128b8db9df7031ae";
hash = "sha256-mfw/Yv12ceBVZIyAKJqBh+w4otj3rYYZbJUjKRLcsr4=";
};
sourceRoot = "${finalAttrs.src.name}/virtualsmartcard";
nativeBuildInputs = [
autoreconfHook
libtool
pkg-config
help2man
];
buildInputs = [
pcsclite
qrencode
(python3.withPackages (
pp: with pp; [
pyscard
pycrypto
pbkdf2
pillow
gnureadline
]
))
];
configureFlags = lib.optional stdenv.hostPlatform.isDarwin "--enable-infoplist";
meta = {
description = "Emulates a smart card and makes it accessible through PC/SC";
homepage = "http://frankmorgner.github.io/vsmartcard/virtualsmartcard/README.html";
license = lib.licenses.gpl3Only;
platforms = lib.platforms.all;
broken = stdenv.hostPlatform.isDarwin;
maintainers = with lib.maintainers; [ stargate01 ];
};
})

View File

@@ -0,0 +1,36 @@
{
lib,
stdenv,
fetchurl,
boost,
sqlite,
}:
stdenv.mkDerivation rec {
pname = "vsqlite";
version = "0.3.13";
src = fetchurl {
url = "https://evilissimo.fedorapeople.org/releases/vsqlite--/0.3.13/vsqlite++-${version}.tar.gz";
sha256 = "17fkj0d2jh0xkjpcayhs1xvbnh1d69f026i7vs1zqnbiwbkpz237";
};
buildInputs = [
boost
sqlite
];
prePatch = lib.optionalString stdenv.hostPlatform.isDarwin ''
substituteInPlace Makefile.in \
--replace '-Wl,--as-needed' "" \
--replace '-Wl,-soname -Wl,libvsqlitepp.so.3' \
"-Wl,-install_name,$out/lib/libvsqlitepp.3.dylib"
'';
meta = with lib; {
homepage = "https://vsqlite.virtuosic-bytes.com/";
description = "C++ wrapper library for sqlite";
license = licenses.bsd3;
platforms = platforms.unix;
};
}

View File

@@ -0,0 +1,26 @@
{
lib,
fetchzip,
}:
fetchzip rec {
name = "vst2-sdk-${version}"; # cannot be `pname`, as `fetchzip` expects `name`
version = "2018-06-11";
url = "https://web.archive.org/web/20181016150224if_/https://download.steinberg.net/sdk_downloads/vstsdk3610_11_06_2018_build_37.zip";
hash = "sha256-TyPy8FsXWB8LRz0yr38t3d5xxAxGufAn0dsyrg1JXBA=";
# Only keep the VST2_SDK directory
stripRoot = false;
postFetch = ''
mv $out/VST_SDK/VST2_SDK/* $out/
rm -rf $out/VST_SDK
'';
meta = {
description = "VST2 source development kit";
longDescription = ''
VST2 is proprietary, and deprecated by Steinberg.
As such, it should only be used for legacy reasons.
'';
license = [ lib.licenses.unfree ];
};
}