feat: expose home-manager configurations

This commit is contained in:
Felix Schröter 2025-04-28 17:02:09 +02:00
parent dc36f63e52
commit 827217da51
Signed by: felschr
GPG key ID: 671E39E6744C807D
5 changed files with 117 additions and 73 deletions

View file

@ -1,52 +1,53 @@
name:
{
user ? { },
hm ? { },
modules ? [ ],
config,
usesContainers ? false,
...
}:
{ self, ... }:
{
inputs,
pkgs,
lib,
home-manager,
...
}:
{
imports = [ home-manager.nixosModules.home-manager ];
flake.lib.createUserModule =
name:
{
homeModule,
user ? { },
usesContainers ? false,
...
}:
{
inputs,
pkgs,
lib,
...
}:
{
imports = [ inputs.home-manager.nixosModules.home-manager ];
users.users."${name}" = {
isNormalUser = true;
shell = pkgs.zsh;
users.users."${name}" = {
isNormalUser = true;
shell = pkgs.zsh;
# increase sub{u,g}id range for container user namespaces
subUidRanges = lib.optionals usesContainers [
{
startUid = 100000;
count = 60000000;
}
];
subGidRanges = lib.optionals usesContainers [
{
startGid = 100000;
count = 60000000;
}
];
} // user;
# increase sub{u,g}id range for container user namespaces
subUidRanges = lib.optionals usesContainers [
{
startUid = 100000;
count = 60000000;
}
];
subGidRanges = lib.optionals usesContainers [
{
startGid = 100000;
count = 60000000;
}
];
} // user;
home-manager = {
useUserPackages = true;
useGlobalPkgs = true;
backupFileExtension = "backup";
users."${name}" = lib.mkMerge [
{ imports = modules; }
(import config)
];
extraSpecialArgs = {
inherit inputs;
home-manager = {
useGlobalPkgs = true;
useUserPackages = true;
backupFileExtension = "backup";
users."${name}" = {
imports = [
self.homeModules.git
homeModule
];
};
extraSpecialArgs = { inherit inputs; };
};
};
} // hm;
}

View file

@ -1,13 +1,13 @@
{ inputs, lib, ... }:
{ lib, ... }:
let
createUser' = import ./createUser.nix;
in
{
imports = [ ./openwrt.nix ];
imports = [
./createUser.nix
./openwrt.nix
];
options.flake.lib = lib.mkOption { type = with lib.types; lazyAttrsOf raw; };
config.flake.lib = {
createSystem =
createSystemModule =
hostName:
{ hardwareConfig, config }:
(
@ -22,9 +22,6 @@ in
];
}
);
createUser =
name: args:
({ pkgs, ... }@args2: (createUser' name args) ({ inherit (inputs) home-manager; } // args2));
createMediaGroup = _: { users.groups.media.gid = 600; };
};
}