Merge 3e78aad351 into haskell-updates

This commit is contained in:
nixpkgs-ci[bot]
2025-03-31 00:20:50 +00:00
committed by GitHub
325 changed files with 5254 additions and 24383 deletions
+5
View File
@@ -107,6 +107,11 @@ trim_trailing_whitespace = unset
[pkgs/tools/misc/timidity/timidity.cfg]
trim_trailing_whitespace = unset
[pkgs/tools/security/qdigidoc/vendor/*]
end_of_line = unset
insert_final_newline = unset
trim_trailing_whitespace = unset
[pkgs/tools/virtualization/ovftool/*.ova]
end_of_line = unset
insert_final_newline = unset
+2 -2
View File
@@ -33,8 +33,8 @@ jobs:
nix_path: nixpkgs=${{ env.url }}
- name: Install keep-sorted
run: "nix-env -f '<nixpkgs>' -iAP keep-sorted"
run: "nix-env -f '<nixpkgs>' -iAP keep-sorted jq"
- name: Check that Nix files are sorted
run: |
git ls-files | xargs keep-sorted --mode lint
git ls-files | xargs keep-sorted --mode lint | jq --raw-output '.[] | "Please make sure any new entries in \(.path) are sorted alphabetically."'
+6
View File
@@ -10302,6 +10302,12 @@
githubId = 26341736;
name = "Vishal Das";
};
imsuck = {
email = "imsuck12@gmail.com";
github = "imsuck";
githubId = 49095435;
name = "imsuck";
};
imuli = {
email = "i@imu.li";
github = "imuli";
@@ -26,7 +26,7 @@
NEWS can been viewed from Emacs by typing `C-h n`, or by clicking `Help->Emacs News` from the menu bar.
It can also be browsed [online](https://git.savannah.gnu.org/cgit/emacs.git/tree/etc/NEWS?h=emacs-30).
- The default PHP version has been updated to 8.3.
- The default PHP version has been updated to 8.4.
- The default Erlang OTP version has been updated to 27.
@@ -448,6 +448,10 @@
For those unable to upgrade yet, there is a [v0 compatibility mode](https://www.openpolicyagent.org/docs/v1.0.1/v0-compatibility/)
available too.
- Wordpress with the Caddy webserver (`services.wordpress.webserver = "caddy"`) now sets up sites with Caddy's automatic HTTPS instead of HTTP-only.
Given a site example.com, http://example.com now 301 redirects to https://example.com.
To keep the old behavior for a site `example.com`, set `services.caddy.virtualHosts."example.com".hostName = "http://example.com"`.
- `vscode-utils.buildVscodeExtension` now requires pname as an argument
- The behavior of `services.hostapd.radios.<name>.networks.<name>.authentication.enableRecommendedPairwiseCiphers` was changed to not include `CCMP-256` anymore.
+1
View File
@@ -1783,6 +1783,7 @@
./tasks/filesystems.nix
./tasks/filesystems/apfs.nix
./tasks/filesystems/bcachefs.nix
./tasks/filesystems/bindfs.nix
./tasks/filesystems/btrfs.nix
./tasks/filesystems/cifs.nix
./tasks/filesystems/ecryptfs.nix
@@ -14,12 +14,12 @@
programs = {
dconf.enable = lib.mkDefault true;
xwayland.enable = lib.mkDefault enableXWayland;
xwayland.enable = lib.mkIf enableXWayland (lib.mkDefault true);
};
services.graphical-desktop.enable = true;
xdg.portal.wlr.enable = enableWlrPortal;
xdg.portal.wlr.enable = lib.mkIf enableWlrPortal true;
xdg.portal.extraPortals = lib.mkIf enableGtkPortal [
pkgs.xdg-desktop-portal-gtk
];
@@ -29,6 +29,7 @@ let
"blackbox"
"borgmatic"
"buildkite-agent"
"chrony"
"collectd"
"deluge"
"dmarc"
@@ -0,0 +1,97 @@
{
config,
lib,
pkgs,
...
}:
let
cfg = config.services.prometheus.exporters.chrony;
inherit (lib)
mkOption
types
concatStringsSep
concatMapStringsSep
;
in
{
port = 9123;
extraOpts = {
chronyServerAddress = mkOption {
type = types.str;
default = "unix:///run/chrony/chronyd.sock";
example = [ "192.82.0.1:323" ];
description = ''
ChronyServerAddress of the chrony server side command port. (Not enabled by default.)
Defaults to the local unix socket.
'';
};
user = mkOption {
type = types.str;
default = "chrony";
description = ''
User name under which the chrony exporter shall be run.
This allows the exporter to talk to chrony using a unix socket, which is owned by chrony.
The exporter startup with the default user chrony will fail without local chrony instance.
'';
};
group = mkOption {
type = types.str;
default = "chrony";
description = ''
Group under which the chrony exporter shall be run.
This allows the exporter to talk to chrony using a unix socket, which is owned by chrony group.
The service startup with the default group chrony will fail without local chrony instance.
'';
};
enabledCollectors = mkOption {
type = types.listOf types.str;
default = [
"tracking"
"sources"
"sources.with-ntpdata"
"serverstats"
"dns-lookups"
];
example = [ "dns-lookups" ];
description = ''
Collectors to enable.
Currently all collectors are enabled by default.
'';
};
disabledCollectors = mkOption {
type = types.listOf types.str;
default = [ ];
example = [ "sources.with-ntpdata" ];
description = ''
Collectors to disable which are enabled by default.
Disable sources.with-ntpdata for network scraper. Option requires unix socket.
'';
};
};
serviceOpts = {
serviceConfig = {
AmbientCapabilities = [ "CAP_NET_BIND_SERVICE" ];
CapabilityBoundingSet = [ "CAP_NET_BIND_SERVICE" ];
MemoryDenyWriteExecute = true;
NoNewPrivileges = true;
ProtectClock = true;
ProtectSystem = "strict";
Restart = "on-failure";
RestrictAddressFamilies = [
"AF_INET"
"AF_INET6"
"AF_UNIX"
];
RestrictNamespaces = true;
RestrictRealtime = true;
ExecStart = ''
${lib.getExe pkgs.prometheus-chrony-exporter} \
${concatMapStringsSep " " (x: "--collector." + x) cfg.enabledCollectors} \
${concatMapStringsSep " " (x: "--no-collector." + x) cfg.disabledCollectors} \
--chrony.address ${cfg.chronyServerAddress} \
--web.listen-address ${cfg.listenAddress}:${toString cfg.port} \
${concatStringsSep " " cfg.extraFlags}
'';
};
};
}
+1 -1
View File
@@ -158,7 +158,7 @@ in
systemd.services.selfoss-update = {
serviceConfig = {
ExecStart = "${pkgs.php}/bin/php ${dataDir}/cliupdate.php";
ExecStart = "${pkgs.php83}/bin/php ${dataDir}/cliupdate.php";
User = "${cfg.user}";
};
startAt = "hourly";
@@ -545,7 +545,7 @@ in
services.caddy = {
enable = true;
virtualHosts = mapAttrs' (hostName: cfg: (
nameValuePair "http://${hostName}" {
nameValuePair hostName {
extraConfig = ''
root * /${pkg hostName cfg}/share/wordpress
file_server
@@ -0,0 +1,15 @@
{
config,
lib,
pkgs,
...
}:
{
config = lib.mkIf (config.boot.supportedFilesystems."fuse.bindfs" or false) {
system.fsPackages = [ pkgs.bindfs ];
};
meta = {
maintainers = with lib.maintainers; [ Luflosi ];
};
}
+27 -18
View File
@@ -314,7 +314,7 @@ in {
darling = handleTest ./darling.nix {};
darling-dmg = runTest ./darling-dmg.nix;
dae = handleTest ./dae.nix {};
davis = handleTest ./davis.nix {};
davis = runTest ./davis.nix;
db-rest = handleTest ./db-rest.nix {};
dconf = handleTest ./dconf.nix {};
ddns-updater = handleTest ./ddns-updater.nix {};
@@ -578,7 +578,7 @@ in {
installer = handleTest ./installer.nix {};
installer-systemd-stage-1 = handleTest ./installer-systemd-stage-1.nix {};
intune = handleTest ./intune.nix {};
invoiceplane = handleTest ./invoiceplane.nix {};
invoiceplane = runTest ./invoiceplane.nix;
iodine = handleTest ./iodine.nix {};
ipv6 = handleTest ./ipv6.nix {};
iscsi-multipath-root = handleTest ./iscsi-multipath-root.nix {};
@@ -678,7 +678,7 @@ in {
maestral = handleTest ./maestral.nix {};
magic-wormhole-mailbox-server = handleTest ./magic-wormhole-mailbox-server.nix {};
magnetico = handleTest ./magnetico.nix {};
mailcatcher = handleTest ./mailcatcher.nix {};
mailcatcher = runTest ./mailcatcher.nix;
mailhog = handleTest ./mailhog.nix {};
mailpit = handleTest ./mailpit.nix {};
mailman = handleTest ./mailman.nix {};
@@ -802,20 +802,20 @@ in {
nginx-etag = runTest ./nginx-etag.nix;
nginx-etag-compression = runTest ./nginx-etag-compression.nix;
nginx-globalredirect = runTest ./nginx-globalredirect.nix;
nginx-http3 = handleTest ./nginx-http3.nix {};
nginx-http3 = import ./nginx-http3.nix { inherit pkgs runTest; };
nginx-mime = runTest ./nginx-mime.nix;
nginx-modsecurity = runTest ./nginx-modsecurity.nix;
nginx-moreheaders = runTest ./nginx-moreheaders.nix;
nginx-njs = handleTest ./nginx-njs.nix {};
nginx-proxyprotocol = handleTest ./nginx-proxyprotocol {};
nginx-pubhtml = handleTest ./nginx-pubhtml.nix {};
nginx-redirectcode = handleTest ./nginx-redirectcode.nix {};
nginx-sso = handleTest ./nginx-sso.nix {};
nginx-status-page = handleTest ./nginx-status-page.nix {};
nginx-tmpdir = handleTest ./nginx-tmpdir.nix {};
nginx-unix-socket = handleTest ./nginx-unix-socket.nix {};
nginx-variants = handleTest ./nginx-variants.nix {};
nifi = handleTestOn ["x86_64-linux"] ./web-apps/nifi.nix {};
nginx-proxyprotocol = runTest ./nginx-proxyprotocol/default.nix;
nginx-pubhtml = runTest ./nginx-pubhtml.nix;
nginx-redirectcode = runTest ./nginx-redirectcode.nix;
nginx-sso = runTest ./nginx-sso.nix;
nginx-status-page = runTest ./nginx-status-page.nix;
nginx-tmpdir = runTest ./nginx-tmpdir.nix;
nginx-unix-socket = runTest ./nginx-unix-socket.nix;
nginx-variants = import ./nginx-variants.nix { inherit pkgs runTest; };
nifi = runTestOn ["x86_64-linux"] ./web-apps/nifi.nix;
nitter = handleTest ./nitter.nix {};
nix-config = handleTest ./nix-config.nix {};
nix-ld = handleTest ./nix-ld.nix {};
@@ -846,7 +846,7 @@ in {
};
nixpkgs = pkgs.callPackage ../modules/misc/nixpkgs/test.nix { inherit evalMinimalConfig; };
nixseparatedebuginfod = handleTest ./nixseparatedebuginfod.nix {};
node-red = handleTest ./node-red.nix {};
node-red = runTest ./node-red.nix;
nomad = runTest ./nomad.nix;
non-default-filesystems = handleTest ./non-default-filesystems.nix {};
non-switchable-system = runTest ./non-switchable-system.nix;
@@ -1231,7 +1231,7 @@ in {
tomcat = handleTest ./tomcat.nix {};
tor = handleTest ./tor.nix {};
tpm-ek = handleTest ./tpm-ek {};
traefik = handleTestOn ["aarch64-linux" "x86_64-linux"] ./traefik.nix {};
traefik = runTestOn ["aarch64-linux" "x86_64-linux"] ./traefik.nix;
trafficserver = handleTest ./trafficserver.nix {};
transfer-sh = handleTest ./transfer-sh.nix {};
transmission_3 = handleTest ./transmission.nix { transmission = pkgs.transmission_3; };
@@ -1277,9 +1277,18 @@ in {
ustreamer = handleTest ./ustreamer.nix {};
uwsgi = handleTest ./uwsgi.nix {};
v2ray = handleTest ./v2ray.nix {};
varnish60 = handleTest ./varnish.nix { package = pkgs.varnish60; };
varnish75 = handleTest ./varnish.nix { package = pkgs.varnish75; };
varnish76 = handleTest ./varnish.nix { package = pkgs.varnish76; };
varnish60 = runTest {
imports = [ ./varnish.nix ];
_module.args.package = pkgs.varnish60;
};
varnish75 = runTest {
imports = [ ./varnish.nix ];
_module.args.package = pkgs.varnish75;
};
varnish76 = runTest {
imports = [ ./varnish.nix ];
_module.args.package = pkgs.varnish76;
};
vault = handleTest ./vault.nix {};
vault-agent = handleTest ./vault-agent.nix {};
vault-dev = handleTest ./vault-dev.nix {};
+50 -53
View File
@@ -1,59 +1,56 @@
import ./make-test-python.nix (
{ lib, pkgs, ... }:
{ pkgs, ... }:
{
name = "davis";
{
name = "davis";
meta.maintainers = pkgs.davis.meta.maintainers;
meta.maintainers = pkgs.davis.meta.maintainers;
nodes.machine =
{ config, ... }:
{
virtualisation = {
memorySize = 512;
};
services.davis = {
enable = true;
hostname = "davis.example.com";
database = {
driver = "postgresql";
};
mail = {
dsnFile = "${pkgs.writeText "davisMailDns" "smtp://username:password@example.com:25"}";
inviteFromAddress = "dav@example.com";
};
adminLogin = "admin";
appSecretFile = "${pkgs.writeText "davisAppSecret" "52882ef142066e09ab99ce816ba72522e789505caba224"}";
adminPasswordFile = "${pkgs.writeText "davisAdminPass" "nixos"}";
nginx = { };
};
nodes.machine =
{ config, ... }:
{
virtualisation = {
memorySize = 512;
};
testScript = ''
start_all()
machine.wait_for_unit("postgresql.service")
machine.wait_for_unit("davis-env-setup.service")
machine.wait_for_unit("davis-db-migrate.service")
machine.wait_for_unit("nginx.service")
machine.wait_for_unit("phpfpm-davis.service")
services.davis = {
enable = true;
hostname = "davis.example.com";
database = {
driver = "postgresql";
};
mail = {
dsnFile = "${pkgs.writeText "davisMailDns" "smtp://username:password@example.com:25"}";
inviteFromAddress = "dav@example.com";
};
adminLogin = "admin";
appSecretFile = "${pkgs.writeText "davisAppSecret" "52882ef142066e09ab99ce816ba72522e789505caba224"}";
adminPasswordFile = "${pkgs.writeText "davisAdminPass" "nixos"}";
nginx = { };
};
};
with subtest("welcome screen loads"):
machine.succeed(
"curl -sSfL --resolve davis.example.com:80:127.0.0.1 http://davis.example.com/ | grep '<title>Davis</title>'"
)
testScript = ''
start_all()
machine.wait_for_unit("postgresql.service")
machine.wait_for_unit("davis-env-setup.service")
machine.wait_for_unit("davis-db-migrate.service")
machine.wait_for_unit("nginx.service")
machine.wait_for_unit("phpfpm-davis.service")
with subtest("login works"):
csrf_token = machine.succeed(
"curl -c /tmp/cookies -sSfL --resolve davis.example.com:80:127.0.0.1 http://davis.example.com/login | grep '_csrf_token' | sed -E 's,.*value=\"(.*)\".*,\\1,g'"
)
r = machine.succeed(
f"curl -b /tmp/cookies --resolve davis.example.com:80:127.0.0.1 http://davis.example.com/login -X POST -F _username=admin -F _password=nixos -F _csrf_token={csrf_token.strip()} -D headers"
)
print(r)
machine.succeed(
"[[ $(grep -i 'location: ' headers | cut -d: -f2- | xargs echo) == /dashboard* ]]"
)
'';
}
)
with subtest("welcome screen loads"):
machine.succeed(
"curl -sSfL --resolve davis.example.com:80:127.0.0.1 http://davis.example.com/ | grep '<title>Davis</title>'"
)
with subtest("login works"):
csrf_token = machine.succeed(
"curl -c /tmp/cookies -sSfL --resolve davis.example.com:80:127.0.0.1 http://davis.example.com/login | grep '_csrf_token' | sed -E 's,.*value=\"(.*)\".*,\\1,g'"
)
r = machine.succeed(
f"curl -b /tmp/cookies --resolve davis.example.com:80:127.0.0.1 http://davis.example.com/login -X POST -F _username=admin -F _password=nixos -F _csrf_token={csrf_token.strip()} -D headers"
)
print(r)
machine.succeed(
"[[ $(grep -i 'location: ' headers | cut -d: -f2- | xargs echo) == /dashboard* ]]"
)
'';
}
+101 -103
View File
@@ -1,118 +1,116 @@
import ./make-test-python.nix (
{ pkgs, ... }:
{ pkgs, ... }:
{
name = "invoiceplane";
meta = with pkgs.lib.maintainers; {
maintainers = [
onny
];
};
{
name = "invoiceplane";
meta = with pkgs.lib.maintainers; {
maintainers = [
onny
];
};
nodes = {
invoiceplane_caddy =
{ ... }:
{
services.invoiceplane.webserver = "caddy";
services.invoiceplane.sites = {
"site1.local" = {
database.name = "invoiceplane1";
database.createLocally = true;
enable = true;
};
"site2.local" = {
database.name = "invoiceplane2";
database.createLocally = true;
enable = true;
};
nodes = {
invoiceplane_caddy =
{ ... }:
{
services.invoiceplane.webserver = "caddy";
services.invoiceplane.sites = {
"site1.local" = {
database.name = "invoiceplane1";
database.createLocally = true;
enable = true;
};
"site2.local" = {
database.name = "invoiceplane2";
database.createLocally = true;
enable = true;
};
networking.firewall.allowedTCPPorts = [ 80 ];
networking.hosts."127.0.0.1" = [
"site1.local"
"site2.local"
];
};
invoiceplane_nginx =
{ ... }:
{
services.invoiceplane.webserver = "nginx";
services.invoiceplane.sites = {
"site1.local" = {
database.name = "invoiceplane1";
database.createLocally = true;
enable = true;
};
"site2.local" = {
database.name = "invoiceplane2";
database.createLocally = true;
enable = true;
};
networking.firewall.allowedTCPPorts = [ 80 ];
networking.hosts."127.0.0.1" = [
"site1.local"
"site2.local"
];
};
invoiceplane_nginx =
{ ... }:
{
services.invoiceplane.webserver = "nginx";
services.invoiceplane.sites = {
"site1.local" = {
database.name = "invoiceplane1";
database.createLocally = true;
enable = true;
};
"site2.local" = {
database.name = "invoiceplane2";
database.createLocally = true;
enable = true;
};
networking.firewall.allowedTCPPorts = [ 80 ];
networking.hosts."127.0.0.1" = [
"site1.local"
"site2.local"
];
};
};
testScript = ''
start_all()
networking.firewall.allowedTCPPorts = [ 80 ];
networking.hosts."127.0.0.1" = [
"site1.local"
"site2.local"
];
};
};
invoiceplane_caddy.wait_for_unit("caddy")
invoiceplane_nginx.wait_for_unit("nginx")
testScript = ''
start_all()
site_names = ["site1.local", "site2.local"]
invoiceplane_caddy.wait_for_unit("caddy")
invoiceplane_nginx.wait_for_unit("nginx")
machines = [invoiceplane_caddy, invoiceplane_nginx]
site_names = ["site1.local", "site2.local"]
for machine in machines:
machine.wait_for_open_port(80)
machine.wait_for_open_port(3306)
machines = [invoiceplane_caddy, invoiceplane_nginx]
for site_name in site_names:
machine.wait_for_unit(f"phpfpm-invoiceplane-{site_name}")
for machine in machines:
machine.wait_for_open_port(80)
machine.wait_for_open_port(3306)
with subtest("Website returns welcome screen"):
assert "Please install InvoicePlane" in machine.succeed(f"curl -L {site_name}")
for site_name in site_names:
machine.wait_for_unit(f"phpfpm-invoiceplane-{site_name}")
with subtest("Finish InvoicePlane setup"):
machine.succeed(
f"curl -sSfL --cookie-jar cjar {site_name}/setup/language"
)
csrf_token = machine.succeed(
"grep ip_csrf_cookie cjar | cut -f 7 | tr -d '\n'"
)
machine.succeed(
f"curl -sSfL --cookie cjar --cookie-jar cjar -d '_ip_csrf={csrf_token}&ip_lang=english&btn_continue=Continue' {site_name}/setup/language"
)
csrf_token = machine.succeed(
"grep ip_csrf_cookie cjar | cut -f 7 | tr -d '\n'"
)
machine.succeed(
f"curl -sSfL --cookie cjar --cookie-jar cjar -d '_ip_csrf={csrf_token}&btn_continue=Continue' {site_name}/setup/prerequisites"
)
csrf_token = machine.succeed(
"grep ip_csrf_cookie cjar | cut -f 7 | tr -d '\n'"
)
machine.succeed(
f"curl -sSfL --cookie cjar --cookie-jar cjar -d '_ip_csrf={csrf_token}&btn_continue=Continue' {site_name}/setup/configure_database"
)
csrf_token = machine.succeed(
"grep ip_csrf_cookie cjar | cut -f 7 | tr -d '\n'"
)
machine.succeed(
f"curl -sSfl --cookie cjar --cookie-jar cjar -d '_ip_csrf={csrf_token}&btn_continue=Continue' {site_name}/setup/install_tables"
)
csrf_token = machine.succeed(
"grep ip_csrf_cookie cjar | cut -f 7 | tr -d '\n'"
)
machine.succeed(
f"curl -sSfl --cookie cjar --cookie-jar cjar -d '_ip_csrf={csrf_token}&btn_continue=Continue' {site_name}/setup/upgrade_tables"
)
'';
}
)
with subtest("Website returns welcome screen"):
assert "Please install InvoicePlane" in machine.succeed(f"curl -L {site_name}")
with subtest("Finish InvoicePlane setup"):
machine.succeed(
f"curl -sSfL --cookie-jar cjar {site_name}/setup/language"
)
csrf_token = machine.succeed(
"grep ip_csrf_cookie cjar | cut -f 7 | tr -d '\n'"
)
machine.succeed(
f"curl -sSfL --cookie cjar --cookie-jar cjar -d '_ip_csrf={csrf_token}&ip_lang=english&btn_continue=Continue' {site_name}/setup/language"
)
csrf_token = machine.succeed(
"grep ip_csrf_cookie cjar | cut -f 7 | tr -d '\n'"
)
machine.succeed(
f"curl -sSfL --cookie cjar --cookie-jar cjar -d '_ip_csrf={csrf_token}&btn_continue=Continue' {site_name}/setup/prerequisites"
)
csrf_token = machine.succeed(
"grep ip_csrf_cookie cjar | cut -f 7 | tr -d '\n'"
)
machine.succeed(
f"curl -sSfL --cookie cjar --cookie-jar cjar -d '_ip_csrf={csrf_token}&btn_continue=Continue' {site_name}/setup/configure_database"
)
csrf_token = machine.succeed(
"grep ip_csrf_cookie cjar | cut -f 7 | tr -d '\n'"
)
machine.succeed(
f"curl -sSfl --cookie cjar --cookie-jar cjar -d '_ip_csrf={csrf_token}&btn_continue=Continue' {site_name}/setup/install_tables"
)
csrf_token = machine.succeed(
"grep ip_csrf_cookie cjar | cut -f 7 | tr -d '\n'"
)
machine.succeed(
f"curl -sSfl --cookie cjar --cookie-jar cjar -d '_ip_csrf={csrf_token}&btn_continue=Continue' {site_name}/setup/upgrade_tables"
)
'';
}
+28 -30
View File
@@ -1,37 +1,35 @@
import ./make-test-python.nix (
{ lib, ... }:
{ lib, ... }:
{
name = "mailcatcher";
meta.maintainers = [ lib.maintainers.aanderse ];
{
name = "mailcatcher";
meta.maintainers = [ lib.maintainers.aanderse ];
nodes.machine =
{ pkgs, ... }:
{
services.mailcatcher.enable = true;
nodes.machine =
{ pkgs, ... }:
{
services.mailcatcher.enable = true;
programs.msmtp = {
enable = true;
accounts.default = {
host = "localhost";
port = 1025;
};
programs.msmtp = {
enable = true;
accounts.default = {
host = "localhost";
port = 1025;
};
environment.systemPackages = [ pkgs.mailutils ];
};
testScript = ''
start_all()
environment.systemPackages = [ pkgs.mailutils ];
};
machine.wait_for_unit("mailcatcher.service")
machine.wait_for_open_port(1025)
machine.succeed(
'echo "this is the body of the email" | mail -s "subject" root@example.org'
)
assert "this is the body of the email" in machine.succeed(
"curl -f http://localhost:1080/messages/1.source"
)
'';
}
)
testScript = ''
start_all()
machine.wait_for_unit("mailcatcher.service")
machine.wait_for_open_port(1025)
machine.succeed(
'echo "this is the body of the email" | mail -s "subject" root@example.org'
)
assert "this is the body of the email" in machine.succeed(
"curl -f http://localhost:1080/messages/1.source"
)
'';
}
+2 -10
View File
@@ -1,23 +1,15 @@
{
system ? builtins.currentSystem,
config ? { },
pkgs ? import ../.. { inherit system config; },
}:
with import ../lib/testing-python.nix { inherit system pkgs; };
{ pkgs, runTest, ... }:
let
hosts = ''
192.168.2.101 acme.test
'';
in
builtins.listToAttrs (
builtins.map
(nginxPackage: {
name = pkgs.lib.getName nginxPackage;
value = makeTest {
value = runTest {
name = "nginx-http3-${pkgs.lib.getName nginxPackage}";
meta.maintainers = with pkgs.lib.maintainers; [ izorkin ];
+145 -147
View File
@@ -1,164 +1,162 @@
let
certs = import ./snakeoil-certs.nix;
in
import ../make-test-python.nix (
{ pkgs, ... }:
{
name = "nginx-proxyprotocol";
{ pkgs, ... }:
{
name = "nginx-proxyprotocol";
meta = {
maintainers = with pkgs.lib.maintainers; [ raitobezarius ];
};
meta = {
maintainers = with pkgs.lib.maintainers; [ raitobezarius ];
};
nodes = {
webserver =
{ pkgs, lib, ... }:
{
environment.systemPackages = [ pkgs.netcat ];
security.pki.certificateFiles = [
certs.ca.cert
nodes = {
webserver =
{ pkgs, lib, ... }:
{
environment.systemPackages = [ pkgs.netcat ];
security.pki.certificateFiles = [
certs.ca.cert
];
networking.extraHosts = ''
127.0.0.5 proxy.test.nix
127.0.0.5 noproxy.test.nix
127.0.0.3 direct-nossl.test.nix
127.0.0.4 unsecure-nossl.test.nix
127.0.0.2 direct-noproxy.test.nix
127.0.0.1 direct-proxy.test.nix
'';
services.nginx = {
enable = true;
defaultListen = [
{
addr = "127.0.0.1";
proxyProtocol = true;
ssl = true;
}
{ addr = "127.0.0.2"; }
{
addr = "127.0.0.3";
ssl = false;
}
{
addr = "127.0.0.4";
ssl = false;
proxyProtocol = true;
}
];
networking.extraHosts = ''
127.0.0.5 proxy.test.nix
127.0.0.5 noproxy.test.nix
127.0.0.3 direct-nossl.test.nix
127.0.0.4 unsecure-nossl.test.nix
127.0.0.2 direct-noproxy.test.nix
127.0.0.1 direct-proxy.test.nix
commonHttpConfig = ''
log_format pcombined '(proxy_protocol=$proxy_protocol_addr) - (remote_addr=$remote_addr) - (realip=$realip_remote_addr) - (upstream=) - (remote_user=$remote_user) [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent"';
access_log /var/log/nginx/access.log pcombined;
error_log /var/log/nginx/error.log;
'';
services.nginx = {
enable = true;
defaultListen = [
{
addr = "127.0.0.1";
proxyProtocol = true;
ssl = true;
}
{ addr = "127.0.0.2"; }
{
addr = "127.0.0.3";
ssl = false;
}
{
addr = "127.0.0.4";
ssl = false;
proxyProtocol = true;
}
];
commonHttpConfig = ''
log_format pcombined '(proxy_protocol=$proxy_protocol_addr) - (remote_addr=$remote_addr) - (realip=$realip_remote_addr) - (upstream=) - (remote_user=$remote_user) [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent"';
access_log /var/log/nginx/access.log pcombined;
error_log /var/log/nginx/error.log;
'';
virtualHosts =
let
commonConfig = {
locations."/".return = "200 '$remote_addr'";
extraConfig = ''
set_real_ip_from 127.0.0.5/32;
real_ip_header proxy_protocol;
'';
};
in
{
"*.test.nix" = commonConfig // {
sslCertificate = certs."*.test.nix".cert;
sslCertificateKey = certs."*.test.nix".key;
forceSSL = true;
};
"direct-nossl.test.nix" = commonConfig;
"unsecure-nossl.test.nix" = commonConfig // {
extraConfig = ''
real_ip_header proxy_protocol;
'';
};
virtualHosts =
let
commonConfig = {
locations."/".return = "200 '$remote_addr'";
extraConfig = ''
set_real_ip_from 127.0.0.5/32;
real_ip_header proxy_protocol;
'';
};
};
services.sniproxy = {
enable = true;
config = ''
error_log {
syslog daemon
}
access_log {
syslog daemon
}
listener 127.0.0.5:443 {
protocol tls
source 127.0.0.5
}
table {
^proxy\.test\.nix$ 127.0.0.1 proxy_protocol
^noproxy\.test\.nix$ 127.0.0.2
}
'';
};
in
{
"*.test.nix" = commonConfig // {
sslCertificate = certs."*.test.nix".cert;
sslCertificateKey = certs."*.test.nix".key;
forceSSL = true;
};
"direct-nossl.test.nix" = commonConfig;
"unsecure-nossl.test.nix" = commonConfig // {
extraConfig = ''
real_ip_header proxy_protocol;
'';
};
};
};
};
testScript = ''
def check_origin_ip(src_ip: str, dst_url: str, failure: bool = False, proxy_protocol: bool = False, expected_ip: str | None = None):
check = webserver.fail if failure else webserver.succeed
if expected_ip is None:
expected_ip = src_ip
services.sniproxy = {
enable = true;
config = ''
error_log {
syslog daemon
}
access_log {
syslog daemon
}
listener 127.0.0.5:443 {
protocol tls
source 127.0.0.5
}
table {
^proxy\.test\.nix$ 127.0.0.1 proxy_protocol
^noproxy\.test\.nix$ 127.0.0.2
}
'';
};
};
};
return check(f"curl {'--haproxy-protocol' if proxy_protocol else '''} --interface {src_ip} --fail -L {dst_url} | grep '{expected_ip}'")
testScript = ''
def check_origin_ip(src_ip: str, dst_url: str, failure: bool = False, proxy_protocol: bool = False, expected_ip: str | None = None):
check = webserver.fail if failure else webserver.succeed
if expected_ip is None:
expected_ip = src_ip
webserver.wait_for_unit("nginx")
webserver.wait_for_unit("sniproxy")
# This should be closed by virtue of ssl = true;
webserver.wait_for_closed_port(80, "127.0.0.1")
# This should be open by virtue of no explicit ssl
webserver.wait_for_open_port(80, "127.0.0.2")
# This should be open by virtue of ssl = true;
webserver.wait_for_open_port(443, "127.0.0.1")
# This should be open by virtue of no explicit ssl
webserver.wait_for_open_port(443, "127.0.0.2")
# This should be open by sniproxy
webserver.wait_for_open_port(443, "127.0.0.5")
# This should be closed by sniproxy
webserver.wait_for_closed_port(80, "127.0.0.5")
return check(f"curl {'--haproxy-protocol' if proxy_protocol else '''} --interface {src_ip} --fail -L {dst_url} | grep '{expected_ip}'")
# Sanity checks for the NGINX module
# direct-HTTP connection to NGINX without TLS, this checks that ssl = false; works well.
check_origin_ip("127.0.0.10", "http://direct-nossl.test.nix/")
# webserver.execute("openssl s_client -showcerts -connect direct-noproxy.test.nix:443")
# direct-HTTP connection to NGINX with TLS
check_origin_ip("127.0.0.10", "http://direct-noproxy.test.nix/")
check_origin_ip("127.0.0.10", "https://direct-noproxy.test.nix/")
# Well, sniproxy is not listening on 80 and cannot redirect
check_origin_ip("127.0.0.10", "http://proxy.test.nix/", failure=True)
check_origin_ip("127.0.0.10", "http://noproxy.test.nix/", failure=True)
webserver.wait_for_unit("nginx")
webserver.wait_for_unit("sniproxy")
# This should be closed by virtue of ssl = true;
webserver.wait_for_closed_port(80, "127.0.0.1")
# This should be open by virtue of no explicit ssl
webserver.wait_for_open_port(80, "127.0.0.2")
# This should be open by virtue of ssl = true;
webserver.wait_for_open_port(443, "127.0.0.1")
# This should be open by virtue of no explicit ssl
webserver.wait_for_open_port(443, "127.0.0.2")
# This should be open by sniproxy
webserver.wait_for_open_port(443, "127.0.0.5")
# This should be closed by sniproxy
webserver.wait_for_closed_port(80, "127.0.0.5")
# Actual PROXY protocol related tests
# Connecting through sniproxy should passthrough the originating IP address.
check_origin_ip("127.0.0.10", "https://proxy.test.nix/")
# Connecting through sniproxy to a non-PROXY protocol enabled listener should not pass the originating IP address.
check_origin_ip("127.0.0.10", "https://noproxy.test.nix/", expected_ip="127.0.0.5")
# Sanity checks for the NGINX module
# direct-HTTP connection to NGINX without TLS, this checks that ssl = false; works well.
check_origin_ip("127.0.0.10", "http://direct-nossl.test.nix/")
# webserver.execute("openssl s_client -showcerts -connect direct-noproxy.test.nix:443")
# direct-HTTP connection to NGINX with TLS
check_origin_ip("127.0.0.10", "http://direct-noproxy.test.nix/")
check_origin_ip("127.0.0.10", "https://direct-noproxy.test.nix/")
# Well, sniproxy is not listening on 80 and cannot redirect
check_origin_ip("127.0.0.10", "http://proxy.test.nix/", failure=True)
check_origin_ip("127.0.0.10", "http://noproxy.test.nix/", failure=True)
# Attack tests against spoofing
# Let's try to spoof our IP address by connecting direct-y to the PROXY protocol listener.
# FIXME(RaitoBezarius): rewrite it using Python + (Scapy|something else) as this is too much broken unfortunately.
# Or wait for upstream curl patch.
# def generate_attacker_request(original_ip: str, target_ip: str, dst_url: str):
# return f"""PROXY TCP4 {original_ip} {target_ip} 80 80
# GET / HTTP/1.1
# Host: {dst_url}
# Actual PROXY protocol related tests
# Connecting through sniproxy should passthrough the originating IP address.
check_origin_ip("127.0.0.10", "https://proxy.test.nix/")
# Connecting through sniproxy to a non-PROXY protocol enabled listener should not pass the originating IP address.
check_origin_ip("127.0.0.10", "https://noproxy.test.nix/", expected_ip="127.0.0.5")
# """
# def spoof(original_ip: str, target_ip: str, dst_url: str, tls: bool = False, expect_failure: bool = True):
# method = webserver.fail if expect_failure else webserver.succeed
# port = 443 if tls else 80
# print(webserver.execute(f"cat <<EOF | nc {target_ip} {port}\n{generate_attacker_request(original_ip, target_ip, dst_url)}\nEOF"))
# return method(f"cat <<EOF | nc {target_ip} {port} | grep {original_ip}\n{generate_attacker_request(original_ip, target_ip, dst_url)}\nEOF")
# Attack tests against spoofing
# Let's try to spoof our IP address by connecting direct-y to the PROXY protocol listener.
# FIXME(RaitoBezarius): rewrite it using Python + (Scapy|something else) as this is too much broken unfortunately.
# Or wait for upstream curl patch.
# def generate_attacker_request(original_ip: str, target_ip: str, dst_url: str):
# return f"""PROXY TCP4 {original_ip} {target_ip} 80 80
# GET / HTTP/1.1
# Host: {dst_url}
# check_origin_ip("127.0.0.10", "http://unsecure-nossl.test.nix", proxy_protocol=True)
# spoof("1.1.1.1", "127.0.0.4", "direct-nossl.test.nix")
# spoof("1.1.1.1", "127.0.0.4", "unsecure-nossl.test.nix", expect_failure=False)
'';
}
)
# """
# def spoof(original_ip: str, target_ip: str, dst_url: str, tls: bool = False, expect_failure: bool = True):
# method = webserver.fail if expect_failure else webserver.succeed
# port = 443 if tls else 80
# print(webserver.execute(f"cat <<EOF | nc {target_ip} {port}\n{generate_attacker_request(original_ip, target_ip, dst_url)}\nEOF"))
# return method(f"cat <<EOF | nc {target_ip} {port} | grep {original_ip}\n{generate_attacker_request(original_ip, target_ip, dst_url)}\nEOF")
# check_origin_ip("127.0.0.10", "http://unsecure-nossl.test.nix", proxy_protocol=True)
# spoof("1.1.1.1", "127.0.0.4", "direct-nossl.test.nix")
# spoof("1.1.1.1", "127.0.0.4", "unsecure-nossl.test.nix", expect_failure=False)
'';
}
+2 -1
View File
@@ -1,4 +1,5 @@
import ./make-test-python.nix {
{ ... }:
{
name = "nginx-pubhtml";
nodes.machine =
+23 -25
View File
@@ -1,30 +1,28 @@
import ./make-test-python.nix (
{ pkgs, lib, ... }:
{
name = "nginx-redirectcode";
meta.maintainers = with lib.maintainers; [ misterio77 ];
{ lib, ... }:
{
name = "nginx-redirectcode";
meta.maintainers = with lib.maintainers; [ misterio77 ];
nodes = {
webserver =
{ pkgs, lib, ... }:
{
services.nginx = {
enable = true;
virtualHosts.localhost = {
globalRedirect = "example.com/foo";
# With 308 (and 307), the method and body are to be kept when following it
redirectCode = 308;
};
nodes = {
webserver =
{ pkgs, lib, ... }:
{
services.nginx = {
enable = true;
virtualHosts.localhost = {
globalRedirect = "example.com/foo";
# With 308 (and 307), the method and body are to be kept when following it
redirectCode = 308;
};
};
};
};
};
testScript = ''
webserver.wait_for_unit("nginx")
webserver.wait_for_open_port(80)
testScript = ''
webserver.wait_for_unit("nginx")
webserver.wait_for_open_port(80)
# Check the status code
webserver.succeed("curl -si http://localhost | grep '^HTTP/[0-9.]\+ 308 Permanent Redirect'")
'';
}
)
# Check the status code
webserver.succeed("curl -si http://localhost | grep '^HTTP/[0-9.]\+ 308 Permanent Redirect'")
'';
}
+13 -4
View File
@@ -1,4 +1,5 @@
import ./make-test-python.nix ({ pkgs, ... }: {
{ pkgs, ... }:
{
name = "nginx-sso";
meta = {
maintainers = with pkgs.lib.maintainers; [ ambroisie ];
@@ -8,7 +9,10 @@ import ./make-test-python.nix ({ pkgs, ... }: {
services.nginx.sso = {
enable = true;
configuration = {
listen = { addr = "127.0.0.1"; port = 8080; };
listen = {
addr = "127.0.0.1";
port = 8080;
};
providers.token.tokens = {
myuser = {
@@ -19,7 +23,12 @@ import ./make-test-python.nix ({ pkgs, ... }: {
acl = {
rule_sets = [
{
rules = [ { field = "x-application"; equals = "MyApp"; } ];
rules = [
{
field = "x-application";
equals = "MyApp";
}
];
allow = [ "myuser" ];
}
];
@@ -47,4 +56,4 @@ import ./make-test-python.nix ({ pkgs, ... }: {
"curl -sSf -H 'Authorization: Token MyToken' -H 'X-Application: MyApp' http://localhost:8080/auth"
)
'';
})
}
+67 -69
View File
@@ -1,81 +1,79 @@
import ./make-test-python.nix (
{ pkgs, ... }:
{
name = "nginx-status-page";
meta = with pkgs.lib.maintainers; {
maintainers = [ h7x4 ];
};
{ pkgs, ... }:
{
name = "nginx-status-page";
meta = with pkgs.lib.maintainers; {
maintainers = [ h7x4 ];
};
nodes = {
webserver =
{ ... }:
{
virtualisation.vlans = [ 1 ];
nodes = {
webserver =
{ ... }:
{
virtualisation.vlans = [ 1 ];
networking = {
useNetworkd = true;
useDHCP = false;
firewall.enable = false;
};
systemd.network.networks."01-eth1" = {
name = "eth1";
networkConfig.Address = "10.0.0.1/24";
};
services.nginx = {
enable = true;
statusPage = true;
virtualHosts."localhost".locations."/index.html".return = "200 'hello world\n'";
};
environment.systemPackages = with pkgs; [ curl ];
networking = {
useNetworkd = true;
useDHCP = false;
firewall.enable = false;
};
client =
{ ... }:
{
virtualisation.vlans = [ 1 ];
networking = {
useNetworkd = true;
useDHCP = false;
firewall.enable = false;
};
systemd.network.networks."01-eth1" = {
name = "eth1";
networkConfig.Address = "10.0.0.2/24";
};
environment.systemPackages = with pkgs; [ curl ];
systemd.network.networks."01-eth1" = {
name = "eth1";
networkConfig.Address = "10.0.0.1/24";
};
};
testScript =
{ nodes, ... }:
''
start_all()
services.nginx = {
enable = true;
statusPage = true;
virtualHosts."localhost".locations."/index.html".return = "200 'hello world\n'";
};
webserver.wait_for_unit("nginx")
webserver.wait_for_open_port(80)
environment.systemPackages = with pkgs; [ curl ];
};
def expect_http_code(node, code, url):
http_code = node.succeed(f"curl -w '%{{http_code}}' '{url}'")
assert http_code.split("\n")[-1].strip() == code, \
f"expected {code} but got following response:\n{http_code}"
client =
{ ... }:
{
virtualisation.vlans = [ 1 ];
with subtest("localhost can access status page"):
expect_http_code(webserver, "200", "http://localhost/nginx_status")
networking = {
useNetworkd = true;
useDHCP = false;
firewall.enable = false;
};
with subtest("localhost can access other page"):
expect_http_code(webserver, "200", "http://localhost/index.html")
systemd.network.networks."01-eth1" = {
name = "eth1";
networkConfig.Address = "10.0.0.2/24";
};
with subtest("client can not access status page"):
expect_http_code(client, "403", "http://10.0.0.1/nginx_status")
environment.systemPackages = with pkgs; [ curl ];
};
};
with subtest("client can access other page"):
expect_http_code(client, "200", "http://10.0.0.1/index.html")
'';
}
)
testScript =
{ nodes, ... }:
''
start_all()
webserver.wait_for_unit("nginx")
webserver.wait_for_open_port(80)
def expect_http_code(node, code, url):
http_code = node.succeed(f"curl -w '%{{http_code}}' '{url}'")
assert http_code.split("\n")[-1].strip() == code, \
f"expected {code} but got following response:\n{http_code}"
with subtest("localhost can access status page"):
expect_http_code(webserver, "200", "http://localhost/nginx_status")
with subtest("localhost can access other page"):
expect_http_code(webserver, "200", "http://localhost/index.html")
with subtest("client can not access status page"):
expect_http_code(client, "403", "http://10.0.0.1/nginx_status")
with subtest("client can access other page"):
expect_http_code(client, "200", "http://10.0.0.1/index.html")
'';
}
+2 -1
View File
@@ -1,7 +1,8 @@
let
dst-dir = "/run/nginx-test-tmpdir-uploads";
in
import ./make-test-python.nix {
{ ... }:
{
name = "nginx-tmpdir";
nodes.machine =
+24 -26
View File
@@ -1,31 +1,29 @@
import ./make-test-python.nix (
{ pkgs, ... }:
let
nginxSocketPath = "/var/run/nginx/test.sock";
in
{
name = "nginx-unix-socket";
{ ... }:
let
nginxSocketPath = "/var/run/nginx/test.sock";
in
{
name = "nginx-unix-socket";
nodes = {
webserver =
{ pkgs, lib, ... }:
{
services.nginx = {
enable = true;
virtualHosts.localhost = {
serverName = "localhost";
listen = [ { addr = "unix:${nginxSocketPath}"; } ];
locations."/test".return = "200 'foo'";
};
nodes = {
webserver =
{ pkgs, lib, ... }:
{
services.nginx = {
enable = true;
virtualHosts.localhost = {
serverName = "localhost";
listen = [ { addr = "unix:${nginxSocketPath}"; } ];
locations."/test".return = "200 'foo'";
};
};
};
};
};
testScript = ''
webserver.wait_for_unit("nginx")
webserver.wait_for_open_unix_socket("${nginxSocketPath}")
testScript = ''
webserver.wait_for_unit("nginx")
webserver.wait_for_open_unix_socket("${nginxSocketPath}")
webserver.succeed("curl --fail --silent --unix-socket '${nginxSocketPath}' http://localhost/test | grep '^foo$'")
'';
}
)
webserver.succeed("curl --fail --silent --unix-socket '${nginxSocketPath}' http://localhost/test | grep '^foo$'")
'';
}
+2 -9
View File
@@ -1,16 +1,9 @@
{
system ? builtins.currentSystem,
config ? { },
pkgs ? import ../.. { inherit system config; },
}:
with import ../lib/testing-python.nix { inherit system pkgs; };
{ pkgs, runTest, ... }:
builtins.listToAttrs (
builtins.map
(nginxPackage: {
name = pkgs.lib.getName nginxPackage;
value = makeTest {
value = runTest {
name = "nginx-variant-${pkgs.lib.getName nginxPackage}";
nodes.machine =
+31 -33
View File
@@ -1,38 +1,36 @@
import ./make-test-python.nix (
{ pkgs, ... }:
{
name = "nodered";
meta = with pkgs.lib.maintainers; {
maintainers = [ matthewcroughan ];
};
{ pkgs, ... }:
{
name = "nodered";
meta = with pkgs.lib.maintainers; {
maintainers = [ matthewcroughan ];
};
nodes = {
client =
{ config, pkgs, ... }:
{
environment.systemPackages = [ pkgs.curl ];
nodes = {
client =
{ config, pkgs, ... }:
{
environment.systemPackages = [ pkgs.curl ];
};
nodered =
{ config, pkgs, ... }:
{
services.node-red = {
enable = true;
openFirewall = true;
};
nodered =
{ config, pkgs, ... }:
{
services.node-red = {
enable = true;
openFirewall = true;
};
};
};
};
};
testScript = ''
start_all()
nodered.wait_for_unit("node-red.service")
nodered.wait_for_open_port(1880)
testScript = ''
start_all()
nodered.wait_for_unit("node-red.service")
nodered.wait_for_open_port(1880)
client.wait_for_unit("multi-user.target")
client.wait_for_unit("multi-user.target")
with subtest("Check that the Node-RED webserver can be reached."):
assert "<title>Node-RED</title>" in client.succeed(
"curl -sSf http:/nodered:1880/ | grep title"
)
'';
}
)
with subtest("Check that the Node-RED webserver can be reached."):
assert "<title>Node-RED</title>" in client.succeed(
"curl -sSf http:/nodered:1880/ | grep title"
)
'';
}
+1 -1
View File
@@ -149,7 +149,7 @@ import ./make-test-python.nix (
'';
in
{
name = "syncthing-init";
name = "syncthing-many-devices";
meta.maintainers = with lib.maintainers; [ doronbehar ];
nodes.machine = {
+95 -97
View File
@@ -1,109 +1,107 @@
# Test Traefik as a reverse proxy of a local web service
# and a Docker container.
import ./make-test-python.nix (
{ pkgs, ... }:
{
name = "traefik";
meta = with pkgs.lib.maintainers; {
maintainers = [ joko ];
};
{ pkgs, ... }:
{
name = "traefik";
meta = with pkgs.lib.maintainers; {
maintainers = [ joko ];
};
nodes = {
client =
{ config, pkgs, ... }:
{
environment.systemPackages = [ pkgs.curl ];
};
traefik =
{ config, pkgs, ... }:
{
virtualisation.oci-containers = {
backend = "docker";
containers.nginx = {
extraOptions = [
"-l"
"traefik.enable=true"
"-l"
"traefik.http.routers.nginx.entrypoints=web"
"-l"
"traefik.http.routers.nginx.rule=Host(`nginx.traefik.test`)"
];
image = "nginx-container";
imageStream = pkgs.dockerTools.examples.nginxStream;
};
};
networking.firewall.allowedTCPPorts = [ 80 ];
services.traefik = {
enable = true;
dynamicConfigOptions = {
http.routers.simplehttp = {
rule = "Host(`simplehttp.traefik.test`)";
entryPoints = [ "web" ];
service = "simplehttp";
};
http.services.simplehttp = {
loadBalancer.servers = [
{
url = "http://127.0.0.1:8000";
}
];
};
};
staticConfigOptions = {
global = {
checkNewVersion = false;
sendAnonymousUsage = false;
};
entryPoints.web.address = ":\${HTTP_PORT}";
providers.docker.exposedByDefault = false;
};
environmentFiles = [
(pkgs.writeText "traefik.env" ''
HTTP_PORT=80
'')
nodes = {
client =
{ config, pkgs, ... }:
{
environment.systemPackages = [ pkgs.curl ];
};
traefik =
{ config, pkgs, ... }:
{
virtualisation.oci-containers = {
backend = "docker";
containers.nginx = {
extraOptions = [
"-l"
"traefik.enable=true"
"-l"
"traefik.http.routers.nginx.entrypoints=web"
"-l"
"traefik.http.routers.nginx.rule=Host(`nginx.traefik.test`)"
];
image = "nginx-container";
imageStream = pkgs.dockerTools.examples.nginxStream;
};
systemd.services.simplehttp = {
script = "${pkgs.python3}/bin/python -m http.server 8000";
serviceConfig.Type = "simple";
wantedBy = [ "multi-user.target" ];
};
users.users.traefik.extraGroups = [ "docker" ];
};
};
testScript = ''
start_all()
networking.firewall.allowedTCPPorts = [ 80 ];
traefik.wait_for_unit("docker-nginx.service")
traefik.wait_until_succeeds("docker ps | grep nginx-container")
traefik.wait_for_unit("simplehttp.service")
traefik.wait_for_unit("traefik.service")
traefik.wait_for_open_port(80)
traefik.wait_for_unit("multi-user.target")
services.traefik = {
enable = true;
client.wait_for_unit("multi-user.target")
dynamicConfigOptions = {
http.routers.simplehttp = {
rule = "Host(`simplehttp.traefik.test`)";
entryPoints = [ "web" ];
service = "simplehttp";
};
client.wait_until_succeeds("curl -sSf -H Host:nginx.traefik.test http://traefik/")
http.services.simplehttp = {
loadBalancer.servers = [
{
url = "http://127.0.0.1:8000";
}
];
};
};
with subtest("Check that a container can be reached via Traefik"):
assert "Hello from NGINX" in client.succeed(
"curl -sSf -H Host:nginx.traefik.test http://traefik/"
)
staticConfigOptions = {
global = {
checkNewVersion = false;
sendAnonymousUsage = false;
};
with subtest("Check that dynamic configuration works"):
assert "Directory listing for " in client.succeed(
"curl -sSf -H Host:simplehttp.traefik.test http://traefik/"
)
'';
}
)
entryPoints.web.address = ":\${HTTP_PORT}";
providers.docker.exposedByDefault = false;
};
environmentFiles = [
(pkgs.writeText "traefik.env" ''
HTTP_PORT=80
'')
];
};
systemd.services.simplehttp = {
script = "${pkgs.python3}/bin/python -m http.server 8000";
serviceConfig.Type = "simple";
wantedBy = [ "multi-user.target" ];
};
users.users.traefik.extraGroups = [ "docker" ];
};
};
testScript = ''
start_all()
traefik.wait_for_unit("docker-nginx.service")
traefik.wait_until_succeeds("docker ps | grep nginx-container")
traefik.wait_for_unit("simplehttp.service")
traefik.wait_for_unit("traefik.service")
traefik.wait_for_open_port(80)
traefik.wait_for_unit("multi-user.target")
client.wait_for_unit("multi-user.target")
client.wait_until_succeeds("curl -sSf -H Host:nginx.traefik.test http://traefik/")
with subtest("Check that a container can be reached via Traefik"):
assert "Hello from NGINX" in client.succeed(
"curl -sSf -H Host:nginx.traefik.test http://traefik/"
)
with subtest("Check that dynamic configuration works"):
assert "Directory listing for " in client.succeed(
"curl -sSf -H Host:simplehttp.traefik.test http://traefik/"
)
'';
}
+51 -58
View File
@@ -1,67 +1,60 @@
{ pkgs, package, ... }:
let
testPath = pkgs.hello;
in
{
system ? builtins.currentSystem,
pkgs ? import ../.. { inherit system; },
package,
}:
import ./make-test-python.nix (
{ pkgs, lib, ... }:
let
testPath = pkgs.hello;
in
{
name = "varnish";
meta = {
maintainers = [ ];
};
name = "varnish";
meta = {
maintainers = [ ];
};
nodes = {
varnish =
{ config, pkgs, ... }:
{
services.nix-serve = {
enable = true;
};
services.varnish = {
inherit package;
enable = true;
http_address = "0.0.0.0:80";
config = ''
vcl 4.0;
backend nix-serve {
.host = "127.0.0.1";
.port = "${toString config.services.nix-serve.port}";
}
'';
};
networking.firewall.allowedTCPPorts = [ 80 ];
system.extraDependencies = [ testPath ];
nodes = {
varnish =
{ config, pkgs, ... }:
{
services.nix-serve = {
enable = true;
};
client =
{ lib, ... }:
{
nix.settings = {
require-sigs = false;
substituters = lib.mkForce [ "http://varnish" ];
};
services.varnish = {
inherit package;
enable = true;
http_address = "0.0.0.0:80";
config = ''
vcl 4.0;
backend nix-serve {
.host = "127.0.0.1";
.port = "${toString config.services.nix-serve.port}";
}
'';
};
};
testScript = ''
start_all()
varnish.wait_for_open_port(80)
networking.firewall.allowedTCPPorts = [ 80 ];
system.extraDependencies = [ testPath ];
};
client.wait_until_succeeds("curl -f http://varnish/nix-cache-info");
client =
{ lib, ... }:
{
nix.settings = {
require-sigs = false;
substituters = lib.mkForce [ "http://varnish" ];
};
};
};
client.wait_until_succeeds("nix-store -r ${testPath}")
client.succeed("${testPath}/bin/hello")
testScript = ''
start_all()
varnish.wait_for_open_port(80)
output = varnish.succeed("varnishadm status")
print(output)
assert "Child in state running" in output, "Unexpected varnishadm response"
'';
}
)
client.wait_until_succeeds("curl -f http://varnish/nix-cache-info");
client.wait_until_succeeds("nix-store -r ${testPath}")
client.succeed("${testPath}/bin/hello")
output = varnish.succeed("varnishadm status")
print(output)
assert "Child in state running" in output, "Unexpected varnishadm response"
'';
}
+26 -28
View File
@@ -1,34 +1,32 @@
import ../make-test-python.nix (
{ pkgs, ... }:
{
name = "nifi";
meta.maintainers = with pkgs.lib.maintainers; [ izorkin ];
{ pkgs, ... }:
{
name = "nifi";
meta.maintainers = with pkgs.lib.maintainers; [ izorkin ];
nodes = {
nifi =
{ pkgs, ... }:
{
virtualisation = {
memorySize = 2048;
diskSize = 4096;
};
services.nifi = {
enable = true;
enableHTTPS = false;
};
nodes = {
nifi =
{ pkgs, ... }:
{
virtualisation = {
memorySize = 2048;
diskSize = 4096;
};
};
services.nifi = {
enable = true;
enableHTTPS = false;
};
};
};
testScript = ''
nifi.start()
testScript = ''
nifi.start()
nifi.wait_for_unit("nifi.service")
nifi.wait_for_open_port(8080)
nifi.wait_for_unit("nifi.service")
nifi.wait_for_open_port(8080)
# Check if NiFi is running
nifi.succeed("curl --fail http://127.0.0.1:8080/nifi/login 2> /dev/null | grep 'NiFi Login'")
# Check if NiFi is running
nifi.succeed("curl --fail http://127.0.0.1:8080/nifi/login 2> /dev/null | grep 'NiFi Login'")
nifi.shutdown()
'';
}
)
nifi.shutdown()
'';
}
+2 -2
View File
@@ -75,7 +75,7 @@ rec {
};
};
networking.firewall.allowedTCPPorts = [ 80 ];
networking.firewall.allowedTCPPorts = [ 80 443 ];
networking.hosts."127.0.0.1" = [
"site1.local"
"site2.local"
@@ -106,7 +106,7 @@ rec {
machine.wait_for_unit(f"phpfpm-wordpress-{site_name}")
with subtest("website returns welcome screen"):
assert "Welcome to the famous" in machine.succeed(f"curl -L {site_name}")
assert "Welcome to the famous" in machine.succeed(f"curl -k -L {site_name}")
with subtest("wordpress-init went through"):
info = machine.get_unit_info(f"wordpress-init-{site_name}")
@@ -49,13 +49,13 @@ let
in
stdenv.mkDerivation (finalAttrs: {
pname = "clementine";
version = "1.4.1-36-geea564c94";
version = "1.4.1-37-g3369f3085";
src = fetchFromGitHub {
owner = "clementine-player";
repo = "Clementine";
tag = finalAttrs.version;
hash = "sha256-suxYhKE8VZtEtzjzG4HgbZ4KSwYjGKMoCtXNPUFcLgk=";
hash = "sha256-zwt4PkCXVYJn8IsZL0JEJLX1LiAvDrNdhh0s2oDxGgY=";
};
nativeBuildInputs = [
@@ -1,6 +1,16 @@
(require 'package)
(package-initialize)
;; TODO remove this patch when Emacs bug#77143 is fixed
;; see that bug for more info
(defun package--description-file (dir)
"Return package description file name for package DIR."
(concat (let ((subdir (file-name-nondirectory
(directory-file-name dir))))
(if (string-match "\\([^.].*?\\)-\\([0-9]+\\(?:[.][0-9]+\\|\\(?:pre\\|beta\\|alpha\\|snapshot\\)[0-9]+\\)*\\)\\'" subdir)
(match-string 1 subdir) subdir))
"-pkg.el"))
(defun elpa2nix-install-package ()
(if (not noninteractive)
(error "`elpa2nix-install-package' is to be used only with -batch"))
@@ -24,11 +24,14 @@ let
src = fetchFromGitHub {
owner = "melpa";
repo = "package-build";
rev = "d5661f1f1996a893fbcbacb4d290c57acab4fb0e";
hash = "sha256-zVhFR2kLLkCKC+esPBbIk3qOa033YND1HF9GiNI4JM8=";
rev = "d1722503145facf96631ac118ec0213a73082b76";
hash = "sha256-utsZLm9IF9UkTwxFWvJmwA3Ox4tlMeNNTo+f/CqYJGA=";
};
patches = [ ./package-build-dont-use-mtime.patch ];
prePatch = ''
substituteInPlace package-build.el \
--replace-fail '(format "--mtime=@%d" time)' '"--mtime=@0"'
'';
dontConfigure = true;
dontBuild = true;
@@ -12,11 +12,9 @@
(let* ((default-directory (package-recipe--working-tree rcp)))
(unwind-protect
(let ((files (package-build-expand-files-spec rcp t)))
(unless files
(error "Unable to find files matching recipe patterns"))
(if (> (length files) 1)
(package-build--build-multi-file-package rcp files)
(package-build--build-single-file-package rcp files))))))
(if files
(funcall package-build-build-function rcp files)
(error "Unable to find files matching recipe patterns"))))))
(defun melpa2nix-build-package ()
(unless noninteractive
@@ -1,21 +0,0 @@
diff --git a/package-build.el b/package-build.el
index 29cdb61..c19be1b 100644
--- a/package-build.el
+++ b/package-build.el
@@ -923,7 +923,6 @@ DIRECTORY is a temporary directory that contains the directory
that is put in the tarball."
(let* ((name (oref rcp name))
(version (oref rcp version))
- (time (oref rcp time))
(tar (expand-file-name (concat name "-" version ".tar")
package-build-archive-dir))
(dir (concat name "-" version)))
@@ -939,7 +938,7 @@ that is put in the tarball."
;; prevent a reproducible tarball as described at
;; https://reproducible-builds.org/docs/archives.
"--sort=name"
- (format "--mtime=@%d" time)
+ "--mtime=@0"
"--owner=0" "--group=0" "--numeric-owner"
"--pax-option=exthdr.name=%d/PaxHeaders/%f,delete=atime,delete=ctime"))
(when (and package-build-verbose noninteractive)
@@ -6,6 +6,7 @@
melpaBuild {
pname = "color-theme-solarized";
ename = "solarized-theme";
version = "0-unstable-2023-02-09";
src = fetchFromGitHub {
@@ -15,6 +16,8 @@ melpaBuild {
hash = "sha256-7E8r56dzfD06tsQEnqU5mWSbwz9x9QPbzken2J/fhlg=";
};
files = ''(:defaults (:exclude "color-theme-solarized-pkg.el"))'';
# https://github.com/NixOS/nixpkgs/issues/335408
ignoreCompilationError = true;
@@ -15,6 +15,7 @@ let
in
melpaBuild {
inherit pname version src;
melpaVersion = "1.4"; # upstream versions such as 1.04 are not supported
outputs = [
"out"
@@ -8,6 +8,7 @@ melpaBuild rec {
pname = "session-management-for-emacs";
ename = "session";
version = "2.2a";
melpaVersion = "2.2"; # default value derived from version is not valid for Emacs
src = fetchzip {
url = "mirror://sourceforge/emacs-session/session-${version}.tar.gz";
@@ -11697,6 +11697,19 @@ final: prev:
meta.hydraPlatforms = [ ];
};
pckr-nvim = buildVimPlugin {
pname = "pckr.nvim";
version = "2025-03-30";
src = fetchFromGitHub {
owner = "lewis6991";
repo = "pckr.nvim";
rev = "d299abb91f2cf1aa0e4733dfd76ed2f98b915e55";
sha256 = "17n71x66vpixialjpx8hayknn3f6h2crbcpmn3chxfczsjvqkhhz";
};
meta.homepage = "https://github.com/lewis6991/pckr.nvim/";
meta.hydraPlatforms = [ ];
};
pear-tree = buildVimPlugin {
pname = "pear-tree";
version = "2024-11-29";
@@ -1,58 +1,57 @@
{
lib,
stdenv,
fetchFromGitHub,
nix-update-script,
rustPlatform,
versionCheckHook,
nix-update-script,
vimUtils,
}:
let
version = "1.0.0";
version = "2.2.3";
src = fetchFromGitHub {
owner = "vyfor";
repo = "cord.nvim";
tag = "v${version}";
hash = "sha256-rA3R9SO3QRLGBVHlT5NZLtQw+EmkkmSDO/K6DdNtfBI=";
hash = "sha256-MhUjQxwATAGxIC8ACNDFDm249GzX4Npq3S+sHoUMuos=";
};
extension = if stdenv.hostPlatform.isDarwin then "dylib" else "so";
cord-nvim-rust = rustPlatform.buildRustPackage {
pname = "cord.nvim-rust";
inherit version src;
cord-server = rustPlatform.buildRustPackage {
pname = "cord";
version = "2.2.3";
inherit src;
# The version in .github/server-version.txt differs from the one in Cargo.toml
postPatch = ''
substituteInPlace .github/server-version.txt \
--replace-fail "2.0.0-beta.30" "${version}"
'';
useFetchCargoVendor = true;
cargoHash = "sha256-UJdSQNaYaZxvmfuHwePzGhQ3Pv+Cm7YaRK1L0CJhtEc=";
cargoHash = "sha256-hKt9d2u/tlD7bgo49O8oHDLljRvad9dEpGdFt+LH6Ec=";
installPhase =
let
cargoTarget = stdenv.hostPlatform.rust.cargoShortTarget;
in
''
install -D target/${cargoTarget}/release/libcord.${extension} $out/lib/cord.${extension}
'';
# cord depends on nightly features
RUSTC_BOOTSTRAP = 1;
nativeInstallCheckInputs = [
versionCheckHook
];
versionCheckProgramArg = "--version";
doInstallCheck = false;
meta.mainProgram = "cord";
};
in
vimUtils.buildVimPlugin {
pname = "cord.nvim";
inherit version src;
nativeBuildInputs = [
cord-nvim-rust
];
buildPhase = ''
runHook preBuild
install -D ${cord-nvim-rust}/lib/cord.${extension} cord.${extension}
runHook postBuild
'';
installPhase = ''
runHook preInstall
install -D cord $out/lua/cord.${extension}
runHook postInstall
# Patch the logic used to find the path to the cord server
# This still lets the user set config.advanced.server.executable_path
# https://github.com/vyfor/cord.nvim/blob/v2.2.3/lua/cord/server/fs/init.lua#L10-L15
postPatch = ''
substituteInPlace lua/cord/server/fs/init.lua \
--replace-fail \
"or M.get_data_path()" \
"'${cord-server}'"
'';
passthru = {
@@ -61,11 +60,13 @@ vimUtils.buildVimPlugin {
};
# needed for the update script
inherit cord-nvim-rust;
inherit cord-server;
};
meta = {
homepage = "https://github.com/vyfor/cord.nvim";
license = lib.licenses.asl20;
changelog = "https://github.com/vyfor/cord.nvim/releases/tag/v${version}";
maintainers = with lib.maintainers; [ GaetanLepage ];
};
}
@@ -2021,12 +2021,12 @@
};
ocamllex = buildGrammar {
language = "ocamllex";
version = "0.0.0+rev=c5cf996";
version = "0.0.0+rev=5da5bb7";
src = fetchFromGitHub {
owner = "atom-ocaml";
repo = "tree-sitter-ocamllex";
rev = "c5cf996c23e38a1537069fbe2d4bb83a75fc7b2f";
hash = "sha256-eDJRTLYKHcL7yAgFL8vZQh9zp5fBxcZRsWChp8y3Am0=";
rev = "5da5bb7508ac9fd3317561670ef18c126a0fe2aa";
hash = "sha256-qfmIfcZ3zktYzuNNYP7Z6u6c7XoKsKD86MRMxe/qkpY=";
};
generate = true;
meta.homepage = "https://github.com/atom-ocaml/tree-sitter-ocamllex";
@@ -897,6 +897,7 @@ https://github.com/roobert/palette.nvim/,HEAD,
https://github.com/NLKNguyen/papercolor-theme/,,
https://github.com/pappasam/papercolor-theme-slim/,HEAD,
https://github.com/dundalek/parpar.nvim/,,
https://github.com/lewis6991/pckr.nvim/,HEAD,
https://github.com/tmsvg/pear-tree/,,
https://github.com/steelsojka/pears.nvim/,,
https://github.com/olimorris/persisted.nvim/,HEAD,
@@ -257,8 +257,8 @@ let
mktplcRef = {
name = "ng-template";
publisher = "Angular";
version = "19.2.1";
hash = "sha256-X4ZDKgUyoBU8LIh+aM3JyvqGE9LnXVhvOXtAdX6gUv4=";
version = "19.2.2";
hash = "sha256-WoNrKcK9Gr9gVWH/pwKyEUHuzcVNKh6zQwwpG4BuVCg=";
};
meta = {
changelog = "https://marketplace.visualstudio.com/items/Angular.ng-template/changelog";
@@ -524,8 +524,8 @@ let
mktplcRef = {
name = "vscode-bazel";
publisher = "bazelbuild";
version = "0.10.0";
sha256 = "sha256-8SUOzsUmfgt9fAy037qLVNrGJPvTnIeMNz2tbN5psbs=";
version = "0.11.0";
sha256 = "sha256-c1Uvu9qBsQabdfhNxG0tCmCq3ub3wfgdoGor0cATo0c=";
};
meta = {
description = "Bazel support for Visual Studio Code";
@@ -720,8 +720,8 @@ let
mktplcRef = {
publisher = "bmalehorn";
name = "vscode-fish";
version = "1.0.38";
hash = "sha256-QEifCTlzYMX+5H6+k2o1lsQrhW3vxVpn+KFg/3WVVFo=";
version = "1.0.39";
hash = "sha256-T5wD4btQ2HSq3vB1m/qHM7VcvHfZmMD9OV93ZwxXcQg=";
};
meta = {
changelog = "https://marketplace.visualstudio.com/items/bmalehorn.vscode-fish/changelog";
@@ -781,8 +781,8 @@ let
mktplcRef = {
name = "vscode-tailwindcss";
publisher = "bradlc";
version = "0.14.11";
hash = "sha256-sZcbUIAs4m96rBfYJbyZegqAqL71+OjVykqna+QMdu0=";
version = "0.14.12";
hash = "sha256-Dn+Z5uZYoWSriNnkYK1rRoHv8sjr7ui70UeTA3e0wIs=";
};
meta = {
changelog = "https://marketplace.visualstudio.com/items/bradlc.vscode-tailwindcss/changelog";
@@ -877,8 +877,8 @@ let
mktplcRef = {
name = "catppuccin-vsc";
publisher = "catppuccin";
version = "3.16.1";
hash = "sha256-qEwQ583DW17dlJbODN8SNUMbDMCR1gUH4REaFkQT65I=";
version = "3.17.0";
hash = "sha256-udDbsXAEsJUt3WUU8aBvCi8Pu+8gu+xQkimlmvRZ9pg=";
};
meta = {
changelog = "https://marketplace.visualstudio.com/items/Catppuccin.catppuccin-vsc/changelog";
@@ -1424,8 +1424,8 @@ let
mktplcRef = {
name = "profiler-php-vscode";
publisher = "devsense";
version = "1.41.14332";
hash = "sha256-u2lNqG6FUhWnnNGtv+sjTbP/hbu4Da/8xjLzmPZkZOA=";
version = "1.57.17031";
hash = "sha256-fC+8trGmvgYjsnJA6+L6sxFoE6Cr91Q7xdparE9JKyg=";
};
meta = {
changelog = "https://marketplace.visualstudio.com/items/DEVSENSE.profiler-php-vscode/changelog";
@@ -1725,8 +1725,8 @@ let
mktplcRef = {
name = "elm-ls-vscode";
publisher = "Elmtooling";
version = "2.6.0";
hash = "sha256-iNFc7YJFl3d4/BJE9TPJfL0iqEkUtyEyVt4v1J2bXts=";
version = "2.8.0";
hash = "sha256-81tHgNjYc0LJjsgsQfo5xyh20k/i3PKcgYp9GZTvwfs=";
};
meta = {
changelog = "https://marketplace.visualstudio.com/items/Elmtooling.elm-ls-vscode/changelog";
@@ -1830,8 +1830,8 @@ let
mktplcRef = {
name = "vscode-open-in-github";
publisher = "fabiospampinato";
version = "2.3.0";
hash = "sha256-vrW6uZyeEJipGtfz7BEeeAwiwtBlfQLjC7jAP1v5GoE=";
version = "2.3.1";
hash = "sha256-wqY8AArlTpQzoZ9OfV9MzlHIr9M/Ac4QUZL99n327EI=";
};
meta = {
changelog = "https://marketplace.visualstudio.com/items/fabiospampinato.vscode-open-in-github/changelog";
@@ -1914,8 +1914,8 @@ let
mktplcRef = {
name = "foam-vscode";
publisher = "foam";
version = "0.26.8";
hash = "sha256-DI0iPx/Wan3cgUCWgRvXt0uESCIJBR6lF3y/TRgYFnc=";
version = "0.26.10";
hash = "sha256-vhQtdc0553TyPkQnTHwg7Nr+UbDMf9yR+2jj40ANPdQ=";
};
meta = {
changelog = "https://marketplace.visualstudio.com/items/foam.foam-vscode/changelog";
@@ -2038,8 +2038,8 @@ let
mktplcRef = {
name = "godot-tools";
publisher = "geequlim";
version = "2.3.0";
hash = "sha256-iuSec4PoVxyu1KB2jfCYOd98UrqQjH3q24zOR4VCPgs=";
version = "2.5.1";
hash = "sha256-kAzRSNZw1zaECblJv7NzXnE2JXSy9hzdT2cGX+uwleY=";
};
meta = {
description = "VS Code extension for game development with Godot Engine and GDScript";
@@ -2078,8 +2078,8 @@ let
mktplcRef = {
name = "chatgpt-vscode";
publisher = "genieai";
version = "0.0.8";
sha256 = "RKvmZkegFs4y+sEVaamPRO1F1E+k4jJyI0Q9XqKowrQ=";
version = "0.0.13";
sha256 = "sha256-aoVICzU5sfA96FCU4ysUGmULruGWLaVo2lFpiPhdtGA=";
};
};
@@ -2105,8 +2105,8 @@ let
publisher = "github";
name = "copilot";
# Verify which version is available with nix run nixpkgs#vsce -- show github.copilot --json
version = "1.292.0";
hash = "sha256-bgyDMEbIceTGtZ6CqUehkJLMAL8Osega6kMwb+buTAU=";
version = "1.293.0";
hash = "sha256-LwgINocPHA9jL6pMw40BgaZ3lOUwWPoOJWTDr+27h5Q=";
};
meta = {
@@ -2199,8 +2199,8 @@ let
mktplcRef = {
name = "gleam";
publisher = "gleam";
version = "2.3.0";
hash = "sha256-dhRS8fLKY0plRwnrAUWT4g/LfH6IpODTNhT79g4Nm+0=";
version = "2.11.1";
hash = "sha256-tySY6vPg71QQKeKivCoJzcAH73nML/NWhtr+TgaSKRg=";
};
meta = {
description = "Support for the Gleam programming language";
@@ -2263,8 +2263,8 @@ let
mktplcRef = {
name = "vscode-graphql-syntax";
publisher = "GraphQL";
version = "1.3.6";
hash = "sha256-74Y/LpOhAj3TSplohhJqBwJDT87nCAiKrWsF90bc8jU=";
version = "1.3.8";
hash = "sha256-10x2kX9Gc7O/tGRDPZfy1cKdCIvGTCXcD2bDokIz7TU=";
};
meta = {
description = "Adds full GraphQL syntax highlighting and language support such as bracket matching";
@@ -2622,8 +2622,8 @@ let
mktplcRef = {
name = "latex-workshop";
publisher = "James-Yu";
version = "10.8.0";
sha256 = "sha256-tdQ3Z/OfNH0UgpHcn8Zq5rQxoetD61dossEh8hRygew=";
version = "10.9.0";
sha256 = "sha256-hexky9ZZt+u0H8HVcNiI2Jmx9HL5+uKHLVBNqEbgqLo=";
};
meta = {
changelog = "https://marketplace.visualstudio.com/items/James-Yu.latex-workshop/changelog";
@@ -3283,8 +3283,8 @@ let
mktplcRef = {
name = "goto-next-previous-member";
publisher = "mishkinf";
version = "0.0.6";
sha256 = "07rpnbkb51835gflf4fpr0v7fhj8hgbhsgcz2wpag8wdzdxc3025";
version = "0.0.10";
sha256 = "sha256-mRPWEU/M5uhiDUl9KwQi6w5hfzIZxKMhO48ssVfICoQ=";
};
meta = {
license = lib.licenses.mit;
@@ -3512,8 +3512,8 @@ let
mktplcRef = {
name = "anycode";
publisher = "ms-vscode";
version = "0.0.73";
hash = "sha256-83qz4wYnRK/KtrQMHwMAFhOnVyLXG1/EwUvVW2v30ho=";
version = "0.0.74";
hash = "sha256-rTWAOvIsrl0DSqxoQy5eU6EREJovU1oRMC8/2Q6x4Hk=";
};
meta = {
license = lib.licenses.mit;
@@ -3756,8 +3756,8 @@ let
mktplcRef = {
name = "color-highlight";
publisher = "naumovs";
version = "2.6.0";
hash = "sha256-TcPQOAHCYeFHPdR85GIXsy3fx70p8cLdO2UNO0krUOs=";
version = "2.8.0";
hash = "sha256-mT2P1lEdW66YkDRN6fi0rmmvvyBfXiJjAUHns8a8ipE=";
};
meta = {
changelog = "https://marketplace.visualstudio.com/items/naumovs.color-highlight/changelog";
@@ -4433,8 +4433,8 @@ let
mktplcRef = {
publisher = "shopify";
name = "ruby-lsp";
version = "0.9.12";
hash = "sha256-ahfVRbTAKmmqOWV7vHK0+KLwYSUVgKqlIG1+lV3E5c4=";
version = "0.9.13";
hash = "sha256-Lde17QPuaubrvomwZjWA9f34/Dn0qyG5MQxMLJFWBQ8=";
};
meta = {
description = "VS Code plugin for connecting with the Ruby LSP";
@@ -4678,8 +4678,8 @@ let
mktplcRef = {
name = "vscode-stylelint";
publisher = "stylelint";
version = "1.4.0";
hash = "sha256-CsQBRoVDtNLlkHa6NLmOspkswB/JUMfMuU2dMYDlDnc=";
version = "1.5.0";
hash = "sha256-SHUb7+eL0PWlw/KUidXPvE5+MFsJz1Fi7Csptiw8j4M=";
};
meta = {
description = "Official Stylelint extension for Visual Studio Code";
@@ -4751,8 +4751,8 @@ let
mktplcRef = {
name = "tabnine-vscode";
publisher = "tabnine";
version = "3.247.0";
hash = "sha256-TOpdiqkOUmC+CXJn0H3+NYqTHkeuNf2Y37F0OgN6YzM=";
version = "3.249.0";
hash = "sha256-Pp1LlVAkozh2kIEvmPxg4LuuT08MeGbMN77M5Mx81qI=";
};
meta = {
license = lib.licenses.mit;
@@ -5201,8 +5201,8 @@ let
mktplcRef = {
name = "vstuc";
publisher = "VisualStudioToolsForUnity";
version = "1.1.0";
hash = "sha256-86KDksbTKlPgKC1joUc7uQTsDe2w9AIL0fekZP0z6gE=";
version = "1.1.1";
hash = "sha256-iE/o6hkDwT7jLTVvJbviQZgV+KnhSAGEZ2mf3gsua38=";
};
meta = {
description = "Integrates Visual Studio Code for Unity";
@@ -5344,8 +5344,8 @@ let
mktplcRef = {
name = "vscode-icons";
publisher = "vscode-icons-team";
version = "12.11.0";
hash = "sha256-RpuCHJBLqhAXAdvC0qGDUJIy5ww1yqlSb7hKwCALidM=";
version = "12.12.0";
hash = "sha256-C73ZpmVJ9ltzbfV3LmawV2X/2e+e1F3dxaYZzKMBZdQ=";
};
meta = {
description = "Bring real icons to your Visual Studio Code";
@@ -5681,8 +5681,8 @@ let
mktplcRef = {
name = "vscode-zig";
publisher = "ziglang";
version = "0.6.6";
hash = "sha256-UxbCRsTp7Fz6iAeC3lwojWrLPMJx5b7cNXxOFY7k0pk=";
version = "0.6.7";
hash = "sha256-l8pu348v2JUg/7+Qy5B41eyraPUj9WQ1WuW1aumgM9w=";
};
meta = {
changelog = "https://marketplace.visualstudio.com/items/ziglang.vscode-zig/changelog";
@@ -1,4 +1,10 @@
{ lib, vscode-utils }:
{
lib,
vscode-utils,
writeShellScript,
nix-update,
vscode-extensions-update,
}:
with vscode-utils;
@@ -7,15 +13,23 @@ let
buildVscodeLanguagePack =
{
language,
version ? "1.76.2023030809",
sha256,
version ? "1.98.2025031209",
hash,
}:
buildVscodeMarketplaceExtension {
mktplcRef = {
name = "vscode-language-pack-${language}";
publisher = "MS-CEINTL";
inherit version sha256;
inherit version hash;
};
passthru.updateScript = lib.optionalAttrs (language == "fr") (
writeShellScript "vscode-language-packs-update-script" ''
${lib.getExe vscode-extensions-update} vscode-extensions.ms-ceintl.vscode-language-pack-fr --override-filename "pkgs/applications/editors/vscode/extensions/language-packs.nix"
for lang in cs de es it ja ko pt-br qps-ploc ru tr zh-hans zh-hant; do
${lib.getExe nix-update} --version "skip" "vscode-extensions.ms-ceintl.vscode-language-pack-$lang" --override-filename "pkgs/applications/editors/vscode/extensions/language-packs.nix"
done
''
);
meta = {
license = lib.licenses.mit;
};
@@ -27,66 +41,66 @@ in
# French
vscode-language-pack-fr = buildVscodeLanguagePack {
language = "fr";
sha256 = "19brasjwwgdskgwayclmsywf007i2d47vx7dwq6hq2bhx4rd6xfy";
hash = "sha256-ulFnHulIa1T+WdlXa000cYDY/SWGcA9W/uLZrP5l40Q=";
};
# Italian
vscode-language-pack-it = buildVscodeLanguagePack {
language = "it";
sha256 = "1s5x3w125fliimr0i218mars4xjl70hsz0ihxrjk97c66yzg3gw7";
hash = "sha256-o9EwOKuFVqB1gJvCh4S5ArwQDN21a3zhLBsCpeztUhU=";
};
# German
vscode-language-pack-de = buildVscodeLanguagePack {
language = "de";
sha256 = "0ih8h3n5mcadclxxlrgajq7kprgj9fbklccc00r0z8vqnmlc0dw0";
hash = "sha256-x20EJ6YfMT59bk8o8LYDqQgyOmI1NH/Jq2zjtrUHOt8=";
};
# Spanish
vscode-language-pack-es = buildVscodeLanguagePack {
language = "es";
sha256 = "077n4mlx9qxqlp018wfi6hm3syhxsp2xzyih42kpsp71xi8j113r";
hash = "sha256-MerP4/WBKj/TauDnQcWv0YCFh9JA1ce0jHiFAvt5NdI=";
};
# Russian
vscode-language-pack-ru = buildVscodeLanguagePack {
language = "ru";
sha256 = "04mdxspm8i1dra0qmim4n4qin050adm2zk9pcnn3z4qbf3yvvnf4";
hash = "sha256-0Z4jSiP16EDFyHwQAgvFpMh5F8tCu74hUojXH5EK66o=";
};
# Chinese (Simplified)
vscode-language-pack-zh-hans = buildVscodeLanguagePack {
language = "zh-hans";
sha256 = "0f2bg5nm4sybwf84afvhc22yjp66rzdz4s1iaa31yxb4c1ij2vsr";
hash = "sha256-CQtb7FJGR2JVznbEYVN76IywQopwZ6TzWjxE1as7WWE=";
};
# Chinese (Traditional)
vscode-language-pack-zh-hant = buildVscodeLanguagePack {
language = "zh-hant";
sha256 = "1dspg6x7n9b89cirf63m2y0p6r2m197qzgvvavqfm7bv6cpskha0";
hash = "sha256-LmBcWZlyAVvXoa5sZ4gpWBkBZD+5AKkFZqSs4zXkCwc=";
};
# Japanese
vscode-language-pack-ja = buildVscodeLanguagePack {
language = "ja";
sha256 = "1idiv9xqfqhz1y3pd4h3ayy3svccr4jhrm23nf9h80g38k74qayi";
hash = "sha256-4tj4wTCOnC2KpHWN86EZl5KmNl2QLXb7Co1aYwRZ7uY=";
};
# Korean
vscode-language-pack-ko = buildVscodeLanguagePack {
language = "ko";
sha256 = "0g980sfa386by741sxxlapc2cjsbkfvldcc5kylxvf2drigyvka7";
hash = "sha256-NmSSijvWckFiyyQBo+2Lv70YsqOYR/5kHP4iiqaQUZU=";
};
# Czech
vscode-language-pack-cs = buildVscodeLanguagePack {
language = "cs";
sha256 = "0sm3xxiv8lrln051yjq6s5jmpvkbphv1i90lrx472pwknmiwx74a";
hash = "sha256-Q8jSCYzl/DXasi0n228Kd7Ru0z1Bb/ovTySAYCV42pg=";
};
# Portuguese (Brazil)
vscode-language-pack-pt-br = buildVscodeLanguagePack {
language = "pt-BR";
sha256 = "1k4y528im6sr8n4blh6k4xng4d534siaaflvnarizs3py9wa61d1";
hash = "sha256-PJPeTn+0g1s+L7t9d6A/hyrBEF0EE/QKshHa3vuQZxU=";
};
# Turkish
vscode-language-pack-tr = buildVscodeLanguagePack {
language = "tr";
sha256 = "1yf59idj6g77sqkm46bdadklvbvb3ncxzd9mfm9y32h54fxffh6a";
hash = "sha256-+M43EdHHsmw1pJopLi0nMIGwcxk6+LeVvZjkxnxUatI=";
};
# Pseudo Language
vscode-language-pack-qps-ploc = buildVscodeLanguagePack {
language = "qps-ploc";
sha256 = "1dmn58fx8mpbn84zqyy09a1j67b5988gn7xjmfdk73bbd7hzbmji";
hash = "sha256-2ERwup1z7wGVwoGfakV0oCADxXWfWbYxlkQ6iJYgXkc=";
};
}
@@ -7,8 +7,8 @@ vscode-utils.buildVscodeMarketplaceExtension {
mktplcRef = {
publisher = "ms-pyright";
name = "pyright";
version = "1.1.397";
hash = "sha256-Z6iKOgAglxDdPz9D4pL1STj3+uy8S89oOalqfdV1reI=";
version = "1.1.398";
hash = "sha256-fSBn4c1e1e4atJUV6STmEYB/++WXZFsN2v5+zyfYnZA=";
};
meta = {
@@ -7,8 +7,8 @@ vscode-utils.buildVscodeMarketplaceExtension {
mktplcRef = {
name = "claude-dev";
publisher = "saoudrizwan";
version = "3.8.3";
hash = "sha256-0FAxQ67AKcSbCp8vQr2KUOIRw8LEQ3TQyJkfJwtmdoY=";
version = "3.8.4";
hash = "sha256-Ona7JntYaHbh7/1Q3Y+7UxmI+X0H93Y/cIW73DXxA1M=";
};
meta = {
@@ -20,9 +20,9 @@
let
inherit
(callPackage ./common-drv-attrs.nix {
version = "3.2.9";
version = "3.2.10";
pname = "libmirage";
hash = "sha256-JBd+wHSZRyRW1SZsaAaRO2dNUFkpwRCr3s1f39KyWIs=";
hash = "sha256-+T5Gu3VcprCkSJcq/kTySRnNI7nc+GbRtctLkzPhgK4=";
})
pname
version
+2 -2
View File
@@ -8,11 +8,11 @@
stdenv.mkDerivation rec {
pname = "vhba";
version = "20240917";
version = "20250329";
src = fetchurl {
url = "mirror://sourceforge/cdemu/vhba-module-${version}.tar.xz";
hash = "sha256-zjTLriw2zvjX0Jxfa9QtaHG5tTC7cLTKEA+WSCP+Dpg=";
hash = "sha256-piog1yDd8M/lpTIo9FE9SY2JwurZ6a8LG2lZ/4EmB14=";
};
makeFlags = kernelModuleMakeFlags ++ [
+5 -5
View File
@@ -69,9 +69,9 @@ in rec {
unstable = fetchurl rec {
# NOTE: Don't forget to change the hash for staging as well.
version = "10.3";
version = "10.4";
url = "https://dl.winehq.org/wine/source/10.x/wine-${version}.tar.xz";
hash = "sha256-3j2I/wBWuC/9/KhC8RGVkuSRT0jE6gI3aOBBnDZGfD4=";
hash = "sha256-oJAZzlxCuga6kexCPUnY8qmo6sTBqSMMc+HRGWOdXpI=";
inherit (stable) patches;
## see http://wiki.winehq.org/Gecko
@@ -88,9 +88,9 @@ in rec {
## see http://wiki.winehq.org/Mono
mono = fetchurl rec {
version = "9.4.0";
version = "10.0.0";
url = "https://dl.winehq.org/wine/wine-mono/${version}/wine-mono-${version}-x86.msi";
hash = "sha256-z2FzrpS3np3hPZp0zbJWCohvw9Jx+Uiayxz9vZYcrLI=";
hash = "sha256-26ynPl0J96OnwVetBCia+cpHw87XAS1GVEpgcEaQK4c=";
};
updateScript = writeShellScript "update-wine-unstable" ''
@@ -117,7 +117,7 @@ in rec {
staging = fetchFromGitLab rec {
# https://gitlab.winehq.org/wine/wine-staging
inherit (unstable) version;
hash = "sha256-H52ZM+eA0bZPHFlP+uXew7JtOH29BZcXr8hvsqPDtig=";
hash = "sha256-LteUANxr+w1N9r6LNztjRfr3yXtJnUMi0uayTRtFoSU=";
domain = "gitlab.winehq.org";
owner = "wine";
repo = "wine-staging";
@@ -1,33 +0,0 @@
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 97596dbee8d..d1ad6ac5de0 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1237,13 +1237,6 @@ set_and_warn_dependency(WITH_PYTHON WITH_CYCLES OFF)
set_and_warn_dependency(WITH_PYTHON WITH_DRACO OFF)
set_and_warn_dependency(WITH_PYTHON WITH_MOD_FLUID OFF)
-if(NOT WITH_PYTHON_MODULE)
- if(WITH_DRACO AND NOT WITH_PYTHON_INSTALL)
- message(STATUS "WITH_DRACO requires WITH_PYTHON_INSTALL to be ON, disabling WITH_DRACO for now")
- set(WITH_DRACO OFF)
- endif()
-endif()
-
# enable boost for cycles, audaspace or i18n
# otherwise if the user disabled
diff --git a/scripts/addons_core/io_scene_gltf2/io/com/draco.py b/scripts/addons_core/io_scene_gltf2/io/com/draco.py
index 75e23162c67..875596c3d2f 100644
--- a/scripts/addons_core/io_scene_gltf2/io/com/draco.py
+++ b/scripts/addons_core/io_scene_gltf2/io/com/draco.py
@@ -31,8 +31,8 @@ def dll_path() -> Path:
:return: DLL path.
"""
lib_name = 'extern_draco'
- blender_root = Path(bpy.app.binary_path).parent
- python_lib = Path('{v[0]}.{v[1]}/python/lib'.format(v=bpy.app.version))
+ blender_root = Path(bpy.app.binary_path).parent.parent
+ python_lib = Path('share/blender/{v[0]}.{v[1]}/python/lib'.format(v=bpy.app.version))
python_version = 'python{v[0]}.{v[1]}'.format(v=sys.version_info)
path = os.environ.get('BLENDER_EXTERN_DRACO_LIBRARY_PATH')
+2 -2
View File
@@ -5,13 +5,13 @@
mkDerivation rec {
pname = "klayout";
version = "0.29.12";
version = "0.30.0";
src = fetchFromGitHub {
owner = "KLayout";
repo = "klayout";
rev = "v${version}";
hash = "sha256-TLLAIlZYKGeQENtzfc9ilWwl4yu2ln7yBy+VW7Zwexc=";
hash = "sha256-i7MQqkVf+NZkmcf589BpLofwqc5KGxRNqdr1Go84M9A=";
};
postPatch = ''
@@ -45,11 +45,11 @@
"vendorHash": "sha256-NO7e8S+UhbbGWeBm4+bzm6HqqA3G3WZwj3wJmug0aSA="
},
"alicloud": {
"hash": "sha256-cZUOABxdartcPnDSXR7K+tbQtum89Uk/r4kG0jVlgAM=",
"hash": "sha256-Jn4VzU6aPhMv6eMmXQ5gD5SA9IZfpmkRKpTrjRGrNF8=",
"homepage": "https://registry.terraform.io/providers/aliyun/alicloud",
"owner": "aliyun",
"repo": "terraform-provider-alicloud",
"rev": "v1.245.0",
"rev": "v1.246.2",
"spdx": "MPL-2.0",
"vendorHash": null
},
@@ -354,11 +354,11 @@
"vendorHash": "sha256-quoFrJbB1vjz+MdV+jnr7FPACHuUe5Gx9POLubD2IaM="
},
"digitalocean": {
"hash": "sha256-smGK6ZRcKMf5Wcxd7Sv6LQkbT6swVNOK0o0JbeNacY0=",
"hash": "sha256-jReUOuoRybh8g4smxy7QCkJEgUzDnaKhj7VO5ShSGsc=",
"homepage": "https://registry.terraform.io/providers/digitalocean/digitalocean",
"owner": "digitalocean",
"repo": "terraform-provider-digitalocean",
"rev": "v2.49.1",
"rev": "v2.50.0",
"spdx": "MPL-2.0",
"vendorHash": null
},
@@ -426,11 +426,11 @@
"vendorHash": "sha256-aTQreRL0UTMYWLs25qsdwdN+PaJcOHwLRA8CjIAsYi0="
},
"exoscale": {
"hash": "sha256-fD2PQ/WNmifAlY27V0y47wDWEfhCXql0b1y8J5uSkNk=",
"hash": "sha256-SL0O4hRVeLqxDEsh/BUZLUsypLPlvD7Z0ozr+RPuuv4=",
"homepage": "https://registry.terraform.io/providers/exoscale/exoscale",
"owner": "exoscale",
"repo": "terraform-provider-exoscale",
"rev": "v0.63.0",
"rev": "v0.64.0",
"spdx": "MPL-2.0",
"vendorHash": null
},
@@ -507,13 +507,13 @@
"vendorHash": "sha256-1KTU8nMYUfC+LJHFeIpK6m4RUPWvSHNSXGVJgcnsVl8="
},
"google": {
"hash": "sha256-9xieQT5yY1h52/tksEmX9iYXtDjYxkSL/pvC2XPXN/4=",
"hash": "sha256-yiTTC9URf0A3AHHv7jUc9Y6cgxFkFspvx2NYB1HPKS4=",
"homepage": "https://registry.terraform.io/providers/hashicorp/google",
"owner": "hashicorp",
"repo": "terraform-provider-google",
"rev": "v6.25.0",
"rev": "v6.27.0",
"spdx": "MPL-2.0",
"vendorHash": "sha256-kzugr8EaPROHy/3IVOsGkitpTixuiOw8R6kYedIrIuw="
"vendorHash": "sha256-oGO+++WMiXUTCLFdBH2/uAzdN3RtrSNDSUBVMIYmI14="
},
"google-beta": {
"hash": "sha256-FybWpnUBQCxY1XQNSCk4slUg6vF8XDW1uQwgF0a2PgQ=",
@@ -1129,13 +1129,13 @@
"vendorHash": "sha256-Ry791h5AuYP03nex9nM8X5Mk6PeL7hNDbFyVRvVPJNE="
},
"scaleway": {
"hash": "sha256-5sLi0W5SKgaY8y85aFcVE/TE87SxpkGfhwYRF9fPf94=",
"hash": "sha256-9ZdQi1Z1IfidVrqD8vQqmV7lyGalghls4/KJSoX3Kzw=",
"homepage": "https://registry.terraform.io/providers/scaleway/scaleway",
"owner": "scaleway",
"repo": "terraform-provider-scaleway",
"rev": "v2.51.0",
"rev": "v2.52.0",
"spdx": "MPL-2.0",
"vendorHash": "sha256-qIBSCRvKSfSjxM+PtcS815g0WOKHZzSK9yikXbYUWaw="
"vendorHash": "sha256-hXvpCjWwlk4UuvtxWznP8t3qlvzBvWlrui2VdP0Hruo="
},
"secret": {
"hash": "sha256-MmAnA/4SAPqLY/gYcJSTnEttQTsDd2kEdkQjQj6Bb+A=",
@@ -1201,13 +1201,13 @@
"vendorHash": "sha256-F1AuO/dkldEDRvkwrbq2EjByxjg3K2rohZAM4DzKPUw="
},
"snowflake": {
"hash": "sha256-enDKtqIulPbDSftkDFH783CJlTK5VyImvVpKePuZXh8=",
"hash": "sha256-5vhCej98gkq8rQqAfNt04fWKvjFCuNp2lUmlXJrBXCY=",
"homepage": "https://registry.terraform.io/providers/Snowflake-Labs/snowflake",
"owner": "Snowflake-Labs",
"repo": "terraform-provider-snowflake",
"rev": "v1.0.4",
"rev": "v1.0.5",
"spdx": "MIT",
"vendorHash": "sha256-9tHeFnNa5tnmB74p3VJtkw+ldhnDXsP5p3oTOAri1tY="
"vendorHash": "sha256-skswuFKhN4FFpIunbom9rM/FVRJVOFb1WwHeAIaEjn8="
},
"sops": {
"hash": "sha256-MdsWKV98kWpZpTK5qC7x6vN6cODxeeiVVc+gtlh1s88=",
@@ -1309,11 +1309,11 @@
"vendorHash": "sha256-0B2XRpvUk0mgDu3inz37LLJijwH3aQyoSb8IaHr6was="
},
"tencentcloud": {
"hash": "sha256-vWMEaA64/h1dhXJDw2kqoWgpp79ZuWP25rvfd6GiReg=",
"hash": "sha256-DkktMcHU0T9H/jGOq66N7n1bfBF7aDEWGYmQrzWsqr8=",
"homepage": "https://registry.terraform.io/providers/tencentcloudstack/tencentcloud",
"owner": "tencentcloudstack",
"repo": "terraform-provider-tencentcloud",
"rev": "v1.81.174",
"rev": "v1.81.178",
"spdx": "MPL-2.0",
"vendorHash": null
},
@@ -59,7 +59,7 @@ let
passthru = {
tests = {
inherit (nixosTests) syncthing syncthing-init syncthing-relay;
inherit (nixosTests) syncthing syncthing-init syncthing-many-devices syncthing-no-settings syncthing-relay;
};
updateScript = nix-update-script { };
};
@@ -3,23 +3,23 @@
{
"kicad" = {
kicadVersion = {
version = "9.0.0";
version = "9.0.1";
src = {
rev = "ccafeabf1503a778a283eabe40fa0760aa5bc83c";
sha256 = "0rr4k5hx4kjbfi4q3jdhamv1gjb0b1nwmmrrdg7ig18335bpw14s";
rev = "eb0a9f7b5b8f26024310bd02367f8414d6c80734";
sha256 = "14g4ns2fxigzz1z4chcnaz2b8f4jkdmd56mnlpdq8nld8q84hywk";
};
};
libVersion = {
version = "9.0.0";
version = "9.0.1";
libSources = {
symbols.rev = "e1c3371228f97b36c6fd61b66d056184930f078e";
symbols.sha256 = "0l8da2ix917jlsj6v5zclc1cb5pvjaxwmys0gjdv55ic31hhfyyw";
templates.rev = "3ed4538b0f965d821df63a5fffc4441e723cfe7f";
symbols.rev = "f8789bb729b5ed7ddc6a45b68563157e3a070944";
symbols.sha256 = "1q8vq4dwnhryizidx0s3x8p4yjhj3hbjhd40zy1pynkf1p174d7n";
templates.rev = "793b29a36c6b11a11d3bb417cf508a48b8c6ebb8";
templates.sha256 = "0zs29zn8qjgxv0w1vyr8yxmj02m8752zagn4vcraqgik46dwg2id";
footprints.rev = "ef91963f57028aa095f2d0c4239ba994ea822f73";
footprints.sha256 = "16zslgvjg4swgkkvnd9fmiks3wzg63364d03hixiyzcpjlgk2bbk";
packages3d.rev = "b40831fd7ea2ca8f9c7282143dbb7d2f5015cd69";
packages3d.sha256 = "0bg54lg1iw01gw06ajg34y7x4y36wm6ls3jnpjy13i18d4ik77g4";
footprints.rev = "b5974927427a886128e5ba7a8adc285a751261d1";
footprints.sha256 = "0xqjnvbf032l191spfdh6g579jfhlpyr7pg53pkqdhzz053j3rlz";
packages3d.rev = "b1fd04f841f0d88b025be7357482cf7f48de4dae";
packages3d.sha256 = "1xgwd9srp93pj4pnskk3cnkbx57n6kvmlk7qwi3fl6wim3kxfcj2";
};
};
};
@@ -11,13 +11,13 @@
buildPythonApplication rec {
pname = "git-machete";
version = "3.33.0";
version = "3.34.0";
src = fetchFromGitHub {
owner = "virtuslab";
repo = pname;
rev = "v${version}";
hash = "sha256-kzMjMyqaf4F/cRJ6+r9Ne+NUlG98iubKYqAm+NpmRtM=";
hash = "sha256-2Or4L3wrvqW7bvrJcgvK7rGqjqiob6k8CZc/XauguLo=";
};
nativeBuildInputs = [ installShellFiles ];
File diff suppressed because it is too large Load Diff
@@ -19,12 +19,8 @@ rustPlatform.buildRustPackage rec {
sha256 = "sha256-3B3P1PlzIlpVqHJMKWpEnWXGgD/IaiWM1FVKn0BtRj0=";
};
cargoLock = {
lockFile = ./Cargo.lock;
outputHashes = {
"livesplit-auto-splitting-0.1.0" = "sha256-/xQEVJH6m6nH5Z1kuOPEElOcOqJmiG9Q8cOx0e6p3Wc=";
};
};
useFetchCargoVendor = true;
cargoHash = "sha256-JHocpqDeF24Qn9lUr+YCnZqgckLhGRpWQD7WGCxVmd8=";
nativeBuildInputs = [
cmake
@@ -9,13 +9,13 @@
}:
mkHyprlandPlugin hyprland rec {
pluginName = "hyprsplit";
version = "0.47.2";
version = "0.48.0";
src = fetchFromGitHub {
owner = "shezdy";
repo = "hyprsplit";
rev = "refs/tags/v${version}";
hash = "sha256-g3yq1TNLc3HIMXqs2wY9kUgDYsN8GHhc77wIOXjyn6E=";
hash = "sha256-FTp5mkrrgo/plCFHuFnx+EtDnQQoChq0mdKpb2a4LrQ=";
};
nativeBuildInputs = [
+2 -2
View File
@@ -7,13 +7,13 @@
stdenv.mkDerivation rec {
pname = "ada";
version = "3.2.1";
version = "3.2.2";
src = fetchFromGitHub {
owner = "ada-url";
repo = "ada";
tag = "v${version}";
hash = "sha256-x58zGkuKEUqlJEdIvLFzwHZHJAzCsFV9EQCpi+zmV1o=";
hash = "sha256-Qag6cWybRxbQC7LvQmxLVcCw4RtMJ5TOSDwCmNs2XFA=";
};
nativeBuildInputs = [ cmake ];
+3 -3
View File
@@ -11,17 +11,17 @@
rustPlatform.buildRustPackage rec {
pname = "agate";
version = "3.3.13";
version = "3.3.14";
src = fetchFromGitHub {
owner = "mbrubeck";
repo = "agate";
rev = "v${version}";
hash = "sha256-VbGndkR7AdSDF9yWVUQToxlkpTPN8KljrxtJauHEqQ4=";
hash = "sha256-3IVl11eG9gSriOddgzgF0FecdldBxEOE/UXlFDKGyic=";
};
useFetchCargoVendor = true;
cargoHash = "sha256-zM1ih6J0wi5+UXiy7LnJuPbh33NcfulZNr7BBm5+cfs=";
cargoHash = "sha256-pVxXUFuHyQ7YBJ6cBv3wPK5aZOs2QIhKf9awwY/y1hw=";
nativeBuildInputs = [ pkg-config ];
+2 -2
View File
@@ -8,13 +8,13 @@
buildGoModule rec {
pname = "aliyun-cli";
version = "3.0.259";
version = "3.0.264";
src = fetchFromGitHub {
owner = "aliyun";
repo = "aliyun-cli";
tag = "v${version}";
hash = "sha256-HF8vGEIIHIlHET4buHPTijPeomv0YNwX0bOSQrnyITw=";
hash = "sha256-dTGpg2cIcAHsaF6AHfP3rqLHLSIflrkZrjlbnFEW5Pk=";
fetchSubmodules = true;
};
-47
View File
@@ -1,47 +0,0 @@
{
lib,
stdenv,
fetchFromGitHub,
mpir,
gmp,
mpfr,
flint,
}:
stdenv.mkDerivation rec {
pname = "antic";
version = "0.2.5";
src = fetchFromGitHub {
owner = "flintlib";
repo = "antic";
rev = "v${version}";
sha256 = "sha256-bQ2VvCS+lGro5qxs+qBz3RpUenxQTmTr+lm9BFZWYts=";
};
buildInputs = [
mpir
gmp
mpfr
flint
];
configureFlags = [
"--with-gmp=${gmp}"
"--with-mpir=${mpir}"
"--with-mpfr=${mpfr}"
"--with-flint=${flint}"
];
enableParallelBuilding = true;
doCheck = true;
meta = with lib; {
description = "Algebraic number theory library";
homepage = "https://github.com/flintlib/antic";
license = licenses.lgpl21Plus;
maintainers = with maintainers; [ smasher164 ];
platforms = platforms.unix;
};
}
-47
View File
@@ -1,47 +0,0 @@
{
lib,
stdenv,
fetchFromGitHub,
mpir,
gmp,
mpfr,
flint,
}:
stdenv.mkDerivation rec {
pname = "arb";
version = "2.23.0";
src = fetchFromGitHub {
owner = "fredrik-johansson";
repo = "arb";
rev = version;
sha256 = "sha256-dt9PZ3Xfn60rhmnxYo7CEzNTEUN/wMVAXe8U5PzUO9U=";
};
buildInputs = [
mpir
gmp
mpfr
flint
];
configureFlags = [
"--with-gmp=${gmp}"
"--with-mpir=${mpir}"
"--with-mpfr=${mpfr}"
"--with-flint=${flint}"
];
enableParallelBuilding = true;
doCheck = true;
meta = with lib; {
description = "Library for arbitrary-precision interval arithmetic";
homepage = "https://arblib.org/";
license = licenses.lgpl21Plus;
maintainers = teams.sage.members;
platforms = platforms.unix;
};
}
+3 -3
View File
@@ -12,13 +12,13 @@
rustPlatform.buildRustPackage (finalAttrs: {
pname = "ast-grep";
version = "0.36.1";
version = "0.36.2";
src = fetchFromGitHub {
owner = "ast-grep";
repo = "ast-grep";
tag = finalAttrs.version;
hash = "sha256-u2eRdOreThaTAe3Uo4C6K3u3qtfW+sow9w+Q3uqtPGs=";
hash = "sha256-Ma4HwjbKujPEqJVXwNVV8HgszLlqDw3ogVoHwdKfwpU=";
};
# error: linker `aarch64-linux-gnu-gcc` not found
@@ -27,7 +27,7 @@ rustPlatform.buildRustPackage (finalAttrs: {
'';
useFetchCargoVendor = true;
cargoHash = "sha256-Nmmka1AxWhY3InOSmxiL9gg6sznrP8yQuC0EgAywATA=";
cargoHash = "sha256-+qOrRGao2szGHvLE5DGccKMwKApYoAyK+moPtMMKhdE=";
nativeBuildInputs = [ installShellFiles ];
+2 -2
View File
@@ -16,11 +16,11 @@
stdenv.mkDerivation rec {
pname = "atop";
version = "2.11.0";
version = "2.11.1";
src = fetchurl {
url = "https://www.atoptool.nl/download/atop-${version}.tar.gz";
hash = "sha256-m5TGZmAu//e/QC7M5wbDR/OMOctjSY+dOWJoYeVkbiA=";
hash = "sha256-d2UPefnjiLb1Zm3BE4SYlFdaKbtN4huM1Ydnv4qQUVQ=";
};
nativeBuildInputs =
+42 -40
View File
@@ -1,55 +1,48 @@
{ lib
, stdenv
, fetchFromGitLab
, appstream-glib
, cargo
, desktop-file-utils
, meson
, ninja
, pkg-config
, rustPlatform
, rustc
, wrapGAppsHook4
, gdk-pixbuf
, glib
, gst_all_1
, gtk4
, libadwaita
, openssl
, pipewire
, sqlite
, wayland
, zbar
, glycin-loaders
, nix-update-script
{
lib,
stdenv,
fetchFromGitLab,
appstream-glib,
cargo,
desktop-file-utils,
meson,
ninja,
pkg-config,
rustPlatform,
rustc,
wrapGAppsHook4,
gdk-pixbuf,
glib,
gst_all_1,
gtk4,
libadwaita,
openssl,
pipewire,
sqlite,
wayland,
zbar,
glycin-loaders,
nix-update-script,
}:
stdenv.mkDerivation rec {
stdenv.mkDerivation (finalAttrs: {
pname = "authenticator";
version = "4.6.0";
version = "4.6.2";
src = fetchFromGitLab {
domain = "gitlab.gnome.org";
owner = "World";
repo = "Authenticator";
rev = version;
hash = "sha256-Kq/J/1+ROibR6NjfH/g760/CT4DZg1hIcsXQ4MHzrDc=";
tag = finalAttrs.version;
hash = "sha256-UvHIVUed4rxmjliaZ7jnwCjiHyvUDihoJyG3G+fYtow=";
};
cargoDeps = rustPlatform.fetchCargoVendor {
inherit src;
name = "${pname}-${version}";
hash = "sha256-SQDr4jdCZzuizYWwJ5crrunqN8O2bCUv5gIslBduAZY=";
inherit (finalAttrs) pname version src;
hash = "sha256-iOIGm3egVtVM6Eb3W5/ys9nQV5so0dnv2ZODjQwrVyw=";
};
preFixup = ''
gappsWrapperArgs+=(
# vp8enc preset
--prefix GST_PRESET_PATH : "${gst_all_1.gst-plugins-good}/share/gstreamer-1.0/presets"
# See https://gitlab.gnome.org/sophie-h/glycin/-/blob/0.1.beta.2/glycin/src/config.rs#L44
--prefix XDG_DATA_DIRS : "${glycin-loaders}/share"
)
'';
strictDeps = true;
nativeBuildInputs = [
appstream-glib
@@ -81,6 +74,15 @@ stdenv.mkDerivation rec {
zbar
];
preFixup = ''
gappsWrapperArgs+=(
# vp8enc preset
--prefix GST_PRESET_PATH : "${gst_all_1.gst-plugins-good}/share/gstreamer-1.0/presets"
# See https://gitlab.gnome.org/sophie-h/glycin/-/blob/0.1.beta.2/glycin/src/config.rs#L44
--prefix XDG_DATA_DIRS : "${glycin-loaders}/share"
)
'';
passthru = {
updateScript = nix-update-script { };
};
@@ -93,4 +95,4 @@ stdenv.mkDerivation rec {
maintainers = with lib.maintainers; [ austinbutler ] ++ lib.teams.gnome-circle.members;
platforms = lib.platforms.linux;
};
}
})
+2 -2
View File
@@ -9,10 +9,10 @@
stdenv.mkDerivation rec {
pname = "avfs";
version = "1.1.5";
version = "1.2.0";
src = fetchurl {
url = "mirror://sourceforge/avf/${version}/${pname}-${version}.tar.bz2";
sha256 = "sha256-rZ87ZBBNYAmgWMcPZwiPeZMJv4UZsUsVSvrSJqRScs8=";
sha256 = "sha256-olqOxDwe4XJiThpMec5mobkwhBzbVFtyXx7GS8q+iJw=";
};
nativeBuildInputs = [ pkg-config ];
+3 -3
View File
@@ -53,13 +53,13 @@ let
in
stdenv.mkDerivation (finalAttrs: {
pname = "azahar";
version = "2120.1";
version = "2120.2";
src = fetchzip {
# TODO: use this when https://github.com/azahar-emu/azahar/issues/779 is resolved
# url = "https://github.com/azahar-emu/azahar/releases/download/${finalAttrs.version}/lime3ds-unified-source-${finalAttrs.version}.tar.xz";
url = "https://github.com/azahar-emu/azahar/releases/download/${finalAttrs.version}/azahar-unified-source-20250322-6ecee96.tar.xz";
hash = "sha256-d4JHp/BZEQTKErh476NZoizQjgAldR19Waq9GQg2Ebk=";
url = "https://github.com/azahar-emu/azahar/releases/download/${finalAttrs.version}/azahar-unified-source-20250329-32bb14f.tar.xz";
hash = "sha256-OyAc4nePQDuuwb+/ABnNe5ihPqMEoAqNeCYvME7SIio=";
};
nativeBuildInputs = [
+2 -2
View File
@@ -7,13 +7,13 @@
buildGoModule rec {
pname = "benthos";
version = "4.45.1";
version = "4.46.0";
src = fetchFromGitHub {
owner = "redpanda-data";
repo = "benthos";
tag = "v${version}";
hash = "sha256-pbbeVNpGCjLxhesq88aoeTnaawMgDTCx0wDA6Y2sXsM=";
hash = "sha256-txIzW6qU4XZyvt5ndIjmYwo4D2gWlD4CjEI591k3b8s=";
};
proxyVendor = true;
+2 -2
View File
@@ -16,11 +16,11 @@ let
in
stdenv.mkDerivation rec {
pname = "bililiverecorder";
version = "2.15.1";
version = "2.15.2";
src = fetchzip {
url = "https://github.com/BililiveRecorder/BililiveRecorder/releases/download/v${version}/BililiveRecorder-CLI-any.zip";
hash = "sha256-ugzFiuLe+Al3aRvEM3D4kqnaFrFR4Pr95UlEg0VGvvU=";
hash = "sha256-cbyeMpbPKr9m8o6EaioNIkEleGTQ9ZkYkRyJiX079BA=";
stripRoot = false;
};
@@ -18,8 +18,6 @@
cudaSupport ? config.cudaSupport,
dbus,
embree,
fetchgit,
fetchpatch2,
fetchzip,
ffmpeg,
fftw,
@@ -56,7 +54,7 @@
makeWrapper,
mesa,
openal,
opencollada,
opencollada-blender,
opencolorio,
openexr,
openimagedenoise,
@@ -114,42 +112,15 @@ in
stdenv'.mkDerivation (finalAttrs: {
pname = "blender";
version = "4.3.2";
version = "4.4.0";
srcs = [
(fetchzip {
name = "source";
url = "https://download.blender.org/source/blender-${finalAttrs.version}.tar.xz";
hash = "sha256-LCU2JpQbvQ+W/jC+H8J2suh+X5sTLOG9TcE2EeHqVh4=";
})
(fetchgit {
name = "assets";
url = "https://projects.blender.org/blender/blender-assets.git";
rev = "v${finalAttrs.version}";
fetchLFS = true;
hash = "sha256-B/UibETNBEUAO1pLCY6wR/Mmdk2o9YyNs6z6pV8dBJI=";
})
];
srcs = fetchzip {
name = "source";
url = "https://download.blender.org/source/blender-${finalAttrs.version}.tar.xz";
hash = "sha256-pAzOayAPyRYgTixAyg2prkUtI70uFulRuBYhgU9ZNw4=";
};
postUnpack = ''
chmod -R u+w *
rm -r assets/working
mv assets --target-directory source/release/datafiles/
'';
sourceRoot = "source";
patches = [
./draco.patch
(fetchpatch2 {
url = "https://gitlab.archlinux.org/archlinux/packaging/packages/blender/-/raw/4b6214600e11851d7793256e2f6846a594e6f223/ffmpeg-7-1.patch";
hash = "sha256-YXXqP/+79y3f41n3cJ3A1RBzgdoYqfKZD/REqmWYdgQ=";
})
(fetchpatch2 {
url = "https://gitlab.archlinux.org/archlinux/packaging/packages/blender/-/raw/4b6214600e11851d7793256e2f6846a594e6f223/ffmpeg-7-2.patch";
hash = "sha256-mF6IA/dbHdNEkBN5XXCRcLIZ/8kXoirNwq7RDuLRAjw=";
})
] ++ lib.optional stdenv.hostPlatform.isDarwin ./darwin.patch;
patches = [ ] ++ lib.optional stdenv.hostPlatform.isDarwin ./darwin.patch;
postPatch =
(lib.optionalString stdenv.hostPlatform.isDarwin ''
@@ -201,6 +172,7 @@ stdenv'.mkDerivation (finalAttrs: {
"-DWITH_OPENIMAGEDENOISE=${if openImageDenoiseSupport then "ON" else "OFF"}"
"-DWITH_OPENSUBDIV=ON"
"-DWITH_OPENVDB=ON"
"-DWITH_PIPEWIRE=OFF"
"-DWITH_PULSEAUDIO=OFF"
"-DWITH_PYTHON_INSTALL=OFF"
"-DWITH_PYTHON_INSTALL_NUMPY=OFF"
@@ -330,7 +302,7 @@ stdenv'.mkDerivation (finalAttrs: {
wayland
wayland-protocols
]
++ lib.optional colladaSupport opencollada
++ lib.optional colladaSupport opencollada-blender
++ lib.optional jackaudioSupport libjack2
++ lib.optional spaceNavSupport libspnav
++ lib.optionals vulkanSupport [
@@ -365,9 +337,6 @@ stdenv'.mkDerivation (finalAttrs: {
mkdir $out/Applications
mv $out/Blender.app $out/Applications
''
+ lib.optionalString stdenv.hostPlatform.isLinux ''
mv $out/share/blender/${lib.versions.majorMinor finalAttrs.version}/python{,-ext}
''
+ ''
buildPythonPath "$pythonPath"
wrapProgram $blenderExecutable \
+2 -2
View File
@@ -20,11 +20,11 @@
stdenv.mkDerivation rec {
pname = "btrfs-progs";
version = "6.13";
version = "6.14";
src = fetchurl {
url = "mirror://kernel/linux/kernel/people/kdave/btrfs-progs/btrfs-progs-v${version}.tar.xz";
hash = "sha256-ZbPyERellPgAE7QyYg7sxqfisMBeq5cTb/UGx01z7po=";
hash = "sha256-31q4BPyzbikcQq2DYfgBrR4QJBtDvTBP5Qzj355+PaE=";
};
nativeBuildInputs =
+3 -3
View File
@@ -10,16 +10,16 @@
buildGoModule rec {
pname = "buf";
version = "1.50.1";
version = "1.51.0";
src = fetchFromGitHub {
owner = "bufbuild";
repo = "buf";
rev = "v${version}";
hash = "sha256-n4X8Wgi/5z6fteR+uxr68R3kD7eorMzlAW8jacTZGHg=";
hash = "sha256-/6SDsIVyorDWjOkdUB1t0vAA2VLy6MiGyiFo+2rUfEU=";
};
vendorHash = "sha256-HU4Di8ri2d93EUscCx8/gRiEJdLTcnKUaQ4kesKfZ+w=";
vendorHash = "sha256-4GD2yNfYTQobPeJ+zPQ+ECDTeNUi4PK8oXSxpBF/4Wk=";
patches = [
# Skip a test that requires networking to be available to work.
-51
View File
@@ -1,51 +0,0 @@
{
lib,
stdenv,
fetchFromGitHub,
mpir,
gmp,
mpfr,
flint,
arb,
antic,
}:
stdenv.mkDerivation rec {
pname = "calcium";
version = "0.4.1";
src = fetchFromGitHub {
owner = "fredrik-johansson";
repo = "calcium";
rev = version;
sha256 = "sha256-Ony2FGMnWyNqD7adGeiDtysHNZ4ClMvQ1ijVPSHJmyc=";
};
buildInputs = [
mpir
gmp
mpfr
flint
arb
antic
];
configureFlags = [
"--with-gmp=${gmp}"
"--with-mpir=${mpir}"
"--with-mpfr=${mpfr}"
"--with-flint=${flint}"
"--with-arb=${arb}"
"--with-antic=${antic}"
];
enableParallelBuilding = true;
meta = with lib; {
description = "C library for exact computation with real and complex numbers";
homepage = "https://fredrikj.net/calcium/";
license = licenses.lgpl21Plus;
maintainers = with maintainers; [ smasher164 ];
platforms = platforms.unix;
};
}
+3 -3
View File
@@ -10,15 +10,15 @@
rustPlatform.buildRustPackage rec {
pname = "cargo-bolero";
version = "0.13.0";
version = "0.13.1";
src = fetchCrate {
inherit pname version;
hash = "sha256-xmSPIHD9wZoABv+6LZK3SCdakavGchjcRxhZPmSNAaE=";
hash = "sha256-73TjQYkSng93tryaZpBtwq3MdVYZC8enEibx6yTdEKw=";
};
useFetchCargoVendor = true;
cargoHash = "sha256-vh/EIMrpolwd/o0ihcjVlJy2XTp7JzlUkoZj0sCnQKg=";
cargoHash = "sha256-0T7KyTQ5kJ4mv5lLxYeo7hxLjSkrmjfenrNV+7GL1hM=";
buildInputs = [
libbfd
+5 -4
View File
@@ -14,6 +14,8 @@
glib,
glib-networking,
webkitgtk_4_0,
jq,
moreutils,
}:
rustPlatform.buildRustPackage rec {
@@ -46,10 +48,9 @@ rustPlatform.buildRustPackage rec {
};
in
''
substituteInPlace tauri.conf.json \
--replace-warn '"distDir": "../cinny/dist",' '"distDir": "${cinny'}",'
substituteInPlace tauri.conf.json \
--replace-warn '"cd cinny && npm run build"' '""'
${lib.getExe jq} \
'del(.tauri.updater) | .build.distDir = "${cinny'}" | del(.build.beforeBuildCommand)' tauri.conf.json \
| ${lib.getExe' moreutils "sponge"} tauri.conf.json
'';
postInstall =
+2 -2
View File
@@ -19,12 +19,12 @@ let
in
stdenv.mkDerivation rec {
pname = "circt";
version = "1.110.0";
version = "1.111.0";
src = fetchFromGitHub {
owner = "llvm";
repo = "circt";
rev = "firtool-${version}";
hash = "sha256-v5yiUFfCFj4UkcbHXwtVYZPLCp/NFmXrA9e6YkCf6jY=";
hash = "sha256-ztPRPO8I7K1dBYD/puLvnYd6JkXf/rpdEe3AOUAmsCM=";
fetchSubmodules = true;
};
+43
View File
@@ -0,0 +1,43 @@
{
lib,
rustPlatform,
fetchFromGitHub,
pkg-config,
openssl,
nix-update-script,
}:
rustPlatform.buildRustPackage (finalAttrs: {
pname = "cliflux";
version = "1.8.0";
src = fetchFromGitHub {
owner = "spencerwi";
repo = "cliflux";
tag = "v${finalAttrs.version}";
hash = "sha256-AGkinlN5Ng0LXau6U9Ft+yMIFMpbrbup3R3c3UlglEM=";
};
useFetchCargoVendor = true;
cargoHash = "sha256-3nNvPQMnYRZlhUab0MSf39vMNidpMLJh56JSjlsrYAg=";
nativeBuildInputs = [
pkg-config
];
buildInputs = [
openssl
];
passthru.updateScript = nix-update-script { };
meta = {
description = "Terminal client for Miniflux RSS reader";
homepage = "https://github.com/spencerwi/cliflux";
changelog = "https://github.com/spencerwi/cliflux/blob/v${finalAttrs.version}/CHANGELOG.md";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ arthsmn ];
mainProgram = "cliflux";
};
})
+2 -2
View File
@@ -7,13 +7,13 @@
buildGoModule rec {
pname = "cloud-nuke";
version = "0.39.0";
version = "0.40.0";
src = fetchFromGitHub {
owner = "gruntwork-io";
repo = pname;
tag = "v${version}";
hash = "sha256-r9/5A1f6GSDgF5/GM4UKxoCYUsc5xsZpTwDGDUySDfQ=";
hash = "sha256-zf/aHRZ1WhHwXn+1OJEiTNlOLedP7zXQLuFF2C4D0mw=";
};
vendorHash = "sha256-AiPy/lmqrNeDWM7/pXmzHCbSWZdqdXnZNATlyi6oAGc=";
+2 -2
View File
@@ -7,13 +7,13 @@
stdenv.mkDerivation (finalAttrs: {
pname = "colorized-logs";
version = "2.6";
version = "2.7";
src = fetchFromGitHub {
owner = "kilobyte";
repo = "colorized-logs";
rev = "v${finalAttrs.version}";
hash = "sha256-QiZeIYeIWA3C7wYi2G2EItdW+jLjVrCbIYllur/RtY8=";
hash = "sha256-m7M/1OuWDUflxTA4E6cSeg7BqkEW8eB/wIgq+z97K/g=";
};
nativeBuildInputs = [
@@ -7,13 +7,13 @@
buildGoModule rec {
pname = "coroot-node-agent";
version = "1.23.14";
version = "1.23.15";
src = fetchFromGitHub {
owner = "coroot";
repo = "coroot-node-agent";
rev = "v${version}";
hash = "sha256-3GnKcoEAJVRywtXSXGcP/odmXa4/tD8Y4nZqUTh701w=";
hash = "sha256-3rr8LWaEhhAvzJisVj2uLK3O5us5/XEOpl7RFL2GBxw=";
};
vendorHash = "sha256-SxyIlyDHuu8Ls1+/rujWE9elZiTfSYWIrV8vP5xsqTU=";
+3 -3
View File
@@ -9,16 +9,16 @@
buildGoModule rec {
pname = "crossplane-cli";
version = "1.19.0";
version = "1.19.1";
src = fetchFromGitHub {
owner = "crossplane";
repo = "crossplane";
rev = "v${version}";
hash = "sha256-HSTECDo6jPa9yXziWxPnOvtCC0Xai6yG2orAn1AfAGw=";
hash = "sha256-pQIiVdDWy3+PrqhvVHDwgGHHCQCYWtWt9ympc8QbBcE=";
};
vendorHash = "sha256-0Oefkc/T8ukPvbVgnvI+2rUAectTxawm/XR1KG04LpM=";
vendorHash = "sha256-adf1CyrADCa4Uc4e4yWv47S/TIl5YUPJUox+/VlaMRA=";
ldflags = [
"-s"
+3 -3
View File
@@ -35,7 +35,7 @@ let
davinci = (
stdenv.mkDerivation rec {
pname = "davinci-resolve${lib.optionalString studioVariant "-studio"}";
version = "19.1.3";
version = "19.1.4";
nativeBuildInputs = [
(appimage-run.override { buildFHSEnv = buildFHSEnvChroot; })
@@ -57,9 +57,9 @@ let
outputHashAlgo = "sha256";
outputHash =
if studioVariant then
"sha256-aAKE+AY/a2XjVzdU0VXT3ekFrTp3rO6zUd7pRTTDc9E="
"sha256-OTL83suZXt7DxDz+89zIRJD8R25/HZUQMMGlfS+Ow4I="
else
"sha256-CCr4/h0W1fhzUT4o6WyX2hBodzy9iqVLZwzdplzq9SI=";
"sha256-2u1gkaL3vdI+4RnPl5bEXE+zeRhg2BzPWjni015ISWI=";
impureEnvVars = lib.fetchers.proxyImpureEnvVars;
+5 -5
View File
@@ -2,11 +2,11 @@
{ fetchLibrustyV8 }:
fetchLibrustyV8 {
version = "134.5.0";
version = "135.0.0";
shas = {
x86_64-linux = "sha256-Mo7PJoU/GuEIPCIDeLshfwNoYpkpD5NilOljFRgjLgw=";
aarch64-linux = "sha256-h51n1SosveRhKlq47pnOMUMi5Avg23GLdMW24mj//PU=";
x86_64-darwin = "sha256-76AP6aLuPmf6wC3yrfI/dkomOAjqVJjJPkUQxjAgDhI=";
aarch64-darwin = "sha256-IpiLBL51Q06t402bwE8bFQew5dPuHBNvkFC8gsWXvsY=";
x86_64-linux = "sha256-jA/cUjzT3KhpBGFyxZSp61X05PhD6XKAGtZyKdnts7U=";
aarch64-linux = "sha256-+jqLUIv96994e1fFJcYCQNJJ8smF18sU76lq0sirszo=";
x86_64-darwin = "sha256-atemob6PgxMncD4F+b5mfleTHSTMdKvJAwFD9ul/eJ4=";
aarch64-darwin = "sha256-0fDaHgvUTDFKEhQp7WaNe+54e3+GScGO5+8+Qa89nLQ=";
};
}
+3 -3
View File
@@ -20,17 +20,17 @@ let
in
rustPlatform.buildRustPackage rec {
pname = "deno";
version = "2.2.4";
version = "2.2.6";
src = fetchFromGitHub {
owner = "denoland";
repo = "deno";
tag = "v${version}";
hash = "sha256-gcUd4N2rTVYprBxx5T2RjG+0uZ090KjXPswYzGU5+14=";
hash = "sha256-Ner3178YukKKqMVQAGpU3bE+fxo9UXrRPp7iqCFSUjs=";
};
useFetchCargoVendor = true;
cargoHash = "sha256-V2dKiiTYAsUhq6Pr+z/ga3qtKI43mfzqgBDSAhcBVKo=";
cargoHash = "sha256-dakHDPGv7trd2Kib9Hk5jHZHR3pzk1YIyJW/0uY6WSg=";
postPatch = ''
# Use patched nixpkgs libffi in order to fix https://github.com/libffi/libffi/pull/857
+3 -3
View File
@@ -9,16 +9,16 @@
buildGoModule rec {
pname = "dgraph";
version = "24.1.0";
version = "24.1.1";
src = fetchFromGitHub {
owner = "dgraph-io";
repo = "dgraph";
rev = "v${version}";
sha256 = "sha256-Cev0jaFxOu+SoFnBnb2Zlb+z0Su7erluLjizyYmkBLg=";
sha256 = "sha256-WAjoAbd8tGpianZXfrvRbRCdbkVP/gO/ekotT5KyrG8=";
};
vendorHash = "sha256-l+9A///gk1xNAW3xQ974LQnQ4M+Zf4RJCL7QmnuWiMg=";
vendorHash = "sha256-eOo2ihaabdhDRATIc5C4YEMBcA0Xl5xzBKW5GJhrTOA=";
doCheck = false;
+2 -2
View File
@@ -106,11 +106,11 @@ in
# Note: when upgrading this package, please run the list-missing-tools.sh script as described below!
python.pkgs.buildPythonApplication rec {
pname = "diffoscope";
version = "289";
version = "293";
src = fetchurl {
url = "https://diffoscope.org/archive/diffoscope-${version}.tar.bz2";
hash = "sha256-EvIUBGXuZjzZHjNAwLWNhLrqAM73DDKr/py2mX6vt3M=";
hash = "sha256-DZLeZhhWHcBGbO0lCucs5+6kXfwKk71Iwxhjej0ClLE=";
};
outputs = [
@@ -9,20 +9,20 @@
buildGoModule rec {
pname = "docker-credential-gcr";
version = "2.1.26";
version = "2.1.27";
src = fetchFromGitHub {
owner = "GoogleCloudPlatform";
repo = "docker-credential-gcr";
tag = "v${version}";
hash = "sha256-4sgUeEXBfP0qaR92ZulqAf1ObQBDbSjEHqhAqa0EV2Q=";
hash = "sha256-WoTbqqbFoIS525uytYAYmzrFbRYBi1C65Z5EDwzu6GI=";
};
postPatch = ''
rm -rf ./test
'';
vendorHash = "sha256-YcBDurQjGhjds3CB63gTjsPbsvlHJnGxWbsFrx3vCy4=";
vendorHash = "sha256-n6QnVPBCGJpaHxywYjk+qCN0FXmQAvkQPu6vHPv5QJA=";
env.CGO_ENABLED = 0;
+3 -3
View File
@@ -8,7 +8,7 @@
let
themeName = "Dracula";
version = "4.0.0-unstable-2025-03-13";
version = "4.0.0-unstable-2025-03-22";
in
stdenvNoCC.mkDerivation {
pname = "dracula-theme";
@@ -17,8 +17,8 @@ stdenvNoCC.mkDerivation {
src = fetchFromGitHub {
owner = "dracula";
repo = "gtk";
rev = "fc59294cf67110f6487f5fd06d3c845ffffdf1a9";
hash = "sha256-hFiYb1KqYvH66OIhmIUP3DfkSkuYgE78ihjkEaAY7LM=";
rev = "e7f118ac0434988800453bc30671b55ccfe02bd9";
hash = "sha256-f7bYYkAm4f0kSaDY1X2ZLLxlXwzUdFtjHkIeX0QmX9w=";
};
propagatedUserEnvPkgs = [
+2 -2
View File
@@ -20,11 +20,11 @@ let
in
stdenvNoCC.mkDerivation (finalAttrs: {
pname = "e-imzo";
version = "4.64";
version = "4.71";
src = fetchurl {
url = "https://dls.yt.uz/E-IMZO-v${finalAttrs.version}.tar.gz";
hash = "sha256-ej99PJrO9ufJ8+VlC/HpfvS/bGBtKqUWcsRyiZRlU4c=";
hash = "sha256-sV/xcUaBSqJw0QHkXcbkn5nsm2iL3zTt0Uoa2O/H64A=";
};
installPhase = ''
@@ -1,7 +1,7 @@
{
"version" = "1.11.95";
"version" = "1.11.96";
"hashes" = {
"desktopSrcHash" = "sha256-0OCL1m+/FOdmp7npavnAygpuEryBypie+yR1eQK1eLM=";
"desktopYarnHash" = "sha256-h5ZjpInF/qh/Cm46uzi1tTEUIbmHC/muV6X/FxGyFms=";
"desktopSrcHash" = "sha256-oTU/Pvl4gBp69OrUrXEYXupl0WphsEWt32sB4v6T+gA=";
"desktopYarnHash" = "sha256-zMdSA/CkMDXirWZ2uCPTgZ5iErV7rGyR+xcLh9sPDA8=";
};
}
@@ -1,7 +1,7 @@
{
"version" = "1.11.95";
"version" = "1.11.96";
"hashes" = {
"webSrcHash" = "sha256-JS+lwPRj4Fb+UZNATS7IFMfytqRou+aIpjDVjI+iqao=";
"webYarnHash" = "sha256-Aw0wDGE0WbI975y+J2FVxlDrHcPeBDkHiD/7W8eTf1E=";
"webSrcHash" = "sha256-EfSQEyMG9v5Boev98FyfzLA3hZLzxSGxAnZFfbc2aVA=";
"webYarnHash" = "sha256-Dp7WXEjWSDQjpmnJUrloIQau6is8YxTYzJmnQBIk+Ys=";
};
}
@@ -5,52 +5,48 @@
openssl,
pkg-config,
rustPlatform,
Security,
SystemConfiguration,
nix-update-script,
versionCheckHook,
}:
rustPlatform.buildRustPackage rec {
pname = "feroxbuster";
version = "2.10.3";
version = "2.11.0";
src = fetchFromGitHub {
owner = "epi052";
repo = pname;
repo = "feroxbuster";
tag = "v${version}";
hash = "sha256-3cznGVpZISLD2TbsHYyYYUTD55NmgBdNJ44V4XfZ40k=";
hash = "sha256-/NgGlXYMxGxpX93SJ6gWgZW21cSSZsgo/WMvRuLw+Bw=";
};
# disable linker overrides on aarch64-linux
postPatch = ''
rm .cargo/config
'';
useFetchCargoVendor = true;
cargoHash = "sha256-DjmMoATagWGK2DHMc6YB0u2X5x5hnqgCwIGe3+Wmdic=";
cargoHash = "sha256-L5s+P9eerv+O2vBUczGmn0rUMbHQtnF8hVa22wOrTGo=";
OPENSSL_NO_VENDOR = true;
nativeBuildInputs = [
pkg-config
versionCheckHook
];
buildInputs =
[
openssl
]
++ lib.optionals stdenv.hostPlatform.isDarwin [
Security
SystemConfiguration
];
buildInputs = [ openssl ];
# Tests require network access
doCheck = false;
doInstallCheck = true;
versionCheckProgramArg = [ "--version" ];
passthru.updateScript = nix-update-script { };
meta = with lib; {
description = "Fast, simple, recursive content discovery tool";
description = "Recursive content discovery tool";
homepage = "https://github.com/epi052/feroxbuster";
changelog = "https://github.com/epi052/feroxbuster/releases/tag/v${version}";
license = with licenses; [ mit ];
changelog = "https://github.com/epi052/feroxbuster/releases/tag/v${src.tag}";
license = licenses.mit;
maintainers = with maintainers; [ fab ];
platforms = platforms.unix;
mainProgram = "feroxbuster";
@@ -8,11 +8,11 @@
let
pname = "fiddler-everywhere";
version = "6.2.0";
version = "6.3.0";
src = fetchurl {
url = "https://downloads.getfiddler.com/linux/fiddler-everywhere-${version}.AppImage";
hash = "sha256-bUFogQkMOr0n95wYd/M9eq9Y6xxVFJTaznBnmFMvjC4=";
hash = "sha256-AqwIzjnSq579cSgBbslPXINhXAtGvl8Z7nOWdHzCmro=";
};
appimageContents = appimageTools.extract {
+2 -2
View File
@@ -8,14 +8,14 @@
}:
python3Packages.buildPythonApplication rec {
pname = "fittrackee";
version = "0.9.2";
version = "0.9.3";
pyproject = true;
src = fetchFromGitHub {
owner = "SamR1";
repo = "FitTrackee";
tag = "v${version}";
hash = "sha256-O5dtices32EV/G9cefhewvr+OGnvq598YmwtwWaI3FI=";
hash = "sha256-ofFQJqBKGavXatlpm1bsM2+A1My/9dSzl9X/o9lVDb8=";
};
build-system = [
+3 -3
View File
@@ -14,13 +14,13 @@
stdenv.mkDerivation {
pname = "flatter";
version = "0-unstable-2025-02-03";
version = "0-unstable-2025-03-28";
src = fetchFromGitHub {
owner = "keeganryan";
repo = "flatter";
rev = "96993e47874c302395721d76d06f7ab4fee09839";
hash = "sha256-eMZZsgLeTzMAHohmvR13KQERtYQpB2nj/v5MCKtGFaI=";
rev = "13c4ef0f0abe7ad5db88b19a9196c00aa5cf067c";
hash = "sha256-k0FcIJARaXi602eqMSum+q1IaCs30Xi0hB/ZNNkXruw=";
};
strictDeps = true;

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