-
Notifications
You must be signed in to change notification settings - Fork 4
/
flake.nix
77 lines (75 loc) · 2.26 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
{
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable";
rust-overlay = {
url = "github:oxalica/rust-overlay";
inputs.nixpkgs.follows = "nixpkgs";
};
crane-flake.url = "github:ipetkov/crane";
# Precisely filter files copied to the nix store
nix-filter-flake.url = "github:numtide/nix-filter";
};
outputs = { self, nixpkgs, nix-filter-flake, rust-overlay, crane-flake }:
let
system = "x86_64-linux";
pkgs = import nixpkgs { inherit system; overlays = [ (import rust-overlay) ]; };
crane = crane-flake.mkLib pkgs;
nix-filter = nix-filter-flake.lib;
rust-toolchain = pkgs.rust-bin.stable.latest.default.override {
extensions = [ "rust-src" ];
targets = [ "wasm32-unknown-unknown" ];
};
kast =
let
commonArgs = {
src = nix-filter {
root = ./.;
include = [
"src"
"Cargo.toml"
"Cargo.lock"
];
};
};
cargoArtifacts = crane.buildDepsOnly commonArgs;
in
crane.buildPackage (commonArgs // {
inherit cargoArtifacts;
buildInputs = [
pkgs.makeWrapper
];
postFixup = ''
wrapProgram $out/bin/kast --set KAST_STD ${./std}
'';
});
in
{
packages.${system} = {
default = kast;
};
devShells.${system} = {
default = pkgs.mkShell {
packages = with pkgs; [
rust-toolchain
rust-analyzer
just
zola
screen
caddy
];
shellHook = ''
echo Hello from Kast devshell
mkdir -p .flock
mkdir -p .logs
echo "These services should now be running (you can check with screen -ls):"
screen -L -Logfile .logs/zola -S zola -dm \
flock --conflict-exit-code 0 --nonblock .flock/zola \
bash -c "cd website && zola serve"
echo " zola: serving the website at http://127.0.0.1:1111"
'';
};
};
formatter.${system} = pkgs.nixpkgs-fmt;
checks.${system} = import ./checks { inherit system pkgs kast self; };
};
}