Merge master into staging-next

This commit is contained in:
nixpkgs-ci[bot] 2025-05-09 12:06:12 +00:00 committed by GitHub
commit d0bd8b838a
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
110 changed files with 5035 additions and 1951 deletions

View file

@ -1881,7 +1881,7 @@ let
This function does not add support for deduplication and `disabledModules`, This function does not add support for deduplication and `disabledModules`,
although that could be achieved by wrapping the returned module and setting although that could be achieved by wrapping the returned module and setting
the `_key` module attribute. the `key` module attribute.
The reason for this omission is that the file path is not guaranteed to be The reason for this omission is that the file path is not guaranteed to be
a unique identifier for the module, as two instances of the module may a unique identifier for the module, as two instances of the module may
reference different `arg`s in their closures. reference different `arg`s in their closures.

View file

@ -7440,12 +7440,6 @@
githubId = 7820865; githubId = 7820865;
name = "Eric Dallo"; name = "Eric Dallo";
}; };
ericsagnes = {
email = "eric.sagnes@gmail.com";
github = "ericsagnes";
githubId = 367880;
name = "Eric Sagnes";
};
ericson2314 = { ericson2314 = {
email = "John.Ericson@Obsidian.Systems"; email = "John.Ericson@Obsidian.Systems";
matrix = "@ericson2314:matrix.org"; matrix = "@ericson2314:matrix.org";
@ -11403,12 +11397,6 @@
githubId = 110620; githubId = 110620;
name = "Jevin Maltais"; name = "Jevin Maltais";
}; };
jfb = {
email = "james@yamtime.com";
github = "tftio";
githubId = 143075;
name = "James Felix Black";
};
jfchevrette = { jfchevrette = {
email = "jfchevrette@gmail.com"; email = "jfchevrette@gmail.com";
github = "jfchevrette"; github = "jfchevrette";

View file

@ -22,7 +22,7 @@ file.
}; };
meta = { meta = {
maintainers = with lib.maintainers; [ ericsagnes ]; maintainers = with lib.maintainers; [ ];
doc = ./default.md; doc = ./default.md;
buildDocsInSandbox = true; buildDocsInSandbox = true;
}; };

View file

@ -113,7 +113,7 @@ in
}; };
meta = { meta = {
maintainers = with lib.maintainers; [ ericsagnes ]; maintainers = with lib.maintainers; [ ];
doc = ./default.md; doc = ./default.md;
}; };

View file

@ -188,6 +188,7 @@ let
[ "--docker-image ${service.dockerImage}" ] [ "--docker-image ${service.dockerImage}" ]
++ optional service.dockerDisableCache "--docker-disable-cache" ++ optional service.dockerDisableCache "--docker-disable-cache"
++ optional service.dockerPrivileged "--docker-privileged" ++ optional service.dockerPrivileged "--docker-privileged"
++ optional (service.dockerPullPolicy != null) "--docker-pull-policy ${service.dockerPullPolicy}"
++ map (v: "--docker-volumes ${escapeShellArg v}") service.dockerVolumes ++ map (v: "--docker-volumes ${escapeShellArg v}") service.dockerVolumes
++ map (v: "--docker-extra-hosts ${escapeShellArg v}") service.dockerExtraHosts ++ map (v: "--docker-extra-hosts ${escapeShellArg v}") service.dockerExtraHosts
++ map (v: "--docker-allowed-images ${escapeShellArg v}") service.dockerAllowedImages ++ map (v: "--docker-allowed-images ${escapeShellArg v}") service.dockerAllowedImages
@ -482,6 +483,19 @@ in
Docker image to be used. Docker image to be used.
''; '';
}; };
dockerPullPolicy = mkOption {
type = types.nullOr (
types.enum [
"always"
"never"
"if-not-present"
]
);
default = null;
description = ''
Default pull-policy for Docker images
'';
};
dockerVolumes = mkOption { dockerVolumes = mkOption {
type = types.listOf types.str; type = types.listOf types.str;
default = [ ]; default = [ ];

View file

@ -90,6 +90,12 @@ in
"extraConfig" "extraConfig"
] "Use services.postgresql.settings instead.") ] "Use services.postgresql.settings instead.")
(mkRemovedOptionModule [
"services"
"postgresql"
"recoveryConfig"
] "PostgreSQL v12+ doesn't support recovery.conf.")
(mkRenamedOptionModule (mkRenamedOptionModule
[ "services" "postgresql" "logLinePrefix" ] [ "services" "postgresql" "logLinePrefix" ]
[ "services" "postgresql" "settings" "log_line_prefix" ] [ "services" "postgresql" "settings" "log_line_prefix" ]
@ -588,14 +594,6 @@ in
''; '';
}; };
recoveryConfig = mkOption {
type = types.nullOr types.lines;
default = null;
description = ''
Contents of the {file}`recovery.conf` file.
'';
};
superUser = mkOption { superUser = mkOption {
type = types.str; type = types.str;
default = "postgres"; default = "postgres";
@ -741,10 +739,6 @@ in
fi fi
ln -sfn "${configFile}/postgresql.conf" "${cfg.dataDir}/postgresql.conf" ln -sfn "${configFile}/postgresql.conf" "${cfg.dataDir}/postgresql.conf"
${optionalString (cfg.recoveryConfig != null) ''
ln -sfn "${pkgs.writeText "recovery.conf" cfg.recoveryConfig}" \
"${cfg.dataDir}/recovery.conf"
''}
''; '';
# Wait for PostgreSQL to be ready to accept connections. # Wait for PostgreSQL to be ready to accept connections.

View file

@ -55,6 +55,10 @@ let
preferLocalBuild = true; preferLocalBuild = true;
allowSubstitutes = false; allowSubstitutes = false;
packages = lib.unique (map toString udevPackages); packages = lib.unique (map toString udevPackages);
nativeBuildInputs = [
pkgs.systemdMinimal
];
} }
'' ''
mkdir -p $out mkdir -p $out
@ -147,6 +151,11 @@ let
exit 1 exit 1
fi fi
# Verify all the udev rules
echo "Verifying udev rules using udevadm verify..."
udevadm verify --resolve-names=never --no-style $out
echo "OK"
# If auto-configuration is disabled, then remove # If auto-configuration is disabled, then remove
# udev's 80-drivers.rules file, which contains rules for # udev's 80-drivers.rules file, which contains rules for
# automatically calling modprobe. # automatically calling modprobe.

View file

@ -121,11 +121,14 @@ import ./make-test-python.nix (
# "${run "gsettings set org.gnome.shell disable-extension-version-validation true"}" # "${run "gsettings set org.gnome.shell disable-extension-version-validation true"}"
# ) # )
# Assert that some extension is in a specific state def getState(extension):
def checkState(target, extension): return machine.succeed(
state = machine.succeed(
f"${run "gnome-extensions info {extension}"} | grep '^ State: .*$'" f"${run "gnome-extensions info {extension}"} | grep '^ State: .*$'"
) )
# Assert that some extension is in a specific state
def checkState(target, extension):
state = getState(extension)
assert target in state, f"{state} instead of {target}" assert target in state, f"{state} instead of {target}"
def checkExtension(extension, disable): def checkExtension(extension, disable):
@ -143,6 +146,10 @@ import ./make-test-python.nix (
# Enable and optionally disable # Enable and optionally disable
machine.succeed(f"${run "gnome-extensions enable {extension}"}") machine.succeed(f"${run "gnome-extensions enable {extension}"}")
wait_time = 5
while getState(extension) == "ACTIVATING" and (wait_time := wait_time - 1) > 0:
machine.log(f"Extension {extension} is still activating, waiting {wait_time} more seconds")
machine.sleep(1)
checkState("ACTIVE", extension) checkState("ACTIVE", extension)
if disable: if disable:

View file

@ -38,17 +38,17 @@ let
in in
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "reaper"; pname = "reaper";
version = "7.36"; version = "7.38";
src = fetchurl { src = fetchurl {
url = url_for_platform version stdenv.hostPlatform.qemuArch; url = url_for_platform version stdenv.hostPlatform.qemuArch;
hash = hash =
if stdenv.hostPlatform.isDarwin then if stdenv.hostPlatform.isDarwin then
"sha256-++LWAnOUNVe3EOkBMlHizaBSQ5B2DJPhNUT8w2mTuiI=" "sha256-2DmwbOQ1sNVL3krlG27KOdhuwalZRjafuWzWFYiWpng="
else else
{ {
x86_64-linux = "sha256-wQIDTumxQI8S446u87noYvIx/pyfCa/Xe1U/Ot/7ESY="; x86_64-linux = "sha256-GiN20Dj+kBNbOI1CASCDJFIUbOYfBc5K/bwf42Pc3Zk=";
aarch64-linux = "sha256-5AkwRG1+xDVAhEOUTdpK1G7+qjE68zr4hs55mMQivmM="; aarch64-linux = "sha256-CziepFXytiMJ7eMtCziaYphYgYQJywQ9JtrLHzBU5Cw=";
} }
.${stdenv.hostPlatform.system}; .${stdenv.hostPlatform.system};
}; };

View file

@ -7,12 +7,12 @@
vimUtils, vimUtils,
}: }:
let let
version = "0-unstable-2025-04-24"; version = "0-unstable-2025-04-28";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "nvim-pack"; owner = "nvim-pack";
repo = "nvim-spectre"; repo = "nvim-spectre";
rev = "4497feffb18db4bab6e698bcb695228c19421282"; rev = "197150cd3f30eeb1b3fd458339147533d91ac385";
hash = "sha256-pWSHOvV0VEouCyhrtn63k7+Lvs6reS81YJJCR3Ygnwg="; hash = "sha256-ATW1QJ2aXHcUtGK6MNLSq4VkML3FLQphVcLqfzoX9PI=";
}; };
spectre_oxi = rustPlatform.buildRustPackage { spectre_oxi = rustPlatform.buildRustPackage {

View file

@ -13,13 +13,13 @@
}: }:
mkLibretroCore { mkLibretroCore {
core = "ppsspp"; core = "ppsspp";
version = "0-unstable-2025-04-24"; version = "0-unstable-2025-05-08";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "hrydgard"; owner = "hrydgard";
repo = "ppsspp"; repo = "ppsspp";
rev = "a39eb4dc4ba05f5c7d292f7547a1502986b07e9f"; rev = "732d05c2c136856a3f173574233a2431a015a6f5";
hash = "sha256-MlNQMQY+0XDftaEOiiE+uZePYLsCzG4auRfqpw8Qzw4="; hash = "sha256-5PVN8qG0ONsro6jH/8rAIma+4DlKAUoS/6aUPqBqbe4=";
fetchSubmodules = true; fetchSubmodules = true;
}; };

View file

@ -6,13 +6,13 @@
}: }:
mkLibretroCore { mkLibretroCore {
core = "vice-${type}"; core = "vice-${type}";
version = "0-unstable-2025-04-22"; version = "0-unstable-2025-05-08";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "libretro"; owner = "libretro";
repo = "vice-libretro"; repo = "vice-libretro";
rev = "e5b036f0be19f7a70fde75cc0e8b1b43476adc13"; rev = "5f094cfb57d1f656027a9d26bda681b6ecc46419";
hash = "sha256-GzvsXPZcBfGvA0g7zLR3R7w5CEIw2slL3EyQdcDjqCc="; hash = "sha256-XqWAh3e2Q/i7c8nxqDP+sJHGdYWCyqdk2pwJ+JPsdVk=";
}; };
makefile = "Makefile"; makefile = "Makefile";

View file

@ -61,6 +61,7 @@
}: }:
assert libXtSupport -> libX11Support; assert libXtSupport -> libX11Support;
assert libraqmSupport -> freetypeSupport;
let let
arch = arch =

View file

@ -1,7 +1,7 @@
{ {
lib, lib,
fetchFromGitHub,
buildPythonApplication, buildPythonApplication,
fetchFromGitHub,
pytestCheckHook, pytestCheckHook,
git, git,
testers, testers,
@ -10,32 +10,34 @@
buildPythonApplication rec { buildPythonApplication rec {
pname = "mu-repo"; pname = "mu-repo";
version = "1.8.2"; version = "1.9.0";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "fabioz"; owner = "fabioz";
repo = "mu-repo"; repo = "mu-repo";
rev = "mu_repo_${lib.replaceStrings [ "." ] [ "_" ] version}"; tag = "mu_repo_${lib.replaceStrings [ "." ] [ "_" ] version}";
hash = "sha256-COc7hbu72eA+ikZQkz6zXtFyaa/AKhoF+Zvsr6ZVOuY="; hash = "sha256-aSRf0B/skoZLsn4dykWOFKVNtHYCsD9RtZ1frHDrcJU=";
}; };
propagatedBuildInputs = [ git ]; dependencies = [ git ];
nativeCheckInputs = [ nativeCheckInputs = [
pytestCheckHook pytestCheckHook
git git
]; ];
disabledTests = [ "test_action_diff" ];
passthru.tests.version = testers.testVersion { passthru.tests.version = testers.testVersion {
package = mu-repo; package = mu-repo;
}; };
meta = with lib; { meta = {
description = "Tool to help in dealing with multiple git repositories"; description = "Tool to help in dealing with multiple git repositories";
homepage = "http://fabioz.github.io/mu-repo/"; homepage = "http://fabioz.github.io/mu-repo/";
license = licenses.gpl3; license = lib.licenses.gpl3;
platforms = platforms.unix; platforms = lib.platforms.unix;
maintainers = with maintainers; [ sikmir ]; maintainers = with lib.maintainers; [ sikmir ];
mainProgram = "mu"; mainProgram = "mu";
}; };
} }

View file

@ -9,7 +9,7 @@ let
versions = versions =
if stdenv.hostPlatform.isLinux then if stdenv.hostPlatform.isLinux then
{ {
stable = "0.0.93"; stable = "0.0.94";
ptb = "0.0.141"; ptb = "0.0.141";
canary = "0.0.668"; canary = "0.0.668";
development = "0.0.74"; development = "0.0.74";
@ -26,7 +26,7 @@ let
x86_64-linux = { x86_64-linux = {
stable = fetchurl { stable = fetchurl {
url = "https://stable.dl2.discordapp.net/apps/linux/${version}/discord-${version}.tar.gz"; url = "https://stable.dl2.discordapp.net/apps/linux/${version}/discord-${version}.tar.gz";
hash = "sha256-/CTgRWMi7RnsIrzWrXHE5D9zFte7GgqimxnvJTj3hFY="; hash = "sha256-035nfbEyvdsNxZh6fkXh2JhY7EXQtwUnS4sUKr74MRQ=";
}; };
ptb = fetchurl { ptb = fetchurl {
url = "https://ptb.dl2.discordapp.net/apps/linux/${version}/discord-ptb-${version}.tar.gz"; url = "https://ptb.dl2.discordapp.net/apps/linux/${version}/discord-ptb-${version}.tar.gz";

View file

@ -2,12 +2,11 @@
lib, lib,
stdenv, stdenv,
fetchFromGitHub, fetchFromGitHub,
fetchpatch,
cmake, cmake,
pkg-config, pkg-config,
adwaita-icon-theme, adwaita-icon-theme,
gmime3, gmime3,
webkitgtk_4_0, webkitgtk_4_1,
ronn, ronn,
libsass, libsass,
notmuch, notmuch,
@ -28,30 +27,21 @@
extraPythonPackages ? [ ], extraPythonPackages ? [ ],
}: }:
stdenv.mkDerivation rec { stdenv.mkDerivation (finalAttrs: {
pname = "astroid"; pname = "astroid";
version = "0.16"; version = "0.17";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "astroidmail"; owner = "astroidmail";
repo = "astroid"; repo = "astroid";
rev = "v${version}"; tag = "v${finalAttrs.version}";
sha256 = "sha256-6xQniOLNUk8tDkooDN3Tp6sb43GqoynO6+fN9yhNqZ4="; hash = "sha256-FDStUt989sQXX6kpqStrdjOdAMlLAepcDba9ul9tcps=";
}; };
patches = [ postPatch = ''
(fetchpatch { sed -i "s~gvim ~${vim}/bin/vim -g ~g" src/config.cc
name = "symbolic-icons.patch"; sed -i "s~ -geom 10x10~~g" src/config.cc
url = "https://github.com/astroidmail/astroid/commit/7c2022f06a4146ad62e858bcaacdb4ee817851b9.patch"; '';
hash = "sha256-hZHOg1wUR8Kpd6017fWzhMmG+/WQxSOCnsiyIvUcpbU=";
})
(fetchpatch {
# error: 'is_regular' was not declared in this scope
name = "boost_is_regular.patch";
url = "https://github.com/astroidmail/astroid/commit/abd84171dc6c4e639f3e86649ddc7ff211077244.patch";
hash = "sha256-IY60AnWm18ZwrCFsOvBg76UginpMo7gXBf8GT87FqW4=";
})
];
nativeBuildInputs = [ nativeBuildInputs = [
cmake cmake
@ -66,7 +56,7 @@ stdenv.mkDerivation rec {
buildInputs = [ buildInputs = [
gtkmm3 gtkmm3
gmime3 gmime3
webkitgtk_4_0 webkitgtk_4_1
libsass libsass
libpeas libpeas
python3 python3
@ -79,11 +69,6 @@ stdenv.mkDerivation rec {
vim vim
]; ];
postPatch = ''
sed -i "s~gvim ~${vim}/bin/vim -g ~g" src/config.cc
sed -i "s~ -geom 10x10~~g" src/config.cc
'';
pythonPath = with python3.pkgs; requiredPythonModules extraPythonPackages; pythonPath = with python3.pkgs; requiredPythonModules extraPythonPackages;
preFixup = '' preFixup = ''
buildPythonPath "$out $pythonPath" buildPythonPath "$out $pythonPath"
@ -92,15 +77,15 @@ stdenv.mkDerivation rec {
) )
''; '';
meta = with lib; { meta = {
homepage = "https://astroidmail.github.io/"; homepage = "https://astroidmail.github.io/";
description = "GTK frontend to the notmuch mail system"; description = "GTK frontend to the notmuch mail system";
mainProgram = "astroid"; mainProgram = "astroid";
maintainers = with maintainers; [ maintainers = with lib.maintainers; [
bdimcheff bdimcheff
SuprDewd SuprDewd
]; ];
license = licenses.gpl3Plus; license = lib.licenses.gpl3Plus;
platforms = platforms.linux; platforms = lib.platforms.linux;
}; };
} })

View file

@ -99,8 +99,8 @@ rec {
thunderbird-128 = common { thunderbird-128 = common {
applicationName = "Thunderbird ESR"; applicationName = "Thunderbird ESR";
version = "128.9.2esr"; version = "128.10.0esr";
sha512 = "3c8df53304611c1a7f8c02d50cfa1017f4d64c50a93fd6603ce0766cbb5d63c7bc5e0276f155c35817c3efa49f683c05583ddf24257bf8c25f585b67fd732cb5"; sha512 = "b02582ea4fa0297a06d30eda1555bbf3ed79ae7a35a8993f2a70b0ec84af28a4d084cd7ebe1c73676e689ff9366e779cc5ef67a197638949bf232a40b740d1b6";
updateScript = callPackage ./update.nix { updateScript = callPackage ./update.nix {
attrPath = "thunderbirdPackages.thunderbird-128"; attrPath = "thunderbirdPackages.thunderbird-128";

View file

@ -58,7 +58,7 @@ stdenv.mkDerivation rec {
meta = with lib; { meta = with lib; {
description = "Safely store secrets in a VCS repo"; description = "Safely store secrets in a VCS repo";
homepage = "https://github.com/StackExchange/blackbox"; homepage = "https://github.com/StackExchange/blackbox";
maintainers = with maintainers; [ ericsagnes ]; maintainers = with maintainers; [ ];
license = licenses.mit; license = licenses.mit;
platforms = platforms.all; platforms = platforms.all;
}; };

View file

@ -14,13 +14,13 @@
stdenv.mkDerivation (finalAttrs: { stdenv.mkDerivation (finalAttrs: {
pname = "${lib.optionalString enablePython "py"}abpoa"; pname = "${lib.optionalString enablePython "py"}abpoa";
version = "1.5.3"; version = "1.5.4";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "yangao07"; owner = "yangao07";
repo = "abPOA"; repo = "abPOA";
tag = "v${finalAttrs.version}"; tag = "v${finalAttrs.version}";
hash = "sha256-90mkXp4cC0Omnx0C7ab7NNs/M2oedIcICTUJl3qhcyo="; hash = "sha256-E6XdiRULgJy9rf4NfXGBqUC+m0pMZKMsA5pHvCNNLJk=";
}; };
patches = [ ./simd-arch.patch ]; patches = [ ./simd-arch.patch ];
@ -67,7 +67,7 @@ stdenv.mkDerivation (finalAttrs: {
installPhase = lib.optionalString (!enablePython) '' installPhase = lib.optionalString (!enablePython) ''
runHook preInstall runHook preInstall
install -Dm755 ./bin/abpoa -t $out/bin install -Dm755 ./bin/abpoa* $out/bin/abpoa
runHook postInstall runHook postInstall
''; '';

View file

@ -77,7 +77,6 @@ stdenv.mkDerivation (finalAttrs: {
# See: https://github.com/NixOS/nixpkgs/issues/279226 # See: https://github.com/NixOS/nixpkgs/issues/279226
license = lib.licenses.unfree; license = lib.licenses.unfree;
maintainers = with lib.maintainers; [ maintainers = with lib.maintainers; [
ericsagnes
synthetica synthetica
eljamm eljamm
]; ];

View file

@ -39,7 +39,7 @@ stdenv.mkDerivation rec {
description = "Hiragana text to Kana Kanji mixed text Japanese input method"; description = "Hiragana text to Kana Kanji mixed text Japanese input method";
homepage = "https://anthy.osdn.jp/"; homepage = "https://anthy.osdn.jp/";
license = licenses.gpl2Plus; license = licenses.gpl2Plus;
maintainers = with maintainers; [ ericsagnes ]; maintainers = with maintainers; [ ];
platforms = platforms.unix; platforms = platforms.unix;
}; };

View file

@ -8,19 +8,19 @@
nix-update-script, nix-update-script,
}: }:
rustPlatform.buildRustPackage rec { rustPlatform.buildRustPackage (finalAttrs: {
pname = "atuin"; pname = "atuin";
version = "18.5.0"; version = "18.6.1";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "atuinsh"; owner = "atuinsh";
repo = "atuin"; repo = "atuin";
rev = "v${version}"; tag = "v${finalAttrs.version}";
hash = "sha256-VXbnf/TfMWGHHXccKZBX4/RWDT/J1kpSBzhML4973mo="; hash = "sha256-aRaUiGH2CTPtmbfrtLlNfoQzQWG817eazWctqwRlOCE=";
}; };
useFetchCargoVendor = true; useFetchCargoVendor = true;
cargoHash = "sha256-MQNveOBItVOHFNarU5xXl8xHoooSAVbA7JnxxuRI9To="; cargoHash = "sha256-umagQYzOMr3Jh1RewjT0aX5FpYxs9N/70NZXoGaAfi4=";
# atuin's default features include 'check-updates', which do not make sense # atuin's default features include 'check-updates', which do not make sense
# for distribution builds. List all other default features. # for distribution builds. List all other default features.
@ -73,4 +73,4 @@ rustPlatform.buildRustPackage rec {
]; ];
mainProgram = "atuin"; mainProgram = "atuin";
}; };
} })

View file

@ -15,14 +15,14 @@
libpulseaudio, libpulseaudio,
}: }:
stdenv.mkDerivation rec { stdenv.mkDerivation (finalAttrs: {
pname = "audio-recorder"; pname = "audio-recorder";
version = "2.1.3"; version = "3.3.4";
src = fetchurl { src = fetchurl {
name = "${pname}-${version}.tar.gz"; name = "audio-recorder-${finalAttrs.version}.tar.gz";
url = "${meta.homepage}/+archive/ubuntu/ppa/+files/audio-recorder_${version}%7Ebionic.tar.gz"; url = "https://launchpad.net/~audio-recorder/+archive/ubuntu/ppa/+files/audio-recorder_${finalAttrs.version}%7Ejammy.tar.gz";
sha256 = "160pnmnmc9zwzyclsci3w1qwlgxkfx1y3x5ck6i587w78570an1r"; hash = "sha256-RQ8zAT98EdVgdHENX0WDDYGvu7XjoB7f2FPv2JYJqug=";
}; };
# https://bugs.launchpad.net/audio-recorder/+bug/1784622 # https://bugs.launchpad.net/audio-recorder/+bug/1784622
@ -52,7 +52,7 @@ stdenv.mkDerivation rec {
]) ])
++ lib.optional pulseaudioSupport libpulseaudio; ++ lib.optional pulseaudioSupport libpulseaudio;
meta = with lib; { meta = {
description = "Audio recorder for GNOME and Unity Desktops"; description = "Audio recorder for GNOME and Unity Desktops";
mainProgram = "audio-recorder"; mainProgram = "audio-recorder";
longDescription = '' longDescription = ''
@ -65,8 +65,8 @@ stdenv.mkDerivation rec {
formats such as OGG audio, Flac, MP3 and WAV. formats such as OGG audio, Flac, MP3 and WAV.
''; '';
homepage = "https://launchpad.net/~audio-recorder"; homepage = "https://launchpad.net/~audio-recorder";
license = licenses.gpl3; license = lib.licenses.gpl3;
platforms = platforms.linux; platforms = lib.platforms.linux;
maintainers = [ maintainers.msteen ]; maintainers = [ lib.maintainers.msteen ];
}; };
} })

View file

@ -2,35 +2,40 @@
lib, lib,
fetchurl, fetchurl,
appimageTools, appimageTools,
makeWrapper,
}: }:
let appimageTools.wrapAppImage rec {
pname = "badlion-client"; pname = "badlion-client";
version = "4.3.0"; version = "4.5.4";
src = appimageTools.extractType2 {
inherit pname version;
src = fetchurl { src = fetchurl {
name = "badlion-client-linux"; name = "badlion-client-linux";
# https://www.badlion.net/download/client/latest/linux # https://www.badlion.net/download/client/latest/linux
url = "https://web.archive.org/web/20240529090437if_/https://client-updates-cdn77.badlion.net/BadlionClient"; url = "https://web.archive.org/web/20250416011033/https://client-updates.badlion.net/BadlionClient";
hash = "sha256-9elNLSqCO21m1T2D+WABKotD9FfW3FrcOxbnPdyVd+w="; hash = "sha256-M2aG3vb1EBpvx8ODs67Ua1R7lBXSe2oIcSwFzSz91n4=";
};
}; };
appimageContents = appimageTools.extract { inherit pname version src; }; nativeBuildInputs = [ makeWrapper ];
in
appimageTools.wrapType2 {
inherit pname version src;
extraInstallCommands = '' extraInstallCommands = ''
install -Dm444 ${appimageContents}/BadlionClient.desktop $out/share/applications/BadlionClient.desktop install -Dm444 ${src}/BadlionClient.desktop $out/share/applications/BadlionClient.desktop
install -Dm444 ${appimageContents}/BadlionClient.png $out/share/pixmaps/BadlionClient.png install -Dm444 ${src}/BadlionClient.png $out/share/pixmaps/BadlionClient.png
substituteInPlace $out/share/applications/BadlionClient.desktop \ substituteInPlace $out/share/applications/BadlionClient.desktop \
--replace 'Exec=AppRun --no-sandbox %U' 'Exec=badlion-client' --replace-fail "Exec=AppRun --no-sandbox %U" "Exec=badlion-client"
wrapProgram $out/bin/badlion-client \
--set APPIMAGE 1
''; '';
meta = with lib; { extraPkgs = pkgs: [ pkgs.xorg.libxshmfence ];
meta = {
description = "Most Complete All-In-One Mod Library for Minecraft with 100+ Mods, FPS Improvements, and more"; description = "Most Complete All-In-One Mod Library for Minecraft with 100+ Mods, FPS Improvements, and more";
homepage = "https://client.badlion.net"; homepage = "https://client.badlion.net";
license = with licenses; [ unfree ]; license = lib.licenses.unfree;
maintainers = [ ]; maintainers = [ ];
mainProgram = "badlion-client"; mainProgram = "badlion-client";
platforms = [ "x86_64-linux" ]; platforms = [ "x86_64-linux" ];

View file

@ -1,20 +1,20 @@
{ {
lib, lib,
stdenv, stdenv,
fetchurl, requireFile,
nasm, nasm,
}: }:
let let
inherit (stdenv.hostPlatform.parsed.cpu) bits; arch = "bandwidth${toString stdenv.hostPlatform.parsed.cpu.bits}";
arch = "bandwidth${toString bits}";
in in
stdenv.mkDerivation rec { stdenv.mkDerivation (finalAttrs: {
pname = "bandwidth"; pname = "bandwidth";
version = "1.11.2d"; version = "1.11.2d";
src = fetchurl { src = requireFile {
url = "https://zsmith.co/archives/bandwidth-${version}.tar.gz"; message = "This file does not have a valid url.";
name = "bandwidth-${finalAttrs.version}.tar.gz";
hash = "sha256-7IrNiCXKf1vyRGl73Ccu3aYMqPVc4PpEr6lnSqIa4Q8="; hash = "sha256-7IrNiCXKf1vyRGl73Ccu3aYMqPVc4PpEr6lnSqIa4Q8=";
}; };
@ -48,16 +48,18 @@ stdenv.mkDerivation rec {
]; ];
installPhase = '' installPhase = ''
mkdir -p $out/bin runHook preInstall
cp ${arch} $out/bin/bandwidth
install -Dm755 ${arch} $out/bin/bandwidth
runHook postInstall
''; '';
meta = with lib; { meta = {
homepage = "https://zsmith.co/bandwidth.html";
description = "Artificial benchmark for identifying weaknesses in the memory subsystem"; description = "Artificial benchmark for identifying weaknesses in the memory subsystem";
license = licenses.gpl2Plus; license = lib.licenses.gpl2Plus;
platforms = platforms.x86 ++ platforms.arm ++ platforms.aarch64; platforms = lib.platforms.x86 ++ lib.platforms.arm ++ lib.platforms.aarch64;
maintainers = with maintainers; [ r-burns ]; maintainers = with lib.maintainers; [ r-burns ];
mainProgram = "bandwidth"; mainProgram = "bandwidth";
}; };
} })

View file

@ -1,47 +1,34 @@
{ {
lib, lib,
stdenv, buildGoModule,
python3,
fetchFromGitHub, fetchFromGitHub,
makeWrapper, makeBinaryWrapper,
medusa, medusa,
}: }:
stdenv.mkDerivation rec { buildGoModule (finalAttrs: {
pname = "brutespray"; pname = "brutespray";
version = "1.8.1"; version = "2.3.1";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "x90skysn3k"; owner = "x90skysn3k";
repo = "brutespray"; repo = "brutespray";
rev = "brutespray-${version}"; tag = "v${finalAttrs.version}";
sha256 = "sha256-O9HOsj0R6oHI7jjG4FBqbrSAQSVomgeD7tyPDNCNmIo="; hash = "sha256-oH7Gun/nKScv2buLwM6faiz9/3sl9l4JzkKbdTnGz0Q=";
}; };
postPatch = '' vendorHash = "sha256-TBLjCXb1W5FHBrzxBI0/3NMuM9eCizLiz489jyZsEso=";
substituteInPlace brutespray.py \
--replace "/usr/share/brutespray" "$out/share/brutespray"
'';
dontBuild = true; nativeBuildInputs = [ makeBinaryWrapper ];
nativeBuildInputs = [
python3.pkgs.wrapPython
makeWrapper
];
buildInputs = [ python3 ];
installPhase = '' postInstall = ''
install -Dm0755 brutespray.py $out/bin/brutespray
patchShebangs $out/bin
patchPythonScript $out/bin/brutespray
wrapProgram $out/bin/brutespray \ wrapProgram $out/bin/brutespray \
--prefix PATH : ${lib.makeBinPath [ medusa ]} --prefix PATH : ${lib.makeBinPath [ medusa ]}
mkdir -p $out/share/brutespray mkdir -p $out/share/brutespray
cp -r wordlist/ $out/share/brutespray/wordlist cp -r wordlist $out/share/brutespray/wordlist
''; '';
meta = with lib; { meta = {
homepage = "https://github.com/x90skysn3k/brutespray"; homepage = "https://github.com/x90skysn3k/brutespray";
description = "Tool to do brute-forcing from Nmap output"; description = "Tool to do brute-forcing from Nmap output";
mainProgram = "brutespray"; mainProgram = "brutespray";
@ -49,7 +36,7 @@ stdenv.mkDerivation rec {
This tool automatically attempts default credentials on found services This tool automatically attempts default credentials on found services
directly from Nmap output. directly from Nmap output.
''; '';
license = licenses.mit; license = lib.licenses.mit;
maintainers = [ ]; maintainers = [ ];
}; };
} })

View file

@ -6,19 +6,19 @@
libunwind, libunwind,
}: }:
rustPlatform.buildRustPackage rec { rustPlatform.buildRustPackage (finalAttrs: {
pname = "bugstalker"; pname = "bugstalker";
version = "0.2.2"; version = "0.3.0";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "godzie44"; owner = "godzie44";
repo = "BugStalker"; repo = "BugStalker";
rev = "v${version}"; rev = "v${finalAttrs.version}";
hash = "sha256-JacRt+zNwL7hdpdh5h9Mxztqi47f5eUbcZyx6ct/5Bc="; hash = "sha256-8Iqg2coFsPQY3ws5MEC1LhTu+Z1lXeI3ccjgoBS454o=";
}; };
useFetchCargoVendor = true; useFetchCargoVendor = true;
cargoHash = "sha256-w599KFLbyxFQzxIk6s9obPv804TLreOCMj/eApeSk7A="; cargoHash = "sha256-a5YI6bOo/rsi9hZO1BcVMjJtdrYq2aHqxtlO3F+P+8s=";
buildInputs = [ libunwind ]; buildInputs = [ libunwind ];
@ -35,4 +35,4 @@ rustPlatform.buildRustPackage rec {
mainProgram = "bs"; mainProgram = "bs";
platforms = [ "x86_64-linux" ]; platforms = [ "x86_64-linux" ];
}; };
} })

View file

@ -23,15 +23,15 @@ let
in in
with python3.pkgs; with python3.pkgs;
buildPythonApplication rec { buildPythonApplication rec {
version = "4.8"; version = "5.0";
pname = "buku"; pname = "buku";
pyproject = true; pyproject = true;
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "jarun"; owner = "jarun";
repo = "buku"; repo = "buku";
rev = "v${version}"; tag = "v${version}";
sha256 = "sha256-kPVlfTYUusf5CZnKB53WZcCHo3MEnA2bLUHTRPGPn+8="; sha256 = "sha256-b3j3WLMXl4sXZpIObC+F7RRpo07cwJpAK7lQ7+yIzro=";
}; };
nativeBuildInputs = [ nativeBuildInputs = [

View file

@ -7,38 +7,42 @@
cmake, cmake,
icu, icu,
boost, boost,
pkg-config,
sqlite,
cg3,
}: }:
let stdenv.mkDerivation (finalAttrs: {
cg3 = stdenv.mkDerivation rec {
pname = "cg3"; pname = "cg3";
version = "1.3.9"; version = "1.5.1";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "GrammarSoft"; owner = "GrammarSoft";
repo = "cg3"; repo = "cg3";
rev = "v${version}"; tag = "v${finalAttrs.version}";
sha256 = "sha256-TiEhhk90w5GibGZ4yalIf+4qLA8NoU6+GIPN6QNTz2A="; hash = "sha256-R3ePghkr4m6FmiHfhPVdLRAJaipIBhGLOX0Hz1nNPv4=";
}; };
nativeBuildInputs = [ nativeBuildInputs = [
cmake cmake
pkg-config
]; ];
buildInputs = [ buildInputs = [
icu icu
boost boost
sqlite
]; ];
doCheck = true; doCheck = true;
postFixup = '' postFixup = ''
substituteInPlace "$out"/lib/pkgconfig/cg3.pc \ substituteInPlace "$out"/lib/pkgconfig/cg3.pc \
--replace '=''${prefix}//' '=/' --replace-fail '=''${prefix}//' '=/'
''; '';
passthru.tests.minimal = passthru.tests.minimal =
runCommand "${pname}-test" runCommand "cg3-test"
{ {
buildInputs = [ buildInputs = [
cg3 cg3
@ -56,15 +60,11 @@ let
# TODO, consider optionals: # TODO, consider optionals:
# - Enable tcmalloc unless darwin? # - Enable tcmalloc unless darwin?
# - Enable python bindings? # - Enable python bindings?
meta = {
meta = with lib; {
homepage = "https://github.com/GrammarSoft/cg3"; homepage = "https://github.com/GrammarSoft/cg3";
description = "Constraint Grammar interpreter, compiler and applicator vislcg3"; description = "Constraint Grammar interpreter, compiler and applicator vislcg3";
maintainers = with maintainers; [ unhammer ]; maintainers = with lib.maintainers; [ unhammer ];
license = licenses.gpl3Plus; license = lib.licenses.gpl3Plus;
platforms = platforms.all; platforms = lib.platforms.all;
}; };
}; })
in
cg3

View file

@ -0,0 +1,38 @@
{
lib,
stdenv,
fetchFromGitHub,
meson,
ninja,
vala,
pkg-config,
blueprint-compiler,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "chcase";
version = "2.3.0";
src = fetchFromGitHub {
owner = "ryonakano";
repo = "chcase";
tag = finalAttrs.version;
hash = "sha256-3TuAnuWV3Sm1T76Go4NWe2eA55ImR1TFYoCUnqfp9DE=";
};
nativeBuildInputs = [
meson
ninja
vala
pkg-config
blueprint-compiler
];
meta = {
homepage = "https://github.com/ryonakano/chcase";
description = "Small library to convert case of a given string";
license = lib.licenses.lgpl3Plus;
platforms = lib.platforms.linux;
maintainers = with lib.maintainers; [ emaryn ];
};
})

View file

@ -1,26 +1,24 @@
{ {
lib, lib,
fetchFromGitHub, fetchFromGitHub,
python3, python3Packages,
}: }:
with python3.pkgs; python3Packages.buildPythonApplication rec {
buildPythonApplication rec {
pname = "check-jsonschema"; pname = "check-jsonschema";
version = "0.30.0"; version = "0.33.0";
format = "setuptools"; pyproject = true;
disabled = pythonOlder "3.7";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "python-jsonschema"; owner = "python-jsonschema";
repo = "check-jsonschema"; repo = "check-jsonschema";
tag = version; tag = version;
hash = "sha256-qaNSL7ZPEWJ8Zc/XPEWtUJYQnUJ7jNdla1I0d6+GReM="; hash = "sha256-dygE9vFQpoDtTBtN4zoWY1JXUxBSgiX3GDzdk72BmgI=";
}; };
propagatedBuildInputs = [ build-system = with python3Packages; [ setuptools ];
dependencies = with python3Packages; [
ruamel-yaml ruamel-yaml
jsonschema jsonschema
requests requests
@ -28,27 +26,26 @@ buildPythonApplication rec {
regress regress
]; ];
nativeCheckInputs = [ nativeCheckInputs = with python3Packages; [
pytestCheckHook pytestCheckHook
pytest-xdist pytest-xdist
responses responses
identify
]; ];
disabledTests = [ "test_schemaloader_yaml_data" ];
pythonImportsCheck = [ pythonImportsCheck = [
"check_jsonschema" "check_jsonschema"
"check_jsonschema.cli" "check_jsonschema.cli"
]; ];
disabledTests = [ meta = {
"test_schemaloader_yaml_data"
];
meta = with lib; {
description = "Jsonschema CLI and pre-commit hook"; description = "Jsonschema CLI and pre-commit hook";
mainProgram = "check-jsonschema"; mainProgram = "check-jsonschema";
homepage = "https://github.com/python-jsonschema/check-jsonschema"; homepage = "https://github.com/python-jsonschema/check-jsonschema";
changelog = "https://github.com/python-jsonschema/check-jsonschema/blob/${version}/CHANGELOG.rst"; changelog = "https://github.com/python-jsonschema/check-jsonschema/blob/${version}/CHANGELOG.rst";
license = licenses.asl20; license = lib.licenses.asl20;
maintainers = with maintainers; [ sudosubin ]; maintainers = with lib.maintainers; [ sudosubin ];
}; };
} }

View file

@ -1,26 +1,20 @@
{ {
stdenv,
lib, lib,
stdenv,
fetchFromGitHub, fetchFromGitHub,
chruby,
}: }:
stdenv.mkDerivation rec { stdenv.mkDerivation (finalAttrs: {
pname = "chruby-fish"; pname = "chruby-fish";
version = "0.8.2"; version = "1.0.0";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "JeanMertz"; owner = "JeanMertz";
repo = "chruby-fish"; repo = "chruby-fish";
rev = "v${version}"; tag = "v${finalAttrs.version}";
sha256 = "15q0ywsn9pcypbpvlq0wb41x4igxm9bsvhg9a05dqw1n437qjhyb"; hash = "sha256-Lk6XvmKgEjXVjO3jMjJkCxoX7TGMxq3ib0Ohh/J4IPI=";
}; };
postInstall = ''
sed -i -e '1iset CHRUBY_ROOT ${chruby}' $out/share/chruby/auto.fish
sed -i -e '1iset CHRUBY_ROOT ${chruby}' $out/share/chruby/chruby.fish
'';
installFlags = [ "PREFIX=$(out)" ]; installFlags = [ "PREFIX=$(out)" ];
meta = { meta = {
@ -30,4 +24,4 @@ stdenv.mkDerivation rec {
platforms = lib.platforms.all; platforms = lib.platforms.all;
maintainers = [ lib.maintainers.cohei ]; maintainers = [ lib.maintainers.cohei ];
}; };
} })

View file

@ -1,65 +1,78 @@
{ {
lib, lib,
stdenv,
rustPlatform, rustPlatform,
fetchFromGitHub, fetchFromGitHub,
wrapGAppsHook4, wrapGAppsHook4,
pkg-config, pkg-config,
blueprint-compiler, blueprint-compiler,
meson,
ninja,
rustc,
fetchurl,
cargo,
desktop-file-utils,
gtk4, gtk4,
libadwaita, libadwaita,
glib, glib,
poppler,
gtksourceview5,
nix-update-script, nix-update-script,
}: }:
let let
version = "1.3.1"; poppler' = poppler.overrideAttrs (oldAttrs: rec {
appid = "de.leopoldluley.Clapgrep"; version = "25.01.0";
src = fetchurl {
url = "https://poppler.freedesktop.org/poppler-${version}.tar.xz";
hash = "sha256-fu/BIiB7u9cqMDxeB0P0lB6K6GHiTc8FAeGM4dFBQRI=";
};
patches = [ ];
doCheck = false;
});
in in
rustPlatform.buildRustPackage { stdenv.mkDerivation (finalAttrs: {
pname = "clapgrep"; pname = "clapgrep";
inherit version; version = "25.04";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "luleyleo"; owner = "luleyleo";
repo = "clapgrep"; repo = "clapgrep";
tag = "v${version}"; tag = "v${finalAttrs.version}";
hash = "sha256-MYV8MrCIpa8eqp2iCLTNLZrVQOyGsMEGqlnEF43fyls="; hash = "sha256-mx52z+YpHdq4zSmH1d3KlNhj3ezpoWMGB0FEr4B20sg=";
}; };
useFetchCargoVendor = true; cargoDeps = rustPlatform.fetchCargoVendor {
cargoHash = "sha256-tpWv8CznTxoAgOf0mb99peqUTQSfv+16dAmX8n7XVDQ="; inherit (finalAttrs) src;
hash = "sha256-hTejIaXIAi8opZdE2X3vEi+VYoSti8RNB41ikVOWGPk=";
};
nativeBuildInputs = [ nativeBuildInputs = [
meson
ninja
wrapGAppsHook4 wrapGAppsHook4
pkg-config pkg-config
blueprint-compiler blueprint-compiler
rustc
rustPlatform.cargoSetupHook
cargo
desktop-file-utils
]; ];
buildInputs = [ buildInputs = [
gtk4 gtk4
libadwaita libadwaita
glib glib
poppler'
gtksourceview5
]; ];
env.APP_ID = appid;
# see Justfile
postInstall = ''
mv $out/bin/clapgrep-gnome $out/bin/clapgrep
install -D assets/${appid}.desktop -t $out/share/applications
install -D assets/${appid}.metainfo.xml -t $out/share/metainfo
install -D assets/icons/hicolor/scalable/apps/${appid}.svg -t $out/share/icons/hicolor/scalable/apps
mkdir -p assets/locale
cat po/LINGUAS | while read lang; do
mkdir -p assets/locale/$lang/LC_MESSAGES;
msgfmt -o assets/locale/$lang/LC_MESSAGES/${appid}.mo po/$lang.po;
done
cp -r assets/locale -t $out/share
'';
passthru.updateScript = nix-update-script { }; passthru.updateScript = nix-update-script { };
meta = { meta = {
@ -70,4 +83,4 @@ rustPlatform.buildRustPackage {
maintainers = with lib.maintainers; [ pluiedev ]; maintainers = with lib.maintainers; [ pluiedev ];
mainProgram = "clapgrep"; mainProgram = "clapgrep";
}; };
} })

View file

@ -5,13 +5,13 @@
"packages": { "packages": {
"": { "": {
"dependencies": { "dependencies": {
"@anthropic-ai/claude-code": "^0.2.105" "@anthropic-ai/claude-code": "^0.2.106"
} }
}, },
"node_modules/@anthropic-ai/claude-code": { "node_modules/@anthropic-ai/claude-code": {
"version": "0.2.105", "version": "0.2.106",
"resolved": "https://registry.npmjs.org/@anthropic-ai/claude-code/-/claude-code-0.2.105.tgz", "resolved": "https://registry.npmjs.org/@anthropic-ai/claude-code/-/claude-code-0.2.106.tgz",
"integrity": "sha512-GR4fOK6WTTgMzM66eHBZsaOA2fKZULgfeZoi87v6Fv6hXGy8SPbrdAH8ULKAPlBqxGlPkUo1KcfyXD5VE28Olw==", "integrity": "sha512-bryGjkA4VhQ4E7McxHVGgectYP/J9zhtkOP9nMNkLPepi5m85tyPHOZgTIhA3R3N7wrIRHPlpMv5y2GjGOo5TQ==",
"hasInstallScript": true, "hasInstallScript": true,
"license": "SEE LICENSE IN README.md", "license": "SEE LICENSE IN README.md",
"dependencies": { "dependencies": {

View file

@ -7,16 +7,16 @@
buildNpmPackage rec { buildNpmPackage rec {
pname = "claude-code"; pname = "claude-code";
version = "0.2.105"; version = "0.2.106";
nodejs = nodejs_20; nodejs = nodejs_20;
src = fetchzip { src = fetchzip {
url = "https://registry.npmjs.org/@anthropic-ai/claude-code/-/claude-code-${version}.tgz"; url = "https://registry.npmjs.org/@anthropic-ai/claude-code/-/claude-code-${version}.tgz";
hash = "sha256-es1FjTbD4xtSzziAQL2uW129+sfq0gKN3u/9DARtqPY="; hash = "sha256-hS/aPB4hL1+jeJjIu+ztS2TVLO4lL7IKhBTMXlRO58Y=";
}; };
npmDepsHash = "sha256-GewrAlGEDdqfYJgdeCyc/i8KmLruwJYo9FlZN1dNa/g="; npmDepsHash = "sha256-HZ3d04tLeZkSLACIu79K5QIYpkYNcSyvp07OXIgFdss=";
postPatch = '' postPatch = ''
cp ${./package-lock.json} package-lock.json cp ${./package-lock.json} package-lock.json

View file

@ -8,16 +8,16 @@
buildGoModule rec { buildGoModule rec {
pname = "clickhouse-backup"; pname = "clickhouse-backup";
version = "2.6.15"; version = "2.6.16";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "Altinity"; owner = "Altinity";
repo = "clickhouse-backup"; repo = "clickhouse-backup";
rev = "v${version}"; rev = "v${version}";
hash = "sha256-WHIrgKWO8yHHbQ5i3qvCYjxuRPj8sRasjxQ2J1N8q7o="; hash = "sha256-3RckJDhMtmK/Yusad1McFee/ECYomAwxY+WlimkPPCs=";
}; };
vendorHash = "sha256-4qPZihOuaD8lKF31fhyTDG7gBa0gExLVavazGZWDyAk="; vendorHash = "sha256-tgDNKujpmDk6wcP9jEwfSbRWzJqiPs7aAWkkaD195Ss=";
ldflags = [ ldflags = [
"-X main.version=${version}" "-X main.version=${version}"

View file

@ -1,24 +0,0 @@
diff --git a/src/src/app.cpp b/src/src/app.cpp
index 81130fd..f98d37b 100644
--- a/src/src/app.cpp
+++ b/src/src/app.cpp
@@ -602,7 +602,8 @@ bool CodeBlocksApp::OnInit()
m_BatchWindowAutoClose = true;
m_pSingleInstance = nullptr;
- wxTheClipboard->Flush();
+ if (wxTheClipboard->IsOpened())
+ wxTheClipboard->Flush();
wxCmdLineParser& parser = *Manager::GetCmdLineParser();
parser.SetDesc(cmdLineDesc);
@@ -851,7 +852,8 @@ bool CodeBlocksApp::OnInit()
int CodeBlocksApp::OnExit()
{
- wxTheClipboard->Flush();
+ if (wxTheClipboard->IsOpened())
+ wxTheClipboard->Flush();
if (g_DDEServer) delete g_DDEServer;

View file

@ -16,12 +16,12 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "${pname}-${lib.optionalString contribPlugins "full-"}${version}"; name = "${pname}-${lib.optionalString contribPlugins "full-"}${version}";
version = "20.03";
pname = "codeblocks"; pname = "codeblocks";
version = "25.03";
src = fetchurl { src = fetchurl {
url = "mirror://sourceforge/codeblocks/Sources/${version}/codeblocks-${version}.tar.xz"; url = "mirror://sourceforge/codeblocks/Sources/${version}/codeblocks_${version}.tar.xz";
sha256 = "1idaksw1vacmm83krxh5zlb12kad3dkz9ixh70glw1gaibib7vhm"; hash = "sha256-sPaqWQjTNtf0H5V2skGKx9J++8WSgqqMkXHYjOp0BJ4=";
}; };
nativeBuildInputs = [ nativeBuildInputs = [
@ -30,6 +30,7 @@ stdenv.mkDerivation rec {
zip zip
wrapGAppsHook3 wrapGAppsHook3
]; ];
buildInputs = buildInputs =
[ [
wxGTK32 wxGTK32
@ -39,114 +40,15 @@ stdenv.mkDerivation rec {
hunspell hunspell
boost boost
]; ];
enableParallelBuilding = true; enableParallelBuilding = true;
patches = [
./writable-projects.patch patches = [ ./writable-projects.patch ];
./fix-clipboard-flush.patch
# Fix build on non-x86 machines preConfigure = "substituteInPlace ./configure --replace-fail /bin/file ${file}/bin/file";
(fetchpatch {
name = "remove-int3.patch";
url = "https://github.com/arnholm/codeblocks_sfmirror/commit/d76c015c456561d2c7987935a5f4dc6c0932b0c4.patch";
sha256 = "sha256-dpH33vGf2aNdYTeLwxglYDNbvwoY2bGSG6YFRyoGw+A=";
})
(fetchpatch {
name = "remove-pragmas.patch";
url = "https://github.com/arnholm/codeblocks_sfmirror/commit/966949d5ab7f3cb86e2a2c7ef4e853ee209b5a1a.patch";
sha256 = "sha256-XjejjGOvDk3gl1/n9R69XATGLj5n7tOZNyG8vIlwfyg=";
})
# Fix build with GCC 11
(fetchpatch {
name = "use-gcc11-openfilelist.patch";
url = "https://github.com/arnholm/codeblocks_sfmirror/commit/a5ea6ff7ff301d739d3dc8145db1578f504ee4ca.patch";
sha256 = "sha256-kATaLej8kJf4xm0VicHfRetOepX8O9gOhwdna0qylvQ=";
})
(fetchpatch {
name = "use-gcc11-ccmanager.patch";
url = "https://github.com/arnholm/codeblocks_sfmirror/commit/04b7c50fb8c6a29b2d84579ee448d2498414d855.patch";
sha256 = "sha256-VPy/M6IvNBxUE4hZRbLExFm0DJf4gmertrqrvsXQNz4=";
})
# Fix build with wxGTK 3.1.5
(fetchpatch {
name = "use-wxgtk315.patch";
url = "https://github.com/arnholm/codeblocks_sfmirror/commit/2345b020b862ec855038dd32a51ebb072647f28d.patch";
sha256 = "sha256-RRjwZA37RllnG8cJdBEnASpEd8z0+ru96fjntO42OvU=";
})
(fetchpatch {
name = "fix-taskbar-icons.patch";
url = "https://github.com/arnholm/codeblocks_sfmirror/commit/40eb88e3f2b933f19f9933e06c8d0899c54f5e25.patch";
hash = "sha256-Gj5gtxX5QNYAeF+QrPS/bBHLLEmflSxUHSLUK3GSs0I=";
})
(fetchpatch {
name = "fix-warnings.patch";
url = "https://github.com/arnholm/codeblocks_sfmirror/commit/56ac0396fad7a5b4bbb40bb8c4b5fe1755078aef.patch";
excludes = [ "src/src/environmentsettingsdlg.h" ];
hash = "sha256-tl4rF9iAf1TzCIbKhVFqcxvr1IiPdwqLYZg0SY5BJ7I=";
})
(fetchpatch {
name = "fix-getstring.patch";
url = "https://github.com/arnholm/codeblocks_sfmirror/commit/dbdf5c5ea9e3161233f0588a7616b7e4fedc7870.patch";
sha256 = "sha256-DrEMFluN8vs0LERa7ULGshl7HdejpsuvXAMjIr/K1fQ=";
})
# Fix build with wxGTK 3.1.6
(fetchpatch {
name = "remove-code-for-old-wx-1.patch";
url = "https://github.com/arnholm/codeblocks_sfmirror/commit/8035dfdff321754819f79e3165401aa59bd8c7f7.patch";
hash = "sha256-Z8Ap03W/XH5VwKFVudJr7rugb0BgI2dKJgQS4yIWbEM=";
})
(fetchpatch {
name = "remove-code-for-old-wx-2.patch";
url = "https://github.com/arnholm/codeblocks_sfmirror/commit/9a9c6a9d5e3e0f6eff5594ecd61a2222f073be9c.patch";
hash = "sha256-SwYixvbRuXQ+jA1ijmClWkzqzzr0viVuFOAsihGc5dM=";
})
(fetchpatch {
name = "remove-code-for-old-wx-3.patch";
url = "https://github.com/arnholm/codeblocks_sfmirror/commit/c28746f4887f10e6f9f10eeafae0fb22ecdbf9c7.patch";
hash = "sha256-1lcIiCnY2nBuUsffXC2rdglOE3ccIbogcgTx4M2Ee2I=";
})
(fetchpatch {
name = "fix-notebookstyles.patch";
url = "https://github.com/arnholm/codeblocks_sfmirror/commit/29315df024251850832583f73e67e515dae10830.patch";
hash = "sha256-Uc1V0eEbNljnN+1Dqb/35MLSSoLjyuRZMTofgcXRyb8=";
})
(fetchpatch {
name = "fix-regex.patch";
url = "https://github.com/arnholm/codeblocks_sfmirror/commit/46720043319758cb0e798eb23520063583c40eaa.patch";
hash = "sha256-Aix58T0JJcX/7VZukU/9i/nXh9GJywXC3yXEyUZK0js=";
})
(fetchpatch {
name = "fix-build-with-clang.patch";
url = "https://github.com/arnholm/codeblocks_sfmirror/commit/92cb2239662952e3b59b31e03edd653bb8066e64.patch";
hash = "sha256-XI7JW9Nuueb7muKpaC2icM/CxhrCJtO48cLHK+BVWXI=";
})
(fetchpatch {
name = "fix-build-with-clang-2.patch";
url = "https://github.com/arnholm/codeblocks_sfmirror/commit/edc6b145bcdcaf2823ef9c7da51a211f65d6f5d0.patch";
hash = "sha256-GuttBL4gp1IBn3ia2O8wtOR6xOSGrzwCKXwFLI3RO5o=";
})
(fetchpatch {
name = "fix-normalize.patch";
url = "https://github.com/archlinux/svntogit-community/raw/458eacb60bc0e71e3d333943cebbc41e75ed0956/trunk/sc_wxtypes-normalize.patch";
hash = "sha256-7wEwDLwuNUWHUwHjFyq74sHiuEha1VexRLEX42rPZSs=";
})
# Fix HiDPI
(fetchpatch {
name = "update-about-dialog.patch";
url = "https://github.com/arnholm/codeblocks_sfmirror/commit/a4aacc92640b587ad049cd6aa68c637e536e9ab5.patch";
hash = "sha256-2S4sVn+Dq5y9xcxCkzQ+WeR+qWxAOLbQUZEnk060RI0=";
})
(fetchpatch {
name = "add-display-info.patch";
url = "https://github.com/arnholm/codeblocks_sfmirror/commit/f2f127cf5cd97c7da6a957a3f7764cb25cc9017e.patch";
hash = "sha256-C0dVfC0NIHMXfWNlOwjzoGz5tmG2dlnU/EE92Jjebbs=";
})
(fetchpatch {
name = "fix-hidpi.patch";
url = "https://github.com/arnholm/codeblocks_sfmirror/commit/b2e4f1279804e1d11b71bc75eeb37072c3589296.patch";
hash = "sha256-/Xp6ww9C3V6I67tTA4MrGpSGo3J0MXzFjzQU7RxY84U=";
})
];
preConfigure = "substituteInPlace ./configure --replace /usr/bin/file ${file}/bin/file";
postConfigure = lib.optionalString stdenv.hostPlatform.isLinux "substituteInPlace libtool --replace ldconfig ${stdenv.cc.libc.bin}/bin/ldconfig"; postConfigure = lib.optionalString stdenv.hostPlatform.isLinux "substituteInPlace libtool --replace ldconfig ${stdenv.cc.libc.bin}/bin/ldconfig";
configureFlags = configureFlags =
[ "--enable-pch=no" ] [ "--enable-pch=no" ]
++ lib.optionals contribPlugins [ ++ lib.optionals contribPlugins [
@ -156,13 +58,14 @@ stdenv.mkDerivation rec {
) )
"--with-boost-libdir=${boost}/lib" "--with-boost-libdir=${boost}/lib"
]; ];
postInstall = lib.optionalString stdenv.hostPlatform.isDarwin '' postInstall = lib.optionalString stdenv.hostPlatform.isDarwin ''
ln -s $out/lib/codeblocks/plugins $out/share/codeblocks/plugins ln -s $out/lib/codeblocks/plugins $out/share/codeblocks/plugins
''; '';
meta = with lib; { meta = {
maintainers = [ maintainers.linquize ]; maintainers = [ lib.maintainers.linquize ];
platforms = platforms.all; platforms = lib.platforms.all;
description = "Open source, cross platform, free C, C++ and Fortran IDE"; description = "Open source, cross platform, free C, C++ and Fortran IDE";
longDescription = '' longDescription = ''
Code::Blocks is a free C, C++ and Fortran IDE built to meet the most demanding needs of its users. Code::Blocks is a free C, C++ and Fortran IDE built to meet the most demanding needs of its users.
@ -170,6 +73,6 @@ stdenv.mkDerivation rec {
Finally, an IDE with all the features you need, having a consistent look, feel and operation across platforms. Finally, an IDE with all the features you need, having a consistent look, feel and operation across platforms.
''; '';
homepage = "http://www.codeblocks.org"; homepage = "http://www.codeblocks.org";
license = licenses.gpl3; license = lib.licenses.gpl3;
}; };
} }

View file

@ -5,25 +5,26 @@
SDL2, SDL2,
libGL, libGL,
cmake, cmake,
makeWrapper, makeBinaryWrapper,
}: }:
stdenv.mkDerivation { stdenv.mkDerivation (finalAttrs: {
pname = "CroMagRally"; pname = "CroMagRally";
version = "3.0.0-unstable-2023-05-21"; version = "3.0.1";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "jorio"; owner = "jorio";
repo = "CroMagRally"; repo = "CroMagRally";
rev = "5983de40c180b50bbbec8b04f5f5f1ceccd1901b"; tag = finalAttrs.version;
hash = "sha256-QbUkrNY7DZQts8xaimE83yXpCweKvnn0uDb1CawLfEE="; hash = "sha256-6KmvILl5tZYxbDYg58LVstmtqoCogc6TV11oagKvqcg=";
fetchSubmodules = true; fetchSubmodules = true;
}; };
nativeBuildInputs = [ nativeBuildInputs = [
cmake cmake
makeWrapper makeBinaryWrapper
]; ];
buildInputs = [ buildInputs = [
SDL2 SDL2
libGL libGL
@ -31,22 +32,24 @@ stdenv.mkDerivation {
installPhase = '' installPhase = ''
runHook preInstall runHook preInstall
mkdir -p "$out/share/CroMagRally"
mv Data ReadMe.txt "$out/share/CroMagRally/" mkdir -p $out/share/CroMagRally
install -Dm755 {.,$out/bin}/CroMagRally mv Data ReadMe.txt $out/share/CroMagRally/
wrapProgram $out/bin/CroMagRally --chdir "$out/share/CroMagRally" install -Dm755 CroMagRally $out/bin/CroMagRally
install -Dm644 $src/packaging/cromagrally.desktop $out/share/applications/cromagrally.desktop wrapProgram $out/bin/CroMagRally --chdir $out/share/CroMagRally
install -Dm644 $src/packaging/cromagrally-desktopicon.png $out/share/pixmaps/cromagrally-desktopicon.png install -Dm644 ${finalAttrs.src}/packaging/io.jor.cromagrally.desktop $out/share/applications/cromagrally.desktop
install -Dm644 ${finalAttrs.src}/packaging/io.jor.cromagrally.png $out/share/pixmaps/io.jor.cromagrally.png
runHook postInstall runHook postInstall
''; '';
meta = with lib; { meta = {
description = "Port of Cro-Mag Rally, a 2000 Macintosh game by Pangea Software, for modern operating systems"; description = "Port of Cro-Mag Rally, a 2000 Macintosh game by Pangea Software, for modern operating systems";
homepage = "https://github.com/jorio/CroMagRally"; homepage = "https://github.com/jorio/CroMagRally";
changelog = "https://github.com/jorio/CroMagRally/releases"; changelog = "https://github.com/jorio/CroMagRally/releases";
license = licenses.cc-by-sa-40; license = lib.licenses.cc-by-sa-40;
maintainers = with maintainers; [ lux ]; maintainers = with lib.maintainers; [ lux ];
platforms = platforms.linux; platforms = lib.platforms.linux;
mainProgram = "CroMagRally"; mainProgram = "CroMagRally";
}; };
} })

View file

@ -2,21 +2,31 @@
lib, lib,
rustPlatform, rustPlatform,
fetchFromGitHub, fetchFromGitHub,
fetchpatch2,
}: }:
rustPlatform.buildRustPackage rec { rustPlatform.buildRustPackage rec {
pname = "csvlens"; pname = "csvlens";
version = "0.11.0"; version = "0.12.0";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "YS-L"; owner = "YS-L";
repo = "csvlens"; repo = "csvlens";
tag = "v${version}"; tag = "v${version}";
hash = "sha256-JlyDw+VL/vpKTvvBlDIwVIovhKJX2pV4UTY47cLR1IE="; hash = "sha256-kyUfpZaOpLP8nGrXH8t9cOutXFkZsmZnPmIu3t6uaWU=";
}; };
patches = [
(fetchpatch2 {
# https://github.com/YS-L/csvlens/pull/129
name = "fix-flaky-test.patch";
url = "https://github.com/YS-L/csvlens/commit/8544e9d4179eef10e8d1a625a41c0e1ef3eb188b.patch";
hash = "sha256-j02H+R14Hfm7ZEHFPRGqTY/GEzj5ETXp72kk7os9Zso=";
})
];
useFetchCargoVendor = true; useFetchCargoVendor = true;
cargoHash = "sha256-nfw8mMauOTDCBh9O2ye96p8WXDFta4DXXb9kJVz7f3E="; cargoHash = "sha256-lr1pqFodqgsKHRFGonXj0nG4elomiSMETulBdCLMR3w=";
meta = with lib; { meta = with lib; {
description = "Command line csv viewer"; description = "Command line csv viewer";

View file

@ -26,7 +26,7 @@ let
doInstallCheck = false; doInstallCheck = false;
}); });
version = "1.6"; version = "1.6.1";
in in
rustPlatform.buildRustPackage { rustPlatform.buildRustPackage {
pname = "devenv"; pname = "devenv";
@ -36,11 +36,11 @@ rustPlatform.buildRustPackage {
owner = "cachix"; owner = "cachix";
repo = "devenv"; repo = "devenv";
rev = "v${version}"; rev = "v${version}";
hash = "sha256-ui6UwatBHN2WFvStGUHVOdBu72MsG/7b0GeyRdTCyEw="; hash = "sha256-CEVWxRaln3sp0541QpMfcfmI2w+RN72UgNLV5Dy9sco=";
}; };
useFetchCargoVendor = true; useFetchCargoVendor = true;
cargoHash = "sha256-XS6F/Sp5peJdzAormYPjAA4SJfusMH6PRYIM3Tw5AUw="; cargoHash = "sha256-t4Cj7JlBVrMP02Dqibq2IgdKy6ejv+CeffmcPAkh7BE=";
buildAndTestSubdir = "devenv"; buildAndTestSubdir = "devenv";

View file

@ -4,34 +4,37 @@
fetchFromGitHub, fetchFromGitHub,
}: }:
buildGoModule rec { buildGoModule (finalAttrs: {
pname = "falcoctl"; pname = "falcoctl";
version = "0.5.1"; version = "0.11.1";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "falcosecurity"; owner = "falcosecurity";
repo = "falcoctl"; repo = "falcoctl";
rev = "v${version}"; tag = "v${finalAttrs.version}";
hash = "sha256-X4fZBTEbOIQbfmuxDODEkYW43ntVIkwFDULYq+ps+9s="; hash = "sha256-3YsxshQh+LQBpKt7YG52rwOdWyjkfn+kTa6nsHpkA+A=";
}; };
vendorHash = "sha256-26EXoXMWK/zPX4M7kG3QRAb4aqtIWgSnSgXcxKUwfZk="; vendorHash = "sha256-uIs3e2E8ThW7n9SXX2lu63KFmsy/QrVGQ4NgY1J+Qr0=";
ldflags = [ ldflags = [
"-s" "-s"
"-w" "-w"
"-X github.com/falcosecurity/falcoctl/cmd/version.semVersion=${version}" "-X github.com/falcosecurity/falcoctl/cmd/version.semVersion=${finalAttrs.version}"
]; ];
meta = with lib; { # require network
doCheck = false;
meta = {
description = "Administrative tooling for Falco"; description = "Administrative tooling for Falco";
mainProgram = "falcoctl"; mainProgram = "falcoctl";
homepage = "https://github.com/falcosecurity/falcoctl"; homepage = "https://github.com/falcosecurity/falcoctl";
license = licenses.asl20; license = lib.licenses.asl20;
maintainers = with maintainers; [ maintainers = with lib.maintainers; [
developer-guy developer-guy
kranurag7 kranurag7
LucaGuerra LucaGuerra
]; ];
}; };
} })

View file

@ -6,16 +6,16 @@
buildGoModule rec { buildGoModule rec {
pname = "firefox-sync-client"; pname = "firefox-sync-client";
version = "1.8.0"; version = "1.9.0";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "Mikescher"; owner = "Mikescher";
repo = "firefox-sync-client"; repo = "firefox-sync-client";
rev = "v${version}"; rev = "v${version}";
hash = "sha256-Ax+v4a8bVuym1bp9dliXX85PXJk2Qlik3ME+adGiL1s="; hash = "sha256-tzYuYSifV/a9SPb5KyabhQ29ByXuAgQgi3t0VMHVSH8=";
}; };
vendorHash = "sha256-MYetPdnnvIBzrYrA+eM9z1P3+P5FumYKH+brvvlwkm4="; vendorHash = "sha256-kDh/5SOwKPYl9sC9W17bnzG73fGI5iX6lSjcB3IjOss=";
meta = { meta = {
description = "Commandline-utility to list/view/edit/delete entries in a firefox-sync account."; description = "Commandline-utility to list/view/edit/delete entries in a firefox-sync account.";

View file

@ -142,7 +142,6 @@ stdenv.mkDerivation (finalAttrs: {
lgpl3Only lgpl3Only
]; ];
maintainers = with maintainers; [ maintainers = with maintainers; [
ericsagnes
lovesegfault lovesegfault
techknowlogick techknowlogick
kiike kiike

View file

@ -9,13 +9,13 @@
buildGoModule rec { buildGoModule rec {
pname = "go-blueprint"; pname = "go-blueprint";
version = "0.10.8"; version = "0.10.9";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "Melkeydev"; owner = "Melkeydev";
repo = "go-blueprint"; repo = "go-blueprint";
rev = "v${version}"; rev = "v${version}";
hash = "sha256-oEp+qMWN2SIW9MBVbfk72Ogu9nbuR++YsTeRpbbQ2LY="; hash = "sha256-5xVmMHQE0Jl15ZZnmvJQDUsCBfMaE5hWUighUdfoN/g=";
}; };
ldflags = [ ldflags = [

View file

@ -4,22 +4,22 @@
fetchFromGitHub, fetchFromGitHub,
}: }:
buildGoModule rec { buildGoModule (finalAttrs: {
pname = "gomplate"; pname = "gomplate";
version = "4.2.0"; version = "4.3.2";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "hairyhenderson"; owner = "hairyhenderson";
repo = "gomplate"; repo = "gomplate";
tag = "v${version}"; tag = "v${finalAttrs.version}";
hash = "sha256-PupwL0VzZiWz+96Mv1o6QSmj7iLyvVIQMcdRlGqmpRs="; hash = "sha256-94zZuig/AN/UzZx66YbrkBX2Nq+/gPLXlcOz1ar8weE=";
}; };
vendorHash = "sha256-1BOrffMtYz/cEsVaMseZQJlGsAdax+c1CvebwP8jaL4="; vendorHash = "sha256-AS69mXZ5Faedj1cv7bfOfBfvdMQrCH1o9p6UN/O8ZLs=";
ldflags = [ ldflags = [
"-s" "-s"
"-X github.com/${src.owner}/${pname}/v4/version.Version=${version}" "-X github.com/${finalAttrs.src.owner}/${finalAttrs.pname}/v4/version.Version=${finalAttrs.version}"
]; ];
preCheck = '' preCheck = ''
@ -27,6 +27,7 @@ buildGoModule rec {
rm net/net_test.go \ rm net/net_test.go \
internal/tests/integration/datasources_blob_test.go \ internal/tests/integration/datasources_blob_test.go \
internal/tests/integration/datasources_git_test.go \ internal/tests/integration/datasources_git_test.go \
internal/tests/integration/test_ec2_utils_test.go \
render_test.go render_test.go
# some tests rely on external tools we'd rather not depend on # some tests rely on external tools we'd rather not depend on
rm internal/tests/integration/datasources_consul_test.go \ rm internal/tests/integration/datasources_consul_test.go \
@ -37,15 +38,15 @@ buildGoModule rec {
rm $out/bin/gen rm $out/bin/gen
''; '';
meta = with lib; { meta = {
description = "Flexible commandline tool for template rendering"; description = "Flexible commandline tool for template rendering";
mainProgram = "gomplate"; mainProgram = "gomplate";
homepage = "https://gomplate.ca/"; homepage = "https://gomplate.ca/";
changelog = "https://github.com/hairyhenderson/gomplate/releases/tag/v${version}"; changelog = "https://github.com/hairyhenderson/gomplate/releases/tag/v${finalAttrs.version}";
license = licenses.mit; license = lib.licenses.mit;
maintainers = with maintainers; [ maintainers = with lib.maintainers; [
ris ris
jlesquembre jlesquembre
]; ];
}; };
} })

View file

@ -9,16 +9,16 @@
buildGoModule (finalAttrs: { buildGoModule (finalAttrs: {
pname = "goshs"; pname = "goshs";
version = "1.0.3"; version = "1.0.5";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "patrickhener"; owner = "patrickhener";
repo = "goshs"; repo = "goshs";
tag = "v${finalAttrs.version}"; tag = "v${finalAttrs.version}";
hash = "sha256-Sthe19Wb3zBg4kOh+aDC0CxAwMD9+LcNsy6u7qEj+f8="; hash = "sha256-j/GsNkaheYDavxxoibR61knMR3x7o1pkc6NcmGrHSxY=";
}; };
vendorHash = "sha256-+bb+3ZYzRVxRh1WQEKa+WqH29fHErNWaTcHO70wCwPY="; vendorHash = "sha256-LzuY3l6QQnMtAoVM2i206BuoTkVLVHg1DTWZhjIepY8=";
ldflags = [ ldflags = [
"-s" "-s"

View file

@ -0,0 +1,87 @@
{
lib,
flutter329,
fetchFromGitHub,
autoPatchelfHook,
copyDesktopItems,
makeDesktopItem,
runCommand,
yq,
gpt-box,
_experimental-update-script-combinators,
gitUpdater,
}:
flutter329.buildFlutterApplication rec {
pname = "gpt-box";
version = "1.0.385";
src = fetchFromGitHub {
owner = "lollipopkit";
repo = "flutter_gpt_box";
tag = "v${version}";
hash = "sha256-gl8kANxZLNXSuZxcK9WqfXxVWsCpZCbV+qmSt2ZnI6E=";
};
pubspecLock = lib.importJSON ./pubspec.lock.json;
gitHashes = {
computer = "sha256-qaD6jn78zDyZBktwJ4WTQa8oCvCWQJOBDaozBVsXNb8=";
fl_build = "sha256-CSKe2yEIisftM0q79HbDTghShirWg02zi9v+hD5R57g=";
fl_lib = "sha256-gAZqxPOBMXfy0mHEd7Jud0QJwyRbqC4nIRDIA81TZxM=";
flutter_highlight = "sha256-jSATD4Ww5FHEscGNiTN/FE1+iQHzg/XMbsC9f5XcNGw=";
openai_dart = "sha256-FP8J8ul8F68vrEdEZAmzNS921evtRfCIOlV2Aubifaw=";
webdav_client = "sha256-aTkMcrXksHLEG4UpeE1MBmCKpX5l11+y/p4tICrOTGk=";
};
nativeBuildInputs = [
copyDesktopItems
autoPatchelfHook
];
desktopItems = [
(makeDesktopItem {
name = "gpt-box";
exec = "gpt-box";
icon = "gpt-box";
genericName = "GPT Box";
desktopName = "GPT Box";
categories = [ "Utility" ];
keywords = [
"gpt"
"chat"
"openai"
"ai"
];
})
];
postInstall = ''
install -Dm0644 assets/app_icon.png $out/share/pixmaps/gpt-box.png
'';
passthru = {
pubspecSource =
runCommand "pubspec.lock.json"
{
nativeBuildInputs = [ yq ];
inherit (gpt-box) src;
}
''
cat $src/pubspec.lock | yq > $out
'';
updateScript = _experimental-update-script-combinators.sequence [
(gitUpdater { rev-prefix = "v"; })
(_experimental-update-script-combinators.copyAttrOutputToFile "gpt-box.pubspecSource" ./pubspec.lock.json)
];
};
meta = {
description = "Third-party client for OpenAI API";
homepage = "https://github.com/lollipopkit/flutter_gpt_box";
mainProgram = "GPTBox";
license = lib.licenses.gpl3Plus;
platforms = lib.platforms.linux;
maintainers = with lib.maintainers; [ emaryn ];
};
}

File diff suppressed because it is too large Load diff

View file

@ -6,26 +6,26 @@
python3Packages.buildPythonApplication rec { python3Packages.buildPythonApplication rec {
pname = "grabserial"; pname = "grabserial";
version = "2.0.2"; version = "2.1.8";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "tbird20d"; owner = "tbird20d";
repo = "grabserial"; repo = "grabserial";
rev = "v${version}"; tag = "v${version}";
sha256 = "0ryk4w8q6zfmia71nwnk5b7xaxw0sf45dw9q50xp7k76i3k5f9f3"; hash = "sha256-XHI5r4OkJUtMuH83jKvNttEpKpqARjxj9SDLzhSPxSc=";
}; };
propagatedBuildInputs = [ python3Packages.pyserial ]; dependencies = [ python3Packages.pyserial ];
# no usable tests # no usable tests
doCheck = false; doCheck = false;
meta = with lib; { meta = {
description = "Python based serial dump and timing program"; description = "Python based serial dump and timing program";
mainProgram = "grabserial"; mainProgram = "grabserial";
homepage = "https://github.com/tbird20d/grabserial"; homepage = "https://github.com/tbird20d/grabserial";
license = licenses.gpl2; license = lib.licenses.gpl2;
maintainers = with maintainers; [ vmandela ]; maintainers = with lib.maintainers; [ vmandela ];
platforms = platforms.linux; platforms = lib.platforms.linux;
}; };
} }

View file

@ -30,7 +30,7 @@
"@hapi/boom": "^10.0.0", "@hapi/boom": "^10.0.0",
"@puppeteer/browsers": "^2.3.1", "@puppeteer/browsers": "^2.3.1",
"chokidar": "^3.5.2", "chokidar": "^3.5.2",
"dompurify": "^2.5.4", "dompurify": "^3.2.4",
"express": "^4.21.1", "express": "^4.21.1",
"express-prom-bundle": "^6.5.0", "express-prom-bundle": "^6.5.0",
"jimp": "^0.22.12", "jimp": "^0.22.12",
@ -49,18 +49,18 @@
}, },
"devDependencies": { "devDependencies": {
"@grafana/eslint-config": "^6.0.0", "@grafana/eslint-config": "^6.0.0",
"@types/dompurify": "2.3.4", "@types/dompurify": "^3.2.0",
"@types/express": "^4.17.14", "@types/express": "^4.17.14",
"@types/jest": "^29.5.12", "@types/jest": "^29.5.12",
"@types/jsdom": "20.0.0", "@types/jsdom": "20.0.0",
"@types/multer": "^1.4.7", "@types/multer": "^1.4.7",
"@types/node": "^22.13.1", "@types/node": "^20.17.27",
"@types/pixelmatch": "^5.2.6", "@types/pixelmatch": "^5.2.6",
"@types/supertest": "^2.0.15", "@types/supertest": "^2.0.15",
"@typescript-eslint/eslint-plugin": "5.37.0", "@typescript-eslint/eslint-plugin": "5.37.0",
"@typescript-eslint/parser": "5.37.0", "@typescript-eslint/parser": "5.37.0",
"@yao-pkg/pkg": "^6.3.0", "@yao-pkg/pkg": "^6.3.0",
"axios": "1.7.4", "axios": "1.8.2",
"cross-env": "7.0.3", "cross-env": "7.0.3",
"eslint": "8.23.1", "eslint": "8.23.1",
"fast-png": "^6.2.0", "fast-png": "^6.2.0",
@ -88,6 +88,6 @@
}, },
"bin": "build/app.js", "bin": "build/app.js",
"engines": { "engines": {
"node": ">= 22" "node": ">= 20"
} }
} }

View file

@ -14,18 +14,18 @@
mkYarnPackage rec { mkYarnPackage rec {
pname = "grafana-image-renderer"; pname = "grafana-image-renderer";
version = "3.12.3"; version = "3.12.5";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "grafana"; owner = "grafana";
repo = "grafana-image-renderer"; repo = "grafana-image-renderer";
rev = "v${version}"; rev = "v${version}";
hash = "sha256-twB2V5iecLEMTrp+prFmDoJvcGLVQlLJ+DTSl/9V8S8="; hash = "sha256-dcWmMcvWwG4wGEEyFKa1R0jGGpK5x1F5Amr74JzJaLE=";
}; };
offlineCache = fetchYarnDeps { offlineCache = fetchYarnDeps {
yarnLock = src + "/yarn.lock"; yarnLock = src + "/yarn.lock";
hash = "sha256-TcsWApSR48OUIcQGko3XIaFCp22vFJbHcxrdFxUyRZU="; hash = "sha256-BBu+vOO0UgX3L7Svj0HgVKHR2lSe4tD6c9HDgJZdhHU=";
}; };
packageJSON = ./package.json; packageJSON = ./package.json;

View file

@ -2,14 +2,12 @@ Do not use vendored libraries
--- a/vendor/CMakeLists.txt --- a/vendor/CMakeLists.txt
+++ b/vendor/CMakeLists.txt +++ b/vendor/CMakeLists.txt
@@ -14,10 +14,7 @@ @@ -18,8 +18,6 @@
# License along with this library; if not, write to the Free Software if(GRN_WITH_BUNDLED_ONIGMO)
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
add_subdirectory(onigmo) add_subdirectory(onigmo)
endif()
-add_subdirectory(mruby) -add_subdirectory(mruby)
-add_subdirectory(mecab) -add_subdirectory(mecab)
-add_subdirectory(message_pack)
if(GRN_WITH_MRUBY) if(GRN_WITH_MRUBY)
add_subdirectory(groonga-log) add_subdirectory(groonga-log)
endif() endif()

View file

@ -2,7 +2,7 @@ Fix CMake install path
--- a/CMakeLists.txt --- a/CMakeLists.txt
+++ b/CMakeLists.txt +++ b/CMakeLists.txt
@@ -1141,11 +1141,11 @@ @@ -1879,11 +1879,11 @@
set(prefix "${CMAKE_INSTALL_PREFIX}") set(prefix "${CMAKE_INSTALL_PREFIX}")
set(exec_prefix "\${prefix}") set(exec_prefix "\${prefix}")

View file

@ -15,7 +15,6 @@
suggestSupport ? false, suggestSupport ? false,
zeromq, zeromq,
libevent, libevent,
openssl,
lz4Support ? false, lz4Support ? false,
lz4, lz4,
zlibSupport ? true, zlibSupport ? true,
@ -24,11 +23,11 @@
stdenv.mkDerivation (finalAttrs: { stdenv.mkDerivation (finalAttrs: {
pname = "groonga"; pname = "groonga";
version = "14.0.6"; version = "15.0.4";
src = fetchurl { src = fetchurl {
url = "https://packages.groonga.org/source/groonga/groonga-${finalAttrs.version}.tar.gz"; url = "https://packages.groonga.org/source/groonga/groonga-${finalAttrs.version}.tar.gz";
hash = "sha256-1caTQAycvpG2PgtbxIn58HrxvWjxKgiczRSC72nWzGw="; hash = "sha256-ESPUEBpV6hg8KQeSzjklPgf4R0DlYdpwxp9M6YdTV/Q=";
}; };
patches = [ patches = [
@ -74,12 +73,12 @@ stdenv.mkDerivation (finalAttrs: {
}; };
}; };
meta = with lib; { meta = {
homepage = "https://groonga.org/"; homepage = "https://groonga.org/";
description = "Open-source fulltext search engine and column store"; description = "Open-source fulltext search engine and column store";
license = licenses.lgpl21; license = lib.licenses.lgpl21;
maintainers = [ maintainers.ericsagnes ]; maintainers = [ ];
platforms = platforms.all; platforms = lib.platforms.all;
longDescription = '' longDescription = ''
Groonga is an open-source fulltext search engine and column store. Groonga is an open-source fulltext search engine and column store.
It lets you write high-performance applications that requires fulltext search. It lets you write high-performance applications that requires fulltext search.

View file

@ -1,10 +1,9 @@
{ {
fetchurl,
lib, lib,
stdenv, stdenv,
fetchFromGitHub,
smartmontools, smartmontools,
autoreconfHook, cmake,
gettext,
gtkmm3, gtkmm3,
pkg-config, pkg-config,
wrapGAppsHook3, wrapGAppsHook3,
@ -12,29 +11,28 @@
adwaita-icon-theme, adwaita-icon-theme,
}: }:
stdenv.mkDerivation rec { stdenv.mkDerivation (finalAttrs: {
pname = "gsmartcontrol"; pname = "gsmartcontrol";
version = "1.1.4"; version = "2.0.2";
src = fetchurl { src = fetchFromGitHub {
url = "https://github.com/ashaduri/gsmartcontrol/releases/download/v${version}/gsmartcontrol-${version}.tar.bz2"; owner = "ashaduri";
sha256 = "sha256-/ECfK4qEzEC7ED1sgkAbnUwBgtWjsiPJOVnHrWYZGEc="; repo = "gsmartcontrol";
tag = "v${finalAttrs.version}";
hash = "sha256-eLzwFZ1PYqijFTxos9Osf7A2v4C8toM+TGV4/bU82NE=";
}; };
patches = [
./fix-paths.patch
];
postPatch = '' postPatch = ''
substituteInPlace data/org.gsmartcontrol.policy --replace "/usr/sbin" $out/bin substituteInPlace data/gsmartcontrol.in.desktop \
--replace-fail "@CMAKE_INSTALL_FULL_BINDIR@/" ""
''; '';
nativeBuildInputs = [ nativeBuildInputs = [
autoreconfHook cmake
gettext
pkg-config pkg-config
wrapGAppsHook3 wrapGAppsHook3
]; ];
buildInputs = [ buildInputs = [
gtkmm3 gtkmm3
pcre-cpp pcre-cpp
@ -60,9 +58,10 @@ stdenv.mkDerivation rec {
It allows you to inspect the drive's SMART data to determine its health, It allows you to inspect the drive's SMART data to determine its health,
as well as run various tests on it. as well as run various tests on it.
''; '';
homepage = "https://gsmartcontrol.shaduri.dev/"; homepage = "https://gsmartcontrol.shaduri.dev";
mainProgram = "gsmartcontrol";
license = lib.licenses.gpl2Plus; license = lib.licenses.gpl2Plus;
maintainers = with lib.maintainers; [ qknight ]; maintainers = with lib.maintainers; [ qknight ];
platforms = with lib.platforms; linux; platforms = lib.platforms.linux;
}; };
} })

View file

@ -30,7 +30,7 @@ stdenv.mkDerivation rec {
description = "GTK enabled dropin replacement for xmessage"; description = "GTK enabled dropin replacement for xmessage";
homepage = "https://trmusson.dreamhosters.com/programs.html#gxmessage"; homepage = "https://trmusson.dreamhosters.com/programs.html#gxmessage";
license = lib.licenses.gpl3Plus; license = lib.licenses.gpl3Plus;
maintainers = with lib.maintainers; [ jfb ]; maintainers = with lib.maintainers; [ ];
platforms = with lib.platforms; linux; platforms = with lib.platforms; linux;
mainProgram = "gxmessage"; mainProgram = "gxmessage";
}; };

View file

@ -3,49 +3,27 @@
fetchpatch, fetchpatch,
python3, python3,
fetchFromGitHub, fetchFromGitHub,
wrapQtAppsHook, qt5,
cups, cups,
}: }:
python3.pkgs.buildPythonApplication rec { python3.pkgs.buildPythonApplication rec {
pname = "inkcut"; pname = "inkcut";
version = "2.1.5"; version = "2.1.6";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = pname; owner = pname;
repo = pname; repo = pname;
tag = "v${version}"; tag = "v${version}";
sha256 = "sha256-S5IrNWVoUp1w+P7DrKlOUOyY3Q16CHSct9ndZOB3UpU="; hash = "sha256-qfgzJTFr4VTV/x4PVnUKJzIndfjXB8z2jTWLXvadBuY=";
}; };
patches = [
# fix opening the extension on inkscape 1.2
# https://github.com/inkcut/inkcut/pull/340
(fetchpatch {
url = "https://github.com/inkcut/inkcut/commit/d5d5d0ab3c588c576b668f4c7b07a10609ba2fd0.patch";
hash = "sha256-szfiOujuV7OOwYK/OU51m9FK6dzkbWds+h0cr5dGIg4=";
})
# fix loading a document from stdin (as used from the extension)
# https://github.com/inkcut/inkcut/issues/341
(fetchpatch {
url = "https://github.com/inkcut/inkcut/commit/748ab4157f87afec37dadd715094e87d02c9c739.patch";
hash = "sha256-ZGiwZru2bUYu749YSz5vxmGwLTAoYIAsafcX6PmdbYo=";
revert = true;
})
# fix distutils deprecation error
# https://github.com/inkcut/inkcut/pull/343
(fetchpatch {
url = "https://github.com/inkcut/inkcut/commit/9fb95204981bcc51401a1bc10caa02d1fae0d6cb.patch";
hash = "sha256-nriys7IWPGykZjVz+DIDsE9Tm40DewkHQlIUaxFwtzM=";
})
];
postPatch = '' postPatch = ''
substituteInPlace inkcut/device/transports/printer/plugin.py \ substituteInPlace inkcut/device/transports/printer/plugin.py \
--replace ", 'lpr', " ", '${cups}/bin/lpr', " --replace ", 'lpr', " ", '${cups}/bin/lpr', "
''; '';
nativeBuildInputs = [ wrapQtAppsHook ]; nativeBuildInputs = [ qt5.wrapQtAppsHook ];
propagatedBuildInputs = with python3.pkgs; [ propagatedBuildInputs = with python3.pkgs; [
enamlx enamlx

View file

@ -50,7 +50,7 @@ stdenv.mkDerivation (finalAttrs: {
homepage = "https://github.com/enkore/j4-dmenu-desktop"; homepage = "https://github.com/enkore/j4-dmenu-desktop";
license = licenses.gpl3Only; license = licenses.gpl3Only;
mainProgram = "j4-dmenu-desktop"; mainProgram = "j4-dmenu-desktop";
maintainers = with maintainers; [ ericsagnes ]; maintainers = with maintainers; [ ];
platforms = platforms.linux; platforms = platforms.linux;
}; };
}) })

View file

@ -7,19 +7,22 @@
vala, vala,
pkg-config, pkg-config,
wrapGAppsHook3, wrapGAppsHook3,
blueprint-compiler,
pantheon, pantheon,
gtksourceview5, gtksourceview5,
chcase,
libadwaita,
}: }:
stdenv.mkDerivation (finalAttrs: { stdenv.mkDerivation (finalAttrs: {
pname = "konbucase"; pname = "konbucase";
version = "4.1.2"; version = "4.4.0";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "ryonakano"; owner = "ryonakano";
repo = "konbucase"; repo = "konbucase";
rev = finalAttrs.version; tag = finalAttrs.version;
hash = "sha256-md7drxg1JuW6TRJauKOk4Aqjx/V1RVZ+POa5v6DtKwk="; hash = "sha256-56P2RueZSsuQth8IB73r3WYXCQ+rEyfQpGXhLAAeFlY=";
fetchSubmodules = true; fetchSubmodules = true;
}; };
@ -29,25 +32,28 @@ stdenv.mkDerivation (finalAttrs: {
vala vala
pkg-config pkg-config
wrapGAppsHook3 wrapGAppsHook3
blueprint-compiler
]; ];
buildInputs = [ buildInputs = [
pantheon.granite7 pantheon.granite7
gtksourceview5 gtksourceview5
chcase
libadwaita
]; ];
postInstall = '' postInstall = ''
mv $out/bin/com.github.ryonakano.konbucase $out/bin/konbucase mv $out/bin/com.github.ryonakano.konbucase $out/bin/konbucase
substituteInPlace $out/share/applications/com.github.ryonakano.konbucase.desktop \ substituteInPlace $out/share/applications/com.github.ryonakano.konbucase.desktop \
--replace 'Exec=com.github.ryonakano.konbucase' 'Exec=${placeholder "out"}/bin/konbucase' --replace-fail "Exec=com.github.ryonakano.konbucase" "Exec=konbucase"
''; '';
meta = with lib; { meta = {
homepage = "https://github.com/ryonakano/konbucase"; homepage = "https://github.com/ryonakano/konbucase";
description = "Case converting app suitable for coding or typing"; description = "Case converting app suitable for coding or typing";
license = licenses.gpl3Only; license = lib.licenses.gpl3Only;
maintainers = with maintainers; [ galaxy ]; maintainers = with lib.maintainers; [ galaxy ];
platforms = platforms.linux; platforms = lib.platforms.linux;
mainProgram = "konbucase"; mainProgram = "konbucase";
}; };
}) })

View file

@ -29,7 +29,7 @@ stdenv.mkDerivation rec {
license = licenses.asl20; license = licenses.asl20;
maintainers = with maintainers; [ ericsagnes ]; maintainers = with maintainers; [ ];
platforms = platforms.unix; platforms = platforms.unix;
}; };

View file

@ -29,13 +29,13 @@
stdenv.mkDerivation (finalAttrs: { stdenv.mkDerivation (finalAttrs: {
pname = "labwc"; pname = "labwc";
version = "0.8.3"; version = "0.8.4";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "labwc"; owner = "labwc";
repo = "labwc"; repo = "labwc";
tag = finalAttrs.version; tag = finalAttrs.version;
hash = "sha256-iOSPvg737YCtKFHHZy56N+JYqcyfUIguSZ3QQ0keb/E="; hash = "sha256-JeEw1xKwgsTMllZXvNaXXdgmZnmIFUyG/cJ14QFQf/E=";
}; };
outputs = [ outputs = [

View file

@ -26,7 +26,6 @@ stdenv.mkDerivation (finalAttrs: {
homepage = "https://chewing.im/"; homepage = "https://chewing.im/";
license = licenses.lgpl21Only; license = licenses.lgpl21Only;
maintainers = with maintainers; [ maintainers = with maintainers; [
ericsagnes
ShamrockLee ShamrockLee
]; ];
platforms = platforms.all; platforms = platforms.all;

View file

@ -51,7 +51,6 @@ stdenv.mkDerivation (finalAttrs: {
license = lib.licenses.gpl3Plus; license = lib.licenses.gpl3Plus;
maintainers = with lib.maintainers; [ maintainers = with lib.maintainers; [
linsui linsui
ericsagnes
]; ];
platforms = lib.platforms.linux; platforms = lib.platforms.linux;
}; };

View file

@ -2,31 +2,40 @@
lib, lib,
python3Packages, python3Packages,
fetchFromGitHub, fetchFromGitHub,
qt5, qt6,
}: }:
python3Packages.buildPythonApplication rec { python3Packages.buildPythonApplication rec {
pname = "meteo-qt"; pname = "meteo-qt";
version = "3.4"; version = "4.2";
format = "setuptools"; pyproject = true;
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "dglent"; owner = "dglent";
repo = "meteo-qt"; repo = "meteo-qt";
tag = "v${version}"; tag = "v${version}";
hash = "sha256-J9R6UGfj3vaPfn0vmjeRMsHryc/1pxoKyIE9wteVYbY="; hash = "sha256-s02A5WwJffjbB497sXyugkIolqyK3OpEY7aBgnOBdbM=";
}; };
postPatch = ''
substituteInPlace setup.py \
--replace-fail "lrelease-pro-qt6" "${qt6.qttools}/libexec/lrelease-pro"
'';
nativeBuildInputs = [ nativeBuildInputs = [
qt5.qttools qt6.qttools
qt5.wrapQtAppsHook qt6.wrapQtAppsHook
python3Packages.pyqt6
]; ];
build-system = with python3Packages; [ sip ]; build-system = with python3Packages; [
setuptools
sip
];
dependencies = with python3Packages; [ dependencies = with python3Packages; [
lxml lxml
pyqt5 pyqt6
]; ];
postFixup = '' postFixup = ''

View file

@ -4,7 +4,6 @@
fetchFromGitHub, fetchFromGitHub,
fetchurl, fetchurl,
runCommand, runCommand,
writeText,
biber, biber,
# nativeBuildInputs # nativeBuildInputs
@ -95,13 +94,13 @@ let
in in
stdenv.mkDerivation (finalAttrs: { stdenv.mkDerivation (finalAttrs: {
pname = "miktex"; pname = "miktex";
version = "25.2"; version = "25.4";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "miktex"; owner = "miktex";
repo = "miktex"; repo = "miktex";
tag = finalAttrs.version; tag = finalAttrs.version;
hash = "sha256-egN9+BRO/EAcbrn/jZac4Lb79H5N/LEjReMPGHVM/yM="; hash = "sha256-3QGW8rsettA+Jtrsi9C5ONIG4vP+iuUEUi9dGHfWMSY=";
}; };
patches = [ patches = [
@ -231,7 +230,7 @@ stdenv.mkDerivation (finalAttrs: {
''; '';
meta = { meta = {
description = "A modern TeX distribution"; description = "Modern TeX distribution";
homepage = "https://miktex.org"; homepage = "https://miktex.org";
platforms = lib.platforms.linux; platforms = lib.platforms.linux;
license = with lib.licenses; [ license = with lib.licenses; [
@ -240,8 +239,6 @@ stdenv.mkDerivation (finalAttrs: {
gpl3Plus gpl3Plus
publicDomain publicDomain
]; ];
maintainers = with lib.maintainers; [ maintainers = with lib.maintainers; [ qbisi ];
qbisi
];
}; };
}) })

View file

@ -106,7 +106,6 @@ buildBazelPackage rec {
license = licenses.free; license = licenses.free;
platforms = platforms.linux; platforms = platforms.linux;
maintainers = with maintainers; [ maintainers = with maintainers; [
ericsagnes
pineapplehunter pineapplehunter
]; ];
}; };

View file

@ -9,14 +9,14 @@
buildGoModule rec { buildGoModule rec {
pname = "museum"; pname = "museum";
version = "1.0.2"; version = "1.0.4";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "ente-io"; owner = "ente-io";
repo = "ente"; repo = "ente";
sparseCheckout = [ "server" ]; sparseCheckout = [ "server" ];
rev = "photos-v${version}"; rev = "photos-v${version}";
hash = "sha256-d66dCTs68sIL6iCV4vDvErER3LAz/SdkqOj0aJBro8k="; hash = "sha256-tFXOLzGGMrjVImOOl3RGaX3i/FwhjbGqKRdxv/xxKTs=";
}; };
vendorHash = "sha256-px4pMqeH73Fe06va4+n6hklIUDMbPmAQNKKRIhwv6ec="; vendorHash = "sha256-px4pMqeH73Fe06va4+n6hklIUDMbPmAQNKKRIhwv6ec=";

View file

@ -94,7 +94,6 @@ stdenv.mkDerivation (finalAttrs: {
license = lib.licenses.lgpl21; license = lib.licenses.lgpl21;
mainProgram = "notion"; mainProgram = "notion";
maintainers = with lib.maintainers; [ maintainers = with lib.maintainers; [
jfb
raboof raboof
NotAShelf NotAShelf
]; ];

View file

@ -13,16 +13,16 @@
let let
pname = "nwg-drawer"; pname = "nwg-drawer";
version = "0.6.4"; version = "0.6.5";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "nwg-piotr"; owner = "nwg-piotr";
repo = "nwg-drawer"; repo = "nwg-drawer";
rev = "v${version}"; rev = "v${version}";
hash = "sha256-uctM2fi3lfSrvKSinkjAXD3bLyJOVC0DTyDoAKXgB54="; hash = "sha256-fWh2htmLIM0IHRYOs8fzrjwq1IRLDJpWniY24BVFtFE=";
}; };
vendorHash = "sha256-VW9K56pdzA6CAqyJ859WOCEtHTASW8lnQGuW1zBUJYw="; vendorHash = "sha256-iUFOWPr306CteR+5Cz/kE+XoG/qr3BBdM9duZm4TOU4=";
in in
buildGoModule { buildGoModule {
inherit inherit
@ -63,7 +63,7 @@ buildGoModule {
description = "Application drawer for sway Wayland compositor"; description = "Application drawer for sway Wayland compositor";
homepage = "https://github.com/nwg-piotr/nwg-drawer"; homepage = "https://github.com/nwg-piotr/nwg-drawer";
changelog = "https://github.com/nwg-piotr/nwg-drawer/releases/tag/${src.rev}"; changelog = "https://github.com/nwg-piotr/nwg-drawer/releases/tag/${src.rev}";
license = with lib.licenses; [ mit ]; license = with lib.licenses; [ agpl3Plus ];
mainProgram = "nwg-drawer"; mainProgram = "nwg-drawer";
maintainers = with lib.maintainers; [ ]; maintainers = with lib.maintainers; [ ];
platforms = with lib.platforms; linux; platforms = with lib.platforms; linux;

View file

@ -42,7 +42,7 @@ stdenv.mkDerivation (finalAttrs: {
changelog = "https://github.com/patroclos/PAmix/releases/tag/${finalAttrs.version}"; changelog = "https://github.com/patroclos/PAmix/releases/tag/${finalAttrs.version}";
license = lib.licenses.mit; license = lib.licenses.mit;
platforms = lib.platforms.linux; platforms = lib.platforms.linux;
maintainers = with lib.maintainers; [ ericsagnes ]; maintainers = with lib.maintainers; [ ];
mainProgram = "pamix"; mainProgram = "pamix";
}; };
}) })

View file

@ -17,13 +17,13 @@ buildGoModule (finalAttrs: {
webkitgtk_4_1 webkitgtk_4_1
]; ];
pname = "paretosecurity"; pname = "paretosecurity";
version = "0.2.14"; version = "0.2.15";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "ParetoSecurity"; owner = "ParetoSecurity";
repo = "agent"; repo = "agent";
rev = finalAttrs.version; rev = finalAttrs.version;
hash = "sha256-/3TTSaio24cuXmPvPVRZE4JqddWYezyAFCqYJRiMG7M="; hash = "sha256-8lRIDW17oyQpoGuHGckSxL++jaeX3qPr2kvXBAeszjc=";
}; };
vendorHash = "sha256-YnyACP/hJYxi4AWMwr0We4YUTbWwahKAIYN6RnHmzls="; vendorHash = "sha256-YnyACP/hJYxi4AWMwr0We4YUTbWwahKAIYN6RnHmzls=";

View file

@ -32,6 +32,6 @@ stdenv.mkDerivation rec {
mainProgram = "ponymix"; mainProgram = "ponymix";
license = licenses.mit; license = licenses.mit;
platforms = platforms.linux; platforms = platforms.linux;
maintainers = with maintainers; [ ericsagnes ]; maintainers = with maintainers; [ ];
}; };
} }

View file

@ -8,17 +8,17 @@
rustPlatform.buildRustPackage rec { rustPlatform.buildRustPackage rec {
pname = "rabbitmqadmin-ng"; pname = "rabbitmqadmin-ng";
version = "2.0.0"; version = "2.1.0";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "rabbitmq"; owner = "rabbitmq";
repo = "rabbitmqadmin-ng"; repo = "rabbitmqadmin-ng";
tag = "v${version}"; tag = "v${version}";
hash = "sha256-M3YaqBwSj/5d936oOVA6JmqWYEU8kDYP+2ImjlOiAqo="; hash = "sha256-b6xa12jop0YbbUNYNrCvCEJH17lx/Ski3maKUWVVAjE=";
}; };
useFetchCargoVendor = true; useFetchCargoVendor = true;
cargoHash = "sha256-Ik3G9McsFO+NIEBuB9N1HSXeIpULSPTHx4V2ulpgDio="; cargoHash = "sha256-qPbh8kRm57ferdv2+hGaOXFCK49hYzDrVb6ePbaPuAM=";
buildInputs = [ openssl ]; buildInputs = [ openssl ];
nativeBuildInputs = [ pkg-config ]; nativeBuildInputs = [ pkg-config ];

View file

@ -7,7 +7,7 @@
ninja, ninja,
python3, python3,
nix-update-script, nix-update-script,
abseil-cpp, abseil-cpp_202401,
curl, curl,
gtest, gtest,
nlohmann_json, nlohmann_json,
@ -16,7 +16,7 @@
libwebm, libwebm,
mbedtls, mbedtls,
mimalloc, mimalloc,
protobuf, protobuf_29,
zlib, zlib,
}: }:
@ -60,7 +60,7 @@ stdenv.mkDerivation (finalAttrs: {
# pssh_box.py. # pssh_box.py.
ps.protobuf ps.protobuf
])) ]))
abseil-cpp abseil-cpp_202401
curl curl
gtest gtest
nlohmann_json nlohmann_json
@ -69,9 +69,9 @@ stdenv.mkDerivation (finalAttrs: {
libwebm libwebm
mbedtls mbedtls
mimalloc mimalloc
(protobuf.override { (protobuf_29.override {
# must be the same version as for shaka-packager # must be the same version as for shaka-packager
inherit abseil-cpp; abseil-cpp = abseil-cpp_202401;
}) })
zlib zlib
]; ];

View file

@ -41,7 +41,7 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "slurm"; pname = "slurm";
version = "24.11.4.1"; version = "24.11.5.1";
# N.B. We use github release tags instead of https://www.schedmd.com/downloads.php # N.B. We use github release tags instead of https://www.schedmd.com/downloads.php
# because the latter does not keep older releases. # because the latter does not keep older releases.
@ -50,7 +50,7 @@ stdenv.mkDerivation rec {
repo = "slurm"; repo = "slurm";
# The release tags use - instead of . # The release tags use - instead of .
rev = "${pname}-${builtins.replaceStrings [ "." ] [ "-" ] version}"; rev = "${pname}-${builtins.replaceStrings [ "." ] [ "-" ] version}";
hash = "sha256-qfTkvORa03LxbLXWfUoTw1bV17w7geA9QA3i+fWSCqE="; hash = "sha256-0c8b+quLeWpCyuCOcp/B8Yd0dxr90UtSV/tgeTi7tbk=";
}; };
outputs = [ outputs = [

View file

@ -77,7 +77,7 @@ stdenv.mkDerivation rec {
meta = with lib; { meta = with lib; {
description = "Nix based static site generator"; description = "Nix based static site generator";
maintainers = with maintainers; [ ericsagnes ]; maintainers = with maintainers; [ ];
homepage = "https://styx-static.github.io/styx-site/"; homepage = "https://styx-static.github.io/styx-site/";
downloadPage = "https://github.com/styx-static/styx/"; downloadPage = "https://github.com/styx-static/styx/";
platforms = platforms.all; platforms = platforms.all;

View file

@ -3,6 +3,7 @@
fetchFromGitHub, fetchFromGitHub,
davfs2, davfs2,
cmake, cmake,
extra-cmake-modules,
stdenv, stdenv,
pkg-config, pkg-config,
kdePackages, kdePackages,
@ -10,25 +11,32 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "tail-tray"; pname = "tail-tray";
version = "0.2.21"; version = "0.2.22";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "SneWs"; owner = "SneWs";
repo = "tail-tray"; repo = "tail-tray";
tag = "v${version}"; tag = "v${version}";
sha256 = "sha256-zdmU4GdEVOT8wUgOxJAGsLQEb35O/RUjc8HcYpwIkiM="; sha256 = "sha256-1tYuZBJFIGwub3wJR/Ms1Dybhn3KMzKYrpgzZEXwqWU=";
}; };
nativeBuildInputs = with kdePackages; [ nativeBuildInputs = with kdePackages; [
wrapQtAppsHook wrapQtAppsHook
qttools qttools
cmake cmake
extra-cmake-modules
pkg-config pkg-config
]; ];
buildInputs = with kdePackages; [ buildInputs = with kdePackages; [
qtbase qtbase
davfs2 davfs2
knotifyconfig
];
cmakeFlags = [
"-DKNOTIFICATIONS_ENABLED=ON"
"-DDAVFS_ENABLED=ON"
]; ];
patches = [ patches = [

View file

@ -8,13 +8,13 @@
buildGoModule rec { buildGoModule rec {
pname = "terragrunt"; pname = "terragrunt";
version = "0.78.0"; version = "0.78.1";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "gruntwork-io"; owner = "gruntwork-io";
repo = pname; repo = pname;
tag = "v${version}"; tag = "v${version}";
hash = "sha256-ldGv4hD+WR4c3Ajozu+u4qy/DOCKQIk9tECOfPpNbjU="; hash = "sha256-tGQGBZAg9nu3s2ulhz65/dmYWWBdaCod0baMoRXOCVU=";
}; };
nativeBuildInputs = [ nativeBuildInputs = [

View file

@ -58,7 +58,6 @@ buildRubyGem rec {
license = licenses.mit; license = licenses.mit;
maintainers = with maintainers; [ maintainers = with maintainers; [
auntie auntie
ericsagnes
]; ];
platforms = platforms.unix; platforms = platforms.unix;
mainProgram = "tmuxinator"; mainProgram = "tmuxinator";

View file

@ -1,5 +1,6 @@
{ {
lib, lib,
python3Packages,
fetchFromGitHub, fetchFromGitHub,
gexiv2, gexiv2,
gobject-introspection, gobject-introspection,
@ -8,7 +9,6 @@
intltool, intltool,
libnotify, libnotify,
librsvg, librsvg,
python3,
runtimeShell, runtimeShell,
wrapGAppsHook3, wrapGAppsHook3,
fehSupport ? false, fehSupport ? false,
@ -17,9 +17,10 @@
imagemagick, imagemagick,
appindicatorSupport ? true, appindicatorSupport ? true,
libayatana-appindicator, libayatana-appindicator,
bash,
}: }:
python3.pkgs.buildPythonApplication rec { python3Packages.buildPythonApplication rec {
pname = "variety"; pname = "variety";
version = "0.8.13"; version = "0.8.13";
@ -44,8 +45,8 @@ python3.pkgs.buildPythonApplication rec {
librsvg librsvg
] ++ lib.optional appindicatorSupport libayatana-appindicator; ] ++ lib.optional appindicatorSupport libayatana-appindicator;
propagatedBuildInputs = dependencies =
with python3.pkgs; with python3Packages;
[ [
beautifulsoup4 beautifulsoup4
configobj configobj
@ -73,14 +74,17 @@ python3.pkgs.buildPythonApplication rec {
prePatch = '' prePatch = ''
substituteInPlace variety_lib/varietyconfig.py \ substituteInPlace variety_lib/varietyconfig.py \
--replace "__variety_data_directory__ = \"../data\"" \ --replace-fail "__variety_data_directory__ = \"../data\"" \
"__variety_data_directory__ = \"$out/share/variety\"" "__variety_data_directory__ = \"$out/share/variety\""
substituteInPlace variety/VarietyWindow.py \ substituteInPlace variety/VarietyWindow.py \
--replace '[script,' '["${runtimeShell}", script,' \ --replace-fail '[script,' '["${runtimeShell}", script,' \
--replace 'check_output(script)' 'check_output(["${runtimeShell}", script])' --replace-fail 'check_output(script)' 'check_output(["${runtimeShell}", script])'
substituteInPlace data/variety-autostart.desktop.template \
--replace-fail "/bin/bash" "${lib.getExe bash}" \
--replace-fail "{VARIETY_PATH}" "variety"
''; '';
meta = with lib; { meta = {
homepage = "https://github.com/varietywalls/variety"; homepage = "https://github.com/varietywalls/variety";
description = "Wallpaper manager for Linux systems"; description = "Wallpaper manager for Linux systems";
mainProgram = "variety"; mainProgram = "variety";
@ -96,8 +100,8 @@ python3.pkgs.buildPythonApplication rec {
Variety also includes a range of image effects, such as oil painting and Variety also includes a range of image effects, such as oil painting and
blur, as well as options to layer quotes and a clock onto the background. blur, as well as options to layer quotes and a clock onto the background.
''; '';
license = licenses.gpl3Plus; license = lib.licenses.gpl3Plus;
maintainers = with maintainers; [ maintainers = with lib.maintainers; [
p3psi p3psi
zfnmxt zfnmxt
]; ];

View file

@ -89,7 +89,6 @@ stdenv.mkDerivation rec {
homepage = "https://www.wireguard.com/"; homepage = "https://www.wireguard.com/";
license = licenses.gpl2Only; license = licenses.gpl2Only;
maintainers = with maintainers; [ maintainers = with maintainers; [
ericsagnes
zx2c4 zx2c4
globin globin
ma27 ma27

View file

@ -8,7 +8,7 @@
python3Packages.buildPythonApplication rec { python3Packages.buildPythonApplication rec {
pname = "yutto"; pname = "yutto";
version = "2.0.2"; version = "2.0.3";
pyproject = true; pyproject = true;
pythonRelaxDeps = true; pythonRelaxDeps = true;
@ -17,7 +17,7 @@ python3Packages.buildPythonApplication rec {
owner = "yutto-dev"; owner = "yutto-dev";
repo = "yutto"; repo = "yutto";
tag = "v${version}"; tag = "v${version}";
hash = "sha256-msq74sGnUHkaf+e6SFYAtu9nzcXnr+PU21g2O7uR5M0="; hash = "sha256-giwCLA9M1XR0neLJVfO017Q1wK34yVQpOxUzgShDJL0=";
}; };
build-system = with python3Packages; [ hatchling ]; build-system = with python3Packages; [ hatchling ];

View file

@ -1,6 +1,6 @@
# GNOME Shell extensions # GNOME Shell extensions
All extensions are packaged automatically. They can be found in the `pkgs.gnomeXYExtensions` for XY being a GNOME version. The package names are the extensions UUID, which can be a bit unwieldy to use. `pkgs.gnomeExtensions` is a set of manually curated extensions that match the current `gnome.gnome-shell` versions. Their name is human-friendly, compared to the other extensions sets. Some of its extensions are manually packaged. All extensions are packaged automatically. They can be found in the `pkgs.gnomeXYExtensions` for XY being a GNOME version. The package names are the extensions UUID, which can be a bit unwieldy to use. `pkgs.gnomeExtensions` is a set of manually curated extensions that match the current `pkgs.gnome-shell` versions. Their name is human-friendly, compared to the other extensions sets. Some of its extensions are manually packaged.
## Automatically packaged extensions ## Automatically packaged extensions
@ -8,19 +8,24 @@ The actual packages are created by `buildGnomeExtension.nix`, provided the corre
### Extensions updates ### Extensions updates
For everyday updates, #### For everyday updates,
1. Run `update-extensions.py`. 1. Run `update-extensions.py`.
2. Update `extensionRenames.nix` according to the comment at the top. 2. Update `extensionRenames.nix` according to the comment at the top.
For GNOME updates, #### To package the extensions for new GNOME version,
1. Add a new `gnomeXYExtensions` set 1. Add a new `gnomeXYExtensions` set in `default.nix`.
2. Remove old ones for GNOME versions we dont want to support any more 2. Update `all-packages.nix` accordingly. (grep for `gnomeExtensions`)
3. Update `supported_versions` in `./update-extensions.py` and re-run it 3. Update `supported_versions` in `update-extensions.py`.
4. Change `gnomeExtensions` to the new version 4. Follow the [For everyday updates](#for-everyday-updates) section.
5. Update `./extensionsRenames.nix` accordingly
6. Update `all-packages.nix` accordingly (grep for `gnomeExtensions`) #### For GNOME updates,
1. Follow the [To package the extensions for new GNOME version](#to-package-the-extensions-for-new-gnome-version) section if required.
2. Update `versions_to_merge` variable in `./update-extensions.py`.
3. Run `update-extensions.py --skip-fetch`, and update `extensionRenames.nix` according to the comment at the top.
4. Update `gnomeExtensions` in `default.nix` to the new versions.
## Manually packaged extensions ## Manually packaged extensions

View file

@ -4,25 +4,26 @@
"apps-menu@gnome-shell-extensions.gcampax.github.com" "apps-menu@gnome-shell-extensions.gcampax.github.com"
], ],
"persian-calendar": [ "persian-calendar": [
"persian-calendar@iamrezamousavi.gmail.com", "PersianCalendar@oxygenws.com",
"PersianCalendar@oxygenws.com" "persian-calendar@iamrezamousavi.gmail.com"
], ],
"system-monitor": [ "system-monitor": [
"system-monitor@gnome-shell-extensions.gcampax.github.com", "System_Monitor@bghome.gmail.com",
"System_Monitor@bghome.gmail.com" "system-monitor@gnome-shell-extensions.gcampax.github.com"
], ],
"fuzzy-clock": [ "fuzzy-clock": [
"fuzzy-clock@keepawayfromfire.co.uk", "FuzzyClock@fire-man-x",
"FuzzyClock@johngoetz", "FuzzyClock@johngoetz",
"FuzzyClock@fire-man-x" "fuzzy-clock@keepawayfromfire.co.uk"
], ],
"battery-time": [ "battery-time": [
"batterytime@typeof.pw", "batime@martin.zurowietz.de",
"batime@martin.zurowietz.de" "battery-time@eetumos.github.com",
"batterytime@typeof.pw"
], ],
"nepali-calendar": [ "nepali-calendar": [
"nepali-date@biplab", "nepali-calendar-gs-extension@subashghimire.info.np",
"nepali-calendar-gs-extension@subashghimire.info.np" "nepali-date@biplab"
], ],
"mouse-follows-focus": [ "mouse-follows-focus": [
"mouse-follows-focus@crisidev.org", "mouse-follows-focus@crisidev.org",
@ -33,8 +34,8 @@
"power-profile@fthx" "power-profile@fthx"
], ],
"fullscreen-to-empty-workspace": [ "fullscreen-to-empty-workspace": [
"fullscreen-to-empty-workspace@aiono.dev", "fullscreen-to-empty-workspace2@corgijan.dev",
"fullscreen-to-empty-workspace2@corgijan.dev" "fullscreen-to-empty-workspace@aiono.dev"
], ],
"eur-usd": [ "eur-usd": [
"eur-usd-gshell@vezza.github.com", "eur-usd-gshell@vezza.github.com",

View file

@ -76,6 +76,7 @@ rec {
gnome45Extensions = mapUuidNames (produceExtensionsList "45"); gnome45Extensions = mapUuidNames (produceExtensionsList "45");
gnome46Extensions = mapUuidNames (produceExtensionsList "46"); gnome46Extensions = mapUuidNames (produceExtensionsList "46");
gnome47Extensions = mapUuidNames (produceExtensionsList "47"); gnome47Extensions = mapUuidNames (produceExtensionsList "47");
gnome48Extensions = mapUuidNames (produceExtensionsList "48");
# Keep the last three versions in here # Keep the last three versions in here
gnomeExtensions = lib.trivial.pipe (gnome45Extensions // gnome46Extensions // gnome47Extensions) [ gnomeExtensions = lib.trivial.pipe (gnome45Extensions // gnome46Extensions // gnome47Extensions) [

View file

@ -27,6 +27,9 @@
vte, vte,
wrapGAppsHook3, wrapGAppsHook3,
xdg-utils, xdg-utils,
gtk4,
desktop-file-utils,
xdg-user-dirs,
}: }:
let let
# Helper method to reduce redundancy # Helper method to reduce redundancy
@ -128,7 +131,10 @@ lib.trivial.pipe super [
inherit gjs; inherit gjs;
util_linux = util-linux; util_linux = util-linux;
xdg_utils = xdg-utils; xdg_utils = xdg-utils;
nautilus_gsettings_path = "${glib.getSchemaPath nautilus}"; gtk_update_icon_cache = "${gtk4.out}/bin/gtk4-update-icon-cache";
update_desktop_database = "${desktop-file-utils.out}/bin/update-desktop-database";
xdg_user_dirs = lib.getExe xdg-user-dirs;
nautilus_gsettings_path = glib.getSchemaPath nautilus;
}) })
]; ];
})) }))

View file

@ -1,19 +1,59 @@
diff --git a/app/ding.js b/app/ding.js diff --git a/app/adw-ding.js b/app/adw-ding.js
index 1062bc7..c312d48 100755 index 42cb878c..929ddce2 100755
--- a/app/adw-ding.js --- a/app/adw-ding.js
+++ b/app/adw-ding.js +++ b/app/adw-ding.js
@@ -1,4 +1,4 @@ @@ -1,4 +1,4 @@
-#!/usr/bin/env -S gjs -m -#!/usr/bin/env -S gjs -m
+#!@gjs@/bin/gjs -m +#!@gjs@/bin/gjs -m
/* DING: Desktop Icons New Generation for GNOME Shell /* ADW-DING: Desktop Icons New Generation for GNOME Shell
* *
@@ -535,7 +535,7 @@ const adWDingApp = GObject.registerClass(
]);
const updated = await GLib.spawn_command_line_async(
- 'gtk-update-icon-cache ' +
+ '@gtk_update_icon_cache@ ' +
'-q -t -f ' +
`${iconCachePath}`
);
@@ -566,7 +566,7 @@ const adWDingApp = GObject.registerClass(
// and we need to do it manually for the app to be
// available sooner
const updated = await GLib.spawn_command_line_async(
- 'update-desktop-database -q ' +
+ '@update_desktop_database@ -q ' +
`${GLib.path_get_dirname(appDesktopFile)}`
);
diff --git a/app/adwPreferencesWindow.js b/app/adwPreferencesWindow.js
index 93d53554..8f5bb8fe 100644
--- a/app/adwPreferencesWindow.js
+++ b/app/adwPreferencesWindow.js
@@ -540,7 +540,7 @@ const AdwPreferencesWindow = class {
}
setDesktopFolder(path) {
- const command = 'xdg-user-dirs-update --set DESKTOP';
+ const command = '@xdg_user_dirs@/bin/xdg-user-dirs-update --set DESKTOP';
try {
GLib.spawn_command_line_async(
@@ -564,7 +564,7 @@ const AdwPreferencesWindow = class {
}
getCurrentDesktopFolder() {
- const command = 'xdg-user-dir DESKTOP';
+ const command = '@xdg_user_dirs@/bin/xdg-user-dir DESKTOP';
const decoder = new TextDecoder();
const [, out,, status] = GLib.spawn_command_line_sync(command);
diff --git a/app/enums.js b/app/enums.js diff --git a/app/enums.js b/app/enums.js
index 2b541f3..594d288 100644 index 5434fa7a..e36d3670 100644
--- a/app/enums.js --- a/app/enums.js
+++ b/app/enums.js +++ b/app/enums.js
@@ -124,7 +124,8 @@ export const THUMBNAILS_DIR = '.cache/thumbnails'; @@ -134,7 +134,8 @@ export const THUMBNAILS_DIR = '.cache/thumbnails';
export const DND_HOVER_TIMEOUT = 500; // In milliseconds export const DND_HOVER_TIMEOUT = 1500; // In milliseconds
export const DND_SHELL_HOVER_POLL = 200; // In milliseconds export const DND_SHELL_HOVER_POLL = 200; // In milliseconds
export const TOOLTIP_HOVER_TIMEOUT = 1000; // In milliseconds export const TOOLTIP_HOVER_TIMEOUT = 1000; // In milliseconds
-export const XDG_EMAIL_CMD = 'xdg-email'; -export const XDG_EMAIL_CMD = 'xdg-email';
@ -23,40 +63,40 @@ index 2b541f3..594d288 100644
export const ZIP_CMD = 'zip'; export const ZIP_CMD = 'zip';
export const ZIP_CMD_OPTIONS = '-r'; export const ZIP_CMD_OPTIONS = '-r';
diff --git a/app/preferences.js b/app/preferences.js diff --git a/app/preferences.js b/app/preferences.js
index 6849a86..83a7247 100644 index 95ffe60b..75370403 100644
--- a/app/preferences.js --- a/app/preferences.js
+++ b/app/preferences.js +++ b/app/preferences.js
@@ -29,6 +29,7 @@ const Preferences = class { @@ -30,6 +30,7 @@ const Preferences = class {
this._programVersion = Data.programversion; this._mainApp = Data.mainApp;
this._Enums = Data.Enums; this._Enums = Data.Enums;
let schemaSource = GioSSS.get_default(); let schemaSource = GioSSS.get_default();
+ const schemaSourceNautilus = Gio.SettingsSchemaSource.new_from_directory('@nautilus_gsettings_path@', Gio.SettingsSchemaSource.get_default(), true); + const schemaSourceNautilus = Gio.SettingsSchemaSource.new_from_directory('@nautilus_gsettings_path@', Gio.SettingsSchemaSource.get_default(), true);
this._desktopManager = null; this._desktopManager = null;
// Gtk // Adw Style Manager
@@ -36,7 +37,7 @@ const Preferences = class { @@ -52,7 +53,7 @@ const Preferences = class {
this.gtkSettings = new Gio.Settings({settings_schema: schemaGtk});
// Gnome Files // Gnome Files
- let schemaObj = schemaSource.lookup(this._Enums.SCHEMA_NAUTILUS, true); const schemaObj =
+ let schemaObj = schemaSourceNautilus.lookup(this._Enums.SCHEMA_NAUTILUS, true); - schemaSource.lookup(this._Enums.SCHEMA_NAUTILUS, true);
+ schemaSourceNautilus.lookup(this._Enums.SCHEMA_NAUTILUS, true);
if (!schemaObj) { if (!schemaObj) {
this.nautilusSettings = null; this.nautilusSettings = null;
this.CLICK_POLICY_SINGLE = false; @@ -69,7 +70,7 @@ const Preferences = class {
@@ -48,7 +49,7 @@ const Preferences = class {
// Compression // Compression
- const compressionSchema = schemaSource.lookup(this._Enums.SCHEMA_NAUTILUS_COMPRESSION, true); const compressionSchema =
+ const compressionSchema = schemaSourceNautilus.lookup(this._Enums.SCHEMA_NAUTILUS_COMPRESSION, true); - schemaSource.lookup(this._Enums.SCHEMA_NAUTILUS_COMPRESSION, true);
if (!compressionSchema) + schemaSourceNautilus.lookup(this._Enums.SCHEMA_NAUTILUS_COMPRESSION, true);
if (!compressionSchema) {
this.nautilusCompression = null; this.nautilusCompression = null;
else
diff --git a/dingManager.js b/dingManager.js diff --git a/dingManager.js b/dingManager.js
index f1b497f..29f2156 100644 index 7a0de9e3..bbc23704 100644
--- a/dingManager.js --- a/dingManager.js
+++ b/dingManager.js +++ b/dingManager.js
@@ -401,7 +401,7 @@ const DingManager = class { @@ -482,7 +482,7 @@ const DingManager = class {
async _doKillAllOldDesktopProcesses() { async _doKillAllOldDesktopProcesses() {
const procFolder = Gio.File.new_for_path('/proc'); const procFolder = Gio.File.new_for_path('/proc');
const processes = await FileUtils.enumerateDir(procFolder); const processes = await FileUtils.enumerateDir(procFolder);
@ -64,21 +104,21 @@ index f1b497f..29f2156 100644
+ const thisPath = `@gjs@/bin/gjs ${GLib.build_filenamev([ + const thisPath = `@gjs@/bin/gjs ${GLib.build_filenamev([
this.path, this.path,
'app', 'app',
'ding.js', 'adw-ding.js',
@@ -425,7 +425,7 @@ const DingManager = class { @@ -510,7 +510,7 @@ const DingManager = class {
}
if (contents.startsWith(thisPath)) { if (contents.startsWith(thisPath)) {
- let proc = new Gio.Subprocess({argv: ['/bin/kill', filename]}); let proc =
+ let proc = new Gio.Subprocess({argv: ['@util_linux@/bin/kill', filename]}); - new Gio.Subprocess({argv: ['/bin/kill', filename]});
+ new Gio.Subprocess({argv: ['@util_linux@/bin/kill', filename]});
proc.init(null); proc.init(null);
console.log(`Killing old DING process ${filename}`); console.log(`Killing old DING process ${filename}`);
await proc.wait_async_promise(null);
diff --git a/prefs.js b/prefs.js diff --git a/prefs.js b/prefs.js
index 5ed03f6..5302836 100644 index 50430fa5..82fca2e3 100644
--- a/prefs.js --- a/prefs.js
+++ b/prefs.js +++ b/prefs.js
@@ -30,7 +30,8 @@ export default class dingPreferences extends ExtensionPreferences { @@ -34,7 +34,8 @@ export default class dingPreferences extends ExtensionPreferences {
const schemaSource = GioSSS.get_default(); const schemaSource = GioSSS.get_default();
const schemaGtk = schemaSource.lookup(Enums.SCHEMA_GTK, true); const schemaGtk = schemaSource.lookup(Enums.SCHEMA_GTK, true);
const gtkSettings = new Gio.Settings({settings_schema: schemaGtk}); const gtkSettings = new Gio.Settings({settings_schema: schemaGtk});
@ -86,5 +126,5 @@ index 5ed03f6..5302836 100644
+ const schemaSourceNautilus = Gio.SettingsSchemaSource.new_from_directory('@nautilus_gsettings_path@', Gio.SettingsSchemaSource.get_default(), true); + const schemaSourceNautilus = Gio.SettingsSchemaSource.new_from_directory('@nautilus_gsettings_path@', Gio.SettingsSchemaSource.get_default(), true);
+ const schemaNautilus = schemaSourceNautilus.lookup(Enums.SCHEMA_NAUTILUS, true); + const schemaNautilus = schemaSourceNautilus.lookup(Enums.SCHEMA_NAUTILUS, true);
const version = this.metadata['version-name']; const version = this.metadata['version-name'];
let nautilusSettings; let nautilusSettings;
if (!schemaNautilus)

View file

@ -17,6 +17,7 @@
"fuzzy-clock@keepawayfromfire.co.uk" = "fuzzy-clock-2"; "fuzzy-clock@keepawayfromfire.co.uk" = "fuzzy-clock-2";
"FuzzyClock@johngoetz" = "fuzzy-clock"; "FuzzyClock@johngoetz" = "fuzzy-clock";
"battery-time@eetumos.github.com" = "battery-time-3";
"batterytime@typeof.pw" = "battery-time-2"; "batterytime@typeof.pw" = "battery-time-2";
"batime@martin.zurowietz.de" = "battery-time"; "batime@martin.zurowietz.de" = "battery-time";

File diff suppressed because one or more lines are too long

View file

@ -1,16 +1,23 @@
#!/usr/bin/env nix-shell #!/usr/bin/env nix-shell
#!nix-shell -I nixpkgs=../../../.. -i python3 -p python3 #!nix-shell -I nixpkgs=../../../.. -i python3 -p python3
### After making change:
### - Format the script by running: nix run nixpkgs#black pkgs/desktops/gnome/extensions/update-extensions.py
### - Run the unit test by running: python3 -m unittest pkgs/desktops/gnome/extensions/update-extensions.py
### - Run the type checking by running: nix run nixpkgs#mypy pkgs/desktops/gnome/extensions/update-extensions.py
import base64 import base64
import json import json
import logging import logging
import argparse
import unittest
import subprocess import subprocess
import urllib.error import urllib.error
import urllib.request import urllib.request
from contextlib import contextmanager from contextlib import contextmanager
from operator import itemgetter from operator import itemgetter
from pathlib import Path from pathlib import Path
from typing import List, Dict, Optional, Any, Tuple, Set from typing import Any
# We don't want all those deprecated legacy extensions # We don't want all those deprecated legacy extensions
# Group extensions by GNOME "major" version for compatibility reasons # Group extensions by GNOME "major" version for compatibility reasons
@ -24,26 +31,22 @@ supported_versions = {
"45": "45", "45": "45",
"46": "46", "46": "46",
"47": "47", "47": "47",
"48": "48",
} }
# shell versions that we want to put into the gnomeExtensions attr set
versions_to_merge = ["45", "46", "47"]
# Some type alias to increase readability of complex compound types # Some type alias to increase readability of complex compound types
PackageName = str PackageName = str
ShellVersion = str ShellVersion = str
Uuid = str Uuid = str
ExtensionVersion = int ExtensionVersion = int
# Keep track of all names that have been used till now to detect collisions.
# This works because we deterministically process all extensions in historical order
# The outer dict level is the shell version, as we are tracking duplicates only per same Shell version.
# key: shell version, value: Dict with key: pname, value: list of UUIDs with that pname
package_name_registry: Dict[ShellVersion, Dict[PackageName, List[Uuid]]] = {}
for shell_version in supported_versions.keys():
package_name_registry[shell_version] = {}
updater_dir_path = Path(__file__).resolve().parent updater_dir_path = Path(__file__).resolve().parent
def fetch_extension_data(uuid: str, version: str) -> Tuple[str, str]: def fetch_extension_data(uuid: str, version: str) -> tuple[str, str]:
""" """
Download the extension and hash it. We use `nix-prefetch-url` for this for efficiency reasons. Download the extension and hash it. We use `nix-prefetch-url` for this for efficiency reasons.
Returns a tuple with the hash (Nix-compatible) of the zip file's content and the base64-encoded content of its metadata.json. Returns a tuple with the hash (Nix-compatible) of the zip file's content and the base64-encoded content of its metadata.json.
@ -51,22 +54,28 @@ def fetch_extension_data(uuid: str, version: str) -> Tuple[str, str]:
# The download URLs follow this schema # The download URLs follow this schema
uuid = uuid.replace("@", "") uuid = uuid.replace("@", "")
url: str = f"https://extensions.gnome.org/extension-data/{uuid}.v{version}.shell-extension.zip" url: str = (
f"https://extensions.gnome.org/extension-data/{uuid}.v{version}.shell-extension.zip"
)
# Download extension and add the zip content to nix-store # Download extension and add the zip content to nix-store
for _ in range(0, 10): for _ in range(0, 10):
process = subprocess.run( process = subprocess.run(
["nix-prefetch-url", "--unpack", "--print-path", url], capture_output=True, text=True ["nix-prefetch-url", "--unpack", "--print-path", url],
capture_output=True,
text=True,
) )
if process.returncode == 0: if process.returncode == 0:
break break
else: else:
logging.warning(f"Nix-prefetch-url failed for {url}:") logging.warning(f"Nix-prefetch-url failed for {url}:")
logging.warning(f"Stderr: {process.stderr}") logging.warning(f"Stderr: {process.stderr}")
logging.warning(f"Retrying") logging.warning("Retrying")
if process.returncode != 0: if process.returncode != 0:
raise Exception("Retried 10 times, but still failed to download the extension. Exiting.") raise Exception(
"Retried 10 times, but still failed to download the extension. Exiting."
)
lines = process.stdout.splitlines() lines = process.stdout.splitlines()
@ -84,8 +93,9 @@ def fetch_extension_data(uuid: str, version: str) -> Tuple[str, str]:
def generate_extension_versions( def generate_extension_versions(
extension_version_map: Dict[ShellVersion, ExtensionVersion], uuid: str extension_version_map: dict[ShellVersion, ExtensionVersion],
) -> Dict[ShellVersion, Dict[str, str]]: uuid: str,
) -> dict[ShellVersion, dict[str, str]]:
""" """
Takes in a mapping from shell versions to extension versions and transforms it the way we need it: Takes in a mapping from shell versions to extension versions and transforms it the way we need it:
- Only take one extension version per GNOME Shell major version (as per `supported_versions`) - Only take one extension version per GNOME Shell major version (as per `supported_versions`)
@ -94,10 +104,10 @@ def generate_extension_versions(
""" """
# Determine extension version per shell version # Determine extension version per shell version
extension_versions: Dict[ShellVersion, ExtensionVersion] = {} extension_versions: dict[ShellVersion, ExtensionVersion] = {}
for shell_version, version_prefix in supported_versions.items(): for shell_version, version_prefix in supported_versions.items():
# Newest compatible extension version # Newest compatible extension version
extension_version: Optional[int] = max( extension_version: int | None = max(
( (
int(ext_ver) int(ext_ver)
for shell_ver, ext_ver in extension_version_map.items() for shell_ver, ext_ver in extension_version_map.items()
@ -112,16 +122,16 @@ def generate_extension_versions(
extension_versions[shell_version] = extension_version extension_versions[shell_version] = extension_version
# Download information once for all extension versions chosen above # Download information once for all extension versions chosen above
extension_info_cache: Dict[ExtensionVersion, Tuple[str, str]] = {} extension_info_cache: dict[ExtensionVersion, tuple[str, str]] = {}
for extension_version in sorted(set(extension_versions.values())): for extension_version in sorted(set(extension_versions.values())):
logging.debug( logging.debug(f"[{uuid}] Downloading v{extension_version}")
f"[{uuid}] Downloading v{extension_version}" extension_info_cache[extension_version] = fetch_extension_data(
uuid,
str(extension_version),
) )
extension_info_cache[extension_version] = \
fetch_extension_data(uuid, str(extension_version))
# Fill map # Fill map
extension_versions_full: Dict[ShellVersion, Dict[str, str]] = {} extension_versions_full: dict[ShellVersion, dict[str, str]] = {}
for shell_version, extension_version in extension_versions.items(): for shell_version, extension_version in extension_versions.items():
sha256, metadata = extension_info_cache[extension_version] sha256, metadata = extension_info_cache[extension_version]
@ -136,7 +146,7 @@ def generate_extension_versions(
return extension_versions_full return extension_versions_full
def pname_from_url(url: str) -> Tuple[str, str]: def pname_from_url(url: str) -> tuple[str, str]:
""" """
Parse something like "/extension/1475/battery-time/" and output ("battery-time", "1475") Parse something like "/extension/1475/battery-time/" and output ("battery-time", "1475")
""" """
@ -145,7 +155,7 @@ def pname_from_url(url: str) -> Tuple[str, str]:
return url[3], url[2] return url[3], url[2]
def process_extension(extension: Dict[str, Any]) -> Optional[Dict[str, Any]]: def process_extension(extension: dict[str, Any]) -> dict[str, Any] | None:
""" """
Process an extension. It takes in raw scraped data and downloads all the necessary information that buildGnomeExtension.nix requires Process an extension. It takes in raw scraped data and downloads all the necessary information that buildGnomeExtension.nix requires
@ -196,11 +206,11 @@ def process_extension(extension: Dict[str, Any]) -> Optional[Dict[str, Any]]:
# Input is a mapping str -> { version: int, … } # Input is a mapping str -> { version: int, … }
# We want to map shell versions to extension versions # We want to map shell versions to extension versions
shell_version_map: Dict[ShellVersion, int] = { shell_version_map: dict[ShellVersion, int] = {
k: v["version"] for k, v in extension["shell_version_map"].items() k: v["version"] for k, v in extension["shell_version_map"].items()
} }
# Transform shell_version_map to be more useful for us. Also throw away unwanted versions # Transform shell_version_map to be more useful for us. Also throw away unwanted versions
shell_version_map: Dict[ShellVersion, Dict[str, str]] = generate_extension_versions(shell_version_map, uuid) # type: ignore shell_version_map: dict[ShellVersion, dict[str, str]] = generate_extension_versions(shell_version_map, uuid) # type: ignore
# No compatible versions found # No compatible versions found
if not shell_version_map: if not shell_version_map:
@ -209,13 +219,6 @@ def process_extension(extension: Dict[str, Any]) -> Optional[Dict[str, Any]]:
# Fetch a human-readable name for the package. # Fetch a human-readable name for the package.
(pname, _pname_id) = pname_from_url(extension["link"]) (pname, _pname_id) = pname_from_url(extension["link"])
for shell_version in shell_version_map.keys():
if pname in package_name_registry[shell_version]:
logging.warning(f"Package name '{pname}' for GNOME '{shell_version}' is colliding.")
package_name_registry[shell_version][pname].append(uuid)
else:
package_name_registry[shell_version][pname] = [uuid]
return { return {
"uuid": uuid, "uuid": uuid,
"name": extension["name"], "name": extension["name"],
@ -227,10 +230,16 @@ def process_extension(extension: Dict[str, Any]) -> Optional[Dict[str, Any]]:
@contextmanager @contextmanager
def request(url: str, retries: int = 5, retry_codes: List[int] = [ 500, 502, 503, 504 ]): def request(url: str, retries: int = 5, retry_codes: list[int] = [500, 502, 503, 504]):
req = urllib.request.Request(
url,
headers={
"User-Agent": "NixpkgsGnomeExtensionUpdate (+https://github.com/NixOS/nixpkgs)"
},
)
for attempt in range(retries + 1): for attempt in range(retries + 1):
try: try:
with urllib.request.urlopen(url) as response: with urllib.request.urlopen(req) as response:
yield response yield response
break break
except urllib.error.HTTPError as e: except urllib.error.HTTPError as e:
@ -240,7 +249,7 @@ def request(url: str, retries: int = 5, retry_codes: List[int] = [ 500, 502, 503
raise e raise e
def scrape_extensions_index() -> List[Dict[str, Any]]: def scrape_extensions_index() -> list[dict[str, Any]]:
""" """
Scrape the list of extensions by sending search queries to the API. We simply go over it Scrape the list of extensions by sending search queries to the API. We simply go over it
page by page until we hit a non-full page or a 404 error. page by page until we hit a non-full page or a 404 error.
@ -282,19 +291,21 @@ def scrape_extensions_index() -> List[Dict[str, Any]]:
return extensions return extensions
if __name__ == "__main__": def fetch_extensions() -> list[dict[str, Any]]:
logging.basicConfig(level=logging.DEBUG)
raw_extensions = scrape_extensions_index() raw_extensions = scrape_extensions_index()
logging.info(f"Downloaded {len(raw_extensions)} extensions. Processing …") logging.info(f"Downloaded {len(raw_extensions)} extensions. Processing …")
processed_extensions: List[Dict[str, Any]] = [] processed_extensions: list[dict[str, Any]] = []
for num, raw_extension in enumerate(raw_extensions): for num, raw_extension in enumerate(raw_extensions):
processed_extension = process_extension(raw_extension) processed_extension = process_extension(raw_extension)
if processed_extension: if processed_extension:
processed_extensions.append(processed_extension) processed_extensions.append(processed_extension)
logging.debug(f"Processed {num + 1} / {len(raw_extensions)}") logging.debug(f"Processed {num + 1} / {len(raw_extensions)}")
return processed_extensions
def serialize_extensions(processed_extensions: list[dict[str, Any]]) -> None:
# We micro-manage a lot of the serialization process to keep the diffs optimal. # We micro-manage a lot of the serialization process to keep the diffs optimal.
# We generally want most of the attributes of an extension on one line, # We generally want most of the attributes of an extension on one line,
# but then each of its supported versions with metadata on a new line. # but then each of its supported versions with metadata on a new line.
@ -306,46 +317,127 @@ if __name__ == "__main__":
else: else:
out.write(", ") out.write(", ")
# Dump each extension into a single-line string forst # Dump each extension into a single-line string forst
extension = json.dumps(extension, ensure_ascii=False) serialized_extension = json.dumps(extension, ensure_ascii=False)
# Inject line breaks for each supported version # Inject line breaks for each supported version
for version in supported_versions: for version in supported_versions:
# This one only matches the first entry # This one only matches the first entry
extension = extension.replace(f"{{\"{version}\": {{", f"{{\n \"{version}\": {{") serialized_extension = serialized_extension.replace(
f'{{"{version}": {{',
f'{{\n "{version}": {{',
)
# All other entries # All other entries
extension = extension.replace(f", \"{version}\": {{", f",\n \"{version}\": {{") serialized_extension = serialized_extension.replace(
f', "{version}": {{',
f',\n "{version}": {{',
)
# One last line break around the closing braces # One last line break around the closing braces
extension = extension.replace("}}}", "}\n }}") serialized_extension = serialized_extension.replace("}}}", "}\n }}")
out.write(extension) out.write(serialized_extension)
out.write("\n") out.write("\n")
out.write("]\n") out.write("]\n")
def find_collisions(
extensions: list[dict[str, Any]],
versions: list[str],
) -> dict[PackageName, list[Uuid]]:
package_name_registry: dict[PackageName, set[Uuid]] = {}
for extension in extensions:
pname = extension["pname"]
uuid = extension["uuid"]
for shell_version in versions:
if shell_version in extension["shell_version_map"]:
package_name_registry.setdefault(pname, set()).add(uuid)
return {
pname: sorted(uuids)
for pname, uuids in package_name_registry.items()
if len(uuids) > 1
}
def main() -> None:
logging.basicConfig(level=logging.DEBUG)
parser = argparse.ArgumentParser()
parser.add_argument(
"--skip-fetch",
action="store_true",
help="Skip fetching extensions. When this option is set, the script does not fetch extensions from the internet, but checks for name collisions.",
)
args = parser.parse_args()
if not args.skip_fetch:
processed_extensions = fetch_extensions()
serialize_extensions(processed_extensions)
logging.info( logging.info(
f"Done. Writing results to extensions.json ({len(processed_extensions)} extensions in total)" f"Done. Writing results to extensions.json ({len(processed_extensions)} extensions in total)"
) )
with open(updater_dir_path / "extensions.json", "r") as out: with open(updater_dir_path / "extensions.json", "r") as out:
# Check that the generated file actually is valid JSON, just to be sure extensions = json.load(out)
json.load(out)
collisions = find_collisions(extensions, versions_to_merge)
with open(updater_dir_path / "collisions.json", "w") as out: with open(updater_dir_path / "collisions.json", "w") as out:
# Find the name collisions only for the last 3 shell versions
last_3_versions = sorted(supported_versions.keys(), key=lambda v: float(v), reverse=True)[:3]
package_name_registry_for_versions = [v for k, v in package_name_registry.items() if k in last_3_versions]
# Merge all package names into a single dictionary
package_name_registry_filtered: Dict[PackageName, Set[Uuid]] = {}
for pkgs in package_name_registry_for_versions:
for pname, uuids in pkgs.items():
if pname not in package_name_registry_filtered:
package_name_registry_filtered[pname] = set()
package_name_registry_filtered[pname].update(uuids)
# Filter out those that are not duplicates
package_name_registry_filtered = {k: v for k, v in package_name_registry_filtered.items() if len(v) > 1}
# Convert set to list
collisions: Dict[PackageName, List[Uuid]] = {k: list(v) for k, v in package_name_registry_filtered.items()}
json.dump(collisions, out, indent=2, ensure_ascii=False) json.dump(collisions, out, indent=2, ensure_ascii=False)
out.write("\n") out.write("\n")
logging.info( logging.info(
"Done. Writing name collisions to collisions.json (please check manually)" "Done. Writing name collisions to collisions.json (please check manually)"
) )
if __name__ == "__main__":
main()
class FindCollisions(unittest.TestCase):
extensions = [
{
"pname": "foo",
"uuid": "foo_38_to_40@doe.example",
"shell_version_map": {
"38": {},
"40": {},
},
},
{
"pname": "bar",
"uuid": "bar_42_to_45@chulsoo.example",
"shell_version_map": {
"42": {},
"43": {},
"44": {},
"45": {},
},
},
{
"pname": "bar",
"uuid": "bar_44_to_47@younghee.example",
"shell_version_map": {
"44": {},
"45": {},
"46": {},
"47": {},
},
},
]
def test_no_collision(self) -> None:
self.assertEqual(
{},
find_collisions(self.extensions, ["40", "41", "42"]),
)
def test_collision(self) -> None:
self.assertEqual(
{
"bar": [
"bar_42_to_45@chulsoo.example",
"bar_44_to_47@younghee.example",
],
},
find_collisions(self.extensions, ["45", "46", "47"]),
)

View file

@ -1,6 +1,6 @@
{ {
"hash": "sha256-ogWq6oLyZzzvxGTqEEoPMXdtfbobUyXcC5bXXxBxfuo=", "hash": "sha256-vXZNi6whn0GpL02DBaGAp40vYOP6BkJrLOhhL9df2kA=",
"owner": "openjdk", "owner": "openjdk",
"repo": "jdk24u", "repo": "jdk24u",
"rev": "refs/tags/jdk-24+36" "rev": "refs/tags/jdk-24.0.1+9"
} }

View file

@ -13,6 +13,10 @@ let
defaultVersion = defaultVersion =
with lib.versions; with lib.versions;
lib.switch coq.coq-version [ lib.switch coq.coq-version [
{
case = isEq "9.0";
out = "2.2.5";
}
{ {
case = range "8.18" "8.20"; case = range "8.18" "8.20";
out = "2.2.1"; out = "2.2.1";
@ -42,6 +46,8 @@ let
release."2.1.7".sha256 = "sha256-HsLv2ziPIUK6Q5/xz8ZvaGWggUCK1AKv47U5M7SCcKU="; release."2.1.7".sha256 = "sha256-HsLv2ziPIUK6Q5/xz8ZvaGWggUCK1AKv47U5M7SCcKU=";
release."2.2.1".rev = "v2.2.1"; release."2.2.1".rev = "v2.2.1";
release."2.2.1".sha256 = "sha256-miIVAv/8jlP1pXnoK1MWz4O6nlmb309a8UjcCivbiB4="; release."2.2.1".sha256 = "sha256-miIVAv/8jlP1pXnoK1MWz4O6nlmb309a8UjcCivbiB4=";
release."2.2.5".rev = "v2.2.5";
release."2.2.5".sha256 = "sha256-XyIjwem/yS7UIpQATNixgKkrMOHHs74nkAOvpU5WG1k=";
inherit location; inherit location;
}); });
fetched = fetch (if version != null then version else defaultVersion); fetched = fetch (if version != null then version else defaultVersion);

View file

@ -1,6 +1,6 @@
{ {
stdenv,
lib, lib,
stdenv,
fetchFromGitHub, fetchFromGitHub,
cmake, cmake,
wrapGAppsHook3, wrapGAppsHook3,
@ -24,6 +24,7 @@
libtiff, libtiff,
libgeotiff, libgeotiff,
libjpeg, libjpeg,
qhull,
# eccodes is broken on darwin # eccodes is broken on darwin
enableGRIB ? stdenv.hostPlatform.isLinux, enableGRIB ? stdenv.hostPlatform.isLinux,
eccodes, eccodes,
@ -32,7 +33,6 @@
# We enable it in hdf4 and use libtirpc as a dependency here from the passthru # We enable it in hdf4 and use libtirpc as a dependency here from the passthru
# of hdf4 # of hdf4
enableLibtirpc ? stdenv.hostPlatform.isLinux, enableLibtirpc ? stdenv.hostPlatform.isLinux,
libtirpc,
python3, python3,
enableMPI ? (stdenv.hostPlatform.isLinux || stdenv.hostPlatform.isDarwin), enableMPI ? (stdenv.hostPlatform.isLinux || stdenv.hostPlatform.isDarwin),
# Choose MPICH over OpenMPI because it currently builds on AArch and Darwin # Choose MPICH over OpenMPI because it currently builds on AArch and Darwin
@ -109,19 +109,31 @@ let
; ;
}; };
in in
stdenv.mkDerivation rec { stdenv.mkDerivation (finalAttrs: {
pname = "gnudatalanguage"; pname = "gnudatalanguage";
version = "1.0.1"; version = "1.1.1";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = pname; owner = "gnudatalanguage";
repo = "gdl"; repo = "gdl";
rev = "v${version}"; tag = "v${finalAttrs.version}";
sha256 = "sha256-IrCLL8MQp0SkWj7sbfZlma5FrnMbgdl4E/1nPGy0Y60="; hash = "sha256-fLsa/R8+7QZcxjqJLnHZivRF6dD4a6J6KuCqYvazaCU=";
fetchSubmodules = true;
}; };
postPatch = ''
substituteInPlace CMakeLists.txt \
--replace-fail 'FATAL_ERROR "The src' 'WARNING "The src' \
--replace-fail "find_package(Git REQUIRED)" "" \
--replace-fail "-D GIT_EXECUTABLE=''${GIT_EXECUTABLE}" ""
echo -e 'set(VERSION "${finalAttrs.version}")\n\nconfigure_file(''${SRC} ''${DST})' > CMakeModules/GenerateVersionHeader.cmake
'';
nativeBuildInputs = [ cmake ] ++ lib.optional enableWX wrapGAppsHook3;
buildInputs = buildInputs =
[ [
qhull
readline readline
ncurses ncurses
zlib zlib
@ -159,10 +171,6 @@ stdenv.mkDerivation rec {
(python3.withPackages (ps: with ps; [ numpy ])) (python3.withPackages (ps: with ps; [ numpy ]))
]; ];
nativeBuildInputs = [
cmake
] ++ lib.optional enableWX wrapGAppsHook3;
cmakeFlags = cmakeFlags =
lib.optional (!enableHDF4) "-DHDF=OFF" lib.optional (!enableHDF4) "-DHDF=OFF"
++ [ (if enableHDF5 then "-DHDF5DIR=${hdf5-custom}" else "-DHDF5=OFF") ] ++ [ (if enableHDF5 then "-DHDF5DIR=${hdf5-custom}" else "-DHDF5=OFF") ]
@ -197,6 +205,8 @@ stdenv.mkDerivation rec {
"test_call_external" "test_call_external"
"test_tic_toc" "test_tic_toc"
"test_timestamp" "test_timestamp"
"test_bugs_poly2d"
"test_formats"
] ]
}'") }'")
''; '';
@ -217,7 +227,7 @@ stdenv.mkDerivation rec {
; ;
}; };
meta = with lib; { meta = {
description = "Free incremental compiler of IDL"; description = "Free incremental compiler of IDL";
longDescription = '' longDescription = ''
GDL (GNU Data Language) is a free/libre/open source incremental compiler GDL (GNU Data Language) is a free/libre/open source incremental compiler
@ -225,9 +235,9 @@ stdenv.mkDerivation rec {
GDL is aimed as a drop-in replacement for IDL. GDL is aimed as a drop-in replacement for IDL.
''; '';
homepage = "https://github.com/gnudatalanguage/gdl"; homepage = "https://github.com/gnudatalanguage/gdl";
license = licenses.gpl2Only; license = lib.licenses.gpl2Only;
maintainers = with maintainers; [ ShamrockLee ]; maintainers = with lib.maintainers; [ ShamrockLee ];
platforms = platforms.all; platforms = lib.platforms.all;
mainProgram = "gdl"; mainProgram = "gdl";
}; };
} })

View file

@ -4,8 +4,8 @@ let
base = callPackage ./generic.nix ( base = callPackage ./generic.nix (
_args _args
// { // {
version = "8.3.20"; version = "8.3.21";
hash = "sha256-NrTmoyPNRWc6VPKW6dJma39d9XZBAxx3xP2BN7xOvrM="; hash = "sha256-0HaebhHPpsWaFt4kFmi+jH8xpymVCo0GGQ360thiKwQ=";
} }
); );
in in

View file

@ -4,8 +4,8 @@ let
base = callPackage ./generic.nix ( base = callPackage ./generic.nix (
_args _args
// { // {
version = "8.4.6"; version = "8.4.7";
hash = "sha256-nPJzRQm2A/ZYlherUqlxKgPg/gWZUc3dLUYj30v3xsY="; hash = "sha256-bsyxsGpN2c6jFNvnDHYtPUdlRxy26/kludowiXi/+Yg=";
} }
); );
in in

View file

@ -10,14 +10,14 @@
buildPythonPackage rec { buildPythonPackage rec {
pname = "biliass"; pname = "biliass";
version = "2.2.0"; version = "2.2.2";
pyproject = true; pyproject = true;
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "yutto-dev"; owner = "yutto-dev";
repo = "yutto"; repo = "yutto";
tag = "biliass@${version}"; tag = "biliass@${version}";
hash = "sha256-IrzFjjMNuD5UgdccHxIxZoeZpM1PGtVQRTWHOocnmAU="; hash = "sha256-IQokpJbUhR8FMCJcxPSDD1X1o+Lb2j1G7d/jFEsR/Eg=";
}; };
sourceRoot = "${src.name}/packages/biliass"; sourceRoot = "${src.name}/packages/biliass";
@ -30,7 +30,7 @@ buildPythonPackage rec {
src src
; ;
sourceRoot = "${sourceRoot}/${cargoRoot}"; sourceRoot = "${sourceRoot}/${cargoRoot}";
hash = "sha256-yR2eVsomepIh9ILon7PrAj2EBgI/vwN3JgRSR/3R1Mk="; hash = "sha256-tkHl6z0En+od//fCGJXK/p8Dz5KDOXltHrXhxHmHL6U=";
}; };
nativeBuildInputs = with rustPlatform; [ nativeBuildInputs = with rustPlatform; [

View file

@ -42,6 +42,6 @@ buildPythonPackage rec {
changelog = "https://github.com/pydanny/cached-property/releases/tag/${version}"; changelog = "https://github.com/pydanny/cached-property/releases/tag/${version}";
license = licenses.bsd3; license = licenses.bsd3;
platforms = platforms.unix; platforms = platforms.unix;
maintainers = with maintainers; [ ericsagnes ]; maintainers = with maintainers; [ ];
}; };
} }

View file

@ -21,6 +21,6 @@ buildPythonPackage rec {
description = "Wrapper for the pocket API"; description = "Wrapper for the pocket API";
homepage = "https://github.com/tapanpandita/pocket"; homepage = "https://github.com/tapanpandita/pocket";
license = licenses.bsd3; license = licenses.bsd3;
maintainers = with maintainers; [ ericsagnes ]; maintainers = with maintainers; [ ];
}; };
} }

View file

@ -13,7 +13,7 @@
buildPythonPackage rec { buildPythonPackage rec {
pname = "pytest-scim2-server"; pname = "pytest-scim2-server";
version = "0.1.2"; version = "0.1.3";
pyproject = true; pyproject = true;
@ -21,7 +21,7 @@ buildPythonPackage rec {
src = fetchPypi { src = fetchPypi {
pname = "pytest_scim2_server"; pname = "pytest_scim2_server";
inherit version; inherit version;
hash = "sha256-uWWFqkloTkvtIfpBNy93fa+c+b/FATjwytLKRde4bHg="; hash = "sha256-iZrKKUfbqAAhugSNhqiCy6mVBoXxa0yruiQzHg0pIDY=";
}; };
build-system = [ hatchling ]; build-system = [ hatchling ];

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