-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathflake.nix
103 lines (84 loc) · 2.41 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
{
description = "Personal NixOS configuration";
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
nixos-hardware.url = "github:NixOS/nixos-hardware/master";
flake-utils.url = "github:numtide/flake-utils";
home-manager.url = "github:nix-community/home-manager/master";
home-manager.inputs.nixpkgs.follows = "nixpkgs";
nixvim.url = "github:nix-community/nixvim/main";
nixvim.inputs.nixpkgs.follows = "nixpkgs";
stylix.url = "github:danth/stylix";
stylix.inputs.nixpkgs.follows = "nixpkgs";
apple-fonts.url = "github:ostmarco/apple-fonts.nix";
};
outputs = inputs @ {
self,
nixpkgs,
flake-utils,
home-manager,
nixvim,
stylix,
apple-fonts,
...
}: let
systems = with flake-utils.lib.system; [
aarch64-darwin
x86_64-darwin
x86_64-linux
];
systemsFlakes = flake-utils.lib.eachSystem systems (system: let
inherit (lib.extra) mapModulesRec';
overlays = [
(import overlays/electron.nix)
(import overlays/postman.nix)
];
lib = pkgs.lib.extend (self: super: {
extra = import ./lib {
inherit inputs;
pkgs = nixpkgs.legacyPackages.${system};
lib = self;
};
});
pkgs = import nixpkgs {
inherit system;
config.allowUnfree = true;
config.permittedInsecurePackages = ["electron-25.9.0" "openssl-1.1.1w"];
overlays =
overlays
++ [
(final: prev: apple-fonts.packages.${system})
];
};
mkHost = path: let
inherit (builtins) baseNameOf;
inherit (lib) mkDefault removeSuffix;
in
nixpkgs.lib.nixosSystem {
inherit system;
specialArgs = {inherit pkgs lib inputs system;};
modules =
[
{
nixpkgs.pkgs = pkgs;
networking.hostName = mkDefault (removeSuffix ".nix" (baseNameOf path));
}
home-manager.nixosModule
nixvim.nixosModules.nixvim
stylix.nixosModules.stylix
(import path)
]
++ mapModulesRec' ./modules import;
};
in {
nixosConfigurations = {
red = mkHost ./hosts/red;
};
});
system = "x86_64-linux";
in
systemsFlakes
// {
nixosConfigurations = systemsFlakes.nixosConfigurations.${system};
};
}