Merge master into staging-nixos

This commit is contained in:
nixpkgs-ci[bot]
2025-12-16 18:08:12 +00:00
committed by GitHub
87 changed files with 2744 additions and 2071 deletions
+1 -1
View File
@@ -49,7 +49,7 @@ jobs:
- name: Create backport PRs
id: backport
uses: korthout/backport-action@d07416681cab29bf2661702f925f020aaa962997 # v3.4.1
uses: korthout/backport-action@3634249d418881baa47fd6bae694506145f7a61b # v4.0.0
with:
# Config README: https://github.com/korthout/backport-action#backport-action
copy_labels_pattern: 'severity:\ssecurity'
+2 -2
View File
@@ -182,7 +182,7 @@ jobs:
target-as-trusted-at: ${{ inputs.targetSha }}
- name: Download output paths and eval stats for all systems
uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0
uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131 # v7.0.0
with:
pattern: ${{ inputs.artifact-prefix }}diff-*
path: diff
@@ -261,7 +261,7 @@ jobs:
needs: [versions, eval]
steps:
- name: Download output paths and eval stats for all versions
uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0
uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131 # v7.0.0
with:
pattern: "*-diff-*"
path: versions
+1 -1
View File
@@ -64,7 +64,7 @@ jobs:
echo "git-string=$name <$email>" >> "$GITHUB_OUTPUT"
- name: Create Pull Request
uses: peter-evans/create-pull-request@22a9089034f40e5a961c8808d113e2c98fb63676 # v7.0.11
uses: peter-evans/create-pull-request@98357b18bf14b5342f975ff684046ec3b2a07725 # v8.0.0
with:
token: ${{ steps.app-token.outputs.token }}
add-paths: maintainers/github-teams.json
+10
View File
@@ -8630,6 +8630,9 @@
githubId = 30697622;
name = "Firelight Flagboy";
keys = [
{
fingerprint = "A14B AC2E 1BDB 9035 F6A0 5741 6C0A B3D8 F176 0318";
}
{
fingerprint = "D6E2 4BD5 680C 609D D146 99B4 4304 CE0B A5E8 67D1";
}
@@ -14208,6 +14211,13 @@
githubId = 9920871;
name = "Monotoko";
};
ktemkin = {
email = "kate@ktemk.in";
github = "ktemkin";
githubId = 1298105;
name = "Kate Temkin";
matrix = "@ktemkin:katesiria.org";
};
ktf = {
email = "giulio.eulisse@cern.ch";
github = "ktf";
@@ -55,6 +55,8 @@ of pulling the upstream container image from Docker Hub. If you want the old beh
- The Bash implementation of the `nixos-rebuild` program is removed. All switchable systems now use the Python rewrite. Any prior usage of `system.rebuild.enableNg` must now be removed. If you have any outstanding issues with the new implementation, please open an issue on GitHub.
- `services.angrr` now uses TOML for configuration. Define policies with `services.angrr.settings` (generate TOML file) or point to a file using `services.angrr.configFile`. The legacy options `services.angrr.period`, `services.angrr.ownedOnly`, and `services.angrr.removeRoot` have been removed. See `man 5 angrr` and the description of `services.angrr.settings` options for examples and details.
- `services.pingvin-share` has been removed as the `pingvin-share.backend` package was broken and the project was archived upstream.
## Other Notable Changes {#sec-release-26.05-notable-changes}
+8 -5
View File
@@ -371,13 +371,16 @@ in
warnings =
lib.optional
(
!(builtins.elem cfg.bind_to_address [
"localhost"
"127.0.0.1"
])
!(
(builtins.elem cfg.settings.bind_to_address [
"localhost"
"127.0.0.1"
])
|| (lib.hasPrefix "/" cfg.settings.bind_to_address)
)
&& !cfg.openFirewall
)
"Using '${cfg.bind_to_address}' as services.mpd.settings.bind_to_address without enabling services.mpd.openFirewall, might prevent you from accessing MPD from other clients.";
"Using '${cfg.settings.bind_to_address}' as services.mpd.settings.bind_to_address without enabling services.mpd.openFirewall, might prevent you from accessing MPD from other clients.";
# install mpd units
systemd.packages = [ pkgs.mpd ];
+254 -29
View File
@@ -8,36 +8,242 @@
let
cfg = config.services.angrr;
direnvCfg = config.programs.direnv.angrr;
toml = pkgs.formats.toml { };
exampleSettings = {
temporary-root-policies = {
direnv = {
path-regex = "/\\.direnv/";
period = "14d";
};
result = {
path-regex = "/result[^/]*$";
period = "3d";
};
};
profile-policies = {
system = {
profile-paths = [ "/nix/var/nix/profiles/system" ];
keep-since = "14d";
keep-latest-n = 5;
keep-booted-system = true;
keep-current-system = true;
};
user = {
enable = false;
profile-paths = [
"~/.local/state/nix/profiles/profile"
"/nix/var/nix/profiles/per-user/root/profile"
];
keep-since = "1d";
keep-latest-n = 1;
keep-booted-system = false;
keep-current-system = false;
};
};
};
settingsOptions = {
freeformType = toml.type;
options = {
owned-only = lib.mkOption {
type =
with lib.types;
enum [
"auto"
"true"
"false"
];
default = "auto";
description = ''
Only monitors owned symbolic link target of GC roots.
- "auto": behaves like true for normal users, false for root.
- "true": only monitor GC roots owned by the current user.
- "false": monitor all GC roots.
'';
};
temporary-root-policies = lib.mkOption {
type = with lib.types; attrsOf (submodule temporaryRootPolicyOptions);
default = { };
description = ''
Policies for temporary GC roots(e.g. result and direnv).
'';
};
profile-policies = lib.mkOption {
type = with lib.types; attrsOf (submodule profilePolicyOptions);
default = { };
description = ''
Profile GC root policies.
'';
};
touch = {
project-globs = lib.mkOption {
type = with lib.types; listOf str;
default = [
"!.git"
];
description = ''
List of glob patterns to include or exclude files when touching GC roots.
Only applied when `angrr touch` is invoked with the `--project` flag.
Patterns use an inverted gitignore-style semantics.
See <https://docs.rs/ignore/latest/ignore/overrides/struct.OverrideBuilder.html#method.add>.
'';
};
};
};
};
commonPolicyOptions = {
options = {
enable = lib.mkEnableOption "this angrr policy" // {
default = true;
example = false;
};
};
};
temporaryRootPolicyOptions = {
freeformType = toml.type;
imports = [ commonPolicyOptions ];
options = {
path-regex = lib.mkOption {
type = lib.types.str;
description = ''
Regex pattern to match the GC root path.
'';
};
period = lib.mkOption {
type = with lib.types; nullOr str;
default = null;
description = ''
Retention period for the GC roots matched by this policy.
'';
};
priority = lib.mkOption {
type = lib.types.int;
default = 100;
description = ''
Priority of this policy.
Lower number means higher priority, if multiple policies monitor the
same path, the one with higher priority will be applied.
'';
};
filter = lib.mkOption {
type = with lib.types; nullOr (submodule filterOptions);
default = null;
description = ''
External filter program to further filter GC roots matched by this policy.
'';
};
ignore-prefixes = lib.mkOption {
type = with lib.types; nullOr (listOf str);
default = null;
description = ''
List of path prefixes to ignore.
If null is specified, angrr builtin settings will be used.
'';
};
ignore-prefixes-in-home = lib.mkOption {
type = with lib.types; nullOr (listOf str);
default = null;
description = ''
Path prefixes to ignore under home directory.
If null is specified, angrr builtin settings will be used.
'';
};
};
};
profilePolicyOptions = {
freeformType = toml.type;
imports = [ commonPolicyOptions ];
options = {
profile-paths = lib.mkOption {
type = with lib.types; listOf str;
description = ''
Paths to the Nix profile.
When angrr runs in owned-only mode, and the option begins with `~`,
it will be expanded to the home directory of the current user.
When angrr does not run in owned-only mode, and the option begins with `~`,
it will be expanded to the home of all users discovered respectively.
'';
};
keep-since = lib.mkOption {
type = with lib.types; nullOr str;
default = null;
description = ''
Retention period for the GC roots in this profile.
'';
};
keep-latest-n = lib.mkOption {
type = with lib.types; nullOr int;
default = null;
description = ''
Keep the latest N GC roots in this profile.
'';
};
keep-current-system = lib.mkOption {
type = lib.types.bool;
default = false;
description = ''
Whether to keep the current system generation. Only useful for system profiles.
'';
};
keep-booted-system = lib.mkOption {
type = lib.types.bool;
default = false;
description = ''
Whether to keep the last booted system generation. Only useful for system profiles.
'';
};
};
};
filterOptions = {
freeformType = toml.type;
options = {
program = lib.mkOption {
type = lib.types.str;
description = ''
Path to the external filter program.
'';
};
arguments = lib.mkOption {
type = with lib.types; listOf str;
default = [ ];
description = ''
Extra command-line arguments pass to the external filter program.
'';
};
};
};
# toml.generate does not support null values, we need to filter them out first
filteredSettings = lib.filterAttrsRecursive (name: value: value != null) cfg.settings;
originalConfigFile = toml.generate "angrr.toml" filteredSettings;
validatedConfigFile = pkgs.runCommand "angrr-config.toml" { } ''
${lib.getExe cfg.package} validate --config "${originalConfigFile}" > $out
'';
configFileMigrationMsg = ''
This option has been removed since angrr 0.2.0.
Please use `services.angrr.settings` to configure retention policies through configuration file.
See <https://github.com/linyinfeng/angrr/tree/main?tab=readme-ov-file#nixos-module-usage> for a configuration example.
'';
in
{
meta.maintainers = pkgs.angrr.meta.maintainers;
imports = [
(lib.mkRemovedOptionModule [ "services" "angrr" "period" ] configFileMigrationMsg)
(lib.mkRemovedOptionModule [ "services" "angrr" "removeRoot" ] configFileMigrationMsg)
(lib.mkRemovedOptionModule [ "services" "angrr" "ownedOnly" ] configFileMigrationMsg)
];
options = {
services.angrr = {
enable = lib.mkEnableOption "angrr";
package = lib.mkPackageOption pkgs "angrr" { };
period = lib.mkOption {
type = lib.types.str;
default = "7d";
example = "2weeks";
description = ''
The retention period of auto GC roots.
'';
};
removeRoot = lib.mkOption {
type = lib.types.bool;
default = false;
description = ''
Whether to pass the `--remove-root` option to angrr.
'';
};
ownedOnly = lib.mkOption {
type = lib.types.bool;
default = false;
description = ''
Control the `--remove-root=<true|false>` option of angrr.
'';
apply = b: if b then "true" else "false";
};
logLevel = lib.mkOption {
type =
with lib.types;
@@ -61,10 +267,28 @@ in
Extra command-line arguments pass to angrr.
'';
};
settings = lib.mkOption {
type = lib.types.submodule settingsOptions;
example = exampleSettings;
description = ''
Global configuration for angrr in TOML format.
'';
};
configFile = lib.mkOption {
type = with lib.types; nullOr path;
default = validatedConfigFile;
defaultText = "TOML file generated from {option}`services.angrr.settings`";
description = ''
Path to the angrr configuration file in TOML format.
If not set, the configuration generated from {option}`services.angrr.settings` will be used.
If specified, {option}`services.angrr.settings` will be ignored.
'';
};
enableNixGcIntegration = lib.mkOption {
type = lib.types.bool;
description = ''
Whether to enable nix-gc.service integration
Whether to enable nix-gc.service integration.
'';
};
timer = {
@@ -107,16 +331,17 @@ in
}
{
environment.etc."angrr/config.toml".source = cfg.configFile;
systemd.services.angrr = {
description = "Auto Nix GC Roots Retention";
script = ''
${lib.getExe cfg.package} run \
--log-level "${cfg.logLevel}" \
--period "${cfg.period}" \
${lib.optionalString cfg.removeRoot "--remove-root"} \
--owned-only="${cfg.ownedOnly}" \
--no-prompt ${lib.escapeShellArgs cfg.extraArgs}
--no-prompt \
${lib.escapeShellArgs cfg.extraArgs}
'';
environment.ANGRR_LOG_STYLE = "systemd";
serviceConfig = {
Type = "oneshot";
};
@@ -144,7 +369,7 @@ in
(lib.mkIf (config.programs.direnv.enable && direnvCfg.enable) {
environment.etc."direnv/lib/angrr.sh".source = "${cfg.package}/share/direnv/lib/angrr.sh";
programs.direnv.direnvrcExtra = lib.mkIf direnvCfg.autoUse ''
use angrr
_angrr_auto_use "$@"
'';
})
]
@@ -44,7 +44,7 @@ let
external_port = 3000;
internal_port = 3001;
next_port = 3002;
integration_port = 3004;
integration_port = 3003;
# needs to be set, otherwise this fails silently
# see https://github.com/fosrl/newt/issues/37
internal_hostname = "localhost";
@@ -143,7 +143,7 @@ in
gerbil = {
port = lib.mkOption {
type = lib.types.port;
default = 3003;
default = 3004;
description = ''
Specifies the port to listen on for Gerbil.
'';
@@ -34,6 +34,8 @@ in
This file must be readable both by nginx and by the onlyoffice
documentserver. Since nginx is added to the onlyoffice group,
you may want to make the file readable to the onlyoffice group.
NOTE: The file must be a valid nginx configuration file. The secret must not contain `$` characters, as they will be interpreted as variables by nginx.
'';
};
@@ -1,5 +1,5 @@
# This module allows the test driver to connect to the virtual machine
# via a root shell attached to port 514.
# via a root shell attached to a virtio console.
{
options,
+162 -10
View File
@@ -1,11 +1,52 @@
{ ... }:
{ pkgs, ... }:
let
drvForTest =
name:
pkgs.runCommand "angrr-test-${name}" { } ''
mkdir --parents "$out"
echo "${name}" >"$out/${name}"
'';
in
{
name = "angrr";
nodes = {
machine = {
services.angrr = {
enable = true;
period = "7d";
settings = {
temporary-root-policies = {
result = {
path-regex = "/result[^/]*$";
period = "7d";
};
direnv = {
path-regex = "/\\.direnv/";
period = "14d";
};
};
profile-policies = {
system = {
profile-paths = [ "/nix/var/nix/profiles/system" ];
keep-since = "7d"; # do not keep based on time
keep-latest-n = 2; # keep latest
keep-current-system = true;
keep-booted-system = true;
};
user = {
profile-paths = [
"~/.local/state/nix/profiles/profile"
"/nix/var/nix/profiles/per-user/root/profile"
];
# keep-since = "0d"; # do not keep based on time
keep-latest-n = 2;
};
};
touch = {
project-globs = [
"!result-glob-ignored"
];
};
};
};
# `angrr.service` integrates to `nix-gc.service` by default
nix.gc.automatic = true;
@@ -19,7 +60,23 @@
# Test direnv integration
programs.direnv.enable = true;
# Verbose logging for angrr in direnv
environment.variables.ANGRR_DIRENV_LOG = "angrr=debug";
environment.variables.ANGRR_DIRENV_LOG = "debug";
# Add some store paths to machine for test
environment.etc."drvs-for-test".text = ''
${drvForTest "drv1"}
${drvForTest "drv2"}
${drvForTest "drv3"}
${drvForTest "drv4"}
${drvForTest "drv5"}
${drvForTest "drv6"}
${drvForTest "drv7"}
${drvForTest "drv8"}
${drvForTest "fake-booted-system"}
'';
# Unit start limit workaround
systemd.services.angrr.unitConfig.StartLimitBurst = 10;
};
};
@@ -51,7 +108,7 @@
machine.succeed("touch /tmp/result-root-auto-gc-root-2 --no-dereference")
machine.succeed("touch /tmp/result-user-auto-gc-root-2 --no-dereference")
machine.systemctl("start nix-gc.service")
machine.systemctl("start angrr.service")
# Only GC roots `-1` are removed
machine.succeed("test ! -e /tmp/result-root-auto-gc-root-1")
machine.succeed("readlink /tmp/result-root-auto-gc-root-2")
@@ -60,7 +117,7 @@
# Change time again
machine.succeed("date -s '8 days'")
machine.systemctl("start nix-gc.service")
machine.systemctl("start angrr.service")
# All auto GC roots are removed
machine.succeed("test ! -e /tmp/result-root-auto-gc-root-2")
machine.succeed("test ! -e /tmp/result-user-auto-gc-root-2")
@@ -69,20 +126,115 @@
machine.succeed("mkdir /tmp/test-direnv")
machine.succeed("echo >/tmp/test-direnv/.envrc") # Simply create an empty .envrc
machine.succeed("nix build /run/current-system --out-link /tmp/test-direnv/.direnv/gc-root")
machine.succeed("nix build /run/current-system --out-link /tmp/test-direnv/result")
machine.succeed("cd /tmp/test-direnv; direnv allow; direnv exec . true")
# The root will be removed if we does not use the direnv recently
machine.succeed("date -s '8 days'")
machine.systemctl("start nix-gc.service")
machine.succeed("date -s '15 days'")
machine.systemctl("start angrr.service")
machine.succeed("test ! -e /tmp/test-direnv/.direnv/gc-root")
machine.succeed("test ! -e /tmp/test-direnv/result")
# Recreate the root
machine.succeed("nix build /run/current-system --out-link /tmp/test-direnv/.direnv/gc-root")
machine.succeed("nix build /run/current-system --out-link /tmp/test-direnv/result")
machine.succeed("nix build /run/current-system --out-link /tmp/test-direnv/result-glob-ignored")
machine.succeed("nix build /run/current-system --out-link /tmp/test-outside-direnv/result")
# The root will not be remove if we use the direnv recently
machine.succeed("date -s '15 days'")
# test the case that $PWD is different from project root
machine.succeed("cd /tmp; direnv exec /tmp/test-direnv true")
machine.systemctl("start angrr.service")
machine.succeed("readlink /tmp/test-direnv/.direnv/gc-root")
machine.succeed("readlink /tmp/test-direnv/result")
machine.succeed("test ! -e /tmp/test-direnv/result-glob-ignored")
machine.succeed("test ! -e /tmp/test-outside-direnv/result")
# System profile policy test
# Create a profile for test
machine.succeed("mkdir /tmp/profile-test")
machine.succeed("nix-env --profile /nix/var/nix/profiles/system --set ${drvForTest "drv1"}") # generation 1
machine.succeed("nix-env --profile /nix/var/nix/profiles/system --set ${drvForTest "drv2"}") # generation 2
machine.succeed("nix-env --profile /nix/var/nix/profiles/system --set ${drvForTest "drv3"}") # generation 3
machine.succeed("ln --symbolic --force --no-dereference ${drvForTest "fake-booted-system"} /run/booted-system")
machine.succeed("nix-env --profile /nix/var/nix/profiles/system --set /run/booted-system") # generation 4
machine.succeed("nix-env --profile /nix/var/nix/profiles/system --set /run/current-system") # generation 5
machine.succeed("date -s '8 days'")
machine.succeed("cd /tmp/test-direnv; direnv exec . true")
machine.systemctl("start nix-gc.service")
machine.succeed("readlink /tmp/test-direnv/.direnv/gc-root")
machine.succeed("nix-env --profile /nix/var/nix/profiles/system --set ${drvForTest "drv4"}") # generation 6
machine.succeed("nix-env --profile /nix/var/nix/profiles/system --set ${drvForTest "drv5"}") # generation 7
machine.succeed("nix-env --profile /nix/var/nix/profiles/system --set ${drvForTest "drv6"}") # generation 8
machine.succeed("nix-env --profile /nix/var/nix/profiles/system --set ${drvForTest "drv7"}") # generation 9
machine.succeed("nix-env --profile /nix/var/nix/profiles/system --set ${drvForTest "drv8"}") # generation 10
# Rollback to generation 2 to simulate current system
for _ in range(0, 10 - 2):
machine.succeed("nix-env --rollback --profile /nix/var/nix/profiles/system")
# Run policy
machine.systemctl("start angrr.service")
# Test
machine.succeed("sh -c 'test $(readlink /nix/var/nix/profiles/system) = system-2-link'")
machine.succeed("test ! -e /nix/var/nix/profiles/system-1-link")
machine.succeed("readlink /nix/var/nix/profiles/system-2-link") # Keep since it is current generation
machine.succeed("test ! -e /nix/var/nix/profiles/system-3-link")
machine.succeed("readlink /nix/var/nix/profiles/system-4-link") # Keep by keep-booted-system
machine.succeed("readlink /nix/var/nix/profiles/system-5-link") # Keep by keep-current-system
machine.succeed("readlink /nix/var/nix/profiles/system-6-link") # Keep by keep-since
machine.succeed("readlink /nix/var/nix/profiles/system-7-link") # Keep by keep-since
machine.succeed("readlink /nix/var/nix/profiles/system-8-link") # Keep by keep-since
machine.succeed("readlink /nix/var/nix/profiles/system-9-link") # Keep by keep-latest-n
machine.succeed("readlink /nix/var/nix/profiles/system-10-link") # Keep by keep-latest-n
# User profile policy test 1
# Normal user
machine.succeed("su normal --command 'nix profile add ${drvForTest "drv1"}'")
machine.succeed("su normal --command 'nix profile add ${drvForTest "drv2"}'")
machine.succeed("su normal --command 'nix profile add ${drvForTest "drv3"}'")
# Root user
machine.succeed("nix profile add ${drvForTest "drv1"}")
machine.succeed("nix profile add ${drvForTest "drv2"}")
machine.succeed("nix profile add ${drvForTest "drv3"}")
# Run policy
machine.systemctl("start angrr.service")
# Test
machine.succeed("sh -c 'test $(readlink ~normal/.local/state/nix/profiles/profile) = profile-3-link'")
machine.succeed("test ! -e ~normal/.local/state/nix/profiles/profile-1-link")
machine.succeed("readlink ~normal/.local/state/nix/profiles/profile-2-link") # Keep by keep-latest-n
machine.succeed("readlink ~normal/.local/state/nix/profiles/profile-3-link") # Keep since it is current generation
machine.succeed("sh -c 'test $(readlink /nix/var/nix/profiles/per-user/root/profile) = profile-3-link'")
machine.succeed("test ! -e /nix/var/nix/profiles/per-user/root/profile-1-link")
machine.succeed("readlink /nix/var/nix/profiles/per-user/root/profile-2-link") # Keep by keep-latest-n
machine.succeed("readlink /nix/var/nix/profiles/per-user/root/profile-3-link") # Keep since it is current generation
# User profile policy test 2
# Create GC roots again
machine.succeed("su normal --command 'nix profile add ${drvForTest "drv1"}'")
machine.succeed("su normal --command 'nix profile add ${drvForTest "drv2"}'")
machine.succeed("su normal --command 'nix profile add ${drvForTest "drv3"}'")
machine.succeed("nix profile add ${drvForTest "drv1"}")
machine.succeed("nix profile add ${drvForTest "drv2"}")
machine.succeed("nix profile add ${drvForTest "drv3"}")
# Run policy in owned-only mode as normal user
machine.succeed("su normal --command 'angrr run --no-prompt'")
# Test
machine.succeed("sh -c 'test $(readlink ~normal/.local/state/nix/profiles/profile) = profile-6-link'")
machine.succeed("test ! -e ~normal/.local/state/nix/profiles/profile-1-link")
machine.succeed("test ! -e ~normal/.local/state/nix/profiles/profile-2-link")
machine.succeed("test ! -e ~normal/.local/state/nix/profiles/profile-3-link")
machine.succeed("test ! -e ~normal/.local/state/nix/profiles/profile-4-link")
machine.succeed("readlink ~normal/.local/state/nix/profiles/profile-5-link") # Keep by keep-latest-n
machine.succeed("readlink ~normal/.local/state/nix/profiles/profile-6-link") # Keep since it is current generation
machine.succeed("sh -c 'test $(readlink /nix/var/nix/profiles/per-user/root/profile) = profile-6-link'")
machine.succeed("test ! -e /nix/var/nix/profiles/per-user/root/profile-1-link")
machine.succeed("readlink /nix/var/nix/profiles/per-user/root/profile-2-link")
machine.succeed("readlink /nix/var/nix/profiles/per-user/root/profile-3-link")
machine.succeed("readlink /nix/var/nix/profiles/per-user/root/profile-4-link") # Not monitored
machine.succeed("readlink /nix/var/nix/profiles/per-user/root/profile-5-link") # Not monitored
machine.succeed("readlink /nix/var/nix/profiles/per-user/root/profile-6-link") # Not monitored
'';
}
@@ -18,7 +18,7 @@
stdenv.mkDerivation (finalAttrs: {
pname = "timeshift";
version = "25.12.0";
version = "25.12.1";
outputs = [
"out"
"man"
@@ -28,7 +28,7 @@ stdenv.mkDerivation (finalAttrs: {
owner = "linuxmint";
repo = "timeshift";
tag = finalAttrs.version;
hash = "sha256-JAp1kZ8DBjhB6Xk4ZeL2ozJoTPPcu5gn7Fh+vbm+Zjg=";
hash = "sha256-m+eSF+cALWSaNt/0V0XTrDZiocddsLqK1YDU7yBdXjw=";
};
postPatch = ''
File diff suppressed because it is too large Load Diff
@@ -7,8 +7,8 @@ vscode-utils.buildVscodeMarketplaceExtension {
mktplcRef = {
name = "claude-code";
publisher = "anthropic";
version = "2.0.65";
hash = "sha256-iudhgG4odEWW5mITOGC1dyHESyrncLXWMYCGZI77sh8=";
version = "2.0.70";
hash = "sha256-ed2oYB6G9EuSRqgt18W69JS73+uf6vqXtwQ1ZY+eWy8=";
};
meta = {
@@ -23,7 +23,7 @@ stdenv.mkDerivation (finalAttrs: {
src = fetchurl {
url = "https://www.fossil-scm.org/home/tarball/version-${finalAttrs.version}/fossil-${finalAttrs.version}.tar.gz";
hash = "sha256-1YVOgyNBDy/CeuVfrhE/D4LfQwv5uFfykoYwiZ3eFFY=";
hash = "sha256-XzP5IKhlYi+ZBpWrKO7xc2Nb4i0ylYctd2aUG8S31DQ=";
};
# required for build time tool `./tools/translate.c`
+9 -6
View File
@@ -1,30 +1,33 @@
{
lib,
stdenv,
rustPlatform,
fetchFromGitHub,
installShellFiles,
nixosTests,
testers,
nix-update-script,
go-md2man,
}:
rustPlatform.buildRustPackage (finalAttrs: {
pname = "angrr";
version = "0.1.5";
version = "0.2.0";
src = fetchFromGitHub {
owner = "linyinfeng";
repo = "angrr";
tag = "v${finalAttrs.version}";
hash = "sha256-PT3oCNPRvEroyVNiICeO0hSHDzKUC6KcP9HnIw1kMQE=";
hash = "sha256-Z+B0MO5ZoPJveO571mlzNVedBEac7P4RE7Cq8e/9bJk=";
};
cargoHash = "sha256-lDOH4Ceap69fX6VWbgQoQfmYWZI+jPE0LJiXmqrTRn8=";
cargoHash = "sha256-j36vyfIP63Qmd55vaVb9buqrCItXwFalelzU8BlKm9s=";
buildAndTestSubdir = "angrr";
nativeBuildInputs = [ installShellFiles ];
nativeBuildInputs = [
go-md2man
installShellFiles
];
postBuild = ''
mkdir --parents build/{man-pages,shell-completions}
cargo xtask man-pages --out build/man-pages
@@ -50,7 +53,7 @@ rustPlatform.buildRustPackage (finalAttrs: {
};
meta = {
description = "Temporary GC Roots Cleaner";
description = "Auto Nix GC Root Retention";
homepage = "https://github.com/linyinfeng/angrr";
license = [ lib.licenses.mit ];
maintainers = with lib.maintainers; [ yinfeng ];
+1 -1
View File
@@ -10,7 +10,7 @@
stdenv.mkDerivation {
pname = "asleap";
version = "0-unstable-2021-06-20";
version = "0-unstable-2021-06-21";
src = fetchFromGitHub {
owner = "zackw";
+3 -3
View File
@@ -8,15 +8,15 @@
rustPlatform.buildRustPackage (finalAttrs: {
pname = "cargo-shear";
version = "1.7.2";
version = "1.9.1";
src = fetchCrate {
pname = "cargo-shear";
version = finalAttrs.version;
hash = "sha256-hZrqEbBcSSmvMRBn1V1L5Ow/drN1lAO5owu2reXrruA=";
hash = "sha256-QRWYVmFCxntEFzC9iqEoZQ5sG57P2gpBUFu8A8aI+7g=";
};
cargoHash = "sha256-UD0J6fofx24gqHVF/1X3RDChOSGpqfQ+37KZprZ8cIM=";
cargoHash = "sha256-yMUdZCIJTWCvi+07a1Erj6SD7i34opnvZ2CZ027PWzU=";
env = {
# https://github.com/Boshen/cargo-shear/blob/v1.6.2/src/lib.rs#L51-L54
@@ -7,13 +7,13 @@
stdenv.mkDerivation rec {
pname = "cinnamon-translations";
version = "6.6.0";
version = "6.6.1";
src = fetchFromGitHub {
owner = "linuxmint";
repo = "cinnamon-translations";
tag = version;
hash = "sha256-+aqMXice5INNkqLmPc4hawlrc2jRnsGimDPZf28dUSE=";
hash = "sha256-6y1zHKO/qpkAL5fs6QUjNJki16X+bxW/175Sz1PUPQw=";
};
nativeBuildInputs = [
+2 -2
View File
@@ -1,12 +1,12 @@
{
"name": "@anthropic-ai/claude-code",
"version": "2.0.69",
"version": "2.0.70",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@anthropic-ai/claude-code",
"version": "2.0.69",
"version": "2.0.70",
"license": "SEE LICENSE IN README.md",
"bin": {
"claude": "cli.js"
+3 -3
View File
@@ -11,14 +11,14 @@
}:
buildNpmPackage (finalAttrs: {
pname = "claude-code";
version = "2.0.69";
version = "2.0.70";
src = fetchzip {
url = "https://registry.npmjs.org/@anthropic-ai/claude-code/-/claude-code-${finalAttrs.version}.tgz";
hash = "sha256-iQ+iVv3sY0oxGCZuuatcl2LSWvBfqSA+/RmeFgiMDDY=";
hash = "sha256-RTMhrFhbamO8Ow5iKd3IiLoKoLF5cz279ArjPZymE9o=";
};
npmDepsHash = "sha256-jb6AWGbnW5n9P9V8crR25ql0gFsAFY0z0EBnWJodnd4=";
npmDepsHash = "sha256-coTUQVOOT/jonVtnmY/zenv1PI93JFlpFEqlUlhssJM=";
postPatch = ''
cp ${./package-lock.json} package-lock.json
@@ -7,16 +7,16 @@
buildNpmPackage {
pname = "coc-rust-analyzer";
version = "0-unstable-2025-12-02";
version = "0-unstable-2025-12-15";
src = fetchFromGitHub {
owner = "fannheyward";
repo = "coc-rust-analyzer";
rev = "8f9ac44c8154b26f993e0e0ad4c5c55918f3661e";
hash = "sha256-pmvgF5mHh8djzKFLlcRVOZjZ5e5kN1ymqthYuPPYgmA=";
rev = "493f10d0537e82d49eb13aba5f9bc4973f92ed2c";
hash = "sha256-MmoI4Bu883PNi6t6MBmMbEd+OTcN/dfOfsbJi2EsnzM=";
};
npmDepsHash = "sha256-WOwCgsynYeINS39Lhahd++1qJwcFRUv0kENRO13mKio=";
npmDepsHash = "sha256-Qksi1G4YeFU94mIccyMpphER9d/UiCOriqbe0w7LA6c=";
passthru.updateScript = nix-update-script { extraArgs = [ "--version=branch" ]; };
+3 -3
View File
@@ -14,18 +14,18 @@
}:
rustPlatform.buildRustPackage (finalAttrs: {
pname = "codex";
version = "0.72.0";
version = "0.73.0";
src = fetchFromGitHub {
owner = "openai";
repo = "codex";
tag = "rust-v${finalAttrs.version}";
hash = "sha256-rNol7k/CcAKJXZYsbORRqD+uJfN6TPfcEbkUXezpFkY=";
hash = "sha256-6oVSscGpMcJGOJ90JuwmYe6HbFteoTdTPr2AGU84JzQ=";
};
sourceRoot = "${finalAttrs.src.name}/codex-rs";
cargoHash = "sha256-ZTrG3m6fEwn5ifNFi1A57/sdUfIaEUXMjmoQ86kAxGM=";
cargoHash = "sha256-MN977yTfdESey0CK8vOXMKjY9HSXqRy1LgK7IYjNz1k=";
nativeBuildInputs = [
installShellFiles
-42
View File
@@ -1,42 +0,0 @@
{
lib,
rustPlatform,
fetchFromGitHub,
python3,
testers,
cringify,
}:
rustPlatform.buildRustPackage rec {
pname = "cringify";
version = "0.2.0";
src = fetchFromGitHub {
owner = "sansyrox";
repo = "cringify";
rev = "857c2620ac9f1f53139d3a599e55679a75e77053";
hash = "sha256-U0tKYFRZToMALSeItn9yia7Dl7omETDTkuRlWJ8EZEo=";
};
cargoHash = "sha256-VUMVul3P2GRwihTilVpcEb+A5pJaHxlzkwa3uq+pHtY=";
postPatch = ''
# Upstream doesn't set the version string itself
substituteInPlace src/main.rs --replace '0.0.1' ${version}
'';
nativeBuildInputs = [ python3 ];
# No tests are present in the repository
doCheck = false;
passthru.tests.version = testers.testVersion { package = cringify; };
meta = {
description = "Annoy your friends with the cringified text";
homepage = "https://github.com/sansyrox/cringify";
license = lib.licenses.mit;
mainProgram = "cringify";
maintainers = with lib.maintainers; [ tomasajt ];
};
}
+1 -1
View File
@@ -6,7 +6,7 @@ index c99912738ec2..adeda1fe964e 100755
#set -x
## DO NOT CHANGE THIS FILE
-INSTALLDIR="/opt/mdyalog/19.0/64/unicode"
-INSTALLDIR="/opt/mdyalog/20.0/64/unicode"
+INSTALLDIR="@installdir@"
EXE="dyalog"
+40 -9
View File
@@ -49,18 +49,49 @@ let
or you can set the following nixpkgs config option:
`config.dyalog.acceptLicense = true;`
'';
inherit (stdenv.hostPlatform) system isAarch;
htmlRendererNotOnAarch = ''
The HTMLRenderer is not currently supported on ${system}.
https://docs.dyalog.com/20.0/release-notes/announcements/#new-linux-platform
'';
in
stdenv.mkDerivation (finalAttrs: {
pname = "dyalog";
version = "19.0.50027";
version = "20.0.52753";
shortVersion = lib.versions.majorMinor finalAttrs.version;
passthru.sources =
let
fetchArtifact =
{
prefix,
suffix,
hash,
}:
fetchurl {
url = "https://download.dyalog.com/download.php?file=${finalAttrs.shortVersion}/${prefix}_${finalAttrs.version}_${suffix}";
inherit hash;
};
in
{
"x86_64-linux" = fetchArtifact {
prefix = "linux_64";
suffix = "unicode.x86_64.deb";
hash = "sha256-g5bilV2y7luWRZ1RPxe74F2mAKVHpKcytWWrX8dCuF8=";
};
"aarch64-linux" = fetchArtifact {
prefix = "linux_64";
suffix = "unicode.aarch64.deb";
hash = "sha256-DR7Kjqdp5BKW3XKUNYIdaUiR4Wd+sWkiSLtT5Ni1E4E=";
};
};
src =
assert !acceptLicense -> throw licenseDisclaimer;
fetchurl {
url = "https://download.dyalog.com/download.php?file=${finalAttrs.shortVersion}/linux_64_${finalAttrs.version}_unicode.x86_64.deb";
hash = "sha256-3uB102Hr0dmqAZj2ezLhsAdBotY24PWJfE7g5wSmKMA=";
};
assert htmlRendererSupport && isAarch -> throw htmlRendererNotOnAarch;
finalAttrs.passthru.sources.${system};
outputs = [ "out" ] ++ lib.optional enableDocs "doc";
@@ -99,7 +130,7 @@ stdenv.mkDerivation (finalAttrs: {
cp aplkeys.sh default.dse dyalog dyalogc dyalog.rt dyalog.dcfg.template dyalog.ver.dcfg.template languagebar.json mapl StartupSession.aplf ${dyalogHome}
mkdir ${dyalogHome}/lib
cp lib/{conga35_64.so,dyalog64.so,libconga35ssl64.so} ${dyalogHome}/lib
cp lib/{conga36_64.so,dyalog64.so,libconga36ssl64.so} ${dyalogHome}/lib
# Only keep the most useful workspaces
mkdir ${dyalogHome}/ws
@@ -111,11 +142,11 @@ stdenv.mkDerivation (finalAttrs: {
+ lib.optionalString htmlRendererSupport ''
cp -r locales ${dyalogHome}
cp libcef.so libEGL.so libGLESv2.so libvk_swiftshader.so libvulkan.so.1 ${dyalogHome}
cp chrome-sandbox icudtl.dat snapshot_blob.bin v8_context_snapshot.bin vk_swiftshader_icd.json *.pak ${dyalogHome}
cp chrome-sandbox icudtl.dat v8_context_snapshot.bin vk_swiftshader_icd.json *.pak ${dyalogHome}
cp lib/htmlrenderer.so ${dyalogHome}/lib
''
+ lib.optionalString sqaplSupport ''
cp lib/cxdya65u64u.so ${dyalogHome}/lib
cp lib/cxdya66u64u.so ${dyalogHome}/lib
cp ws/sqapl.dws ${dyalogHome}/ws
cp odbc.ini.sample sqapl.err sqapl.ini ${dyalogHome}
''
@@ -170,7 +201,7 @@ stdenv.mkDerivation (finalAttrs: {
tomasajt
markus1189
];
platforms = [ "x86_64-linux" ];
platforms = lib.attrNames finalAttrs.passthru.sources;
sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
};
})
+2 -2
View File
@@ -36,13 +36,13 @@
stdenv.mkDerivation rec {
pname = "exaile";
version = "4.2.0";
version = "4.2.1";
src = fetchFromGitHub {
owner = "exaile";
repo = "exaile";
rev = version;
sha256 = "sha256-33lUlJ7H7lmty46GLzGkIUpgbWIv2EqEcPIzKt87dis=";
sha256 = "sha256-eH7JhoGd5jiaye8ZLx836tgEXsRpEd3D3z6gvnVrbIs=";
};
nativeBuildInputs = [
@@ -8,14 +8,14 @@
stdenvNoCC.mkDerivation {
pname = "folder-color-switcher";
version = "1.6.9";
version = "1.7.0";
src = fetchFromGitHub {
owner = "linuxmint";
repo = "folder-color-switcher";
# They don't really do tags, this is just a named commit.
rev = "fefe156e336d2a0bbfe1ca61cf4e6873c74ae405";
hash = "sha256-KL3ipzZiHEj+jwAmbIOCeSBOwm3bMpJf4PVhGS+Xx24=";
rev = "c528788f05697d1e176df4f869d64bcebbab1528";
hash = "sha256-RSIiNjoU2Qk+0ACirUeo+VSfpjQ8NNJqmKKASD7RZXs=";
};
nativeBuildInputs = [
+3 -13
View File
@@ -13,7 +13,7 @@
}:
let
pname = "gitui";
version = "0.27.0";
version = "0.28.0";
in
rustPlatform.buildRustPackage {
inherit pname version;
@@ -22,10 +22,10 @@ rustPlatform.buildRustPackage {
owner = "extrawurst";
repo = "gitui";
rev = "v${version}";
hash = "sha256-jKJ1XnF6S7clyFGN2o3bHnYpC4ckl/lNXscmf6GRLbI=";
hash = "sha256-B3Cdhhu8ECfpc57TKe6u08Q/Kl4JzUlzw4vtJJ1YAUQ=";
};
cargoHash = "sha256-Le/dD8bTd5boz1IeEq4ItJZYC3MRW8uiT/3Zy1yv5L0=";
cargoHash = "sha256-dq5F7NJ0XcJ9x6hVWOboQQn8Liw8n8vkFgQSmTYIkSw=";
nativeBuildInputs = [
pkg-config
@@ -40,16 +40,6 @@ rustPlatform.buildRustPackage {
libiconv
];
patches = [
# Fixes the build for rust 1.89
# Upstream PR: https://github.com/gitui-org/gitui/pull/2663
# TOREMOVE for gitui > 0.27.0
(fetchpatch {
url = "https://github.com/gitui-org/gitui/commit/950e703cab1dd37e3d02e7316ec99cc0dc70513c.patch";
sha256 = "sha256-KDgOPLKGuJaF0Nc6rw9FPFmcI07I8Gyp/KNX8x6+2xw=";
})
];
postPatch = ''
# The cargo config overrides linkers for some targets, breaking the build
# on e.g. `aarch64-linux`. These overrides are not required in the Nix
@@ -29,11 +29,11 @@
stdenv.mkDerivation (finalAttrs: {
pname = "gnome-network-displays";
version = "0.97.0";
version = "0.98.0";
src = fetchurl {
url = "mirror://gnome/sources/gnome-network-displays/${lib.versions.majorMinor finalAttrs.version}/gnome-network-displays-${finalAttrs.version}.tar.xz";
sha256 = "sha256-zexoyPmzJrqu5UU3Sowrk8qRnkj0uKQkYcsOsjmNqyc=";
sha256 = "sha256-3M42vuzgtTFFQJBswGn4KP5XtSWuv0LlhREFiHxiu2c=";
};
nativeBuildInputs = [
@@ -16,13 +16,13 @@
stdenv.mkDerivation (finalAttrs: {
pname = "gnome-online-accounts-gtk";
version = "3.50.8";
version = "3.50.9";
src = fetchFromGitHub {
owner = "xapp-project";
repo = "gnome-online-accounts-gtk";
rev = finalAttrs.version;
hash = "sha256-DcW88Zx8uoxOL+2mV7uBIsnmQEuy02tbAO1ljf0ZigQ=";
hash = "sha256-X7/TfY4Amei/CYO+FaXoSb48Y3/mQwduw40rTl6pN50=";
};
nativeBuildInputs = [
+2 -2
View File
@@ -16,14 +16,14 @@
}:
python3Packages.buildPythonApplication rec {
pname = "handheld-daemon";
version = "4.1.1";
version = "4.1.5";
pyproject = true;
src = fetchFromGitHub {
owner = "hhd-dev";
repo = "hhd";
tag = "v${version}";
hash = "sha256-Lh9rilpdx+njikVDftFAeA5HWgWQwgfnzocT/nSO2NU=";
hash = "sha256-hjqlaJ4mJ1s9ivN4vTzeOXK4GuBi8799DlSZimWaMFg=";
};
# Handheld-daemon runs some selinux-related utils which are not in nixpkgs.
+2 -2
View File
@@ -16,13 +16,13 @@
stdenv.mkDerivation rec {
pname = "hypnotix";
version = "5.4";
version = "5.5";
src = fetchFromGitHub {
owner = "linuxmint";
repo = "hypnotix";
tag = version;
hash = "sha256-aLcuRg6I1PaHBKyHMEV+TYOM82wb1hPVzMuF0SZixs8=";
hash = "sha256-/bFqPar/Ey48e+KG1EN0IuTF4HX+2jeMcFkqcEcOKMs=";
};
patches = [
+5 -6
View File
@@ -1,7 +1,7 @@
{
lib,
stdenv,
fetchgit,
fetchurl,
fftw,
gtk2,
lv2,
@@ -15,10 +15,10 @@ stdenv.mkDerivation (finalAttrs: {
pname = "ir.lv2";
version = "1.4.0";
src = fetchgit {
url = "https://git.hq.sig7.se/ir.lv2.git";
rev = "1d4a4f9b1aad6223d541ebb0c16d85d527478222";
hash = "sha256-6/KpwM/aHMNvtpf3/BJQjGe1kRZx3NFmV8F6r/bPkII=";
# https://github.com/NixOS/nixpkgs/issues/463147#issuecomment-3658352031
src = fetchurl {
url = "https://web.archive.org/web/20251216014553/https://git.hq.sig7.se/ir.lv2.git/snapshot/1d4a4f9b1aad6223d541ebb0c16d85d527478222.tar.gz";
hash = "sha256-lTzj4tf7jNOKnvcZzEbzPqg4aPgXcbCVwIHoV+5G+hU=";
};
buildInputs = [
@@ -49,6 +49,5 @@ stdenv.mkDerivation (finalAttrs: {
license = lib.licenses.gpl2;
maintainers = [ lib.maintainers.magnetophon ];
platforms = lib.platforms.linux;
mainProgram = "convert4chan";
};
})
+9
View File
@@ -2,6 +2,7 @@
gccStdenv,
fetchFromGitHub,
fetchurl,
fetchpatch2,
fmt,
nlohmann_json,
@@ -52,6 +53,14 @@ stdenv.mkDerivation rec {
hash = "sha256:1r33jj8yipxjgiarddcxr1yc5kmn98rwrjl9qxfx0fzn1bsg04q5";
};
patches = [
(fetchpatch2 {
name = "blob-tree-add-hash.patch";
url = "https://github.com/just-buildsystem/justbuild/commit/c54a46de7df0c6b26b7d8f4a10d380103da634fb.patch?full_index=1";
hash = "sha256-hAi4YJmNAwfSl2SWjVCWBhk7VbQeNN1JhmHS9dy2GdU=";
})
];
nativeBuildInputs = [
# Tools for the bootstrap process
jq
+55
View File
@@ -0,0 +1,55 @@
{
desktop-file-utils,
fetchFromGitHub,
gettext,
gtk4,
lib,
libadwaita,
libportal-gtk4,
meson,
ninja,
pkg-config,
stdenv,
wrapGAppsHook4,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "kasasa";
version = "1.1.4";
src = fetchFromGitHub {
owner = "KelvinNovais";
repo = "Kasasa";
tag = "v${finalAttrs.version}";
hash = "sha256-y5Ml5kHKk5f1RcRKdvS/9JO0dIWpotU1qtjjmpDJ1f4=";
};
nativeBuildInputs = [
meson
ninja
pkg-config
wrapGAppsHook4
desktop-file-utils
gettext
];
buildInputs = [
gtk4
libadwaita
libportal-gtk4
];
meta = {
description = "Snip and pin useful information to a small floating window";
longDescription = ''
Clip and pin what's important to a small floating window, so you don't
have to switch between windows or workspaces repeatedly. The window can
become miniaturized or have its opacity reduced, in order to not block
what's behind it.
'';
homepage = "https://github.com/KelvinNovais/Kasasa";
license = lib.licenses.gpl3Plus;
mainProgram = "kasasa";
maintainers = with lib.maintainers; [ yajo ];
platforms = lib.platforms.linux;
};
})
@@ -23,13 +23,13 @@
stdenv.mkDerivation rec {
pname = "lightdm-slick-greeter";
version = "2.2.4";
version = "2.2.5";
src = fetchFromGitHub {
owner = "linuxmint";
repo = "slick-greeter";
rev = version;
hash = "sha256-Kq5FcippvMyxxA56uH41UdOCrP2wSuw0Tyv1OFxKD5Q=";
hash = "sha256-soXhVpzO4bJfZ5EV6uEDJOhwV9HJDfxUIuHi9AxaE0A=";
};
nativeBuildInputs = [
+25
View File
@@ -0,0 +1,25 @@
From 3795c48b607f4fe98062e5a4a19310899398be42 Mon Sep 17 00:00:00 2001
From: Florian Stecker <oss@florianstecker.net>
Date: Thu, 12 Jun 2025 23:47:31 -0400
Subject: [PATCH] Compatibility with libmupdf 1.26
---
link.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/link.c b/link.c
index ff635b2..9134726 100644
--- a/link.c
+++ b/link.c
@@ -2560,8 +2560,8 @@ ML (getfileannot (value ptr_v, value n_v))
pdf_obj *fs = pdf_dict_get (state.ctx,
pdf_annot_obj (state.ctx, slink->u.annot),
PDF_NAME (FS));
- pdf_embedded_file_params file_params;
- pdf_get_embedded_file_params (state.ctx, fs, &file_params);
- ret_v = caml_copy_string (file_params.filename);
+ pdf_filespec_params params;
+ pdf_get_filespec_params (state.ctx, fs, &params);
+ ret_v = caml_copy_string (params.filename);
unlock (__func__);
+5
View File
@@ -35,6 +35,11 @@ stdenv.mkDerivation rec {
hash = "sha256-B/jKvBtBwMOErUVmGFGXXIT8FzMl1DFidfDCHIH41TU=";
};
patches = [
# Compatibility with mupdf 1.26
./mupdf-1.26.patch
];
postPatch = ''
sed -i "2d;s/ver=.*/ver=${version}/" build.bash
'';
+2 -2
View File
@@ -9,13 +9,13 @@
stdenv.mkDerivation (finalAttrs: {
pname = "luau-lsp";
version = "1.57.1";
version = "1.58.0";
src = fetchFromGitHub {
owner = "JohnnyMorganz";
repo = "luau-lsp";
tag = finalAttrs.version;
hash = "sha256-onL/Iqk6nZClEHqam7wOAb69lO7h92Ox5iCVeuFn/LE=";
hash = "sha256-6+GVyUSDsv9INoivIsiO+eoBZvueLeDGA/9Lc2l7xRk=";
fetchSubmodules = true;
};
+2 -2
View File
@@ -138,13 +138,13 @@ in
goBuild (finalAttrs: {
pname = "ollama";
# don't forget to invalidate all hashes each update
version = "0.13.3";
version = "0.13.4";
src = fetchFromGitHub {
owner = "ollama";
repo = "ollama";
tag = "v${finalAttrs.version}";
hash = "sha256-DsAgosnvkyGFPKSjjnE9dZ37CfqAIlvodpVjHLihX2A=";
hash = "sha256-EljxxaD8TTs3JaZrgEnR5hCw7S7MVmVB3M4fI/yADeQ=";
};
vendorHash = "sha256-NM0vtue0MFrAJCjmpYJ/rPEDWBxWCzBrWDb0MVOhY+Q=";
-14
View File
@@ -41,12 +41,6 @@ let
# prevent scons from leaking in the default python version
scons' = scons.override { inherit python3Packages; };
tbbbind_version = "2_5";
tbbbind = fetchurl {
url = "https://storage.openvinotoolkit.org/dependencies/thirdparty/linux/tbbbind_${tbbbind_version}_static_lin_v4.tgz";
hash = "sha256-Tr8wJGUweV8Gb7lhbmcHxrF756ZdKdNRi1eKdp3VTuo=";
};
python = python3Packages.python.withPackages (
ps: with ps; [
cython
@@ -101,14 +95,6 @@ stdenv.mkDerivation rec {
cudaPackages.cuda_nvcc
];
postPatch = ''
mkdir -p temp/tbbbind_${tbbbind_version}
pushd temp/tbbbind_${tbbbind_version}
bsdtar -xf ${tbbbind}
echo "${tbbbind.url}" > ie_dependency.info
popd
'';
dontUseSconsCheck = true;
dontUseSconsBuild = true;
dontUseSconsInstall = true;
+2 -2
View File
@@ -35,13 +35,13 @@
stdenv.mkDerivation rec {
pname = "pix";
version = "3.4.8";
version = "3.4.9";
src = fetchFromGitHub {
owner = "linuxmint";
repo = "pix";
rev = version;
hash = "sha256-zK02qhTGuYgZWHkJ6c3EVinUcojNEWwecvPjblECLkw=";
hash = "sha256-cuNggVsNNqACWttPy1Tt8MfPFQKiuYhaMnh8TTHCi74=";
};
nativeBuildInputs = [
+2 -2
View File
@@ -11,7 +11,7 @@
copyDesktopItems,
}:
let
version = "2.65.1";
version = "2.65.2";
in
python3Packages.buildPythonApplication rec {
inherit version;
@@ -22,7 +22,7 @@ python3Packages.buildPythonApplication rec {
owner = "pyfa-org";
repo = "Pyfa";
tag = "v${version}";
hash = "sha256-s53EkXPySdijmkb32VZs44Fuy+lckBu9RxMfPVe0mag=";
hash = "sha256-W3HQ6x9WXYXCczVj+3MBhEnkoDgJUJ6oZal1N4iDjdg=";
};
desktopItems = [
+23 -2
View File
@@ -2,9 +2,17 @@
lib,
python3,
fetchFromGitHub,
imagemagick,
installShellFiles,
nix-update-script,
imagemagick,
colorz,
withColorthief ? false,
withColorz ? false,
withFastColorthief ? false,
withHaishoku ? false,
withModernColorthief ? false,
}:
python3.pkgs.buildPythonApplication rec {
@@ -23,11 +31,22 @@ python3.pkgs.buildPythonApplication rec {
nativeBuildInputs = [ installShellFiles ];
dependencies =
lib.optionals withColorthief optional-dependencies.colorthief
++ lib.optionals withColorz optional-dependencies.colorz
++ lib.optionals withFastColorthief optional-dependencies.fast-colorthief
++ lib.optionals withHaishoku optional-dependencies.haishoku
++ lib.optionals withModernColorthief optional-dependencies.modern_colorthief;
nativeCheckInputs = [
python3.pkgs.pytestCheckHook
imagemagick
];
makeWrapperArgs = [
"--prefix PATH : ${lib.makeBinPath ([ imagemagick ] ++ lib.optional withColorz colorz)}"
];
postInstall = ''
installManPage data/man/man1/wal.1
'';
@@ -43,11 +62,13 @@ python3.pkgs.buildPythonApplication rec {
colorz = [ colorz ];
fast-colorthief = [ fast-colorthief ];
haishoku = [ haishoku ];
modern_colorthief = [ modern-colorthief ];
all = [
colorthief
colorz
ast-colorthief
fast-colorthief
haishoku
modern-colorthief
];
};
+3 -3
View File
@@ -15,13 +15,13 @@
stdenv.mkDerivation (finalAttrs: {
pname = "renovate";
version = "42.24.0";
version = "42.57.1";
src = fetchFromGitHub {
owner = "renovatebot";
repo = "renovate";
tag = finalAttrs.version;
hash = "sha256-TGk8/qr213jEPpsJM091G7LvUc/UNKB9DnVg5j0C6uw=";
hash = "sha256-IMUnOk4D0CDKgrkM9geyaj80Pir6pORlWUPW2UIoKOM=";
};
postPatch = ''
@@ -41,7 +41,7 @@ stdenv.mkDerivation (finalAttrs: {
pnpmDeps = pnpm_10.fetchDeps {
inherit (finalAttrs) pname version src;
fetcherVersion = 2;
hash = "sha256-cUpMiCM6fv8n/tMQJ8UHNaP48MNdc7VD+Q+ka+CQ3EE=";
hash = "sha256-WTShVxWhdAPbITBaSw6BrqSwSJ9pc2imB+ovjhTT6qY=";
};
env.COREPACK_ENABLE_STRICT = 0;
+1 -1
View File
@@ -51,7 +51,7 @@ rustPlatform.buildRustPackage rec {
meta = {
description = "Implementation of the Stateless OpenPGP Command Line Interface using Sequoia";
homepage = "https://docs.sequoia-pgp.org/sqop/";
homepage = "https://gitlab.com/sequoia-pgp/sequoia-sop";
license = lib.licenses.gpl2Plus;
maintainers = with lib.maintainers; [ doronbehar ];
mainProgram = "sqop";
+3 -3
View File
@@ -65,13 +65,13 @@ in
rustPlatform.buildRustPackage (finalAttrs: {
pname = "servo";
version = "0.0.2";
version = "0.0.3";
src = fetchFromGitHub {
owner = "servo";
repo = "servo";
tag = "v${finalAttrs.version}";
hash = "sha256-mhZaAyLznchFUd9f2HqD7th3RDO2inH6U3L5PcZLPFA=";
hash = "sha256-XMDt3q3LgKtGCgwuf/+0ZF2EfkUENM+mp4icZAyqGiw=";
# Breaks reproducibility depending on whether the picked commit
# has other ref-names or not, which may change over time, i.e. with
# "ref-names: HEAD -> main" as long this commit is the branch HEAD
@@ -81,7 +81,7 @@ rustPlatform.buildRustPackage (finalAttrs: {
'';
};
cargoHash = "sha256-jrspfHjJgNAzuCtFqOE7dwgMN02NwVkCOisYAOE8CrU=";
cargoHash = "sha256-FR9/5aZ7e2ekYYCFQMr55JXuJScqjDKb4o+w6nNr4yo=";
# set `HOME` to a temp dir for write access
# Fix invalid option errors during linking (https://github.com/mozilla/nixpkgs-mozilla/commit/c72ff151a3e25f14182569679ed4cd22ef352328)
+2 -2
View File
@@ -7,13 +7,13 @@
buildGoModule (finalAttrs: {
pname = "simplotask";
version = "1.19.1";
version = "1.19.2";
src = fetchFromGitHub {
owner = "umputun";
repo = "spot";
tag = "v${finalAttrs.version}";
hash = "sha256-Zu7GkvNVhf6TeZg2AVH8GTi5ORK5aUspSvB1ThOBwTo=";
hash = "sha256-UFuHcva5+0KMaIas6N+Ny1Ego6ZI+J8gd+91EisRlXM=";
};
vendorHash = null;
@@ -9,13 +9,13 @@
stdenvNoCC.mkDerivation {
pname = "steam-devices-udev-rules";
version = "1.0.0.61-unstable-2025-10-18";
version = "1.0.0.61-unstable-2025-12-16";
src = fetchFromGitHub {
owner = "ValveSoftware";
repo = "steam-devices";
rev = "4d7e6c1d8c54ec10fdb29daca679307ac5194825";
hash = "sha256-KzDzZ03g1xil4G6yw67KGEHnWIWg6VZIkMy8n/kSgMs=";
rev = "daf01bc7e1e3d65987ab0f6e2c93707170a686b3";
hash = "sha256-3eYZzn4b4RMCa6r1a1fFQohNNb4+5HfRtz8AaLDcoHs=";
};
nativeBuildInputs = [
@@ -41,6 +41,9 @@ stdenvNoCC.mkDerivation {
homepage = "https://github.com/ValveSoftware/steam-devices";
license = lib.licenses.mit;
platforms = lib.platforms.linux;
maintainers = with lib.maintainers; [ azuwis ];
maintainers = with lib.maintainers; [
azuwis
yuannan
];
};
}
+3 -3
View File
@@ -16,16 +16,16 @@
buildNpmPackage rec {
pname = "teams-for-linux";
version = "2.6.18";
version = "2.6.19";
src = fetchFromGitHub {
owner = "IsmaelMartinez";
repo = "teams-for-linux";
tag = "v${version}";
hash = "sha256-hIFr+lJrM3FaCKQhUBzD8kzKaF1ZouCp+QLa558b35s=";
hash = "sha256-LWoMMfvIZ0+t1kzhv9uOLj7kTTFp3gzHOT1j+wYN1mM=";
};
npmDepsHash = "sha256-brru6gsHwu2wS1Qe2AjjMW9QOVYd2HBUzUvSl1EJ87M=";
npmDepsHash = "sha256-Bc/l8cKxN/wc4SVDJw0E32W2pErBuHIOopYfqSaLuyo=";
nativeBuildInputs = [
makeWrapper
+3 -3
View File
@@ -6,15 +6,15 @@
rustPlatform.buildRustPackage (finalAttrs: {
pname = "tun2proxy";
version = "0.7.17";
version = "0.7.18";
src = fetchCrate {
pname = "tun2proxy";
inherit (finalAttrs) version;
hash = "sha256-QcXFDR5JbjGX2KjGBD2Wd5eSFVTxfXUkSCWhV5QO+r4=";
hash = "sha256-abgknJuP0p5QS2iTyix0Uq6xiQkeTGK+M/weIHoZNgI=";
};
cargoHash = "sha256-jzUL342AOgaWnS1NBbI/WMXiGHht+eva3yGVlAQeJfo=";
cargoHash = "sha256-8DGlQCXXrq5s0TkqpWhgb2Gw1ve8LCxT0KNzZLvd0zY=";
env.GIT_HASH = "000000000000000000000000000000000000000000000000000";
+3 -3
View File
@@ -14,14 +14,14 @@
rustPlatform.buildRustPackage (finalAttrs: {
pname = "ty";
version = "0.0.1-alpha.34";
version = "0.0.1-alpha.35";
src = fetchFromGitHub {
owner = "astral-sh";
repo = "ty";
tag = finalAttrs.version;
fetchSubmodules = true;
hash = "sha256-sRr11P9m/dTAlQ2+B5fY02B8nX7Vzk7gp1iqEh/fuMI=";
hash = "sha256-dx6zZnThnkQHQbi5SXkKCnpkfw2kcrRDg0QEvb4WBqk=";
};
# For Darwin platforms, remove the integration test for file notifications,
@@ -35,7 +35,7 @@ rustPlatform.buildRustPackage (finalAttrs: {
cargoBuildFlags = [ "--package=ty" ];
cargoHash = "sha256-db45h6I5tCcPMbPGa/dV3eJ9CxCwnGShmHdg92AUhv0=";
cargoHash = "sha256-nsrSAYRr80O0gNSzlV+IwD7tFbKogiimOfH3/O1Sqrk=";
nativeBuildInputs = [ installShellFiles ];
+2 -2
View File
@@ -42,13 +42,13 @@ let
in
stdenv.mkDerivation rec {
pname = "warpinator";
version = "2.0.1";
version = "2.0.2";
src = fetchFromGitHub {
owner = "linuxmint";
repo = "warpinator";
rev = version;
hash = "sha256-HfOxEVzMmZ7lqT6M3sT5FxynqKFQHHmzvHA4Wu4NPr8=";
hash = "sha256-bVK60fSIWp02qrKCJ68awyPcZhMTW5bjRPI7YHmmScc=";
};
nativeBuildInputs = [
+3 -3
View File
@@ -57,11 +57,11 @@
stdenv.mkDerivation rec {
pname = "webex";
version = "45.10.0.33234";
version = "45.10.1.33646";
src = fetchurl {
url = "https://binaries.webex.com/WebexDesktop-Ubuntu-Gold/20251014140645/Webex_ubuntu.7z";
sha256 = "126ac38dbf659d26c213a9ccd5930f6a88d1aa90fd9de90cba74b2f2bfbe7793";
url = "https://binaries.webex.com/WebexDesktop-Ubuntu-Gold/20251205014600/Webex_ubuntu.7z";
sha256 = "59894d56ed2d55df1ca908d8b6993c208d685f6e77b8c315e370471e616cfd8d";
};
nativeBuildInputs = [
+2 -2
View File
@@ -24,7 +24,7 @@
stdenv.mkDerivation rec {
pname = "xapp";
version = "3.2.0";
version = "3.2.1";
outputs = [
"out"
@@ -35,7 +35,7 @@ stdenv.mkDerivation rec {
owner = "linuxmint";
repo = "xapp";
rev = version;
hash = "sha256-jO1FyJfAg/kZExAS6gT0u15ans8cDsXfBE5V+w2fQXU=";
hash = "sha256-Uc3vMcWVzT0N9FCDxxI2e4yk1fg6FJiC7XXpY80mV0c=";
};
# Recommended by upstream, which enables the build of xapp-debug.
+2 -2
View File
@@ -23,13 +23,13 @@
stdenv.mkDerivation rec {
pname = "xed-editor";
version = "3.8.6";
version = "3.8.7";
src = fetchFromGitHub {
owner = "linuxmint";
repo = "xed";
rev = version;
hash = "sha256-CeKgJg9pyQdnpatdlgqviLnzNv9JCVDm+bFv56trrT8=";
hash = "sha256-Vl2yf4PlREvyAY/lRP+nB47GEuuyYeLnBARKhDEfG4M=";
};
patches = [
+2 -2
View File
@@ -37,13 +37,13 @@
stdenv.mkDerivation rec {
pname = "xreader";
version = "4.6.0";
version = "4.6.1";
src = fetchFromGitHub {
owner = "linuxmint";
repo = "xreader";
rev = version;
hash = "sha256-cp/pZ42AS98AD78BVMeY3SHQHkYA2h4o0kddr/H+kUA=";
hash = "sha256-+T89KxGTGycN1pnXBxJY15ViRvwJbM2adZVUTTSG3VQ=";
};
nativeBuildInputs = [
+2 -2
View File
@@ -29,13 +29,13 @@
stdenv.mkDerivation rec {
pname = "xviewer";
version = "3.4.14";
version = "3.4.15";
src = fetchFromGitHub {
owner = "linuxmint";
repo = "xviewer";
rev = version;
hash = "sha256-2UWe9c9JkNhJyukDp+NTG/bvbMuwSyLBkk2wWvPbxRk=";
hash = "sha256-fAB7nbkGx6aNKwRA01013hAiGJ8pEovI0WClOqT0D10=";
};
nativeBuildInputs = [
+14
View File
@@ -0,0 +1,14 @@
# Yepkit YKUSH3.
SUBSYSTEMS=="usb", ATTRS{idVendor}=="04d8", ATTRS{idProduct}=="f11b", MODE="0666"
# Yepkit YKUSH2.
SUBSYSTEMS=="usb", ATTRS{idVendor}=="04d8", ATTRS{idProduct}=="efed", MODE="0666"
# Yepkit YKUSHXs
SUBSYSTEMS=="usb", ATTRS{idVendor}=="04d8", ATTRS{idProduct}=="f0cd", MODE="0666"
# Yepkit YKUSH(1).
SUBSYSTEMS=="usb", ATTRS{idVendor}=="04d8", ATTRS{idProduct}=="f2f7", MODE="0666"
# Yepkit YKUSH-legacy.
SUBSYSTEMS=="usb", ATTRS{idVendor}=="04d8", ATTRS{idProduct}=="0042", MODE="0666"
+56
View File
@@ -0,0 +1,56 @@
{
lib,
stdenv,
fetchFromGitHub,
libusb1,
runCommand,
versionCheckHook,
}:
stdenv.mkDerivation (final: {
pname = "ykushcmd";
version = "1.2.5";
buildInputs = [ libusb1 ];
src = fetchFromGitHub {
owner = "yepkit";
repo = "ykush";
tag = "${final.version}";
hash = "sha256-FbqlXh8A5hzpthBE3jZ1LLOMs4WcEGke3sOZi9vmZF8=";
};
installPhase = ''
runHook preInstall
install -D bin/ykushcmd $out/bin/ykushcmd
install -Dm444 ${./99-ykush.rules} $out/lib/udev/rules.d/99_ykush.rules
runHook postInstall
'';
nativeInstallCheckInputs = [ versionCheckHook ];
doInstallCheck = true;
passthru.tests = {
# We can't run any actual tests without hardware, but we can at least check the binary.
run-only = runCommand "${final.pname}-test" ''
${final}/bin/ykushcmd -h | grep YKUSHCMD
'';
};
meta = {
description = "Control utility for YepKit USB hubs";
longDescription = ''
controls the features of YepKit USB hubs, allowing one to arbitrarily
turn ports on and off and otherwise control the hub.
'';
homepage = "https://github.com/Yepkit/ykush";
license = lib.licenses.asl20;
maintainers = with lib.maintainers; [
aiyion
ktemkin
];
mainProgram = "ykushcmd";
platforms = lib.platforms.linux;
};
})
+3 -3
View File
@@ -5,16 +5,16 @@
}:
buildGoModule (finalAttrs: {
pname = "zeno";
version = "2.0.18";
version = "2.0.19";
src = fetchFromGitHub {
owner = "internetarchive";
repo = "Zeno";
tag = "v${finalAttrs.version}";
hash = "sha256-8SSQwJgKGMnGoorDunPmxQNxiBsE1b1R4OJAv85x3MM=";
hash = "sha256-6Or+DREyqljXTUJn5+NrFH2YktOUafHMx5jAL02Tm+4=";
};
vendorHash = "sha256-Zi7wmT72f8KJHkysGg8rWTUk8iMjlYDGeZUFvKmtQtk=";
vendorHash = "sha256-J9ufthZuIULHXkgHj80fDa68fiFJkGSXkhyiPpDYPJU=";
env.CGO_ENABLED = true;
ldFlags = [
@@ -6,24 +6,27 @@
ninja,
pkg-config,
vala,
wrapGAppsHook4,
wrapGAppsHook3,
gdk-pixbuf,
glib,
granite7,
gtk4,
libportal,
granite,
gtk3,
libhandy,
nix-update-script,
}:
stdenv.mkDerivation rec {
pname = "elementary-screenshot";
version = "8.0.3";
# nixpkgs-update: no auto update
# We disabled x-d-p-pantheon due to https://github.com/elementary/portals/issues/157
# so hold back this before the issue is fixed since later versions enforce using portals.
version = "8.0.0";
src = fetchFromGitHub {
owner = "elementary";
repo = "screenshot";
rev = version;
hash = "sha256-nEJCyQs77zcUb9mc2dUBbZP3zWdPFHTOORROe3u6sSA=";
hash = "sha256-z7FP+OZYF/9YLXYCQF/ElihKjKHVfeHc38RHdPb2aIE=";
};
nativeBuildInputs = [
@@ -31,15 +34,15 @@ stdenv.mkDerivation rec {
ninja
pkg-config
vala
wrapGAppsHook4
wrapGAppsHook3
];
buildInputs = [
gdk-pixbuf
glib
granite7
gtk4
libportal
granite
gtk3
libhandy
];
passthru = {
@@ -185,11 +185,12 @@ buildPythonPackage rec {
disabledTests = [
# timeout
"test_build_error_logging"
"test_performance_mifs_bus_params"
"test_resistor"
"test_reserved_attrs"
"test_examples_build"
"test_net_names_deterministic"
"test_performance_mifs_bus_params"
"test_regression_rp2040_usb_diffpair"
"test_reserved_attrs"
"test_resistor"
# requires internet
"test_simple_pick"
"test_simple_negative_pick"
@@ -11,13 +11,13 @@
buildPythonPackage rec {
pname = "awkward-cpp";
version = "50";
version = "51";
pyproject = true;
src = fetchPypi {
pname = "awkward_cpp";
inherit version;
hash = "sha256-JktvtOgqzBBXtbL/DTP6vDYQMlKOIzgVzSIkxtvJbY4=";
hash = "sha256-jHTo+fslAXZtGw+fLrh3fjhEEdM1NKj6Zn1WWZIjoEs=";
};
build-system = [
@@ -24,14 +24,14 @@
buildPythonPackage rec {
pname = "awkward";
version = "2.8.10";
version = "2.8.11";
pyproject = true;
src = fetchFromGitHub {
owner = "scikit-hep";
repo = "awkward";
tag = "v${version}";
hash = "sha256-zECnqZapgvB9ngkoAwEDFMyebFbE0iJ7Yo/5iLcmRXs=";
hash = "sha256-76DeL/KIna8Hd9eukCzuRXKO+awkbpc4trCeKTSfGmA=";
};
build-system = [
@@ -9,14 +9,14 @@
buildPythonPackage rec {
pname = "compit-inext-api";
version = "0.3.1";
version = "0.3.4";
pyproject = true;
src = fetchFromGitHub {
owner = "Przemko92";
repo = "compit-inext-api";
tag = version;
hash = "sha256-Wx3V0AdxNGLdCIl4G7FlfzeDSirRPnxgQ9Fbp5cRjFw=";
hash = "sha256-J3V7ahETbCTJW/6jYvF9BbuIffVvbMH329nO1bmVKEw=";
};
build-system = [ setuptools ];
@@ -2,33 +2,28 @@
lib,
fetchFromGitHub,
buildPythonPackage,
unittestCheckHook,
mock,
pytestCheckHook,
setuptools,
typing-extensions,
}:
buildPythonPackage rec {
pname = "cron-descriptor";
version = "1.4.5";
version = "2.0.6";
pyproject = true;
src = fetchFromGitHub {
owner = "Salamek";
repo = "cron-descriptor";
tag = version;
hash = "sha256-ElYma6RH2u1faIgOvGpMQA26dSIibWcO4mWU6NAA5PQ=";
hash = "sha256-f7TQ3wvcHrzefZowUvxl1T0LCGeCnvpPI/IZn4XcDa4=";
};
# remove tests_require, as we don't do linting anyways
postPatch = ''
sed -i "/'pep8\|flake8\|pep8-naming',/d" setup.py
'';
build-system = [ setuptools ];
nativeCheckInputs = [
mock
unittestCheckHook
pytestCheckHook
typing-extensions
];
pythonImportsCheck = [ "cron_descriptor" ];
@@ -0,0 +1,56 @@
{
lib,
buildPythonPackage,
fetchPypi,
setuptools,
cmake,
nix-update-script,
numpy,
pillow,
}:
buildPythonPackage rec {
pname = "fast-colorthief";
version = "0.0.5";
pyproject = true;
# No tags on github
src = fetchPypi {
inherit pname version;
hash = "sha256-yUO1vnOt2NPyldPjFMn0jbhVX8zHcKsJ2IFVugYBZa4=";
};
postPatch = ''
substituteInPlace CMakeLists.txt --replace-fail \
"cmake_minimum_required(VERSION 2.8.12)" \
"cmake_minimum_required(VERSION 3.10)"
substituteInPlace pybind11/CMakeLists.txt --replace-fail \
"cmake_minimum_required(VERSION 3.4)" \
"cmake_minimum_required(VERSION 3.10)"
'';
build-system = [
setuptools
cmake
];
dependencies = [
pillow
numpy
];
# return to project root to locate pyproject.toml for build
preBuild = "cd ..";
pythonImportsCheck = [ "fast_colorthief" ];
passthru.updateScript = nix-update-script { };
meta = {
description = "Selection of most dominant colors in image using Modified Median Cut Quantization";
homepage = "https://github.com/bedapisl/fast-colorthief";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ moraxyc ];
};
}
@@ -0,0 +1,40 @@
{
lib,
buildPythonPackage,
fetchFromGitHub,
setuptools,
nix-update-script,
pillow,
}:
buildPythonPackage rec {
pname = "haishoku";
version = "1.1.8";
pyproject = true;
src = fetchFromGitHub {
owner = "LanceGin";
repo = "haishoku";
tag = "v${version}";
hash = "sha256-LSoZopCaM5vbknGS9gG13OZIgghgqJvPtktUkBCH04Q=";
};
build-system = [ setuptools ];
dependencies = [ pillow ];
# no test
doCheck = false;
pythonImportsCheck = [ "haishoku" ];
passthru.updateScript = nix-update-script { };
meta = {
description = "Development tool for grabbing the dominant color or representative color palette from an image";
homepage = "https://github.com/LanceGin/haishoku";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ moraxyc ];
};
}
@@ -18,14 +18,14 @@
buildPythonPackage rec {
pname = "lance-namespace";
version = "0.2.1";
version = "0.3.2";
pyproject = true;
src = fetchFromGitHub {
owner = "lancedb";
repo = "lance-namespace";
tag = "v${version}";
hash = "sha256-1SCsKjFd//1y28eR5MC2/M7cIMTRa083iDyuvWxLekw=";
hash = "sha256-tBInz9BEl6u7E8cAmtlHBqIG65kifPR+iv5/jNV3204=";
};
sourceRoot = "${src.name}/python/lance_namespace_urllib3_client";
@@ -201,7 +201,7 @@ class Repo:
return f"""fetchgit {{
url = "{self.uri}";
rev = "{plugin.commit}";
sha256 = "{plugin.sha256}";
hash = "{plugin.to_sri_hash()}";
}}"""
@@ -288,6 +288,14 @@ class RepoGitHub(Repo):
@retry(urllib.error.URLError, tries=4, delay=3, backoff=2)
def get_latest_tag(self) -> str | None:
try:
if not self.token or self.token == "":
log.info(
"No GitHub token available for %s/%s, using git ls-remote fallback",
self.owner,
self.repo,
)
return super().get_latest_tag()
# FIXME: This fetches all tags. We need to find a way to check if a tag exists in
# an ancestor of the default branch.
query = """
@@ -428,7 +436,7 @@ class RepoGitHub(Repo):
owner = "{self.owner}";
repo = "{self.repo}";
rev = "{plugin.commit}";
sha256 = "{plugin.sha256}";{submodule_attr}
hash = "{plugin.to_sri_hash()}";{submodule_attr}
}}"""
@@ -483,6 +491,23 @@ class Plugin:
def normalized_name(self) -> str:
return self.name.replace(".", "-")
def to_sri_hash(self) -> str:
if self.sha256.startswith("sha256-"):
return self.sha256
cmd = [
"nix",
"hash",
"convert",
"--hash-algo",
"sha256",
"--to",
"sri",
self.sha256,
]
result = subprocess.check_output(cmd, stderr=subprocess.DEVNULL)
return result.decode("utf-8").strip()
@property
def version(self) -> str:
assert self.date is not None
@@ -12,7 +12,7 @@
buildPythonPackage rec {
pname = "pyicu";
version = "2.15.2";
version = "2.15.3";
pyproject = true;
src = fetchFromGitLab {
@@ -20,7 +20,7 @@ buildPythonPackage rec {
owner = "main";
repo = "pyicu";
tag = "v${version}";
hash = "sha256-Div3c4Lk9VTV1HrmvYKDn1a7moDNjG4OHA9Kv3+niKs=";
hash = "sha256-vbrl6n7X85sQIdgj+Z0Xr6x/L8roK5Z/mNj53zyWQGs=";
};
postPatch = ''
@@ -43,6 +43,7 @@ buildPythonPackage rec {
];
pythonRelaxDeps = [
"hidapi"
"pyusb"
];
@@ -37,14 +37,14 @@
buildPythonPackage rec {
pname = "textual";
version = "6.9.0";
version = "6.10.0";
pyproject = true;
src = fetchFromGitHub {
owner = "Textualize";
repo = "textual";
tag = "v${version}";
hash = "sha256-ZuQFsxTYFjmPeSspjqElr+PNX77Gq5gC4dceKWIx0h0=";
hash = "sha256-LtOlo3Pya+JCRxHJwo6NY8dcfhJP2O5MdD2DNEETvHE=";
};
build-system = [ poetry-core ];
+1
View File
@@ -465,6 +465,7 @@ mapAliases {
cpp-ipfs-api = throw "'cpp-ipfs-api' has been renamed to/replaced by 'cpp-ipfs-http-client'"; # Converted to throw 2025-10-27
cpr = warnAlias "'cpr' has been renamed to/replaced by 'libcpr'" libcpr; # Added 2025-11-17
create-cycle-app = throw "'create-cycle-app' has been removed because it is unmaintained and has issues installing with recent nodejs versions."; # Added 2025-11-01
cringify = throw "'cringify' has been removed as it is unmaintained"; # Added 2025-12-16
crispyDoom = throw "'crispyDoom' has been renamed to/replaced by 'crispy-doom'"; # Converted to throw 2025-10-27
critcl = throw "'critcl' has been renamed to/replaced by 'tclPackages.critcl'"; # Converted to throw 2025-10-27
cromite = throw "'cromite' has been removed from nixpkgs due to it not being maintained"; # Added 2025-06-12
+1 -3
View File
@@ -13457,8 +13457,6 @@ with pkgs;
cairo = cairo.override { x11Support = true; };
};
# this is a wrapper for kicad.base and kicad.libraries
kicad = callPackage ../applications/science/electronics/kicad { };
# this is the same but without the (sizable) 3D models library
kicad-small = kicad.override {
pname = "kicad-small";
@@ -13487,7 +13485,7 @@ with pkgs;
with3d = false;
};
kicadAddons = recurseIntoAttrs (callPackage ../applications/science/electronics/kicad/addons { });
kicadAddons = recurseIntoAttrs (callPackage ../by-name/ki/kicad/addons/package.nix { });
librepcb = qt6Packages.callPackage ../applications/science/electronics/librepcb { };
+4
View File
@@ -5208,6 +5208,8 @@ self: super: with self; {
fast-array-utils = callPackage ../development/python-modules/fast-array-utils { };
fast-colorthief = callPackage ../development/python-modules/fast-colorthief { };
fast-histogram = callPackage ../development/python-modules/fast-histogram { };
fast-query-parsers = callPackage ../development/python-modules/fast-query-parsers { };
@@ -6676,6 +6678,8 @@ self: super: with self; {
hacking = callPackage ../development/python-modules/hacking { };
haishoku = callPackage ../development/python-modules/haishoku { };
hakuin = callPackage ../development/python-modules/hakuin { };
halide =