Something went wrong. Try again.
What happens if I push all of nixpkgs
Something went wrong. Try again.
Nix
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648with import ../lib;
{ nixpkgs ? { outPath = cleanSource ./..; revCount = 708350; shortRev = "gfedcba"; }, stableBranch ? false, supportedSystems ? [ "x86_64-linux" "aarch64-linux" ], configuration ? { },}:
with import ../pkgs/top-level/release-lib.nix { inherit supportedSystems; };
let
version = fileContents ../.version; versionSuffix = (if stableBranch then "." else "pre") + "${toString nixpkgs.revCount}.${nixpkgs.shortRev}";
# Run the tests for each platform. You can run a test by doing # e.g. ‘nix-build release.nix -A tests.login.x86_64-linux’, # or equivalently, ‘nix-build tests/login.nix’. # See also nixosTests in pkgs/top-level/all-packages.nix allTestsForSystem = system: import ./tests/all-tests.nix { inherit system; pkgs = import ./.. { inherit system; }; callTest = config: { ${system} = hydraJob config.test; }; } // { # for typechecking of the scripts and evaluation of # the nodes, without running VMs. allDrivers = import ./tests/all-tests.nix { inherit system; pkgs = import ./.. { inherit system; }; callTest = config: { ${system} = hydraJob config.driver; }; }; };
allTests = foldAttrs recursiveUpdate { } (map allTestsForSystem supportedSystems);
pkgs = import ./.. { system = "x86_64-linux"; };
versionModule = { config, ... }: { system.nixos.versionSuffix = versionSuffix; system.nixos.revision = nixpkgs.rev or nixpkgs.shortRev;
# At creation time we do not have state yet, so just default to latest. system.stateVersion = config.system.nixos.release; };
makeModules = module: rest: [ configuration versionModule module rest ];
makeIso = { module, type, system, ... }:
with import ./.. { inherit system; };
hydraJob ( (import lib/eval-config.nix { inherit system; modules = makeModules module { }; }).config.system.build.isoImage );
makeSdImage = { module, system, ... }:
with import ./.. { inherit system; };
hydraJob ( (import lib/eval-config.nix { inherit system; modules = makeModules module { }; }).config.system.build.sdImage );
makeSystemTarball = { module, maintainers ? [ "viric" ], system, }:
with import ./.. { inherit system; };
let
config = (import lib/eval-config.nix { inherit system; modules = makeModules module { }; }).config;
tarball = config.system.build.tarball;
in tarball // { meta = { description = "NixOS system tarball for ${system} - ${stdenv.hostPlatform.linux-kernel.name}"; maintainers = map (x: lib.maintainers.${x}) maintainers; }; inherit config; };
makeClosure = module: buildFromConfig module (config: config.system.build.toplevel);
buildFromConfig = module: sel: forAllSystems ( system: hydraJob ( sel (import ./lib/eval-config.nix { inherit system; modules = makeModules module ( { ... }: { fileSystems."/".device = mkDefault "/dev/sda1"; boot.loader.grub.device = mkDefault "/dev/sda"; } ); }).config ) );
makeNetboot = { module, system, ... }: let configEvaled = import lib/eval-config.nix { inherit system; modules = makeModules module { }; }; build = configEvaled.config.system.build; kernelTarget = configEvaled.pkgs.stdenv.hostPlatform.linux-kernel.target; in configEvaled.pkgs.symlinkJoin { name = "netboot"; paths = [ build.netbootRamdisk build.kernel build.netbootIpxeScript ]; postBuild = '' mkdir -p $out/nix-support echo "file ${kernelTarget} ${build.kernel}/${kernelTarget}" >> $out/nix-support/hydra-build-products echo "file initrd ${build.netbootRamdisk}/initrd" >> $out/nix-support/hydra-build-products echo "file ipxe ${build.netbootIpxeScript}/netboot.ipxe" >> $out/nix-support/hydra-build-products ''; preferLocalBuild = true; };
inrec {
channel = import lib/make-channel.nix { inherit pkgs nixpkgs version versionSuffix ; };
manualHTML = buildFromConfig ({ ... }: { }) (config: config.system.build.manual.manualHTML); manual = manualHTML; # TODO(@oxij): remove eventually manualEpub = (buildFromConfig ({ ... }: { }) (config: config.system.build.manual.manualEpub)); nixos-configuration-reference-manpage = buildFromConfig ({ ... }: { }) ( config: config.system.build.manual.nixos-configuration-reference-manpage ); options = (buildFromConfig ({ ... }: { }) (config: config.system.build.manual.optionsJSON)).x86_64-linux;
# Build the initial ramdisk so Hydra can keep track of its size over time. initialRamdisk = buildFromConfig ({ ... }: { }) (config: config.system.build.initialRamdisk);
kexec = forMatchingSystems supportedSystems ( system: (import lib/eval-config.nix { inherit system; modules = [ ./modules/installer/netboot/netboot-minimal.nix ]; }).config.system.build.kexecTree );
netboot = forMatchingSystems supportedSystems ( system: makeNetboot { module = ./modules/installer/netboot/netboot-minimal.nix; inherit system; } );
iso_minimal = forAllSystems ( system: makeIso { module = ./modules/installer/cd-dvd/installation-cd-minimal-combined.nix; type = "minimal"; inherit system; } );
iso_graphical = forAllSystems ( system: makeIso { module = ./modules/installer/cd-dvd/installation-cd-graphical-combined.nix; type = "graphical"; inherit system; } );
sd_image = forMatchingSystems [ "armv6l-linux" "armv7l-linux" "aarch64-linux" ] ( system: makeSdImage { module = { armv6l-linux = ./modules/installer/sd-card/sd-image-raspberrypi-installer.nix; armv7l-linux = ./modules/installer/sd-card/sd-image-armv7l-multiplatform-installer.nix; aarch64-linux = ./modules/installer/sd-card/sd-image-aarch64-installer.nix; } .${system}; inherit system; } );
sd_image_new_kernel = forMatchingSystems [ "aarch64-linux" ] ( system: makeSdImage { module = { aarch64-linux = ./modules/installer/sd-card/sd-image-aarch64-new-kernel-installer.nix; } .${system}; type = "minimal-new-kernel"; inherit system; } );
sd_image_new_kernel_no_zfs = forMatchingSystems [ "aarch64-linux" ] ( system: makeSdImage { module = { aarch64-linux = ./modules/installer/sd-card/sd-image-aarch64-new-kernel-no-zfs-installer.nix; } .${system}; type = "minimal-new-kernel-no-zfs"; inherit system; } );
# KVM image for proxmox in VMA format proxmoxImage = forMatchingSystems [ "x86_64-linux" ] ( system: with import ./.. { inherit system; };
hydraJob ( (import lib/eval-config.nix { inherit system; modules = [ ./modules/virtualisation/proxmox-image.nix ]; }).config.system.build.VMA ) );
# LXC tarball for proxmox proxmoxLXC = forMatchingSystems [ "x86_64-linux" ] ( system: with import ./.. { inherit system; };
hydraJob ( (import lib/eval-config.nix { inherit system; modules = [ ./modules/virtualisation/proxmox-lxc.nix ]; }).config.system.build.tarball ) );
# A disk image that can be imported to Amazon EC2 and registered as an AMI amazonImage = forMatchingSystems [ "x86_64-linux" "aarch64-linux" ] ( system:
with import ./.. { inherit system; };
hydraJob ( (import lib/eval-config.nix { inherit system; modules = [ configuration versionModule ./maintainers/scripts/ec2/amazon-image.nix ]; }).config.system.build.amazonImage )
); amazonImageZfs = forMatchingSystems [ "x86_64-linux" "aarch64-linux" ] ( system:
with import ./.. { inherit system; };
hydraJob ( (import lib/eval-config.nix { inherit system; modules = [ configuration versionModule ./maintainers/scripts/ec2/amazon-image-zfs.nix ]; }).config.system.build.amazonImage )
);
# An image that can be imported into incus and used for container creation incusContainerImage = forMatchingSystems [ "x86_64-linux" "aarch64-linux" ] ( system: with import ./.. { inherit system; };
hydraJob ( (import lib/eval-config.nix { inherit system; modules = [ configuration versionModule ./maintainers/scripts/incus/incus-container-image.nix ]; }).config.system.build.squashfs ) );
# Metadata for the incus image incusContainerMeta = forMatchingSystems [ "x86_64-linux" "aarch64-linux" ] ( system:
with import ./.. { inherit system; };
hydraJob ( (import lib/eval-config.nix { inherit system; modules = [ configuration versionModule ./maintainers/scripts/incus/incus-container-image.nix ]; }).config.system.build.metadata ) );
# An image that can be imported into incus and used for container creation incusVirtualMachineImage = forMatchingSystems [ "x86_64-linux" "aarch64-linux" ] ( system:
with import ./.. { inherit system; };
hydraJob ( (import lib/eval-config.nix { inherit system; modules = [ configuration versionModule ./maintainers/scripts/incus/incus-virtual-machine-image.nix ]; }).config.system.build.qemuImage ) );
# Metadata for the incus image incusVirtualMachineImageMeta = forMatchingSystems [ "x86_64-linux" "aarch64-linux" ] ( system:
with import ./.. { inherit system; };
hydraJob ( (import lib/eval-config.nix { inherit system; modules = [ configuration versionModule ./maintainers/scripts/incus/incus-virtual-machine-image.nix ]; }).config.system.build.metadata ) );
# An image that can be imported into lxd and used for container creation lxdContainerImage = forMatchingSystems [ "x86_64-linux" "aarch64-linux" ] ( system:
with import ./.. { inherit system; };
hydraJob ( (import lib/eval-config.nix { inherit system; modules = [ configuration versionModule ./maintainers/scripts/lxd/lxd-container-image.nix ]; }).config.system.build.tarball )
);
lxdContainerImageSquashfs = forMatchingSystems [ "x86_64-linux" "aarch64-linux" ] ( system:
with import ./.. { inherit system; };
hydraJob ( (import lib/eval-config.nix { inherit system; modules = [ configuration versionModule ./maintainers/scripts/lxd/lxd-container-image.nix ]; }).config.system.build.squashfs )
);
# Metadata for the lxd image lxdContainerMeta = forMatchingSystems [ "x86_64-linux" "aarch64-linux" ] ( system:
with import ./.. { inherit system; };
hydraJob ( (import lib/eval-config.nix { inherit system; modules = [ configuration versionModule ./maintainers/scripts/lxd/lxd-container-image.nix ]; }).config.system.build.metadata )
);
# An image that can be imported into lxd and used for container creation lxdVirtualMachineImage = forMatchingSystems [ "x86_64-linux" "aarch64-linux" ] ( system:
with import ./.. { inherit system; };
hydraJob ( (import lib/eval-config.nix { inherit system; modules = [ configuration versionModule ./maintainers/scripts/lxd/lxd-virtual-machine-image.nix ]; }).config.system.build.qemuImage )
);
# Metadata for the lxd image lxdVirtualMachineImageMeta = forMatchingSystems [ "x86_64-linux" "aarch64-linux" ] ( system:
with import ./.. { inherit system; };
hydraJob ( (import lib/eval-config.nix { inherit system; modules = [ configuration versionModule ./maintainers/scripts/lxd/lxd-virtual-machine-image.nix ]; }).config.system.build.metadata )
);
# Ensure that all packages used by the minimal NixOS config end up in the channel. dummy = forAllSystems ( system: pkgs.runCommand "dummy" { toplevel = (import lib/eval-config.nix { inherit system; modules = singleton ( { ... }: { fileSystems."/".device = mkDefault "/dev/sda1"; boot.loader.grub.device = mkDefault "/dev/sda"; system.stateVersion = mkDefault lib.trivial.release; } ); }).config.system.build.toplevel; preferLocalBuild = true; } "mkdir $out; ln -s $toplevel $out/dummy" );
# Provide container tarball for lxc, libvirt-lxc, docker-lxc, ... containerTarball = forAllSystems ( system: makeSystemTarball { module = ./modules/virtualisation/lxc-container.nix; inherit system; } );
tests = allTests;
/* Build a bunch of typical closures so that Hydra can keep track of the evolution of closure sizes. */
closures = {
smallContainer = makeClosure ( { ... }: { boot.isContainer = true; services.openssh.enable = true; } );
tinyContainer = makeClosure ( { ... }: { boot.isContainer = true; imports = [ modules/profiles/minimal.nix ]; } );
ec2 = makeClosure ( { ... }: { imports = [ modules/virtualisation/amazon-image.nix ]; } );
kde = makeClosure ( { ... }: { services.xserver.enable = true; services.displayManager.sddm.enable = true; services.xserver.desktopManager.plasma5.enable = true; } );
xfce = makeClosure ( { ... }: { services.xserver.enable = true; services.xserver.desktopManager.xfce.enable = true; } );
gnome = makeClosure ( { ... }: { services.xserver.enable = true; services.displayManager.gdm.enable = true; services.desktopManager.gnome.enable = true; } );
pantheon = makeClosure ( { ... }: { services.xserver.enable = true; services.xserver.desktopManager.pantheon.enable = true; } );
deepin = makeClosure ( { ... }: { services.xserver.enable = true; services.xserver.displayManager.lightdm.enable = true; services.xserver.desktopManager.deepin.enable = true; } );
# Linux/Apache/PostgreSQL/PHP stack. lapp = makeClosure ( { pkgs, ... }: { services.httpd.enable = true; services.httpd.adminAddr = "foo@example.org"; services.httpd.enablePHP = true; services.postgresql.enable = true; services.postgresql.package = pkgs.postgresql; } ); };}