From 1c1cd0ca523dee7dfcf5baba913ab1e1a1ad5896 Mon Sep 17 00:00:00 2001 From: "Gustavo \"Guz\" L de Mello" Date: Sun, 14 Dec 2025 20:52:18 -0300 Subject: [PATCH] feat(nix): provide home-manager and nixos modules directly in flake.nix --- flake.nix | 100 +++++++++++++++++++++++++++++++++++++++++++++++++++--- home.nix | 42 ----------------------- nixos.nix | 34 ------------------- 3 files changed, 96 insertions(+), 80 deletions(-) delete mode 100644 home.nix delete mode 100644 nixos.nix diff --git a/flake.nix b/flake.nix index 424e00a..6dd91a9 100644 --- a/flake.nix +++ b/flake.nix @@ -28,6 +28,7 @@ inherit (pkgs) lib stdenv; } ); + neovim-pkgs = system: import nixpkgs {inherit system;}; in { formatter = forAllSystems ({pkgs, ...}: pkgs.alejandra); @@ -39,7 +40,7 @@ ... }: { neovim = pkgs.callPackage ./package.nix { - mdfmt = self.packages.${stdenv.hostPlatform.system}.mdfmt; + mdfmt = self.packages.${pkgs.system}.mdfmt; }; godot-neovim = pkgs.writeShellApplication { name = "godot-neovim"; @@ -49,7 +50,8 @@ src = inputs.mdfmt; vendorHash = "sha256-JtYvDgjUoEc1Mp7Eq8lbu9jWI+RR9yBo4ujGY+J70J4="; }; - default = self.packages."${stdenv.hostPlatform.system}".neovim; + + default = self.packages."${pkgs.system}".neovim; } ); devShells = forAllSystems ( @@ -63,11 +65,101 @@ ); nixosModules = { - neovim = import ./nixos.nix {inherit self;}; + neovim = { + config, + lib, + pkgs, + stdenv, + ... + }: let + cfg = config.neovim; + npkgs = neovim-pkgs pkgs.system; + in + with lib; { + options.neovim = { + enable = mkOption { + type = with types; bool; + default = true; + }; + package = mkOption { + type = with types; package; + default = self.packages.${pkgs.system}.default; + readOnly = true; + }; + defaultEditor = mkOption { + type = with types; bool; + default = true; + }; + }; + config = mkIf cfg.enable { + environment.variables = { + EDITOR = "nvim"; + }; + environment.systemPackages = + [ + (npkgs.callPackage ./package.nix { + mdfmt = self.packages.${pkgs.system}.mdfmt; + } + // (optionalAttrs config.programs.yazi.enable { + yazi = config.programs.yazi.package; + })) + ] + # Disable NixOS's Neovim + programs.neovim.enable = mkForce false; + }; + }; + default = self.nixosModules.neovim; }; homeManagerModules = { - neovim = import ./home.nix {inherit self;}; + neovim = { + config, + lib, + pkgs, + stdenv, + ... + }: let + cfg = config.neovim; + npkgs = neovim-pkgs pkgs.system; + in + with lib; { + options.neovim = { + enable = mkOption { + type = with types; bool; + default = true; + }; + vimdiffAlias = mkOption { + type = with types; bool; + default = true; + }; + defaultEditor = mkOption { + type = with types; bool; + default = true; + }; + }; + config = mkIf cfg.enable { + home.sessionVariables = { + EDITOR = "nvim"; + }; + + home.packages = + [ + (npkgs.callPackage ./package.nix { + mdfmt = self.packages.${pkgs.system}.mdfmt; + } + // (optionalAttrs config.programs.yazi.enable { + yazi = config.programs.yazi.package; + })) + ] + programs.bash.shellAliases = mkIf cfg.vimdiffAlias {vimdiff = "nvim -d";}; + programs.fish.shellAliases = mkIf cfg.vimdiffAlias {vimdiff = "nvim -d";}; + programs.zsh.shellAliases = mkIf cfg.vimdiffAlias {vimdiff = "nvim -d";}; + + # Disable home-manager's Neovim + programs.neovim.enable = mkForce false; + }; + }; + default = self.homeManagerModules.neovim; }; }; diff --git a/home.nix b/home.nix deleted file mode 100644 index f98c2b5..0000000 --- a/home.nix +++ /dev/null @@ -1,42 +0,0 @@ -{self}: { - config, - osConfig, - lib, - pkgs, - ... -}: let - cfg = config.neovim; -in - with lib; { - options.neovim = { - enable = mkOption { - type = with types; bool; - default = true; - }; - package = mkOption { - type = with types; package; - default = self.packages.${pkgs.system}.default; - }; - vimdiffAlias = mkOption { - type = with types; bool; - default = true; - }; - defaultEditor = mkOption { - type = with types; bool; - default = true; - }; - }; - config = mkIf cfg.enable { - home.sessionVariables = { - EDITOR = "nvim"; - }; - home.packages = [cfg.package]; - - programs.bash.shellAliases = mkIf cfg.vimdiffAlias {vimdiff = "nvim -d";}; - programs.fish.shellAliases = mkIf cfg.vimdiffAlias {vimdiff = "nvim -d";}; - programs.zsh.shellAliases = mkIf cfg.vimdiffAlias {vimdiff = "nvim -d";}; - - # Disable home-manager's Neovim - programs.neovim.enable = mkForce false; - }; - } diff --git a/nixos.nix b/nixos.nix deleted file mode 100644 index f99b130..0000000 --- a/nixos.nix +++ /dev/null @@ -1,34 +0,0 @@ -{self}: { - config, - lib, - pkgs, - ... -}: let - cfg = config.neovim; -in - with lib; { - options.neovim = { - enable = mkOption { - type = with types; bool; - default = true; - }; - package = mkOption { - type = with types; package; - default = self.packages.${pkgs.system}.default; - readOnly = true; - }; - defaultEditor = mkOption { - type = with types; bool; - default = true; - }; - }; - config = mkIf cfg.enable { - environment.variables = { - EDITOR = "nvim"; - }; - environment.systemPackages = [cfg.package]; - - # Disable NixOS's Neovim - programs.neovim.enable = mkForce false; - }; - }