Merge commit '5203378d1dbf394970184006df4d6111065601a4' into haskell-updates

This commit is contained in:
Wolfgang Walther
2025-09-06 21:18:41 +02:00
152 changed files with 1711 additions and 2915 deletions
+6 -6
View File
@@ -210,7 +210,7 @@ The last checkbox is about whether it fits the guidelines in this `CONTRIBUTING.
This document details our standards for commit messages, reviews, licensing of contributions, etc...
Everyone should read and understand these standards before submitting a pull request.
### Rebasing between branches (i.e. from master to staging)
### Rebasing between branches (i.e. from `master` to `staging`)
[rebase]: #rebasing-between-branches-ie-from-master-to-staging
Sometimes, changes must be rebased between branches.
@@ -271,8 +271,8 @@ To manually create a backport, follow [the standard pull request process][pr-cre
Here is [an example](https://github.com/nixos/nixpkgs/commit/5688c39af5a6c5f3d646343443683da880eaefb8).
> [!Warning]
> Ensure the commits exist on the master branch.
> In the case of squashed or rebased merges, the commit hash will change and the new commits can be found in the merge message at the bottom of the master pull request.
> Ensure the commits exist on the `master` branch.
> In the case of squashed or rebased merges, the commit hash will change and the new commits can be found in the merge message at the bottom of the `master` pull request.
- In the pull request description, link to the original pull request to `master`.
The pull request title should include `[YY.MM]` matching the release you're backporting to.
@@ -460,7 +460,7 @@ Is the change [acceptable for releases][release-acceptable] and do you wish to h
- Yes: Use the `master` branch and [backport the pull request](#how-to-backport-pull-requests).
- No: Create separate pull requests to the `master` and `release-YY.MM` branches.
If the change causes a [mass rebuild][mass-rebuild], use the staging branch instead:
If the change causes a [mass rebuild][mass-rebuild], use the `staging` branch instead:
- Mass rebuilds to `master` should go to `staging` instead.
- Mass rebuilds to `release-YY.MM` should go to `staging-YY.MM` instead.
@@ -492,8 +492,8 @@ In addition, major package version updates with breaking changes are also accept
Which changes cause mass rebuilds is not formally defined.
In order to help the decision, CI automatically assigns [`rebuild` labels](https://github.com/NixOS/nixpkgs/labels?q=rebuild) to pull requests based on the number of packages they cause rebuilds for.
As a rule of thumb, if the number of rebuilds is **over 500**, it can be considered a mass rebuild.
To get a sense for what changes are considered mass rebuilds, see [previously merged pull requests to the staging branches](https://github.com/NixOS/nixpkgs/issues?q=base%3Astaging+-base%3Astaging-next+is%3Amerged).
As a rule of thumb, if the number of rebuilds is **500 or more**, consider targeting the `staging` branch instead of `master`; if the number is **1000 or more**, the pull request causes a mass rebuild, and should target the `staging` branch.
See [previously merged pull requests to the staging branches](https://github.com/NixOS/nixpkgs/issues?q=base%3Astaging+-base%3Astaging-next+is%3Amerged) to get a sense for what changes are considered mass rebuilds.
## Commit conventions
[commit-conventions]: #commit-conventions
+1 -1
View File
@@ -337,7 +337,7 @@ pkgs/development/python-modules/buildcatrust/ @ajs124 @lukegb @mweinelt
/pkgs/development/compilers/idris2 @mattpolzin
# Bazel
/pkgs/development/tools/build-managers/bazel @Profpatsch
/pkgs/by-name/ba/bazel_7 @Profpatsch
# NixOS modules for e-mail and dns services
/nixos/modules/services/mail/mailman.nix @peti
+10
View File
@@ -48,6 +48,16 @@
- `conduwuit` was removed due to upstream ceasing development and deleting their repository. For existing data, a migration to `matrix-conduit`, `matrix-continuwuity` or `matrix-tuwunel` may be possible.
- The GHCJS 8.10.7, exposed via `haskell.compiler.ghcjs` and `haskell.compiler.ghcjs810`, has been removed. Downstream users should migrate their projects to the new JavaScript backend of GHC proper which can be used via `pkgsCross.ghcjs` from Nixpkgs. Haskell packaging code, like `haskellPackages.mkDerivation`, `ghcWithPackages` and `hoogleWithPackages`, also no longer supports GHCJS.
- The `ghcInfo` and `controlPhases` functions have been removed from `haskell.lib.compose` and `haskell.lib`. They were unused and would return incorrect results.
- Instead of using `controlPhases`, the `doCheck` attribute of derivations can be accessed which is more accurate. `doBenchmark` can't be introspected at the moment.
- To detect cross compilation, the relevant platforms exposed by `stdenv` should be compared instead of using `ghcInfo`.
- Nixpkgs no longer packages any `ghcjs` compiler.
- To find a suitable `nativeGhc`, `buildHaskellPackages` should be used. `ghcInfo` would use `ghc.bootPkgs.ghc` if cross compiling,
and the given `ghc` otherwise. This approach is not recommended since it results in mismatched GHC versions.
- `gnome-keyring` no longer ships with an SSH agent anymore because it has been deprecated upstream. You should use `gcr_4` instead, which provides the same features. More information on why this was done can be found on [the relevant GCR upstream PR](https://gitlab.gnome.org/GNOME/gcr/-/merge_requests/67).
- `stdenv.mkDerivation` and other derivation builders that use it no longer allow the value of `env` to be anything but an attribute set, for the purpose of setting environment variables that are available to the [builder](https://nix.dev/manual/nix/latest/store/derivation/#builder) process. An environment variable called `env` can still be provided by means of `mkDerivation { env.env = ...; }`, though we recommend to use a more specific name than "env".
+25
View File
@@ -7029,6 +7029,13 @@
name = "Duncan Dean";
keys = [ { fingerprint = "9484 44FC E03B 05BA 5AB0 591E C37B 1C1D 44C7 86EE"; } ];
};
dustyhorizon = {
name = "Kenneth Tan";
email = "i.am@kennethtan.xyz";
github = "dustyhorizon";
githubId = 4987132;
keys = [ { fingerprint = "1021 2207 286B F15B 0CF1 C5EA D70C C9F5 CEF4 EEB8"; } ];
};
DutchGerman = {
name = "Stefan Visser";
email = "stefan.visser@apm-ecampus.de";
@@ -10083,6 +10090,12 @@
githubId = 665472;
matrix = "@hehongbo:matrix.org";
};
heichro = {
github = "heichro";
githubId = 76887148;
keys = [ { fingerprint = "BBA7 9E8E 17FE 9C3F BFEA 61E8 30D0 186F 4E19 7E48"; } ];
name = "heichro";
};
heijligen = {
email = "src@posteo.de";
github = "heijligen";
@@ -21771,6 +21784,18 @@
githubId = 10631029;
name = "Richard Ipsum";
};
richardjacton = {
email = "richardjacton@richardjacton.net";
github = "richardjacton";
githubId = 6893043;
name = "Richard J. Acton";
matrix = "@richardjacton:matrix.org";
keys = [
{
fingerprint = "5EE1 1764 8462 E5A3 610C 1964 8E5D EFCF C330 7916";
}
];
};
richiejp = {
email = "io@richiejp.com";
github = "richiejp";
@@ -32,8 +32,6 @@ Alongside many enhancements to NixOS modules and general system improvements, th
inputs.nixpkgs.url = "https://channels.nixos.org/nixos-25.05/nixexprs.tar.xz";
```
- Syncthing has been updated to version 2.0.0.
<!-- To avoid merge conflicts, consider adding your item at an arbitrary place in the list instead. -->
## New Modules {#sec-release-25.05-new-modules}
@@ -6,6 +6,8 @@
- `nixos-rebuild-ng`, a full rewrite of `nixos-rebuild` in Python, is enabled by default from this release. You can disable it by setting [](#opt-system.rebuild.enableNg) to `false` in your configuration if you need, but please report any issues. It is expected that the next major version of NixOS (26.05) will remove the {option}`system.rebuild.enableNg` option.
- `rEFInd`, a graphical boot manager for UEFI systems, can now be used through [](#opt-boot.loader.refind.enable).
- Secure boot support can now be enabled for the Limine bootloader through {option}`boot.loader.limine.secureBoot.enable`. Bootloader install script signs the bootloader, then kernels are hashed during system rebuild and written to a config. This allows Limine to boot only the kernels installed through NixOS system.
- The default PostgreSQL version for new NixOS installations (i.e. with `system.stateVersion >= 25.11`) is v17.
@@ -14,6 +16,8 @@
- The Qt 5-based versions of KDE Gear, Plasma, Maui and Deepin have been removed. Users are advised to migrate to Plasma 6 and Gear 25.08, available under `kdePackages`.
- Syncthing has been updated to version 2.0.0.
## New Modules {#sec-release-25.11-new-modules}
<!-- To avoid merge conflicts, consider adding your item at an arbitrary place in the list instead. -->
+1
View File
@@ -1817,6 +1817,7 @@
./system/boot/loader/init-script/init-script.nix
./system/boot/loader/limine/limine.nix
./system/boot/loader/loader.nix
./system/boot/loader/refind/refind.nix
./system/boot/loader/systemd-boot/systemd-boot.nix
./system/boot/luksroot.nix
./system/boot/modprobe.nix
+1 -1
View File
@@ -10,7 +10,7 @@ let
in
{
options.programs.vim = {
enable = lib.mkEnableOption "Vi IMproved, an advanced text";
enable = lib.mkEnableOption "Vi IMproved, an advanced text editor";
defaultEditor = lib.mkEnableOption "vim as the default editor";
@@ -0,0 +1,344 @@
#!@python3@/bin/python3 -B
from dataclasses import dataclass
from typing import Any, Callable, Dict, List, Optional, Tuple
import datetime
import json
from ctypes import CDLL
import os
import psutil
import re
import shutil
import subprocess
import textwrap
refind_dir = None
libc = CDLL("libc.so.6")
install_config = json.load(open('@configPath@', 'r'))
def config(*path: str) -> Optional[Any]:
result = install_config
for component in path:
result = result[component]
return result
def get_system_path(profile: str = 'system', gen: Optional[str] = None, spec: Optional[str] = None) -> str:
basename = f'{profile}-{gen}-link' if gen is not None else profile
profiles_dir = '/nix/var/nix/profiles'
if profile == 'system':
result = os.path.join(profiles_dir, basename)
else:
result = os.path.join(profiles_dir, 'system-profiles', basename)
if spec is not None:
result = os.path.join(result, 'specialisation', spec)
return result
def get_profiles() -> List[str]:
profiles_dir = '/nix/var/nix/profiles/system-profiles/'
dirs = os.listdir(profiles_dir) if os.path.isdir(profiles_dir) else []
return [path for path in dirs if not path.endswith('-link')]
def get_gens(profile: str = 'system') -> List[Tuple[int, List[str]]]:
nix_env = os.path.join(config('nixPath'), 'bin', 'nix-env')
output = subprocess.check_output([
nix_env, '--list-generations',
'-p', get_system_path(profile),
'--option', 'build-users-group', '',
], universal_newlines=True)
gen_lines = output.splitlines()
gen_nums = [int(line.split()[0]) for line in gen_lines]
return [gen for gen in gen_nums][-config('maxGenerations'):]
def is_encrypted(device: str) -> bool:
for name, _ in config('luksDevices'):
if os.readlink(os.path.join('/dev/mapper', name)) == os.readlink(device):
return True
return False
def is_fs_type_supported(fs_type: str) -> bool:
return fs_type.startswith('vfat')
paths = {}
def get_copied_path_uri(path: str, target: str) -> str:
package_id = os.path.basename(os.path.dirname(path))
suffix = os.path.basename(path)
dest_file = f'{package_id}-{suffix}'
dest_path = os.path.join(refind_dir, target, dest_file)
if not os.path.exists(dest_path):
copy_file(path, dest_path)
else:
paths[dest_path] = True
return os.path.join('/efi/refind', target, dest_file)
def get_path_uri(path: str) -> str:
return get_copied_path_uri(path, "")
def get_file_uri(profile: str, gen: Optional[str], spec: Optional[str], name: str) -> str:
gen_path = get_system_path(profile, gen, spec)
path_in_store = os.path.realpath(os.path.join(gen_path, name))
return get_path_uri(path_in_store)
def get_kernel_uri(kernel_path: str) -> str:
return get_copied_path_uri(kernel_path, "kernels")
@dataclass
class BootSpec:
system: str
init: str
kernel: str
kernelParams: List[str]
label: str
toplevel: str
specialisations: Dict[str, "BootSpec"]
initrd: str | None = None
initrdSecrets: str | None = None
def bootjson_to_bootspec(bootjson: dict) -> BootSpec:
specialisations = bootjson['org.nixos.specialisation.v1']
specialisations = {k: bootjson_to_bootspec(v) for k, v in specialisations.items()}
return BootSpec(
**bootjson['org.nixos.bootspec.v1'],
specialisations=specialisations,
)
def config_entry(is_sub: bool, bootspec: BootSpec, label: str, time: str) -> str:
entry = ""
if is_sub:
entry += 'sub'
entry += f'menuentry "{label}" {{\n'
entry += ' loader ' + get_kernel_uri(bootspec.kernel) + '\n'
if bootspec.initrd:
entry += ' initrd ' + get_kernel_uri(bootspec.initrd) + '\n'
entry += ' options "' + ' '.join(['init=' + bootspec.init] + bootspec.kernelParams).strip() + '"\n'
entry += '}\n'
return entry
def generate_config_entry(profile: str, gen: str, special: bool, group_name: str) -> str:
time = datetime.datetime.fromtimestamp(os.stat(get_system_path(profile,gen), follow_symlinks=False).st_mtime).strftime("%F %H:%M:%S")
boot_json = json.load(open(os.path.join(get_system_path(profile, gen), 'boot.json'), 'r'))
boot_spec = bootjson_to_bootspec(boot_json)
specialisation_list = boot_spec.specialisations.items()
entry = ""
if len(specialisation_list) > 0:
entry += f'menuentry "NixOS {group_name} Generation {gen}" {{\n'
entry += config_entry(True, boot_spec, f'Default', str(time))
for spec, spec_boot_spec in specialisation_list:
entry += config_entry(True, spec_boot_spec, f'{spec}', str(time))
entry += '}\n'
else:
entry += config_entry(False, boot_spec, f'NixOS {group_name} Generation {gen}', str(time))
return entry
def find_disk_device(part: str) -> str:
part = os.path.realpath(part)
part = part.removeprefix('/dev/')
disk = os.path.realpath(os.path.join('/sys', 'class', 'block', part))
disk = os.path.dirname(disk)
return os.path.join('/dev', os.path.basename(disk))
def find_mounted_device(path: str) -> str:
path = os.path.abspath(path)
while not os.path.ismount(path):
path = os.path.dirname(path)
devices = [x for x in psutil.disk_partitions() if x.mountpoint == path]
assert len(devices) == 1
return devices[0].device
def copy_file(from_path: str, to_path: str):
dirname = os.path.dirname(to_path)
if not os.path.exists(dirname):
os.makedirs(dirname)
shutil.copyfile(from_path, to_path + ".tmp")
os.rename(to_path + ".tmp", to_path)
paths[to_path] = True
def install_bootloader() -> None:
global refind_dir
refind_dir = os.path.join(str(config('efiMountPoint')), 'efi', 'refind')
if not os.path.exists(refind_dir):
os.makedirs(refind_dir)
else:
for dir, dirs, files in os.walk(refind_dir, topdown=True):
for file in files:
paths[os.path.join(dir, file)] = False
profiles = [('system', get_gens())]
for profile in get_profiles():
profiles += [(profile, get_gens(profile))]
timeout = config('timeout')
last_gen = get_gens()[-1]
last_gen_json = json.load(open(os.path.join(get_system_path('system', last_gen), 'boot.json'), 'r'))
last_gen_boot_spec = bootjson_to_bootspec(last_gen_json)
config_file = str(config('extraConfig')) + '\n'
config_file += textwrap.dedent(f'''
timeout {timeout}
default_selection {3 if len(last_gen_boot_spec.specialisations.items()) > 0 else 2}
''')
config_file += textwrap.dedent('''
# NixOS boot entries start here
''')
for (profile, gens) in profiles:
group_name = 'default profile' if profile == 'system' else f"profile '{profile}'"
isFirst = True
for gen in sorted(gens, key=lambda x: x, reverse=True):
config_file += generate_config_entry(profile, gen, isFirst, group_name)
isFirst = False
config_file_path = os.path.join(refind_dir, 'refind.conf')
config_file += '\n# NixOS boot entries end here\n\n'
with open(f"{config_file_path}.tmp", 'w') as file:
file.truncate()
file.write(config_file.strip())
file.flush()
os.fsync(file.fileno())
os.rename(f"{config_file_path}.tmp", config_file_path)
paths[config_file_path] = True
for dest_path, source_path in config('additionalFiles').items():
dest_path = os.path.join(refind_dir, dest_path)
copy_file(source_path, dest_path)
cpu_family = config('hostArchitecture', 'family')
if cpu_family == 'x86':
if config('hostArchitecture', 'bits') == 32:
boot_file = 'BOOTIA32.EFI'
efi_file = 'refind_ia32.efi'
elif config('hostArchitecture', 'bits') == 64:
boot_file = 'BOOTX64.EFI'
efi_file = 'refind_x64.efi'
elif cpu_family == 'arm':
if config('hostArchitecture', 'arch') == 'armv8-a' and config('hostArchitecture', 'bits') == 64:
boot_file = 'BOOTAA64.EFI'
efi_file = 'refind_aa64.efi'
else:
raise Exception(f'Unsupported CPU arch: {config("hostArchitecture", "arch")}')
else:
raise Exception(f'Unsupported CPU family: {cpu_family}')
efi_path = os.path.join(config('refindPath'), 'share', 'refind', efi_file)
dest_path = os.path.join(config('efiMountPoint'), 'efi', 'boot' if config('efiRemovable') else 'refind', boot_file)
copy_file(efi_path, dest_path)
if not config('efiRemovable') and not config('canTouchEfiVariables'):
print('warning: boot.loader.efi.canTouchEfiVariables is set to false while boot.loader.limine.efiInstallAsRemovable.\n This may render the system unbootable.')
if config('canTouchEfiVariables'):
if config('efiRemovable'):
print('note: boot.loader.limine.efiInstallAsRemovable is true, no need to add EFI entry.')
else:
efibootmgr = os.path.join(str(config('efiBootMgrPath')), 'bin', 'efibootmgr')
efi_partition = find_mounted_device(str(config('efiMountPoint')))
efi_disk = find_disk_device(efi_partition)
efibootmgr_output = subprocess.check_output([efibootmgr], stderr=subprocess.STDOUT, universal_newlines=True)
# Check the output of `efibootmgr` to find if rEFInd is already installed and present in the boot record
refind_boot_entry = None
if matches := re.findall(r'Boot([0-9a-fA-F]{4})\*? rEFInd', efibootmgr_output):
refind_boot_entry = matches[0]
# If there's already a Limine entry, replace it
if refind_boot_entry:
boot_order = re.findall(r'BootOrder: ((?:[0-9a-fA-F]{4},?)*)', efibootmgr_output)[0]
efibootmgr_output = subprocess.check_output([
efibootmgr,
'-b', refind_boot_entry,
'-B',
], stderr=subprocess.STDOUT, universal_newlines=True)
efibootmgr_output = subprocess.check_output([
efibootmgr,
'-c',
'-b', refind_boot_entry,
'-d', efi_disk,
'-p', efi_partition.removeprefix(efi_disk).removeprefix('p'),
'-l', f'\\efi\\refind\\{boot_file}',
'-L', 'rEFInd',
'-o', boot_order,
], stderr=subprocess.STDOUT, universal_newlines=True)
else:
efibootmgr_output = subprocess.check_output([
efibootmgr,
'-c',
'-d', efi_disk,
'-p', efi_partition.removeprefix(efi_disk).removeprefix('p'),
'-l', f'\\efi\\refind\\{boot_file}',
'-L', 'rEFInd',
], stderr=subprocess.STDOUT, universal_newlines=True)
print("removing unused boot files...")
for path in paths:
if not paths[path]:
os.remove(path)
def main() -> None:
try:
install_bootloader()
finally:
# Since fat32 provides little recovery facilities after a crash,
# it can leave the system in an unbootable state, when a crash/outage
# happens shortly after an update. To decrease the likelihood of this
# event sync the efi filesystem after each update.
rc = libc.syncfs(os.open(f"{config('efiMountPoint')}", os.O_RDONLY))
if rc != 0:
print(f"could not sync {config('efiMountPoint')}: {os.strerror(rc)}", file=sys.stderr)
if __name__ == '__main__':
main()
@@ -0,0 +1,117 @@
{
config,
options,
lib,
pkgs,
...
}:
let
inherit (lib)
mkIf
mkEnableOption
mkOption
literalExpression
types
;
cfg = config.boot.loader.refind;
efi = config.boot.loader.efi;
refindInstallConfig = pkgs.writeText "refind-install.json" (
builtins.toJSON {
nixPath = config.nix.package;
efiBootMgrPath = pkgs.efibootmgr;
refindPath = cfg.package;
efiMountPoint = efi.efiSysMountPoint;
fileSystems = config.fileSystems;
luksDevices = config.boot.initrd.luks.devices;
canTouchEfiVariables = efi.canTouchEfiVariables;
efiRemovable = cfg.efiInstallAsRemovable;
maxGenerations = if cfg.maxGenerations == null then 0 else cfg.maxGenerations;
hostArchitecture = pkgs.stdenv.hostPlatform.parsed.cpu;
timeout = if config.boot.loader.timeout != null then config.boot.loader.timeout else 10;
extraConfig = cfg.extraConfig;
additionalFiles = cfg.additionalFiles;
}
);
in
{
meta = {
inherit (pkgs.refind.meta) maintainers;
};
options = {
boot.loader.refind = {
enable = mkEnableOption "the rEFInd boot loader";
extraConfig = lib.mkOption {
default = "";
type = types.lines;
description = ''
A string which is prepended to refind.conf.
'';
};
package = lib.mkPackageOption pkgs "refind" { };
maxGenerations = lib.mkOption {
default = null;
example = 50;
type = types.nullOr types.int;
description = ''
Maximum number of latest generations in the boot menu.
Useful to prevent boot partition of running out of disk space.
`null` means no limit i.e. all generations that were not
garbage collected yet.
'';
};
additionalFiles = mkOption {
default = { };
type = types.attrsOf types.path;
example = literalExpression ''
{ "efi/memtest86/memtest86.efi" = "''${pkgs.memtest86-efi}/BOOTX64.efi"; }
'';
description = ''
A set of files to be copied to {file}`/boot`. Each attribute name denotes the
destination file name in {file}`/boot`, while the corresponding attribute value
specifies the source file.
'';
};
efiInstallAsRemovable = mkEnableOption null // {
default = !efi.canTouchEfiVariables;
defaultText = literalExpression "!config.boot.loader.efi.canTouchEfiVariables";
description = ''
Whether or not to install the rEFInd EFI files as removable.
See {option}`boot.loader.grub.efiInstallAsRemovable`
'';
};
};
};
config = mkIf cfg.enable {
assertions = [
{
assertion =
pkgs.stdenv.hostPlatform.isx86_64
|| pkgs.stdenv.hostPlatform.isi686
|| pkgs.stdenv.hostPlatform.isAarch64;
message = "rEFInd can only be installed on aarch64 & x86 platforms";
}
{
assertion = pkgs.stdenv.hostPlatform.isEfi;
message = "rEFInd can only be installed on UEFI platforms";
}
];
# Common attribute for boot loaders so only one of them can be
# set at once.
system = {
boot.loader.id = "refind";
build.installBootLoader = pkgs.replaceVarsWith {
src = ./refind-install.py;
isExecutable = true;
replacements = {
python3 = pkgs.python3.withPackages (python-packages: [ python-packages.psutil ]);
configPath = refindInstallConfig;
};
};
};
};
}
+1 -1
View File
@@ -913,7 +913,6 @@ in
metabase = runTest ./metabase.nix;
mihomo = runTest ./mihomo.nix;
mindustry = runTest ./mindustry.nix;
minecraft = runTest ./minecraft.nix;
minecraft-server = runTest ./minecraft-server.nix;
minidlna = runTest ./minidlna.nix;
miniflux = runTest ./miniflux.nix;
@@ -1291,6 +1290,7 @@ in
redis = handleTest ./redis.nix { };
redlib = runTest ./redlib.nix;
redmine = handleTestOn [ "x86_64-linux" "aarch64-linux" ] ./redmine.nix { };
refind = runTest ./refind.nix;
renovate = runTest ./renovate.nix;
replace-dependencies = handleTest ./replace-dependencies { };
reposilite = runTest ./reposilite.nix;
-40
View File
@@ -1,40 +0,0 @@
{ pkgs, lib, ... }:
{
name = "minecraft";
meta = with lib.maintainers; {
maintainers = [ nequissimus ];
};
nodes.client =
{ nodes, ... }:
let
user = nodes.client.config.users.users.alice;
in
{
imports = [
./common/user-account.nix
./common/x11.nix
];
environment.systemPackages = [ pkgs.minecraft ];
nixpkgs.config.allowUnfree = true;
test-support.displayManager.auto.user = user.name;
};
enableOCR = true;
testScript =
{ nodes, ... }:
let
user = nodes.client.config.users.users.alice;
in
''
client.wait_for_x()
client.execute("su - alice -c minecraft-launcher >&2 &")
client.wait_for_text("Create a new Microsoft account")
client.sleep(10)
client.screenshot("launcher")
'';
}
+25
View File
@@ -0,0 +1,25 @@
{ lib, pkgs, ... }:
{
name = "refind";
meta = {
inherit (pkgs.refind.meta) maintainers;
};
nodes.machine =
{ ... }:
{
virtualisation.useBootLoader = true;
virtualisation.useEFIBoot = true;
boot.loader.grub.enable = false;
boot.loader.efi.canTouchEfiVariables = true;
boot.loader.refind.enable = true;
boot.loader.timeout = 1;
};
testScript = ''
machine.start()
with subtest('Machine boots correctly'):
machine.wait_for_unit('multi-user.target')
'';
}
@@ -1,40 +1,53 @@
{
lib,
stdenv,
callPackage,
runCommand,
makeWrapper,
coq,
imagemagick,
python3,
python312,
}:
# Jupyter console:
# nix run --impure --expr 'with import <nixpkgs> {}; jupyter-console.withSingleKernel coq-kernel.definition'
# Jupyter console with packages:
# nix run --impure --expr 'with import <nixpkgs> {}; jupyter-console.withSingleKernel (coq-kernel.definitionWithPackages [coqPackages.bignums])'
# Jupyter console with packages: (using Coq 8.20, before the Rocq transition at version 9.0)
# nix run --impure --expr 'with import <nixpkgs> {}; jupyter-console.withSingleKernel ((coq-kernel.override { coq = coq_8_20; }).definitionWithPackages (with coqPackages_8_20; [bignums stdlib]))'
# Jupyter notebook:
# nix run --impure --expr 'with import <nixpkgs> {}; jupyter.override { definitions.coq = coq-kernel.definition; }'
let
python = python3.withPackages (ps: [
# Nixpkgs master is currently on python3 >= python313. This doesn't work with
# this package, because it depends on the "future" package, which is no longer
# compatible with Python 3.13.
coq-jupyter = callPackage ./kernel.nix {
inherit coq;
python3 = python312;
};
python = python312.withPackages (ps: [
ps.traitlets
ps.jupyter-core
ps.ipykernel
(callPackage ./kernel.nix { })
coq-jupyter
]);
logos = runCommand "coq-logos" { buildInputs = [ imagemagick ]; } ''
mkdir -p $out
convert ${coq.src}/ide/coqide/coq.png -resize 32x32 $out/logo-32x32.png
convert ${coq.src}/ide/coqide/coq.png -resize 64x64 $out/logo-64x64.png
'';
# At version 9.0, Coq underwent a name change to Rocq.
# A couple paths and environment variables need to change at this point.
isRocq = lib.versionAtLeast coq.coq-version "9.0";
in
logos =
let
dir = if isRocq then "rocqide" else "coqide";
in
runCommand "coq-logos" { buildInputs = [ imagemagick ]; } ''
mkdir -p $out
convert ${coq.src}/ide/${dir}/coq.png -resize 32x32 $out/logo-32x32.png
convert ${coq.src}/ide/${dir}/coq.png -resize 64x64 $out/logo-64x64.png
'';
rec {
launcher =
runCommand "coq-kernel-launcher"
{
@@ -48,10 +61,8 @@ rec {
--suffix PATH : ${coq}/bin
'';
definition = definitionWithPackages [ ];
definitionWithPackages = packages: {
displayName = "Coq " + coq.version;
displayName = (if isRocq then "Rocq " else "Coq ") + coq.version;
argv = [
"${launcher}/bin/coq-kernel"
"-f"
@@ -60,10 +71,27 @@ rec {
language = "coq";
logo32 = "${logos}/logo-32x32.png";
logo64 = "${logos}/logo-64x64.png";
env = {
COQPATH = lib.concatStringsSep ":" (
map (x: "${x}/lib/coq/${coq.coq-version}/user-contrib/") packages
);
};
env = lib.listToAttrs [
{
name = if isRocq then "ROCQPATH" else "COQPATH";
value = lib.concatStringsSep ":" (
map (x: "${x}/lib/coq/${coq.coq-version}/user-contrib/") packages
);
}
{
name = "OCAMLPATH";
value = lib.concatStringsSep ":" (
map (x: "${x}/lib/ocaml/${coq.ocaml.version}/site-lib/") ([ coq.ocamlPackages.findlib ] ++ packages)
);
}
];
};
}
in
launcher.overrideAttrs (_oldAttrs: {
passthru = {
inherit coq-jupyter definitionWithPackages logos;
definition = definitionWithPackages [ ];
};
})
@@ -11998,6 +11998,19 @@ final: prev: {
meta.hydraPlatforms = [ ];
};
oklch-color-picker-nvim = buildVimPlugin {
pname = "oklch-color-picker.nvim";
version = "2025-09-04";
src = fetchFromGitHub {
owner = "eero-lehtinen";
repo = "oklch-color-picker.nvim";
rev = "ae318113cd7d0e4988b6b059327c2778911f1187";
sha256 = "0xhraf89b1ppijqmg1gnwp4gvnnmf8h86n8d6s8ydgj910jvagzm";
};
meta.homepage = "https://github.com/eero-lehtinen/oklch-color-picker.nvim/";
meta.hydraPlatforms = [ ];
};
ollama-nvim = buildVimPlugin {
pname = "ollama.nvim";
version = "2024-06-09";
@@ -921,6 +921,7 @@ https://github.com/nvimdev/oceanic-material/,,
https://github.com/mhartington/oceanic-next/,,
https://github.com/pwntester/octo.nvim/,,
https://github.com/refractalize/oil-git-status.nvim/,HEAD,
https://github.com/eero-lehtinen/oklch-color-picker.nvim/,HEAD,
https://github.com/nomnivore/ollama.nvim/,HEAD,
https://github.com/yonlu/omni.vim/,,
https://github.com/Hoffs/omnisharp-extended-lsp.nvim/,HEAD,
@@ -495,8 +495,8 @@ let
mktplcRef = {
publisher = "banacorn";
name = "agda-mode";
version = "0.6.5";
hash = "sha256-fq3JiqdtYN9kAWDvu8X+2mlU5kj2RwUTPA4QF43vShQ=";
version = "0.6.6";
hash = "sha256-QzFahhNXwfJQibmoAbBDes+/ZCb83oTAN2w96U5Mf8Y=";
};
meta = {
changelog = "https://marketplace.visualstudio.com/items/banacorn.agda-mode/changelog";
@@ -1152,8 +1152,8 @@ let
mktplcRef = {
publisher = "DanielSanMedium";
name = "dscodegpt";
version = "3.14.19";
hash = "sha256-58D9ZzNIMrVa0nQjev0dGNth29iWL7U/X0NkVLSB7hg=";
version = "3.14.85";
hash = "sha256-JeoLWQLYxWdkOmlxrMIhroyfZSL1aWg/rXQORiRQueI=";
};
meta = {
changelog = "https://marketplace.visualstudio.com/items/DanielSanMedium.dscodegpt/changelog";
@@ -1747,8 +1747,8 @@ let
mktplcRef = {
name = "foam-vscode";
publisher = "foam";
version = "0.27.2";
hash = "sha256-wuguBoIYTdlu03wNu9sfRnUkBvYgZEcTJiujq7KWZZ4=";
version = "0.27.5";
hash = "sha256-QjZlG94bRwrrZhJPUmcyPfyEj8Qd4ZTCCUQ6+CkG9XY=";
};
meta = {
changelog = "https://marketplace.visualstudio.com/items/foam.foam-vscode/changelog";
@@ -2498,8 +2498,8 @@ let
mktplcRef = {
publisher = "jeff-hykin";
name = "better-nix-syntax";
version = "2.2.0";
hash = "sha256-MmmRKq/7uTCywnEceKukJW/jIc0oIx0GIz55ugh4gQg=";
version = "2.2.3";
hash = "sha256-KhmkCMBWagi0JjZvupgaU7LA6hsGRE6SiHqdJlXyyX8=";
};
meta = {
description = "Visual Studio Code extension providing Nix Syntax highlighting";
@@ -4823,8 +4823,8 @@ let
mktplcRef = {
name = "uiua-vscode";
publisher = "uiua-lang";
version = "0.0.65";
hash = "sha256-qmjXKuNVYkzaJUUvW/apXzPVE3XuZjxTl3EYNoKHVNc=";
version = "0.0.66";
hash = "sha256-eFdRzkoYJeQdpebKcSFhhnZZXFcA3oKURvqjBx5hReQ=";
};
meta = {
description = "VSCode language extension for Uiua";
@@ -11,13 +11,13 @@
}:
mkLibretroCore {
core = "pcsx2";
version = "0-unstable-2025-08-07";
version = "0-unstable-2025-08-30";
src = fetchFromGitHub {
owner = "libretro";
repo = "ps2";
rev = "c26b06ac2752a11ee47abc6f9c73595ee874341c";
hash = "sha256-c7y1jCRQd/o4RTrOeqltcH8HOwrb+BLtaw//0ZWW4E0=";
rev = "b0e6c4d7f4abc8cfbf2c55322fc5009a685bc042";
hash = "sha256-6cpVsituAWX6sVP5JUvT7KjYZ7SzvD95EB90e2UxJ9A=";
fetchSubmodules = true;
};
@@ -33,13 +33,13 @@ let
in
stdenv.mkDerivation (finalAttrs: {
pname = "organicmaps";
version = "2025.08.10-20";
version = "2025.09.01-6";
src = fetchFromGitHub {
owner = "organicmaps";
repo = "organicmaps";
tag = "${finalAttrs.version}-android";
hash = "sha256-W1lqmxV5rUC6yXdqr9NrRDXON32K3JsalXFDiB5OCg4=";
hash = "sha256-wxJgfvZvksW/U3ZC7/apRHQTcGvfdi8mYTPCzT8FM3U=";
fetchSubmodules = true;
};
@@ -10,11 +10,11 @@
buildMozillaMach rec {
pname = "firefox-beta";
binaryName = pname;
version = "143.0b7";
version = "143.0b8";
applicationName = "Firefox Beta";
src = fetchurl {
url = "mirror://mozilla/firefox/releases/${version}/source/firefox-${version}.source.tar.xz";
sha512 = "bf71930c7a5ab2c4ccc4f0179702491bd314763c469501f68df6cef0f1db57da6f16da77bc5d7692c0f5edf8ce616d8f927d2fa59c5c386217b9022a8e9802f8";
sha512 = "bf8e78abcc1cf6c8b48a591d0185c85195a818de0d13bafa3f004ad9c76364a2c07cacdf09fe0ae2e290d9cbce7b8c3ba4b57793cd3d39240023ef53eea08377";
};
meta = {
@@ -10,13 +10,13 @@
buildMozillaMach rec {
pname = "firefox-devedition";
binaryName = pname;
version = "143.0b7";
version = "143.0b8";
applicationName = "Firefox Developer Edition";
requireSigning = false;
branding = "browser/branding/aurora";
src = fetchurl {
url = "mirror://mozilla/devedition/releases/${version}/source/firefox-${version}.source.tar.xz";
sha512 = "0c1c3af3412b14425df005b53af00e8af526cb6e0bc36f32f6bce1f4332959f35ffed4b795a40e004a41fea9747a7b7c7f6cacfd70b6ef4f54b47556cdc31ec5";
sha512 = "89152a4dd3e17f68d7991fae65a6365a2273fcbef28c245a76e9e068a1f12c486a7d0c6d3cb8988c1c9955b15809fa93e117e25b04f9b1a9d449e685cbf30cfc";
};
# buildMozillaMach sets MOZ_APP_REMOTINGNAME during configuration, but
+3 -3
View File
@@ -15,16 +15,16 @@
rustPlatform.buildRustPackage rec {
pname = "airgorah";
version = "0.7.3";
version = "0.7.4";
src = fetchFromGitHub {
owner = "martin-olivier";
repo = "airgorah";
tag = "v${version}";
hash = "sha256-cIb40TKkk3gfy4dTP8WyZqQkRGj5nItaQ3NSfexCUOA=";
hash = "sha256-6TH+DRDtWajZjHNmFSKL4XJK+AuDNUbWKRPRryOpSGY=";
};
cargoHash = "sha256-3Les/A9fBBjU6NSVVEyXCbjrNSdaEgCl5pZ36ceRDQg=";
cargoHash = "sha256-LiSaNyqsKBZ5nNP7mws1pjhVwTXNBF6e1wSUdG/qYog=";
nativeBuildInputs = [
pkg-config
+8 -18
View File
@@ -2,31 +2,24 @@
lib,
buildGoModule,
fetchFromGitHub,
pkg-config,
libpostalWithData,
}:
buildGoModule rec {
pname = "amass";
version = "4.2.0";
version = "5.0.1";
nativeBuildInputs = [ pkg-config ];
buildInputs = [ libpostalWithData ];
src = fetchFromGitHub {
owner = "OWASP";
repo = "Amass";
tag = "v${version}";
hash = "sha256-lhvU2fUnjQ+D+EZDRircNg/np4Ynk+HzOBgxT1L8BaQ=";
hash = "sha256-uAuBWzEwppnmYacfPI7MZUW+7PdSs3EqYm1WQI4fthQ=";
};
vendorHash = "sha256-PdFIWK4yBh8Bb9mzYdU2h7pDPK8FZMhu8meTd9snP48=";
outputs = [
"out"
"wordlists"
];
postInstall = ''
mkdir -p $wordlists
cp -R examples/wordlists/*.txt $wordlists
gzip $wordlists/*.txt
'';
vendorHash = "sha256-/AowoZfOk2tib996oC2hsMnzbe/CVbCBesTWXp6xE6Y=";
# https://github.com/OWASP/Amass/issues/640
doCheck = false;
@@ -40,9 +33,6 @@ buildGoModule rec {
uses the IP addresses obtained during resolution to discover associated
netblocks and ASNs. All the information is then used to build maps of the
target networks.
Amass ships with a set of wordlist (to be used with the amass -w flag)
that are found under the wordlists output.
'';
homepage = "https://owasp.org/www-project-amass/";
changelog = "https://github.com/OWASP/Amass/releases/tag/v${version}";
@@ -1,40 +1,42 @@
{
lib,
mkDerivation,
stdenv,
fetchFromGitHub,
cmake,
csxcad,
qcsxcad,
hdf5,
vtkWithQt5,
qtbase,
vtkWithQt6,
qt6,
fparser,
tinyxml,
cgal,
boost,
}:
mkDerivation {
stdenv.mkDerivation (finalAttrs: {
pname = "appcsxcad";
version = "unstable-2023-01-06";
version = "0.2.3";
src = fetchFromGitHub {
owner = "thliebig";
repo = "AppCSXCAD";
rev = "379ede4b8e00c11e8d0fb724c35547991b30c423";
hash = "sha256-L0ZEyovnfMzM7JuITBuhb4tJ2Aqgw52IiKEfEGq7Yo0=";
rev = "v${finalAttrs.version}";
hash = "sha256-KrsnCnRZRTbkgEH3hOETrYhseg5mCHPqhAbYyHlS3sk=";
};
nativeBuildInputs = [
cmake
qt6.wrapQtAppsHook
];
buildInputs = [
csxcad
qcsxcad
hdf5
vtkWithQt5
qtbase
vtkWithQt6
qt6.qtbase
qt6.qtwayland
fparser
tinyxml
cgal
@@ -45,12 +47,12 @@ mkDerivation {
rm $out/bin/AppCSXCAD.sh
'';
meta = with lib; {
meta = {
description = "Minimal Application using the QCSXCAD library";
mainProgram = "AppCSXCAD";
homepage = "https://github.com/thliebig/AppCSXCAD";
license = licenses.gpl3;
maintainers = with maintainers; [ matthuszagh ];
platforms = platforms.linux;
license = lib.licenses.gpl3;
maintainers = with lib.maintainers; [ matthuszagh ];
platforms = lib.platforms.linux;
};
}
})
+3 -2
View File
@@ -14,6 +14,8 @@
apis ? [ "*" ],
# Whether to enable AWS' custom memory management.
customMemoryManagement ? true,
# Builds in 2+h with 2 cores, and ~10m with a big-parallel builder.
requiredSystemFeatures ? [ "big-parallel" ],
}:
let
@@ -116,8 +118,7 @@ stdenv.mkDerivation rec {
__darwinAllowLocalNetworking = true;
# Builds in 2+h with 2 cores, and ~10m with a big-parallel builder.
requiredSystemFeatures = [ "big-parallel" ];
inherit requiredSystemFeatures;
passthru = {
tests = {
@@ -369,7 +369,7 @@ stdenv.mkDerivation rec {
# On Darwin, the last argument to gcc is coming up as an empty string. i.e: ''
# This is breaking the build of any C target. This patch removes the last
# argument if it's found to be an empty string.
../trim-last-argument-to-gcc-if-empty.patch
./trim-last-argument-to-gcc-if-empty.patch
# --experimental_strict_action_env (which may one day become the default
# see bazelbuild/bazel#2574) hardcodes the default
@@ -377,13 +377,13 @@ stdenv.mkDerivation rec {
# This is non hermetic on non-nixos systems. On NixOS, bazel cannot find the required binaries.
# So we are replacing this bazel paths by defaultShellPath,
# improving hermeticity and making it work in nixos.
(replaceVars ../strict_action_env.patch {
(replaceVars ./strict_action_env.patch {
strictActionEnvPatch = defaultShellPath;
})
# bazel reads its system bazelrc in /etc
# override this path to a builtin one
(replaceVars ../bazel_rc.patch {
(replaceVars ./bazel_rc.patch {
bazelSystemBazelRCPath = bazelRC;
})
]
+38 -15
View File
@@ -3,10 +3,19 @@
stdenv,
fetchFromGitHub,
autoreconfHook,
# doc: https://github.com/ivmai/bdwgc/blob/v8.2.8/doc/README.macros (LARGE_CONFIG)
# doc: https://github.com/bdwgc/bdwgc/blob/v8.2.8/doc/README.macros (LARGE_CONFIG)
enableLargeConfig ? false,
enableMmap ? true,
enableStatic ? false,
# Allows derivation users to increase the initial mark stack size to avoid stack overflows,
# since these inhibit parallel marking (see `GC_mark_some()` in `mark.c`.)
#
# Run Nix with the `GC_PRINT_STATS=1` environment set to check if the mark stack is too small.
# Look for messages such as `Mark stack overflow`, `No room to copy back mark stack`, and
# `Grew mark stack to ... frames`.
#
# If this parameter is set to `null`, the default from upstream is used, which is 4096 as of 8.2.8
initialMarkStackSize ? null,
nixVersions,
}:
@@ -15,7 +24,7 @@ stdenv.mkDerivation (finalAttrs: {
version = "8.2.8";
src = fetchFromGitHub {
owner = "ivmai";
owner = "bdwgc";
repo = "bdwgc";
rev = "v${finalAttrs.version}";
hash = "sha256-UQSLK/05uPal6/m+HMz0QwXVII1leonlmtSZsXjJ+/c=";
@@ -40,18 +49,32 @@ stdenv.mkDerivation (finalAttrs: {
++ lib.optional enableMmap "--enable-mmap"
++ lib.optional enableLargeConfig "--enable-large-config";
# This stanza can be dropped when a release fixes this issue:
# https://github.com/ivmai/bdwgc/issues/376
# The version is checked with == instead of versionAtLeast so we
# don't forget to disable the fix (and if the next release does
# not fix the problem the test failure will be a reminder to
# extend the set of versions requiring the workaround).
makeFlags = lib.optionals (stdenv.hostPlatform.isPower64 && finalAttrs.version == "8.2.8") [
# do not use /proc primitives to track dirty bits; see:
# https://github.com/ivmai/bdwgc/issues/479#issuecomment-1279687537
# https://github.com/ivmai/bdwgc/blob/54522af853de28f45195044dadfd795c4e5942aa/include/private/gcconfig.h#L741
"CFLAGS_EXTRA=-DNO_SOFT_VDB"
];
makeFlags =
let
defineFlag = flag: "-D${flag}";
# This stanza can be dropped when a release fixes this issue:
# https://github.com/bdwgc/bdwgc/issues/376
# The version is checked with == instead of versionAtLeast so we
# don't forget to disable the fix (and if the next release does
# not fix the problem the test failure will be a reminder to
# extend the set of versions requiring the workaround).
noSoftVDB = lib.optional (stdenv.hostPlatform.isPower64 && finalAttrs.version == "8.2.8") (
# do not use /proc primitives to track dirty bits; see:
# https://github.com/bdwgc/bdwgc/issues/479#issuecomment-1279687537
# https://github.com/bdwgc/bdwgc/blob/54522af853de28f45195044dadfd795c4e5942aa/include/private/gcconfig.h#L741
"NO_SOFT_VDB"
);
initialMarkStackSizeFlag = lib.optionals (initialMarkStackSize != null) [
"INITIAL_MARK_STACK_SIZE=${toString initialMarkStackSize}"
];
cflagsExtra = noSoftVDB ++ initialMarkStackSizeFlag;
in
lib.optionals (cflagsExtra != [ ]) [
"CFLAGS_EXTRA=${lib.concatMapStringsSep " " defineFlag cflagsExtra}"
];
# OpenBSD patches lld (!!!!) to inject this symbol into every linker invocation.
# We are obviously not doing that.
@@ -91,7 +114,7 @@ stdenv.mkDerivation (finalAttrs: {
Alternatively, the garbage collector may be used as a leak detector for
C or C++ programs, though that is not its primary goal.
'';
changelog = "https://github.com/ivmai/bdwgc/blob/v${finalAttrs.version}/ChangeLog";
changelog = "https://github.com/bdwgc/bdwgc/blob/v${finalAttrs.version}/ChangeLog";
license = "https://hboehm.info/gc/license.txt"; # non-copyleft, X11-style license
maintainers = with lib.maintainers; [ ];
platforms = lib.platforms.all;
+2 -2
View File
@@ -75,13 +75,13 @@ let
in
stdenv.mkDerivation rec {
pname = "cinnamon";
version = "6.4.10";
version = "6.4.11";
src = fetchFromGitHub {
owner = "linuxmint";
repo = "cinnamon";
rev = version;
hash = "sha256-8yg39x5rWxJ2IcDFO4AjqrctPSjqdUSfmrKbjT3Yx+0=";
hash = "sha256-Hqjsi07qkVGobVwiXgLwZexjssQN0UN1BJo8b8JlpkY=";
};
patches = [
+3 -3
View File
@@ -18,18 +18,18 @@
rustPlatform.buildRustPackage (finalAttrs: {
pname = "cinny-desktop";
# We have to be using the same version as cinny-web or this isn't going to work.
version = "4.9.0";
version = "4.10.0";
src = fetchFromGitHub {
owner = "cinnyapp";
repo = "cinny-desktop";
tag = "v${finalAttrs.version}";
hash = "sha256-C4wAl9H0ZCsUk5hJk8u0Om70UqX4D9/iWDYOgalksu8=";
hash = "sha256-YEu1qTI2ExfS+WKFxNGkubr+HOCCuWGpZFk3hS3srCU=";
};
sourceRoot = "${finalAttrs.src.name}/src-tauri";
cargoHash = "sha256-XQLp5copZLClscPv9Eb3ceOw0WGlNHwIH69MdFih84w=";
cargoHash = "sha256-NksWHI2TJR0YMGRIDHBxrQPGHiir2Kn4bxnSvO7EzoA=";
postPatch =
let
+3 -3
View File
@@ -13,16 +13,16 @@
buildNpmPackage rec {
pname = "cinny-unwrapped";
version = "4.9.0";
version = "4.10.0";
src = fetchFromGitHub {
owner = "cinnyapp";
repo = "cinny";
tag = "v${version}";
hash = "sha256-tvBaONJwfkCK77aHmWJ/UAAZHq2WIc7geNT2tEFKuZ0=";
hash = "sha256-KpN6ul+kzGarBKnXXSP3gf9KlRII869xnfT95mzacRc=";
};
npmDepsHash = "sha256-9faffTlXEI1lMrVrkSyso/tfjs/4W+TVzmiv+bZAv18=";
npmDepsHash = "sha256-N5xHu4AmgRdd3gM+YTu+fbtAw1YDp4SMXdXUbbJnIZc=";
nativeBuildInputs = [
python3
+18 -14
View File
@@ -90,29 +90,33 @@ llvmPackages_19.stdenv.mkDerivation (finalAttrs: {
dontCargoSetupPostUnpack = true;
# Should not be necessary after 25.9
patches = lib.optional (lib.versions.majorMinor version == "25.8") (fetchpatch {
url = "https://github.com/ClickHouse/ClickHouse/commit/67a42b78cdf1c793e78c1adbcc34162f67044032.patch";
sha256 = "7VF+JSztqTWD+aunCS3UVNxlRdwHc2W5fNqzDyeo3Fc=";
});
patches =
lib.optional (lib.versions.majorMinor version == "25.8") (fetchpatch {
# Disable building WASM lexer
url = "https://github.com/ClickHouse/ClickHouse/commit/67a42b78cdf1c793e78c1adbcc34162f67044032.patch";
sha256 = "7VF+JSztqTWD+aunCS3UVNxlRdwHc2W5fNqzDyeo3Fc=";
})
++
lib.optional (lib.versions.majorMinor version == "25.8" && stdenv.hostPlatform.isDarwin)
(fetchpatch {
# Do not intercept memalign on darwin
url = "https://github.com/ClickHouse/ClickHouse/commit/0cfd2dbe981727fb650f3b9935f5e7e7e843180f.patch";
sha256 = "1iNYZbugX2g2dxNR1ZiUthzPnhLUR8g118aG23yhgUo=";
});
postPatch = ''
patchShebangs src/ utils/
sed -i 's|/usr/bin/env perl|"${lib.getExe perl}"|' contrib/openssl-cmake/CMakeLists.txt
substituteInPlace utils/list-licenses/list-licenses.sh \
--replace-fail '$(git rev-parse --show-toplevel)' "$NIX_BUILD_TOP/$sourceRoot"
''
+ lib.optionalString (lib.versions.majorMinor version <= "25.6") ''
substituteInPlace src/Storages/System/StorageSystemLicenses.sh \
--replace-fail '$(git rev-parse --show-toplevel)' "$NIX_BUILD_TOP/$sourceRoot"
''
+ lib.optionalString stdenv.hostPlatform.isDarwin ''
substituteInPlace cmake/tools.cmake \
--replace-fail 'gfind' 'find' \
--replace-fail 'ggrep' 'grep' \
--replace-fail '--ld-path=''${LLD_PATH}' '-fuse-ld=lld'
substituteInPlace utils/list-licenses/list-licenses.sh \
--replace-fail 'gfind' 'find' \
--replace-fail 'ggrep' 'grep'
''
# Rust is handled by cmake
+ lib.optionalString rustSupport ''
+3 -3
View File
@@ -6,16 +6,16 @@
buildGoModule rec {
pname = "cloudprober";
version = "0.14.0";
version = "0.14.1";
src = fetchFromGitHub {
owner = "cloudprober";
repo = "cloudprober";
tag = "v${version}";
hash = "sha256-t32mALyxtapPSzf/pNG0MGS2jjq0Dwm31qQZAlZI5zE=";
hash = "sha256-XFMjUwsRfWAnrNsegUPqWz8Bcc/naEBhytqq/o21ras=";
};
vendorHash = "sha256-u/glcoLlNXDEWFblnuvRHK9mUNCXTsfcWR+FDsJeOOA=";
vendorHash = "sha256-+EVcYFnWPSNfxUzxuL3tAHjCCDad/7K11y3dk2CUtrU=";
checkFlags =
let
+3 -3
View File
@@ -12,18 +12,18 @@
}:
rustPlatform.buildRustPackage (finalAttrs: {
pname = "codex";
version = "0.29.0";
version = "0.30.0";
src = fetchFromGitHub {
owner = "openai";
repo = "codex";
tag = "rust-v${finalAttrs.version}";
hash = "sha256-YCQfycmDPRxMAqo57tt/6IXkUn1JIPTzEHMNbt7m3w0=";
hash = "sha256-9dWVf5Q7sDfAbRIGvUqqwEouJRnS//ujlFvqZ/a8zBk=";
};
sourceRoot = "${finalAttrs.src.name}/codex-rs";
cargoHash = "sha256-kGjpqkV0OJW8mOW/OhyfXoTgLHHrtHQcw9c8zyVtzgs=";
cargoHash = "sha256-qJn2oN/9LVLhHnaNp+x9cUEMODrGrgV3SiR0ykIx7B4=";
nativeBuildInputs = [
installShellFiles
+3 -3
View File
@@ -19,18 +19,18 @@ let
in
stdenv.mkDerivation (finalAttrs: {
pname = "devcontainer";
version = "0.80.0";
version = "0.80.1";
src = fetchFromGitHub {
owner = "devcontainers";
repo = "cli";
tag = "v${finalAttrs.version}";
hash = "sha256-p6iBDNTGYgOPQUTRbiu8IT7kN72OCrw7R0ouhWW9yok=";
hash = "sha256-riDe8j/DCSuXpuFi27tmT5KjruuJiCrUeP022V4sYjU=";
};
yarnOfflineCache = fetchYarnDeps {
yarnLock = "${finalAttrs.src}/yarn.lock";
hash = "sha256-LqrNRBMAWUqJH0+a17dIJgpKFP2rlECnWi4eVFfUTFg=";
hash = "sha256-joctNMzQXC/A9A69sJkKbED9pqMcbK1ZYiHPdJBJKCE=";
};
nativeBuildInputs = [
+3 -3
View File
@@ -6,18 +6,18 @@
}:
rustPlatform.buildRustPackage (finalAttrs: {
pname = "emmylua_doc_cli";
version = "0.12.0";
version = "0.13.0";
src = fetchFromGitHub {
owner = "EmmyLuaLs";
repo = "emmylua-analyzer-rust";
tag = finalAttrs.version;
hash = "sha256-IXoiXfRnGOZQ7c8AJaK8OGjqp1bczd/tKjtpbYdCZlU=";
hash = "sha256-93PlsVvlUravsnW7YBCii04jCEJPP+6U2vYbVBjcX8M=";
};
buildAndTestSubdir = "crates/emmylua_doc_cli";
cargoHash = "sha256-7QQipbnqelLdzQr+lIORyQNM9SS5yHaJLQ31M52lYCw=";
cargoHash = "sha256-SbsYlIVWDpBU2bxJqXUtOiMHkOoa8Up27X7rVKLLLm0=";
nativeInstallCheckInputs = [
versionCheckHook
@@ -0,0 +1,21 @@
diff --git a/src/raster_to_epson.c b/src/raster_to_epson.c
index 6e621c8..a5ca797 100644
--- a/src/raster_to_epson.c
+++ b/src/raster_to_epson.c
@@ -438,14 +438,14 @@ static int print_page (void)
break;
}
- if (eps_raster_print(raster_h, image_raw, pageRegion.bytesPerLine, pageRegion.width, &nraster)) {
+ if (eps_raster_print(raster_h, image_raw, pageRegion.bytesPerLine, pageRegion.width, (int *) &nraster)) {
error = 1;
break;
}
}
// flushing page
- eps_raster_print(raster_h, NULL, 0, 0, &nraster);
+ eps_raster_print(raster_h, NULL, 0, 0, (int *) &nraster);
bAbort = (error) ? TRUE : FALSE;
if (epcgEndPage (bAbort)) {
@@ -0,0 +1,23 @@
diff --git a/src/pagemanager/pagemanager.c b/src/pagemanager/pagemanager.c
index 029e6d3..2881585 100644
--- a/src/pagemanager/pagemanager.c
+++ b/src/pagemanager/pagemanager.c
@@ -23,6 +23,7 @@
#include "debuglog.h"
#include "memory.h"
#include "raster.h"
+#include "raster-helper.h"
#include "pagemanager.h"
extern int JobCanceled;
diff --git a/src/raster_to_epson.c b/src/raster_to_epson.c
index 6e621c8..6eea77c 100644
--- a/src/raster_to_epson.c
+++ b/src/raster_to_epson.c
@@ -36,6 +36,7 @@
#include "raster.h"
#include "memory.h"
#include "raster_to_epson.h"
+#include "raster-helper.h"
#include "pagemanager.h"
#include "filter_option.h"
@@ -0,0 +1,131 @@
{
autoreconfHook,
cups,
libjpeg,
rpmextract,
fetchurl,
lib,
stdenv,
}:
let
srcdirs = {
filter = "epson-inkjet-printer-filter-1.0.0";
driver = "epson-inkjet-printer-workforce-840-series-1.0.0";
};
in
stdenv.mkDerivation (finalAttrs: {
pname = "epson-inkjet-printer-workforce-840-series";
version = "1.0.0";
# The Epson may be unreliable, and it has been since sometime in
# 2024. Non-browser requests using commands like fetchurl receive a
# 403 error, an access denied response -- last checked on
# 2025-08-21.
#
# Therefore, an archive.org link has been added as a fallback
# option just in case.
src = fetchurl {
# NOTE: Don't forget to update the webarchive link too!
urls = [
"https://download.ebz.epson.net/dsc/op/stable/SRPMS/epson-inkjet-printer-workforce-840-series-${finalAttrs.version}-1lsb3.2.src.rpm"
"https://web.archive.org/web/https://download.ebz.epson.net/dsc/op/stable/SRPMS/epson-inkjet-printer-workforce-840-series-${finalAttrs.version}-1lsb3.2.src.rpm"
];
hash = "sha256-rTYnEmgzqR/wOZYYIe2rO9x2cX8s2qDyTuRaTjzJjbg=";
};
sourceRoot = srcdirs.filter;
nativeBuildInputs = [
autoreconfHook
rpmextract
];
buildInputs = [
cups
libjpeg
];
unpackPhase = ''
runHook preUnpack
rpmextract "$src"
for i in ${lib.concatStringsSep " " (builtins.attrValues srcdirs)}; do
tar xvf "$i".tar.gz
done
runHook postUnpack
'';
# Both patches fix errors that occur when building with GCC 14.
#
# eps_raster_print-cast.patch fixes 'error: passing argument 5 of
# eps_raster_print from incompatible pointer type' in file
# raster_to_epson.c
#
# include-raster-helper.patch fixes 'error: implicit declaration of
# function' in files pagemanager.c and raster_to_epson.c
patches = [
./eps_raster_print-cast.patch
./include-raster-helper.patch
];
installPhase =
let
filterdir = "$out/lib/cups/filter";
docdir = "$out/share/doc/epson-inkjet-printer-workforce-840-series";
ppddir = "$out/share/cups/model/epson-inkjet-printer-workforce-840-series";
libdir =
if stdenv.hostPlatform.isx86_64 then
"lib64"
else
throw "Platforms other than x86_64-linux are not (yet) supported.";
in
''
runHook preInstall
mkdir -p "$out" "${docdir}" "${filterdir}" "${ppddir}"
cp src/epson_inkjet_printer_filter "${filterdir}"
cp AUTHORS COPYING COPYING.EPSON COPYING.LIB "${docdir}"
cd ../${srcdirs.driver}
cp Manual.txt README "${docdir}"
for ppd in ppds/*; do
substituteInPlace "$ppd" --replace-fail '/opt/epson-inkjet-printer-workforce-840-series/cups/lib' "$out/lib/cups"
gzip -c "$ppd" > "${ppddir}/''${ppd#*/}"
done
cp -r resource watermark ${libdir} "$out"
runHook postInstall
'';
meta = {
description = "Proprietary CUPS drivers for Epson inkjet printers";
longDescription = ''
This software is a filter program used with the Common UNIX Printing
System (CUPS) under Linux. It supplies high quality printing with
Seiko Epson Color Ink Jet Printers.
This printer driver is supporting the following printers.
Epson Stylus Office BX925
Epson WorkForce 840
To use the driver adjust your configuration.nix file:
```nix
{
services.printing = {
enable = true;
drivers = [ pkgs.epson-inkjet-printer-workforce-840-series ];
};
}
```
'';
downloadPage = "http://download.ebz.epson.net/dsc/du/02/DriverDownloadInfo.do?LG2=EN&CN2=&DSCMI=16839&DSCCHK=3d7bc6bdfca08006abfb859fb1967183156a7252";
license = with lib.licenses; [
lgpl21
epson
];
maintainers = with lib.maintainers; [ heichro ];
platforms = [ "x86_64-linux" ];
};
})
+2 -2
View File
@@ -6,13 +6,13 @@
buildGoModule rec {
pname = "flarectl";
version = "0.115.0";
version = "0.116.0";
src = fetchFromGitHub {
owner = "cloudflare";
repo = "cloudflare-go";
rev = "v${version}";
hash = "sha256-2LdsqCqRTruTHYPwuI9Gm07cpvQNOrZvIl6rjZU+0aU=";
hash = "sha256-DibRQmvwe58O1pcelx37fv3WFlWDcEbWeg+sJlxzDMU=";
};
vendorHash = "sha256-f+bNNwbTj348JJJLST2j7h8/A79qzvGlf8MjldVvtGU=";
+4 -4
View File
@@ -1,8 +1,8 @@
import ./generic.nix {
version = "11.0.4";
hash = "sha256-RI6eCJx1QTDkzY1oFKwCQyOrRXMd0TFihWofC4ZCv44=";
npmDepsHash = "sha256-wsjosyZ5J5mU7ixbWjXnbqkvgnOE0dGz81vVqaI61go=";
vendorHash = "sha256-Zfjp6EKiO74wYgvc85AwtDg+3Nf7lEa1ZKQMMcYPM34=";
version = "11.0.5";
hash = "sha256-r1PR2WfJUvt+5K9RQi+9+xJmhtpqP6cGzEk77DiZUlE=";
npmDepsHash = "sha256-1lY08jBTx3DRhoaup02076EL9n85y57WCsS/cNcM4aw=";
vendorHash = "sha256-Jh8u+iCBhYdKcLj4IzcKtJBnzvclvUeYbR/hjMN+cPs=";
lts = true;
nixUpdateExtraArgs = [
"--override-filename"
+4 -4
View File
@@ -1,8 +1,8 @@
import ./generic.nix {
version = "12.0.2";
hash = "sha256-BkyzOrpwKkROKiZgSCr8Z7n8WO6qnkDyCBJ4HWO71Ws=";
npmDepsHash = "sha256-kq2AV1D0xA4Csm8XUTU5D0iCmyuajcnwlLdPjJ/mj1g=";
vendorHash = "sha256-B9menPCDUOYHPCS0B5KpxuE03FdFXmA8XqkiYEAxs5Y=";
version = "12.0.3";
hash = "sha256-3uXGDX1uKxXehiMBG1cMIttJFRACIm3UE8U2OtUWjOQ=";
npmDepsHash = "sha256-V8FUoL9y36bagkg8Scttv/IzKg+MIIqp7witvT8bSWA=";
vendorHash = "sha256-GE3trnaWuAVSEfi11tZo5JXedWOYOMzcHQ3GFyISVTQ=";
lts = false;
nixUpdateExtraArgs = [
"--override-filename"
+12 -2
View File
@@ -33,10 +33,20 @@ rustPlatform.buildRustPackage (finalAttrs: {
cargoHash = "sha256-AdatJNDqIoRHfaf81iFhOs2JGLIxy7agFJj96bFPj00=";
npmDeps = fetchNpmDeps {
inherit (finalAttrs) pname version src;
hash = "sha256-izCl3pE15ocEGYOYCUR1iTR+82nDB06Ed4YOGRGByfI=";
inherit (finalAttrs)
pname
version
src
patches
;
hash = "sha256-ehXGLpCCN+BNqtwjEatcfR0kQHj5WOofTDR5mLSVW0U=";
};
patches = [
# Remove after https://github.com/gulbanana/gg/pull/68 is released
./update-tauri-npm-to-match-cargo.patch
];
nativeBuildInputs = [
cargo-tauri.hook
nodejs
@@ -0,0 +1,81 @@
From 627de4bd148229a1feb327262b9f0b2a75077ed3 Mon Sep 17 00:00:00 2001
From: Mitchell Skaggs <skaggsm333@gmail.com>
Date: Mon, 1 Sep 2025 19:02:19 -0500
Subject: [PATCH] update `@tauri-apps/api` and `@tauri-apps/plugin-shell` to
match Cargo versions
In Tauri *CLI* versions >=2.8.0, the build fails if NPM and Cargo versions
are not aligned. This is not a new requirement, this merely verifies an
existing requirement. The CLI version in Nixpkgs was updated and now
detects this already-existing error.
This pulls the NPM versions up to match the existing Cargo versions
without touching any other dependencies.
---
package-lock.json | 18 +++++++++---------
package.json | 4 ++--
2 files changed, 11 insertions(+), 11 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index 3affe19..ebe27e7 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -9,8 +9,8 @@
"version": "0.29.0",
"dependencies": {
"@catppuccin/palette": "^1.0.3",
- "@tauri-apps/api": "^2.0.0-beta.0",
- "@tauri-apps/plugin-shell": "^2.0.0-beta.0",
+ "@tauri-apps/api": "^2.4.1",
+ "@tauri-apps/plugin-shell": "2.2.1",
"feather-icons": "^4.29.1",
"modern-normalize": "^2.0.0"
},
@@ -793,9 +793,9 @@
}
},
"node_modules/@tauri-apps/api": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/@tauri-apps/api/-/api-2.1.1.tgz",
- "integrity": "sha512-fzUfFFKo4lknXGJq8qrCidkUcKcH2UHhfaaCNt4GzgzGaW2iS26uFOg4tS3H4P8D6ZEeUxtiD5z0nwFF0UN30A==",
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/@tauri-apps/api/-/api-2.4.1.tgz",
+ "integrity": "sha512-5sYwZCSJb6PBGbBL4kt7CnE5HHbBqwH+ovmOW6ZVju3nX4E3JX6tt2kRklFEH7xMOIwR0btRkZktuLhKvyEQYg==",
"license": "Apache-2.0 OR MIT",
"funding": {
"type": "opencollective",
@@ -1002,9 +1002,9 @@
}
},
"node_modules/@tauri-apps/plugin-shell": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/@tauri-apps/plugin-shell/-/plugin-shell-2.0.1.tgz",
- "integrity": "sha512-akU1b77sw3qHiynrK0s930y8zKmcdrSD60htjH+mFZqv5WaakZA/XxHR3/sF1nNv9Mgmt/Shls37HwnOr00aSw==",
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/@tauri-apps/plugin-shell/-/plugin-shell-2.2.1.tgz",
+ "integrity": "sha512-G1GFYyWe/KlCsymuLiNImUgC8zGY0tI0Y3p8JgBCWduR5IEXlIJS+JuG1qtveitwYXlfJrsExt3enhv5l2/yhA==",
"license": "MIT OR Apache-2.0",
"dependencies": {
"@tauri-apps/api": "^2.0.0"
@@ -2054,4 +2054,4 @@
"license": "ISC"
}
}
-}
\ No newline at end of file
+}
diff --git a/package.json b/package.json
index 6000620..9d61871 100644
--- a/package.json
+++ b/package.json
@@ -14,8 +14,8 @@
},
"dependencies": {
"@catppuccin/palette": "^1.0.3",
- "@tauri-apps/api": "^2.0.0-beta.0",
- "@tauri-apps/plugin-shell": "^2.0.0-beta.0",
+ "@tauri-apps/api": "^2.4.1",
+ "@tauri-apps/plugin-shell": "2.2.1",
"feather-icons": "^4.29.1",
"modern-normalize": "^2.0.0"
},
+2 -2
View File
@@ -7,13 +7,13 @@
buildDotnetModule rec {
pname = "gh-gei";
version = "1.18.0";
version = "1.18.1";
src = fetchFromGitHub {
owner = "github";
repo = "gh-gei";
rev = "v${version}";
hash = "sha256-AMmeuobgJ+DSRG4zS7RP5l3/BraqQxXB+ygLDc3XnOs=";
hash = "sha256-ZMFom0irZa63Nzx7wViinmN6yRfiHxQFprJdIx1Ak2Y=";
};
dotnet-sdk = dotnetCorePackages.sdk_8_0_4xx;
+73
View File
@@ -0,0 +1,73 @@
{
lib,
fetchFromGitHub,
python3Packages,
installShellFiles,
versionCheckHook,
}:
python3Packages.buildPythonApplication rec {
pname = "globus-cli";
version = "3.36.0";
pyproject = true;
src = fetchFromGitHub {
owner = "globus";
repo = "globus-cli";
tag = version;
hash = "sha256-Phu7nXMICSBFUX8wfzwA4ORBJIkhTDCMCqTyZvcG93c=";
};
build-system = with python3Packages; [
setuptools
ruamel-yaml
];
dependencies = with python3Packages; [
globus-sdk
click
jmespath
packaging
typing-extensions
requests
];
nativeBuildInputs = [ installShellFiles ];
nativeCheckInputs = with python3Packages; [
pytest
pytest-xdist
pytest-timeout
responses
click
requests
pyjwt
cryptography
packaging
typing-extensions
pytestCheckHook
versionCheckHook
];
versionCheckProgramArg = "version";
postInstall = ''
mkdir -p completions/{bash,zsh}
$out/bin/globus --bash-completer > completions/bash/globus
$out/bin/globus --zsh-completer > completions/zsh/_globus
installShellCompletion \
--bash completions/bash/globus \
--zsh completions/zsh/_globus
'';
meta = {
mainProgram = "globus";
description = "Command-line interface to Globus REST APIs, including the Transfer API and the Globus Auth API";
homepage = "https://github.com/globus/globus-cli";
changelog = "https://github.com/globus/globus-cli/releases/tag/${src.tag}";
license = lib.licenses.asl20;
maintainers = [ lib.maintainers.richardjacton ];
};
}
+2 -2
View File
@@ -6,7 +6,7 @@
}:
let
version = "1.7.49.2";
version = "1.7.49.4";
in
stdenvNoCC.mkDerivation {
pname = "grav";
@@ -14,7 +14,7 @@ stdenvNoCC.mkDerivation {
src = fetchzip {
url = "https://github.com/getgrav/grav/releases/download/${version}/grav-admin-v${version}.zip";
hash = "sha256-Yu7uFoim12pe4OT/dSsQVcZ6nyYGKWLJbsfLFtI05Z8=";
hash = "sha256-ZOhZ5O5s8P4nqjSsLEu4RpyTfZ34YBi0itETwcRdIPQ=";
};
patches = [
@@ -1,54 +0,0 @@
{
lib,
stdenv,
grub2_xen,
}:
let
efiSystemsBuild = {
i686-linux.target = "i386";
x86_64-linux.target = "x86_64";
armv7l-linux.target = "arm";
aarch64-linux.target = "aarch64";
riscv32-linux.target = "riscv32";
riscv64-linux.target = "riscv64";
};
in
(
stdenv.mkDerivation rec {
name = "pvgrub-image";
configs = ./configs;
buildInputs = [ grub2_xen ];
buildCommand = ''
cp "${configs}"/* .
tar -cf memdisk.tar grub.cfg
# We include all modules except all_video.mod as otherwise grub will fail printing "no symbol table"
# if we include it.
grub-mkimage -O "${
efiSystemsBuild.${stdenv.hostPlatform.system}.target
}-xen" -c grub-bootstrap.cfg \
-m memdisk.tar -o "grub-${efiSystemsBuild.${stdenv.hostPlatform.system}.target}-xen.bin" \
$(ls "${grub2_xen}/lib/grub/${
efiSystemsBuild.${stdenv.hostPlatform.system}.target
}-xen/" |grep 'mod''$'|grep -v '^all_video\.mod''$')
mkdir -p "$out/lib/grub-xen"
cp "grub-${efiSystemsBuild.${stdenv.hostPlatform.system}.target}-xen.bin" $out/lib/grub-xen/
'';
meta = with lib; {
description = "PvGrub image for use for booting PV Xen guests";
longDescription = ''
This package provides a PvGrub image for booting Para-Virtualized (PV)
Xen guests
'';
platforms = platforms.gnu ++ platforms.linux;
};
}
)
@@ -0,0 +1,83 @@
{
lib,
stdenv,
grub2_xen,
grub2_xen_pvh,
grubPlatform ? "xen_pvh",
}:
assert lib.assertOneOf "grubPlatform" grubPlatform [
"xen"
"xen_pvh"
];
let
targets = {
i686-linux.target = "i386";
x86_64-linux.target = if grubPlatform == "xen_pvh" then "i386" else "x86_64";
};
in
stdenv.mkDerivation {
name = "grub2_${grubPlatform}_image";
env = {
GRUB_CONFIGS = "${./configs}";
GRUB_FORMAT = "${targets.${stdenv.buildPlatform.system}.target}-${grubPlatform}";
};
buildInputs =
lib.optional (grubPlatform == "xen") grub2_xen
++ lib.optional (grubPlatform == "xen_pvh") grub2_xen_pvh;
dontUnpack = true;
buildPhase = ''
cp "$GRUB_CONFIGS"/* .
tar -cf memdisk.tar grub.cfg
grub-mkimage \
-O "$GRUB_FORMAT" \
-c grub-bootstrap.cfg \
-m memdisk.tar \
-o grub-"$GRUB_FORMAT".bin \
${if grubPlatform == "xen_pvh" then grub2_xen_pvh else grub2_xen}/lib/grub/"$GRUB_FORMAT"/*.mod
'';
installPhase = ''
mkdir -p "$out/lib/grub-${grubPlatform}"
cp grub-"$GRUB_FORMAT".bin $out/lib/grub-${grubPlatform}/
'';
dontFixup = true;
meta = {
description = "PvGrub2 image for booting ${
if grubPlatform == "xen_pvh" then "PVH" else "PV"
} Xen guests";
longDescription =
if (grubPlatform == "xen_pvh") then
''
This package provides a prebuilt PvGrub2 image for booting PVH Xen
guests (also commonly referred to as PvhGrub2), which searches for
`grub.cfg` on the guest disk and interprets it to load the kernel,
eliminating the need to copy the guest kernel to the Dom0.
You will need `pkgs.grub2_xen_pvh` to build a customized PvhGrub2
image. See [PvGrub2](https://wiki.xenproject.org/wiki/PvGrub2) for
more explanations.
''
else
''
This package provides a prebuilt PvGrub2 image for booting PV Xen
guests, which searches for `grub.cfg` on the guest disk and interprets
it to load the kernel, eliminating the need to copy the guest kernel
to the Dom0.
You will need `pkgs.grub2_xen` to build a customized PvGrub2 image.
See [PvGrub2](https://wiki.xenproject.org/wiki/PvGrub2) for more
explanations.
'';
teams = [ lib.teams.xen ];
platforms = lib.attrNames targets;
};
}
+1
View File
@@ -24,6 +24,7 @@ stdenv.mkDerivation rec {
preConfigure = ''
substituteInPlace libhidx/cmake_modules/Findasio.cmake --replace-fail '/usr/include/asio' '${lib.getDev asio}/include/asio'
substituteInPlace libhidx/libhidx/src/Connector.cc --replace-fail '/usr/local/libexec' "$out/libexec"
'';
nativeBuildInputs = [
+2 -2
View File
@@ -10,7 +10,7 @@
kddockwidgets,
kdePackages,
libelf,
linuxPackages,
perf,
qt6,
rustc-demangle,
zstd,
@@ -74,7 +74,7 @@ stdenv.mkDerivation rec {
qtWrapperArgs = [
"--suffix PATH : ${
lib.makeBinPath [
linuxPackages.perf
perf
binutils
]
}"
@@ -25,6 +25,7 @@
pixman,
proj,
sqlite,
xz,
zstd,
}:
@@ -70,6 +71,7 @@ stdenv.mkDerivation rec {
pixman
proj
sqlite
xz # liblzma
zstd
];
+59
View File
@@ -0,0 +1,59 @@
{
lib,
stdenv,
fetchFromGitHub,
autoconf,
automake,
libtool,
rustPlatform,
}:
rustPlatform.buildRustPackage {
pname = "lightway";
version = "0-unstable-2025-09-04";
src = fetchFromGitHub {
owner = "expressvpn";
repo = "lightway";
rev = "4eb836158607c83d47226703de5a043519586782";
hash = "sha256-sNhTdJTxNxHMVswyzizgBfGbmJhYmMZY/5nVD7ScLjM=";
};
cargoHash = "sha256-3/6yEyGntyxxCqrMy2M9dtV2pWiD4M0Rtnb52I4n9nU=";
cargoDepsName = "lightway";
cargoBuildFlags = lib.cli.toGNUCommandLine { } {
package = [
"lightway-client"
"lightway-server"
];
features = lib.optionals stdenv.hostPlatform.isLinux [
"io-uring"
];
};
# Some tests rely on debug_assert! and fail in release.
# https://github.com/expressvpn/lightway/issues/274
checkType = "debug";
# For wolfSSL.
nativeBuildInputs = [
autoconf
automake
libtool
rustPlatform.bindgenHook
];
meta = {
description = "A modern VPN protocol in Rust";
homepage = "https://expressvpn.com/lightway";
license = lib.licenses.agpl3Only;
maintainers = with lib.maintainers; [
dustyhorizon
usertam
];
platforms = with lib.platforms; darwin ++ linux;
mainProgram = "lightway-client";
};
}
+62
View File
@@ -0,0 +1,62 @@
{
lib,
rustPlatform,
fetchFromGitHub,
pkg-config,
installShellFiles,
oniguruma,
rust-jemalloc-sys,
stdenv,
}:
rustPlatform.buildRustPackage (finalAttrs: {
pname = "mado";
version = "0.3.0";
src = fetchFromGitHub {
owner = "akiomik";
repo = "mado";
tag = "v${finalAttrs.version}";
hash = "sha256-wAuV4w0dKfUbJVLTdp59/u4y13SPy3wkRfTlpvyE/zY=";
};
cargoHash = "sha256-fkalUnPkjjzhLaACh+WQP4tG5VzZ7wmrh5T1DVgSDwM=";
nativeBuildInputs = [
pkg-config
installShellFiles
];
buildInputs = [
oniguruma
rust-jemalloc-sys
];
env = {
RUSTONIG_SYSTEM_LIBONIG = true;
};
postInstall = lib.optionalString (stdenv.buildPlatform.canExecute stdenv.hostPlatform) ''
installShellCompletion --cmd mado \
--bash <($out/bin/mado generate-shell-completion bash) \
--zsh <($out/bin/mado generate-shell-completion zsh) \
--fish <($out/bin/mado generate-shell-completion fish)
'';
checkFlags = [
# # seem to be slightly broken inside of the build sandbox
"--skip=check_empty_stdin_with_file"
"--skip=check_stdin"
"--skip=check_stdin_with_file"
"--skip=generate_shell_completion_invalid"
"--skip=unknown_command"
];
meta = {
description = "Markdown linter written in Rust";
homepage = "https://github.com/akiomik/mado";
changelog = "https://github.com/akiomik/mado/blob/v${finalAttrs.version}/CHANGELOG.md";
license = lib.licenses.asl20;
maintainers = with lib.maintainers; [ jasonxue1 ];
mainProgram = "mado";
};
})
@@ -6,17 +6,17 @@
rustPlatform.buildRustPackage rec {
pname = "mdbook-i18n-helpers";
version = "0.3.5";
version = "0.3.6";
src = fetchFromGitHub {
owner = "google";
repo = "mdbook-i18n-helpers";
# TODO fix once upstream uses semver for tags again
tag = "mdbook-i18n-helpers-${version}";
hash = "sha256-FdguzuYpMl6i1dvoPNE1Bk+GTmeTrqLUY/sVRsbETtU=";
hash = "sha256-9sJ9FK85UzY3ggh3h1fipbh0LraTvQJ0ZfhSGcahiDM=";
};
cargoHash = "sha256-ZBGMfJA2diPvvoIXPosUs4ngXU9/GMGa4GAlKIjwm8s=";
cargoHash = "sha256-ZinW9UFp03LXtk+9vuSNojVZtaA7uBlrpdapY48nZdY=";
meta = {
description = "Helpers for a mdbook i18n workflow based on Gettext";
-172
View File
@@ -1,172 +0,0 @@
{
lib,
stdenv,
fetchurl,
nixosTests,
copyDesktopItems,
makeDesktopItem,
makeWrapper,
wrapGAppsHook3,
gobject-introspection,
jre, # old or modded versions of the game may require Java 8 (https://aur.archlinux.org/packages/minecraft-launcher/#pinned-674960)
xorg,
zlib,
nss,
nspr,
fontconfig,
pango,
cairo,
expat,
alsa-lib,
cups,
dbus,
atk,
gtk3-x11,
gtk2-x11,
gdk-pixbuf,
glib,
curl,
freetype,
libpulseaudio,
libuuid,
systemd,
flite ? null,
libXxf86vm ? null,
}:
let
desktopItem = makeDesktopItem {
name = "minecraft-launcher";
exec = "minecraft-launcher";
icon = "minecraft-launcher";
comment = "Official launcher for Minecraft, a sandbox-building game";
desktopName = "Minecraft Launcher";
categories = [ "Game" ];
};
envLibPath = lib.makeLibraryPath [
curl
libpulseaudio
systemd
alsa-lib # needed for narrator
flite # needed for narrator
libXxf86vm # needed only for versions <1.13
];
libPath = lib.makeLibraryPath (
[
alsa-lib
atk
cairo
cups
dbus
expat
fontconfig
freetype
gdk-pixbuf
glib
pango
gtk3-x11
gtk2-x11
nspr
nss
stdenv.cc.cc
zlib
libuuid
]
++ (with xorg; [
libX11
libxcb
libXcomposite
libXcursor
libXdamage
libXext
libXfixes
libXi
libXrandr
libXrender
libXtst
libXScrnSaver
])
);
in
stdenv.mkDerivation rec {
pname = "minecraft-launcher";
version = "2.2.1441";
src = fetchurl {
url = "https://launcher.mojang.com/download/linux/x86_64/minecraft-launcher_${version}.tar.gz";
sha256 = "03q579hvxnsh7d00j6lmfh53rixdpf33xb5zlz7659pvb9j5w0cm";
};
icon = fetchurl {
url = "https://launcher.mojang.com/download/minecraft-launcher.svg";
sha256 = "0w8z21ml79kblv20wh5lz037g130pxkgs8ll9s3bi94zn2pbrhim";
};
nativeBuildInputs = [
makeWrapper
wrapGAppsHook3
copyDesktopItems
gobject-introspection
];
sourceRoot = ".";
dontWrapGApps = true;
dontConfigure = true;
dontBuild = true;
installPhase = ''
runHook preInstall
mkdir -p $out/opt
mv minecraft-launcher $out/opt
install -D $icon $out/share/icons/hicolor/symbolic/apps/minecraft-launcher.svg
runHook postInstall
'';
preFixup = ''
patchelf \
--set-interpreter ${stdenv.cc.bintools.dynamicLinker} \
--set-rpath '$ORIGIN/'":${libPath}" \
$out/opt/minecraft-launcher/minecraft-launcher
patchelf \
--set-rpath '$ORIGIN/'":${libPath}" \
$out/opt/minecraft-launcher/libcef.so
patchelf \
--set-rpath '$ORIGIN/'":${libPath}" \
$out/opt/minecraft-launcher/liblauncher.so
'';
postFixup = ''
# Do not create `GPUCache` in current directory
makeWrapper $out/opt/minecraft-launcher/minecraft-launcher $out/bin/minecraft-launcher \
--prefix LD_LIBRARY_PATH : ${envLibPath} \
--prefix PATH : ${lib.makeBinPath [ jre ]} \
--set JAVA_HOME ${lib.getBin jre} \
--chdir /tmp \
"''${gappsWrapperArgs[@]}"
'';
desktopItems = [ desktopItem ];
meta = with lib; {
description = "Official launcher for Minecraft, a sandbox-building game";
homepage = "https://minecraft.net";
maintainers = with maintainers; [ ryantm ];
sourceProvenance = with sourceTypes; [ binaryNativeCode ];
license = licenses.unfree;
platforms = [ "x86_64-linux" ];
# "minecraft-launcher will fail on NixOS for minecraft versions >1.19
# try prismlauncher or atlauncher instead"
broken = true;
};
passthru = {
tests = { inherit (nixosTests) minecraft; };
updateScript = ./update.sh;
};
}
-7
View File
@@ -1,7 +0,0 @@
#!/usr/bin/env nix-shell
#!nix-shell -i bash -p curl jq common-updater-scripts
set -eu -o pipefail
version=$(curl -s 'https://launchermeta.mojang.com/v1/products/launcher/6f083b80d5e6fabbc4236f81d0d8f8a350c665a9/linux.json' | jq -r '."launcher-core"[0].version.name')
update-source-version minecraft "${version}"
+5 -5
View File
@@ -2,7 +2,7 @@
stdenv,
lib,
fetchFromGitHub,
unstableGitUpdater,
gitUpdater,
nixosTests,
boost,
cmake,
@@ -31,13 +31,13 @@
stdenv.mkDerivation (finalAttrs: {
pname = "miracle-wm";
version = "0.6.2-unstable-2025-08-27";
version = "0.7.0";
src = fetchFromGitHub {
owner = "miracle-wm-org";
repo = "miracle-wm";
rev = "0a55a023adf511b042f922aeba666744805be988";
hash = "sha256-yf7knY1tNFeCwePsfTAMAxIma+ZeZUvqpMJe7ABahEw=";
tag = "v${finalAttrs.version}";
hash = "sha256-SAeQ7nFsr37I8XncV3eMT8JCb74CdM+xPrNBX+qf8Bc=";
};
postPatch = ''
@@ -118,7 +118,7 @@ stdenv.mkDerivation (finalAttrs: {
'';
passthru = {
updateScript = unstableGitUpdater { tagPrefix = "v"; };
updateScript = gitUpdater { rev-prefix = "v"; };
providedSessions = [ "miracle-wm" ];
tests.vm = nixosTests.miracle-wm;
};
+2 -2
View File
@@ -11,13 +11,13 @@
buildGoModule rec {
pname = "mmdbctl";
version = "1.4.7";
version = "1.4.8";
src = fetchFromGitHub {
owner = "ipinfo";
repo = "mmdbctl";
tag = "mmdbctl-${version}";
hash = "sha256-drYtuL4TzutzitLVKyUotxgyDjL7AMNnt0vVtfQhu4A=";
hash = "sha256-9s/dyORfv3lNf9W6oE1PHhaTgJFdeFa46pf54c/cwH0=";
};
vendorHash = "sha256-4T3HEzRerC4KrGQnMNSW3OVzChUIf4yJ7qS9v8mWIX4=";
+3 -2
View File
@@ -22,12 +22,12 @@ let
in
stdenvNoCC.mkDerivation (finalAttrs: {
pname = "opencode";
version = "0.6.3";
version = "0.6.4";
src = fetchFromGitHub {
owner = "sst";
repo = "opencode";
tag = "v${finalAttrs.version}";
hash = "sha256-hufgCO3g0WZT4+hX1lqmhvrthFO30c0NS3ryNJMmOxo=";
hash = "sha256-o7SzDGbWgCh8cMNK+PeLxAw0bQMKFouHdedUslpA6gw=";
};
tui = buildGoModule {
@@ -135,6 +135,7 @@ stdenvNoCC.mkDerivation (finalAttrs: {
--define OPENCODE_TUI_PATH="'${finalAttrs.tui}/bin/tui'" \
--define OPENCODE_VERSION="'${finalAttrs.version}'" \
--compile \
--compile-exec-argv="--" \
--target=${bun-target.${stdenvNoCC.hostPlatform.system}} \
--outfile=opencode \
./packages/opencode/src/index.ts \
+2 -2
View File
@@ -9,13 +9,13 @@
buildGoModule rec {
pname = "openlinkhub";
version = "0.6.1";
version = "0.6.2";
src = fetchFromGitHub {
owner = "jurkovic-nikola";
repo = "OpenLinkHub";
tag = version;
hash = "sha256-kEbJwCAs2gTNs0z8A3kOl1O4HQ4L5+urTo+hLh6vOPM=";
hash = "sha256-fmWfHJ6alB+UlHlUrwMQ/npv7SuMjAz5hT0UGhB7O/E=";
};
proxyVendor = true;
@@ -2,7 +2,7 @@
lib,
stdenv,
fetchurl,
kernel,
linux_latest,
elfutils,
python3,
newt,
@@ -20,14 +20,11 @@
binutils-unwrapped,
libiberty,
audit,
libbfd,
libbfd_2_38,
libopcodes,
libopcodes_2_38,
libpfm,
libtraceevent,
openssl,
systemtap,
systemtap-unwrapped,
numactl,
zlib,
babeltrace,
@@ -57,43 +54,28 @@ in
stdenv.mkDerivation {
pname = "perf-linux";
inherit (kernel) version src;
inherit (linux_latest) version src;
strictDeps = true;
depsBuildBuild = [ buildPackages.stdenv.cc ];
patches =
lib.optionals (lib.versionAtLeast kernel.version "5.10" && lib.versionOlder kernel.version "6.13")
[
# fix wrong path to dmesg
./fix-dmesg-path.diff
];
postPatch = ''
# Linux scripts
patchShebangs scripts
patchShebangs tools/perf/check-headers.sh
''
+ lib.optionalString (lib.versionAtLeast kernel.version "6.3") ''
# perf-specific scripts
patchShebangs tools/perf/pmu-events
''
+ ''
cd tools/perf
for x in util/build-id.c util/dso.c; do
substituteInPlace $x --replace /usr/lib/debug /run/current-system/sw/lib/debug
done
''
+ lib.optionalString (lib.versionAtLeast kernel.version "5.8") ''
substituteInPlace scripts/python/flamegraph.py \
--replace "/usr/share/d3-flame-graph/d3-flamegraph-base.html" \
"${d3-flame-graph-templates}/share/d3-flame-graph/d3-flamegraph-base.html"
''
+ lib.optionalString (lib.versionAtLeast kernel.version "6.0") ''
patchShebangs pmu-events/jevents.py
'';
@@ -137,33 +119,14 @@ stdenv.mkDerivation {
numactl
python3
babeltrace
libopcodes
libpfm
python3.pkgs.setuptools
]
++ (
if (lib.versionAtLeast kernel.version "5.19") then
[
libbfd
libopcodes
]
else
[
libbfd_2_38
libopcodes_2_38
]
)
++ lib.optional (lib.meta.availableOn stdenv.hostPlatform systemtap) systemtap.stapBuild
++ lib.optional (lib.meta.availableOn stdenv.hostPlatform systemtap-unwrapped) systemtap-unwrapped
++ lib.optional withGtk gtk2
++ lib.optional withZstd zstd
++ lib.optional withLibcap libcap
++ lib.optional (lib.versionAtLeast kernel.version "5.8") libpfm
++ lib.optional (lib.versionAtLeast kernel.version "6.0") python3.pkgs.setuptools
# Python 3.12 no longer includes distutils, not needed for 6.0 and newer.
++
lib.optional
(!(lib.versionAtLeast kernel.version "6.0") && lib.versionAtLeast python3.version "3.12")
[
python3.pkgs.distutils
python3.pkgs.packaging
];
++ lib.optional withLibcap libcap;
env.NIX_CFLAGS_COMPILE = toString [
"-Wno-error=cpp"
@@ -206,6 +169,5 @@ stdenv.mkDerivation {
mainProgram = "perf";
maintainers = with maintainers; [ tobim ];
platforms = platforms.linux;
broken = kernel.kernelOlder "5";
};
}
+3 -3
View File
@@ -6,17 +6,17 @@
}:
rustPlatform.buildRustPackage (finalAttrs: {
pname = "postgres-lsp";
version = "0.10.0";
version = "0.13.0";
src = fetchFromGitHub {
owner = "supabase-community";
repo = "postgres-language-server";
tag = finalAttrs.version;
hash = "sha256-RwUX5EXRyvmC8LCnlQQIbqnLGn7XYXjLsI9UurCAThs=";
hash = "sha256-0Q8MxKeh12STWIJ9441uTz+qQXEJjCESj21C4X8CBC4=";
fetchSubmodules = true;
};
cargoHash = "sha256-qs/M9+iZCx75wv+UcRRH4hjEuNDsnJYKAvnd0DNaRQ8=";
cargoHash = "sha256-oIbS5BUpNOXwiRconqJI/jdXeX05FIZVNl2kYt+79wY=";
nativeBuildInputs = [
rustPlatform.bindgenHook
@@ -7,11 +7,11 @@
}:
stdenvNoCC.mkDerivation rec {
pname = "powershell-editor-services";
version = "4.3.0";
version = "4.4.0";
src = fetchzip {
url = "https://github.com/PowerShell/PowerShellEditorServices/releases/download/v${version}/PowerShellEditorServices.zip";
hash = "sha256-YiXxztfsYujJK6+56Lwi4QdRIZb7NH+dAUJTOYk8pGI=";
hash = "sha256-tmz6xkcF44xnG5VwSeHNWzjRQK6wxQ7Ii6mDNisCMb8=";
stripRoot = false;
};
+54
View File
@@ -0,0 +1,54 @@
{
lib,
stdenv,
fetchFromGitHub,
cmake,
csxcad,
tinyxml,
vtkWithQt6,
qt6,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "qcsxcad";
version = "0.6.3";
src = fetchFromGitHub {
owner = "thliebig";
repo = "QCSXCAD";
tag = "v${finalAttrs.version}";
hash = "sha256-bX6e3ugHJynU9tP70BV8TadnoGg1VO7SAYJueMkMAyo=";
};
outputs = [
"out"
"dev"
];
nativeBuildInputs = [
cmake
];
cmakeFlags = [
(lib.cmakeBool "ENABLE_RPATH" false)
];
buildInputs = [
csxcad
tinyxml
vtkWithQt6
qt6.qtbase
qt6.qt5compat
qt6.qtwayland
];
dontWrapQtApps = true;
meta = {
description = "Qt library for CSXCAD";
homepage = "https://github.com/thliebig/QCSXCAD";
license = lib.licenses.gpl3;
maintainers = with lib.maintainers; [ matthuszagh ];
platforms = lib.platforms.linux;
};
})
+5
View File
@@ -71,6 +71,11 @@ python3.pkgs.buildPythonApplication rec {
python3.pkgs.pytestCheckHook
];
# Enable when https://github.com/containers/ramalama/pull/1891 is released
disabledTests = [
"test_ollama_model_pull"
];
passthru = {
tests = {
withoutPodman = ramalama.override {
+5 -1
View File
@@ -163,6 +163,7 @@ stdenv.mkDerivation rec {
passthru.tests = {
uefiCdrom = nixosTests.boot.uefiCdrom;
inherit (nixosTests) refind;
};
meta = with lib; {
@@ -183,7 +184,10 @@ stdenv.mkDerivation rec {
Linux kernels that provide EFI stub support.
'';
homepage = "http://refind.sourceforge.net/";
maintainers = with maintainers; [ johnrtitor ];
maintainers = with maintainers; [
johnrtitor
RossComputerGuy
];
platforms = [
"i686-linux"
"x86_64-linux"
+3 -3
View File
@@ -8,16 +8,16 @@
buildNpmPackage rec {
pname = "repomix";
version = "1.3.0";
version = "1.4.2";
src = fetchFromGitHub {
owner = "yamadashy";
repo = "repomix";
tag = "v${version}";
hash = "sha256-09neN7sh4TRM+rQBqCQHqW165i6+RY9IF67ft6OgyhI=";
hash = "sha256-65A8HN0Mp8QOEfIjiDZwr/qgWe57XTCdd1eBd3mm9fE=";
};
npmDepsHash = "sha256-nLxIPwx+zvYCMZ6y9ntbWvrJvO4g5J7Tf9rYk26gyAs=";
npmDepsHash = "sha256-PfElq+C8kazP3OLF5LFAZitIXhVpWdj/fCyH2S7d/zg=";
nativeInstallCheckInputs = [ versionCheckHook ];
doInstallCheck = true;
+2 -2
View File
@@ -7,14 +7,14 @@
python3.pkgs.buildPythonApplication rec {
pname = "responder";
version = "3.1.6.0";
version = "3.1.7.0";
format = "other";
src = fetchFromGitHub {
owner = "lgandx";
repo = "Responder";
tag = "v${version}";
hash = "sha256-2aNJkcdtTpw4OYHSTgJUYsGOsBD1I0ad3cSpVCS9kpo=";
hash = "sha256-ZC74VFnixSc97fRkRSOJmc39YLIP95qAUFydIcyzNdo=";
};
nativeBuildInputs = [
@@ -7,13 +7,13 @@
stdenvNoCC.mkDerivation {
pname = "roddhjav-apparmor-rules";
version = "0-unstable-2025-08-25";
version = "0-unstable-2025-09-03";
src = fetchFromGitHub {
owner = "roddhjav";
repo = "apparmor.d";
rev = "7ecc84d3b0e13f5d346a906dceda14321fddae1a";
hash = "sha256-XOatGZxhlcd1JXYJzgye/2Dok+Jmppj4cJuiYy6uhxc=";
rev = "4c84b572cda4433a664b1488e980034886652629";
hash = "sha256-GoH7LR3jIgeSTjVpz8jAzDGWrAAM7Bw3OAzwmjdnRmE=";
};
dontConfigure = true;
@@ -0,0 +1,12 @@
diff --git i/src/pc/update_checker.c w/src/pc/update_checker.c
index e83414106..53909c075 100644
--- i/src/pc/update_checker.c
+++ w/src/pc/update_checker.c
@@ -127,6 +127,7 @@ void get_version_remote(void) {
}
void check_for_updates(void) {
+ return;
LOADING_SCREEN_MUTEX(loading_screen_set_segment_text("Checking For Updates"));
get_version_remote();
+5 -3
View File
@@ -37,15 +37,17 @@ in
# note: there is a generic builder in pkgs/games/sm64ex/generic.nix that is meant to help build sm64ex and its forks; however sm64coopdx has departed significantly enough in its build that it doesn't make sense to use that other than the baseRom derivation
stdenv.mkDerivation (finalAttrs: {
pname = "sm64coopdx";
version = "1.3.0";
version = "1.3.2";
src = fetchFromGitHub {
owner = "coop-deluxe";
repo = "sm64coopdx";
rev = "v1.3"; # it seems coopdx has taken on some stylistic versioning...
hash = "sha256-ssbvNnBBxahzJRIX5Vhze+Nfh3ADoy+NrUIF2RZHye8=";
rev = "v1.3.2";
hash = "sha256-FHH3+pGowkT8asDmU9qxPNDKy4VPKlkA0X7e4gnX9KY=";
};
patches = [ ./no-update-check.patch ];
nativeBuildInputs = [ makeWrapper ];
buildInputs = [
+2 -2
View File
@@ -11,13 +11,13 @@
}:
stdenv.mkDerivation rec {
pname = "sql-formatter";
version = "15.6.6";
version = "15.6.8";
src = fetchFromGitHub {
owner = "sql-formatter-org";
repo = "sql-formatter";
rev = "v${version}";
hash = "sha256-61E3DizwO9Lml0Uu4tOhpCbzaxiDrY5vPqk2TY7fIqo=";
hash = "sha256-iq8sUwlkqfItNjniFTeJ+tXaj4nW915XPfxWzYSQawo=";
};
yarnOfflineCache = fetchYarnDeps {
@@ -0,0 +1,41 @@
{
lib,
stdenv,
fetchgit,
pkg-config,
gettext,
cpio,
elfutils,
python3,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "systemtap";
version = "5.2";
src = fetchgit {
url = "git://sourceware.org/git/systemtap.git";
rev = "release-${finalAttrs.version}";
hash = "sha256-SUPNarZW8vdK9hQaI2kU+rfKWIPiXB4BvJvRNC1T9tU=";
};
nativeBuildInputs = [
pkg-config
cpio
python3
python3.pkgs.setuptools
];
buildInputs = [
elfutils
gettext
python3
];
enableParallelBuilding = true;
meta = {
homepage = "https://sourceware.org/systemtap/";
description = "Provides a scripting language for instrumentation on a live kernel plus user-space";
license = lib.licenses.gpl2;
platforms = lib.systems.inspect.patterns.isGnu;
};
})
+17
View File
@@ -2,6 +2,7 @@
lib,
buildGoModule,
fetchFromGitea,
installShellFiles,
}:
buildGoModule rec {
@@ -28,4 +29,20 @@ buildGoModule rec {
];
mainProgram = "tea";
};
ldflags = [
"-X code.gitea.io/tea/cmd.Version=${version}"
];
nativeBuildInputs = [ installShellFiles ];
postInstall = ''
installShellCompletion --cmd tea \
--bash <($out/bin/tea completion bash) \
--fish <($out/bin/tea completion fish) \
--zsh <($out/bin/tea completion zsh)
mkdir $out/share/powershell/ -p
$out/bin/tea completion pwsh > $out/share/powershell/tea.Completion.ps1
'';
}
+3 -3
View File
@@ -5,16 +5,16 @@
}:
buildGoModule rec {
pname = "tfswitch";
version = "1.5.0";
version = "1.5.1";
src = fetchFromGitHub {
owner = "warrensbox";
repo = "terraform-switcher";
rev = "v${version}";
sha256 = "sha256-u7EnixxFds3dqNcyv+rHrGZdmwc34amq4tGGmBw0RsU=";
sha256 = "sha256-gXf6lqxWTX44fhAa34QlcKBxc4xLNVFUsGOlKvWnWKc=";
};
vendorHash = "sha256-HbNdWvKvmZDalDQoMtQMaXiT0NIFNtVowSIYO4z9h8c=";
vendorHash = "sha256-cc1ZvVCcjFlJcHs0DH4atyWISrrDfyXPK6j2dSgWD0k=";
# Disable tests since it requires network access and relies on the
# presence of release.hashicorp.com
+2 -2
View File
@@ -45,13 +45,13 @@ let
in
stdenv.mkDerivation rec {
pname = "ultrastardx";
version = "2025.8.0";
version = "2025.9.0";
src = fetchFromGitHub {
owner = "UltraStar-Deluxe";
repo = "USDX";
rev = "v${version}";
hash = "sha256-rliUJNhvbXbD+ELxwutCoQs6BO1DyJ8J/+mmYHPuvQE=";
hash = "sha256-SQqmcFchXaYNKzQHjBcisZTjAN9TTWuKXv657yWGghw=";
};
nativeBuildInputs = [
+3 -3
View File
@@ -7,16 +7,16 @@
buildNpmPackage rec {
pname = "vuetorrent";
version = "2.28.2";
version = "2.29.0";
src = fetchFromGitHub {
owner = "VueTorrent";
repo = "VueTorrent";
tag = "v${version}";
hash = "sha256-8n5OM55Z5xGLAXU6jqt2bKmrYa5ZnWatW0LsjOkJeDg=";
hash = "sha256-EnyLMaLElgGUjwxpkhTxV7aVa8l5B5wpBBzg5qyagIQ=";
};
npmDepsHash = "sha256-Sh6s7zACAUu8j9ugST71j5u5nEWGVxC6dOniE+xjP6E=";
npmDepsHash = "sha256-JA5nl+otuyloSi7JPRb8ZJe6PRAaYxuuEpqlmLE65yU=";
installPhase = ''
runHook preInstall
+3 -3
View File
@@ -9,20 +9,20 @@
}:
rustPlatform.buildRustPackage (finalAttrs: {
pname = "wasmtime";
version = "33.0.0";
version = "36.0.2";
src = fetchFromGitHub {
owner = "bytecodealliance";
repo = "wasmtime";
tag = "v${finalAttrs.version}";
hash = "sha256-/i//5kPN1/zQnfDZWuJldKdFWk/DKAf5b5P4F58rgPI=";
hash = "sha256-tcG78WubEm1zZXfNsDCwtw4QF5ip3ZjkxaLu8D4qBc4=";
fetchSubmodules = true;
};
# Disable cargo-auditable until https://github.com/rust-secure-code/cargo-auditable/issues/124 is solved.
auditable = false;
cargoHash = "sha256-4ziMGmBbQ4anXvF6wwK1ezYXHY7JBvMRmPDreNME0H8=";
cargoHash = "sha256-iCYZLKjO1kD753S1CiwTHa9qVxg9Y2ZMCKg0wod7GbQ=";
cargoBuildFlags = [
"--package"
"wasmtime-cli"
+3 -3
View File
@@ -12,16 +12,16 @@
rustPlatform.buildRustPackage (finalAttrs: {
pname = "yara-x";
version = "1.5.0";
version = "1.6.0";
src = fetchFromGitHub {
owner = "VirusTotal";
repo = "yara-x";
tag = "v${finalAttrs.version}";
hash = "sha256-YZmhwHA6PnQb3QXhbWK8cbV0CScbiD5k+HceDcV6iCI=";
hash = "sha256-LpdpdzUof+Buz5QQcWUr23AsSyfvUQYPp7RhHWXRb+I=";
};
cargoHash = "sha256-8LofNTLa3a2dDH72T54HJR/+qArXt+X6OMJIQwmjQIQ=";
cargoHash = "sha256-IO8ER92vWO3Q9MntaGwdhEFgy9G35Q3LOG5GU5rJpQY=";
nativeBuildInputs = [
installShellFiles
+3 -3
View File
@@ -10,16 +10,16 @@
buildGoModule (finalAttrs: {
pname = "ygot";
version = "0.33.0";
version = "0.34.0";
src = fetchFromGitHub {
owner = "openconfig";
repo = "ygot";
tag = "v${finalAttrs.version}";
hash = "sha256-O8nBcXRKKd+dV0jub5tVvG8WoxGMR4r1cqOmTzO+LDU=";
hash = "sha256-/dE3IsooCuIi3e+1RRA50wKB2NE8ohf46wFqZcdFKq0=";
};
vendorHash = "sha256-AgSKfy8Dbc5fRhJ2oskmkShL/mHb2FKkGZoqPyagLfE=";
vendorHash = "sha256-66hugAa31RWQxGNsVpfyLzZoXbW7KQ73ggvvInn8dw8=";
excludedPackages = [
"demo/*"
+2 -2
View File
@@ -19,14 +19,14 @@ python3Packages.buildPythonApplication rec {
# The websites yt-dlp deals with are a very moving target. That means that
# downloads break constantly. Because of that, updates should always be backported
# to the latest stable release.
version = "2025.08.27";
version = "2025.09.05";
pyproject = true;
src = fetchFromGitHub {
owner = "yt-dlp";
repo = "yt-dlp";
tag = version;
hash = "sha256-E8++/gK/SpY93UW/9U266Qj1Kkn6CeNou7bKTqpCgFw=";
hash = "sha256-9y6OUVm6hNTTi5FFmd9DHcmAMrvSmDD+4kDe00aMTDI=";
};
postPatch = ''
@@ -1,42 +0,0 @@
{
haskellLib,
fetchpatch,
buildPackages,
}:
let
inherit (haskellLib)
addBuildTools
appendConfigureFlag
dontHaddock
doJailbreak
markUnbroken
overrideCabal
;
in
self: super: {
ghcjs =
overrideCabal
(drv: {
# Jailbreak and patch can be dropped after https://github.com/ghcjs/ghcjs/pull/833
jailbreak = true;
patches = drv.patches or [ ] ++ [
(fetchpatch {
name = "ghcjs-aeson-2.0.patch";
url = "https://github.com/ghcjs/ghcjs/commit/9ef1f92d740e8503d15d91699f57db147f0474cc.patch";
sha256 = "0cgxcy6b5870bv4kj54n3bzcqinh4gl4w4r78dg43h2mblhkzbnj";
})
];
})
(
super.ghcjs.overrideScope (
self: super: {
# Allow transformers-compat >= 0.7
optparse-applicative = doJailbreak self.optparse-applicative_0_15_1_0;
ansi-wl-pprint = self.ansi-wl-pprint_0_6_9;
ansi-terminal = self.ansi-terminal_1_0_2;
ansi-terminal-types = self.ansi-terminal-types_0_11_5;
}
)
);
}
@@ -1,70 +0,0 @@
{
perl,
autoconf,
automake,
python3,
gcc,
cabal-install,
runCommand,
fetchpatch,
ghc,
happy,
alex,
ghcjsSrc,
version,
}:
runCommand "configured-ghcjs-src"
{
nativeBuildInputs = [
perl
autoconf
automake
python3
ghc
happy
alex
cabal-install
gcc
];
inherit ghcjsSrc;
ctimePatch = fetchpatch {
name = "ghcjs-base-ctime-64-bit.patch";
url = "https://github.com/ghcjs/ghcjs/commit/b7711fbca7c3f43a61f1dba526e6f2a2656ef44c.patch";
hash = "sha256-zZ3l8/5gbIGtvu0s2Xl92fEDhkhJ2c2w+5Ql5qkvr3s=";
};
}
''
export HOME=$(pwd)
mkdir $HOME/.cabal
touch $HOME/.cabal/config
cp -r "$ghcjsSrc" "$out"
chmod -R +w "$out"
cd "$out"
patch -p1 -i "$ctimePatch"
# TODO: Find a better way to avoid impure version numbers
sed -i 's/RELEASE=NO/RELEASE=YES/' ghc/configure.ac
# These files are needed by ghc-boot package, and these are generated by the
# make/hadrian build system when compiling ghc. Since we dont have access to
# the generated code of the ghc while it got built, here is a little hack to
# generate these again.
runhaskell ${./generate_host_version.hs}
mkdir -p utils/pkg-cache/ghc/libraries/ghc-boot/dist-install/build/GHC/Platform
mv Host.hs utils/pkg-cache/ghc/libraries/ghc-boot/dist-install/build/GHC/Platform/Host.hs
mv Version.hs utils/pkg-cache/ghc/libraries/ghc-boot/dist-install/build/GHC/Version.hs
# The ghcjs has the following hardcoded paths of lib dir in its code. Patching
# these to match the path expected by the nixpkgs's generic-builder, etc.
sed -i 's/libSubDir = "lib"/libSubDir = "lib\/ghcjs-${version}"/' src-bin/Boot.hs
sed -i 's@let libDir = takeDirectory haddockPath </> ".." </> "lib"@let libDir = takeDirectory haddockPath </> ".." </> "lib/ghcjs-${version}"@' src-bin/HaddockDriver.hs
patchShebangs .
./utils/makePackages.sh copy
''
@@ -1,144 +0,0 @@
{
stdenv,
pkgsHostHost,
callPackage,
fetchgit,
fetchpatch,
ghcjsSrcJson ? null,
ghcjsSrc ? fetchgit (lib.importJSON ghcjsSrcJson),
bootPkgs,
stage0,
haskellLib,
cabal-install,
nodejs,
makeWrapper,
xorg,
gmp,
pkg-config,
gcc,
lib,
ghcjsDepOverrides ? (_: _: { }),
linkFarm,
buildPackages,
}:
let
passthru = {
configuredSrc = callPackage ./configured-ghcjs-src.nix {
inherit ghcjsSrc;
inherit (bootPkgs) ghc alex;
inherit (bootGhcjs) version;
happy = bootPkgs.happy_1_19_12;
};
bootPkgs = bootPkgs.extend (
lib.foldr lib.composeExtensions (_: _: { }) [
(
self: _:
import stage0 {
inherit (passthru) configuredSrc;
inherit (self) callPackage;
}
)
(callPackage ./common-overrides.nix {
inherit haskellLib fetchpatch buildPackages;
})
ghcjsDepOverrides
]
);
targetPrefix = "";
inherit bootGhcjs;
inherit (bootGhcjs) version;
isGhcjs = true;
llvmPackages = null;
enableShared = true;
socket-io = pkgsHostHost.nodePackages."socket.io";
haskellCompilerName = "ghcjs-${bootGhcjs.version}";
};
bootGhcjs = haskellLib.justStaticExecutables passthru.bootPkgs.ghcjs;
# This provides the stuff we need from the emsdk
emsdk = linkFarm "emsdk" [
{
name = "upstream/bin";
path = buildPackages.clang + "/bin";
}
{
name = "upstream/emscripten";
path = buildPackages.emscripten + "/bin";
}
];
in
stdenv.mkDerivation {
name = bootGhcjs.name;
src = passthru.configuredSrc;
nativeBuildInputs = [
bootGhcjs
passthru.bootPkgs.ghc
cabal-install
nodejs
makeWrapper
xorg.lndir
gmp
pkg-config
]
++ lib.optionals stdenv.hostPlatform.isDarwin [
gcc # https://github.com/ghcjs/ghcjs/issues/663
];
dontConfigure = true;
dontInstall = true;
# Newer versions of `config.sub` reject the `js-ghcjs` host string, but the
# older `config.sub` filed vendored within `ghc` still works
dontUpdateAutotoolsGnuConfigScripts = true;
buildPhase = ''
export HOME=$TMP
mkdir $HOME/.cabal
touch $HOME/.cabal/config
cd lib/boot
export EM_CACHE="$HOME/.emscriptencache"
mkdir -p "$EM_CACHE"
mkdir -p $out/bin
mkdir -p $out/lib/${bootGhcjs.name}
lndir ${bootGhcjs}/bin $out/bin
chmod -R +w $out/bin
rm $out/bin/ghcjs-boot
cp ${bootGhcjs}/bin/ghcjs-boot $out/bin
rm $out/bin/haddock
cp ${bootGhcjs}/bin/haddock $out/bin
cp ${bootGhcjs}/bin/private-ghcjs-hsc2hs $out/bin/ghcjs-hsc2hs
wrapProgram $out/bin/ghcjs-boot --set ghcjs_libexecdir $out/bin
wrapProgram $out/bin/ghcjs --add-flags "-B$out/lib/${bootGhcjs.name}"
wrapProgram $out/bin/haddock --add-flags "-B$out/lib/${bootGhcjs.name}"
wrapProgram $out/bin/ghcjs-pkg --add-flags "--global-package-db=$out/lib/${bootGhcjs.name}/package.conf.d"
wrapProgram $out/bin/ghcjs-hsc2hs --add-flags "-I$out/lib/${bootGhcjs.name}/include --template=$out/lib/${bootGhcjs.name}/include/template-hsc.h"
env PATH=$out/bin:$PATH $out/bin/ghcjs-boot --with-emsdk=${emsdk} --no-haddock
'';
enableParallelBuilding = true;
inherit passthru;
meta = {
platforms = with lib.platforms; linux ++ darwin;
# Hydra limits jobs to only outputting 1 gigabyte worth of files.
# GHCJS outputs over 3 gigabytes.
# https://github.com/NixOS/nixpkgs/pull/137066#issuecomment-922335563
hydraPlatforms = lib.platforms.none;
maintainers = with lib.maintainers; [ obsidian-systems-maintenance ];
};
}
@@ -1,54 +0,0 @@
-- Generate the Host.hs and Version.hs as done by hadrian/src/Rules/Generate.hs
import GHC.Platform.Host
import GHC.Version
main = do
writeFile "Version.hs" versionHs
writeFile "Host.hs" platformHostHs
-- | Generate @Version.hs@ files.
versionHs :: String
versionHs = unlines
[ "module GHC.Version where"
, ""
, "import Prelude -- See Note [Why do we import Prelude here?]"
, ""
, "cProjectGitCommitId :: String"
, "cProjectGitCommitId = " ++ show cProjectGitCommitId
, ""
, "cProjectVersion :: String"
, "cProjectVersion = " ++ show cProjectVersion
, ""
, "cProjectVersionInt :: String"
, "cProjectVersionInt = " ++ show cProjectVersionInt
, ""
, "cProjectPatchLevel :: String"
, "cProjectPatchLevel = " ++ show cProjectPatchLevel
, ""
, "cProjectPatchLevel1 :: String"
, "cProjectPatchLevel1 = " ++ show cProjectPatchLevel1
, ""
, "cProjectPatchLevel2 :: String"
, "cProjectPatchLevel2 = " ++ show cProjectPatchLevel2
]
-- | Generate @Platform/Host.hs@ files.
platformHostHs :: String
platformHostHs = unlines
[ "module GHC.Platform.Host where"
, ""
, "import GHC.Platform"
, ""
, "cHostPlatformArch :: Arch"
, "cHostPlatformArch = " ++ show cHostPlatformArch
, ""
, "cHostPlatformOS :: OS"
, "cHostPlatformOS = " ++ show cHostPlatformOS
, ""
, "cHostPlatformMini :: PlatformMini"
, "cHostPlatformMini = PlatformMini"
, " { platformMini_arch = cHostPlatformArch"
, " , platformMini_os = cHostPlatformOS"
, " }"
]
@@ -1,6 +0,0 @@
{
"url": "https://github.com/obsidiansystems/ghcjs",
"rev": "9fc935f2c3ba6c33ec62eb83afc9f52a893eb68c",
"sha256": "sha256:063dmir39c4i1z8ypnmq86g1x2vhqndmdpzc4hyzsy5jjqcbx6i3",
"fetchSubmodules": true
}
@@ -1,245 +0,0 @@
{ callPackage, configuredSrc }:
{
ghcjs = callPackage (
{
mkDerivation,
aeson,
alex,
array,
attoparsec,
base,
base16-bytestring,
base64-bytestring,
binary,
bytestring,
Cabal,
containers,
cryptohash,
data-default,
deepseq,
directory,
executable-path,
filepath,
ghc-boot,
ghc-boot-th,
ghc-compact,
ghc-heap,
ghc-paths,
ghci,
happy,
hashable,
hpc,
http-types,
HUnit,
lens,
lib,
lifted-base,
mtl,
network,
optparse-applicative,
parallel,
parsec,
process,
random,
safe,
shelly,
split,
stringsearch,
syb,
tar,
template-haskell,
terminfo,
test-framework,
test-framework-hunit,
text,
time,
transformers,
unix,
unix-compat,
unordered-containers,
vector,
wai,
wai-app-static,
wai-extra,
wai-websockets,
warp,
webdriver,
websockets,
wl-pprint-text,
xhtml,
yaml,
}:
mkDerivation {
pname = "ghcjs";
version = "8.10.7";
src = configuredSrc + /.;
isLibrary = true;
isExecutable = true;
libraryHaskellDepends = [
aeson
array
attoparsec
base
base16-bytestring
base64-bytestring
binary
bytestring
Cabal
containers
cryptohash
data-default
deepseq
directory
filepath
ghc-boot
ghc-boot-th
ghc-compact
ghc-heap
ghc-paths
ghci
hashable
hpc
lens
mtl
optparse-applicative
parallel
parsec
process
safe
split
stringsearch
syb
template-haskell
terminfo
text
time
transformers
unix
unordered-containers
vector
wl-pprint-text
yaml
];
libraryToolDepends = [
alex
happy
];
executableHaskellDepends = [
aeson
array
base
binary
bytestring
Cabal
containers
deepseq
directory
executable-path
filepath
ghc-boot
lens
mtl
optparse-applicative
parsec
process
tar
terminfo
text
time
transformers
unix
unix-compat
unordered-containers
vector
xhtml
yaml
];
testHaskellDepends = [
aeson
base
bytestring
data-default
deepseq
directory
filepath
http-types
HUnit
lens
lifted-base
network
optparse-applicative
process
random
shelly
test-framework
test-framework-hunit
text
time
transformers
unordered-containers
wai
wai-app-static
wai-extra
wai-websockets
warp
webdriver
websockets
yaml
];
description = "Haskell to JavaScript compiler";
license = lib.licenses.mit;
}
) { };
ghcjs-th = callPackage (
{
mkDerivation,
base,
binary,
bytestring,
containers,
ghc-prim,
ghci,
lib,
template-haskell,
}:
mkDerivation {
pname = "ghcjs-th";
version = "0.1.0.0";
src = configuredSrc + /lib/ghcjs-th;
libraryHaskellDepends = [
base
binary
bytestring
containers
ghc-prim
ghci
template-haskell
];
homepage = "https://github.com/ghcjs";
license = lib.licenses.mit;
}
) { };
ghcjs-prim = callPackage (
{
mkDerivation,
base,
ghc-prim,
lib,
}:
mkDerivation {
pname = "ghcjs-prim";
version = "0.1.1.0";
src = ./.;
libraryHaskellDepends = [
base
ghc-prim
];
homepage = "https://github.com/ghcjs";
license = lib.licenses.mit;
}
) { };
}
@@ -1,87 +0,0 @@
{
mkDerivation,
aeson,
array,
attoparsec,
base,
binary,
bytestring,
containers,
deepseq,
directory,
dlist,
fetchFromGitHub,
ghc-prim,
ghcjs-prim,
hashable,
HUnit,
integer-gmp,
primitive,
QuickCheck,
quickcheck-unicode,
random,
scientific,
test-framework,
test-framework-hunit,
test-framework-quickcheck2,
text,
time,
transformers,
unordered-containers,
vector,
lib,
}:
mkDerivation {
pname = "ghcjs-base";
version = "0.2.1.0";
# This is the release 0.2.1.0, but the hackage release misses test source files,
# so lets use github https://github.com/ghcjs/ghcjs-base/issues/132
src = fetchFromGitHub {
owner = "ghcjs";
repo = "ghcjs-base";
rev = "fbaae59b05b020e91783df122249095e168df53f";
sha256 = "sha256-x6eCAK1Hne0QkV3Loi9YpxbleNHU593E4AO8cbk2vUc=";
};
libraryHaskellDepends = [
aeson
attoparsec
base
binary
bytestring
containers
deepseq
dlist
ghc-prim
ghcjs-prim
hashable
integer-gmp
primitive
scientific
text
time
transformers
unordered-containers
vector
];
testHaskellDepends = [
array
base
bytestring
deepseq
directory
ghc-prim
ghcjs-prim
HUnit
primitive
QuickCheck
quickcheck-unicode
random
test-framework
test-framework-hunit
test-framework-quickcheck2
text
];
homepage = "https://github.com/ghcjs/ghcjs-base";
description = "base library for GHCJS";
license = lib.licenses.mit;
}
@@ -37,7 +37,6 @@ self: super:
# Similar to https://ghc.haskell.org/trac/ghc/ticket/13062
happy = dontCheck super.happy;
happy_1_19_12 = doDistribute (dontCheck super.happy_1_19_12);
# add arm specific library
wiringPi = overrideCabal (

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