diff options
| author | quentin@aristote.fr <quentin@aristote.fr> | 2023-08-24 21:19:07 +0200 |
|---|---|---|
| committer | quentin@aristote.fr <quentin@aristote.fr> | 2023-08-26 18:59:36 +0200 |
| commit | e467ecaea03942161ba5b09a251deb31c5b9ba53 (patch) | |
| tree | fa15267d2885721244b2e6747ca3591fe2222e70 | |
| parent | 323ca1dcf45938c9235a4f163d0d2bbcd3dab523 (diff) | |
devenv: add templates
| -rw-r--r-- | flake.lock | 6 | ||||
| -rw-r--r-- | flake.nix | 24 | ||||
| -rw-r--r-- | lib/default.nix | 19 | ||||
| -rw-r--r-- | templates/devenv/flake-parts/.envrc | 11 | ||||
| -rw-r--r-- | templates/devenv/flake-parts/flake.nix | 32 | ||||
| -rw-r--r-- | templates/devenv/simple/.envrc | 11 | ||||
| -rw-r--r-- | templates/devenv/simple/flake.nix | 20 |
7 files changed, 120 insertions, 3 deletions
@@ -136,11 +136,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1692808169, - "narHash": "sha256-x9Opq06rIiwdwGeK2Ykj69dNc2IvUH1fY55Wm7atwrE=", + "lastModified": 1693028636, + "narHash": "sha256-WOG42JO/yyvgYK3jQktDEy2qtZI7R+s3Lo4Y9gBr6XM=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "9201b5ff357e781bf014d0330d18555695df7ba8", + "rev": "e61ea96d43505ba0d2c066134eb9d67cadfddce7", "type": "github" }, "original": { @@ -4,6 +4,11 @@ inputs.nixpkgs.url = "nixpkgs"; }; + nixConfig = { + extra-trusted-public-keys = "devenv.cachix.org-1:w1cLUi8dv3hnoSPGAuibQv+f9TZLr6cv/Hm9XgU50cw="; + extra-trusted-substituters = "https://devenv.cachix.org"; + }; + outputs = { self, nur, @@ -21,6 +26,25 @@ nixosModules.personal = import ./modules/nixos; homeModules.personal = import ./modules/home-manager; overlays.personal = self.overlays.default; + + lib = import ./lib; + + templates = let + welcomeText = '' + # `.devenv` should be added to `.gitignore` + ```sh + echo .devenv >> .gitignore + ``` + ''; + mkDevenvTemplate = path: { + inherit welcomeText path; + }; + devenv = mkDevenvTemplate ./templates/devenv/simple; + devenvModular = mkDevenvTemplate ./templates/devenv/flake-parts; + in { + inherit devenv devenvModular; + default = devenv; + }; }; perSystem = { diff --git a/lib/default.nix b/lib/default.nix new file mode 100644 index 0000000..40758eb --- /dev/null +++ b/lib/default.nix @@ -0,0 +1,19 @@ +{ + mkDevenv = { + devenv, + flake-parts, + my-nixpkgs, + ... + } @ inputs: config: + flake-parts.lib.mkFlake {inherit inputs;} { + imports = [devenv.flakeModule]; + systems = ["x86_64-linux" "i686-linux" "x86_64-darwin" "aarch64-linux" "aarch64-darwin"]; + perSystem = {...} @ perSystemInputs: { + devenv.shells.default = + { + imports = [my-nixpkgs.devenvModules.personal]; + } + // config perSystemInputs; + }; + }; +} diff --git a/templates/devenv/flake-parts/.envrc b/templates/devenv/flake-parts/.envrc new file mode 100644 index 0000000..fd8affa --- /dev/null +++ b/templates/devenv/flake-parts/.envrc @@ -0,0 +1,11 @@ +if ! has nix_direnv_version || ! nix_direnv_version 2.2.1; then + source_url "https://raw.githubusercontent.com/nix-community/nix-direnv/2.2.1/direnvrc" "sha256-zelF0vLbEl5uaqrfIzbgNzJWGmLzCmYAkInj/LNxvKs=" +fi + +nix_direnv_watch_file devenv.nix +nix_direnv_watch_file devenv.lock +nix_direnv_watch_file devenv.yaml +if ! use flake . --impure +then + echo "devenv could not be built. The devenv environment was not loaded. Make the necessary changes to devenv.nix and hit enter to try again." >&2 +fi diff --git a/templates/devenv/flake-parts/flake.nix b/templates/devenv/flake-parts/flake.nix new file mode 100644 index 0000000..656e6e1 --- /dev/null +++ b/templates/devenv/flake-parts/flake.nix @@ -0,0 +1,32 @@ +{ + inputs = { + devenv.url = "github:cachix/devenv"; + my-nixpkgs.url = "github.com:qaristote/my-nixpkgs"; + }; + + nixConfig = { + extra-trusted-public-keys = "devenv.cachix.org-1:w1cLUi8dv3hnoSPGAuibQv+f9TZLr6cv/Hm9XgU50cw="; + extra-trusted-substituters = "https://devenv.cachix.org"; + }; + + outputs = { + flake-parts, + my-nixpkgs, + ... + } @ inputs: + flake-parts.lib.mkFlake {inherit inputs;} { + imports = [ + inputs.devenv.flakeModule + ]; + systems = ["x86_64-linux" "i686-linux" "x86_64-darwin" "aarch64-linux" "aarch64-darwin"]; + perSystem = {...}: { + devenv.shells.default = { + imports = [my-nixpkgs.devenvModules.personal]; + + ######################## PUT YOUR CONFIG HERE ######################## + # for this flake + languages.nix.enable = true; + }; + }; + }; +} diff --git a/templates/devenv/simple/.envrc b/templates/devenv/simple/.envrc new file mode 100644 index 0000000..fd8affa --- /dev/null +++ b/templates/devenv/simple/.envrc @@ -0,0 +1,11 @@ +if ! has nix_direnv_version || ! nix_direnv_version 2.2.1; then + source_url "https://raw.githubusercontent.com/nix-community/nix-direnv/2.2.1/direnvrc" "sha256-zelF0vLbEl5uaqrfIzbgNzJWGmLzCmYAkInj/LNxvKs=" +fi + +nix_direnv_watch_file devenv.nix +nix_direnv_watch_file devenv.lock +nix_direnv_watch_file devenv.yaml +if ! use flake . --impure +then + echo "devenv could not be built. The devenv environment was not loaded. Make the necessary changes to devenv.nix and hit enter to try again." >&2 +fi diff --git a/templates/devenv/simple/flake.nix b/templates/devenv/simple/flake.nix new file mode 100644 index 0000000..010761d --- /dev/null +++ b/templates/devenv/simple/flake.nix @@ -0,0 +1,20 @@ +{ + inputs = { + devenv.url = "github:cachix/devenv"; + my-nixpkgs.url = "github.com:qaristote/my-nixpkgs"; + }; + + nixConfig = { + extra-trusted-public-keys = "devenv.cachix.org-1:w1cLUi8dv3hnoSPGAuibQv+f9TZLr6cv/Hm9XgU50cw="; + extra-trusted-substituters = "https://devenv.cachix.org"; + }; + + outputs = {my-nixpkgs, ...} @ inputs: + my-nixpkgs.lib.mkDevenv inputs + # this function has the same arguments flake-parts' perSystem does: + # config, lib, pkgs, system, etc. + ({...}: { + # put your devenv configuration here + languages.nix.enable = true; + }); +} |
