-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathflake.nix
65 lines (56 loc) · 2 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
{
description = "json-to-elm-test-values";
inputs = {
nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable";
flake-utils.url = "github:numtide/flake-utils";
};
outputs = { self, nixpkgs, flake-utils }:
let supportedSystems = with flake-utils.lib.system; [ x86_64-linux ];
in flake-utils.lib.eachSystem supportedSystems (system:
let
pkgs = nixpkgs.legacyPackages.${system};
inherit (pkgs) lib stdenv callPackage;
inherit (lib) fileset hasInfix hasSuffix;
toSource = fsets:
fileset.toSource {
root = ./.;
fileset = fileset.unions fsets;
};
# The build cache will be invalidated if any of the files within change.
# So, exclude files from here unless they're necessary for `elm make` et al.
minimalElmSrc = toSource [
(fileset.fileFilter (file: file.hasExt "elm") ./src)
./dist
./elm.json
./nix/elm/registry.dat
];
failIfDepsOutOfSync =
callPackage ./nix/failIfDepsOutOfSync.nix { inherit minimalElmSrc; };
elm2nix = callPackage ./nix/default.nix { inherit minimalElmSrc; };
built = callPackage ./nix/built.nix { inherit elm2nix minimalElmSrc; };
peekSrc = name: src:
stdenv.mkDerivation {
src = src;
name = "peekSource-${name}";
buildPhase = "mkdir -p $out";
installPhase = "cp -r ./* $out";
};
in {
packages = {
inherit built;
default = built;
rawElm2Nix = elm2nix;
minimalElmSrc = peekSrc "minimal-elm" minimalElmSrc;
};
checks = { inherit built failIfDepsOutOfSync; };
devShells.default = callPackage ./nix/shell.nix { };
apps.default = {
type = "app";
program = "${pkgs.writeScript "j2etvApp" ''
#!${pkgs.bash}/bin/bash
xdg-open ${built}/index.html
''}";
};
packages = { };
});
}