-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathflake.nix
113 lines (105 loc) · 2.84 KB
/
flake.nix
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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
{
description = "ZenQy's nixos configuration";
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
secrets = {
# url = "/home/nixos/Documents/nixos-secrets";
url = "git+ssh://[email protected]/zenqy/nixos-secrets";
flake = false;
};
impermanence.url = "github:nix-community/impermanence";
};
outputs =
{
self,
nixpkgs,
secrets,
impermanence,
}:
with builtins;
let
this = import ./pkgs;
systems = [
"x86_64-linux"
"aarch64-linux"
];
forAllSystems = f: nixpkgs.lib.genAttrs systems (system: f system);
in
{
overlays.default =
final: prev: (nixpkgs.lib.composeExtensions this.overlay (import ./pkgs/override.nix) final prev);
packages = forAllSystems (
system:
let
pkgs = import nixpkgs {
inherit system;
overlays = [ self.overlays.default ];
config.allowUnfree = true;
config.allowUnsupportedSystem = true;
};
in
removeAttrs (this.packages pkgs) (this.exclude (filter (s: s != system) systems))
);
apps = forAllSystems (
system:
let
pkgs = import nixpkgs { inherit system; };
home = import ./modules/desktop/home {
inherit pkgs;
lib = nixpkgs.lib;
};
in
{
default = {
type = "app";
program = "${home.gen}";
};
}
);
nixosConfigurations =
let
category = filter (x: x != "deprecated") (attrNames (readDir ./hosts));
hosts = cate: attrNames (readDir ./hosts/${cate});
value =
cate: host:
let
system =
if
elem host [
"osaka-arm"
"tx3"
"rock-5b"
]
then
"aarch64-linux"
else
"x86_64-linux";
in
nixpkgs.lib.nixosSystem {
inherit system;
specialArgs = {
secrets = import (secrets + "/secrets.nix");
};
modules = [
./hosts/${cate}/${host}
(import ./modules cate)
(if cate == "desktop" then (impermanence.nixosModule) else { })
{
nixpkgs.overlays = [ self.overlays.default ];
nix.nixPath = [ "nixpkgs=${nixpkgs}" ];
networking.hostName = host;
}
];
};
in
listToAttrs (
concatMap (
cate:
map (host: {
name = host;
value = value cate host;
}) (hosts cate)
) category
);
};
}