feat(user:shell): add system modules for zsh/bash user shell configuration
This commit is contained in:
parent
48c0e8e005
commit
ea1c418c73
7 changed files with 53 additions and 34 deletions
|
|
@ -10,7 +10,7 @@
|
|||
|
||||
systemModules.user = {
|
||||
ooks.enable = true;
|
||||
shell.fish.enable = true;
|
||||
shell = "fish";
|
||||
};
|
||||
|
||||
systemModules.hardware = {
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@
|
|||
|
||||
systemModules.user = {
|
||||
ooks.enable = true;
|
||||
shell.fish.enable = true;
|
||||
shell = "fish";
|
||||
};
|
||||
|
||||
systemModules.hardware = {
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@
|
|||
systemModules = {
|
||||
user = {
|
||||
ooks.enable = true;
|
||||
shell.fish.enable = true;
|
||||
shell = "fish";
|
||||
};
|
||||
hardware = {
|
||||
cpu.type = "intel";
|
||||
|
|
|
|||
17
system/modules/user/shell/bash/default.nix
Normal file
17
system/modules/user/shell/bash/default.nix
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
{ lib, config, pkgs, ... }:
|
||||
|
||||
let
|
||||
inherit (lib) mkIf;
|
||||
userShell = config.systemModules.user.shell;
|
||||
in
|
||||
|
||||
{
|
||||
config = mkIf (userShell == "bash") {
|
||||
users.users.ooks.shell = pkgs.bash;
|
||||
programs.bash = {
|
||||
enable = true;
|
||||
};
|
||||
environment.pathsToLink = ["/share/bash-completion"];
|
||||
};
|
||||
}
|
||||
|
||||
|
|
@ -1,40 +1,19 @@
|
|||
{ lib, config, ... }:
|
||||
{ lib, ... }:
|
||||
|
||||
let
|
||||
cfg = config.systemModules.user.shell;
|
||||
inherit (lib) types mkOption;
|
||||
in
|
||||
|
||||
{
|
||||
imports = [
|
||||
./fish
|
||||
# ./bash
|
||||
# ./zsh
|
||||
./bash
|
||||
./zsh
|
||||
];
|
||||
|
||||
options.systemModules.user.shell = {
|
||||
fish = {
|
||||
enable = lib.mkEnableOption "Enable fish as the user shell";
|
||||
};
|
||||
zsh = {
|
||||
enable = lib.mkEnableOption "Enable zsh as the user shell";
|
||||
};
|
||||
bash = {
|
||||
enable = lib.mkEnableOption "Enable bash as the user shell";
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
config = {
|
||||
assertions = [
|
||||
{
|
||||
assertion =
|
||||
(lib.length (lib.filter (x: x) [
|
||||
cfg.fish.enable or false
|
||||
cfg.zsh.enable or false
|
||||
cfg.bash.enable or false
|
||||
]) <= 1);
|
||||
message = "Only one user shell can be active in the configuration";
|
||||
}
|
||||
];
|
||||
options.systemModules.user.shell = mkOption {
|
||||
type = types.enum ["fish" "zsh" "bash"];
|
||||
default = "zsh";
|
||||
description = "The user shell to use. Select from 'zsh' 'bash' 'fish'";
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,11 +1,12 @@
|
|||
{ pkgs, lib, config, ... }:
|
||||
|
||||
let
|
||||
cfg = config.systemModules.user.shell.fish;
|
||||
inherit (lib) mkIf;
|
||||
userShell = config.systemModules.user.shell;
|
||||
in
|
||||
|
||||
{
|
||||
config = lib.mkIf cfg.enable {
|
||||
config = mkIf (userShell == "fish") {
|
||||
users.users.ooks.shell = pkgs.fish;
|
||||
programs.fish = {
|
||||
enable = true;
|
||||
|
|
|
|||
22
system/modules/user/shell/zsh/default.nix
Normal file
22
system/modules/user/shell/zsh/default.nix
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
{ lib, config, pkgs, ... }:
|
||||
|
||||
let
|
||||
inherit (lib) mkIf;
|
||||
userShell = config.systemModules.user.shell;
|
||||
in
|
||||
|
||||
{
|
||||
config = mkIf (userShell == "zsh") {
|
||||
users.users.ooks.shell = pkgs.zsh;
|
||||
programs.zsh = {
|
||||
enable = true;
|
||||
enableCompletion = true;
|
||||
syntaxHighlighting.enable = true;
|
||||
autosuggestions = {
|
||||
enable = true;
|
||||
async = true;
|
||||
};
|
||||
};
|
||||
environment.pathsToLink = ["/share/zsh"];
|
||||
};
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue