aboutsummaryrefslogtreecommitdiff
path: root/nixos/modules/develop.nix
blob: 1875e575a5b5d215638edfe929f434e05f018d13 (plain)
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
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

      # Nix
      nix-prefetch-git nix-prefetch-github nix-prefetch-scripts
      rnix-lsp

      # C
      ccls bear ctags
      check
      valgrind
      cppcheck flawfinder
      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

      # 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"
    ];

  };

}