Hey there,
I’m attempting to write a custom flake for myself for Neovim. I already have Neovim configured directly within configuration.nix (using programs.neovim), but ideally I would like to be able to use the same configuration on non-NixOS machines that I’m using on NixOS. I currently have a supremely simple Flake for Neovim that is functional (I can nix run
with no problem):
{
description = "A simple Neovim configuration";
inputs = {
nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable";
flake-utils.url = "github:numtide/flake-utils";
};
outputs = { self, nixpkgs, flake-utils }:
let
system = "x86_64-linux";
pkgs = import nixpkgs { system = system; config.allowUnfree = true; };
neovimConfig = pkgs.neovimUtils.makeNeovimConfig {};
in
with pkgs; rec {
packages.${system} = rec {
jkvim = wrapNeovimUnstable neovim-unwrapped neovimConfig;
default = jkvim;
};
apps.${system} = rec {
jkvim = flake-utils.lib.mkApp {
drv = packages.${system}.jkvim;
name = "jkvim";
exePath = "/bin/nvim";
};
default = jkvim;
};
devShell = mkShell {
buildInputs = [
packages.${system}.jkvim
];
};
};
}
What I would ideally like to do is replace my NixOS Neovim configuration with this very simple Flake. Currently my configuration.nix looks like this:
[root@jkaye-nixos:/etc/nixos]# cat configuration.nix
{ config, pkgs, ... }:
{
imports = [
./hardware-configuration.nix
./nvim.nix # this is where I'm loading my programs.neovim with all of its config, need to replace?
];
system.stateVersion = "24.05";
nix.settings.experimental-features = [ "nix-command" "flakes" ];
# You should only edit the lines below if you know what you are doing.
boot.loader.grub.enable = true;
boot.loader.grub.device = "/dev/sda";
environment.systemPackages = with pkgs; [
emacs
git
nodejs_21
ripgrep
vim
];
# A bunch more stuff that's not relevant
Is there a simple way to do this? I wouldn’t necessarily mind moving my configuration.nix to be a Flake itself, but I was hoping to do this a step at a time.
Thanks!