forked from qmk/qmk_firmware
/
flake.nix
46 lines (44 loc) · 1.43 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
{
description = "Flake for building qmk firmware";
outputs = { self, nixpkgs, flake-utils }:
flake-utils.lib.eachDefaultSystem (system:
let
pkgs = import nixpkgs { inherit system; };
# change to your liking
keyboard = "moonlander";
keymap = "ryan";
in
{
# build with `nix build '.?submodules=1'`
packages.default = pkgs.stdenv.mkDerivation {
name = "keymap";
src = ./.;
phases = [ "buildPhase" ];
buildInputs = [ pkgs.qmk ];
buildPhase = ''
make -C $src BUILD_DIR=`pwd`/.build COPY=echo -j8 moonlander:ryan
mkdir $out
cp -r .build/* $out/
'';
};
# Get a devshell with `nix develop` and then use `build` and `flash`.
# Build dir is taken as a param of `build` and `flash`,
# e.g. to flash with the output of `nix build '.?submodules=1'` do `flash result`.
devShell = pkgs.mkShell {
KEYBOARD = keyboard;
KEYMAP = keymap;
buildInputs = [ pkgs.qmk ];
shellHook = ''
build() {
BUILD_DIR=''${1:-.build}
make -C . BUILD_DIR=$BUILD_DIR COPY=echo -j8 $KEYBOARD:$KEYMAP
}
flash() {
BUILD_DIR=''${1:-.build}
make -C . BUILD_DIR=$BUILD_DIR COPY=echo -j8 $KEYBOARD:$KEYMAP:flash
}
'';
};
}
);
}