Merge staging-next into staging
This commit is contained in:
@@ -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 = [
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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; [
|
||||
|
||||
@@ -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 = {
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
@@ -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
|
||||
''
|
||||
|
||||
@@ -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")
|
||||
'';
|
||||
}
|
||||
@@ -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 (
|
||||
|
||||
@@ -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";
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
|
||||
},
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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=";
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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; [
|
||||
|
||||
@@ -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 ];
|
||||
|
||||
|
||||
@@ -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 ];
|
||||
|
||||
@@ -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=";
|
||||
};
|
||||
|
||||
|
||||
@@ -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=";
|
||||
};
|
||||
|
||||
|
||||
@@ -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=";
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
@@ -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 = [
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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";
|
||||
|
||||
@@ -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=";
|
||||
|
||||
@@ -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";
|
||||
|
||||
@@ -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
|
||||
'';
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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";
|
||||
|
||||
|
||||
@@ -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 = [
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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=";
|
||||
};
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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 ];
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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=";
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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=";
|
||||
};
|
||||
|
||||
|
||||
@@ -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";
|
||||
|
||||
|
||||
@@ -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";
|
||||
|
||||
@@ -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";
|
||||
|
||||
@@ -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=";
|
||||
};
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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=";
|
||||
};
|
||||
|
||||
|
||||
@@ -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=";
|
||||
};
|
||||
|
||||
|
||||
@@ -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";
|
||||
|
||||
@@ -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=";
|
||||
|
||||
@@ -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=";
|
||||
};
|
||||
|
||||
|
||||
@@ -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" ];
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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=="
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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=";
|
||||
};
|
||||
|
||||
|
||||
@@ -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=";
|
||||
};
|
||||
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
}
|
||||
})
|
||||
|
||||
@@ -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 = {
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
'';
|
||||
|
||||
|
||||
@@ -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 = [
|
||||
|
||||
@@ -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";
|
||||
};
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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 ];
|
||||
|
||||
@@ -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" ];
|
||||
})
|
||||
|
||||
@@ -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.
|
||||
'';
|
||||
|
||||
|
||||
@@ -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";
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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";
|
||||
})
|
||||
|
||||
@@ -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=";
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
fetchFromGitHub,
|
||||
}:
|
||||
|
||||
stdenvNoCC.mkDerivation (finalPackages: {
|
||||
stdenvNoCC.mkDerivation (finalAttrs: {
|
||||
pname = "pipeworld";
|
||||
version = "0-unstable-2023-02-05";
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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" ];
|
||||
|
||||
@@ -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 ];
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
|
||||
];
|
||||
|
||||
@@ -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 ];
|
||||
|
||||
|
||||
@@ -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
|
||||
]
|
||||
|
||||
@@ -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
Reference in New Issue
Block a user