"The option `x` does not exist." But it should

Hey!

I’m trying to set my Nixos with Flake and Home Manager. Please bear in mind that I am the first time user of Nixos and I’m still quite lost…

I am trying to install a fish shell plugin by using this homeManagerModule:

# homeManagerModules/fish.nix
{ config, pkgs, lib, ... }:

let inherit ( import ../options.nix) username userHome hostname; in 
{
  programs.fish = {
    enable = true;
    shellAliases = {   
    };
    shellAbbrs = {
      g = "git";
      n = "nvim";
      vim = "nvim";
    };
    plugins = [
      {
        name = "plugin-git";
        src = pkgs.fishPlugins.plugin-git.src;
      }
    ];
  };
}

when I try to rebuild I get:

error: The option `programs.fish.plugins' does not exist. Definition values:

but according to the documentation this option should exist for both 23.11 and unstable

From what I gather, I am using 23.11:

# home.nix 

{ inputs, config, pkgs,  ... }:

{
  home.username = "damian";
  home.homeDirectory = "/home/damian";

  home.stateVersion = "23.11"; 
  home.packages = [];
  home.file = {};
  home.sessionVariable = { EDITOR = "nvim"; };
  programs.home-manager.enable = true;
}
# configuration.nix
{ config, lib, pkgs, inputs, ... }:

{
  imports =
    [ 
      ./hardware-configuration.nix
      inputs.home-manager.nixosModules.default
    ];
# more stuff ...
  system.stateVersion = "23.11";
}
# flake.nix

{
  description = "nixos";

  inputs = {
    nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";

    home-manager = {
      url = "github:nix-community/home-manager";
      inputs.nixpkgs.follows = "nixpkgs";
    };
  };

  outputs = { self, nixpkgs,  ... }@inputs: 
  let system = "x86_64-linux";
  inherit (import ./options.nix) username hostname;
  in {
    nixosConfigurations.default = nixpkgs.lib.nixosSystem {
      specialArgs = {
        inherit inputs;
	inherit system;
	inherit username;
	inherit hostname;
      };
      modules = [
        ./homeManagerModules
        ./configuration.nix

        inputs.home-manager.nixosModules.default
	
      ];
    };
  };
}

I’m lost here, from what I understand so far, this option should really be available but it isn’t Additionally, that’s not the only problem with non-existing options I had. Yesterday I tried to setup a commit-signing in git managed via home-manager but I couldn’t due to programs.git.signing option apparently not existing. But according to documentation, it should exist. I ended up giving up on git via home manager and rather configuring it via normal .gitconfig.

Also, my bootloader says that I’m currently on nixos 24.05. It changed between recent generations. Why this change happen? Due to flake using unstable channel? Does it influence home manager?

I would greatly appreciate any help.

You need to import the home-manager modules and home.nix from a home-manager module, not your NixOS modules.

You’re using the NixOS integration module, so you’ll need to correctly set the NixOS options for the home-manager config. Basically this: Home Manager Manual

The delta in your case would be removing the homeManagerModules import from your flake.nix, adding home-manager.users.<you> = home.nix to your configuration.nix and then importing the homeManagerModules from home.nix.