diff --git a/README.rst b/README.rst
index 05535aab2a9e55fa5a216455ac81cf82314ce129..117c7d88b6de1d579294473298de222882fc2535 100644
--- a/README.rst
+++ b/README.rst
@@ -23,6 +23,11 @@ Debian-based distribution
 
 -  Try ``cranspasswords test`` to decrypt a test password.
 
+Nix-based distribution
+~~~~~~~~~~~~~~~~~~~~~~
+
+Refer to `shell.nix <shell.nix>`__ to get a Nix environment with cpasswords.
+
 In a Python Virtualenv
 ~~~~~~~~~~~~~~~~~~~~~~
 
diff --git a/shell.nix b/shell.nix
new file mode 100644
index 0000000000000000000000000000000000000000..ae4b8b4447e69baa1c6d31bef8ad136c6aafa118
--- /dev/null
+++ b/shell.nix
@@ -0,0 +1,31 @@
+#!/usr/bin/env nix-shell --pure
+
+with import <nixpkgs> {};
+with python38Packages;
+
+let
+  cpasswords = python38.pkgs.buildPythonApplication rec {
+    pname = "cpasswords";
+    version = "dev";
+
+    #src = fetchGit {
+    #  url = "https://gitlab.crans.org/nounous/cranspasswords.git";
+    #  ref = version;
+    #};
+    src = [ ./. ];
+
+    doCheck = false;
+
+    propagatedBuildInputs = [ polib gpgme paramiko pyperclip dnspython ];
+
+    meta = with lib; {
+      description = "This is a centralized passwords manager, using GPG for protection, and allowing shared passwords to groups.";
+      homepage    = "https://gitlab.crans.org/nounous/cranspasswords";
+      license     = licenses.gpl3;
+    };
+  };
+in mkShell {
+  buildInputs = [
+    cpasswords
+  ];
+}