about summary refs log tree commit diff
path: root/users/flokli/keyboards/corneish_zen/default.nix
blob: f570fc0bc00366c461b98ba1b15448de3b2077f5 (plain) (blame)
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
{ pkgs, lib, ... }:
let
  zmk-nix = pkgs.fetchFromGitHub {
    owner = "lilyinstarlight";
    repo = "zmk-nix";
    rev = "d72e94ab94b2bceb60a29a2a8c2e1d304a4e922e";
    hash = "sha256-3WXPPBJ2u8rMxejPhUahSiqOBr1BOfTgDa7oQDPtw54=";
  };

  builders = pkgs.callPackage (import (zmk-nix + "/nix/builders.nix")) { };

  miryoku_zmk = pkgs.fetchFromGitHub {
    owner = "manna-harbour";
    repo = "miryoku_zmk";
    rev = "e6683e9f8b6c199b339208b1b501e88a7308ed48";
    hash = "sha256-GjTbAoyhr557Tn4JaWsA3Po5KxMsQXrpKc9H+PU3T8A=";
  };

  miryoku_zmk_patched = pkgs.runCommand "miryoku_zmk_patched" { } ''
    mkdir -p $out
    cp -r ${miryoku_zmk}/. $out/
    cd $out
    chmod -R +w $out
    patch -p1 < ${./0001-miryoku_layer_alternatives.h-expose-alt-gr-on-G-and-.patch}
    patch -p1 < ${./0001-miryoku_behaviors-add-quick-tap-ms-require-prior-idl.patch}
  '';

in

rec {
  config = pkgs.runCommand "config" { } ''
    mkdir -p $out/config
    cp -r ${miryoku_zmk_patched}/miryoku $out/
    cp ${./west.yml} $out/config/west.yml
    cp ${miryoku_zmk_patched}/config/corneish_zen.keymap $out/config/
  '';

  # helpful for debugging the resulting keymap
  config-flat = pkgs.runCommand "config-flat"
    {
      nativeBuildInputs = [ pkgs.python3.pkgs.pcpp ];
    } ''
    mkdir -p $out/config
    cp ${./west.yml} $out/config/west.yml
    pcpp --passthru-unfound-includes -o $out/config/corneish_zen.keymap ${miryoku_zmk_patched}/config/corneish_zen.keymap
  '';

  firmware = builders.buildSplitKeyboard {
    name = "corneish_zen_v1";
    board = "corneish_zen_v1_%PART%";
    zephyrDepsHash = "sha256-D5CAlrO/E6DPbtUJyh/ec8ACpo1XM1jx2gLS2TpklBQ=";
    src = config;
  };

  flash-left = pkgs.writeShellScript "flash.sh" ''
    cp ${firmware}/zmk_left.uf2 /run/media/$USER/CORNEISHZEN/
  '';

  flash-right = pkgs.writeShellScript "flash.sh" ''
    cp ${firmware}/zmk_right.uf2 /run/media/$USER/CORNEISHZEN/
  '';
}