staging-next 2025-01-06 (#371501)
This commit is contained in:
@@ -0,0 +1,5 @@
|
||||
# OpenXR in NixOS
|
||||
|
||||
OpenXR is a standard for eXtended Reality (XR) applications and drivers (providers).
|
||||
|
||||
OpenXR runtime providers must ensure that the library path of the runtime's shared library can be loaded by Nix applications. If your OpenXR runtime provider runs in an FHSEnv, this means you may have to use `auto-patchelf` to link dependencies to the Nix store.
|
||||
@@ -57,7 +57,7 @@ Available compilers are collected under `haskell.compiler`.
|
||||
Each of those compiler versions has a corresponding attribute set `packages` built with
|
||||
it. However, the non-standard package sets are not tested regularly and, as a
|
||||
result, contain fewer working packages. The corresponding package set for GHC
|
||||
9.4.5 is `haskell.packages.ghc945`. In fact `haskellPackages` (at the time of writing) is just an alias
|
||||
9.4.8 is `haskell.packages.ghc948`. In fact `haskellPackages` (at the time of writing) is just an alias
|
||||
for `haskell.packages.ghc966`:
|
||||
|
||||
Every package set also re-exposes the GHC used to build its packages as `haskell.packages.*.ghc`.
|
||||
@@ -764,7 +764,7 @@ that depend on that library, you may want to use:
|
||||
|
||||
```nix
|
||||
haskellPackages.haskell-ci.overrideScope (self: super: {
|
||||
Cabal = self.Cabal_3_14_0_0;
|
||||
Cabal = self.Cabal_3_14_1_0;
|
||||
})
|
||||
```
|
||||
|
||||
|
||||
@@ -135,7 +135,7 @@ Many packages assume that an unprefixed binutils (`cc`/`ar`/`ld` etc.) is availa
|
||||
```
|
||||
|
||||
#### How do I avoid compiling a GCC cross-compiler from source? {#cross-qa-avoid-compiling-gcc-cross-compiler}
|
||||
On less powerful machines, it can be inconvenient to cross-compile a package only to find out that GCC has to be compiled from source, which could take up to several hours. Nixpkgs maintains a limited [cross-related jobset on Hydra](https://hydra.nixos.org/jobset/nixpkgs/cross-trunk), which tests cross-compilation to various platforms from build platforms "x86\_64-darwin", "x86\_64-linux", and "aarch64-linux". See `pkgs/top-level/release-cross.nix` for the full list of target platforms and packages. For instance, the following invocation fetches the pre-built cross-compiled GCC for `armv6l-unknown-linux-gnueabihf` and builds GNU Hello from source.
|
||||
On less powerful machines, it can be inconvenient to cross-compile a package only to find out that GCC has to be compiled from source, which could take up to several hours. Nixpkgs maintains a limited [cross-related jobset on Hydra](https://hydra.nixos.org/jobset/nixpkgs/cross-trunk), which tests cross-compilation to various platforms from build platforms "x86\_64-linux", "aarch64-linux", and "aarch64-darwin". See `pkgs/top-level/release-cross.nix` for the full list of target platforms and packages. For instance, the following invocation fetches the pre-built cross-compiled GCC for `armv6l-unknown-linux-gnueabihf` and builds GNU Hello from source.
|
||||
|
||||
```ShellSession
|
||||
$ nix-build '<nixpkgs>' -A pkgsCross.raspberryPi.hello
|
||||
|
||||
@@ -75,17 +75,9 @@ stdenv.mkDerivation {
|
||||
}
|
||||
```
|
||||
|
||||
where the builder can do anything it wants, but typically starts with
|
||||
where `stdenv` sets up the environment automatically (e.g. by resetting `PATH` and populating it from build inputs). If you want, you can use `stdenv`’s generic builder:
|
||||
|
||||
```bash
|
||||
source $stdenv/setup
|
||||
```
|
||||
|
||||
to let `stdenv` set up the environment (e.g. by resetting `PATH` and populating it from build inputs). If you want, you can still use `stdenv`’s generic builder:
|
||||
|
||||
```bash
|
||||
source $stdenv/setup
|
||||
|
||||
buildPhase() {
|
||||
echo "... this is my custom build phase ..."
|
||||
gcc foo.c -o foo
|
||||
@@ -1276,7 +1268,7 @@ addEnvHooks "$hostOffset" myBashFunction
|
||||
|
||||
The *existence* of setups hooks has long been documented and packages inside Nixpkgs are free to use this mechanism. Other packages, however, should not rely on these mechanisms not changing between Nixpkgs versions. Because of the existing issues with this system, there’s little benefit from mandating it be stable for any period of time.
|
||||
|
||||
First, let’s cover some setup hooks that are part of Nixpkgs default `stdenv`. This means that they are run for every package built using `stdenv.mkDerivation` or when using a custom builder that has `source $stdenv/setup`. Some of these are platform specific, so they may run on Linux but not Darwin or vice-versa.
|
||||
First, let’s cover some setup hooks that are part of Nixpkgs default `stdenv`. This means that they are run for every package built using `stdenv.mkDerivation`, even with custom builders. Some of these are platform specific, so they may run on Linux but not Darwin or vice-versa.
|
||||
|
||||
### `move-docs.sh` {#move-docs.sh}
|
||||
|
||||
@@ -1411,6 +1403,7 @@ these in the [Hooks Reference](#chap-hooks).
|
||||
### Compiler and Linker wrapper hooks {#compiler-linker-wrapper-hooks}
|
||||
|
||||
If the file `${cc}/nix-support/cc-wrapper-hook` exists, it will be run at the end of the [compiler wrapper](#cc-wrapper).
|
||||
If the file `${binutils}/nix-support/ld-wrapper-hook` exists, it will be run at the end of the linker wrapper, before the linker runs.
|
||||
If the file `${binutils}/nix-support/post-link-hook` exists, it will be run at the end of the linker wrapper.
|
||||
These hooks allow a user to inject code into the wrappers.
|
||||
As an example, these hooks can be used to extract `extraBefore`, `params` and `extraAfter` which store all the command line arguments passed to the compiler and linker respectively.
|
||||
|
||||
@@ -17251,6 +17251,14 @@
|
||||
githubId = 108072;
|
||||
name = "Slawomir Gonet";
|
||||
};
|
||||
outfoxxed = {
|
||||
name = "outfoxxed";
|
||||
email = "nixpkgs@outfoxxed.me";
|
||||
matrix = "@outfoxxed:outfoxxed.me";
|
||||
github = "outfoxxed";
|
||||
githubId = 83010835;
|
||||
keys = [ { fingerprint = "0181 FF89 4F34 7FCC EB06 5710 4C88 A185 FB89 301E"; } ];
|
||||
};
|
||||
ovlach = {
|
||||
email = "ondrej@vlach.xyz";
|
||||
name = "Ondrej Vlach";
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#! /usr/bin/env nix-shell
|
||||
#! nix-shell -i bash -p coreutils curl jq gnused haskellPackages.cabal2nix-unstable -I nixpkgs=.
|
||||
#! nix-shell -i bash -p coreutils curl jq gnused haskellPackages.cabal2nix-unstable nixfmt-rfc-style -I nixpkgs=.
|
||||
|
||||
# Updates cabal2nix-unstable to the latest master of the nixos/cabal2nix repository.
|
||||
# See regenerate-hackage-packages.sh for details on the purpose of this script.
|
||||
@@ -13,5 +13,7 @@ commit="$(jq -r .commit.sha <<< "$head_info")"
|
||||
# extract commit timestamp and convert to date
|
||||
date="$(date "--date=$(jq -r .commit.commit.committer.date <<< "$head_info")" +%F)"
|
||||
# generate nix expression from cabal file, replacing the version with the commit date
|
||||
echo '# This file defines cabal2nix-unstable, used by maintainers/scripts/haskell/regenerate-hackage-packages.sh.' > pkgs/development/haskell-modules/cabal2nix-unstable.nix
|
||||
cabal2nix --subpath cabal2nix "https://github.com/NixOS/cabal2nix/archive/$commit.tar.gz" | sed -e 's/version = ".*"/version = "'"unstable-$date"'"/' >> pkgs/development/haskell-modules/cabal2nix-unstable.nix
|
||||
output=pkgs/development/haskell-modules/cabal2nix-unstable.nix
|
||||
echo '# This file defines cabal2nix-unstable, used by maintainers/scripts/haskell/regenerate-hackage-packages.sh.' > "$output"
|
||||
cabal2nix --subpath cabal2nix "https://github.com/NixOS/cabal2nix/archive/$commit.tar.gz" | sed -e 's/version = ".*"/version = "'"unstable-$date"'"/' >> "$output"
|
||||
nixfmt "$output"
|
||||
|
||||
@@ -8,7 +8,7 @@ set -eu -o pipefail
|
||||
# (should be capitalized like the display name)
|
||||
SOLVER=LTS
|
||||
# Stackage solver verson, if any. Use latest if empty
|
||||
VERSION=
|
||||
VERSION=22
|
||||
TMP_TEMPLATE=update-stackage.XXXXXXX
|
||||
readonly SOLVER
|
||||
readonly VERSION
|
||||
|
||||
+439
-334
@@ -1,115 +1,117 @@
|
||||
/* Technical details
|
||||
/*
|
||||
Technical details
|
||||
|
||||
`make-disk-image` has a bit of magic to minimize the amount of work to do in a virtual machine.
|
||||
`make-disk-image` has a bit of magic to minimize the amount of work to do in a virtual machine.
|
||||
|
||||
It relies on the [LKL (Linux Kernel Library) project](https://github.com/lkl/linux) which provides Linux kernel as userspace library.
|
||||
It relies on the [LKL (Linux Kernel Library) project](https://github.com/lkl/linux) which provides Linux kernel as userspace library.
|
||||
|
||||
The Nix-store only image only need to run LKL tools to produce an image and will never spawn a virtual machine, whereas full images will always require a virtual machine, but also use LKL.
|
||||
The Nix-store only image only need to run LKL tools to produce an image and will never spawn a virtual machine, whereas full images will always require a virtual machine, but also use LKL.
|
||||
|
||||
### Image preparation phase
|
||||
### Image preparation phase
|
||||
|
||||
Image preparation phase will produce the initial image layout in a folder:
|
||||
Image preparation phase will produce the initial image layout in a folder:
|
||||
|
||||
- devise a root folder based on `$PWD`
|
||||
- prepare the contents by copying and restoring ACLs in this root folder
|
||||
- load in the Nix store database all additional paths computed by `pkgs.closureInfo` in a temporary Nix store
|
||||
- run `nixos-install` in a temporary folder
|
||||
- transfer from the temporary store the additional paths registered to the installed NixOS
|
||||
- compute the size of the disk image based on the apparent size of the root folder
|
||||
- partition the disk image using the corresponding script according to the partition table type
|
||||
- format the partitions if needed
|
||||
- use `cptofs` (LKL tool) to copy the root folder inside the disk image
|
||||
- devise a root folder based on `$PWD`
|
||||
- prepare the contents by copying and restoring ACLs in this root folder
|
||||
- load in the Nix store database all additional paths computed by `pkgs.closureInfo` in a temporary Nix store
|
||||
- run `nixos-install` in a temporary folder
|
||||
- transfer from the temporary store the additional paths registered to the installed NixOS
|
||||
- compute the size of the disk image based on the apparent size of the root folder
|
||||
- partition the disk image using the corresponding script according to the partition table type
|
||||
- format the partitions if needed
|
||||
- use `cptofs` (LKL tool) to copy the root folder inside the disk image
|
||||
|
||||
At this step, the disk image already contains the Nix store, it now only needs to be converted to the desired format to be used.
|
||||
At this step, the disk image already contains the Nix store, it now only needs to be converted to the desired format to be used.
|
||||
|
||||
### Image conversion phase
|
||||
### Image conversion phase
|
||||
|
||||
Using `qemu-img`, the disk image is converted from a raw format to the desired format: qcow2(-compressed), vdi, vpc.
|
||||
Using `qemu-img`, the disk image is converted from a raw format to the desired format: qcow2(-compressed), vdi, vpc.
|
||||
|
||||
### Image Partitioning
|
||||
### Image Partitioning
|
||||
|
||||
#### `none`
|
||||
#### `none`
|
||||
|
||||
No partition table layout is written. The image is a bare filesystem image.
|
||||
No partition table layout is written. The image is a bare filesystem image.
|
||||
|
||||
#### `legacy`
|
||||
#### `legacy`
|
||||
|
||||
The image is partitioned using MBR. There is one primary ext4 partition starting at 1 MiB that fills the rest of the disk image.
|
||||
The image is partitioned using MBR. There is one primary ext4 partition starting at 1 MiB that fills the rest of the disk image.
|
||||
|
||||
This partition layout is unsuitable for UEFI.
|
||||
This partition layout is unsuitable for UEFI.
|
||||
|
||||
#### `legacy+gpt`
|
||||
#### `legacy+gpt`
|
||||
|
||||
This partition table type uses GPT and:
|
||||
This partition table type uses GPT and:
|
||||
|
||||
- create a "no filesystem" partition from 1MiB to 2MiB ;
|
||||
- set `bios_grub` flag on this "no filesystem" partition, which marks it as a [GRUB BIOS partition](https://www.gnu.org/software/parted/manual/html_node/set.html) ;
|
||||
- create a primary ext4 partition starting at 2MiB and extending to the full disk image ;
|
||||
- perform optimal alignments checks on each partition
|
||||
- create a "no filesystem" partition from 1MiB to 2MiB ;
|
||||
- set `bios_grub` flag on this "no filesystem" partition, which marks it as a [GRUB BIOS partition](https://www.gnu.org/software/parted/manual/html_node/set.html) ;
|
||||
- create a primary ext4 partition starting at 2MiB and extending to the full disk image ;
|
||||
- perform optimal alignments checks on each partition
|
||||
|
||||
This partition layout is unsuitable for UEFI boot, because it has no ESP (EFI System Partition) partition. It can work with CSM (Compatibility Support Module) which emulates legacy (BIOS) boot for UEFI.
|
||||
This partition layout is unsuitable for UEFI boot, because it has no ESP (EFI System Partition) partition. It can work with CSM (Compatibility Support Module) which emulates legacy (BIOS) boot for UEFI.
|
||||
|
||||
#### `efi`
|
||||
#### `efi`
|
||||
|
||||
This partition table type uses GPT and:
|
||||
This partition table type uses GPT and:
|
||||
|
||||
- creates an FAT32 ESP partition from 8MiB to specified `bootSize` parameter (256MiB by default), set it bootable ;
|
||||
- creates an primary ext4 partition starting after the boot partition and extending to the full disk image
|
||||
- creates an FAT32 ESP partition from 8MiB to specified `bootSize` parameter (256MiB by default), set it bootable ;
|
||||
- creates an primary ext4 partition starting after the boot partition and extending to the full disk image
|
||||
|
||||
#### `efixbootldr`
|
||||
#### `efixbootldr`
|
||||
|
||||
This partition table type uses GPT and:
|
||||
This partition table type uses GPT and:
|
||||
|
||||
- creates an FAT32 ESP partition from 8MiB to 100MiB, set it bootable ;
|
||||
- creates an FAT32 BOOT partition from 100MiB to specified `bootSize` parameter (256MiB by default), set `bls_boot` flag ;
|
||||
- creates an primary ext4 partition starting after the boot partition and extending to the full disk image
|
||||
- creates an FAT32 ESP partition from 8MiB to 100MiB, set it bootable ;
|
||||
- creates an FAT32 BOOT partition from 100MiB to specified `bootSize` parameter (256MiB by default), set `bls_boot` flag ;
|
||||
- creates an primary ext4 partition starting after the boot partition and extending to the full disk image
|
||||
|
||||
#### `hybrid`
|
||||
#### `hybrid`
|
||||
|
||||
This partition table type uses GPT and:
|
||||
This partition table type uses GPT and:
|
||||
|
||||
- creates a "no filesystem" partition from 0 to 1MiB, set `bios_grub` flag on it ;
|
||||
- creates an FAT32 ESP partition from 8MiB to specified `bootSize` parameter (256MiB by default), set it bootable ;
|
||||
- creates a primary ext4 partition starting after the boot one and extending to the full disk image
|
||||
- creates a "no filesystem" partition from 0 to 1MiB, set `bios_grub` flag on it ;
|
||||
- creates an FAT32 ESP partition from 8MiB to specified `bootSize` parameter (256MiB by default), set it bootable ;
|
||||
- creates a primary ext4 partition starting after the boot one and extending to the full disk image
|
||||
|
||||
This partition could be booted by a BIOS able to understand GPT layouts and recognizing the MBR at the start.
|
||||
This partition could be booted by a BIOS able to understand GPT layouts and recognizing the MBR at the start.
|
||||
|
||||
### How to run determinism analysis on results?
|
||||
### How to run determinism analysis on results?
|
||||
|
||||
Build your derivation with `--check` to rebuild it and verify it is the same.
|
||||
Build your derivation with `--check` to rebuild it and verify it is the same.
|
||||
|
||||
If it fails, you will be left with two folders with one having `.check`.
|
||||
If it fails, you will be left with two folders with one having `.check`.
|
||||
|
||||
You can use `diffoscope` to see the differences between the folders.
|
||||
You can use `diffoscope` to see the differences between the folders.
|
||||
|
||||
However, `diffoscope` is currently not able to diff two QCOW2 filesystems, thus, it is advised to use raw format.
|
||||
However, `diffoscope` is currently not able to diff two QCOW2 filesystems, thus, it is advised to use raw format.
|
||||
|
||||
Even if you use raw disks, `diffoscope` cannot diff the partition table and partitions recursively.
|
||||
Even if you use raw disks, `diffoscope` cannot diff the partition table and partitions recursively.
|
||||
|
||||
To solve this, you can run `fdisk -l $image` and generate `dd if=$image of=$image-p$i.raw skip=$start count=$sectors` for each `(start, sectors)` listed in the `fdisk` output. Now, you will have each partition as a separate file and you can compare them in pairs.
|
||||
To solve this, you can run `fdisk -l $image` and generate `dd if=$image of=$image-p$i.raw skip=$start count=$sectors` for each `(start, sectors)` listed in the `fdisk` output. Now, you will have each partition as a separate file and you can compare them in pairs.
|
||||
*/
|
||||
{ pkgs
|
||||
, lib
|
||||
{
|
||||
pkgs,
|
||||
lib,
|
||||
|
||||
, # The NixOS configuration to be installed onto the disk image.
|
||||
config
|
||||
# The NixOS configuration to be installed onto the disk image.
|
||||
config,
|
||||
|
||||
, # The size of the disk, in megabytes.
|
||||
# The size of the disk, in megabytes.
|
||||
# if "auto" size is calculated based on the contents copied to it and
|
||||
# additionalSpace is taken into account.
|
||||
diskSize ? "auto"
|
||||
diskSize ? "auto",
|
||||
|
||||
, # additional disk space to be added to the image if diskSize "auto"
|
||||
# additional disk space to be added to the image if diskSize "auto"
|
||||
# is used
|
||||
additionalSpace ? "512M"
|
||||
additionalSpace ? "512M",
|
||||
|
||||
, # size of the boot partition, is only used if partitionTableType is
|
||||
# size of the boot partition, is only used if partitionTableType is
|
||||
# either "efi" or "hybrid"
|
||||
# This will be undersized slightly, as this is actually the offset of
|
||||
# the end of the partition. Generally it will be 1MiB smaller.
|
||||
bootSize ? "256M"
|
||||
bootSize ? "256M",
|
||||
|
||||
, # The files and directories to be placed in the target file system.
|
||||
# The files and directories to be placed in the target file system.
|
||||
# This is a list of attribute sets {source, target, mode, user, group} where
|
||||
# `source' is the file system object (regular file or directory) to be
|
||||
# grafted in the file system at path `target', `mode' is a string containing
|
||||
@@ -117,54 +119,54 @@ To solve this, you can run `fdisk -l $image` and generate `dd if=$image of=$imag
|
||||
# user and group name that will be set as owner of the files.
|
||||
# `mode', `user', and `group' are optional.
|
||||
# When setting one of `user' or `group', the other needs to be set too.
|
||||
contents ? []
|
||||
contents ? [ ],
|
||||
|
||||
, # Type of partition table to use; described in the `Image Partitioning` section above.
|
||||
partitionTableType ? "legacy"
|
||||
# Type of partition table to use; described in the `Image Partitioning` section above.
|
||||
partitionTableType ? "legacy",
|
||||
|
||||
, # Whether to invoke `switch-to-configuration boot` during image creation
|
||||
installBootLoader ? true
|
||||
# Whether to invoke `switch-to-configuration boot` during image creation
|
||||
installBootLoader ? true,
|
||||
|
||||
, # Whether to output have EFIVARS available in $out/efi-vars.fd and use it during disk creation
|
||||
touchEFIVars ? false
|
||||
# Whether to output have EFIVARS available in $out/efi-vars.fd and use it during disk creation
|
||||
touchEFIVars ? false,
|
||||
|
||||
, # OVMF firmware derivation
|
||||
OVMF ? pkgs.OVMF.fd
|
||||
# OVMF firmware derivation
|
||||
OVMF ? pkgs.OVMF.fd,
|
||||
|
||||
, # EFI firmware
|
||||
efiFirmware ? OVMF.firmware
|
||||
# EFI firmware
|
||||
efiFirmware ? OVMF.firmware,
|
||||
|
||||
, # EFI variables
|
||||
efiVariables ? OVMF.variables
|
||||
# EFI variables
|
||||
efiVariables ? OVMF.variables,
|
||||
|
||||
, # The root file system type.
|
||||
fsType ? "ext4"
|
||||
# The root file system type.
|
||||
fsType ? "ext4",
|
||||
|
||||
, # Filesystem label
|
||||
label ? if onlyNixStore then "nix-store" else "nixos"
|
||||
# Filesystem label
|
||||
label ? if onlyNixStore then "nix-store" else "nixos",
|
||||
|
||||
, # The initial NixOS configuration file to be copied to
|
||||
# The initial NixOS configuration file to be copied to
|
||||
# /etc/nixos/configuration.nix.
|
||||
configFile ? null
|
||||
configFile ? null,
|
||||
|
||||
, # Shell code executed after the VM has finished.
|
||||
postVM ? ""
|
||||
# Shell code executed after the VM has finished.
|
||||
postVM ? "",
|
||||
|
||||
, # Guest memory size
|
||||
memSize ? 1024
|
||||
# Guest memory size
|
||||
memSize ? 1024,
|
||||
|
||||
, # Copy the contents of the Nix store to the root of the image and
|
||||
# Copy the contents of the Nix store to the root of the image and
|
||||
# skip further setup. Incompatible with `contents`,
|
||||
# `installBootLoader` and `configFile`.
|
||||
onlyNixStore ? false
|
||||
onlyNixStore ? false,
|
||||
|
||||
, name ? "nixos-disk-image"
|
||||
name ? "nixos-disk-image",
|
||||
|
||||
, # Disk image format, one of qcow2, qcow2-compressed, vdi, vpc, raw.
|
||||
format ? "raw"
|
||||
# Disk image format, one of qcow2, qcow2-compressed, vdi, vpc, raw.
|
||||
format ? "raw",
|
||||
|
||||
, # Disk image filename, without any extensions (e.g. `image_1`).
|
||||
baseName ? "nixos"
|
||||
# Disk image filename, without any extensions (e.g. `image_1`).
|
||||
baseName ? "nixos",
|
||||
|
||||
# Whether to fix:
|
||||
# - GPT Disk Unique Identifier (diskGUID)
|
||||
@@ -174,139 +176,191 @@ To solve this, you can run `fdisk -l $image` and generate `dd if=$image of=$imag
|
||||
# BIOS/MBR support is "best effort" at the moment.
|
||||
# Boot partitions may not be deterministic.
|
||||
# Also, to fix last time checked of the ext4 partition if fsType = ext4.
|
||||
, deterministic ? true
|
||||
deterministic ? true,
|
||||
|
||||
# GPT Partition Unique Identifier for root partition.
|
||||
, rootGPUID ? "F222513B-DED1-49FA-B591-20CE86A2FE7F"
|
||||
rootGPUID ? "F222513B-DED1-49FA-B591-20CE86A2FE7F",
|
||||
# When fsType = ext4, this is the root Filesystem Unique Identifier.
|
||||
# TODO: support other filesystems someday.
|
||||
, rootFSUID ? (if fsType == "ext4" then rootGPUID else null)
|
||||
rootFSUID ? (if fsType == "ext4" then rootGPUID else null),
|
||||
|
||||
, # Whether a nix channel based on the current source tree should be
|
||||
# Whether a nix channel based on the current source tree should be
|
||||
# made available inside the image. Useful for interactive use of nix
|
||||
# utils, but changes the hash of the image when the sources are
|
||||
# updated.
|
||||
copyChannel ? true
|
||||
copyChannel ? true,
|
||||
|
||||
, # Additional store paths to copy to the image's store.
|
||||
additionalPaths ? []
|
||||
# Additional store paths to copy to the image's store.
|
||||
additionalPaths ? [ ],
|
||||
}:
|
||||
|
||||
assert (lib.assertOneOf "partitionTableType" partitionTableType [ "legacy" "legacy+gpt" "efi" "efixbootldr" "hybrid" "none" ]);
|
||||
assert (lib.assertMsg (fsType == "ext4" && deterministic -> rootFSUID != null) "In deterministic mode with a ext4 partition, rootFSUID must be non-null, by default, it is equal to rootGPUID.");
|
||||
# We use -E offset=X below, which is only supported by e2fsprogs
|
||||
assert (lib.assertMsg (partitionTableType != "none" -> fsType == "ext4") "to produce a partition table, we need to use -E offset flag which is support only for fsType = ext4");
|
||||
assert (lib.assertMsg (touchEFIVars -> partitionTableType == "hybrid" || partitionTableType == "efi" || partitionTableType == "efixbootldr" || partitionTableType == "legacy+gpt") "EFI variables can be used only with a partition table of type: hybrid, efi, efixbootldr, or legacy+gpt.");
|
||||
# If only Nix store image, then: contents must be empty, configFile must be unset, and we should no install bootloader.
|
||||
assert (lib.assertMsg (onlyNixStore -> contents == [] && configFile == null && !installBootLoader) "In a only Nix store image, the contents must be empty, no configuration must be provided and no bootloader should be installed.");
|
||||
assert (
|
||||
lib.assertOneOf "partitionTableType" partitionTableType [
|
||||
"legacy"
|
||||
"legacy+gpt"
|
||||
"efi"
|
||||
"efixbootldr"
|
||||
"hybrid"
|
||||
"none"
|
||||
]
|
||||
);
|
||||
assert (
|
||||
lib.assertMsg (fsType == "ext4" && deterministic -> rootFSUID != null)
|
||||
"In deterministic mode with a ext4 partition, rootFSUID must be non-null, by default, it is equal to rootGPUID."
|
||||
);
|
||||
# We use -E offset=X below, which is only supported by e2fsprogs
|
||||
assert (
|
||||
lib.assertMsg (partitionTableType != "none" -> fsType == "ext4")
|
||||
"to produce a partition table, we need to use -E offset flag which is support only for fsType = ext4"
|
||||
);
|
||||
assert (
|
||||
lib.assertMsg
|
||||
(
|
||||
touchEFIVars
|
||||
->
|
||||
partitionTableType == "hybrid"
|
||||
|| partitionTableType == "efi"
|
||||
|| partitionTableType == "efixbootldr"
|
||||
|| partitionTableType == "legacy+gpt"
|
||||
)
|
||||
"EFI variables can be used only with a partition table of type: hybrid, efi, efixbootldr, or legacy+gpt."
|
||||
);
|
||||
# If only Nix store image, then: contents must be empty, configFile must be unset, and we should no install bootloader.
|
||||
assert (
|
||||
lib.assertMsg (onlyNixStore -> contents == [ ] && configFile == null && !installBootLoader)
|
||||
"In a only Nix store image, the contents must be empty, no configuration must be provided and no bootloader should be installed."
|
||||
);
|
||||
# Either both or none of {user,group} need to be set
|
||||
assert (lib.assertMsg (lib.all
|
||||
(attrs: ((attrs.user or null) == null)
|
||||
== ((attrs.group or null) == null))
|
||||
contents) "Contents of the disk image should set none of {user, group} or both at the same time.");
|
||||
assert (
|
||||
lib.assertMsg (lib.all (
|
||||
attrs: ((attrs.user or null) == null) == ((attrs.group or null) == null)
|
||||
) contents) "Contents of the disk image should set none of {user, group} or both at the same time."
|
||||
);
|
||||
|
||||
let format' = format; in let
|
||||
let
|
||||
format' = format;
|
||||
in
|
||||
let
|
||||
|
||||
format = if format' == "qcow2-compressed" then "qcow2" else format';
|
||||
|
||||
compress = lib.optionalString (format' == "qcow2-compressed") "-c";
|
||||
|
||||
filename = "${baseName}." + {
|
||||
qcow2 = "qcow2";
|
||||
vdi = "vdi";
|
||||
vpc = "vhd";
|
||||
raw = "img";
|
||||
}.${format} or format;
|
||||
filename =
|
||||
"${baseName}."
|
||||
+ {
|
||||
qcow2 = "qcow2";
|
||||
vdi = "vdi";
|
||||
vpc = "vhd";
|
||||
raw = "img";
|
||||
}
|
||||
.${format} or format;
|
||||
|
||||
rootPartition = { # switch-case
|
||||
legacy = "1";
|
||||
"legacy+gpt" = "2";
|
||||
efi = "2";
|
||||
efixbootldr = "3";
|
||||
hybrid = "3";
|
||||
}.${partitionTableType};
|
||||
rootPartition =
|
||||
{
|
||||
# switch-case
|
||||
legacy = "1";
|
||||
"legacy+gpt" = "2";
|
||||
efi = "2";
|
||||
efixbootldr = "3";
|
||||
hybrid = "3";
|
||||
}
|
||||
.${partitionTableType};
|
||||
|
||||
partitionDiskScript = { # switch-case
|
||||
legacy = ''
|
||||
parted --script $diskImage -- \
|
||||
mklabel msdos \
|
||||
mkpart primary ext4 1MiB -1
|
||||
'';
|
||||
"legacy+gpt" = ''
|
||||
parted --script $diskImage -- \
|
||||
mklabel gpt \
|
||||
mkpart no-fs 1MB 2MB \
|
||||
set 1 bios_grub on \
|
||||
align-check optimal 1 \
|
||||
mkpart primary ext4 2MB -1 \
|
||||
align-check optimal 2 \
|
||||
print
|
||||
${lib.optionalString deterministic ''
|
||||
partitionDiskScript =
|
||||
{
|
||||
# switch-case
|
||||
legacy = ''
|
||||
parted --script $diskImage -- \
|
||||
mklabel msdos \
|
||||
mkpart primary ext4 1MiB 100% \
|
||||
print
|
||||
'';
|
||||
"legacy+gpt" = ''
|
||||
parted --script $diskImage -- \
|
||||
mklabel gpt \
|
||||
mkpart no-fs 1MiB 2MiB \
|
||||
set 1 bios_grub on \
|
||||
mkpart primary ext4 2MiB 100% \
|
||||
align-check optimal 2 \
|
||||
print
|
||||
${lib.optionalString deterministic ''
|
||||
sgdisk \
|
||||
--disk-guid=97FD5997-D90B-4AA3-8D16-C1723AEA73C \
|
||||
--partition-guid=1:1C06F03B-704E-4657-B9CD-681A087A2FDC \
|
||||
--partition-guid=2:970C694F-AFD0-4B99-B750-CDB7A329AB6F \
|
||||
--partition-guid=3:${rootGPUID} \
|
||||
$diskImage
|
||||
''}
|
||||
'';
|
||||
efi = ''
|
||||
parted --script $diskImage -- \
|
||||
mklabel gpt \
|
||||
mkpart ESP fat32 8MiB ${bootSize} \
|
||||
set 1 boot on \
|
||||
mkpart primary ext4 ${bootSize} -1
|
||||
${lib.optionalString deterministic ''
|
||||
''}
|
||||
'';
|
||||
efi = ''
|
||||
parted --script $diskImage -- \
|
||||
mklabel gpt \
|
||||
mkpart ESP fat32 8MiB $bootSizeMiB \
|
||||
set 1 boot on \
|
||||
align-check optimal 1 \
|
||||
mkpart primary ext4 $bootSizeMiB 100% \
|
||||
align-check optimal 2 \
|
||||
print
|
||||
${lib.optionalString deterministic ''
|
||||
sgdisk \
|
||||
--disk-guid=97FD5997-D90B-4AA3-8D16-C1723AEA73C \
|
||||
--partition-guid=1:1C06F03B-704E-4657-B9CD-681A087A2FDC \
|
||||
--partition-guid=2:${rootGPUID} \
|
||||
$diskImage
|
||||
''}
|
||||
'';
|
||||
efixbootldr = ''
|
||||
parted --script $diskImage -- \
|
||||
mklabel gpt \
|
||||
mkpart ESP fat32 8MiB 100MiB \
|
||||
set 1 boot on \
|
||||
mkpart BOOT fat32 100MiB ${bootSize} \
|
||||
set 2 bls_boot on \
|
||||
mkpart ROOT ext4 ${bootSize} -1
|
||||
${lib.optionalString deterministic ''
|
||||
''}
|
||||
'';
|
||||
efixbootldr = ''
|
||||
parted --script $diskImage -- \
|
||||
mklabel gpt \
|
||||
mkpart ESP fat32 8MiB 100MiB \
|
||||
set 1 boot on \
|
||||
align-check optimal 1 \
|
||||
mkpart BOOT fat32 100MiB $bootSizeMiB \
|
||||
set 2 bls_boot on \
|
||||
align-check optimal 2 \
|
||||
mkpart ROOT ext4 $bootSizeMiB 100% \
|
||||
align-check optimal 3 \
|
||||
print
|
||||
${lib.optionalString deterministic ''
|
||||
sgdisk \
|
||||
--disk-guid=97FD5997-D90B-4AA3-8D16-C1723AEA73C \
|
||||
--partition-guid=1:1C06F03B-704E-4657-B9CD-681A087A2FDC \
|
||||
--partition-guid=2:970C694F-AFD0-4B99-B750-CDB7A329AB6F \
|
||||
--partition-guid=3:${rootGPUID} \
|
||||
$diskImage
|
||||
''}
|
||||
'';
|
||||
hybrid = ''
|
||||
parted --script $diskImage -- \
|
||||
mklabel gpt \
|
||||
mkpart ESP fat32 8MiB ${bootSize} \
|
||||
set 1 boot on \
|
||||
mkpart no-fs 0 1024KiB \
|
||||
set 2 bios_grub on \
|
||||
mkpart primary ext4 ${bootSize} -1
|
||||
${lib.optionalString deterministic ''
|
||||
''}
|
||||
'';
|
||||
hybrid = ''
|
||||
parted --script $diskImage -- \
|
||||
mklabel gpt \
|
||||
mkpart ESP fat32 8MiB $bootSizeMiB \
|
||||
set 1 boot on \
|
||||
align-check optimal 1 \
|
||||
mkpart no-fs 0 1024KiB \
|
||||
set 2 bios_grub on \
|
||||
mkpart primary ext4 $bootSizeMiB 100% \
|
||||
align-check optimal 3 \
|
||||
print
|
||||
${lib.optionalString deterministic ''
|
||||
sgdisk \
|
||||
--disk-guid=97FD5997-D90B-4AA3-8D16-C1723AEA73C \
|
||||
--partition-guid=1:1C06F03B-704E-4657-B9CD-681A087A2FDC \
|
||||
--partition-guid=2:970C694F-AFD0-4B99-B750-CDB7A329AB6F \
|
||||
--partition-guid=3:${rootGPUID} \
|
||||
$diskImage
|
||||
''}
|
||||
'';
|
||||
none = "";
|
||||
}.${partitionTableType};
|
||||
''}
|
||||
'';
|
||||
none = "";
|
||||
}
|
||||
.${partitionTableType};
|
||||
|
||||
useEFIBoot = touchEFIVars;
|
||||
|
||||
nixpkgs = lib.cleanSource pkgs.path;
|
||||
|
||||
# FIXME: merge with channel.nix / make-channel.nix.
|
||||
channelSources = pkgs.runCommand "nixos-${config.system.nixos.version}" {} ''
|
||||
channelSources = pkgs.runCommand "nixos-${config.system.nixos.version}" { } ''
|
||||
mkdir -p $out
|
||||
cp -prd ${nixpkgs.outPath} $out/nixos
|
||||
chmod -R u+w $out/nixos
|
||||
@@ -317,7 +371,9 @@ let format' = format; in let
|
||||
echo -n ${config.system.nixos.versionSuffix} > $out/nixos/.version-suffix
|
||||
'';
|
||||
|
||||
binPath = lib.makeBinPath (with pkgs; [
|
||||
binPath = lib.makeBinPath (
|
||||
with pkgs;
|
||||
[
|
||||
rsync
|
||||
util-linux
|
||||
parted
|
||||
@@ -329,19 +385,19 @@ let format' = format; in let
|
||||
systemdMinimal
|
||||
]
|
||||
++ lib.optional deterministic gptfdisk
|
||||
++ stdenv.initialPath);
|
||||
++ stdenv.initialPath
|
||||
);
|
||||
|
||||
# I'm preserving the line below because I'm going to search for it across nixpkgs to consolidate
|
||||
# image building logic. The comment right below this now appears in 4 different places in nixpkgs :)
|
||||
# !!! should use XML.
|
||||
sources = map (x: x.source) contents;
|
||||
targets = map (x: x.target) contents;
|
||||
modes = map (x: x.mode or "''") contents;
|
||||
users = map (x: x.user or "''") contents;
|
||||
groups = map (x: x.group or "''") contents;
|
||||
modes = map (x: x.mode or "''") contents;
|
||||
users = map (x: x.user or "''") contents;
|
||||
groups = map (x: x.group or "''") contents;
|
||||
|
||||
basePaths = [ config.system.build.toplevel ]
|
||||
++ lib.optional copyChannel channelSources;
|
||||
basePaths = [ config.system.build.toplevel ] ++ lib.optional copyChannel channelSources;
|
||||
|
||||
additionalPaths' = lib.subtractLists basePaths additionalPaths;
|
||||
|
||||
@@ -381,6 +437,10 @@ let format' = format; in let
|
||||
echo $(( $1 * 52 / 1000 ))
|
||||
}
|
||||
|
||||
round_to_nearest() {
|
||||
echo $(( ( $1 / $2 + 1) * $2 ))
|
||||
}
|
||||
|
||||
mkdir $out
|
||||
|
||||
root="$PWD/root"
|
||||
@@ -444,75 +504,102 @@ let format' = format; in let
|
||||
${if copyChannel then "--channel ${channelSources}" else "--no-channel-copy"} \
|
||||
--substituters ""
|
||||
|
||||
${lib.optionalString (additionalPaths' != []) ''
|
||||
${lib.optionalString (additionalPaths' != [ ]) ''
|
||||
nix --extra-experimental-features nix-command copy --to $root --no-check-sigs ${lib.concatStringsSep " " additionalPaths'}
|
||||
''}
|
||||
|
||||
diskImage=nixos.raw
|
||||
|
||||
${if diskSize == "auto" then ''
|
||||
${if partitionTableType == "efi" || partitionTableType == "efixbootldr" || partitionTableType == "hybrid" then ''
|
||||
# Add the GPT at the end
|
||||
gptSpace=$(( 512 * 34 * 1 ))
|
||||
# Normally we'd need to account for alignment and things, if bootSize
|
||||
# represented the actual size of the boot partition. But it instead
|
||||
# represents the offset at which it ends.
|
||||
# So we know bootSize is the reserved space in front of the partition.
|
||||
reservedSpace=$(( gptSpace + $(numfmt --from=iec '${bootSize}') ))
|
||||
'' else if partitionTableType == "legacy+gpt" then ''
|
||||
# Add the GPT at the end
|
||||
gptSpace=$(( 512 * 34 * 1 ))
|
||||
# And include the bios_grub partition; the ext4 partition starts at 2MB exactly.
|
||||
reservedSpace=$(( gptSpace + 2 * mebibyte ))
|
||||
'' else if partitionTableType == "legacy" then ''
|
||||
# Add the 1MiB aligned reserved space (includes MBR)
|
||||
reservedSpace=$(( mebibyte ))
|
||||
'' else ''
|
||||
reservedSpace=0
|
||||
''}
|
||||
additionalSpace=$(( $(numfmt --from=iec '${additionalSpace}') + reservedSpace ))
|
||||
bootSize=$(round_to_nearest $(numfmt --from=iec '${bootSize}') $mebibyte)
|
||||
bootSizeMiB=$(( bootSize / 1024 / 1024 ))MiB
|
||||
|
||||
# Compute required space in filesystem blocks
|
||||
diskUsage=$(find . ! -type d -print0 | du --files0-from=- --apparent-size --count-links --block-size "${blockSize}" | cut -f1 | sum_lines)
|
||||
# Each inode takes space!
|
||||
numInodes=$(find . | wc -l)
|
||||
# Convert to bytes, inodes take two blocks each!
|
||||
diskUsage=$(( (diskUsage + 2 * numInodes) * ${blockSize} ))
|
||||
# Then increase the required space to account for the reserved blocks.
|
||||
fudge=$(compute_fudge $diskUsage)
|
||||
requiredFilesystemSpace=$(( diskUsage + fudge ))
|
||||
${
|
||||
if diskSize == "auto" then
|
||||
''
|
||||
${
|
||||
if
|
||||
partitionTableType == "efi" || partitionTableType == "efixbootldr" || partitionTableType == "hybrid"
|
||||
then
|
||||
''
|
||||
# Add the GPT at the end
|
||||
gptSpace=$(( 512 * 34 * 1 ))
|
||||
# Normally we'd need to account for alignment and things, if bootSize
|
||||
# represented the actual size of the boot partition. But it instead
|
||||
# represents the offset at which it ends.
|
||||
# So we know bootSize is the reserved space in front of the partition.
|
||||
reservedSpace=$(( gptSpace + bootSize ))
|
||||
''
|
||||
else if partitionTableType == "legacy+gpt" then
|
||||
''
|
||||
# Add the GPT at the end
|
||||
gptSpace=$(( 512 * 34 * 1 ))
|
||||
# And include the bios_grub partition; the ext4 partition starts at 2MiB exactly.
|
||||
reservedSpace=$(( gptSpace + 2 * mebibyte ))
|
||||
''
|
||||
else if partitionTableType == "legacy" then
|
||||
''
|
||||
# Add the 1MiB aligned reserved space (includes MBR)
|
||||
reservedSpace=$(( mebibyte ))
|
||||
''
|
||||
else
|
||||
''
|
||||
reservedSpace=0
|
||||
''
|
||||
}
|
||||
additionalSpace=$(( $(numfmt --from=iec '${additionalSpace}') + reservedSpace ))
|
||||
|
||||
diskSize=$(( requiredFilesystemSpace + additionalSpace ))
|
||||
# Compute required space in filesystem blocks
|
||||
diskUsage=$(find . ! -type d -print0 | du --files0-from=- --apparent-size --count-links --block-size "${blockSize}" | cut -f1 | sum_lines)
|
||||
# Each inode takes space!
|
||||
numInodes=$(find . | wc -l)
|
||||
# Convert to bytes, inodes take two blocks each!
|
||||
diskUsage=$(( (diskUsage + 2 * numInodes) * ${blockSize} ))
|
||||
# Then increase the required space to account for the reserved blocks.
|
||||
fudge=$(compute_fudge $diskUsage)
|
||||
requiredFilesystemSpace=$(( diskUsage + fudge ))
|
||||
|
||||
# Round up to the nearest mebibyte.
|
||||
# This ensures whole 512 bytes sector sizes in the disk image
|
||||
# and helps towards aligning partitions optimally.
|
||||
if (( diskSize % mebibyte )); then
|
||||
diskSize=$(( ( diskSize / mebibyte + 1) * mebibyte ))
|
||||
fi
|
||||
# Round up to the nearest block size.
|
||||
# This ensures whole $blockSize bytes block sizes in the filesystem
|
||||
# and helps towards aligning partitions optimally.
|
||||
requiredFilesystemSpace=$(round_to_nearest $requiredFilesystemSpace ${blockSize})
|
||||
|
||||
truncate -s "$diskSize" $diskImage
|
||||
diskSize=$(( requiredFilesystemSpace + additionalSpace ))
|
||||
|
||||
printf "Automatic disk size...\n"
|
||||
printf " Closure space use: %d bytes\n" $diskUsage
|
||||
printf " fudge: %d bytes\n" $fudge
|
||||
printf " Filesystem size needed: %d bytes\n" $requiredFilesystemSpace
|
||||
printf " Additional space: %d bytes\n" $additionalSpace
|
||||
printf " Disk image size: %d bytes\n" $diskSize
|
||||
'' else ''
|
||||
truncate -s ${toString diskSize}M $diskImage
|
||||
''}
|
||||
# Round up to the nearest mebibyte.
|
||||
# This ensures whole 512 bytes sector sizes in the disk image
|
||||
# and helps towards aligning partitions optimally.
|
||||
diskSize=$(round_to_nearest $diskSize $mebibyte)
|
||||
|
||||
truncate -s "$diskSize" $diskImage
|
||||
|
||||
printf "Automatic disk size...\n"
|
||||
printf " Closure space use: %d bytes\n" $diskUsage
|
||||
printf " fudge: %d bytes\n" $fudge
|
||||
printf " Filesystem size needed: %d bytes\n" $requiredFilesystemSpace
|
||||
printf " Additional space: %d bytes\n" $additionalSpace
|
||||
printf " Disk image size: %d bytes\n" $diskSize
|
||||
''
|
||||
else
|
||||
''
|
||||
truncate -s ${toString diskSize}M $diskImage
|
||||
''
|
||||
}
|
||||
|
||||
${partitionDiskScript}
|
||||
|
||||
${if partitionTableType != "none" then ''
|
||||
# Get start & length of the root partition in sectors to $START and $SECTORS.
|
||||
eval $(partx $diskImage -o START,SECTORS --nr ${rootPartition} --pairs)
|
||||
${
|
||||
if partitionTableType != "none" then
|
||||
''
|
||||
# Get start & length of the root partition in sectors to $START and $SECTORS.
|
||||
eval $(partx $diskImage -o START,SECTORS --nr ${rootPartition} --pairs)
|
||||
|
||||
mkfs.${fsType} -b ${blockSize} -F -L ${label} $diskImage -E offset=$(sectorsToBytes $START) $(sectorsToKilobytes $SECTORS)K
|
||||
'' else ''
|
||||
mkfs.${fsType} -b ${blockSize} -F -L ${label} $diskImage
|
||||
''}
|
||||
mkfs.${fsType} -b ${blockSize} -F -L ${label} $diskImage -E offset=$(sectorsToBytes $START) $(sectorsToKilobytes $SECTORS)K
|
||||
''
|
||||
else
|
||||
''
|
||||
mkfs.${fsType} -b ${blockSize} -F -L ${label} $diskImage
|
||||
''
|
||||
}
|
||||
|
||||
echo "copying staging root to image..."
|
||||
cptofs -p ${lib.optionalString (partitionTableType != "none") "-P ${rootPartition}"} \
|
||||
@@ -523,11 +610,16 @@ let format' = format; in let
|
||||
'';
|
||||
|
||||
moveOrConvertImage = ''
|
||||
${if format == "raw" then ''
|
||||
mv $diskImage $out/${filename}
|
||||
'' else ''
|
||||
${pkgs.qemu-utils}/bin/qemu-img convert -f raw -O ${format} ${compress} $diskImage $out/${filename}
|
||||
''}
|
||||
${
|
||||
if format == "raw" then
|
||||
''
|
||||
mv $diskImage $out/${filename}
|
||||
''
|
||||
else
|
||||
''
|
||||
${pkgs.qemu-utils}/bin/qemu-img convert -f raw -O ${format} ${compress} $diskImage $out/${filename}
|
||||
''
|
||||
}
|
||||
diskImage=$out/${filename}
|
||||
'';
|
||||
|
||||
@@ -543,74 +635,87 @@ let format' = format; in let
|
||||
'';
|
||||
|
||||
buildImage = pkgs.vmTools.runInLinuxVM (
|
||||
pkgs.runCommand name {
|
||||
preVM = prepareImage + lib.optionalString touchEFIVars createEFIVars;
|
||||
buildInputs = with pkgs; [ util-linux e2fsprogs dosfstools ];
|
||||
postVM = moveOrConvertImage + createHydraBuildProducts + postVM;
|
||||
QEMU_OPTS =
|
||||
lib.concatStringsSep " " (lib.optional useEFIBoot "-drive if=pflash,format=raw,unit=0,readonly=on,file=${efiFirmware}"
|
||||
++ lib.optionals touchEFIVars [
|
||||
"-drive if=pflash,format=raw,unit=1,file=$efiVars"
|
||||
] ++ lib.optionals (OVMF.systemManagementModeRequired or false) [
|
||||
"-machine" "q35,smm=on"
|
||||
"-global" "driver=cfi.pflash01,property=secure,value=on"
|
||||
]
|
||||
);
|
||||
inherit memSize;
|
||||
} ''
|
||||
export PATH=${binPath}:$PATH
|
||||
pkgs.runCommand name
|
||||
{
|
||||
preVM = prepareImage + lib.optionalString touchEFIVars createEFIVars;
|
||||
buildInputs = with pkgs; [
|
||||
util-linux
|
||||
e2fsprogs
|
||||
dosfstools
|
||||
];
|
||||
postVM = moveOrConvertImage + createHydraBuildProducts + postVM;
|
||||
QEMU_OPTS = lib.concatStringsSep " " (
|
||||
lib.optional useEFIBoot "-drive if=pflash,format=raw,unit=0,readonly=on,file=${efiFirmware}"
|
||||
++ lib.optionals touchEFIVars [
|
||||
"-drive if=pflash,format=raw,unit=1,file=$efiVars"
|
||||
]
|
||||
++ lib.optionals (OVMF.systemManagementModeRequired or false) [
|
||||
"-machine"
|
||||
"q35,smm=on"
|
||||
"-global"
|
||||
"driver=cfi.pflash01,property=secure,value=on"
|
||||
]
|
||||
);
|
||||
inherit memSize;
|
||||
}
|
||||
''
|
||||
export PATH=${binPath}:$PATH
|
||||
|
||||
rootDisk=${if partitionTableType != "none" then "/dev/vda${rootPartition}" else "/dev/vda"}
|
||||
rootDisk=${if partitionTableType != "none" then "/dev/vda${rootPartition}" else "/dev/vda"}
|
||||
|
||||
# It is necessary to set root filesystem unique identifier in advance, otherwise
|
||||
# bootloader might get the wrong one and fail to boot.
|
||||
# At the end, we reset again because we want deterministic timestamps.
|
||||
${lib.optionalString (fsType == "ext4" && deterministic) ''
|
||||
tune2fs -T now ${lib.optionalString deterministic "-U ${rootFSUID}"} -c 0 -i 0 $rootDisk
|
||||
''}
|
||||
# make systemd-boot find ESP without udev
|
||||
mkdir /dev/block
|
||||
ln -s /dev/vda1 /dev/block/254:1
|
||||
# It is necessary to set root filesystem unique identifier in advance, otherwise
|
||||
# bootloader might get the wrong one and fail to boot.
|
||||
# At the end, we reset again because we want deterministic timestamps.
|
||||
${lib.optionalString (fsType == "ext4" && deterministic) ''
|
||||
tune2fs -T now ${lib.optionalString deterministic "-U ${rootFSUID}"} -c 0 -i 0 $rootDisk
|
||||
''}
|
||||
# make systemd-boot find ESP without udev
|
||||
mkdir /dev/block
|
||||
ln -s /dev/vda1 /dev/block/254:1
|
||||
|
||||
mountPoint=/mnt
|
||||
mkdir $mountPoint
|
||||
mount $rootDisk $mountPoint
|
||||
mountPoint=/mnt
|
||||
mkdir $mountPoint
|
||||
mount $rootDisk $mountPoint
|
||||
|
||||
# Create the ESP and mount it. Unlike e2fsprogs, mkfs.vfat doesn't support an
|
||||
# '-E offset=X' option, so we can't do this outside the VM.
|
||||
${lib.optionalString (partitionTableType == "efi" || partitionTableType == "hybrid") ''
|
||||
mkdir -p /mnt/boot
|
||||
mkfs.vfat -n ESP /dev/vda1
|
||||
mount /dev/vda1 /mnt/boot
|
||||
# Create the ESP and mount it. Unlike e2fsprogs, mkfs.vfat doesn't support an
|
||||
# '-E offset=X' option, so we can't do this outside the VM.
|
||||
${lib.optionalString (partitionTableType == "efi" || partitionTableType == "hybrid") ''
|
||||
mkdir -p /mnt/boot
|
||||
mkfs.vfat -n ESP /dev/vda1
|
||||
mount /dev/vda1 /mnt/boot
|
||||
|
||||
${lib.optionalString touchEFIVars "mount -t efivarfs efivarfs /sys/firmware/efi/efivars"}
|
||||
''}
|
||||
${lib.optionalString (partitionTableType == "efixbootldr") ''
|
||||
mkdir -p /mnt/{boot,efi}
|
||||
mkfs.vfat -n ESP /dev/vda1
|
||||
mkfs.vfat -n BOOT /dev/vda2
|
||||
mount /dev/vda1 /mnt/efi
|
||||
mount /dev/vda2 /mnt/boot
|
||||
${lib.optionalString touchEFIVars "mount -t efivarfs efivarfs /sys/firmware/efi/efivars"}
|
||||
''}
|
||||
${lib.optionalString (partitionTableType == "efixbootldr") ''
|
||||
mkdir -p /mnt/{boot,efi}
|
||||
mkfs.vfat -n ESP /dev/vda1
|
||||
mkfs.vfat -n BOOT /dev/vda2
|
||||
mount /dev/vda1 /mnt/efi
|
||||
mount /dev/vda2 /mnt/boot
|
||||
|
||||
${lib.optionalString touchEFIVars "mount -t efivarfs efivarfs /sys/firmware/efi/efivars"}
|
||||
''}
|
||||
${lib.optionalString touchEFIVars "mount -t efivarfs efivarfs /sys/firmware/efi/efivars"}
|
||||
''}
|
||||
|
||||
# Install a configuration.nix
|
||||
mkdir -p /mnt/etc/nixos
|
||||
${lib.optionalString (configFile != null) ''
|
||||
cp ${configFile} /mnt/etc/nixos/configuration.nix
|
||||
''}
|
||||
# Install a configuration.nix
|
||||
mkdir -p /mnt/etc/nixos
|
||||
${lib.optionalString (configFile != null) ''
|
||||
cp ${configFile} /mnt/etc/nixos/configuration.nix
|
||||
''}
|
||||
|
||||
${lib.optionalString installBootLoader ''
|
||||
# In this throwaway resource, we only have /dev/vda, but the actual VM may refer to another disk for bootloader, e.g. /dev/vdb
|
||||
# Use this option to create a symlink from vda to any arbitrary device you want.
|
||||
${lib.optionalString (config.boot.loader.grub.enable) (lib.concatMapStringsSep " " (device:
|
||||
lib.optionalString (device != "/dev/vda") ''
|
||||
mkdir -p "$(dirname ${device})"
|
||||
ln -s /dev/vda ${device}
|
||||
'') config.boot.loader.grub.devices)}
|
||||
${lib.optionalString installBootLoader ''
|
||||
# In this throwaway resource, we only have /dev/vda, but the actual VM may refer to another disk for bootloader, e.g. /dev/vdb
|
||||
# Use this option to create a symlink from vda to any arbitrary device you want.
|
||||
${lib.optionalString (config.boot.loader.grub.enable) (
|
||||
lib.concatMapStringsSep " " (
|
||||
device:
|
||||
lib.optionalString (device != "/dev/vda") ''
|
||||
mkdir -p "$(dirname ${device})"
|
||||
ln -s /dev/vda ${device}
|
||||
''
|
||||
) config.boot.loader.grub.devices
|
||||
)}
|
||||
|
||||
# Set up core system link, bootloader (sd-boot, GRUB, uboot, etc.), etc.
|
||||
# Set up core system link, bootloader (sd-boot, GRUB, uboot, etc.), etc.
|
||||
|
||||
# NOTE: systemd-boot-builder.py calls nix-env --list-generations which
|
||||
# clobbers $HOME/.nix-defexpr/channels/nixos This would cause a folder
|
||||
@@ -621,37 +726,37 @@ let format' = format; in let
|
||||
NIXOS_INSTALL_BOOTLOADER=1 nixos-enter --root $mountPoint -- /nix/var/nix/profiles/system/bin/switch-to-configuration boot
|
||||
''}
|
||||
|
||||
# Set the ownerships of the contents. The modes are set in preVM.
|
||||
# No globbing on targets, so no need to set -f
|
||||
targets_=(${lib.concatStringsSep " " targets})
|
||||
users_=(${lib.concatStringsSep " " users})
|
||||
groups_=(${lib.concatStringsSep " " groups})
|
||||
for ((i = 0; i < ''${#targets_[@]}; i++)); do
|
||||
target="''${targets_[$i]}"
|
||||
user="''${users_[$i]}"
|
||||
group="''${groups_[$i]}"
|
||||
if [ -n "$user$group" ]; then
|
||||
# We have to nixos-enter since we need to use the user and group of the VM
|
||||
nixos-enter --root $mountPoint -- chown -R "$user:$group" "$target"
|
||||
fi
|
||||
done
|
||||
# Set the ownerships of the contents. The modes are set in preVM.
|
||||
# No globbing on targets, so no need to set -f
|
||||
targets_=(${lib.concatStringsSep " " targets})
|
||||
users_=(${lib.concatStringsSep " " users})
|
||||
groups_=(${lib.concatStringsSep " " groups})
|
||||
for ((i = 0; i < ''${#targets_[@]}; i++)); do
|
||||
target="''${targets_[$i]}"
|
||||
user="''${users_[$i]}"
|
||||
group="''${groups_[$i]}"
|
||||
if [ -n "$user$group" ]; then
|
||||
# We have to nixos-enter since we need to use the user and group of the VM
|
||||
nixos-enter --root $mountPoint -- chown -R "$user:$group" "$target"
|
||||
fi
|
||||
done
|
||||
|
||||
umount -R /mnt
|
||||
umount -R /mnt
|
||||
|
||||
# Make sure resize2fs works. Note that resize2fs has stricter criteria for resizing than a normal
|
||||
# mount, so the `-c 0` and `-i 0` don't affect it. Setting it to `now` doesn't produce deterministic
|
||||
# output, of course, but we can fix that when/if we start making images deterministic.
|
||||
# In deterministic mode, this is fixed to 1970-01-01 (UNIX timestamp 0).
|
||||
# This two-step approach is necessary otherwise `tune2fs` will want a fresher filesystem to perform
|
||||
# some changes.
|
||||
${lib.optionalString (fsType == "ext4") ''
|
||||
tune2fs -T now ${lib.optionalString deterministic "-U ${rootFSUID}"} -c 0 -i 0 $rootDisk
|
||||
${lib.optionalString deterministic "tune2fs -f -T 19700101 $rootDisk"}
|
||||
''}
|
||||
''
|
||||
# Make sure resize2fs works. Note that resize2fs has stricter criteria for resizing than a normal
|
||||
# mount, so the `-c 0` and `-i 0` don't affect it. Setting it to `now` doesn't produce deterministic
|
||||
# output, of course, but we can fix that when/if we start making images deterministic.
|
||||
# In deterministic mode, this is fixed to 1970-01-01 (UNIX timestamp 0).
|
||||
# This two-step approach is necessary otherwise `tune2fs` will want a fresher filesystem to perform
|
||||
# some changes.
|
||||
${lib.optionalString (fsType == "ext4") ''
|
||||
tune2fs -T now ${lib.optionalString deterministic "-U ${rootFSUID}"} -c 0 -i 0 $rootDisk
|
||||
${lib.optionalString deterministic "tune2fs -f -T 19700101 $rootDisk"}
|
||||
''}
|
||||
''
|
||||
);
|
||||
in
|
||||
if onlyNixStore then
|
||||
pkgs.runCommand name {}
|
||||
(prepareImage + moveOrConvertImage + createHydraBuildProducts + postVM)
|
||||
else buildImage
|
||||
if onlyNixStore then
|
||||
pkgs.runCommand name { } (prepareImage + moveOrConvertImage + createHydraBuildProducts + postVM)
|
||||
else
|
||||
buildImage
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
source $stdenv/setup
|
||||
|
||||
sources_=($sources)
|
||||
targets_=($targets)
|
||||
|
||||
|
||||
@@ -43,7 +43,7 @@ let
|
||||
manPage = ./manpages/nixos-version.8;
|
||||
};
|
||||
|
||||
nixos-install = pkgs.nixos-install.override { nix = config.nix.package; };
|
||||
nixos-install = pkgs.nixos-install.override { };
|
||||
nixos-rebuild = pkgs.nixos-rebuild.override { nix = config.nix.package; };
|
||||
nixos-rebuild-ng = pkgs.nixos-rebuild-ng.override {
|
||||
nix = config.nix.package;
|
||||
|
||||
@@ -12,16 +12,18 @@
|
||||
|
||||
let
|
||||
cfg = config.programs.command-not-found;
|
||||
commandNotFound = pkgs.substituteAll {
|
||||
commandNotFound = pkgs.replaceVarsWith {
|
||||
name = "command-not-found";
|
||||
dir = "bin";
|
||||
src = ./command-not-found.pl;
|
||||
isExecutable = true;
|
||||
inherit (cfg) dbPath;
|
||||
perl = pkgs.perl.withPackages (p: [
|
||||
p.DBDSQLite
|
||||
p.StringShellQuote
|
||||
]);
|
||||
replacements = {
|
||||
inherit (cfg) dbPath;
|
||||
perl = pkgs.perl.withPackages (p: [
|
||||
p.DBDSQLite
|
||||
p.StringShellQuote
|
||||
]);
|
||||
};
|
||||
};
|
||||
|
||||
in
|
||||
|
||||
@@ -331,7 +331,6 @@ in
|
||||
name = "wrappedSlurm";
|
||||
|
||||
builder = pkgs.writeText "builder.sh" ''
|
||||
source $stdenv/setup
|
||||
mkdir -p $out/bin
|
||||
find ${lib.getBin cfg.package}/bin -type f -executable | while read EXE
|
||||
do
|
||||
|
||||
@@ -49,27 +49,31 @@ let
|
||||
preferLocalBuild = true;
|
||||
} ''mkdir --parents "$out/" ${concatStringsSep "\n" (mapModems mkLine)}'';
|
||||
|
||||
setupSpoolScript = pkgs.substituteAll {
|
||||
setupSpoolScript = pkgs.replaceVarsWith {
|
||||
name = "hylafax-setup-spool.sh";
|
||||
src = ./spool.sh;
|
||||
isExecutable = true;
|
||||
faxuser = "uucp";
|
||||
faxgroup = "uucp";
|
||||
lockPath = "/var/lock";
|
||||
inherit globalConfigPath modemConfigPath;
|
||||
inherit (cfg) sendmailPath spoolAreaPath userAccessFile;
|
||||
inherit (pkgs) hylafaxplus runtimeShell;
|
||||
replacements = {
|
||||
faxuser = "uucp";
|
||||
faxgroup = "uucp";
|
||||
lockPath = "/var/lock";
|
||||
inherit globalConfigPath modemConfigPath;
|
||||
inherit (cfg) spoolAreaPath userAccessFile;
|
||||
inherit (pkgs) hylafaxplus runtimeShell;
|
||||
};
|
||||
};
|
||||
|
||||
waitFaxqScript = pkgs.substituteAll {
|
||||
waitFaxqScript = pkgs.replaceVarsWith {
|
||||
# This script checks the modems status files
|
||||
# and waits until all modems report readiness.
|
||||
name = "hylafax-faxq-wait-start.sh";
|
||||
src = ./faxq-wait.sh;
|
||||
isExecutable = true;
|
||||
timeoutSec = toString 10;
|
||||
inherit (cfg) spoolAreaPath;
|
||||
inherit (pkgs) runtimeShell;
|
||||
replacements = {
|
||||
timeoutSec = toString 10;
|
||||
inherit (cfg) spoolAreaPath;
|
||||
inherit (pkgs) runtimeShell;
|
||||
};
|
||||
};
|
||||
|
||||
sockets.hylafax-hfaxd = {
|
||||
|
||||
@@ -1,6 +1,3 @@
|
||||
if [ -e "$NIX_ATTRS_SH_FILE" ]; then . "$NIX_ATTRS_SH_FILE"; elif [ -f .attrs.sh ]; then . .attrs.sh; fi
|
||||
source $stdenv/setup
|
||||
|
||||
doSub() {
|
||||
local src=$1
|
||||
local dst=$2
|
||||
|
||||
@@ -140,31 +140,33 @@ in
|
||||
serviceConfig = {
|
||||
Type = "oneshot";
|
||||
TimeoutStartSec = 300;
|
||||
ExecStart = pkgs.substituteAll {
|
||||
ExecStart = pkgs.replaceVarsWith {
|
||||
src = ./initialize_kasmweb.sh;
|
||||
isExecutable = true;
|
||||
binPath = lib.makeBinPath [
|
||||
pkgs.docker
|
||||
pkgs.openssl
|
||||
pkgs.gnused
|
||||
pkgs.yq-go
|
||||
];
|
||||
runtimeShell = pkgs.runtimeShell;
|
||||
kasmweb = pkgs.kasmweb;
|
||||
postgresUser = "postgres";
|
||||
postgresPassword = "postgres";
|
||||
inherit (cfg)
|
||||
datastorePath
|
||||
sslCertificate
|
||||
sslCertificateKey
|
||||
redisPassword
|
||||
networkSubnet
|
||||
defaultUserPassword
|
||||
defaultAdminPassword
|
||||
defaultManagerToken
|
||||
defaultRegistrationToken
|
||||
defaultGuacToken
|
||||
;
|
||||
replacements = {
|
||||
binPath = lib.makeBinPath [
|
||||
pkgs.docker
|
||||
pkgs.openssl
|
||||
pkgs.gnused
|
||||
pkgs.yq-go
|
||||
];
|
||||
runtimeShell = pkgs.runtimeShell;
|
||||
kasmweb = pkgs.kasmweb;
|
||||
postgresUser = "postgres";
|
||||
postgresPassword = "postgres";
|
||||
inherit (cfg)
|
||||
datastorePath
|
||||
sslCertificate
|
||||
sslCertificateKey
|
||||
redisPassword
|
||||
networkSubnet
|
||||
defaultUserPassword
|
||||
defaultAdminPassword
|
||||
defaultManagerToken
|
||||
defaultRegistrationToken
|
||||
defaultGuacToken
|
||||
;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
@@ -1,8 +1,5 @@
|
||||
set -e
|
||||
|
||||
if [ -e "$NIX_ATTRS_SH_FILE" ]; then . "$NIX_ATTRS_SH_FILE"; elif [ -f .attrs.sh ]; then . .attrs.sh; fi
|
||||
source $stdenv/setup
|
||||
|
||||
mkdir -p $out/bin
|
||||
|
||||
cat > $out/bin/control <<EOF
|
||||
|
||||
@@ -2,8 +2,7 @@
|
||||
|
||||
shopt -s nullglob
|
||||
|
||||
export PATH=/empty
|
||||
for i in @path@; do PATH=$PATH:$i/bin; done
|
||||
export PATH=/empty:@path@
|
||||
|
||||
default=$1
|
||||
if test -z "$1"; then
|
||||
|
||||
@@ -4,12 +4,14 @@ with lib;
|
||||
|
||||
let
|
||||
|
||||
generationsDirBuilder = pkgs.substituteAll {
|
||||
generationsDirBuilder = pkgs.replaceVarsWith {
|
||||
src = ./generations-dir-builder.sh;
|
||||
isExecutable = true;
|
||||
inherit (pkgs) bash;
|
||||
path = [pkgs.coreutils pkgs.gnused pkgs.gnugrep];
|
||||
inherit (config.boot.loader.generationsDir) copyKernels;
|
||||
replacements = {
|
||||
inherit (pkgs) bash;
|
||||
path = lib.makeBinPath [pkgs.coreutils pkgs.gnused pkgs.gnugrep];
|
||||
inherit (config.boot.loader.generationsDir) copyKernels;
|
||||
};
|
||||
};
|
||||
|
||||
in
|
||||
|
||||
@@ -10,9 +10,9 @@ let
|
||||
timeoutStr = if blCfg.timeout == null then "-1" else toString blCfg.timeout;
|
||||
|
||||
# The builder used to write during system activation
|
||||
builder = import ./extlinux-conf-builder.nix { inherit pkgs; };
|
||||
builder = import ./extlinux-conf-builder.nix { inherit lib pkgs; };
|
||||
# The builder exposed in populateCmd, which runs on the build architecture
|
||||
populateBuilder = import ./extlinux-conf-builder.nix { pkgs = pkgs.buildPackages; };
|
||||
populateBuilder = import ./extlinux-conf-builder.nix { inherit lib; pkgs = pkgs.buildPackages; };
|
||||
in
|
||||
{
|
||||
options = {
|
||||
|
||||
+6
-4
@@ -1,8 +1,10 @@
|
||||
{ pkgs }:
|
||||
{ lib, pkgs }:
|
||||
|
||||
pkgs.substituteAll {
|
||||
pkgs.replaceVarsWith {
|
||||
src = ./extlinux-conf-builder.sh;
|
||||
isExecutable = true;
|
||||
path = [pkgs.coreutils pkgs.gnused pkgs.gnugrep];
|
||||
inherit (pkgs) bash;
|
||||
replacements = {
|
||||
path = lib.makeBinPath [pkgs.coreutils pkgs.gnused pkgs.gnugrep];
|
||||
inherit (pkgs) bash;
|
||||
};
|
||||
}
|
||||
|
||||
+1
-2
@@ -2,8 +2,7 @@
|
||||
|
||||
shopt -s nullglob
|
||||
|
||||
export PATH=/empty
|
||||
for i in @path@; do PATH=$PATH:$i/bin; done
|
||||
export PATH=/empty:@path@
|
||||
|
||||
usage() {
|
||||
echo "usage: $0 -t <timeout> -c <path-to-default-configuration> [-d <boot-dir>] [-g <num-generations>] [-n <dtbName>] [-r]" >&2
|
||||
|
||||
@@ -2,8 +2,7 @@
|
||||
|
||||
shopt -s nullglob
|
||||
|
||||
export PATH=/empty
|
||||
for i in @path@; do PATH=$PATH:$i/bin; done
|
||||
export PATH=/empty:@path@
|
||||
|
||||
if test $# -ne 1; then
|
||||
echo "Usage: init-script-builder.sh DEFAULT-CONFIG"
|
||||
|
||||
@@ -9,16 +9,18 @@ with lib;
|
||||
|
||||
let
|
||||
|
||||
initScriptBuilder = pkgs.substituteAll {
|
||||
initScriptBuilder = pkgs.replaceVarsWith {
|
||||
src = ./init-script-builder.sh;
|
||||
isExecutable = true;
|
||||
inherit (pkgs) bash;
|
||||
inherit (config.system.nixos) distroName;
|
||||
path = [
|
||||
pkgs.coreutils
|
||||
pkgs.gnused
|
||||
pkgs.gnugrep
|
||||
];
|
||||
replacements = {
|
||||
inherit (pkgs) bash;
|
||||
inherit (config.system.nixos) distroName;
|
||||
path = lib.makeBinPath [
|
||||
pkgs.coreutils
|
||||
pkgs.gnused
|
||||
pkgs.gnugrep
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
in
|
||||
|
||||
@@ -289,11 +289,8 @@ let
|
||||
|
||||
# The init script of boot stage 1 (loading kernel modules for
|
||||
# mounting the root FS).
|
||||
bootStage1 = pkgs.substituteAll {
|
||||
bootStage1 = pkgs.replaceVarsWith {
|
||||
src = ./stage-1-init.sh;
|
||||
|
||||
shell = "${extraUtils}/bin/ash";
|
||||
|
||||
isExecutable = true;
|
||||
|
||||
postInstall = ''
|
||||
@@ -304,35 +301,39 @@ let
|
||||
${pkgs.buildPackages.busybox}/bin/ash -n $target
|
||||
'';
|
||||
|
||||
inherit linkUnits udevRules extraUtils;
|
||||
replacements = {
|
||||
shell = "${extraUtils}/bin/ash";
|
||||
|
||||
inherit (config.boot) resumeDevice;
|
||||
inherit linkUnits udevRules extraUtils;
|
||||
|
||||
inherit (config.system.nixos) distroName;
|
||||
inherit (config.boot) resumeDevice;
|
||||
|
||||
inherit (config.system.build) earlyMountScript;
|
||||
inherit (config.system.nixos) distroName;
|
||||
|
||||
inherit (config.boot.initrd) checkJournalingFS verbose
|
||||
preLVMCommands preDeviceCommands postDeviceCommands postResumeCommands postMountCommands preFailCommands kernelModules;
|
||||
inherit (config.system.build) earlyMountScript;
|
||||
|
||||
resumeDevices = map (sd: if sd ? device then sd.device else "/dev/disk/by-label/${sd.label}")
|
||||
(filter (sd: hasPrefix "/dev/" sd.device && !sd.randomEncryption.enable
|
||||
# Don't include zram devices
|
||||
&& !(hasPrefix "/dev/zram" sd.device)
|
||||
) config.swapDevices);
|
||||
inherit (config.boot.initrd) checkJournalingFS verbose
|
||||
preLVMCommands preDeviceCommands postDeviceCommands postResumeCommands postMountCommands preFailCommands kernelModules;
|
||||
|
||||
fsInfo =
|
||||
let f = fs: [ fs.mountPoint (if fs.device != null then fs.device else "/dev/disk/by-label/${fs.label}") fs.fsType (builtins.concatStringsSep "," fs.options) ];
|
||||
in pkgs.writeText "initrd-fsinfo" (concatStringsSep "\n" (concatMap f fileSystems));
|
||||
resumeDevices = map (sd: if sd ? device then sd.device else "/dev/disk/by-label/${sd.label}")
|
||||
(filter (sd: hasPrefix "/dev/" sd.device && !sd.randomEncryption.enable
|
||||
# Don't include zram devices
|
||||
&& !(hasPrefix "/dev/zram" sd.device)
|
||||
) config.swapDevices);
|
||||
|
||||
setHostId = optionalString (config.networking.hostId != null) ''
|
||||
hi="${config.networking.hostId}"
|
||||
${if pkgs.stdenv.hostPlatform.isBigEndian then ''
|
||||
echo -ne "\x''${hi:0:2}\x''${hi:2:2}\x''${hi:4:2}\x''${hi:6:2}" > /etc/hostid
|
||||
'' else ''
|
||||
echo -ne "\x''${hi:6:2}\x''${hi:4:2}\x''${hi:2:2}\x''${hi:0:2}" > /etc/hostid
|
||||
''}
|
||||
'';
|
||||
fsInfo =
|
||||
let f = fs: [ fs.mountPoint (if fs.device != null then fs.device else "/dev/disk/by-label/${fs.label}") fs.fsType (builtins.concatStringsSep "," fs.options) ];
|
||||
in pkgs.writeText "initrd-fsinfo" (concatStringsSep "\n" (concatMap f fileSystems));
|
||||
|
||||
setHostId = optionalString (config.networking.hostId != null) ''
|
||||
hi="${config.networking.hostId}"
|
||||
${if pkgs.stdenv.hostPlatform.isBigEndian then ''
|
||||
echo -ne "\x''${hi:0:2}\x''${hi:2:2}\x''${hi:4:2}\x''${hi:6:2}" > /etc/hostid
|
||||
'' else ''
|
||||
echo -ne "\x''${hi:6:2}\x''${hi:4:2}\x''${hi:2:2}\x''${hi:0:2}" > /etc/hostid
|
||||
''}
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -11,26 +11,28 @@ let
|
||||
|
||||
useHostResolvConf = config.networking.resolvconf.enable && config.networking.useHostResolvConf;
|
||||
|
||||
bootStage2 = pkgs.substituteAll {
|
||||
bootStage2 = pkgs.replaceVarsWith {
|
||||
src = ./stage-2-init.sh;
|
||||
shellDebug = "${pkgs.bashInteractive}/bin/bash";
|
||||
shell = "${pkgs.bash}/bin/bash";
|
||||
inherit (config.boot) readOnlyNixStore systemdExecutable extraSystemdUnitPaths;
|
||||
inherit (config.system.nixos) distroName;
|
||||
isExecutable = true;
|
||||
inherit useHostResolvConf;
|
||||
inherit (config.system.build) earlyMountScript;
|
||||
path = lib.makeBinPath (
|
||||
[
|
||||
pkgs.coreutils
|
||||
pkgs.util-linux
|
||||
]
|
||||
++ lib.optional useHostResolvConf pkgs.openresolv
|
||||
);
|
||||
postBootCommands = pkgs.writeText "local-cmds" ''
|
||||
${config.boot.postBootCommands}
|
||||
${config.powerManagement.powerUpCommands}
|
||||
'';
|
||||
replacements = {
|
||||
shell = "${pkgs.bash}/bin/bash";
|
||||
systemConfig = null; # replaced in ../activation/top-level.nix
|
||||
inherit (config.boot) readOnlyNixStore systemdExecutable;
|
||||
inherit (config.system.nixos) distroName;
|
||||
inherit useHostResolvConf;
|
||||
inherit (config.system.build) earlyMountScript;
|
||||
path = lib.makeBinPath (
|
||||
[
|
||||
pkgs.coreutils
|
||||
pkgs.util-linux
|
||||
]
|
||||
++ lib.optional useHostResolvConf pkgs.openresolv
|
||||
);
|
||||
postBootCommands = pkgs.writeText "local-cmds" ''
|
||||
${config.boot.postBootCommands}
|
||||
${config.powerManagement.powerUpCommands}
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
in
|
||||
|
||||
@@ -64,7 +64,14 @@ lib.recurseIntoAttrs {
|
||||
} ''
|
||||
mkdir fake-root
|
||||
export FAKECHROOT_EXCLUDE_PATH=/dev:/proc:/sys:${builtins.storeDir}:$out
|
||||
fakechroot fakeroot chroot $PWD/fake-root bash -c 'source $stdenv/setup; eval "$fakeRootCommands"'
|
||||
if [ -e "$NIX_ATTRS_SH_FILE" ]; then
|
||||
export FAKECHROOT_EXCLUDE_PATH=$FAKECHROOT_EXCLUDE_PATH:$NIX_ATTRS_SH_FILE
|
||||
fi
|
||||
fakechroot fakeroot chroot $PWD/fake-root bash -e -c '
|
||||
if [ -e "$NIX_ATTRS_SH_FILE" ]; then . "$NIX_ATTRS_SH_FILE"; fi
|
||||
source $stdenv/setup
|
||||
eval "$fakeRootCommands"
|
||||
'
|
||||
'';
|
||||
|
||||
}
|
||||
|
||||
@@ -1,32 +0,0 @@
|
||||
source $stdenv/setup
|
||||
|
||||
ttys=($ttys)
|
||||
themes=($themes)
|
||||
|
||||
mkdir -p $out
|
||||
|
||||
defaultName=$(cd $default && ls | grep -v default)
|
||||
echo $defaultName
|
||||
ln -s $default/$defaultName $out/$defaultName
|
||||
ln -s $defaultName $out/default
|
||||
|
||||
for ((n = 0; n < ${#ttys[*]}; n++)); do
|
||||
tty=${ttys[$n]}
|
||||
theme=${themes[$n]}
|
||||
|
||||
echo "TTY $tty -> $theme"
|
||||
|
||||
if [ "$theme" != default ]; then
|
||||
themeName=$(cd $theme && ls | grep -v default)
|
||||
ln -sfn $theme/$themeName $out/$themeName
|
||||
else
|
||||
themeName=default
|
||||
fi
|
||||
|
||||
if test -e $out/$tty; then
|
||||
echo "Multiple themes defined for the same TTY!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
ln -sfn $themeName $out/$tty
|
||||
done
|
||||
@@ -32,6 +32,9 @@ let
|
||||
"/".device = rootFsDevice;
|
||||
};
|
||||
|
||||
# Needed for installing bootloader
|
||||
system.switch.enable = true;
|
||||
|
||||
system.build.diskImage = import ../lib/make-disk-image.nix {
|
||||
inherit config lib pkgs;
|
||||
label = rootFslabel;
|
||||
|
||||
@@ -60,6 +60,11 @@ import ./make-test-python.nix ({ pkgs, ...} : {
|
||||
users.users.jenkins.extraGroups = [ "users" ];
|
||||
|
||||
systemd.services.jenkins.serviceConfig.TimeoutStartSec = "6min";
|
||||
|
||||
# Increase disk space to prevent this issue:
|
||||
#
|
||||
# WARNING h.n.DiskSpaceMonitorDescriptor#markNodeOfflineOrOnline: Making Built-In Node offline temporarily due to the lack of disk space
|
||||
virtualisation.diskSize = 2 * 1024;
|
||||
};
|
||||
|
||||
slave =
|
||||
|
||||
@@ -5,9 +5,14 @@ import ./make-test-python.nix (
|
||||
mode = "0640";
|
||||
};
|
||||
in
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
name = "pppd";
|
||||
|
||||
meta = with pkgs.lib.maintainers; {
|
||||
maintainers = [ stv0g ];
|
||||
};
|
||||
|
||||
nodes = {
|
||||
server =
|
||||
{ config, pkgs, ... }:
|
||||
|
||||
@@ -47,7 +47,7 @@ import ./make-test-python.nix (
|
||||
|
||||
def copy_pem(file: str):
|
||||
machine.copy_from_host(source=f"{tmpdir}/{file}", target=f"/run/secrets/{file}")
|
||||
machine.succeed(f"chmod 644 /run/secrets/{file}")
|
||||
machine.succeed(f"chmod 600 /run/secrets/{file} && chown systemd-journal-gateway /run/secrets/{file}")
|
||||
|
||||
with subtest("Copying keys and certificates"):
|
||||
machine.succeed("mkdir -p /run/secrets/{client,server}")
|
||||
|
||||
@@ -22,7 +22,7 @@ let
|
||||
shutil.copyfile("${machine.system.build.diskImage}/nixos.img", tmp_disk_image.name)
|
||||
|
||||
subprocess.run([
|
||||
"${machine.config.virtualisation.qemu.package}/bin/qemu-img",
|
||||
"${machine.virtualisation.qemu.package}/bin/qemu-img",
|
||||
"resize",
|
||||
"-f",
|
||||
"raw",
|
||||
@@ -151,6 +151,7 @@ in
|
||||
}:
|
||||
{
|
||||
virtualisation.useDefaultFilesystems = false;
|
||||
virtualisation.mountHostNixStore = false;
|
||||
virtualisation.fileSystems = {
|
||||
"/" = {
|
||||
device = "/dev/disk/by-partlabel/created-root";
|
||||
|
||||
@@ -128,7 +128,7 @@ import ./make-test-python.nix (
|
||||
# it's not possible because we're not in a tty when grepping
|
||||
# (i.e. hacky way to ensure that the error from above doesn't appear here).
|
||||
_, out = machine.execute("systemctl --user edit testservice2.service 2>&1")
|
||||
assert out.rstrip("\n") == "Cannot edit units if not on a tty."
|
||||
assert out.rstrip("\n") == "Cannot edit units interactively if not on a tty."
|
||||
|
||||
# Regression test for https://github.com/NixOS/nixpkgs/issues/105049
|
||||
with subtest("systemd reads timezone database in /etc/zoneinfo"):
|
||||
|
||||
@@ -5,13 +5,13 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "fluidsynth";
|
||||
version = "2.3.7";
|
||||
version = "2.4.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "FluidSynth";
|
||||
repo = "fluidsynth";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-4Jn8pyVPrTPYZGdPZB+8guxTbD6s/1OpmLJlioDQFMA=";
|
||||
hash = "sha256-rpTL1eOm3PQIBuxoPEZwj64QXasNQN80kGSW7h6dDdw=";
|
||||
};
|
||||
|
||||
outputs = [ "out" "dev" "man" ];
|
||||
|
||||
@@ -23,11 +23,11 @@ assert withConplay -> !libOnly;
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "${lib.optionalString libOnly "lib"}mpg123";
|
||||
version = "1.32.9";
|
||||
version = "1.32.10";
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://sourceforge/mpg123/mpg123-${version}.tar.bz2";
|
||||
hash = "sha256-A7YeQATpYLrPKs2toD7ZTTduaqsnpgFEe9SQjYQHspE=";
|
||||
hash = "sha256-h7LBf+DJedPvOO7O/2Nis1sorIWJ+/GFS1vnXJq2VXw=";
|
||||
};
|
||||
|
||||
outputs = [
|
||||
|
||||
@@ -99,8 +99,6 @@ let
|
||||
stdenv.mkDerivation {
|
||||
inherit name;
|
||||
builder = writeShellScript "builder.sh" ''
|
||||
source $stdenv/setup
|
||||
|
||||
curlVersion=$(${curl}/bin/curl -V | head -1 | cut -d' ' -f2)
|
||||
|
||||
# Curl flags to handle redirects, not use EPSV, handle cookies for
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
withGui,
|
||||
python3,
|
||||
jemalloc,
|
||||
zeromq4,
|
||||
zeromq,
|
||||
}:
|
||||
|
||||
mkDerivation rec {
|
||||
@@ -57,7 +57,7 @@ mkDerivation rec {
|
||||
python3
|
||||
jemalloc
|
||||
libnatpmp
|
||||
zeromq4
|
||||
zeromq
|
||||
miniupnpc
|
||||
util-linux
|
||||
protobuf
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -53,10 +53,10 @@
|
||||
elpaBuild {
|
||||
pname = "activities";
|
||||
ename = "activities";
|
||||
version = "0.7.1";
|
||||
version = "0.7.2";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/activities-0.7.1.tar";
|
||||
sha256 = "1khhkfyy251mag5zqybsvfg3sak0aac1qlsdl1wyiin7f6sq9563";
|
||||
url = "https://elpa.gnu.org/packages/activities-0.7.2.tar";
|
||||
sha256 = "1b6d77b5h2vikfxqjlb1jx5pnij5bif788nysvvn3wlzpwdi88s0";
|
||||
};
|
||||
packageRequires = [ persist ];
|
||||
meta = {
|
||||
@@ -419,10 +419,10 @@
|
||||
elpaBuild {
|
||||
pname = "auctex";
|
||||
ename = "auctex";
|
||||
version = "14.0.7";
|
||||
version = "14.0.8";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/auctex-14.0.7.tar";
|
||||
sha256 = "1m71jr853b4d713z1k4jj73c8ba4753hv8nighx62razgmpn4ci8";
|
||||
url = "https://elpa.gnu.org/packages/auctex-14.0.8.tar";
|
||||
sha256 = "0bcjkbwhbkmm0r7pbh44j7vw9b39g2iw1jgw4sq54qp7387j6lmy";
|
||||
};
|
||||
packageRequires = [ ];
|
||||
meta = {
|
||||
@@ -790,10 +790,10 @@
|
||||
elpaBuild {
|
||||
pname = "boxy";
|
||||
ename = "boxy";
|
||||
version = "1.1.4";
|
||||
version = "2.0.0";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/boxy-1.1.4.tar";
|
||||
sha256 = "0mwj1qc626f1iaq5iaqm1f4iwyz91hzqhzfk5f53gsqka7yz2fnf";
|
||||
url = "https://elpa.gnu.org/packages/boxy-2.0.0.tar";
|
||||
sha256 = "1vfgwgk3vzzp2cy7n0qwhn7hzjxbp9vzxp1al1pkynv9hfs503gb";
|
||||
};
|
||||
packageRequires = [ ];
|
||||
meta = {
|
||||
@@ -813,10 +813,10 @@
|
||||
elpaBuild {
|
||||
pname = "boxy-headings";
|
||||
ename = "boxy-headings";
|
||||
version = "2.1.6";
|
||||
version = "2.1.8";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/boxy-headings-2.1.6.tar";
|
||||
sha256 = "0wnks9a4agvqjivp9myl8zcdq6rj7hh5ig73f8qv5imar0i76izc";
|
||||
url = "https://elpa.gnu.org/packages/boxy-headings-2.1.8.tar";
|
||||
sha256 = "1r356z090dkgc7wb5qq35pkq3932rr6zy90d85jb9frxf7w1zmd7";
|
||||
};
|
||||
packageRequires = [
|
||||
boxy
|
||||
@@ -1020,10 +1020,10 @@
|
||||
elpaBuild {
|
||||
pname = "cape";
|
||||
ename = "cape";
|
||||
version = "1.7";
|
||||
version = "1.8";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/cape-1.7.tar";
|
||||
sha256 = "03npj4a8g73dgrivjgc27w0c957naqhxq0hfzshdqci6mrq1gph3";
|
||||
url = "https://elpa.gnu.org/packages/cape-1.8.tar";
|
||||
sha256 = "18z3c3d1wbf2j40rym74918hxccmi84rbqkzc2g73jbigp78kyq4";
|
||||
};
|
||||
packageRequires = [ compat ];
|
||||
meta = {
|
||||
@@ -1398,10 +1398,10 @@
|
||||
elpaBuild {
|
||||
pname = "compat";
|
||||
ename = "compat";
|
||||
version = "30.0.0.0";
|
||||
version = "30.0.2.0";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/compat-30.0.0.0.tar";
|
||||
sha256 = "0z7049xkdyx22ywq821d19lp73ywaz6brxj461h0h2a73y7999cl";
|
||||
url = "https://elpa.gnu.org/packages/compat-30.0.2.0.tar";
|
||||
sha256 = "0pizq8vwfqls04in95rpnfwv4xc1r2qjpf41g6bjy826i53cfdx0";
|
||||
};
|
||||
packageRequires = [ seq ];
|
||||
meta = {
|
||||
@@ -1441,10 +1441,10 @@
|
||||
elpaBuild {
|
||||
pname = "consult";
|
||||
ename = "consult";
|
||||
version = "1.8";
|
||||
version = "1.9";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/consult-1.8.tar";
|
||||
sha256 = "0k3k1jmwdw4w8rr5z2030ba37mcia2zghh6p4c36ck51hwvfkb8w";
|
||||
url = "https://elpa.gnu.org/packages/consult-1.9.tar";
|
||||
sha256 = "0qz8l962995znf9lhgy8hdd9z78bdhb8m95dxj1g3266jsgjf8sv";
|
||||
};
|
||||
packageRequires = [ compat ];
|
||||
meta = {
|
||||
@@ -1554,10 +1554,10 @@
|
||||
elpaBuild {
|
||||
pname = "corfu";
|
||||
ename = "corfu";
|
||||
version = "1.5";
|
||||
version = "1.6";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/corfu-1.5.tar";
|
||||
sha256 = "0m80slhpr9xd57b3nvrqgfxm44851v9gfcy8ky3d3v2g5i2mrm6x";
|
||||
url = "https://elpa.gnu.org/packages/corfu-1.6.tar";
|
||||
sha256 = "1wx7hjvccb2jss4k0vcmmdxkyivs2qnzai6xw2l1fgdan9ngg89n";
|
||||
};
|
||||
packageRequires = [ compat ];
|
||||
meta = {
|
||||
@@ -1814,10 +1814,10 @@
|
||||
elpaBuild {
|
||||
pname = "dape";
|
||||
ename = "dape";
|
||||
version = "0.17.0";
|
||||
version = "0.19.0";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/dape-0.17.0.tar";
|
||||
sha256 = "113lmy0q1yk81cfi9dbig8p9bmhyqy6w1bvhn91m79my05ny2rxd";
|
||||
url = "https://elpa.gnu.org/packages/dape-0.19.0.tar";
|
||||
sha256 = "11hs0cnzyp75gmz32mqplaknf4lq0zf9zp07h1rhlvz31aacvrqh";
|
||||
};
|
||||
packageRequires = [ jsonrpc ];
|
||||
meta = {
|
||||
@@ -1901,10 +1901,10 @@
|
||||
elpaBuild {
|
||||
pname = "debbugs";
|
||||
ename = "debbugs";
|
||||
version = "0.42";
|
||||
version = "0.43";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/debbugs-0.42.tar";
|
||||
sha256 = "0n0kvkyzggn8q72dpy6c7rsjwn1rjx0r33y5jc080j7sw85xpigg";
|
||||
url = "https://elpa.gnu.org/packages/debbugs-0.43.tar";
|
||||
sha256 = "1jzdr7bp48incg1bdnq4s1ldnyp6hncz0mydy0bizk3c68chsls5";
|
||||
};
|
||||
packageRequires = [ soap-client ];
|
||||
meta = {
|
||||
@@ -2045,6 +2045,28 @@
|
||||
};
|
||||
}
|
||||
) { };
|
||||
dicom = callPackage (
|
||||
{
|
||||
compat,
|
||||
elpaBuild,
|
||||
fetchurl,
|
||||
lib,
|
||||
}:
|
||||
elpaBuild {
|
||||
pname = "dicom";
|
||||
ename = "dicom";
|
||||
version = "0.5";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/dicom-0.5.tar";
|
||||
sha256 = "1qz4zhq0fcfl7l42qib60j2dzm1vp2vmwfhm48s0ia6dgdkvad3x";
|
||||
};
|
||||
packageRequires = [ compat ];
|
||||
meta = {
|
||||
homepage = "https://elpa.gnu.org/packages/dicom.html";
|
||||
license = lib.licenses.free;
|
||||
};
|
||||
}
|
||||
) { };
|
||||
dict-tree = callPackage (
|
||||
{
|
||||
elpaBuild,
|
||||
@@ -2539,10 +2561,10 @@
|
||||
elpaBuild {
|
||||
pname = "eev";
|
||||
ename = "eev";
|
||||
version = "20241123";
|
||||
version = "20241223";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/eev-20241123.tar";
|
||||
sha256 = "1bb2134jggj4xg49cwy8ivfb12yafxyy2p5k4rca9an3cr4s8ci7";
|
||||
url = "https://elpa.gnu.org/packages/eev-20241223.tar";
|
||||
sha256 = "0rp7b3sfh94zyah303sk43mfdbzcz6p20dqarkzbsgin3n77ara8";
|
||||
};
|
||||
packageRequires = [ ];
|
||||
meta = {
|
||||
@@ -2689,10 +2711,10 @@
|
||||
elpaBuild {
|
||||
pname = "elisa";
|
||||
ename = "elisa";
|
||||
version = "1.1.3";
|
||||
version = "1.1.4";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/elisa-1.1.3.tar";
|
||||
sha256 = "0370gvj3r701i2acp3wq705a9n534g719nzz8bg9a4lry76f2crv";
|
||||
url = "https://elpa.gnu.org/packages/elisa-1.1.4.tar";
|
||||
sha256 = "1v5y0piqz31dx38mv217l5z4xn6hnggznmrcxd2ffs0xdvr9iv3s";
|
||||
};
|
||||
packageRequires = [
|
||||
async
|
||||
@@ -2740,10 +2762,10 @@
|
||||
elpaBuild {
|
||||
pname = "ellama";
|
||||
ename = "ellama";
|
||||
version = "0.13.0";
|
||||
version = "0.13.1";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/ellama-0.13.0.tar";
|
||||
sha256 = "0wfn8fv124qxf9yxl4lsa3hwlicmaiv2zzn8w4vhmlni1kf37nlw";
|
||||
url = "https://elpa.gnu.org/packages/ellama-0.13.1.tar";
|
||||
sha256 = "1hf9lqjcg33xahz8i5ng123z6yljmwm3zw15n96x83x0szxi1wl1";
|
||||
};
|
||||
packageRequires = [
|
||||
compat
|
||||
@@ -2876,10 +2898,10 @@
|
||||
elpaBuild {
|
||||
pname = "emms";
|
||||
ename = "emms";
|
||||
version = "20.2";
|
||||
version = "21";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/emms-20.2.tar";
|
||||
sha256 = "0amc956amyfsjlq5aqc7nk2cs2ph2zcpci5wkms6w973wx67z2j6";
|
||||
url = "https://elpa.gnu.org/packages/emms-21.tar";
|
||||
sha256 = "188rij39qqaya7hk0p05ygcw5vlha7qd6pm4ws6nfw7g0nv1rbcc";
|
||||
};
|
||||
packageRequires = [
|
||||
cl-lib
|
||||
@@ -3801,10 +3823,10 @@
|
||||
elpaBuild {
|
||||
pname = "greader";
|
||||
ename = "greader";
|
||||
version = "0.11.18";
|
||||
version = "0.12.6";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/greader-0.11.18.tar";
|
||||
sha256 = "122mvjcbvi7dzggx1dl02iw9jl0h33l8ka4mzvlr6sl0wwwzfpr8";
|
||||
url = "https://elpa.gnu.org/packages/greader-0.12.6.tar";
|
||||
sha256 = "0xv814p7cdf2wj7qdj9cpz3blnkcd8b6sjk2jajym5hilmr9a9b5";
|
||||
};
|
||||
packageRequires = [
|
||||
compat
|
||||
@@ -4422,10 +4444,10 @@
|
||||
elpaBuild {
|
||||
pname = "jinx";
|
||||
ename = "jinx";
|
||||
version = "1.10";
|
||||
version = "1.11";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/jinx-1.10.tar";
|
||||
sha256 = "19l1wcrv610l6alb9xzyfmdkmnzgcf60z3557q4dkgvz35959p4y";
|
||||
url = "https://elpa.gnu.org/packages/jinx-1.11.tar";
|
||||
sha256 = "0g0iys02k488lbkd7a8qn3hwcmfhmyfp8v3mm07z3zsjhlqw0m57";
|
||||
};
|
||||
packageRequires = [ compat ];
|
||||
meta = {
|
||||
@@ -4873,10 +4895,10 @@
|
||||
elpaBuild {
|
||||
pname = "llm";
|
||||
ename = "llm";
|
||||
version = "0.19.1";
|
||||
version = "0.20.0";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/llm-0.19.1.tar";
|
||||
sha256 = "03f8yvnq1n2pns62iji2iz50f30wxw50n9a6cxgd9p2vkd4pjb0g";
|
||||
url = "https://elpa.gnu.org/packages/llm-0.20.0.tar";
|
||||
sha256 = "12a6z2knsxp8jy0v9hsfsb7kdzyj6pnq5h58vnkrizd95zp6zf91";
|
||||
};
|
||||
packageRequires = [
|
||||
plz
|
||||
@@ -5067,10 +5089,10 @@
|
||||
elpaBuild {
|
||||
pname = "m-buffer";
|
||||
ename = "m-buffer";
|
||||
version = "0.16";
|
||||
version = "0.16.1";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/m-buffer-0.16.tar";
|
||||
sha256 = "16drbgamp7yd1ndw2qrycrgmnknv5k7h4d7svcdhv9az6fg1vzn4";
|
||||
url = "https://elpa.gnu.org/packages/m-buffer-0.16.1.tar";
|
||||
sha256 = "1iq7nld1i8v0da1ajhvfdarx4bx3wnwgz5lhb78fcnsq8zb6cp5y";
|
||||
};
|
||||
packageRequires = [ seq ];
|
||||
meta = {
|
||||
@@ -5110,10 +5132,10 @@
|
||||
elpaBuild {
|
||||
pname = "marginalia";
|
||||
ename = "marginalia";
|
||||
version = "1.7";
|
||||
version = "1.8";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/marginalia-1.7.tar";
|
||||
sha256 = "1bwbkz71w81zcqsydvqic2xri52pm1h9nac8i7i04nl5b98pszkk";
|
||||
url = "https://elpa.gnu.org/packages/marginalia-1.8.tar";
|
||||
sha256 = "0q8mflfsl4vj2r2m47jgm5hrg3a4k5pildb53vlgm5k9wb4sd7md";
|
||||
};
|
||||
packageRequires = [ compat ];
|
||||
meta = {
|
||||
@@ -5185,6 +5207,27 @@
|
||||
};
|
||||
}
|
||||
) { };
|
||||
matlab-mode = callPackage (
|
||||
{
|
||||
elpaBuild,
|
||||
fetchurl,
|
||||
lib,
|
||||
}:
|
||||
elpaBuild {
|
||||
pname = "matlab-mode";
|
||||
ename = "matlab-mode";
|
||||
version = "6.3";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/matlab-mode-6.3.tar";
|
||||
sha256 = "0m3h60629p9rv8k2fk23iwfdgzsdmlk78y1j83xz5m53z7vl3a7m";
|
||||
};
|
||||
packageRequires = [ ];
|
||||
meta = {
|
||||
homepage = "https://elpa.gnu.org/packages/matlab-mode.html";
|
||||
license = lib.licenses.free;
|
||||
};
|
||||
}
|
||||
) { };
|
||||
mct = callPackage (
|
||||
{
|
||||
elpaBuild,
|
||||
@@ -5943,10 +5986,10 @@
|
||||
elpaBuild {
|
||||
pname = "orderless";
|
||||
ename = "orderless";
|
||||
version = "1.2";
|
||||
version = "1.3";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/orderless-1.2.tar";
|
||||
sha256 = "1iyfnvwqwn8y4bkv25zw15y8yy5dm89kyk7wlxw0al22bhfc2cm7";
|
||||
url = "https://elpa.gnu.org/packages/orderless-1.3.tar";
|
||||
sha256 = "1gh2xw34adk5q6v9sz42j5mwyjjp1yix70jvjylnapwsjjsjm5qk";
|
||||
};
|
||||
packageRequires = [ compat ];
|
||||
meta = {
|
||||
@@ -5964,10 +6007,10 @@
|
||||
elpaBuild {
|
||||
pname = "org";
|
||||
ename = "org";
|
||||
version = "9.7.16";
|
||||
version = "9.7.19";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/org-9.7.16.tar";
|
||||
sha256 = "1d6vxd7ssfb1v00a37dr723v9cg8i8v78lcymqndqhy6f2ji1f06";
|
||||
url = "https://elpa.gnu.org/packages/org-9.7.19.tar";
|
||||
sha256 = "0v7ridhsz12iwznk8165ll61i1w1avhxfrq3p82p9r6ir2xdan1g";
|
||||
};
|
||||
packageRequires = [ ];
|
||||
meta = {
|
||||
@@ -6056,10 +6099,10 @@
|
||||
elpaBuild {
|
||||
pname = "org-modern";
|
||||
ename = "org-modern";
|
||||
version = "1.5";
|
||||
version = "1.6";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/org-modern-1.5.tar";
|
||||
sha256 = "08s253r3z5r37swlsgrp97ls7p3bdr4hr2xvyb1pm57j7livv74b";
|
||||
url = "https://elpa.gnu.org/packages/org-modern-1.6.tar";
|
||||
sha256 = "1fmmblqs6v52690fvky3xq48m5a3xh8xrl7j8pqw6hc06igm4m5q";
|
||||
};
|
||||
packageRequires = [ compat ];
|
||||
meta = {
|
||||
@@ -6100,10 +6143,10 @@
|
||||
elpaBuild {
|
||||
pname = "org-real";
|
||||
ename = "org-real";
|
||||
version = "1.0.9";
|
||||
version = "1.0.11";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/org-real-1.0.9.tar";
|
||||
sha256 = "0g19pgg7rqijb6q1vpifvpzl2gyc13a42q1n23x3kawl2srhcjp2";
|
||||
url = "https://elpa.gnu.org/packages/org-real-1.0.11.tar";
|
||||
sha256 = "1mm2p6487m4sr8zvj7xqryvicvj0qbv7as39hxh1ad7yhfdhgpvw";
|
||||
};
|
||||
packageRequires = [
|
||||
boxy
|
||||
@@ -6233,10 +6276,10 @@
|
||||
elpaBuild {
|
||||
pname = "osm";
|
||||
ename = "osm";
|
||||
version = "1.4";
|
||||
version = "1.5";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/osm-1.4.tar";
|
||||
sha256 = "0cix4jn3919xnlsj85l4m83znkqf4m2988zzqwcsvvvjrmgccanh";
|
||||
url = "https://elpa.gnu.org/packages/osm-1.5.tar";
|
||||
sha256 = "1hgr1gfkii75nmfsz3nvn5hv9x9jg09as7k12rr7vr9k0fs0j4hk";
|
||||
};
|
||||
packageRequires = [ compat ];
|
||||
meta = {
|
||||
@@ -6340,10 +6383,10 @@
|
||||
elpaBuild {
|
||||
pname = "parser-generator";
|
||||
ename = "parser-generator";
|
||||
version = "0.2.1";
|
||||
version = "0.2.4";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/parser-generator-0.2.1.tar";
|
||||
sha256 = "1vrgkvcj16550frq2jivw31cmq6rhwrifmdk4rf0266br3jdarpf";
|
||||
url = "https://elpa.gnu.org/packages/parser-generator-0.2.4.tar";
|
||||
sha256 = "01b5bwh484fpicv0g2z64694pjkhrcqz9f8jpq6hk41kzhvr23m1";
|
||||
};
|
||||
packageRequires = [ ];
|
||||
meta = {
|
||||
@@ -6830,10 +6873,10 @@
|
||||
elpaBuild {
|
||||
pname = "pulsar";
|
||||
ename = "pulsar";
|
||||
version = "1.1.0";
|
||||
version = "1.2.0";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/pulsar-1.1.0.tar";
|
||||
sha256 = "0hs65y2avl8w5g4zd68sdg4rl4q15ac53xlbc4qrfjynlajma6mm";
|
||||
url = "https://elpa.gnu.org/packages/pulsar-1.2.0.tar";
|
||||
sha256 = "03bx06fa7md78xrn10kigrf3p8pm07lxpw70wbhfqgq1b3zr46rl";
|
||||
};
|
||||
packageRequires = [ ];
|
||||
meta = {
|
||||
@@ -7325,10 +7368,10 @@
|
||||
elpaBuild {
|
||||
pname = "relint";
|
||||
ename = "relint";
|
||||
version = "2.0";
|
||||
version = "2.1";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/relint-2.0.tar";
|
||||
sha256 = "0r89b5yk5lp92k4gnr0sx6ccilqzpv6kd5csqhxydk0xmqh8rsff";
|
||||
url = "https://elpa.gnu.org/packages/relint-2.1.tar";
|
||||
sha256 = "0ikml87y0k85qd92m3l1gkzjd9ng3mhjfk19w15ln0w801351cq0";
|
||||
};
|
||||
packageRequires = [ xr ];
|
||||
meta = {
|
||||
@@ -7960,6 +8003,28 @@
|
||||
};
|
||||
}
|
||||
) { };
|
||||
speedrect = callPackage (
|
||||
{
|
||||
compat,
|
||||
elpaBuild,
|
||||
fetchurl,
|
||||
lib,
|
||||
}:
|
||||
elpaBuild {
|
||||
pname = "speedrect";
|
||||
ename = "speedrect";
|
||||
version = "0.7";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/speedrect-0.7.tar";
|
||||
sha256 = "0nxwwd12qqyxq1fg8n6miyx63fp29cvpfp8w33zmf9dhkcjwyfd1";
|
||||
};
|
||||
packageRequires = [ compat ];
|
||||
meta = {
|
||||
homepage = "https://elpa.gnu.org/packages/speedrect.html";
|
||||
license = lib.licenses.free;
|
||||
};
|
||||
}
|
||||
) { };
|
||||
spinner = callPackage (
|
||||
{
|
||||
elpaBuild,
|
||||
@@ -8101,10 +8166,10 @@
|
||||
elpaBuild {
|
||||
pname = "standard-themes";
|
||||
ename = "standard-themes";
|
||||
version = "2.1.0";
|
||||
version = "2.2.0";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/standard-themes-2.1.0.tar";
|
||||
sha256 = "0x7fphd36kwg4vfwix5rq7260xl6x6cjfwsq11rj4af30sm4hlfn";
|
||||
url = "https://elpa.gnu.org/packages/standard-themes-2.2.0.tar";
|
||||
sha256 = "0qdld75vcfhsn2l0xips52vrlp5q7ss3973hd722h2gp1wddn5f7";
|
||||
};
|
||||
packageRequires = [ ];
|
||||
meta = {
|
||||
@@ -8122,10 +8187,10 @@
|
||||
elpaBuild {
|
||||
pname = "stream";
|
||||
ename = "stream";
|
||||
version = "2.3.0";
|
||||
version = "2.4.0";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/stream-2.3.0.tar";
|
||||
sha256 = "0224hjcxvy3cxv1c3pz9j2laxld2cxqbs5sigr02fcdcb9qn7hay";
|
||||
url = "https://elpa.gnu.org/packages/stream-2.4.0.tar";
|
||||
sha256 = "16wl1q7wikk0wyzfwjz16azq025dx4wdh1j9q0nadi68ygxi172b";
|
||||
};
|
||||
packageRequires = [ ];
|
||||
meta = {
|
||||
@@ -8294,10 +8359,10 @@
|
||||
elpaBuild {
|
||||
pname = "sxhkdrc-mode";
|
||||
ename = "sxhkdrc-mode";
|
||||
version = "1.0.0";
|
||||
version = "1.1.0";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/sxhkdrc-mode-1.0.0.tar";
|
||||
sha256 = "0gfv5l71md2ica9jfa8ynwfag3zvayc435pl91lzcz92qy5n0hlj";
|
||||
url = "https://elpa.gnu.org/packages/sxhkdrc-mode-1.1.0.tar";
|
||||
sha256 = "00mzhxrlcbswsv3jysgqniq02inakz7j5a2hx2w83is5rbmb9bhc";
|
||||
};
|
||||
packageRequires = [ ];
|
||||
meta = {
|
||||
@@ -8449,10 +8514,10 @@
|
||||
elpaBuild {
|
||||
pname = "tempel";
|
||||
ename = "tempel";
|
||||
version = "1.2";
|
||||
version = "1.3";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/tempel-1.2.tar";
|
||||
sha256 = "0lvdd7lvdx4yf0zhrv380y5q3zvvk7gsxjgxj2c40np86c4q2q7m";
|
||||
url = "https://elpa.gnu.org/packages/tempel-1.3.tar";
|
||||
sha256 = "0fivsldisk17a1vbzx91kmvsd85vl0dnih77pqnzriyqs8dl1wdm";
|
||||
};
|
||||
packageRequires = [ compat ];
|
||||
meta = {
|
||||
@@ -8688,10 +8753,10 @@
|
||||
elpaBuild {
|
||||
pname = "tramp";
|
||||
ename = "tramp";
|
||||
version = "2.7.1.5";
|
||||
version = "2.7.2";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/tramp-2.7.1.5.tar";
|
||||
sha256 = "11a2zyk0d1y9bxhdqfzcx4ynazfs6hb3mdgpz5kp9p3lk8l6bz5g";
|
||||
url = "https://elpa.gnu.org/packages/tramp-2.7.2.tar";
|
||||
sha256 = "1m1ar9k5f4yx98m8v0y8rm7hq5dwjafb096gmdg6mz57k1k3y6vl";
|
||||
};
|
||||
packageRequires = [ ];
|
||||
meta = {
|
||||
@@ -8730,10 +8795,10 @@
|
||||
elpaBuild {
|
||||
pname = "tramp-theme";
|
||||
ename = "tramp-theme";
|
||||
version = "0.2";
|
||||
version = "0.3";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/tramp-theme-0.2.tar";
|
||||
sha256 = "0dz8ndnmwc38g1gy30f3jcjqg5nzdi6721x921r4s5a8i1mx2kpm";
|
||||
url = "https://elpa.gnu.org/packages/tramp-theme-0.3.tar";
|
||||
sha256 = "1v9265cnk858jl522zcnqf2cv3f3g93f0mk52plz3n4a8k5nlfa7";
|
||||
};
|
||||
packageRequires = [ ];
|
||||
meta = {
|
||||
@@ -8774,10 +8839,10 @@
|
||||
elpaBuild {
|
||||
pname = "transient";
|
||||
ename = "transient";
|
||||
version = "0.7.9";
|
||||
version = "0.8.3";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/transient-0.7.9.tar";
|
||||
sha256 = "07d5pzd7nalnjxn6wpj6vpfg8pldnwh69l85immmiww03vl8ngrf";
|
||||
url = "https://elpa.gnu.org/packages/transient-0.8.3.tar";
|
||||
sha256 = "0cx9h7knkyzalkyvbvl762mnl2mslcfxh899mf5wgqfavwkzgqp7";
|
||||
};
|
||||
packageRequires = [
|
||||
compat
|
||||
@@ -9287,10 +9352,10 @@
|
||||
elpaBuild {
|
||||
pname = "verilog-mode";
|
||||
ename = "verilog-mode";
|
||||
version = "2024.10.9.140346409";
|
||||
version = "2025.1.1.100165202";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/verilog-mode-2024.10.9.140346409.tar";
|
||||
sha256 = "1hm0id8sivb7znvw1f63asbs4sf4v6hkimr0j8bqqda3h9sz197l";
|
||||
url = "https://elpa.gnu.org/packages/verilog-mode-2025.1.1.100165202.tar";
|
||||
sha256 = "1cgv081dlarc0b4s6rjkqbvs4fa9npyq9pjxj7173vmgkfdwmkp5";
|
||||
};
|
||||
packageRequires = [ ];
|
||||
meta = {
|
||||
@@ -9309,10 +9374,10 @@
|
||||
elpaBuild {
|
||||
pname = "vertico";
|
||||
ename = "vertico";
|
||||
version = "1.9";
|
||||
version = "1.10";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/vertico-1.9.tar";
|
||||
sha256 = "12aiqxsar86xlmsfzvilza10wf184nwhg218bv6bip7v51ikh37y";
|
||||
url = "https://elpa.gnu.org/packages/vertico-1.10.tar";
|
||||
sha256 = "1mka141i5dmdw8c8dsxgxwqfr78s3gjy4rrra8qd5b8qrhv797dx";
|
||||
};
|
||||
packageRequires = [ compat ];
|
||||
meta = {
|
||||
@@ -9332,10 +9397,10 @@
|
||||
elpaBuild {
|
||||
pname = "vertico-posframe";
|
||||
ename = "vertico-posframe";
|
||||
version = "0.7.7";
|
||||
version = "0.7.8";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/vertico-posframe-0.7.7.tar";
|
||||
sha256 = "0ahn0b5v9xw6f1zvgv27c82kxdh4rx7n9dbp17rkkkg3dvvkdzxy";
|
||||
url = "https://elpa.gnu.org/packages/vertico-posframe-0.7.8.tar";
|
||||
sha256 = "08f1fmr0s9kx3f7ivh1isdik04cq87j69wgl5ir0gppa39ip0dqw";
|
||||
};
|
||||
packageRequires = [
|
||||
posframe
|
||||
@@ -9853,10 +9918,10 @@
|
||||
elpaBuild {
|
||||
pname = "xr";
|
||||
ename = "xr";
|
||||
version = "2.0";
|
||||
version = "2.1";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/xr-2.0.tar";
|
||||
sha256 = "1y5pcrph6v8q06mipv3l49qhw55yvvb1nnq0817bzm25k0s3z70v";
|
||||
url = "https://elpa.gnu.org/packages/xr-2.1.tar";
|
||||
sha256 = "1yssl7av2rpanzmm93iw74acnb3pbrnh0b51kr64wcj6hwb26cy2";
|
||||
};
|
||||
packageRequires = [ ];
|
||||
meta = {
|
||||
|
||||
@@ -956,11 +956,18 @@ let
|
||||
# missing optional dependencies
|
||||
conda = addPackageRequires super.conda [ self.projectile ];
|
||||
|
||||
consult-gh = super.consult-gh.overrideAttrs (old: {
|
||||
propagatedUserEnvPkgs = old.propagatedUserEnvPkgs or [ ] ++ [ pkgs.gh ];
|
||||
});
|
||||
# needs network during compilation, also native-ice
|
||||
consult-gh = ignoreCompilationError (
|
||||
super.consult-gh.overrideAttrs (old: {
|
||||
propagatedUserEnvPkgs = old.propagatedUserEnvPkgs or [ ] ++ [ pkgs.gh ];
|
||||
})
|
||||
);
|
||||
|
||||
consult-gh-forge = buildWithGit super.consult-gh-forge;
|
||||
# needs network during compilation
|
||||
consult-gh-embark = ignoreCompilationError super.consult-gh-embark;
|
||||
|
||||
# needs network during compilation
|
||||
consult-gh-forge = ignoreCompilationError (buildWithGit super.consult-gh-forge);
|
||||
|
||||
counsel-gtags = ignoreCompilationError super.counsel-gtags; # elisp error
|
||||
|
||||
@@ -1398,7 +1405,7 @@ let
|
||||
org-gtd = ignoreCompilationError super.org-gtd; # elisp error
|
||||
|
||||
# needs newer org than the Eamcs 29.4 builtin one
|
||||
org-link-beautify = addPackageRequires super.org-link-beautify [ self.org ];
|
||||
org-link-beautify = addPackageRequires super.org-link-beautify [ self.org self.qrencode ];
|
||||
|
||||
# TODO report to upstream
|
||||
org-kindle = addPackageRequires super.org-kindle [ self.dash ];
|
||||
|
||||
@@ -177,10 +177,10 @@
|
||||
elpaBuild {
|
||||
pname = "apropospriate-theme";
|
||||
ename = "apropospriate-theme";
|
||||
version = "0.2.0.0.20241118.190153";
|
||||
version = "0.2.0.0.20241215.141144";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.nongnu.org/nongnu-devel/apropospriate-theme-0.2.0.0.20241118.190153.tar";
|
||||
sha256 = "0nqnf57bf21wg2vlw85msg927618hhsn4qfwd60vrx70260432kf";
|
||||
url = "https://elpa.nongnu.org/nongnu-devel/apropospriate-theme-0.2.0.0.20241215.141144.tar";
|
||||
sha256 = "0hr961s3s9n9an63yxkxkryas0vr0cw9g07ir8igyan6b8b2didb";
|
||||
};
|
||||
packageRequires = [ ];
|
||||
meta = {
|
||||
@@ -220,10 +220,10 @@
|
||||
elpaBuild {
|
||||
pname = "auto-dim-other-buffers";
|
||||
ename = "auto-dim-other-buffers";
|
||||
version = "2.1.1.0.20240515.131159";
|
||||
version = "2.2.1.0.20241219.184527";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.nongnu.org/nongnu-devel/auto-dim-other-buffers-2.1.1.0.20240515.131159.tar";
|
||||
sha256 = "1dp3q1hrdcvi82pcj5hxha9yyy9lkdqs8kxfq6v7lq716wxkwxfl";
|
||||
url = "https://elpa.nongnu.org/nongnu-devel/auto-dim-other-buffers-2.2.1.0.20241219.184527.tar";
|
||||
sha256 = "0596jw2qxk79z26blq7vlch7wszv39f84kpi7gwrbad0jyjcryfw";
|
||||
};
|
||||
packageRequires = [ ];
|
||||
meta = {
|
||||
@@ -284,10 +284,10 @@
|
||||
elpaBuild {
|
||||
pname = "bash-completion";
|
||||
ename = "bash-completion";
|
||||
version = "3.1.1.0.20241118.194353";
|
||||
version = "3.2.1snapshot0.20250101.145820";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.nongnu.org/nongnu-devel/bash-completion-3.1.1.0.20241118.194353.tar";
|
||||
sha256 = "10cirfnwz34yc7glf1xzshq3926jdwdf3s7bdarykrkxmsrha4f7";
|
||||
url = "https://elpa.nongnu.org/nongnu-devel/bash-completion-3.2.1snapshot0.20250101.145820.tar";
|
||||
sha256 = "11a2fijxi102mnm63vbxgrrw2rr9nf5rhlfal3766m8rv2drwhd7";
|
||||
};
|
||||
packageRequires = [ ];
|
||||
meta = {
|
||||
@@ -544,10 +544,10 @@
|
||||
elpaBuild {
|
||||
pname = "cider";
|
||||
ename = "cider";
|
||||
version = "1.16.1.0.20241203.160720";
|
||||
version = "1.16.1.0.20250103.102622";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.nongnu.org/nongnu-devel/cider-1.16.1.0.20241203.160720.tar";
|
||||
sha256 = "0b6nqhg5c0ny8ilm4653c7pd34aj02bh6ya9bzc9swdpyq7pwnqr";
|
||||
url = "https://elpa.nongnu.org/nongnu-devel/cider-1.16.1.0.20250103.102622.tar";
|
||||
sha256 = "0xxmarmq2mja45yb4a4aqddbcnhi91dcdlw0xq5j5ab3k9grmmpa";
|
||||
};
|
||||
packageRequires = [
|
||||
clojure-mode
|
||||
@@ -573,10 +573,10 @@
|
||||
elpaBuild {
|
||||
pname = "clojure-mode";
|
||||
ename = "clojure-mode";
|
||||
version = "5.20.0snapshot0.20241125.112305";
|
||||
version = "5.20.0snapshot0.20241211.152233";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.nongnu.org/nongnu-devel/clojure-mode-5.20.0snapshot0.20241125.112305.tar";
|
||||
sha256 = "0hh17w63j5x4687kbd2vmlj9qs468ivq54mwwcm6p43wr7rvk2cj";
|
||||
url = "https://elpa.nongnu.org/nongnu-devel/clojure-mode-5.20.0snapshot0.20241211.152233.tar";
|
||||
sha256 = "0m6bafwl3687ccl815q70bw4q8k3w12vkfl24g5x9rn6dn44ppxx";
|
||||
};
|
||||
packageRequires = [ ];
|
||||
meta = {
|
||||
@@ -638,10 +638,10 @@
|
||||
elpaBuild {
|
||||
pname = "consult-flycheck";
|
||||
ename = "consult-flycheck";
|
||||
version = "1.0.0.20241114.112007";
|
||||
version = "1.0.0.20250101.91433";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.nongnu.org/nongnu-devel/consult-flycheck-1.0.0.20241114.112007.tar";
|
||||
sha256 = "1jzli50sjr8pv2j9qg7glxdgm54sx2yw6xr7ka738gisa1r0iscl";
|
||||
url = "https://elpa.nongnu.org/nongnu-devel/consult-flycheck-1.0.0.20250101.91433.tar";
|
||||
sha256 = "05ms0zhswsdlvvrz71md4nsqisshar284xn7idw7z01ddd05rjmb";
|
||||
};
|
||||
packageRequires = [
|
||||
consult
|
||||
@@ -774,10 +774,10 @@
|
||||
elpaBuild {
|
||||
pname = "d-mode";
|
||||
ename = "d-mode";
|
||||
version = "202408131340.0.20241126.105644";
|
||||
version = "202408131340.0.20241225.185152";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.nongnu.org/nongnu-devel/d-mode-202408131340.0.20241126.105644.tar";
|
||||
sha256 = "11hc3dyxyr1pcq25jvw9x3ys4v73rbqw9p19s4i59p9mdb0bnxpy";
|
||||
url = "https://elpa.nongnu.org/nongnu-devel/d-mode-202408131340.0.20241225.185152.tar";
|
||||
sha256 = "08wlsp1mzsn0xprslwmnhxzj58yy35vjy09l70dxz5pyxk3vg2vd";
|
||||
};
|
||||
packageRequires = [ ];
|
||||
meta = {
|
||||
@@ -880,10 +880,10 @@
|
||||
elpaBuild {
|
||||
pname = "diff-ansi";
|
||||
ename = "diff-ansi";
|
||||
version = "0.2.0.20240818.235912";
|
||||
version = "0.2.0.20241208.51148";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.nongnu.org/nongnu-devel/diff-ansi-0.2.0.20240818.235912.tar";
|
||||
sha256 = "085h7xb75dkdmsnc572rmqgzw1pp4jmxcfrr3nnpbvirgjij8pma";
|
||||
url = "https://elpa.nongnu.org/nongnu-devel/diff-ansi-0.2.0.20241208.51148.tar";
|
||||
sha256 = "08fvdzs2qmd4mbcz52bhmng2wz2pxn9x06w5sg9fjq744005p7dd";
|
||||
};
|
||||
packageRequires = [ ];
|
||||
meta = {
|
||||
@@ -902,10 +902,10 @@
|
||||
elpaBuild {
|
||||
pname = "dirvish";
|
||||
ename = "dirvish";
|
||||
version = "2.0.53.0.20230519.150010";
|
||||
version = "2.0.53.0.20250101.212150";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.nongnu.org/nongnu-devel/dirvish-2.0.53.0.20230519.150010.tar";
|
||||
sha256 = "0n73giyvg244s0cxfrkc3j0jrq20bs1zili6liab0s3ks02kvqdg";
|
||||
url = "https://elpa.nongnu.org/nongnu-devel/dirvish-2.0.53.0.20250101.212150.tar";
|
||||
sha256 = "0q4lh8xz2922lsgjb58c116sndcvy2fc0clws6bp1418fsyjxa9l";
|
||||
};
|
||||
packageRequires = [ transient ];
|
||||
meta = {
|
||||
@@ -923,10 +923,10 @@
|
||||
elpaBuild {
|
||||
pname = "doc-show-inline";
|
||||
ename = "doc-show-inline";
|
||||
version = "0.1.0.20240616.234552";
|
||||
version = "0.1.0.20241208.50508";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.nongnu.org/nongnu-devel/doc-show-inline-0.1.0.20240616.234552.tar";
|
||||
sha256 = "0p39glahjqm2fv8xcnwyhcnzsf53g15013jbnj1lh7610bdgfk6g";
|
||||
url = "https://elpa.nongnu.org/nongnu-devel/doc-show-inline-0.1.0.20241208.50508.tar";
|
||||
sha256 = "1k98b8d0bxiz7i4n4r46zxy14jszskfmvxavwriig59p2g5gx1yb";
|
||||
};
|
||||
packageRequires = [ ];
|
||||
meta = {
|
||||
@@ -965,10 +965,10 @@
|
||||
elpaBuild {
|
||||
pname = "dracula-theme";
|
||||
ename = "dracula-theme";
|
||||
version = "1.8.2.0.20241102.130126";
|
||||
version = "1.8.2.0.20241217.214522";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.nongnu.org/nongnu-devel/dracula-theme-1.8.2.0.20241102.130126.tar";
|
||||
sha256 = "01f3g7cy9snm4f2b2rx7zd82kwxzlf9g0wapwa83k3i60p23rf5s";
|
||||
url = "https://elpa.nongnu.org/nongnu-devel/dracula-theme-1.8.2.0.20241217.214522.tar";
|
||||
sha256 = "0dizqwzgygkim66lxkxpwcidhhi7ppwazi57nqkahyd3n03ka2f9";
|
||||
};
|
||||
packageRequires = [ ];
|
||||
meta = {
|
||||
@@ -1008,10 +1008,10 @@
|
||||
elpaBuild {
|
||||
pname = "dslide";
|
||||
ename = "dslide";
|
||||
version = "0.5.5.0.20241128.111432";
|
||||
version = "0.6.2.0.20250102.81901";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.nongnu.org/nongnu-devel/dslide-0.5.5.0.20241128.111432.tar";
|
||||
sha256 = "1d2rsqzn8w6w3qvsfsgpmjwn53nsj30jivli02d7n24q30pxzpv6";
|
||||
url = "https://elpa.nongnu.org/nongnu-devel/dslide-0.6.2.0.20250102.81901.tar";
|
||||
sha256 = "18ggnfj9adlrhni2mb6f1ygc0mf7q8xm99729cbvp2k6l7yidxxc";
|
||||
};
|
||||
packageRequires = [ ];
|
||||
meta = {
|
||||
@@ -1084,6 +1084,48 @@
|
||||
};
|
||||
}
|
||||
) { };
|
||||
eglot-inactive-regions = callPackage (
|
||||
{
|
||||
elpaBuild,
|
||||
fetchurl,
|
||||
lib,
|
||||
}:
|
||||
elpaBuild {
|
||||
pname = "eglot-inactive-regions";
|
||||
ename = "eglot-inactive-regions";
|
||||
version = "0.6.3.0.20241217.45248";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.nongnu.org/nongnu-devel/eglot-inactive-regions-0.6.3.0.20241217.45248.tar";
|
||||
sha256 = "1kf84wzfdysskmxjv45c1vdp5vpg7issk92gvcvrw59afsv25cza";
|
||||
};
|
||||
packageRequires = [ ];
|
||||
meta = {
|
||||
homepage = "https://elpa.nongnu.org/nongnu-devel/eglot-inactive-regions.html";
|
||||
license = lib.licenses.free;
|
||||
};
|
||||
}
|
||||
) { };
|
||||
eldoc-diffstat = callPackage (
|
||||
{
|
||||
elpaBuild,
|
||||
fetchurl,
|
||||
lib,
|
||||
}:
|
||||
elpaBuild {
|
||||
pname = "eldoc-diffstat";
|
||||
ename = "eldoc-diffstat";
|
||||
version = "1.0.0.20241214.213403";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.nongnu.org/nongnu-devel/eldoc-diffstat-1.0.0.20241214.213403.tar";
|
||||
sha256 = "10rjz33lhsp61pjdj64k0y9wh9nlfnz1w89xck0gfp2p42kya87n";
|
||||
};
|
||||
packageRequires = [ ];
|
||||
meta = {
|
||||
homepage = "https://elpa.nongnu.org/nongnu-devel/eldoc-diffstat.html";
|
||||
license = lib.licenses.free;
|
||||
};
|
||||
}
|
||||
) { };
|
||||
elixir-mode = callPackage (
|
||||
{
|
||||
elpaBuild,
|
||||
@@ -1180,10 +1222,10 @@
|
||||
elpaBuild {
|
||||
pname = "evil";
|
||||
ename = "evil";
|
||||
version = "1.15.0.0.20241006.175409";
|
||||
version = "1.15.0.0.20241229.162330";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.nongnu.org/nongnu-devel/evil-1.15.0.0.20241006.175409.tar";
|
||||
sha256 = "0w752hhnpkfa5wqm1rk6nzq6n9y8c8mjzjhzri91l06jngpl6ckd";
|
||||
url = "https://elpa.nongnu.org/nongnu-devel/evil-1.15.0.0.20241229.162330.tar";
|
||||
sha256 = "03l1cg2d4zdh59cf93cvc3i5daq2pw7j8hw7kbdxjy5cl7136d32";
|
||||
};
|
||||
packageRequires = [
|
||||
cl-lib
|
||||
@@ -1255,10 +1297,10 @@
|
||||
elpaBuild {
|
||||
pname = "evil-escape";
|
||||
ename = "evil-escape";
|
||||
version = "3.16.0.20231122.211452";
|
||||
version = "3.16.0.20241212.131839";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.nongnu.org/nongnu-devel/evil-escape-3.16.0.20231122.211452.tar";
|
||||
sha256 = "1yv77vxvyl41795h7ixl6fhm43n7q6xqkqp1yaqgv5g9iymdj1s0";
|
||||
url = "https://elpa.nongnu.org/nongnu-devel/evil-escape-3.16.0.20241212.131839.tar";
|
||||
sha256 = "18j653kymcvxdr0n0vibl091p2zwdzgqymw3g778visshxgk11mb";
|
||||
};
|
||||
packageRequires = [
|
||||
cl-lib
|
||||
@@ -1407,10 +1449,10 @@
|
||||
elpaBuild {
|
||||
pname = "evil-matchit";
|
||||
ename = "evil-matchit";
|
||||
version = "3.0.4.0.20241111.120111";
|
||||
version = "4.0.1.0.20241205.72440";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.nongnu.org/nongnu-devel/evil-matchit-3.0.4.0.20241111.120111.tar";
|
||||
sha256 = "1jv7rs102i00kwdkj1n3l0j9as0kbrylhkkn2rrgwv9b97lmlirs";
|
||||
url = "https://elpa.nongnu.org/nongnu-devel/evil-matchit-4.0.1.0.20241205.72440.tar";
|
||||
sha256 = "0hi6p25pbn2xh7jzglmpvs5nvrlzi7b4gjm37q1vbyiji9k5xfci";
|
||||
};
|
||||
packageRequires = [ ];
|
||||
meta = {
|
||||
@@ -1450,10 +1492,10 @@
|
||||
elpaBuild {
|
||||
pname = "evil-numbers";
|
||||
ename = "evil-numbers";
|
||||
version = "0.7.0.20241204.12906";
|
||||
version = "0.7.0.20241208.52322";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.nongnu.org/nongnu-devel/evil-numbers-0.7.0.20241204.12906.tar";
|
||||
sha256 = "1r4ic5db8vl3mslp48w8lqx904raxi8lzp512jcjv21vs36gjl97";
|
||||
url = "https://elpa.nongnu.org/nongnu-devel/evil-numbers-0.7.0.20241208.52322.tar";
|
||||
sha256 = "1a5lw59lfavfqnaxay4c4j7246q4i3w53ra9gc44qr94432nd1q9";
|
||||
};
|
||||
packageRequires = [ evil ];
|
||||
meta = {
|
||||
@@ -1610,10 +1652,10 @@
|
||||
elpaBuild {
|
||||
pname = "flycheck";
|
||||
ename = "flycheck";
|
||||
version = "35.0snapshot0.20241130.150233";
|
||||
version = "35.0snapshot0.20250104.70510";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.nongnu.org/nongnu-devel/flycheck-35.0snapshot0.20241130.150233.tar";
|
||||
sha256 = "08viqbba50alfj3783ykymjqwpi08si6bi411sm29gagga1cjxr6";
|
||||
url = "https://elpa.nongnu.org/nongnu-devel/flycheck-35.0snapshot0.20250104.70510.tar";
|
||||
sha256 = "1p186zsjjhaz99776zgys9zxx9fk01mllv9g6bsmzd6srmcf9bc5";
|
||||
};
|
||||
packageRequires = [ ];
|
||||
meta = {
|
||||
@@ -1856,10 +1898,10 @@
|
||||
elpaBuild {
|
||||
pname = "geiser-chicken";
|
||||
ename = "geiser-chicken";
|
||||
version = "0.17.0.20241204.11932";
|
||||
version = "0.17.0.20241204.144210";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.nongnu.org/nongnu-devel/geiser-chicken-0.17.0.20241204.11932.tar";
|
||||
sha256 = "1l95d72wl74mlfa50m9m999skj993vqdmm13qm42n0lp0y9ndvyf";
|
||||
url = "https://elpa.nongnu.org/nongnu-devel/geiser-chicken-0.17.0.20241204.144210.tar";
|
||||
sha256 = "0lss1nz7kdbpmky96r10gvsbnjxxnqlymz0d0579ggvf9hi1cj66";
|
||||
};
|
||||
packageRequires = [ geiser ];
|
||||
meta = {
|
||||
@@ -2090,10 +2132,10 @@
|
||||
elpaBuild {
|
||||
pname = "gnosis";
|
||||
ename = "gnosis";
|
||||
version = "0.4.8.0.20241115.104152";
|
||||
version = "0.4.10.0.20241211.105407";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.nongnu.org/nongnu-devel/gnosis-0.4.8.0.20241115.104152.tar";
|
||||
sha256 = "143pmwp5g2wzmmhmbwc1q6hhf86j1cywi8x2hzvlq0p5mhkkilr1";
|
||||
url = "https://elpa.nongnu.org/nongnu-devel/gnosis-0.4.10.0.20241211.105407.tar";
|
||||
sha256 = "0wvqk279qfdvwk7k27lzw9063x7w6jypprlh1rgj6xlhnn3kv9y8";
|
||||
};
|
||||
packageRequires = [
|
||||
compat
|
||||
@@ -2264,10 +2306,10 @@
|
||||
elpaBuild {
|
||||
pname = "gptel";
|
||||
ename = "gptel";
|
||||
version = "0.9.6.0.20241202.163036";
|
||||
version = "0.9.7.0.20250103.103741";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.nongnu.org/nongnu-devel/gptel-0.9.6.0.20241202.163036.tar";
|
||||
sha256 = "0zlfrnp01hb6syrkgkwfi1hjxm9l4j9sqrwn7a8nmk5wlw4bi6xm";
|
||||
url = "https://elpa.nongnu.org/nongnu-devel/gptel-0.9.7.0.20250103.103741.tar";
|
||||
sha256 = "00d22c6hgm8cr2wfqk4s2xcqblljzcv4iyrvbcjbgipr2nynb6iw";
|
||||
};
|
||||
packageRequires = [
|
||||
compat
|
||||
@@ -2288,10 +2330,10 @@
|
||||
elpaBuild {
|
||||
pname = "graphql-mode";
|
||||
ename = "graphql-mode";
|
||||
version = "1.0.0.0.20241020.75405";
|
||||
version = "1.0.0.0.20241206.72535";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.nongnu.org/nongnu-devel/graphql-mode-1.0.0.0.20241020.75405.tar";
|
||||
sha256 = "0bds1zv0syg1jfdak2hk3kank4c532r6ki095wamxy06rwdbm2il";
|
||||
url = "https://elpa.nongnu.org/nongnu-devel/graphql-mode-1.0.0.0.20241206.72535.tar";
|
||||
sha256 = "06pn5rk0mkswrx2sd589hbqir1wkczjwy453ssk0az4z49g85ks9";
|
||||
};
|
||||
packageRequires = [ ];
|
||||
meta = {
|
||||
@@ -2438,10 +2480,10 @@
|
||||
elpaBuild {
|
||||
pname = "haskell-ts-mode";
|
||||
ename = "haskell-ts-mode";
|
||||
version = "1.0.20241108.150811";
|
||||
version = "1.0.20250101.102728";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.nongnu.org/nongnu-devel/haskell-ts-mode-1.0.20241108.150811.tar";
|
||||
sha256 = "1ycbcwhj9j77jgpb3ag7hy8474qdj4rzzg7z5z79f0fqvlnv94m7";
|
||||
url = "https://elpa.nongnu.org/nongnu-devel/haskell-ts-mode-1.0.20250101.102728.tar";
|
||||
sha256 = "15m1qdcb899wmdx7ih53c5ndlvv3q5fny885l287sf17f6p563k7";
|
||||
};
|
||||
packageRequires = [ ];
|
||||
meta = {
|
||||
@@ -2461,10 +2503,10 @@
|
||||
elpaBuild {
|
||||
pname = "helm";
|
||||
ename = "helm";
|
||||
version = "4.0.0.20241204.51511";
|
||||
version = "4.0.0.20250104.104508";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.nongnu.org/nongnu-devel/helm-4.0.0.20241204.51511.tar";
|
||||
sha256 = "1dzc1jg6p9r589mzwdzhlhj58239ssy85mz27kwr7yyg36cz3m3l";
|
||||
url = "https://elpa.nongnu.org/nongnu-devel/helm-4.0.0.20250104.104508.tar";
|
||||
sha256 = "0xcsfbzkwip67m5lpjwi8a08hfm8nc5xwgvz18d7685gsmizc6hs";
|
||||
};
|
||||
packageRequires = [
|
||||
helm-core
|
||||
@@ -2486,10 +2528,10 @@
|
||||
elpaBuild {
|
||||
pname = "helm-core";
|
||||
ename = "helm-core";
|
||||
version = "4.0.0.20241204.51511";
|
||||
version = "4.0.0.20250104.104508";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.nongnu.org/nongnu-devel/helm-core-4.0.0.20241204.51511.tar";
|
||||
sha256 = "1xvx1x6p7r1ak40n3740q9iyah2d1npqg7aw1zybshcrai5bm9jm";
|
||||
url = "https://elpa.nongnu.org/nongnu-devel/helm-core-4.0.0.20250104.104508.tar";
|
||||
sha256 = "02silp1myffcm3nwrakfj8zn3c5x8msmmyrqx1id2r6wwki9f8pz";
|
||||
};
|
||||
packageRequires = [ async ];
|
||||
meta = {
|
||||
@@ -2549,10 +2591,10 @@
|
||||
elpaBuild {
|
||||
pname = "hl-block-mode";
|
||||
ename = "hl-block-mode";
|
||||
version = "0.2.0.20240422.12652";
|
||||
version = "0.2.0.20241208.45934";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.nongnu.org/nongnu-devel/hl-block-mode-0.2.0.20240422.12652.tar";
|
||||
sha256 = "1j3fp1p066j9b67hna6mh7pb96kld9nc0mkv8jl0qdwi95aah81q";
|
||||
url = "https://elpa.nongnu.org/nongnu-devel/hl-block-mode-0.2.0.20241208.45934.tar";
|
||||
sha256 = "0s9x68h46qf49xg7fd7gbrr78l7zc53hnprq6hxhzlw5fara7xsn";
|
||||
};
|
||||
packageRequires = [ ];
|
||||
meta = {
|
||||
@@ -2619,10 +2661,10 @@
|
||||
elpaBuild {
|
||||
pname = "hyperdrive";
|
||||
ename = "hyperdrive";
|
||||
version = "0.5pre0.20241106.231359";
|
||||
version = "0.6pre0.20241222.235250";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.nongnu.org/nongnu-devel/hyperdrive-0.5pre0.20241106.231359.tar";
|
||||
sha256 = "11b3dvwzrsgg2nj3kasgrz5bwhd2i3ig4v9blzlzhyybw6wy0i1f";
|
||||
url = "https://elpa.nongnu.org/nongnu-devel/hyperdrive-0.6pre0.20241222.235250.tar";
|
||||
sha256 = "0a9z9kbnlzbv21w62zyw3mpbvjfnl5vhjmlpq65w7cc4d1qd2jp5";
|
||||
};
|
||||
packageRequires = [
|
||||
compat
|
||||
@@ -2764,10 +2806,10 @@
|
||||
elpaBuild {
|
||||
pname = "inf-ruby";
|
||||
ename = "inf-ruby";
|
||||
version = "2.8.1.0.20240925.4944";
|
||||
version = "2.8.1.0.20241220.25141";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.nongnu.org/nongnu-devel/inf-ruby-2.8.1.0.20240925.4944.tar";
|
||||
sha256 = "1wl5nzrbafvmvvvq477lsvc14pvlmq8x9j1cqbd0cj11lvn4k1qb";
|
||||
url = "https://elpa.nongnu.org/nongnu-devel/inf-ruby-2.8.1.0.20241220.25141.tar";
|
||||
sha256 = "0z3vbdb1df0vwjm2lk6bk11c0afg8w6p5n2x8q4wgmwqyp3h3gb2";
|
||||
};
|
||||
packageRequires = [ ];
|
||||
meta = {
|
||||
@@ -2895,10 +2937,10 @@
|
||||
elpaBuild {
|
||||
pname = "julia-mode";
|
||||
ename = "julia-mode";
|
||||
version = "1.0.1.0.20241120.85729";
|
||||
version = "1.0.2.0.20241213.162017";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.nongnu.org/nongnu-devel/julia-mode-1.0.1.0.20241120.85729.tar";
|
||||
sha256 = "0a6xi5zcq1nfbsjqk84x6avlrzbjdh6fbq1h6jkqcczy7mm5rg5h";
|
||||
url = "https://elpa.nongnu.org/nongnu-devel/julia-mode-1.0.2.0.20241213.162017.tar";
|
||||
sha256 = "09l2awhz4362g03qnpsy4813afjabm2dqh8g3ma354k7ql8rr95h";
|
||||
};
|
||||
packageRequires = [ ];
|
||||
meta = {
|
||||
@@ -3003,10 +3045,10 @@
|
||||
elpaBuild {
|
||||
pname = "macrostep";
|
||||
ename = "macrostep";
|
||||
version = "0.9.4.0.20241025.145629";
|
||||
version = "0.9.4.0.20241228.221506";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.nongnu.org/nongnu-devel/macrostep-0.9.4.0.20241025.145629.tar";
|
||||
sha256 = "1xbi45ymsqc2vbhl1s3wphirgqz5ky9880fzr949bhd0ff18bw6x";
|
||||
url = "https://elpa.nongnu.org/nongnu-devel/macrostep-0.9.4.0.20241228.221506.tar";
|
||||
sha256 = "0yza9ms8i3nq4fh42s475r0m77b2phq8sx41p6irywi0clc33m0y";
|
||||
};
|
||||
packageRequires = [
|
||||
cl-lib
|
||||
@@ -3033,10 +3075,10 @@
|
||||
elpaBuild {
|
||||
pname = "magit";
|
||||
ename = "magit";
|
||||
version = "4.1.2.0.20241102.130025";
|
||||
version = "4.2.0.0.20250101.180326";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.nongnu.org/nongnu-devel/magit-4.1.2.0.20241102.130025.tar";
|
||||
sha256 = "1y3fr2qj8a1h7hkrh47zshbmrcfxhw6i8wiqcrrba7ypnas53gcg";
|
||||
url = "https://elpa.nongnu.org/nongnu-devel/magit-4.2.0.0.20250101.180326.tar";
|
||||
sha256 = "1w6yfwsy4i1wj9wm7yk7zlxkqsws1g6ql22rw8cc93hhp9rf3a57";
|
||||
};
|
||||
packageRequires = [
|
||||
compat
|
||||
@@ -3064,10 +3106,10 @@
|
||||
elpaBuild {
|
||||
pname = "magit-section";
|
||||
ename = "magit-section";
|
||||
version = "4.1.2.0.20241102.130025";
|
||||
version = "4.2.0.0.20250101.180326";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.nongnu.org/nongnu-devel/magit-section-4.1.2.0.20241102.130025.tar";
|
||||
sha256 = "1cnpklpsvbsi1wsmfbp5m8379cbr6jdifxm07zj4hnvi8lyr49vn";
|
||||
url = "https://elpa.nongnu.org/nongnu-devel/magit-section-4.2.0.0.20250101.180326.tar";
|
||||
sha256 = "0wyh9fvgnbn35nak6f3v8651j33sz929xwvkqgyrbicxwdwxinbr";
|
||||
};
|
||||
packageRequires = [
|
||||
compat
|
||||
@@ -3089,10 +3131,10 @@
|
||||
elpaBuild {
|
||||
pname = "markdown-mode";
|
||||
ename = "markdown-mode";
|
||||
version = "2.7alpha0.20241203.113852";
|
||||
version = "2.7alpha0.20241210.10425";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.nongnu.org/nongnu-devel/markdown-mode-2.7alpha0.20241203.113852.tar";
|
||||
sha256 = "14kkg7wj6qkq84jsa5cdwc7i7lqvilx21nb9lyddqxqxm8h7sld8";
|
||||
url = "https://elpa.nongnu.org/nongnu-devel/markdown-mode-2.7alpha0.20241210.10425.tar";
|
||||
sha256 = "1rlja17nqr9ly5mab5824dc97w7sgr45adrfhn5li79g89hazd3n";
|
||||
};
|
||||
packageRequires = [ ];
|
||||
meta = {
|
||||
@@ -3113,10 +3155,10 @@
|
||||
elpaBuild {
|
||||
pname = "mastodon";
|
||||
ename = "mastodon";
|
||||
version = "1.1.7.0.20241202.183936";
|
||||
version = "1.1.8.0.20241223.104057";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.nongnu.org/nongnu-devel/mastodon-1.1.7.0.20241202.183936.tar";
|
||||
sha256 = "08683fah6xkfzgxi6si4qgl4mxccczj4dcaivif1qlhfrc3bh66f";
|
||||
url = "https://elpa.nongnu.org/nongnu-devel/mastodon-1.1.8.0.20241223.104057.tar";
|
||||
sha256 = "13iyzv0gyad07215zvvs9q52ikqf97qn851qgjqqhq9k4p07a22q";
|
||||
};
|
||||
packageRequires = [
|
||||
persist
|
||||
@@ -3189,10 +3231,10 @@
|
||||
elpaBuild {
|
||||
pname = "meow";
|
||||
ename = "meow";
|
||||
version = "1.5.0.0.20241203.160407";
|
||||
version = "1.5.0.0.20241224.211501";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.nongnu.org/nongnu-devel/meow-1.5.0.0.20241203.160407.tar";
|
||||
sha256 = "0a3zdx91j5q0mllm71951392hgnn5q9l960qs2lazs8plpv4pn9f";
|
||||
url = "https://elpa.nongnu.org/nongnu-devel/meow-1.5.0.0.20241224.211501.tar";
|
||||
sha256 = "1xrq21awlf12ki7rdsm6n37hg4m1jjfjz8n0m2193jml94wc4cf8";
|
||||
};
|
||||
packageRequires = [ ];
|
||||
meta = {
|
||||
@@ -3448,10 +3490,10 @@
|
||||
elpaBuild {
|
||||
pname = "org-contrib";
|
||||
ename = "org-contrib";
|
||||
version = "0.6.0.20241029.204012";
|
||||
version = "0.6.0.20241207.74256";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.nongnu.org/nongnu-devel/org-contrib-0.6.0.20241029.204012.tar";
|
||||
sha256 = "12pfmv5ns5igdvc06glcc8nxqcj7lwjqc3s86720ys57y4py566w";
|
||||
url = "https://elpa.nongnu.org/nongnu-devel/org-contrib-0.6.0.20241207.74256.tar";
|
||||
sha256 = "0i9ii3ngimx1l8s4pq2zn73lnry1npsbrsxzn92gwayj0sm77bkp";
|
||||
};
|
||||
packageRequires = [ org ];
|
||||
meta = {
|
||||
@@ -3881,10 +3923,10 @@
|
||||
elpaBuild {
|
||||
pname = "php-mode";
|
||||
ename = "php-mode";
|
||||
version = "1.26.1.0.20241024.124149";
|
||||
version = "1.26.1.0.20250103.15745";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.nongnu.org/nongnu-devel/php-mode-1.26.1.0.20241024.124149.tar";
|
||||
sha256 = "0h5lzvsssk0nf3g408a7jg25crglsjkhcfp1ckjnzpgiwf59i6w8";
|
||||
url = "https://elpa.nongnu.org/nongnu-devel/php-mode-1.26.1.0.20250103.15745.tar";
|
||||
sha256 = "0ls4wpcn6lk5qn7n7gamk9sx6fm35cdbrv96pzi6srf3q1r71wpr";
|
||||
};
|
||||
packageRequires = [ ];
|
||||
meta = {
|
||||
@@ -3923,10 +3965,10 @@
|
||||
elpaBuild {
|
||||
pname = "popup";
|
||||
ename = "popup";
|
||||
version = "0.5.9.0.20240721.5155";
|
||||
version = "0.5.9.0.20250101.4328";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.nongnu.org/nongnu-devel/popup-0.5.9.0.20240721.5155.tar";
|
||||
sha256 = "11ay4yknbc6dy7c08dcaz4sy1ly98m0ghchif0m2mm72s2hgw7g7";
|
||||
url = "https://elpa.nongnu.org/nongnu-devel/popup-0.5.9.0.20250101.4328.tar";
|
||||
sha256 = "0qgkwd0kbkifkpfv0gznd4n81xhf62q9s0bd0831yp1mkxd9y03x";
|
||||
};
|
||||
packageRequires = [ ];
|
||||
meta = {
|
||||
@@ -4008,10 +4050,10 @@
|
||||
elpaBuild {
|
||||
pname = "racket-mode";
|
||||
ename = "racket-mode";
|
||||
version = "1.0.20241129.85359";
|
||||
version = "1.0.20250103.151851";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.nongnu.org/nongnu-devel/racket-mode-1.0.20241129.85359.tar";
|
||||
sha256 = "0j6hs2wpaknzprcm18y1ayqjcr2sl0z22fhw1yla5rv74lyqzglx";
|
||||
url = "https://elpa.nongnu.org/nongnu-devel/racket-mode-1.0.20250103.151851.tar";
|
||||
sha256 = "03m0ky98s647ajrjf85i9zvqwmwh4l33rdywbcc5vg516hgsnh0d";
|
||||
};
|
||||
packageRequires = [ ];
|
||||
meta = {
|
||||
@@ -4071,10 +4113,10 @@
|
||||
elpaBuild {
|
||||
pname = "recomplete";
|
||||
ename = "recomplete";
|
||||
version = "0.2.0.20240616.234552";
|
||||
version = "0.2.0.20241208.45418";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.nongnu.org/nongnu-devel/recomplete-0.2.0.20240616.234552.tar";
|
||||
sha256 = "0gkd3g1p6i4l7s6gqjsdj20m3y8n75wlcfw6xii0ka7n8j8dmrz4";
|
||||
url = "https://elpa.nongnu.org/nongnu-devel/recomplete-0.2.0.20241208.45418.tar";
|
||||
sha256 = "1pflxqh7ng3khkmn4g760k8v1amd9x18i452cxd5iwfq1cb9l9f4";
|
||||
};
|
||||
packageRequires = [ ];
|
||||
meta = {
|
||||
@@ -4092,10 +4134,10 @@
|
||||
elpaBuild {
|
||||
pname = "reformatter";
|
||||
ename = "reformatter";
|
||||
version = "0.8.0.20241106.203153";
|
||||
version = "0.8.0.20241204.105138";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.nongnu.org/nongnu-devel/reformatter-0.8.0.20241106.203153.tar";
|
||||
sha256 = "1gni5f8x8d6m063k9bgaqah80w2hnb12d7qwdw1ai0xg7jb92vp7";
|
||||
url = "https://elpa.nongnu.org/nongnu-devel/reformatter-0.8.0.20241204.105138.tar";
|
||||
sha256 = "1j78naw4jikh7nby67gdbx9banchmf1q5fysal1328gxnyqknmzi";
|
||||
};
|
||||
packageRequires = [ ];
|
||||
meta = {
|
||||
@@ -4224,10 +4266,10 @@
|
||||
elpaBuild {
|
||||
pname = "scad-mode";
|
||||
ename = "scad-mode";
|
||||
version = "94.0.0.20240926.92457";
|
||||
version = "95.0.0.20250102.95738";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.nongnu.org/nongnu-devel/scad-mode-94.0.0.20240926.92457.tar";
|
||||
sha256 = "09hgnzzfi6wdy3p0nfl6a00npxpsdy30dyc89m1h087wlhkjjyci";
|
||||
url = "https://elpa.nongnu.org/nongnu-devel/scad-mode-95.0.0.20250102.95738.tar";
|
||||
sha256 = "0pzqzz1a0shf0dm70c1d730m3dndal2dvm4dw65vxasj8vc1v8nx";
|
||||
};
|
||||
packageRequires = [ compat ];
|
||||
meta = {
|
||||
@@ -4245,10 +4287,10 @@
|
||||
elpaBuild {
|
||||
pname = "scala-mode";
|
||||
ename = "scala-mode";
|
||||
version = "1.1.0.0.20240729.42046";
|
||||
version = "1.1.1.0.20241231.83915";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.nongnu.org/nongnu-devel/scala-mode-1.1.0.0.20240729.42046.tar";
|
||||
sha256 = "0981n96zx633iypwyz2f6af7r1lzx0lick7zv0azqglrwgnly35r";
|
||||
url = "https://elpa.nongnu.org/nongnu-devel/scala-mode-1.1.1.0.20241231.83915.tar";
|
||||
sha256 = "079w6awnk36h33fz4gsqcnc3llsfmv1pmwzqyy8vv27x65i9fxjs";
|
||||
};
|
||||
packageRequires = [ ];
|
||||
meta = {
|
||||
@@ -4351,10 +4393,10 @@
|
||||
elpaBuild {
|
||||
pname = "slime";
|
||||
ename = "slime";
|
||||
version = "2.31.0.20241201.210325";
|
||||
version = "2.31snapshot0.20250101.45918";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.nongnu.org/nongnu-devel/slime-2.31.0.20241201.210325.tar";
|
||||
sha256 = "05skikmrfcwbahph8z50kf1zh5vps7459zw7l1bipgyvhfvpq9fn";
|
||||
url = "https://elpa.nongnu.org/nongnu-devel/slime-2.31snapshot0.20250101.45918.tar";
|
||||
sha256 = "153phs96ibjap5hp0ffs9c9isdhc05vgdqr4hlhjyk62b71n71k4";
|
||||
};
|
||||
packageRequires = [ macrostep ];
|
||||
meta = {
|
||||
@@ -4386,6 +4428,7 @@
|
||||
) { };
|
||||
smartparens = callPackage (
|
||||
{
|
||||
dash,
|
||||
elpaBuild,
|
||||
fetchurl,
|
||||
lib,
|
||||
@@ -4393,12 +4436,12 @@
|
||||
elpaBuild {
|
||||
pname = "smartparens";
|
||||
ename = "smartparens";
|
||||
version = "1.11.0.0.20240713.100215";
|
||||
version = "1.11.0.0.20241220.125445";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.nongnu.org/nongnu-devel/smartparens-1.11.0.0.20240713.100215.tar";
|
||||
sha256 = "0479n363cz4izdxdl2420fcmngbfjp7a5xv9xlxyab62aph63f0w";
|
||||
url = "https://elpa.nongnu.org/nongnu-devel/smartparens-1.11.0.0.20241220.125445.tar";
|
||||
sha256 = "0ww5m3cj78abbpfrshbszgs21mnd6pfcpwrbnqz81a4qk37q3nny";
|
||||
};
|
||||
packageRequires = [ ];
|
||||
packageRequires = [ dash ];
|
||||
meta = {
|
||||
homepage = "https://elpa.nongnu.org/nongnu-devel/smartparens.html";
|
||||
license = lib.licenses.free;
|
||||
@@ -4540,10 +4583,10 @@
|
||||
elpaBuild {
|
||||
pname = "subed";
|
||||
ename = "subed";
|
||||
version = "1.2.21.0.20241117.83905";
|
||||
version = "1.2.23.0.20250101.141954";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.nongnu.org/nongnu-devel/subed-1.2.21.0.20241117.83905.tar";
|
||||
sha256 = "0v95g129yp9s3kknbw1fp4iqn0f0g65bhvw4433v3dbinw9l3k74";
|
||||
url = "https://elpa.nongnu.org/nongnu-devel/subed-1.2.23.0.20250101.141954.tar";
|
||||
sha256 = "1srh30xxx7s4y79rc6fkq3aggywvnkd1wrhbmidhqd3lkfw3f1ms";
|
||||
};
|
||||
packageRequires = [ ];
|
||||
meta = {
|
||||
@@ -4804,10 +4847,10 @@
|
||||
elpaBuild {
|
||||
pname = "tp";
|
||||
ename = "tp";
|
||||
version = "0.6.0.20241031.72940";
|
||||
version = "0.6.0.20250103.142809";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.nongnu.org/nongnu-devel/tp-0.6.0.20241031.72940.tar";
|
||||
sha256 = "1m8qhar75cglg8qjh3sbgwkzkhfp3640nm73nddxrshnajn978bf";
|
||||
url = "https://elpa.nongnu.org/nongnu-devel/tp-0.6.0.20250103.142809.tar";
|
||||
sha256 = "19mrjhi7qxwxp1shqqvkpmj49kari9g74wym3v2k80586kj2j0cm";
|
||||
};
|
||||
packageRequires = [ transient ];
|
||||
meta = {
|
||||
@@ -4931,10 +4974,10 @@
|
||||
elpaBuild {
|
||||
pname = "undo-fu";
|
||||
ename = "undo-fu";
|
||||
version = "0.5.0.20240707.141050";
|
||||
version = "0.5.0.20241206.21950";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.nongnu.org/nongnu-devel/undo-fu-0.5.0.20240707.141050.tar";
|
||||
sha256 = "0glgy1manfv9rykkxhafc969mhazd119zgrkm5fg9shcyb7q629a";
|
||||
url = "https://elpa.nongnu.org/nongnu-devel/undo-fu-0.5.0.20241206.21950.tar";
|
||||
sha256 = "0kslql79g5y0sszjm6xxyxjzrnskm70dgglwwl2g4a1rjwavcp3v";
|
||||
};
|
||||
packageRequires = [ ];
|
||||
meta = {
|
||||
@@ -4952,10 +4995,10 @@
|
||||
elpaBuild {
|
||||
pname = "undo-fu-session";
|
||||
ename = "undo-fu-session";
|
||||
version = "0.7.0.20240713.142701";
|
||||
version = "0.7.0.20241212.4030";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.nongnu.org/nongnu-devel/undo-fu-session-0.7.0.20240713.142701.tar";
|
||||
sha256 = "1c70cvf9f1x96l8gxfl4qpljwsqsqjcn745srsf9w9mcz520fyaa";
|
||||
url = "https://elpa.nongnu.org/nongnu-devel/undo-fu-session-0.7.0.20241212.4030.tar";
|
||||
sha256 = "1nggzbk1xi0w5f5y2xkp2jk4imfbqfaldngavslz1rhskiqwdqqa";
|
||||
};
|
||||
packageRequires = [ ];
|
||||
meta = {
|
||||
@@ -5062,10 +5105,10 @@
|
||||
elpaBuild {
|
||||
pname = "web-mode";
|
||||
ename = "web-mode";
|
||||
version = "17.3.20.0.20240804.82110";
|
||||
version = "17.3.21.0.20241227.53016";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.nongnu.org/nongnu-devel/web-mode-17.3.20.0.20240804.82110.tar";
|
||||
sha256 = "17r0jhcgxnc1k42yxaw1i7wwyb0sp311a1gz8bdjax0zn05ki4xc";
|
||||
url = "https://elpa.nongnu.org/nongnu-devel/web-mode-17.3.21.0.20241227.53016.tar";
|
||||
sha256 = "0syhyqryfh2rvf2688rqfs3j0p0fh794vw85qwdh3kxi57w8ra8h";
|
||||
};
|
||||
packageRequires = [ ];
|
||||
meta = {
|
||||
@@ -5130,10 +5173,10 @@
|
||||
elpaBuild {
|
||||
pname = "wgrep";
|
||||
ename = "wgrep";
|
||||
version = "3.0.0.0.20231216.120954";
|
||||
version = "3.0.0.0.20241206.130617";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.nongnu.org/nongnu-devel/wgrep-3.0.0.0.20231216.120954.tar";
|
||||
sha256 = "1qadyl29a70d9m5z32s0r18rjxg0jdmbpjr47zgvppl807mfni85";
|
||||
url = "https://elpa.nongnu.org/nongnu-devel/wgrep-3.0.0.0.20241206.130617.tar";
|
||||
sha256 = "1ihwqz865wcdb83aw6nmzhnkrf7rnxqkcncmz7rvzddsrg19hahr";
|
||||
};
|
||||
packageRequires = [ ];
|
||||
meta = {
|
||||
@@ -5283,10 +5326,10 @@
|
||||
elpaBuild {
|
||||
pname = "xah-fly-keys";
|
||||
ename = "xah-fly-keys";
|
||||
version = "26.8.20241118173945.0.20241118.174137";
|
||||
version = "26.9.20241225173150.0.20241225.173444";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.nongnu.org/nongnu-devel/xah-fly-keys-26.8.20241118173945.0.20241118.174137.tar";
|
||||
sha256 = "196hv8hjzp87b8y9k65w2zag46bx2jhmah1w9mdjxwkfbq6bjcmq";
|
||||
url = "https://elpa.nongnu.org/nongnu-devel/xah-fly-keys-26.9.20241225173150.0.20241225.173444.tar";
|
||||
sha256 = "08c168kcb0ds9g8hfqwd4qnymmg7z32k3g51ap9rqw6048cyl5fw";
|
||||
};
|
||||
packageRequires = [ ];
|
||||
meta = {
|
||||
@@ -5369,10 +5412,10 @@
|
||||
elpaBuild {
|
||||
pname = "yasnippet-snippets";
|
||||
ename = "yasnippet-snippets";
|
||||
version = "1.0.0.20241014.94920";
|
||||
version = "1.0.0.20241207.222105";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.nongnu.org/nongnu-devel/yasnippet-snippets-1.0.0.20241014.94920.tar";
|
||||
sha256 = "065wcvb295dhyi6jvb80vagzb8idqycchqgy32pj0fr6vcxx7y88";
|
||||
url = "https://elpa.nongnu.org/nongnu-devel/yasnippet-snippets-1.0.0.20241207.222105.tar";
|
||||
sha256 = "1nd9cnnwqrxizfzqdx3a4l9wj5sdr6gg42fss9dngbd22spa3kkb";
|
||||
};
|
||||
packageRequires = [ yasnippet ];
|
||||
meta = {
|
||||
|
||||
@@ -220,10 +220,10 @@
|
||||
elpaBuild {
|
||||
pname = "auto-dim-other-buffers";
|
||||
ename = "auto-dim-other-buffers";
|
||||
version = "2.1.1";
|
||||
version = "2.2.1";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.nongnu.org/nongnu/auto-dim-other-buffers-2.1.1.tar";
|
||||
sha256 = "0rgf0q66kdw9ind5bi01ydk84rclcd3kmlfzm9rfb429xnhqfzw8";
|
||||
url = "https://elpa.nongnu.org/nongnu/auto-dim-other-buffers-2.2.1.tar";
|
||||
sha256 = "00x0niv1zd47b2xl19k3fi0xxskdndiabns107cxzwb7pnkp4f0m";
|
||||
};
|
||||
packageRequires = [ ];
|
||||
meta = {
|
||||
@@ -284,10 +284,10 @@
|
||||
elpaBuild {
|
||||
pname = "bash-completion";
|
||||
ename = "bash-completion";
|
||||
version = "3.1.1";
|
||||
version = "3.2";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.nongnu.org/nongnu/bash-completion-3.1.1.tar";
|
||||
sha256 = "1yc1a5cvmnp8dranrglpd7qjg35r6x4ndniinbmzinqr7dmydh62";
|
||||
url = "https://elpa.nongnu.org/nongnu/bash-completion-3.2.tar";
|
||||
sha256 = "19xpv87nb1gskfsfqj8hmhbzlhxk0m6dflizsnrq94bh7rbw3s12";
|
||||
};
|
||||
packageRequires = [ ];
|
||||
meta = {
|
||||
@@ -1031,10 +1031,10 @@
|
||||
elpaBuild {
|
||||
pname = "dslide";
|
||||
ename = "dslide";
|
||||
version = "0.5.5";
|
||||
version = "0.6.2";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.nongnu.org/nongnu/dslide-0.5.5.tar";
|
||||
sha256 = "1hnmnl6ildr2cyc8hx1maa3vnz621d41yhsx8naxq3mssz4rkajp";
|
||||
url = "https://elpa.nongnu.org/nongnu/dslide-0.6.2.tar";
|
||||
sha256 = "02lny7c7v6345nlprmpi39pyk7m9lpr85g8xkd70ivkpc122qdy2";
|
||||
};
|
||||
packageRequires = [ ];
|
||||
meta = {
|
||||
@@ -1108,6 +1108,48 @@
|
||||
};
|
||||
}
|
||||
) { };
|
||||
eglot-inactive-regions = callPackage (
|
||||
{
|
||||
elpaBuild,
|
||||
fetchurl,
|
||||
lib,
|
||||
}:
|
||||
elpaBuild {
|
||||
pname = "eglot-inactive-regions";
|
||||
ename = "eglot-inactive-regions";
|
||||
version = "0.6.3";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.nongnu.org/nongnu/eglot-inactive-regions-0.6.3.tar";
|
||||
sha256 = "03958dgr48zqak06qjqdz6qgfxn5rs60425qcvb7wdv2jb4400hc";
|
||||
};
|
||||
packageRequires = [ ];
|
||||
meta = {
|
||||
homepage = "https://elpa.nongnu.org/nongnu/eglot-inactive-regions.html";
|
||||
license = lib.licenses.free;
|
||||
};
|
||||
}
|
||||
) { };
|
||||
eldoc-diffstat = callPackage (
|
||||
{
|
||||
elpaBuild,
|
||||
fetchurl,
|
||||
lib,
|
||||
}:
|
||||
elpaBuild {
|
||||
pname = "eldoc-diffstat";
|
||||
ename = "eldoc-diffstat";
|
||||
version = "1.0";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.nongnu.org/nongnu/eldoc-diffstat-1.0.tar";
|
||||
sha256 = "0cxmhi1whzh4z62vv1pyvl2v6wr0jbq560m6zib8zicvdfxqlpgk";
|
||||
};
|
||||
packageRequires = [ ];
|
||||
meta = {
|
||||
homepage = "https://elpa.nongnu.org/nongnu/eldoc-diffstat.html";
|
||||
license = lib.licenses.free;
|
||||
};
|
||||
}
|
||||
) { };
|
||||
elixir-mode = callPackage (
|
||||
{
|
||||
elpaBuild,
|
||||
@@ -1425,10 +1467,10 @@
|
||||
elpaBuild {
|
||||
pname = "evil-matchit";
|
||||
ename = "evil-matchit";
|
||||
version = "3.0.4";
|
||||
version = "4.0.1";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.nongnu.org/nongnu/evil-matchit-3.0.4.tar";
|
||||
sha256 = "1ib2xlz7ciaszw2j5184mf6560jmap93vh515sk8dmkkahdwsjgz";
|
||||
url = "https://elpa.nongnu.org/nongnu/evil-matchit-4.0.1.tar";
|
||||
sha256 = "08vnf56zmqicfjwf7ihlmg9iil3bivhwpafq8vwlvp5nkmirhivv";
|
||||
};
|
||||
packageRequires = [ ];
|
||||
meta = {
|
||||
@@ -2107,10 +2149,10 @@
|
||||
elpaBuild {
|
||||
pname = "gnosis";
|
||||
ename = "gnosis";
|
||||
version = "0.4.8";
|
||||
version = "0.4.10";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.nongnu.org/nongnu/gnosis-0.4.8.tar";
|
||||
sha256 = "1sf6213qj6i306rqbp1a5wj7haw5vkmc1684fdfqzyqa1gw2ni5v";
|
||||
url = "https://elpa.nongnu.org/nongnu/gnosis-0.4.10.tar";
|
||||
sha256 = "16z0f93x8x4ldyld2aqpprmk6xqz4qnd5fbrclcvj8gcg6qj4iz8";
|
||||
};
|
||||
packageRequires = [
|
||||
compat
|
||||
@@ -2281,10 +2323,10 @@
|
||||
elpaBuild {
|
||||
pname = "gptel";
|
||||
ename = "gptel";
|
||||
version = "0.9.6";
|
||||
version = "0.9.7";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.nongnu.org/nongnu/gptel-0.9.6.tar";
|
||||
sha256 = "0n7d8plabgmpyl224079cqrwlgqq7wwysba0wd0ry75h6z388rcb";
|
||||
url = "https://elpa.nongnu.org/nongnu/gptel-0.9.7.tar";
|
||||
sha256 = "0sh8q80q620d6yr4437ddrjrzygd15iwkc9jvwh3pw9sncv2laqn";
|
||||
};
|
||||
packageRequires = [
|
||||
compat
|
||||
@@ -2635,10 +2677,10 @@
|
||||
elpaBuild {
|
||||
pname = "hyperdrive";
|
||||
ename = "hyperdrive";
|
||||
version = "0.4.2";
|
||||
version = "0.5.2";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.nongnu.org/nongnu/hyperdrive-0.4.2.tar";
|
||||
sha256 = "19cgx0x54xj2z98m8mr1xmz0bbja0nilh8n47mkbnzmcqidv75gq";
|
||||
url = "https://elpa.nongnu.org/nongnu/hyperdrive-0.5.2.tar";
|
||||
sha256 = "1gn6kdxvds27bjfsamzihqg8bddwsyfmc2g36p50km2qfa8fgpvz";
|
||||
};
|
||||
packageRequires = [
|
||||
compat
|
||||
@@ -2911,10 +2953,10 @@
|
||||
elpaBuild {
|
||||
pname = "julia-mode";
|
||||
ename = "julia-mode";
|
||||
version = "1.0.1";
|
||||
version = "1.0.2";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.nongnu.org/nongnu/julia-mode-1.0.1.tar";
|
||||
sha256 = "0203h99yia5k37ansy2wshkiyn105jaahmkm0ncf54far8dw6mwx";
|
||||
url = "https://elpa.nongnu.org/nongnu/julia-mode-1.0.2.tar";
|
||||
sha256 = "1wwnyanxbpzy4n8n3ixafdbx7badkl1krcnk0yf5923f2ahiqhlr";
|
||||
};
|
||||
packageRequires = [ ];
|
||||
meta = {
|
||||
@@ -3049,10 +3091,10 @@
|
||||
elpaBuild {
|
||||
pname = "magit";
|
||||
ename = "magit";
|
||||
version = "4.1.2";
|
||||
version = "4.2.0";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.nongnu.org/nongnu/magit-4.1.2.tar";
|
||||
sha256 = "1jyivrk78fnp7kcrac9sm2ldbxg9c96qhnlz06wv1m7hbvd3fgfx";
|
||||
url = "https://elpa.nongnu.org/nongnu/magit-4.2.0.tar";
|
||||
sha256 = "04nf4ff7a11z65mcw6qnkxwk9srpi248f1k0li947i4264gl3prd";
|
||||
};
|
||||
packageRequires = [
|
||||
compat
|
||||
@@ -3080,10 +3122,10 @@
|
||||
elpaBuild {
|
||||
pname = "magit-section";
|
||||
ename = "magit-section";
|
||||
version = "4.1.2";
|
||||
version = "4.2.0";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.nongnu.org/nongnu/magit-section-4.1.2.tar";
|
||||
sha256 = "0g24aj030fh55y44f3c33708fbm02jwzggh75zvg63bka3g6j242";
|
||||
url = "https://elpa.nongnu.org/nongnu/magit-section-4.2.0.tar";
|
||||
sha256 = "05wlc327x45vfsphwz9bf1hl8w46ychqkp6j7wsngjzwzsifxmb4";
|
||||
};
|
||||
packageRequires = [
|
||||
compat
|
||||
@@ -3129,10 +3171,10 @@
|
||||
elpaBuild {
|
||||
pname = "mastodon";
|
||||
ename = "mastodon";
|
||||
version = "1.1.7";
|
||||
version = "1.1.8";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.nongnu.org/nongnu/mastodon-1.1.7.tar";
|
||||
sha256 = "0qnkbab6y0gpqq0kvil4gnbajflpv0mz3pzcimcvz79dnmb0vc9p";
|
||||
url = "https://elpa.nongnu.org/nongnu/mastodon-1.1.8.tar";
|
||||
sha256 = "06jy1n7ikz4xdpw4rkma596pqgkxcmh7qfkz93584rjfqav88anl";
|
||||
};
|
||||
packageRequires = [
|
||||
persist
|
||||
@@ -4031,10 +4073,10 @@
|
||||
elpaBuild {
|
||||
pname = "racket-mode";
|
||||
ename = "racket-mode";
|
||||
version = "1.0.20241129.85359";
|
||||
version = "1.0.20250103.151851";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.nongnu.org/nongnu/racket-mode-1.0.20241129.85359.tar";
|
||||
sha256 = "0ish7ysdqypw849k9d3cw0bl69r5ksc3hrqdmyh8k2ipq2xbcn2w";
|
||||
url = "https://elpa.nongnu.org/nongnu/racket-mode-1.0.20250103.151851.tar";
|
||||
sha256 = "11m25729hm7m5srjiys1ws070yi2aa7ni5rn240w9290nj1brjnb";
|
||||
};
|
||||
packageRequires = [ ];
|
||||
meta = {
|
||||
@@ -4243,10 +4285,10 @@
|
||||
elpaBuild {
|
||||
pname = "scad-mode";
|
||||
ename = "scad-mode";
|
||||
version = "94.0";
|
||||
version = "95.0";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.nongnu.org/nongnu/scad-mode-94.0.tar";
|
||||
sha256 = "1cqai7qb9m17rf7llkn9vbxddgn0ixcf3dbnsjk1aflvj8mq9nr3";
|
||||
url = "https://elpa.nongnu.org/nongnu/scad-mode-95.0.tar";
|
||||
sha256 = "1wkpgrkx3cjmh72qg9yiq2x9sqswx6x6pbr8zzhldyjs6kmjl7km";
|
||||
};
|
||||
packageRequires = [ compat ];
|
||||
meta = {
|
||||
@@ -4264,10 +4306,10 @@
|
||||
elpaBuild {
|
||||
pname = "scala-mode";
|
||||
ename = "scala-mode";
|
||||
version = "1.1.0";
|
||||
version = "1.1.1";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.nongnu.org/nongnu/scala-mode-1.1.0.tar";
|
||||
sha256 = "1x3vw4fzy1z6gavnbsm4lnwzkp47zd8gasvxxvfk57qn09hpwixh";
|
||||
url = "https://elpa.nongnu.org/nongnu/scala-mode-1.1.1.tar";
|
||||
sha256 = "1dmaq00432smrwqx6ybw855vdwp7s8h358c135ji5d581mkhpai5";
|
||||
};
|
||||
packageRequires = [ ];
|
||||
meta = {
|
||||
@@ -4559,10 +4601,10 @@
|
||||
elpaBuild {
|
||||
pname = "subed";
|
||||
ename = "subed";
|
||||
version = "1.2.21";
|
||||
version = "1.2.23";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.nongnu.org/nongnu/subed-1.2.21.tar";
|
||||
sha256 = "1d0w96amchcpblcbkl16yiwsvj8qfpax66ysjg02550lhpb493x7";
|
||||
url = "https://elpa.nongnu.org/nongnu/subed-1.2.23.tar";
|
||||
sha256 = "0bvsv688mqhga8dffy3841wxs5pkw0vish15dgligll47cj98mzp";
|
||||
};
|
||||
packageRequires = [ ];
|
||||
meta = {
|
||||
@@ -5056,10 +5098,10 @@
|
||||
elpaBuild {
|
||||
pname = "web-mode";
|
||||
ename = "web-mode";
|
||||
version = "17.3.20";
|
||||
version = "17.3.21";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.nongnu.org/nongnu/web-mode-17.3.20.tar";
|
||||
sha256 = "1l4bmvc53ma2n3y143k86ip0w4am65zwxnl36lzqavs1hr55qvb2";
|
||||
url = "https://elpa.nongnu.org/nongnu/web-mode-17.3.21.tar";
|
||||
sha256 = "0yqaszrkllfgp0ph7rvjhz35wqzi4bas0qw70d49vaxq4z7bikzg";
|
||||
};
|
||||
packageRequires = [ ];
|
||||
meta = {
|
||||
@@ -5277,10 +5319,10 @@
|
||||
elpaBuild {
|
||||
pname = "xah-fly-keys";
|
||||
ename = "xah-fly-keys";
|
||||
version = "26.8.20241118173945";
|
||||
version = "26.9.20241225173150";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.nongnu.org/nongnu/xah-fly-keys-26.8.20241118173945.tar";
|
||||
sha256 = "1l6wwv1zmpsf64v23zzi2idjb14wnbpv5fcspiygiah62zag44vf";
|
||||
url = "https://elpa.nongnu.org/nongnu/xah-fly-keys-26.9.20241225173150.tar";
|
||||
sha256 = "0b2pjrfa130n4bam80p676k3xz417d6dfn8921xh6msf8b14cwpv";
|
||||
};
|
||||
packageRequires = [ ];
|
||||
meta = {
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,6 +1,6 @@
|
||||
{ lib, fetchFromGitHub }:
|
||||
rec {
|
||||
version = "9.1.0905";
|
||||
version = "9.1.0990";
|
||||
|
||||
outputs = [
|
||||
"out"
|
||||
@@ -11,7 +11,7 @@ rec {
|
||||
owner = "vim";
|
||||
repo = "vim";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-sFsTONGeSocn1M8NZo5LjIhagmq/nR1zrGRN7p86Q4o=";
|
||||
hash = "sha256-KKjJCuGczwYP+NVx5f6YQRsKR0zW44ciNNvmjQ03ytM=";
|
||||
};
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
||||
@@ -1,6 +1,4 @@
|
||||
## build described at https://wiki.winehq.org/Building_Wine#Shared_WoW64
|
||||
|
||||
source $stdenv/setup
|
||||
preFlags="${configureFlags}"
|
||||
|
||||
unpackPhase
|
||||
|
||||
@@ -6,8 +6,7 @@
|
||||
, cmake
|
||||
, pkg-config
|
||||
, wrapGAppsHook3
|
||||
, boost
|
||||
, boost183
|
||||
, boost186
|
||||
, cereal
|
||||
, cgal
|
||||
, curl
|
||||
@@ -72,14 +71,6 @@ let
|
||||
|
||||
patches = [
|
||||
];
|
||||
|
||||
# Build requires at least Boost v1.83. If the mainline package satisfies
|
||||
# that, just use the mainline package, otherwise use an explicitly versioned
|
||||
# package.
|
||||
boost183OrBetter =
|
||||
if lib.versionAtLeast boost.version "1.83"
|
||||
then boost
|
||||
else boost183;
|
||||
in
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "prusa-slicer";
|
||||
@@ -111,7 +102,7 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
|
||||
buildInputs = [
|
||||
binutils
|
||||
boost183OrBetter
|
||||
boost186 # does not build with 1.87, see https://github.com/prusa3d/PrusaSlicer/issues/13799
|
||||
cereal
|
||||
cgal
|
||||
curl
|
||||
|
||||
@@ -1,12 +0,0 @@
|
||||
diff -rup rsync-3.2.7/configure.sh rsync-3.2.7-fixed/configure.sh
|
||||
--- rsync-3.2.7/configure.sh 2022-10-20 17:57:22
|
||||
+++ rsync-3.2.7-fixed/configure.sh 2024-01-01 19:51:58
|
||||
@@ -7706,7 +7706,7 @@ else $as_nop
|
||||
#include <stdlib.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/socket.h>
|
||||
-main()
|
||||
+int main()
|
||||
{
|
||||
if (socket(AF_INET6, SOCK_STREAM, 0) < 0)
|
||||
exit(1);
|
||||
@@ -22,12 +22,12 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "rsync";
|
||||
version = "3.3.0";
|
||||
version = "3.4.1";
|
||||
|
||||
src = fetchurl {
|
||||
# signed with key 0048 C8B0 26D4 C96F 0E58 9C2F 6C85 9FB1 4B96 A8C5
|
||||
# signed with key 9FEF 112D CE19 A0DC 7E88 2CB8 1BB2 4997 A853 5F6F
|
||||
url = "mirror://samba/rsync/src/rsync-${version}.tar.gz";
|
||||
hash = "sha256-c5nppnCMMtZ4pypjIZ6W8jvgviM25Q/RNISY0HBB35A=";
|
||||
hash = "sha256-KSS8s6Hti1UfwQH3QLnw/gogKxFQJ2R89phQ1l/YjFI=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
@@ -35,23 +35,6 @@ stdenv.mkDerivation rec {
|
||||
perl
|
||||
];
|
||||
|
||||
patches = [
|
||||
# https://github.com/WayneD/rsync/pull/558
|
||||
./configure.ac-fix-failing-IPv6-check.patch
|
||||
./CVE-2024-12084/0001-Some-checksum-buffer-fixes.patch
|
||||
./CVE-2024-12084/0002-Another-cast-when-multiplying-integers.patch
|
||||
./CVE-2024-12085/0001-prevent-information-leak-off-the-stack.patch
|
||||
./CVE-2024-12086/0001-refuse-fuzzy-options-when-fuzzy-not-selected.patch
|
||||
./CVE-2024-12086/0002-added-secure_relative_open.patch
|
||||
./CVE-2024-12086/0003-receiver-use-secure_relative_open-for-basis-file.patch
|
||||
./CVE-2024-12086/0004-disallow-.-elements-in-relpath-for-secure_relative_o.patch
|
||||
./CVE-2024-12087/0001-Refuse-a-duplicate-dirlist.patch
|
||||
./CVE-2024-12087/0002-range-check-dir_ndx-before-use.patch
|
||||
./CVE-2024-12088/0001-make-safe-links-stricter.patch
|
||||
./CVE-2024-12747/0001-fixed-symlink-race-condition-in-sender.patch
|
||||
./raise-protocol-version-to-32.patch
|
||||
];
|
||||
|
||||
buildInputs =
|
||||
[
|
||||
libiconv
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
{
|
||||
lib,
|
||||
stdenv,
|
||||
substitute,
|
||||
fetchpatch,
|
||||
fetchurl,
|
||||
fetchFromGitHub,
|
||||
cmake,
|
||||
@@ -180,6 +182,23 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
# Build only the host software
|
||||
preConfigure = "cd host";
|
||||
patches = [
|
||||
# fix for boost 187 remove on next update
|
||||
(substitute {
|
||||
src = fetchpatch {
|
||||
name = "boost-187.patch";
|
||||
url = "https://github.com/EttusResearch/uhd/commit/adfe953d965e58b5931c1b1968899492c8087cf6.patch";
|
||||
hash = "sha256-qzxe6QhGoyBul7YjCiPJfeP+3dIoo1hh2sjgYmc9IiI=";
|
||||
};
|
||||
# The last two hunks in client.cc will fail without these substitutions
|
||||
substitutions = [
|
||||
"--replace-fail"
|
||||
"[buffer, idx, func_name, p, this]"
|
||||
"[=]"
|
||||
"--replace-fail"
|
||||
"[buffer, this]"
|
||||
"[=]"
|
||||
];
|
||||
})
|
||||
# Disable tests that fail in the sandbox, last checked at version 4.6.0.0
|
||||
./no-adapter-tests.patch
|
||||
];
|
||||
|
||||
@@ -30,7 +30,7 @@ assert sendEmailSupport -> perlSupport;
|
||||
assert svnSupport -> perlSupport;
|
||||
|
||||
let
|
||||
version = "2.47.0";
|
||||
version = "2.47.1";
|
||||
svn = subversionClient.override { perlBindings = perlSupport; };
|
||||
gitwebPerlLibs = with perlPackages; [ CGI HTMLParser CGIFast FCGI FCGIProcManager HTMLTagCloud ];
|
||||
in
|
||||
@@ -43,7 +43,7 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://www.kernel.org/pub/software/scm/git/git-${version}.tar.xz";
|
||||
hash = "sha256-HOEU2ohwQnG0PgJ8UeBNk5n4yI6e91Qtrnrrrn2HvE4=";
|
||||
hash = "sha256-89j5uyOuOSN06RzZ05WXDavFucXucvOYhGE82Epu0xA=";
|
||||
};
|
||||
|
||||
outputs = [ "out" ] ++ lib.optional withManual "doc";
|
||||
|
||||
@@ -39,11 +39,11 @@ let
|
||||
|
||||
self = python3Packages.buildPythonApplication rec {
|
||||
pname = "mercurial${lib.optionalString fullBuild "-full"}";
|
||||
version = "6.8.2";
|
||||
version = "6.9";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://mercurial-scm.org/release/mercurial-${version}.tar.gz";
|
||||
hash = "sha256-qsYYEGdorR7ZdsP+fIZZ/smebwtTN+pupVT66EkMT04=";
|
||||
hash = "sha256-YpYEKT3yvoFx7IVr9Pi0+qjkMFrxNgfc4PifdBMoNtY=";
|
||||
};
|
||||
|
||||
format = "other";
|
||||
@@ -55,7 +55,7 @@ let
|
||||
rustPlatform.fetchCargoTarball {
|
||||
inherit src;
|
||||
name = "mercurial-${version}";
|
||||
hash = "sha256-/HjgGtjKfLLufEqyT7xHYIlC5xnVunYoA+H1xLS1bVw=";
|
||||
hash = "sha256-E8Q0hMLPLkUZ5W5iqe4w5t/71HQuRBTF3SRUBN8EMik=";
|
||||
sourceRoot = "mercurial-${version}/rust";
|
||||
}
|
||||
else
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#!@shell@
|
||||
#!@runtimeShell@
|
||||
# shellcheck shell=bash
|
||||
|
||||
if [ -n "$DEBUG" ] ; then
|
||||
|
||||
@@ -11,19 +11,22 @@
|
||||
}:
|
||||
|
||||
rec {
|
||||
appimage-exec = pkgs.substituteAll {
|
||||
appimage-exec = pkgs.replaceVarsWith {
|
||||
src = ./appimage-exec.sh;
|
||||
isExecutable = true;
|
||||
dir = "bin";
|
||||
path = lib.makeBinPath [
|
||||
bash
|
||||
binutils-unwrapped
|
||||
coreutils
|
||||
gawk
|
||||
libarchive
|
||||
pv
|
||||
squashfsTools
|
||||
];
|
||||
replacements = {
|
||||
inherit (pkgs) runtimeShell;
|
||||
path = lib.makeBinPath [
|
||||
bash
|
||||
binutils-unwrapped
|
||||
coreutils
|
||||
gawk
|
||||
libarchive
|
||||
pv
|
||||
squashfsTools
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
extract = args@{ pname, version, name ? null, postExtract ? "", src, ... }:
|
||||
|
||||
@@ -348,7 +348,7 @@ stdenvNoCC.mkDerivation {
|
||||
##
|
||||
|
||||
# TODO(@sternenseemann): make a generic strip wrapper?
|
||||
+ optionalString (bintools.isGNU or false || bintools.isCCTools or false) ''
|
||||
+ optionalString (bintools.isGNU or false || bintools.isLLVM or false || bintools.isCCTools or false) ''
|
||||
wrap ${targetPrefix}strip ${./gnu-binutils-strip-wrapper.sh} \
|
||||
"${bintools_bin}/bin/${targetPrefix}strip"
|
||||
''
|
||||
|
||||
@@ -237,6 +237,11 @@ if [ "$NIX_SET_BUILD_ID_@suffixSalt@" = 1 ] && ! (( "$relocatable" )); then
|
||||
extraAfter+=(--build-id="${NIX_BUILD_ID_STYLE:-sha1}")
|
||||
fi
|
||||
|
||||
# if a ld-wrapper-hook exists, run it.
|
||||
if [[ -e @out@/nix-support/ld-wrapper-hook ]]; then
|
||||
linker=@prog@
|
||||
source @out@/nix-support/ld-wrapper-hook
|
||||
fi
|
||||
|
||||
# Optionally print debug info.
|
||||
if (( "${NIX_DEBUG:-0}" >= 1 )); then
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
#! @perl@ -w
|
||||
|
||||
use strict;
|
||||
use feature 'signatures';
|
||||
use Cwd 'abs_path';
|
||||
use IO::Handle;
|
||||
use File::Path;
|
||||
@@ -18,8 +19,7 @@ my $extraPrefix = $ENV{"extraPrefix"};
|
||||
|
||||
my @pathsToLink = split ' ', $ENV{"pathsToLink"};
|
||||
|
||||
sub isInPathsToLink {
|
||||
my $path = shift;
|
||||
sub isInPathsToLink($path) {
|
||||
$path = "/" if $path eq "";
|
||||
foreach my $elem (@pathsToLink) {
|
||||
return 1 if
|
||||
@@ -32,8 +32,7 @@ sub isInPathsToLink {
|
||||
|
||||
# Returns whether a path in one of the linked packages may contain
|
||||
# files in one of the elements of pathsToLink.
|
||||
sub hasPathsToLink {
|
||||
my $path = shift;
|
||||
sub hasPathsToLink($path) {
|
||||
foreach my $elem (@pathsToLink) {
|
||||
return 1 if
|
||||
$path eq "" ||
|
||||
@@ -44,8 +43,7 @@ sub hasPathsToLink {
|
||||
}
|
||||
|
||||
# Similar to `lib.isStorePath`
|
||||
sub isStorePath {
|
||||
my $path = shift;
|
||||
sub isStorePath($path) {
|
||||
my $storePath = "@storeDir@";
|
||||
|
||||
return substr($path, 0, 1) eq "/" && dirname($path) eq $storePath;
|
||||
@@ -76,22 +74,18 @@ for my $p (@pathsToLink) {
|
||||
|
||||
sub findFiles;
|
||||
|
||||
sub findFilesInDir {
|
||||
my ($relName, $target, $ignoreCollisions, $ignoreSingleFileOutputs, $checkCollisionContents, $priority) = @_;
|
||||
|
||||
sub findFilesInDir($relName, $target, $ignoreCollisions, $checkCollisionContents, $priority, $ignoreSingleFileOutputs) {
|
||||
opendir DIR, "$target" or die "cannot open `$target': $!";
|
||||
my @names = readdir DIR or die;
|
||||
closedir DIR;
|
||||
|
||||
foreach my $name (@names) {
|
||||
next if $name eq "." || $name eq "..";
|
||||
findFiles("$relName/$name", "$target/$name", $name, $ignoreCollisions, $ignoreSingleFileOutputs, $checkCollisionContents, $priority);
|
||||
findFiles("$relName/$name", "$target/$name", $name, $ignoreCollisions, $checkCollisionContents, $priority, $ignoreSingleFileOutputs);
|
||||
}
|
||||
}
|
||||
|
||||
sub checkCollision {
|
||||
my ($path1, $path2) = @_;
|
||||
|
||||
sub checkCollision($path1, $path2) {
|
||||
if (! -e $path1 || ! -e $path2) {
|
||||
return 0;
|
||||
}
|
||||
@@ -109,14 +103,11 @@ sub checkCollision {
|
||||
return compare($path1, $path2) == 0;
|
||||
}
|
||||
|
||||
sub prependDangling {
|
||||
my $path = shift;
|
||||
sub prependDangling($path) {
|
||||
return (-l $path && ! -e $path ? "dangling symlink " : "") . "`$path'";
|
||||
}
|
||||
|
||||
sub findFiles {
|
||||
my ($relName, $target, $baseName, $ignoreCollisions, $ignoreSingleFileOutputs, $checkCollisionContents, $priority) = @_;
|
||||
|
||||
sub findFiles($relName, $target, $baseName, $ignoreCollisions, $checkCollisionContents, $priority, $ignoreSingleFileOutputs) {
|
||||
# The store path must not be a file when not ignoreSingleFileOutputs
|
||||
if (-f $target && isStorePath $target) {
|
||||
if ($ignoreSingleFileOutputs) {
|
||||
@@ -193,8 +184,8 @@ sub findFiles {
|
||||
}
|
||||
}
|
||||
|
||||
findFilesInDir($relName, $oldTarget, $ignoreCollisions, $ignoreSingleFileOutputs, $checkCollisionContents, $oldPriority) unless $oldTarget eq "";
|
||||
findFilesInDir($relName, $target, $ignoreCollisions, $ignoreSingleFileOutputs, $checkCollisionContents, $priority);
|
||||
findFilesInDir($relName, $oldTarget, $ignoreCollisions, $checkCollisionContents, $oldPriority, $ignoreSingleFileOutputs) unless $oldTarget eq "";
|
||||
findFilesInDir($relName, $target, $ignoreCollisions, $checkCollisionContents, $priority, $ignoreSingleFileOutputs);
|
||||
|
||||
$symlinks{$relName} = ["", $priority]; # denotes directory
|
||||
}
|
||||
@@ -203,13 +194,11 @@ sub findFiles {
|
||||
my %done;
|
||||
my %postponed;
|
||||
|
||||
sub addPkg {
|
||||
my ($pkgDir, $ignoreCollisions, $ignoreSingleFileOutputs, $checkCollisionContents, $priority) = @_;
|
||||
|
||||
sub addPkg($pkgDir, $ignoreCollisions, $checkCollisionContents, $priority, $ignoreSingleFileOutputs) {
|
||||
return if (defined $done{$pkgDir});
|
||||
$done{$pkgDir} = 1;
|
||||
|
||||
findFiles("", $pkgDir, "", $ignoreCollisions, $ignoreSingleFileOutputs, $checkCollisionContents, $priority);
|
||||
findFiles("", $pkgDir, "", $ignoreCollisions, $checkCollisionContents, $priority, $ignoreSingleFileOutputs);
|
||||
|
||||
my $propagatedFN = "$pkgDir/nix-support/propagated-user-env-packages";
|
||||
if (-e $propagatedFN) {
|
||||
@@ -240,9 +229,9 @@ for my $pkg (@{decode_json $pkgs}) {
|
||||
for my $path (@{$pkg->{paths}}) {
|
||||
addPkg($path,
|
||||
$ENV{"ignoreCollisions"} eq "1",
|
||||
$ENV{"ignoreSingleFileOutputs"} eq "1",
|
||||
$ENV{"checkCollisionContents"} eq "1",
|
||||
$pkg->{priority})
|
||||
$pkg->{priority},
|
||||
$ENV{"ignoreSingleFileOutputs"} eq "1")
|
||||
if -e $path;
|
||||
}
|
||||
}
|
||||
@@ -257,7 +246,7 @@ while (scalar(keys %postponed) > 0) {
|
||||
my @pkgDirs = keys %postponed;
|
||||
%postponed = ();
|
||||
foreach my $pkgDir (sort @pkgDirs) {
|
||||
addPkg($pkgDir, 2, $ENV{"ignoreSingleFileOutputs"} eq "1", $ENV{"checkCollisionContents"} eq "1", $priorityCounter++);
|
||||
addPkg($pkgDir, 2, $ENV{"checkCollisionContents"} eq "1", $priorityCounter++, $ENV{"ignoreSingleFileOutputs"} eq "1");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -269,9 +258,9 @@ if ($extraPathsFilePath) {
|
||||
chomp $line;
|
||||
addPkg($line,
|
||||
$ENV{"ignoreCollisions"} eq "1",
|
||||
$ENV{"ignoreSingleFileOutputs"} eq "1",
|
||||
$ENV{"checkCollisionContents"} eq "1",
|
||||
1000)
|
||||
1000,
|
||||
$ENV{"ignoreSingleFileOutputs"} eq "1")
|
||||
if -d $line;
|
||||
}
|
||||
|
||||
|
||||
@@ -2,7 +2,11 @@ needsTarget=true
|
||||
|
||||
for p in "${params[@]}"; do
|
||||
case "$p" in
|
||||
-target | --target=*) needsTarget=false ;;
|
||||
-target | --target=*)
|
||||
needsTarget=false
|
||||
|
||||
echo "Warning: supplying the --target argument to a nix-wrapped compiler may not work correctly - cc-wrapper is currently not designed with multi-target compilers in mind. You may want to use an un-wrapped compiler instead." >&2
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
|
||||
@@ -131,7 +131,7 @@ if [ "$NIX_ENFORCE_NO_NATIVE_@suffixSalt@" = 1 ]; then
|
||||
# Old bash empty array hack
|
||||
for p in ${params+"${params[@]}"}; do
|
||||
if [[ "$p" = -m*=native ]]; then
|
||||
skip "$p"
|
||||
>&2 echo "warning: Skipping impure flag $p because NIX_ENFORCE_NO_NATIVE is set"
|
||||
else
|
||||
kept+=("$p")
|
||||
fi
|
||||
@@ -232,6 +232,12 @@ if [[ "${#positionalArgs[@]}" -gt 0 ]]; then
|
||||
extraAfter+=(-- "${positionalArgs[@]}")
|
||||
fi
|
||||
|
||||
# if a cc-wrapper-hook exists, run it.
|
||||
if [[ -e @out@/nix-support/cc-wrapper-hook ]]; then
|
||||
compiler=@prog@
|
||||
source @out@/nix-support/cc-wrapper-hook
|
||||
fi
|
||||
|
||||
# Optionally print debug info.
|
||||
if (( "${NIX_DEBUG:-0}" >= 1 )); then
|
||||
# Old bash workaround, see ld-wrapper for explanation.
|
||||
@@ -246,12 +252,6 @@ fi
|
||||
PATH="$path_backup"
|
||||
# Old bash workaround, see above.
|
||||
|
||||
# if a cc-wrapper-hook exists, run it.
|
||||
if [[ -e @out@/nix-support/cc-wrapper-hook ]]; then
|
||||
compiler=@prog@
|
||||
source @out@/nix-support/cc-wrapper-hook
|
||||
fi
|
||||
|
||||
if (( "${NIX_CC_USE_RESPONSE_FILE:-@use_response_file_by_default@}" >= 1 )); then
|
||||
responseFile=$(@mktemp@ "${TMPDIR:-/tmp}/cc-params.XXXXXX")
|
||||
trap '@rm@ -f -- "$responseFile"' EXIT
|
||||
|
||||
@@ -980,7 +980,8 @@ rec {
|
||||
|
||||
mkdir $out
|
||||
${if enableFakechroot then ''
|
||||
proot -r $PWD/old_out ${bind-paths} --pwd=/ fakeroot bash -c '
|
||||
proot -r $PWD/old_out ${bind-paths} --pwd=/ fakeroot bash -e -c '
|
||||
if [ -e "$NIX_ATTRS_SH_FILE" ]; then . "$NIX_ATTRS_SH_FILE"; fi
|
||||
source $stdenv/setup
|
||||
eval "$fakeRootCommands"
|
||||
tar \
|
||||
@@ -994,7 +995,8 @@ rec {
|
||||
-cf $out/layer.tar .
|
||||
'
|
||||
'' else ''
|
||||
fakeroot bash -c '
|
||||
fakeroot bash -e -c '
|
||||
if [ -e "$NIX_ATTRS_SH_FILE" ]; then . "$NIX_ATTRS_SH_FILE"; fi
|
||||
source $stdenv/setup
|
||||
cd old_out
|
||||
eval "$fakeRootCommands"
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
runtimeShell,
|
||||
nix,
|
||||
lib,
|
||||
substituteAll,
|
||||
replaceVarsWith,
|
||||
nuget-to-nix,
|
||||
nixfmt-rfc-style,
|
||||
nuget-to-json,
|
||||
@@ -84,15 +84,16 @@ attrs
|
||||
let
|
||||
drv = builtins.unsafeDiscardOutputDependency fetch-drv.drvPath;
|
||||
|
||||
innerScript = substituteAll {
|
||||
innerScript = replaceVarsWith {
|
||||
src = ./fetch-deps.sh;
|
||||
isExecutable = true;
|
||||
inherit cacert;
|
||||
binPath = lib.makeBinPath [
|
||||
nuget-to-nix
|
||||
nixfmt-rfc-style
|
||||
nuget-to-json
|
||||
];
|
||||
replacements = {
|
||||
binPath = lib.makeBinPath [
|
||||
nuget-to-nix
|
||||
nixfmt-rfc-style
|
||||
nuget-to-json
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
defaultDepsFile =
|
||||
|
||||
@@ -97,5 +97,5 @@ dotnetFixupHook() {
|
||||
}
|
||||
|
||||
if [[ -z "${dontFixup-}" && -z "${dontDotnetFixup-}" ]]; then
|
||||
preFixupPhases+=" dotnetFixupHook"
|
||||
appendToVar preFixupPhases dotnetFixupHook
|
||||
fi
|
||||
|
||||
@@ -1,6 +1,3 @@
|
||||
if [ -e "$NIX_ATTRS_SH_FILE" ]; then . "$NIX_ATTRS_SH_FILE"; elif [ -f .attrs.sh ]; then . .attrs.sh; fi
|
||||
source "$stdenv/setup"
|
||||
|
||||
echo "exporting \`$url' (revision $rev) into \`$out'"
|
||||
|
||||
# Perform a lightweight checkout so that we don't end up importing
|
||||
|
||||
@@ -1,6 +1,3 @@
|
||||
if [ -e "$NIX_ATTRS_SH_FILE" ]; then . "$NIX_ATTRS_SH_FILE"; elif [ -f .attrs.sh ]; then . .attrs.sh; fi
|
||||
source $stdenv/setup
|
||||
|
||||
(echo "#!$SHELL"; \
|
||||
echo 'ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no "$@"') > ssh
|
||||
chmod +x ssh
|
||||
|
||||
@@ -1,6 +1,3 @@
|
||||
if [ -e "$NIX_ATTRS_SH_FILE" ]; then . "$NIX_ATTRS_SH_FILE"; elif [ -f .attrs.sh ]; then . .attrs.sh; fi
|
||||
source $stdenv/setup
|
||||
|
||||
tagtext=""
|
||||
tagflags=""
|
||||
# Darcs hashes are sha1 (120 bits, 40-character hex)
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
if [ -e "$NIX_ATTRS_SH_FILE" ]; then . "$NIX_ATTRS_SH_FILE"; elif [ -f .attrs.sh ]; then . .attrs.sh; fi
|
||||
source "${stdenv}/setup"
|
||||
echo "exporting ${repository}/${imageName} (tag: ${tag}) into ${out}"
|
||||
mkdir -p "${out}"
|
||||
|
||||
|
||||
@@ -35,7 +35,6 @@ in
|
||||
stdenv.mkDerivation {
|
||||
inherit name;
|
||||
builder = writeText "${fetcher}-builder.sh" ''
|
||||
source "$stdenv/setup"
|
||||
echo "${fetcher} exporting to $out"
|
||||
|
||||
declare -A creds
|
||||
|
||||
@@ -33,8 +33,6 @@ stdenv.mkDerivation {
|
||||
};
|
||||
|
||||
builder = writeScript "xpibuilder" ''
|
||||
source $stdenv/setup
|
||||
|
||||
echo "firefox addon $name into $out"
|
||||
|
||||
UUID="${extid}"
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
if [ -e "$NIX_ATTRS_SH_FILE" ]; then . "$NIX_ATTRS_SH_FILE"; elif [ -f .attrs.sh ]; then . .attrs.sh; fi
|
||||
source $stdenv/setup
|
||||
echo "Cloning Fossil $url [$rev] into $out"
|
||||
|
||||
# Fossil, bless its adorable little heart, wants to write global configuration
|
||||
|
||||
@@ -3,8 +3,6 @@
|
||||
# - revision specified and remote has a HEAD
|
||||
# - revision specified and remote without HEAD
|
||||
#
|
||||
if [ -e "$NIX_ATTRS_SH_FILE" ]; then . "$NIX_ATTRS_SH_FILE"; elif [ -f .attrs.sh ]; then . .attrs.sh; fi
|
||||
source $stdenv/setup
|
||||
|
||||
echo "exporting $url (rev $rev) into $out"
|
||||
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
if [ -e "$NIX_ATTRS_SH_FILE" ]; then . "$NIX_ATTRS_SH_FILE"; elif [ -f .attrs.sh ]; then . .attrs.sh; fi
|
||||
source $stdenv/setup
|
||||
echo "getting $url${rev:+ ($rev)} into $out"
|
||||
|
||||
hg clone --insecure "$url" hg-clone
|
||||
|
||||
@@ -1,6 +1,3 @@
|
||||
if [ -e "$NIX_ATTRS_SH_FILE" ]; then . "$NIX_ATTRS_SH_FILE"; elif [ -f .attrs.sh ]; then . .attrs.sh; fi
|
||||
source $stdenv/setup
|
||||
|
||||
# Curl flags to handle redirects, not use EPSV, handle cookies for
|
||||
# servers to need them during redirects, and work on SSL without a
|
||||
# certificate (this isn't a security problem because we check the
|
||||
|
||||
@@ -1,6 +1,3 @@
|
||||
if [ -e "$NIX_ATTRS_SH_FILE" ]; then . "$NIX_ATTRS_SH_FILE"; elif [ -f .attrs.sh ]; then . .attrs.sh; fi
|
||||
source $stdenv/setup
|
||||
|
||||
set -x
|
||||
|
||||
if ! [ -f "$cacheDB" ]; then
|
||||
|
||||
@@ -1,6 +1,3 @@
|
||||
if [ -e "$NIX_ATTRS_SH_FILE" ]; then . "$NIX_ATTRS_SH_FILE"; elif [ -f .attrs.sh ]; then . .attrs.sh; fi
|
||||
source $stdenv/setup
|
||||
|
||||
echo "exporting $url (r$rev) into $out"
|
||||
|
||||
if test -n "$http_proxy"; then
|
||||
|
||||
@@ -1,6 +1,3 @@
|
||||
if [ -e "$NIX_ATTRS_SH_FILE" ]; then . "$NIX_ATTRS_SH_FILE"; elif [ -f .attrs.sh ]; then . .attrs.sh; fi
|
||||
source $stdenv/setup
|
||||
|
||||
echo "exporting $url (r$rev) into $out"
|
||||
|
||||
if test "$sshSupport"; then
|
||||
|
||||
@@ -1,6 +1,3 @@
|
||||
if [ -e "$NIX_ATTRS_SH_FILE" ]; then . "$NIX_ATTRS_SH_FILE"; elif [ -f .attrs.sh ]; then . .attrs.sh; fi
|
||||
source $stdenv/setup
|
||||
|
||||
source $mirrorsFile
|
||||
|
||||
curlVersion=$(curl -V | head -1 | cut -d' ' -f2)
|
||||
|
||||
@@ -1,4 +1,2 @@
|
||||
source $stdenv/setup
|
||||
|
||||
# !!! this is kinda hacky.
|
||||
set | grep -E '^[a-zA-Z]+=.*://' > $out
|
||||
|
||||
@@ -237,8 +237,8 @@ in
|
||||
local cmd="$1" dir="$2"
|
||||
|
||||
declare -a flags
|
||||
flags+=(''${tags:+-tags=''${tags// /,}})
|
||||
flags+=(''${ldflags:+-ldflags="$ldflags"})
|
||||
flags+=(''${tags:+-tags=$(concatStringsSep "," tags)})
|
||||
flags+=(''${ldflags:+-ldflags="''${ldflags[*]}"})
|
||||
flags+=("-p" "$NIX_BUILD_CORES")
|
||||
if (( "''${NIX_DEBUG:-0}" >= 1 )); then
|
||||
flags+=(-x)
|
||||
@@ -282,7 +282,7 @@ in
|
||||
'' + lib.optionalString (stdenv.hostPlatform != stdenv.buildPlatform) ''
|
||||
# normalize cross-compiled builds w.r.t. native builds
|
||||
(
|
||||
dir=$GOPATH/bin/${go.GOOS}_${go.GOARCH}
|
||||
dir=$GOPATH/bin/''${GOOS}_''${GOARCH}
|
||||
if [[ -n "$(shopt -s nullglob; echo $dir/*)" ]]; then
|
||||
mv $dir/* $dir/..
|
||||
fi
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
source $stdenv/setup
|
||||
|
||||
set -o pipefail
|
||||
|
||||
objects=($objects)
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
source $stdenv/setup
|
||||
|
||||
# When no modules are built, the $out/lib/modules directory will not
|
||||
# exist. Because the rest of the script assumes it does exist, we
|
||||
# handle this special case first.
|
||||
|
||||
@@ -66,7 +66,7 @@ fn fixup_lockfile(
|
||||
{
|
||||
if let Some(Value::String(resolved)) = package.get("resolved") {
|
||||
if let Some(Value::String(integrity)) = package.get("integrity") {
|
||||
if resolved.starts_with("git+ssh://") {
|
||||
if resolved.starts_with("git+") {
|
||||
fixed = true;
|
||||
|
||||
package
|
||||
|
||||
@@ -1,86 +0,0 @@
|
||||
{ lib, stdenvNoCC }:
|
||||
|
||||
/**
|
||||
`replaceVars` is a wrapper around the [bash function `substitute`](https://nixos.org/manual/nixpkgs/stable/#fun-substitute)
|
||||
in the stdenv. It allows for terse replacement of names in the specified path, while checking
|
||||
for common mistakes such as naming a replacement that does nothing or forgetting a variable which
|
||||
needs to be replaced.
|
||||
|
||||
As with the [`--subst-var-by`](https://nixos.org/manual/nixpkgs/stable/#fun-substitute-subst-var-by)
|
||||
flag, names are encoded as `@name@` in the provided file at the provided path.
|
||||
|
||||
Any unmatched variable names in the file at the provided path will cause a build failure.
|
||||
|
||||
By default, any remaining text that matches `@[A-Za-z_][0-9A-Za-z_'-]@` in the output after replacement
|
||||
has occurred will cause a build failure. Variables can be excluded from this check by passing "null" for them.
|
||||
|
||||
# Inputs
|
||||
|
||||
`path` ([Store Path](https://nixos.org/manual/nix/latest/store/store-path.html#store-path) String)
|
||||
: The file in which to replace variables.
|
||||
|
||||
`attrs` (AttrsOf String)
|
||||
: Each entry in this set corresponds to a `--subst-var-by` entry in [`substitute`](https://nixos.org/manual/nixpkgs/stable/#fun-substitute) or
|
||||
null to keep it unchanged.
|
||||
|
||||
# Example
|
||||
|
||||
```nix
|
||||
{ replaceVars }:
|
||||
|
||||
replaceVars ./greeting.txt { world = "hello"; }
|
||||
```
|
||||
|
||||
See `../../test/replace-vars/default.nix` for tests of this function.
|
||||
*/
|
||||
path: attrs:
|
||||
|
||||
let
|
||||
# We use `--replace-fail` instead of `--subst-var-by` so that if the thing isn't there, we fail.
|
||||
subst-var-by =
|
||||
name: value:
|
||||
lib.optionals (value != null) [
|
||||
"--replace-fail"
|
||||
(lib.escapeShellArg "@${name}@")
|
||||
(lib.escapeShellArg value)
|
||||
];
|
||||
|
||||
replacements = lib.concatLists (lib.mapAttrsToList subst-var-by attrs);
|
||||
|
||||
left-overs = map ({ name, ... }: name) (
|
||||
builtins.filter ({ value, ... }: value == null) (lib.attrsToList attrs)
|
||||
);
|
||||
in
|
||||
|
||||
stdenvNoCC.mkDerivation {
|
||||
name = baseNameOf (toString path);
|
||||
src = path;
|
||||
doCheck = true;
|
||||
dontUnpack = true;
|
||||
preferLocalBuild = true;
|
||||
allowSubstitutes = false;
|
||||
|
||||
buildPhase = ''
|
||||
runHook preBuild
|
||||
substitute "$src" "$out" ${lib.concatStringsSep " " replacements}
|
||||
runHook postBuild
|
||||
'';
|
||||
|
||||
# Look for Nix identifiers surrounded by `@` that aren't substituted.
|
||||
checkPhase =
|
||||
let
|
||||
lookahead =
|
||||
if builtins.length left-overs == 0 then "" else "(?!${builtins.concatStringsSep "|" left-overs}@)";
|
||||
regex = lib.escapeShellArg "@${lookahead}[a-zA-Z_][0-9A-Za-z_'-]*@";
|
||||
in
|
||||
''
|
||||
runHook preCheck
|
||||
if grep -Pqe ${regex} "$out"; then
|
||||
echo The following look like unsubstituted Nix identifiers that remain in "$out":
|
||||
grep -Poe ${regex} "$out"
|
||||
echo Use the more precise '`substitute`' function if this check is in error.
|
||||
exit 1
|
||||
fi
|
||||
runHook postCheck
|
||||
'';
|
||||
}
|
||||
@@ -0,0 +1,131 @@
|
||||
{ lib, stdenvNoCC }:
|
||||
|
||||
/**
|
||||
`replaceVarsWith` is a wrapper around the [bash function `substitute`](https://nixos.org/manual/nixpkgs/stable/#fun-substitute)
|
||||
in the stdenv. It allows for terse replacement of names in the specified path, while checking
|
||||
for common mistakes such as naming a replacement that does nothing or forgetting a variable which
|
||||
needs to be replaced.
|
||||
|
||||
As with the [`--subst-var-by`](https://nixos.org/manual/nixpkgs/stable/#fun-substitute-subst-var-by)
|
||||
flag, names are encoded as `@name@` in the provided file at the provided path.
|
||||
|
||||
Any unmatched variable names in the file at the provided path will cause a build failure.
|
||||
|
||||
By default, any remaining text that matches `@[A-Za-z_][0-9A-Za-z_'-]@` in the output after replacement
|
||||
has occurred will cause a build failure. Variables can be excluded from this check by passing "null" for them.
|
||||
|
||||
# Inputs
|
||||
|
||||
`src` ([Store Path](https://nixos.org/manual/nix/latest/store/store-path.html#store-path) String)
|
||||
: The file in which to replace variables.
|
||||
|
||||
`replacements` (AttrsOf String)
|
||||
: Each entry in this set corresponds to a `--subst-var-by` entry in [`substitute`](https://nixos.org/manual/nixpkgs/stable/#fun-substitute) or
|
||||
null to keep it unchanged.
|
||||
|
||||
`dir` (String)
|
||||
: Sub directory in $out to store the result in. Commonly set to "bin".
|
||||
|
||||
`isExecutable` (Boolean)
|
||||
: Whether to mark the output file as executable.
|
||||
|
||||
Most arguments supported by mkDerivation are also supported, with some exceptions for which
|
||||
an error will be thrown.
|
||||
|
||||
# Example
|
||||
|
||||
```nix
|
||||
{ replaceVarsWith }:
|
||||
|
||||
replaceVarsWith {
|
||||
src = ./my-setup-hook.sh;
|
||||
replacements = { world = "hello"; };
|
||||
dir = "bin";
|
||||
isExecutable = true;
|
||||
}
|
||||
```
|
||||
|
||||
See `../../test/replace-vars/default.nix` for tests of this function. Also see `replaceVars` for a short
|
||||
version with src and replacements only.
|
||||
*/
|
||||
{
|
||||
src,
|
||||
replacements,
|
||||
dir ? null,
|
||||
isExecutable ? false,
|
||||
...
|
||||
}@attrs:
|
||||
|
||||
let
|
||||
# We use `--replace-fail` instead of `--subst-var-by` so that if the thing isn't there, we fail.
|
||||
subst-var-by =
|
||||
name: value:
|
||||
lib.optionals (value != null) [
|
||||
"--replace-fail"
|
||||
(lib.escapeShellArg "@${name}@")
|
||||
(lib.escapeShellArg value)
|
||||
];
|
||||
|
||||
substitutions = lib.concatLists (lib.mapAttrsToList subst-var-by replacements);
|
||||
|
||||
left-overs = map ({ name, ... }: name) (
|
||||
builtins.filter ({ value, ... }: value == null) (lib.attrsToList replacements)
|
||||
);
|
||||
|
||||
optionalAttrs =
|
||||
if (builtins.intersectAttrs attrs forcedAttrs == { }) then
|
||||
builtins.removeAttrs attrs [ "replacements" ]
|
||||
else
|
||||
throw "Passing any of ${builtins.concatStringsSep ", " (builtins.attrNames forcedAttrs)} to replaceVarsWith is not supported.";
|
||||
|
||||
forcedAttrs = {
|
||||
doCheck = true;
|
||||
dontUnpack = true;
|
||||
preferLocalBuild = true;
|
||||
allowSubstitutes = false;
|
||||
|
||||
buildPhase = ''
|
||||
runHook preBuild
|
||||
|
||||
target=$out
|
||||
if test -n "$dir"; then
|
||||
target=$out/$dir/$name
|
||||
mkdir -p $out/$dir
|
||||
fi
|
||||
|
||||
substitute "$src" "$target" ${lib.concatStringsSep " " substitutions}
|
||||
|
||||
if test -n "$isExecutable"; then
|
||||
chmod +x $target
|
||||
fi
|
||||
|
||||
runHook postBuild
|
||||
'';
|
||||
|
||||
# Look for Nix identifiers surrounded by `@` that aren't substituted.
|
||||
checkPhase =
|
||||
let
|
||||
lookahead =
|
||||
if builtins.length left-overs == 0 then "" else "(?!${builtins.concatStringsSep "|" left-overs}@)";
|
||||
regex = lib.escapeShellArg "@${lookahead}[a-zA-Z_][0-9A-Za-z_'-]*@";
|
||||
in
|
||||
''
|
||||
runHook preCheck
|
||||
if grep -Pqe ${regex} "$target"; then
|
||||
echo The following look like unsubstituted Nix identifiers that remain in "$target":
|
||||
grep -Poe ${regex} "$target"
|
||||
echo Use the more precise '`substitute`' function if this check is in error.
|
||||
exit 1
|
||||
fi
|
||||
runHook postCheck
|
||||
'';
|
||||
};
|
||||
in
|
||||
|
||||
stdenvNoCC.mkDerivation (
|
||||
{
|
||||
name = baseNameOf (toString src);
|
||||
}
|
||||
// optionalAttrs
|
||||
// forcedAttrs
|
||||
)
|
||||
@@ -0,0 +1,36 @@
|
||||
{ replaceVarsWith }:
|
||||
|
||||
/**
|
||||
`replaceVars` is a wrapper around the [bash function `substitute`](https://nixos.org/manual/nixpkgs/stable/#fun-substitute)
|
||||
in the stdenv. It allows for terse replacement of names in the specified path, while checking
|
||||
for common mistakes such as naming a replacement that does nothing or forgetting a variable which
|
||||
needs to be replaced.
|
||||
|
||||
As with the [`--subst-var-by`](https://nixos.org/manual/nixpkgs/stable/#fun-substitute-subst-var-by)
|
||||
flag, names are encoded as `@name@` in the provided file at the provided path.
|
||||
|
||||
Any unmatched variable names in the file at the provided path will cause a build failure.
|
||||
|
||||
By default, any remaining text that matches `@[A-Za-z_][0-9A-Za-z_'-]@` in the output after replacement
|
||||
has occurred will cause a build failure. Variables can be excluded from this check by passing "null" for them.
|
||||
|
||||
# Inputs
|
||||
|
||||
`src` ([Store Path](https://nixos.org/manual/nix/latest/store/store-path.html#store-path) String)
|
||||
: The file in which to replace variables.
|
||||
|
||||
`replacements` (AttrsOf String)
|
||||
: Each entry in this set corresponds to a `--subst-var-by` entry in [`substitute`](https://nixos.org/manual/nixpkgs/stable/#fun-substitute) or
|
||||
null to keep it unchanged.
|
||||
|
||||
# Example
|
||||
|
||||
```nix
|
||||
{ replaceVars }:
|
||||
|
||||
replaceVars ./greeting.txt { world = "hello"; }
|
||||
```
|
||||
|
||||
See `../../test/replace-vars/default.nix` for tests of this function.
|
||||
*/
|
||||
src: replacements: replaceVarsWith { inherit src replacements; }
|
||||
@@ -9,6 +9,7 @@ import sys
|
||||
import tomllib
|
||||
from pathlib import Path
|
||||
from typing import Any, TypedDict, cast
|
||||
from urllib.parse import unquote
|
||||
|
||||
import requests
|
||||
from requests.adapters import HTTPAdapter, Retry
|
||||
@@ -21,6 +22,15 @@ def load_toml(path: Path) -> dict[str, Any]:
|
||||
return tomllib.load(f)
|
||||
|
||||
|
||||
def get_lockfile_version(cargo_lock_toml: dict[str, Any]) -> int:
|
||||
# lockfile v1 and v2 don't have the `version` key, so assume v2
|
||||
version = cargo_lock_toml.get("version", 2)
|
||||
|
||||
# TODO: add logic for differentiating between v1 and v2
|
||||
|
||||
return version
|
||||
|
||||
|
||||
def download_file_with_checksum(url: str, destination_path: Path) -> str:
|
||||
retries = Retry(
|
||||
total=5,
|
||||
@@ -93,20 +103,29 @@ class GitSourceInfo(TypedDict):
|
||||
git_sha_rev: str
|
||||
|
||||
|
||||
def parse_git_source(source: str) -> GitSourceInfo:
|
||||
def parse_git_source(source: str, lockfile_version: int) -> GitSourceInfo:
|
||||
match = GIT_SOURCE_REGEX.match(source)
|
||||
if match is None:
|
||||
raise Exception(f"Unable to process git source: {source}.")
|
||||
return cast(GitSourceInfo, match.groupdict(default=None))
|
||||
|
||||
source_info = cast(GitSourceInfo, match.groupdict(default=None))
|
||||
|
||||
# the source URL is URL-encoded in lockfile_version >=4
|
||||
# since we just used regex to parse it we have to manually decode the escaped branch/tag name
|
||||
if lockfile_version >= 4 and source_info["value"] is not None:
|
||||
source_info["value"] = unquote(source_info["value"])
|
||||
|
||||
return source_info
|
||||
|
||||
|
||||
def create_vendor_staging(lockfile_path: Path, out_dir: Path) -> None:
|
||||
cargo_toml = load_toml(lockfile_path)
|
||||
cargo_lock_toml = load_toml(lockfile_path)
|
||||
lockfile_version = get_lockfile_version(cargo_lock_toml)
|
||||
|
||||
git_packages: list[dict[str, Any]] = []
|
||||
registry_packages: list[dict[str, Any]] = []
|
||||
|
||||
for pkg in cargo_toml["package"]:
|
||||
for pkg in cargo_lock_toml["package"]:
|
||||
# ignore local dependenices
|
||||
if "source" not in pkg.keys():
|
||||
eprint(f"Skipping local dependency: {pkg["name"]}")
|
||||
@@ -122,7 +141,7 @@ def create_vendor_staging(lockfile_path: Path, out_dir: Path) -> None:
|
||||
|
||||
git_sha_rev_to_url: dict[str, str] = {}
|
||||
for pkg in git_packages:
|
||||
source_info = parse_git_source(pkg["source"])
|
||||
source_info = parse_git_source(pkg["source"], lockfile_version)
|
||||
git_sha_rev_to_url[source_info["git_sha_rev"]] = source_info["url"]
|
||||
|
||||
out_dir.mkdir(exist_ok=True)
|
||||
@@ -207,7 +226,8 @@ def create_vendor(vendor_staging_dir: Path, out_dir: Path) -> None:
|
||||
out_dir.mkdir(exist_ok=True)
|
||||
shutil.copy(lockfile_path, out_dir / "Cargo.lock")
|
||||
|
||||
cargo_toml = load_toml(lockfile_path)
|
||||
cargo_lock_toml = load_toml(lockfile_path)
|
||||
lockfile_version = get_lockfile_version(cargo_lock_toml)
|
||||
|
||||
config_lines = [
|
||||
'[source.vendored-sources]',
|
||||
@@ -217,7 +237,7 @@ def create_vendor(vendor_staging_dir: Path, out_dir: Path) -> None:
|
||||
]
|
||||
|
||||
seen_source_keys = set()
|
||||
for pkg in cargo_toml["package"]:
|
||||
for pkg in cargo_lock_toml["package"]:
|
||||
|
||||
# ignore local dependenices
|
||||
if "source" not in pkg.keys():
|
||||
@@ -230,7 +250,8 @@ def create_vendor(vendor_staging_dir: Path, out_dir: Path) -> None:
|
||||
|
||||
if source.startswith("git+"):
|
||||
|
||||
source_info = parse_git_source(pkg["source"])
|
||||
source_info = parse_git_source(pkg["source"], lockfile_version)
|
||||
|
||||
git_sha_rev = source_info["git_sha_rev"]
|
||||
git_tree = vendor_staging_dir / "git" / git_sha_rev
|
||||
|
||||
|
||||
@@ -12,6 +12,11 @@ maturinBuildHook() {
|
||||
pushd "${buildAndTestSubdir}"
|
||||
fi
|
||||
|
||||
# This is a huge hack, but it's the least invasive way
|
||||
# to get the required interpreter name for maturin.
|
||||
local interpreter_path="$(command -v python3 || command -v pypy3)"
|
||||
local interpreter_name="$($interpreter_path -c 'import os; import sysconfig; print(os.path.basename(sysconfig.get_config_var('\''INCLUDEPY'\'')))')"
|
||||
|
||||
local flagsArray=(
|
||||
"--jobs=$NIX_BUILD_CORES"
|
||||
"--offline"
|
||||
@@ -20,6 +25,7 @@ maturinBuildHook() {
|
||||
"--strip"
|
||||
"--release"
|
||||
"--out" "$dist"
|
||||
"--interpreter" "$interpreter_name"
|
||||
)
|
||||
|
||||
concatTo flagsArray maturinBuildFlags
|
||||
|
||||
@@ -49,6 +49,10 @@ let
|
||||
|
||||
parsedLockFile = builtins.fromTOML lockFileContents;
|
||||
|
||||
# lockfile v1 and v2 don't have the `version` key, so assume v2
|
||||
# we can implement more fine-grained detection later, if needed
|
||||
lockFileVersion = parsedLockFile.version or 2;
|
||||
|
||||
packages = parsedLockFile.package;
|
||||
|
||||
# There is no source attribute for the source package itself. But
|
||||
@@ -202,11 +206,20 @@ let
|
||||
# Cargo is happy with empty metadata.
|
||||
printf '{"files":{},"package":null}' > "$out/.cargo-checksum.json"
|
||||
|
||||
${lib.optionalString (gitParts ? type) ''
|
||||
gitPartsValue=${lib.escapeShellArg gitParts.value}
|
||||
# starting with lockfile version v4 the git source url contains encoded query parameters
|
||||
# our regex parser does not know how to unescape them to get the actual value, so we do it here
|
||||
${lib.optionalString (lockFileVersion >= 4) ''
|
||||
gitPartsValue=$(${lib.getExe python3Packages.python} -c "import sys, urllib.parse; print(urllib.parse.unquote(sys.argv[1]))" "$gitPartsValue")
|
||||
''}
|
||||
''}
|
||||
|
||||
# Set up configuration for the vendor directory.
|
||||
cat > $out/.cargo-config <<EOF
|
||||
[source."${gitParts.url}${lib.optionalString (gitParts ? type) "?${gitParts.type}=${gitParts.value}"}"]
|
||||
[source."${pkg.source}"]
|
||||
git = "${gitParts.url}"
|
||||
${lib.optionalString (gitParts ? type) "${gitParts.type} = \"${gitParts.value}\""}
|
||||
${lib.optionalString (gitParts ? type) "${gitParts.type} = \"$gitPartsValue\""}
|
||||
replace-with = "vendored-sources"
|
||||
EOF
|
||||
''
|
||||
|
||||
@@ -44,6 +44,16 @@ rec {
|
||||
#
|
||||
setEnv = ''
|
||||
env \
|
||||
"CC_${stdenv.buildPlatform.rust.cargoEnvVarTarget}=${ccForBuild}" \
|
||||
"CXX_${stdenv.buildPlatform.rust.cargoEnvVarTarget}=${cxxForBuild}" \
|
||||
"CARGO_TARGET_${stdenv.buildPlatform.rust.cargoEnvVarTarget}_LINKER=${ccForBuild}" \
|
||||
"CARGO_BUILD_TARGET=${rustBuildPlatform}" \
|
||||
"HOST_CC=${pkgsBuildHost.stdenv.cc}/bin/cc" \
|
||||
"HOST_CXX=${pkgsBuildHost.stdenv.cc}/bin/c++" \
|
||||
'' + ''
|
||||
"CC_${stdenv.hostPlatform.rust.cargoEnvVarTarget}=${ccForHost}" \
|
||||
"CXX_${stdenv.hostPlatform.rust.cargoEnvVarTarget}=${cxxForHost}" \
|
||||
"CARGO_TARGET_${stdenv.hostPlatform.rust.cargoEnvVarTarget}_LINKER=${ccForHost}" \
|
||||
''
|
||||
# Due to a bug in how splicing and pkgsTargetTarget works, in
|
||||
# situations where pkgsTargetTarget is irrelevant
|
||||
@@ -54,17 +64,6 @@ rec {
|
||||
"CC_${stdenv.targetPlatform.rust.cargoEnvVarTarget}=${ccForTarget}" \
|
||||
"CXX_${stdenv.targetPlatform.rust.cargoEnvVarTarget}=${cxxForTarget}" \
|
||||
"CARGO_TARGET_${stdenv.targetPlatform.rust.cargoEnvVarTarget}_LINKER=${ccForTarget}" \
|
||||
'' + ''
|
||||
"CC_${stdenv.hostPlatform.rust.cargoEnvVarTarget}=${ccForHost}" \
|
||||
"CXX_${stdenv.hostPlatform.rust.cargoEnvVarTarget}=${cxxForHost}" \
|
||||
"CARGO_TARGET_${stdenv.hostPlatform.rust.cargoEnvVarTarget}_LINKER=${ccForHost}" \
|
||||
'' + ''
|
||||
"CC_${stdenv.buildPlatform.rust.cargoEnvVarTarget}=${ccForBuild}" \
|
||||
"CXX_${stdenv.buildPlatform.rust.cargoEnvVarTarget}=${cxxForBuild}" \
|
||||
"CARGO_TARGET_${stdenv.buildPlatform.rust.cargoEnvVarTarget}_LINKER=${ccForBuild}" \
|
||||
"CARGO_BUILD_TARGET=${rustBuildPlatform}" \
|
||||
"HOST_CC=${pkgsBuildHost.stdenv.cc}/bin/cc" \
|
||||
"HOST_CXX=${pkgsBuildHost.stdenv.cc}/bin/c++" \
|
||||
'';
|
||||
};
|
||||
} // lib.mapAttrs (old: new: platform:
|
||||
|
||||
@@ -24,7 +24,7 @@ fixupOutputHooks+=(patchShebangsAuto)
|
||||
|
||||
patchShebangs() {
|
||||
local pathName
|
||||
local update
|
||||
local update=false
|
||||
|
||||
while [[ $# -gt 0 ]]; do
|
||||
case "$1" in
|
||||
|
||||
@@ -7,7 +7,7 @@ updateSourceDateEpoch() {
|
||||
# Get the last modification time of all regular files, sort them,
|
||||
# and get the most recent. Maybe we should use
|
||||
# https://github.com/0-wiz-0/findnewest here.
|
||||
local -a res=($(find "$path" -type f -not -newer "$NIX_BUILD_TOP/.." -printf '%T@ %p\0' \
|
||||
local -a res=($(find "$path" -type f -not -newer "$NIX_BUILD_TOP/.." -printf '%T@ "%p"\0' \
|
||||
| sort -n --zero-terminated | tail -n1 --zero-terminated | head -c -1))
|
||||
local time="${res[0]//\.[0-9]*/}" # remove the fraction part
|
||||
local newestFile="${res[1]}"
|
||||
|
||||
@@ -22,7 +22,7 @@ _doStrip() {
|
||||
# push arrays all the way through this logic.
|
||||
|
||||
# Strip only host paths by default. Leave targets as is.
|
||||
stripDebugList=${stripDebugList[*]:-lib lib32 lib64 libexec bin sbin}
|
||||
stripDebugList=${stripDebugList[*]:-lib lib32 lib64 libexec bin sbin Applications Library/Frameworks}
|
||||
stripDebugListTarget=${stripDebugListTarget[*]:-}
|
||||
stripAllList=${stripAllList[*]:-}
|
||||
stripAllListTarget=${stripAllListTarget[*]:-}
|
||||
|
||||
@@ -28,13 +28,13 @@ gappsWrapperArgsHook() {
|
||||
fi
|
||||
|
||||
for v in ${wrapPrefixVariables:-} GST_PLUGIN_SYSTEM_PATH_1_0 GI_TYPELIB_PATH GRL_PLUGIN_PATH; do
|
||||
if [ -n "${!v}" ]; then
|
||||
if [ -n "${!v:-}" ]; then
|
||||
gappsWrapperArgs+=(--prefix "$v" : "${!v}")
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
preFixupPhases+=" gappsWrapperArgsHook"
|
||||
appendToVar preFixupPhases gappsWrapperArgsHook
|
||||
|
||||
wrapGApp() {
|
||||
local program="$1"
|
||||
|
||||
@@ -5,7 +5,6 @@ args:
|
||||
stdenv.mkDerivation ({
|
||||
name = if args ? name then args.name else baseNameOf (toString args.src);
|
||||
builder = builtins.toFile "builder.sh" ''
|
||||
source $stdenv/setup
|
||||
set -o pipefail
|
||||
|
||||
eval "$preInstall"
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
source $stdenv/setup
|
||||
|
||||
eval "$preInstall"
|
||||
|
||||
args=
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
source $stdenv/setup
|
||||
|
||||
args=
|
||||
|
||||
target=$out
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
Without the change build fails on ncurses-6.5 (enables opaque WINDOW by
|
||||
default) as:
|
||||
|
||||
aacurses.c: In function 'curses_getsize':
|
||||
aacurses.c:74:20: error: invalid use of incomplete typedef 'WINDOW' {aka 'struct _win_st'}
|
||||
74 | *width = stdscr->_maxx + 1;
|
||||
| ^~
|
||||
--- a/src/aacurses.c
|
||||
+++ b/src/aacurses.c
|
||||
@@ -71,8 +71,8 @@ static void curses_getsize(aa_context * c, int *width, int *height)
|
||||
{
|
||||
if (__resized_curses)
|
||||
curses_uninit(c), curses_init(&c->params, NULL,&c->driverparams, NULL), __resized_curses = 0;
|
||||
- *width = stdscr->_maxx + 1;
|
||||
- *height = stdscr->_maxy + 1;
|
||||
+ *width = getmaxx(stdscr);
|
||||
+ *height = getmaxy(stdscr);
|
||||
#ifdef GPM_MOUSEDRIVER
|
||||
gpm_mx = *width;
|
||||
gpm_my = *height;
|
||||
@@ -12,7 +12,12 @@ stdenv.mkDerivation rec {
|
||||
outputs = [ "bin" "dev" "out" "man" "info" ];
|
||||
setOutputFlags = false; # Doesn't support all the flags
|
||||
|
||||
patches = [ ./clang.patch ] # Fix implicit `int` on `main` error with newer versions of clang
|
||||
patches = [
|
||||
# Fix implicit `int` on `main` error with newer versions of clang
|
||||
./clang.patch
|
||||
# Fix build against opaque aalib API
|
||||
./ncurses-6.5.patch
|
||||
]
|
||||
++ lib.optionals stdenv.hostPlatform.isDarwin [ ./darwin.patch ];
|
||||
|
||||
# The fuloong2f is not supported by aalib still
|
||||
|
||||
@@ -3,14 +3,16 @@
|
||||
fetchurl,
|
||||
lib,
|
||||
stdenv,
|
||||
coreutils,
|
||||
kmod,
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "alsa-ucm-conf";
|
||||
version = "1.2.12";
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://alsa/lib/alsa-ucm-conf-${version}.tar.bz2";
|
||||
url = "mirror://alsa/lib/alsa-ucm-conf-${finalAttrs.version}.tar.bz2";
|
||||
hash = "sha256-Fo58BUm3v4mRCS+iv7kDYx33edxMQ+6PQnf8t3LYwDU=";
|
||||
};
|
||||
|
||||
@@ -19,6 +21,23 @@ stdenv.mkDerivation rec {
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
substituteInPlace ucm2/lib/card-init.conf \
|
||||
--replace-fail "/bin/rm" "${coreutils}/bin/rm" \
|
||||
--replace-fail "/bin/mkdir" "${coreutils}/bin/mkdir"
|
||||
|
||||
files=(
|
||||
"ucm2/HDA/HDA.conf"
|
||||
"ucm2/codecs/rt715/init.conf"
|
||||
"ucm2/codecs/rt715-sdca/init.conf"
|
||||
"ucm2/Intel/cht-bsw-rt5672/cht-bsw-rt5672.conf"
|
||||
"ucm2/Intel/bytcr-rt5640/bytcr-rt5640.conf"
|
||||
)
|
||||
|
||||
for file in "''${files[@]}"; do
|
||||
substituteInPlace "$file" \
|
||||
--replace-fail '/sbin/modprobe' '${kmod}/bin/modprobe'
|
||||
done
|
||||
|
||||
mkdir -p $out/share/alsa
|
||||
cp -r ucm ucm2 $out/share/alsa
|
||||
|
||||
@@ -29,7 +48,7 @@ stdenv.mkDerivation rec {
|
||||
url = "https://www.alsa-project.org/files/pub/lib/";
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
meta = {
|
||||
homepage = "https://www.alsa-project.org/";
|
||||
description = "ALSA Use Case Manager configuration";
|
||||
|
||||
@@ -38,8 +57,8 @@ stdenv.mkDerivation rec {
|
||||
MIDI functionality to the Linux-based operating system.
|
||||
'';
|
||||
|
||||
license = licenses.bsd3;
|
||||
maintainers = [ maintainers.roastiek ];
|
||||
platforms = platforms.linux;
|
||||
license = lib.licenses.bsd3;
|
||||
maintainers = [ lib.maintainers.roastiek ];
|
||||
platforms = lib.platforms.linux;
|
||||
};
|
||||
}
|
||||
})
|
||||
|
||||
@@ -79,7 +79,7 @@ let
|
||||
hash = "sha256-zLWJOWcW7OYL32OwBm9VFtHbmG+ibhteRfHlKr9G3CQ=";
|
||||
};
|
||||
|
||||
version = "18.0.0";
|
||||
version = "18.1.0";
|
||||
in
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "arrow-cpp";
|
||||
@@ -89,7 +89,7 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
owner = "apache";
|
||||
repo = "arrow";
|
||||
rev = "apache-arrow-${version}";
|
||||
hash = "sha256-V2lOYOUJwXSvPPk2G17uc1eZO88EATHKwwDnEroBrPw=";
|
||||
hash = "sha256-Jo3be5bVuDaDcSbW3pS8y9Wc2sz1W2tS6QTwf0XpODA";
|
||||
};
|
||||
|
||||
sourceRoot = "${finalAttrs.src.name}/cpp";
|
||||
@@ -103,6 +103,13 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
includes = [ "src/arrow/buffer_test.cc" ];
|
||||
hash = "sha256-ZHkznOilypi1J22d56PhLlw/hbz8RqwsOGDMqI1NsMs=";
|
||||
})
|
||||
# https://github.com/apache/arrow/pull/45057 remove on update
|
||||
(fetchpatch {
|
||||
name = "boost-187.patch";
|
||||
url = "https://github.com/apache/arrow/commit/5ec8b64668896ff06a86b6a41e700145324e1e34.patch";
|
||||
relative = "cpp";
|
||||
hash = "sha256-GkB7u4YnnaCApOMQPYFJuLdY7R2LtLzKccMEpKCO9ic=";
|
||||
})
|
||||
];
|
||||
|
||||
# versions are all taken from
|
||||
|
||||
@@ -10,33 +10,28 @@
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "atf";
|
||||
version = "0.21-unstable-2021-09-01"; # Match the commit used in FreeBSD’s port.
|
||||
version = "0.22";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "freebsd";
|
||||
repo = "atf";
|
||||
rev = "55c21b2c5fb189bbdfccb2b297bfa89236502542";
|
||||
hash = "sha256-u0YBPcoIBvqBVaytaO9feBaRnQygtzEPGJV0ItI1Vco=";
|
||||
tag = "atf-${finalAttrs.version}";
|
||||
hash = "sha256-vZfBk/lH+04d3NbTUYjAaxwGFHtnagl/kY04hgkE4Iw=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
# Fixes use after free that causes failures in Kyua’s test suite.
|
||||
# https://github.com/freebsd/atf/pull/57
|
||||
# https://github.com/freebsd/kyua/issues/223
|
||||
# https://github.com/freebsd/atf/issues/88
|
||||
# https://github.com/freebsd/atf/pull/85
|
||||
# Maintainer say it fix some tests in issue 88.
|
||||
./pr-85.patch
|
||||
(fetchpatch {
|
||||
name = "fix-use-after-free.patch";
|
||||
url = "https://github.com/freebsd/atf/commit/fb22f3837bcfdce5ce8b3c0e18af131bb6902a02.patch";
|
||||
hash = "sha256-p4L3sxSYfMSzwKrUDlEZpoJydbaK3Hcbvn90KlPHkic=";
|
||||
url = "https://github.com/freebsd/atf/commit/b42c98612cb99fa3f52766a46203263dc1de7187.patch?full_index=1";
|
||||
hash = "sha256-goDPIdIF8vHXDengVIYbxw5W/JT5kfsG5japgtranas=";
|
||||
})
|
||||
];
|
||||
|
||||
postPatch =
|
||||
lib.optionalString finalAttrs.doInstallCheck ''
|
||||
# https://github.com/freebsd/atf/issues/61
|
||||
substituteInPlace atf-c/check_test.c \
|
||||
--replace-fail 'ATF_TP_ADD_TC(tp, build_cpp)' ""
|
||||
substituteInPlace atf-c++/check_test.cpp \
|
||||
--replace-fail 'ATF_ADD_TEST_CASE(tcs, build_cpp);' ""
|
||||
# Can’t find `c_helpers` in the work folder.
|
||||
substituteInPlace test-programs/Kyuafile \
|
||||
--replace-fail 'atf_test_program{name="srcdir_test"}' ""
|
||||
@@ -60,12 +55,14 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
|
||||
makeFlags = [
|
||||
# ATF isn’t compatible with C++17, which is the default on current clang and GCC.
|
||||
"CXXFLAGS=-std=c++11"
|
||||
"CXXFLAGS=-std=c++14"
|
||||
];
|
||||
|
||||
doInstallCheck = true;
|
||||
|
||||
nativeInstallCheckInputs = [ kyua ];
|
||||
nativeInstallCheckInputs = [
|
||||
kyua
|
||||
];
|
||||
|
||||
installCheckPhase = ''
|
||||
runHook preInstallCheck
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user