-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathflake.nix
64 lines (58 loc) · 1.89 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
{
description = "Nix library for creating scalable NixOS and Home Manager configurations with modules, hosts, and rices.";
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
home-manager = {
url = "github:nix-community/home-manager/master";
inputs.nixpkgs.follows = "nixpkgs";
};
pre-commit-hooks = {
url = "github:cachix/git-hooks.nix";
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs = {
self,
nixpkgs,
home-manager,
pre-commit-hooks,
...
}: let
supportedSystems = ["x86_64-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin"];
forAllSystems = nixpkgs.lib.genAttrs supportedSystems;
in {
lib = import ./lib {
inherit (nixpkgs) lib;
inherit home-manager;
inherit nixpkgs;
};
templates = {
minimal = {
description = ''
Minimal configuration with hosts, rices, constants, home manager, and user config.
It is not recommended to use if this is your first time or if you haven't read or don't plan to read the documentation.
'';
path = ./templates/minimal;
};
minimal-no-rices = {
description = ''
Minimal configuration with hosts, constants, home manager, and user config.
It is not recommended to use if this is your first time or if you haven't read or don't plan to read the documentation.
'';
path = ./templates/minimal-no-rices;
};
};
checks = forAllSystems (system: {
pre-commit-check = pre-commit-hooks.lib.${system}.run {
src = ./.;
hooks.alejandra.enable = true;
};
});
devShells = forAllSystems (system: {
default = nixpkgs.legacyPackages.${system}.mkShell {
inherit (self.checks.${system}.pre-commit-check) shellHook;
buildInputs = self.checks.${system}.pre-commit-check.enabledPackages;
};
});
};
}