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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
|
nixpkgs: { config, lib, pkgs, ... }:
with lib;
let
in {
options = {
cynerd.develop = mkOption {
type = types.bool;
default = false;
description = "If machine is about to be used for development.";
};
};
config = mkIf config.cynerd.develop {
cynerd.compile = true;
environment.enableDebugInfo = true;
environment.systemPackages = with pkgs; [
# Tools
tig gource hub github-cli # Git
wlc # Weblate
cloc
openssl
sterm
parted
# Nix
nix-prefetch-git nix-prefetch-github nix-prefetch-scripts
rnix-lsp
# Shell
dash # Posix shell
bats
shellcheck shfmt
jq yq
# Python
(python3.withPackages (pypkgs: with pypkgs; [
ipython
pytest pytest-html #pytest-tap
coverage
python-lsp-black
pylint pydocstyle
mypy pygraphviz
python-gitlab PyGithub
schema
jinja2
ruamel-yaml
msgpack
psycopg
humanize rich
lorem-text.pythonPackage
pyserial pylibftdi
pylxd
selenium
]))
geckodriver
chromedriver
# Lua
(lua5_1.withPackages (luapkgs: with luapkgs; [
luacheck
]))
# Ansible
ansible
# Qemmu
qemu
# U-Boot
#ubootTools
tftp-hpa
# Network
iperf2 iperf3
wireshark
inetutils
# Gtk
glade
# Barcode generation
barcode
# D-Bus
dfeet
# Documentation
man-pages man-pages-posix linux-manual
];
documentation.dev.enable = true;
services.udev.extraRules = ''
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="3748", MODE:="0660", GROUP="develop", SYMLINK+="stlinkv2_%n"
SUBSYSTEMS=="usb", ATTRS{idVendor}=="a600", ATTRS{idProduct}=="a003", MODE:="0660", GROUP="develop", SYMLINK+="aix_forte_%n"
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1366", ATTRS{idProduct}=="0105", MODE:="0660", GROUP="develop", SYMLINK+="jlink_%n"
'';
virtualisation.docker = {
enable = true;
autoPrune.enable = true;
};
virtualisation.lxd = {
enable = true;
recommendedSysctlSettings = true;
};
virtualisation.lxc.enable = true;
users.groups.develop = { };
users.users.cynerd.extraGroups = [
"docker" "lxd" "develop"
];
};
}
|