Merge master into staging-next

This commit is contained in:
nixpkgs-ci[bot]
2026-02-07 00:22:46 +00:00
committed by GitHub
167 changed files with 1058 additions and 650 deletions
+5 -1
View File
@@ -122,7 +122,11 @@ async function checkTargetBranch({ github, context, core, dry }) {
].join('\n'),
)
if (maxRebuildCount >= 1000 && !isExemptHomeAssistantUpdate) {
if (
maxRebuildCount >= 1000 &&
!isExemptHomeAssistantUpdate &&
!isExemptKernelUpdate
) {
const desiredBranch =
base === 'master' ? 'staging' : `staging-${split(base).version}`
const body = [
+2 -2
View File
@@ -116,14 +116,14 @@ Here is a second example, this time using a source archive generated with `dune-
buildDunePackage,
}:
buildDunePackage (finalAtts: {
buildDunePackage (finalAttrs: {
pname = "wtf8";
version = "1.0.2";
minimalOCamlVersion = "4.02";
src = fetchurl {
url = "https://github.com/flowtype/ocaml-wtf8/releases/download/v${finalAtts.version}/wtf8-v${finalAtts.version}.tbz";
url = "https://github.com/flowtype/ocaml-wtf8/releases/download/v${finalAttrs.version}/wtf8-v${finalAttrs.version}.tbz";
hash = "sha256-d5/3KUBAWRj8tntr4RkJ74KWW7wvn/B/m1nx0npnzyc=";
};
@@ -105,7 +105,7 @@ In addition to numerous new and upgraded packages, this release has the followin
- [K40-Whisperer](https://www.scorchworks.com/K40whisperer/k40whisperer.html), a program to control cheap Chinese laser cutters. Available as [programs.k40-whisperer.enable](#opt-programs.k40-whisperer.enable). Users must add themselves to the `k40` group to be able to access the device.
- [kanidm](https://kanidm.github.io/kanidm/stable/), an identity management server written in Rust. Available as [services.kanidm](#opt-services.kanidm.enableServer)
- [kanidm](https://kanidm.github.io/kanidm/stable/), an identity management server written in Rust. Available as [services.kanidm](#opt-services.kanidm.server.enable) (renamed to `services.kanidm.server.enable` in 26.05).
- [Maddy](https://maddy.email/), a free an open source mail server. Available as [services.maddy](#opt-services.maddy.enable).
@@ -149,6 +149,11 @@ See <https://github.com/NixOS/nixpkgs/issues/481673>.
- `services.slurm` now supports slurmrestd usage through the `services.slurm.rest` NixOS options.
- `services.kanidm` options for server, client and unix were moved under dedicated namespaces.
For each component `enableComponent` and `componentSettings` are now `component.enable` and
`component.settings`. The unix module now supports using SSH keys from Kanidm via
`services.kanidm.unix.sshIntegration = true`.
- `glibc` has been updated to version 2.42.
This version no longer makes the stack executable when a shared library requires this. A symptom
+5 -5
View File
@@ -772,7 +772,7 @@ let
}
{
name = "kanidm";
enable = config.services.kanidm.enablePam;
enable = config.services.kanidm.unix.enable;
control = "sufficient";
modulePath = "${config.services.kanidm.package}/lib/pam_kanidm.so";
settings = {
@@ -1139,7 +1139,7 @@ let
}
{
name = "kanidm";
enable = config.services.kanidm.enablePam;
enable = config.services.kanidm.unix.enable;
control = "sufficient";
modulePath = "${config.services.kanidm.package}/lib/pam_kanidm.so";
settings = {
@@ -1248,7 +1248,7 @@ let
}
{
name = "kanidm";
enable = config.services.kanidm.enablePam;
enable = config.services.kanidm.unix.enable;
control = "sufficient";
modulePath = "${config.services.kanidm.package}/lib/pam_kanidm.so";
}
@@ -1412,7 +1412,7 @@ let
}
{
name = "kanidm";
enable = config.services.kanidm.enablePam;
enable = config.services.kanidm.unix.enable;
control = "optional";
modulePath = "${config.services.kanidm.package}/lib/pam_kanidm.so";
}
@@ -2339,7 +2339,7 @@ in
# Include the PAM modules in the system path mostly for the manpages.
[ package ]
++ lib.optional config.users.ldap.enable pam_ldap
++ lib.optional config.services.kanidm.enablePam config.services.kanidm.package
++ lib.optional config.services.kanidm.unix.enable config.services.kanidm.package
++ lib.optional config.services.sssd.enable pkgs.sssd
++ lib.optionals config.security.pam.krb5.enable [
pam_krb5
+115 -64
View File
@@ -31,6 +31,7 @@ let
mkOption
mkOrder
mkPackageOption
mkRenamedOptionModule
optional
optionals
optionalString
@@ -44,9 +45,9 @@ let
settingsFormat = pkgs.formats.toml { };
# Remove null values, so we can document optional values that don't end up in the generated TOML file.
filterConfig = converge (filterAttrsRecursive (_: v: v != null));
serverConfigFile = settingsFormat.generate "server.toml" (filterConfig cfg.serverSettings);
clientConfigFile = settingsFormat.generate "kanidm-config.toml" (filterConfig cfg.clientSettings);
unixConfigFile = settingsFormat.generate "kanidm-unixd.toml" (filterConfig cfg.unixSettings);
serverConfigFile = settingsFormat.generate "server.toml" (filterConfig cfg.server.settings);
clientConfigFile = settingsFormat.generate "kanidm-config.toml" (filterConfig cfg.client.settings);
unixConfigFile = settingsFormat.generate "kanidm-unixd.toml" (filterConfig cfg.unix.settings);
provisionSecretFiles = filter (x: x != null) (
[
cfg.provision.idmAdminPasswordFile
@@ -56,11 +57,11 @@ let
++ mapAttrsToList (_: x: x.basicSecretFile) cfg.provision.systems.oauth2
);
secretPaths = [
cfg.serverSettings.tls_chain
cfg.serverSettings.tls_key
cfg.server.settings.tls_chain
cfg.server.settings.tls_key
]
++ optionals cfg.provision.enable provisionSecretFiles;
enableServerBackup = cfg.enableServer && (cfg.serverSettings.online_backup.versions != 0);
enableServerBackup = cfg.server.enable && (cfg.server.settings.online_backup.versions != 0);
# Merge bind mount paths and remove paths where a prefix is already mounted.
# This makes sure that if e.g. the tls_chain is in the nix store and /nix/store is already in the mount
@@ -218,7 +219,7 @@ let
serverPort =
let
address = cfg.serverSettings.bindaddress;
address = cfg.server.settings.bindaddress;
in
# ipv6:
if hasInfix "]:" address then
@@ -230,19 +231,42 @@ let
# default is 8443
else
throw "Address not parseable as IPv4 nor IPv6.";
addKaniSshKeys = cfg.unix.enable && cfg.unix.sshIntegration;
in
{
options.services.kanidm = {
enableClient = mkEnableOption "the Kanidm client";
enableServer = mkEnableOption "the Kanidm server";
enablePam = mkEnableOption "the Kanidm PAM and NSS integration";
imports = [
(mkRenamedOptionModule
[ "services" "kanidm" "enableServer" ]
[ "services" "kanidm" "server" "enable" ]
)
(mkRenamedOptionModule
[ "services" "kanidm" "serverSettings" ]
[ "services" "kanidm" "server" "settings" ]
)
(mkRenamedOptionModule
[ "services" "kanidm" "enableClient" ]
[ "services" "kanidm" "client" "enable" ]
)
(mkRenamedOptionModule
[ "services" "kanidm" "clientSettings" ]
[ "services" "kanidm" "client" "settings" ]
)
(mkRenamedOptionModule [ "services" "kanidm" "enablePam" ] [ "services" "kanidm" "unix" "enable" ])
(mkRenamedOptionModule
[ "services" "kanidm" "unixSettings" ]
[ "services" "kanidm" "unix" "settings" ]
)
];
options.services.kanidm = {
package = mkPackageOption pkgs "kanidm" {
example = "kanidm_1_8";
extraDescription = "Must be set to an explicit version.";
};
serverSettings = mkOption {
server.enable = mkEnableOption "the Kanidm server";
server.settings = mkOption {
type = types.submodule {
freeformType = settingsFormat.type;
@@ -270,7 +294,7 @@ in
domain = mkOption {
description = ''
The `domain` that Kanidm manages. Must be below or equal to the domain
specified in `serverSettings.origin`.
specified in `server.settings.origin`.
This can be left at `null`, only if your instance has the role `ReadOnlyReplica`.
While it is possible to change the domain later on, it requires extra steps!
Please consider the warnings and execute the steps described
@@ -345,7 +369,8 @@ in
'';
};
clientSettings = mkOption {
client.enable = mkEnableOption "the Kanidm client";
client.settings = mkOption {
type = types.submodule {
freeformType = settingsFormat.type;
@@ -363,7 +388,11 @@ in
'';
};
unixSettings = mkOption {
unix = {
enable = mkEnableOption "the Kanidm PAM and NSS integration";
sshIntegration = mkEnableOption "Kanidm SSH keys login";
};
unix.settings = mkOption {
type = types.submodule {
freeformType = settingsFormat.type;
@@ -394,7 +423,7 @@ in
instanceUrl = mkOption {
description = "The instance url to which the provisioning tool should connect.";
default = "https://localhost:${serverPort}";
defaultText = "https://localhost:<port from serverSettings.bindaddress>";
defaultText = "https://localhost:<port from server.settings.bindaddress>";
type = types.str;
};
@@ -671,11 +700,11 @@ in
};
};
config = mkIf (cfg.enableClient || cfg.enableServer || cfg.enablePam) {
config = mkIf (cfg.client.enable || cfg.server.enable || cfg.unix.enable) {
warnings = lib.optionals (cfg.package.eolMessage != "") [ cfg.package.eolMessage ];
services.kanidm = {
unixSettings.version = "2";
serverSettings.version = "2";
unix.settings.version = "2";
server.settings.version = "2";
};
assertions =
@@ -699,7 +728,7 @@ in
unknownGroups = subtractLists knownGroups groups;
in
{
assertion = (cfg.enableServer && cfg.provision.enable) -> unknownGroups == [ ];
assertion = (cfg.server.enable && cfg.provision.enable) -> unknownGroups == [ ];
message = "${opt} refers to unknown groups: ${toString unknownGroups}";
};
@@ -709,71 +738,71 @@ in
unknownEntities = subtractLists (attrNames entitiesByName) entities;
in
{
assertion = (cfg.enableServer && cfg.provision.enable) -> unknownEntities == [ ];
assertion = (cfg.server.enable && cfg.provision.enable) -> unknownEntities == [ ];
message = "${opt} refers to unknown entities: ${toString unknownEntities}";
};
in
[
{
assertion = cfg.enablePam -> !(cfg.unixSettings ? pam_allowed_login_groups);
assertion = cfg.unix.enable -> !(cfg.unix.settings ? pam_allowed_login_groups);
message = ''
<option>services.kanidm.unixSettings.pam_allowed_login_groups</option> has been renamed
to <option>services.kanidm.unixSettings.kanidm.pam_allowed_login_groups</option>.
<option>services.kanidm.unix.settings.pam_allowed_login_groups</option> has been renamed
to <option>services.kanidm.unix.settings.kanidm.pam_allowed_login_groups</option>.
Please change your usage.
'';
}
{
assertion =
!cfg.enableServer
|| ((cfg.serverSettings.tls_chain or null) == null)
|| (!isStorePath cfg.serverSettings.tls_chain);
!cfg.server.enable
|| ((cfg.server.settings.tls_chain or null) == null)
|| (!isStorePath cfg.server.settings.tls_chain);
message = ''
<option>services.kanidm.serverSettings.tls_chain</option> points to
<option>services.kanidm.server.settings.tls_chain</option> points to
a file in the Nix store. You should use a quoted absolute path to
prevent this.
'';
}
{
assertion =
!cfg.enableServer
|| ((cfg.serverSettings.tls_key or null) == null)
|| (!isStorePath cfg.serverSettings.tls_key);
!cfg.server.enable
|| ((cfg.server.settings.tls_key or null) == null)
|| (!isStorePath cfg.server.settings.tls_key);
message = ''
<option>services.kanidm.serverSettings.tls_key</option> points to
<option>services.kanidm.server.settings.tls_key</option> points to
a file in the Nix store. You should use a quoted absolute path to
prevent this.
'';
}
{
assertion = !cfg.enableClient || options.services.kanidm.clientSettings.isDefined;
assertion = !cfg.client.enable || options.services.kanidm.client.settings.isDefined;
message = ''
<option>services.kanidm.clientSettings</option> needs to be configured
<option>services.kanidm.client.settings</option> needs to be configured
if the client is enabled.
'';
}
{
assertion = !cfg.enablePam || options.services.kanidm.clientSettings.isDefined;
assertion = !cfg.unix.enable || options.services.kanidm.client.settings.isDefined;
message = ''
<option>services.kanidm.clientSettings</option> needs to be configured
<option>services.kanidm.client.settings</option> needs to be configured
for the PAM daemon to connect to the Kanidm server.
'';
}
{
assertion =
!cfg.enableServer
!cfg.server.enable
|| (
cfg.serverSettings.domain == null
-> cfg.serverSettings.role == "WriteReplica" || cfg.serverSettings.role == "WriteReplicaNoUI"
cfg.server.settings.domain == null
-> cfg.server.settings.role == "WriteReplica" || cfg.server.settings.role == "WriteReplicaNoUI"
);
message = ''
<option>services.kanidm.serverSettings.domain</option> can only be set if this instance
<option>services.kanidm.server.settings.domain</option> can only be set if this instance
is not a ReadOnlyReplica. Otherwise the db would inherit it from
the instance it follows.
'';
}
{
assertion = cfg.provision.enable -> cfg.enableServer;
message = "<option>services.kanidm.provision</option> requires <option>services.kanidm.enableServer</option> to be true";
assertion = cfg.provision.enable -> cfg.server.enable;
message = "<option>services.kanidm.provision</option> requires <option>services.kanidm.server.enable</option> to be true";
}
# If any secret is provisioned, the kanidm package must have some required patches applied to it
{
@@ -844,27 +873,28 @@ in
# At least one group must map to a value in each claim map
(mkIf (cfg.provision.extraJsonFile == null) {
assertion =
(cfg.provision.enable && cfg.enableServer)
(cfg.provision.enable && cfg.server.enable)
-> any (xs: xs != [ ]) (attrValues claimCfg.valuesByGroup);
message = "services.kanidm.provision.systems.oauth2.${oauth2}.claimMaps.${claim} does not specify any values for any group";
})
# Public clients cannot define a basic secret
{
assertion =
(cfg.provision.enable && cfg.enableServer && oauth2Cfg.public) -> oauth2Cfg.basicSecretFile == null;
(cfg.provision.enable && cfg.server.enable && oauth2Cfg.public)
-> oauth2Cfg.basicSecretFile == null;
message = "services.kanidm.provision.systems.oauth2.${oauth2} is a public client and thus cannot specify a basic secret";
}
# Public clients cannot disable PKCE
{
assertion =
(cfg.provision.enable && cfg.enableServer && oauth2Cfg.public)
(cfg.provision.enable && cfg.server.enable && oauth2Cfg.public)
-> !oauth2Cfg.allowInsecureClientDisablePkce;
message = "services.kanidm.provision.systems.oauth2.${oauth2} is a public client and thus cannot disable PKCE";
}
# Non-public clients cannot enable localhost redirects
{
assertion =
(cfg.provision.enable && cfg.enableServer && !oauth2Cfg.public)
(cfg.provision.enable && cfg.server.enable && !oauth2Cfg.public)
-> !oauth2Cfg.enableLocalhostRedirects;
message = "services.kanidm.provision.systems.oauth2.${oauth2} is a non-public client and thus cannot enable localhost redirects";
}
@@ -874,17 +904,17 @@ in
)
);
environment.systemPackages = mkIf cfg.enableClient [ cfg.package ];
environment.systemPackages = mkIf cfg.client.enable [ cfg.package ];
systemd.tmpfiles.settings."10-kanidm" = mkIf enableServerBackup {
${cfg.serverSettings.online_backup.path}.d = {
${cfg.server.settings.online_backup.path}.d = {
mode = "0700";
user = "kanidm";
group = "kanidm";
};
};
systemd.services.kanidm = mkIf cfg.enableServer {
systemd.services.kanidm = mkIf cfg.server.enable {
description = "kanidm identity management daemon";
wantedBy = [ "multi-user.target" ];
after = [ "network.target" ];
@@ -915,10 +945,10 @@ in
BindPaths =
[ ]
# To store backups
++ optional enableServerBackup cfg.serverSettings.online_backup.path
++ optional enableServerBackup cfg.server.settings.online_backup.path
++ optional (
cfg.enablePam && cfg.unixSettings ? home_mount_prefix
) cfg.unixSettings.home_mount_prefix;
cfg.unix.enable && cfg.unix.settings ? home_mount_prefix
) cfg.unix.settings.home_mount_prefix;
AmbientCapabilities = [ "CAP_NET_BIND_SERVICE" ];
CapabilityBoundingSet = [ "CAP_NET_BIND_SERVICE" ];
@@ -936,7 +966,7 @@ in
];
};
systemd.services.kanidm-unixd = mkIf cfg.enablePam {
systemd.services.kanidm-unixd = mkIf cfg.unix.enable {
description = "Kanidm PAM daemon";
wantedBy = [ "multi-user.target" ];
after = [ "network.target" ];
@@ -979,7 +1009,7 @@ in
environment.RUST_LOG = "info";
};
systemd.services.kanidm-unixd-tasks = mkIf cfg.enablePam {
systemd.services.kanidm-unixd-tasks = mkIf cfg.unix.enable {
description = "Kanidm PAM home management daemon";
wantedBy = [ "multi-user.target" ];
after = [
@@ -1033,25 +1063,26 @@ in
# These paths are hardcoded
environment.etc = mkMerge [
(mkIf cfg.enableServer { "kanidm/server.toml".source = serverConfigFile; })
(mkIf options.services.kanidm.clientSettings.isDefined {
(mkIf cfg.server.enable { "kanidm/server.toml".source = serverConfigFile; })
(mkIf options.services.kanidm.client.settings.isDefined {
"kanidm/config".source = clientConfigFile;
})
(mkIf cfg.enablePam { "kanidm/unixd".source = unixConfigFile; })
(mkIf cfg.unix.enable { "kanidm/unixd".source = unixConfigFile; })
];
system.nssModules = mkIf cfg.enablePam [ cfg.package ];
system.nssModules = mkIf cfg.unix.enable [ cfg.package ];
# Needs to be before "files" which is `mkBefore`
system.nssDatabases.group = mkOrder 490 (optional cfg.enablePam "kanidm");
system.nssDatabases.passwd = mkOrder 490 (optional cfg.enablePam "kanidm");
system.nssDatabases.group = mkOrder 490 (optional cfg.unix.enable "kanidm");
system.nssDatabases.passwd = mkOrder 490 (optional cfg.unix.enable "kanidm");
users.groups = mkMerge [
(mkIf cfg.enableServer { kanidm = { }; })
(mkIf cfg.enablePam { kanidm-unixd = { }; })
(mkIf cfg.server.enable { kanidm = { }; })
(mkIf cfg.unix.enable { kanidm-unixd = { }; })
(mkIf addKaniSshKeys { kanidm-authorized-keys = { }; })
];
users.users = mkMerge [
(mkIf cfg.enableServer {
(mkIf cfg.server.enable {
kanidm = {
description = "Kanidm server";
isSystemUser = true;
@@ -1059,14 +1090,34 @@ in
packages = [ cfg.package ];
};
})
(mkIf cfg.enablePam {
(mkIf cfg.unix.enable {
kanidm-unixd = {
description = "Kanidm PAM daemon";
isSystemUser = true;
group = "kanidm-unixd";
};
})
(mkIf addKaniSshKeys {
kanidm-authorized-keys = {
description = "Kanidm authorized keys delegate";
isSystemUser = true;
group = "kanidm-authorized-keys";
};
})
];
# AuthorizedKeysCommand is displeased with `/nix/store` permissions
services.openssh.settings = mkIf addKaniSshKeys {
AuthorizedKeysCommand = "${config.security.wrapperDir}/kanidm_ssh_authorizedkeys %u";
AuthorizedKeysCommandUser = "kanidm-authorized-keys";
};
security.wrappers.kanidm_ssh_authorizedkeys = mkIf addKaniSshKeys {
owner = "root";
group = "root";
permissions = "a+rx";
source = "${cfg.package}/bin/kanidm_ssh_authorizedkeys";
};
};
meta.maintainers = with lib.maintainers; [
+6 -1
View File
@@ -45,6 +45,11 @@ in
type = types.str;
description = "The Hostname under which the frontend is running.";
};
address = mkOption {
type = types.str;
default = "";
description = "The IP address to bind to.";
};
port = mkOption {
type = types.port;
default = 3456;
@@ -105,7 +110,7 @@ in
;
};
service = {
interface = ":${toString cfg.port}";
interface = "${cfg.address}:${toString cfg.port}";
frontendurl = "${cfg.frontendScheme}://${cfg.frontendHostname}/";
};
files = {
+1
View File
@@ -837,6 +837,7 @@ in
kimai = runTest ./kimai.nix;
kismet = runTest ./kismet.nix;
kmonad = runTest ./kmonad.nix;
kmscon = runTest ./kmscon.nix;
knot = runTest ./knot.nix;
komga = runTest ./komga.nix;
komodo-periphery = runTest ./komodo-periphery.nix;
+18 -14
View File
@@ -25,21 +25,25 @@ in
{
services.kanidm = {
package = kanidmPackage;
enableServer = true;
serverSettings = {
origin = "https://${serverDomain}";
domain = serverDomain;
bindaddress = "[::]:443";
ldapbindaddress = "[::1]:636";
tls_chain = "${certsPath}/snakeoil.crt";
tls_key = "${certsPath}/snakeoil.key";
server = {
enable = true;
settings = {
origin = "https://${serverDomain}";
domain = serverDomain;
bindaddress = "[::]:443";
ldapbindaddress = "[::1]:636";
tls_chain = "${certsPath}/snakeoil.crt";
tls_key = "${certsPath}/snakeoil.key";
};
};
# So we can check whether provisioning did what we wanted
enableClient = true;
clientSettings = {
uri = "https://${serverDomain}";
verify_ca = true;
verify_hostnames = true;
client = {
enable = true;
settings = {
uri = "https://${serverDomain}";
verify_ca = true;
verify_hostnames = true;
};
};
};
@@ -289,7 +293,7 @@ in
# We need access to the config file in the test script.
filteredConfig = pkgs.lib.converge (pkgs.lib.filterAttrsRecursive (
_: v: v != null
)) nodes.provision.services.kanidm.serverSettings;
)) nodes.provision.services.kanidm.server.settings;
serverConfigFile = (pkgs.formats.toml { }).generate "server.toml" filteredConfig;
specialisations = "${nodes.provision.system.build.toplevel}/specialisation";
+22 -18
View File
@@ -29,14 +29,16 @@ in
{
services.kanidm = {
package = kanidmPackage;
enableServer = true;
serverSettings = {
origin = "https://${serverDomain}";
domain = serverDomain;
bindaddress = "[::]:443";
ldapbindaddress = "[::1]:636";
tls_chain = "${certsPath}/snakeoil.crt";
tls_key = "${certsPath}/snakeoil.key";
server = {
enable = true;
settings = {
origin = "https://${serverDomain}";
domain = serverDomain;
bindaddress = "[::]:443";
ldapbindaddress = "[::1]:636";
tls_chain = "${certsPath}/snakeoil.crt";
tls_key = "${certsPath}/snakeoil.key";
};
};
};
@@ -59,15 +61,17 @@ in
{
services.kanidm = {
package = kanidmPackage;
enableClient = true;
clientSettings = {
uri = "https://${serverDomain}";
verify_ca = true;
verify_hostnames = true;
};
enablePam = true;
unixSettings = {
kanidm.pam_allowed_login_groups = [ "shell" ];
client = {
enable = true;
settings = {
uri = "https://${serverDomain}";
verify_ca = true;
verify_hostnames = true;
};
unix = {
enable = true;
kanidm.pam_allowed_login_groups = [ "shell" ];
};
};
};
@@ -86,7 +90,7 @@ in
# We need access to the config file in the test script.
filteredConfig = pkgs.lib.converge (pkgs.lib.filterAttrsRecursive (
_: v: v != null
)) nodes.server.services.kanidm.serverSettings;
)) nodes.server.services.kanidm.server.settings;
serverConfigFile = (pkgs.formats.toml { }).generate "server.toml" filteredConfig;
in
''
+43
View File
@@ -0,0 +1,43 @@
{ ... }:
{
name = "kmscon";
nodes.machine =
{
pkgs,
lib,
...
}:
{
imports = [
./common/user-account.nix
];
services.kmscon = {
enable = true;
hwRender = true;
fonts = [
{
name = "JetBrainsMono Nerd Font";
package = pkgs.nerd-fonts.jetbrains-mono;
}
];
package = pkgs.kmscon;
};
};
enableOCR = true;
testScript = ''
machine.succeed(":")
# ^ this create a screen
with subtest("ensure we can open a tty"):
machine.wait_for_text("machine login:")
machine.send_chars("alice\n")
machine.wait_for_text("Password:")
machine.send_chars("foobar\n")
machine.wait_for_text("alice@machine")
machine.screenshot("tty.png")
'';
}
+119 -1
View File
@@ -8,10 +8,34 @@ with import ../../lib/testing-python.nix { inherit system pkgs; };
let
lib = pkgs.lib;
# Generate EAP certificates on the fly (CA, server, and client certs)
eapCerts = pkgs.runCommand "eap-certs" { buildInputs = [ pkgs.openssl ]; } ''
mkdir -p $out
# Create CA certificate
openssl req -x509 -newkey rsa:2048 -days 365000 -nodes \
-keyout $out/ca.key -out $out/ca.cert \
-subj "/CN=ExampleCA"
# Create server certificate
openssl req -newkey rsa:2048 -nodes \
-keyout $out/server.key -out server.csr \
-subj "/CN=server.example.com"
openssl x509 -req -in server.csr -CA $out/ca.cert -CAkey $out/ca.key \
-days 365000 -set_serial 100 -out $out/server.cert
# Create client certificate
openssl req -newkey rsa:2048 -nodes \
-keyout $out/client1.key -out client1.csr \
-subj "/CN=client1.example.com"
openssl x509 -req -in client1.csr -CA $out/ca.cert -CAkey $out/ca.key \
-days 365000 -set_serial 101 -out $out/client1.cert
'';
# this is intended as a client test since you shouldn't use NetworkManager for a router or server
# so using systemd-networkd for the router vm is fine in these tests.
router = import ./router.nix { networkd = true; };
qemu-common = import ../../lib/qemu-common.nix { inherit (pkgs) lib pkgs; };
clientConfig =
extraConfig:
lib.recursiveUpdate {
@@ -180,6 +204,100 @@ let
client.wait_until_succeeds("ping -c 1 fd00:1234:5678:1::23")
'';
};
eap =
let
toBase64Blob =
file:
"data:;base64,"
+ builtins.readFile (
pkgs.runCommand "base64" { } ''
${pkgs.coreutils}/bin/base64 -w0 ${file} > $out
''
);
in
{
name = "eap / 802.1x with secrets in blob encoding";
nodes = {
router = import ./router-eap.nix { inherit eapCerts; };
client = clientConfig {
networking.networkmanager.ensureProfiles.profiles.default = {
ipv4.method = "auto";
"802-1x" = {
eap = "tls";
identity = "client1.example.com";
ca-cert = toBase64Blob "${eapCerts}/ca.cert";
client-cert = toBase64Blob "${eapCerts}/client1.cert";
private-key = toBase64Blob "${eapCerts}/client1.key";
private-key-password-flags = "4";
};
};
networking.wireless = {
# it is a bit unfortunate that wpa-supplicant is equated with
# `wireless` when it also works for wired connections
enable = lib.mkOverride 9 true;
driver = "wired";
};
};
};
testScript = ''
start_all()
client.wait_for_unit("NetworkManager.service")
router.wait_for_unit("freeradius.service")
router.wait_for_unit("hostapd.service")
router.wait_until_succeeds("journalctl -b --unit freeradius.service | grep \"Sent Access-Accept\"")
router.wait_until_succeeds("journalctl -b --unit freeradius.service | grep \"TLS-Client-Cert-Common-Name := \\\"client1.example.com\\\"\"")
'';
};
eapFiles = {
name = "eap / 802.1x with secrets in stored in files";
nodes = {
router = import ./router-eap.nix { inherit eapCerts; };
client = clientConfig {
environment.etc = {
"wpa_supplicant/ca.cert" = {
source = "${eapCerts}/ca.cert";
user = "wpa_supplicant";
mode = "0400";
};
"wpa_supplicant/client1.cert" = {
source = "${eapCerts}/client1.cert";
user = "wpa_supplicant";
mode = "0400";
};
"wpa_supplicant/client1.key" = {
source = "${eapCerts}/client1.key";
user = "wpa_supplicant";
mode = "0400";
};
};
networking.networkmanager.ensureProfiles.profiles.default = {
ipv4.method = "auto";
"802-1x" = {
eap = "tls";
identity = "client1.example.com";
ca-cert = "/etc/wpa_supplicant/ca.cert";
client-cert = "/etc/wpa_supplicant/client1.cert";
private-key = "/etc/wpa_supplicant/client1.key";
private-key-password-flags = "4";
};
};
networking.wireless = {
enable = lib.mkOverride 9 true;
driver = "wired";
};
};
};
testScript = ''
start_all()
client.wait_for_unit("NetworkManager.service")
router.wait_for_unit("freeradius.service")
router.wait_for_unit("hostapd.service")
router.wait_until_succeeds("journalctl -b --unit freeradius.service | grep \"Sent Access-Accept\"")
router.wait_until_succeeds("journalctl -b --unit freeradius.service | grep \"TLS-Client-Cert-Common-Name := \\\"client1.example.com\\\"\"")
'';
};
};
in
lib.mapAttrs (lib.const (
+146
View File
@@ -0,0 +1,146 @@
{ eapCerts }:
{ config, pkgs, ... }:
let
radiusDir =
let
eapConfig = builtins.toFile "eap.conf" ''
eap {
default_eap_type = tls
timer_expire = 60
ignore_unknown_eap_types = no
tls {
# Path to CA certificate
ca_file = ''${certdir}/ca.cert
# Path to server certificate and private key
certificate_file = ''${certdir}/server.cert
private_key_file = ''${certdir}/server.key
# Enable mutual authentication
require_client_cert = yes
# Cipher suite (example)
ciphers = "DEFAULT"
}
}
'';
clientsConfig = builtins.toFile "client.conf" ''
client localhost {
ipaddr = 127.0.0.1
secret = insecure
require_message_authenticator = no
}
'';
# sample users file, not used for eap-tls, only for e.g. eap-ttls
usersConfig = builtins.toFile "users.conf" ''
testuser Cleartext-Password := "supersecret"
'';
# this constructs the freeradius config directory
# it starts with the upstream config, then overwrites certain files
# and uses the generated certs from eapCerts
buildScript = pkgs.writeShellApplication {
name = "builder";
runtimeInputs = [ pkgs.coreutils ];
# https://www.shellcheck.net/wiki/SC2154 -- out is referenced but not assigned.
excludeShellChecks = [ "SC2154" ];
text = ''
cp --recursive ${pkgs.freeradius}/etc/* "$out"
chmod +w -R "$out"
cp --force ${eapCerts}/ca.cert "$out/certs/ca.cert"
cp --force ${eapCerts}/ca.key "$out/certs/ca.key"
cp --force ${eapCerts}/server.cert "$out/certs/server.cert"
cp --force ${eapCerts}/server.key "$out/certs/server.key"
cp --force ${eapConfig} "$out/mods-enabled/eap"
cp --force ${usersConfig} "$out/users"
cp --force ${clientsConfig} "$out/clients.conf"
'';
};
in
derivation {
name = "radius_dir";
builder = "${pkgs.bash}/bin/bash";
args = [ "${buildScript}/bin/builder" ];
inherit (pkgs) system;
};
inherit (pkgs) lib;
vlanIfs = lib.range 1 (lib.length config.virtualisation.vlans);
in
{
virtualisation.vlans = [
1
2
3
];
boot.kernel.sysctl."net.ipv6.conf.all.forwarding" = true;
networking = {
useDHCP = false;
useNetworkd = true;
firewall.checkReversePath = true;
firewall.allowedUDPPorts = [ 547 ];
interfaces = lib.mkOverride 0 (
lib.listToAttrs (
lib.forEach vlanIfs (
n:
lib.nameValuePair "eth${toString n}" {
ipv4.addresses = [
{
address = "192.168.${toString n}.1";
prefixLength = 24;
}
];
ipv6.addresses = [
{
address = "fd00:1234:5678:${toString n}::1";
prefixLength = 64;
}
];
}
)
)
);
};
services.freeradius = {
enable = true;
configDir = radiusDir;
debug = true;
};
# upstream nixpkgs hostapd is focused on Wifi
systemd.services.hostapd =
let
hostapdConfig = builtins.toFile "hostapd.conf" ''
interface=eth1
driver=wired
logger_stdout=-1
logger_stdout_level=1
debug=2
dump_file=/tmp/hostapd.dump
ieee8021x=1
eap_reauth_period=3600
use_pae_group_addr=1
##### RADIUS configuration ####################################################
own_ip_addr=127.0.0.1
nas_identifier=ap.example.com
auth_server_addr=127.0.0.1
auth_server_port=1812
auth_server_shared_secret=insecure
'';
in
{
description = "IEEE 802.11 Host Access-Point Daemon";
wantedBy = [ "multi-user.target" ];
serviceConfig = {
ExecStart = "${pkgs.hostapd}/bin/hostapd ${hostapdConfig}";
Restart = "always";
ExecReload = "${pkgs.coreutils}/bin/kill -HUP $MAINPID";
RuntimeDirectory = "hostapd";
};
};
}
@@ -675,8 +675,8 @@ let
mktplcRef = {
name = "markdown-mermaid";
publisher = "bierner";
version = "1.31.0";
hash = "sha256-7KpyUXR3a7ZD9bcdJ4t5HRjSAlUww8q6XSOcxHCN4Cw=";
version = "1.31.1";
hash = "sha256-K3UXNT3MpGlhyHcx0AYAkCPEJIbYIu3e/ucIAQLwoEQ=";
};
meta = {
changelog = "https://marketplace.visualstudio.com/items/bierner.markdown-mermaid/changelog";
@@ -1727,8 +1727,8 @@ let
mktplcRef = {
name = "foam-vscode";
publisher = "foam";
version = "0.29.1";
hash = "sha256-U5DkTMNLoE9TDCa+Womml9ilv162FqVsnkyGsJ80+Ag=";
version = "0.29.2";
hash = "sha256-6Bga51DCHaVn+UV5RPCE7uFsAei/F0xN4Mk4dm52FWs=";
};
meta = {
changelog = "https://marketplace.visualstudio.com/items/foam.foam-vscode/changelog";
@@ -1965,8 +1965,8 @@ let
mktplcRef = {
name = "gitlab-workflow";
publisher = "gitlab";
version = "6.67.5";
hash = "sha256-xttk9mP5XIeeymE0l0TI+JsC862yOaEuwb6HscDyRMU=";
version = "6.68.1";
hash = "sha256-ZNdtaVo3KFGhGX99fGv/aSUcjy636W5e4DctPCMrRtY=";
};
meta = {
description = "GitLab extension for Visual Studio Code";
@@ -5215,8 +5215,8 @@ let
mktplcRef = {
name = "csharp-ls";
publisher = "vytautassurvila";
version = "0.0.29";
hash = "sha256-0gh7q/F69OD/soRuZHHxC9PRtOXJmjZjei6IbV82Rgs=";
version = "0.0.30";
hash = "sha256-BVSazrQxVm4yYBVdtFP3Aojl06xI2msFXIGw64LeePY=";
};
meta = {
changelog = "https://github.com/vytautassurvila/vscode-csharp-ls/blob/master/CHANGELOG.md";
@@ -13,7 +13,7 @@ let
buildVscodeLanguagePack =
{
language,
version ? "1.105.2025100809",
version ? "1.108.2026012809",
hash,
}:
buildVscodeMarketplaceExtension {
@@ -41,71 +41,71 @@ in
# French
vscode-language-pack-fr = buildVscodeLanguagePack {
language = "fr";
hash = "sha256-HFpkXUYz7//5KlKe1NjiT/KBFBar9H5ivpltqGOTHJo=";
hash = "sha256-1+aWgvoXR/FqhnIn3OrLOC11jLXVWlO2yecpzr2Waww=";
};
# Italian
vscode-language-pack-it = buildVscodeLanguagePack {
language = "it";
hash = "sha256-YD1jTB9VzWF51QaFPRsEBC1pMkgrs2cl0HFA/PFz3ro=";
hash = "sha256-t6jN3qok7B4/G/IjEXD6THO6c+8X+1gxny6W7qdh5mI=";
};
# German
vscode-language-pack-de = buildVscodeLanguagePack {
language = "de";
hash = "sha256-hIw0nFdYgcyOuJW8k7HRS0sKc0Gsuh7YWyLwQ3Z1FkU=";
hash = "sha256-rZM/T1gbYrtcHNLW0itNdhKcRR938PwK5VBN0xLDIWg=";
};
# Spanish
vscode-language-pack-es = buildVscodeLanguagePack {
language = "es";
hash = "sha256-iO+1Lq/vXkMCGNnj9CovBhLPtbuJtGHSfQnjXypRBcw=";
hash = "sha256-PG3oOCjWRgh1ox6GAPRdZdf8QNP1JsJZznJnM+2Ihl0=";
};
# Russian
vscode-language-pack-ru = buildVscodeLanguagePack {
language = "ru";
hash = "sha256-HxTStM+g/XKJH1twNYMu/V7IM7vBlYF4mfcemV+oOQI=";
hash = "sha256-RPpNet015xGnOszcKfehP9VxnfDAnQJ2A62rVtNBDew=";
};
# Chinese (Simplified)
vscode-language-pack-zh-hans = buildVscodeLanguagePack {
language = "zh-hans";
hash = "sha256-nCPu7pEXpM22M+2IMtuPgxzyEF3R6MPm2CVZAccPdAU=";
hash = "sha256-pm1dCoK4YM8XBM/O6p42R4PYy5f95sLcECHJMAKFt9Q=";
};
# Chinese (Traditional)
vscode-language-pack-zh-hant = buildVscodeLanguagePack {
language = "zh-hant";
hash = "sha256-JKKqrwGn/EMDMot1cIgLpekUVQf4IY+snENeKoE5jYU=";
hash = "sha256-cSM+2W5aCUA77kxgV7vyk7KAoSlkeT+y56ziIPjP9II=";
};
# Japanese
vscode-language-pack-ja = buildVscodeLanguagePack {
language = "ja";
hash = "sha256-6OWcr/XnJsOvRFho+P5Z+ppuAC8d08I3s0YWnLhH874=";
hash = "sha256-UfMMLKHi48Qhgm8PXFAfGFQFX6e8vQsl/RYqha42TOc=";
};
# Korean
vscode-language-pack-ko = buildVscodeLanguagePack {
language = "ko";
hash = "sha256-VqlAaS679KF0ZKlzDT55FIu5GKyzU41y1ptX7t88UHc=";
hash = "sha256-gneZF4CIEDy88juFZBiB9/o/rzTnu2du4aiZ+NH+XlE=";
};
# Czech
vscode-language-pack-cs = buildVscodeLanguagePack {
language = "cs";
hash = "sha256-yFtp+XK7Y2Fi/uYqsh88d3hCRcQJhJOLWvs2pQ05ddo=";
hash = "sha256-ojh2KBEpTTJsAgM2RilGO58kkcWgaFf5nkiiZ4gYNtg=";
};
# Portuguese (Brazil)
vscode-language-pack-pt-br = buildVscodeLanguagePack {
language = "pt-BR";
hash = "sha256-2zM8E832ioa6fqnWzPq+PA/eiEAo8FDNNH/4HJPZIcI=";
hash = "sha256-n55nI9gCxNpr6Pq70qJnmgp2rs0Gcblirg4SaeXAXtE=";
};
# Turkish
vscode-language-pack-tr = buildVscodeLanguagePack {
language = "tr";
hash = "sha256-7ghSb/sQM64wfsRRtS+quAqJEvUdIXAcPCQKJbsDXKc=";
hash = "sha256-S6orhrfCaA4aeLhW3+rdaJb4X8h7IUjfBC9A+QgiQgk=";
};
# Polish
vscode-language-pack-pl = buildVscodeLanguagePack {
language = "pl";
hash = "sha256-/joZpsIAY9Ut67wAbzNTraBgBgtjDAeRoq8PUbP3rSc=";
hash = "sha256-YoNl44f2jEYXIhDKz+xU5fzt/JD6l86dtbqXFKOzHrk=";
};
# Pseudo Language
vscode-language-pack-qps-ploc = buildVscodeLanguagePack {
language = "qps-ploc";
hash = "sha256-xERSh5N5Mbyc977ji0n91ra0RV9ZldJKBzc3IWYWYyo=";
hash = "sha256-onc+lk6itrWP5J17eVLIMcpG1gDM/rpTzKci8m2uBcY=";
};
}
@@ -5,13 +5,13 @@
}:
mkLibretroCore {
core = "snes9x";
version = "0-unstable-2026-01-26";
version = "0-unstable-2026-02-03";
src = fetchFromGitHub {
owner = "snes9xgit";
repo = "snes9x";
rev = "830d8552551d7a71e9d084f727dc15cf15d9796c";
hash = "sha256-Xu3s1z4Pab71D2orv7HyL8b3E59AnQEAil0XeWKfKdw=";
rev = "02f642cdadfaa8f9fa7ec674382d6c70a8b534d6";
hash = "sha256-4BqWxchxdq8pbWw3Iql786Iu/OY5VMT1pF8wowI26h0=";
};
makefile = "Makefile";
+2 -2
View File
@@ -254,8 +254,8 @@ rec {
winetricks = fetchFromGitHub rec {
# https://github.com/Winetricks/winetricks/releases
version = "20250102";
hash = "sha256-Km2vVTYsLs091cjmNTW8Kqku3vdsEA0imTtZfqZWDQo=";
version = "20260125";
hash = "sha256-uIBVESebsH7rXnxWd/qlrZxcG7Y486PctHzcLz29HDk=";
owner = "Winetricks";
repo = "winetricks";
rev = version;
+48 -32
View File
@@ -2,20 +2,23 @@
lib,
stdenv,
callPackage,
perl,
which,
coreutils,
zenity,
curl,
cabextract,
unzip,
p7zip,
gnused,
gnugrep,
makeWrapper,
bash,
cabextract,
coreutils,
curl,
gawk,
gnugrep,
gnused,
gnutar,
gzip,
p7zip,
perl,
unzip,
which,
zenity,
unrar-free,
versionCheckHook,
}:
stdenv.mkDerivation rec {
@@ -27,36 +30,49 @@ stdenv.mkDerivation rec {
buildInputs = [
perl
which
];
# coreutils is for sha1sum
pathAdd = lib.makeBinPath [
perl
which
coreutils
zenity
curl
cabextract
unzip
p7zip
gnused
gnugrep
bash
gawk
gnutar
gzip
makeWrapper
];
makeFlags = [ "PREFIX=$(out)" ];
doCheck = false; # requires "bashate"
postInstall = ''
sed -i \
-e '2i PATH="${pathAdd}:$PATH"' \
"$out/bin/winetricks"
doInstallCheck = true;
nativeInstallCheckInputs = [ versionCheckHook ];
postPatch = ''
patchShebangs src/winetricks
substituteInPlace src/winetricks \
--replace-fail 'command -v unrar' 'command -v unrar-free' \
--replace-fail 'w_try unrar' 'w_try unrar-free'
'';
postInstall =
let
runtimeDependencies = [
bash
cabextract
coreutils
curl
gawk
gnugrep
gnused
gnutar
gzip
p7zip
perl
unrar-free
unzip
which
zenity
];
in
''
wrapProgram $out/bin/winetricks \
--prefix PATH : "${lib.makeBinPath runtimeDependencies}" \
--set WINETRICKS_LATEST_VERSION_CHECK "disabled"
'';
passthru = {
inherit (src) updateScript;
};
@@ -5,14 +5,14 @@
libsForQt5,
}:
stdenv.mkDerivation (finalAttr: {
stdenv.mkDerivation (finalAttrs: {
pname = "qtbitcointrader";
version = "1.42.21";
src = fetchFromGitHub {
owner = "JulyIGHOR";
repo = "QtBitcoinTrader";
tag = "v${finalAttr.version}";
tag = "v${finalAttrs.version}";
hash = "sha256-u3+Kwn8KunYUpWCd55TQuVVfoSp8hdti93d6hk7Uqx8=";
};
@@ -24,7 +24,7 @@ stdenv.mkDerivation (finalAttr: {
libsForQt5.qtscript
];
sourceRoot = "${finalAttr.src.name}/src";
sourceRoot = "${finalAttrs.src.name}/src";
configurePhase = ''
runHook preConfigure
@@ -526,11 +526,11 @@
"vendorHash": null
},
"hashicorp_azurerm": {
"hash": "sha256-uAaWBctVH61wMz12hX3DnayVn6LK1e3aUM2SQBNx3QQ=",
"hash": "sha256-ZqR6UjG+3KUuqnru5CycUcjWxLwCiQdpsIPR2UiY3g8=",
"homepage": "https://registry.terraform.io/providers/hashicorp/azurerm",
"owner": "hashicorp",
"repo": "terraform-provider-azurerm",
"rev": "v4.58.0",
"rev": "v4.59.0",
"spdx": "MPL-2.0",
"vendorHash": null
},
@@ -1409,11 +1409,11 @@
"vendorHash": "sha256-l6EzevVL6YxLLq9QWcGZv9Go+0sUToLubHbMeNL1vJg="
},
"ucloud_ucloud": {
"hash": "sha256-mPTejWXREIBjEZVb660bUUnyj3z7hgfKPrUsSVvMx7A=",
"hash": "sha256-UOVnfWYhntmRHMApQgemjUBsyUIz0bexsc1gwDGGee4=",
"homepage": "https://registry.terraform.io/providers/ucloud/ucloud",
"owner": "ucloud",
"repo": "terraform-provider-ucloud",
"rev": "v1.39.1",
"rev": "v1.39.2",
"spdx": "MPL-2.0",
"vendorHash": null
},
+7 -7
View File
@@ -16,14 +16,14 @@
nix-update-script,
}:
buildGoModule (final: {
buildGoModule (finalAttrs: {
pname = "age";
version = "1.3.1";
src = fetchFromGitHub {
owner = "FiloSottile";
repo = "age";
tag = "v${final.version}";
tag = "v${finalAttrs.version}";
hash = "sha256-Qs/q3zQYV0PukABBPf/aU5V1oOhw95NG6K301VYJk8A=";
};
@@ -32,7 +32,7 @@ buildGoModule (final: {
ldflags = [
"-s"
"-w"
"-X main.Version=v${final.version}"
"-X main.Version=v${finalAttrs.version}"
];
nativeBuildInputs = [ installShellFiles ];
@@ -67,15 +67,15 @@ buildGoModule (final: {
# convenience function for wrapping sops with plugins
passthru.withPlugins =
filter:
runCommand "age-${final.version}-with-plugins" { nativeBuildInputs = [ makeWrapper ]; } ''
makeWrapper ${lib.getBin final.finalPackage}/bin/age $out/bin/age \
--prefix PATH : "${lib.makeBinPath (filter final.passthru.plugins)}"
runCommand "age-${finalAttrs.version}-with-plugins" { nativeBuildInputs = [ makeWrapper ]; } ''
makeWrapper ${lib.getBin finalAttrs.finalPackage}/bin/age $out/bin/age \
--prefix PATH : "${lib.makeBinPath (filter finalAttrs.passthru.plugins)}"
'';
passthru.updateScript = nix-update-script { };
meta = {
changelog = "https://github.com/FiloSottile/age/releases/tag/v${final.version}";
changelog = "https://github.com/FiloSottile/age/releases/tag/v${finalAttrs.version}";
homepage = "https://age-encryption.org/";
description = "Modern encryption tool with small explicit keys";
license = lib.licenses.bsd3;
+2 -2
View File
@@ -5,7 +5,7 @@
stdenvNoCC,
}:
stdenvNoCC.mkDerivation (self: {
stdenvNoCC.mkDerivation (finalAttrs: {
pname = "alacritty-theme";
version = "0-unstable-2025-11-16";
@@ -21,7 +21,7 @@ stdenvNoCC.mkDerivation (self: {
dontBuild = true;
preferLocalBuild = true;
sourceRoot = "${self.src.name}/themes";
sourceRoot = "${finalAttrs.src.name}/themes";
installPhase = ''
runHook preInstall
install -Dt $out/share/alacritty-theme *.toml
+2 -2
View File
@@ -4,7 +4,7 @@
fetchzip,
}:
stdenv.mkDerivation (attrs: {
stdenv.mkDerivation (finalAttrs: {
pname = "Alice";
version = "2.003";
@@ -15,7 +15,7 @@ stdenv.mkDerivation (attrs: {
src = fetchzip {
url =
with attrs;
with finalAttrs;
"https://github.com/cyrealtype/${pname}/releases/download/v${version}/${pname}-v${version}.zip";
stripRoot = false;
hash = "sha256-p+tE3DECfJyBIPyafGZ8jDYQ1lPb+iAnEwLyaUy7DW0=";
+10
View File
@@ -3,6 +3,7 @@
stdenv,
coreutils,
fetchFromGitHub,
fetchpatch,
autoconf,
automake,
pkg-config,
@@ -35,6 +36,15 @@ stdenv.mkDerivation (finalAttrs: {
sha256 = "sha256-1+hk0OeSriXPyefv3wOgeiW781PL4VP5Luvt+RS5jmg=";
};
patches = [
# Fix gcc-15 build failure: https://github.com/sagb/alttab/pull/178
(fetchpatch {
name = "gcc-15.patch";
url = "https://github.com/sagb/alttab/commit/665e3e369f74ab0075c22a46a3cb3a9f76bdd762.patch";
hash = "sha256-7l74kXs0bAyozBbgOEzDSY+4NE2pjdVfWda0XiPvCz4=";
})
];
nativeBuildInputs = [
autoconf
automake
+3 -3
View File
@@ -16,16 +16,16 @@
rustPlatform.buildRustPackage rec {
pname = "amdgpu_top";
version = "0.11.0";
version = "0.11.2";
src = fetchFromGitHub {
owner = "Umio-Yasuno";
repo = "amdgpu_top";
tag = "v${version}";
hash = "sha256-ZXvTLzEjH+R59GqRzDcdtNI7MD7SpG89Wm32KdgEAgg=";
hash = "sha256-yw73bKO91O05WBQNwjcQ+AqxYgGXXC7XJzUnMx5/IWc=";
};
cargoHash = "sha256-L9vQHht7sZCosKTiMS77IG2WOOTmnMbLQqN8SInU6zM=";
cargoHash = "sha256-hQrgAyi7740bY5knICWACZhDYoZwPs/dO/PgVC4Krx0=";
buildInputs = [
libdrm
+2 -2
View File
@@ -8,14 +8,14 @@
# https://github.com/nianeyna/ao3downloader/blob/f8399bb8aca276ae7359157b90afd13925c90056/pyproject.toml#L8
python312Packages.buildPythonApplication rec {
pname = "ao3downloader";
version = "2025.11.0";
version = "2026.2.0";
pyproject = true;
src = fetchFromGitHub {
owner = "nianeyna";
repo = "ao3downloader";
tag = "v${version}";
hash = "sha256-EXoDUeadR25XpUNkXIALbZOqUJIdTNdbfYZoVwgZq7U=";
hash = "sha256-NrVzRYNxvy8LOvXy0/1go0wEQyLt56inu+f93UFX1CM=";
};
build-system = with python312Packages; [
+2 -2
View File
@@ -8,13 +8,13 @@
buildGoModule rec {
pname = "arkade";
version = "0.11.69";
version = "0.11.70";
src = fetchFromGitHub {
owner = "alexellis";
repo = "arkade";
tag = version;
hash = "sha256-aTgW7zYaY8R4fgfQEg2IKC0+199ZLyLPFEQhKmRqFys=";
hash = "sha256-M4W1vcAgIE8XzpyBjW2EuqTySNyDRQuQ8rpCpn4TiFY=";
};
env.CGO_ENABLED = 0;
@@ -7,16 +7,16 @@
rustPlatform.buildRustPackage (finalAttrs: {
pname = "automatic-timezoned";
version = "2.0.113";
version = "2.0.115";
src = fetchFromGitHub {
owner = "maxbrunet";
repo = "automatic-timezoned";
rev = "v${finalAttrs.version}";
sha256 = "sha256-R7JJNPwhWOJB+19RC38ICy/ViOQRYnoPU7Fghi5bC40=";
sha256 = "sha256-xv+C6ML4JrwsEvvg1V/9WlE/FZh5ANB+rvYDTFsM9fQ=";
};
cargoHash = "sha256-TMuQdYNCJf/krUXLf7vPdUidzLMsUiF1jWvTBqmNEBQ=";
cargoHash = "sha256-zXsUvORQl04X1dliQmpksBnzYlYO0MkDGgmQt5F3XdQ=";
nativeInstallCheckInputs = [ versionCheckHook ];
+2 -2
View File
@@ -11,14 +11,14 @@
python3.pkgs.buildPythonApplication rec {
pname = "aws-sam-cli";
version = "1.152.0";
version = "1.153.1";
pyproject = true;
src = fetchFromGitHub {
owner = "aws";
repo = "aws-sam-cli";
tag = "v${version}";
hash = "sha256-N+x9ZNd6WvDJTFERhWJD5HsDE7dFyH+jOnEMzJ3IHSk=";
hash = "sha256-502Ca/oHAIG/9G25G8xEJEJPWwDKeGrpRN1ZcEY+1LE=";
};
build-system = with python3.pkgs; [ setuptools ];
+2 -2
View File
@@ -11,13 +11,13 @@
versionCheckHook,
nix-update-script,
}:
rustPlatform.buildRustPackage (final: {
rustPlatform.buildRustPackage (finalAttrs: {
pname = "bark";
version = "0.6.0";
src = fetchFromGitHub {
owner = "haileys";
repo = "bark";
tag = "v${final.version}";
tag = "v${finalAttrs.version}";
hash = "sha256-JaUIWGCYhasM0DgqL+DiG2rE1OWVg/N66my/4RWDN1E=";
};
+2 -2
View File
@@ -6,14 +6,14 @@
catch2,
}:
stdenv.mkDerivation (final: {
stdenv.mkDerivation (finalAttrs: {
pname = "boxed-cpp";
version = "1.4.3";
src = fetchFromGitHub {
owner = "contour-terminal";
repo = "boxed-cpp";
rev = "v${final.version}";
rev = "v${finalAttrs.version}";
hash = "sha256-uZ/wT159UuEcTUtoQyt0D59z2wnLT5KpeeCpjyij198=";
};
+5 -5
View File
@@ -3,24 +3,24 @@
let
pname = "brave";
version = "1.86.146";
version = "1.86.148";
allArchives = {
aarch64-linux = {
url = "https://github.com/brave/brave-browser/releases/download/v${version}/brave-browser_${version}_arm64.deb";
hash = "sha256-/Z2KLxURCgBfqunQUrspn9wS2QAjlWQBd3K7uXwk+fk=";
hash = "sha256-86VeBM2kKbuQ+/FAq24X4DdkAUOFzlGg52cAosMExzo=";
};
x86_64-linux = {
url = "https://github.com/brave/brave-browser/releases/download/v${version}/brave-browser_${version}_amd64.deb";
hash = "sha256-T8/Yv5jn4Fa79eDj0IFE9P9FbCSf7H2V/UY9S/i3C3c=";
hash = "sha256-VLJLU9hgKX7MwhxdFLyaPTmOb6+AEsJze40EePVd+Ug=";
};
aarch64-darwin = {
url = "https://github.com/brave/brave-browser/releases/download/v${version}/brave-v${version}-darwin-arm64.zip";
hash = "sha256-BD4M16DVvcy0HGPrRc6l0T/so0mGicgaa7QvdGqfqKs=";
hash = "sha256-fYHd1TMN8kWzhchcCLxgU1M3frxCkvE7uITIdiopSU4=";
};
x86_64-darwin = {
url = "https://github.com/brave/brave-browser/releases/download/v${version}/brave-v${version}-darwin-x64.zip";
hash = "sha256-tbotgvXI706iM+VrXW6QA2ewxqQHqaFvV30cb7PwSrY=";
hash = "sha256-a37FTE/qi37d+pGrtkZWVqKaMXzLyIO/ppV4k9hz0uE=";
};
};
+2 -2
View File
@@ -15,7 +15,7 @@
assert par2Support -> par2cmdline != null;
let
version = "0.33.9";
version = "0.33.10";
pythonDeps =
with python3.pkgs;
@@ -38,7 +38,7 @@ stdenv.mkDerivation {
repo = "bup";
owner = "bup";
tag = version;
hash = "sha256-MW4kScu81XW89W7WpvOj40+S8bG5QozN30Hfj4TsnX4=";
hash = "sha256-uqXlfTFRgCN9c00iQik+IMN6k81fpeY6gNscP54Xzgs=";
};
buildInputs = [
+3 -3
View File
@@ -7,13 +7,13 @@
buildGoModule rec {
pname = "c2FmZQ";
version = "0.5.3";
version = "0.5.5";
src = fetchFromGitHub {
owner = "c2FmZQ";
repo = "c2FmZQ";
rev = "v${version}";
hash = "sha256-SBCUOQpV03kZu6nHuwTUd8gyKeK+XAthZ+H7IRYFjdM=";
hash = "sha256-O4/V8fFiTfqTiJWPwEsdigdeKBmwGGo43ZvJXPcVRlE=";
};
ldflags = [
@@ -23,7 +23,7 @@ buildGoModule rec {
sourceRoot = "${src.name}/c2FmZQ";
vendorHash = "sha256-jyos/CNQyuatq4KL2nqCPtRuMQLZMB35VECiKQhq4go=";
vendorHash = "sha256-B1kHtDHnviU60WEfmASMX69nyEepeeBdMZVtbcmZ9z4=";
subPackages = [
"c2FmZQ-client"
+3 -3
View File
@@ -6,16 +6,16 @@
rustPlatform.buildRustPackage rec {
pname = "cargo-swift";
version = "0.10.0";
version = "0.11.0";
src = fetchFromGitHub {
owner = "antoniusnaumann";
repo = "cargo-swift";
rev = "v${version}";
hash = "sha256-koHQaYfMDc8GxQ+K7C1YluMY5u4cUGV8/Ehjt/KWl/g=";
hash = "sha256-abLXt9wIw/qhSkusRSmHJHU8feojaLVQeFP8DAkE1Gc=";
};
cargoHash = "sha256-8aFISZ2nzCmxxKkX77jEOE/MWcKwyTw8IGTEbJ0mKWg=";
cargoHash = "sha256-u4lzPbXyBCcZk5kzxuYHjtJQTTxjRYeDeMpIcK+Dr8Q=";
meta = {
description = "Cargo plugin to easily build Swift packages from Rust code";
+2 -2
View File
@@ -7,13 +7,13 @@
buildGoModule rec {
pname = "circleci-cli";
version = "0.1.34038";
version = "0.1.34283";
src = fetchFromGitHub {
owner = "CircleCI-Public";
repo = "circleci-cli";
rev = "v${version}";
sha256 = "sha256-kEhAiTcWY+xXX5jFgJZtle0CEwqRT2BHDEM8iSUFRh4=";
sha256 = "sha256-LcZAdYADw8pQQIpnAhP1Yoo4E5pC+/9+rNEthntZ1vU=";
};
vendorHash = "sha256-QMSciB81khHhjd/4Km1YYyTiEFDF75AcNGsmZTLLO5Q=";
+3 -3
View File
@@ -6,16 +6,16 @@
buildNpmPackage (finalAttrs: {
pname = "claude-code-acp";
version = "0.13.2";
version = "0.15.0";
src = fetchFromGitHub {
owner = "zed-industries";
repo = "claude-code-acp";
tag = "v${finalAttrs.version}";
hash = "sha256-hHq7U7PRqMln9jgdnYdVeWmagMQOiKSMI2VIcyGNgVk=";
hash = "sha256-vmsPHfE5wAfGARLPlcbQxXuHKMEKUAVC66zlhE0Fdo0=";
};
npmDepsHash = "sha256-tsB5OrdbcmVr+zsrrJAjdOhtKoYzyecaZcyrwJU7zjg=";
npmDepsHash = "sha256-lVxvoTxaLdRQ61rtYKgE9ETaGP3fOovtzYKs5lxMAC8=";
meta = {
description = "ACP-compatible coding agent powered by the Claude Code SDK";
+3 -3
View File
@@ -4,7 +4,7 @@
fetchFromGitHub,
}:
stdenv.mkDerivation (self: {
stdenv.mkDerivation (finalAttrs: {
pname = "CLProver++";
version = "1.0.3";
@@ -43,8 +43,8 @@ stdenv.mkDerivation (self: {
mkdir -p $out/bin
cp -r bin $out/
mkdir -p $out/share/${self.pname}
cp -r examples $out/share/${self.pname}/examples
mkdir -p $out/share/${finalAttrs.pname}
cp -r examples $out/share/${finalAttrs.pname}/examples
runHook postInstall
'';
+3 -3
View File
@@ -9,16 +9,16 @@
rustPlatform.buildRustPackage (finalAttrs: {
pname = "cobalt";
version = "0.20.2";
version = "0.20.3";
src = fetchFromGitHub {
owner = "cobalt-org";
repo = "cobalt.rs";
tag = "v${finalAttrs.version}";
hash = "sha256-XtytPFg8N4ilFte8s5DoMrQHjAkJ7RkJcMbGXcxmaa4=";
hash = "sha256-ec6S6PQzDc8t8MuZLyVStxi7tQB6rMu+Fz8Tw1qpTGc=";
};
cargoHash = "sha256-x4cnwCpbDYvUhlp8Fw2//NC9Z/kbv/hGF7MqKAft8bU=";
cargoHash = "sha256-xwpEdhV9YDfNIbjocz5N0E4BO8FW7Af2kW4QndqZhPo=";
nativeInstallCheckInputs = [ versionCheckHook ];
doInstallCheck = true;
+1 -1
View File
@@ -9,7 +9,7 @@
# Use the same stdenv, including clang, as Swift itself
# Fixes build issues, see https://github.com/NixOS/nixpkgs/pull/296082 and https://github.com/NixOS/nixpkgs/issues/295322
swiftPackages.stdenv.mkDerivation (final: {
swiftPackages.stdenv.mkDerivation (finalAttrs: {
pname = "dark-mode-notify";
version = "0-unstable-2022-07-18";
+2 -2
View File
@@ -82,12 +82,12 @@ let
pugixml-shared = pugixml.override { shared = true; };
in
stdenv.mkDerivation rec {
version = "5.4.0";
version = "5.4.1";
pname = "darktable";
src = fetchurl {
url = "https://github.com/darktable-org/darktable/releases/download/release-${version}/darktable-${version}.tar.xz";
hash = "sha256-K/C66njSeUXPCcM9iATxeeA6g+4Z0ukn/WYOpGrKOxY=";
hash = "sha256-r9x8iKM4qM0vrDHIRQ0Hbtv3PpVuQwcmDIPrwZX4ReQ=";
};
nativeBuildInputs = [
+2 -2
View File
@@ -23,14 +23,14 @@ let
hash = "sha256-WwJR5lnWtR3aYWZmk8pBC0/qaRqY0UrWHIaYp2ajImE=";
};
in
stdenv.mkDerivation (final: {
stdenv.mkDerivation (finalAttrs: {
pname = "dssat";
version = "4.8.2.12";
src = fetchFromGitHub {
owner = "DSSAT";
repo = "dssat-csm-os";
tag = "v${final.version}";
tag = "v${finalAttrs.version}";
hash = "sha256-8OaTM7IXFZjlelx5O4O+bVNQj4dIhGzIk2iCfpqI8uA=";
};
@@ -6,14 +6,14 @@
nix-update-script,
}:
stdenv.mkDerivation (self: {
stdenv.mkDerivation (finalAttrs: {
pname = "emmy-lua-code-style";
version = "1.6.0";
src = fetchFromGitHub {
owner = "CppCXY";
repo = "EmmyLuaCodeStyle";
tag = self.version;
tag = finalAttrs.version;
hash = "sha256-FYtDO9ZL7MjC+vHzrylyYBQHTtef/GM9ipt//EcLr4w=";
};
@@ -23,7 +23,7 @@ stdenv.mkDerivation (self: {
meta = {
homepage = "https://github.com/CppCXY/EmmyLuaCodeStyle";
changelog = "https://github.com/CppCXY/EmmyLuaCodeStyle/releases/tag/${self.version}";
changelog = "https://github.com/CppCXY/EmmyLuaCodeStyle/releases/tag/${finalAttrs.version}";
description = "Fast, powerful, and feature-rich Lua formatting and checking tool";
mainProgram = "CodeFormat";
platforms = lib.platforms.unix;
+2 -2
View File
@@ -7,14 +7,14 @@
rustPlatform,
}:
rustPlatform.buildRustPackage (final: {
rustPlatform.buildRustPackage (finalAttrs: {
pname = "evil-helix";
version = "20250915";
src = fetchFromGitHub {
owner = "usagi-flow";
repo = "evil-helix";
tag = "release-${final.version}";
tag = "release-${finalAttrs.version}";
hash = "sha256-6kqKTZNS1RZwfxcFoa2uC7fUKcQ+KhT5KXusyCt59YQ=";
};
+2 -2
View File
@@ -7,13 +7,13 @@
buildGoModule rec {
pname = "exoscale-cli";
version = "1.91.0";
version = "1.92.0";
src = fetchFromGitHub {
owner = "exoscale";
repo = "cli";
rev = "v${version}";
sha256 = "sha256-I8MzW81ai6qKN0Xk+/jHK7TcicUJdPwNE09McuxHwy4=";
sha256 = "sha256-EJtJOEAKlyUkLZqmmRDuZE9Sg2ANKH1NmikT9v6L+hY=";
};
vendorHash = null;
+2 -2
View File
@@ -7,13 +7,13 @@
stdenv.mkDerivation (finalAttrs: {
pname = "fast-float";
version = "8.2.2";
version = "8.2.3";
src = fetchFromGitHub {
owner = "fastfloat";
repo = "fast_float";
rev = "v${finalAttrs.version}";
hash = "sha256-IZCZZayK3INU5P8HwZvWfOJuRfBrbPYuMQCjgCjHCWE=";
hash = "sha256-cQxIzfVNMG0UPEUw/4GYcRzmfAcBJLcswO+gqQ8t6lw=";
};
nativeBuildInputs = [ cmake ];
+3 -3
View File
@@ -11,16 +11,16 @@
buildGoModule rec {
pname = "ghq";
version = "1.8.0";
version = "1.8.1";
src = fetchFromGitHub {
owner = "x-motemen";
repo = "ghq";
tag = "v${version}";
sha256 = "sha256-5BN96/RShfJpkfpJe0qrZVDuyFoAV9kgCiBv4REY/5Y=";
sha256 = "sha256-Iw8hu2QtnRgRbSTqtIPDmKbx5FcE2j68VfzP4egbZgY=";
};
vendorHash = "sha256-jP2Ne/EhmE3tACY1+lHucgBt3VnT4gaQisE3/gVM5Ec=";
vendorHash = "sha256-RRxRwYTkveOZvvxAwpG9ie4+ZdUDDkZZfX5cNn0DAhA=";
doCheck = false;
+2 -2
View File
@@ -5,14 +5,14 @@
}:
buildGoModule (finalAttrs: {
pname = "gitea-mcp-server";
version = "0.7.0";
version = "0.8.0";
src = fetchFromGitea {
domain = "gitea.com";
owner = "gitea";
repo = "gitea-mcp";
tag = "v${finalAttrs.version}";
hash = "sha256-Qh+UD4V511y1PvM6TQ3dwDXx01FAR80b9wnhxXC/7X4=";
hash = "sha256-hnwzDyH+H86xzlaMwpVAltKiPJnkM38qNnM6mM5r/Yc=";
};
vendorHash = "sha256-N1Ct479Q5RH4TCxcSbIBoGDP/atBlWkxwBLJLk82juM=";
+3 -3
View File
@@ -13,13 +13,13 @@
buildGoModule (finalAttrs: {
pname = "glab";
version = "1.81.0";
version = "1.82.0";
src = fetchFromGitLab {
owner = "gitlab-org";
repo = "cli";
tag = "v${finalAttrs.version}";
hash = "sha256-L6KFxxg9zW1EZZ0nDd9ft3TsXV4M1P1AhK1/Gg5+4Xk=";
hash = "sha256-fn0aBYO60oQp3fAskGRNsMuB3kWuKrZ7h/WSji4LwQs=";
leaveDotGit = true;
postFetch = ''
cd "$out"
@@ -28,7 +28,7 @@ buildGoModule (finalAttrs: {
'';
};
vendorHash = "sha256-Vn3PE28+OlXoB/5UNXIe/BVfhxY1YiOuJEiPSkoyZ30=";
vendorHash = "sha256-um/TyXu5O3qF/DludixdZJM3ZQDjchOk3AfopOfF2vA=";
ldflags = [
"-s"
+2 -2
View File
@@ -9,14 +9,14 @@
enableInterop ? true,
}:
stdenv.mkDerivation (final: {
stdenv.mkDerivation (finalAttrs: {
pname = "glaze";
version = "7.0.0";
src = fetchFromGitHub {
owner = "stephenberry";
repo = "glaze";
tag = "v${final.version}";
tag = "v${finalAttrs.version}";
hash = "sha256-bYXXQmrVnrBTW/r+fgRBPYfKGPtHvEDw0Sk6BYTMm/4=";
};
+2 -2
View File
@@ -6,13 +6,13 @@
buildGoModule rec {
pname = "hasura";
version = "2.48.10";
version = "2.48.11";
src = fetchFromGitHub {
owner = "hasura";
repo = "graphql-engine";
rev = "v${version}";
sha256 = "sha256-L4H9Jbddyp/p4y7aUXhwzGxiroRHNLmHRu5fBlvNrqI=";
sha256 = "sha256-ySZ2dbu3W7JfsE20r9AUG4/JbI5DN9MS7lPe8NXjpQ0=";
};
modRoot = "./cli";
+3 -3
View File
@@ -10,7 +10,7 @@
nix-update-script,
}:
rustPlatform.buildRustPackage (final: {
rustPlatform.buildRustPackage (finalAttrs: {
pname = "helix";
version = "25.07.1";
outputs = [
@@ -21,7 +21,7 @@ rustPlatform.buildRustPackage (final: {
# This release tarball includes source code for the tree-sitter grammars,
# which is not ordinarily part of the repository.
src = fetchzip {
url = "https://github.com/helix-editor/helix/releases/download/${final.version}/helix-${final.version}-source.tar.xz";
url = "https://github.com/helix-editor/helix/releases/download/${finalAttrs.version}/helix-${finalAttrs.version}-source.tar.xz";
hash = "sha256-Pj/lfcQXRWqBOTTWt6+Gk61F9F1UmeCYr+26hGdG974=";
stripRoot = false;
};
@@ -77,7 +77,7 @@ rustPlatform.buildRustPackage (final: {
meta = {
description = "Post-modern modal text editor";
homepage = "https://helix-editor.com";
changelog = "https://github.com/helix-editor/helix/blob/${final.version}/CHANGELOG.md";
changelog = "https://github.com/helix-editor/helix/blob/${finalAttrs.version}/CHANGELOG.md";
license = lib.licenses.mpl20;
mainProgram = "hx";
maintainers = with lib.maintainers; [
@@ -14,13 +14,13 @@
stdenv.mkDerivation (finalAttrs: {
pname = "highscore-mednafen";
version = "0-unstable-2026-01-28";
version = "0-unstable-2026-01-31";
src = fetchFromGitHub {
owner = "highscore-emu";
repo = "mednafen-highscore";
rev = "2e8e49ee3155b2497b6a79f815f097e46e23ac0e";
hash = "sha256-XGJpKQIBJ0Xu7w9FPc8xw8EKRLb5Y+0bhy8z8OuPOIg=";
rev = "f1646bbc664837f5b2ecbfb32cc5c42101466bfd";
hash = "sha256-YHVV6/8JTESLtGA5jFozE5IhXHB4RaUaT2yvFd7wGo8=";
};
sourceRoot = "${finalAttrs.src.name}/highscore";
+3 -3
View File
@@ -6,16 +6,16 @@
buildNpmPackage rec {
pname = "htmlhint";
version = "1.8.0";
version = "1.8.1";
src = fetchFromGitHub {
owner = "htmlhint";
repo = "HTMLHint";
rev = "v${version}";
hash = "sha256-zRn6fqziqgp3cOPZfkmN+KP84bgjdPmaHD7n6rtiHVA=";
hash = "sha256-uzOdp9SkYQ1SKQqM3DrvKsMAyMw+7s74lNR2jOgLAIM=";
};
npmDepsHash = "sha256-L/yVM/HoBewzoADn9M+c2Er5LFEiZXajYIK8fvsDdio=";
npmDepsHash = "sha256-Ii73v3Yt10GBwvdxNTy4bmU0RxRGfMaEewP8gdC2OEc=";
meta = {
changelog = "https://github.com/htmlhint/HTMLHint/blob/${src.rev}/CHANGELOG.md";
+2 -2
View File
@@ -4,12 +4,12 @@
fetchurl,
}:
stdenv.mkDerivation (finalAttr: {
stdenv.mkDerivation (finalAttrs: {
pname = "iat";
version = "0.1.7";
src = fetchurl {
url = "mirror://sourceforge/iat.berlios/iat-${finalAttr.version}.tar.gz";
url = "mirror://sourceforge/iat.berlios/iat-${finalAttrs.version}.tar.gz";
hash = "sha256-sl1X/eKKArLYfNSf0UeLA5rb2DY1GHmmVP6hTCd2SyE=";
};
+4 -4
View File
@@ -33,12 +33,13 @@ rustPlatform.buildRustPackage rec {
nativeBuildInputs = [
installShellFiles
]
++ lib.optionals stdenv.hostPlatform.isLinux [
pkg-config
];
buildInputs = lib.optionals stdenv.hostPlatform.isLinux [
buildInputs = [
oniguruma
]
++ lib.optionals stdenv.hostPlatform.isLinux [
fontconfig
libxcursor
libxi
@@ -47,7 +48,6 @@ rustPlatform.buildRustPackage rec {
wayland
libxkbcommon
openssl
oniguruma
];
# use system oniguruma since the bundled one fails to build with gcc15
+2 -2
View File
@@ -13,14 +13,14 @@
nix-update-script,
}:
rustPlatform.buildRustPackage (finalAttr: {
rustPlatform.buildRustPackage (finalAttrs: {
pname = "ivm";
version = "0.6.0";
src = fetchFromGitHub {
owner = "inko-lang";
repo = "ivm";
tag = "v${finalAttr.version}";
tag = "v${finalAttrs.version}";
hash = "sha256-pqqUvHK6mPrK1Mir2ILANxtih9OrAKDJPE0nRWc5JOY=";
};
@@ -20,14 +20,14 @@
enableAlsa ? stdenv.hostPlatform.isLinux,
}:
stdenv.mkDerivation (final: {
stdenv.mkDerivation (finalAttrs: {
pname = "jack-example-tools";
version = "4";
src = fetchFromGitHub {
owner = "jackaudio";
repo = "jack-example-tools";
rev = "tags/${final.version}";
rev = "tags/${finalAttrs.version}";
hash = "sha256-5jmynNxwNVLxEZ1MaqQUG6kRwipDkjhrdDCbZHtmAHk=";
};
+2 -2
View File
@@ -32,14 +32,14 @@
zlib,
}:
stdenv.mkDerivation (finalPackage: {
stdenv.mkDerivation (finalAttrs: {
pname = "kismet";
version = "2025-09-R1";
src = fetchFromGitHub {
owner = "kismetwireless";
repo = "kismet";
tag = "kismet-${finalPackage.version}";
tag = "kismet-${finalAttrs.version}";
hash = "sha256-bwgeBIa5P1he0azWBu1YTXS9EGlHdJK8hS6A5Rj9XU4=";
};
+5 -1
View File
@@ -19,6 +19,7 @@
bash,
buildPackages,
nix-update-script,
nixosTests,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "kmscon";
@@ -63,7 +64,10 @@ stdenv.mkDerivation (finalAttrs: {
./sandbox.patch # Generate system units where they should be (nix store) instead of /etc/systemd/system
];
passthru.updateScript = nix-update-script { extraArgs = [ "--use-github-releases" ]; };
passthru = {
tests.kmscon = nixosTests.kmscon;
updateScript = nix-update-script { extraArgs = [ "--use-github-releases" ]; };
};
meta = {
description = "KMS/DRM based System Console";
+2 -2
View File
@@ -8,13 +8,13 @@
buildGoModule rec {
pname = "kool";
version = "3.5.3";
version = "3.6.0";
src = fetchFromGitHub {
owner = "kool-dev";
repo = "kool";
rev = version;
hash = "sha256-pZ667bDyRWIrImBNHyhkOGl/22gjHKX6KsVSTckS1U4=";
hash = "sha256-81UhlEAk8ZNC/G6tV2g8+VZVVrLJVV6Dji2pjmWIYb8=";
};
vendorHash = "sha256-IqUkIf0uk4iUTedTO5xRzjmJwHS+p6apo4E0WEEU6cc=";
+2 -2
View File
@@ -13,14 +13,14 @@
withPostQuantum ? true,
}:
rustPlatform.buildRustPackage (finalPackage: {
rustPlatform.buildRustPackage (finalAttrs: {
pname = "kryoptic";
version = "1.4.0";
src = fetchFromGitHub {
owner = "latchset";
repo = "kryoptic";
tag = "v${finalPackage.version}";
tag = "v${finalAttrs.version}";
hash = "sha256-tP2BZkGCZqfLNLZ/mYAVkICWKTM1EbL7lbw+Mnx4VTk=";
};
+3 -3
View File
@@ -6,16 +6,16 @@
buildGoModule rec {
pname = "kubectl-cnpg";
version = "1.28.0";
version = "1.28.1";
src = fetchFromGitHub {
owner = "cloudnative-pg";
repo = "cloudnative-pg";
rev = "v${version}";
hash = "sha256-uIIy4zSf6ply859aHVvlujqBWpN18FLZh+Vye3fbSoY=";
hash = "sha256-9NfjrVF0OtDLaGD5PPFSZcI8V3Vy/yOTm/JwnE3kMZE=";
};
vendorHash = "sha256-Hl7cYZbs+rDS2+1ojgCUhLfBVGQ+ZhAApRczkUYOwVY=";
vendorHash = "sha256-QNtKtHTxOgm6EbOSvA2iUE0hjltwTBNkA1mIC3N+AbM=";
subPackages = [ "cmd/kubectl-cnpg" ];
+3 -3
View File
@@ -6,16 +6,16 @@
buildGoModule rec {
pname = "kubectl-gadget";
version = "0.48.1";
version = "0.49.0";
src = fetchFromGitHub {
owner = "inspektor-gadget";
repo = "inspektor-gadget";
tag = "v${version}";
hash = "sha256-brYWsPd8RDBiFoXhbnNf8R0cgnHws1Wh5bc8y0s2U3k=";
hash = "sha256-BXkBxfe9/UgqllaF2canR/mkSPeLUERhF33KIilXQHw=";
};
vendorHash = "sha256-FLWpvCHeZUnlGZM1lxNoArqfSP2iQuYnhBRtD2ymclI=";
vendorHash = "sha256-IIRSEqE+cXpQGt3Z9U7fhSuspj5y2l4aRdjY5HnQCbU=";
env.CGO_ENABLED = 0;
+3 -3
View File
@@ -6,16 +6,16 @@
buildGoModule rec {
pname = "kubefirst";
version = "2.10.4";
version = "2.10.5";
src = fetchFromGitHub {
owner = "konstructio";
repo = "kubefirst";
tag = "v${version}";
hash = "sha256-9uecbFdixMRAqFJyyDFwtGBylYXSxiqs+Suj/W2gEHA=";
hash = "sha256-2rxvUbf94cG/56ri3GXKpHSoqSXg2cfu5wpm4UUjpVE=";
};
vendorHash = "sha256-1u34cuPUY/5fYd073UhRUu/5/1nhPadTI06+3o+uE7w=";
vendorHash = "sha256-/su9f8JVXaJrC7/rcX1LK/amolVmkRAtPF1bqzxcKh8=";
ldflags = [
"-s"
@@ -7,13 +7,13 @@
stdenvNoCC.mkDerivation {
pname = "libretro-shaders-slang";
version = "0-unstable-2026-01-29";
version = "0-unstable-2026-02-06";
src = fetchFromGitHub {
owner = "libretro";
repo = "slang-shaders";
rev = "bbdb6153e5832d419702dfbee9e1e621f99aee32";
hash = "sha256-V07LnMa7LTLBaSUUhyIuNgrJU2nQa08Yonq5O7vTvyU=";
rev = "476a4c7226f87dca4ed67635746ebfaa91851a82";
hash = "sha256-zO9/9OEU5TMokjPdvkKtB4LI/Bf+mDQOtsg0k9dZ99c=";
};
dontConfigure = true;
+5 -5
View File
@@ -1,11 +1,11 @@
{
"packageVersion": "147.0.1-3",
"packageVersion": "147.0.3-2",
"source": {
"rev": "147.0.1-3",
"hash": "sha256-0BeC3zlL5cvnpTaPnKn26lT1XlvqBQuMc4rauNbeIIk="
"rev": "147.0.3-2",
"hash": "sha256-Gnsk+dY0B0j/0npy//y/UItKvPrI9HELrH86x0QklBk="
},
"firefox": {
"version": "147.0.1",
"hash": "sha512-8eG8SGRRJU8zsAD7RRP9lIpaboSEGYDudnxC0ybhhW9EqEN8j9v/LLNNF3/qKxkH/Nct0zvOw/Bt242IFRhTqA=="
"version": "147.0.3",
"hash": "sha512-N+OcR9aU7M3Ku32KCkz+GwKGCpf2BGU/Nkxg9OmHlv/H8carUSJrLlA0pLSAXMxuw5g/DYMMnzZpLfLsJhJz2Q=="
}
}
+2 -2
View File
@@ -10,14 +10,14 @@
python ? null,
withPython ? false,
}:
stdenv.mkDerivation (attrs: {
stdenv.mkDerivation (finalAttrs: {
pname = "libsbml";
version = "5.20.4";
src = fetchFromGitHub {
owner = "sbmlteam";
repo = "libsbml";
rev = "v${attrs.version}";
rev = "v${finalAttrs.version}";
hash = "sha256-qWTN033YU4iWzt+mXQaP5W/6IF5nebF4PwNVkyL8wTg=";
};
+2 -2
View File
@@ -19,14 +19,14 @@ let
stripRoot = false;
};
in
stdenv.mkDerivation (final: {
stdenv.mkDerivation (finalAttrs: {
pname = "libunicode";
version = "0.7.0";
src = fetchFromGitHub {
owner = "contour-terminal";
repo = "libunicode";
tag = "v${final.version}";
tag = "v${finalAttrs.version}";
hash = "sha256-J8qawT1oiUO9xTVEMQvsY0K2NtIfkUq9PoCbFt6wqek=";
};
+5 -5
View File
@@ -6,15 +6,15 @@
fixDarwinDylibNames,
}:
stdenv.mkDerivation {
stdenv.mkDerivation (finalAttrs: {
pname = "linenoise";
version = "1.0-34-g93b2db9";
version = "2.0";
src = fetchFromGitHub {
owner = "antirez";
repo = "linenoise";
rev = "1.0-34-g93b2db9";
hash = "sha256-GsrYg16gpjHkkmpCU3yGzqNS/buZl+JoWALLvwzmT4A=";
tag = finalAttrs.version;
hash = "sha256-lqJ/ecw7Q4QyDVXVFrxHL5EbNZOHpy5WruQn4VNibNA=";
};
nativeBuildInputs = [
@@ -54,4 +54,4 @@ stdenv.mkDerivation {
platforms = lib.platforms.unix;
license = lib.licenses.bsd2;
};
}
})
+3 -3
View File
@@ -10,14 +10,14 @@
libconfig,
}:
stdenv.mkDerivation (oldAttrs: {
stdenv.mkDerivation (finalAttrs: {
pname = "logiops";
version = "0.3.5";
src = fetchFromGitHub {
owner = "PixlOne";
repo = "logiops";
tag = "v${oldAttrs.version}";
tag = "v${finalAttrs.version}";
hash = "sha256-GAnlPqjIFGyOWwYFs7gth2m9ITc1jyiaW0sWwQ2zFOs=";
# In v0.3.0, the `ipcgull` submodule was added as a dependency
# https://github.com/PixlOne/logiops/releases/tag/v0.3.0
@@ -40,7 +40,7 @@ stdenv.mkDerivation (oldAttrs: {
];
cmakeFlags = [
"-DLOGIOPS_VERSION=${oldAttrs.version}"
"-DLOGIOPS_VERSION=${finalAttrs.version}"
"-DDBUS_SYSTEM_POLICY_INSTALL_DIR=${placeholder "out"}/share/dbus-1/system.d"
];
@@ -18,14 +18,14 @@ let
fastdeploy = callPackage ./fastdeploy-ppocr.nix { };
sources = lib.importJSON ./pin.json;
in
stdenv.mkDerivation (finalAttr: {
stdenv.mkDerivation (finalAttrs: {
pname = "maa-assistant-arknights" + lib.optionalString isBeta "-beta";
version = if isBeta then sources.beta.version else sources.stable.version;
src = fetchFromGitHub {
owner = "MaaAssistantArknights";
repo = "MaaAssistantArknights";
rev = "v${finalAttr.version}";
rev = "v${finalAttrs.version}";
hash = if isBeta then sources.beta.hash else sources.stable.hash;
};
@@ -63,7 +63,7 @@ stdenv.mkDerivation (finalAttr: {
(lib.cmakeBool "INSTALL_PYTHON" true)
(lib.cmakeBool "INSTALL_RESOURCE" true)
(lib.cmakeBool "USE_MAADEPS" false)
(lib.cmakeFeature "MAA_VERSION" "v${finalAttr.version}")
(lib.cmakeFeature "MAA_VERSION" "v${finalAttrs.version}")
];
passthru.updateScript = ./update.sh;
@@ -73,8 +73,8 @@ stdenv.mkDerivation (finalAttr: {
'';
postInstall = ''
mkdir -p $out/share/${finalAttr.pname}
mv $out/{Python,resource} $out/share/${finalAttr.pname}
mkdir -p $out/share/${finalAttrs.pname}
mv $out/{Python,resource} $out/share/${finalAttrs.pname}
'';
meta = {
+1
View File
@@ -81,6 +81,7 @@ stdenv.mkDerivation (finalAttrs: {
mkdir -p platformio-deps-native
cp -ar ${platformio-deps-native}/. platformio-deps-native
chmod +w -R platformio-deps-native
rm -f platformio-deps-native/core/appstate.json
export PLATFORMIO_CORE_DIR=platformio-deps-native/core
export PLATFORMIO_LIBDEPS_DIR=platformio-deps-native/libdeps
+3 -3
View File
@@ -11,16 +11,16 @@
rustPlatform.buildRustPackage rec {
pname = "netavark";
version = "1.17.1";
version = "1.17.2";
src = fetchFromGitHub {
owner = "containers";
repo = "netavark";
rev = "v${version}";
hash = "sha256-KLN1Y2C43dTZlm1VNZq49/zQY55iAPf5V7KK5zjC2dw=";
hash = "sha256-FdJNcHYK6Jc1dNqcUr5Ne8dv1dzlHRhcjoldiihrov8=";
};
cargoHash = "sha256-Ac8/0MgvDZ3djUlKOv3yT3aCPkxbNPnFM8ZId6yN354=";
cargoHash = "sha256-wp/1lWc3OfNQt74m8DtpuFO/Mf07+M7numq2FMEkeGo=";
nativeBuildInputs = [
installShellFiles
+5 -5
View File
@@ -6,14 +6,14 @@
lib,
}:
stdenv.mkDerivation (attrs: {
stdenv.mkDerivation (finalAttrs: {
pname = "Nuget";
version = "6.6.1.2";
src = fetchFromGitHub {
owner = "mono";
repo = "linux-packaging-nuget";
rev = "upstream/${attrs.version}.bin";
rev = "upstream/${finalAttrs.version}.bin";
hash = "sha256-9/dSeVshHbpYIgGE/8OzrB4towrWVB3UxDi8Esmbu7Y=";
};
@@ -24,14 +24,14 @@ stdenv.mkDerivation (attrs: {
installPhase = ''
runHook preInstall
mkdir -p $out/lib/${attrs.pname}
cp -r . $out/lib/${attrs.pname}/
mkdir -p $out/lib/${finalAttrs.pname}
cp -r . $out/lib/${finalAttrs.pname}/
mkdir -p $out/bin
makeWrapper \
"${mono}/bin/mono" \
"$out/bin/nuget" \
--add-flags "$out/lib/${attrs.pname}/nuget.exe"
--add-flags "$out/lib/${finalAttrs.pname}/nuget.exe"
runHook postInstall
'';
@@ -7,14 +7,14 @@
stdenvNoCC,
}:
stdenvNoCC.mkDerivation (self: {
stdenvNoCC.mkDerivation (finalAttrs: {
pname = "open-english-wordnet";
version = "2022";
src = fetchFromGitHub {
owner = "globalwordnet";
repo = "english-wordnet";
rev = "${self.version}-edition";
rev = "${finalAttrs.version}-edition";
hash = "sha256-a1fWIp39uuJZL1aFX/r+ttLB1+kwh/XPHwphgENTQ5M=";
};
@@ -49,14 +49,14 @@ stdenvNoCC.mkDerivation (self: {
python scripts/merge.py
echo Compressing
gzip --best --no-name --stdout ./wn.xml > 'oewn:${self.version}.xml.gz'
gzip --best --no-name --stdout ./wn.xml > 'oewn:${finalAttrs.version}.xml.gz'
runHook postBuild
'';
installPhase = ''
runHook preInstall
install -Dt $out/share/wordnet 'oewn:${self.version}.xml.gz'
install -Dt $out/share/wordnet 'oewn:${finalAttrs.version}.xml.gz'
runHook postInstall
'';
+1 -1
View File
@@ -32,7 +32,7 @@ rustPlatform.buildRustPackage (finalAttrs: {
;
cargoRoot = "packages/desktop/src-tauri";
cargoHash = "sha256-bLM/ZcUaaswFrg+WogY81HnTn5do/7tu+JA/+tJNmMw=";
cargoHash = "sha256-zdqquibtTpMAoY9qjzjGNnq3+GFXKYGj9K3+hKpcsag=";
buildAndTestSubdir = finalAttrs.cargoRoot;
nativeBuildInputs = [
+4 -4
View File
@@ -14,12 +14,12 @@
}:
stdenvNoCC.mkDerivation (finalAttrs: {
pname = "opencode";
version = "1.1.47";
version = "1.1.53";
src = fetchFromGitHub {
owner = "anomalyco";
repo = "opencode";
tag = "v${finalAttrs.version}";
hash = "sha256-f6TVxKV9q2yEQ9r9VCTttXLqpOrYdTEKDUJs+MuQJCQ=";
hash = "sha256-VddWpvtoDJlbbesJL6VlP99/NJqkHbN8Rdv1XccNRZM=";
};
node_modules = stdenvNoCC.mkDerivation {
@@ -70,9 +70,9 @@ stdenvNoCC.mkDerivation (finalAttrs: {
outputHash =
if stdenvNoCC.hostPlatform.isDarwin then
"sha256-BJmyALnZEiAnC8+bsri5Me1Z0Vtf6A/27e7Eve4IvDo="
"sha256-m0vAVv8zS8RgU6YpEVbf6l6vilkU+CP/PtAD6U5g/F8="
else
"sha256-zkinMkPR1hCBbB5BIuqozQZDpjX4eiFXjM6lpwUx1fM=";
"sha256-S69x2yRym+h0hbc6wHFOeTxYi9nbBgEJGaZKhUbmdxI=";
outputHashAlgo = "sha256";
outputHashMode = "recursive";
};
+2 -2
View File
@@ -13,13 +13,13 @@
buildGoModule (finalAttrs: {
pname = "opengist";
version = "1.12.0";
version = "1.12.1";
src = fetchFromGitHub {
owner = "thomiceli";
repo = "opengist";
tag = "v${finalAttrs.version}";
hash = "sha256-18anU/D8EvwA8Ind+GGhw9nSdcbo1l5K98cFie8hBCk=";
hash = "sha256-vjNrcT4IaCB+QRvvPo0oeLtFgmYXk5DDs5gYvzk4ddo=";
};
frontend = buildNpmPackage {
+2 -2
View File
@@ -8,12 +8,12 @@
stdenv.mkDerivation rec {
pname = "opengrok";
version = "1.14.10";
version = "1.14.11";
# binary distribution
src = fetchurl {
url = "https://github.com/oracle/opengrok/releases/download/${version}/${pname}-${version}.tar.gz";
hash = "sha256-3ZxbbTSrXzUNHQp5cC81zznucpJ2nHp+0U01tJ+/Cu0=";
hash = "sha256-05Aw44JmTHyy6JRWPk5+gv5BDN/W1ci0ddjPfvww0zI=";
};
nativeBuildInputs = [ makeWrapper ];
+4 -4
View File
@@ -20,13 +20,13 @@ let
KERNEL=="hidraw*", ATTRS{idVendor}=="534d", ATTRS{idProduct}=="2109", TAG+="uaccess"
'';
in
stdenv.mkDerivation (final: {
stdenv.mkDerivation (finalAttrs: {
pname = "openterface-qt";
version = "0.3.18";
src = fetchFromGitHub {
owner = "TechxArtisanStudio";
repo = "Openterface_QT";
rev = "${final.version}";
rev = "${finalAttrs.version}";
hash = "sha256-yD71UOi6iRd9N3NeASUzqoeHMcTYIqkysAfxRm7GkOA=";
};
nativeBuildInputs = [
@@ -62,8 +62,8 @@ stdenv.mkDerivation (final: {
(makeDesktopItem {
name = "openterfaceQT";
exec = "openterfaceQT";
icon = final.pname;
comment = final.meta.description;
icon = finalAttrs.pname;
comment = finalAttrs.meta.description;
desktopName = "Openterface QT";
categories = [ "Utility" ];
})
+2 -2
View File
@@ -95,7 +95,7 @@ let
};
});
in
stdenv.mkDerivation (final: {
stdenv.mkDerivation (finalAttrs: {
pname = "ovftool";
inherit (ovftoolSystem) version;
@@ -109,7 +109,7 @@ stdenv.mkDerivation (final: {
See the following URL for terms of using this software:
${mkBaseUrl ovftoolId}
Use `${final.pname}.override { acceptBroadcomEula = true; }` if you accept Broadcom's terms
Use `${finalAttrs.pname}.override { acceptBroadcomEula = true; }` if you accept Broadcom's terms
and would like to use this package.
'';
+3 -3
View File
@@ -39,7 +39,7 @@
sysHookDir ? "/usr/share/libalpm/hooks/",
}:
stdenv.mkDerivation (final: {
stdenv.mkDerivation (finalAttrs: {
pname = "pacman";
version = "7.0.0";
@@ -47,7 +47,7 @@ stdenv.mkDerivation (final: {
domain = "gitlab.archlinux.org";
owner = "pacman";
repo = "pacman";
rev = "v${final.version}";
rev = "v${finalAttrs.version}";
hash = "sha256-ejOBxN2HjV4dZwFA7zvPz3JUJa0xiJ/jZ+evEQYG1Mc=";
};
@@ -132,7 +132,7 @@ stdenv.mkDerivation (final: {
meta = {
description = "Simple library-based package manager";
homepage = "https://archlinux.org/pacman/";
changelog = "https://gitlab.archlinux.org/pacman/pacman/-/raw/v${final.version}/NEWS";
changelog = "https://gitlab.archlinux.org/pacman/pacman/-/raw/v${finalAttrs.version}/NEWS";
license = lib.licenses.gpl2Plus;
platforms = lib.platforms.linux;
mainProgram = "pacman";
+2 -2
View File
@@ -30,13 +30,13 @@
lndir,
}:
let
version = "2.20.5";
version = "2.20.6";
src = fetchFromGitHub {
owner = "paperless-ngx";
repo = "paperless-ngx";
tag = "v${version}";
hash = "sha256-EZaAn55gilvTitAo0p7U3BeqNI9iYIWg147BbO2fp9M=";
hash = "sha256-rTkkvSkgYQtT9KglXsyf4SWwjoJWtX5YwcVUbEbLac0=";
};
python = python3.override {
+2 -2
View File
@@ -5,7 +5,7 @@
fetchFromGitHub,
}:
stdenv.mkDerivation (finalAttr: {
stdenv.mkDerivation (finalAttrs: {
pname = "patcher9x";
version = "0.8.50";
@@ -13,7 +13,7 @@ stdenv.mkDerivation (finalAttr: {
(fetchFromGitHub {
owner = "JHRobotics";
repo = "patcher9x";
rev = "v${finalAttr.version}";
rev = "v${finalAttrs.version}";
hash = "sha256-TZw2+R7Dzojzxzal1Wp8jhe5gwU4CfZDROITi5Z+auo=";
name = "src";
})
+2 -2
View File
@@ -6,13 +6,13 @@
buildGoModule rec {
pname = "phrase-cli";
version = "2.55.1";
version = "2.55.2";
src = fetchFromGitHub {
owner = "phrase";
repo = "phrase-cli";
rev = version;
sha256 = "sha256-hcq6ZCWeKRmjshLYXNDOULWXyPc/N6vNf9at7A1b7h0=";
sha256 = "sha256-8Gn9B+A5w80T3Yw+mg0tAI1IsdeCRe4ToNU168nP/yQ=";
};
vendorHash = "sha256-dpB8m02juic883lCwLwIL9356AHpzNy9td0s/e4UeDA=";
+1 -1
View File
@@ -4,7 +4,7 @@
fetchFromGitHub,
}:
stdenvNoCC.mkDerivation (finalPackages: {
stdenvNoCC.mkDerivation (finalAttrs: {
pname = "pipeworld";
version = "0-unstable-2023-02-05";
+8 -2
View File
@@ -31,7 +31,7 @@ in
with python3Packages;
buildPythonApplication rec {
pname = "platformio";
version = "6.1.18";
version = "6.1.19";
pyproject = true;
# pypi tarballs don't contain tests - https://github.com/platformio/platformio-core/issues/1964
@@ -39,7 +39,7 @@ buildPythonApplication rec {
owner = "platformio";
repo = "platformio-core";
tag = "v${version}";
hash = "sha256-h9/xDWXCoGHQ9r2f/ZzAtwTAs4qzDrvVAQ2kuLS9Lk8=";
hash = "sha256-9pv2fbShddfYqBFxsQEj7nU1e772gUQEQINXRO/RMcQ=";
};
outputs = [
@@ -94,6 +94,7 @@ buildPythonApplication rec {
intelhex
lockfile
marshmallow
packaging
pip
pyelftools
pyparsing
@@ -131,6 +132,11 @@ buildPythonApplication rec {
mkdir -p $udev/lib/udev/rules.d
cp platformio/assets/system/99-platformio-udev.rules $udev/lib/udev/rules.d/99-platformio-udev.rules
# Avoid platformio writing state into /build/.home when generating completions.
export HOME=$TMPDIR
export PLATFORMIO_CORE_DIR=$TMPDIR/platformio-core
mkdir -p "$PLATFORMIO_CORE_DIR"
installShellCompletion --cmd platformio \
--bash <(_PLATFORMIO_COMPLETE=bash_source $out/bin/platformio) \
--zsh <(_PLATFORMIO_COMPLETE=zsh_source $out/bin/platformio) \
@@ -6,7 +6,7 @@ index 47efae59..6c2cfaed 100644
@staticmethod
@memoized(expire="1h")
def load_spdx_licenses():
- version = "3.26.0"
- version = "3.27.0"
- spdx_data_url = (
- "https://raw.githubusercontent.com/spdx/license-list-data/"
- f"v{version}/json/licenses.json"
+4 -1
View File
@@ -1,6 +1,7 @@
{
lib,
beamPackages,
beam27Packages,
elixir_1_18,
buildNpmPackage,
rustPlatform,
fetchFromGitHub,
@@ -111,6 +112,8 @@ let
done
'';
beamPackages = beam27Packages.extend (self: super: { elixir = elixir_1_18; });
in
beamPackages.mixRelease rec {
inherit
+3 -3
View File
@@ -7,16 +7,16 @@
buildGoModule rec {
pname = "pocketbase";
version = "0.36.1";
version = "0.36.2";
src = fetchFromGitHub {
owner = "pocketbase";
repo = "pocketbase";
rev = "v${version}";
hash = "sha256-mDQhsVvO6rj5zkbFOKdM/d0+BWa0Flfdx2kEGqjFeWg=";
hash = "sha256-+gayRZ9iwKSb4xW3LVvd6CFms0koHrv7DF1J5O8FvGY=";
};
vendorHash = "sha256-8Y5nYDR2RKd2S41yelvz0EooPJkZGv+xp7JA4QQGDA8=";
vendorHash = "sha256-OZ2jAOdi/g7yVAPfXTPRxsjBtUi43i8B1k2ANet1SO8=";
# This is the released subpackage from upstream repo
subPackages = [ "examples/base" ];
+3 -3
View File
@@ -8,14 +8,14 @@
pkg-config,
}:
stdenv.mkDerivation (final: {
stdenv.mkDerivation (finalAttrs: {
pname = "poselib";
version = "2.0.5";
src = fetchFromGitHub {
owner = "PoseLib";
repo = "PoseLib";
rev = "v${final.version}";
rev = "v${finalAttrs.version}";
hash = "sha256-fARRKT2UoPuuk9FOOsBdrACwGiGXWg/mLV4R0QIjeak=";
};
@@ -31,7 +31,7 @@ stdenv.mkDerivation (final: {
meta = {
description = "A collection of minimal solvers for camera pose estimation";
homepage = "https://github.com/PoseLib/PoseLib";
changelog = "https://github.com/PoseLib/PoseLib/releases/tag/v${final.version}";
changelog = "https://github.com/PoseLib/PoseLib/releases/tag/v${finalAttrs.version}";
license = lib.licenses.bsd3;
platforms = lib.platforms.unix;
maintainers = with lib.maintainers; [ usertam ];
+4 -4
View File
@@ -8,22 +8,22 @@
buildNpmPackage (finalAttrs: {
pname = "psitransfer";
version = "2.3.2";
version = "2.4.0";
src = fetchFromGitHub {
owner = "psi-4ward";
repo = "psitransfer";
tag = "v${finalAttrs.version}";
hash = "sha256-i2W3sOOxXM5UHxB20EjpOhmu08PQvaflIC4+Qk+ZnIQ=";
hash = "sha256-ikpdqcubqVFbjjQUlrL5Cn3MTsOhkw48dtgLowGv0ho=";
};
npmDepsHash = "sha256-cd9Qkw3uOvpQVoLRPphjKjPsBomxaBwdM+ZlhLwJqYM=";
npmDepsHash = "sha256-4jKbDzjwWMJAGEjb2FwGv0wZw6SS0ZnlLWrTDX88zv0=";
app = buildNpmPackage {
pname = "psitransfer-app";
inherit (finalAttrs) version src;
npmDepsHash = "sha256-j8eUi3HP6gfjIDD5lli5ypHcpWaOaFLKENe5IYQzchk=";
npmDepsHash = "sha256-PpUO1u7TcH8ZcTekLcGOn07EnCHqUlbEMS/YzMLSMAs=";
postPatch = ''
# https://github.com/psi-4ward/psitransfer/pull/284
+3 -3
View File
@@ -6,14 +6,14 @@
libpcap,
}:
buildGoModule (finalAttr: {
buildGoModule (finalAttrs: {
pname = "ptcpdump";
version = "0.37.0";
src = fetchFromGitHub {
owner = "mozillazg";
repo = "ptcpdump";
tag = "v${finalAttr.version}";
tag = "v${finalAttrs.version}";
hash = "sha256-ouH7VFWSCOElbmbSWAkmM4dtNVp545mC/FnoNAFtaEw=";
};
@@ -24,7 +24,7 @@ buildGoModule (finalAttr: {
tags = [ "dynamic" ];
ldflags = [
"-X github.com/mozillazg/ptcpdump/internal.Version=v${finalAttr.version}"
"-X github.com/mozillazg/ptcpdump/internal.Version=v${finalAttrs.version}"
];
nativeInstallCheckInputs = [ versionCheckHook ];
doInstallCheck = true;
+2 -2
View File
@@ -7,13 +7,13 @@
stdenv.mkDerivation (finalAttrs: {
pname = "pyenv";
version = "2.6.20";
version = "2.6.22";
src = fetchFromGitHub {
owner = "pyenv";
repo = "pyenv";
tag = "v${finalAttrs.version}";
hash = "sha256-gbj7WI1OVfqDre5PdqEI3yVo/J5YyCexhL/bCa8aEK4=";
hash = "sha256-F4SZeF9YriAog88hRH/3GWajPtpBTBjEiVgqpxoFS/I=";
};
nativeBuildInputs = [
@@ -1,18 +1,11 @@
{
lib,
buildPythonPackage,
python3Packages,
fetchgit,
packaging,
platformdirs,
portalocker,
pyparsing,
setuptools,
sympy,
pytestCheckHook,
writableTmpDirAsHomeHook,
}:
buildPythonPackage {
python3Packages.buildPythonPackage {
pname = "qmake2cmake";
version = "1.0.8";
pyproject = true;
@@ -28,18 +21,18 @@ buildPythonPackage {
./fix-locations.patch
];
build-system = [ setuptools ];
build-system = [ python3Packages.setuptools ];
dependencies = [
packaging
platformdirs
portalocker
pyparsing
sympy
python3Packages.packaging
python3Packages.platformdirs
python3Packages.portalocker
python3Packages.pyparsing
python3Packages.sympy
];
nativeCheckInputs = [
pytestCheckHook
python3Packages.pytestCheckHook
writableTmpDirAsHomeHook
];
+3 -3
View File
@@ -9,16 +9,16 @@
rustPlatform.buildRustPackage rec {
pname = "reindeer";
version = "2026.01.26.00";
version = "2026.02.02.00";
src = fetchFromGitHub {
owner = "facebookincubator";
repo = "reindeer";
tag = "v${version}";
hash = "sha256-jUyb8fzzk1TzTe4pBXlZTByesdlDGJc2Q5L5pmHn9bw=";
hash = "sha256-NiS3TETnyGMGU+AxTNQIem3Cj2/c/VKSXSrcTX/5oME=";
};
cargoHash = "sha256-CZcbEFZpZonp8iGI/DklPpAvaCoaS+LGMO8F/6NryBY=";
cargoHash = "sha256-aHAgb3IJVRaVBGd2voUoUblRGoepTjUFIR3WOmTEEVY=";
nativeBuildInputs = [ pkg-config ];
+4 -4
View File
@@ -115,7 +115,7 @@ let
subprocess.check_call(['chmod', '-R', 'u+w', support_dir])
'';
in
stdenv.mkDerivation (self: {
stdenv.mkDerivation (finalAttrs: {
pname = "retdec";
# If you update this you will also need to adjust the versions of the updated dependencies.
@@ -129,7 +129,7 @@ stdenv.mkDerivation (self: {
src = fetchFromGitHub {
owner = "avast";
repo = "retdec";
tag = "v${self.version}";
tag = "v${finalAttrs.version}";
sha256 = "sha256-H4e+aSgdBBbG6X6DzHGiDEIASPwBVNVsfHyeBTQLAKI=";
};
@@ -161,10 +161,10 @@ stdenv.mkDerivation (self: {
libxml2
zlib
]
++ lib.optional self.doInstallCheck gtest;
++ lib.optional finalAttrs.doInstallCheck gtest;
cmakeFlags = [
(lib.cmakeBool "RETDEC_TESTS" self.doInstallCheck) # build tests
(lib.cmakeBool "RETDEC_TESTS" finalAttrs.doInstallCheck) # build tests
(lib.cmakeBool "RETDEC_DEV_TOOLS" buildDevTools) # build tools e.g. capstone2llvmir, retdectool
(lib.cmakeBool "RETDEC_COMPILE_YARA" compileYaraPatterns) # build and install compiled patterns
]
+2 -2
View File
@@ -23,14 +23,14 @@
nix-update-script,
}:
stdenv.mkDerivation (final: {
stdenv.mkDerivation (finalAttrs: {
pname = "rofi-emoji";
version = "4.1.0";
src = fetchFromGitHub {
owner = "Mange";
repo = "rofi-emoji";
rev = "v${final.version}";
rev = "v${finalAttrs.version}";
hash = "sha256-Amaz+83mSPue+pjZq/pJiCxu5QczYvmJk6f96eraaK8=";
};

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