diff --git a/flake.nix b/flake.nix index f9bbcb6b..37b8c099 100644 --- a/flake.nix +++ b/flake.nix @@ -10,175 +10,184 @@ inputs.pre-commit-hooks.url = "github:cachix/pre-commit-hooks.nix"; inputs.pre-commit-hooks.inputs.nixpkgs.follows = "nixpkgs"; - outputs = { - self, - nixpkgs, - flake-utils, - pre-commit-hooks, - ... - } @ inputs: - with nixpkgs.lib; - with builtins; let - # TODO: Support nesting - nixvimModules = map (f: ./modules + "/${f}") (attrNames (builtins.readDir ./modules)); + outputs = + { self + , nixpkgs + , flake-utils + , pre-commit-hooks + , ... + } @ inputs: + with nixpkgs.lib; + with builtins; let + # TODO: Support nesting + nixvimModules = map (f: ./modules + "/${f}") (attrNames (builtins.readDir ./modules)); - modules = pkgs: - nixvimModules - ++ [ - rec { - _file = ./flake.nix; - key = _file; - config = { - _module.args = { - pkgs = mkForce pkgs; - inherit (pkgs) lib; - helpers = import ./plugins/helpers.nix {inherit (pkgs) lib;}; - inputs = inputs; + modules = pkgs: + nixvimModules + ++ [ + rec { + _file = ./flake.nix; + key = _file; + config = { + _module.args = { + pkgs = mkForce pkgs; + inherit (pkgs) lib; + helpers = import ./plugins/helpers.nix { inherit (pkgs) lib; }; + inputs = inputs; + }; }; - }; - } + } - # ./plugins/default.nix - ]; + # ./plugins/default.nix + ]; - flakeOutput = - flake-utils.lib.eachDefaultSystem - (system: let - pkgs = import nixpkgs {inherit system;}; - extractRustAnalyzer = { - stdenv, - pkgs, - }: - stdenv.mkDerivation { - pname = "extract_rust_analyzer"; - version = "master"; + flakeOutput = + flake-utils.lib.eachDefaultSystem + (system: + let + pkgs = import nixpkgs { inherit system; }; + extractRustAnalyzer = + { stdenv + , pkgs + , + }: + stdenv.mkDerivation { + pname = "extract_rust_analyzer"; + version = "master"; - dontUnpack = true; - dontBuild = true; + dontUnpack = true; + dontBuild = true; - buildInputs = [pkgs.python3]; + buildInputs = [ pkgs.python3 ]; - installPhase = '' - ls -la - mkdir -p $out/bin - cp ${./helpers/extract_rust_analyzer.py} $out/bin/extract_rust_analyzer.py - ''; - }; - extractRustAnalyzerPkg = pkgs.callPackage extractRustAnalyzer {}; - in { - checks = - (import ./tests { - inherit pkgs; - inherit (pkgs) lib; - makeNixvim = self.legacyPackages."${system}".makeNixvim; - }) - // { - lib-tests = import ./tests/lib-tests.nix { - inherit (pkgs) pkgs lib; - }; - pre-commit-check = pre-commit-hooks.lib.${system}.run { - src = ./.; - hooks = { - alejandra = { - enable = true; - excludes = ["plugins/_sources"]; + installPhase = '' + ls -la + mkdir -p $out/bin + cp ${./helpers/extract_rust_analyzer.py} $out/bin/extract_rust_analyzer.py + ''; + }; + extractRustAnalyzerPkg = pkgs.callPackage extractRustAnalyzer { }; + in + { + checks = + (import ./tests { + inherit pkgs; + inherit (pkgs) lib; + makeNixvim = self.legacyPackages."${system}".makeNixvim; + }) + // { + lib-tests = import ./tests/lib-tests.nix { + inherit (pkgs) pkgs lib; + }; + pre-commit-check = pre-commit-hooks.lib.${system}.run { + src = ./.; + hooks = { + alejandra = { + enable = true; + excludes = [ "plugins/_sources" ]; + }; + }; + }; + }; + devShells = { + default = pkgs.mkShell { + inherit (self.checks.${system}.pre-commit-check) shellHook; }; }; - }; - }; - devShells = { - default = pkgs.mkShell { - inherit (self.checks.${system}.pre-commit-check) shellHook; - }; - }; - packages = { - docs = pkgs.callPackage (import ./docs.nix) { - modules = nixvimModules; - }; - runUpdates = - pkgs.callPackage - ({ - pkgs, - stdenv, - }: - stdenv.mkDerivation { - pname = "run-updates"; - version = pkgs.rust-analyzer.version; + packages = { + docs = pkgs.callPackage (import ./docs.nix) { + modules = nixvimModules; + }; + runUpdates = + pkgs.callPackage + ({ pkgs + , stdenv + , + }: + stdenv.mkDerivation { + pname = "run-updates"; + version = pkgs.rust-analyzer.version; - src = pkgs.rust-analyzer.src; + src = pkgs.rust-analyzer.src; - nativeBuildInputs = with pkgs; [extractRustAnalyzerPkg alejandra]; + nativeBuildInputs = with pkgs; [ extractRustAnalyzerPkg alejandra ]; - buildPhase = '' - extract_rust_analyzer.py editors/code/package.json | - alejandra --quiet > rust-analyzer-config.nix - ''; + buildPhase = '' + extract_rust_analyzer.py editors/code/package.json | + alejandra --quiet > rust-analyzer-config.nix + ''; - installPhase = '' - mkdir -p $out/share - cp rust-analyzer-config.nix $out/share - ''; - }) - {}; - # Used to updates plugins, launch 'nix run .#nvfetcher' in the 'plugins' directory - nvfetcher = pkgs.nvfetcher; - }; - legacyPackages = rec { - makeNixvimWithModule = import ./wrappers/standalone.nix pkgs modules; - makeNixvim = configuration: - makeNixvimWithModule { - module = { - config = configuration; + installPhase = '' + mkdir -p $out/share + cp rust-analyzer-config.nix $out/share + ''; + }) + { }; + # Used to updates plugins, launch 'nix run .#nvfetcher' in the 'plugins' directory + nvfetcher = pkgs.nvfetcher; }; - }; - }; - formatter = let - # We need to exclude the plugins/_sources/* files as they are autogenerated - # nix formatter only takes a derivation so we need to make a proxy that passes - # the correct flags - excludeWrapper = { - stdenv, - alejandra, - writeShellScript, - ... - }: - stdenv.mkDerivation { - pname = "alejandra-excludes"; - version = alejandra.version; + legacyPackages = rec { + makeNixvimWithModule = import ./wrappers/standalone.nix pkgs modules; + makeNixvim = configuration: + makeNixvimWithModule { + module = { + config = configuration; + }; + }; + }; + formatter = + let + # We need to exclude the plugins/_sources/* files as they are autogenerated + # nix formatter only takes a derivation so we need to make a proxy that passes + # the correct flags + excludeWrapper = + { stdenv + , alejandra + , writeShellScript + , ... + }: + stdenv.mkDerivation { + pname = "alejandra-excludes"; + version = alejandra.version; - dontUnpack = true; - dontBuild = true; - installPhase = let - script = writeShellScript "alejandra-excludes.sh" '' - ${alejandra}/bin/alejandra --exclude ./plugins/_sources "$@" - ''; - in '' - mkdir -p $out/bin - cp ${script} $out/bin/alejandra-excludes - ''; - }; - in - pkgs.callPackage excludeWrapper {}; + dontUnpack = true; + dontBuild = true; + installPhase = + let + script = writeShellScript "alejandra-excludes.sh" '' + ${alejandra}/bin/alejandra --exclude ./plugins/_sources "$@" + ''; + in + '' + mkdir -p $out/bin + cp ${script} $out/bin/alejandra-excludes + ''; + }; + in + pkgs.callPackage excludeWrapper { }; - lib = import ./lib { - inherit pkgs; - inherit (pkgs) lib; - }; - }); - in + lib = import ./lib { + inherit pkgs; + inherit (pkgs) lib; + }; + }); + in flakeOutput // { nixosModules.nixvim = import ./wrappers/nixos.nix modules; homeManagerModules.nixvim = import ./wrappers/hm.nix modules; nixDarwinModules.nixvim = import ./wrappers/darwin.nix modules; + rawModules.nixvim = modules; - templates = let - simple = { - path = ./templates/simple; - description = "A simple nix flake template for getting started with nixvim"; + templates = + let + simple = { + path = ./templates/simple; + description = "A simple nix flake template for getting started with nixvim"; + }; + in + { + default = simple; }; - in { - default = simple; - }; }; }