|
73 | 73 | withAllNodes = true; |
74 | 74 | }; |
75 | 75 |
|
| 76 | + villas-node-clang = pkgs.villas-node.override { |
| 77 | + stdenv = pkgs.clangStdenv; |
| 78 | + }; |
| 79 | + |
76 | 80 | dockerImage = pkgs.dockerTools.buildLayeredImage { |
77 | 81 | name = "villas-node"; |
78 | 82 | tag = "latest-nix"; |
|
81 | 85 | }; |
82 | 86 |
|
83 | 87 | # Cross-compiled packages |
84 | | - |
85 | 88 | villas-node-x86_64-linux = if pkgs.system == "x86_64-linux" then pkgs.villas-node else pkgs.pkgsCross.x86_64-linux.villas-node; |
86 | 89 | villas-node-aarch64-linux = if pkgs.system == "aarch64-linux" then pkgs.villas-node else pkgs.pkgsCross.aarch64-multiplatform.villas-node; |
87 | 90 |
|
|
126 | 129 | system: |
127 | 130 | let |
128 | 131 | pkgs = devPkgsFor system; |
129 | | - hardeningDisable = [ "all" ]; |
| 132 | + |
130 | 133 | packages = with pkgs; [ |
131 | 134 | bashInteractive |
132 | 135 | bc |
|
142 | 145 | pre-commit |
143 | 146 | ruby # for pre-commit markdownlint hook |
144 | 147 | ]; |
| 148 | + |
| 149 | + mkShellFor = stdenv: pkg: stdenv.mkDerivation { |
| 150 | + name = "${pkg.pname}-${stdenv.cc.cc.pname}-devShell"; |
| 151 | + |
| 152 | + # disable all hardening to suppress warnings in debug builds |
| 153 | + hardeningDisable = [ "all" ]; |
| 154 | + |
| 155 | + # inherit inputs from pkg |
| 156 | + buildInputs = pkg.buildInputs ++ packages; |
| 157 | + nativeBuildInputs = pkg.nativeBuildInputs ++ packages; |
| 158 | + propagatedBuildInputs = pkg.propagatedBuildInputs; |
| 159 | + propagatedNativeBuildInputs = pkg.propagatedNativeBuildInputs; |
| 160 | + |
| 161 | + # configure nix-ld for pre-commit |
| 162 | + env = { |
| 163 | + NIX_LD = lib.fileContents "${stdenv.cc}/nix-support/dynamic-linker"; |
| 164 | + NIX_LD_LIBRARY_PATH = lib.makeLibraryPath [ pkgs.gcc-unwrapped.lib ]; |
| 165 | + }; |
| 166 | + }; |
145 | 167 | in |
146 | 168 | rec { |
147 | | - default = full; |
| 169 | + default = gcc; |
148 | 170 |
|
149 | | - full = pkgs.mkShell { |
150 | | - inherit hardeningDisable packages; |
151 | | - name = "full"; |
152 | | - inputsFrom = with pkgs; [ villas-node ]; |
153 | | - }; |
| 171 | + gcc = mkShellFor pkgs.stdenv pkgs.villas-node; |
| 172 | + clang = mkShellFor pkgs.clangStdenv pkgs.villas-node; |
154 | 173 |
|
155 | 174 | python = pkgs.mkShell { |
156 | | - inherit hardeningDisable; |
157 | | - name = "python"; |
| 175 | + name = "villas-python-devShell"; |
| 176 | + hardeningDisable = [ "all" ]; |
158 | 177 | inputsFrom = with pkgs; [ villas-node-python ]; |
159 | 178 | packages = |
160 | 179 | with pkgs; |
|
0 commit comments