From 7cbe29e8647e9b14c400af9bbf2b45b79b5f2f1c Mon Sep 17 00:00:00 2001 From: "quentin@aristote.fr" Date: Sat, 16 Sep 2023 18:12:59 +0200 Subject: modules: devenv: improve method to auto-import module in all shells --- .pre-commit-config.yaml | 2 +- flake.lock | 36 +++++++++++++++++----------------- flake.nix | 21 +++++++++----------- lib/default.nix | 16 +-------------- lib/mkDevenv.nix | 14 +++++++++++++ modules/flake-parts/devenv.nix | 23 ++++++++++++++++++++++ modules/flake-parts/personal.nix | 3 +++ templates/devenv/flake-parts/flake.nix | 8 +------- 8 files changed, 70 insertions(+), 53 deletions(-) create mode 100644 lib/mkDevenv.nix create mode 100644 modules/flake-parts/devenv.nix create mode 100644 modules/flake-parts/personal.nix diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 1421db4..94baf07 120000 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1 +1 @@ -/nix/store/d0as9x7kqxfc78y4m6yq9ac2ynwxyx7a-pre-commit-config.json \ No newline at end of file +/nix/store/6a38q8v1crycvhr612l219p8mpiki74v-pre-commit-config.json \ No newline at end of file diff --git a/flake.lock b/flake.lock index 6b3fd41..c9f918e 100644 --- a/flake.lock +++ b/flake.lock @@ -8,11 +8,11 @@ "pre-commit-hooks": "pre-commit-hooks" }, "locked": { - "lastModified": 1693552385, - "narHash": "sha256-bh25FKSx1QYBUSOeddveKABbHQstopc2NrihSRXFq9g=", + "lastModified": 1694422554, + "narHash": "sha256-s5NTPzT66yIMmau+ZGP7q9z4NjgceDETL4xZ6HJ/TBg=", "owner": "cachix", "repo": "devenv", - "rev": "918b068ce5a7a6352328c11a49b3845b9828aa72", + "rev": "63d20fe09aa09060ea9ec9bb6d582c025402ba15", "type": "github" }, "original": { @@ -42,11 +42,11 @@ "nixpkgs-lib": "nixpkgs-lib" }, "locked": { - "lastModified": 1690933134, - "narHash": "sha256-ab989mN63fQZBFrkk4Q8bYxQCktuHmBIBqUG1jl6/FQ=", + "lastModified": 1693611461, + "narHash": "sha256-aPODl8vAgGQ0ZYFIRisxYG5MOGSkIczvu2Cd8Gb9+1Y=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "59cf3f1447cfc75087e7273b04b31e689a8599fb", + "rev": "7f53fdb7bdc5bb237da7fefef12d099e4fd611ca", "type": "github" }, "original": { @@ -136,11 +136,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1693355128, - "narHash": "sha256-+ZoAny3ZxLcfMaUoLVgL9Ywb/57wP+EtsdNGuXUJrwg=", + "lastModified": 1694760568, + "narHash": "sha256-3G07BiXrp2YQKxdcdms22MUx6spc6A++MSePtatCYuI=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "a63a64b593dcf2fe05f7c5d666eb395950f36bc9", + "rev": "46688f8eb5cd6f1298d873d4d2b9cf245e09e88e", "type": "github" }, "original": { @@ -153,11 +153,11 @@ "nixpkgs-lib": { "locked": { "dir": "lib", - "lastModified": 1690881714, - "narHash": "sha256-h/nXluEqdiQHs1oSgkOOWF+j8gcJMWhwnZ9PFabN6q0=", + "lastModified": 1693471703, + "narHash": "sha256-0l03ZBL8P1P6z8MaSDS/MvuU8E75rVxe5eE1N6gxeTo=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "9e1960bc196baf6881340d53dccb203a951745a2", + "rev": "3e52e76b70d5508f3cec70b882a29199f4d1ee85", "type": "github" }, "original": { @@ -202,11 +202,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1693355128, - "narHash": "sha256-+ZoAny3ZxLcfMaUoLVgL9Ywb/57wP+EtsdNGuXUJrwg=", + "lastModified": 1694760568, + "narHash": "sha256-3G07BiXrp2YQKxdcdms22MUx6spc6A++MSePtatCYuI=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "a63a64b593dcf2fe05f7c5d666eb395950f36bc9", + "rev": "46688f8eb5cd6f1298d873d4d2b9cf245e09e88e", "type": "github" }, "original": { @@ -216,11 +216,11 @@ }, "nur": { "locked": { - "lastModified": 1693555295, - "narHash": "sha256-wmMYa7Wki1V53nkH50bUD9mmg5OMjgXG18BVadS1sgQ=", + "lastModified": 1694866994, + "narHash": "sha256-uo50mKCooOkNvJRBl/O4AOKa2QztMvda0aFppp2QrBE=", "owner": "nix-community", "repo": "NUR", - "rev": "92cc0ab078f0d82002caefbb9a8f38d198d03763", + "rev": "5f8282ce5ce11225ae6cd5fff355685fef0c132e", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index 9143de7..8bb0d4d 100644 --- a/flake.nix +++ b/flake.nix @@ -16,19 +16,17 @@ flake-parts, devenv, ... - } @ inputs: + } @ inputs: let + devenvModules.personal = import ./modules/devenv; + flakeModules = { + personal = import ./modules/flake-parts/personal.nix; + devenv = import ./modules/flake-parts/devenv.nix devenvModules; + }; + in flake-parts.lib.mkFlake {inherit inputs;} { - imports = [flake-parts.flakeModules.easyOverlay devenv.flakeModule]; - systems = [ - "x86_64-linux" - "i686-linux" - "x86_64-darwin" - "aarch64-linux" - "aarch64-darwin" - ]; - + imports = builtins.attrValues flakeModules; flake = { - devenvModules.personal = import ./modules/devenv; + inherit devenvModules flakeModules; nixosModules.personal = import ./modules/nixos; homeModules.personal = import ./modules/home-manager; overlays.personal = _: super: let @@ -96,7 +94,6 @@ packages = flatten pkgs.personal; devenv.shells.default = { - imports = [self.devenvModules.personal]; languages.nix = { enable = true; packaging.enable = true; diff --git a/lib/default.nix b/lib/default.nix index d65830b..254d336 100644 --- a/lib/default.nix +++ b/lib/default.nix @@ -1,17 +1,3 @@ { - 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 = _: { - devenv.shells.default = { - imports = [my-nixpkgs.devenvModules.personal config]; - }; - }; - }; + mkDevenv = import ./mkDevenv.nix; } diff --git a/lib/mkDevenv.nix b/lib/mkDevenv.nix new file mode 100644 index 0000000..3a86b14 --- /dev/null +++ b/lib/mkDevenv.nix @@ -0,0 +1,14 @@ +{ + devenv, + flake-parts, + my-nixpkgs, + ... +} @ inputs: config: +flake-parts.lib.mkFlake {inherit inputs;} { + imports = builtins.attrValues {inherit (my-nixpkgs.flakeModules) personal devenv;}; + perSystem = _: { + devenv.shells.default = { + imports = [config]; + }; + }; +} diff --git a/modules/flake-parts/devenv.nix b/modules/flake-parts/devenv.nix new file mode 100644 index 0000000..bdc40b1 --- /dev/null +++ b/modules/flake-parts/devenv.nix @@ -0,0 +1,23 @@ +devenvModules: { + flake-parts-lib, + lib, + inputs, + ... +}: { + imports = [inputs.devenv.flakeModule]; + + options.perSystem = flake-parts-lib.mkPerSystemOption { + options.devenv.shells = lib.mkOption { + type = with lib.types; + lazyAttrsOf (submoduleWith { + modules = builtins.attrValues devenvModules; + shorthandOnlyDefinesConfig = null; + }); + }; + }; + + # the extra parameter before the module make this module behave like an + # anonymous module, so we need to manually identify the file, for better + # error messages, docs, and deduplication. + _file = __curPos.file; +} diff --git a/modules/flake-parts/personal.nix b/modules/flake-parts/personal.nix new file mode 100644 index 0000000..370e176 --- /dev/null +++ b/modules/flake-parts/personal.nix @@ -0,0 +1,3 @@ +{ + systems = ["x86_64-linux" "i686-linux" "x86_64-darwin" "aarch64-linux" "aarch64-darwin"]; +} diff --git a/templates/devenv/flake-parts/flake.nix b/templates/devenv/flake-parts/flake.nix index 8708556..deca3e5 100644 --- a/templates/devenv/flake-parts/flake.nix +++ b/templates/devenv/flake-parts/flake.nix @@ -16,16 +16,10 @@ ... } @ inputs: flake-parts.lib.mkFlake {inherit inputs;} { - imports = [ - inputs.devenv.flakeModule - ]; - systems = ["x86_64-linux" "i686-linux" "x86_64-darwin" "aarch64-linux" "aarch64-darwin"]; + imports = with my-nixpkgs.flakeModules; [personal devenv]; perSystem = {...}: { devenv.shells.default = { - imports = [my-nixpkgs.devenvModules.personal]; - ######################## PUT YOUR CONFIG HERE ######################## - # for this flake languages.nix.enable = true; }; }; -- cgit v1.2.3