config/modules/base/users/default.nix

94 lines
2.2 KiB
Nix
Raw Normal View History

2023-07-20 15:02:38 +03:00
{
config,
lib,
myData,
#home-manager,
2023-07-20 15:02:38 +03:00
...
}: {
options.mj.base.users = with lib.types; {
2023-08-18 18:50:39 +03:00
devEnvironment = lib.mkOption {
2023-08-18 16:39:03 +03:00
type = bool;
default = false;
};
2023-07-20 15:02:38 +03:00
passwd = lib.mkOption {
type = attrsOf (submodule (
{...}: {
options = {
passwordFile = lib.mkOption {
type = nullOr path;
default = null;
};
initialPassword = lib.mkOption {
type = nullOr str;
default = null;
};
};
}
));
};
};
config = {
users = {
mutableUsers = false;
users = let
passwd = config.mj.base.users.passwd;
in {
2023-07-20 15:02:38 +03:00
motiejus =
{
isNormalUser = true;
extraGroups = ["wheel"];
2023-07-24 16:31:38 +03:00
uid = myData.uidgid.motiejus;
2023-07-23 15:23:09 +03:00
openssh.authorizedKeys.keys = [myData.people_pubkeys.motiejus];
2023-07-20 15:02:38 +03:00
}
// lib.filterAttrs (n: v: v != null) passwd.motiejus or {};
root = assert lib.assertMsg (passwd ? root) "root password needs to be defined";
lib.filterAttrs (n: v: v != null) passwd.root;
};
};
2023-08-18 16:30:26 +03:00
home-manager.useGlobalPkgs = true;
home-manager.users.motiejus = {pkgs, ...}: {
home.stateVersion = "23.05";
2023-08-18 19:07:52 +03:00
programs.direnv.enable = true;
2023-08-18 19:07:52 +03:00
2023-08-18 21:45:38 +03:00
programs.neovim = {
2023-08-18 16:39:03 +03:00
enable = true;
2023-08-18 21:45:38 +03:00
vimAlias = true;
vimdiffAlias = true;
defaultEditor = true;
2023-08-18 18:50:39 +03:00
plugins = lib.mkIf config.mj.base.users.devEnvironment [
2023-08-18 16:39:03 +03:00
pkgs.vimPlugins.fugitive
pkgs.vimPlugins.vim-go
pkgs.vimPlugins.zig-vim
];
extraConfig = builtins.readFile ./vimrc;
};
2023-08-18 19:07:52 +03:00
programs.git = {
enable = true;
userEmail = "motiejus@jakstys.lt";
aliases.yolo = "commit --amend --no-edit -a";
extraConfig = {
rerere.enabled = true;
pull.ff = "only";
merge.conflictstyle = "diff3";
};
};
2023-08-18 19:07:52 +03:00
programs.bash = {
enable = true;
shellAliases = {
"l" = "echo -n ł | xclip -selection clipboard";
"gp" = "${pkgs.git} remote | ${pkgs.parallel} --verbose git push";
2023-08-18 19:07:52 +03:00
"elho" = "echo hello1";
};
};
};
2023-07-20 15:02:38 +03:00
};
}