diff --git a/docs/NIX.md b/docs/NIX.md index 3b1b9c20..70bfcf20 100644 --- a/docs/NIX.md +++ b/docs/NIX.md @@ -9,6 +9,7 @@ ## Project Structure The project uses: + - Nix Flakes for reproducible builds and development environments - `stacklock2nix` for deriving Nix packages from stack.yaml.lock - `devenv` for creating consistent development environments @@ -16,13 +17,16 @@ The project uses: ### Flake.nix The flake.nix file has the following inputs: + - `nixpkgs`: Standard Nix packages repository - `stacklock2nix`: A tool for generating Nix packages from stack.yaml.lock files The flake outputs: + - `packages.default`: The Hapistrano package for each supported system - `overlays.default`: An overlay for integrating Hapistrano into other Nix systems +- `templates.default`: A template showing how to install Hapistrano using devenv ## Development Environments diff --git a/flake.nix b/flake.nix index 55bcea8b..edb6c203 100644 --- a/flake.nix +++ b/flake.nix @@ -50,5 +50,9 @@ overlays.default = final: prev: { hapistrano = self.packages.${prev.system}.default; }; + templates.default = { + description = "Install Hapistrano using devenv"; + path = ./templates/default; + }; }; } diff --git a/templates/.gitignore b/templates/.gitignore new file mode 100644 index 00000000..2cc0d196 --- /dev/null +++ b/templates/.gitignore @@ -0,0 +1 @@ +devenv.lock diff --git a/templates/default/.envrc b/templates/default/.envrc new file mode 100644 index 00000000..30da14fd --- /dev/null +++ b/templates/default/.envrc @@ -0,0 +1,5 @@ +export DIRENV_WARN_TIMEOUT=20s + +eval "$(devenv direnvrc)" + +use devenv diff --git a/templates/default/.gitignore b/templates/default/.gitignore new file mode 100644 index 00000000..4d058db7 --- /dev/null +++ b/templates/default/.gitignore @@ -0,0 +1,9 @@ +# Devenv +.devenv* +devenv.local.nix + +# direnv +.direnv + +# pre-commit +.pre-commit-config.yaml diff --git a/templates/default/devenv.nix b/templates/default/devenv.nix new file mode 100644 index 00000000..715a8299 --- /dev/null +++ b/templates/default/devenv.nix @@ -0,0 +1,10 @@ +{ pkgs, ... }: + +{ + packages = [ pkgs.hapistrano ]; + + cachix = { + enable = true; + pull = [ "stackbuilders" ]; + }; +} diff --git a/templates/default/devenv.yaml b/templates/default/devenv.yaml new file mode 100644 index 00000000..cf290940 --- /dev/null +++ b/templates/default/devenv.yaml @@ -0,0 +1,8 @@ +# yaml-language-server: $schema=https://devenv.sh/devenv.schema.json +inputs: + nixpkgs: + url: github:cachix/devenv-nixpkgs/rolling + hapistrano: + url: github:stackbuilders/hapistrano + overlays: + - default