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
|
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.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
# C
clang-tools gcc bear ctags
cppcheck flawfinder
check valgrind
gdb
lcov massif-visualizer
# Shell
dash # Posix shell
bats
shellcheck
# Python
python3 python3Packages.ipython
twine
python3Packages.pytest python3Packages.pytest-html #python3Packages.pytest-tap
python3Packages.coverage
python3Packages.python-lsp-black
mypy
pylint python3Packages.pydocstyle
# Lua
lua51Packages.luacheck
# Ansible
ansible
# Qemmu
qemu
# U-Boot
ubootTools
tftp-hpa
# Network
iperf2 iperf3
wireshark
inetutils
# Gtk
glade
# Barcode generation
barcode
# D-Bus
dfeet
# Bare metal
openocd
# Documentation
man-pages man-pages-posix
];
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"
];
};
}
|