From ac8eb373672675d02ade9eb6f2561a62298dc7ec Mon Sep 17 00:00:00 2001 From: "Fabien \"egg\" O'Carroll" Date: Tue, 20 Feb 2024 21:05:44 -0400 Subject: [PATCH] Added initial setup for direnv This won't be useful for most people, but for anyone using direnv this will give you a basic development environment for Ghost, if you so desire. --- .envrc | 2 ++ .gitignore | 3 +++ flake.lock | 43 +++++++++++++++++++++++++++++++++++++++++++ flake.nix | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 97 insertions(+) create mode 100644 .envrc create mode 100644 flake.lock create mode 100644 flake.nix diff --git a/.envrc b/.envrc new file mode 100644 index 0000000000..7f0f48d8c3 --- /dev/null +++ b/.envrc @@ -0,0 +1,2 @@ +layout node +use flake . diff --git a/.gitignore b/.gitignore index 3162730395..ac45d84b1d 100644 --- a/.gitignore +++ b/.gitignore @@ -66,6 +66,9 @@ typings/ # dotenv environment variables file .env +# direnv +.direnv + # IDE .idea/* *.iml diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000000..2ab3e2a09a --- /dev/null +++ b/flake.lock @@ -0,0 +1,43 @@ +{ + "nodes": { + "nixpkgs": { + "locked": { + "lastModified": 1708501555, + "narHash": "sha256-zJaF0RkdIPbh8LTmnpW/E7tZYpqIE+MePzlWwUNob4c=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b50a77c03d640716296021ad58950b1bb0345799", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "nixpkgs": "nixpkgs", + "systems": "systems" + } + }, + "systems": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000000..c7822686b5 --- /dev/null +++ b/flake.nix @@ -0,0 +1,49 @@ +{ + inputs = { + nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; + systems.url = "github:nix-systems/default"; + }; + + outputs = { + systems, + nixpkgs, + ... + } @ inputs: let + yarn_overlay = final: prev: { + yarn = prev.yarn.overrideAttrs(finalAttrs: prevAttrs: { + # This is to make sure that yarn runs the correct node version + # https://github.com/NixOS/nixpkgs/issues/145634#issuecomment-1627476963 + installPhase = prevAttrs.installPhase + '' + ln -fs $out/libexec/yarn/bin/yarn $out/bin/yarn + ln -fs $out/libexec/yarn/bin/yarn.js $out/bin/yarn.js + ln -fs $out/libexec/yarn/bin/yarn $out/bin/yarnpkg + ''; + }); + }; + + # This gives us a central place to set the node version + node_overlay = final: prev: { + nodejs = prev.nodejs-18_x; + }; + + eachSystem = f: + nixpkgs.lib.genAttrs (import systems) ( + system: + f ((nixpkgs.legacyPackages.${system}.extend yarn_overlay).extend node_overlay) + ); + in { + + devShells = eachSystem (pkgs: { + default = pkgs.mkShell { + buildInputs = with pkgs; [ + nodejs + yarn + ]; + + shellHook = '' + echo "node `${pkgs.nodejs}/bin/node --version`" + ''; + }; + }); + }; +}