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,70 @@
{
lib,
rustPlatform,
fetchFromGitHub,
pkg-config,
atk,
cairo,
gdk-pixbuf,
glib,
gtk3,
openssl,
pango,
}:
rustPlatform.buildRustPackage rec {
pname = "noaa-apt";
version = "1.4.0";
src = fetchFromGitHub {
owner = "martinber";
repo = "noaa-apt";
rev = "v${version}";
sha256 = "sha256-wmjglF2+BFmlTfvqt90nbCxuldN8AEFXj7y9tgTvA2Y=";
};
nativeBuildInputs = [
pkg-config
];
buildInputs = [
atk
cairo
gdk-pixbuf
glib
gtk3
openssl
pango
];
cargoHash = "sha256-du44N+G9/nN5YuOpkWXvr1VaSQfjCpZYJ8yDc48ATIU=";
preBuild = ''
# Used by macro pointing to resource location at compile time.
export NOAA_APT_RES_DIR=$out/share/noaa-apt
'';
postInstall = ''
# Resources.
mkdir -p $out/share/noaa-apt
cp -R $src/res/* $out/share/noaa-apt/
# Desktop icon.
install -Dm644 -t $out/share/applications $src/debian/ar.com.mbernardi.noaa-apt.desktop
install -Dm644 -t $out/share/icons/hicolor/48x48/apps $src/debian/ar.com.mbernardi.noaa-apt.png
install -Dm644 -t $out/share/icons/hicolor/scalable/apps $src/debian/ar.com.mbernardi.noaa-apt.svg
'';
meta = {
description = "NOAA APT image decoder";
homepage = "https://noaa-apt.mbernardi.com.ar/";
license = lib.licenses.gpl3Only;
maintainers = with lib.maintainers; [
trepetti
tmarkus
];
platforms = lib.platforms.all;
changelog = "https://github.com/martinber/noaa-apt/releases/tag/v${version}";
mainProgram = "noaa-apt";
};
}

View File

@@ -0,0 +1,42 @@
{
lib,
buildNpmPackage,
fetchFromGitHub,
fetchurl,
nix-update-script,
versionCheckHook,
}:
buildNpmPackage (finalAttrs: {
pname = "node-core-utils";
version = "5.15.0";
src = fetchFromGitHub {
owner = "nodejs";
repo = "node-core-utils";
tag = "v${finalAttrs.version}";
hash = "sha256-yY3EGSBdMpvUIq8UgeEcAm1RIaaNtZxCVp6TlycYjoY=";
};
npmDepsHash = "sha256-VIkJHEGlJqweNVkx3WfLMiDOQRSPtwpJBfJ3vKHv4YM=";
dontNpmBuild = true;
dontNpmPrune = true;
npmInstallFlags = [ "--omit=dev" ];
nativeInstallCheckInputs = [
versionCheckHook
];
doInstallCheck = true;
versionCheckProgram = "${placeholder "out"}/bin/git-node";
passthru.updateScript = nix-update-script { };
meta = {
changelog = "https://github.com/${finalAttrs.src.owner}/${finalAttrs.src.repo}/blob/${finalAttrs.src.tag}/CHANGELOG.md";
description = "CLI tools for Node.js Core collaborators";
homepage = "https://github.com/nodejs/node-core-utils";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ aduh95 ];
};
})

View File

@@ -0,0 +1,30 @@
{
lib,
buildNpmPackage,
fetchFromGitHub,
}:
buildNpmPackage rec {
pname = "glob";
version = "10.3.3";
src = fetchFromGitHub {
owner = "isaacs";
repo = "node-glob";
rev = "v${version}";
hash = "sha256-oLlNhQOnu/hlKjNWa5vjqslz1EarZJOpUEXUB+vGQvc=";
};
npmDepsHash = "sha256-78oODw+CBCk5JRJbDqLqVmzTVImP7Z7o6jRIimDxZDQ=";
dontNpmBuild = true;
meta = {
changelog = "https://github.com/isaacs/node-glob/blob/${src.rev}/changelog.md";
description = "Little globber for Node.js";
homepage = "https://github.com/isaacs/node-glob";
license = lib.licenses.isc;
mainProgram = "glob";
maintainers = [ ];
};
}

5351
pkgs/by-name/no/node-gyp/package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,44 @@
{
stdenv,
buildNpmPackage,
fetchFromGitHub,
lib,
nodejs,
}:
(buildNpmPackage.override { inherit nodejs; }) rec {
pname = "node-gyp";
version = "11.4.2";
src = fetchFromGitHub {
owner = "nodejs";
repo = "node-gyp";
tag = "v${version}";
hash = "sha256-IoW71RdjQRfIEr6Nh+xqDsgf28WhQ7vHTS1BB++3mdU=";
};
npmDepsHash = "sha256-ixAelIVTKlTmXiXLA2iI9vJ/gp79wpd+wRvspUqEci4=";
postPatch = ''
ln -s ${./package-lock.json} package-lock.json
substituteInPlace gyp/pylib/gyp/**.py \
--replace-quiet sys.platform '"${stdenv.targetPlatform.parsed.kernel.name}"'
'';
dontNpmBuild = true;
# Teach node-gyp to use nodejs headers locally rather that download them form https://nodejs.org.
# This is important when build nodejs packages in sandbox.
makeWrapperArgs = [ "--set npm_config_nodedir ${nodejs}" ];
passthru.updateScript = ./update.sh;
meta = {
changelog = "https://github.com/nodejs/node-gyp/blob/${src.rev}/CHANGELOG.md";
description = "Node.js native addon build tool";
homepage = "https://github.com/nodejs/node-gyp";
license = lib.licenses.mit;
mainProgram = "node-gyp";
maintainers = with lib.maintainers; [ dotlambda ];
};
}

View File

@@ -0,0 +1,26 @@
#! /usr/bin/env nix-shell
#! nix-shell -i bash -p gnused jq nix-prefetch-github nodejs prefetch-npm-deps wget
set -euo pipefail
pushd "$(dirname "${BASH_SOURCE[0]}")"
version=$(npm view node-gyp version)
if [[ "$UPDATE_NIX_OLD_VERSION" == "$version" ]]; then
echo "Already up to date!"
exit 0
fi
sed -i 's#version = "[^"]*"#version = "'"$version"'"#' package.nix
src_hash=$(nix-prefetch-github nodejs node-gyp --rev "v$version" | jq --raw-output .hash)
sed -i 's#hash = "[^"]*"#hash = "'"$src_hash"'"#' package.nix
rm -f package-lock.json package.json
wget "https://github.com/nodejs/node-gyp/raw/v$version/package.json"
npm i --package-lock-only --ignore-scripts
npm_hash=$(prefetch-npm-deps package-lock.json)
sed -i 's#npmDepsHash = "[^"]*"#npmDepsHash = "'"$npm_hash"'"#' package.nix
rm package.json
popd

View File

@@ -0,0 +1,77 @@
{
lib,
stdenv,
fetchFromGitHub,
fetchYarnDeps,
makeWrapper,
nodejs,
fixup-yarn-lock,
yarn,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "node-hp-scan-to";
version = "1.4.3";
src = fetchFromGitHub {
owner = "manuc66";
repo = "node-hp-scan-to";
rev = "v${finalAttrs.version}";
hash = "sha256-/XUqCL2F1iMYUoCbGgL9YKs+8wIFHvmh2O0LMbDU8yE=";
};
offlineCache = fetchYarnDeps {
yarnLock = "${finalAttrs.src}/yarn.lock";
hash = "sha256-pxeYumHuomOFyCi8XhYTYQNcsGOUvjOg36bFD0yhdLk=";
};
nativeBuildInputs = [
makeWrapper
nodejs
fixup-yarn-lock
yarn
];
configurePhase = ''
runHook preConfigure
export HOME=$(mktemp -d)
yarn config --offline set yarn-offline-mirror $offlineCache
fixup-yarn-lock yarn.lock
yarn --offline --frozen-lockfile --ignore-platform --ignore-scripts --no-progress --non-interactive install
patchShebangs node_modules
runHook postConfigure
'';
buildPhase = ''
runHook preBuild
yarn --offline build
runHook postBuild
'';
installPhase = ''
runHook preInstall
yarn --offline --production install
mkdir -p "$out/lib/node_modules/node-hp-scan-to"
cp -r dist node_modules package.json "$out/lib/node_modules/node-hp-scan-to"
makeWrapper "${nodejs}/bin/node" "$out/bin/node-hp-scan-to" \
--add-flags "$out/lib/node_modules/node-hp-scan-to/dist/index.js"
runHook postInstall
'';
meta = {
changelog = "https://github.com/manuc66/node-hp-scan-to/releases/tag/${finalAttrs.src.rev}";
description = "Allow to send scan from device to computer for some HP All-in-One Printers";
homepage = "https://github.com/manuc66/node-hp-scan-to";
license = lib.licenses.mit;
mainProgram = "node-hp-scan-to";
maintainers = with lib.maintainers; [ jonas-w ];
};
})

View File

@@ -0,0 +1,59 @@
{
lib,
buildNpmPackage,
fetchFromGitHub,
installShellFiles,
testers,
node-manta,
}:
buildNpmPackage rec {
pname = "manta";
version = "5.4.2";
src = fetchFromGitHub {
owner = "TritonDataCenter";
repo = "node-manta";
rev = "v${version}";
hash = "sha256-Uj3fNzeERiO++sW2uyAbtfN/1Ed6uRVBBvCecncq/QY=";
};
npmDepsHash = "sha256-Xk/K90K+X73ZTV6u2GJij8815GdBn6igXmpWLaCfKF4=";
dontBuild = true;
nativeBuildInputs = [ installShellFiles ];
postInstall = ''
ln -s ./lib/node_modules/manta/bin $out/bin
'';
postFixup = ''
# create completions, following upstream procedure https://github.com/joyent/node-manta/blob/v5.4.1/Makefile#L85-L91
cmds=$(find ./bin/ -type f -printf "%f\n")
node $out/lib/node_modules/manta/lib/create_client.js
for cmd in $cmds; do
installShellCompletion --cmd $cmd --bash <($out/bin/$cmd --completion)
# Strip timestamp from generated bash completion
sed -i '/Bash completion generated.*/d' $out/share/bash-completion/completions/$cmd.bash
done
'';
passthru = {
tests.version = testers.testVersion {
package = node-manta;
};
};
meta = {
description = "Manta Object-Storage Client CLIs and Node.js SDK";
homepage = "https://github.com/TritonDataCenter/node-manta";
changelog = "https://github.com/TritonDataCenter/node-manta/blob/v${version}/CHANGES.md";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ teutat3s ];
mainProgram = "mls";
};
}

View File

@@ -0,0 +1,35 @@
{
buildNpmPackage,
fetchFromGitHub,
lib,
}:
buildNpmPackage rec {
pname = "node-pre-gyp";
version = "2.0.1";
src = fetchFromGitHub {
owner = "mapbox";
repo = "node-pre-gyp";
tag = "v${version}";
hash = "sha256-9MADe6oY28MBAdQsu/ddVveZYwD4xeVNKUffhcvK+Q0=";
};
npmDepsHash = "sha256-yNu66HlkOVsYv60saTf7M4QuN9B2euYFu5WB7UAwhUw=";
dontNpmBuild = true;
postInstall = ''
mv $out/bin/@mapbox/node-pre-gyp $out/bin
rmdir $out/bin/@mapbox
'';
meta = {
changelog = "https://github.com/mapbox/node-pre-gyp/blob/${src.rev}/CHANGELOG.md";
description = "Node.js tool for easy binary deployment of C++ addons";
homepage = "https://github.com/mapbox/node-pre-gyp";
license = lib.licenses.bsd3;
mainProgram = "node-pre-gyp";
maintainers = with lib.maintainers; [ dotlambda ];
};
}

View File

@@ -0,0 +1,52 @@
{
lib,
stdenv,
buildGoModule,
fetchFromGitHub,
systemd,
}:
buildGoModule rec {
pname = "node-problem-detector";
version = "0.8.21";
src = fetchFromGitHub {
owner = "kubernetes";
repo = "node-problem-detector";
rev = "v${version}";
sha256 = "sha256-byxj6EXKAmesFOBtBt0URcT0h1pYdrW8ewtITuEPFcs=";
};
vendorHash = null;
doCheck = false;
# Optionally, a log counter binary can be created to parse journald logs.
# The binary is dynamically linked against systemd libraries, making it a
# Linux-only feature. See 'ENABLE_JOURNALD' upstream:
# https://github.com/kubernetes/node-problem-detector/blob/master/Makefile
subPackages = [
"cmd/nodeproblemdetector"
]
++ lib.optionals stdenv.hostPlatform.isLinux [ "cmd/logcounter" ];
preBuild = ''
export CGO_ENABLED=${if stdenv.hostPlatform.isLinux then "1" else "0"}
'';
buildInputs = lib.optionals stdenv.hostPlatform.isLinux [ systemd ];
tags = lib.optionals stdenv.hostPlatform.isLinux [ "journald" ];
ldflags = [
"-X k8s.io/node-problem-detector/pkg/version.version=v${version}"
];
meta = {
description = "Various problem detectors running on the Kubernetes nodes";
homepage = "https://github.com/kubernetes/node-problem-detector";
changelog = "https://github.com/kubernetes/node-problem-detector/releases/tag/v${version}";
license = lib.licenses.asl20;
maintainers = with lib.maintainers; [ lbpdt ];
};
}

11926
pkgs/by-name/no/node-red/package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,50 @@
{
buildNpmPackage,
fetchFromGitHub,
jq,
lib,
nixosTests,
}:
buildNpmPackage rec {
pname = "node-red";
version = "4.1.0";
src = fetchFromGitHub {
owner = "node-red";
repo = "node-red";
tag = version;
hash = "sha256-MBuWVrN5KNUSNRMZTrDwkQjf3E7BPpnYZL0LKSd6dvU=";
};
npmDepsHash = "sha256-FV+41HMggMMadRQG/jVnTkp4ycAthp+a4QPrTRhuris=";
postPatch =
let
packageDir = "packages/node_modules/node-red";
in
''
ln -s ${./package-lock.json} package-lock.json
${lib.getExe jq} '. += {"bin": {"node-red": "${packageDir}/red.js", "node-red-pi": "${packageDir}/bin/node-red-pi"}}' package.json > package.json.tmp
mv package.json.tmp package.json
'';
makeCacheWritable = true;
passthru = {
tests = {
inherit (nixosTests) node-red;
};
updateScript = ./update.sh;
};
meta = {
changelog = "https://github.com/node-red/node-red/blob/${src.rev}/CHANGELOG.md";
description = "Low-code programming for event-driven applications";
homepage = "https://nodered.org/";
license = lib.licenses.asl20;
mainProgram = "node-red";
maintainers = with lib.maintainers; [ matthewcroughan ];
};
}

View File

@@ -0,0 +1,21 @@
#! /usr/bin/env nix-shell
#! nix-shell -i bash -p curl nix-update prefetch-npm-deps nodejs jq gnused
set -eu -o pipefail
pushd "$(dirname "${BASH_SOURCE[0]}")"
tag=$(curl -sfL ${GITHUB_TOKEN:+-u ":$GITHUB_TOKEN"} https://api.github.com/repos/node-red/node-red/releases/latest | jq -r .tag_name)
curl -sfL ${GITHUB_TOKEN:+-u ":$GITHUB_TOKEN"} "https://github.com/node-red/node-red/raw/refs/tags/$tag/package.json" > package.json
rm package-lock.json
npm i --package-lock-only
npm_hash=$(prefetch-npm-deps package-lock.json)
sed -i "s|npmDepsHash = \".*\";|npmDepsHash = \"$npm_hash\";|" package.nix
rm package.json
popd
nix-update node-red --version "$tag"

View File

@@ -0,0 +1,4 @@
{
python3Packages,
}:
python3Packages.toPythonApplication python3Packages.nodeenv

View File

@@ -0,0 +1,72 @@
{
buildNpmPackage,
cctools,
fetchFromGitHub,
lib,
node-gyp,
nodejs,
python3,
stdenv,
}:
buildNpmPackage {
pname = "nodehun";
version = "3.0.2";
src = fetchFromGitHub {
owner = "Wulf";
repo = "nodehun";
rev = "03c9dcf1fcd965031a68553ccaf6487d1fe87f79";
hash = "sha256-MoY95lSIQK1K4aIlMdPm93YxJuez9HYx2zlUhHvDao0=";
};
patches = [
# Remove the dependency on "nodemon", which is only needed for interactive
# development. This package depends on fsevents on macOS, which has
# repeatedly caused build problems. This patch is generated by checking out
# the upstream source and removing the "nodemon" line, and then running
#
# npm install --lockfile-version 1
./remove-nodemon.patch
];
npmDepsHash = "sha256-GyNUPgLJhdjzbIpld916/l8durIw0aQRHojjSmGgEJE=";
nativeBuildInputs = [
node-gyp
python3
]
++ lib.optionals stdenv.hostPlatform.isDarwin [ cctools ];
postInstall = ''
# Only keep the necessary parts of build/Release to reduce closure size
cd $out/lib/node_modules/nodehun
mv build build_old
mkdir build
cp -r build_old/Release build/
rm -rf build_old
rm -rf build/Release/.deps
# Remove a development script to eliminate runtime dependency on node
rm node_modules/node-addon-api/tools/conversion.js
# Remove dangling symlinks
rm -rf $out/lib/node_modules/nodehun/node_modules/.bin
'';
doInstallCheck = true;
nativeCheckInputs = [ nodejs ];
postInstallCheck = ''
# Smoke check: require() works
export NODE_PATH=$out/lib/node_modules
echo 'require("nodehun")' | node -
'';
disallowedReferences = [ nodejs ];
meta = with lib; {
description = "Hunspell binding for NodeJS that exposes as much of Hunspell as possible and also adds new features";
homepage = "https://github.com/Wulf/nodehun";
license = licenses.mit;
maintainers = [ maintainers.thomasjm ];
};
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,36 @@
{
lib,
fetchFromGitea,
buildGoModule,
}:
buildGoModule rec {
pname = "nodeinfo";
version = "1.0.0";
vendorHash = "sha256-P0klk3YWa2qprCUNUjiuF+Akxh246WCu4vwUAZmSDCw=";
src = fetchFromGitea {
domain = "codeberg.org";
owner = "thefederationinfo";
repo = "nodeinfo-go";
rev = "refs/tags/v${version}";
hash = "sha256-XwK3QeVDQMZD5G79XPJTAJyilVgYFVgZORHYTBI0gIQ=";
};
modRoot = "./cli";
tags = [ "extension" ];
ldflags = [
"-s"
"-w"
];
env.CGO_ENABLED = 0;
meta = {
mainProgram = "nodeinfo";
description = "Command line tool to query nodeinfo based on a given domain";
homepage = "https://codeberg.org/thefederationinfo/nodeinfo-go";
changelog = "https://codeberg.org/thefederationinfo/nodeinfo-go/releases/tag/v${version}";
license = lib.licenses.mit;
maintainers = [ lib.maintainers._6543 ];
};
}

View File

@@ -0,0 +1,27 @@
# shellcheck shell=bash
nodejsInstallExecutables() {
local -r packageJson="${1-./package.json}"
local -r packageOut="$out/lib/node_modules/$(@jq@ --raw-output '.name' package.json)"
# Based on code from Python's buildPythonPackage wrap.sh script, for
# supporting both the case when makeWrapperArgs is an array and a
# IFS-separated string.
#
# TODO: remove the string branch when __structuredAttrs are used.
if [[ "${makeWrapperArgs+defined}" == "defined" && "$(declare -p makeWrapperArgs)" =~ ^'declare -a makeWrapperArgs=' ]]; then
local -a user_args=("${makeWrapperArgs[@]}")
else
local -a user_args="(${makeWrapperArgs:-})"
fi
while IFS=" " read -ra bin; do
mkdir -p "$out/bin"
makeWrapper @hostNode@ "$out/bin/${bin[0]}" --add-flags "$packageOut/${bin[1]}" "${user_args[@]}"
done < <(@jq@ --raw-output '(.bin | type) as $typ | if $typ == "string" then
.name + " " + .bin
elif $typ == "object" then .bin | to_entries | map(.key + " " + .value) | join("\n")
elif $typ == "null" then empty
else "invalid type " + $typ | halt_error end' "$packageJson")
}

View File

@@ -0,0 +1,19 @@
{
makeSetupHook,
installShellFiles,
makeWrapper,
nodejs,
jq,
}:
makeSetupHook {
name = "nodejs-install-executables";
propagatedBuildInputs = [
installShellFiles
makeWrapper
];
substitutions = {
hostNode = "${nodejs}/bin/node";
jq = "${jq}/bin/jq";
};
} ./hook.sh

View File

@@ -0,0 +1,14 @@
# shellcheck shell=bash
nodejsInstallManuals() {
local -r packageJson="${1-./package.json}"
local -r packageOut="$out/lib/node_modules/$(@jq@ --raw-output '.name' package.json)"
while IFS= read -r man; do
installManPage "$packageOut/$man"
done < <(@jq@ --raw-output '(.man | type) as $typ | if $typ == "string" then .man
elif $typ == "list" then .man | join("\n")
elif $typ == "null" then empty
else "invalid type " + $typ | halt_error end' "$packageJson")
}

View File

@@ -0,0 +1,13 @@
{
makeSetupHook,
installShellFiles,
jq,
}:
makeSetupHook {
name = "nodejs-install-manuals";
propagatedBuildInputs = [ installShellFiles ];
substitutions = {
jq = "${jq}/bin/jq";
};
} ./hook.sh

View File

@@ -0,0 +1,32 @@
{
lib,
buildNpmPackage,
fetchFromGitHub,
nix-update-script,
}:
buildNpmPackage rec {
pname = "nodemon";
version = "3.1.10";
src = fetchFromGitHub {
owner = "remy";
repo = "nodemon";
rev = "v${version}";
hash = "sha256-wr/HNa+iqHhlE/Qp62d1EgcwA6hsv8CsJg9NLgEa15g=";
};
npmDepsHash = "sha256-cZHfaUWhKZYKRe4Foc2UymZ8hTPrGLzlcXe1gMsW1pU=";
dontNpmBuild = true;
passthru.updateScript = nix-update-script { };
meta = {
description = "Simple monitor script for use during development of a Node.js app";
mainProgram = "nodemon";
homepage = "https://nodemon.io";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ pyrox0 ];
};
}

View File

@@ -0,0 +1,46 @@
{
stdenv,
lib,
fetchFromGitHub,
}:
stdenv.mkDerivation rec {
pname = "nodenv";
version = "1.5.0";
src = fetchFromGitHub {
owner = "nodenv";
repo = "nodenv";
rev = "v${version}";
sha256 = "sha256-PGeZKL7qsffMAZIsCLB244Fuu48GyWw5Rh67ePu6h38=";
};
buildPhase = ''
runHook preBuild
bash src/configure
make -C src
runHook postBuild
'';
installPhase = ''
runHook preInstall
mkdir -p $out
cp -r libexec $out/
cp -r bin $out/
runHook postInstall
'';
meta = {
description = "Manage multiple NodeJS versions";
mainProgram = "nodenv";
homepage = "https://github.com/nodenv/nodenv/";
changelog = "https://github.com/nodenv/nodenv/releases/tag/v${version}";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ alexnortung ];
platforms = lib.platforms.unix;
};
}

View File

@@ -0,0 +1,37 @@
{
lib,
python3Packages,
fetchFromGitHub,
nix-update-script,
}:
python3Packages.buildPythonApplication rec {
pname = "nodezator";
version = "1.5.4";
pyproject = true;
src = fetchFromGitHub {
owner = "IndieSmiths";
repo = "nodezator";
tag = "v${version}";
hash = "sha256-kdkOAJB7cVaayJOzof7dV9EBczEoEKXzCM7TcY8Ex5g=";
};
build-system = with python3Packages; [ setuptools ];
dependencies = with python3Packages; [
pygame-ce
numpy
];
passthru.updateScript = nix-update-script { };
meta = {
description = "Generalist Python node editor";
homepage = "https://nodezator.com";
downloadPage = "https://github.com/IndiePython/nodezator";
changelog = "https://github.com/IndiePython/nodezator/releases/tag/v${version}";
license = lib.licenses.unlicense;
maintainers = with lib.maintainers; [ theobori ];
mainProgram = "nodezator";
};
}

View File

@@ -0,0 +1,36 @@
{
lib,
rustPlatform,
fetchFromGitHub,
dbus,
pkg-config,
}:
rustPlatform.buildRustPackage rec {
pname = "nofi";
version = "0.2.4";
src = fetchFromGitHub {
owner = "ellsclytn";
repo = "nofi";
rev = "v${version}";
hash = "sha256-hQYIcyNCxb8qVpseNsmjyPxlwbMxDpXeZ+H1vpv62rQ=";
};
cargoHash = "sha256-dWqMwS0TgspZqlpi8hhwtA7sbqGunw0FIqjJXOTiFKA=";
nativeBuildInputs = [ pkg-config ];
buildInputs = [ dbus ];
meta = {
description = "Interruption-free notification system for Linux";
homepage = "https://github.com/ellsclytn/nofi/";
changelog = "https://github.com/ellsclytn/nofi/raw/v${version}/CHANGELOG.md";
license = [
lib.licenses.asl20 # or
lib.licenses.mit
];
mainProgram = "nofi";
maintainers = [ lib.maintainers.magnetophon ];
};
}

View File

@@ -0,0 +1,45 @@
{
lib,
stdenv,
fetchgit,
ncurses,
conf ? null,
}:
stdenv.mkDerivation rec {
pname = "noice";
version = "0.8";
src = fetchgit {
url = "git://git.2f30.org/noice.git";
tag = "v${version}";
sha256 = "0975j4m93s9a21pazwdzn4gqhkngwq7q6ghp0q8a75r6c4fb7aar";
};
postPatch = ''
# Add support for ncurses-6.3. Can be dropped with 0.9 release.
# Fixed upstream at: https://git.2f30.org/noice/commit/53c35e6b340b7c135038e00057a198f03cb7d7cf.html
substituteInPlace noice.c --replace 'printw(str);' 'printw("%s", str);'
'';
configFile = lib.optionalString (conf != null) (builtins.toFile "config.def.h" conf);
preBuild = lib.optionalString (conf != null) "cp ${configFile} config.def.h";
buildInputs = [ ncurses ];
buildFlags = [ "LDLIBS=-lncurses" ];
installFlags = [
"DESTDIR=$(out)"
"PREFIX="
];
meta = with lib; {
description = "Small ncurses-based file browser";
homepage = "https://git.2f30.org/noice/";
license = licenses.bsd2;
platforms = platforms.all;
maintainers = [ ];
mainProgram = "noice";
};
}

View File

@@ -0,0 +1,26 @@
{
lib,
rustPlatform,
fetchurl,
}:
rustPlatform.buildRustPackage (finalAttrs: {
pname = "noip";
version = "3.3.0";
src = fetchurl {
url = "https://dmej8g5cpdyqd.cloudfront.net/downloads/noip-duc_${finalAttrs.version}.tar.gz";
hash = "sha256-e50Wv0dF4/8zp/z2Xp9x4YYWIbAcQ8U8OXoNAE/1ADA=";
};
cargoHash = "sha256-IX1VrUvix50fFW9Pr6VxrpIhBBTkUuoNH+lXnA41I/4=";
meta = {
description = "Dynamic DNS daemon for no-ip accounts";
homepage = "http://noip.com/download?page=linux";
license = lib.licenses.gpl2Plus;
maintainers = [ lib.maintainers.iand675 ];
platforms = lib.platforms.linux;
mainProgram = "noip-duc";
};
})

View File

@@ -0,0 +1,47 @@
{
lib,
stdenv,
fetchFromGitHub,
meson,
ninja,
pkg-config,
cmake,
libspecbleach,
lv2,
}:
stdenv.mkDerivation rec {
pname = "noise-repellent";
version = "0.2.3";
src = fetchFromGitHub {
owner = "lucianodato";
repo = "noise-repellent";
rev = "v${version}";
sha256 = "sha256-d8csYC3z3vXdmN/G6mAK+H8ia0vOCsoUpoA3W8/OADc=";
};
mesonFlags = [
"--prefix=${placeholder "out"}/lib/lv2"
"--buildtype=release"
];
nativeBuildInputs = [
meson
ninja
pkg-config
cmake
];
buildInputs = [
libspecbleach
lv2
];
meta = with lib; {
description = "LV2 plugin for broadband noise reduction";
homepage = "https://github.com/lucianodato/noise-repellent";
license = licenses.gpl3;
maintainers = [ maintainers.magnetophon ];
platforms = platforms.unix;
};
}

View File

@@ -0,0 +1,54 @@
{
lib,
buildGoModule,
fetchFromGitHub,
}:
buildGoModule rec {
pname = "NoiseTorch";
version = "0.12.2";
src = fetchFromGitHub {
owner = "noisetorch";
repo = "NoiseTorch";
tag = "v${version}";
fetchSubmodules = true;
hash = "sha256-gOPSMPH99Upi/30OnAdwSb7SaMV0i/uHB051cclfz6A=";
};
vendorHash = null;
doCheck = false;
ldflags = [
"-s"
"-w"
"-X main.version=${version}"
"-X main.distribution=nixpkgs"
];
subPackages = [ "." ];
preBuild = ''
make -C c/ladspa/
go generate
rm ./scripts/*
'';
postInstall = ''
install -D ./assets/icon/noisetorch.png $out/share/icons/hicolor/256x256/apps/noisetorch.png
install -Dm444 ./assets/noisetorch.desktop $out/share/applications/noisetorch.desktop
'';
meta = with lib; {
description = "Virtual microphone device with noise supression for PulseAudio";
homepage = "https://github.com/noisetorch/NoiseTorch";
license = licenses.gpl3Plus;
platforms = platforms.linux;
maintainers = with maintainers; [
panaeon
lom
];
mainProgram = "noisetorch";
};
}

View File

@@ -0,0 +1,38 @@
{
lib,
buildGoModule,
fetchFromGitHub,
nix-update-script,
}:
buildGoModule rec {
pname = "nom";
version = "2.16.2";
src = fetchFromGitHub {
owner = "guyfedwards";
repo = "nom";
tag = "v${version}";
hash = "sha256-4CpvhcMP71dC1nDpvM9P6ZIeE2d2J90MNMWFYXTVaY4=";
};
vendorHash = "sha256-d5KTDZKfuzv84oMgmsjJoXGO5XYLVKxOB5XehqgRvYw=";
ldflags = [
"-X 'main.version=${version}'"
];
passthru.updateScript = nix-update-script { };
meta = {
homepage = "https://github.com/guyfedwards/nom";
changelog = "https://github.com/guyfedwards/nom/releases/tag/v${version}";
description = "RSS reader for the terminal";
platforms = lib.platforms.linux ++ lib.platforms.darwin;
license = lib.licenses.gpl3Only;
maintainers = with lib.maintainers; [
nadir-ishiguro
matthiasbeyer
];
mainProgram = "nom";
};
}

View File

@@ -0,0 +1,112 @@
{
lib,
stdenv,
file,
fetchurl,
makeWrapper,
autoPatchelfHook,
jsoncpp,
libpulseaudio,
}:
let
versionMajor = "8.13";
versionMinor = "1";
versionBuild_x86_64 = "1";
versionBuild_i686 = "1";
in
stdenv.mkDerivation rec {
pname = "nomachine-client";
version = "${versionMajor}.${versionMinor}";
src =
if stdenv.hostPlatform.system == "x86_64-linux" then
fetchurl {
url = "https://download.nomachine.com/download/${versionMajor}/Linux/nomachine_${version}_${versionBuild_x86_64}_x86_64.tar.gz";
sha256 = "sha256-8rxlxdtGU8avpvYJr+bpnsy5v91sqtlij/MCGWrcanY=";
}
else if stdenv.hostPlatform.system == "i686-linux" then
fetchurl {
url = "https://download.nomachine.com/download/${versionMajor}/Linux/nomachine_${version}_${versionBuild_i686}_i686.tar.gz";
sha256 = "sha256-Ekyxc4wODjqWhp0aINhaPGLy9lh6Rt9AmxIt1ulE8Go=";
}
else
throw "NoMachine client is not supported on ${stdenv.hostPlatform.system}";
# nxusb-legacy is only needed for kernel versions < 3
postUnpack = ''
mv $(find . -type f -name nxrunner.tar.gz) .
mv $(find . -type f -name nxplayer.tar.gz) .
rm -r NX/
tar xf nxrunner.tar.gz
tar xf nxplayer.tar.gz
rm $(find . -maxdepth 1 -type f)
rm -r NX/share/src/nxusb-legacy
rm NX/bin/nxusbd-legacy NX/lib/libnxusb-legacy.so
'';
nativeBuildInputs = [
file
makeWrapper
autoPatchelfHook
];
buildInputs = [
jsoncpp
libpulseaudio
];
installPhase = ''
rm bin/nxplayer bin/nxrunner
mkdir -p $out/NX
cp -r bin lib share $out/NX/
ln -s $out/NX/bin $out/bin
for i in share/icons/*; do
if [[ -d "$i" ]]; then
mkdir -p "$out/share/icons/hicolor/$(basename $i)/apps"
cp "$i"/* "$out/share/icons/hicolor/$(basename $i)/apps/"
fi
done
mkdir $out/share/applications
cp share/applnk/player/xdg/*.desktop $out/share/applications/
cp share/applnk/runner/xdg-mime/*.desktop $out/share/applications/
mkdir -p $out/share/mime/packages
cp share/applnk/runner/xdg-mime/*.xml $out/share/mime/packages/
for i in $out/share/applications/*.desktop; do
substituteInPlace "$i" --replace /usr/NX/bin $out/bin
done
'';
postFixup = ''
makeWrapper $out/bin/nxplayer.bin $out/bin/nxplayer --set NX_SYSTEM $out/NX
makeWrapper $out/bin/nxrunner.bin $out/bin/nxrunner --set NX_SYSTEM $out/NX
# libnxcau.so needs libpulse.so.0 for audio to work, but doesn't
# have a DT_NEEDED entry for it.
patchelf --add-needed libpulse.so.0 $out/NX/lib/libnxcau.so
'';
dontBuild = true;
dontStrip = true;
meta = with lib; {
description = "NoMachine remote desktop client (nxplayer)";
homepage = "https://www.nomachine.com/";
mainProgram = "nxplayer";
sourceProvenance = with sourceTypes; [ binaryNativeCode ];
license = {
fullName = "NoMachine 7 End-User License Agreement";
url = "https://www.nomachine.com/licensing-7";
free = false;
};
maintainers = with maintainers; [ talyz ];
platforms = [
"x86_64-linux"
"i686-linux"
];
};
}

View File

@@ -0,0 +1,122 @@
{
lib,
cmake,
exiv2,
fetchFromGitHub,
libraw,
kdePackages,
qt6,
libtiff,
opencv4,
pkg-config,
stdenv,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "nomacs";
version = "3.21.1";
hash = "sha256-RRa19vj7iTtGzdssdtHVOsDzS4X+p1HeiZKy8EIWxq8=";
src = fetchFromGitHub {
owner = "nomacs";
repo = "nomacs";
rev = finalAttrs.version;
fetchSubmodules = false; # We'll use our own
inherit (finalAttrs) hash;
};
plugins = fetchFromGitHub {
owner = "novomesk";
repo = "nomacs-plugins";
rev = "20101da282f13d3184ece873388e1c234a79b5e7";
hash = "sha256-gcRc4KoWJQ5BirhLuk+c+5HwBeyQtlJ3iyX492DXeVk=";
};
outputs = [
"out"
]
# man pages are not installed on Darwin, see cmake/{Mac,Unix}BuildTarget.cmake
++ lib.optionals (!stdenv.hostPlatform.isDarwin) [ "man" ];
sourceRoot = "${finalAttrs.src.name}/ImageLounge";
postUnpack = ''
rm -rf $sourceRoot/plugins
mkdir $sourceRoot/plugins
cp -r ${finalAttrs.plugins}/* $sourceRoot/plugins/
chmod -R +w $sourceRoot/plugins
'';
nativeBuildInputs = [
cmake
qt6.wrapQtAppsHook
pkg-config
];
buildInputs = [
exiv2
libraw
libtiff
# Once python stops relying on `propagatedBuildInputs` (https://github.com/NixOS/nixpkgs/issues/272178), deprecate `cxxdev` and switch to `dev`;
# note `dev` is selected by `mkDerivation` automatically, so one should omit `getOutput "dev"`;
# see: https://github.com/NixOS/nixpkgs/pull/314186#issuecomment-2129974277
(lib.getOutput "cxxdev" opencv4)
kdePackages.kimageformats
qt6.qtbase
qt6.qtimageformats
qt6.qtsvg
qt6.qttools
kdePackages.quazip
];
cmakeFlags = [
(lib.cmakeBool "ENABLE_OPENCV" true)
(lib.cmakeBool "ENABLE_QUAZIP" true)
(lib.cmakeBool "ENABLE_RAW" true)
(lib.cmakeBool "ENABLE_TIFF" true)
(lib.cmakeBool "ENABLE_TRANSLATIONS" true)
(lib.cmakeBool "USE_SYSTEM_QUAZIP" true)
];
postInstall = lib.optionalString stdenv.hostPlatform.isDarwin ''
mkdir -p $out/{Applications,lib}
mv $out/nomacs.app $out/Applications/nomacs.app
mv $out/libnomacsCore.dylib $out/lib/libnomacsCore.dylib
'';
# FIXME:
# why can't we have nomacs look in the "standard" plugin directory???
# None of the wrap stuff worked...
# Let's just instead move the plugin dir brute force
postFixup = ''
mv $out/lib/nomacs-plugins $out/bin/plugins
'';
meta = {
homepage = "https://nomacs.org";
description = "Qt-based image viewer";
longDescription = ''
nomacs is a free, open source image viewer, which supports multiple
platforms. You can use it for viewing all common image formats including
RAW and psd images.
nomacs features semi-transparent widgets that display additional
information such as thumbnails, metadata or histogram. It is able to
browse images in zip or MS Office files which can be extracted to a
directory. Metadata stored with the image can be displayed and you can add
notes to images. A thumbnail preview of the current folder is included as
well as a file explorer panel which allows switching between
folders. Within a directory you can apply a file filter, so that only
images are displayed whose filenames have a certain string or match a
regular expression. Activating the cache allows for instantly switching
between images.
'';
changelog = "https://github.com/nomacs/nomacs/releases/tag/${finalAttrs.src.rev}";
license = with lib.licenses; [ gpl3Plus ];
mainProgram = "nomacs";
maintainers = with lib.maintainers; [
mindavi
ppenguin
];
inherit (qt6.qtbase.meta) platforms;
};
})

View File

@@ -0,0 +1,126 @@
{
lib,
fetchFromGitHub,
buildGoModule,
buildEnv,
}:
let
package = buildGoModule rec {
pname = "nomad-autoscaler";
version = "0.3.6";
outputs = [
"out"
"bin"
"aws_asg"
"azure_vmss"
"datadog"
"fixed_value"
"gce_mig"
"nomad_apm"
"nomad_target"
"pass_through"
"prometheus"
"target_value"
"threshold"
];
src = fetchFromGitHub {
owner = "hashicorp";
repo = "nomad-autoscaler";
rev = "v${version}";
sha256 = "sha256-fK5GsszNhz/WP0zVk2lOfU/gwYijdQa5qhNYO33RhXc=";
};
vendorHash = "sha256-Duzjpl011mj/SNoX/jQGMXwqUHPDz7iIMygRmK1vC3Q=";
buildPhase = ''
runHook preBuild
make build plugins
runHook postBuild
'';
# tries to pull tests from network, and fails silently anyway
doCheck = false;
installPhase = ''
runHook preInstall
mkdir -p $bin/bin $out/bin
mv bin/nomad-autoscaler $bin/bin
ln -s $bin/bin/nomad-autoscaler $out/bin/nomad-autoscaler
for d in $(getAllOutputNames); do
mkdir -p ''${!d}/share
done
rmdir $bin/share
# have out contain all of the plugins
for plugin in bin/plugins/*; do
cp "$plugin" $out/share/
done
# populate the outputs as individual plugins
# can't think of a more generic way to handle this
# bash doesn't allow for dashes '-' to be in a variable name
# this means that the output names will need to differ slightly from the binary
mv bin/plugins/aws-asg $aws_asg/share/
mv bin/plugins/azure-vmss $azure_vmss/share/
mv bin/plugins/datadog $datadog/share/
mv bin/plugins/fixed-value $fixed_value/share/
mv bin/plugins/gce-mig $gce_mig/share/
mv bin/plugins/nomad-apm $nomad_apm/share/
mv bin/plugins/nomad-target $nomad_target/share/
mv bin/plugins/pass-through $pass_through/share/
mv bin/plugins/prometheus $prometheus/share/
mv bin/plugins/target-value $target_value/share/
mv bin/plugins/threshold $threshold/share/
runHook postInstall
'';
# make toggle-able, so that overrided versions can disable this check if
# they want newer versions of the plugins without having to modify
# the output logic
doInstallCheck = true;
installCheckPhase = ''
rmdir bin/plugins || {
echo "Not all plugins were extracted"
echo "Please move the following to their related output: $(ls bin/plugins)"
exit 1
}
'';
passthru = {
inherit plugins withPlugins;
};
meta = with lib; {
description = "Autoscaling daemon for Nomad";
mainProgram = "nomad-autoscaler";
homepage = "https://github.com/hashicorp/nomad-autoscaler";
license = licenses.mpl20;
maintainers = [ ];
};
};
plugins =
let
plugins = builtins.filter (
n:
!(lib.elem n [
"out"
"bin"
])
) package.outputs;
in
lib.genAttrs plugins (output: package.${output});
# Intended to be used as: (nomad-autoscaler.withPlugins (ps: [ ps.aws_asg ps.nomad_target ])
withPlugins =
f:
buildEnv {
name = "nomad-autoscaler-env";
paths = [ package.bin ] ++ f plugins;
};
in
package

View File

@@ -0,0 +1,57 @@
{
lib,
buildGoModule,
fetchFromGitHub,
fetchpatch,
containerd,
}:
buildGoModule rec {
pname = "nomad-driver-containerd";
version = "0.9.4";
src = fetchFromGitHub {
owner = "Roblox";
repo = "nomad-driver-containerd";
rev = "v${version}";
sha256 = "sha256-11K1ACk2hhEi+sAlI932eKpyy82Md7j1edRWH2JJ8sI=";
};
# bump deps to fix CVE that isn't in a tagged release yet
patches = [
(fetchpatch {
url = "https://github.com/Roblox/nomad-driver-containerd/commit/80b9be1353f701b9d47d874923a9e8ffed4dbd98.patch";
hash = "sha256-d4C/YwemmZQAt0fTAnQkJVKn8cK4kmxB+wQEHycdn9U=";
})
(fetchpatch {
url = "https://github.com/Roblox/nomad-driver-containerd/commit/cc0da224669a8f85a8b695288fe5ea748fb270c2.patch";
hash = "sha256-W8ZOKMkv1814cPNyqTaXUGhh44WfMizZNL4cNX+FOqg=";
})
];
# replace version in file as it's defined using const, and thus cannot be overridden by ldflags
postPatch = ''
substituteInPlace containerd/driver.go --replace-warn 'PluginVersion = "v0.9.3"' 'PluginVersion = "v${version}"'
'';
env.CGO_ENABLED = "1";
vendorHash = "sha256-OO+a5AqhB0tf6lyodhYl9HUSaWvtXWwevRHYy1Q6VoU=";
subPackages = [ "." ];
buildInputs = [ containerd ];
ldflags = [
"-s"
"-w"
];
meta = with lib; {
homepage = "https://www.github.com/Roblox/nomad-driver-containerd";
description = "Containerd task driver for Nomad";
mainProgram = "nomad-driver-containerd";
platforms = platforms.linux;
license = licenses.asl20;
maintainers = with maintainers; [ techknowlogick ];
};
}

View File

@@ -0,0 +1,33 @@
{
lib,
buildGoModule,
fetchFromGitHub,
}:
buildGoModule rec {
pname = "nomad-driver-podman";
version = "0.6.3";
src = fetchFromGitHub {
owner = "hashicorp";
repo = "nomad-driver-podman";
rev = "v${version}";
sha256 = "sha256-foGbOIR1pdimMKVVrnvffNfqcWDwomenxtE696I1KwE=";
};
vendorHash = "sha256-nQTxadv2EBf4U0dXQXXAetqk9SzB8s+WyU9nRD+I438=";
subPackages = [ "." ];
# some tests require a running podman service
doCheck = false;
meta = with lib; {
homepage = "https://www.github.com/hashicorp/nomad-driver-podman";
description = "Podman task driver for Nomad";
mainProgram = "nomad-driver-podman";
platforms = platforms.linux;
license = licenses.mpl20;
maintainers = with maintainers; [ cpcloud ];
};
}

View File

@@ -0,0 +1,38 @@
{
lib,
fetchFromGitHub,
buildGoModule,
}:
buildGoModule rec {
pname = "nomad-pack";
version = "0.4.0";
src = fetchFromGitHub {
owner = "hashicorp";
repo = "nomad-pack";
rev = "v${version}";
sha256 = "sha256-9lkRDRXY27KzVAClDfqtD95OMsMPgTqvDesr6qHsNkM=";
};
vendorHash = "sha256-laCCm+WluxfsYtpTu5RvKy40UBZkkvLgVbWbdRjfAhU=";
# skip running go tests as they require network access
doCheck = false;
doInstallCheck = true;
installCheckPhase = ''
runHook preInstallCheck
$out/bin/nomad-pack --version
runHook postInstallCheck
'';
meta = with lib; {
homepage = "https://github.com/hashicorp/nomad-pack";
changelog = "https://github.com/hashicorp/nomad-pack/blob/main/CHANGELOG.md";
description = "Nomad Pack is a templating and packaging tool used with HashiCorp Nomad";
license = licenses.mpl20;
maintainers = with maintainers; [ techknowlogick ];
};
}

View File

@@ -0,0 +1,101 @@
{
lib,
stdenv,
fetchFromGitHub,
fetchYarnDeps,
nixosTests,
writableTmpDirAsHomeHook,
writeText,
fixup-yarn-lock,
nodejs,
yarn,
# Custom application configuration placed to theme/config.theme.js file.
# For the list of available configuration options see
# https://github.com/osm-search/nominatim-ui/blob/master/dist/config.defaults.js
customConfig ? null,
}:
let
configFile =
if customConfig != null then
writeText "config.theme.js" customConfig
else
writeText "config.theme.js" ''
// Default configuration
Nominatim_Config.Nominatim_API_Endpoint='https://127.0.0.1/';
'';
in
stdenv.mkDerivation (finalAttrs: {
pname = "nominatim-ui";
version = "3.7.1";
src = fetchFromGitHub {
owner = "osm-search";
repo = "nominatim-ui";
tag = "v${finalAttrs.version}";
hash = "sha256-TliTWDKdIp7Z0uYw5P65i06NQAUNwNymUsSYrihVZFE=";
};
offlineCache = fetchYarnDeps {
yarnLock = "${finalAttrs.src}/yarn.lock";
hash = "sha256-IqwsXEd9RSJhkA4BONTJT4xYMTyG9+zddIpD47v6AFc=";
};
nativeBuildInputs = [
writableTmpDirAsHomeHook
fixup-yarn-lock
nodejs
yarn
];
configurePhase = ''
runHook preConfigure
yarn config --offline set yarn-offline-mirror $offlineCache
fixup-yarn-lock yarn.lock
yarn install --offline --frozen-lockfile --frozen-engines --ignore-scripts
patchShebangs node_modules
runHook postConfigure
'';
buildPhase = ''
runHook preBuild
yarn --offline build
runHook postBuild
'';
preInstall = ''
ln --symbolic ${configFile} dist/theme/config.theme.js
'';
installPhase = ''
runHook preInstall
cp --archive dist $out
runHook postInstall
'';
passthru.tests = {
inherit (nixosTests) nominatim;
};
meta = {
description = "Debugging user interface for Nominatim geocoder";
homepage = "https://github.com/osm-search/nominatim-ui";
license = lib.licenses.gpl2;
teams = with lib.teams; [
geospatial
ngi
];
changelog = "https://github.com/osm-search/nominatim-ui/releases/tag/v${finalAttrs.version}";
};
})

View File

@@ -0,0 +1,62 @@
{
lib,
buildPythonPackage,
fetchFromGitHub,
hatchling,
psycopg,
pyicu,
python-dotenv,
pyyaml,
sqlalchemy,
}:
buildPythonPackage rec {
pname = "nominatim";
version = "5.1.0";
pyproject = true;
src = fetchFromGitHub {
owner = "osm-search";
repo = "Nominatim";
tag = "v${version}";
hash = "sha256-eMCXXPrUZvM4ju0mi1+f+LXhThCCCEH+HDz6lurw+Jo=";
};
postPatch = ''
# pyproject.toml tool.hatch.build.targets.sdist.exclude is not properly
# excluding config.py file.
# Fix FileExistsError: File already exists: ... nominatim_api/config.py
rm src/nominatim_api/config.py
# Change to package directory
cd packaging/nominatim-api
'';
build-system = [
hatchling
];
dependencies = [
psycopg
pyicu
python-dotenv
pyyaml
sqlalchemy
];
# Fails on: ModuleNotFoundError: No module named 'nominatim_db'
# pythonImportsCheck = [ "nominatim_api" ];
meta = {
description = "Search engine for OpenStreetMap data (API module)";
homepage = "https://nominatim.org/";
license = lib.licenses.gpl2Plus;
platforms = lib.platforms.unix;
maintainers = with lib.maintainers; [ mausch ];
teams = with lib.teams; [
geospatial
ngi
];
};
}

View File

@@ -0,0 +1,85 @@
{
lib,
fetchFromGitHub,
fetchurl,
osm2pgsql,
python3Packages,
nominatim, # required for testVersion
nixosTests,
testers,
}:
let
countryGrid = fetchurl {
# Nominatim-db needs https://www.nominatim.org/data/country_grid.sql.gz
# but it's not a very good URL for pinning
url = "https://web.archive.org/web/20220323041006/https://nominatim.org/data/country_grid.sql.gz";
hash = "sha256-/mY5Oq9WF0klXOv0xh0TqEJeMmuM5QQJ2IxANRZd4Ek=";
};
in
python3Packages.buildPythonApplication rec {
pname = "nominatim";
version = "5.1.0";
pyproject = true;
src = fetchFromGitHub {
owner = "osm-search";
repo = "Nominatim";
tag = "v${version}";
hash = "sha256-eMCXXPrUZvM4ju0mi1+f+LXhThCCCEH+HDz6lurw+Jo=";
};
postPatch = ''
# Fix: FileExistsError: File already exists: ... nominatim_db/paths.py
# pyproject.toml tool.hatch.build.targets.sdist.exclude is not properly
# excluding paths.py file.
rm src/nominatim_db/paths.py
# Install country_osm_grid.sql.gz required for data import
cp ${countryGrid} ./data/country_osm_grid.sql.gz
# Change to package directory
cd packaging/nominatim-db
'';
build-system = with python3Packages; [
hatchling
];
dependencies = with python3Packages; [
nominatim-api
jinja2
psutil
psycopg
pyicu
python-dotenv
pyyaml
];
propagatedBuildInputs = [
osm2pgsql
];
pythonImportsCheck = [ "nominatim_db" ];
passthru.tests = {
version = testers.testVersion { package = nominatim; };
inherit (nixosTests) nominatim;
};
meta = {
description = "Search engine for OpenStreetMap data (DB, CLI)";
homepage = "https://nominatim.org/";
license = lib.licenses.gpl2Plus;
platforms = lib.platforms.unix;
maintainers = with lib.maintainers; [ mausch ];
teams = with lib.teams; [
geospatial
ngi
];
mainProgram = "nominatim";
};
}

View File

@@ -0,0 +1,31 @@
{
lib,
rustPlatform,
fetchFromGitHub,
}:
rustPlatform.buildRustPackage rec {
pname = "nomino";
version = "1.6.4";
src = fetchFromGitHub {
owner = "yaa110";
repo = "nomino";
rev = version;
hash = "sha256-By7zVHtbrQU0+cSbxNNxCcmTCoFABsjOLk8TCX8iFWA=";
};
cargoHash = "sha256-daHhCr55RzIHooGXBK831SYD1b8NPEDD6mtDut6nuaQ=";
meta = with lib; {
description = "Batch rename utility for developers";
homepage = "https://github.com/yaa110/nomino";
changelog = "https://github.com/yaa110/nomino/releases/tag/${src.rev}";
license = with licenses; [
mit # or
asl20
];
maintainers = with maintainers; [ figsoda ];
mainProgram = "nomino";
};
}

View File

@@ -0,0 +1,55 @@
{
lib,
stdenvNoCC,
fetchFromGitHub,
python3Packages,
nix-update-script,
}:
stdenvNoCC.mkDerivation (finalAttrs: {
pname = "nomnatong";
version = "5.15";
src = fetchFromGitHub {
owner = "nomfoundation";
repo = "font";
rev = "v${finalAttrs.version}";
hash = "sha256-QVg54EX2ctfADe5976PHHId3r35oQEPDejvGU89+QeU=";
};
nativeBuildInputs = [
python3Packages.afdko
python3Packages.fonttools
];
sourceRoot = "${finalAttrs.src.name}/src";
buildPhase = ''
runHook preBuild
makeotf -r -f font.pfa -omitMacNames -ff features.txt -mf FontMenuNameDB -ga -ci UnicodeVariationSequences.txt
otf2ttf NomNaTong-Regular.otf
sfntedit -d DSIG NomNaTong-Regular.otf
runHook postBuild
'';
installPhase = ''
runHook preInstall
install -Dm444 NomNaTong-Regular.otf -t $out/share/fonts/opentype/
install -Dm444 NomNaTong-Regular.ttf -t $out/share/fonts/truetype/
runHook postInstall
'';
passthru.updateScript = nix-update-script { };
meta = {
homepage = "https://nomfoundation.org/nom-tools/Nom-Font";
description = "Hán-Nôm Coded Character Set and Nom Na Tong Regular Reference Font";
license = lib.licenses.mit;
maintainers = [ ];
platforms = lib.platforms.all;
};
})

View File

@@ -0,0 +1,35 @@
{
lib,
buildGoModule,
fetchFromGitHub,
}:
buildGoModule rec {
pname = "nomore403";
version = "1.0.1";
src = fetchFromGitHub {
owner = "devploit";
repo = "nomore403";
tag = version;
hash = "sha256-qA1i8l2oBQQ5IF8ho3K2k+TAndUTFGwb2NfhyFqfKzU=";
};
vendorHash = "sha256-IGnTbuaQH8A6aKyahHMd2RyFRh4WxZ3Vx/A9V3uelRg=";
ldflags = [
"-s"
"-w"
"-X=main.Version=${version}"
"-X=main.BuildDate=1970-01-01T00:00:00Z"
];
meta = {
description = "Tool to bypass 403/40X response codes";
homepage = "https://github.com/devploit/nomore403";
changelog = "https://github.com/devploit/nomore403/releases/tag/${version}";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ fab ];
mainProgram = "nomore403";
};
}

View File

@@ -0,0 +1,168 @@
{
lib,
stdenvNoCC,
fetchFromGitHub,
gtk-engine-murrine,
jdupes,
kdePackages,
}:
stdenvNoCC.mkDerivation {
pname = "nordic";
version = "2.2.0-unstable-2025-05-05";
srcs = [
(fetchFromGitHub {
owner = "EliverLara";
repo = "nordic";
rev = "d9b5c42cebf9a165bcce7b6b8a019f5cfd5b789c";
hash = "sha256-OkXjwaoXyWfTgNkeU+ab+uv+U/5OaJ8oTt/G8YLz84o=";
name = "Nordic";
})
(fetchFromGitHub {
owner = "EliverLara";
repo = "nordic";
rev = "361f0d1d23177a1154d415f793ce52a2c09629d4";
hash = "sha256-0IBuCMbHxTL3YtIK35g9xiBEs1DZgA4MwMAVPIw3Omk=";
name = "Nordic-standard-buttons";
})
(fetchFromGitHub {
owner = "EliverLara";
repo = "nordic";
rev = "bf05d41c7c7cd03e391854739bcc843fc6053ced";
hash = "sha256-AjVvciUrm/X3U6Pmo52ZrucLRJdsRFPeEMRwSKyjwi4=";
name = "Nordic-darker";
})
(fetchFromGitHub {
owner = "EliverLara";
repo = "nordic";
rev = "98cdf88d77fa7f0535ff660148e0ccbabe47a579";
hash = "sha256-70l5+renDhniZroPoMrCHsPgT6Pg3cr5w86LjkaWchg=";
name = "Nordic-darker-standard-buttons";
})
(fetchFromGitHub {
owner = "EliverLara";
repo = "nordic";
rev = "f1e43cf9ba83602f73f71407a8a4ba768122b7f4";
hash = "sha256-yLE/M9PXfQv2JD+HTsBHFiFaKuY8vOkZiOlQLLON+HM=";
name = "Nordic-bluish-accent";
})
(fetchFromGitHub {
owner = "EliverLara";
repo = "nordic";
rev = "52a37ebce50f948129507e4804240d9e7788a7a2";
hash = "sha256-zwnCaS08vceHjFHn9ET2509Zat7a1gHEG1RDR+xrbhc=";
name = "Nordic-bluish-accent-standard-buttons";
})
(fetchFromGitHub {
owner = "EliverLara";
repo = "nordic-polar";
rev = "24dc0325c4a38508039f5fee9a5391c1d9d8d5d5";
hash = "sha256-Y3PFuIc7UPbRg9NZie4buKCUiMXzl5idg7LSrj/lsos=";
name = "Nordic-Polar";
})
(fetchFromGitHub {
owner = "EliverLara";
repo = "nordic-polar";
rev = "fe0d657613a1e6330fa8c41378c324af93a42c3a";
hash = "sha256-fusSDXawWttXWQfGloRkpkHWvfLPuljm1l0BpAKvNSg=";
name = "Nordic-Polar-standard-buttons";
})
];
sourceRoot = ".";
outputs = [
"out"
"sddm"
];
nativeBuildInputs = [ jdupes ];
propagatedUserEnvPkgs = [ gtk-engine-murrine ];
dontWrapQtApps = true;
installPhase = ''
runHook preInstall
# install theme files
mkdir -p $out/share/themes
cp -a Nordic* $out/share/themes
# remove uneeded files
rm -r $out/share/themes/*/.gitignore
rm -r $out/share/themes/*/Art
rm -r $out/share/themes/*/FUNDING.yml
rm -r $out/share/themes/*/LICENSE
rm -r $out/share/themes/*/README.md
rm -r $out/share/themes/*/{package.json,package-lock.json,Gulpfile.js}
rm -r $out/share/themes/*/src
rm -r $out/share/themes/*/cinnamon/*.scss
rm -r $out/share/themes/*/gnome-shell/{earlier-versions,extensions,*.scss}
rm -r $out/share/themes/*/gtk-2.0/{assets.svg,assets.txt,links.fish,render-assets.sh}
rm -r $out/share/themes/*/gtk-3.0/{apps,widgets,*.scss}
rm -r $out/share/themes/*/gtk-4.0/{apps,widgets,*.scss}
rm -r $out/share/themes/*/xfwm4/{assets,render_assets.fish}
# move wallpapers to appropriate directory
mkdir -p $out/share/wallpapers/Nordic
mv -v $out/share/themes/Nordic/extras/wallpapers/* $out/share/wallpapers/Nordic/
rmdir $out/share/themes/Nordic/extras{/wallpapers,}
# move kde related contents to appropriate directories
mkdir -p $out/share/{aurorae/themes,color-schemes,Kvantum,plasma,icons}
mv -v $out/share/themes/Nordic/kde/aurorae/* $out/share/aurorae/themes/
mv -v $out/share/themes/Nordic/kde/colorschemes/* $out/share/color-schemes/
mv -v $out/share/themes/Nordic/kde/konsole $out/share/
mv -v $out/share/themes/Nordic/kde/kvantum/* $out/share/Kvantum/
cp -vr $out/share/themes/Nordic/kde/plasma/look-and-feel $out/share/plasma/look-and-feel/
mv -v $out/share/themes/Nordic/kde/plasma/look-and-feel $out/share/plasma/desktoptheme/
mv -v $out/share/themes/Nordic/kde/folders/* $out/share/icons/
mv -v $out/share/themes/Nordic/kde/cursors/*-cursors $out/share/icons/
rm -rf $out/share/plasma/look-and-feel/*/contents/{logout,osd,components}
rm -rf $out/share/plasma/desktoptheme/*/contents/{defaults,splash,previews}
rm -rf $out/share/Kvantum/*.tar.xz
mkdir -p $sddm/share/sddm/themes
mv -v $out/share/themes/Nordic/kde/sddm/* $sddm/share/sddm/themes/
rm -rf $out/share/themes/Nordic/kde
# Replace duplicate files with symbolic links to the first file in
# each set of duplicates, reducing the installed size in about 53%
jdupes --quiet --link-soft --recurse $out/share
# FIXME: https://github.com/EliverLara/Nordic/issues/331
echo "Removing broken symlinks ..."
find $out -xtype l -print -delete
runHook postInstall
'';
postFixup = ''
# Propagate sddm theme dependencies to user env otherwise sddm
# does not find them. Putting them in buildInputs is not enough.
mkdir -p $sddm/nix-support
printWords ${kdePackages.breeze-icons} ${kdePackages.libplasma} ${kdePackages.plasma-workspace} \
>> $sddm/nix-support/propagated-user-env-packages
'';
meta = {
description = "Gtk and KDE themes using the Nord color pallete";
homepage = "https://github.com/EliverLara/Nordic";
license = lib.licenses.gpl3Only;
platforms = lib.platforms.all;
maintainers = with lib.maintainers; [ romildo ];
};
}

View File

@@ -0,0 +1,162 @@
{
fetchurl,
lib,
stdenv,
squashfsTools,
xorg,
alsa-lib,
freetype,
glib,
pango,
cairo,
atk,
gdk-pixbuf,
gtk3,
cups,
nspr,
nss_latest,
libpng,
libnotify,
libgcrypt,
systemd,
fontconfig,
dbus,
expat,
curlWithGnuTls,
zlib,
at-spi2-atk,
at-spi2-core,
libdrm,
libgbm,
libxkbcommon,
harfbuzz,
libsecret,
buildFHSEnv,
}:
let
# determine these versions from
# curl -H 'Snap-Device-Series: 16' http://api.snapcraft.io/v2/snaps/info/nordpass
version = "6.3.15";
snapVersion = "201";
snapId = "00CQ2MvSr0Ex7zwdGhCYTa0ZLMw3H6hf";
snapBaseUrl = "https://api.snapcraft.io/api/v1/snaps/download/";
deps = [
alsa-lib
at-spi2-atk
at-spi2-core
atk
cairo
cups
curlWithGnuTls
dbus
expat
fontconfig
freetype
gdk-pixbuf
glib
gtk3
harfbuzz
libdrm
libgcrypt
libnotify
libpng
libsecret
libxkbcommon
libgbm
nspr
nss_latest
pango
stdenv.cc.cc
systemd
xorg.libICE
xorg.libSM
xorg.libX11
xorg.libxcb
xorg.libXcomposite
xorg.libXcursor
xorg.libXdamage
xorg.libXext
xorg.libXfixes
xorg.libXi
xorg.libXrandr
xorg.libXrender
xorg.libXScrnSaver
xorg.libxshmfence
xorg.libXtst
zlib
];
thisPackage = stdenv.mkDerivation {
pname = "nordpass";
inherit version;
src = fetchurl {
url = "${snapBaseUrl}${snapId}_${snapVersion}.snap";
hash = "sha256-paOwigiDay0pBt7p3Jatv8/1GL8PKUddz9NzEngpGJI=";
};
nativeBuildInputs = [ squashfsTools ];
dontStrip = true;
dontPatchELF = true;
unpackPhase = ''
runHook preUnpack
unsquashfs "$src"
cd squashfs-root
runHook postUnpack
'';
# Prevent double wrapping
dontWrapGApps = true;
installPhase = ''
runHook preInstall
mkdir -p "$out/opt/nordpass"
cp -r . "$out/opt/nordpass/"
mkdir -p $out/bin
ln -s "$out/opt/nordpass/nordpass" "$out/bin/nordpass"
# Desktop file
mkdir -p "$out/share/applications/"
cp "$out/opt/nordpass/meta/gui/nordpass.desktop" "$out/share/applications/"
# Icon
mkdir -p "$out/share/icons/hicolor/512x512/apps"
cp "$out/opt/nordpass/meta/gui/icon.png" \
"$out/share/icons/hicolor/512x512/apps/nordpass.png"
sed -i -e "s#^Icon=.*\$#Icon=$out/share/icons/hicolor/512x512/apps/nordpass.png#" \
"$out/share/applications/nordpass.desktop"
runHook postInstall
'';
meta = with lib; {
homepage = "https://nordpass.com/";
description = "Secure and simple password manager for a stress-free online experience";
license = licenses.unfree;
mainProgram = "nordpass";
maintainers = with maintainers; [ coconnor ];
platforms = [ "x86_64-linux" ];
sourceProvenance = with sourceTypes; [ binaryNativeCode ];
};
};
in
buildFHSEnv {
name = "nordpass";
targetPkgs = _: deps ++ [ thisPackage ];
runScript = "nordpass";
extraInstallCommands = ''
mkdir -p "$out/share"
cp -r ${thisPackage}/share/* "$out/share/"
'';
inherit (thisPackage) meta;
}

View File

@@ -0,0 +1,33 @@
{
stdenvNoCC,
fetchFromGitHub,
lib,
}:
stdenvNoCC.mkDerivation rec {
pname = "nordzy-cursor-theme";
version = "2.4.0";
src = fetchFromGitHub {
owner = "guillaumeboehm";
repo = "Nordzy-cursors";
rev = "v${version}";
sha256 = "sha256-pPcdlMa3H5RtbqIxvgxDkP4tw76H2UQujXbrINc3MxE=";
};
installPhase = ''
mkdir -p $out/share/icons
cp -r xcursors/* $out/share/icons
cp -r hyprcursors/themes/* $out/share/icons
'';
meta = with lib; {
description = "Cursor theme using the Nord color palette and based on Vimix and cz-Viator";
homepage = "https://github.com/guillaumeboehm/Nordzy-cursors";
license = licenses.gpl3;
platforms = platforms.all;
maintainers = with maintainers; [
alexnortung
];
};
}

View File

@@ -0,0 +1,57 @@
{
stdenvNoCC,
fetchFromGitHub,
lib,
gtk3,
jdupes,
nordzy-themes ? [ "all" ], # Override this to only install selected themes
}:
stdenvNoCC.mkDerivation rec {
pname = "nordzy-icon-theme";
version = "1.8.7";
src = fetchFromGitHub {
owner = "alvatip";
repo = "Nordzy-icon";
rev = version;
sha256 = "sha256-r/WYGcHRAFX7TennestobjcJhwu3GE8aQXxnaeokQM0=";
};
# In the post patch phase we should first make sure to patch shebangs.
postPatch = ''
patchShebangs install.sh
'';
nativeBuildInputs = [
gtk3
jdupes
];
dontDropIconThemeCache = true;
installPhase = ''
runHook preInstall
name= ./install.sh --dest $out/share/icons \
${lib.optionalString (nordzy-themes != [ ]) (
lib.strings.concatMapStrings (theme: "-t ${theme} ") nordzy-themes
)}
# Replace duplicate files with hardlinks to the first file in each
# set of duplicates, reducing the installed size in about 87%
jdupes -L -r $out/share
runHook postInstall
'';
dontFixup = true;
meta = with lib; {
description = "Icon theme using the Nord color palette, based on WhiteSur and Numix icon themes";
homepage = "https://github.com/alvatip/Nordzy-icon";
license = licenses.gpl3Only;
platforms = platforms.linux;
maintainers = with maintainers; [ alexnortung ];
};
}

View File

@@ -0,0 +1,46 @@
{
lib,
stdenv,
fetchFromGitHub,
autoreconfHook,
gmpxx,
flint,
nauty,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "normaliz";
version = "3.10.5";
src = fetchFromGitHub {
owner = "normaliz";
repo = "normaliz";
rev = "v${finalAttrs.version}";
hash = "sha256-Ku5OTtRxrs9qaSE0mle17eJSE2yKZUUsflEZk4k91jM=";
};
buildInputs = [
gmpxx
flint
nauty
];
outputs = [
"out"
"lib"
"dev"
];
nativeBuildInputs = [
autoreconfHook
];
meta = with lib; {
homepage = "https://www.normaliz.uni-osnabrueck.de/";
description = "Open source tool for computations in affine monoids, vector configurations, lattice polytopes, and rational cones";
maintainers = with maintainers; [ yannickulrich ];
platforms = with platforms; unix ++ windows;
license = licenses.gpl3Plus;
mainProgram = "normaliz";
};
})

View File

@@ -0,0 +1,25 @@
{
lib,
stdenv,
fetchurl,
libmad,
}:
stdenv.mkDerivation rec {
pname = "normalize";
version = "0.7.7";
src = fetchurl {
url = "mirror://savannah/normalize/${pname}-${version}.tar.gz";
sha256 = "1n5khss10vjjp6w69q9qcl4kqfkd0pr555lgqghrchn6rjms4mb0";
};
buildInputs = [ libmad ];
meta = with lib; {
homepage = "https://www.nongnu.org/normalize/";
description = "Audio file normalizer";
license = licenses.gpl2;
platforms = platforms.unix;
};
}

View File

@@ -0,0 +1,226 @@
{
lib,
stdenv,
python3,
fetchFromGitHub,
tesseract4,
leptonica,
wl-clipboard,
libnotify,
xorg,
makeDesktopItem,
copyDesktopItems,
}:
let
ps = python3.pkgs;
wrapperDeps = [
leptonica
tesseract4
libnotify
]
++ lib.optionals stdenv.hostPlatform.isLinux [
wl-clipboard
];
in
ps.buildPythonApplication rec {
pname = "normcap";
version = "0.6.0";
format = "pyproject";
disabled = ps.pythonOlder "3.9";
src = fetchFromGitHub {
owner = "dynobo";
repo = "normcap";
tag = "v${version}";
hash = "sha256-jkaXwBpa09J6Q07vlnQW8TsUtpiYrPkfMspZI1TyE1g=";
};
pythonRemoveDeps = [
"pyside6-essentials"
];
pythonRelaxDeps = [
"jeepney"
"shiboken6"
];
build-system = [
ps.hatchling
ps.babel
]
++ lib.optionals stdenv.hostPlatform.isDarwin [
ps.toml
];
nativeBuildInputs = [
copyDesktopItems
];
dependencies = [
ps.pyside6
ps.jeepney
ps.toml
ps.zxing-cpp
];
preFixup = ''
makeWrapperArgs+=(
"''${qtWrapperArgs[@]}"
--set QT_QPA_PLATFORM xcb
--prefix PATH : ${lib.makeBinPath wrapperDeps}
)
''
+ lib.optionalString stdenv.hostPlatform.isLinux ''
# cursed fix on GNOME+wayland
# this works because systemd-run runs the command as an ad-hoc service named run-1234567890.service
# FIXME: make something like `--slice=app-com.github.dynobo.normcap.slice`
# work such that the "screenshot screenshot" permission in
# `flatpak permissions` is associated with the xdg app id
# "com.github.dynobo.normcap" and not ""
makeWrapperArgs+=(
--run '
if command -v systemd-run >/dev/null; then
exec -a "$0" systemd-run --wait --user \
--setenv=PATH="$PATH" \
--setenv=PYTHONNOUSERSITE="$PYTHONNOUSERSITE" \
--setenv=QT_QPA_PLATFORM="$QT_QPA_PLATFORM" \
${placeholder "out"}/bin/.normcap-wrapped "$@"
else
exec -a "$0" ${placeholder "out"}/bin/.normcap-wrapped "$@"
fi
exit $?
'
)
'';
postInstall = lib.optionalString stdenv.hostPlatform.isLinux ''
mkdir -p $out/share/pixmaps
ln -s $out/${python3.sitePackages}/normcap/resources/icons/normcap.png $out/share/pixmaps/
'';
nativeCheckInputs =
wrapperDeps
++ [
ps.pytestCheckHook
ps.pytest-cov-stub
ps.pytest-instafail
ps.pytest-qt
]
++ lib.optionals stdenv.hostPlatform.isLinux [
ps.pytest-xvfb
xorg.xvfb
];
preCheck = ''
export HOME=$(mktemp -d)
''
+ lib.optionalString stdenv.hostPlatform.isLinux ''
# setup a virtual x11 display
export DISPLAY=:$((2000 + $RANDOM % 1000))
Xvfb $DISPLAY -screen 5 1024x768x8 &
xvfb_pid=$!
'';
postCheck = lib.optionalString stdenv.hostPlatform.isLinux ''
# cleanup the virtual x11 display
sleep 0.5
kill $xvfb_pid
'';
disabledTests = [
# requires a wayland session (no xclip support)
"test_wl_copy"
# RuntimeError: Please destroy the QApplication singleton before creating a new QApplication instance
"test_get_application"
# times out, unknown why
"test_update_checker_triggers_checked_signal"
# touches network
"test_urls_reachable"
# requires xdg
"test_synchronized_capture"
# flaky
"test_normcap_ocr_testcases"
]
++ lib.optionals stdenv.hostPlatform.isDarwin [
# requires display
"test_send_via_qt_tray"
"test_screens"
# requires impure pbcopy
"test_get_copy_func_with_pbcopy"
"test_get_copy_func_without_pbcopy"
"test_perform_pbcopy"
"test_pbcopy"
"test_copy"
# NSXPCSharedListener endpointForReply:withListenerName:replyErrorCode:
# while obtaining endpoint 'ClientCallsAuxiliary': Connection interrupted
# since v5.0.0
"test_introduction_initialize_checkbox_state"
"test_introduction_checkbox_sets_return_code"
"test_introduction_toggle_checkbox_changes_return_code"
"test_show_introduction"
];
disabledTestPaths = [
# touches network
"tests/tests_gui/test_downloader.py"
# fails to import, causes pytest to freeze
"tests/tests_gui/test_language_manager.py"
# RuntimeError("Internal C++ object (PySide6.QtGui.QHideEvent) already deleted.")
# AttributeError("'LoadingIndicator' object has no attribute 'timer'")
"tests/tests_gui/test_loading_indicator.py"
]
++ lib.optionals stdenv.hostPlatform.isDarwin [
# requires a display
"tests/integration/test_normcap.py"
"tests/integration/test_tray_menu.py"
"tests/integration/test_settings_menu.py"
"tests/tests_clipboard/test_handlers/test_qtclipboard.py"
"tests/tests_gui/test_tray.py"
"tests/tests_gui/test_window.py"
"tests/tests_screengrab/"
# failure unknown, crashes in first test with `.show()`
"tests/tests_gui/test_loading_indicator.py"
"tests/tests_gui/test_menu_button.py"
"tests/tests_gui/test_resources.py"
"tests/tests_gui/test_update_check.py"
];
desktopItems = [
(makeDesktopItem {
name = "com.github.dynobo.normcap";
desktopName = "NormCap";
genericName = "OCR powered screen-capture tool";
comment = "Extract text from an image directly into clipboard";
exec = "normcap";
icon = "normcap";
terminal = false;
categories = [
"Utility"
"Office"
];
keywords = [
"Text"
"Extraction"
"OCR"
];
})
];
meta = {
description = "OCR powered screen-capture tool to capture information instead of images";
homepage = "https://dynobo.github.io/normcap/";
changelog = "https://github.com/dynobo/normcap/releases/tag/v${version}";
license = lib.licenses.gpl3Plus;
maintainers = with lib.maintainers; [
cafkafk
pbsds
];
mainProgram = "normcap";
};
}

View File

@@ -0,0 +1,41 @@
{
lib,
python3Packages,
fetchFromGitHub,
}:
python3Packages.buildPythonApplication rec {
pname = "norminette";
version = "3.3.59";
pyproject = true;
src = fetchFromGitHub {
owner = "42School";
repo = "norminette";
tag = version;
hash = "sha256-XPaMQCziL9/h+AHx6I6MIRAlzscWvOTkxUP9dMI4y0o=";
};
build-system = with python3Packages; [
poetry-core
];
pythonRemoveDeps = [
# Can be removed once https://github.com/42school/norminette/issues/565 is addressed
"argparse"
];
nativeCheckInputs = with python3Packages; [
pytestCheckHook
];
pythonImportsCheck = [ "norminette" ];
meta = with lib; {
description = "Open source norminette to apply 42's norme to C files";
mainProgram = "norminette";
homepage = "https://github.com/42School/norminette";
license = licenses.mit;
maintainers = with maintainers; [ wegank ];
};
}

View File

@@ -0,0 +1,33 @@
{
lib,
stdenvNoCC,
fetchzip,
}:
stdenvNoCC.mkDerivation rec {
pname = "norwester";
version = "1.2";
src = fetchzip {
url = "http://jamiewilson.io/norwester/assets/norwester.zip";
stripRoot = false;
hash = "sha256-Ak/nobrQE/XYGWs/IhlZlTp74ff+s4adUR6Sht5Yf8g=";
};
installPhase = ''
runHook preInstall
mkdir -p $out/share/fonts/opentype
cp ${pname}-v${version}/${pname}.otf $out/share/fonts/opentype/
runHook postInstall
'';
meta = with lib; {
homepage = "http://jamiewilson.io/norwester";
description = "Condensed geometric sans serif by Jamie Wilson";
maintainers = with maintainers; [ leenaars ];
license = licenses.ofl;
platforms = platforms.all;
};
}

View File

@@ -0,0 +1,3 @@
{ python3Packages }:
python3Packages.toPythonApplication python3Packages.nose2pytest

View File

@@ -0,0 +1,94 @@
{
lib,
stdenv,
rustPlatform,
fetchFromGitHub,
boost,
cmake,
vectorscan,
openssl,
pkg-config,
installShellFiles,
versionCheckHook,
}:
rustPlatform.buildRustPackage rec {
pname = "noseyparker";
version = "0.24.0";
src = fetchFromGitHub {
owner = "praetorian-inc";
repo = "noseyparker";
tag = "v${version}";
hash = "sha256-6GxkIxLEgbIgg4nSHvmRedm8PAPBwVxLQUnQzh3NonA=";
};
cargoHash = "sha256-hVBHIm/12WU6g45QMxxuGk41B0kwThk7A84fOxArvno=";
# Fix error: failed to run custom build command for `vectorscan-rs-sys v0.0.5`
# Failed to get C++ compiler version: Os { code: 2, kind: NotFound, message: "No such file or directory" }
postPatch = ''
substituteInPlace $(find ../noseyparker-${version}-vendor -name "vectorscan-rs-sys*")/build.rs \
--replace-fail 'Command::new("c++")' 'Command::new("${stdenv.cc.targetPrefix}c++")'
'';
checkFlags = [
# These tests expect access to network to clone and use GitHub API
"--skip=github::github_repos_list_multiple_user_dedupe_jsonl_format"
"--skip=github::github_repos_list_org_badtoken"
"--skip=github::github_repos_list_user_badtoken"
"--skip=github::github_repos_list_user_human_format"
"--skip=github::github_repos_list_user_json_format"
"--skip=github::github_repos_list_user_jsonl_format"
"--skip=github::github_repos_list_user_repo_filter"
"--skip=scan::appmaker::scan_workflow_from_git_url"
# This caused a flaky result. See https://github.com/NixOS/nixpkgs/pull/422012#issuecomment-3031728181
"--skip=scan::git_url::git_binary_missing"
# Also skips all tests which depend on external git command to prevent unstable tests similar to git_binary_missing
# See https://github.com/NixOS/nixpkgs/pull/422012#discussion_r2182551619
"--skip=scan::git_url::https_nonexistent"
"--skip=scan::basic::scan_git_emptyrepo"
];
nativeBuildInputs = [
cmake
pkg-config
installShellFiles
];
buildInputs = [
boost
vectorscan
openssl
];
env.OPENSSL_NO_VENDOR = 1;
postInstall = lib.optionalString (stdenv.buildPlatform.canExecute stdenv.hostPlatform) ''
mkdir -p manpages
"$out/bin/noseyparker-cli" generate manpages
installManPage manpages/*
installShellCompletion --cmd noseyparker-cli \
--bash <("$out/bin/noseyparker-cli" generate shell-completions --shell bash) \
--zsh <("$out/bin/noseyparker-cli" generate shell-completions --shell zsh) \
--fish <("$out/bin/noseyparker-cli" generate shell-completions --shell fish)
'';
nativeInstallCheckInputs = [
versionCheckHook
];
doInstallCheck = true;
versionCheckProgram = "${placeholder "out"}/bin/noseyparker-cli";
versionCheckProgramArg = "--version";
meta = {
description = "Find secrets and sensitive information in textual data";
mainProgram = "noseyparker";
homepage = "https://github.com/praetorian-inc/noseyparker";
changelog = "https://github.com/praetorian-inc/noseyparker/blob/v${version}/CHANGELOG.md";
license = lib.licenses.asl20;
maintainers = with lib.maintainers; [ _0x4A6F ];
};
}

View File

@@ -0,0 +1,41 @@
{
lib,
platforms,
appimageTools,
fetchurl,
}:
let
pname = "nosql-booster";
version = "8.1.9";
src = fetchurl {
url = "https://s3.nosqlbooster.com/download/releasesv8/nosqlbooster4mongo-${version}.AppImage";
sha256 = "sha256-ZJdCHOodJel7Apb//s96vrf1Ruml/NLUMQ9eFFR9tfU=";
};
meta = {
homepage = "https://nosqlbooster.com/";
description = "GUI tool for MongoDB Server";
changelog = "https://nosqlbooster.com/blog/announcing-nosqlbooster-81/#version-819";
maintainers = with lib.maintainers; [ guillaumematheron ];
license = lib.licenses.unfree;
platforms = [ "x86_64-linux" ];
mainProgram = "nosql-booster";
};
appimageContents = appimageTools.extract { inherit pname version src; };
in
appimageTools.wrapType2 {
inherit
pname
version
src
meta
;
extraInstallCommands = ''
install -m 444 -D ${appimageContents}/nosqlbooster4mongo.desktop $out/share/applications/nosqlbooster4mongo.desktop
install -m 444 -D ${appimageContents}/usr/share/icons/hicolor/512x512/apps/nosqlbooster4mongo.png \
$out/share/icons/hicolor/512x512/apps/nosqlbooster4mongo.png
substituteInPlace $out/share/applications/nosqlbooster4mongo.desktop \
--replace-fail 'Exec=AppRun' 'Exec=${meta.mainProgram}'
'';
}

View File

@@ -0,0 +1,100 @@
{
appimageTools,
lib,
fetchurl,
jdk21,
stdenv,
_7zz,
}:
let
pname = "nosql-workbench";
version = "3.13.0";
src =
fetchurl
{
x86_64-darwin = {
url = "https://s3.amazonaws.com/nosql-workbench/NoSQL%20Workbench-mac-x64-${version}.dmg";
hash = "sha256-Dof1F1LTD478wh7jTR5zwFmbrvyCOWVO/C1QXTebi3c=";
};
aarch64-darwin = {
url = "https://s3.amazonaws.com/nosql-workbench/NoSQL%20Workbench-mac-arm64-${version}.dmg";
hash = "sha256-QD0F6onP3GhMRIzNifx/RZkxPIS/GMtnF4zro5ygucg=";
};
x86_64-linux = {
url = "https://s3.amazonaws.com/nosql-workbench/NoSQL%20Workbench-linux-${version}.AppImage";
hash = "sha256-ewlaaaWxPHxaOdAMbkHChzbxAB5MNdZS/p8ROD/SvcQ=";
};
}
.${stdenv.system} or (throw "Unsupported system: ${stdenv.system}");
meta = {
description = "Visual tool that provides data modeling, data visualization, and query development features to help you design, create, query, and manage DynamoDB tables";
homepage = "https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/workbench.html";
changelog = "https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/WorkbenchDocumentHistory.html";
license = lib.licenses.unfree;
maintainers = with lib.maintainers; [ DataHearth ];
platforms = [
"aarch64-darwin"
"x86_64-darwin"
"x86_64-linux"
];
};
in
if stdenv.hostPlatform.isDarwin then
stdenv.mkDerivation {
inherit
pname
version
src
meta
;
sourceRoot = ".";
# DMG file is using APFS which is unsupported by "undmg".
# Instead, use "7zz" to extract the contents.
# "undmg" issue: https://github.com/matthewbauer/undmg/issues/4
nativeBuildInputs = [ _7zz ];
buildInputs = [ jdk21 ];
installPhase = ''
runHook preInstall
mkdir -p "$out/Applications"
mv NoSQL\ Workbench.app $out/Applications/
runHook postInstall
'';
}
else
appimageTools.wrapType2 {
inherit
pname
version
src
meta
;
extraPkgs = pkgs: [
# Required to run DynamoDB locally
pkgs.jdk21
];
extraInstallCommands =
let
appimageContents = appimageTools.extract { inherit pname version src; };
internal_filename = "@amznnosql-workbench";
in
''
# Install XDG Desktop file and its icon
install -Dm444 ${appimageContents}/${internal_filename}.desktop -t $out/share/applications
install -Dm444 ${appimageContents}/${internal_filename}.png -t $out/share/pixmaps
# Replace wrong exec statement in XDG Desktop file
substituteInPlace $out/share/applications/${internal_filename}.desktop \
--replace-fail 'Exec=AppRun --no-sandbox %U' 'Exec=nosql-workbench'
'';
}

View File

@@ -0,0 +1,27 @@
{
buildGoModule,
fetchFromGitHub,
lib,
}:
buildGoModule rec {
pname = "nosqli";
version = "0.5.4";
src = fetchFromGitHub {
owner = "Charlie-belmer";
repo = "nosqli";
rev = "v${version}";
sha256 = "sha256-CgD9b5eHDK/8QhQmrqT09Jf9snn9WItNMtTNbJFT2sI=";
};
vendorHash = "sha256-QnrzEei4Pt4C0vCJu4YN28lWWAqEikmNLrqshd3knx4=";
meta = with lib; {
description = "NoSql Injection tool for finding vulnerable websites using MongoDB";
mainProgram = "nosqli";
homepage = "https://github.com/Charlie-belmer/nosqli";
license = with licenses; [ agpl3Plus ];
maintainers = with maintainers; [ fab ];
};
}

View File

@@ -0,0 +1,43 @@
{
lib,
stdenv,
fetchFromGitHub,
rustPlatform,
openssl,
pkg-config,
libiconv,
protobuf,
}:
rustPlatform.buildRustPackage rec {
pname = "nostr-rs-relay";
version = "0.9.0";
src = fetchFromGitHub {
owner = "scsibug";
repo = "nostr-rs-relay";
rev = version;
hash = "sha256-MS5jgUh9aLAFr4Nnf3Wid+ki0PTfsyob3r16/EXYZ7E=";
};
cargoHash = "sha256-hrq9EEUot9painlXVGjIh+NMlrH4iRQ28U3PLGnvYsw=";
buildInputs = [
openssl.dev
]
++ lib.optionals stdenv.hostPlatform.isDarwin [
libiconv
];
nativeBuildInputs = [
pkg-config # for openssl
protobuf
];
meta = {
description = "Nostr relay written in Rust";
homepage = "https://sr.ht/~gheartsfield/nostr-rs-relay/";
changelog = "https://github.com/scsibug/nostr-rs-relay/releases/tag/${version}";
maintainers = with lib.maintainers; [ jurraca ];
license = lib.licenses.mit;
};
}

View File

@@ -0,0 +1,35 @@
{
lib,
fetchFromGitHub,
rustPlatform,
}:
rustPlatform.buildRustPackage rec {
pname = "nostui";
version = "0.1.0";
src = fetchFromGitHub {
owner = "akiomik";
repo = "nostui";
rev = "v${version}";
hash = "sha256-RCD11KdzM66Mkydc51r6fG+q8bmKl5eZma58YoARwPo=";
};
GIT_HASH = "000000000000000000000000000000000000000000000000000";
checkFlags = [
# skip failing test due to nix build timestamps
"--skip=widgets::text_note::tests::test_created_at"
];
cargoHash = "sha256-tway75ZAP2cGdpn79VpuRd0q/h+ovDvkih1LKitM/EU=";
meta = with lib; {
homepage = "https://github.com/akiomik/nostui";
description = "TUI client for Nostr";
license = licenses.mit;
maintainers = with maintainers; [ heywoodlh ];
platforms = platforms.unix;
mainProgram = "nostui";
};
}

View File

@@ -0,0 +1,44 @@
{
haskellPackages,
fetchFromGitHub,
lib,
}:
haskellPackages.mkDerivation rec {
pname = "nota";
version = "1.0-unstable-2023-03-01";
src = fetchFromGitHub {
owner = "pouyakary";
repo = "Nota";
rev = "3548b864e5aa30ffbf1704a79dbb3bd3aab813be";
hash = "sha256-96T9uxUEV22/vn6aoInG1UPXbzlDHswOSkywkdwsMeY=";
};
sourceRoot = "${src.name}/source";
isLibrary = false;
isExecutable = true;
libraryHaskellDepends = with haskellPackages; [
base
bytestring
array
split
scientific
parsec
ansi-terminal
regex-compat
containers
terminal-size
numbers
text
time
];
description = "Command line calculator";
homepage = "https://pouyakary.org/nota/";
license = lib.licenses.mpl20;
maintainers = [ ];
mainProgram = "nota";
}

View File

@@ -0,0 +1,54 @@
{
appimageTools,
makeWrapper,
fetchurl,
lib,
}:
let
pname = "notable";
version = "1.8.4";
sha256 = "0rvz8zwsi62kiq89pv8n2wh9h5yb030kvdr1vf65xwqkhqcrzrby";
src = fetchurl {
url = "https://github.com/notable/notable/releases/download/v${version}/Notable-${version}.AppImage";
inherit sha256;
};
appimageContents = appimageTools.extract {
inherit pname version src;
};
in
appimageTools.wrapType2 rec {
inherit pname version src;
profile = ''
export LC_ALL=C.UTF-8
'';
nativeBuildInputs = [ makeWrapper ];
extraPkgs = pkgs: [
pkgs.at-spi2-atk
pkgs.at-spi2-core
];
extraInstallCommands = ''
install -m 444 -D ${appimageContents}/notable.desktop $out/share/applications/notable.desktop
install -m 444 -D ${appimageContents}/usr/share/icons/hicolor/1024x1024/apps/notable.png \
$out/share/icons/hicolor/1024x1024/apps/notable.png
substituteInPlace $out/share/applications/notable.desktop \
--replace 'Exec=AppRun' 'Exec=${pname}'
wrapProgram "$out/bin/${pname}" \
--add-flags "--disable-seccomp-filter-sandbox"
'';
meta = with lib; {
description = "Markdown-based note-taking app that doesn't suck";
homepage = "https://github.com/notable/notable";
license = licenses.unfree;
platforms = [ "x86_64-linux" ];
maintainers = [ ];
};
}

View File

@@ -0,0 +1,58 @@
{
lib,
fetchFromGitHub,
buildGoModule,
}:
buildGoModule rec {
pname = "notary";
version = "0.6.1-unstable-2024-04-16";
src = fetchFromGitHub {
owner = "notaryproject";
repo = "notary";
rev = "9d2b3b35929392c9945d976b8bdecbe2f53a299e";
hash = "sha256-u19BfTJwRWholK0b3BcgSmcMM9AR7OeXo64AOi87r0A=";
};
vendorHash = null;
tags = [
"pkcs11"
];
ldflags = [
"-X github.com/theupdateframework/notary/version.NotaryVersion=${version}"
];
# Tests try to use network.
doCheck = false;
meta = {
description = "Project that allows anyone to have trust over arbitrary collections of data";
mainProgram = "notary";
longDescription = ''
The Notary project comprises a server and a client for running and
interacting with trusted collections. See the service architecture
documentation for more information.
Notary aims to make the internet more secure by making it easy for people
to publish and verify content. We often rely on TLS to secure our
communications with a web server which is inherently flawed, as any
compromise of the server enables malicious content to be substituted for
the legitimate content.
With Notary, publishers can sign their content offline using keys kept
highly secure. Once the publisher is ready to make the content available,
they can push their signed trusted collection to a Notary Server.
Consumers, having acquired the publisher's public key through a secure
channel, can then communicate with any notary server or (insecure) mirror,
relying only on the publisher's key to determine the validity and
integrity of the received content.
'';
license = lib.licenses.asl20;
homepage = "https://github.com/theupdateframework/notary";
maintainers = [ lib.maintainers.vdemeester ];
platforms = lib.platforms.unix;
};
}

View File

@@ -0,0 +1,56 @@
{
lib,
stdenv,
buildGoModule,
fetchFromGitHub,
installShellFiles,
testers,
}:
buildGoModule (finalAttrs: {
pname = "notation";
version = "1.3.2";
src = fetchFromGitHub {
owner = "notaryproject";
repo = "notation";
tag = "v${finalAttrs.version}";
hash = "sha256-l9A5AwKJ/atN92Oral6PRH2nCbMJ+/ST9weXYRZXWms=";
};
vendorHash = "sha256-WFcy7to3bV3V3bBto5F175PEIxrG9Tj7MuLeBXdSvaM=";
nativeBuildInputs = [
installShellFiles
];
# This is a Go sub-module and cannot be built directly (e2e tests).
excludedPackages = [ "./test" ];
ldflags = [
"-s"
"-w"
"-X github.com/notaryproject/notation/internal/version.Version=${finalAttrs.version}"
"-X github.com/notaryproject/notation/internal/version.BuildMetadata="
];
postInstall = lib.optionalString (stdenv.buildPlatform.canExecute stdenv.hostPlatform) ''
installShellCompletion --cmd notation \
--bash <($out/bin/notation completion bash) \
--fish <($out/bin/notation completion fish) \
--zsh <($out/bin/notation completion zsh)
'';
passthru.tests.version = testers.testVersion {
package = finalAttrs.finalPackage;
command = "notation version";
};
meta = {
description = "CLI tool to sign and verify OCI artifacts and container images";
homepage = "https://notaryproject.dev/";
license = lib.licenses.asl20;
maintainers = [ ];
mainProgram = "notation";
};
})

View File

@@ -0,0 +1,85 @@
{
lib,
stdenv,
fetchFromGitHub,
cmake,
libdeflate,
libunistring,
ncurses,
pandoc,
pkg-config,
zlib,
multimediaSupport ? true,
ffmpeg,
qrcodegenSupport ? true,
qrcodegen,
}:
stdenv.mkDerivation rec {
pname = "notcurses";
version = "3.0.16";
src = fetchFromGitHub {
owner = "dankamongmen";
repo = "notcurses";
rev = "v${version}";
sha256 = "sha256-qAc9jKFpYgI0SdzKHhzmrPkWg4uSXDetD/oNEmHob2o=";
};
outputs = [
"out"
"dev"
];
nativeBuildInputs = [
cmake
pandoc
pkg-config
];
buildInputs = [
libdeflate
libunistring
ncurses
zlib
]
++ lib.optional qrcodegenSupport qrcodegen
++ lib.optional multimediaSupport ffmpeg;
cmakeFlags =
lib.optional qrcodegenSupport "-DUSE_QRCODEGEN=ON"
++ lib.optional (!multimediaSupport) "-DUSE_MULTIMEDIA=none";
# https://github.com/dankamongmen/notcurses/issues/2661
postPatch = ''
substituteInPlace tools/notcurses-core.pc.in \
--replace '$'{prefix}/@CMAKE_INSTALL_LIBDIR@ @CMAKE_INSTALL_FULL_LIBDIR@ \
--replace '$'{prefix}/@CMAKE_INSTALL_INCLUDEDIR@ @CMAKE_INSTALL_FULL_INCLUDEDIR@
substituteInPlace tools/notcurses-ffi.pc.in \
--replace '$'{prefix}/@CMAKE_INSTALL_LIBDIR@ @CMAKE_INSTALL_FULL_LIBDIR@ \
--replace '$'{prefix}/@CMAKE_INSTALL_INCLUDEDIR@ @CMAKE_INSTALL_FULL_INCLUDEDIR@
substituteInPlace tools/notcurses++.pc.in \
--replace '$'{prefix}/@CMAKE_INSTALL_LIBDIR@ @CMAKE_INSTALL_FULL_LIBDIR@ \
--replace '$'{prefix}/@CMAKE_INSTALL_INCLUDEDIR@ @CMAKE_INSTALL_FULL_INCLUDEDIR@
substituteInPlace tools/notcurses.pc.in \
--replace '$'{prefix}/@CMAKE_INSTALL_LIBDIR@ @CMAKE_INSTALL_FULL_LIBDIR@ \
--replace '$'{prefix}/@CMAKE_INSTALL_INCLUDEDIR@ @CMAKE_INSTALL_FULL_INCLUDEDIR@
'';
meta = with lib; {
homepage = "https://github.com/dankamongmen/notcurses";
description = "Blingful TUIs and character graphics";
longDescription = ''
Notcurses is a library facilitating complex TUIs on modern terminal
emulators, supporting vivid colors, multimedia, and Unicode to the maximum
degree possible. Things can be done with Notcurses that simply can't be
done with NCURSES.
It is not a source-compatible X/Open Curses implementation, nor a
replacement for NCURSES on existing systems.
'';
license = licenses.asl20;
maintainers = [ ];
inherit (ncurses.meta) platforms;
};
}

View File

@@ -0,0 +1,64 @@
{
lib,
stdenv,
fetchFromGitHub,
gtk4,
json-glib,
libadwaita,
libgee,
desktop-file-utils,
meson,
ninja,
nix-update-script,
pkg-config,
vala,
wrapGAppsHook4,
fetchpatch,
}:
stdenv.mkDerivation rec {
pname = "notejot";
version = "3.5.1";
src = fetchFromGitHub {
owner = "lainsce";
repo = "notejot";
rev = version;
hash = "sha256-p5F0OITgfZyvHwndI5r5BE524+nft7A2XfR3BJZFamU=";
};
nativeBuildInputs = [
desktop-file-utils
meson
ninja
pkg-config
vala
wrapGAppsHook4
];
buildInputs = [
gtk4
json-glib
libadwaita
libgee
];
patches = [
# Fixes the compilation error with new Vala compiler. Remove in the next version.
(fetchpatch {
url = "https://github.com/musicinmybrain/notejot/commit/c6a7cfcb792de63fb51eb174f9f3d4e02f6a2ce1.patch";
hash = "sha256-dexPKIpUaAu/p0K2WQpElhPNt86CS+jD0dPL5+CTl4I=";
})
];
passthru.updateScript = nix-update-script { };
meta = with lib; {
homepage = "https://github.com/lainsce/notejot";
description = "Stupidly-simple notes app";
license = licenses.gpl3Plus;
maintainers = [ ];
platforms = platforms.linux;
mainProgram = "io.github.lainsce.Notejot";
};
}

View File

@@ -0,0 +1,38 @@
{
lib,
stdenv,
fetchzip,
pkg-config,
libressl,
}:
stdenv.mkDerivation rec {
pname = "notemap";
version = "1.3";
src = fetchzip {
url = "https://git.causal.agency/notemap/snapshot/notemap-${version}.tar.gz";
sha256 = "0s9c1xx0iggyzclqw3294bjv7qgvd5l5zgbryks4hvfibr73r6ps";
};
nativeBuildInputs = [
pkg-config
];
buildInputs = [
libressl
];
meta = {
description = "Mirror notes to IMAP";
longDescription = ''
notemap(1) mirrors text files to an IMAP mailbox in a format compatible with the iOS
Notes app. It's intended to make notes managed in git(1) easily accessible
from the phone.
'';
license = lib.licenses.gpl3Plus;
maintainers = [ lib.maintainers.sternenseemann ];
homepage = "https://git.causal.agency/notemap/about/";
platforms = lib.platforms.unix;
};
}

View File

@@ -0,0 +1,49 @@
{
lib,
fetchFromGitHub,
qt5,
stdenv,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "notepad-next";
version = "0.12";
src = fetchFromGitHub {
owner = "dail8859";
repo = "NotepadNext";
tag = "v${finalAttrs.version}";
hash = "sha256-YD4tIPh5iJpbcDMZk334k2AV9jTVWCSGP34Mj2x0cJ0=";
# External dependencies - https://github.com/dail8859/NotepadNext/issues/135
fetchSubmodules = true;
};
nativeBuildInputs = [
qt5.qmake
qt5.qttools
qt5.wrapQtAppsHook
];
buildInputs = [ qt5.qtx11extras ];
qmakeFlags = [
"PREFIX=${placeholder "out"}"
"src/NotepadNext.pro"
];
postInstall = lib.optionalString stdenv.hostPlatform.isDarwin ''
mv $out/bin $out/Applications
rm -fr $out/share
mkdir -p $out/bin
ln -s $out/Applications/NotepadNext.app/Contents/MacOS/NotepadNext $out/bin/NotepadNext
'';
meta = {
homepage = "https://github.com/dail8859/NotepadNext";
description = "Cross-platform, reimplementation of Notepad++";
license = lib.licenses.gpl3Plus;
platforms = lib.platforms.unix;
maintainers = with lib.maintainers; [ sebtm ];
broken = stdenv.hostPlatform.isAarch64;
mainProgram = "NotepadNext";
};
})

View File

@@ -0,0 +1,45 @@
{
lib,
stdenv,
fetchFromGitHub,
cmake,
qt6,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "notes";
version = "2.3.1";
src = fetchFromGitHub {
owner = "nuttyartist";
repo = "notes";
tag = "v${finalAttrs.version}";
hash = "sha256-ceZ37torgnxZJybacjnNG+kNAU/I2Ki7ZZ7Tzn4pIas=";
fetchSubmodules = true;
};
cmakeFlags = [ "-DUPDATE_CHECKER=OFF" ];
nativeBuildInputs = [
cmake
qt6.wrapQtAppsHook
];
buildInputs = [
qt6.qtbase
qt6.qtdeclarative
];
postInstall = lib.optionalString stdenv.hostPlatform.isDarwin ''
mkdir $out/Applications
mv $out/bin/Notes.app $out/Applications
'';
meta = {
description = "Fast and beautiful note-taking app";
homepage = "https://github.com/nuttyartist/notes";
mainProgram = "notes";
license = lib.licenses.mpl20;
platforms = lib.platforms.linux ++ lib.platforms.darwin;
maintainers = with lib.maintainers; [ zendo ];
};
})

View File

@@ -0,0 +1,36 @@
{
lib,
fetchFromGitHub,
python3,
imagemagick,
}:
with python3.pkgs;
buildPythonApplication rec {
pname = "noteshrink";
version = "0.1.1";
format = "setuptools";
src = fetchFromGitHub {
owner = "mzucker";
repo = "noteshrink";
rev = version;
sha256 = "0xhrvg3d8ffnbbizsrfppcd2y98znvkgxjdmvbvin458m2rwccka";
};
propagatedBuildInputs = [
numpy
scipy
imagemagick
pillow
];
meta = with lib; {
description = "Convert scans of handwritten notes to beautiful, compact PDFs";
homepage = "https://mzucker.github.io/2016/09/20/noteshrink.html";
license = licenses.mit;
maintainers = with maintainers; [ rnhmjoj ];
mainProgram = "noteshrink";
};
}

View File

@@ -0,0 +1,112 @@
{
lib,
stdenv,
appimageTools,
fetchurl,
makeWrapper,
_7zz,
}:
let
pname = "notesnook";
version = "3.2.4";
inherit (stdenv.hostPlatform) system;
throwSystem = throw "Unsupported system: ${system}";
suffix =
{
x86_64-linux = "linux_x86_64.AppImage";
aarch64-linux = "linux_arm64.AppImage";
x86_64-darwin = "mac_x64.dmg";
aarch64-darwin = "mac_arm64.dmg";
}
.${system} or throwSystem;
src = fetchurl {
url = "https://github.com/streetwriters/notesnook/releases/download/v${version}/notesnook_${suffix}";
hash =
{
x86_64-linux = "sha256-n4yDBaDq09idmjRZ+y2zT7rZcI4wsDhMidx9sNox5cM=";
aarch64-linux = "sha256-UQFySvvs+paCzt2XSrbYiChEQJIbef3rCOST1r+zZx8=";
x86_64-darwin = "sha256-42US8m6ZbGTUNkU0p4y0pgXKiSsjZZHlQhwv2/LDlO4=";
aarch64-darwin = "sha256-eJVyuL5nBGMr8WhOK4NOMNSMYBASQZbsbLPLgug7ZNs=";
}
.${system} or throwSystem;
};
appimageContents = appimageTools.extractType2 {
inherit pname version src;
};
meta = with lib; {
description = "Fully open source & end-to-end encrypted note taking alternative to Evernote";
longDescription = ''
Notesnook is a free (as in speech) & open source note taking app
focused on user privacy & ease of use. To ensure zero knowledge
principles, Notesnook encrypts everything on your device using
XChaCha20-Poly1305 & Argon2.
'';
homepage = "https://notesnook.com";
license = licenses.gpl3Only;
maintainers = with maintainers; [
cig0
j0lol
];
platforms = [
"x86_64-linux"
"aarch64-linux"
"x86_64-darwin"
"aarch64-darwin"
];
mainProgram = "notesnook";
};
linux = appimageTools.wrapType2 rec {
inherit
pname
version
src
meta
;
nativeBuildInputs = [ makeWrapper ];
profile = ''
export LC_ALL=C.UTF-8
'';
extraInstallCommands = ''
wrapProgram $out/bin/notesnook \
--add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform-hint=auto --enable-features=WaylandWindowDecorations}}"
install -Dm444 ${appimageContents}/notesnook.desktop -t $out/share/applications
install -Dm444 ${appimageContents}/notesnook.png -t $out/share/pixmaps
substituteInPlace $out/share/applications/notesnook.desktop \
--replace 'Exec=AppRun --no-sandbox %U' 'Exec=${pname}'
'';
};
darwin = stdenv.mkDerivation {
inherit
pname
version
src
meta
;
nativeBuildInputs = [ _7zz ];
sourceRoot = "Notesnook.app";
# 7zz did not unpack in setup hook for some reason, done manually here
unpackPhase = ''
7zz x $src
'';
installPhase = ''
mkdir -p $out/Applications/Notesnook.app
cp -R . $out/Applications/Notesnook.app
'';
};
in
if stdenv.hostPlatform.isDarwin then darwin else linux

View File

@@ -0,0 +1,52 @@
{
lib,
buildGoModule,
fetchFromGitHub,
installShellFiles,
}:
buildGoModule (finalAttrs: {
pname = "noti";
version = "3.8.0";
src = fetchFromGitHub {
owner = "variadico";
repo = "noti";
tag = finalAttrs.version;
hash = "sha256-FwOS4ifMiODIzKVQufLhkDYOcmXz9dAfWw+hM3rXT/Y=";
};
vendorHash = null;
nativeBuildInputs = [ installShellFiles ];
subPackages = [ "cmd/noti" ];
ldflags = [
"-s"
"-w"
"-X github.com/variadico/noti/internal/command.Version=${finalAttrs.version}"
];
preCheck = ''
export PATH=$out/bin:$PATH
'';
postInstall = ''
installManPage docs/man/dist/*
'';
meta = {
description = "Monitor a process and trigger a notification";
longDescription = ''
Monitor a process and trigger a notification.
Never sit and wait for some long-running process to finish. Noti can alert
you when it's done. You can receive messages on your computer or phone.
'';
homepage = "https://github.com/variadico/noti";
license = lib.licenses.mit;
maintainers = [ lib.maintainers.stites ];
mainProgram = "noti";
};
})

View File

@@ -0,0 +1,65 @@
{
lib,
stdenv,
fetchFromGitHub,
meson,
ninja,
pkg-config,
rustPlatform,
rustc,
cargo,
capnproto,
blueprint-compiler,
wrapGAppsHook4,
desktop-file-utils,
libadwaita,
gtksourceview5,
openssl,
sqlite,
}:
stdenv.mkDerivation rec {
pname = "notify-client";
version = "0.1.5";
src = fetchFromGitHub {
owner = "ranfdev";
repo = "notify";
rev = "v${version}";
hash = "sha256-0p/XIGaawreGHbMRoHNmUEIxgwEgigtrubeJpndHsug=";
};
cargoDeps = rustPlatform.fetchCargoVendor {
inherit pname version src;
hash = "sha256-hnv4XXsx/kmhH4YUTdTvvxxjbguHBx3TnUKacGwnCTw=";
};
nativeBuildInputs = [
meson
ninja
pkg-config
rustPlatform.cargoSetupHook
rustc
cargo
capnproto
blueprint-compiler
wrapGAppsHook4
desktop-file-utils
];
buildInputs = [
libadwaita
gtksourceview5
openssl
sqlite
];
meta = with lib; {
description = "Ntfy client application to receive everyday's notifications";
homepage = "https://github.com/ranfdev/Notify";
license = licenses.gpl3Plus;
mainProgram = "notify";
maintainers = with maintainers; [ aleksana ];
platforms = platforms.linux;
};
}

View File

@@ -0,0 +1,41 @@
{
lib,
stdenv,
fetchFromGitHub,
dbus,
pkg-config,
}:
stdenv.mkDerivation {
pname = "notify-desktop";
version = "0.2.0";
src = fetchFromGitHub {
owner = "nowrep";
repo = "notify-desktop";
rev = "9863919fb4ce7820810ac14a09a46ee73c3d56cc";
sha256 = "1brcvl2fx0yzxj9mc8hzfl32zdka1f1bxpzsclcsjplyakyinr1a";
};
nativeBuildInputs = [ pkg-config ];
buildInputs = [ dbus ];
installPhase = ''
mkdir -p $out/bin
install -m 755 bin/notify-desktop $out/bin/notify-desktop
'';
meta = with lib; {
description = "Little application that lets you send desktop notifications with one command";
longDescription = ''
It's basically clone of notify-send from libnotify,
but it supports reusing notifications on screen by passing its ID.
It also does not use any external dependencies (except from libdbus of course).
'';
homepage = "https://github.com/nowrep/notify-desktop";
license = licenses.gpl2Plus;
platforms = platforms.unix;
maintainers = with maintainers; [ ylwghst ];
mainProgram = "notify-desktop";
};
}

View File

@@ -0,0 +1,60 @@
{
lib,
stdenv,
dbus-glib,
fetchurl,
glib,
gnome-common,
libnotify,
libtool,
libwnck,
makeWrapper,
pkg-config,
gsettings-desktop-schemas,
}:
let
baseURI = "https://launchpad.net/~leolik/+archive/leolik";
in
stdenv.mkDerivation rec {
pname = "notify-osd";
version = "0.9.35+16.04.20160415";
src = fetchurl {
url = "${baseURI}/+files/notify-osd_${version}-0ubuntu1-leolik~ppa0.tar.gz";
sha256 = "026dr46jh3xc4103wnslzy7pxbxkkpflh52c59j8vzwaa7bvvzkv";
name = "notify-osd-customizable.tar.gz";
};
preConfigure = "./autogen.sh --libexecdir=$(out)/bin";
nativeBuildInputs = [
pkg-config
makeWrapper
libtool
];
buildInputs = [
glib
libwnck
libnotify
dbus-glib
gsettings-desktop-schemas
gnome-common
];
configureFlags = [ "--libexecdir=$(out)/bin" ];
preFixup = ''
wrapProgram "$out/bin/notify-osd" \
--prefix XDG_DATA_DIRS : "$GSETTINGS_SCHEMAS_PATH"
'';
meta = with lib; {
description = "Daemon that displays passive pop-up notifications";
mainProgram = "notify-osd";
homepage = "https://launchpad.net/notify-osd";
license = licenses.gpl3;
maintainers = [ maintainers.imalison ];
platforms = platforms.linux;
};
}

View File

@@ -0,0 +1,72 @@
{
lib,
stdenv,
fetchzip,
pkg-config,
glib,
libwnck,
libnotify,
libtool,
dbus-glib,
makeWrapper,
gnome-common,
gsettings-desktop-schemas,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "notify-osd";
version = "0.9.35+20.04.20191129";
src = fetchzip {
url = "https://launchpad.net/ubuntu/+archive/primary/+files/notify-osd_${finalAttrs.version}.orig.tar.gz";
sha256 = "sha256-aSU83HoWhHZtob8NFHFYNUIIZAecvQ/p0z62KMlQNCU=";
stripRoot = false;
};
nativeBuildInputs = [
pkg-config
makeWrapper
libtool
];
buildInputs = [
glib
libwnck
libnotify
dbus-glib
gsettings-desktop-schemas
gnome-common
];
env = {
NIX_CFLAGS_COMPILE = "-fpermissive";
};
# deprecated function: g_memdup
postPatch = ''
substituteInPlace src/stack.c \
--replace-fail "g_memdup" "g_memdup2"
'';
preConfigure = ''
NOCONFIGURE=1 ./autogen.sh
'';
configureFlags = [
''--libexecdir=$(out)/bin''
];
preFixup = ''
wrapProgram "$out/bin/notify-osd" \
--prefix XDG_DATA_DIRS : "$GSETTINGS_SCHEMAS_PATH"
'';
meta = {
description = "Daemon that displays passive pop-up notifications";
mainProgram = "notify-osd";
homepage = "https://launchpad.net/notify-osd";
license = lib.licenses.gpl3;
maintainers = with lib.maintainers; [ bodil ];
platforms = lib.platforms.linux;
};
})

View File

@@ -0,0 +1,44 @@
{
lib,
buildGoModule,
fetchFromGitHub,
nix-update-script,
}:
buildGoModule rec {
pname = "notify";
version = "1.0.7";
src = fetchFromGitHub {
owner = "projectdiscovery";
repo = "notify";
rev = "v${version}";
sha256 = "sha256-QXioBUCMZ4ANkF2WOXiKUlExVq4abkaVFBd3efAGXMs=";
};
vendorHash = "sha256-jO9d+wJr03rqlPrQ3mmWOxOXw2kL+0x8YkkXu/Msm+Q=";
modRoot = ".";
subPackages = [
"cmd/notify/"
];
# Test files are not part of the release tarball
doCheck = false;
passthru = {
updateScript = nix-update-script { };
};
meta = with lib; {
description = "Allows sending the output from any tool to Slack, Discord and Telegram";
longDescription = ''
Notify is a helper utility written in Go that allows you to post the output from any tool
to Slack, Discord, and Telegram.
'';
homepage = "https://github.com/projectdiscovery/notify";
license = licenses.mit;
maintainers = with maintainers; [ hanemile ];
mainProgram = "notify";
};
}

View File

@@ -0,0 +1,53 @@
{
lib,
fetchFromGitHub,
gobject-introspection,
libnotify,
wrapGAppsHook3,
gtk3,
python3,
}:
python3.pkgs.buildPythonApplication {
pname = "notifymuch";
version = "0.1";
format = "setuptools";
src = fetchFromGitHub {
owner = "kspi";
repo = "notifymuch";
# https://github.com/kspi/notifymuch/issues/11
rev = "9d4aaf54599282ce80643b38195ff501120807f0";
sha256 = "1lssr7iv43mp5v6nzrfbqlfzx8jcc7m636wlfyhhnd8ydd39n6k4";
};
propagatedBuildInputs = [
libnotify
gtk3
]
++ (with python3.pkgs; [
notmuch
pygobject3
]);
nativeBuildInputs = [
gobject-introspection
wrapGAppsHook3
];
dontWrapGApps = true;
preFixup = ''
makeWrapperArgs+=("''${gappsWrapperArgs[@]}")
'';
strictDeps = false;
meta = with lib; {
description = "Display desktop notifications for unread mail in a notmuch database";
mainProgram = "notifymuch";
homepage = "https://github.com/kspi/notifymuch";
maintainers = with maintainers; [ arjan-s ];
license = licenses.gpl3;
};
}

View File

@@ -0,0 +1,35 @@
{
appimageTools,
lib,
fetchurl,
}:
let
pname = "notion-app-enhanced";
version = "2.0.18-1";
src = fetchurl {
url = "https://github.com/notion-enhancer/notion-repackaged/releases/download/v${version}/Notion-Enhanced-${version}.AppImage";
sha256 = "sha256-SqeMnoMzxxaViJ3NPccj3kyMc1xvXWULM6hQIDZySWY=";
};
appimageContents = appimageTools.extract { inherit pname version src; };
in
appimageTools.wrapType2 {
inherit pname version src;
extraInstallCommands = ''
install -m 444 -D ${appimageContents}/${pname}.desktop -t $out/share/applications
substituteInPlace $out/share/applications/${pname}.desktop \
--replace 'Exec=AppRun' 'Exec=${pname}'
cp -r ${appimageContents}/usr/share/icons $out/share
'';
meta = with lib; {
description = "Notion Desktop builds with Notion Enhancer for Windows, MacOS and Linux";
homepage = "https://github.com/notion-enhancer/desktop";
license = licenses.unfree;
maintainers = with maintainers; [ sei40kr ];
platforms = [ "x86_64-linux" ];
mainProgram = "notion-app-enhanced";
};
}

View File

@@ -0,0 +1,12 @@
{
"x86_64-darwin": {
"version": "4.9.1",
"url": "https://desktop-release.notion-static.com/Notion-4.9.1.zip",
"hash": "sha512-q32pytnWo9YIXqWFvEa7Pw2FI1S0EAR5O0O33At2l7OVCJLytdV0BavsZtMP+xhDw51TUUYnDsMzkXoTVAzaCQ=="
},
"aarch64-darwin": {
"version": "4.9.1",
"url": "https://desktop-release.notion-static.com/Notion-arm64-4.9.1.zip",
"hash": "sha512-DFgQOevvIDIq3zG0O3x3kwmDmtEtpifw0MIB7CPmuAhAix7LJwM2+FxeOXr1YlJF0MaAja5kllMWSyK993Qijw=="
}
}

View File

@@ -0,0 +1,42 @@
{
lib,
stdenvNoCC,
fetchurl,
unzip,
}:
let
info =
(lib.importJSON ./info.json)."${stdenvNoCC.hostPlatform.parsed.cpu.name}-darwin"
or (throw "Unsupported CPU architecture: ${stdenvNoCC.hostPlatform.parsed.cpu.name}");
in
stdenvNoCC.mkDerivation (finalAttrs: {
pname = "notion-app";
version = info.version;
src = fetchurl { inherit (info) url hash; };
sourceRoot = ".";
nativeBuildInputs = [ unzip ];
installPhase = ''
runHook preInstall
mkdir -p $out/Applications
mv Notion.app $out/Applications
runHook postInstall
'';
passthru.updateScript = ./update/update.mjs;
meta = {
description = "App to write, plan, collaborate, and get organised";
homepage = "https://www.notion.so/";
license = lib.licenses.unfree;
maintainers = with lib.maintainers; [ xiaoxiangmoe ];
platforms = [
"x86_64-darwin"
"aarch64-darwin"
];
sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
};
})

View File

@@ -0,0 +1,9 @@
{
"compilerOptions": {
"allowJs": true,
"checkJs": true,
"module": "NodeNext",
"noEmit": true,
"strict": true
}
}

View File

@@ -0,0 +1,88 @@
#!/usr/bin/env nix-shell
/*
#!nix-shell -i node --pure --packages cacert nodejs yq-go
*/
import * as assert from "node:assert/strict";
import * as child_process from "node:child_process";
import * as fsPromises from "node:fs/promises";
import * as path from "node:path";
const __dirname = import.meta.dirname;
/** @typedef {{
version: string;
path: `${string}.zip`;
sha512: string;
releaseDate: string;
files: Array<{ url: string; sha512: string; size: number }>;
}} LiveCheckInfo */
/** @typedef {{
version: string;
url: string;
hash: `sha512-${string}`;
}} Info */
/** @typedef {{
"x86_64-darwin": Info;
"aarch64-darwin": Info;
}} InfoMap */
const BASE_URL = "https://desktop-release.notion-static.com/";
/**
*
* @param {"latest-mac.yml" | "arm64-mac.yml"} liveCheckFile
* @returns {Promise<Info>}
*/
async function getInfo(liveCheckFile) {
const url = /** @type {const} */ (`${BASE_URL}${liveCheckFile}`);
const response = await fetch(url);
assert.ok(response.ok, `Failed to fetch ${url}`);
/** @type {LiveCheckInfo} */
const { version, path, sha512 } = JSON.parse(
child_process
.execSync(`yq eval --output-format=json`, {
input: Buffer.from(await response.arrayBuffer()),
})
.toString()
);
assert.ok(version, "version is required");
assert.ok(path, "path is required");
assert.ok(sha512, "sha512 is required");
return {
version,
url: BASE_URL + path,
hash: `sha512-${sha512}`,
};
}
async function main() {
const filePath = path.join(__dirname, "../info.json");
/** @type {InfoMap} */
const oldInfo = JSON.parse(
await fsPromises.readFile(filePath, { encoding: "utf-8" })
);
/** @type {InfoMap} */
const info = {
"x86_64-darwin": await getInfo("latest-mac.yml"),
"aarch64-darwin": await getInfo("arm64-mac.yml"),
};
if (JSON.stringify(oldInfo) === JSON.stringify(info)) {
console.log("[update] No updates found");
return;
}
const platforms = /** @type {const} */ (["x86_64-darwin", "aarch64-darwin"]);
for (const platform of platforms) {
console.log(
`[update] Updating Notion ${platform} ${oldInfo[platform].version} -> ${info[platform].version}`
);
}
await fsPromises.writeFile(
filePath,
JSON.stringify(info, null, 2) + "\n",
"utf-8"
);
console.log("[update] Updating Notion complete");
}
main();

View File

@@ -0,0 +1,92 @@
{
lib,
stdenv,
fetchFromGitHub,
fontconfig,
gettext,
groff,
libSM,
libX11,
libXext,
libXft,
libXinerama,
libXrandr,
lua,
makeWrapper,
pkg-config,
readline,
which,
xmessage,
xterm,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "notion";
version = "4.0.4";
src = fetchFromGitHub {
owner = "raboof";
repo = "notion";
tag = finalAttrs.version;
hash = "sha256-L7WL8zn1Qkf5sqrhqZJqFe4B1l9ULXI3pt3Jpc87huk=";
};
nativeBuildInputs = [
gettext
groff
lua
makeWrapper
pkg-config
which
];
buildInputs = [
fontconfig
libSM
libX11
libXext
libXft
libXinerama
libXrandr
lua
readline
];
outputs = [
"out"
"man"
];
strictDeps = true;
buildFlags = [
"LUA_DIR=${lua}"
"X11_PREFIX=/no-such-path"
];
makeFlags = [
"NOTION_RELEASE=${finalAttrs.version}"
"PREFIX=${placeholder "out"}"
];
postInstall = ''
wrapProgram $out/bin/notion \
--prefix PATH ":" "${
lib.makeBinPath [
xmessage
xterm
]
}" \
'';
meta = {
description = "Tiling tabbed window manager";
homepage = "https://notionwm.net";
license = lib.licenses.lgpl21;
mainProgram = "notion";
maintainers = with lib.maintainers; [
raboof
NotAShelf
];
platforms = lib.platforms.linux;
};
})

View File

@@ -0,0 +1,40 @@
{
lib,
stdenv,
fetchFromGitHub,
pkg-config,
glib,
notmuch,
}:
let
version = "10";
in
stdenv.mkDerivation {
pname = "notmuch-addrlookup";
inherit version;
src = fetchFromGitHub {
owner = "aperezdc";
repo = "notmuch-addrlookup-c";
rev = "v${version}";
sha256 = "sha256-Z59MAptJw95azdK0auOuUyxBrX4PtXwnRNPkhjgI6Ro=";
};
nativeBuildInputs = [ pkg-config ];
buildInputs = [
glib
notmuch
];
installPhase = "install -D notmuch-addrlookup $out/bin/notmuch-addrlookup";
meta = with lib; {
description = "Address lookup tool for Notmuch in C";
homepage = "https://github.com/aperezdc/notmuch-addrlookup-c";
maintainers = with maintainers; [ mog ];
platforms = platforms.unix;
license = licenses.mit;
mainProgram = "notmuch-addrlookup";
};
}

View File

@@ -0,0 +1,63 @@
{
lib,
stdenv,
fetchFromGitHub,
mercury,
pandoc,
ncurses,
gpgme,
coreutils,
file,
}:
stdenv.mkDerivation rec {
pname = "notmuch-bower";
version = "1.1.1";
src = fetchFromGitHub {
owner = "wangp";
repo = "bower";
rev = version;
sha256 = "sha256-THIMCIk6ugPpogfQ5DTHIgFD7no5IIVYfz2mqBvKBlY=";
};
nativeBuildInputs = [
mercury
pandoc
];
postPatch = ''
substituteInPlace src/compose.m --replace 'shell_quoted("base64' 'shell_quoted("${coreutils}/bin/base64'
substituteInPlace src/detect_mime_type.m --replace 'shell_quoted("file' 'shell_quoted("${file}/bin/file'
'';
buildInputs = [
ncurses
gpgme
];
makeFlags = [
"PARALLEL=-j$(NIX_BUILD_CORES)"
"bower"
"man"
];
installPhase = ''
runHook preInstall
mkdir -p $out/bin
mv bower $out/bin/
mkdir -p $out/share/man/man1
mv bower.1 $out/share/man/man1/
runHook postInstall
'';
enableParallelBuilding = true;
meta = with lib; {
homepage = "https://github.com/wangp/bower";
description = "Curses terminal client for the Notmuch email system";
mainProgram = "bower";
maintainers = with maintainers; [ jgart ];
license = licenses.gpl3Plus;
platforms = platforms.linux;
};
}

View File

@@ -0,0 +1,59 @@
{
notmuch,
lib,
fetchFromGitHub,
rustPlatform,
pkg-config,
lua5_4,
installShellFiles,
nix-update-script,
}:
rustPlatform.buildRustPackage rec {
pname = "notmuch-mailmover";
version = "0.7.1";
src = fetchFromGitHub {
owner = "michaeladler";
repo = "notmuch-mailmover";
rev = "v${version}";
hash = "sha256-fJljqNSPLM1JiyeGMNvub/4wk5L9+lVTqtgCdoe7S88=";
};
cargoHash = "sha256-PeSlErwGBCZECYoWqmJrlRY7peNNY7c/wxd6R09uUz4=";
nativeBuildInputs = [
installShellFiles
pkg-config
];
buildInputs = [
notmuch
lua5_4
];
postInstall = ''
installManPage share/notmuch-mailmover.1.gz
mkdir -p $out/share/notmuch-mailmover
cp -dR example $out/share/notmuch-mailmover/
installShellCompletion --cmd notmuch-mailmover \
--bash share/notmuch-mailmover.bash \
--fish share/notmuch-mailmover.fish \
--zsh share/_notmuch-mailmover
'';
passthru.updateScript = nix-update-script { };
meta = with lib; {
description = "Application to assign notmuch tagged mails to IMAP folders";
mainProgram = "notmuch-mailmover";
homepage = "https://github.com/michaeladler/notmuch-mailmover/";
license = licenses.asl20;
maintainers = with maintainers; [
michaeladler
archer-65
];
platforms = platforms.all;
};
}

View File

@@ -0,0 +1,61 @@
{
lib,
stdenvNoCC,
fetchFromGitHub,
nixosTests,
gitUpdater,
static ? false,
}:
stdenvNoCC.mkDerivation rec {
pname = "noto-fonts-cjk-sans";
version = "2.004";
src = fetchFromGitHub {
owner = "notofonts";
repo = "noto-cjk";
tag = "Sans${version}";
hash = "sha256-i3ZKoSy2SVs46IViha+Sg8atH4n3ywgrunHPLtVT4Pk=";
sparseCheckout = [
"Sans/OTC"
"Sans/Variable/OTC"
];
};
installPhase =
let
font-path = if static then "Sans/OTC/*.ttc" else "Sans/Variable/OTC/*.otf.ttc";
in
''
install -m444 -Dt $out/share/fonts/opentype/noto-cjk ${font-path}
'';
passthru.tests.noto-fonts = nixosTests.noto-fonts;
passthru.updateScript = gitUpdater {
rev-prefix = "Sans";
};
meta = {
description = "Beautiful and free fonts for CJK languages";
homepage = "https://www.google.com/get/noto/help/cjk/";
longDescription = ''
Noto Sans CJK is a sans typeface designed as
an intermediate style between the modern and traditional. It is
intended to be a multi-purpose digital font for user interface
designs, digital content, reading on laptops, mobile devices, and
electronic books. Noto Sans CJK comprehensively covers
Simplified Chinese, Traditional Chinese, Japanese, and Korean in a
unified font family. It supports regional variants of ideographic
characters for each of the four languages. In addition, it supports
Japanese kana, vertical forms, and variant characters (itaiji); it
supports Korean hangeul both contemporary and archaic.
'';
license = lib.licenses.ofl;
platforms = lib.platforms.all;
maintainers = with lib.maintainers; [
mathnerd314
emily
];
};
}

View File

@@ -0,0 +1,62 @@
{
lib,
stdenvNoCC,
fetchFromGitHub,
nixosTests,
gitUpdater,
static ? false, # whether to build the static version of the font
}:
stdenvNoCC.mkDerivation rec {
pname = "noto-fonts-cjk-serif";
version = "2.003";
src = fetchFromGitHub {
owner = "notofonts";
repo = "noto-cjk";
tag = "Serif${version}";
hash = "sha256-Bwuu64TAnOnqUgLlBsUw/jnv9emngqFBmVn6zEqySlc=";
sparseCheckout = [
"Serif/OTC"
"Serif/Variable/OTC"
];
};
installPhase =
let
font-path = if static then "Serif/OTC/*.ttc" else "Serif/Variable/OTC/*.otf.ttc";
in
''
install -m444 -Dt $out/share/fonts/opentype/noto-cjk ${font-path}
'';
passthru.tests.noto-fonts = nixosTests.noto-fonts;
passthru.updateScript = gitUpdater {
rev-prefix = "Serif";
};
meta = with lib; {
description = "Beautiful and free fonts for CJK languages";
homepage = "https://www.google.com/get/noto/help/cjk/";
longDescription = ''
Noto Serif CJK is a serif typeface designed as
an intermediate style between the modern and traditional. It is
intended to be a multi-purpose digital font for user interface
designs, digital content, reading on laptops, mobile devices, and
electronic books. Noto Serif CJK comprehensively covers
Simplified Chinese, Traditional Chinese, Japanese, and Korean in a
unified font family. It supports regional variants of ideographic
characters for each of the four languages. In addition, it supports
Japanese kana, vertical forms, and variant characters (itaiji); it
supports Korean hangeul both contemporary and archaic.
'';
license = licenses.ofl;
platforms = platforms.all;
maintainers = with maintainers; [
mathnerd314
emily
leana8959
];
};
}

View File

@@ -0,0 +1,79 @@
{
lib,
stdenvNoCC,
fetchFromGitHub,
buildPackages,
python3Packages,
pkg-config,
cairo,
imagemagick,
zopfli,
nototools,
pngquant,
which,
}:
stdenvNoCC.mkDerivation rec {
pname = "noto-fonts-color-emoji";
version = "2.051";
src = fetchFromGitHub {
owner = "googlefonts";
repo = "noto-emoji";
rev = "v${version}";
hash = "sha256-qngf8t5fLYAOtO2GMhbMv7I34RO/eYfNawW+Th/uaYQ=";
};
strictDeps = true;
depsBuildBuild = [
buildPackages.stdenv.cc
pkg-config
cairo
];
nativeBuildInputs = [
imagemagick
zopfli
nototools
pngquant
which
python3Packages.fonttools
];
postPatch = ''
patchShebangs *.py
patchShebangs third_party/color_emoji/*.py
# remove check for virtualenv, since we handle
# python requirements using python.withPackages
sed -i '/ifndef VIRTUAL_ENV/,+2d' Makefile
# Make the build verbose so it won't get culled by Hydra thinking that
# it somehow got stuck doing nothing.
sed -i 's;\t@;\t;' Makefile
'';
buildFlags = [ "BYPASS_SEQUENCE_CHECK=True" ];
enableParallelBuilding = true;
installPhase = ''
runHook preInstall
mkdir -p $out/share/fonts/noto
cp NotoColorEmoji.ttf $out/share/fonts/noto
runHook postInstall
'';
meta = {
description = "Color emoji font";
homepage = "https://github.com/googlefonts/noto-emoji";
license = with lib.licenses; [
ofl
asl20
];
platforms = lib.platforms.all;
maintainers = with lib.maintainers; [
mathnerd314
sternenseemann
];
};
}

View File

@@ -0,0 +1,37 @@
{
lib,
stdenvNoCC,
fetchurl,
}:
stdenvNoCC.mkDerivation rec {
pname = "noto-fonts-emoji-blob-bin";
version = "15.0";
src = fetchurl {
url = "https://github.com/C1710/blobmoji/releases/download/v${version}/Blobmoji.ttf";
hash = "sha256-3MPWZ1A2ups171dNIiFTJ3C1vZiGy6I8ZF70aUfrePk=";
};
dontUnpack = true;
installPhase = ''
runHook preInstall
install -Dm 444 $src $out/share/fonts/blobmoji/Blobmoji.ttf
runHook postInstall
'';
meta = {
description = "Noto Emoji with extended Blob support";
homepage = "https://github.com/C1710/blobmoji";
license = with lib.licenses; [
ofl
asl20
];
platforms = lib.platforms.all;
maintainers = with lib.maintainers; [
rileyinman
jk
];
};
}

View File

@@ -0,0 +1,40 @@
{
lib,
stdenvNoCC,
fetchFromGitHub,
rename,
}:
stdenvNoCC.mkDerivation {
pname = "noto-fonts-monochrome-emoji";
version = "3.000";
src = fetchFromGitHub {
owner = "google";
repo = "fonts";
rev = "a73b9ab0a5df191bcfed817159a903911ea7958a";
hash = "sha256-qVFU4uZius8oFPJCIL9ek2YdS3jru5mmTHp2L9RIXfg=";
sparseCheckout = [ "ofl/notoemoji" ];
};
installPhase = ''
runHook preInstall
install -m444 -Dt $out/share/fonts/noto ofl/notoemoji/*.ttf
${rename}/bin/rename 's/\[.*\]//' $out/share/fonts/noto/*
runHook postInstall
'';
passthru.updateScript = ./update.sh;
meta = {
description = "Monochrome emoji font";
homepage = "https://fonts.google.com/noto/specimen/Noto+Emoji";
license = [ lib.licenses.ofl ];
maintainers = [ lib.maintainers.nicoo ];
platforms = lib.platforms.all;
sourceProvenance = [ lib.sourceTypes.binaryBytecode ];
};
}

View File

@@ -0,0 +1,25 @@
#!/usr/bin/env nix-shell
#! nix-shell -i bash -p common-updater-scripts git nix-prefetch
tmpdir=$(mktemp -d)
git -C "$tmpdir" init --initial-branch main
git -C "$tmpdir" config core.sparseCheckout true
git -C "$tmpdir" remote add origin https://github.com/google/fonts.git
echo "ofl/notoemoji/*" > "$tmpdir/.git/info/sparse-checkout"
git -C "$tmpdir" fetch origin main
git -C "$tmpdir" checkout main
newrev=$(git -C "$tmpdir" rev-list -1 HEAD "ofl/notoemoji/*.ttf")
newver=$(grep 'archive:' "$tmpdir/ofl/notoemoji/upstream.yaml" | grep -oP '(?<=v)[0-9]+\.[0-9]+')
newhash=$(nix-prefetch "{ stdenv, fetchurl }: stdenv.mkDerivation {
name = \"noto-fonts-cjk-serif\";
src = fetchFromGitHub {
owner = \"google\";
repo = \"fonts\";
rev = \"$newrev\";
sparseCheckout = [ \"ofl/notoemoji\" ];
};
}")
update-source-version noto-fonts-monochrome-emoji "$newver" "$newhash" --rev="$newrev"

View File

@@ -0,0 +1,94 @@
{
lib,
stdenvNoCC,
fetchFromGitHub,
gitUpdater,
nixosTests,
variants ? [ ],
suffix ? "",
longDescription ? ''
When text is rendered by a computer, sometimes characters are
displayed as tofu. They are little boxes to indicate your device
doesnt have a font to display the text.
Google has been developing a font family called Noto, which aims to
support all languages with a harmonious look and feel. Noto is
Googles answer to tofu. The name noto is to convey the idea that
Googles goal is to see no more tofu. Noto has multiple styles and
weights, and freely available to all.
'',
}:
stdenvNoCC.mkDerivation rec {
pname = "noto-fonts${suffix}";
version = "2025.10.01";
src = fetchFromGitHub {
owner = "notofonts";
repo = "notofonts.github.io";
rev = "noto-monthly-release-${version}";
hash = "sha256-SIF6G84sUvFSVatmZdF1zQve3pOYtlawJIXYFSW2srI=";
};
outputs = [
"out"
"megamerge" # Experimental fonts created by merging regular notofonts
];
_variants = map (variant: builtins.replaceStrings [ " " ] [ "" ] variant) variants;
installPhase = ''
# We check availability in order of variable -> otf -> ttf
# unhinted -- the hinted versions use autohint
# maintaining maximum coverage.
#
# We have a mix of otf and ttf fonts
local out_font=$out/share/fonts/noto
install -m444 -Dt $megamerge/share/fonts/truetype/ megamerge/*.ttf
''
+ (
if _variants == [ ] then
''
for folder in $(ls -d fonts/*/); do
if [[ -d "$folder"unhinted/variable-ttf ]]; then
install -m444 -Dt $out_font "$folder"unhinted/variable-ttf/*.ttf
elif [[ -d "$folder"unhinted/otf ]]; then
install -m444 -Dt $out_font "$folder"unhinted/otf/*.otf
else
install -m444 -Dt $out_font "$folder"unhinted/ttf/*.ttf
fi
done
''
else
''
for variant in $_variants; do
if [[ -d fonts/"$variant"/unhinted/variable-ttf ]]; then
install -m444 -Dt $out_font fonts/"$variant"/unhinted/variable-ttf/*.ttf
elif [[ -d fonts/"$variant"/unhinted/otf ]]; then
install -m444 -Dt $out_font fonts/"$variant"/unhinted/otf/*.otf
else
install -m444 -Dt $out_font fonts/"$variant"/unhinted/ttf/*.ttf
fi
done
''
);
passthru.updateScript = gitUpdater {
rev-prefix = "noto-monthly-release-";
};
passthru.tests = { inherit (nixosTests) noto-fonts; };
meta = {
description = "Beautiful and free fonts for many languages";
homepage = "https://www.google.com/get/noto/";
inherit longDescription;
license = lib.licenses.ofl;
platforms = lib.platforms.all;
maintainers = with lib.maintainers; [
mathnerd314
emily
jopejoe1
];
};
}

View File

@@ -0,0 +1,64 @@
{
lib,
fetchFromGitHub,
stdenvNoCC,
fontforge,
python3,
}:
let
python3' = python3.withPackages (
ps: with ps; [
fonttools
ttfautohint-py
]
);
in
stdenvNoCC.mkDerivation rec {
pname = "notonoto-35";
version = "0.0.3";
src = fetchFromGitHub {
owner = "yuru7";
repo = "NOTONOTO";
tag = "v${version}";
hash = "sha256-1dbx4yC8gL41OEAE/LNDyoDb4xhAwV5h8oRmdlPULUo=";
};
# ttfautohint: unrecognized option '--epoch'
postPatch = ''
substituteInPlace fonttools_script.py \
--replace-fail 'print("exec hinting", options_)' 'options_.pop("epoch", None)'
'';
nativeBuildInputs = [
fontforge
python3'
];
buildPhase = ''
runHook preBuild
fontforge --script fontforge_script.py --35
python3 ./fonttools_script.py
runHook postBuild
'';
installPhase = ''
runHook preInstall
install -Dm444 build/*.ttf -t $out/share/fonts/truetype/notonoto-35
runHook postInstall
'';
meta = {
description = "Programming font that combines Noto Sans Mono and Noto Sans JP";
homepage = "https://github.com/yuru7/NOTONOTO";
license = lib.licenses.ofl;
maintainers = with lib.maintainers; [ genga898 ];
platforms = lib.platforms.all;
};
}

View File

@@ -0,0 +1,64 @@
{
lib,
fetchFromGitHub,
stdenvNoCC,
fontforge,
python3,
}:
let
python3' = python3.withPackages (
ps: with ps; [
fonttools
ttfautohint-py
]
);
in
stdenvNoCC.mkDerivation rec {
pname = "notonoto-console";
version = "0.0.3";
src = fetchFromGitHub {
owner = "yuru7";
repo = "NOTONOTO";
tag = "v${version}";
hash = "sha256-1dbx4yC8gL41OEAE/LNDyoDb4xhAwV5h8oRmdlPULUo=";
};
# ttfautohint: unrecognized option '--epoch'
postPatch = ''
substituteInPlace fonttools_script.py \
--replace-fail 'print("exec hinting", options_)' 'options_.pop("epoch", None)'
'';
nativeBuildInputs = [
fontforge
python3'
];
buildPhase = ''
runHook preBuild
fontforge --script fontforge_script.py --console
python3 ./fonttools_script.py
runHook postBuild
'';
installPhase = ''
runHook preInstall
install -Dm444 build/*.ttf -t $out/share/fonts/truetype/notonoto-console
runHook postInstall
'';
meta = {
description = "Programming font that combines Noto Sans Mono and Noto Sans JP";
homepage = "https://github.com/yuru7/NOTONOTO";
license = lib.licenses.ofl;
maintainers = with lib.maintainers; [ genga898 ];
platforms = lib.platforms.all;
};
}

View File

@@ -0,0 +1,64 @@
{
lib,
fetchFromGitHub,
stdenvNoCC,
fontforge,
python3,
}:
let
python3' = python3.withPackages (
ps: with ps; [
fonttools
ttfautohint-py
]
);
in
stdenvNoCC.mkDerivation rec {
pname = "notonoto-hs-35";
version = "0.0.3";
src = fetchFromGitHub {
owner = "yuru7";
repo = "NOTONOTO";
tag = "v${version}";
hash = "sha256-1dbx4yC8gL41OEAE/LNDyoDb4xhAwV5h8oRmdlPULUo=";
};
# ttfautohint: unrecognized option '--epoch'
postPatch = ''
substituteInPlace fonttools_script.py \
--replace-fail 'print("exec hinting", options_)' 'options_.pop("epoch", None)'
'';
nativeBuildInputs = [
fontforge
python3'
];
buildPhase = ''
runHook preBuild
fontforge --script fontforge_script.py --hidden-zenkaku-space --35
python3 ./fonttools_script.py
runHook postBuild
'';
installPhase = ''
runHook preInstall
install -Dm444 build/*.ttf -t $out/share/fonts/truetype/notonoto-hs-35
runHook postInstall
'';
meta = {
description = "Programming font that combines Noto Sans Mono and Noto Sans JP";
homepage = "https://github.com/yuru7/NOTONOTO";
license = lib.licenses.ofl;
maintainers = with lib.maintainers; [ genga898 ];
platforms = lib.platforms.all;
};
}

View File

@@ -0,0 +1,64 @@
{
lib,
fetchFromGitHub,
stdenvNoCC,
fontforge,
python3,
}:
let
python3' = python3.withPackages (
ps: with ps; [
fonttools
ttfautohint-py
]
);
in
stdenvNoCC.mkDerivation rec {
pname = "notonoto-hs-console";
version = "0.0.3";
src = fetchFromGitHub {
owner = "yuru7";
repo = "NOTONOTO";
tag = "v${version}";
hash = "sha256-1dbx4yC8gL41OEAE/LNDyoDb4xhAwV5h8oRmdlPULUo=";
};
# ttfautohint: unrecognized option '--epoch'
postPatch = ''
substituteInPlace fonttools_script.py \
--replace-fail 'print("exec hinting", options_)' 'options_.pop("epoch", None)'
'';
nativeBuildInputs = [
fontforge
python3'
];
buildPhase = ''
runHook preBuild
fontforge --script fontforge_script.py --hidden-zenkaku-space --console
python3 ./fonttools_script.py
runHook postBuild
'';
installPhase = ''
runHook preInstall
install -Dm444 build/*.ttf -t $out/share/fonts/truetype/notonoto-hs-console
runHook postInstall
'';
meta = {
description = "Programming font that combines Noto Sans Mono and Noto Sans JP";
homepage = "https://github.com/yuru7/NOTONOTO";
license = lib.licenses.ofl;
maintainers = with lib.maintainers; [ genga898 ];
platforms = lib.platforms.all;
};
}

View File

@@ -0,0 +1,64 @@
{
lib,
fetchFromGitHub,
stdenvNoCC,
fontforge,
python3,
}:
let
python3' = python3.withPackages (
ps: with ps; [
fonttools
ttfautohint-py
]
);
in
stdenvNoCC.mkDerivation rec {
pname = "notonoto-hs";
version = "0.0.3";
src = fetchFromGitHub {
owner = "yuru7";
repo = "NOTONOTO";
tag = "v${version}";
hash = "sha256-1dbx4yC8gL41OEAE/LNDyoDb4xhAwV5h8oRmdlPULUo=";
};
# ttfautohint: unrecognized option '--epoch'
postPatch = ''
substituteInPlace fonttools_script.py \
--replace-fail 'print("exec hinting", options_)' 'options_.pop("epoch", None)'
'';
nativeBuildInputs = [
fontforge
python3'
];
buildPhase = ''
runHook preBuild
fontforge --script fontforge_script.py --hidden-zenkaku-space
python3 ./fonttools_script.py
runHook postBuild
'';
installPhase = ''
runHook preInstall
install -Dm444 build/*.ttf -t $out/share/fonts/truetype/notonoto-hs
runHook postInstall
'';
meta = {
description = "Programming font that combines Noto Sans Mono and Noto Sans JP";
homepage = "https://github.com/yuru7/NOTONOTO";
license = lib.licenses.ofl;
maintainers = with lib.maintainers; [ genga898 ];
platforms = lib.platforms.all;
};
}

View File

@@ -0,0 +1,64 @@
{
lib,
fetchFromGitHub,
stdenvNoCC,
fontforge,
python3,
}:
let
python3' = python3.withPackages (
ps: with ps; [
fonttools
ttfautohint-py
]
);
in
stdenvNoCC.mkDerivation rec {
pname = "notonoto";
version = "0.0.3";
src = fetchFromGitHub {
owner = "yuru7";
repo = "NOTONOTO";
tag = "v${version}";
hash = "sha256-1dbx4yC8gL41OEAE/LNDyoDb4xhAwV5h8oRmdlPULUo=";
};
# ttfautohint: unrecognized option '--epoch'
postPatch = ''
substituteInPlace fonttools_script.py \
--replace-fail 'print("exec hinting", options_)' 'options_.pop("epoch", None)'
'';
nativeBuildInputs = [
fontforge
python3'
];
buildPhase = ''
runHook preBuild
fontforge --script fontforge_script.py
python3 ./fonttools_script.py
runHook postBuild
'';
installPhase = ''
runHook preInstall
install -Dm444 build/*.ttf -t $out/share/fonts/truetype/notonoto
runHook postInstall
'';
meta = {
description = "Programming font that combines Noto Sans Mono and Noto Sans JP";
homepage = "https://github.com/yuru7/NOTONOTO";
license = lib.licenses.ofl;
maintainers = with lib.maintainers; [ genga898 ];
platforms = lib.platforms.all;
};
}

View File

@@ -0,0 +1,82 @@
{
fetchFromGitHub,
lib,
bash,
python3Packages,
}:
python3Packages.buildPythonApplication rec {
pname = "nototools";
version = "0.3.2";
pyproject = true;
src = fetchFromGitHub {
owner = "googlefonts";
repo = "nototools";
tag = "v${version}";
sha256 = "sha256-0se0YcnhDwwMbt2C4hep0T/JEidHfFRUnm2Sy7qr2uk=";
};
build-system = with python3Packages; [
setuptools
setuptools-scm
];
pythonRemoveDeps = [
# https://github.com/notofonts/nototools/pull/901
"typed-ast"
];
dependencies = with python3Packages; [
afdko
appdirs
attrs
booleanoperations
brotlipy
click
defcon
fontmath
fontparts
fontpens
fonttools
lxml
mutatormath
pathspec
psautohint
pyclipper
pytz
regex
scour
toml
ufonormalizer
ufoprocessor
unicodedata2
zopfli
];
nativeCheckInputs = [
python3Packages.pillow
python3Packages.six
bash
];
checkPhase = ''
patchShebangs tests/
cd tests
rm gpos_diff_test.py # needs ttxn?
./run_tests
'';
postInstall = ''
cp -r third_party $out
'';
pythonImportsCheck = [ "nototools" ];
meta = with lib; {
description = "Noto fonts support tools and scripts plus web site generation";
homepage = "https://github.com/googlefonts/nototools";
license = licenses.asl20;
maintainers = [ ];
};
}

View File

@@ -0,0 +1,50 @@
{
lib,
stdenv,
fetchurl,
scons,
boost,
ladspaH,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "nova-filters";
version = "0.2-2";
src = fetchurl {
url = "https://klingt.org/~tim/nova-filters/nova-filters_${finalAttrs.version}.tar.gz";
hash = "sha256-0WgxMDjhx2b39FKRwLrm8LrTO5nS0xE7+bRwQfcmBpg=";
};
postPatch = ''
substituteInPlace SConstruct \
--replace "'TERM' : os.environ['TERM']," "" \
--replace "Options" "Variables" \
--replace "-fomit-frame-pointer -ffast-math -mfpmath=sse" "-I${boost.dev}/include -I${ladspaH}/include" \
--replace "env.has_key('cxx')" "True" \
--replace "env['cxx']" "'${stdenv.cc.targetPrefix}c++'" \
--replace "-Wl,--strip-all" ""
substituteInPlace filters.cpp \
--replace "LADSPA_HINT_SAMPLE_RATE, 0, 0.5" "LADSPA_HINT_SAMPLE_RATE, 0.0001, 0.5"
substituteInPlace nova/source/dsp/filter.hpp \
--replace "= check" "= detail::filter_base<internal_type, checked>::check"
substituteInPlace nova/source/primitives/float.hpp \
--replace "boost/detail/endian.hpp" "boost/predef/other/endian.h" \
--replace "BOOST_LITTLE_ENDIAN" "BOOST_ENDIAN_LITTLE_BYTE"
'';
nativeBuildInputs = [
scons
];
meta = with lib; {
description = "LADSPA plugins based on filters of nova";
homepage = "http://klingt.org/~tim/nova-filters/";
license = licenses.gpl2Plus;
maintainers = [ maintainers.magnetophon ];
platforms = platforms.unix;
};
})

Some files were not shown because too many files have changed in this diff Show More