+10
README.md
+10
README.md
···
···
1
+
### qmk-config
2
+
3
+
qmk configuration for ergodox
4
+
Uses nix to build and flash the firmware
5
+
The configurations are generated by qmk online tool
6
+
7
+
### flash
8
+
9
+
To flash, simply run nix run `.#$KEYBOARD` where `$KEYBOARD` is the desired keyboard
10
+
Or you can manually use qmk command line if you use nix develop.
+167
ergodox.json
+167
ergodox.json
···
···
1
+
{
2
+
"version": 1,
3
+
"notes": "",
4
+
"documentation": "\"This file is a QMK Configurator export. You can import this at <https://config.qmk.fm>. It can also be used directly with QMK's source code.\n\nTo setup your QMK environment check out the tutorial: <https://docs.qmk.fm/#/newbs>\n\nYou can convert this file to a keymap.c using this command: `qmk json2c {keymap}`\n\nYou can compile this keymap using this command: `qmk compile {keymap}`\"\n",
5
+
"keyboard": "ergodox_ez/base",
6
+
"keymap": "ergodox_ez_base_layout_ergodox_pretty_2025-09-28",
7
+
"layout": "LAYOUT_ergodox_pretty",
8
+
"layers": [
9
+
[
10
+
"KC_ESC",
11
+
"KC_1",
12
+
"KC_2",
13
+
"KC_3",
14
+
"KC_4",
15
+
"KC_5",
16
+
"KC_LEFT",
17
+
"KC_RGHT",
18
+
"KC_6",
19
+
"KC_7",
20
+
"KC_8",
21
+
"KC_9",
22
+
"KC_0",
23
+
"KC_EQL",
24
+
"KC_GRV",
25
+
"KC_QUOT",
26
+
"KC_COMM",
27
+
"KC_DOT",
28
+
"KC_P",
29
+
"KC_Y",
30
+
"KC_LBRC",
31
+
"KC_RBRC",
32
+
"KC_F",
33
+
"KC_G",
34
+
"KC_C",
35
+
"KC_R",
36
+
"KC_L",
37
+
"KC_BSLS",
38
+
"KC_BSPC",
39
+
"KC_A",
40
+
"KC_O",
41
+
"KC_E",
42
+
"KC_U",
43
+
"KC_I",
44
+
"KC_D",
45
+
"KC_H",
46
+
"KC_T",
47
+
"KC_N",
48
+
"KC_S",
49
+
"KC_SLSH",
50
+
"KC_LSFT",
51
+
"KC_SCLN",
52
+
"KC_Q",
53
+
"KC_J",
54
+
"KC_K",
55
+
"KC_X",
56
+
"KC_LPRN",
57
+
"KC_RPRN",
58
+
"KC_B",
59
+
"KC_M",
60
+
"KC_W",
61
+
"KC_V",
62
+
"KC_Z",
63
+
"KC_MINS",
64
+
"KC_LCTL",
65
+
"LALT(KC_LSFT)",
66
+
"KC_NO",
67
+
"KC_LEFT",
68
+
"KC_RGHT",
69
+
"KC_UP",
70
+
"KC_DOWN",
71
+
"KC_NO",
72
+
"KC_RALT",
73
+
"KC_RCTL",
74
+
"LCG(KC_ENT)",
75
+
"LCTL(KC_B)",
76
+
"LCTL(KC_W)",
77
+
"LCTL(KC_P)",
78
+
"LCTL(KC_O)",
79
+
"LCTL(KC_E)",
80
+
"KC_SPC",
81
+
"KC_ENT",
82
+
"LT(1,KC_NO)",
83
+
"LT(1,KC_NO)",
84
+
"KC_TAB",
85
+
"KC_LGUI"
86
+
],
87
+
[
88
+
"KC_NO",
89
+
"KC_F1",
90
+
"KC_F2",
91
+
"KC_F3",
92
+
"KC_F4",
93
+
"KC_F5",
94
+
"KC_TRNS",
95
+
"KC_TRNS",
96
+
"KC_F6",
97
+
"KC_F7",
98
+
"KC_F8",
99
+
"KC_F9",
100
+
"KC_F10",
101
+
"KC_F11",
102
+
"KC_TRNS",
103
+
"KC_EXLM",
104
+
"KC_AT",
105
+
"KC_UP",
106
+
"KC_DLR",
107
+
"KC_PERC",
108
+
"KC_TRNS",
109
+
"KC_TRNS",
110
+
"KC_PMNS",
111
+
"KC_7",
112
+
"KC_8",
113
+
"KC_9",
114
+
"KC_ASTR",
115
+
"KC_F12",
116
+
"KC_TRNS",
117
+
"KC_LPRN",
118
+
"KC_LEFT",
119
+
"KC_DOWN",
120
+
"KC_RGHT",
121
+
"KC_RPRN",
122
+
"KC_PPLS",
123
+
"KC_4",
124
+
"KC_5",
125
+
"KC_6",
126
+
"KC_EQL",
127
+
"KC_TRNS",
128
+
"KC_TRNS",
129
+
"KC_LBRC",
130
+
"KC_RBRC",
131
+
"KC_HASH",
132
+
"KC_LCBR",
133
+
"KC_RCBR",
134
+
"KC_TRNS",
135
+
"KC_TRNS",
136
+
"KC_0",
137
+
"KC_1",
138
+
"KC_2",
139
+
"KC_3",
140
+
"KC_BSLS",
141
+
"KC_TRNS",
142
+
"EE_CLR",
143
+
"KC_TRNS",
144
+
"KC_TRNS",
145
+
"KC_TRNS",
146
+
"KC_TRNS",
147
+
"KC_TRNS",
148
+
"KC_DOT",
149
+
"KC_0",
150
+
"KC_EQL",
151
+
"KC_TRNS",
152
+
"UG_NEXT",
153
+
"KC_TRNS",
154
+
"UG_TOGG",
155
+
"ANY(RGB_M_P)",
156
+
"KC_TRNS",
157
+
"KC_TRNS",
158
+
"UG_VALD",
159
+
"UG_VALU",
160
+
"KC_TRNS",
161
+
"KC_TRNS",
162
+
"UG_HUED",
163
+
"UG_HUEU"
164
+
]
165
+
],
166
+
"author": ""
167
+
}
+61
flake.lock
+61
flake.lock
···
···
1
+
{
2
+
"nodes": {
3
+
"flake-utils": {
4
+
"inputs": {
5
+
"systems": "systems"
6
+
},
7
+
"locked": {
8
+
"lastModified": 1731533236,
9
+
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
10
+
"owner": "numtide",
11
+
"repo": "flake-utils",
12
+
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
13
+
"type": "github"
14
+
},
15
+
"original": {
16
+
"owner": "numtide",
17
+
"repo": "flake-utils",
18
+
"type": "github"
19
+
}
20
+
},
21
+
"nixpkgs": {
22
+
"locked": {
23
+
"lastModified": 1759036355,
24
+
"narHash": "sha256-0m27AKv6ka+q270dw48KflE0LwQYrO7Fm4/2//KCVWg=",
25
+
"owner": "nixos",
26
+
"repo": "nixpkgs",
27
+
"rev": "e9f00bd893984bc8ce46c895c3bf7cac95331127",
28
+
"type": "github"
29
+
},
30
+
"original": {
31
+
"owner": "nixos",
32
+
"ref": "nixpkgs-unstable",
33
+
"repo": "nixpkgs",
34
+
"type": "github"
35
+
}
36
+
},
37
+
"root": {
38
+
"inputs": {
39
+
"flake-utils": "flake-utils",
40
+
"nixpkgs": "nixpkgs"
41
+
}
42
+
},
43
+
"systems": {
44
+
"locked": {
45
+
"lastModified": 1681028828,
46
+
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
47
+
"owner": "nix-systems",
48
+
"repo": "default",
49
+
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
50
+
"type": "github"
51
+
},
52
+
"original": {
53
+
"owner": "nix-systems",
54
+
"repo": "default",
55
+
"type": "github"
56
+
}
57
+
}
58
+
},
59
+
"root": "root",
60
+
"version": 7
61
+
}
+36
flake.nix
+36
flake.nix
···
···
1
+
{
2
+
description = "Configuration and build from my qmk keyboards";
3
+
4
+
inputs = {
5
+
nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable";
6
+
flake-utils.url = "github:numtide/flake-utils";
7
+
};
8
+
9
+
outputs = { self, nixpkgs, flake-utils, ... }:
10
+
flake-utils.lib.eachDefaultSystem (system:
11
+
let pkgs = import nixpkgs { inherit system; };
12
+
in with pkgs; {
13
+
devShells.default = mkShell {
14
+
QMK_HOME = "./qmk_firmware";
15
+
nativeBuildInputs = [ qmk ];
16
+
};
17
+
18
+
apps = let
19
+
flash = kb:
20
+
pkgs.writeShellApplication {
21
+
name = "flash";
22
+
runtimeInputs = with pkgs; [ qmk ];
23
+
text = ''
24
+
export QMK_HOME=./qmk_firmware
25
+
qmk flash -c ./${kb}.json
26
+
'';
27
+
};
28
+
in {
29
+
sol3 = {
30
+
type = "app";
31
+
program = "${flash "sol3"}/bin/flash";
32
+
};
33
+
};
34
+
35
+
});
36
+
}