!SgYlXivkogarTVcnZO:nixos.org

Nix Flakes

890 Members
179 Servers

You have reached the beginning of time (for this room).


SenderMessageTime
8 May 2025
@kdobieder:matrix.orgkdobieder

Well I'd like to pass some things to the flake and this is what I came up with:

{
  description = "Custom Flake";

  inputs = {
    nixpkgs.url = "github:nixos/nixpkgs/nixos-24.11";
    nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable";
    myvendor-scripts.url = "git+https://git.myvendor.de/linux/scripts";
  };

  outputs = { nixpkgs, nixpkgs-unstable, myvendor-scripts, ... }: let
    getModule = {system, flakefolder}: let
      homeManagerModule = import ./modules {
        lib = nixpkgs.lib;
        pkgs = nixpkgs.legacyPackages.${system};
        pkgs-unstable = nixpkgs-unstable.legacyPackages.${system};
        flakefolder = flakefolder;
        myvendor-scripts = myvendor-scripts;
      };
    in {
      home-manager = homeManagerModule ;
    };
  in {
    getModule = getModule;
  };
}

But this way I have to define everything a would need - like lib, config, etc. Doesn't seem to be a good solution. Am I missing something?

10:57:18
@kdobieder:matrix.orgkdobieder *

Well I'd like to pass some things to the flake and this is what I came up with:

{
  description = "Custom Flake";

  inputs = {
    nixpkgs.url = "github:nixos/nixpkgs/nixos-24.11";
    nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable";
    myvendor-scripts.url = "git+https://git.myvendor.de/linux/scripts";
  };

  outputs = { nixpkgs, nixpkgs-unstable, myvendor-scripts, ... }: let
    getModule = {system, flakefolder}: let
      homeManagerModule = import ./modules {
        lib = nixpkgs.lib;
        pkgs = nixpkgs.legacyPackages.${system};
        pkgs-unstable = nixpkgs-unstable.legacyPackages.${system};
        flakefolder = flakefolder;
        myvendor-scripts = myvendor-scripts;
      };
    in {
      home-manager = homeManagerModule ;
    };
  in {
    getModule = getModule;
  };
}

But this way I have to define everything a module would need - like lib, config, etc. Doesn't seem to be a good solution. Am I missing something?

10:58:08
@dramforever:matrix.orgdramforever just don't pass it lib, config, etc 11:27:18
@dramforever:matrix.orgdramforevermodules are supposed to be a function11:27:30
@dramforever:matrix.orgdramforeverideally, module inputs can be set through options11:29:09
@kdobieder:matrix.orgkdobiederHow would that be done? 11:29:44
@dramforever:matrix.orgdramforeverhttps://nixos.org/manual/nixos/stable/#sec-writing-modules11:31:35
@kdobieder:matrix.orgkdobiederI don't see how that mentions passing options from a consuming flake to an imported home manager module.11:33:47
@dramforever:matrix.orgdramforeverthere is no mention of that because that has nothing to do with flakes11:34:20
@dramforever:matrix.orgdramforever

when you have something like in a "consuming flake"

      homeConfigurations.dram = home-manager.lib.homeManagerConfiguration {
        ...
        modules = [
          foo
          bar
          ./home.nix
        ];
      };

all three modules are on equal footing, they can each have options and config, and any one module can set the values of options defined in any module

11:36:12
@dramforever:matrix.orgdramforever *

when you have something like in a "consuming flake"

      homeConfigurations.dram = home-manager.lib.homeManagerConfiguration {
        ...
        modules = [
          foo
          bar
          ./home.nix
        ];
      };

all three modules are on equal footing, they can each have options and config, and any module can set the values of options defined in any module

11:36:25
@dramforever:matrix.orgdramforever do note that you can't have the value of an option affect the definition of options themselves (so, in short, no using config in imports or options) 11:37:20
@kdobieder:matrix.orgkdobieder Okay, I see. The problem I have is that I want to pass a custom variable to bar for example. 11:37:33

Show newer messages


Back to Room ListRoom Version: 6