| * I've made more minimal example:
{ lib, ... }:
let
users = [
{
username = "nix";
module = {
home.stateVersion = "23.11";
# MrQubo.osConfig.services.logrotate.enable = false;
};
}
];
evalHmModule = { username, module, config, pkgs, ... }:
(import <home-manager/modules> {
configuration = {
options.MrQubo = {
osConfig.services = lib.mkOption {
type = lib.types.raw;
};
};
config = {
submoduleSupport.enable = true;
submoduleSupport.externalPackageInstall = false;
home.username = config.users.users.${username}.name;
home.homeDirectory = config.users.users.${username}.home;
# Make activation script use same version of Nix as system as a whole.
# This avoids problems with Nix not being in PATH.
nix.package = config.nix.package;
};
};
inherit pkgs;
}).extendModules {
modules = [
{
MrQubo.osConfig.services = config.services;
}
module
];
};
osConfigModules = lib.flip map users (user: { pkgs, config, ... }:
{ config.services = (evalHmModule ({ inherit pkgs config; } // user)).config.MrQubo.osConfig.services; }
);
in {
imports = osConfigModules;
}
# vim: sts=2 sw=2 ts=60 et:
You also need <home-manager> channel, which can be added with nix-channel --add https://github.com/nix-community/home-manager/archive/master.tar.gz home-manager. The configuration can be run with nixos-rebuild -I nixos-config=$(pwd)/users.nix dry-build --show-trace.
|