Can't manage to get hyprland to work with Home-Manager

Here is my flake.nix

{
  description =  "Aurel nix config";

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

    # Home manager
    home-manager.url = "github:nix-community/home-manager/release-23.05";
    home-manager.inputs.nixpkgs.follows = "nixpkgs";

    hyprland.url = "github:hyprwm/Hyprland";

    xremap-flake.url = "github:xremap/nix-flake";
  };

  outputs = {
    self,
    nixpkgs,
    home-manager,
    hyprland,
    ...
  } @ inputs: let
    inherit (self) outputs;
    # Supported systems for your flake packages, shell, etc.
    systems = [
      "aarch64-linux"
      "i686-linux"
      "x86_64-linux"
      "aarch64-darwin"
      "x86_64-darwin"
    ];

    # System Settings
    hostname = "nixos";
    timezone = "Europe/Paris";
    locale = "en_US.UTF-8";
    locale-user = "";
    wm = "hyprland";
    host = "main";
    profile = "work";
    
    # User Settings
    username = "aurel";
    name = "Aurel";
    email = "#################";
    dotfilesDir = "~/.nix-config";


    
    
    # This is a function that generates an attribute by calling a function you
    # pass to it, with each system as an argument
    forAllSystems = nixpkgs.lib.genAttrs systems;
  in {
    # Your custom packages
    # Accessible through 'nix build', 'nix shell', etc
    packages = forAllSystems (system: import ./pkgs nixpkgs.legacyPackages.${system});
    # Formatter for your nix files, available through 'nix fmt'
    # Other options beside 'alejandra' include 'nixpkgs-fmt'
    formatter = forAllSystems (system: nixpkgs.legacyPackages.${system}.alejandra);

    # Your custom packages and modifications, exported as overlays
    overlays = import ./overlays {inherit inputs;};
    # Reusable nixos modules you might want to export
    # These are usually stuff you would upstream into nixpkgs
    nixosModules = import ./modules/nixos;
    # Reusable home-manager modules you might want to export
    # These are usually stuff you would upstream into home-manager
    homeManagerModules = import ./modules/home-manager;

    # NixOS configuration entrypoint
    # Available through 'nixos-rebuild --flake .#user'
    nixosConfigurations = {
      system = nixpkgs.lib.nixosSystem {
        specialArgs = {
          inherit inputs outputs;
          inherit username;
          inherit hostname;
          inherit timezone;
          inherit locale;
          inherit name;
          inherit wm;
          inherit host;
          inherit profile;
        };
        modules = [
          (./. + "/profiles"+("/"+profile)+"/configuration.nix")
        ];
      };
    };

    # Standalone home-manager configuration entrypoint
    # Available through 'home-manager --flake .#system'
    homeConfigurations = {
      user = home-manager.lib.homeManagerConfiguration {
        pkgs = nixpkgs.legacyPackages.x86_64-linux; # Home-manager requires 'pkgs' instance
        extraSpecialArgs = {
	  inherit inputs outputs;
	  inherit username;
    inherit email;
	  inherit host;
	  inherit profile;
    inherit wm;
	};
        modules = [
          (./. + "/profiles"+("/"+profile)+"/home.nix")
          hyprland.homeManagerModules.default
          {wayland.windowManager.hyprland.enable = true;}
        ];
      };
    };
  };
}

But I get this error trying to tun home-manager

error: The option `wayland.windowManager.hyprland' does not exist. Definition values:
       - In `<unknown-file>':
           {
             enable = true;
           }
(use '--show-trace' to show detailed location information)

So i tried using it without the flake like its indicated in the hyprland manual but it says the same error. when i check online manual the wayland.windowManager.hyprland exist but when i do man home-configuration.nix it doesnt show up

wayland.windowManager.hyprland.enable should be in your home.nix (show us your home.nix config?) and not passed in the modules in the flake itself, seeing as it is a home-manager option. I think you’re just setting it in the wrong place.

Here is my config : https://github.com/aurreland/nix-config/tree/master
The home.nix is in modules/nixos/wm/hyprland/home.nix
I am still getting errors

why isn’t it set with a bool? i.e., wayland.windowManager.hyprland.enable = true

Sorry I couldn’t push with git so I writed some things manually but it is set as true in the real config

You could try using the upstream home-manage module.

I think that’s what they’re following to begin with. Hmmm, perplexing. EDIT: Ah, yes, nvm. Try upstream as @11453ab5 points out

That’s what I’m following but I don’t know why it doesn’t work

I don’t think you’re actually using the upstream home-manager module since it is not listed as an input in your flake. Try enabling and importing it. There should be instructions in the official docs.

Tho I must point out that I’m using the h-m version and works well for me.

I’ll try re-reading your config in the meanwhile.

Sorry I read it wrong I’m using the downstream one

Could you help me using it I don’t know what I’m doing wrong

Dw, give me a sec to re-read the config…

I’m not sure about this but could it be that the downstream home-manager option is not present on your current home-manager version? I don’t when it was added but I’m sure it was not too long ago.

You could either try:

  • The upstream module.
  • Updating your h-m version.

I uptated with nix flake update and then rebuilt nixos and hm and it still doesn’t work

Your config is kinda convoluted and hard to follow :face_with_spiral_eyes: But the error is clear enough, you’re attempting to use an option that does not exist where you’re attempting to use it. Does --show-trace get you anywhere?

Ok it works now after re updating

1 Like