Merge 769af1cc90 into haskell-updates

This commit is contained in:
nixpkgs-ci[bot]
2026-01-12 00:24:45 +00:00
committed by GitHub
3271 changed files with 3640 additions and 11385 deletions
+3 -2
View File
@@ -83,8 +83,9 @@
# @raitobezarius is not "code owner", but is listed here to be notified of changes
# pertaining to the Nix package manager.
# i.e. no authority over those files.
pkgs/tools/package-management/nix/ @NixOS/nix-team @raitobezarius
nixos/modules/installer/tools/nix-fallback-paths.nix @NixOS/nix-team @raitobezarius
# Otherwise keep in-sync with lib.teams.nix.
pkgs/tools/package-management/nix/ @Artturin @Ericson2314 @lovesegfault @Mic92 @philiptaron @roberth @tomberek @xokdvium @raitobezarius
nixos/modules/installer/tools/nix-fallback-paths.nix @Artturin @Ericson2314 @lovesegfault @Mic92 @philiptaron @roberth @tomberek @xokdvium @raitobezarius
# Nixpkgs documentation
/maintainers/scripts/db-to-md.sh @jtojnar @ryantm
+5
View File
@@ -94,6 +94,8 @@
- If you previously used `configFile`, migrate your configuration to the `settings` option and extract the private key to a separate file referenced by `PrivateKeyPath`.
- If you previously used `persistentKeys`, convert your keys to PEM format and store them in a secure location accessible only to root, then reference them via `PrivateKeyPath`.
- `pocket-id` has been updated to version 2 that contains [breaking changes](https://pocket-id.org/docs/setup/major-releases/migrate-v2).
- `asio` (standalone version of `boost::asio`) has been updated from 1.24.0 to 1.36.0. Some breaking changes were introduced between these
two versions, and the one affected most was the removal of `asio::io_service` in favor of `asio::io_context` in 1.33.0. `asio_1_32_0` is
retained for packages that have not completed migration. `asio_1_10` has been removed as no packages depend on it anymore.
@@ -140,6 +142,9 @@
- Added `dell-bios-fan-control` package and service.
- `openrgb` was updated to 1.0rc2, which now uses Plugin API version 4.
Some existing OpenRGB plugins may be incompatible or require updates.
- We now use the upstream wrapper script for Gradle, supporting both the `JAVA_HOME` and `GRADLE_OPTS` environment variables.
## Nixpkgs Library {#sec-nixpkgs-release-26.05-lib}
+1
View File
@@ -171,6 +171,7 @@
},
"members": {
"reckenrode": 7413633,
"Samasaur1": 30577766,
"toonn": 1486805
},
"name": "darwin-core"
+18 -10
View File
@@ -2325,6 +2325,12 @@
githubId = 29058;
name = "Mikalai Seva";
};
asamonik = {
email = "signup-nixpkgs@asamonik.at";
github = "asamonik";
githubId = 49288593;
name = "Andreas Samonik";
};
asappia = {
email = "asappia@gmail.com";
github = "asappia";
@@ -5349,6 +5355,11 @@
name = "Connor Baker";
githubId = 3880346;
};
connornelson = {
github = "ConnorNelson";
githubId = 5953003;
name = "Connor Nelson";
};
conradmearns = {
email = "conradmearns+github@pm.me";
github = "ConradMearns";
@@ -7533,12 +7544,6 @@
githubId = 8173116;
name = "Dean Eckert";
};
eelco = {
email = "edolstra+nixpkgs@gmail.com";
github = "edolstra";
githubId = 1148549;
name = "Eelco Dolstra";
};
ehegnes = {
email = "eric.hegnes@gmail.com";
github = "ehegnes";
@@ -18234,7 +18239,7 @@
nadiaholmquist = {
name = "Nadia Holmquist Pedersen";
email = "nadia@nhp.sh";
matrix = "@nhp:matrix.org";
matrix = "@nadia:nhp.sh";
github = "nadiaholmquist";
githubId = 893884;
};
@@ -18323,10 +18328,13 @@
};
nanoyaki = {
name = "Hana Kretzer";
email = "hanakretzer@gmail.com";
email = "hanakretzer@nanoyaki.space";
github = "nanoyaki";
githubId = 144328493;
keys = [ { fingerprint = "D89F 440C 6CD7 4753 090F EC7A 4682 C5CB 4D9D EA3C"; } ];
keys = [
{ fingerprint = "D89F 440C 6CD7 4753 090F EC7A 4682 C5CB 4D9D EA3C"; }
{ fingerprint = "5A1D C7CE 51DC 0A85 6DEA 41F7 31A8 CE0D 2E7D 30C3"; }
];
};
naora = {
name = "Joris Gundermann";
@@ -29009,7 +29017,7 @@
githubId = 102890144;
};
yiyu = {
email = "yiyuzhou19@gmail.com";
email = "yiyu@yiyuzhou.io";
name = "Yiyu Zhou";
github = "yzhou216";
githubId = 50000936;
+1 -1
View File
@@ -25,7 +25,7 @@ fluent,,,,,,alerque
funnyfiles.nvim,,,,,,mrcjkb
fzf-lua,,,,,,mrcjkb
fzy,,,,,,mrcjkb
gitsigns.nvim,https://raw.githubusercontent.com/lewis6991/gitsigns.nvim/main/gitsigns.nvim-scm-1.rockspec,,,,5.1,
gitsigns.nvim,,,,,5.1,
grug-far.nvim,,,,,,teto
haskell-tools.nvim,,,,,,mrcjkb
http,,,,0.4-0,,vcunat
1 name rockspec ref server version luaversion maintainers
25 funnyfiles.nvim mrcjkb
26 fzf-lua mrcjkb
27 fzy mrcjkb
28 gitsigns.nvim https://raw.githubusercontent.com/lewis6991/gitsigns.nvim/main/gitsigns.nvim-scm-1.rockspec 5.1
29 grug-far.nvim teto
30 haskell-tools.nvim mrcjkb
31 http 0.4-0 vcunat
@@ -29,7 +29,6 @@ stdenv.mkDerivation {
'';
meta = {
maintainers = with lib.maintainers; [ eelco ];
description = "Utility to generate a Nix expression for a Perl package from CPAN";
mainProgram = "nix-generate-from-cpan";
platforms = lib.platforms.unix;
-1
View File
@@ -29,7 +29,6 @@ stdenv.mkDerivation {
'';
meta = {
maintainers = [ lib.maintainers.eelco ];
description = "A utility for Nixpkgs contributors to check Nixpkgs for common errors";
mainProgram = "nixpkgs-lint";
platforms = lib.platforms.unix;
+10 -53
View File
@@ -154,16 +154,6 @@ with lib.maintainers;
shortName = "c3d2";
};
cachix = {
# Verify additions to this team with at least one existing member of the team.
members = [
domenkozar
sandydoo
];
scope = "Group registration for packages maintained by Cachix.";
shortName = "Cachix employees";
};
categorization = {
github = "categorization";
};
@@ -742,17 +732,20 @@ with lib.maintainers;
enableFeatureFreezePing = true;
};
# same as https://github.com/orgs/NixOS/teams/nix-team
# keep in-sync with ci/OWNERS
nix = {
members = [
eelco
mic92
tomberek
roberth
artturin
ericson2314
lovesegfault
mic92
philiptaron
roberth
tomberek
xokdvium
];
scope = "Maintain the Nix package manager.";
shortName = "Nix/nix-cli ecosystem";
scope = "Maintain the packaging for the Nix package manager itself.";
shortName = "Nix packaging";
enableFeatureFreezePing = true;
};
@@ -892,22 +885,6 @@ with lib.maintainers;
enableFeatureFreezePing = true;
};
secshell = {
members = [
felbinger
juli0604
];
scope = "Maintain packages and modules created by members of Secure Shell Networks.";
shortName = "secshell";
};
serokell = {
# Verify additions by approval of an already existing member of the team.
members = [ balsoft ];
scope = "Group registration for Serokell employees who collectively maintain packages.";
shortName = "Serokell employees";
};
stdenv = {
enableFeatureFreezePing = true;
github = "stdenv";
@@ -923,15 +900,6 @@ with lib.maintainers;
shortName = "Steam";
};
stridtech = {
# Verify additions by approval of an already existing member of the team
members = [
ulrikstrid
];
scope = "Group registration for Strid Tech AB team members who collectively maintain packages";
shortName = "StridTech";
};
swift = {
members = [
dduan
@@ -961,17 +929,6 @@ with lib.maintainers;
shortName = "coqui-ai TTS";
};
uzinfocom = {
members = [
orzklv
bahrom04
bemeritus
shakhzodkudratov
];
scope = "Maintain Uzbek Linux state & community packages and modules.";
shortName = "Uzinfocom Open Source";
};
wdz = {
members = [
n0emis
+10 -3
View File
@@ -6,6 +6,13 @@
#
# Debugging:
# drop .test from the end of this file, then use nix repl on it
let
ghost = {
github = "ghost";
githubId = 0;
name = "ghost";
};
in
rec {
lib = import ../../../lib;
@@ -13,8 +20,8 @@ rec {
modules = [
../meta-maintainers.nix
{
_file = "eelco.nix";
meta.maintainers = [ lib.maintainers.eelco ];
_file = "ghost.nix";
meta.maintainers = [ ghost ];
}
];
};
@@ -26,7 +33,7 @@ rec {
lib.maintainers.pierron
lib.maintainers.roberth
];
"eelco.nix" = [ lib.maintainers.eelco ];
"ghost.nix" = [ ghost ];
};
{ };
@@ -11,7 +11,6 @@ let
mkOption
optionalString
types
versionAtLeast
;
inherit (lib.options) literalExpression;
cfg = config.amazonImage;
@@ -46,16 +45,6 @@ in
})
];
# Amazon recommends setting this to the highest possible value for a good EBS
# experience, which prior to 4.15 was 255.
# https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/nvme-ebs-volumes.html#timeout-nvme-ebs-volumes
config.boot.kernelParams =
let
timeout =
if versionAtLeast config.boot.kernelPackages.kernel.version "4.15" then "4294967295" else "255";
in
[ "nvme_core.io_timeout=${timeout}" ];
options.amazonImage = {
contents = mkOption {
example = literalExpression ''
+75 -2
View File
@@ -1,7 +1,25 @@
{ config, lib, ... }:
{
config,
lib,
pkgs,
...
}:
let
cfg = config.hardware.tuxedo-drivers;
tuxedo-drivers = config.boot.kernelPackages.tuxedo-drivers;
udevRule =
attr: val:
let
# Workaround to evaluate true to "1" and false to "0".
# Otherwise, true evaluates to "1" and false to "".
newVal = if lib.isBool val then (if val then "1" else "0") else val;
in
lib.concatStringsSep ", " [
''SUBSYSTEM=="platform"''
''DRIVER=="tuxedo_keyboard"''
''ATTR{${attr}}="${newVal}"''
];
optUdevRule = attr: val: lib.optional (val != null) (udevRule attr val);
in
{
imports = [
@@ -26,11 +44,66 @@ in
For more inforation it is best to check at the source code description: <https://gitlab.com/tuxedocomputers/development/packages/tuxedo-drivers>
'';
settings = {
charging-profile = lib.mkOption {
type = lib.types.nullOr (
lib.types.enum [
"high_capacity"
"balanced"
"stationary"
]
);
default = null;
description = ''
The maximum charge level to help reduce battery wear:
- `high_capacity` charges to 100% (driver default)
- `balanced` charges to 90%
- `stationary` charges to 80% (maximum lifespan)
**Note:** Regardless of the configured charging profile, the operating system will always report the battery as being charged to 100%.
'';
};
charging-priority = lib.mkOption {
type = lib.types.nullOr (
lib.types.enum [
"charge_battery"
"performance"
]
);
default = null;
description = ''
These options manage the trade-off between battery charging and CPU performance when the USB-C power supply cannot provide sufficient power for both simultaneously:
- `charge_battery` prioritizes battery charging (driver default)
- `performance` prioritizes maximum CPU performance
'';
};
fn-lock = lib.mkOption {
type = lib.types.nullOr lib.types.bool;
default = null;
description = ''
Enables or disables the laptop keyboard's Function (Fn) lock at boot.
When set to `true`, the Fn lock is enabled, allowing the function keys (F1F12) to control brightness, volume etc.
'';
};
};
};
config = lib.mkIf cfg.enable {
boot.kernelModules = [ "tuxedo_keyboard" ];
boot.extraModulePackages = [ tuxedo-drivers ];
services.udev.packages = [ tuxedo-drivers ];
services.udev.packages = [
tuxedo-drivers
lib.mkIf
(lib.any (v: v != null) cfg.settings)
(pkgs.writeTextDir "etc/udev/rules.d/90-tuxedo.rules" (
lib.concatLines (
[ "# Custom rules for TUXEDO laptops" ]
++ (optUdevRule "charging_profile/charging_profile" cfg.settings.charging-profile)
++ (optUdevRule "charging_priority/charging_prio" cfg.settings.charging-priority)
++ (optUdevRule "fn_lock" cfg.settings.fn-lock)
)
))
];
};
}
+15
View File
@@ -583,6 +583,13 @@ let
'';
};
enableUMask = lib.mkOption {
default = config.security.pam.enableUMask;
defaultText = lib.literalExpression "config.security.pam.enableUMask";
type = lib.types.bool;
description = "If enabled, the pam_umask module will be loaded.";
};
failDelay = {
enable = lib.mkOption {
type = lib.types.bool;
@@ -1292,6 +1299,12 @@ let
disable = cfg.ttyAudit.disablePattern;
};
}
{
name = "umask";
enable = cfg.enableUMask;
control = "optional";
modulePath = "${package}/lib/security/pam_umask.so";
}
{
name = "systemd_home";
enable = config.services.homed.enable;
@@ -2208,6 +2221,8 @@ in
};
};
security.pam.enableUMask = lib.mkEnableOption "umask PAM module";
security.pam.enableEcryptfs = lib.mkEnableOption "eCryptfs PAM module (mounting ecryptfs home directory on login)";
security.pam.enableFscrypt = lib.mkEnableOption ''
fscrypt, to automatically unlock directories with the user's login password.
+17 -5
View File
@@ -59,16 +59,28 @@ in
++ lib.optionals (cfg.motherboard == "intel") [ "i2c-i801" ];
systemd.services.openrgb = {
description = "OpenRGB server daemon";
after = [ "network.target" ];
description = "OpenRGB SDK Server";
after = [
"network.target"
"lm_sensors.service"
];
wants = [ "dev-usb.device" ];
wantedBy = [ "multi-user.target" ];
serviceConfig = {
StateDirectory = "OpenRGB";
WorkingDirectory = "/var/lib/OpenRGB";
ExecStart =
"${cfg.package}/bin/openrgb --server --server-port ${toString cfg.server.port}"
+ lib.optionalString (builtins.isString cfg.startupProfile) " --profile ${lib.escapeShellArg cfg.startupProfile}";
ExecStart = lib.escapeShellArgs (
[
(lib.getExe cfg.package)
"--server"
"--server-port"
cfg.server.port
]
++ lib.optionals (lib.isString cfg.startupProfile) [
"--profile"
cfg.startupProfile
]
);
Restart = "always";
};
};
+8 -1
View File
@@ -16,6 +16,13 @@ let
;
cfg = config.services.shoko;
shokoPlugins = pkgs.linkFarm "shoko-plugins" (
map (pkg: {
inherit (pkg) name;
path = "${pkg}/lib/${pkg.pname}";
}) cfg.plugins
);
in
{
options = {
@@ -67,7 +74,7 @@ in
''
+ optionalString (cfg.plugins != [ ]) ''
rm -rf "$STATE_DIRECTORY/plugins"
ln -s '${pkgs.linkFarmFromDrvs cfg.plugins}' "$STATE_DIRECTORY/plugins"
ln -s '${shokoPlugins}' "$STATE_DIRECTORY/plugins"
'';
serviceConfig = {
@@ -22,7 +22,7 @@ let
;
in
{
meta.maintainers = lib.teams.secshell.members;
meta.maintainers = with lib.maintainers; [ felbinger ];
options.services.suricata = {
enable = mkEnableOption "Suricata";
+6 -1
View File
@@ -46,5 +46,10 @@ in
};
};
meta.maintainers = lib.teams.uzinfocom.members;
meta.maintainers = with lib.maintainers; [
orzklv
shakhzodkudratov
bahrom04
bemeritus
];
}
+17 -3
View File
@@ -29,6 +29,7 @@ let
mkIf
mkMerge
mkOption
mkOrder
mkPackageOption
optional
optionals
@@ -368,7 +369,7 @@ in
freeformType = settingsFormat.type;
options = {
pam_allowed_login_groups = mkOption {
kanidm.pam_allowed_login_groups = mkOption {
description = "Kanidm groups that are allowed to login using PAM.";
example = "my_pam_group";
type = types.listOf types.str;
@@ -673,6 +674,10 @@ in
config = mkIf (cfg.enableClient || cfg.enableServer || cfg.enablePam) {
warnings = lib.optionals (cfg.package.eolMessage != "") [ cfg.package.eolMessage ];
services.kanidm = {
unixSettings.version = "2";
serverSettings.version = "2";
};
assertions =
let
@@ -710,6 +715,14 @@ in
};
in
[
{
assertion = cfg.enablePam -> !(cfg.unixSettings ? 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>.
Please change your usage.
'';
}
{
assertion =
!cfg.enableServer
@@ -1040,8 +1053,9 @@ in
system.nssModules = mkIf cfg.enablePam [ cfg.package ];
system.nssDatabases.group = optional cfg.enablePam "kanidm";
system.nssDatabases.passwd = optional cfg.enablePam "kanidm";
# 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");
users.groups = mkMerge [
(mkIf cfg.enableServer { kanidm = { }; })
+89 -30
View File
@@ -19,6 +19,7 @@ let
optionalAttrs
;
inherit (lib.types)
attrsOf
bool
path
str
@@ -29,6 +30,10 @@ let
format = pkgs.formats.keyValue { };
settingsFile = format.generate "pocket-id-env-vars" cfg.settings;
exportCredentials = n: _: ''export ${n}="$(${pkgs.systemd}/bin/systemd-creds cat ${n}_FILE)"'';
exportAllCredentials = vars: lib.concatStringsSep "\n" (lib.mapAttrsToList exportCredentials vars);
getLoadCredentialList = lib.mapAttrsToList (n: v: "${n}_FILE:${v}") cfg.credentials;
in
{
meta.maintainers = with maintainers; [
@@ -44,17 +49,36 @@ in
environmentFile = mkOption {
type = path;
description = ''
Path to an environment file loaded for the Pocket ID service.
Path to an environment file to be loaded.
This can be used to securely store tokens and secrets outside of the world-readable Nix store.
See [PocketID environment variables](https://pocket-id.org/docs/configuration/environment-variables).
Example contents of the file:
MAXMIND_LICENSE_KEY=your-license-key
Alternatively you can use `services.pocket-id.credentials` to define each variable in separate files.
'';
default = "/dev/null";
example = "/var/lib/secrets/pocket-id";
};
credentials = mkOption {
type = attrsOf path;
default = { };
example = {
ENCRYPTION_KEY = "/run/secrets/pocket-id/encryption-key";
};
description = ''
Environment variables which are loaded from the contents of the specified file paths.
This can be used to securely store tokens and secrets outside of the world-readable Nix store.
See [PocketID environment variables](https://pocket-id.org/docs/configuration/environment-variables).
Alternatively you can use `services.pocket-id.environmentFile` to define all the variables in a single file.
'';
};
settings = mkOption {
type = submodule {
freeformType = format.type;
@@ -81,7 +105,7 @@ in
description = ''
Whether to disable analytics.
See [docs page](https://pocket-id.org/docs/configuration/analytics/).
See the [analytics documentation](https://pocket-id.org/docs/configuration/analytics/).
'';
default = false;
};
@@ -91,9 +115,9 @@ in
default = { };
description = ''
Environment variables that will be passed to Pocket ID, see
[configuration options](https://pocket-id.org/docs/configuration/environment-variables)
for supported values.
Environment variables to be passed.
See [PocketID environment variables](https://pocket-id.org/docs/configuration/environment-variables).
'';
};
@@ -101,7 +125,7 @@ in
type = path;
default = "/var/lib/pocket-id";
description = ''
The directory where Pocket ID will store its data, such as the database.
The directory where Pocket ID will store its data, such as the database when using SQLite.
'';
};
@@ -119,29 +143,60 @@ in
};
config = mkIf cfg.enable {
assertions = (
map
(
# Converted to assert 2026-01-08
setting: {
assertion = !(cfg.settings ? "${setting}");
message = ''
`services.pocket-id.settings.${setting}` is deprecated.
See [v1 migration guide](https://pocket-id.org/docs/setup/major-releases/migrate-v1).
'';
})
[
"PUBLIC_APP_URL"
"PUBLIC_UI_CONFIG_DISABLED"
"CADDY_DISABLED"
"CADDY_PORT"
"BACKEND_PORT"
"POSTGRES_CONNECTION_STRING"
"SQLITE_DB_PATH"
"INTERNAL_BACKEND_URL"
]
);
warnings =
optional (cfg.settings ? MAXMIND_LICENSE_KEY)
"config.services.pocket-id.settings.MAXMIND_LICENSE_KEY will be stored as plaintext in the Nix store. Use config.services.pocket-id.environmentFile instead."
++
concatMap
(
# Added 2025-05-27
setting:
optional (cfg.settings ? "${setting}") ''
config.services.pocket-id.settings.${setting} is deprecated.
See https://pocket-id.org/docs/setup/migrate-to-v1/ for migration instructions.
''
)
[
"PUBLIC_APP_URL"
"PUBLIC_UI_CONFIG_DISABLED"
"CADDY_DISABLED"
"CADDY_PORT"
"BACKEND_PORT"
"POSTGRES_CONNECTION_STRING"
"SQLITE_DB_PATH"
"INTERNAL_BACKEND_URL"
];
(concatMap
(
setting:
optional (cfg.settings ? "${setting}") ''
`services.pocket-id.settings.${setting}` will be stored as plaintext in the Nix store. Use `services.pocket-id.credentials.${setting}` or `services.pocket-id.environmentFile` instead.
''
)
[
"ENCRYPTION_KEY"
"MAXMIND_LICENSE_KEY"
"SMTP_PASSWORD"
"LDAP_BIND_PASSWORD"
]
)
++ (concatMap
(
# Added 2026-01-08
setting:
optional (cfg.settings ? "${setting}") ''
`services.pocket-id.settings.${setting}` is deprecated.
See [v2 migration guide](https://pocket-id.org/docs/setup/major-releases/migrate-v2).
''
)
[
"DB_PROVIDER"
"KEYS_PATH"
"KEYS_STORAGE"
"LDAP_ATTRIBUTE_ADMIN_GROUP"
]
);
systemd.tmpfiles.rules = [
"d ${cfg.dataDir} 0755 ${cfg.user} ${cfg.group}"
@@ -163,12 +218,16 @@ in
User = cfg.user;
Group = cfg.group;
WorkingDirectory = cfg.dataDir;
ExecStart = getExe cfg.package;
ExecStart = pkgs.writeShellScript "pocket-id-start" ''
${exportAllCredentials cfg.credentials}
${getExe cfg.package}
'';
Restart = "always";
EnvironmentFile = [
cfg.environmentFile
settingsFile
];
LoadCredential = getLoadCredentialList;
# Hardening
AmbientCapabilities = "";
@@ -8,7 +8,10 @@ let
cfg = config.services.cachix-agent;
in
{
meta.maintainers = lib.teams.cachix.members;
meta.maintainers = with lib.maintainers; [
domenkozar
sandydoo
];
options.services.cachix-agent = {
enable = lib.mkEnableOption "Cachix Deploy Agent: <https://docs.cachix.org/deploy/>";
@@ -9,7 +9,11 @@ let
in
{
meta = {
maintainers = lib.teams.cachix.members ++ [ lib.maintainers.jfroche ];
maintainers = with lib.maintainers; [
domenkozar
jfroche
sandydoo
];
};
options.services.cachix-watch-store = {
@@ -846,7 +846,6 @@ in
RuntimeDirectory = map (p: "discourse/" + p) [
"config"
"home"
"assets/javascripts/plugins"
"public"
"sockets"
"assets-generated"
+1 -1
View File
@@ -17,7 +17,7 @@ let
;
in
{
meta.maintainers = lib.teams.secshell.members;
meta.maintainers = with lib.maintainers; [ felbinger ];
options.services.part-db = {
enable = mkEnableOption "PartDB";
+13 -4
View File
@@ -59,10 +59,19 @@ in
];
boot.initrd.kernelModules = [ "xen-blkfront" ];
boot.initrd.availableKernelModules = [ "nvme" ];
boot.kernelParams = [
"console=ttyS0,115200n8"
"random.trust_cpu=on"
];
boot.kernelParams =
let
# Amazon recommends setting this to the highest possible value for a good EBS
# experience, which prior to 4.15 was 255.
# https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/nvme-ebs-volumes.html#timeout-nvme-ebs-volumes
nvmeTimeout =
if lib.versionAtLeast config.boot.kernelPackages.kernel.version "4.15" then "4294967295" else "255";
in
[
"console=ttyS0,115200n8"
"random.trust_cpu=on"
"nvme_core.io_timeout=${nvmeTimeout}"
];
# Prevent the nouveau kernel module from being loaded, as it
# interferes with the nvidia/nvidia-uvm modules needed for CUDA.
+1 -1
View File
@@ -66,7 +66,7 @@ in
};
enablePam = true;
unixSettings = {
pam_allowed_login_groups = [ "shell" ];
kanidm.pam_allowed_login_groups = [ "shell" ];
};
};
-1
View File
@@ -6,7 +6,6 @@ let
in
{
name = "misc";
meta.maintainers = with lib.maintainers; [ eelco ];
nodes.machine =
{ lib, ... }:
+1 -1
View File
@@ -16,7 +16,7 @@ let
makeTest {
name = "oci-containers-${backend}";
meta.maintainers = lib.teams.serokell.members ++ (with lib.maintainers; [ benley ]);
meta.maintainers = with lib.maintainers; [ benley ];
nodes = {
${backend} =
+11 -2
View File
@@ -1,5 +1,9 @@
{ lib, ... }:
{ pkgs, lib, ... }:
let
# !!! Don't do this with real keys. The /nix store is world-readable!
ENCRYPTION_KEY = pkgs.writeText "pocket-id-encryption-key" "SUeAyRRFZ1uf03ClOE+o++BVENSE/Ptb9YFRF2Sk+zM=";
in
{
name = "pocket-id";
meta.maintainers = with lib.maintainers; [
@@ -16,6 +20,9 @@
settings = {
PORT = 10001;
};
credentials = {
inherit ENCRYPTION_KEY;
};
};
};
@@ -29,9 +36,11 @@
enable = true;
settings = {
PORT = 10001;
DB_PROVIDER = "postgres";
DB_CONNECTION_STRING = "host=/run/postgresql user=${username} database=${username}";
};
credentials = {
inherit ENCRYPTION_KEY;
};
};
services.postgresql = {
-40
View File
@@ -1,40 +0,0 @@
# A test that imports k3s airgapped images and verifies that all expected images are present
{
pkgs,
lib,
rancherDistro,
rancherPackage,
serviceName,
disabledComponents,
coreImages,
vmResources,
...
}:
{
name = "${rancherPackage.name}-airgap-images";
nodes.machine = _: {
virtualisation = vmResources;
services.${rancherDistro} = {
enable = true;
role = "server";
package = rancherPackage;
disable = disabledComponents;
images =
coreImages
++ {
k3s = [ rancherPackage.airgap-images ];
rke2 = [ ]; # RKE2 already includes its airgap-images in coreImages
}
.${rancherDistro};
};
};
testScript = ''
machine.wait_for_unit("${serviceName}")
machine.wait_until_succeeds("journalctl -r --no-pager -u ${serviceName} | grep \"Imported images from /var/lib/rancher/${rancherDistro}/agent/images/\"")
'';
meta.maintainers = lib.teams.k3s.members ++ pkgs.rke2.meta.maintainers;
}
-230
View File
@@ -1,230 +0,0 @@
# Tests whether container images are imported and auto deploying Helm charts,
# including the bundled traefik or ingress-nginx, work
{
pkgs,
lib,
rancherDistro,
rancherPackage,
serviceName,
disabledComponents,
coreImages,
vmResources,
...
}:
let
testImageEnv = pkgs.buildEnv {
name = "${rancherDistro}-pause-image-env";
paths = with pkgs; [
busybox
hello
];
};
testImage = pkgs.dockerTools.buildImage {
name = "test.local/test";
tag = "local";
# Slightly reduces the time needed to import image
compressor = "zstd";
copyToRoot = testImageEnv;
};
# pack the test helm chart as a .tgz archive
package =
pkgs.runCommand "${rancherDistro}-test-chart.tgz"
{
nativeBuildInputs = [ pkgs.kubernetes-helm ];
chart = builtins.toJSON {
name = "${rancherDistro}-test-chart";
version = "0.1.0";
};
values = builtins.toJSON {
restartPolicy = "Never";
runCommand = "";
image = {
repository = "foo";
tag = "1.0.0";
};
};
job = builtins.toJSON {
apiVersion = "batch/v1";
kind = "Job";
metadata = {
name = "{{ .Release.Name }}";
namespace = "{{ .Release.Namespace }}";
};
spec = {
template = {
spec = {
containers = [
{
name = "test";
image = "{{ .Values.image.repository }}:{{ .Values.image.tag }}";
command = [ "sh" ];
args = [
"-c"
"{{ .Values.runCommand }}"
];
}
];
restartPolicy = "{{ .Values.restartPolicy }}";
};
};
};
};
passAsFile = [
"values"
"chart"
"job"
];
}
''
mkdir -p chart/templates
cp "$chartPath" chart/Chart.yaml
cp "$valuesPath" chart/values.yaml
cp "$jobPath" chart/templates/job.json
helm package chart
mv ./*.tgz $out
'';
# The common Helm chart that is used in this test
testChart = {
inherit package;
values = {
runCommand = "hello";
image = {
repository = testImage.imageName;
tag = testImage.imageTag;
};
};
};
in
{
name = "${rancherPackage.name}-auto-deploy-helm";
nodes.machine =
{ pkgs, ... }:
{
environment.systemPackages = with pkgs; [
kubectl
yq-go
];
environment.sessionVariables.KUBECONFIG = "/etc/rancher/${rancherDistro}/${rancherDistro}.yaml";
virtualisation = vmResources;
services.${rancherDistro} = {
enable = true;
package = rancherPackage;
disable =
{
k3s = lib.remove "traefik" disabledComponents;
rke2 = lib.remove "rke2-ingress-nginx" disabledComponents;
}
.${rancherDistro};
images =
coreImages
# Provides the k3s Helm controller
++ lib.optional (rancherDistro == "k3s") rancherPackage.airgap-images
++ [
testImage
];
autoDeployCharts = {
# regular test chart that should get installed
hello = testChart;
# disabled chart that should not get installed
disabled = testChart // {
enable = false;
};
# chart with values set via YAML file
values-file = testChart // {
# Remove unsafeDiscardStringContext workaround when Nix can convert a string to a path
# https://github.com/NixOS/nix/issues/12407
values =
/.
+ builtins.unsafeDiscardStringContext (
builtins.toFile "${rancherDistro}-test-chart-values.yaml" ''
runCommand: "echo 'Hello, file!'"
image:
repository: test.local/test
tag: local
''
);
};
# advanced chart that should get installed in the "test" namespace with a custom
# timeout and overridden values
advanced = testChart // {
# create the "test" namespace via extraDeploy for testing
extraDeploy = [
{
apiVersion = "v1";
kind = "Namespace";
metadata.name = "test";
}
];
extraFieldDefinitions = {
spec = {
# overwrite chart values
valuesContent = ''
runCommand: "echo 'advanced hello'"
image:
repository: ${testImage.imageName}
tag: ${testImage.imageTag}
'';
# overwrite the chart namespace
targetNamespace = "test";
# set a custom timeout
timeout = "69s";
};
};
};
};
};
};
testScript = # python
let
manifestFormat =
{
k3s = "yaml";
rke2 = "json";
}
.${rancherDistro};
in
''
import json
machine.wait_for_unit("${serviceName}")
# check existence/absence of chart manifest files
machine.succeed("test -e /var/lib/rancher/${rancherDistro}/server/manifests/hello.${manifestFormat}")
machine.succeed("test ! -e /var/lib/rancher/${rancherDistro}/server/manifests/disabled.${manifestFormat}")
machine.succeed("test -e /var/lib/rancher/${rancherDistro}/server/manifests/values-file.${manifestFormat}")
machine.succeed("test -e /var/lib/rancher/${rancherDistro}/server/manifests/advanced.${manifestFormat}")
# check that the timeout is set correctly, select only the first item in advanced.yaml
advancedManifest = json.loads(machine.succeed("yq -o json '.items[0]' /var/lib/rancher/${rancherDistro}/server/manifests/advanced.${manifestFormat}"))
t.assertEqual(advancedManifest["spec"]["timeout"], "69s", "unexpected value for spec.timeout")
# wait for test jobs to complete
machine.wait_until_succeeds("kubectl wait --for=condition=complete job/hello", timeout=180)
machine.wait_until_succeeds("kubectl wait --for=condition=complete job/values-file", timeout=180)
machine.wait_until_succeeds("kubectl -n test wait --for=condition=complete job/advanced", timeout=180)
# check output of test jobs
hello_output = machine.succeed("kubectl logs -l batch.kubernetes.io/job-name=hello")
values_file_output = machine.succeed("kubectl logs -l batch.kubernetes.io/job-name=values-file")
advanced_output = machine.succeed("kubectl -n test logs -l batch.kubernetes.io/job-name=advanced")
# strip the output to remove trailing whitespaces
t.assertEqual(hello_output.rstrip(), "Hello, world!", "unexpected output of hello job")
t.assertEqual(values_file_output.rstrip(), "Hello, file!", "unexpected output of values file job")
t.assertEqual(advanced_output.rstrip(), "advanced hello", "unexpected output of advanced job")
# wait for bundled ingress deployment
${
{
k3s = ''
machine.wait_until_succeeds("kubectl -n kube-system rollout status deployment traefik", timeout=180)
'';
rke2 = ''
machine.wait_until_succeeds("kubectl -n kube-system rollout status daemonset rke2-ingress-nginx-controller", timeout=180)
'';
}
.${rancherDistro}
}
'';
meta.maintainers = lib.teams.k3s.members ++ pkgs.rke2.meta.maintainers;
}
+200 -47
View File
@@ -1,4 +1,6 @@
# Tests whether container images are imported and auto deploying manifests work
# Tests whether container images are imported and auto deploy (manifests and charts) work.
# Additionally, imports airgap images and verifies deployment of the bundled reverse
# proxy (traefik or ingress-nginx)
{
pkgs,
lib,
@@ -11,38 +13,94 @@
...
}:
let
pauseImageEnv = pkgs.buildEnv {
name = "${rancherDistro}-pause-image-env";
testImageEnv = pkgs.buildEnv {
name = "${rancherDistro}-test-image-env";
paths = with pkgs; [
tini
(lib.hiPrio coreutils)
busybox
hello
];
};
pauseImage = pkgs.dockerTools.buildImage {
name = "test.local/pause";
testImage = pkgs.dockerTools.buildImage {
name = "test.local/test";
tag = "local";
copyToRoot = pauseImageEnv;
config.Entrypoint = [
"/bin/tini"
"--"
"/bin/sleep"
"inf"
];
compressor = "zstd";
copyToRoot = testImageEnv;
};
helloImage = pkgs.dockerTools.buildImage {
name = "test.local/hello";
tag = "local";
copyToRoot = pkgs.hello;
config.Entrypoint = [ "${pkgs.hello}/bin/hello" ];
};
manifestFormat =
{
k3s = "yaml";
rke2 = "json";
}
.${rancherDistro};
# pack the test helm chart as a .tgz archive
testChartPackage =
pkgs.runCommand "${rancherDistro}-test-chart.tgz"
{
nativeBuildInputs = [ pkgs.kubernetes-helm ];
chart = builtins.toJSON {
name = "${rancherDistro}-test-chart";
version = "0.1.0";
};
values = builtins.toJSON {
restartPolicy = "Never";
runCommand = "";
image = {
repository = "foo";
tag = "1.0.0";
};
};
job = builtins.toJSON {
apiVersion = "batch/v1";
kind = "Job";
metadata = {
name = "{{ .Release.Name }}";
namespace = "{{ .Release.Namespace }}";
};
spec = {
template = {
spec = {
containers = [
{
name = "test";
image = "{{ .Values.image.repository }}:{{ .Values.image.tag }}";
command = [ "sh" ];
args = [
"-c"
"{{ .Values.runCommand }}"
];
}
];
restartPolicy = "{{ .Values.restartPolicy }}";
};
};
};
};
passAsFile = [
"values"
"chart"
"job"
];
}
''
mkdir -p chart/templates
cp "$chartPath" chart/Chart.yaml
cp "$valuesPath" chart/values.yaml
cp "$jobPath" chart/templates/job.json
helm package chart
mv ./*.tgz $out
'';
# The Helm chart that is used in this test
testChart = {
package = testChartPackage;
values = {
runCommand = "hello";
image = {
repository = testImage.imageName;
tag = testImage.imageTag;
};
};
};
in
{
name = "${rancherPackage.name}-auto-deploy";
@@ -53,6 +111,7 @@ in
environment.systemPackages = with pkgs; [
kubectl
cri-tools
yq-go
];
environment.sessionVariables.KUBECONFIG = "/etc/rancher/${rancherDistro}/${rancherDistro}.yaml";
@@ -62,16 +121,16 @@ in
enable = true;
role = "server";
package = rancherPackage;
disable = disabledComponents;
extraFlags = [
"--pause-image test.local/pause:local"
];
images = coreImages ++ [
pauseImage
helloImage
];
disable =
{
k3s = lib.remove "traefik" disabledComponents;
rke2 = lib.remove "rke2-ingress-nginx" disabledComponents;
}
.${rancherDistro};
images =
coreImages ++ lib.optional (rancherDistro == "k3s") rancherPackage.airgap-images ++ [ testImage ];
manifests = {
absent = {
manifest-absent = {
enable = false;
content = {
apiVersion = "v1";
@@ -80,7 +139,7 @@ in
};
};
present = {
manifest-present = {
target = "foo-namespace.${manifestFormat}";
content = {
apiVersion = "v1";
@@ -89,16 +148,17 @@ in
};
};
hello.content = {
manifest-hello.content = {
apiVersion = "batch/v1";
kind = "Job";
metadata.name = "hello";
metadata.name = "manifest-hello";
spec = {
template.spec = {
containers = [
{
name = "hello";
image = "test.local/hello:local";
image = "${testImage.imageName}:${testImage.imageTag}";
command = [ "hello" ];
}
];
restartPolicy = "OnFailure";
@@ -106,28 +166,121 @@ in
};
};
};
autoDeployCharts = {
# regular test chart that should get installed
chart-hello = testChart;
# disabled chart that should not get installed
chart-disabled = testChart // {
enable = false;
};
# chart with values set via YAML file
chart-values-file = testChart // {
# Remove unsafeDiscardStringContext workaround when Nix can convert a string to a path
# https://github.com/NixOS/nix/issues/12407
values =
/.
+ builtins.unsafeDiscardStringContext (
builtins.toFile "${rancherDistro}-test-chart-values.yaml" ''
runCommand: "echo 'Hello, file!'"
image:
repository: test.local/test
tag: local
''
);
};
# advanced chart that should get installed in the "test" namespace with a custom
# timeout and overridden values
chart-advanced = testChart // {
# create the "test" namespace via extraDeploy for testing
extraDeploy = [
{
apiVersion = "v1";
kind = "Namespace";
metadata.name = "test";
}
];
extraFieldDefinitions = {
spec = {
# overwrite chart values
valuesContent = ''
runCommand: "echo 'advanced hello'"
image:
repository: ${testImage.imageName}
tag: ${testImage.imageTag}
'';
# overwrite the chart namespace
targetNamespace = "test";
# set a custom timeout
timeout = "69s";
};
};
};
};
};
};
testScript = # python
''
start_all()
import json
machine.wait_for_unit("${serviceName}")
# check existence of the manifest files
machine.fail("ls /var/lib/rancher/${rancherDistro}/server/manifests/absent.${manifestFormat}")
machine.succeed("ls /var/lib/rancher/${rancherDistro}/server/manifests/foo-namespace.${manifestFormat}")
machine.succeed("ls /var/lib/rancher/${rancherDistro}/server/manifests/hello.${manifestFormat}")
# check if container images got imported
# for some reason, RKE2 also uses /run/k3s
machine.wait_until_succeeds("crictl -r /run/k3s/containerd/containerd.sock img | grep 'test\.local/pause'")
machine.wait_until_succeeds("crictl -r /run/k3s/containerd/containerd.sock img | grep 'test\.local/hello'")
with subtest("Generation of manifest files"):
machine.succeed("test ! -e /var/lib/rancher/${rancherDistro}/server/manifests/manifest-absent.${manifestFormat}")
machine.succeed("test -e /var/lib/rancher/${rancherDistro}/server/manifests/foo-namespace.${manifestFormat}")
machine.succeed("test -e /var/lib/rancher/${rancherDistro}/server/manifests/manifest-hello.${manifestFormat}")
# check if resources of manifests got created
machine.wait_until_succeeds("kubectl get ns foo")
machine.wait_until_succeeds("kubectl wait --for=condition=complete job/hello")
machine.fail("kubectl get ns absent")
with subtest("Generation of chart manifest files"):
machine.succeed("test ! -e /var/lib/rancher/${rancherDistro}/server/manifests/chart-disabled.${manifestFormat}")
machine.succeed("test -e /var/lib/rancher/${rancherDistro}/server/manifests/chart-hello.${manifestFormat}")
machine.succeed("test -e /var/lib/rancher/${rancherDistro}/server/manifests/chart-values-file.${manifestFormat}")
machine.succeed("test -e /var/lib/rancher/${rancherDistro}/server/manifests/chart-advanced.${manifestFormat}")
with subtest("Timeout of advanced chart"):
# select only the first item in advanced.yaml
advancedManifest = json.loads(machine.succeed("yq -o json '.items[0]' /var/lib/rancher/${rancherDistro}/server/manifests/chart-advanced.${manifestFormat}"))
t.assertEqual(advancedManifest["spec"]["timeout"], "69s", "unexpected value for spec.timeout")
with subtest("Container image import"):
# for some reason, RKE2 also uses /run/k3s
machine.wait_until_succeeds("crictl -r /run/k3s/containerd/containerd.sock img | grep 'test\.local/test'")
machine.wait_until_succeeds("crictl -r /run/k3s/containerd/containerd.sock img | grep '^docker.io/rancher/mirrored-'")
with subtest("Creation of manifest resource"):
machine.wait_until_succeeds("kubectl get ns foo")
machine.wait_until_succeeds("kubectl wait --for=condition=complete job/manifest-hello")
machine.fail("kubectl get ns absent")
with subtest("Completion of chart test jobs"):
machine.wait_until_succeeds("kubectl wait --for=condition=complete job/chart-hello")
machine.wait_until_succeeds("kubectl wait --for=condition=complete job/chart-values-file")
machine.wait_until_succeeds("kubectl -n test wait --for=condition=complete job/chart-advanced")
with subtest("Output of manifest test job"):
hello_output = machine.succeed("kubectl logs -l batch.kubernetes.io/job-name=manifest-hello")
t.assertEqual(hello_output.rstrip(), "Hello, world!", "unexpected output of manifest-hello job")
with subtest("Output of chart test jobs"):
hello_output = machine.succeed("kubectl logs -l batch.kubernetes.io/job-name=chart-hello")
values_file_output = machine.succeed("kubectl logs -l batch.kubernetes.io/job-name=chart-values-file")
advanced_output = machine.succeed("kubectl -n test logs -l batch.kubernetes.io/job-name=chart-advanced")
# strip to remove trailing whitespaces
t.assertEqual(hello_output.rstrip(), "Hello, world!", "unexpected output of chart hello job")
t.assertEqual(values_file_output.rstrip(), "Hello, file!", "unexpected output of chart values file job")
t.assertEqual(advanced_output.rstrip(), "advanced hello", "unexpected output of advanced chart job")
with subtest("Deployment of bundled reverse proxy"):
${
{
k3s = ''
machine.wait_until_succeeds("kubectl -n kube-system rollout status deployment traefik")
'';
rke2 = ''
machine.wait_until_succeeds("kubectl -n kube-system rollout status daemonset rke2-ingress-nginx-controller")
'';
}
.${rancherDistro}
}
'';
meta.maintainers = lib.teams.k3s.members ++ pkgs.rke2.meta.maintainers;
@@ -1,4 +1,5 @@
# A test that sets extra kubelet configuration and enables graceful node shutdown
# Tests that containerd configuration, kubelet configuration, and graceful node shutdown are
# configured correctly
{
pkgs,
lib,
@@ -19,9 +20,9 @@ let
containerLogMaxSize = "5Mi";
in
{
name = "${rancherPackage.name}-kubelet-config";
name = "${rancherPackage.name}-configuration";
nodes.machine =
{ pkgs, ... }:
{ ... }:
{
environment.systemPackages = with pkgs; [
kubectl
@@ -37,6 +38,12 @@ in
disable = disabledComponents;
images = coreImages;
inherit nodeName;
containerdConfigTemplate = ''
# Base ${rancherDistro} config
{{ template "base" . }}
# MAGIC COMMENT
'';
gracefulNodeShutdown = {
enable = true;
inherit shutdownGracePeriod shutdownGracePeriodCriticalPods;
@@ -51,19 +58,26 @@ in
''
import json
start_all()
machine.wait_for_unit("${serviceName}")
# wait until the node is ready
machine.wait_until_succeeds(r"""kubectl get node ${nodeName} -ojson | jq -e '.status.conditions[] | select(.type == "Ready") | .status == "True"'""")
# test whether the kubelet registered an inhibitor lock
machine.succeed("systemd-inhibit --list --no-legend | grep \"^kubelet.*shutdown\"")
with subtest("Inhibitor lock is registered"):
machine.succeed("systemd-inhibit --list --no-legend | grep \"^kubelet.*shutdown\"")
with subtest("Containerd config contains magic comment"):
out=machine.succeed("cat /var/lib/rancher/${rancherDistro}/agent/etc/containerd/config.toml.tmpl")
t.assertIn("MAGIC COMMENT", out, "the containerd config template does not contain the magic comment")
# config file contains the magic comment
out=machine.succeed("cat /var/lib/rancher/${rancherDistro}/agent/etc/containerd/config.toml")
t.assertIn("MAGIC COMMENT", out, "the containerd config does not contain the magic comment")
# run kubectl proxy in the background, close stdout through redirection to not wait for the command to finish
machine.execute("kubectl proxy --address 127.0.0.1 --port=8001 >&2 &")
machine.wait_until_succeeds("nc -z 127.0.0.1 8001")
# get the kubeletconfig
kubelet_config=json.loads(machine.succeed("curl http://127.0.0.1:8001/api/v1/nodes/${nodeName}/proxy/configz | jq '.kubeletconfig'"))
with subtest("Kubelet config values are set correctly"):
kubelet_config=json.loads(machine.succeed("curl http://127.0.0.1:8001/api/v1/nodes/${nodeName}/proxy/configz | jq '.kubeletconfig'"))
t.assertEqual(kubelet_config["shutdownGracePeriod"], "${shutdownGracePeriod}")
t.assertEqual(kubelet_config["shutdownGracePeriodCriticalPods"], "${shutdownGracePeriodCriticalPods}")
t.assertEqual(kubelet_config["podsPerCore"], ${toString podsPerCore})
-59
View File
@@ -1,59 +0,0 @@
# A test that containerdConfigTemplate settings get written to containerd/config.toml
{
pkgs,
lib,
rancherDistro,
rancherPackage,
serviceName,
disabledComponents,
coreImages,
vmResources,
...
}:
let
nodeName = "test";
in
{
name = "${rancherPackage.name}-containerd-config";
nodes.machine =
{ ... }:
{
environment.systemPackages = with pkgs; [
kubectl
jq
];
environment.sessionVariables.KUBECONFIG = "/etc/rancher/${rancherDistro}/${rancherDistro}.yaml";
virtualisation = vmResources;
services.${rancherDistro} = {
enable = true;
package = rancherPackage;
disable = disabledComponents;
images = coreImages;
inherit nodeName;
containerdConfigTemplate = ''
# Base ${rancherDistro} config
{{ template "base" . }}
# MAGIC COMMENT
'';
};
};
testScript = # python
''
start_all()
machine.wait_for_unit("${serviceName}")
# wait until the node is ready
machine.wait_until_succeeds(r"""kubectl get node ${nodeName} -ojson | jq -e '.status.conditions[] | select(.type == "Ready") | .status == "True"'""")
# test whether the config template file contains the magic comment
out=machine.succeed("cat /var/lib/rancher/${rancherDistro}/agent/etc/containerd/config.toml.tmpl")
t.assertIn("MAGIC COMMENT", out, "the containerd config template does not contain the magic comment")
# test whether the config file contains the magic comment
out=machine.succeed("cat /var/lib/rancher/${rancherDistro}/agent/etc/containerd/config.toml")
t.assertIn("MAGIC COMMENT", out, "the containerd config does not contain the magic comment")
'';
meta.maintainers = lib.teams.k3s.members ++ pkgs.rke2.meta.maintainers;
}
+1 -4
View File
@@ -97,12 +97,9 @@ let
) allPackages;
in
{
airgap-images = mkTests ./airgap-images.nix;
auto-deploy = mkTests ./auto-deploy.nix;
auto-deploy-charts = mkTests ./auto-deploy-charts.nix;
containerd-config = mkTests ./containerd-config.nix;
configuration = mkTests ./configuration.nix;
etcd = mkTests ./etcd.nix;
kubelet-config = mkTests ./kubelet-config.nix;
multi-node = mkTests ./multi-node.nix;
single-node = mkTests ./single-node.nix;
};
+1 -1
View File
@@ -1,7 +1,7 @@
{ lib, pkgs, ... }:
{
name = "suricata";
meta.maintainers = lib.teams.secshell.members;
meta.maintainers = with lib.maintainers; [ felbinger ];
nodes = {
ids = {
+3 -3
View File
@@ -14,14 +14,14 @@
stdenv.mkDerivation {
pname = "mmlgui";
version = "210420-preview-unstable-2024-04-15";
version = "210420-preview-unstable-2026-01-09";
src = fetchFromGitHub {
owner = "superctr";
repo = "mmlgui";
rev = "e49f225ac2b2d46056b2c45a5d31c544227c4968";
rev = "9803a154c5fdbe6e88956e391ea0d5c4eae18cdc";
fetchSubmodules = true;
hash = "sha256-hj2k1BrE8AA2HTBEO03RammlZV2U4KW0gLJmFNiaSvI=";
hash = "sha256-3HMSVSgqusIhFf7jheyC2ytoJqSsJA8yYUnhxvdteq0=";
};
postPatch = ''
@@ -30,10 +30,10 @@
builderKeys ? [
"152812300785C96444D3334D17565732E08E5E41" # achow101.gpg
"9EDAFF80E080659604F4A76B2EBB056FD847F8A7" # Emzy.gpg
# "6B002C6EA3F91B1B0DF0C9BC8F617F1200A6D25C" # glozow.gpg (not signed 30.1)
# "6B002C6EA3F91B1B0DF0C9BC8F617F1200A6D25C" # glozow.gpg (not signed 30.2)
"D1DBF2C4B96F2DEBF4C16654410108112E7EA81F" # hebasto.gpg
"71A3B16735405025D447E8F274810B012346C9A6" # laanwj.gpg
"67AA5B46E7AF78053167FE343B8F814A784218F8" # willcl-ark.gpg
# "71A3B16735405025D447E8F274810B012346C9A6" # laanwj.gpg (not signed 30.2)
# "67AA5B46E7AF78053167FE343B8F814A784218F8" # willcl-ark.gpg (not signed 30.2)
],
}:
@@ -46,14 +46,14 @@ let
in
stdenv.mkDerivation (finalAttrs: {
pname = if withGui then "bitcoin" else "bitcoind";
version = "30.1";
version = "30.2";
src = fetchurl {
urls = [
"https://bitcoincore.org/bin/bitcoin-core-${finalAttrs.version}/bitcoin-${finalAttrs.version}.tar.gz"
];
# hash retrieved from signed SHA256SUMS
sha256 = "5d5518782c3000f64717ec1b4291e7e609a1f900d9729ee83c982243779c3f43";
sha256 = "6fd00b8c42883d5c963901ad4109a35be1e5ec5c2dc763018c166c21a06c84cb";
};
nativeBuildInputs = [
@@ -93,12 +93,12 @@ stdenv.mkDerivation (finalAttrs: {
checksums = fetchurl {
url = "https://bitcoincore.org/bin/bitcoin-core-${finalAttrs.version}/SHA256SUMS";
hash = "sha256-WdOYSEbxmpecFpThNwxKTNXbbwQvqlUuCxmCbhfhW6k";
hash = "sha256-ERE/QO2elj++mON3UYGJKaLdU86gWIRS/AufuyS/JAU=";
};
signatures = fetchurl {
url = "https://bitcoincore.org/bin/bitcoin-core-${finalAttrs.version}/SHA256SUMS.asc";
hash = "sha256-yFPhf/tyotBtpx1lZAQR+C2YdZaAyaWCq/0OVdP2wR4=";
hash = "sha256-69TMNzKJQRDC+2YU6bKI23c8Jx44m5B1zz823SQtiyg=";
};
verifyBuilderKeys =
@@ -5398,6 +5398,19 @@ final: prev: {
meta.hydraPlatforms = [ ];
};
fluent-vim = buildVimPlugin {
pname = "fluent.vim";
version = "0-unstable-2025-04-26";
src = fetchFromGitHub {
owner = "projectfluent";
repo = "fluent.vim";
rev = "94c1ef622187032778f546d2f8ad821661475172";
hash = "sha256-tOYxOUKa6Zn2Yq5peqGDEdCkpl+b+VKkSmZx7+kHZJ0=";
};
meta.homepage = "https://github.com/projectfluent/fluent.vim/";
meta.hydraPlatforms = [ ];
};
flutter-tools-nvim = buildVimPlugin {
pname = "flutter-tools.nvim";
version = "2.1.0-unstable-2026-01-08";
@@ -0,0 +1,59 @@
{
lib,
rustPlatform,
fetchFromGitHub,
stdenv,
vimUtils,
nix-update-script,
gitMinimal,
}:
let
version = "0-unstable-2026-01-10";
src = fetchFromGitHub {
owner = "bitbloxhub";
repo = "jupyter-api.nvim";
rev = "5dd157fd8cd9ef6d20075c0809f54c9f7af23e43";
hash = "sha256-N9Z7SaWeT8b2N3EtwwRLW7DCiQk0+tCd9e573DSq7SQ=";
};
jupyter-api-nvim-lib = rustPlatform.buildRustPackage {
inherit version src;
pname = "jupyter-api-nvim-lib";
cargoHash = "sha256-Oe6NnnNBY2nzYkNYucPpR6iV/8a6/9ZUytKpdHWY+So=";
env = {
# Allow undefined symbols on Darwin - they will be provided by Neovim's LuaJIT runtime
RUSTFLAGS = lib.optionalString stdenv.hostPlatform.isDarwin "-C link-arg=-undefined -C link-arg=dynamic_lookup";
};
};
in
vimUtils.buildVimPlugin {
pname = "jupyter-api.nvim";
inherit version src;
preInstall =
let
ext = stdenv.hostPlatform.extensions.sharedLibrary;
in
''
mkdir -p target/release
ln -s ${jupyter-api-nvim-lib}/lib/libjupyter_api_nvim${ext} target/release/libjupyter_api_nvim${ext}
'';
passthru = {
updateScript = nix-update-script {
attrPath = "vimPlugins.jupyter-api-nvim.jupyter-api-nvim-lib";
};
# needed for the update script
inherit jupyter-api-nvim-lib;
};
meta = {
description = "Library for interacting with Jupyter kernels from Neovim Lua";
homepage = "https://github.com/bitbloxhub/jupyter-api.nvim/";
license = lib.licenses.isc;
maintainers = with lib.maintainers; [
bitbloxhub
];
};
}
@@ -2788,10 +2788,6 @@ assertNoAdditions {
nvimSkipModules = [ "install_parsers" ];
};
nvim-treesitter-endwise = super.nvim-treesitter-endwise.overrideAttrs {
dependencies = [ self.nvim-treesitter-legacy ];
};
nvim-treesitter-pairs = super.nvim-treesitter-pairs.overrideAttrs {
dependencies = [ self.nvim-treesitter-legacy ];
};
@@ -414,6 +414,7 @@ https://github.com/ncm2/float-preview.nvim/,,
https://github.com/nvzone/floaterm/,HEAD,
https://github.com/liangxianzhe/floating-input.nvim/,HEAD,
https://github.com/floobits/floobits-neovim/,,
https://github.com/projectfluent/fluent.vim/,HEAD,
https://github.com/nvim-flutter/flutter-tools.nvim/,HEAD,
https://github.com/nvim-focus/focus.nvim/,HEAD,
https://github.com/anuvyklack/fold-preview.nvim/,HEAD,
@@ -7,8 +7,8 @@ vscode-utils.buildVscodeMarketplaceExtension {
mktplcRef = {
name = "latex-workshop";
publisher = "James-Yu";
version = "10.12.0";
hash = "sha256-UrQ7Sp4hklKP+rF8Yke7qay/vSIb+B5mza2fmfcN6l8=";
version = "10.12.2";
hash = "sha256-6VXlsMtAPFROYlmYJdHj54fo1J0LC4UJbzI00cuuwhk=";
};
meta = {
changelog = "https://marketplace.visualstudio.com/items/James-Yu.latex-workshop/changelog";
@@ -25,7 +25,6 @@ vscode-utils.buildVscodeMarketplaceExtension {
downloadPage = "https://marketplace.visualstudio.com/items?itemName=ms-azuretools.vscode-bicep";
homepage = "https://github.com/Azure/bicep/tree/main/src/vscode-bicep";
license = lib.licenses.mit;
teams = [ lib.teams.stridtech ];
};
}
@@ -6,7 +6,6 @@
poetry-core,
nixops,
python-digitalocean,
pythonOlder,
}:
buildPythonPackage {
@@ -14,8 +13,6 @@ buildPythonPackage {
version = "0.1.0-unstable-2022-08-14";
pyproject = true;
disabled = pythonOlder "3.7";
src = fetchFromGitHub {
owner = "nix-community";
repo = "nixops-digitalocean";
@@ -110,13 +110,13 @@
"vendorHash": null
},
"bpg_proxmox": {
"hash": "sha256-RVhClLMaoCtMhh+4NL8aOj/sK2WtFA/LNjkscKmxIiU=",
"hash": "sha256-d0v0a4t0sPkGQ9LGK7p5XZmuZBuBeLcWHBoslFu9Qs8=",
"homepage": "https://registry.terraform.io/providers/bpg/proxmox",
"owner": "bpg",
"repo": "terraform-provider-proxmox",
"rev": "v0.91.0",
"rev": "v0.92.0",
"spdx": "MPL-2.0",
"vendorHash": "sha256-/kRacnH+zVEm0u091euV0UIyadAcYnykn2tJiYY19I8="
"vendorHash": "sha256-+UWPbNHoV3TdeMZdY0ZOLBe1/Dej37hHORatC9Kol58="
},
"brightbox_brightbox": {
"hash": "sha256-pwFbCP+qDL/4IUfbPRCkddkbsEEeAu7Wp12/mDL0ABA=",
@@ -715,11 +715,11 @@
"vendorHash": "sha256-8gBaOdoUjmeomi8+H2gMypKnJdkXGzgzu8K0ATqMfxE="
},
"huaweicloud_huaweicloud": {
"hash": "sha256-8GsGyWBkeHy+7MOrjn6r8Q67EDBycU0FEFILabJvkWA=",
"hash": "sha256-B7THs+KpB9j72Jklzpw9GmjM/U5rqvZG9kxNbU/YkFY=",
"homepage": "https://registry.terraform.io/providers/huaweicloud/huaweicloud",
"owner": "huaweicloud",
"repo": "terraform-provider-huaweicloud",
"rev": "v1.83.0",
"rev": "v1.84.0",
"spdx": "MPL-2.0",
"vendorHash": null
},
@@ -1175,13 +1175,13 @@
"vendorHash": "sha256-f3b4NULINH8XworCn46fiz4GmBM31ROdAJy1j4GKkx4="
},
"scaleway_scaleway": {
"hash": "sha256-LR1e8gAF8htYpxfj/m/Ge266sFRFc8tijaE/9uKYYBw=",
"hash": "sha256-TekcGTYzpqFUVv0NYRGi71rgMD0okQpMPiPI8869cog=",
"homepage": "https://registry.terraform.io/providers/scaleway/scaleway",
"owner": "scaleway",
"repo": "terraform-provider-scaleway",
"rev": "v2.65.1",
"rev": "v2.66.0",
"spdx": "MPL-2.0",
"vendorHash": "sha256-HWAaBgKD/viiFaxvyHE4BuWdsY0tCSQFaf8YJq4PS/0="
"vendorHash": "sha256-2uqoiUdU8hVHm8Mc0dkS/qAuqZkhVVTKwf++CobRGtw="
},
"scottwinkler_shell": {
"hash": "sha256-LTWEdXxi13sC09jh+EFZ6pOi1mzuvgBz5vceIkNE/JY=",
@@ -36,13 +36,13 @@ let
in
stdenv.mkDerivation rec {
pname = "advanced-scene-switcher";
version = "1.32.5";
version = "1.32.6";
src = fetchFromGitHub {
owner = "WarmUpTill";
repo = "SceneSwitcher";
rev = version;
hash = "sha256-MoOakwxyDlhB4YFXWR5Q2jLb0k3wuj87tOO5f0Xy5Vg=";
hash = "sha256-BQnu7zRk1zOsEqFjmRrOeK/jE+rmnsB1ktW+OfH+L3I=";
};
nativeBuildInputs = [
-1
View File
@@ -74,7 +74,6 @@ stdenv.mkDerivation rec {
- Cron job notifications for renewal or error etc.
'';
license = lib.licenses.gpl3Only;
teams = [ lib.teams.serokell ];
inherit (coreutils.meta) platforms;
mainProgram = "acme.sh";
};
@@ -0,0 +1,75 @@
{
lib,
fetchFromGitHub,
python312,
xorg,
}:
python312.pkgs.buildPythonApplication rec {
pname = "angr-management";
version = "9.2.154";
pyproject = true;
src = fetchFromGitHub {
owner = "angr";
repo = "angr-management";
tag = "v${version}";
hash = "sha256-ZaQRXCt6u5FGApiXTToJdIXBnBLv3emo13YG5ip0lJA=";
};
pythonRelaxDeps = [
"angr"
"binsync"
"qtawesome"
];
buildInputs = [ xorg.xcbutilcursor ];
build-system = with python312.pkgs; [ setuptools ];
dependencies =
with python312.pkgs;
(
[
# requirements from setup.cfg
angr
bidict
binsync
ipython
pyqodeng-angr
pyside6
pyside6-qtads
qtawesome
qtpy
requests
rpyc
thefuzz
tomlkit
# requirements from setup.cfg -- vendorized qtconsole package
ipykernel
jupyter-client
jupyter-core
packaging
pygments
pyzmq
traitlets
]
++ angr.optional-dependencies.angrdb
++ requests.optional-dependencies.socks
++ thefuzz.optional-dependencies.speedup
);
pythonImportsCheck = [ "angrmanagement" ];
meta = {
description = "Graphical binary analysis tool powered by the angr binary analysis platform";
homepage = "https://github.com/angr/angr-management";
changelog = "https://github.com/angr/angr-management/releases/tag/${src.tag}";
license = lib.licenses.bsd2;
maintainers = with lib.maintainers; [
connornelson
scoder12
];
mainProgram = "angr-management";
};
}
+1
View File
@@ -119,6 +119,7 @@ stdenv.mkDerivation (finalAttrs: {
homepage = "https://ares-emu.net";
description = "Open-source multi-system emulator with a focus on accuracy and preservation";
license = lib.licenses.isc;
maintainers = with lib.maintainers; [ nadiaholmquist ];
mainProgram = "ares";
platforms = lib.platforms.unix;
};
@@ -0,0 +1,14 @@
diff --git a/Directory.Build.props b/Directory.Build.props
index f124456..117c096 100644
--- a/Directory.Build.props
+++ b/Directory.Build.props
@@ -9,9 +9,5 @@
<AddSyntheticProjectReferencesForSolutionDependencies>false</AddSyntheticProjectReferencesForSolutionDependencies>
<RunApiCompat>False</RunApiCompat>
<LangVersion>12</LangVersion>
- <CreateHardLinksForCopyAdditionalFilesIfPossible>true</CreateHardLinksForCopyAdditionalFilesIfPossible>
- <CreateHardLinksForCopyFilesToOutputDirectoryIfPossible>true</CreateHardLinksForCopyFilesToOutputDirectoryIfPossible>
- <CreateHardLinksForCopyLocalIfPossible>true</CreateHardLinksForCopyLocalIfPossible>
- <CreateHardLinksForPublishFilesIfPossible>true</CreateHardLinksForPublishFilesIfPossible>
</PropertyGroup>
</Project>
+3
View File
@@ -62,6 +62,9 @@ stdenvNoCC.mkDerivation (
# [ERR] Compile: [...]/Microsoft.NET.Sdk.targets(148,5): error MSB4018: The "GenerateDepsFile" task failed unexpectedly. [/build/source/src/tools/DevAnalyzers/DevAnalyzers.csproj]
# [ERR] Compile: [...]/Microsoft.NET.Sdk.targets(148,5): error MSB4018: System.IO.IOException: The process cannot access the file '/build/source/src/tools/DevAnalyzers/bin/Release/netstandard2.0/DevAnalyzers.deps.json' because it is being used by another process. [/build/source/src/tools/DevAnalyzers/DevAnalyzers.csproj]
./0002-disable-parallel-compile.patch
# Microsoft.Common.CurrentVersion.targets(5034,5): error MSB3021: Unable to copy file "[...]/JetBrains.Annotations.dll" to "bin/Debug/JetBrains.Annotations.dll". Access to the path '/build/source/nukebuild/bin/Debug/JetBrains.Annotations.dll' is denied. [/build/source/nukebuild/_build.csproj]
# This happens because the source packages have symlinks due to linkNuGetPackagesAndSources.
./0003-disable-hard-links.patch
];
# this needs to be match the version being patched above
-1
View File
@@ -480,7 +480,6 @@ py.pkgs.toPythonApplication (
license = lib.licenses.mit;
mainProgram = "az";
maintainers = with lib.maintainers; [ katexochen ];
teams = [ lib.teams.stridtech ];
platforms = lib.platforms.all;
};
}
+3 -3
View File
@@ -27,16 +27,16 @@ in
rustPlatform.buildRustPackage (finalAttrs: {
pname = "bacon";
version = "3.20.3";
version = "3.21.0";
src = fetchFromGitHub {
owner = "Canop";
repo = "bacon";
tag = "v${finalAttrs.version}";
hash = "sha256-UMSYXrD2lDJS2HYiCzm22r40Y4EzAjgEmNhV8hvarTo=";
hash = "sha256-mgSFnSnghJvaOrgg1AICNRUGNSrNijL9caDyN8kj8Dw=";
};
cargoHash = "sha256-m+9Psm29zV4kOb2mpynR3S/EBajAqPU11iBO9kHlD9o=";
cargoHash = "sha256-aSLaPirkszoGnAyt9U0LsKXL2IuR6nSInb/KQBVQ69k=";
buildFeatures = lib.optionals withSound [
"sound"
+3 -3
View File
@@ -21,16 +21,16 @@ let
in
buildNpmPackage' rec {
pname = "balena-cli";
version = "23.2.14";
version = "23.2.16";
src = fetchFromGitHub {
owner = "balena-io";
repo = "balena-cli";
rev = "v${version}";
hash = "sha256-sCzb6ZGpMwG6C66hMeuYmlnEj/ZNau8UieBTfCjdbXw=";
hash = "sha256-TqDcL3USt6HuYrQ0EqpYL3zB5hq19bgX0mT7+euYxaA=";
};
npmDepsHash = "sha256-oq7Lcn9yrtOGbIkyWDsoqlOzt6Dj6EvKKhZKwFlSF1k=";
npmDepsHash = "sha256-ec5E2ttOTlQ/YYiawtmCsplArkmFS1aQOTdOGVGGxWI=";
makeCacheWritable = true;
+3 -3
View File
@@ -7,16 +7,16 @@
}:
rustPlatform.buildRustPackage (finalAttrs: {
pname = "basalt";
version = "0.9.0";
version = "0.11.0";
src = fetchFromGitHub {
owner = "erikjuhani";
repo = "basalt";
tag = "basalt/v${finalAttrs.version}";
hash = "sha256-r34MlNSLZAHqNWlFMGNxT6zTSX+IKKQmJ4klEB4kjek=";
hash = "sha256-+bkONCG4PSa266r0am2sjtz2WJXdhwijfJ8Uz3iEk68=";
};
cargoHash = "sha256-TpbJ1HCBocgLAXGb5dBbZNMlOYXR9IGBRtfShgwlMIo=";
cargoHash = "sha256-7jkeDZhGoufY1lHnhc2yKz2ulBf/nlV4ngY2XRSHF+4=";
nativeInstallCheckInputs = [ versionCheckHook ];
doInstallCheck = true;
+3 -3
View File
@@ -18,16 +18,16 @@
buildNpmPackage rec {
pname = "basedpyright";
version = "1.36.2";
version = "1.37.1";
src = fetchFromGitHub {
owner = "detachhead";
repo = "basedpyright";
tag = "v${version}";
hash = "sha256-fi1TGvlH6h9MHymCn0INc1lIqTyMnHEhxXJuAiYmkpo=";
hash = "sha256-lBCCd9t6E0lUHOKc+5G1Ab3FmD/zj6g6SPoJ0Lh6oDE=";
};
npmDepsHash = "sha256-VHQOmRWirZYnoxk/JzGwFFV5QEIyHGg/isDvf/f7uro=";
npmDepsHash = "sha256-aZ9kfkW+S6Hjt59Z4Fc5joghs7OQ32354IYevFuKNeo=";
npmWorkspace = "packages/pyright";
preBuild = ''
-1
View File
@@ -50,7 +50,6 @@ buildDotnetModule rec {
homepage = "https://github.com/Azure/bicep/";
changelog = "https://github.com/Azure/bicep/releases/tag/v${version}";
license = lib.licenses.mit;
teams = [ lib.teams.stridtech ];
platforms = lib.platforms.all;
badPlatforms = [ "aarch64-linux" ];
};
-1
View File
@@ -57,7 +57,6 @@ buildDotnetModule rec {
changelog = "https://github.com/Azure/bicep/releases/tag/v${version}";
license = lib.licenses.mit;
maintainers = [ ];
teams = [ lib.teams.stridtech ];
mainProgram = "bicep";
};
}
+8 -5
View File
@@ -8,23 +8,26 @@
buildGoModule (finalAttrs: {
pname = "carapace-bridge";
version = "1.2.10";
version = "1.4.10";
src = fetchFromGitHub {
owner = "carapace-sh";
repo = "carapace-bridge";
tag = "v${finalAttrs.version}";
hash = "sha256-XQtbOQw2a2B5zhTgFiAuECtY/uM7AQnbwyRpzoKcF8I=";
hash = "sha256-6CCLSwbAYkMelaM5ac1I1kwOlWKPSOU9M9/2Dybt55I=";
};
# buildGoModule try to run `go mod vendor` instead of `go work vendor` on the
# workspace if proxyVendor is off
# buildGoModule tries to run `go mod vendor` instead of `go work vendor` on
# the workspace if proxyVendor is off
proxyVendor = true;
vendorHash = "sha256-01WRJJiAqxmb1grvz9gWdYJ4i9pVUYmxFg9BGEuUhdA=";
vendorHash = "sha256-DyFOCx+pCChbQRGRDou0QU2YTQzrcAgwO5Mc918Xm8k=";
postPatch = ''
substituteInPlace cmd/carapace-bridge/main.go \
--replace-fail "var version = \"develop\"" "var version = \"$version\""
# Remove docker examples
rm -r .docker
'';
nativeInstallCheckInputs = [ versionCheckHook ];
+7 -7
View File
@@ -4,18 +4,18 @@
fetchFromGitHub,
}:
buildGoModule rec {
buildGoModule (finalAttrs: {
pname = "cdncheck";
version = "1.2.17";
version = "1.2.18";
src = fetchFromGitHub {
owner = "projectdiscovery";
repo = "cdncheck";
tag = "v${version}";
hash = "sha256-9Xzmy5Q1VW32OYXkMwFyfhT5Tbm2SPn+STr9VFylWrw=";
tag = "v${finalAttrs.version}";
hash = "sha256-RFA/5fCh9csa6nYoVmuZ5vs6JCaTVFUuEz0E8w7Rb/s=";
};
vendorHash = "sha256-02/aSv5YYA62I3Wc27OJyPWO9YxFG4dKokgEswu9fzg=";
vendorHash = "sha256-Tc8qrML7u5qE0zVe7JCL1BM0KbhJSwnjhnd2gX5YUaA=";
subPackages = [ "cmd/cdncheck/" ];
@@ -34,9 +34,9 @@ buildGoModule rec {
meta = {
description = "Tool to detect various technology for a given IP address";
homepage = "https://github.com/projectdiscovery/cdncheck";
changelog = "https://github.com/projectdiscovery/cdncheck/releases/tag/v${version}";
changelog = "https://github.com/projectdiscovery/cdncheck/releases/tag/v${finalAttrs.src.tag}";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ fab ];
mainProgram = "cdncheck";
};
}
})
@@ -34,7 +34,6 @@ buildPythonPackage rec {
pname = "cryptography";
version = "40.0.1"; # Also update the hash in vectors.nix
format = "setuptools";
disabled = pythonOlder "3.6";
src = fetchPypi {
inherit pname version;
@@ -7,7 +7,6 @@
idna,
pyopenssl,
pytestCheckHook,
pythonOlder,
service-identity,
}:
@@ -16,8 +15,6 @@ buildPythonPackage rec {
version = "1.1.0";
format = "setuptools";
disabled = pythonOlder "3.8";
src = fetchPypi {
inherit pname version;
hash = "sha256-U3Wtf7QnB0vslWWS4NTuKkz02miTThukvPQhcSa8ReY=";
@@ -7,13 +7,13 @@
buildNpmPackage {
pname = "coc-rust-analyzer";
version = "0-unstable-2026-01-01";
version = "0-unstable-2026-01-06";
src = fetchFromGitHub {
owner = "fannheyward";
repo = "coc-rust-analyzer";
rev = "ffb3c8af18c7c86e05f335d2a614d1a88bd61a3e";
hash = "sha256-8d4GCWpVSwlGn2HSB56/Nll4U+YPx4aupRBxkOUUAr8=";
rev = "35615c7feafbc8005e160e7609888a97f5d3b031";
hash = "sha256-Kj3gUKFsfgUVVWuz7nuc7djRvfyvXc3wkHt1DxYIw30=";
};
npmDepsHash = "sha256-PgMgpVoKmhuqtSV73wSdqdQ5Bt5AeRwbn71mIulBh8Y=";
+4 -4
View File
@@ -11,18 +11,18 @@
rustPlatform.buildRustPackage (finalAttrs: {
pname = "code";
version = "0.6.5";
version = "0.6.45";
src = fetchFromGitHub {
owner = "just-every";
repo = "code";
tag = "v${finalAttrs.version}";
hash = "sha256-X+YwTXla6EePXLhMgokiZkgkm9P/rkl2+2XC27tqAEk=";
hash = "sha256-Ycl+r0fcopsWhT2QsRYPKWGRcXRyylgUalFBOgFF800=";
};
sourceRoot = "${finalAttrs.src.name}/code-rs";
cargoHash = "sha256-oNrBwI0klqQtGTMhPzVvOqMqvdexEVkZpLD6ssXqQX8=";
cargoHash = "sha256-Yo8g9GavX9lrIHGoTs8YzMJkVyABflaRa3ni0xf7EvQ=";
nativeBuildInputs = lib.optionals stdenvNoCC.hostPlatform.isLinux [
pkg-config
@@ -32,7 +32,7 @@ rustPlatform.buildRustPackage (finalAttrs: {
openssl
];
CODE_VERSION = finalAttrs.version;
env.CODE_VERSION = finalAttrs.version;
cargoBuildFlags = [
"--bin"
+3 -3
View File
@@ -6,16 +6,16 @@
rustPlatform.buildRustPackage (finalAttrs: {
pname = "complgen";
version = "0.6.0";
version = "0.6.1";
src = fetchFromGitHub {
owner = "adaszko";
repo = "complgen";
tag = "v${finalAttrs.version}";
hash = "sha256-iwbU3DOzyPm3ZoyCRsgBZcSBSg48SsAMS/W4o5e3Gfs=";
hash = "sha256-fmnnRG3Vj7oFNJTsnK6KeFnimR9bJ0QDvrJI1Dg6V00=";
};
cargoHash = "sha256-BGnTZxDv971s0h87RcOowoOpNdpwCx7FLcQNipPCTvc=";
cargoHash = "sha256-zueRWnIiANtlZvOwdh22zXumq4Bmq0/FN6vTU5w/XDk=";
meta = {
changelog = "https://github.com/adaszko/complgen/blob/v${finalAttrs.version}/CHANGELOG.md";
+2 -2
View File
@@ -14,13 +14,13 @@
stdenv.mkDerivation rec {
pname = "coturn";
version = "4.7.0";
version = "4.8.0";
src = fetchFromGitHub {
owner = "coturn";
repo = "coturn";
tag = version;
hash = "sha256-nvImelAvcbHpv6JTxX+sKpldVXG6u9Biu+VDt95r9I4=";
hash = "sha256-YeEyEGtlzzltEssPez7BIS3Wcfd+HgDgmrKyxOVu9PA=";
};
nativeBuildInputs = [
+1 -1
View File
@@ -42,7 +42,7 @@ stdenv.mkDerivation rec {
cd daemontools-${version}
sed -i -e '1 s_$_ -include ${glibc.dev}/include/errno.h_' src/conf-cc
sed -i -e '1 s_$_ -include ${glibc.dev}/include/errno.h -std=gnu17_' src/conf-cc
substituteInPlace src/Makefile \
--replace-fail '/bin/sh' '${bash}/bin/bash -oxtrace'
@@ -15,7 +15,6 @@ bundlerApp {
description = "Gem that exists to ensure all dependencies are set up for Danger with GitLab";
homepage = "https://github.com/danger/danger-gitlab-gem";
license = lib.licenses.mit;
teams = with lib.teams; [ serokell ];
mainProgram = "danger";
};
}
@@ -30,14 +30,14 @@ let
in
stdenv.mkDerivation (finalAttrs: {
pname = "debian-devscripts";
version = "2.26.1";
version = "2.26.3";
src = fetchFromGitLab {
domain = "salsa.debian.org";
owner = "debian";
repo = "devscripts";
tag = "v${finalAttrs.version}";
hash = "sha256-aYzFBotRiw2di8T+4LSht+/ECIdkwpHadcfV2depWoU=";
hash = "sha256-LJZ1pt36KccnA/fimZsOzEjXvqVE2eSww1Wkq5+siJk=";
};
patches = [
@@ -0,0 +1,13 @@
diff --git a/libdeja/find-fusermount b/libdeja/find-fusermount
index 1b3211bb..95b35cf5 100755
--- a/libdeja/find-fusermount
+++ b/libdeja/find-fusermount
@@ -20,6 +20,8 @@
if [ ! -f /.flatpak-info ]; then
if [ -n "@FUSERMOUNT_CMD@" ]; then
echo "@FUSERMOUNT_CMD@"
+ elif [ -f /run/wrappers/bin/fusermount3 ]; then
+ echo /run/wrappers/bin/fusermount3
elif command -pv fusermount3 > /dev/null; then
command -pv fusermount3
elif command -pv fusermount > /dev/null; then
+2 -2
View File
@@ -21,7 +21,6 @@
json-glib,
borgbackup,
duplicity,
fuse,
rclone,
restic,
nix-update-script,
@@ -66,7 +65,6 @@ stdenv.mkDerivation (finalAttrs: {
# Check https://gitlab.gnome.org/World/deja-dup/-/blob/main/meson.options
(lib.mesonOption "borg_command" (lib.getExe borgbackup))
(lib.mesonOption "duplicity_command" (lib.getExe duplicity))
(lib.mesonOption "fusermount_command" (lib.getExe' fuse "fusermount"))
(lib.mesonOption "rclone_command" (lib.getExe rclone))
(lib.mesonOption "restic_command" (lib.getExe restic))
(lib.mesonEnable "packagekit" false) # packagekit-glib not packaged
@@ -79,6 +77,8 @@ stdenv.mkDerivation (finalAttrs: {
)
'';
patches = [ ./find-fusermount-setuid.patch ];
passthru = {
updateScript = nix-update-script { };
};
-1
View File
@@ -25,7 +25,6 @@ rustPlatform.buildRustPackage {
teutat3s
jk
];
teams = [ lib.teams.serokell ];
mainProgram = "deploy";
};
}
+4 -1
View File
@@ -128,6 +128,9 @@ rustPlatform.buildRustPackage {
homepage = "https://github.com/cachix/devenv";
license = lib.licenses.asl20;
mainProgram = "devenv";
teams = [ lib.teams.cachix ];
maintainers = with lib.maintainers; [
domenkozar
sandydoo
];
};
}
-1
View File
@@ -14,7 +14,6 @@ buildPythonApplication rec {
pname = "dfmt";
version = "1.2.0";
format = "setuptools";
disabled = pythonOlder "3.7";
src = fetchPypi {
inherit pname version;
@@ -12,13 +12,13 @@
inherit hamlibSupport gpsdSupport extraScripts;
}).overrideAttrs
(oldAttrs: {
version = "1.8.1-unstable-2026-01-03";
version = "1.8.1-unstable-2026-01-08";
src = fetchFromGitHub {
owner = "wb2osz";
repo = "direwolf";
rev = "9aba4b386f841e5c9c9068a2259f7f5058a5dee5";
hash = "sha256-MHzPwx4N+LLETEZMQz4hmM+1qbwNJjHSISvTWROg+3o=";
rev = "041f396de0ab2111b9ccc07960f8f083a81f9ad0";
hash = "sha256-W0MTS4UgbtIybhEHXm2ie50TnkvRLc23WB0FR0FGT2s=";
};
# drop upstreamed cmake-4 patch
+1 -1
View File
@@ -39,7 +39,7 @@ stdenv.mkDerivation {
];
postPatch = ''
echo gcc -O2 -include ${glibc.dev}/include/errno.h > conf-cc
echo gcc -O2 -include ${glibc.dev}/include/errno.h -std=gnu17 > conf-cc
echo $out > conf-home
# djbdns ships with an outdated list of root servers
awk '/^.?.ROOT-SERVERS.NET/ { print $4 }' ${dns-root-data}/root.hints > dnsroots.global
+3 -3
View File
@@ -7,13 +7,13 @@
}:
buildGoModule (finalAttrs: {
pname = "dns-collector";
version = "1.14.0";
version = "2.0.0";
src = fetchFromGitHub {
owner = "dmachard";
repo = "dns-collector";
tag = "v${finalAttrs.version}";
hash = "sha256-J6h/td5vCZwVruamZziIxRhAOdLdlv3Aupz9m0bExU4=";
hash = "sha256-d6FFxVGolXfZF4Ulklxg8u26DdV9yHeDUf2IEEryELw=";
};
subPackages = [ "." ];
@@ -27,7 +27,7 @@ buildGoModule (finalAttrs: {
"-X github.com/prometheus/common/version.Version=${finalAttrs.version}"
];
vendorHash = "sha256-BQLlEY9CJDwJRbzB5kflBwwxcWMLbaqgWUtz2p3CJsE=";
vendorHash = "sha256-4gk7LwRDrTiMCrR6JJpdSvCmNa7wQ5Hk06OGd6/SACc=";
passthru.updateScript = nix-update-script { };
@@ -0,0 +1,46 @@
{
lib,
buildGoModule,
fetchFromGitHub,
versionCheckHook,
}:
buildGoModule (finalAttrs: {
pname = "docker-credential-env";
version = "1.6.0";
src = fetchFromGitHub {
owner = "isometry";
repo = "docker-credential-env";
tag = "v${finalAttrs.version}";
hash = "sha256-PnLylYDuDg+FSZ4CUSoQ5gMk4p08FP4OKBxkeIMa+tY=";
};
vendorHash = "sha256-uALgz1TXTIk8UlxTaqYOXvCg9121hMIFfJoYC0jxohk=";
ldflags =
let
c = "github.com/docker/docker-credential-helpers/credentials";
in
[
"-s"
"-X=${c}.Name=docker-credential-env"
"-X=${c}.Package=github.com/isometry/docker-credential-env"
"-X=${c}.Version=${finalAttrs.version}"
"-X=${c}.Revision=${finalAttrs.src.tag}"
];
nativeInstallCheckInputs = [
versionCheckHook
];
doInstallCheck = true;
meta = {
changelog = "https://github.com/isometry/docker-credential-env/releases/tag/${finalAttrs.src.tag}";
description = "Environment-driven docker credential helper";
homepage = "https://github.com/isometry/docker-credential-env";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ zowoq ];
mainProgram = "docker-credential-env";
};
})
+6 -1
View File
@@ -77,6 +77,11 @@ stdenv.mkDerivation (finalAttrs: {
description = "GTK application for managing E-IMZO keys";
license = with lib.licenses; [ agpl3Plus ];
platforms = lib.platforms.linux;
teams = [ lib.teams.uzinfocom ];
maintainers = with lib.maintainers; [
orzklv
shakhzodkudratov
bahrom04
bemeritus
];
};
})
+6 -1
View File
@@ -49,6 +49,11 @@ stdenvNoCC.mkDerivation (finalAttrs: {
homepage = "https://e-imzo.soliq.uz";
license = lib.licenses.unfree;
sourceProvenance = with lib.sourceTypes; [ binaryBytecode ];
teams = [ lib.teams.uzinfocom ];
maintainers = with lib.maintainers; [
orzklv
shakhzodkudratov
bahrom04
bemeritus
];
};
})
+2 -2
View File
@@ -23,13 +23,13 @@
stdenv.mkDerivation (finalAttrs: {
pname = "eid-mw";
# NOTE: Don't just blindly update to the latest version/tag. Releases are always for a specific OS.
version = "5.1.26";
version = "5.1.28";
src = fetchFromGitHub {
owner = "Fedict";
repo = "eid-mw";
tag = "v${finalAttrs.version}";
hash = "sha256-1dswXwXNTN3006KHnqlVntg6uHMxNe7NQ4BdKAB2FXM=";
hash = "sha256-xXzrJWQEZ5mxnv6lG+rkG1P6TSzUDELccSwUizzhEek=";
};
postPatch = ''
+5 -5
View File
@@ -17,16 +17,16 @@
}:
let
version = "0.211.1";
version = "0.300.3";
src = fetchFromGitHub {
owner = "evcc-io";
repo = "evcc";
tag = version;
hash = "sha256-taDgpuM3GbqD+v9sNXvJYiJLE1wvXzS/ILZgAGFUuw4=";
hash = "sha256-SGTsM4zZAuh/OGpMXvphHdlcCl1hOOYTn0R1k0/2qQo=";
};
vendorHash = "sha256-VG1/6KadRC4jLBIOL39M6l8ZED1KLb+wKGHNQowAV1g=";
vendorHash = "sha256-S23rTyg+QClky0vWfRl5nnd+2cYnHMGXmxZwLoTxUu0=";
commonMeta = {
license = lib.licenses.mit;
@@ -52,7 +52,7 @@ buildGo125Module rec {
npmDeps = fetchNpmDeps {
inherit src;
hash = "sha256-vDMDyMEf6kWn1UFHvzmIxnY/ofh6YwwVFlCeKExfEy4=";
hash = "sha256-AXsF0rkaf6giDhJT2f/MMyCd6Ozgepx8do7fpl/CyNs=";
};
nativeBuildInputs = [
@@ -72,7 +72,7 @@ buildGo125Module rec {
];
preBuild = ''
make assets
GOFLAGS="-mod=mod" make assets
'';
};
@@ -0,0 +1,87 @@
{
lib,
stdenv,
fetchzip,
makeWrapper,
makeDesktopItem,
copyDesktopItems,
electron,
asar,
git,
}:
let
pname = "expresslrs-configurator";
version = "1.7.11";
installPath = "share/${pname}";
resourcesPath = "${installPath}/resources";
in
stdenv.mkDerivation {
inherit pname version;
src = fetchzip {
url = "https://github.com/ExpressLRS/ExpressLRS-Configurator/releases/download/v${version}/${pname}-${version}.zip";
stripRoot = false;
hash = "sha256-BIbJzNWjYFbbwCEWoym3g6XBpQGi2owbf2XsQiXwHmw=";
};
nativeBuildInputs = [
makeWrapper
copyDesktopItems
asar
];
desktopItems = [
(makeDesktopItem {
name = pname;
exec = pname;
icon = pname;
desktopName = "ExpressLRS Configurator";
comment = "Configuration tool for ExpressLRS";
categories = [
"Utility"
"Development"
];
})
];
installPhase = ''
runHook preInstall
mkdir -p $out/${installPath} $out/bin $out/share/icons/hicolor/512x512/apps
cp -r $src/locales $src/resources $out/${installPath}/
chmod -R u+w $out/${resourcesPath}
# broken symlink
rm -f $out/${resourcesPath}/app.asar.unpacked/node_modules/@serialport/bindings-cpp/build/node_gyp_bins/python3
touch $out/${resourcesPath}/app.asar.unpacked/node_modules/@serialport/bindings-cpp/build/node_gyp_bins/python3
# patch asar absolute paths
asar extract $out/${resourcesPath}/app.asar $TMPDIR/app
substituteInPlace $TMPDIR/app/dist/main/main.js \
--replace-fail 'process.resourcesPath' "'$out/${resourcesPath}'" \
--replace-fail '__dirname,"../../devices"' "'$out/${resourcesPath}/devices'" \
--replace-fail '__dirname,"../../assets"' "'$out/${resourcesPath}/assets'" \
--replace-fail '__dirname,"../../dependencies"' "'$out/${resourcesPath}/dependencies'" \
--replace-fail '__dirname,"../","i18n","locales"' "'$out/${resourcesPath}/i18n/locales'" \
--replace-fail '__dirname,"../../.erb/dll/preload.js"' '__dirname,"preload.js"'
asar pack $TMPDIR/app $out/${resourcesPath}/app.asar
makeWrapper '${lib.getExe electron}' "$out/bin/${pname}" \
--add-flags "$out/${resourcesPath}/app.asar" \
--prefix PATH : ${lib.makeBinPath [ git ]} \
--set ELECTRON_OVERRIDE_DIST_PATH "${electron}/lib/electron" \
--add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform-hint=auto}}"
runHook postInstall
'';
meta = {
description = "Cross-platform build & configuration tool for ExpressLRS";
homepage = "https://github.com/ExpressLRS/ExpressLRS-Configurator";
license = lib.licenses.gpl3Plus;
platforms = lib.platforms.linux;
maintainers = with lib.maintainers; [ asamonik ];
mainProgram = pname;
};
}
+2 -2
View File
@@ -10,13 +10,13 @@
}:
buildNpmPackage rec {
pname = "factoriolab";
version = "3.17.5";
version = "3.18.0";
src = fetchFromGitHub {
owner = "factoriolab";
repo = "factoriolab";
tag = "v${version}";
hash = "sha256-Ra3xnOCIzx5oCeMU8kARcup+wsxknePBO/w1xGbwgT8=";
hash = "sha256-Id0o+Wxt0oNtik3lMHuvdm99HkuPY1XhE5yPCdkR8L4=";
fetchLFS = true;
};
buildInputs = [ vips ];
+26
View File
@@ -0,0 +1,26 @@
{
faust,
flac,
lame,
libmpg123,
libogg,
libopus,
libsndfile,
libvorbis,
}:
faust.wrapWithBuildEnv {
baseName = "faust2sndfile";
propagatedBuildInputs = [
flac
lame
libmpg123
libogg
libopus
libsndfile
libvorbis
];
}
@@ -6,15 +6,15 @@
}:
rustPlatform.buildRustPackage rec {
pname = "firezone-headless-client";
version = "1.5.4";
version = "1.5.5";
src = fetchFromGitHub {
owner = "firezone";
repo = "firezone";
tag = "headless-client-${version}";
hash = "sha256-dVqZs5Xie9lc3F6wVMdxRHeoM7y/e9TvwjzfikenQ6w=";
hash = "sha256-Lo5iUXlpAecglr0uohOdsefeaDQZor2YoF0O99CxvEo=";
};
cargoHash = "sha256-J2IqqFBuoTkbO0nMJbY680G2HTAtC1To/nMra2PCopY=";
cargoHash = "sha256-1e2uqxZFDbtcQREB0s2jxfSFgs/hnPxTlUGFeK5L9yw=";
sourceRoot = "${src.name}/rust";
buildAndTestSubdir = "headless-client";
env.RUSTFLAGS = "--cfg system_certs";
+38
View File
@@ -0,0 +1,38 @@
{
lib,
buildGoModule,
fetchFromGitLab,
nix-update-script,
versionCheckHook,
}:
let
version = "0.13.0";
in
buildGoModule {
pname = "fmd-server";
inherit version;
src = fetchFromGitLab {
owner = "fmd-foss";
repo = "fmd-server";
tag = "v${version}";
hash = "sha256-pIVsdoen45YWG/V8qW/DE/yet4o+8MqpVHgHh70Fty8=";
};
vendorHash = "sha256-d8QP6k7vEX0jBcpIMZymgOFYyKqGhND4Xa+mANg172s=";
nativeInstallCheckInputs = [ versionCheckHook ];
versionCheckProgramArg = "version";
doInstallCheck = true;
passthru.updateScript = nix-update-script { };
meta = {
description = "Server to communicate with the FindMyDevice app and save the latest (encrypted) location";
homepage = "https://fmd-foss.org/";
downloadPage = "https://gitlab.com/fmd-foss/fmd-server";
license = lib.licenses.gpl3Plus;
maintainers = with lib.maintainers; [ j0hax ];
teams = [ lib.teams.ngi ];
mainProgram = "fmd-server";
};
}
+3 -2
View File
@@ -22,6 +22,7 @@ let
# Requires running Docker daemon
"TestDocker"
"TestJobExecutor"
"TestRunExec"
"TestRunner"
"Test_validateCmd"
@@ -48,14 +49,14 @@ let
in
buildGoModule rec {
pname = "forgejo-runner";
version = "12.4.0";
version = "12.5.0";
src = fetchFromGitea {
domain = "code.forgejo.org";
owner = "forgejo";
repo = "runner";
rev = "v${version}";
hash = "sha256-e7IDkeeEz8uAZ8WbRnBjSGq3SXVt5NY5li/3s/kf6dY=";
hash = "sha256-WagacsKhYN+KodDZqXg39RGeJtEGrtqppf1JJpTSBsQ=";
};
vendorHash = "sha256-oCSAehLC5NiL0Ttp+FeHQyTQYNh/59I1i0UfbwWPeRE=";
+3 -3
View File
@@ -11,16 +11,16 @@
}:
rustPlatform.buildRustPackage (finalAttrs: {
pname = "fresh";
version = "0.1.70";
version = "0.1.75";
src = fetchFromGitHub {
owner = "sinelaw";
repo = "fresh";
tag = "v${finalAttrs.version}";
hash = "sha256-Lr5tMzEuUJJjsixji3H1Ms9of7JZD47kH8bJoOt2niw=";
hash = "sha256-c/zpPvPOlbZvmSGb+DqPV9HA+ic8/9TYv9MgI8d4Bgs=";
};
cargoHash = "sha256-OJwyckBWBPBcQL3f0wTDrNeyhwEXCzQesEiwTxt9uco=";
cargoHash = "sha256-o6/ER521tpmn8hkMDEw1ykgYuFpG1DTkFbw95NGYqGo=";
passthru.updateScript = nix-update-script { };
@@ -8,18 +8,18 @@
rustPlatform.buildRustPackage (finalAttrs: {
pname = "gdscript-formatter";
version = "0.18.1";
version = "0.18.2";
src = fetchFromGitHub {
owner = "GDQuest";
repo = "GDScript-formatter";
tag = finalAttrs.version;
hash = "sha256-16ASwYNnAtOVB0xxomjyuopya5rtmZriOE4H4W1v6nE=";
hash = "sha256-nnLVmd7wVHdDcAnyCHCVYckmbzMdSGIVL2iSgDC+9cs=";
# Needed due to .gitattributes being used for the Godot addon and export-ignoring all files
deepClone = true;
};
cargoHash = "sha256-HWPSZFe78+NjIV79Un2e06S4AKpw1xJbJuX0fh1YJdo=";
cargoHash = "sha256-xqGmv/e1Ch/EqutIb2claiJ8fQGDDdOriOZdt8SR8mw=";
cargoBuildFlags = [
"--bin=gdscript-formatter"
+220
View File
@@ -0,0 +1,220 @@
{
lib,
stdenv,
rustPlatform,
fetchFromGitHub,
fetchurl,
fetchzip,
fetchNpmDeps,
symlinkJoin,
makeWrapper,
rustc,
cargo,
npmHooks,
writableTmpDirAsHomeHook,
lld,
binaryen,
wasm-pack,
cargo-about,
nodejs,
pkg-config,
wasm-bindgen-cli_0_2_100,
cef-binary,
wayland,
openssl,
vulkan-loader,
libGL,
libxkbcommon,
xorg,
}:
let
version = "0-unstable-2026-01-06";
rev = "e88db022afa0bae62e90ee834cc48eb3f32b6f52";
srcHash = "sha256-orVg/SPBjoBQ6HWcL4OPGT9H/ezRykvGd4CP2uf+6+Y=";
shaderHash = "sha256-uc6FU0df5Xqp6YXEwODULhgUjSQvjRFGvdk+uFB7II0=";
cargoHash = "sha256-sWVDd8i2gaDpO65tT8XRMvEQ39KNgGLqjM1Zw8QHaDU=";
npmHash = "sha256-D8VCNK+Ca3gxO+5wriBn8FszG8/x8n/zM6/MPo9E2j4=";
brandingRev = "f8b02e68c92f5bbd27626bdd7a51102303b70a40";
brandingHash = "sha256-Q/p04xtYjt8nEKEPcWRGjTvP54fAr3cLlEpZn61IGyQ=";
src = fetchFromGitHub {
owner = "GraphiteEditor";
repo = "Graphite";
inherit rev;
hash = srcHash;
};
shaders = fetchurl {
url = "https://raw.githubusercontent.com/timon-schelling/graphite-artifacts/refs/heads/main/rev/${rev}/raster_nodes_shaders_entrypoint.wgsl";
hash = shaderHash;
};
branding = fetchzip {
url = "https://github.com/Keavon/graphite-branded-assets/archive/${brandingRev}.tar.gz";
hash = brandingHash;
};
resources = stdenv.mkDerivation (finalAttrs: {
pname = "graphite-resources";
inherit version src;
cargoDeps = rustPlatform.fetchCargoVendor {
src = finalAttrs.src;
sourceRoot = finalAttrs.src.name;
hash = cargoHash;
};
npmDeps = fetchNpmDeps {
inherit (finalAttrs) pname version;
src = "${finalAttrs.src}/frontend";
hash = npmHash;
};
npmRoot = "frontend";
npmConfigScript = "setup";
makeCacheWritable = true;
nativeBuildInputs = [
rustPlatform.cargoSetupHook
rustc
cargo
npmHooks.npmConfigHook
lld
writableTmpDirAsHomeHook
binaryen
wasm-pack
nodejs
pkg-config
wasm-bindgen-cli_0_2_100
cargo-about
makeWrapper
];
prePatch = ''
mkdir branding
cp -r ${branding}/* branding
cp $src/.branding branding/.branding
'';
buildPhase = ''
runHook preBuild
pushd frontend
npm run native:build-production
popd
runHook postBuild
'';
installPhase = ''
runHook preInstall
mkdir -p $out
cp -r frontend/dist/* $out/
runHook postInstall
'';
});
libraries = [
stdenv.cc.cc.lib
stdenv.cc.libc.out
vulkan-loader
libGL
wayland
openssl
libxkbcommon
xorg.libXcursor
xorg.libxcb
xorg.libX11
];
cef = cef-binary.overrideAttrs {
postFixup = ''
strip $out/Release/*.so*
'';
};
cefPath = symlinkJoin {
name = "cef-path";
paths = [
"${cef}/Release"
"${cef}/Resources"
];
postBuild = ''
ln -s ${cef}/include $out/include
echo '${
builtins.toJSON {
type = "minimal";
name = builtins.baseNameOf cef.src.url;
sha1 = "";
}
}' > $out/archive.json
'';
};
in
rustPlatform.buildRustPackage {
pname = "graphite";
inherit version src cargoHash;
nativeBuildInputs = [
pkg-config
makeWrapper
];
buildInputs = libraries;
env.CEF_PATH = cefPath;
env.RASTER_NODES_SHADER_PATH = shaders;
env.EMBEDDED_RESOURCES = resources;
cargoBuildFlags = [
"-p"
"graphite-desktop"
];
postUnpack = ''
mkdir ./branding
cp -r ${branding}/* ./branding
'';
postInstall = ''
mkdir -p $out/share/applications
cp $src/desktop/assets/*.desktop $out/share/applications/
mkdir -p $out/share/icons/hicolor/scalable/apps
cp ${branding}/app-icons/graphite.svg $out/share/icons/hicolor/scalable/apps/art.graphite.Graphite.svg
'';
postFixup = ''
patchelf \
--set-rpath "${lib.makeLibraryPath libraries}:${cefPath}" \
--add-needed libGL.so \
$out/bin/graphite
'';
# There are currently no tests for the desktop application
doCheck = false;
meta = {
description = "Open source vector graphics editor and procedural design engine";
homepage = "https://graphite.art";
mainProgram = "graphite";
longDescription = ''
Graphite is an open source vector graphics editor and procedural design engine.
Create and animate with a nondestructive editing workflow that
combines layer-based compositing with node-based generative design.
'';
# All Graphite code is licensed under the Apache License 2.0.
# This derivation also bundles the official branding assets
# which are licensed under the separate Graphite Branding License.
license = with lib.licenses; [
asl20
{
fullName = "Graphite Branding License";
url = "https://graphite.art/license/#branding";
free = false;
redistributable = true;
}
];
platforms = lib.platforms.linux;
maintainers = with lib.maintainers; [ timon ];
};
}
+6 -1
View File
@@ -844,7 +844,12 @@ rec {
license = with lib.licenses; [
gpl3Plus
];
teams = [ lib.teams.uzinfocom ];
maintainers = with lib.maintainers; [
orzklv
shakhzodkudratov
bahrom04
bemeritus
];
};
};
+3 -3
View File
@@ -11,16 +11,16 @@
rustPlatform.buildRustPackage rec {
pname = "intelli-shell";
version = "3.3.1";
version = "3.4.0";
src = fetchFromGitHub {
owner = "lasantosr";
repo = "intelli-shell";
rev = "v${version}";
hash = "sha256-gahf7Ijaj2mf9cdE3C4IIyW5UJrs0IbOP3vado/0fXw=";
hash = "sha256-TrT2gMc23m4xZ/fxxHqEkGpq3VBeLfkPXC9H1sSSOaQ=";
};
cargoHash = "sha256-skxgDsDicqkA92IaePwCndGuKHov4GNtwXkSbrDlG2A=";
cargoHash = "sha256-usALz3Wj3GyYjHjmEwFvjyDizXKQ66fkZ8Tb7GgT9BA=";
nativeBuildInputs = [
pkg-config
+3 -3
View File
@@ -48,7 +48,7 @@ in
stdenv.mkDerivation (finalAttrs: {
pname = "ipxe";
version = "1.21.1-unstable-2025-12-29";
version = "1.21.1-unstable-2026-01-10";
nativeBuildInputs = [
mtools
@@ -66,8 +66,8 @@ stdenv.mkDerivation (finalAttrs: {
src = fetchFromGitHub {
owner = "ipxe";
repo = "ipxe";
rev = "7c39c04a537ce29dccc6f2bae9749d1d371429c1";
hash = "sha256-tqOTv9f9teCQUgt52/cdAM9kE5678Bk9956cWDTDZAg=";
rev = "9c01c5a5dacb54167132d9a27259b23acdf091d6";
hash = "sha256-7Gsczc6jcUT0jDHNrgYWycqTs2/x3eqzbFwEwz8Z8kU=";
};
# Calling syslinux on a FAT image isn't going to work on Aarch64.
+4 -4
View File
@@ -21,14 +21,14 @@
stdenv.mkDerivation (finalAttrs: {
pname = "kaidan";
version = "0.13.0-unstable-2025-12-25";
version = "0.14.0";
src = fetchFromGitLab {
domain = "invent.kde.org";
owner = "network";
repo = "kaidan";
rev = "834d89c2115a48188e827089db05a88db5dc1f8f";
hash = "sha256-o7x6Ib9zL4akzjvz+mSACQHyj2xH6RzoCniumNjK1lw=";
tag = "v${finalAttrs.version}";
hash = "sha256-lKJU8GIkubHLYsP7r+TA+1rg+TMGONwjEcys19f62/w=";
};
patches = [
@@ -74,7 +74,7 @@ stdenv.mkDerivation (finalAttrs: {
qtWrapperArgs+=(--prefix GST_PLUGIN_SYSTEM_PATH_1_0 : "$GST_PLUGIN_SYSTEM_PATH_1_0")
'';
passthru.updateScript = nix-update-script { extraArgs = [ "--version=branch" ]; };
passthru.updateScript = nix-update-script { };
passthru.tests.kaidan = nixosTests.kaidan;
meta = {
-3
View File
@@ -5,7 +5,6 @@
fetchFromGitHub,
bats,
buildPythonApplication,
pythonOlder,
callPackage,
kicad,
numpy,
@@ -30,8 +29,6 @@ buildPythonApplication rec {
version = "1.7.2";
pyproject = true;
disabled = pythonOlder "3.7";
src = fetchFromGitHub {
owner = "yaqwsx";
repo = "KiKit";
+2 -2
View File
@@ -13,14 +13,14 @@ let
in
stdenv.mkDerivation (finalAttrs: {
pname = "kurve";
version = "2.2.0";
version = "3.4.0";
dontWrapQtApps = true;
src = fetchFromGitHub {
owner = "luisbocanegra";
repo = "kurve";
tag = "v${finalAttrs.version}";
hash = "sha256-TWNgQUgjrlzQs+cjzfoD13dHG3M93Akxyg5VNB9Rp9E=";
hash = "sha256-yLe8K4DbVqOKunWNxLXdvjBtJBj87NJtSw9Dul0CrMg=";
};
installPhase = ''
+3 -3
View File
@@ -7,16 +7,16 @@
buildGoModule rec {
pname = "lego";
version = "4.29.0";
version = "4.31.0";
src = fetchFromGitHub {
owner = "go-acme";
repo = "lego";
tag = "v${version}";
hash = "sha256-czCOrgC3Xy42KigAe+tsPRdWqxgdHFl0KN3Ei2zeyy8=";
hash = "sha256-YzslAEZVJDAa8Q7/YTWb2pH0MiWwgHipL11A/UD+nYg=";
};
vendorHash = "sha256-OnCtobizqDrqZTQenRPBTlUHvNx/xX34PYw8K4rgxSk=";
vendorHash = "sha256-9ead3yA/fvNRP4uP2O6Wy6aRzVAig3iyin8UgMcA8mc=";
doCheck = false;
+2 -2
View File
@@ -14,11 +14,11 @@
stdenv.mkDerivation rec {
pname = "libmediainfo";
version = "25.09";
version = "25.10";
src = fetchurl {
url = "https://mediaarea.net/download/source/libmediainfo/${version}/libmediainfo_${version}.tar.xz";
hash = "sha256-hWLo6gPir4veJ/ZteaD1c4WbjxMZPsEVq/EPc1sxOhI=";
hash = "sha256-rRPZeXsEbOOdDGWm+B0q7yQpc0whhlpqTFksfAHySd0=";
};
nativeBuildInputs = [
+8 -3
View File
@@ -7,17 +7,18 @@
muparser,
pkg-config,
qt5,
xcbuild,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "librecad";
version = "2.2.1.2";
version = "2.2.1.3";
src = fetchFromGitHub {
owner = "LibreCAD";
repo = "LibreCAD";
tag = "v${finalAttrs.version}";
hash = "sha256-a/0prti7aFIzoHXyd6NsiKx4ugW/vRXURAHBrAqyp84=";
hash = "sha256-s9QA0YC91aziFxgnSeH4+XtQu18cSiRc0B15tyyF8b0=";
};
buildInputs = [
@@ -33,6 +34,9 @@ stdenv.mkDerivation (finalAttrs: {
qt5.qmake
qt5.qttools
qt5.wrapQtAppsHook
]
++ lib.optionals stdenv.hostPlatform.isDarwin [
xcbuild
];
qmakeFlags = [
@@ -45,7 +49,8 @@ stdenv.mkDerivation (finalAttrs: {
--replace-warn __DATE__ 0
substituteInPlace librecad/src/src.pro \
--replace-warn '$$[QT_INSTALL_BINS]' '${lib.getDev qt5.qttools}/bin'
--replace-warn '$$[QT_INSTALL_BINS]' '${lib.getDev qt5.qttools}/bin' \
--replace-warn '/usr/libexec/PlistBuddy' 'PlistBuddy'
substituteInPlace librecad/src/muparser.pri \
--replace-warn "macx|" ""
'';
@@ -7,13 +7,13 @@
stdenvNoCC.mkDerivation {
pname = "libretro-shaders-slang";
version = "0-unstable-2026-01-02";
version = "0-unstable-2026-01-08";
src = fetchFromGitHub {
owner = "libretro";
repo = "slang-shaders";
rev = "bb2899e53c3d785efceae56be38503d1bcbe6359";
hash = "sha256-Ed3E4pMtw90iYwNVN/QOA7ICL1yAkGRPQOCGei2+BIQ=";
rev = "c2f3c5b0ce8c5e7e3ed9d885a924f85712cb38a0";
hash = "sha256-tQ/eUFNlzKYaP6eDiykCtooccEa2YP++iFXKSUVgwcw=";
};
dontConfigure = true;

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