summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorquentin@aristote.fr <quentin@aristote.fr>2023-08-24 21:19:07 +0200
committerquentin@aristote.fr <quentin@aristote.fr>2023-08-26 18:59:36 +0200
commite467ecaea03942161ba5b09a251deb31c5b9ba53 (patch)
treefa15267d2885721244b2e6747ca3591fe2222e70
parent323ca1dcf45938c9235a4f163d0d2bbcd3dab523 (diff)
devenv: add templates
-rw-r--r--flake.lock6
-rw-r--r--flake.nix24
-rw-r--r--lib/default.nix19
-rw-r--r--templates/devenv/flake-parts/.envrc11
-rw-r--r--templates/devenv/flake-parts/flake.nix32
-rw-r--r--templates/devenv/simple/.envrc11
-rw-r--r--templates/devenv/simple/flake.nix20
7 files changed, 120 insertions, 3 deletions
diff --git a/flake.lock b/flake.lock
index 9f6e9db..7f0b1ab 100644
--- a/flake.lock
+++ b/flake.lock
@@ -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": {
diff --git a/flake.nix b/flake.nix
index d893fb8..6226ca7 100644
--- a/flake.nix
+++ b/flake.nix
@@ -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;
+ });
+}