Skip to content

Latest commit

 

History

History
132 lines (89 loc) · 4.65 KB

README.md

File metadata and controls

132 lines (89 loc) · 4.65 KB

dev-nix-shells

WIP

Table of Contents

  1. What is this
  2. Dependencies
  3. Why
  4. Nix Shells
  5. Available repositories
  6. Elixir, Phoenix, and OTP
  7. JS
  8. Lua
  9. RoR
  10. Rust
  11. Usage
  12. Resources
  13. TODO

What is this

nix-shell (templates for several) development environments.

Basically, a nix-shell starts an interactive shell based on a Nix expression.

🧐 if not acquainted with the topic, it is better to do a quick research about it: Resources

Dependencies

We need either:

  • NixOS (tested)
  • Nix (package manager installed in other OSs (Linux and macOS), untested)

Why

Nix installs required dependencies and separates the environment from others on your system.

We can then check this Nix configuration into version control and share it with others to make sure we are all running the same software. Especially with many dependencies this is a great way to prevent configuration drift between different team members & contributors.

Nix Shells

Every and each nix-shell is hosted in its own repository.

Available repositories

Elixir, Phoenix, and OTP

Node.js

Lua

RoR

Rust

🤔💭 rustup does not look so bad to install Rust (and manage it)

rustup self uninstall feels so appealing 😈 compared to the enigmatic Nix sinkhole

Currently testing
Next

Usage

  • git clone the desired repo
    • example: $ git clone https://github.com/maxdevjs/dev-nix-shells-nodejs my-awesome-nodejs-app
  • cd into the cloned folder
    • example: cd my-awesome-nodejs-app
  • allow direnv (if installed)
    • $ direnv allow
  • otherwise
    • $ nix-shell shell.nix (default)
  • wait for initialization
    • the first time all the tools will be installed
      • following times there can be updates
        • ...
  • enjoy
    • eventually 🤔
  • update the README.md and LICENSE files

Resources

Every single nix-shell repository offers relevant resources.

Here there are a few commons ones.

Direnv

Miscellaneous

Nix

TODO