├── .editorconfig ├── .envrc ├── .github ├── FUNDING.yml └── workflows │ └── ci.yml ├── .gitignore ├── README.md ├── bun ├── .envrc ├── flake.lock └── flake.nix ├── c-cpp ├── .envrc ├── flake.lock └── flake.nix ├── clojure ├── .envrc ├── flake.lock └── flake.nix ├── cue ├── .envrc ├── flake.lock └── flake.nix ├── dhall ├── .envrc ├── flake.lock └── flake.nix ├── elixir ├── .envrc ├── flake.lock └── flake.nix ├── elm ├── .envrc ├── flake.lock └── flake.nix ├── empty ├── .envrc ├── flake.lock └── flake.nix ├── flake.lock ├── flake.nix ├── gleam ├── .envrc ├── flake.lock └── flake.nix ├── go ├── .envrc ├── flake.lock └── flake.nix ├── hashi ├── .envrc ├── flake.lock └── flake.nix ├── haskell ├── .envrc ├── flake.lock └── flake.nix ├── haxe ├── .envrc ├── flake.lock └── flake.nix ├── java ├── .envrc ├── flake.lock └── flake.nix ├── jupyter ├── .envrc ├── .gitignore ├── flake.lock ├── flake.nix └── pyproject.toml ├── kotlin ├── .envrc ├── flake.lock └── flake.nix ├── latex ├── .envrc ├── flake.lock └── flake.nix ├── lean4 ├── .envrc ├── flake.lock └── flake.nix ├── nickel ├── .envrc ├── flake.lock └── flake.nix ├── nim ├── .envrc ├── flake.lock └── flake.nix ├── nix ├── .envrc ├── flake.lock └── flake.nix ├── node ├── .envrc ├── flake.lock └── flake.nix ├── ocaml ├── .envrc ├── flake.lock └── flake.nix ├── odin ├── .envrc ├── flake.lock └── flake.nix ├── opa ├── .envrc ├── flake.lock └── flake.nix ├── php ├── .envrc ├── flake.lock └── flake.nix ├── platformio ├── .envrc ├── flake.lock └── flake.nix ├── protobuf ├── .envrc ├── flake.lock └── flake.nix ├── pulumi ├── .envrc ├── flake.lock └── flake.nix ├── purescript ├── .envrc ├── flake.lock └── flake.nix ├── python ├── .envrc ├── .gitignore ├── flake.lock └── flake.nix ├── r ├── .envrc ├── flake.lock └── flake.nix ├── ruby ├── .envrc ├── flake.lock └── flake.nix ├── rust-toolchain ├── .envrc ├── flake.lock ├── flake.nix └── rust-toolchain.toml ├── rust ├── .envrc ├── flake.lock └── flake.nix ├── scala ├── .envrc ├── flake.lock └── flake.nix ├── shell ├── .envrc ├── flake.lock └── flake.nix ├── swi-prolog ├── .envrc ├── flake.lock └── flake.nix ├── swift ├── .envrc ├── flake.lock └── flake.nix ├── vlang ├── .envrc ├── flake.lock └── flake.nix └── zig ├── .envrc ├── flake.lock └── flake.nix /.editorconfig: -------------------------------------------------------------------------------- 1 | # https://editorconfig.org 2 | root = true 3 | 4 | [*] 5 | indent_style = space 6 | indent_size = 2 7 | end_of_line = lf 8 | charset = utf-8 9 | trim_trailing_whitespace = true 10 | insert_final_newline = true 11 | 12 | [*.lock] 13 | insert_final_newline = false 14 | -------------------------------------------------------------------------------- /.envrc: -------------------------------------------------------------------------------- 1 | use flake 2 | -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | github: [lucperkins] 2 | -------------------------------------------------------------------------------- /.github/workflows/ci.yml: -------------------------------------------------------------------------------- 1 | name: Run checks and Determinate CI 2 | 3 | on: 4 | pull_request: 5 | workflow_dispatch: 6 | push: 7 | branches: 8 | - main 9 | tags: 10 | - v?[0-9]+.[0-9]+.[0-9]+* 11 | 12 | concurrency: 13 | group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} 14 | cancel-in-progress: true 15 | 16 | jobs: 17 | check: 18 | runs-on: ubuntu-latest 19 | permissions: 20 | id-token: write 21 | contents: read 22 | steps: 23 | - uses: actions/checkout@v4 24 | - uses: DeterminateSystems/flake-checker-action@main 25 | with: 26 | fail-mode: true 27 | - uses: DeterminateSystems/determinate-nix-action@main 28 | - uses: DeterminateSystems/flakehub-cache-action@main 29 | - name: Check formatting 30 | run: | 31 | nix develop --command nixpkgs-fmt --check $(git ls-files '*.nix') 32 | - name: Flake check 33 | run: nix develop --command check 34 | - name: Build all 35 | run: nix develop --command build 36 | 37 | determinate-ci: 38 | needs: check 39 | uses: DeterminateSystems/ci/.github/workflows/workflow.yml@main 40 | permissions: 41 | id-token: write 42 | contents: read 43 | with: 44 | visibility: public 45 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .direnv/ 2 | target 3 | result 4 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Nix flake templates for easy dev environments 2 | 3 | [![built with nix](https://builtwithnix.org/badge.svg)](https://builtwithnix.org) 4 | 5 | To initialize (where `${ENV}` is listed in the table below): 6 | 7 | ```shell 8 | nix flake init --template "https://flakehub.com/f/the-nix-way/dev-templates/*#${ENV}" 9 | ``` 10 | 11 | Here's an example (for the [`rust`](./rust) template): 12 | 13 | ```shell 14 | # Initialize in the current project 15 | nix flake init --template "https://flakehub.com/f/the-nix-way/dev-templates/*#rust" 16 | 17 | # Create a new project 18 | nix flake new --template "https://flakehub.com/f/the-nix-way/dev-templates/*#rust" ${NEW_PROJECT_DIRECTORY} 19 | ``` 20 | 21 | ## How to use the templates 22 | 23 | Once your preferred template has been initialized, you can use the provided shell in two ways: 24 | 25 | 1. If you have [`nix-direnv`][nix-direnv] installed, you can initialize the environment by running `direnv allow`. 26 | 2. If you don't have `nix-direnv` installed, you can run `nix develop` to open up the Nix-defined shell. 27 | 28 | ## Available templates 29 | 30 | | Language/framework/tool | Template | 31 | | :------------------------------- | :------------------------------------ | 32 | | [Bun] | [`bun`](./bun/) | 33 | | [C]/[C++] | [`c-cpp`](./c-cpp/) | 34 | | [Clojure] | [`clojure`](./clojure/) | 35 | | [Cue] | [`cue`](./cue/) | 36 | | [Dhall] | [`dhall`](./dhall/) | 37 | | [Elixir] | [`elixir`](./elixir/) | 38 | | [Elm] | [`elm`](./elm/) | 39 | | Empty (change at will) | [`empty`](./empty) | 40 | | [Gleam] | [`gleam`](./gleam/) | 41 | | [Go] | [`go`](./go/) | 42 | | [Hashicorp] tools | [`hashi`](./hashi/) | 43 | | [Haskell] | [`haskell`](./haskell/) | 44 | | [Haxe] | [`haxe`](./haxe/) | 45 | | [Java] | [`java`](./java/) | 46 | | [Jupyter] | [`jupyter`](./jupyter/) | 47 | | [Kotlin] | [`kotlin`](./kotlin/) | 48 | | [LaTeX] | [`latex`](./latex/) | 49 | | [Nickel] | [`nickel`](./nickel/) | 50 | | [Nim] | [`nim`](./nim/) | 51 | | [Nix] | [`nix`](./nix/) | 52 | | [Node.js][node] | [`node`](./node/) | 53 | | [OCaml] | [`ocaml`](./ocaml/) | 54 | | [Odin] | [`odin`](./odin/) | 55 | | [Open Policy Agent][opa] | [`opa`](./opa) | 56 | | [PHP] | [`php`](./php/) | 57 | | [PlatformIO] | [`platformio`](./platformio/) | 58 | | [Protobuf] | [`protobuf`](./protobuf/) | 59 | | [Pulumi] | [`pulumi`](./pulumi/) | 60 | | [Purescript] | [`purescript`](./purescript/) | 61 | | [Python] | [`python`](./python/) | 62 | | [R] | [`r`](./r/) | 63 | | [Ruby] | [`ruby`](./ruby/) | 64 | | [Rust] | [`rust`](./rust/) | 65 | | [Rust from toolchain file][rust] | [`rust-toolchain`](./rust-toolchain/) | 66 | | [Scala] | [`scala`](./scala/) | 67 | | Shell | [`shell`](./shell/) | 68 | | [SWI-prolog] | [`swi-prolog`](./swi-prolog/) | 69 | | [Swift] | [`swift`](./swift) | 70 | | [Vlang] | [`vlang`](./vlang/) | 71 | | [Zig] | [`zig`](./zig/) | 72 | 73 | ## Template contents 74 | 75 | The sections below list what each template includes. In all cases, you're free to add and remove packages as you see fit; the templates are just boilerplate. 76 | 77 | ### [`bun`](./bun/) 78 | 79 | - [bun] 80 | 81 | ### [`c-cpp`](./c-cpp/) 82 | 83 | - [clang-tools] 84 | - [cmake] 85 | - [codespell] 86 | - [conan] 87 | - [cppcheck] 88 | - [doxygen] 89 | - [gdb] 90 | - [gtest] 91 | - [lcov] 92 | - [vcpkg] 93 | - [vcpkg-tool] 94 | 95 | ### [`clojure`](./clojure/) 96 | 97 | - [Clojure] 98 | - [Boot] 99 | - [Leiningen] 100 | 101 | ### [`cue`](./cue/) 102 | 103 | - [Cue] 104 | 105 | ### [`dhall`](./dhall) 106 | 107 | - [Dhall] 108 | - [dhall-bash] 109 | - [dhall-docs] 110 | - [dhall-json] 111 | - [dhall-lsp-server] 112 | - [dhall-nix] 113 | - [dhall-nixpkgs] 114 | - [dhall-openapi] 115 | - [dhall-toml] 116 | - [dhall-yaml] 117 | 118 | ### [`elixir`](./elixir/) 119 | 120 | - [Elixir], including [mix] and [IEx] 121 | - [gigalixir] (Linux only) 122 | 123 | ### [`elm`](./elm/) 124 | 125 | - [Elm] 126 | - [elm2nix] 127 | 128 | ### [Empty](./empty/) 129 | 130 | A dev template that's fully customizable. 131 | 132 | ### [`gleam`](./gleam/) 133 | 134 | - [Gleam] 135 | 136 | ### [`go`](./go/) 137 | 138 | - [Go] 139 | - Standard Go tools ([goimports], [godoc], and others) 140 | - [golangci-lint] 141 | 142 | ### [`hashi`](./hashi/) 143 | 144 | - [Packer] 145 | - [Terraform] 146 | - [Nomad] 147 | - [Vault] 148 | - [nomad-autoscaler] 149 | - [nomad-pack] 150 | - [levant] 151 | - [damon] 152 | - [Terragrunt] 153 | - [tflint] 154 | 155 | ### [`haskell`](./haskell/) 156 | 157 | - [GHC][haskell] 158 | - [cabal] 159 | 160 | ### [`haxe`](./haxe/) 161 | 162 | - [Haxe] 163 | 164 | ### [`java`](./java/) 165 | 166 | - [Java] 167 | - [Maven] 168 | - [Gradle] 169 | - [jdtls] 170 | 171 | ### [`jupyter`](./jupyter/) 172 | 173 | - [Jupyter core][jupyter] 174 | 175 | ### [`kotlin`](./kotlin/) 176 | 177 | - [Kotlin] 178 | - [Gradle] 179 | 180 | ### [`latex`](./latex/) 181 | 182 | - [texlive] 183 | - [tectonic] 184 | - [texlab] 185 | 186 | ### [`lean4`](./lean4/) 187 | 188 | - [Lean] 189 | 190 | ### [`nickel`](./nickel/) 191 | 192 | - [Nickel] 193 | 194 | ### [`nim`](./nim) 195 | 196 | - [Nim] 197 | - [nimble] 198 | 199 | ### [`nix`](./nix/) 200 | 201 | - [Cachix] 202 | - [dhall-to-nix] 203 | - [lorri] 204 | - [niv] 205 | - [nixfmt] 206 | - [statix] 207 | - [vulnix] 208 | 209 | ### [`node`](./node/) 210 | 211 | - [Node.js][node] 212 | - [npm] 213 | - [pnpm] 214 | - [Yarn] 215 | - [node2nix] 216 | 217 | ### [`ocaml`](./ocaml/) 218 | 219 | - [OCaml] 220 | - [Dune] 221 | - [odoc] 222 | - [ocamlformat] 223 | 224 | ### [`odin`](./odin/) 225 | 226 | - [Odin] 227 | 228 | ### [`opa`](./opa/) 229 | 230 | - [Open Policy Agent][opa] 231 | - [Conftest] 232 | 233 | ### [`php`](./php/) 234 | 235 | - [PHP] 236 | - [Composer] 237 | 238 | ### [`platformio`](./platformio/) 239 | 240 | - [PlatformIO] 241 | 242 | ### [`protobuf`](./protobuf/) 243 | 244 | - The [Buf CLI][buf] 245 | - [protoc][protobuf] 246 | 247 | ### [`pulumi`](./pulumi/) 248 | 249 | - [Pulumi] 250 | - [Python] 251 | - [Go] 252 | - [Node.js][node] 253 | - [dotnet] 254 | - [Java] and [Maven] 255 | - [jq] 256 | 257 | ### [`purescript`](./purescript/) 258 | 259 | - [Purescript] (purs) 260 | - [Spago] 261 | - [purescript-language-server] 262 | - [purs-tidy] 263 | 264 | ### [`python`](./python/) 265 | 266 | - [Python] 267 | - [pip] 268 | 269 | ### [`r`](./r/) 270 | 271 | - [R] 272 | - [rmarkdown] 273 | - [knitr] ([pandoc] and [texlive]) 274 | 275 | ### [`ruby`](./ruby/) 276 | 277 | - [Ruby], plus the standard Ruby tools (`bundle`, `gem`, etc.) 278 | 279 | ### [`rust`](./rust/) 280 | 281 | - [Rust], including [cargo], [Clippy], and the other standard tools. The Rust version is determined as follows, in order: 282 | 283 | - From the `rust-toolchain.toml` file if present 284 | - From the `rust-toolchain` file if present 285 | - Version 1.78.0 if neither is present 286 | 287 | - [rust-analyzer] 288 | - [cargo-edit] 289 | - [cargo-deny] 290 | 291 | ### [`scala`](./scala/) 292 | 293 | - [Scala] (plus [Java]) 294 | - [sbt] 295 | 296 | ### [`shell`](./shell/) 297 | 298 | - [shellcheck] 299 | 300 | ### [`swi-prolog`](./swi-prolog/) 301 | 302 | - [swipl][swi-prolog] 303 | 304 | ### [`swift`](./swift/) 305 | 306 | - [Swift] 307 | - [sourcekit-lsp] 308 | 309 | ### [`vlang`](./vlang/) 310 | 311 | - [Vlang] 312 | 313 | ### [`zig`](./zig/) 314 | 315 | - [Zig] 316 | - [LLDB] 317 | - [ZLS] 318 | 319 | [boot]: https://boot-clj.com 320 | [buf]: https://github.com/bufbuild/buf 321 | [bun]: https://bun.sh 322 | [C]: https://open-std.org/jtc1/sc22/wg14 323 | [C++]: https://isocpp.org 324 | [cabal]: https://haskell.org/cabal 325 | [cachix]: https://cachix.org 326 | [cargo]: https://doc.rust-lang.org/cargo 327 | [cargo-audit]: https://crates.io/crates/cargo-audit 328 | [cargo-deny]: https://crates.io/crates/cargo-deny 329 | [cargo-edit]: https://crates.io/crates/cargo-edit 330 | [clang-tools]: https://clang.llvm.org 331 | [clippy]: https://github.com/rust-lang/rust-clippy 332 | [clojure]: https://clojure.org 333 | [cmake]: https://cmake.org 334 | [codespell]: https://github.com/codespell-project/codespell 335 | [composer]: https://getcomposer.org 336 | [conan]: https://conan.io 337 | [conftest]: https://conftest.dev 338 | [cppcheck]: http://cppcheck.sourceforge.net 339 | [cue]: https://cuelang.org 340 | [damon]: https://github.com/hashicorp/damon 341 | [dhall]: https://dhall-lang.org 342 | [dhall-bash]: https://github.com/dhall-lang/dhall-haskell/tree/master/dhall-bash 343 | [dhall-docs]: https://github.com/dhall-lang/dhall-haskell/tree/master/dhall-docs 344 | [dhall-json]: https://github.com/dhall-lang/dhall-haskell/tree/master/dhall-json 345 | [dhall-lsp-server]: https://github.com/dhall-lang/dhall-haskell/tree/master/dhall-lsp-server 346 | [dhall-nix]: https://github.com/dhall-lang/dhall-haskell/tree/master/dhall-nix 347 | [dhall-nixpkgs]: https://github.com/dhall-lang/dhall-haskell/tree/master/dhall-nixpkgs 348 | [dhall-openapi]: https://github.com/dhall-lang/dhall-haskell/tree/master/dhall-openapi 349 | [dhall-to-nix]: https://github.com/dhall-lang/dhall-haskell/tree/master/dhall-nix 350 | [dhall-toml]: https://github.com/dhall-lang/dhall-haskell/tree/master/dhall-toml 351 | [dhall-yaml]: https://github.com/dhall-lang/dhall-haskell/tree/master/dhall-yaml 352 | [dotnet]: https://dotnet.microsoft.com/en-us 353 | [doxygen]: https://doxygen.nl 354 | [dune]: https://dune.build 355 | [elixir]: https://elixir-lang.org 356 | [elm]: https://elm-lang.org 357 | [elm2nix]: https://github.com/cachix/elm2nix 358 | [gdb]: https://gnu.org/software/gdb 359 | [gigalixir]: https://gigalixir.com 360 | [gleam]: https://gleam.run 361 | [go]: https://go.dev 362 | [godoc]: https://pkg.go.dev/golang.org/x/tools/cmd/godoc 363 | [goimports]: https://pkg.go.dev/golang.org/x/tools/cmd/goimports 364 | [golangci-lint]: https://github.com/golangci/golangci-lint 365 | [gradle]: https://gradle.org 366 | [gtest]: https://github.com/google/googletest 367 | [hashicorp]: https://hashicorp.com 368 | [haskell]: https://haskell.org 369 | [haxe]: https://haxe.org 370 | [iex]: https://hexdocs.pm/iex/IEx.html 371 | [java]: https://java.com 372 | [jdtls]: https://projects.eclipse.org/projects/eclipse.jdt.ls 373 | [jq]: https://jqlang.github.io/jq 374 | [jupyter]: https://jupyter.org 375 | [knitr]: https://yihui.org/knitr 376 | [kotlin]: https://kotlinlang.org 377 | [latex]: https://latex-project.org 378 | [lean]: https://lean-lang.org 379 | [lcov]: https://ltp.sourceforge.net/coverage/lcov.php 380 | [leiningen]: https://leiningen.org 381 | [levant]: https://github.com/hashicorp/levant 382 | [lldb]: https://lldb.llvm.org 383 | [lorri]: https://github.com/target/lorri 384 | [maven]: https://maven.apache.org 385 | [mix]: https://elixir-lang.org/getting-started/mix-otp/introduction-to-mix.html 386 | [mono]: https://mono-project.com 387 | [msbuild]: https://github.com/dotnet/msbuild 388 | [nickel]: https://nickel-lang.org 389 | [nim]: https://nim-lang.org 390 | [nimble]: https://github.com/nim-lang/nimble 391 | [niv]: https://github.com/nmattia/niv 392 | [nix]: https://nixos.org 393 | [nixfmt]: https://github.com/serokell/nixfmt 394 | [nixpkgs]: https://github.com/NixOS/nixpkgs 395 | [nix-direnv]: https://github.com/nix-community/nix-direnv 396 | [node]: https://nodejs.org 397 | [node2nix]: https://github.com/svanderburg/node2nix 398 | [nomad]: https://nomadproject.io 399 | [nomad-autoscaler]: https://github.com/hashicorp/nomad-autoscaler 400 | [nomad-pack]: https://github.com/hashicorp/nomad-pack 401 | [npm]: https://npmjs.org 402 | [ocaml]: https://ocaml.org 403 | [ocamlformat]: https://github.com/ocaml-ppx/ocamlformat 404 | [odoc]: https://github.com/ocaml/odoc 405 | [odin]: https://github.com/odin-lang/Odin 406 | [omnisharp-roslyn]: https://github.com/OmniSharp/omnisharp-roslyn 407 | [opa]: https://openpolicyagent.org 408 | [pandoc]: https://pandoc.org 409 | [packer]: https://packer.io 410 | [pip]: https://pypi.org/project/pip 411 | [phoenix]: https://phoenixframework.org 412 | [php]: https://php.net 413 | [platformio]: https://platformio.org 414 | [python]: https://python.org 415 | [pnpm]: https://pnpm.io 416 | [protobuf]: https://developers.google.com/protocol-buffers 417 | [pulumi]: https://pulumi.com 418 | [purescript]: https://github.com/purescript/purescript 419 | [purescript-language-server]: https://github.com/nwolverson/purescript-language-server 420 | [purs-tidy]: https://github.com/natefaubion/purescript-tidy 421 | [python]: https://python.org 422 | [r]: https://r-project.org 423 | [release]: https://github.com/NixOS/nixpkgs/releases/tag/22.11 424 | [rmarkdown]: https://rmarkdown.rstudio.com 425 | [ruby]: https://ruby-lang.org 426 | [rust]: https://rust-lang.org 427 | [rust-analyzer]: https://rust-analyzer.github.io 428 | [scala]: https://scala-lang.org 429 | [shellcheck]: https://shellcheck.net 430 | [statix]: https://github.com/nerdypepper/statix 431 | [sbt]: https://scala-sbt.org 432 | [sourcekit-lsp]: https://github.com/swiftlang/sourcekit-lsp 433 | [spago]: https://github.com/purescript/spago 434 | [swi-prolog]: https://www.swi-prolog.org 435 | [swift]: https://swift.org 436 | [tectonic]: https://tectonic-typesetting.github.io 437 | [terraform]: https://terraform.io 438 | [terragrunt]: https://terragrunt.gruntwork.io 439 | [texlab]: https://github.com/latex-lsp/texlab 440 | [texlive]: https://tug.org/texlive 441 | [tflint]: https://github.com/terraform-linters/tflint 442 | [vault]: https://vaultproject.io 443 | [vcpkg]: https://vcpkg.io 444 | [vcpkg-tool]: https://github.com/microsoft/vcpkg-tool 445 | [vulnix]: https://github.com/flyingcircusio/vulnix 446 | [yarn]: https://yarnpkg.com 447 | [vlang]: https://vlang.io 448 | [zig]: https://ziglang.org 449 | [zls]: https://github.com/zigtools/zls 450 | -------------------------------------------------------------------------------- /bun/.envrc: -------------------------------------------------------------------------------- 1 | use flake 2 | -------------------------------------------------------------------------------- /bun/flake.lock: -------------------------------------------------------------------------------- 1 | { 2 | "nodes": { 3 | "nixpkgs": { 4 | "locked": { 5 | "lastModified": 1748693115, 6 | "narHash": "sha256-StSrWhklmDuXT93yc3GrTlb0cKSS0agTAxMGjLKAsY8=", 7 | "rev": "910796cabe436259a29a72e8d3f5e180fc6dfacc", 8 | "revCount": 808478, 9 | "type": "tarball", 10 | "url": "https://api.flakehub.com/f/pinned/NixOS/nixpkgs/0.1.808478%2Brev-910796cabe436259a29a72e8d3f5e180fc6dfacc/01972ad6-3b3d-7826-b788-216d339063fe/source.tar.gz" 11 | }, 12 | "original": { 13 | "type": "tarball", 14 | "url": "https://flakehub.com/f/NixOS/nixpkgs/0.1" 15 | } 16 | }, 17 | "root": { 18 | "inputs": { 19 | "nixpkgs": "nixpkgs" 20 | } 21 | } 22 | }, 23 | "root": "root", 24 | "version": 7 25 | } 26 | -------------------------------------------------------------------------------- /bun/flake.nix: -------------------------------------------------------------------------------- 1 | { 2 | description = "A Nix-flake-based Bun development environment"; 3 | 4 | inputs.nixpkgs.url = "https://flakehub.com/f/NixOS/nixpkgs/0.1"; 5 | 6 | outputs = inputs: 7 | let 8 | supportedSystems = [ "x86_64-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin" ]; 9 | forEachSupportedSystem = f: inputs.nixpkgs.lib.genAttrs supportedSystems (system: f { 10 | pkgs = import inputs.nixpkgs { inherit system; }; 11 | }); 12 | in 13 | { 14 | devShells = forEachSupportedSystem ({ pkgs }: { 15 | default = pkgs.mkShell { 16 | packages = with pkgs; [ bun ]; 17 | }; 18 | }); 19 | }; 20 | } 21 | -------------------------------------------------------------------------------- /c-cpp/.envrc: -------------------------------------------------------------------------------- 1 | use flake 2 | -------------------------------------------------------------------------------- /c-cpp/flake.lock: -------------------------------------------------------------------------------- 1 | { 2 | "nodes": { 3 | "nixpkgs": { 4 | "locked": { 5 | "lastModified": 1748693115, 6 | "narHash": "sha256-StSrWhklmDuXT93yc3GrTlb0cKSS0agTAxMGjLKAsY8=", 7 | "rev": "910796cabe436259a29a72e8d3f5e180fc6dfacc", 8 | "revCount": 808478, 9 | "type": "tarball", 10 | "url": "https://api.flakehub.com/f/pinned/NixOS/nixpkgs/0.1.808478%2Brev-910796cabe436259a29a72e8d3f5e180fc6dfacc/01972ad6-3b3d-7826-b788-216d339063fe/source.tar.gz" 11 | }, 12 | "original": { 13 | "type": "tarball", 14 | "url": "https://flakehub.com/f/NixOS/nixpkgs/0.1" 15 | } 16 | }, 17 | "root": { 18 | "inputs": { 19 | "nixpkgs": "nixpkgs" 20 | } 21 | } 22 | }, 23 | "root": "root", 24 | "version": 7 25 | } 26 | -------------------------------------------------------------------------------- /c-cpp/flake.nix: -------------------------------------------------------------------------------- 1 | { 2 | description = "A Nix-flake-based C/C++ development environment"; 3 | 4 | inputs.nixpkgs.url = "https://flakehub.com/f/NixOS/nixpkgs/0.1"; 5 | 6 | outputs = inputs: 7 | let 8 | supportedSystems = [ "x86_64-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin" ]; 9 | forEachSupportedSystem = f: inputs.nixpkgs.lib.genAttrs supportedSystems (system: f { 10 | pkgs = import inputs.nixpkgs { inherit system; }; 11 | }); 12 | in 13 | { 14 | devShells = forEachSupportedSystem ({ pkgs }: { 15 | default = pkgs.mkShell.override 16 | { 17 | # Override stdenv in order to change compiler: 18 | # stdenv = pkgs.clangStdenv; 19 | } 20 | { 21 | packages = with pkgs; [ 22 | clang-tools 23 | cmake 24 | codespell 25 | conan 26 | cppcheck 27 | doxygen 28 | gtest 29 | lcov 30 | vcpkg 31 | vcpkg-tool 32 | ] ++ (if system == "aarch64-darwin" then [ ] else [ gdb ]); 33 | }; 34 | }); 35 | }; 36 | } 37 | 38 | -------------------------------------------------------------------------------- /clojure/.envrc: -------------------------------------------------------------------------------- 1 | use flake 2 | -------------------------------------------------------------------------------- /clojure/flake.lock: -------------------------------------------------------------------------------- 1 | { 2 | "nodes": { 3 | "nixpkgs": { 4 | "locked": { 5 | "lastModified": 1748693115, 6 | "narHash": "sha256-StSrWhklmDuXT93yc3GrTlb0cKSS0agTAxMGjLKAsY8=", 7 | "rev": "910796cabe436259a29a72e8d3f5e180fc6dfacc", 8 | "revCount": 808478, 9 | "type": "tarball", 10 | "url": "https://api.flakehub.com/f/pinned/NixOS/nixpkgs/0.1.808478%2Brev-910796cabe436259a29a72e8d3f5e180fc6dfacc/01972ad6-3b3d-7826-b788-216d339063fe/source.tar.gz" 11 | }, 12 | "original": { 13 | "type": "tarball", 14 | "url": "https://flakehub.com/f/NixOS/nixpkgs/0.1" 15 | } 16 | }, 17 | "root": { 18 | "inputs": { 19 | "nixpkgs": "nixpkgs" 20 | } 21 | } 22 | }, 23 | "root": "root", 24 | "version": 7 25 | } 26 | -------------------------------------------------------------------------------- /clojure/flake.nix: -------------------------------------------------------------------------------- 1 | { 2 | description = "A Nix-flake-based Clojure development environment"; 3 | 4 | inputs.nixpkgs.url = "https://flakehub.com/f/NixOS/nixpkgs/0.1"; 5 | 6 | outputs = inputs: 7 | 8 | let 9 | javaVersion = 23; # Change this value to update the whole stack 10 | 11 | supportedSystems = [ "x86_64-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin" ]; 12 | forEachSupportedSystem = f: inputs.nixpkgs.lib.genAttrs supportedSystems (system: f { 13 | pkgs = import inputs.nixpkgs { 14 | inherit system; 15 | overlays = [ inputs.self.overlays.default ]; 16 | }; 17 | }); 18 | in 19 | { 20 | overlays.default = 21 | final: prev: 22 | let 23 | jdk = prev."jdk${toString javaVersion}"; 24 | in 25 | { 26 | boot = prev.boot.override { inherit jdk; }; 27 | clojure = prev.clojure.override { inherit jdk; }; 28 | leiningen = prev.leiningen.override { inherit jdk; }; 29 | }; 30 | 31 | devShells = forEachSupportedSystem ({ pkgs }: { 32 | default = pkgs.mkShell { 33 | packages = with pkgs; [ boot clojure leiningen ]; 34 | }; 35 | }); 36 | }; 37 | } 38 | -------------------------------------------------------------------------------- /cue/.envrc: -------------------------------------------------------------------------------- 1 | use flake 2 | -------------------------------------------------------------------------------- /cue/flake.lock: -------------------------------------------------------------------------------- 1 | { 2 | "nodes": { 3 | "nixpkgs": { 4 | "locked": { 5 | "lastModified": 1748693115, 6 | "narHash": "sha256-StSrWhklmDuXT93yc3GrTlb0cKSS0agTAxMGjLKAsY8=", 7 | "rev": "910796cabe436259a29a72e8d3f5e180fc6dfacc", 8 | "revCount": 808478, 9 | "type": "tarball", 10 | "url": "https://api.flakehub.com/f/pinned/NixOS/nixpkgs/0.1.808478%2Brev-910796cabe436259a29a72e8d3f5e180fc6dfacc/01972ad6-3b3d-7826-b788-216d339063fe/source.tar.gz" 11 | }, 12 | "original": { 13 | "type": "tarball", 14 | "url": "https://flakehub.com/f/NixOS/nixpkgs/0.1" 15 | } 16 | }, 17 | "root": { 18 | "inputs": { 19 | "nixpkgs": "nixpkgs" 20 | } 21 | } 22 | }, 23 | "root": "root", 24 | "version": 7 25 | } 26 | -------------------------------------------------------------------------------- /cue/flake.nix: -------------------------------------------------------------------------------- 1 | { 2 | description = "A Nix-flake-based Cue development environment"; 3 | 4 | inputs.nixpkgs.url = "https://flakehub.com/f/NixOS/nixpkgs/0.1"; 5 | 6 | outputs = inputs: 7 | 8 | let 9 | supportedSystems = [ "x86_64-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin" ]; 10 | forEachSupportedSystem = f: inputs.nixpkgs.lib.genAttrs supportedSystems (system: f { 11 | pkgs = import inputs.nixpkgs { inherit system; }; 12 | }); 13 | in 14 | { 15 | devShells = forEachSupportedSystem ({ pkgs }: { 16 | default = pkgs.mkShell { 17 | packages = with pkgs; [ cue ]; 18 | }; 19 | }); 20 | }; 21 | } 22 | -------------------------------------------------------------------------------- /dhall/.envrc: -------------------------------------------------------------------------------- 1 | use flake 2 | -------------------------------------------------------------------------------- /dhall/flake.lock: -------------------------------------------------------------------------------- 1 | { 2 | "nodes": { 3 | "nixpkgs": { 4 | "locked": { 5 | "lastModified": 1748693115, 6 | "narHash": "sha256-StSrWhklmDuXT93yc3GrTlb0cKSS0agTAxMGjLKAsY8=", 7 | "rev": "910796cabe436259a29a72e8d3f5e180fc6dfacc", 8 | "revCount": 808478, 9 | "type": "tarball", 10 | "url": "https://api.flakehub.com/f/pinned/NixOS/nixpkgs/0.1.808478%2Brev-910796cabe436259a29a72e8d3f5e180fc6dfacc/01972ad6-3b3d-7826-b788-216d339063fe/source.tar.gz" 11 | }, 12 | "original": { 13 | "type": "tarball", 14 | "url": "https://flakehub.com/f/NixOS/nixpkgs/0.1" 15 | } 16 | }, 17 | "root": { 18 | "inputs": { 19 | "nixpkgs": "nixpkgs" 20 | } 21 | } 22 | }, 23 | "root": "root", 24 | "version": 7 25 | } 26 | -------------------------------------------------------------------------------- /dhall/flake.nix: -------------------------------------------------------------------------------- 1 | { 2 | description = "A Nix-flake-based Dhall development environment"; 3 | 4 | inputs.nixpkgs.url = "https://flakehub.com/f/NixOS/nixpkgs/0.1"; 5 | 6 | outputs = inputs: 7 | let 8 | supportedSystems = [ "x86_64-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin" ]; 9 | forEachSupportedSystem = f: inputs.nixpkgs.lib.genAttrs supportedSystems (system: f { 10 | pkgs = import inputs.nixpkgs { inherit system; }; 11 | }); 12 | in 13 | { 14 | devShells = forEachSupportedSystem ({ pkgs }: { 15 | default = 16 | let 17 | # Helper function for building dhall-* tools 18 | mkDhallTools = ls: builtins.map (tool: pkgs.haskellPackages."dhall-${tool}") ls; 19 | 20 | dhallTools = mkDhallTools [ 21 | "bash" 22 | "docs" 23 | "json" 24 | "lsp-server" 25 | "nix" 26 | "nixpkgs" 27 | "openapi" 28 | "toml" 29 | "yaml" 30 | ]; 31 | in 32 | pkgs.mkShell { 33 | packages = (with pkgs; [ dhall ]) ++ dhallTools; 34 | }; 35 | }); 36 | }; 37 | } 38 | -------------------------------------------------------------------------------- /elixir/.envrc: -------------------------------------------------------------------------------- 1 | use flake 2 | -------------------------------------------------------------------------------- /elixir/flake.lock: -------------------------------------------------------------------------------- 1 | { 2 | "nodes": { 3 | "nixpkgs": { 4 | "locked": { 5 | "lastModified": 1748693115, 6 | "narHash": "sha256-StSrWhklmDuXT93yc3GrTlb0cKSS0agTAxMGjLKAsY8=", 7 | "rev": "910796cabe436259a29a72e8d3f5e180fc6dfacc", 8 | "revCount": 808478, 9 | "type": "tarball", 10 | "url": "https://api.flakehub.com/f/pinned/NixOS/nixpkgs/0.1.808478%2Brev-910796cabe436259a29a72e8d3f5e180fc6dfacc/01972ad6-3b3d-7826-b788-216d339063fe/source.tar.gz" 11 | }, 12 | "original": { 13 | "type": "tarball", 14 | "url": "https://flakehub.com/f/NixOS/nixpkgs/0.1" 15 | } 16 | }, 17 | "root": { 18 | "inputs": { 19 | "nixpkgs": "nixpkgs" 20 | } 21 | } 22 | }, 23 | "root": "root", 24 | "version": 7 25 | } 26 | -------------------------------------------------------------------------------- /elixir/flake.nix: -------------------------------------------------------------------------------- 1 | { 2 | description = "A Nix-flake-based Elixir development environment"; 3 | 4 | inputs.nixpkgs.url = "https://flakehub.com/f/NixOS/nixpkgs/0.1"; 5 | 6 | outputs = inputs: 7 | let 8 | supportedSystems = [ "x86_64-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin" ]; 9 | forEachSupportedSystem = f: inputs.nixpkgs.lib.genAttrs supportedSystems (system: f { 10 | pkgs = import inputs.nixpkgs { 11 | inherit system; 12 | overlays = [ inputs.self.overlays.default ]; 13 | }; 14 | }); 15 | in 16 | { 17 | overlays.default = final: prev: rec { 18 | # documentation 19 | # https://nixos.org/manual/nixpkgs/stable/#sec-beam 20 | 21 | # ==== ERLANG ==== 22 | 23 | # use whatever version is currently defined in nixpkgs 24 | # erlang = pkgs.beam.interpreters.erlang; 25 | 26 | # use latest version of Erlang 27 27 | erlang = final.beam.interpreters.erlang_27; 28 | 29 | # specify exact version of Erlang OTP 30 | # erlang = pkgs.beam.interpreters.erlang.override { 31 | # version = "26.2.2"; 32 | # sha256 = "sha256-7S+mC4pDcbXyhW2r5y8+VcX9JQXq5iEUJZiFmgVMPZ0="; 33 | # } 34 | 35 | # ==== BEAM packages ==== 36 | 37 | # all BEAM packages will be compile with your preferred erlang version 38 | pkgs-beam = final.beam.packagesWith erlang; 39 | 40 | # ==== Elixir ==== 41 | 42 | # use whatever version is currently defined in nixpkgs 43 | # elixir = pkgs-beam.elixir; 44 | 45 | # use latest version of Elixir 1.17 46 | elixir = pkgs-beam.elixir_1_17; 47 | 48 | # specify exact version of Elixir 49 | # elixir = pkgs-beam.elixir.override { 50 | # version = "1.17.1"; 51 | # sha256 = "sha256-a7A+426uuo3bUjggkglY1lqHmSbZNpjPaFpQUXYtW9k="; 52 | # }; 53 | }; 54 | 55 | devShells = forEachSupportedSystem ({ pkgs }: { 56 | default = pkgs.mkShell { 57 | packages = with pkgs; [ 58 | # use the Elixr/OTP versions defined above; will also install OTP, mix, hex, rebar3 59 | elixir 60 | 61 | # mix needs it for downloading dependencies 62 | git 63 | 64 | # probably needed for your Phoenix assets 65 | nodejs_20 66 | ] 67 | ++ 68 | # Linux only 69 | pkgs.lib.optionals pkgs.stdenv.isLinux (with pkgs; [ 70 | gigalixir 71 | inotify-tools 72 | libnotify 73 | ]) 74 | ++ 75 | # macOS only 76 | pkgs.lib.optionals pkgs.stdenv.isDarwin (with pkgs; [ 77 | terminal-notifier 78 | darwin.apple_sdk.frameworks.CoreFoundation 79 | darwin.apple_sdk.frameworks.CoreServices 80 | ]); 81 | }; 82 | }); 83 | }; 84 | } 85 | -------------------------------------------------------------------------------- /elm/.envrc: -------------------------------------------------------------------------------- 1 | use flake 2 | -------------------------------------------------------------------------------- /elm/flake.lock: -------------------------------------------------------------------------------- 1 | { 2 | "nodes": { 3 | "nixpkgs": { 4 | "locked": { 5 | "lastModified": 1748693115, 6 | "narHash": "sha256-StSrWhklmDuXT93yc3GrTlb0cKSS0agTAxMGjLKAsY8=", 7 | "rev": "910796cabe436259a29a72e8d3f5e180fc6dfacc", 8 | "revCount": 808478, 9 | "type": "tarball", 10 | "url": "https://api.flakehub.com/f/pinned/NixOS/nixpkgs/0.1.808478%2Brev-910796cabe436259a29a72e8d3f5e180fc6dfacc/01972ad6-3b3d-7826-b788-216d339063fe/source.tar.gz" 11 | }, 12 | "original": { 13 | "type": "tarball", 14 | "url": "https://flakehub.com/f/NixOS/nixpkgs/0.1" 15 | } 16 | }, 17 | "root": { 18 | "inputs": { 19 | "nixpkgs": "nixpkgs" 20 | } 21 | } 22 | }, 23 | "root": "root", 24 | "version": 7 25 | } 26 | -------------------------------------------------------------------------------- /elm/flake.nix: -------------------------------------------------------------------------------- 1 | { 2 | description = "A Nix-flake-based Elm development environment"; 3 | 4 | inputs.nixpkgs.url = "https://flakehub.com/f/NixOS/nixpkgs/0.1"; 5 | 6 | outputs = inputs: 7 | let 8 | supportedSystems = [ "x86_64-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin" ]; 9 | forEachSupportedSystem = f: inputs.nixpkgs.lib.genAttrs supportedSystems (system: f { 10 | pkgs = import inputs.nixpkgs { inherit system; }; 11 | }); 12 | in 13 | { 14 | devShells = forEachSupportedSystem ({ pkgs }: { 15 | default = pkgs.mkShell { 16 | packages = (with pkgs.elmPackages; [ elm ]) ++ (with pkgs; [ elm2nix ]); 17 | }; 18 | }); 19 | }; 20 | } 21 | -------------------------------------------------------------------------------- /empty/.envrc: -------------------------------------------------------------------------------- 1 | use flake 2 | -------------------------------------------------------------------------------- /empty/flake.lock: -------------------------------------------------------------------------------- 1 | { 2 | "nodes": { 3 | "nixpkgs": { 4 | "locked": { 5 | "lastModified": 1748693115, 6 | "narHash": "sha256-StSrWhklmDuXT93yc3GrTlb0cKSS0agTAxMGjLKAsY8=", 7 | "rev": "910796cabe436259a29a72e8d3f5e180fc6dfacc", 8 | "revCount": 808478, 9 | "type": "tarball", 10 | "url": "https://api.flakehub.com/f/pinned/NixOS/nixpkgs/0.1.808478%2Brev-910796cabe436259a29a72e8d3f5e180fc6dfacc/01972ad6-3b3d-7826-b788-216d339063fe/source.tar.gz" 11 | }, 12 | "original": { 13 | "type": "tarball", 14 | "url": "https://flakehub.com/f/NixOS/nixpkgs/0.1" 15 | } 16 | }, 17 | "root": { 18 | "inputs": { 19 | "nixpkgs": "nixpkgs" 20 | } 21 | } 22 | }, 23 | "root": "root", 24 | "version": 7 25 | } 26 | -------------------------------------------------------------------------------- /empty/flake.nix: -------------------------------------------------------------------------------- 1 | { 2 | description = "An empty flake template that you can adapt to your own environment"; 3 | 4 | # Flake inputs 5 | inputs.nixpkgs.url = "https://flakehub.com/f/NixOS/nixpkgs/0.1"; 6 | 7 | # Flake outputs 8 | outputs = inputs: 9 | let 10 | # The systems supported for this flake 11 | supportedSystems = [ 12 | "x86_64-linux" # 64-bit Intel/AMD Linux 13 | "aarch64-linux" # 64-bit ARM Linux 14 | "x86_64-darwin" # 64-bit Intel macOS 15 | "aarch64-darwin" # 64-bit ARM macOS 16 | ]; 17 | 18 | # Helper to provide system-specific attributes 19 | forEachSupportedSystem = f: inputs.nixpkgs.lib.genAttrs supportedSystems (system: f { 20 | pkgs = import inputs.nixpkgs { inherit system; }; 21 | }); 22 | in 23 | { 24 | devShells = forEachSupportedSystem ({ pkgs }: { 25 | default = pkgs.mkShell { 26 | # The Nix packages provided in the environment 27 | # Add any you need here 28 | packages = with pkgs; [ ]; 29 | 30 | # Set any environment variables for your dev shell 31 | env = { }; 32 | 33 | # Add any shell logic you want executed any time the environment is activated 34 | shellHook = '' 35 | ''; 36 | }; 37 | }); 38 | }; 39 | } 40 | -------------------------------------------------------------------------------- /flake.lock: -------------------------------------------------------------------------------- 1 | { 2 | "nodes": { 3 | "nixpkgs": { 4 | "locked": { 5 | "lastModified": 1746904237, 6 | "narHash": "sha256-3e+AVBczosP5dCLQmMoMEogM57gmZ2qrVSrmq9aResQ=", 7 | "rev": "d89fc19e405cb2d55ce7cc114356846a0ee5e956", 8 | "revCount": 797896, 9 | "type": "tarball", 10 | "url": "https://api.flakehub.com/f/pinned/NixOS/nixpkgs/0.1.797896%2Brev-d89fc19e405cb2d55ce7cc114356846a0ee5e956/0196c1a7-7ad3-74a9-9d50-1b854aca6d6c/source.tar.gz" 11 | }, 12 | "original": { 13 | "type": "tarball", 14 | "url": "https://flakehub.com/f/NixOS/nixpkgs/0.1" 15 | } 16 | }, 17 | "root": { 18 | "inputs": { 19 | "nixpkgs": "nixpkgs" 20 | } 21 | } 22 | }, 23 | "root": "root", 24 | "version": 7 25 | } 26 | -------------------------------------------------------------------------------- /flake.nix: -------------------------------------------------------------------------------- 1 | { 2 | description = "Ready-made templates for easily creating flake-driven environments"; 3 | 4 | inputs.nixpkgs.url = "https://flakehub.com/f/NixOS/nixpkgs/0.1"; 5 | 6 | outputs = inputs: 7 | let 8 | supportedSystems = [ "x86_64-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin" ]; 9 | forEachSupportedSystem = f: inputs.nixpkgs.lib.genAttrs supportedSystems (system: f { 10 | pkgs = import inputs.nixpkgs { inherit system; }; 11 | }); 12 | 13 | scriptDrvs = forEachSupportedSystem ({ pkgs }: 14 | let 15 | getSystem = "SYSTEM=$(nix eval --impure --raw --expr 'builtins.currentSystem')"; 16 | forEachDir = exec: '' 17 | for dir in */; do 18 | ( 19 | cd "''${dir}" 20 | 21 | ${exec} 22 | ) 23 | done 24 | ''; 25 | in 26 | { 27 | format = pkgs.writeShellApplication { 28 | name = "format"; 29 | runtimeInputs = with pkgs; [ nixpkgs-fmt ]; 30 | text = '' 31 | shopt -s globstar 32 | 33 | nixpkgs-fmt -- **/*.nix 34 | ''; 35 | }; 36 | 37 | # only run this locally, as Actions will run out of disk space 38 | build = pkgs.writeShellApplication { 39 | name = "build"; 40 | text = '' 41 | ${getSystem} 42 | 43 | ${forEachDir '' 44 | echo "building ''${dir}" 45 | nix build ".#devShells.''${SYSTEM}.default" 46 | ''} 47 | ''; 48 | }; 49 | 50 | check = pkgs.writeShellApplication { 51 | name = "check"; 52 | text = forEachDir '' 53 | echo "checking ''${dir}" 54 | nix flake check --all-systems --no-build 55 | ''; 56 | }; 57 | 58 | update = pkgs.writeShellApplication { 59 | name = "update"; 60 | text = forEachDir '' 61 | echo "updating ''${dir}" 62 | nix flake update 63 | ''; 64 | }; 65 | }); 66 | in 67 | { 68 | devShells = forEachSupportedSystem ({ pkgs }: { 69 | default = pkgs.mkShell { 70 | packages = 71 | with scriptDrvs.${pkgs.system}; [ 72 | build 73 | check 74 | format 75 | update 76 | ] ++ [ pkgs.nixpkgs-fmt ]; 77 | }; 78 | }); 79 | 80 | packages = forEachSupportedSystem ({ pkgs }: 81 | rec { 82 | default = dvt; 83 | dvt = pkgs.writeShellApplication { 84 | name = "dvt"; 85 | bashOptions = [ "errexit" "pipefail" ]; 86 | text = '' 87 | if [ -z "''${1}" ]; then 88 | echo "no template specified" 89 | exit 1 90 | fi 91 | 92 | TEMPLATE=$1 93 | 94 | nix \ 95 | --experimental-features 'nix-command flakes' \ 96 | flake init \ 97 | --template \ 98 | "https://flakehub.com/f/the-nix-way/dev-templates/0.1#''${TEMPLATE}" 99 | ''; 100 | }; 101 | } 102 | ); 103 | } 104 | 105 | // 106 | 107 | { 108 | templates = rec { 109 | default = empty; 110 | 111 | bun = { 112 | path = ./bun; 113 | description = "Bun development environment"; 114 | }; 115 | 116 | c-cpp = { 117 | path = ./c-cpp; 118 | description = "C/C++ development environment"; 119 | }; 120 | 121 | clojure = { 122 | path = ./clojure; 123 | description = "Clojure development environment"; 124 | }; 125 | 126 | cue = { 127 | path = ./cue; 128 | description = "Cue development environment"; 129 | }; 130 | 131 | dhall = { 132 | path = ./dhall; 133 | description = "Dhall development environment"; 134 | }; 135 | 136 | elixir = { 137 | path = ./elixir; 138 | description = "Elixir development environment"; 139 | }; 140 | 141 | elm = { 142 | path = ./elm; 143 | description = "Elm development environment"; 144 | }; 145 | 146 | empty = { 147 | path = ./empty; 148 | description = "Empty dev template that you can customize at will"; 149 | }; 150 | 151 | gleam = { 152 | path = ./gleam; 153 | description = "Gleam development environment"; 154 | }; 155 | 156 | go = { 157 | path = ./go; 158 | description = "Go (Golang) development environment"; 159 | }; 160 | 161 | hashi = { 162 | path = ./hashi; 163 | description = "HashiCorp DevOps tools development environment"; 164 | }; 165 | 166 | haskell = { 167 | path = ./haskell; 168 | description = "Haskell development environment"; 169 | }; 170 | 171 | java = { 172 | path = ./java; 173 | description = "Java development environment"; 174 | }; 175 | 176 | jupyter = { 177 | path = ./jupyter; 178 | description = "Jupyter development environment"; 179 | }; 180 | 181 | kotlin = { 182 | path = ./kotlin; 183 | description = "Kotlin development environment"; 184 | }; 185 | 186 | latex = { 187 | path = ./latex; 188 | description = "LaTeX development environment"; 189 | }; 190 | 191 | lean4 = { 192 | path = ./lean4; 193 | description = "Lean 4 development environment"; 194 | }; 195 | 196 | nickel = { 197 | path = ./nickel; 198 | description = "Nickel development environment"; 199 | }; 200 | 201 | nim = { 202 | path = ./nim; 203 | description = "Nim development environment"; 204 | }; 205 | 206 | nix = { 207 | path = ./nix; 208 | description = "Nix development environment"; 209 | }; 210 | 211 | node = { 212 | path = ./node; 213 | description = "Node.js development environment"; 214 | }; 215 | 216 | ocaml = { 217 | path = ./ocaml; 218 | description = "OCaml development environment"; 219 | }; 220 | 221 | odin = { 222 | path = ./odin; 223 | description = "Odin development environment"; 224 | }; 225 | 226 | opa = { 227 | path = ./opa; 228 | description = "Open Policy Agent development environment"; 229 | }; 230 | 231 | php = { 232 | path = ./php; 233 | description = "PHP development environment"; 234 | }; 235 | 236 | platformio = { 237 | path = ./platformio; 238 | description = "PlatformIO development environment"; 239 | }; 240 | 241 | protobuf = { 242 | path = ./protobuf; 243 | description = "Protobuf development environment"; 244 | }; 245 | 246 | pulumi = { 247 | path = ./pulumi; 248 | description = "Pulumi development environment"; 249 | }; 250 | 251 | purescript = { 252 | path = ./purescript; 253 | description = "Purescript development environment"; 254 | }; 255 | 256 | python = { 257 | path = ./python; 258 | description = "Python development environment"; 259 | }; 260 | 261 | r = { 262 | path = ./r; 263 | description = "R development environment"; 264 | }; 265 | 266 | ruby = { 267 | path = ./ruby; 268 | description = "Ruby development environment"; 269 | }; 270 | 271 | rust = { 272 | path = ./rust; 273 | description = "Rust development environment"; 274 | }; 275 | 276 | rust-toolchain = { 277 | path = ./rust-toolchain; 278 | description = "Rust development environment with Rust version defined by a rust-toolchain.toml file"; 279 | }; 280 | 281 | scala = { 282 | path = ./scala; 283 | description = "Scala development environment"; 284 | }; 285 | 286 | shell = { 287 | path = ./shell; 288 | description = "Shell script development environment"; 289 | }; 290 | 291 | swi-prolog = { 292 | path = ./swi-prolog; 293 | description = "Swi-prolog development environment"; 294 | }; 295 | 296 | swift = { 297 | path = ./swift; 298 | description = "Swift development environment"; 299 | }; 300 | 301 | vlang = { 302 | path = ./vlang; 303 | description = "Vlang developent environment"; 304 | }; 305 | 306 | zig = { 307 | path = ./zig; 308 | description = "Zig development environment"; 309 | }; 310 | 311 | # Aliases 312 | c = c-cpp; 313 | cpp = c-cpp; 314 | rt = rust-toolchain; 315 | }; 316 | }; 317 | } 318 | -------------------------------------------------------------------------------- /gleam/.envrc: -------------------------------------------------------------------------------- 1 | use flake 2 | -------------------------------------------------------------------------------- /gleam/flake.lock: -------------------------------------------------------------------------------- 1 | { 2 | "nodes": { 3 | "nixpkgs": { 4 | "locked": { 5 | "lastModified": 1748693115, 6 | "narHash": "sha256-StSrWhklmDuXT93yc3GrTlb0cKSS0agTAxMGjLKAsY8=", 7 | "rev": "910796cabe436259a29a72e8d3f5e180fc6dfacc", 8 | "revCount": 808478, 9 | "type": "tarball", 10 | "url": "https://api.flakehub.com/f/pinned/NixOS/nixpkgs/0.1.808478%2Brev-910796cabe436259a29a72e8d3f5e180fc6dfacc/01972ad6-3b3d-7826-b788-216d339063fe/source.tar.gz" 11 | }, 12 | "original": { 13 | "type": "tarball", 14 | "url": "https://flakehub.com/f/NixOS/nixpkgs/0.1" 15 | } 16 | }, 17 | "root": { 18 | "inputs": { 19 | "nixpkgs": "nixpkgs" 20 | } 21 | } 22 | }, 23 | "root": "root", 24 | "version": 7 25 | } 26 | -------------------------------------------------------------------------------- /gleam/flake.nix: -------------------------------------------------------------------------------- 1 | { 2 | description = "A Nix-flake-based Gleam development environment"; 3 | 4 | inputs.nixpkgs.url = "https://flakehub.com/f/NixOS/nixpkgs/0.1"; 5 | 6 | outputs = inputs: 7 | let 8 | supportedSystems = [ "x86_64-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin" ]; 9 | forEachSupportedSystem = f: inputs.nixpkgs.lib.genAttrs supportedSystems (system: f { 10 | pkgs = import inputs.nixpkgs { inherit system; }; 11 | }); 12 | in 13 | { 14 | devShells = forEachSupportedSystem ({ pkgs }: { 15 | default = pkgs.mkShell { 16 | packages = with pkgs; [ gleam ]; 17 | }; 18 | }); 19 | }; 20 | } 21 | -------------------------------------------------------------------------------- /go/.envrc: -------------------------------------------------------------------------------- 1 | use flake 2 | -------------------------------------------------------------------------------- /go/flake.lock: -------------------------------------------------------------------------------- 1 | { 2 | "nodes": { 3 | "nixpkgs": { 4 | "locked": { 5 | "lastModified": 1748693115, 6 | "narHash": "sha256-StSrWhklmDuXT93yc3GrTlb0cKSS0agTAxMGjLKAsY8=", 7 | "rev": "910796cabe436259a29a72e8d3f5e180fc6dfacc", 8 | "revCount": 808478, 9 | "type": "tarball", 10 | "url": "https://api.flakehub.com/f/pinned/NixOS/nixpkgs/0.1.808478%2Brev-910796cabe436259a29a72e8d3f5e180fc6dfacc/01972ad6-3b3d-7826-b788-216d339063fe/source.tar.gz" 11 | }, 12 | "original": { 13 | "type": "tarball", 14 | "url": "https://flakehub.com/f/NixOS/nixpkgs/0.1" 15 | } 16 | }, 17 | "root": { 18 | "inputs": { 19 | "nixpkgs": "nixpkgs" 20 | } 21 | } 22 | }, 23 | "root": "root", 24 | "version": 7 25 | } 26 | -------------------------------------------------------------------------------- /go/flake.nix: -------------------------------------------------------------------------------- 1 | { 2 | description = "A Nix-flake-based Go 1.22 development environment"; 3 | 4 | inputs.nixpkgs.url = "https://flakehub.com/f/NixOS/nixpkgs/0.1"; 5 | 6 | outputs = inputs: 7 | let 8 | goVersion = 23; # Change this to update the whole stack 9 | 10 | supportedSystems = [ "x86_64-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin" ]; 11 | forEachSupportedSystem = f: inputs.nixpkgs.lib.genAttrs supportedSystems (system: f { 12 | pkgs = import inputs.nixpkgs { 13 | inherit system; 14 | overlays = [ inputs.self.overlays.default ]; 15 | }; 16 | }); 17 | in 18 | { 19 | overlays.default = final: prev: { 20 | go = final."go_1_${toString goVersion}"; 21 | }; 22 | 23 | devShells = forEachSupportedSystem ({ pkgs }: { 24 | default = pkgs.mkShell { 25 | packages = with pkgs; [ 26 | # go (version is specified by overlay) 27 | go 28 | 29 | # goimports, godoc, etc. 30 | gotools 31 | 32 | # https://github.com/golangci/golangci-lint 33 | golangci-lint 34 | ]; 35 | }; 36 | }); 37 | }; 38 | } 39 | -------------------------------------------------------------------------------- /hashi/.envrc: -------------------------------------------------------------------------------- 1 | use flake 2 | -------------------------------------------------------------------------------- /hashi/flake.lock: -------------------------------------------------------------------------------- 1 | { 2 | "nodes": { 3 | "nixpkgs": { 4 | "locked": { 5 | "lastModified": 1748693115, 6 | "narHash": "sha256-StSrWhklmDuXT93yc3GrTlb0cKSS0agTAxMGjLKAsY8=", 7 | "rev": "910796cabe436259a29a72e8d3f5e180fc6dfacc", 8 | "revCount": 808478, 9 | "type": "tarball", 10 | "url": "https://api.flakehub.com/f/pinned/NixOS/nixpkgs/0.1.808478%2Brev-910796cabe436259a29a72e8d3f5e180fc6dfacc/01972ad6-3b3d-7826-b788-216d339063fe/source.tar.gz" 11 | }, 12 | "original": { 13 | "type": "tarball", 14 | "url": "https://flakehub.com/f/NixOS/nixpkgs/0.1" 15 | } 16 | }, 17 | "root": { 18 | "inputs": { 19 | "nixpkgs": "nixpkgs" 20 | } 21 | } 22 | }, 23 | "root": "root", 24 | "version": 7 25 | } 26 | -------------------------------------------------------------------------------- /hashi/flake.nix: -------------------------------------------------------------------------------- 1 | { 2 | description = 3 | "A Nix-flake-based development environment for Terraform, Packer, and Nomad"; 4 | 5 | 6 | inputs.nixpkgs.url = "https://flakehub.com/f/NixOS/nixpkgs/0.1"; 7 | 8 | outputs = inputs: 9 | let 10 | supportedSystems = [ "x86_64-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin" ]; 11 | forEachSupportedSystem = f: inputs.nixpkgs.lib.genAttrs supportedSystems (system: f { 12 | pkgs = import inputs.nixpkgs { inherit system; config.allowUnfree = true; }; 13 | }); 14 | in 15 | { 16 | devShells = forEachSupportedSystem ({ pkgs }: { 17 | default = pkgs.mkShell { 18 | packages = with pkgs; [ 19 | packer 20 | terraform 21 | tflint 22 | nomad 23 | vault 24 | nomad-autoscaler 25 | nomad-pack 26 | levant 27 | damon 28 | terragrunt 29 | ]; 30 | }; 31 | }); 32 | }; 33 | } 34 | -------------------------------------------------------------------------------- /haskell/.envrc: -------------------------------------------------------------------------------- 1 | use flake 2 | -------------------------------------------------------------------------------- /haskell/flake.lock: -------------------------------------------------------------------------------- 1 | { 2 | "nodes": { 3 | "nixpkgs": { 4 | "locked": { 5 | "lastModified": 1748693115, 6 | "narHash": "sha256-StSrWhklmDuXT93yc3GrTlb0cKSS0agTAxMGjLKAsY8=", 7 | "rev": "910796cabe436259a29a72e8d3f5e180fc6dfacc", 8 | "revCount": 808478, 9 | "type": "tarball", 10 | "url": "https://api.flakehub.com/f/pinned/NixOS/nixpkgs/0.1.808478%2Brev-910796cabe436259a29a72e8d3f5e180fc6dfacc/01972ad6-3b3d-7826-b788-216d339063fe/source.tar.gz" 11 | }, 12 | "original": { 13 | "type": "tarball", 14 | "url": "https://flakehub.com/f/NixOS/nixpkgs/0.1" 15 | } 16 | }, 17 | "root": { 18 | "inputs": { 19 | "nixpkgs": "nixpkgs" 20 | } 21 | } 22 | }, 23 | "root": "root", 24 | "version": 7 25 | } 26 | -------------------------------------------------------------------------------- /haskell/flake.nix: -------------------------------------------------------------------------------- 1 | { 2 | description = "A Nix-flake-based Haskell development environment"; 3 | 4 | inputs.nixpkgs.url = "https://flakehub.com/f/NixOS/nixpkgs/0.1"; 5 | 6 | outputs = inputs: 7 | let 8 | supportedSystems = [ "x86_64-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin" ]; 9 | forEachSupportedSystem = f: inputs.nixpkgs.lib.genAttrs supportedSystems (system: f { 10 | pkgs = import inputs.nixpkgs { inherit system; }; 11 | }); 12 | in 13 | { 14 | devShells = forEachSupportedSystem ({ pkgs }: { 15 | default = pkgs.mkShell { 16 | packages = with pkgs; [ cabal-install ghc haskell-language-server ]; 17 | }; 18 | }); 19 | }; 20 | } 21 | -------------------------------------------------------------------------------- /haxe/.envrc: -------------------------------------------------------------------------------- 1 | use flake -------------------------------------------------------------------------------- /haxe/flake.lock: -------------------------------------------------------------------------------- 1 | { 2 | "nodes": { 3 | "nixpkgs": { 4 | "locked": { 5 | "lastModified": 1748693115, 6 | "narHash": "sha256-StSrWhklmDuXT93yc3GrTlb0cKSS0agTAxMGjLKAsY8=", 7 | "rev": "910796cabe436259a29a72e8d3f5e180fc6dfacc", 8 | "revCount": 808478, 9 | "type": "tarball", 10 | "url": "https://api.flakehub.com/f/pinned/NixOS/nixpkgs/0.1.808478%2Brev-910796cabe436259a29a72e8d3f5e180fc6dfacc/01972ad6-3b3d-7826-b788-216d339063fe/source.tar.gz" 11 | }, 12 | "original": { 13 | "type": "tarball", 14 | "url": "https://flakehub.com/f/NixOS/nixpkgs/0.1" 15 | } 16 | }, 17 | "root": { 18 | "inputs": { 19 | "nixpkgs": "nixpkgs" 20 | } 21 | } 22 | }, 23 | "root": "root", 24 | "version": 7 25 | } 26 | -------------------------------------------------------------------------------- /haxe/flake.nix: -------------------------------------------------------------------------------- 1 | { 2 | description = "A Nix-flake-based Haxe development environment"; 3 | 4 | inputs.nixpkgs.url = "https://flakehub.com/f/NixOS/nixpkgs/0.1"; 5 | 6 | outputs = inputs: 7 | let 8 | supportedSystems = [ "x86_64-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin" ]; 9 | forEachSupportedSystem = f: inputs.nixpkgs.lib.genAttrs supportedSystems (system: f { 10 | pkgs = import inputs.nixpkgs { inherit system; }; 11 | }); 12 | in 13 | { 14 | devShells = forEachSupportedSystem ({ pkgs }: { 15 | default = pkgs.mkShell { 16 | packages = with pkgs; [ haxe ]; 17 | }; 18 | }); 19 | }; 20 | } 21 | -------------------------------------------------------------------------------- /java/.envrc: -------------------------------------------------------------------------------- 1 | use flake 2 | -------------------------------------------------------------------------------- /java/flake.lock: -------------------------------------------------------------------------------- 1 | { 2 | "nodes": { 3 | "nixpkgs": { 4 | "locked": { 5 | "lastModified": 1748693115, 6 | "narHash": "sha256-StSrWhklmDuXT93yc3GrTlb0cKSS0agTAxMGjLKAsY8=", 7 | "rev": "910796cabe436259a29a72e8d3f5e180fc6dfacc", 8 | "revCount": 808478, 9 | "type": "tarball", 10 | "url": "https://api.flakehub.com/f/pinned/NixOS/nixpkgs/0.1.808478%2Brev-910796cabe436259a29a72e8d3f5e180fc6dfacc/01972ad6-3b3d-7826-b788-216d339063fe/source.tar.gz" 11 | }, 12 | "original": { 13 | "type": "tarball", 14 | "url": "https://flakehub.com/f/NixOS/nixpkgs/0.1" 15 | } 16 | }, 17 | "root": { 18 | "inputs": { 19 | "nixpkgs": "nixpkgs" 20 | } 21 | } 22 | }, 23 | "root": "root", 24 | "version": 7 25 | } 26 | -------------------------------------------------------------------------------- /java/flake.nix: -------------------------------------------------------------------------------- 1 | { 2 | description = "A Nix-flake-based Java development environment"; 3 | 4 | inputs.nixpkgs.url = "https://flakehub.com/f/NixOS/nixpkgs/0.1"; 5 | 6 | outputs = inputs: 7 | let 8 | javaVersion = 23; # Change this value to update the whole stack 9 | 10 | supportedSystems = [ "x86_64-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin" ]; 11 | forEachSupportedSystem = f: inputs.nixpkgs.lib.genAttrs supportedSystems (system: f { 12 | pkgs = import inputs.nixpkgs { 13 | inherit system; 14 | overlays = [ inputs.self.overlays.default ]; 15 | }; 16 | }); 17 | in 18 | { 19 | overlays.default = final: prev: 20 | let 21 | jdk = prev."jdk${toString javaVersion}"; 22 | in 23 | { 24 | inherit jdk; 25 | maven = prev.maven.override { jdk_headless = jdk; }; 26 | gradle = prev.gradle.override { java = jdk; }; 27 | lombok = prev.lombok.override { inherit jdk; }; 28 | }; 29 | 30 | devShells = forEachSupportedSystem ({ pkgs }: { 31 | default = pkgs.mkShell { 32 | packages = with pkgs; [ 33 | gcc 34 | gradle 35 | jdk 36 | maven 37 | ncurses 38 | patchelf 39 | zlib 40 | ]; 41 | 42 | shellHook = 43 | let 44 | loadLombok = "-javaagent:${pkgs.lombok}/share/java/lombok.jar"; 45 | prev = "\${JAVA_TOOL_OPTIONS:+ $JAVA_TOOL_OPTIONS}"; 46 | in 47 | '' 48 | export JAVA_TOOL_OPTIONS="${loadLombok}${prev}" 49 | ''; 50 | }; 51 | }); 52 | }; 53 | } 54 | -------------------------------------------------------------------------------- /jupyter/.envrc: -------------------------------------------------------------------------------- 1 | use flake 2 | -------------------------------------------------------------------------------- /jupyter/.gitignore: -------------------------------------------------------------------------------- 1 | /.venv/ 2 | -------------------------------------------------------------------------------- /jupyter/flake.lock: -------------------------------------------------------------------------------- 1 | { 2 | "nodes": { 3 | "nixpkgs": { 4 | "locked": { 5 | "lastModified": 1748693115, 6 | "narHash": "sha256-StSrWhklmDuXT93yc3GrTlb0cKSS0agTAxMGjLKAsY8=", 7 | "rev": "910796cabe436259a29a72e8d3f5e180fc6dfacc", 8 | "revCount": 808478, 9 | "type": "tarball", 10 | "url": "https://api.flakehub.com/f/pinned/NixOS/nixpkgs/0.1.808478%2Brev-910796cabe436259a29a72e8d3f5e180fc6dfacc/01972ad6-3b3d-7826-b788-216d339063fe/source.tar.gz" 11 | }, 12 | "original": { 13 | "type": "tarball", 14 | "url": "https://flakehub.com/f/NixOS/nixpkgs/0.1" 15 | } 16 | }, 17 | "root": { 18 | "inputs": { 19 | "nixpkgs": "nixpkgs" 20 | } 21 | } 22 | }, 23 | "root": "root", 24 | "version": 7 25 | } 26 | -------------------------------------------------------------------------------- /jupyter/flake.nix: -------------------------------------------------------------------------------- 1 | { 2 | description = "A Nix-flake-based Jupyter development environment"; 3 | 4 | inputs.nixpkgs.url = "https://flakehub.com/f/NixOS/nixpkgs/0.1"; 5 | 6 | outputs = inputs: 7 | let 8 | supportedSystems = [ "x86_64-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin" ]; 9 | forEachSupportedSystem = f: inputs.nixpkgs.lib.genAttrs supportedSystems (system: f { 10 | pkgs = import inputs.nixpkgs { inherit system; }; 11 | }); 12 | in 13 | { 14 | devShells = forEachSupportedSystem ({ pkgs }: { 15 | default = pkgs.mkShell { 16 | venvDir = ".venv"; 17 | packages = with pkgs; [ poetry python311 ] ++ (with python311Packages; [ 18 | ipykernel 19 | pip 20 | venvShellHook 21 | ]); 22 | }; 23 | }); 24 | }; 25 | } 26 | -------------------------------------------------------------------------------- /jupyter/pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool.poetry] 2 | name = "sample-project" 3 | version = "0.1.0" 4 | description = "" 5 | authors = ["user "] 6 | readme = "README.md" 7 | 8 | [tool.poetry.dependencies] 9 | python = "^3.11" 10 | 11 | 12 | [build-system] 13 | requires = ["poetry-core"] 14 | build-backend = "poetry.core.masonry.api" 15 | -------------------------------------------------------------------------------- /kotlin/.envrc: -------------------------------------------------------------------------------- 1 | use flake 2 | -------------------------------------------------------------------------------- /kotlin/flake.lock: -------------------------------------------------------------------------------- 1 | { 2 | "nodes": { 3 | "nixpkgs": { 4 | "locked": { 5 | "lastModified": 1748693115, 6 | "narHash": "sha256-StSrWhklmDuXT93yc3GrTlb0cKSS0agTAxMGjLKAsY8=", 7 | "rev": "910796cabe436259a29a72e8d3f5e180fc6dfacc", 8 | "revCount": 808478, 9 | "type": "tarball", 10 | "url": "https://api.flakehub.com/f/pinned/NixOS/nixpkgs/0.1.808478%2Brev-910796cabe436259a29a72e8d3f5e180fc6dfacc/01972ad6-3b3d-7826-b788-216d339063fe/source.tar.gz" 11 | }, 12 | "original": { 13 | "type": "tarball", 14 | "url": "https://flakehub.com/f/NixOS/nixpkgs/0.1" 15 | } 16 | }, 17 | "root": { 18 | "inputs": { 19 | "nixpkgs": "nixpkgs" 20 | } 21 | } 22 | }, 23 | "root": "root", 24 | "version": 7 25 | } 26 | -------------------------------------------------------------------------------- /kotlin/flake.nix: -------------------------------------------------------------------------------- 1 | { 2 | description = "A Nix-flake-based Kotlin development environment"; 3 | 4 | inputs.nixpkgs.url = "https://flakehub.com/f/NixOS/nixpkgs/0.1"; 5 | 6 | outputs = inputs: 7 | let 8 | javaVersion = 23; # Change this value to update the whole stack 9 | 10 | supportedSystems = [ "x86_64-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin" ]; 11 | forEachSupportedSystem = f: inputs.nixpkgs.lib.genAttrs supportedSystems (system: f { 12 | pkgs = import inputs.nixpkgs { 13 | inherit system; 14 | overlays = [ inputs.self.overlays.default ]; 15 | }; 16 | }); 17 | in 18 | { 19 | overlays.default = 20 | final: prev: 21 | let 22 | jdk = prev."jdk${toString javaVersion}"; 23 | in 24 | { 25 | gradle = prev.gradle.override { java = jdk; }; 26 | kotlin = prev.kotlin.override { jre = jdk; }; 27 | }; 28 | 29 | devShells = forEachSupportedSystem ({ pkgs }: { 30 | default = pkgs.mkShell { 31 | packages = with pkgs; [ 32 | gcc 33 | gradle 34 | kotlin 35 | ncurses 36 | patchelf 37 | zlib 38 | ]; 39 | }; 40 | }); 41 | }; 42 | } 43 | -------------------------------------------------------------------------------- /latex/.envrc: -------------------------------------------------------------------------------- 1 | use flake 2 | -------------------------------------------------------------------------------- /latex/flake.lock: -------------------------------------------------------------------------------- 1 | { 2 | "nodes": { 3 | "nixpkgs": { 4 | "locked": { 5 | "lastModified": 1748693115, 6 | "narHash": "sha256-StSrWhklmDuXT93yc3GrTlb0cKSS0agTAxMGjLKAsY8=", 7 | "rev": "910796cabe436259a29a72e8d3f5e180fc6dfacc", 8 | "revCount": 808478, 9 | "type": "tarball", 10 | "url": "https://api.flakehub.com/f/pinned/NixOS/nixpkgs/0.1.808478%2Brev-910796cabe436259a29a72e8d3f5e180fc6dfacc/01972ad6-3b3d-7826-b788-216d339063fe/source.tar.gz" 11 | }, 12 | "original": { 13 | "type": "tarball", 14 | "url": "https://flakehub.com/f/NixOS/nixpkgs/0.1" 15 | } 16 | }, 17 | "root": { 18 | "inputs": { 19 | "nixpkgs": "nixpkgs" 20 | } 21 | } 22 | }, 23 | "root": "root", 24 | "version": 7 25 | } 26 | -------------------------------------------------------------------------------- /latex/flake.nix: -------------------------------------------------------------------------------- 1 | { 2 | description = "A Nix-flake-based LaTeX development environment"; 3 | 4 | inputs.nixpkgs.url = "https://flakehub.com/f/NixOS/nixpkgs/0.1"; 5 | 6 | outputs = inputs: 7 | let 8 | supportedSystems = [ "x86_64-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin" ]; 9 | forEachSupportedSystem = f: inputs.nixpkgs.lib.genAttrs supportedSystems (system: f { 10 | pkgs = import inputs.nixpkgs { inherit system; }; 11 | }); 12 | in 13 | { 14 | devShells = forEachSupportedSystem ({ pkgs }: { 15 | default = pkgs.mkShell { 16 | packages = with pkgs; [ 17 | texlive.combined.scheme-full 18 | texlab 19 | tectonic 20 | ]; 21 | }; 22 | }); 23 | }; 24 | } 25 | -------------------------------------------------------------------------------- /lean4/.envrc: -------------------------------------------------------------------------------- 1 | use flake 2 | -------------------------------------------------------------------------------- /lean4/flake.lock: -------------------------------------------------------------------------------- 1 | { 2 | "nodes": { 3 | "nixpkgs": { 4 | "locked": { 5 | "lastModified": 1748693115, 6 | "narHash": "sha256-StSrWhklmDuXT93yc3GrTlb0cKSS0agTAxMGjLKAsY8=", 7 | "rev": "910796cabe436259a29a72e8d3f5e180fc6dfacc", 8 | "revCount": 808478, 9 | "type": "tarball", 10 | "url": "https://api.flakehub.com/f/pinned/NixOS/nixpkgs/0.1.808478%2Brev-910796cabe436259a29a72e8d3f5e180fc6dfacc/01972ad6-3b3d-7826-b788-216d339063fe/source.tar.gz" 11 | }, 12 | "original": { 13 | "type": "tarball", 14 | "url": "https://flakehub.com/f/NixOS/nixpkgs/0.1" 15 | } 16 | }, 17 | "root": { 18 | "inputs": { 19 | "nixpkgs": "nixpkgs" 20 | } 21 | } 22 | }, 23 | "root": "root", 24 | "version": 7 25 | } 26 | -------------------------------------------------------------------------------- /lean4/flake.nix: -------------------------------------------------------------------------------- 1 | { 2 | description = "A Nix-flake-based Lean 4 development environment"; 3 | 4 | inputs.nixpkgs.url = "https://flakehub.com/f/NixOS/nixpkgs/0.1"; 5 | 6 | outputs = inputs: 7 | let 8 | supportedSystems = [ "x86_64-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin" ]; 9 | forEachSupportedSystem = f: inputs.nixpkgs.lib.genAttrs supportedSystems (system: f { 10 | pkgs = import inputs.nixpkgs { inherit system; }; 11 | }); 12 | in 13 | { 14 | devShells = forEachSupportedSystem ({ pkgs }: { 15 | default = pkgs.mkShell { 16 | packages = with pkgs; [ lean4 ]; 17 | }; 18 | }); 19 | }; 20 | } 21 | -------------------------------------------------------------------------------- /nickel/.envrc: -------------------------------------------------------------------------------- 1 | use flake 2 | -------------------------------------------------------------------------------- /nickel/flake.lock: -------------------------------------------------------------------------------- 1 | { 2 | "nodes": { 3 | "nixpkgs": { 4 | "locked": { 5 | "lastModified": 1748693115, 6 | "narHash": "sha256-StSrWhklmDuXT93yc3GrTlb0cKSS0agTAxMGjLKAsY8=", 7 | "rev": "910796cabe436259a29a72e8d3f5e180fc6dfacc", 8 | "revCount": 808478, 9 | "type": "tarball", 10 | "url": "https://api.flakehub.com/f/pinned/NixOS/nixpkgs/0.1.808478%2Brev-910796cabe436259a29a72e8d3f5e180fc6dfacc/01972ad6-3b3d-7826-b788-216d339063fe/source.tar.gz" 11 | }, 12 | "original": { 13 | "type": "tarball", 14 | "url": "https://flakehub.com/f/NixOS/nixpkgs/0.1" 15 | } 16 | }, 17 | "root": { 18 | "inputs": { 19 | "nixpkgs": "nixpkgs" 20 | } 21 | } 22 | }, 23 | "root": "root", 24 | "version": 7 25 | } 26 | -------------------------------------------------------------------------------- /nickel/flake.nix: -------------------------------------------------------------------------------- 1 | { 2 | description = "A Nix-flake-based Nickel development environment"; 3 | 4 | inputs.nixpkgs.url = "https://flakehub.com/f/NixOS/nixpkgs/0.1"; 5 | 6 | outputs = inputs: 7 | let 8 | supportedSystems = [ "x86_64-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin" ]; 9 | forEachSupportedSystem = f: inputs.nixpkgs.lib.genAttrs supportedSystems (system: f { 10 | pkgs = import inputs.nixpkgs { inherit system; }; 11 | }); 12 | in 13 | { 14 | devShells = forEachSupportedSystem ({ pkgs }: { 15 | default = pkgs.mkShell { 16 | packages = with pkgs; [ nickel ]; 17 | }; 18 | }); 19 | }; 20 | } 21 | -------------------------------------------------------------------------------- /nim/.envrc: -------------------------------------------------------------------------------- 1 | use flake 2 | -------------------------------------------------------------------------------- /nim/flake.lock: -------------------------------------------------------------------------------- 1 | { 2 | "nodes": { 3 | "nixpkgs": { 4 | "locked": { 5 | "lastModified": 1748693115, 6 | "narHash": "sha256-StSrWhklmDuXT93yc3GrTlb0cKSS0agTAxMGjLKAsY8=", 7 | "rev": "910796cabe436259a29a72e8d3f5e180fc6dfacc", 8 | "revCount": 808478, 9 | "type": "tarball", 10 | "url": "https://api.flakehub.com/f/pinned/NixOS/nixpkgs/0.1.808478%2Brev-910796cabe436259a29a72e8d3f5e180fc6dfacc/01972ad6-3b3d-7826-b788-216d339063fe/source.tar.gz" 11 | }, 12 | "original": { 13 | "type": "tarball", 14 | "url": "https://flakehub.com/f/NixOS/nixpkgs/0.1" 15 | } 16 | }, 17 | "root": { 18 | "inputs": { 19 | "nixpkgs": "nixpkgs" 20 | } 21 | } 22 | }, 23 | "root": "root", 24 | "version": 7 25 | } 26 | -------------------------------------------------------------------------------- /nim/flake.nix: -------------------------------------------------------------------------------- 1 | { 2 | description = "A Nix-flake-based Nim development environment"; 3 | 4 | inputs.nixpkgs.url = "https://flakehub.com/f/NixOS/nixpkgs/0.1"; 5 | 6 | outputs = inputs: 7 | let 8 | supportedSystems = [ "x86_64-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin" ]; 9 | forEachSupportedSystem = f: inputs.nixpkgs.lib.genAttrs supportedSystems (system: f { 10 | pkgs = import inputs.nixpkgs { inherit system; }; 11 | }); 12 | in 13 | { 14 | devShells = forEachSupportedSystem ({ pkgs }: { 15 | default = pkgs.mkShell { 16 | packages = with pkgs; [ nim nimble ]; 17 | }; 18 | }); 19 | }; 20 | } 21 | -------------------------------------------------------------------------------- /nix/.envrc: -------------------------------------------------------------------------------- 1 | use flake 2 | -------------------------------------------------------------------------------- /nix/flake.lock: -------------------------------------------------------------------------------- 1 | { 2 | "nodes": { 3 | "nixpkgs": { 4 | "locked": { 5 | "lastModified": 1748693115, 6 | "narHash": "sha256-StSrWhklmDuXT93yc3GrTlb0cKSS0agTAxMGjLKAsY8=", 7 | "rev": "910796cabe436259a29a72e8d3f5e180fc6dfacc", 8 | "revCount": 808478, 9 | "type": "tarball", 10 | "url": "https://api.flakehub.com/f/pinned/NixOS/nixpkgs/0.1.808478%2Brev-910796cabe436259a29a72e8d3f5e180fc6dfacc/01972ad6-3b3d-7826-b788-216d339063fe/source.tar.gz" 11 | }, 12 | "original": { 13 | "type": "tarball", 14 | "url": "https://flakehub.com/f/NixOS/nixpkgs/0.1" 15 | } 16 | }, 17 | "root": { 18 | "inputs": { 19 | "nixpkgs": "nixpkgs" 20 | } 21 | } 22 | }, 23 | "root": "root", 24 | "version": 7 25 | } 26 | -------------------------------------------------------------------------------- /nix/flake.nix: -------------------------------------------------------------------------------- 1 | { 2 | description = "A Nix-flake-based Nix development environment"; 3 | 4 | inputs.nixpkgs.url = "https://flakehub.com/f/NixOS/nixpkgs/0.1"; 5 | 6 | outputs = inputs: 7 | let 8 | supportedSystems = [ "x86_64-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin" ]; 9 | forEachSupportedSystem = f: inputs.nixpkgs.lib.genAttrs supportedSystems (system: f { 10 | pkgs = import inputs.nixpkgs { inherit system; }; 11 | }); 12 | in 13 | { 14 | devShells = forEachSupportedSystem ({ pkgs }: { 15 | default = pkgs.mkShell { 16 | packages = with pkgs; [ 17 | nixd 18 | cachix 19 | lorri 20 | niv 21 | nixfmt-classic 22 | statix 23 | vulnix 24 | haskellPackages.dhall-nix 25 | ]; 26 | }; 27 | }); 28 | }; 29 | } 30 | -------------------------------------------------------------------------------- /node/.envrc: -------------------------------------------------------------------------------- 1 | use flake 2 | -------------------------------------------------------------------------------- /node/flake.lock: -------------------------------------------------------------------------------- 1 | { 2 | "nodes": { 3 | "nixpkgs": { 4 | "locked": { 5 | "lastModified": 1748693115, 6 | "narHash": "sha256-StSrWhklmDuXT93yc3GrTlb0cKSS0agTAxMGjLKAsY8=", 7 | "rev": "910796cabe436259a29a72e8d3f5e180fc6dfacc", 8 | "revCount": 808478, 9 | "type": "tarball", 10 | "url": "https://api.flakehub.com/f/pinned/NixOS/nixpkgs/0.1.808478%2Brev-910796cabe436259a29a72e8d3f5e180fc6dfacc/01972ad6-3b3d-7826-b788-216d339063fe/source.tar.gz" 11 | }, 12 | "original": { 13 | "type": "tarball", 14 | "url": "https://flakehub.com/f/NixOS/nixpkgs/0.1" 15 | } 16 | }, 17 | "root": { 18 | "inputs": { 19 | "nixpkgs": "nixpkgs" 20 | } 21 | } 22 | }, 23 | "root": "root", 24 | "version": 7 25 | } 26 | -------------------------------------------------------------------------------- /node/flake.nix: -------------------------------------------------------------------------------- 1 | { 2 | description = "A Nix-flake-based Node.js development environment"; 3 | 4 | inputs.nixpkgs.url = "https://flakehub.com/f/NixOS/nixpkgs/0.1"; 5 | 6 | outputs = inputs: 7 | let 8 | supportedSystems = [ "x86_64-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin" ]; 9 | forEachSupportedSystem = f: inputs.nixpkgs.lib.genAttrs supportedSystems (system: f { 10 | pkgs = import inputs.nixpkgs { 11 | inherit system; 12 | overlays = [ inputs.self.overlays.default ]; 13 | }; 14 | }); 15 | in 16 | { 17 | overlays.default = final: prev: rec { 18 | nodejs = prev.nodejs; 19 | yarn = (prev.yarn.override { inherit nodejs; }); 20 | }; 21 | 22 | devShells = forEachSupportedSystem ({ pkgs }: { 23 | default = pkgs.mkShell { 24 | packages = with pkgs; [ node2nix nodejs nodePackages.pnpm yarn ]; 25 | }; 26 | }); 27 | }; 28 | } 29 | -------------------------------------------------------------------------------- /ocaml/.envrc: -------------------------------------------------------------------------------- 1 | use flake 2 | -------------------------------------------------------------------------------- /ocaml/flake.lock: -------------------------------------------------------------------------------- 1 | { 2 | "nodes": { 3 | "nixpkgs": { 4 | "locked": { 5 | "lastModified": 1748693115, 6 | "narHash": "sha256-StSrWhklmDuXT93yc3GrTlb0cKSS0agTAxMGjLKAsY8=", 7 | "rev": "910796cabe436259a29a72e8d3f5e180fc6dfacc", 8 | "revCount": 808478, 9 | "type": "tarball", 10 | "url": "https://api.flakehub.com/f/pinned/NixOS/nixpkgs/0.1.808478%2Brev-910796cabe436259a29a72e8d3f5e180fc6dfacc/01972ad6-3b3d-7826-b788-216d339063fe/source.tar.gz" 11 | }, 12 | "original": { 13 | "type": "tarball", 14 | "url": "https://flakehub.com/f/NixOS/nixpkgs/0.1" 15 | } 16 | }, 17 | "root": { 18 | "inputs": { 19 | "nixpkgs": "nixpkgs" 20 | } 21 | } 22 | }, 23 | "root": "root", 24 | "version": 7 25 | } 26 | -------------------------------------------------------------------------------- /ocaml/flake.nix: -------------------------------------------------------------------------------- 1 | { 2 | description = "A Nix-flake-based OCaml development environment"; 3 | 4 | inputs.nixpkgs.url = "https://flakehub.com/f/NixOS/nixpkgs/0.1"; 5 | 6 | outputs = inputs: 7 | let 8 | supportedSystems = [ "x86_64-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin" ]; 9 | forEachSupportedSystem = f: inputs.nixpkgs.lib.genAttrs supportedSystems (system: f { 10 | pkgs = import inputs.nixpkgs { inherit system; }; 11 | }); 12 | in 13 | { 14 | devShells = forEachSupportedSystem ({ pkgs }: { 15 | default = pkgs.mkShell { 16 | packages = with pkgs; [ ocaml ocamlformat ] ++ 17 | (with pkgs.ocamlPackages; [ dune_3 odoc ]); 18 | }; 19 | }); 20 | }; 21 | } 22 | -------------------------------------------------------------------------------- /odin/.envrc: -------------------------------------------------------------------------------- 1 | use flake 2 | -------------------------------------------------------------------------------- /odin/flake.lock: -------------------------------------------------------------------------------- 1 | { 2 | "nodes": { 3 | "nixpkgs": { 4 | "locked": { 5 | "lastModified": 1748693115, 6 | "narHash": "sha256-StSrWhklmDuXT93yc3GrTlb0cKSS0agTAxMGjLKAsY8=", 7 | "rev": "910796cabe436259a29a72e8d3f5e180fc6dfacc", 8 | "revCount": 808478, 9 | "type": "tarball", 10 | "url": "https://api.flakehub.com/f/pinned/NixOS/nixpkgs/0.1.808478%2Brev-910796cabe436259a29a72e8d3f5e180fc6dfacc/01972ad6-3b3d-7826-b788-216d339063fe/source.tar.gz" 11 | }, 12 | "original": { 13 | "type": "tarball", 14 | "url": "https://flakehub.com/f/NixOS/nixpkgs/0.1" 15 | } 16 | }, 17 | "root": { 18 | "inputs": { 19 | "nixpkgs": "nixpkgs" 20 | } 21 | } 22 | }, 23 | "root": "root", 24 | "version": 7 25 | } 26 | -------------------------------------------------------------------------------- /odin/flake.nix: -------------------------------------------------------------------------------- 1 | { 2 | description = "A Nix-flake-based Odin development environment"; 3 | 4 | inputs.nixpkgs.url = "https://flakehub.com/f/NixOS/nixpkgs/0.1"; 5 | 6 | outputs = inputs: 7 | let 8 | supportedSystems = [ "x86_64-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin" ]; 9 | forEachSupportedSystem = f: inputs.nixpkgs.lib.genAttrs supportedSystems (system: f { 10 | pkgs = import inputs.nixpkgs { inherit system; }; 11 | }); 12 | in 13 | { 14 | devShells = forEachSupportedSystem ({ pkgs }: { 15 | default = pkgs.mkShell { 16 | packages = with pkgs; [ odin ]; 17 | }; 18 | }); 19 | }; 20 | } 21 | -------------------------------------------------------------------------------- /opa/.envrc: -------------------------------------------------------------------------------- 1 | use flake 2 | -------------------------------------------------------------------------------- /opa/flake.lock: -------------------------------------------------------------------------------- 1 | { 2 | "nodes": { 3 | "nixpkgs": { 4 | "locked": { 5 | "lastModified": 1748693115, 6 | "narHash": "sha256-StSrWhklmDuXT93yc3GrTlb0cKSS0agTAxMGjLKAsY8=", 7 | "rev": "910796cabe436259a29a72e8d3f5e180fc6dfacc", 8 | "revCount": 808478, 9 | "type": "tarball", 10 | "url": "https://api.flakehub.com/f/pinned/NixOS/nixpkgs/0.1.808478%2Brev-910796cabe436259a29a72e8d3f5e180fc6dfacc/01972ad6-3b3d-7826-b788-216d339063fe/source.tar.gz" 11 | }, 12 | "original": { 13 | "type": "tarball", 14 | "url": "https://flakehub.com/f/NixOS/nixpkgs/0.1" 15 | } 16 | }, 17 | "root": { 18 | "inputs": { 19 | "nixpkgs": "nixpkgs" 20 | } 21 | } 22 | }, 23 | "root": "root", 24 | "version": 7 25 | } 26 | -------------------------------------------------------------------------------- /opa/flake.nix: -------------------------------------------------------------------------------- 1 | { 2 | description = "A Nix-flake-based Open Policy Agent development environment"; 3 | 4 | inputs.nixpkgs.url = "https://flakehub.com/f/NixOS/nixpkgs/0.1"; 5 | 6 | outputs = inputs: 7 | let 8 | supportedSystems = [ "x86_64-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin" ]; 9 | forEachSupportedSystem = f: inputs.nixpkgs.lib.genAttrs supportedSystems (system: f { 10 | pkgs = import inputs.nixpkgs { inherit system; }; 11 | }); 12 | in 13 | { 14 | devShells = forEachSupportedSystem ({ pkgs }: { 15 | default = pkgs.mkShell { 16 | packages = with pkgs; [ open-policy-agent conftest ]; 17 | }; 18 | }); 19 | }; 20 | } 21 | -------------------------------------------------------------------------------- /php/.envrc: -------------------------------------------------------------------------------- 1 | use flake 2 | -------------------------------------------------------------------------------- /php/flake.lock: -------------------------------------------------------------------------------- 1 | { 2 | "nodes": { 3 | "nixpkgs": { 4 | "locked": { 5 | "lastModified": 1748693115, 6 | "narHash": "sha256-StSrWhklmDuXT93yc3GrTlb0cKSS0agTAxMGjLKAsY8=", 7 | "rev": "910796cabe436259a29a72e8d3f5e180fc6dfacc", 8 | "revCount": 808478, 9 | "type": "tarball", 10 | "url": "https://api.flakehub.com/f/pinned/NixOS/nixpkgs/0.1.808478%2Brev-910796cabe436259a29a72e8d3f5e180fc6dfacc/01972ad6-3b3d-7826-b788-216d339063fe/source.tar.gz" 11 | }, 12 | "original": { 13 | "type": "tarball", 14 | "url": "https://flakehub.com/f/NixOS/nixpkgs/0.1" 15 | } 16 | }, 17 | "root": { 18 | "inputs": { 19 | "nixpkgs": "nixpkgs" 20 | } 21 | } 22 | }, 23 | "root": "root", 24 | "version": 7 25 | } 26 | -------------------------------------------------------------------------------- /php/flake.nix: -------------------------------------------------------------------------------- 1 | { 2 | description = "A Nix-flake-based PHP development environment"; 3 | 4 | inputs.nixpkgs.url = "https://flakehub.com/f/NixOS/nixpkgs/0.1"; 5 | 6 | outputs = inputs: 7 | let 8 | supportedSystems = [ "x86_64-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin" ]; 9 | forEachSupportedSystem = f: inputs.nixpkgs.lib.genAttrs supportedSystems (system: f { 10 | pkgs = import inputs.nixpkgs { inherit system; }; 11 | }); 12 | in 13 | { 14 | devShells = forEachSupportedSystem ({ pkgs }: { 15 | default = pkgs.mkShell { 16 | packages = with pkgs; [ php phpPackages.composer ]; 17 | }; 18 | }); 19 | }; 20 | } 21 | -------------------------------------------------------------------------------- /platformio/.envrc: -------------------------------------------------------------------------------- 1 | use flake 2 | -------------------------------------------------------------------------------- /platformio/flake.lock: -------------------------------------------------------------------------------- 1 | { 2 | "nodes": { 3 | "nixpkgs": { 4 | "locked": { 5 | "lastModified": 1748693115, 6 | "narHash": "sha256-StSrWhklmDuXT93yc3GrTlb0cKSS0agTAxMGjLKAsY8=", 7 | "rev": "910796cabe436259a29a72e8d3f5e180fc6dfacc", 8 | "revCount": 808478, 9 | "type": "tarball", 10 | "url": "https://api.flakehub.com/f/pinned/NixOS/nixpkgs/0.1.808478%2Brev-910796cabe436259a29a72e8d3f5e180fc6dfacc/01972ad6-3b3d-7826-b788-216d339063fe/source.tar.gz" 11 | }, 12 | "original": { 13 | "type": "tarball", 14 | "url": "https://flakehub.com/f/NixOS/nixpkgs/0.1" 15 | } 16 | }, 17 | "root": { 18 | "inputs": { 19 | "nixpkgs": "nixpkgs" 20 | } 21 | } 22 | }, 23 | "root": "root", 24 | "version": 7 25 | } 26 | -------------------------------------------------------------------------------- /platformio/flake.nix: -------------------------------------------------------------------------------- 1 | { 2 | description = "A Nix-flake-based PlatformIO development environment"; 3 | 4 | inputs.nixpkgs.url = "https://flakehub.com/f/NixOS/nixpkgs/0.1"; 5 | 6 | outputs = inputs: 7 | let 8 | supportedSystems = [ "x86_64-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin" ]; 9 | forEachSupportedSystem = f: inputs.nixpkgs.lib.genAttrs supportedSystems (system: f { 10 | pkgs = import inputs.nixpkgs { inherit system; }; 11 | }); 12 | in 13 | { 14 | devShells = forEachSupportedSystem ({ pkgs }: { 15 | default = pkgs.mkShell { 16 | packages = with pkgs; 17 | [ 18 | clang-tools 19 | cmake 20 | codespell 21 | conan 22 | cppcheck 23 | doxygen 24 | gtest 25 | lcov 26 | platformio 27 | vcpkg 28 | vcpkg-tool 29 | ] 30 | ++ pkgs.lib.optionals (system != "aarch64-darwin") [ gdb ]; 31 | 32 | shellHook = '' 33 | export PLATFORMIO_CORE_DIR=$PWD/.platformio 34 | ''; 35 | }; 36 | }); 37 | }; 38 | } 39 | -------------------------------------------------------------------------------- /protobuf/.envrc: -------------------------------------------------------------------------------- 1 | use flake 2 | -------------------------------------------------------------------------------- /protobuf/flake.lock: -------------------------------------------------------------------------------- 1 | { 2 | "nodes": { 3 | "nixpkgs": { 4 | "locked": { 5 | "lastModified": 1748693115, 6 | "narHash": "sha256-StSrWhklmDuXT93yc3GrTlb0cKSS0agTAxMGjLKAsY8=", 7 | "rev": "910796cabe436259a29a72e8d3f5e180fc6dfacc", 8 | "revCount": 808478, 9 | "type": "tarball", 10 | "url": "https://api.flakehub.com/f/pinned/NixOS/nixpkgs/0.1.808478%2Brev-910796cabe436259a29a72e8d3f5e180fc6dfacc/01972ad6-3b3d-7826-b788-216d339063fe/source.tar.gz" 11 | }, 12 | "original": { 13 | "type": "tarball", 14 | "url": "https://flakehub.com/f/NixOS/nixpkgs/0.1" 15 | } 16 | }, 17 | "root": { 18 | "inputs": { 19 | "nixpkgs": "nixpkgs" 20 | } 21 | } 22 | }, 23 | "root": "root", 24 | "version": 7 25 | } 26 | -------------------------------------------------------------------------------- /protobuf/flake.nix: -------------------------------------------------------------------------------- 1 | { 2 | description = "A Nix-flake-based Protobuf development environment"; 3 | 4 | inputs.nixpkgs.url = "https://flakehub.com/f/NixOS/nixpkgs/0.1"; 5 | 6 | outputs = inputs: 7 | let 8 | supportedSystems = [ "x86_64-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin" ]; 9 | forEachSupportedSystem = f: inputs.nixpkgs.lib.genAttrs supportedSystems (system: f { 10 | pkgs = import inputs.nixpkgs { inherit system; }; 11 | }); 12 | in 13 | { 14 | devShells = forEachSupportedSystem ({ pkgs }: { 15 | default = pkgs.mkShell { 16 | packages = with pkgs; [ protobuf buf ]; 17 | }; 18 | }); 19 | }; 20 | } 21 | -------------------------------------------------------------------------------- /pulumi/.envrc: -------------------------------------------------------------------------------- 1 | use flake 2 | -------------------------------------------------------------------------------- /pulumi/flake.lock: -------------------------------------------------------------------------------- 1 | { 2 | "nodes": { 3 | "nixpkgs": { 4 | "locked": { 5 | "lastModified": 1748693115, 6 | "narHash": "sha256-StSrWhklmDuXT93yc3GrTlb0cKSS0agTAxMGjLKAsY8=", 7 | "rev": "910796cabe436259a29a72e8d3f5e180fc6dfacc", 8 | "revCount": 808478, 9 | "type": "tarball", 10 | "url": "https://api.flakehub.com/f/pinned/NixOS/nixpkgs/0.1.808478%2Brev-910796cabe436259a29a72e8d3f5e180fc6dfacc/01972ad6-3b3d-7826-b788-216d339063fe/source.tar.gz" 11 | }, 12 | "original": { 13 | "type": "tarball", 14 | "url": "https://flakehub.com/f/NixOS/nixpkgs/0.1" 15 | } 16 | }, 17 | "root": { 18 | "inputs": { 19 | "nixpkgs": "nixpkgs" 20 | } 21 | } 22 | }, 23 | "root": "root", 24 | "version": 7 25 | } 26 | -------------------------------------------------------------------------------- /pulumi/flake.nix: -------------------------------------------------------------------------------- 1 | { 2 | description = "A Nix-flake-based Pulumi development environment"; 3 | 4 | inputs.nixpkgs.url = "https://flakehub.com/f/NixOS/nixpkgs/0.1"; 5 | 6 | outputs = inputs: 7 | let 8 | supportedSystems = [ "x86_64-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin" ]; 9 | forEachSupportedSystem = f: inputs.nixpkgs.lib.genAttrs supportedSystems (system: f { 10 | pkgs = import inputs.nixpkgs { inherit system; }; 11 | }); 12 | in 13 | { 14 | devShells = forEachSupportedSystem ({ pkgs }: { 15 | default = pkgs.mkShell { 16 | packages = with pkgs; [ 17 | # Pulumi plus: 18 | # pulumi-watch 19 | # pulumi-analyzer-* utilities 20 | # pulumi-language-* utilities 21 | # pulumi-resource-* utilities 22 | pulumi-bin 23 | 24 | # Python SDK 25 | python311 26 | 27 | # Go SDK 28 | go_1_23 29 | 30 | # Node.js SDK 31 | nodejs 32 | 33 | # Java SDK 34 | jdk 35 | maven 36 | 37 | # Kubernetes 38 | kubectl 39 | 40 | # Miscellaneous utilities 41 | jq 42 | ]; 43 | }; 44 | }); 45 | }; 46 | } 47 | -------------------------------------------------------------------------------- /purescript/.envrc: -------------------------------------------------------------------------------- 1 | use flake 2 | -------------------------------------------------------------------------------- /purescript/flake.lock: -------------------------------------------------------------------------------- 1 | { 2 | "nodes": { 3 | "nixpkgs": { 4 | "locked": { 5 | "lastModified": 1748693115, 6 | "narHash": "sha256-StSrWhklmDuXT93yc3GrTlb0cKSS0agTAxMGjLKAsY8=", 7 | "rev": "910796cabe436259a29a72e8d3f5e180fc6dfacc", 8 | "revCount": 808478, 9 | "type": "tarball", 10 | "url": "https://api.flakehub.com/f/pinned/NixOS/nixpkgs/0.1.808478%2Brev-910796cabe436259a29a72e8d3f5e180fc6dfacc/01972ad6-3b3d-7826-b788-216d339063fe/source.tar.gz" 11 | }, 12 | "original": { 13 | "type": "tarball", 14 | "url": "https://flakehub.com/f/NixOS/nixpkgs/0.1" 15 | } 16 | }, 17 | "root": { 18 | "inputs": { 19 | "nixpkgs": "nixpkgs" 20 | } 21 | } 22 | }, 23 | "root": "root", 24 | "version": 7 25 | } 26 | -------------------------------------------------------------------------------- /purescript/flake.nix: -------------------------------------------------------------------------------- 1 | { 2 | description = "A Nix-flake-based Purescript development environment"; 3 | 4 | inputs.nixpkgs.url = "https://flakehub.com/f/NixOS/nixpkgs/0.1"; 5 | 6 | outputs = inputs: 7 | let 8 | supportedSystems = [ "x86_64-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin" ]; 9 | forEachSupportedSystem = f: inputs.nixpkgs.lib.genAttrs supportedSystems (system: f { 10 | pkgs = import inputs.nixpkgs { inherit system; }; 11 | }); 12 | in 13 | { 14 | devShells = forEachSupportedSystem ({ pkgs }: { 15 | default = pkgs.mkShell { 16 | packages = with pkgs; [ 17 | nodejs_latest 18 | purescript 19 | spago 20 | ] ++ (with nodePackages_latest; [ 21 | purescript-language-server 22 | purs-tidy 23 | ]); 24 | }; 25 | }); 26 | }; 27 | } 28 | -------------------------------------------------------------------------------- /python/.envrc: -------------------------------------------------------------------------------- 1 | use flake 2 | -------------------------------------------------------------------------------- /python/.gitignore: -------------------------------------------------------------------------------- 1 | .venv 2 | -------------------------------------------------------------------------------- /python/flake.lock: -------------------------------------------------------------------------------- 1 | { 2 | "nodes": { 3 | "nixpkgs": { 4 | "locked": { 5 | "lastModified": 1748693115, 6 | "narHash": "sha256-StSrWhklmDuXT93yc3GrTlb0cKSS0agTAxMGjLKAsY8=", 7 | "rev": "910796cabe436259a29a72e8d3f5e180fc6dfacc", 8 | "revCount": 808478, 9 | "type": "tarball", 10 | "url": "https://api.flakehub.com/f/pinned/NixOS/nixpkgs/0.1.808478%2Brev-910796cabe436259a29a72e8d3f5e180fc6dfacc/01972ad6-3b3d-7826-b788-216d339063fe/source.tar.gz" 11 | }, 12 | "original": { 13 | "type": "tarball", 14 | "url": "https://flakehub.com/f/NixOS/nixpkgs/0.1" 15 | } 16 | }, 17 | "root": { 18 | "inputs": { 19 | "nixpkgs": "nixpkgs" 20 | } 21 | } 22 | }, 23 | "root": "root", 24 | "version": 7 25 | } 26 | -------------------------------------------------------------------------------- /python/flake.nix: -------------------------------------------------------------------------------- 1 | { 2 | description = "A Nix-flake-based Python development environment"; 3 | 4 | inputs.nixpkgs.url = "https://flakehub.com/f/NixOS/nixpkgs/0.1"; 5 | 6 | outputs = inputs: 7 | let 8 | supportedSystems = [ "x86_64-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin" ]; 9 | forEachSupportedSystem = f: inputs.nixpkgs.lib.genAttrs supportedSystems (system: f { 10 | pkgs = import inputs.nixpkgs { inherit system; }; 11 | }); 12 | 13 | /* 14 | * Change this value ({major}.{min}) to 15 | * update the Python virtual-environment 16 | * version. When you do this, make sure 17 | * to delete the `.venv` directory to 18 | * have the hook rebuild it for the new 19 | * version, since it won't overwrite an 20 | * existing one. After this, reload the 21 | * development shell to rebuild it. 22 | * You'll see a warning asking you to 23 | * do this when version mismatches are 24 | * present. For safety, removal should 25 | * be a manual step, even if trivial. 26 | */ 27 | version = "3.13"; 28 | in 29 | { 30 | devShells = forEachSupportedSystem ({ pkgs }: 31 | let 32 | concatMajorMinor = v: 33 | pkgs.lib.pipe v [ 34 | pkgs.lib.versions.splitVersion 35 | (pkgs.lib.sublist 0 2) 36 | pkgs.lib.concatStrings 37 | ]; 38 | 39 | python = pkgs."python${concatMajorMinor version}"; 40 | in 41 | { 42 | default = pkgs.mkShell { 43 | venvDir = ".venv"; 44 | 45 | postShellHook = '' 46 | venvVersionWarn() { 47 | local venvVersion 48 | venvVersion="$("$venvDir/bin/python" -c 'import platform; print(platform.python_version())')" 49 | 50 | [[ "$venvVersion" == "${python.version}" ]] && return 51 | 52 | cat <