2019-04-08 17:28:05 +02:00
|
|
|
|
{
|
|
|
|
|
description = "The purely functional package manager";
|
|
|
|
|
|
2024-03-27 18:16:16 +01:00
|
|
|
|
inputs = {
|
|
|
|
|
nixpkgs.url = "github:NixOS/nixpkgs/nixos-23.11-small";
|
|
|
|
|
nixpkgs-regression.url = "github:NixOS/nixpkgs/215d4d0fd80ca5163643b03a33fde804a29cc1e2";
|
|
|
|
|
pre-commit-hooks = {
|
2024-04-01 19:34:30 +02:00
|
|
|
|
url = "github:cachix/git-hooks.nix";
|
2024-04-08 05:05:19 +02:00
|
|
|
|
flake = false;
|
2024-03-27 18:16:16 +01:00
|
|
|
|
};
|
2024-04-05 01:07:44 +02:00
|
|
|
|
flake-compat = {
|
|
|
|
|
url = "github:edolstra/flake-compat";
|
|
|
|
|
flake = false;
|
|
|
|
|
};
|
2024-03-27 18:16:16 +01:00
|
|
|
|
};
|
2019-04-08 17:28:05 +02:00
|
|
|
|
|
2024-04-05 01:07:44 +02:00
|
|
|
|
outputs =
|
|
|
|
|
{
|
|
|
|
|
self,
|
|
|
|
|
nixpkgs,
|
|
|
|
|
nixpkgs-regression,
|
|
|
|
|
pre-commit-hooks,
|
|
|
|
|
flake-compat,
|
|
|
|
|
}:
|
2019-04-08 17:28:05 +02:00
|
|
|
|
|
2019-10-04 10:45:33 +02:00
|
|
|
|
let
|
2022-03-02 03:40:18 +01:00
|
|
|
|
inherit (nixpkgs) lib;
|
2019-05-29 17:25:41 +02:00
|
|
|
|
|
2024-05-04 02:01:05 +02:00
|
|
|
|
# This notice gets echoed as a dev shell hook, and can be turned off with
|
|
|
|
|
# `touch .nocontribmsg`
|
|
|
|
|
sgr = ''['';
|
|
|
|
|
freezePage = "https://wiki.lix.systems/books/lix-contributors/page/freezes-and-recommended-contributions";
|
|
|
|
|
codebaseOverview = "https://wiki.lix.systems/books/lix-contributors/page/codebase-overview";
|
|
|
|
|
contribNotice = builtins.toFile "lix-contrib-notice" ''
|
|
|
|
|
Hey there!
|
|
|
|
|
|
|
|
|
|
If you're thinking of working on Lix, please consider talking to us about it!
|
|
|
|
|
You should be aware that we are ${sgr}1mnot${sgr}0m accepting major features without some conditions,
|
|
|
|
|
and we highly recommend looking at our freeze status page on the wiki:
|
|
|
|
|
${sgr}32m${freezePage}${sgr}0m
|
|
|
|
|
|
|
|
|
|
We also have an overview of the codebase at
|
|
|
|
|
${sgr}32m${codebaseOverview}${sgr}0m,
|
|
|
|
|
and other helpful information on the wiki.
|
|
|
|
|
|
|
|
|
|
But above all else, ${sgr}1mwe want to hear from you!${sgr}0m
|
|
|
|
|
We can help you figure out where in the codebase to look for whatever you want to do,
|
|
|
|
|
and we'd like to work together with all contributors as much as possible.
|
|
|
|
|
Lix is a collaborative project :)
|
|
|
|
|
|
|
|
|
|
You can open an issue at https://git.lix.systems/lix-project/lix/issues
|
|
|
|
|
or chat with us on Matrix: #space:lix.systems.
|
|
|
|
|
|
|
|
|
|
(Run `touch .nocontribmsg` to hide this message.)
|
|
|
|
|
'';
|
|
|
|
|
|
2024-04-11 20:17:19 +02:00
|
|
|
|
officialRelease = false;
|
2022-12-06 18:00:10 +01:00
|
|
|
|
|
2024-03-04 07:11:19 +01:00
|
|
|
|
# Set to true to build the release notes for the next release.
|
2024-05-16 00:01:38 +02:00
|
|
|
|
buildUnreleasedNotes = true;
|
2024-03-04 07:11:19 +01:00
|
|
|
|
|
2020-04-01 00:20:12 +02:00
|
|
|
|
versionSuffix =
|
2024-04-05 01:07:44 +02:00
|
|
|
|
if officialRelease then
|
|
|
|
|
""
|
|
|
|
|
else
|
|
|
|
|
"pre${
|
|
|
|
|
builtins.substring 0 8 (self.lastModifiedDate or self.lastModified or "19700101")
|
|
|
|
|
}_${self.shortRev or "dirty"}";
|
2020-03-13 18:28:01 +01:00
|
|
|
|
|
2023-08-23 20:28:24 +02:00
|
|
|
|
linux32BitSystems = [ "i686-linux" ];
|
2024-04-05 01:07:44 +02:00
|
|
|
|
linux64BitSystems = [
|
|
|
|
|
"x86_64-linux"
|
|
|
|
|
"aarch64-linux"
|
|
|
|
|
];
|
2023-08-23 20:28:24 +02:00
|
|
|
|
linuxSystems = linux32BitSystems ++ linux64BitSystems;
|
2024-04-05 01:07:44 +02:00
|
|
|
|
darwinSystems = [
|
|
|
|
|
"x86_64-darwin"
|
|
|
|
|
"aarch64-darwin"
|
|
|
|
|
];
|
2023-08-23 20:28:24 +02:00
|
|
|
|
systems = linuxSystems ++ darwinSystems;
|
2023-10-05 18:12:18 +02:00
|
|
|
|
|
2023-09-25 19:46:55 +02:00
|
|
|
|
crossSystems = [
|
2024-04-05 01:07:44 +02:00
|
|
|
|
"armv6l-linux"
|
|
|
|
|
"armv7l-linux"
|
2024-05-08 23:57:46 +02:00
|
|
|
|
# FIXME: doesn't evaluate, plausibly fixed in >=24.05, so recheck when
|
|
|
|
|
# we update to 24.05
|
|
|
|
|
# "x86_64-freebsd13"
|
2024-04-05 01:07:44 +02:00
|
|
|
|
"x86_64-netbsd"
|
2023-09-25 19:46:55 +02:00
|
|
|
|
];
|
2021-02-06 01:07:48 +01:00
|
|
|
|
|
2024-04-05 01:07:44 +02:00
|
|
|
|
stdenvs = [
|
|
|
|
|
"gccStdenv"
|
|
|
|
|
"clangStdenv"
|
|
|
|
|
"stdenv"
|
|
|
|
|
"libcxxStdenv"
|
|
|
|
|
"ccacheStdenv"
|
|
|
|
|
];
|
2021-07-08 17:01:51 +02:00
|
|
|
|
|
2022-03-02 03:40:18 +01:00
|
|
|
|
forAllSystems = lib.genAttrs systems;
|
2024-05-07 06:54:18 +02:00
|
|
|
|
# Same as forAllSystems, but removes nulls, in case something is broken
|
|
|
|
|
# on that system.
|
|
|
|
|
forAvailableSystems =
|
|
|
|
|
f: lib.filterAttrs (name: value: value != null && value != { }) (forAllSystems f);
|
2022-03-02 03:40:18 +01:00
|
|
|
|
|
|
|
|
|
forAllCrossSystems = lib.genAttrs crossSystems;
|
|
|
|
|
|
2024-04-05 01:07:44 +02:00
|
|
|
|
forAllStdenvs =
|
|
|
|
|
f:
|
|
|
|
|
lib.listToAttrs (
|
|
|
|
|
map (stdenvName: {
|
|
|
|
|
name = "${stdenvName}Packages";
|
|
|
|
|
value = f stdenvName;
|
|
|
|
|
}) stdenvs
|
|
|
|
|
);
|
2021-07-08 17:01:51 +02:00
|
|
|
|
|
2019-10-04 10:45:33 +02:00
|
|
|
|
# Memoize nixpkgs for different platforms for efficiency.
|
2024-04-05 01:07:44 +02:00
|
|
|
|
nixpkgsFor = forAllSystems (
|
|
|
|
|
system:
|
|
|
|
|
let
|
|
|
|
|
make-pkgs =
|
|
|
|
|
crossSystem: stdenv:
|
|
|
|
|
import nixpkgs {
|
|
|
|
|
localSystem = {
|
|
|
|
|
inherit system;
|
|
|
|
|
};
|
|
|
|
|
crossSystem =
|
|
|
|
|
if crossSystem == null then
|
|
|
|
|
null
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
system = crossSystem;
|
|
|
|
|
}
|
|
|
|
|
// lib.optionalAttrs (crossSystem == "x86_64-freebsd13") { useLLVM = true; };
|
|
|
|
|
overlays = [
|
|
|
|
|
(overlayFor (p: p.${stdenv}))
|
|
|
|
|
(final: prev: { nixfmt = final.callPackage ./nix-support/nixfmt.nix { }; })
|
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
config.permittedInsecurePackages = [ "nix-2.13.6" ];
|
2023-09-25 19:46:55 +02:00
|
|
|
|
};
|
2022-03-02 03:40:18 +01:00
|
|
|
|
stdenvs = forAllStdenvs (make-pkgs null);
|
|
|
|
|
native = stdenvs.stdenvPackages;
|
2024-04-05 01:07:44 +02:00
|
|
|
|
in
|
|
|
|
|
{
|
2022-03-02 03:40:18 +01:00
|
|
|
|
inherit stdenvs native;
|
|
|
|
|
static = native.pkgsStatic;
|
|
|
|
|
cross = forAllCrossSystems (crossSystem: make-pkgs crossSystem "stdenv");
|
2024-04-05 01:07:44 +02:00
|
|
|
|
}
|
|
|
|
|
);
|
2019-10-04 10:45:33 +02:00
|
|
|
|
|
2024-06-06 20:35:03 +02:00
|
|
|
|
binaryTarball = nix: pkgs: pkgs.callPackage ./nix-support/binary-tarball.nix { inherit nix; };
|
2021-06-26 07:12:03 +02:00
|
|
|
|
|
2024-04-05 01:07:44 +02:00
|
|
|
|
overlayFor =
|
|
|
|
|
getStdenv: final: prev:
|
2024-03-01 21:15:44 +01:00
|
|
|
|
let
|
|
|
|
|
currentStdenv = getStdenv final;
|
2024-04-05 01:07:44 +02:00
|
|
|
|
in
|
|
|
|
|
{
|
2024-03-01 21:15:44 +01:00
|
|
|
|
nixStable = prev.nix;
|
2020-02-15 21:30:26 +01:00
|
|
|
|
|
2024-03-01 21:15:44 +01:00
|
|
|
|
# Forward from the previous stage as we don’t want it to pick the lowdown override
|
|
|
|
|
nixUnstable = prev.nixUnstable;
|
|
|
|
|
|
2024-04-09 00:08:29 +02:00
|
|
|
|
check-headers = final.buildPackages.callPackage ./maintainers/check-headers.nix { };
|
2024-03-19 07:03:48 +01:00
|
|
|
|
clangbuildanalyzer = final.buildPackages.callPackage ./misc/clangbuildanalyzer.nix { };
|
2024-03-01 21:15:44 +01:00
|
|
|
|
|
|
|
|
|
default-busybox-sandbox-shell = final.busybox.override {
|
|
|
|
|
useMusl = true;
|
|
|
|
|
enableStatic = true;
|
|
|
|
|
enableMinimal = true;
|
|
|
|
|
extraConfig = ''
|
|
|
|
|
CONFIG_FEATURE_FANCY_ECHO y
|
|
|
|
|
CONFIG_FEATURE_SH_MATH y
|
|
|
|
|
CONFIG_FEATURE_SH_MATH_64 y
|
|
|
|
|
|
|
|
|
|
CONFIG_ASH y
|
|
|
|
|
CONFIG_ASH_OPTIMIZE_FOR_SIZE y
|
|
|
|
|
|
|
|
|
|
CONFIG_ASH_ALIAS y
|
|
|
|
|
CONFIG_ASH_BASH_COMPAT y
|
|
|
|
|
CONFIG_ASH_CMDCMD y
|
|
|
|
|
CONFIG_ASH_ECHO y
|
|
|
|
|
CONFIG_ASH_GETOPTS y
|
|
|
|
|
CONFIG_ASH_INTERNAL_GLOB y
|
|
|
|
|
CONFIG_ASH_JOB_CONTROL y
|
|
|
|
|
CONFIG_ASH_PRINTF y
|
|
|
|
|
CONFIG_ASH_TEST y
|
2024-03-08 20:51:26 +01:00
|
|
|
|
'';
|
2024-03-01 21:15:44 +01:00
|
|
|
|
};
|
2024-03-08 20:51:26 +01:00
|
|
|
|
|
2024-03-01 21:15:44 +01:00
|
|
|
|
nix = final.callPackage ./package.nix {
|
2024-06-06 23:06:07 +02:00
|
|
|
|
inherit versionSuffix officialRelease;
|
2024-03-01 21:15:44 +01:00
|
|
|
|
stdenv = currentStdenv;
|
|
|
|
|
busybox-sandbox-shell = final.busybox-sandbox-shell or final.default-busybox-sandbox-shell;
|
|
|
|
|
};
|
2024-04-06 23:44:27 +02:00
|
|
|
|
|
2024-05-08 10:00:56 +02:00
|
|
|
|
# Export the patched version of boehmgc that Lix uses into the overlay
|
2024-04-06 23:44:27 +02:00
|
|
|
|
# for consumers of this flake.
|
|
|
|
|
boehmgc-nix = final.nix.boehmgc-nix;
|
2024-05-07 22:40:18 +02:00
|
|
|
|
# And same thing for our build-release-notes package.
|
|
|
|
|
build-release-notes = final.nix.build-release-notes;
|
2020-07-22 13:51:11 +02:00
|
|
|
|
};
|
2024-04-05 01:07:44 +02:00
|
|
|
|
in
|
|
|
|
|
{
|
2021-07-08 17:01:51 +02:00
|
|
|
|
# A Nixpkgs overlay that overrides the 'nix' and
|
|
|
|
|
# 'nix.perl-bindings' packages.
|
2022-02-11 15:05:07 +01:00
|
|
|
|
overlays.default = overlayFor (p: p.stdenv);
|
2021-07-08 17:01:51 +02:00
|
|
|
|
|
2020-03-13 18:31:16 +01:00
|
|
|
|
hydraJobs = {
|
2019-10-04 10:45:33 +02:00
|
|
|
|
# Binary package for various platforms.
|
2022-03-02 03:40:18 +01:00
|
|
|
|
build = forAllSystems (system: self.packages.${system}.nix);
|
2020-07-30 21:59:57 +02:00
|
|
|
|
|
2024-04-05 01:07:44 +02:00
|
|
|
|
rl-next = forAllSystems (
|
|
|
|
|
system:
|
2024-04-06 15:25:37 +02:00
|
|
|
|
let
|
2024-04-05 01:07:44 +02:00
|
|
|
|
rl-next-check =
|
|
|
|
|
name: dir:
|
|
|
|
|
let
|
|
|
|
|
pkgs = nixpkgsFor.${system}.native;
|
|
|
|
|
in
|
|
|
|
|
pkgs.buildPackages.runCommand "test-${name}-release-notes" { } ''
|
2024-05-15 21:46:17 +02:00
|
|
|
|
LANG=C.UTF-8 ${lib.getExe pkgs.build-release-notes} --change-authors ${./doc/manual/change-authors.yml} ${dir} >$out
|
2024-04-05 01:07:44 +02:00
|
|
|
|
'';
|
2024-04-06 15:25:37 +02:00
|
|
|
|
in
|
2024-04-05 01:07:44 +02:00
|
|
|
|
{
|
|
|
|
|
user = rl-next-check "rl-next" ./doc/manual/rl-next;
|
|
|
|
|
}
|
|
|
|
|
);
|
2024-04-06 15:25:37 +02:00
|
|
|
|
|
2019-10-04 10:45:33 +02:00
|
|
|
|
# Perl bindings for various platforms.
|
2022-03-02 03:40:18 +01:00
|
|
|
|
perlBindings = forAllSystems (system: nixpkgsFor.${system}.native.nix.perl-bindings);
|
2019-10-04 10:45:33 +02:00
|
|
|
|
|
|
|
|
|
# Binary tarball for various platforms, containing a Nix store
|
2024-03-14 19:15:46 +01:00
|
|
|
|
# with the closure of 'nix' package.
|
2024-04-05 01:07:44 +02:00
|
|
|
|
binaryTarball = forAllSystems (
|
|
|
|
|
system: binaryTarball nixpkgsFor.${system}.native.nix nixpkgsFor.${system}.native
|
|
|
|
|
);
|
2022-03-02 03:40:18 +01:00
|
|
|
|
|
2024-05-14 02:05:08 +02:00
|
|
|
|
# docker image with Lix inside
|
2022-03-02 03:40:18 +01:00
|
|
|
|
dockerImage = lib.genAttrs linux64BitSystems (system: self.packages.${system}.dockerImage);
|
2021-10-31 00:22:35 +02:00
|
|
|
|
|
2023-02-13 18:37:35 +01:00
|
|
|
|
# API docs for Nix's unstable internal C++ interfaces.
|
2024-04-05 01:07:44 +02:00
|
|
|
|
internal-api-docs =
|
|
|
|
|
let
|
|
|
|
|
nixpkgs = nixpkgsFor.x86_64-linux.native;
|
|
|
|
|
inherit (nixpkgs) pkgs;
|
|
|
|
|
|
|
|
|
|
nix = pkgs.callPackage ./package.nix {
|
|
|
|
|
inherit versionSuffix officialRelease buildUnreleasedNotes;
|
|
|
|
|
inherit (pkgs) build-release-notes;
|
|
|
|
|
internalApiDocs = true;
|
|
|
|
|
busybox-sandbox-shell = pkgs.busybox-sandbox-shell;
|
|
|
|
|
};
|
|
|
|
|
in
|
2024-03-09 05:09:11 +01:00
|
|
|
|
nix.overrideAttrs (prev: {
|
|
|
|
|
# This Hydra job is just for the internal API docs.
|
|
|
|
|
# We don't need the build artifacts here.
|
|
|
|
|
dontBuild = true;
|
|
|
|
|
doCheck = false;
|
|
|
|
|
doInstallCheck = false;
|
|
|
|
|
});
|
2023-02-13 18:37:35 +01:00
|
|
|
|
|
2019-10-04 10:45:33 +02:00
|
|
|
|
# System tests.
|
2024-03-05 21:11:59 +01:00
|
|
|
|
tests = import ./tests/nixos { inherit lib nixpkgs nixpkgsFor; } // {
|
2022-02-23 15:58:09 +01:00
|
|
|
|
|
2024-03-05 21:11:59 +01:00
|
|
|
|
# Make sure that nix-env still produces the exact same result
|
|
|
|
|
# on a particular version of Nixpkgs.
|
|
|
|
|
evalNixpkgs =
|
|
|
|
|
with nixpkgsFor.x86_64-linux.native;
|
2024-04-05 01:07:44 +02:00
|
|
|
|
runCommand "eval-nixos" { buildInputs = [ nix ]; } ''
|
|
|
|
|
type -p nix-env
|
|
|
|
|
# Note: we're filtering out nixos-install-tools because https://github.com/NixOS/nixpkgs/pull/153594#issuecomment-1020530593.
|
|
|
|
|
time nix-env --store dummy:// -f ${nixpkgs-regression} -qaP --drv-path | sort | grep -v nixos-install-tools > packages
|
|
|
|
|
[[ $(sha1sum < packages | cut -c1-40) = 402242fca90874112b34718b8199d844e8b03d12 ]]
|
|
|
|
|
mkdir $out
|
|
|
|
|
'';
|
2022-01-25 00:02:48 +01:00
|
|
|
|
|
2024-04-05 01:07:44 +02:00
|
|
|
|
nixpkgsLibTests = forAllSystems (
|
|
|
|
|
system:
|
|
|
|
|
import (nixpkgs + "/lib/tests/release.nix") {
|
|
|
|
|
pkgs = nixpkgsFor.${system}.native;
|
|
|
|
|
nixVersions = [ self.packages.${system}.nix ];
|
|
|
|
|
}
|
|
|
|
|
);
|
2024-03-05 21:11:59 +01:00
|
|
|
|
};
|
2024-03-27 18:16:16 +01:00
|
|
|
|
|
2024-05-07 06:54:18 +02:00
|
|
|
|
pre-commit = forAvailableSystems (
|
2024-04-08 05:05:19 +02:00
|
|
|
|
system:
|
|
|
|
|
let
|
|
|
|
|
pkgs = nixpkgsFor.${system}.native;
|
2024-05-07 06:54:18 +02:00
|
|
|
|
pre-commit-check = import ./misc/pre-commit.nix { inherit self pkgs pre-commit-hooks; };
|
|
|
|
|
# dotnet-sdk_6, a nativeBuildInputs of pre-commit, is broken on i686-linux.
|
|
|
|
|
available = lib.meta.availableOn { inherit system; } pkgs.dotnet-sdk_6;
|
2024-04-08 05:05:19 +02:00
|
|
|
|
in
|
2024-05-07 06:54:18 +02:00
|
|
|
|
lib.optionalAttrs available pre-commit-check
|
2024-04-08 05:05:19 +02:00
|
|
|
|
);
|
2021-10-15 12:36:29 +02:00
|
|
|
|
};
|
|
|
|
|
|
2024-06-01 01:35:13 +02:00
|
|
|
|
release-jobs = import ./releng/release-jobs.nix {
|
|
|
|
|
inherit (self) hydraJobs;
|
|
|
|
|
pkgs = nixpkgsFor.x86_64-linux.native;
|
|
|
|
|
};
|
|
|
|
|
|
2024-04-06 15:25:37 +02:00
|
|
|
|
# NOTE *do not* add fresh derivations to checks, always add them to
|
|
|
|
|
# hydraJobs first (so CI will pick them up) and only link them here
|
2024-05-07 06:54:18 +02:00
|
|
|
|
checks = forAvailableSystems (
|
2024-04-05 01:07:44 +02:00
|
|
|
|
system:
|
|
|
|
|
{
|
|
|
|
|
binaryTarball = self.hydraJobs.binaryTarball.${system};
|
|
|
|
|
perlBindings = self.hydraJobs.perlBindings.${system};
|
|
|
|
|
nixpkgsLibTests = self.hydraJobs.tests.nixpkgsLibTests.${system};
|
|
|
|
|
rl-next = self.hydraJobs.rl-next.${system}.user;
|
2024-05-07 06:54:18 +02:00
|
|
|
|
# Will be empty attr set on i686-linux, and filtered out by forAvailableSystems.
|
2024-04-05 01:07:44 +02:00
|
|
|
|
pre-commit = self.hydraJobs.pre-commit.${system};
|
|
|
|
|
}
|
|
|
|
|
// (lib.optionalAttrs (builtins.elem system linux64BitSystems)) {
|
|
|
|
|
dockerImage = self.hydraJobs.dockerImage.${system};
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
packages = forAllSystems (
|
|
|
|
|
system:
|
|
|
|
|
rec {
|
|
|
|
|
inherit (nixpkgsFor.${system}.native) nix;
|
|
|
|
|
default = nix;
|
|
|
|
|
}
|
|
|
|
|
// (
|
|
|
|
|
lib.optionalAttrs (builtins.elem system linux64BitSystems) {
|
|
|
|
|
nix-static = nixpkgsFor.${system}.static.nix;
|
|
|
|
|
dockerImage =
|
|
|
|
|
let
|
|
|
|
|
pkgs = nixpkgsFor.${system}.native;
|
|
|
|
|
image = import ./docker.nix {
|
|
|
|
|
inherit pkgs;
|
2024-06-06 20:35:03 +02:00
|
|
|
|
tag = pkgs.nix.version;
|
2024-04-05 01:07:44 +02:00
|
|
|
|
};
|
|
|
|
|
in
|
2024-06-06 20:35:03 +02:00
|
|
|
|
pkgs.runCommand "docker-image-tarball-${pkgs.nix.version}"
|
2024-05-14 02:05:08 +02:00
|
|
|
|
{ meta.description = "Docker image with Lix for ${system}"; }
|
2024-04-05 01:07:44 +02:00
|
|
|
|
''
|
|
|
|
|
mkdir -p $out/nix-support
|
|
|
|
|
image=$out/image.tar.gz
|
|
|
|
|
ln -s ${image} $image
|
|
|
|
|
echo "file binary-dist $image" >> $out/nix-support/hydra-build-products
|
|
|
|
|
'';
|
|
|
|
|
}
|
|
|
|
|
// builtins.listToAttrs (
|
|
|
|
|
map (crossSystem: {
|
|
|
|
|
name = "nix-${crossSystem}";
|
|
|
|
|
value = nixpkgsFor.${system}.cross.${crossSystem}.nix;
|
|
|
|
|
}) crossSystems
|
|
|
|
|
)
|
|
|
|
|
// builtins.listToAttrs (
|
|
|
|
|
map (stdenvName: {
|
|
|
|
|
name = "nix-${stdenvName}";
|
|
|
|
|
value = nixpkgsFor.${system}.stdenvs."${stdenvName}Packages".nix;
|
|
|
|
|
}) stdenvs
|
|
|
|
|
)
|
|
|
|
|
)
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
devShells =
|
|
|
|
|
let
|
|
|
|
|
makeShell =
|
|
|
|
|
pkgs: stdenv:
|
|
|
|
|
let
|
|
|
|
|
nix = pkgs.callPackage ./package.nix {
|
2024-06-06 23:06:07 +02:00
|
|
|
|
inherit stdenv officialRelease versionSuffix;
|
2024-04-05 01:07:44 +02:00
|
|
|
|
busybox-sandbox-shell = pkgs.busybox-sandbox-shell or pkgs.default-busybox-sandbox;
|
2024-05-07 23:25:08 +02:00
|
|
|
|
internalApiDocs = true;
|
2024-04-05 01:07:44 +02:00
|
|
|
|
};
|
|
|
|
|
pre-commit = self.hydraJobs.pre-commit.${pkgs.system} or { };
|
|
|
|
|
in
|
2024-05-07 23:25:08 +02:00
|
|
|
|
pkgs.callPackage nix.mkDevShell {
|
|
|
|
|
pre-commit-checks = pre-commit;
|
|
|
|
|
inherit contribNotice;
|
|
|
|
|
};
|
2022-03-02 03:40:18 +01:00
|
|
|
|
in
|
2024-04-05 01:07:44 +02:00
|
|
|
|
forAllSystems (
|
|
|
|
|
system:
|
2022-03-02 03:40:18 +01:00
|
|
|
|
let
|
2024-04-05 01:07:44 +02:00
|
|
|
|
makeShells =
|
|
|
|
|
prefix: pkgs:
|
|
|
|
|
lib.mapAttrs' (k: v: lib.nameValuePair "${prefix}-${k}" v) (
|
|
|
|
|
forAllStdenvs (stdenvName: makeShell pkgs pkgs.${stdenvName})
|
|
|
|
|
);
|
2022-03-02 03:40:18 +01:00
|
|
|
|
in
|
2024-04-05 01:07:44 +02:00
|
|
|
|
(makeShells "native" nixpkgsFor.${system}.native)
|
|
|
|
|
// (makeShells "static" nixpkgsFor.${system}.static)
|
|
|
|
|
// (forAllCrossSystems (
|
|
|
|
|
crossSystem:
|
|
|
|
|
let
|
|
|
|
|
pkgs = nixpkgsFor.${system}.cross.${crossSystem};
|
|
|
|
|
in
|
|
|
|
|
makeShell pkgs pkgs.stdenv
|
|
|
|
|
))
|
|
|
|
|
// {
|
|
|
|
|
default = self.devShells.${system}.native-stdenvPackages;
|
|
|
|
|
}
|
2022-03-02 03:40:18 +01:00
|
|
|
|
);
|
2024-04-05 01:07:44 +02:00
|
|
|
|
};
|
2019-04-08 17:28:05 +02:00
|
|
|
|
}
|