1# Experimental flake interface to Nixpkgs.
2# See https://github.com/NixOS/rfcs/pull/49 for details.
3{
4 description = "A collection of packages for the Nix package manager";
5
6 outputs = { self }:
7 let
8
9 jobs = import ./pkgs/top-level/release.nix {
10 nixpkgs = self;
11 };
12
13 lib = import ./lib;
14
15 systems = [
16 "x86_64-linux"
17 "i686-linux"
18 "x86_64-darwin"
19 "aarch64-linux"
20 "armv6l-linux"
21 "armv7l-linux"
22 ];
23
24 forAllSystems = f: lib.genAttrs systems (system: f system);
25
26 in
27 {
28 lib = lib.extend (final: prev: {
29 nixosSystem = { modules, ... } @ args:
30 import ./nixos/lib/eval-config.nix (args // {
31 modules = modules ++
32 [ { system.nixos.versionSuffix =
33 ".${final.substring 0 8 (self.lastModifiedDate or self.lastModified)}.${self.shortRev or "dirty"}";
34 system.nixos.revision = final.mkIf (self ? rev) self.rev;
35 }
36 ];
37 });
38 });
39
40 checks.x86_64-linux.tarball = jobs.tarball;
41
42 htmlDocs = {
43 nixpkgsManual = jobs.manual;
44 nixosManual = (import ./nixos/release-small.nix {
45 nixpkgs = self;
46 }).nixos.manual.x86_64-linux;
47 };
48
49 legacyPackages = forAllSystems (system: import ./. { inherit system; });
50
51 nixosModules = {
52 notDetected = import ./nixos/modules/installer/scan/not-detected.nix;
53 };
54 };
55}