infra/flake/den/modules/aspects/provides/user-shell.nix

42 lines
814 B
Nix
Raw Normal View History

2025-12-01 13:23:24 +07:00
{ den, ... }:
let
description = ''
Sets a user default shell, enables the shell at OS and Home level.
Usage:
den.aspects.vic.includes = [
# will always love red snappers.
(den._.user-shell "fish")
];
'';
userShell =
shell: user:
let
nixos =
{ pkgs, ... }:
{
programs.${shell}.enable = true;
users.users.${user.userName}.shell = pkgs.${shell};
};
darwin = nixos;
homeManager.programs.${shell}.enable = true;
in
{
inherit nixos darwin homeManager;
};
in
{
den.provides.user-shell = shell: {
inherit description;
__functor = den.lib.parametric.atLeast;
includes = [
({ user, ... }: userShell shell user)
({ home, ... }: userShell shell home)
];
};
}