blob: 313449da302ced713f110797b79dc1c7d14d9809 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
|
{ lib, config, pkgs, home-manager, ... }: let
cfg = config._users.timmy;
username = "timmy";
email = "tjk@tjkeller.xyz";
fullname = "Tim Keller";
home = "/home/${username}";
userDirs = {
desktop = "${home}";
download = "${home}/dls";
documents = "${home}/docs";
pictures = "${home}/pics";
};
sshKeyPaths = [ "${home}/.ssh/id_ed25519" ];
sshPublicKeyPaths = lib.map (keyPath: keyPath + ".pub") sshKeyPaths;
sshPublicKeys = [ "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDnsnAWcz46OVi1MWSxpOIUtUvwalijDwvW+oEvNjzep" ];
in {
imports = [
./hosts.nix
./localization.nix
./nas.nix
./printing.nix
./user.nix
./wifi.nix
];
options._users.timmy = {
enable = lib.mkEnableOption "create user timmy";
autologin.enable = lib.mkEnableOption "enables getty automatic login";
};
#config = lib.mkIf cfg.enable {
config = {
# Setup zsh
programs.zsh.enable = true;
#environment.systemPackages = [ pkgs.zsh-fast-syntax-highlighting ]; # TODO
# Setup normal user
users.users.timmy = {
home = home;
description = fullname;
isNormalUser = true;
shell = pkgs.zsh;
extraGroups = [
"nixbld"
"video"
"wheel"
] ++ lib.optionals config.hardware.i2c.enable [
"i2c"
] ++ lib.optionals config.virtualisation.libvirtd.enable [
"libvirtd"
] ++ lib.optionals config.virtualisation.docker.enable [
"docker"
];
};
# Configure automatic login with getty
services.getty = lib.mkIf cfg.autologin.enable {
autologinUser = username;
};
# Configure sops age key paths since age keys are generated via ssh private key
sops.age = { inherit sshKeyPaths; };
# Add authorizedKeys to cgit service
services._cgit.ssh.authorizedKeys = {
keys = sshPublicKeys;
keyFiles = sshPublicKeyPaths;
};
# Configure user home
home-manager.users.timmy = {
# Setup home-manager
home = {
username = username;
homeDirectory = home;
stateVersion = "24.05";
};
# Setup userdirs
xdg.userDirs = {
enable = true;
createDirectories = true;
} // userDirs;
# Setup git
programs.git = {
enable = true;
userName = fullname;
userEmail = email;
};
# Setup gtk bookmarks
gtk.gtk3.bookmarks = (
lib.mapAttrsToList (name: path:
"file://${path} ${lib.toUpper (lib.substring 0 1 name)}${lib.substring 1 (-1) name}" # Make first letter upper case
) userDirs
);
};
};
}
|