This repository was archived by the owner on Sep 27, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathflake.nix
More file actions
83 lines (76 loc) · 2.71 KB
/
flake.nix
File metadata and controls
83 lines (76 loc) · 2.71 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
{
description = "The easy to use mobile and desktop operating system from Midstall Software";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
nixos-hardware.url = "github:NixOS/nixos-hardware";
nixos-mobile = {
url = "github:RossComputerGuy/mobile-nixos/fix/impure";
flake = false;
};
nixos-apple-silicon = {
url = "github:tpwrules/nixos-apple-silicon/1b16e4290a5e4a59c75ef53617d597e02078791e";
inputs.nixpkgs.follows = "nixpkgs";
};
flake-utils.url = "github:numtide/flake-utils";
};
outputs = {
self,
nixpkgs,
nixos-hardware,
nixos-mobile,
nixos-apple-silicon,
flake-utils,
...
}@inputs:
let
lib = nixpkgs.lib.extend (final: prev: {
expidus = import ./lib inputs final;
});
overlays = rec {
crosspkgs = final: prev: {
pkgsCross = prev.lib.filterAttrs
(name: pkgsCross:
pkgsCross.targetPlatform.parsed.kernel.name == prev.targetPlatform.parsed.kernel.name
&& prev.lib.meta.availableOn pkgsCross.targetPlatform pkgsCross.flutter
&& !pkgsCross.targetPlatform.isAndroid)
prev.pkgsCross;
};
default = import ./pkgs/overlay.nix;
};
nixosModules = {
default = { ... }:
{
imports = import ./modules inputs;
};
};
in {
inherit overlays nixosModules;
lib = lib.expidus;
nixosConfigurations = lib.expidus.genNixOSConfigurations self.expidusConfigurations;
} // flake-utils.lib.eachDefaultSystem (system:
let
pkgs = (nixpkgs.legacyPackages.${system}.appendOverlays (builtins.attrValues overlays)).extend (final: prev: rec {
lib = prev.lib.extend (f: p: {
expidus = import ./lib inputs f;
});
isAsahi = prev.targetPlatform.isAarch64 && prev.stdenv.isLinux;
pkgsAsahi = if isAsahi then prev.appendOverlays [
nixos-apple-silicon.overlays.default
(f: p: {
mesa = p.mesa-asahi-edge;
})
] else null;
});
in {
legacyPackages = pkgs;
packages = let
cleanSet = set: builtins.removeAttrs set [ "override" "overrideDerivation" "recurseForDerivations" ];
genSet = pkgsName: pkgSet:
lib.listToAttrs (builtins.attrValues (lib.mapAttrs (pkgName: lib.nameValuePair "${pkgsName}-${pkgName}") pkgSet));
base = cleanSet pkgs.expidus;
llvm = genSet "llvm" (cleanSet pkgs.pkgsLLVM.expidus);
in base // llvm;
} // (lib.optionalAttrs (pkgs.hostPlatform.isLinux) {
expidusConfigurations = lib.expidus.genExpidusConfigurations pkgs;
}));
}