Merge master into staging-next
This commit is contained in:
@@ -9934,12 +9934,6 @@
|
||||
githubId = 2041764;
|
||||
name = "Andreas Wendleder";
|
||||
};
|
||||
Gonzih = {
|
||||
email = "gonzih@gmail.com";
|
||||
github = "Gonzih";
|
||||
githubId = 266275;
|
||||
name = "Max Gonzih";
|
||||
};
|
||||
goodrone = {
|
||||
email = "goodrone@gmail.com";
|
||||
github = "goodrone";
|
||||
|
||||
@@ -1,41 +1,61 @@
|
||||
# Boot Problems {#sec-boot-problems}
|
||||
|
||||
If NixOS fails to boot, there are a number of kernel command line parameters that may help you to identify or fix the issue. You can add these parameters in the GRUB boot menu by pressing “e” to modify the selected boot entry and editing the line starting with `linux`. The following are some useful kernel command line parameters that are recognised by the NixOS boot scripts or by systemd:
|
||||
If NixOS fails to boot, there are a number of kernel command line parameters that may help you to identify or fix the issue. You can add these parameters in the GRUB boot menu by pressing “e” to modify the selected boot entry and editing the line starting with `linux`.
|
||||
|
||||
`boot.shell_on_fail`
|
||||
|
||||
: Allows the user to start a root shell if something goes wrong in stage 1 of the boot process (the initial ramdisk). This is disabled by default because there is no authentication for the root shell.
|
||||
|
||||
`boot.debug1`
|
||||
|
||||
: Start an interactive shell in stage 1 before anything useful has been done. That is, no modules have been loaded and no file systems have been mounted, except for `/proc` and `/sys`.
|
||||
|
||||
`boot.debug1devices`
|
||||
|
||||
: Like `boot.debug1`, but runs stage1 until kernel modules are loaded and device nodes are created. This may help with e.g. making the keyboard work.
|
||||
|
||||
`boot.debug1mounts`
|
||||
|
||||
: Like `boot.debug1` or `boot.debug1devices`, but runs stage1 until all filesystems that are mounted during initrd are mounted (see [neededForBoot](#opt-fileSystems._name_.neededForBoot)). As a motivating example, this could be useful if you've forgotten to set [neededForBoot](#opt-fileSystems._name_.neededForBoot) on a file system.
|
||||
|
||||
`boot.trace`
|
||||
|
||||
: Print every shell command executed by the stage 1 and 2 boot scripts.
|
||||
|
||||
`single`
|
||||
|
||||
: Boot into rescue mode (a.k.a. single user mode). This will cause systemd to start nothing but the unit `rescue.target`, which runs `sulogin` to prompt for the root password and start a root login shell. Exiting the shell causes the system to continue with the normal boot process.
|
||||
|
||||
`systemd.log_level=debug` `systemd.log_target=console`
|
||||
|
||||
: Make systemd very verbose and send log messages to the console instead of the journal. For more parameters recognised by systemd, see systemd(1).
|
||||
|
||||
In addition, these arguments are recognised by the live image only:
|
||||
{manpage}`kernel-command-line(7)` documents the kernel parameters accepted by systemd. Those include many that are helpful for debugging boot issues, such as `systemd.debug_shell` and `rescue`. Some also have `rd.`‐prefixed variants that apply to stage 1.
|
||||
|
||||
`live.nixos.passwd=password`
|
||||
|
||||
: Set the password for the `nixos` live user. This can be used for SSH access if there are issues using the terminal.
|
||||
|
||||
Notice that for `boot.shell_on_fail`, `boot.debug1`, `boot.debug1devices`, and `boot.debug1mounts`, if you did **not** select "start the new shell as pid 1", and you `exit` from the new shell, boot will proceed normally from the point where it failed, as if you'd chosen "ignore the error and continue".
|
||||
If no login prompts or X11 login screens appear (e.g. due to hanging dependencies), you can press Alt+ArrowUp. If you’re lucky, this will start `rescue.target` (described in {manpage}`systemd.special(7)`). (Also note that since most units have a 90-second timeout before systemd gives up on them, the `agetty` login prompts should appear eventually unless something is very wrong.)
|
||||
|
||||
If no login prompts or X11 login screens appear (e.g. due to hanging dependencies), you can press Alt+ArrowUp. If you’re lucky, this will start rescue mode (described above). (Also note that since most units have a 90-second timeout before systemd gives up on them, the `agetty` login prompts should appear eventually unless something is very wrong.)
|
||||
## Scripted stage 1 {#sec-boot-problems-scripted-stage-1}
|
||||
|
||||
The scripted implementation of stage 1 also understands these boot parameters.
|
||||
|
||||
::: {.warning}
|
||||
The scripted implementation of stage 1 is disabled by default and deprecated. These parameters have no effect, unless systemd stage 1 is explicitly disabled with `boot.initrd.systemd.enable = false;`.
|
||||
:::
|
||||
|
||||
`boot.shell_on_fail`
|
||||
|
||||
: Allows the user to start a root shell if something goes wrong in stage 1 of the boot process (the initial ramdisk). This is disabled by default because there is no authentication for the root shell.
|
||||
|
||||
::: {.note}
|
||||
systemd stage 1 alternative: `SYSTEMD_SULOGIN_FORCE=1` for rescue mode, or `rd.systemd.debug_shell` for shell on tty9.
|
||||
:::
|
||||
|
||||
`boot.debug1`
|
||||
|
||||
: Start an interactive shell in stage 1 before anything useful has been done. That is, no modules have been loaded and no file systems have been mounted, except for `/proc` and `/sys`.
|
||||
|
||||
::: {.note}
|
||||
systemd stage 1 alternative: `rd.systemd.break=pre-udev`
|
||||
:::
|
||||
|
||||
`boot.debug1devices`
|
||||
|
||||
: Like `boot.debug1`, but runs stage1 until kernel modules are loaded and device nodes are created. This may help with e.g. making the keyboard work.
|
||||
|
||||
::: {.note}
|
||||
systemd stage 1 alternative: `rd.systemd.break=pre-mount`
|
||||
:::
|
||||
|
||||
`boot.debug1mounts`
|
||||
|
||||
: Like `boot.debug1` or `boot.debug1devices`, but runs stage1 until all filesystems that are mounted during initrd are mounted (see [neededForBoot](#opt-fileSystems._name_.neededForBoot)). As a motivating example, this could be useful if you've forgotten to set [neededForBoot](#opt-fileSystems._name_.neededForBoot) on a file system.
|
||||
|
||||
::: {.note}
|
||||
systemd stage 1 alternative: `rd.systemd.break=pre-switch-root`
|
||||
:::
|
||||
|
||||
`boot.trace`
|
||||
|
||||
: Print every shell command executed by the stage 1 and 2 boot scripts.
|
||||
|
||||
::: {.note}
|
||||
systemd stage 1 alternative: `rd.systemd.log_level=debug`
|
||||
:::
|
||||
|
||||
Notice that for `boot.shell_on_fail`, `boot.debug1`, `boot.debug1devices`, and `boot.debug1mounts`, if you did **not** select "start the new shell as pid 1", and you `exit` from the new shell, boot will proceed normally from the point where it failed, as if you'd chosen "ignore the error and continue".
|
||||
|
||||
@@ -149,6 +149,10 @@ The first steps to all these are the same:
|
||||
`NIXOS_LUSTRATE`:
|
||||
:::
|
||||
|
||||
::: {.warning}
|
||||
The lustrate process will not work if the [](#opt-boot.initrd.systemd.enable) option is set to `true`, which is now the default. Setting this to `false` is deprecated and scheduled for removal in NixOS 26.11, along with `NIXOS_LUSTRATE`. Other installation methods, such as the one outlined above, or installing from [kexec](#sec-booting-via-kexec), are recommended instead.
|
||||
:::
|
||||
|
||||
Generate your NixOS configuration:
|
||||
|
||||
```ShellSession
|
||||
@@ -167,11 +171,6 @@ The first steps to all these are the same:
|
||||
If the current system and NixOS's bootloader configuration don't agree on where the [EFI System Partition](https://en.wikipedia.org/wiki/EFI_system_partition) is to be mounted, you'll need to manually alter the mount point in `hardware-configuration.nix` before building the system closure.
|
||||
:::
|
||||
|
||||
::: {.note}
|
||||
The lustrate process will not work if the [](#opt-boot.initrd.systemd.enable) option is set to `true`.
|
||||
If you want to use this option, wait until after the first boot into the NixOS system to enable it and rebuild.
|
||||
:::
|
||||
|
||||
You'll likely want to set a root password for your first boot using
|
||||
the configuration files because you won't have a chance to enter a
|
||||
password until after you reboot. You can initialize the root password
|
||||
|
||||
@@ -151,6 +151,9 @@
|
||||
"module-virtualisation-xen-introduction": [
|
||||
"index.html#module-virtualisation-xen-introduction"
|
||||
],
|
||||
"sec-boot-problems-scripted-stage-1": [
|
||||
"index.html#sec-boot-problems-scripted-stage-1"
|
||||
],
|
||||
"sec-nixos-test-vms-vs-containers": [
|
||||
"index.html#sec-nixos-test-vms-vs-containers"
|
||||
],
|
||||
|
||||
@@ -4,6 +4,16 @@
|
||||
|
||||
<!-- To avoid merge conflicts, consider adding your item at an arbitrary place in the list instead. -->
|
||||
|
||||
- Stage 1 (a.k.a. initrd) is now based on systemd by default, and the old scripted implementation is deprecated and scheduled for removal in 26.11. If you run into issues migrating, you can [get help from the community](https://nixos.org/community/) or report an issue on GitHub.
|
||||
|
||||
You can temporarily revert to the scripted stage 1 implementation by disabling [](#opt-boot.initrd.systemd.enable), but this is discouraged.
|
||||
|
||||
Most incompatibilities will be explained with assertions during configuration evaluation, but be aware of the following that can't be automatically detected:
|
||||
|
||||
- If you use LUKS disk encryption, ensure that `fileSystems."/".device` is set to `"/dev/mapper/<name>"`, where `<name>` matches the name in your `boot.initrd.luks.devices.<name>` definition, to avoid systemd timing out while prompting for a passphrase. If you have a more complex setup, e.g. with LVM on top of LUKS, you may need to add `"x-systemd.device-timeout=infinity"` to `fileSystems."/".options` instead. If you need to disable the timeout before you can boot into the system, pass `systemd.default_device_timeout_sec=infinity` on the kernel command line.
|
||||
- The `cryptsetup-askpass` program is not available; use `systemctl default` instead, which will prompt for passphrases as necessary. If you pipe password responses into SSH over stdin, use `ssh -o RequestTTY=force` to ensure `systemctl default` gets a TTY to prompt on.
|
||||
- Many kernel parameters have been replaced with native systemd versions; see [](#sec-boot-problems).
|
||||
|
||||
- The system.nix file has been added has an alternative entry point to configuration.nix (and flake.nix) that allows to configure NixOS without using `nix-channel`.
|
||||
This file must evaluate to a NixOS system derivation or an attribute set of such derivations, in which case the attribute to build has to be selected with the `--attr` option of `nixos-rebuild` or `nixos-install`.
|
||||
For example,
|
||||
|
||||
@@ -1143,6 +1143,16 @@ in
|
||||
'';
|
||||
}
|
||||
]
|
||||
++ flip mapAttrsToList config.boot.initrd.systemd.users (
|
||||
name: user: {
|
||||
assertion = config.boot.initrd.systemd.enable -> (baseNameOf user.shell != "cryptsetup-askpass");
|
||||
message = ''
|
||||
cryptsetup-askpass is not available in systemd stage 1. Please remove it from: boot.initrd.systemd.users.${name}.shell
|
||||
|
||||
Use `systemctl default` instead; see the NixOS 26.05 release notes for details. If you want to continue restricting the command for SSH login, you can use `command="systemctl default"` in SSH authorized keys instead; see `sshd(8)`.
|
||||
'';
|
||||
}
|
||||
)
|
||||
++ flatten (
|
||||
flip mapAttrsToList cfg.users (
|
||||
name: user:
|
||||
|
||||
@@ -320,7 +320,6 @@
|
||||
|
||||
systemd.services.nvidia-container-toolkit-cdi-generator = {
|
||||
description = "Container Device Interface (CDI) for Nvidia generator";
|
||||
after = [ "systemd-udev-settle.service" ];
|
||||
requiredBy = lib.mkMerge [
|
||||
(lib.mkIf config.virtualisation.docker.enable [ "docker.service" ])
|
||||
(lib.mkIf config.virtualisation.podman.enable [ "podman.service" ])
|
||||
@@ -329,6 +328,11 @@
|
||||
serviceConfig = {
|
||||
RuntimeDirectory = "cdi";
|
||||
RemainAfterExit = true;
|
||||
# We wait for the udev events queue to empty in the *hope* that the
|
||||
# devices needed here become available. This is terribly broken and
|
||||
# essentially no better than a random sleep(). See PR #452645 for
|
||||
# an attempt to fix this issue.
|
||||
ExecStartPre = "-${lib.getExe' pkgs.systemd "udevadm"} settle --timeout=180";
|
||||
ExecStart =
|
||||
let
|
||||
script = pkgs.callPackage ./cdi-generate.nix {
|
||||
|
||||
@@ -455,7 +455,6 @@ in
|
||||
"systemd-udevd-control.socket"
|
||||
"systemd-udevd-kernel.socket"
|
||||
"systemd-udevd.service"
|
||||
"systemd-udev-settle.service"
|
||||
"systemd-udev-trigger.service"
|
||||
];
|
||||
boot.initrd.systemd.storePaths = [
|
||||
|
||||
@@ -69,7 +69,6 @@ let
|
||||
# https://github.com/systemd/systemd/blob/main/units/systemd-networkd.service.in
|
||||
commonServiceConfig = {
|
||||
after = [
|
||||
"systemd-udev-settle.service"
|
||||
"network-pre.target"
|
||||
"systemd-sysusers.service"
|
||||
"systemd-sysctl.service"
|
||||
@@ -88,6 +87,12 @@ let
|
||||
"network.target"
|
||||
];
|
||||
|
||||
# We wait for the udev events queue to empty in the *hope* that the
|
||||
# devices needed here become available. This is terribly broken and
|
||||
# essentially no better than a random sleep().
|
||||
# FIXME: use .device units dependecies instead.
|
||||
serviceConfig.ExecStartPre = "-${lib.getExe' pkgs.systemd "udevadm"} settle --timeout=180";
|
||||
|
||||
unitConfig = {
|
||||
# Avoid default dependencies like "basic.target", which prevents ifstate from starting before luks is unlocked.
|
||||
DefaultDependencies = "no";
|
||||
@@ -173,7 +178,7 @@ in
|
||||
etc."ifstate/ifstate.yaml".source = settingsFormat.generate "ifstate.yaml" cfg.settings cfg.package;
|
||||
};
|
||||
|
||||
systemd.services.ifstate = commonServiceConfig // {
|
||||
systemd.services.ifstate = lib.recursiveUpdate commonServiceConfig {
|
||||
description = "IfState";
|
||||
|
||||
wantedBy = [
|
||||
@@ -263,7 +268,7 @@ in
|
||||
"remote-fs.target"
|
||||
];
|
||||
|
||||
services.ifstate-initrd = commonServiceConfig // {
|
||||
services.ifstate-initrd = lib.recursiveUpdate commonServiceConfig {
|
||||
description = "IfState initrd";
|
||||
|
||||
wantedBy = [
|
||||
|
||||
@@ -32,7 +32,19 @@ in
|
||||
options = {
|
||||
|
||||
boot.initrd.systemd.dbus = {
|
||||
enable = mkEnableOption "dbus in stage 1";
|
||||
enable = mkEnableOption "dbus in stage 1" // {
|
||||
# TODO: This isn't really necessary, but it avoids a very
|
||||
# common red herring error message:
|
||||
#
|
||||
# $ systemctl ...
|
||||
# Failed to connect to system scope bus via local transport: No such file or directory.
|
||||
#
|
||||
# When systemctl tries and fails to control the system manager
|
||||
# over dbus, it fals back to a private bus socket after
|
||||
# printing this message. It works, but users often think it is
|
||||
# the source of their problem when it isn't.
|
||||
default = true;
|
||||
};
|
||||
};
|
||||
|
||||
services.dbus = {
|
||||
@@ -163,6 +175,13 @@ in
|
||||
"${config.boot.initrd.systemd.package}/share/dbus-1/system.d"
|
||||
];
|
||||
targets.sockets.wants = [ "dbus.socket" ];
|
||||
|
||||
# Otherwise, dbus waits on cryptsetup, and systemctl says the
|
||||
# bus couldn't be found. This isn't an error (systemctl will
|
||||
# fall back to a private bus with PID 1), but it's confusing
|
||||
# to unaware users.
|
||||
services.dbus.unitConfig.DefaultDependencies = false;
|
||||
sockets.dbus.unitConfig.DefaultDependencies = false;
|
||||
};
|
||||
})
|
||||
|
||||
|
||||
@@ -998,7 +998,6 @@ in
|
||||
type = with types; listOf singleLineStr;
|
||||
default = [ ];
|
||||
example = [ "_netdev" ];
|
||||
visible = false;
|
||||
description = ''
|
||||
Only used with systemd stage 1.
|
||||
|
||||
|
||||
@@ -727,6 +727,10 @@ in
|
||||
};
|
||||
|
||||
config = mkIf config.boot.initrd.enable {
|
||||
warnings = lib.optional (!config.boot.initrd.systemd.enable) ''
|
||||
Scripted initrd is deprecated and scheduled for removal in 26.11. See the NixOS 26.05 release notes.
|
||||
'';
|
||||
|
||||
assertions = [
|
||||
{
|
||||
assertion = !config.boot.initrd.systemd.enable -> any (fs: fs.mountPoint == "/") fileSystems;
|
||||
|
||||
@@ -65,7 +65,6 @@ let
|
||||
"systemd-udevd-control.socket"
|
||||
"systemd-udevd-kernel.socket"
|
||||
"systemd-udevd.service"
|
||||
"systemd-udev-settle.service"
|
||||
]
|
||||
++ (optional (!config.boot.isContainer) "systemd-udev-trigger.service")
|
||||
++ [
|
||||
@@ -792,10 +791,13 @@ in
|
||||
path = [ pkgs.util-linux ];
|
||||
overrideStrategy = "asDropin";
|
||||
};
|
||||
systemd.services."modprobe@" = {
|
||||
restartIfChanged = false;
|
||||
serviceConfig.ExecSearchPath = lib.makeBinPath [ pkgs.kmod ];
|
||||
};
|
||||
systemd.services.systemd-random-seed.restartIfChanged = false;
|
||||
systemd.services.systemd-remount-fs.restartIfChanged = false;
|
||||
systemd.services.systemd-update-utmp.restartIfChanged = false;
|
||||
systemd.services.systemd-udev-settle.restartIfChanged = false; # Causes long delays in nixos-rebuild
|
||||
systemd.targets.local-fs.unitConfig.X-StopOnReconfiguration = true;
|
||||
systemd.targets.remote-fs.unitConfig.X-StopOnReconfiguration = true;
|
||||
systemd.services.systemd-importd.environment = proxy_env;
|
||||
|
||||
@@ -29,6 +29,10 @@ let
|
||||
|
||||
upstreamUnits = [
|
||||
"basic.target"
|
||||
"breakpoint-pre-udev.service"
|
||||
"breakpoint-pre-basic.service"
|
||||
"breakpoint-pre-mount.service"
|
||||
"breakpoint-pre-switch-root.service"
|
||||
"ctrl-alt-del.target"
|
||||
"debug-shell.service"
|
||||
"emergency.service"
|
||||
@@ -153,6 +157,7 @@ in
|
||||
|
||||
options.boot.initrd.systemd = {
|
||||
enable = mkEnableOption "systemd in initrd" // {
|
||||
default = true;
|
||||
description = ''
|
||||
Whether to enable systemd in initrd. The unit options such as
|
||||
{option}`boot.initrd.systemd.services` are the same as their
|
||||
@@ -423,42 +428,57 @@ in
|
||||
};
|
||||
|
||||
config = mkIf (config.boot.initrd.enable && cfg.enable) {
|
||||
assertions = [
|
||||
{
|
||||
assertion =
|
||||
cfg.root == "fstab" -> any (fs: fs.mountPoint == "/") (builtins.attrValues config.fileSystems);
|
||||
message = "The ‘fileSystems’ option does not specify your root file system.";
|
||||
}
|
||||
]
|
||||
++
|
||||
map
|
||||
(name: {
|
||||
assertion = lib.attrByPath name (throw "impossible") config.boot.initrd == "";
|
||||
message = ''
|
||||
systemd stage 1 does not support 'boot.initrd.${lib.concatStringsSep "." name}'. Please
|
||||
convert it to analogous systemd units in 'boot.initrd.systemd'.
|
||||
|
||||
Definitions:
|
||||
${lib.concatMapStringsSep "\n" ({ file, ... }: " - ${file}")
|
||||
(lib.attrByPath name (throw "impossible") options.boot.initrd).definitionsWithLocations
|
||||
}
|
||||
'';
|
||||
})
|
||||
[
|
||||
[ "preFailCommands" ]
|
||||
[ "preDeviceCommands" ]
|
||||
[ "preLVMCommands" ]
|
||||
[ "postDeviceCommands" ]
|
||||
[ "postResumeCommands" ]
|
||||
[ "postMountCommands" ]
|
||||
[ "extraUdevRulesCommands" ]
|
||||
[ "extraUtilsCommands" ]
|
||||
[ "extraUtilsCommandsTest" ]
|
||||
assertions =
|
||||
let
|
||||
obsoleteOpt =
|
||||
opts: msgFn:
|
||||
lib.flip map opts (opt: {
|
||||
assertion = lib.attrByPath opt (throw "impossible") config.boot.initrd == "";
|
||||
message = ''
|
||||
${msgFn (lib.concatStringsSep "." opt)}
|
||||
Definitions:
|
||||
${lib.concatMapStringsSep "\n" ({ file, ... }: " - ${file}")
|
||||
(lib.attrByPath opt (throw "impossible") options.boot.initrd).definitionsWithLocations
|
||||
}
|
||||
'';
|
||||
});
|
||||
in
|
||||
[
|
||||
{
|
||||
assertion =
|
||||
cfg.root == "fstab" -> any (fs: fs.mountPoint == "/") (builtins.attrValues config.fileSystems);
|
||||
message = "The ‘fileSystems’ option does not specify your root file system.";
|
||||
}
|
||||
]
|
||||
++
|
||||
obsoleteOpt
|
||||
[
|
||||
"network"
|
||||
"postCommands"
|
||||
[ "preFailCommands" ]
|
||||
[ "preDeviceCommands" ]
|
||||
[ "preLVMCommands" ]
|
||||
[ "postDeviceCommands" ]
|
||||
[ "postResumeCommands" ]
|
||||
[ "postMountCommands" ]
|
||||
[
|
||||
"network"
|
||||
"postCommands"
|
||||
]
|
||||
]
|
||||
];
|
||||
(name: ''
|
||||
systemd stage 1 does not support `boot.initrd.${name}`. Instead, create systemd services using the `boot.initrd.systemd.services` options, which has an API matching the stage 2 `systemd.services` options. Refer to `bootup(7)`, specifically the sections on "Bootup in the Initrd" and "System Manager Bootup", for information about when various units happen, and order services accordingly.
|
||||
'')
|
||||
++
|
||||
obsoleteOpt
|
||||
[
|
||||
[ "extraUtilsCommands" ]
|
||||
[ "extraUtilsCommandsTest" ]
|
||||
]
|
||||
(name: ''
|
||||
systemd stage 1 does not support `boot.initrd.${name}`. Instead, use `boot.initrd.systemd.initrdBin`, `boot.initrd.systemd.extraBin`, `boot.initrd.systemd.contents`, or `boot.initrd.systemd.storePaths` to add files to the initrd.
|
||||
'')
|
||||
++ obsoleteOpt [ [ "extraUdevRulesCommands" ] ] (name: ''
|
||||
systemd stage 1 does not support `boot.initrd.${name}`. Instead, use `boot.initrd.services.udev` to configure udev.
|
||||
'');
|
||||
|
||||
system.build = { inherit initialRamdisk; };
|
||||
|
||||
|
||||
@@ -158,16 +158,8 @@ let
|
||||
}:
|
||||
lib.nameValuePair "zfs-import-${pool}" {
|
||||
description = "Import ZFS pool \"${pool}\"";
|
||||
# We wait for systemd-udev-settle to ensure devices are available,
|
||||
# but don't *require* it, because mounts shouldn't be killed if it's stopped.
|
||||
# In the future, hopefully someone will complete this:
|
||||
# https://github.com/zfsonlinux/zfs/pull/4943
|
||||
wants = [
|
||||
"systemd-udev-settle.service"
|
||||
]
|
||||
++ lib.optional (config.boot.initrd.clevis.useTang) "network-online.target";
|
||||
wants = lib.optional (config.boot.initrd.clevis.useTang) "network-online.target";
|
||||
after = [
|
||||
"systemd-udev-settle.service"
|
||||
"systemd-modules-load.service"
|
||||
"systemd-ask-password-console.service"
|
||||
]
|
||||
|
||||
@@ -67,7 +67,6 @@ in
|
||||
systemd.services.ovsdb = {
|
||||
description = "Open_vSwitch Database Server";
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
after = [ "systemd-udev-settle.service" ];
|
||||
path = [ cfg.package ];
|
||||
restartTriggers = [
|
||||
db
|
||||
|
||||
@@ -103,6 +103,24 @@ rec {
|
||||
(onFullSupported "nixos.tests.gnome")
|
||||
(onSystems [ "x86_64-linux" ] "nixos.tests.hibernate")
|
||||
(onFullSupported "nixos.tests.i3wm")
|
||||
(onSystems [ "aarch64-linux" ] "nixos.tests.installer-systemd-stage-1.simpleUefiSystemdBoot")
|
||||
(onSystems [ "x86_64-linux" ] "nixos.tests.installer-systemd-stage-1.btrfsSimple")
|
||||
(onSystems [ "x86_64-linux" ] "nixos.tests.installer-systemd-stage-1.btrfsSubvolDefault")
|
||||
(onSystems [ "x86_64-linux" ] "nixos.tests.installer-systemd-stage-1.btrfsSubvolEscape")
|
||||
(onSystems [ "x86_64-linux" ] "nixos.tests.installer-systemd-stage-1.btrfsSubvols")
|
||||
(onSystems [ "x86_64-linux" ] "nixos.tests.installer-systemd-stage-1.luksroot")
|
||||
(onSystems [ "x86_64-linux" ] "nixos.tests.installer-systemd-stage-1.lvm")
|
||||
(onSystems [ "x86_64-linux" ] "nixos.tests.installer-systemd-stage-1.separateBootZfs")
|
||||
(onSystems [ "x86_64-linux" ] "nixos.tests.installer-systemd-stage-1.separateBootFat")
|
||||
(onSystems [ "x86_64-linux" ] "nixos.tests.installer-systemd-stage-1.separateBoot")
|
||||
(onSystems [ "x86_64-linux" ] "nixos.tests.installer-systemd-stage-1.simpleLabels")
|
||||
(onSystems [ "x86_64-linux" ] "nixos.tests.installer-systemd-stage-1.simpleProvided")
|
||||
(onSystems [ "x86_64-linux" ] "nixos.tests.installer-systemd-stage-1.simpleUefiSystemdBoot")
|
||||
(onSystems [ "x86_64-linux" ] "nixos.tests.installer-systemd-stage-1.simple")
|
||||
(onSystems [ "x86_64-linux" ] "nixos.tests.installer-systemd-stage-1.swraid")
|
||||
(onSystems [ "x86_64-linux" ] "nixos.tests.installer-systemd-stage-1.zfsroot")
|
||||
(onSystems [ "x86_64-linux" ] "nixos.tests.nixos-rebuild-specialisations")
|
||||
# Scripted stage 1 installer tests, remove in 26.11
|
||||
(onSystems [ "aarch64-linux" ] "nixos.tests.installer.simpleUefiSystemdBoot")
|
||||
(onSystems [ "x86_64-linux" ] "nixos.tests.installer.btrfsSimple")
|
||||
(onSystems [ "x86_64-linux" ] "nixos.tests.installer.btrfsSubvolDefault")
|
||||
@@ -166,6 +184,8 @@ rec {
|
||||
(onFullSupported "nixos.tests.nfs4.simple")
|
||||
(onSystems [ "x86_64-linux" ] "nixos.tests.oci-containers.podman")
|
||||
(onFullSupported "nixos.tests.openssh")
|
||||
(onFullSupported "nixos.tests.systemd-initrd-networkd-ssh")
|
||||
# Scripted stage 1 SSH test, remove in 26.11
|
||||
(onFullSupported "nixos.tests.initrd-network-ssh")
|
||||
(onFullSupported "nixos.tests.pantheon")
|
||||
(onFullSupported "nixos.tests.php.fpm")
|
||||
|
||||
@@ -727,7 +727,9 @@ in
|
||||
# 9pnet_virtio used to mount /nix partition doesn't support
|
||||
# hibernation. This test happens to work on x86_64-linux but
|
||||
# not on other platforms.
|
||||
hibernate = handleTestOn [ "x86_64-linux" ] ./hibernate.nix { };
|
||||
hibernate = handleTestOn [ "x86_64-linux" ] ./hibernate.nix {
|
||||
systemdStage1 = false;
|
||||
};
|
||||
hibernate-systemd-stage-1 = handleTestOn [ "x86_64-linux" ] ./hibernate.nix {
|
||||
systemdStage1 = true;
|
||||
};
|
||||
@@ -769,8 +771,13 @@ in
|
||||
};
|
||||
influxdb = runTest ./influxdb.nix;
|
||||
influxdb2 = runTest ./influxdb2.nix;
|
||||
initrd-luks-empty-passphrase = runTest ./initrd-luks-empty-passphrase.nix;
|
||||
initrd-network-openvpn = handleTestOn [ "x86_64-linux" "i686-linux" ] ./initrd-network-openvpn { };
|
||||
initrd-luks-empty-passphrase = runTest {
|
||||
imports = [ ./initrd-luks-empty-passphrase.nix ];
|
||||
_module.args.systemdStage1 = false;
|
||||
};
|
||||
initrd-network-openvpn = handleTestOn [ "x86_64-linux" "i686-linux" ] ./initrd-network-openvpn {
|
||||
systemdStage1 = false;
|
||||
};
|
||||
initrd-network-ssh = handleTest ./initrd-network-ssh { };
|
||||
initrd-secrets = handleTest ./initrd-secrets.nix { };
|
||||
initrd-secrets-changing = handleTest ./initrd-secrets-changing.nix { };
|
||||
@@ -778,8 +785,8 @@ in
|
||||
input-remapper = runTest ./input-remapper.nix;
|
||||
inspircd = runTest ./inspircd.nix;
|
||||
installed-tests = recurseIntoAttrs (handleTest ./installed-tests { });
|
||||
installer = handleTest ./installer.nix { };
|
||||
installer-systemd-stage-1 = handleTest ./installer-systemd-stage-1.nix { };
|
||||
installer = handleTest ./installer.nix { systemdStage1 = false; };
|
||||
installer-systemd-stage-1 = handleTest ./installer.nix { systemdStage1 = true; };
|
||||
intune = runTest ./intune.nix;
|
||||
invidious = runTest ./invidious.nix;
|
||||
invoiceplane = runTest ./invoiceplane.nix;
|
||||
@@ -1603,7 +1610,10 @@ in
|
||||
systemd-pstore = runTest ./systemd-pstore.nix;
|
||||
systemd-repart = handleTest ./systemd-repart.nix { };
|
||||
systemd-resolved = runTest ./systemd-resolved.nix;
|
||||
systemd-shutdown = runTest ./systemd-shutdown.nix;
|
||||
systemd-shutdown = runTest {
|
||||
imports = [ ./systemd-shutdown.nix ];
|
||||
_module.args.systemdStage1 = false;
|
||||
};
|
||||
systemd-ssh-proxy = runTest ./systemd-ssh-proxy.nix;
|
||||
systemd-sysupdate = runTest ./systemd-sysupdate.nix;
|
||||
systemd-sysusers-immutable = runTest ./systemd-sysusers-immutable.nix;
|
||||
|
||||
@@ -1,3 +1,6 @@
|
||||
# Remove in 26.11. This test guards against problems with
|
||||
# stage-1-init.sh, which will be removed with scripted stage 1.
|
||||
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
name = "boot-stage1";
|
||||
@@ -10,6 +13,8 @@
|
||||
...
|
||||
}:
|
||||
{
|
||||
boot.initrd.systemd.enable = false;
|
||||
|
||||
boot.extraModulePackages =
|
||||
let
|
||||
compileKernelModule =
|
||||
|
||||
@@ -54,6 +54,9 @@
|
||||
|
||||
boot = {
|
||||
initrd = {
|
||||
# TODO: Switch to systemd initrd
|
||||
systemd.enable = false;
|
||||
|
||||
# Format the upper Nix store.
|
||||
postDeviceCommands = ''
|
||||
${pkgs.e2fsprogs}/bin/mkfs.ext4 /dev/vdb
|
||||
|
||||
+7
-3
@@ -19,9 +19,13 @@ let
|
||||
../modules/profiles/qemu-guest.nix
|
||||
{
|
||||
# Hack to make the partition resizing work in QEMU.
|
||||
boot.initrd.postDeviceCommands = mkBefore ''
|
||||
ln -s vda /dev/xvda
|
||||
ln -s vda1 /dev/xvda1
|
||||
boot.initrd.services.udev.rules = ''
|
||||
KERNEL==vda, SYMLINK+=xvda
|
||||
KERNEL==vda1, SYMLINK+=xvda1
|
||||
'';
|
||||
services.udev.extraRules = ''
|
||||
KERNEL==vda, SYMLINK+=xvda
|
||||
KERNEL==vda1, SYMLINK+=xvda1
|
||||
'';
|
||||
|
||||
amazonImage.format = "qcow2";
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
pkgs,
|
||||
systemdStage1 ? false,
|
||||
systemdStage1,
|
||||
...
|
||||
}:
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
system ? builtins.currentSystem,
|
||||
config ? { },
|
||||
pkgs ? import ../.. { inherit system config; },
|
||||
systemdStage1 ? false,
|
||||
systemdStage1,
|
||||
}:
|
||||
|
||||
with import ../lib/testing-python.nix { inherit system pkgs; };
|
||||
|
||||
@@ -14,8 +14,6 @@ in
|
||||
{
|
||||
name = "initrd-luks-empty-passphrase";
|
||||
|
||||
_module.args.systemdStage1 = lib.mkDefault false;
|
||||
|
||||
nodes.machine =
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
@@ -31,9 +29,9 @@ in
|
||||
};
|
||||
|
||||
boot.loader.systemd-boot.enable = true;
|
||||
boot.initrd.systemd = lib.mkIf systemdStage1 {
|
||||
enable = true;
|
||||
emergencyAccess = true;
|
||||
boot.initrd.systemd = {
|
||||
enable = systemdStage1;
|
||||
emergencyAccess = lib.mkIf systemdStage1 true;
|
||||
};
|
||||
environment.systemPackages = with pkgs; [ cryptsetup ];
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
system ? builtins.currentSystem,
|
||||
config ? { },
|
||||
pkgs ? import ../.. { inherit system config; },
|
||||
systemdStage1 ? false,
|
||||
systemdStage1,
|
||||
}:
|
||||
|
||||
import ../make-test-python.nix (
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
# This tests SSH in scripted stage 1. Remove in 26.11.
|
||||
|
||||
import ../make-test-python.nix (
|
||||
{ lib, pkgs, ... }:
|
||||
|
||||
@@ -14,6 +16,7 @@ import ../make-test-python.nix (
|
||||
boot.kernelParams = [
|
||||
"ip=${config.networking.primaryIPAddress}:::255.255.255.0::eth1:none"
|
||||
];
|
||||
boot.initrd.systemd.enable = false;
|
||||
boot.initrd.network = {
|
||||
enable = true;
|
||||
ssh = {
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
# Tests networking in scripted stage 1. Remove in 26.11.
|
||||
|
||||
{ pkgs, lib, ... }:
|
||||
{
|
||||
name = "initrd-network";
|
||||
@@ -8,6 +10,7 @@
|
||||
{ ... }:
|
||||
{
|
||||
imports = [ ../modules/profiles/minimal.nix ];
|
||||
boot.initrd.systemd.enable = false;
|
||||
boot.initrd.network.enable = true;
|
||||
boot.initrd.network.postCommands = ''
|
||||
ip addr show
|
||||
|
||||
@@ -24,14 +24,19 @@ testing.makeTest {
|
||||
|
||||
boot.initrd.secrets = {
|
||||
"/test" = secret1InStore;
|
||||
"/run/keys/test" = secret1InStore;
|
||||
"/run/test" = secret1InStore;
|
||||
};
|
||||
boot.initrd.systemd = {
|
||||
enable = true;
|
||||
tmpfiles.settings."00-copy-secret" = {
|
||||
"/sysroot/secret-from-initramfs".C.argument = "/test";
|
||||
};
|
||||
};
|
||||
boot.initrd.postMountCommands = "cp /test /mnt-root/secret-from-initramfs";
|
||||
|
||||
specialisation.secrets2System.configuration = {
|
||||
boot.initrd.secrets = lib.mkForce {
|
||||
"/test" = secret2InStore;
|
||||
"/run/keys/test" = secret2InStore;
|
||||
"/run/test" = secret2InStore;
|
||||
};
|
||||
};
|
||||
};
|
||||
@@ -40,21 +45,23 @@ testing.makeTest {
|
||||
start_all()
|
||||
|
||||
machine.wait_for_unit("multi-user.target")
|
||||
print(machine.succeed("cat /run/keys/test"))
|
||||
print(machine.succeed("cat /run/test"))
|
||||
machine.succeed(
|
||||
"cmp ${secret1InStore} /secret-from-initramfs",
|
||||
"cmp ${secret1InStore} /run/keys/test",
|
||||
"cmp ${secret1InStore} /run/test",
|
||||
)
|
||||
# Select the second boot entry corresponding to the specialisation secrets2System.
|
||||
machine.succeed("grub-reboot 1")
|
||||
# Remove the rootfs secret so tmpfiles will copy the new one next time
|
||||
machine.succeed("rm /secret-from-initramfs")
|
||||
machine.shutdown()
|
||||
|
||||
with subtest("Check that the specialisation's secrets are distinct despite identical kernels"):
|
||||
machine.wait_for_unit("multi-user.target")
|
||||
print(machine.succeed("cat /run/keys/test"))
|
||||
print(machine.succeed("cat /run/test"))
|
||||
machine.succeed(
|
||||
"cmp ${secret2InStore} /secret-from-initramfs",
|
||||
"cmp ${secret2InStore} /run/keys/test",
|
||||
"cmp ${secret2InStore} /run/test",
|
||||
)
|
||||
machine.shutdown()
|
||||
'';
|
||||
|
||||
@@ -24,12 +24,15 @@ let
|
||||
boot.initrd.secrets = {
|
||||
"/test" = secretInStore;
|
||||
|
||||
# This should *not* need to be copied in postMountCommands
|
||||
"/run/keys/test" = secretInStore;
|
||||
# This should *not* need to be copied
|
||||
"/run/test" = secretInStore;
|
||||
};
|
||||
boot.initrd.systemd = {
|
||||
enable = true;
|
||||
tmpfiles.settings."00-copy-secret" = {
|
||||
"/sysroot/secret-from-initramfs".C.argument = "/test";
|
||||
};
|
||||
};
|
||||
boot.initrd.postMountCommands = ''
|
||||
cp /test /mnt-root/secret-from-initramfs
|
||||
'';
|
||||
boot.initrd.compressor = compressor;
|
||||
# zstd compression is only supported from 5.9 onwards. Remove when 5.10 becomes default.
|
||||
boot.kernelPackages = pkgs.linuxPackages_latest;
|
||||
@@ -40,7 +43,7 @@ let
|
||||
machine.wait_for_unit("multi-user.target")
|
||||
machine.succeed(
|
||||
"cmp ${secretInStore} /secret-from-initramfs",
|
||||
"cmp ${secretInStore} /run/keys/test",
|
||||
"cmp ${secretInStore} /run/test",
|
||||
)
|
||||
'';
|
||||
};
|
||||
|
||||
@@ -1,52 +0,0 @@
|
||||
{
|
||||
system ? builtins.currentSystem,
|
||||
config ? { },
|
||||
pkgs ? import ../.. { inherit system config; },
|
||||
}:
|
||||
|
||||
{
|
||||
# Some of these tests don't work with systemd stage 1 yet. Uncomment
|
||||
# them when fixed.
|
||||
inherit
|
||||
(import ./installer.nix {
|
||||
inherit system config pkgs;
|
||||
systemdStage1 = true;
|
||||
})
|
||||
# bcache
|
||||
bcachefsSimple
|
||||
bcachefsEncrypted
|
||||
btrfsSimple
|
||||
btrfsSubvolDefault
|
||||
btrfsSubvolEscape
|
||||
btrfsSubvols
|
||||
encryptedFSWithKeyfile
|
||||
# grub1
|
||||
luksroot
|
||||
luksroot-format1
|
||||
luksroot-format2
|
||||
lvm
|
||||
separateBoot
|
||||
separateBootFat
|
||||
separateBootZfs
|
||||
simple
|
||||
simpleLabels
|
||||
simpleProvided
|
||||
simpleSpecialised
|
||||
simpleUefiGrub
|
||||
simpleUefiGrubSpecialisation
|
||||
simpleUefiSystemdBoot
|
||||
stratisRoot
|
||||
swraid
|
||||
zfsroot
|
||||
clevisLuks
|
||||
clevisLuksFallback
|
||||
clevisZfs
|
||||
clevisZfsFallback
|
||||
clevisZfsParentDataset
|
||||
clevisZfsParentDatasetFallback
|
||||
gptAutoRoot
|
||||
clevisBcachefs
|
||||
clevisBcachefsFallback
|
||||
;
|
||||
|
||||
}
|
||||
+24
-10
@@ -2,7 +2,7 @@
|
||||
system ? builtins.currentSystem,
|
||||
config ? { },
|
||||
pkgs ? import ../.. { inherit system config; },
|
||||
systemdStage1 ? false,
|
||||
systemdStage1,
|
||||
}:
|
||||
|
||||
with import ../lib/testing-python.nix { inherit system pkgs; };
|
||||
@@ -42,7 +42,7 @@ let
|
||||
# To ensure that we can rebuild the grub configuration on the nixos-rebuild
|
||||
system.extraDependencies = with pkgs; [ stdenvNoCC ];
|
||||
|
||||
${optionalString systemdStage1 "boot.initrd.systemd.enable = true;"}
|
||||
boot.initrd.systemd.enable = ${boolToString systemdStage1};
|
||||
|
||||
${optionalString (bootLoader == "grub") ''
|
||||
boot.loader.grub.extraConfig = "serial; terminal_output serial";
|
||||
@@ -640,6 +640,7 @@ let
|
||||
clevisFallbackTest ? false,
|
||||
disableFileSystems ? false,
|
||||
selectNixPackage ? pkgs: pkgs.nixVersions.stable,
|
||||
broken ? false,
|
||||
}:
|
||||
let
|
||||
isEfi = bootLoader == "systemd-boot" || (bootLoader == "grub" && grubUseEfi);
|
||||
@@ -656,6 +657,7 @@ let
|
||||
"x86_64-darwin"
|
||||
"i686-linux"
|
||||
];
|
||||
inherit broken;
|
||||
};
|
||||
nodes =
|
||||
let
|
||||
@@ -846,14 +848,23 @@ let
|
||||
"mount LABEL=boot /mnt/boot",
|
||||
)
|
||||
'';
|
||||
extraConfig = ''
|
||||
boot.kernelParams = lib.mkAfter [ "console=tty0" ];
|
||||
'';
|
||||
enableOCR = true;
|
||||
postBootCommands = ''
|
||||
target.wait_for_text("[Pp]assphrase for")
|
||||
target.send_chars("supersecret\n")
|
||||
'';
|
||||
# The serial console is much more reliable than OCR, but
|
||||
# scripted stage 1 doesn't forward logs / password prompts to
|
||||
# it. (TODO: The test framework should use 'console=ttyS0'
|
||||
# anyway, but currently it uses 'console=tty0' for the sake of
|
||||
# the interactive driver)
|
||||
enableOCR = !systemdStage1;
|
||||
postBootCommands =
|
||||
if systemdStage1 then
|
||||
''
|
||||
target.wait_for_console_text("passphrase for")
|
||||
target.send_console("supersecret\n")
|
||||
''
|
||||
else
|
||||
''
|
||||
target.wait_for_text("[Pp]assphrase for")
|
||||
target.send_chars("supersecret\n")
|
||||
'';
|
||||
};
|
||||
|
||||
# The (almost) simplest partitioning scheme: a swap partition and
|
||||
@@ -879,11 +890,13 @@ let
|
||||
|
||||
simple-test-config-by-attr = simple-test-config // {
|
||||
testByAttrSwitch = true;
|
||||
broken = true;
|
||||
};
|
||||
|
||||
simple-test-config-from-by-attr-to-flake = simple-test-config // {
|
||||
testByAttrSwitch = true;
|
||||
testFlakeSwitch = true;
|
||||
broken = true;
|
||||
};
|
||||
|
||||
simple-uefi-grub-config = {
|
||||
@@ -1387,6 +1400,7 @@ in
|
||||
# Full disk encryption (root, kernel and initrd encrypted) using GRUB, GPT/UEFI,
|
||||
# LVM-on-LUKS and a keyfile in initrd.secrets to enter the passphrase once
|
||||
fullDiskEncryption = makeInstallerTest "fullDiskEncryption" {
|
||||
broken = true;
|
||||
createPartitions = ''
|
||||
installer.succeed(
|
||||
"flock /dev/vda parted --script /dev/vda -- mklabel gpt"
|
||||
|
||||
@@ -186,6 +186,7 @@ in
|
||||
boot.initrd.extraFiles."etc/multipath/wwids".source =
|
||||
pkgs.writeText "wwids" "/3600140592b17c3f6b404168b082ceeb7/";
|
||||
|
||||
boot.initrd.systemd.enable = false;
|
||||
boot.iscsi-initiator = {
|
||||
discoverPortal = "target";
|
||||
name = initiatorName;
|
||||
|
||||
@@ -142,6 +142,8 @@ in
|
||||
};
|
||||
};
|
||||
|
||||
# No SCSI support in systemd stage 1 at present.
|
||||
boot.initrd.systemd.enable = false;
|
||||
boot.iscsi-initiator = {
|
||||
discoverPortal = "target";
|
||||
name = initiatorName;
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
# Tests LUKS specifically with scripted stage 1. Remove in 26.11.
|
||||
|
||||
{ lib, pkgs, ... }:
|
||||
{
|
||||
name = "luks";
|
||||
@@ -6,6 +8,8 @@
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
|
||||
boot.initrd.systemd.enable = false;
|
||||
|
||||
# Use systemd-boot
|
||||
virtualisation = {
|
||||
emptyDiskImages = [
|
||||
|
||||
@@ -106,8 +106,7 @@ in
|
||||
assert "machine" == machine.succeed("hostname -s").strip()
|
||||
|
||||
with subtest("whether systemd-udevd automatically loads modules for our hardware"):
|
||||
machine.succeed("systemctl start systemd-udev-settle.service")
|
||||
machine.wait_for_unit("systemd-udev-settle.service")
|
||||
machine.succeed("udevadm settle --timeout=180")
|
||||
assert "mousedev" in machine.succeed("lsmod")
|
||||
|
||||
with subtest("whether systemd-tmpfiles-clean works"):
|
||||
|
||||
@@ -36,66 +36,70 @@ with pkgs.lib;
|
||||
'';
|
||||
};
|
||||
|
||||
btrfs = makeTest {
|
||||
name = "non-default-filesystems-btrfs";
|
||||
btrfs =
|
||||
let
|
||||
disk = "/dev/vda";
|
||||
partition = "/dev/disk/by-label/storage";
|
||||
in
|
||||
makeTest {
|
||||
name = "non-default-filesystems-btrfs";
|
||||
|
||||
nodes.machine =
|
||||
{
|
||||
config,
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
let
|
||||
disk = config.virtualisation.rootDevice;
|
||||
in
|
||||
{
|
||||
virtualisation.rootDevice = "/dev/vda";
|
||||
virtualisation.useDefaultFilesystems = false;
|
||||
nodes.machine =
|
||||
{ ... }:
|
||||
{
|
||||
virtualisation.rootDevice = disk;
|
||||
virtualisation.useDefaultFilesystems = false;
|
||||
|
||||
boot.initrd.availableKernelModules = [ "btrfs" ];
|
||||
boot.supportedFilesystems = [ "btrfs" ];
|
||||
|
||||
boot.initrd.postDeviceCommands = ''
|
||||
FSTYPE=$(blkid -o value -s TYPE ${disk} || true)
|
||||
if test -z "$FSTYPE"; then
|
||||
modprobe btrfs
|
||||
${pkgs.btrfs-progs}/bin/mkfs.btrfs ${disk}
|
||||
|
||||
mkdir /nixos
|
||||
mount -t btrfs ${disk} /nixos
|
||||
|
||||
${pkgs.btrfs-progs}/bin/btrfs subvolume create /nixos/root
|
||||
${pkgs.btrfs-progs}/bin/btrfs subvolume create /nixos/home
|
||||
|
||||
umount /nixos
|
||||
fi
|
||||
'';
|
||||
|
||||
virtualisation.fileSystems = {
|
||||
"/" = {
|
||||
device = disk;
|
||||
fsType = "btrfs";
|
||||
options = [ "subvol=/root" ];
|
||||
systemd.repart.partitions."00-root" = {
|
||||
Type = "linux-generic";
|
||||
Format = "btrfs";
|
||||
Label = "storage";
|
||||
Subvolumes = [
|
||||
"/root"
|
||||
"/home"
|
||||
];
|
||||
MakeDirectories = [
|
||||
"/root"
|
||||
"/home"
|
||||
];
|
||||
};
|
||||
|
||||
"/home" = {
|
||||
device = disk;
|
||||
fsType = "btrfs";
|
||||
options = [ "subvol=/home" ];
|
||||
boot.initrd.supportedFilesystems = [ "btrfs" ];
|
||||
|
||||
boot.initrd.systemd = {
|
||||
enable = true;
|
||||
repart = {
|
||||
enable = true;
|
||||
device = disk;
|
||||
empty = "allow";
|
||||
};
|
||||
};
|
||||
|
||||
virtualisation.fileSystems = {
|
||||
"/" = {
|
||||
device = partition;
|
||||
fsType = "btrfs";
|
||||
options = [ "subvol=/root" ];
|
||||
};
|
||||
|
||||
"/home" = {
|
||||
device = partition;
|
||||
fsType = "btrfs";
|
||||
options = [ "subvol=/home" ];
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
testScript = ''
|
||||
machine.wait_for_unit("multi-user.target")
|
||||
testScript = ''
|
||||
machine.wait_for_unit("multi-user.target")
|
||||
|
||||
with subtest("BTRFS filesystems are mounted correctly"):
|
||||
print("output of \"grep -E '/dev/vda' /proc/mounts\":\n" + machine.execute("grep -E '/dev/vda' /proc/mounts")[1])
|
||||
machine.succeed("grep -E '/dev/vda / btrfs rw,.*subvolid=[0-9]+,subvol=/root 0 0' /proc/mounts")
|
||||
machine.succeed("grep -E '/dev/vda /home btrfs rw,.*subvolid=[0-9]+,subvol=/home 0 0' /proc/mounts")
|
||||
'';
|
||||
};
|
||||
with subtest("BTRFS filesystems are mounted correctly"):
|
||||
realdev = machine.succeed("realpath '${partition}'")
|
||||
print(f"output of \"grep -E '{realdev}' /proc/mounts\":\n" + machine.execute(f"grep -E '{realdev}' /proc/mounts")[1])
|
||||
machine.succeed(f"grep -E '{realdev} / btrfs rw,.*subvolid=[0-9]+,subvol=/root 0 0' /proc/mounts")
|
||||
machine.succeed(f"grep -E '{realdev} /home btrfs rw,.*subvolid=[0-9]+,subvol=/home 0 0' /proc/mounts")
|
||||
'';
|
||||
};
|
||||
|
||||
erofs =
|
||||
let
|
||||
|
||||
@@ -43,9 +43,10 @@ pkgs.lib.listToAttrs (
|
||||
meta = { };
|
||||
|
||||
nodes.machine =
|
||||
{ lib, ... }:
|
||||
{ pkgs, lib, ... }:
|
||||
let
|
||||
script = ''
|
||||
${lib.getExe' pkgs.systemd "udevadm"} settle --timeout=180
|
||||
ip link
|
||||
if ${lib.optionalString predictable "!"} ip link show eth0; then
|
||||
echo Success
|
||||
@@ -63,18 +64,20 @@ pkgs.lib.listToAttrs (
|
||||
# Check if predictable interface names are working in stage-1
|
||||
boot.initrd.postDeviceCommands = lib.mkIf (!systemdStage1) script;
|
||||
|
||||
boot.initrd.systemd = lib.mkIf systemdStage1 {
|
||||
enable = true;
|
||||
initrdBin = [ pkgs.iproute2 ];
|
||||
services.systemd-udev-settle.wantedBy = [ "initrd.target" ];
|
||||
services.check-interfaces = {
|
||||
requiredBy = [ "initrd.target" ];
|
||||
after = [ "systemd-udev-settle.service" ];
|
||||
serviceConfig.Type = "oneshot";
|
||||
path = [ pkgs.iproute2 ];
|
||||
inherit script;
|
||||
};
|
||||
};
|
||||
boot.initrd.systemd = lib.mkMerge [
|
||||
{ enable = systemdStage1; }
|
||||
(lib.mkIf systemdStage1 {
|
||||
initrdBin = [ pkgs.iproute2 ];
|
||||
services.systemd-udev-settle.wantedBy = [ "initrd.target" ];
|
||||
services.check-interfaces = {
|
||||
requiredBy = [ "initrd.target" ];
|
||||
after = [ "systemd-udev-settle.service" ];
|
||||
serviceConfig.Type = "oneshot";
|
||||
path = [ pkgs.iproute2 ];
|
||||
inherit script;
|
||||
};
|
||||
})
|
||||
];
|
||||
};
|
||||
|
||||
testScript = ''
|
||||
|
||||
@@ -33,7 +33,7 @@ let
|
||||
label = rootFslabel;
|
||||
partitionTableType = "efi";
|
||||
format = "qcow2";
|
||||
bootSize = "32M";
|
||||
bootSize = "128M";
|
||||
additionalSpace = "0M";
|
||||
copyChannel = false;
|
||||
};
|
||||
|
||||
@@ -1,33 +1,35 @@
|
||||
{ lib, pkgs, ... }:
|
||||
{ ... }:
|
||||
{
|
||||
name = "swap-partition";
|
||||
|
||||
nodes.machine =
|
||||
{
|
||||
config,
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
{ config, ... }:
|
||||
{
|
||||
virtualisation.useDefaultFilesystems = false;
|
||||
|
||||
virtualisation.rootDevice = "/dev/vda1";
|
||||
|
||||
boot.initrd.postDeviceCommands = ''
|
||||
if ! test -b /dev/vda1; then
|
||||
${pkgs.parted}/bin/parted --script /dev/vda -- mklabel msdos
|
||||
${pkgs.parted}/bin/parted --script /dev/vda -- mkpart primary 1MiB -250MiB
|
||||
${pkgs.parted}/bin/parted --script /dev/vda -- mkpart primary -250MiB 100%
|
||||
sync
|
||||
fi
|
||||
|
||||
FSTYPE=$(blkid -o value -s TYPE /dev/vda1 || true)
|
||||
if test -z "$FSTYPE"; then
|
||||
${pkgs.e2fsprogs}/bin/mke2fs -t ext4 -L root /dev/vda1
|
||||
${pkgs.util-linux}/bin/mkswap --label swap /dev/vda2
|
||||
fi
|
||||
'';
|
||||
boot.initrd.systemd = {
|
||||
enable = true;
|
||||
repart = {
|
||||
enable = true;
|
||||
device = "/dev/vda";
|
||||
empty = "allow";
|
||||
};
|
||||
};
|
||||
systemd.repart.partitions = {
|
||||
"00-root" = {
|
||||
Type = "linux-generic";
|
||||
Format = "ext4";
|
||||
Label = "root";
|
||||
};
|
||||
"10-swap" = {
|
||||
Type = "linux-generic";
|
||||
Label = "swap";
|
||||
SizeMinBytes = "250M";
|
||||
SizeMaxBytes = "250M";
|
||||
};
|
||||
};
|
||||
|
||||
virtualisation.fileSystems = {
|
||||
"/" = {
|
||||
@@ -38,7 +40,8 @@
|
||||
|
||||
swapDevices = [
|
||||
{
|
||||
device = "/dev/disk/by-label/swap";
|
||||
device = "/dev/disk/by-partlabel/swap";
|
||||
options = [ "x-systemd.makefs" ];
|
||||
}
|
||||
];
|
||||
};
|
||||
|
||||
@@ -1,14 +1,9 @@
|
||||
{ lib, pkgs, ... }:
|
||||
{ ... }:
|
||||
{
|
||||
name = "swap-random-encryption";
|
||||
|
||||
nodes.machine =
|
||||
{
|
||||
config,
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
environment.systemPackages = [ pkgs.cryptsetup ];
|
||||
|
||||
@@ -16,19 +11,27 @@
|
||||
|
||||
virtualisation.rootDevice = "/dev/vda1";
|
||||
|
||||
boot.initrd.postDeviceCommands = ''
|
||||
if ! test -b /dev/vda1; then
|
||||
${pkgs.parted}/bin/parted --script /dev/vda -- mklabel msdos
|
||||
${pkgs.parted}/bin/parted --script /dev/vda -- mkpart primary 1MiB -250MiB
|
||||
${pkgs.parted}/bin/parted --script /dev/vda -- mkpart primary -250MiB 100%
|
||||
sync
|
||||
fi
|
||||
|
||||
FSTYPE=$(blkid -o value -s TYPE /dev/vda1 || true)
|
||||
if test -z "$FSTYPE"; then
|
||||
${pkgs.e2fsprogs}/bin/mke2fs -t ext4 -L root /dev/vda1
|
||||
fi
|
||||
'';
|
||||
boot.initrd.systemd = {
|
||||
enable = true;
|
||||
repart = {
|
||||
enable = true;
|
||||
device = "/dev/vda";
|
||||
empty = "allow";
|
||||
};
|
||||
};
|
||||
systemd.repart.partitions = {
|
||||
"00-root" = {
|
||||
Type = "linux-generic";
|
||||
Format = "ext4";
|
||||
Label = "root";
|
||||
};
|
||||
"10-swap" = {
|
||||
Type = "linux-generic";
|
||||
Label = "swap";
|
||||
SizeMinBytes = "250M";
|
||||
SizeMaxBytes = "250M";
|
||||
};
|
||||
};
|
||||
|
||||
virtualisation.fileSystems = {
|
||||
"/" = {
|
||||
@@ -39,7 +42,7 @@
|
||||
|
||||
swapDevices = [
|
||||
{
|
||||
device = "/dev/vda2";
|
||||
device = "/dev/disk/by-partlabel/swap";
|
||||
|
||||
randomEncryption = {
|
||||
enable = true;
|
||||
@@ -60,7 +63,7 @@
|
||||
|
||||
with subtest("Swap device has 4k sector size"):
|
||||
import json
|
||||
result = json.loads(machine.succeed("lsblk -Jo PHY-SEC,LOG-SEC /dev/mapper/dev-vda2"))
|
||||
result = json.loads(machine.succeed("lsblk -Jo PHY-SEC,LOG-SEC /dev/mapper/dev-disk-by\\x2dpartlabel-swap"))
|
||||
block_devices = result["blockdevices"]
|
||||
if len(block_devices) != 1:
|
||||
raise Exception ("lsblk output did not report exactly one block device")
|
||||
@@ -72,7 +75,7 @@
|
||||
with subtest("Swap encrypt has assigned cipher and keysize"):
|
||||
import re
|
||||
|
||||
results = machine.succeed("cryptsetup status dev-vda2").splitlines()
|
||||
results = machine.succeed("cryptsetup status dev-disk-by\\x2dpartlabel-swap").splitlines()
|
||||
|
||||
cipher_pattern = re.compile(r"\s*cipher:\s+aes-xts-plain64\s*")
|
||||
if not any(cipher_pattern.fullmatch(line) for line in results):
|
||||
|
||||
@@ -60,5 +60,10 @@ in
|
||||
machine.succeed("systemctl status example.service | grep 'Active: active'")
|
||||
|
||||
machine.succeed("systemctl show --property TasksMax --value user-1000.slice | grep 100")
|
||||
|
||||
with subtest("modprobe@ services work"):
|
||||
modprobe_service_status = machine.succeed("systemctl show --property ExecMainStatus modprobe@configfs.service")
|
||||
print(modprobe_service_status)
|
||||
t.assertEqual("ExecMainStatus=0\n", modprobe_service_status)
|
||||
'';
|
||||
}
|
||||
|
||||
@@ -11,8 +11,6 @@ in
|
||||
name = "systemd-shutdown";
|
||||
meta.maintainers = with lib.maintainers; [ das_j ];
|
||||
|
||||
_module.args.systemdStage1 = lib.mkDefault false;
|
||||
|
||||
nodes.machine = {
|
||||
imports = [ ../modules/profiles/minimal.nix ];
|
||||
systemd.shutdownRamfs.contents."/etc/systemd/system-shutdown/shutdown-message".source =
|
||||
|
||||
@@ -34,6 +34,6 @@ pythonPackages.buildPythonApplication (finalAttrs: {
|
||||
homepage = "https://github.com/dirkgroenen/mopidy-mopify";
|
||||
description = "Mopidy webclient based on the Spotify webbased interface";
|
||||
license = lib.licenses.gpl3;
|
||||
maintainers = [ lib.maintainers.Gonzih ];
|
||||
maintainers = [ ];
|
||||
};
|
||||
})
|
||||
|
||||
@@ -68,8 +68,7 @@ buildGoModule rec {
|
||||
downloadPage = "https://github.com/linkerd/linkerd2/";
|
||||
homepage = "https://linkerd.io/";
|
||||
license = lib.licenses.asl20;
|
||||
maintainers = with lib.maintainers; [
|
||||
Gonzih
|
||||
maintainers = [
|
||||
];
|
||||
};
|
||||
}
|
||||
|
||||
@@ -30,6 +30,6 @@ buildGoModule (finalAttrs: {
|
||||
mainProgram = "air";
|
||||
homepage = "https://github.com/air-verse/air";
|
||||
license = lib.licenses.gpl3Only;
|
||||
maintainers = with lib.maintainers; [ Gonzih ];
|
||||
maintainers = [ ];
|
||||
};
|
||||
})
|
||||
|
||||
@@ -7,16 +7,16 @@
|
||||
|
||||
buildNpmPackage rec {
|
||||
pname = "all-the-package-names";
|
||||
version = "2.0.2405";
|
||||
version = "2.0.2413";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "nice-registry";
|
||||
repo = "all-the-package-names";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-dimap7vybYHNGSAWn6K8uMUMymrV8Ek5Vc27bbJo22w=";
|
||||
hash = "sha256-loI9wKz0EcePvM2kXqmxNx9rfC/VaMCmJtm0dTjWoOk=";
|
||||
};
|
||||
|
||||
npmDepsHash = "sha256-13u+UoTckxKAmthuaxOCaGSW4BaAgWaz6/4dBcO+3VI=";
|
||||
npmDepsHash = "sha256-6XLDdamRG+IVq/zdyKKlIsnfUVD8pKES7K7hm+yTQ78=";
|
||||
|
||||
passthru.updateScript = nix-update-script { };
|
||||
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
{ fetchFromGitHub }:
|
||||
rec {
|
||||
pname = "authelia";
|
||||
version = "4.39.12";
|
||||
version = "4.39.18";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "authelia";
|
||||
repo = "authelia";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-u7TIhOGXfvWdAXvpL5qa43jaoa7PNAVL2MtGEuWBDPc=";
|
||||
hash = "sha256-IROdncF3TC1X9000jw0RGtrcFrzqRpG7g2QuLGQ/Q4k=";
|
||||
};
|
||||
vendorHash = "sha256-7RoPv4OvOhiv+TmYOJuW95h/uh2LuTrpUSAZiTvbh7g=";
|
||||
pnpmDepsHash = "sha256-Ck2nqFwDv3OxN0ONA3A+h4Rli1te+EYqKivcqrAInKw=";
|
||||
vendorHash = "sha256-ZDsLRMip2B8PPZu8VxW+91FVvwC2rXzohhAZFifT26g=";
|
||||
pnpmDepsHash = "sha256-ki/jXNT9dIno1UIcDgBcsLdiKcaiw/dwnff3t9xv07o=";
|
||||
}
|
||||
|
||||
@@ -40,8 +40,12 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
NL=$'\n'
|
||||
LINE_BEFORE_HOST='allowedHosts: ["login.example.com", ...allowedHosts],'
|
||||
|
||||
substituteInPlace ./vite.config.ts \
|
||||
--replace 'outDir: "../internal/server/public_html"' 'outDir: "dist"'
|
||||
--replace-fail 'outDir: "../internal/server/public_html"' 'outDir: "dist"' \
|
||||
--replace-fail "$LINE_BEFORE_HOST" "$LINE_BEFORE_HOST$NL"' host: "127.0.0.1",'
|
||||
'';
|
||||
|
||||
postBuild = ''
|
||||
|
||||
@@ -9,20 +9,20 @@
|
||||
}:
|
||||
|
||||
let
|
||||
version = "2026.3.1";
|
||||
version = "2026.3.2";
|
||||
|
||||
product =
|
||||
if proEdition then
|
||||
{
|
||||
productName = "pro";
|
||||
productDesktop = "Burp Suite Professional Edition";
|
||||
hash = "sha256-jRVRvqFRsRO+vbEoV35bX4vi9XEYl737L0umt61ACtk=";
|
||||
hash = "sha256-oZGSP19ejP9amfXV89kNDQwxLekZCs7oGKaX/DDHSZM=";
|
||||
}
|
||||
else
|
||||
{
|
||||
productName = "community";
|
||||
productDesktop = "Burp Suite Community Edition";
|
||||
hash = "sha256-wjXzFXE+cIHw8tXuitsN4emH5varOTWQxiohwFGKZvc=";
|
||||
hash = "sha256-PuV5XmgdBBkfPS0pc3xENtTUPMpemyHDDOTLVux24Xs=";
|
||||
};
|
||||
|
||||
src = fetchurl {
|
||||
|
||||
@@ -11,14 +11,14 @@
|
||||
|
||||
python3Packages.buildPythonApplication (finalAttrs: {
|
||||
pname = "clickable";
|
||||
version = "8.7.0";
|
||||
version = "8.8.0";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitLab {
|
||||
owner = "clickable";
|
||||
repo = "clickable";
|
||||
rev = "v${finalAttrs.version}";
|
||||
hash = "sha256-W6NPZ5uP7wGjgyA+Nv2vpmshKWny2CCSrn/Gaoi7Pr4=";
|
||||
hash = "sha256-EEICNL5ydrtep+Lbo9ryKW3+vcJwQxPeXY/C4bZaAnI=";
|
||||
};
|
||||
|
||||
__structuredAttrs = true;
|
||||
|
||||
@@ -4,11 +4,11 @@
|
||||
"sources": {
|
||||
"x86_64-linux": {
|
||||
"url": "https://downloads.cursor.com/production/475871d112608994deb2e3065dfb7c6b0baa0c54/linux/x64/Cursor-3.0.16-x86_64.AppImage",
|
||||
"hash": "sha256-/kBlLvaF3/7WSEI6ika6opgUVDQVo7vLVLsgG8htEpk="
|
||||
"hash": "sha256-dN8tFSppIpO/P0Thst5uaNzlmfWZDh0Y81Lx1BuSYt0="
|
||||
},
|
||||
"aarch64-linux": {
|
||||
"url": "https://downloads.cursor.com/production/475871d112608994deb2e3065dfb7c6b0baa0c54/linux/arm64/Cursor-3.0.16-aarch64.AppImage",
|
||||
"hash": "sha256-tG75z9SPVaH6cgN75XW1ZKRyj689Yd97cbQZSvQtPrA="
|
||||
"hash": "sha256-AJwCzST0fj8fjSVeK15uE50XWGIOLOwn4gRRB733eLg="
|
||||
},
|
||||
"x86_64-darwin": {
|
||||
"url": "https://downloads.cursor.com/production/475871d112608994deb2e3065dfb7c6b0baa0c54/darwin/x64/Cursor-darwin-x64.dmg",
|
||||
|
||||
@@ -6,16 +6,16 @@
|
||||
|
||||
rustPlatform.buildRustPackage (finalAttrs: {
|
||||
pname = "complgen";
|
||||
version = "0.8.3";
|
||||
version = "0.9.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "adaszko";
|
||||
repo = "complgen";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-z4jR2evvC0p306UeULroCLwaa7sjYUh7ENWp17FolAw=";
|
||||
hash = "sha256-izIPX493EBqDgS58asiwFHF8XMNjVaFpXkOyiBb2688=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-VhfIUP9NjsgoJ0qNUFwWdaZpWAWzSlmVgPI8kNeFVgM=";
|
||||
cargoHash = "sha256-S1nt28qpgTy3mQN8wh/Nai6H/mq5eR09s7jRgGaFLkA=";
|
||||
|
||||
meta = {
|
||||
changelog = "https://github.com/adaszko/complgen/blob/v${finalAttrs.version}/CHANGELOG.md";
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
|
||||
stdenvNoCC.mkDerivation (finalAttrs: {
|
||||
pname = "dbeaver-bin";
|
||||
version = "26.0.1";
|
||||
version = "26.0.2";
|
||||
|
||||
src =
|
||||
let
|
||||
@@ -32,10 +32,10 @@ stdenvNoCC.mkDerivation (finalAttrs: {
|
||||
aarch64-darwin = "macos-aarch64.dmg";
|
||||
};
|
||||
hash = selectSystem {
|
||||
x86_64-linux = "sha256-tmT62M2NvvSsBWKbRT0iTVdQVuBuPsDuDBtVtr7FKPU=";
|
||||
aarch64-linux = "sha256-WL7pO0l5TZEl2Ur8Qiqw/5ZAKR4iaoN8yxpG7wtPmds=";
|
||||
x86_64-darwin = "sha256-vg3zi39kWfPqxhKtUv2WixJMqejgDLIuVQ26Jyrtl9c=";
|
||||
aarch64-darwin = "sha256-jNwcIKmOCI75h0Ul/oARm2S1UzUUw2GflHdwA7d+3nU=";
|
||||
x86_64-linux = "sha256-qAjGYm164/teNcNxZwMNtBNKUOAd/7EjJMk1DtQKGFA=";
|
||||
aarch64-linux = "sha256-tMCMRMNA1sQprDouHtRKPAE1CHWRII2/p05UqVaPcpE=";
|
||||
x86_64-darwin = "sha256-2hSrJhlvFr/5AK9VCXU/hZke9oHgde50ng0pEAXV63Y=";
|
||||
aarch64-darwin = "sha256-YADZ7ttETfs+3HC045eHntLj1x8GREw027GGDSGIeDw=";
|
||||
};
|
||||
in
|
||||
fetchurl {
|
||||
|
||||
@@ -32,7 +32,6 @@ python3Packages.buildPythonApplication (finalAttrs: {
|
||||
license = lib.licenses.mit;
|
||||
mainProgram = "doge";
|
||||
maintainers = with lib.maintainers; [
|
||||
Gonzih
|
||||
quantenzitrone
|
||||
];
|
||||
};
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
diff --git a/src/gtkport/itemfactory.c b/src/gtkport/itemfactory.c
|
||||
index b7a8c3f..980682c 100644
|
||||
--- a/src/gtkport/itemfactory.c
|
||||
+++ b/src/gtkport/itemfactory.c
|
||||
@@ -217,7 +217,7 @@ void dp_gtk_item_factory_create_item(DPGtkItemFactory *ifactory,
|
||||
new_child->widget = menu_item;
|
||||
if (entry->callback) {
|
||||
g_signal_connect(G_OBJECT(menu_item), "activate",
|
||||
- entry->callback, callback_data);
|
||||
+ G_CALLBACK(entry->callback), callback_data);
|
||||
}
|
||||
|
||||
if (parent) {
|
||||
diff --git a/src/gtkport/itemfactory.h b/src/gtkport/itemfactory.h
|
||||
index a1d5b1d..2702595 100644
|
||||
--- a/src/gtkport/itemfactory.h
|
||||
+++ b/src/gtkport/itemfactory.h
|
||||
@@ -59,7 +59,7 @@ GtkItemFactory *dp_gtk_item_factory_new(const gchar *path,
|
||||
|
||||
typedef gchar *(*DPGtkTranslateFunc) (const gchar *path, gpointer func_data);
|
||||
|
||||
-typedef void (*DPGtkItemFactoryCallback) ();
|
||||
+typedef void (*DPGtkItemFactoryCallback) (GtkWidget *widget, gpointer data);
|
||||
|
||||
typedef struct _DPGtkItemFactoryEntry DPGtkItemFactoryEntry;
|
||||
typedef struct _DPGtkItemFactory DPGtkItemFactory;
|
||||
@@ -34,8 +34,12 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
ncurses
|
||||
];
|
||||
|
||||
# remove the denied setting of setuid bit permission
|
||||
patches = [ ./0001-remove_setuid.patch ];
|
||||
patches = [
|
||||
# remove the denied setting of setuid bit permission
|
||||
./0001-remove_setuid.patch
|
||||
# fix compilation errors with gcc15
|
||||
./0002-fix_gcc15.patch
|
||||
];
|
||||
|
||||
# run dopewars with -f so that it finds its scoreboard file in ~/.local/share
|
||||
postInstall = ''
|
||||
|
||||
@@ -11,11 +11,11 @@ proton-ge-bin.overrideAttrs (
|
||||
inherit steamDisplayName;
|
||||
|
||||
pname = "dwproton-bin";
|
||||
version = "dwproton-10.0-22";
|
||||
version = "dwproton-10.0-23";
|
||||
|
||||
src = fetchzip {
|
||||
url = "https://dawn.wine/dawn-winery/dwproton/releases/download/${finalAttrs.version}/${finalAttrs.version}-x86_64.tar.xz";
|
||||
hash = "sha256-U/lLAF/WUxHInBgAt7YuDUM/eGGSv7mkjAACr15iW/0=";
|
||||
hash = "sha256-XqXXxsTekvTUNsykpWu4vbZ4Mi+2tMR57zngaOt+3gQ=";
|
||||
};
|
||||
|
||||
passthru.updateScript = writeScript "update-dwproton" ''
|
||||
|
||||
@@ -8,15 +8,15 @@
|
||||
|
||||
let
|
||||
pname = "everest";
|
||||
version = "6194";
|
||||
version = "6249";
|
||||
phome = "$out/lib/Celeste";
|
||||
in
|
||||
stdenvNoCC.mkDerivation {
|
||||
inherit pname version;
|
||||
src = fetchzip {
|
||||
url = "https://github.com/EverestAPI/Everest/releases/download/stable-1.6194.0/main.zip";
|
||||
url = "https://github.com/EverestAPI/Everest/releases/download/stable-1.6249.0/main.zip";
|
||||
extension = "zip";
|
||||
hash = "sha256-Ja/b/5kKekBZZbqp0o2I8dvtiQ/rRa2kS6Q+08yBX7I=";
|
||||
hash = "sha256-xcWscldogSI7vmljg8uU0zV8gREVe5rLHj0l6X+0z9E=";
|
||||
};
|
||||
buildInputs = [
|
||||
icu
|
||||
|
||||
@@ -11,8 +11,8 @@
|
||||
|
||||
let
|
||||
pname = "everest";
|
||||
version = "6194";
|
||||
rev = "5adc0e7ae6087ba90f9dd1cad487cf4dde1d493b";
|
||||
version = "6249";
|
||||
rev = "201a0dc2e0851f2bc601ed48cc1a64b17952e5ea";
|
||||
phome = "$out/lib/Celeste";
|
||||
in
|
||||
buildDotnetModule {
|
||||
@@ -25,7 +25,7 @@ buildDotnetModule {
|
||||
fetchSubmodules = true;
|
||||
# TODO: use leaveDotGit = true and modify external/MonoMod in postFetch to please SourceLink
|
||||
# Microsoft.SourceLink.Common.targets(53,5): warning : Source control information is not available - the generated source link is empty.
|
||||
hash = "sha256-GG3cxrMZRSHoUzewHEQvljXSgHWcF9GNunlyWbiKrQo=";
|
||||
hash = "sha256-ISCL6C1Zj18fMsfBAte9cqAWCA6/4eewKmefYmTm2uA=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ autoPatchelfHook ];
|
||||
|
||||
@@ -30,13 +30,13 @@ let
|
||||
in
|
||||
buildDotnetModule (finalAttrs: {
|
||||
pname = "famistudio";
|
||||
version = "4.4.4";
|
||||
version = "4.5.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "BleuBleu";
|
||||
repo = "FamiStudio";
|
||||
tag = finalAttrs.version;
|
||||
hash = "sha256-hYJ82EXR1kP8hzUj+CCXnGuohVzyA1O9TBpWjRccj9Y=";
|
||||
hash = "sha256-Yvbb8f3bFnSiC6AcYuczwPZhU7FZpqpB9YEd52brXtw=";
|
||||
};
|
||||
|
||||
postPatch =
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
lib,
|
||||
fetchFromGitHub,
|
||||
fetchFromCodeberg,
|
||||
nix-update-script,
|
||||
yt-dlp,
|
||||
python3Packages,
|
||||
@@ -8,14 +8,14 @@
|
||||
|
||||
python3Packages.buildPythonApplication (finalAttrs: {
|
||||
pname = "gallery-dl";
|
||||
version = "1.31.9";
|
||||
version = "1.31.10";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
src = fetchFromCodeberg {
|
||||
owner = "mikf";
|
||||
repo = "gallery-dl";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-Dq4SSj78CEZ4hq3jCgzcJK/+KPgn7h52HMfFNDQXQPY=";
|
||||
hash = "sha256-npt9jbBBHgjURmayhNgkSTQZYLC1aysDR83dLOm2Z/s=";
|
||||
};
|
||||
|
||||
build-system = [ python3Packages.setuptools ];
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "gmobile";
|
||||
version = "0.6.0";
|
||||
version = "0.7.0";
|
||||
|
||||
src = fetchFromGitLab {
|
||||
domain = "gitlab.gnome.org";
|
||||
@@ -25,7 +25,7 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
owner = "Phosh";
|
||||
repo = "gmobile";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-+IRKGkqDgSRAWbK30R2eGA3mI393ARdzYNKBA75AyyY=";
|
||||
hash = "sha256-zAF/9FQwpb6xiKRqfhWI/3lBwiDOEDu+TNkIJpEdbYY=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
||||
@@ -8,20 +8,20 @@
|
||||
|
||||
buildGoModule (finalAttrs: {
|
||||
pname = "gotools";
|
||||
version = "0.34.0";
|
||||
version = "0.44.0";
|
||||
|
||||
# using GitHub instead of https://go.googlesource.com/tools because Gitiles UI is too basic to browse
|
||||
src = fetchFromGitHub {
|
||||
owner = "golang";
|
||||
repo = "tools";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-C+P2JoD4NzSAkAQuA20bVrfLZrMHXekvXn8KPOM5Nj4=";
|
||||
hash = "sha256-F9DyZAZdrKCrCIB6FZP0KrOwPNRLk0ZQoNMHGMHd0UY=";
|
||||
};
|
||||
|
||||
allowGoReference = true;
|
||||
doCheck = false;
|
||||
|
||||
vendorHash = "sha256-UZNYHx5y+kRp3AJq6s4Wy+k789GDG7FBTSzCTorVjgg=";
|
||||
vendorHash = "sha256-HpWkPsRJ0vCqJi9LoZcVbzeoPQ2B9ftZwuS1r47W7Sc=";
|
||||
|
||||
nativeBuildInputs = [ makeWrapper ];
|
||||
|
||||
@@ -29,8 +29,6 @@ buildGoModule (finalAttrs: {
|
||||
# The gopls folder contains a Go submodule which causes a build failure
|
||||
# and lives in its own package named gopls.
|
||||
rm -r gopls
|
||||
# cmd/auth folder is similar and is scheduled to be removed https://github.com/golang/go/issues/70872
|
||||
rm -r cmd/auth
|
||||
'';
|
||||
|
||||
# Set GOTOOLDIR for derivations adding this to buildInputs
|
||||
|
||||
@@ -21,18 +21,18 @@
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "hieroglyphic";
|
||||
version = "2.2.0";
|
||||
version = "2.3.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "FineFindus";
|
||||
repo = "Hieroglyphic";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-mqoYdHpVnivDTblvoaACyCE7Y25cfLj1m0Q5D33zEfk=";
|
||||
hash = "sha256-uCzxv3jyBIFXYoEk2q26rB0Me3MAt1NiINulA1FjQtA=";
|
||||
};
|
||||
|
||||
cargoDeps = rustPlatform.fetchCargoVendor {
|
||||
inherit (finalAttrs) pname version src;
|
||||
hash = "sha256-kArrsHW+cFZQQgIEL+7Os8ixKtuIZAByEr6D4XDmfRE=";
|
||||
hash = "sha256-vqTySi22Gi4WrkNolAIFFbpSmIzjgbIcmW0gkStK6H4=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
@@ -51,12 +51,14 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
glib
|
||||
gtk4
|
||||
libadwaita
|
||||
onnxruntime
|
||||
openssl
|
||||
];
|
||||
|
||||
env = {
|
||||
ORT_STRATEGY = "system";
|
||||
ORT_LIB_LOCATION = "${lib.getLib onnxruntime}/lib";
|
||||
ORT_PREFER_DYNAMIC_LINK = "1";
|
||||
};
|
||||
|
||||
passthru = {
|
||||
|
||||
@@ -27,21 +27,27 @@
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "identity";
|
||||
version = "25.10.1";
|
||||
version = "26.03";
|
||||
|
||||
src = fetchFromGitLab {
|
||||
domain = "gitlab.gnome.org";
|
||||
owner = "YaLTeR";
|
||||
repo = "identity";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-ThccOze4BkqAprk1Yt+Ughts0DFbBwLDYd4iE8ZMwxo=";
|
||||
hash = "sha256-CVSUk0xhfsMM47L0BVQj69Jw2MhsElBI3mxETCWBqcU=";
|
||||
};
|
||||
|
||||
cargoDeps = rustPlatform.fetchCargoVendor {
|
||||
inherit (finalAttrs) pname version src;
|
||||
hash = "sha256-Do+20wh9F8xE+fA9Sg+8uyRojOF7Ih4taL/pZszU6xc=";
|
||||
hash = "sha256-AuIAfk6BipUHkIfRiLJf0tjadVxsEIKKvpZgKA11oJE=";
|
||||
};
|
||||
|
||||
# The crate can't find our provided gstreamer-gl-egl-1.0.pc in the PKG_CONFIG_PATH otherwise.
|
||||
postPatch = ''
|
||||
substituteInPlace $cargoDepsCopy/*/gstreamer-gl-egl-sys-*/Cargo.toml \
|
||||
--replace-fail 'gstreamer-gl-egl-1.0' 'gstreamer-gl-1.0'
|
||||
'';
|
||||
|
||||
strictDeps = true;
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
||||
@@ -13,16 +13,16 @@
|
||||
|
||||
rustPlatform.buildRustPackage (finalAttrs: {
|
||||
pname = "jellyfin-tui";
|
||||
version = "1.4.1";
|
||||
version = "1.4.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "dhonus";
|
||||
repo = "jellyfin-tui";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-dJbCMIKxDEht2Fgor2VsTyDvmhFxi5K22nTRMM1KOu0=";
|
||||
hash = "sha256-GumYBQkdTNR+sfEY0l5xHjtFM9Z9sn/2H+yVzC0MEe4=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-b47arb13oXnulUZB58Cj0v0Qu+IygYlInbBQeeLXYP0=";
|
||||
cargoHash = "sha256-1FUmCACPm9TaURMLXrNODnVtx8FQ6FeAkwF2ucgezhk=";
|
||||
|
||||
nativeBuildInputs = [ pkg-config ];
|
||||
buildInputs = [
|
||||
|
||||
@@ -34,13 +34,13 @@ let
|
||||
in
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "justbuild";
|
||||
version = "1.6.4";
|
||||
version = "1.6.5";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "just-buildsystem";
|
||||
repo = "justbuild";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-WJg6zDgDKJjxbR7fdFUY6f2uNHntYPZT8lIt2kAJqAo=";
|
||||
hash = "sha256-aeBIgbjSD9iVhwtkOOs63Xrpn8OshoABtOZhrjn3/jw=";
|
||||
};
|
||||
|
||||
bazelapi = fetchurl {
|
||||
|
||||
@@ -73,7 +73,6 @@ buildGoModule (finalAttrs: {
|
||||
license = lib.licenses.asl20;
|
||||
mainProgram = "k9s";
|
||||
maintainers = with lib.maintainers; [
|
||||
Gonzih
|
||||
markus1189
|
||||
qjoly
|
||||
devusb
|
||||
|
||||
@@ -39,6 +39,7 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
};
|
||||
|
||||
strictDeps = true;
|
||||
__structuredAttrs = true;
|
||||
|
||||
depsBuildBuild = [
|
||||
buildPackages.stdenv.cc
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "libgedit-gfls";
|
||||
version = "0.4.0";
|
||||
version = "0.4.1";
|
||||
|
||||
outputs = [
|
||||
"out"
|
||||
@@ -31,7 +31,7 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
repo = "libgedit-gfls";
|
||||
tag = finalAttrs.version;
|
||||
forceFetchGit = true; # To avoid occasional 501 failures.
|
||||
hash = "sha256-VzQ58XD5Yfy+gv77yTVoYHhooz2pfAV0huJI023s8ew=";
|
||||
hash = "sha256-61jq7tcAAzYuhKM4OlH/GniGTfiWg/Pcznb03+vaLvw=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
||||
@@ -21,13 +21,18 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
hash = "sha256-AKwS088lP3dByKh3dQRW76+L6ouD8EmVms2qWIC5IiE=";
|
||||
};
|
||||
|
||||
buildInputs = [ libxkbcommon ];
|
||||
strictDeps = true;
|
||||
__structuredAttrs = true;
|
||||
|
||||
buildInputs = [
|
||||
libxkbcommon
|
||||
check
|
||||
];
|
||||
|
||||
nativeBuildInputs = [
|
||||
meson
|
||||
ninja
|
||||
pkg-config
|
||||
check
|
||||
];
|
||||
|
||||
passthru.updateScript = nix-update-script { extraArgs = [ "--use-github-releases" ]; };
|
||||
|
||||
@@ -47,14 +47,14 @@ in
|
||||
# as bootloader for various platforms and corresponding binary and helper files.
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "limine";
|
||||
version = "11.2.1";
|
||||
version = "11.3.1";
|
||||
|
||||
# We don't use the Git source but the release tarball, as the source has a
|
||||
# `./bootstrap` script performing network access to download resources.
|
||||
# Packaging that in Nix is very cumbersome.
|
||||
src = fetchurl {
|
||||
url = "https://codeberg.org/Limine/Limine/releases/download/v${finalAttrs.version}/limine-${finalAttrs.version}.tar.gz";
|
||||
hash = "sha256-HQq4hrjuITQY9ia1z4pKid81+WfX9CGUUSQUfvBPPgE=";
|
||||
url = "https://github.com/Limine-Bootloader/Limine/releases/download/v${finalAttrs.version}/limine-${finalAttrs.version}.tar.gz";
|
||||
hash = "sha256-7vst33RyAn6q0tJNLvmrEigVFM+exUaj46dZ3y2GVOc=";
|
||||
};
|
||||
|
||||
enableParallelBuilding = true;
|
||||
@@ -93,7 +93,7 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
|
||||
meta = {
|
||||
homepage = "https://limine-bootloader.org/";
|
||||
changelog = "https://codeberg.org/Limine/Limine/raw/tag/v${finalAttrs.version}/ChangeLog";
|
||||
changelog = "https://github.com/Limine-Bootloader/Limine/raw/refs/tags/v${finalAttrs.version}/ChangeLog";
|
||||
description = "Limine Bootloader";
|
||||
mainProgram = "limine";
|
||||
# The platforms on that the Limine binary and helper tools can run, not
|
||||
|
||||
@@ -10,11 +10,11 @@
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "maestro";
|
||||
version = "2.3.0";
|
||||
version = "2.4.0";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/mobile-dev-inc/maestro/releases/download/cli-${finalAttrs.version}/maestro.zip";
|
||||
hash = "sha256-qvUkxrzUVgE4VbEzdGT5ZNmmXi+4iGGv/qm0wBRkTlA=";
|
||||
hash = "sha256-rqIs5nq2cYmX7JkMWGUu3gwr6PEKxHmQOco9zjOQ1jQ=";
|
||||
};
|
||||
|
||||
dontUnpack = true;
|
||||
|
||||
@@ -25,16 +25,16 @@ let
|
||||
in
|
||||
rustPlatform.buildRustPackage (finalAttrs: {
|
||||
pname = "motrix-next";
|
||||
version = "3.6.3";
|
||||
version = "3.6.8";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "AnInsomniacy";
|
||||
repo = "motrix-next";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-u4t/QIRFDuvGPA4+p4OuS6tDnU6+ZmEJSfOYIh//NaQ=";
|
||||
hash = "sha256-nn1YivQ7UCRpWnWa2w0F06n6bQrMJ1d8Gb84hY6K5WE=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-WcYXb5UF4mhahYQ5Jomsph+UHWqa+3cjRQdJyydw7oY=";
|
||||
cargoHash = "sha256-mrzyIvHlfs3epOm3ZKPetmJOCKpZdHlfosOP7iLlu1k=";
|
||||
|
||||
pnpmDeps = fetchPnpmDeps {
|
||||
inherit (finalAttrs)
|
||||
@@ -84,7 +84,7 @@ rustPlatform.buildRustPackage (finalAttrs: {
|
||||
src-tauri/tauri.conf.json | sponge src-tauri/tauri.conf.json
|
||||
'';
|
||||
|
||||
preFixup = lib.optionalString stdenv.hostPlatform.isLinux ''
|
||||
postFixup = lib.optionalString stdenv.hostPlatform.isLinux ''
|
||||
gappsWrapperArgs+=(
|
||||
--prefix LD_LIBRARY_PATH : ${
|
||||
lib.makeLibraryPath [
|
||||
|
||||
@@ -14,13 +14,13 @@ let
|
||||
in
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "odiff";
|
||||
version = "4.3.2";
|
||||
version = "4.3.3";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "dmtrKovalenko";
|
||||
repo = "odiff";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-gCF+CInczBJfDyZgxEQor5C/OSxKciCu9gbZanaE/nA=";
|
||||
hash = "sha256-5x03mpqBllfEVBGMspcC/ljC6PrSXQgU2j+eKfHu6PM=";
|
||||
};
|
||||
|
||||
postConfigure = ''
|
||||
|
||||
@@ -8,13 +8,13 @@
|
||||
|
||||
buildNpmPackage rec {
|
||||
pname = "opencommit";
|
||||
version = "3.2.14";
|
||||
version = "3.2.18";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "di-sukharev";
|
||||
repo = "opencommit";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-FA4ER8UDxDy/KcGgUu4xqjQnV17ouKt/QWUcrwjtb/s=";
|
||||
hash = "sha256-AhybkTAUojFPuw8RETGHoxDCWXcgb1zclfvh2h7bokM=";
|
||||
postFetch = ''
|
||||
cd $out
|
||||
# Fix lockfile issues with bundled dependencies
|
||||
@@ -22,7 +22,7 @@ buildNpmPackage rec {
|
||||
'';
|
||||
};
|
||||
|
||||
npmDepsHash = "sha256-gxjJoodnKE08bhOnA5r6A0UQg8ElB693Vm2BVrA2Z0k=";
|
||||
npmDepsHash = "sha256-Kk0sPgxkWvbjGT8I3RDeniGN+8sQkwNYAXCTt009LbY=";
|
||||
|
||||
passthru.updateScript = nix-update-script { };
|
||||
|
||||
|
||||
@@ -0,0 +1,69 @@
|
||||
{
|
||||
stdenv,
|
||||
lib,
|
||||
fetchFromGitHub,
|
||||
dos2unix,
|
||||
cmake,
|
||||
pkg-config,
|
||||
libsForQt5,
|
||||
rtaudio,
|
||||
rtmidi,
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "opl3bankeditor";
|
||||
version = "1.5.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "Wohlstand";
|
||||
repo = "opl3bankeditor";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-So9g+BDgTvJnEK4DIweEaJoK4uOmmSmyiIfV12lfeSI=";
|
||||
};
|
||||
|
||||
prePatch = ''
|
||||
dos2unix CMakeLists.txt
|
||||
'';
|
||||
|
||||
patches = [
|
||||
./0001-opl3bankeditor-Look-for-system-installed-Rt-libs.patch
|
||||
];
|
||||
|
||||
nativeBuildInputs = [
|
||||
dos2unix
|
||||
cmake
|
||||
pkg-config
|
||||
libsForQt5.qttools
|
||||
libsForQt5.wrapQtAppsHook
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
libsForQt5.qtbase
|
||||
libsForQt5.qwt6_1
|
||||
rtaudio
|
||||
rtmidi
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
substituteInPlace CMakeLists.txt \
|
||||
--replace-fail "cmake_minimum_required(VERSION 3.2)" "cmake_minimum_required(VERSION 3.10)"
|
||||
'';
|
||||
|
||||
postInstall = lib.optionalString stdenv.hostPlatform.isDarwin ''
|
||||
mkdir $out/{bin,Applications}
|
||||
mv "OPL3 Bank Editor.app" $out/Applications/
|
||||
|
||||
install_name_tool -change {,${libsForQt5.qwt6_1}/lib/}libqwt.6.dylib "$out/Applications/OPL3 Bank Editor.app/Contents/MacOS/OPL3 Bank Editor"
|
||||
|
||||
ln -s "$out/Applications/OPL3 Bank Editor.app/Contents/MacOS/OPL3 Bank Editor" $out/bin/opl3_bank_editor
|
||||
'';
|
||||
|
||||
meta = {
|
||||
mainProgram = "opl3_bank_editor";
|
||||
description = "Small cross-platform editor of the OPL3 FM banks of different formats";
|
||||
homepage = "https://github.com/Wohlstand/opl3bankeditor";
|
||||
license = lib.licenses.gpl3Plus;
|
||||
platforms = lib.platforms.all;
|
||||
maintainers = with lib.maintainers; [ OPNA2608 ];
|
||||
};
|
||||
})
|
||||
@@ -0,0 +1,69 @@
|
||||
{
|
||||
stdenv,
|
||||
lib,
|
||||
fetchFromGitHub,
|
||||
dos2unix,
|
||||
cmake,
|
||||
pkg-config,
|
||||
libsForQt5,
|
||||
rtaudio,
|
||||
rtmidi,
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "opn2bankeditor";
|
||||
version = "1.3";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "Wohlstand";
|
||||
repo = "opn2bankeditor";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-YigxCgGIjOrwDxNgcIwiW8d3qHlDyA7o0vUUb5SpKlo=";
|
||||
};
|
||||
|
||||
prePatch = ''
|
||||
dos2unix CMakeLists.txt
|
||||
'';
|
||||
|
||||
patches = [
|
||||
./0001-opn2bankeditor-Look-for-system-installed-Rt-libs.patch
|
||||
];
|
||||
|
||||
nativeBuildInputs = [
|
||||
dos2unix
|
||||
cmake
|
||||
pkg-config
|
||||
libsForQt5.qttools
|
||||
libsForQt5.wrapQtAppsHook
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
libsForQt5.qtbase
|
||||
libsForQt5.qwt6_1
|
||||
rtaudio
|
||||
rtmidi
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
substituteInPlace CMakeLists.txt \
|
||||
--replace-fail "cmake_minimum_required(VERSION 3.2)" "cmake_minimum_required(VERSION 3.10)"
|
||||
'';
|
||||
|
||||
postInstall = lib.optionalString stdenv.hostPlatform.isDarwin ''
|
||||
mkdir $out/{bin,Applications}
|
||||
mv "OPN2 Bank Editor.app" $out/Applications/
|
||||
|
||||
install_name_tool -change {,${libsForQt5.qwt6_1}/lib/}libqwt.6.dylib "$out/Applications/OPN2 Bank Editor.app/Contents/MacOS/OPN2 Bank Editor"
|
||||
|
||||
ln -s "$out/Applications/OPN2 Bank Editor.app/Contents/MacOS/OPN2 Bank Editor" $out/bin/opn2_bank_editor
|
||||
'';
|
||||
|
||||
meta = {
|
||||
mainProgram = "opn2_bank_editor";
|
||||
description = "Small cross-platform editor of the OPN2 FM banks of different formats";
|
||||
homepage = "https://github.com/Wohlstand/opn2bankeditor";
|
||||
license = lib.licenses.gpl3Plus;
|
||||
platforms = lib.platforms.all;
|
||||
maintainers = with lib.maintainers; [ OPNA2608 ];
|
||||
};
|
||||
})
|
||||
@@ -15,14 +15,14 @@
|
||||
|
||||
python3Packages.buildPythonApplication rec {
|
||||
pname = "pmbootstrap";
|
||||
version = "3.9.0";
|
||||
version = "3.10.1";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitLab {
|
||||
owner = "postmarketOS";
|
||||
repo = "pmbootstrap";
|
||||
tag = version;
|
||||
hash = "sha256-eDngGcHNfxphshNyIoRC4NZA4KUBHSJjshsGaNp8Uw0=";
|
||||
hash = "sha256-d/yxnEDB50iM2HBxHS4IifNsW8pxYZHYXvi3eF8LvCI=";
|
||||
domain = "gitlab.postmarketos.org";
|
||||
};
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
makeBinaryWrapper,
|
||||
copyDesktopItems,
|
||||
electron_41,
|
||||
nodejs,
|
||||
nodejs_24,
|
||||
pnpm_10_29_2,
|
||||
fetchPnpmDeps,
|
||||
pnpmConfigHook,
|
||||
@@ -21,6 +21,8 @@
|
||||
}:
|
||||
|
||||
let
|
||||
nodejs = nodejs_24;
|
||||
pnpm = pnpm_10_29_2.override { inherit nodejs; };
|
||||
electron = electron_41;
|
||||
appName = "Podman Desktop";
|
||||
in
|
||||
@@ -43,8 +45,15 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
};
|
||||
text = ''
|
||||
new_src="$(nix-build --attr "pkgs.$PNAME.src" --no-out-link)"
|
||||
new_electron_major="$(jq '.devDependencies.electron' "$new_src/package.json" | grep --perl-regexp --only-matching '\d+' | head -n 1)"
|
||||
new_pnpm_major="$(jq '.packageManager' "$new_src/package.json" | grep --perl-regexp --only-matching '\d+' | head -n 1)"
|
||||
get_major_version() {
|
||||
jq -r "$1" "$new_src/package.json" | grep --perl-regexp --only-matching '[0-9]+' | head -n 1
|
||||
}
|
||||
|
||||
new_node_major="$(get_major_version '.engines.node')"
|
||||
new_electron_major="$(get_major_version '.devDependencies.electron')"
|
||||
new_pnpm_major="$(get_major_version '.packageManager')"
|
||||
|
||||
sed -i -E "s/nodejs_[0-9]+/nodejs_$new_node_major/g" "$PKG_FILE"
|
||||
sed -i -E "s/electron_[0-9]+/electron_$new_electron_major/g" "$PKG_FILE"
|
||||
sed -i -E "s/pnpm_[0-9]+/pnpm_$new_pnpm_major/g" "$PKG_FILE"
|
||||
'';
|
||||
@@ -64,7 +73,7 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
|
||||
pnpmDeps = fetchPnpmDeps {
|
||||
inherit (finalAttrs) pname version src;
|
||||
pnpm = pnpm_10_29_2;
|
||||
inherit pnpm;
|
||||
fetcherVersion = 2;
|
||||
hash = "sha256-tCp5qLZVo93H8VIToU3mkmwNsVXOAd1IEsL6RlazPXo=";
|
||||
};
|
||||
@@ -83,8 +92,8 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
nativeBuildInputs = [
|
||||
makeBinaryWrapper
|
||||
nodejs
|
||||
pnpm
|
||||
pnpmConfigHook
|
||||
pnpm_10_29_2
|
||||
]
|
||||
++ lib.optionals (!stdenv.hostPlatform.isDarwin) [
|
||||
copyDesktopItems
|
||||
|
||||
@@ -95,6 +95,18 @@ clangStdenv.mkDerivation (finalAttrs: {
|
||||
substituteInPlace src/platform/unix/PrusaGcodeviewer.desktop \
|
||||
--replace-fail 'MimeType=text/x.gcode;' 'MimeType=application/x-bgcode;text/x.gcode;'
|
||||
''
|
||||
# Make PrusaSlicer handle the url "prusaslicer://"
|
||||
+ ''
|
||||
substituteInPlace src/platform/unix/PrusaSlicer.desktop \
|
||||
--replace-fail \
|
||||
'Exec=prusa-slicer %F' \
|
||||
'Exec=prusa-slicer %U'
|
||||
|
||||
substituteInPlace src/platform/unix/PrusaSlicer.desktop \
|
||||
--replace-fail \
|
||||
'MimeType=model/stl;application/vnd.ms-3mfdocument;application/prs.wavefront-obj;application/x-amf;' \
|
||||
'MimeType=model/stl;application/vnd.ms-3mfdocument;application/prs.wavefront-obj;application/x-amf;x-scheme-handler/prusaslicer;'
|
||||
''
|
||||
);
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
||||
@@ -14,17 +14,17 @@
|
||||
|
||||
buildNpmPackage (finalAttrs: {
|
||||
pname = "qwen-code";
|
||||
version = "0.14.0";
|
||||
version = "0.14.3";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "QwenLM";
|
||||
repo = "qwen-code";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-XeJeBNfIFo2XowIRGgxixAtfz1saeKxt93/EK7EF5tA=";
|
||||
hash = "sha256-RtZlwZev8zv3yMn+cCQpGvyPq/gyA39N4Iq0qFBTERY=";
|
||||
};
|
||||
|
||||
npmDepsFetcherVersion = 3;
|
||||
npmDepsHash = "sha256-UeEldKIcCS7km1nuyfLlSawDVBQDn+k97wxe9ZgaHtM=";
|
||||
npmDepsHash = "sha256-mrc46cZJ2hI1VL/PMYsCCkgEGYMHrkhLZs0EfsXRRIw=";
|
||||
|
||||
# npm 11 incompatible with fetchNpmDeps
|
||||
# https://github.com/NixOS/nixpkgs/issues/474535
|
||||
|
||||
@@ -7,16 +7,16 @@
|
||||
|
||||
rustPlatform.buildRustPackage (finalAttrs: {
|
||||
pname = "rgx";
|
||||
version = "0.10.1";
|
||||
version = "0.10.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "brevity1swos";
|
||||
repo = "rgx";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-H566bgnf4bNPXS7rPtOFTlqmkwoXKbB1fBmFDZQUjac=";
|
||||
hash = "sha256-lZA8Tfyneg8cnBeCf0abgPr9232a1OGBfOJEBnU2l+s=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-hTR4eZKUOxvib5lAV/l76GZQPQ6s+Hgl3DT2kaGlaGg=";
|
||||
cargoHash = "sha256-DOIQaqoUkR1KpQURC89PRds0wJkroSYufbKz62rjSB4=";
|
||||
|
||||
buildInputs = [ pcre2 ];
|
||||
|
||||
|
||||
@@ -16,18 +16,18 @@
|
||||
|
||||
rustPlatform.buildRustPackage (finalAttrs: {
|
||||
pname = "ruff";
|
||||
version = "0.15.9";
|
||||
version = "0.15.10";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "astral-sh";
|
||||
repo = "ruff";
|
||||
tag = finalAttrs.version;
|
||||
hash = "sha256-ePivGE8izhG1fj6efV/UdN8P/KdWVCUGCYGP9abLN5w=";
|
||||
hash = "sha256-x+zqgIJATDWimxbh/VGt94HFiUSD4H9QD/49hnHgfuQ=";
|
||||
};
|
||||
|
||||
cargoBuildFlags = [ "--package=ruff" ];
|
||||
|
||||
cargoHash = "sha256-DCTFjFl/fCbXwj7AGPNnrjvSTqxNW6PVWsUhbSGe/wI=";
|
||||
cargoHash = "sha256-EQERi5NSMUK7qfFYWilzhacYlK4ShQl9Koz8t/8I6+U=";
|
||||
|
||||
nativeBuildInputs = [ installShellFiles ];
|
||||
|
||||
|
||||
@@ -7,13 +7,13 @@
|
||||
|
||||
stdenvNoCC.mkDerivation (finalAttrs: {
|
||||
pname = "sdl_gamecontrollerdb";
|
||||
version = "0-unstable-2026-04-02";
|
||||
version = "0-unstable-2026-04-10";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "mdqinc";
|
||||
repo = "SDL_GameControllerDB";
|
||||
rev = "202d0070d75e51cdf2fc6e9c4d4662d87226d5c6";
|
||||
hash = "sha256-79DvPUHzUw3XAnMQu3pNxZq0+CG9J1u5MiOTyG7pXkk=";
|
||||
rev = "bd4ef5de42d50480c5be6bd54de164140a62f384";
|
||||
hash = "sha256-mJB51qS3U0nyjhi+CzOJmRExG7jP3IlhYvABHilcaOA=";
|
||||
};
|
||||
|
||||
dontBuild = true;
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
|
||||
let
|
||||
pname = "trilium-desktop";
|
||||
version = "0.102.1";
|
||||
version = "0.102.2";
|
||||
|
||||
triliumSource = os: arch: hash: {
|
||||
url = "https://github.com/TriliumNext/Trilium/releases/download/v${version}/TriliumNotes-v${version}-${os}-${arch}.zip";
|
||||
@@ -26,10 +26,10 @@ let
|
||||
darwinSource = triliumSource "macos";
|
||||
|
||||
# exposed like this for update.sh
|
||||
x86_64-linux.hash = "sha256-whGKMEruDqQjXEwYa3xlaoZPERWMmI541X4HZSzLla0=";
|
||||
aarch64-linux.hash = "sha256-mTs+5j2jYKRW1cMQgs9SLp4UxpaE0lT41HG4AhIb+xE=";
|
||||
x86_64-darwin.hash = "sha256-lkebqEMY37A6y3W2KjENIPys0cH+fGPFYeK/n4nPd1Y=";
|
||||
aarch64-darwin.hash = "sha256-nIodFvyPI7LJUE4PI1BMwI3Xnz/OfzMrgaHHkltUgKw=";
|
||||
x86_64-linux.hash = "sha256-OVkF/iDpbtcyv8ZXVtp9QYeKrA3rolQSWBUIBaJn74Q=";
|
||||
aarch64-linux.hash = "sha256-85HlQsd/YjuVCYSO6wP9u8dNul87weq2IYDYR7N0gls=";
|
||||
x86_64-darwin.hash = "sha256-S28eV7NUunWsE6kpKN2h7KKRCSFaMgIr7Ofj5pjJRhI=";
|
||||
aarch64-darwin.hash = "sha256-GghYjS7Env8IQcNS8ZwIX4bmc6iZgGeL1W4IvCGMiBw=";
|
||||
|
||||
sources = {
|
||||
x86_64-linux = linuxSource "x64" x86_64-linux.hash;
|
||||
|
||||
@@ -7,12 +7,12 @@
|
||||
}:
|
||||
|
||||
let
|
||||
version = "0.102.1";
|
||||
version = "0.102.2";
|
||||
|
||||
serverSource_x64.url = "https://github.com/TriliumNext/Trilium/releases/download/v${version}/TriliumNotes-Server-v${version}-linux-x64.tar.xz";
|
||||
serverSource_x64.hash = "sha256-5UW+3VrexXbtfVEcoPGEl1cu44nX89a88ny5o2pSv1I=";
|
||||
serverSource_x64.hash = "sha256-2/Skk4I8CwttF5SEs8gPW6KyNxcrYcTuQBQ7irNL1lw=";
|
||||
serverSource_arm64.url = "https://github.com/TriliumNext/Trilium/releases/download/v${version}/TriliumNotes-Server-v${version}-linux-arm64.tar.xz";
|
||||
serverSource_arm64.hash = "sha256-uwOYXCoWmpRK2XQfSYervEzdbwHy0qQ+OkRh6izvDNM=";
|
||||
serverSource_arm64.hash = "sha256-MQlYci2Z45qSYGxgSTWN3P017GImUqkv24DBn8usDm8=";
|
||||
|
||||
serverSource =
|
||||
if stdenv.hostPlatform.isx86_64 then
|
||||
|
||||
@@ -10,15 +10,15 @@
|
||||
}:
|
||||
buildGoModule (finalAttrs: {
|
||||
pname = "usque";
|
||||
version = "1.4.2";
|
||||
version = "2.0.1";
|
||||
src = fetchFromGitHub {
|
||||
owner = "Diniboy1123";
|
||||
repo = "usque";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-U2C0To9WaQZaAuWbx3+h4hhDI8n3H55cXOnS9l2l2rY=";
|
||||
hash = "sha256-veAUc2LeH2NoOs3AHj8GUr7zBPidHtr+JlUQjgo/WQQ=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-SS0Lqdfdp3hO2hUW0oRXH9jQWW/68a/tKYU7PMgeQYs=";
|
||||
vendorHash = "sha256-pilBazQcrfCcgBCo9U9jGo/ZcuXLBR3kT8l+mad+umg=";
|
||||
|
||||
ldflags = [
|
||||
"-s"
|
||||
|
||||
@@ -6,16 +6,16 @@
|
||||
|
||||
buildGoModule (finalAttrs: {
|
||||
pname = "webdav";
|
||||
version = "5.11.4";
|
||||
version = "5.11.5";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "hacdias";
|
||||
repo = "webdav";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-EEphTKjfCVgSyyGeZ9BjrNmpK4LMm9mFKJ7zqaYQu7E=";
|
||||
hash = "sha256-Al1rl6Ez36I3qE++1ZOvTgey9lfHp0SVzK6KJQSPBYc=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-1rSIJIcJxw1YKy2bI+2RY71bSdfDBp3w7U3SQtJgCgI=";
|
||||
vendorHash = "sha256-JctG+gkZtjlSX616Rv3rC7RU9YBNWp9LsD5Ut8qn1tY=";
|
||||
|
||||
__darwinAllowLocalNetworking = true;
|
||||
|
||||
|
||||
@@ -60,7 +60,13 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
mkdir $out/bin
|
||||
ln -s $out/usr/local/WebullDesktop/WebullDesktop $out/bin/webull-desktop
|
||||
substituteInPlace $out/usr/share/applications/WebullDesktop.desktop \
|
||||
--replace-fail Categories=Utiltity Categories=Finance
|
||||
--replace-fail Categories=Utiltity Categories=Finance \
|
||||
--replace-fail "Exec=/usr/local/WebullDesktop/WebullDesktop" "Exec=webull-desktop" \
|
||||
--replace-fail "Icon=WebullDesktop.png" "Icon=WebullDesktop" \
|
||||
--replace-fail "Version=8.2.0" "Version=${finalAttrs.version}"
|
||||
|
||||
ln -s $out/usr/share $out/share
|
||||
|
||||
|
||||
addAutoPatchelfSearchPath $out/usr/local/WebullDesktop
|
||||
addAutoPatchelfSearchPath $out/usr/local/WebullDesktop/platforms
|
||||
|
||||
@@ -6,11 +6,11 @@
|
||||
|
||||
appimageTools.wrapType2 rec {
|
||||
pname = "xlights";
|
||||
version = "2026.04";
|
||||
version = "2026.05";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/smeighan/xLights/releases/download/${version}/xLights-${version}-x86_64.AppImage";
|
||||
hash = "sha256-eNt1dm2TDnw+JtRP73RppKeCspxKLgS3mnYKRNQ3Srs=";
|
||||
hash = "sha256-W1Il2dIDFUtkwPsPptdD2s/5eluGAeH7tw/ZmArN8dY=";
|
||||
};
|
||||
|
||||
meta = {
|
||||
|
||||
@@ -32,6 +32,13 @@ stdenv.mkDerivation {
|
||||
]
|
||||
++ lib.optionals (subproject != "library") [ jabcode ];
|
||||
|
||||
postPatch = ''
|
||||
substituteInPlace src/jabcode/Makefile src/jabcodeReader/Makefile src/jabcodeWriter/Makefile \
|
||||
--replace-fail "CC = \$(PREFIX)gcc" ""
|
||||
# remove bundled library binaries to force using system libraries
|
||||
rm -rf src/jabcode/lib
|
||||
'';
|
||||
|
||||
preConfigure = "cd src/${subdir}";
|
||||
|
||||
installPhase =
|
||||
@@ -53,6 +60,5 @@ stdenv.mkDerivation {
|
||||
license = lib.licenses.lgpl21;
|
||||
maintainers = [ lib.maintainers.xaverdh ];
|
||||
platforms = lib.platforms.unix;
|
||||
broken = stdenv.hostPlatform.isDarwin; # never built on Hydra https://hydra.nixos.org/job/nixpkgs/trunk/jabcode.x86_64-darwin
|
||||
};
|
||||
}
|
||||
|
||||
@@ -12,14 +12,14 @@
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "actron-neo-api";
|
||||
version = "0.4.1";
|
||||
version = "0.5.1";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "kclif9";
|
||||
repo = "actronneoapi";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-pqBMtrLqGP61nmUE5H34nH969fON2KgyCrEmd3/2X8w=";
|
||||
hash = "sha256-TEKRQQbmcDjHuZOte4fqZqLkw4Eo8FUgoyui3Mg8CqA=";
|
||||
};
|
||||
|
||||
build-system = [
|
||||
|
||||
@@ -10,14 +10,14 @@
|
||||
|
||||
buildPythonPackage (finalAttrs: {
|
||||
pname = "losant-rest";
|
||||
version = "2.1.3";
|
||||
version = "2.1.4";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "Losant";
|
||||
repo = "losant-rest-python";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-aIp1Rh91J78v6HoA8FPtI6xrr7Ld4sf1VRk/EP1Y5vg=";
|
||||
hash = "sha256-51HzUrKBUwgXDSCV+iAtEBLLMl0yV5KVHYHTy+u5TAI=";
|
||||
};
|
||||
|
||||
build-system = [ setuptools ];
|
||||
@@ -36,7 +36,7 @@ buildPythonPackage (finalAttrs: {
|
||||
meta = {
|
||||
description = "Python module for consuming the Losant IoT Platform API";
|
||||
homepage = "https://github.com/Losant/losant-rest-python";
|
||||
changelog = "https://github.com/Losant/losant-rest-python/releases/tag/v${finalAttrs.src.tag}";
|
||||
changelog = "https://github.com/Losant/losant-rest-python/releases/tag/${finalAttrs.src.tag}";
|
||||
license = lib.licenses.mit;
|
||||
maintainers = with lib.maintainers; [ fab ];
|
||||
};
|
||||
|
||||
@@ -18,14 +18,14 @@
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "niquests";
|
||||
version = "3.18.4";
|
||||
version = "3.18.5";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "jawah";
|
||||
repo = "niquests";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-AcF0HpC7vPusEGp7i4ofY2FTJrFxLwXv33MnR6sdvJg=";
|
||||
hash = "sha256-1fljGr5b3OYtcaGg/Qq2W78FWORB1lXRtqaBlxTGTDI=";
|
||||
};
|
||||
|
||||
build-system = [ hatchling ];
|
||||
|
||||
@@ -9,14 +9,14 @@
|
||||
|
||||
buildPythonPackage (finalAttrs: {
|
||||
pname = "pynintendoparental";
|
||||
version = "2.3.3";
|
||||
version = "2.3.4";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "pantherale0";
|
||||
repo = "pynintendoparental";
|
||||
tag = finalAttrs.version;
|
||||
hash = "sha256-2qcupx+x578E+n+YsmB81XrVE5M0QFZPP82H5KxEkss=";
|
||||
hash = "sha256-Lwr3iwRFForLvlFV9Z7l9diduNDu9dtrQSCaVMPcKJs=";
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
|
||||
@@ -18,14 +18,14 @@
|
||||
|
||||
buildPythonPackage (finalAttrs: {
|
||||
pname = "telnetlib3";
|
||||
version = "4.0.1";
|
||||
version = "4.0.2";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "jquast";
|
||||
repo = "telnetlib3";
|
||||
tag = finalAttrs.version;
|
||||
hash = "sha256-dKvdg+1l7qRyc7COR0U6SKbrp5uJRtc4wsDPQEAkXZ8=";
|
||||
hash = "sha256-MLNnmTuxrMV83FsM4Avlb31eH9s8/aFAoEbCsNyTmLY=";
|
||||
};
|
||||
|
||||
build-system = [ hatchling ];
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "weaviate-client";
|
||||
version = "4.20.4";
|
||||
version = "4.20.5";
|
||||
pyproject = true;
|
||||
|
||||
disabled = pythonOlder "3.12";
|
||||
@@ -36,7 +36,7 @@ buildPythonPackage rec {
|
||||
owner = "weaviate";
|
||||
repo = "weaviate-python-client";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-GzkMBNvXz8wqpYdsifeHqZFnYjRf4hNRmQQhHUB12VI=";
|
||||
hash = "sha256-3CJLD/bew9qx2aDrIwcaMlgwCe8E4bj3ZDh5t0v8Pf8=";
|
||||
};
|
||||
|
||||
pythonRelaxDeps = [
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user