-
Notifications
You must be signed in to change notification settings - Fork 0
/
flake.nix
145 lines (139 loc) · 4.16 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
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
{
inputs = {
devshell = {
url = "github:numtide/devshell";
flake = false;
};
flake-parts.url = "github:hercules-ci/flake-parts";
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
pre-commit-hooks = {
url = "github:cachix/pre-commit-hooks.nix";
inputs.nixpkgs-stable.follows = "nixpkgs";
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs = {
flake-parts,
nixpkgs,
pre-commit-hooks,
self,
...
} @ inp: let
inputs = inp;
perSystem = {
pkgs,
system,
...
}: {
# Handy devshell for working with this flake
devShells = let
# Import the devshell module as module rather than a flake input
makeDevshell = import "${inp.devshell}/modules" pkgs;
mkShell = config:
(makeDevshell {
configuration = {
inherit config;
imports = [];
};
})
.shell;
in rec {
default = chaotic-shell;
chaotic-shell = mkShell {
devshell.name = "chaotic-devshell";
commands = [
{
category = "chaotic-manager";
command = ''
tsc-watch --onSuccess 'node --env-file=.env dist/index.js database --web-port 8080'
'';
help = "Starts the manager instance with watching file changes";
name = "start-dev-manager";
}
{
category = "chaotic-manager";
command = ''
tsc-watch --onSuccess 'node --env-file=.env dist/index.js builder'
'';
help = "Starts the builder instance with watching file changes";
name = "start-dev-builder";
}
{
category = "chaotic-manager";
command = ''
tsc && node dist/index.js
'';
help = "Starts the development environment";
name = "start";
}
{package = "biome";}
{package = "commitizen";}
{package = "corepack";}
{package = "docker-compose";}
{package = "jq";}
{package = "nodejs_22";}
{package = "pre-commit";}
{package = "psmisc";}
{package = "redis";}
];
devshell.startup.preCommitHooks.text = ''
${self.checks.${system}.pre-commit-check.shellHook}
killall -9 redis-server 2> /dev/null || true
rm -f dump.rdb
redis-server --daemonize yes
redis-cli ping
trap "redis-cli shutdown" EXIT
'';
env = [
{
name = "NIX_PATH";
value = "${nixpkgs}";
}
{
name = "NODE_PATH";
value = "${self.packages.${system}.node-modules}";
}
];
};
};
# By default, alejandra is WAY to verbose
formatter = pkgs.writeShellScriptBin "alejandra" ''
exec ${pkgs.alejandra}/bin/alejandra --quiet "$@"
'';
# Pre-commit hooks are set up automatically via nix-shell / nix develop
checks.pre-commit-check = pre-commit-hooks.lib.${system}.run {
hooks = {
alejandra-quiet = {
description = "Run Alejandra in quiet mode";
enable = true;
entry = ''
${pkgs.alejandra}/bin/alejandra --quiet
'';
files = "\\.nix$";
name = "alejandra";
};
commitizen.enable = true;
check-json.enable = true;
check-yaml.enable = true;
flake-checker.enable = true;
prettier.enable = true;
yamllint.enable = true;
statix.enable = true;
};
src = ./.;
};
};
in
flake-parts.lib.mkFlake {inherit inputs;} {
# Imports flake-modules
imports = [
./nix/nixos-module.nix
./nix/package-module.nix
inputs.pre-commit-hooks.flakeModule
];
# The systems currently available
systems = ["x86_64-linux" "aarch64-linux"];
# This applies to all systems
inherit perSystem;
};
}