aboutsummaryrefslogtreecommitdiff
path: root/nixos/modules/develop.nix
blob: 76f0d7145b585d32e64ce80d246b3f255e348f95 (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
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
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

        pyserial pylibftdi
        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
    ];

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

  };

}