this repo has no description
1{
2 pkgs,
3 lib,
4 config,
5 ...
6}: {
7 options.cow.bean = {
8 enable = lib.mkEnableOption "Bean user presets";
9 username = lib.mkOption {
10 type = lib.types.str;
11 description = "username";
12 default = "bean";
13 };
14 name = lib.mkOption {
15 type = lib.types.str;
16 description = "Friendly name of user";
17 default = "Ben C";
18 };
19 pubkey = lib.mkOption {
20 type = lib.types.nullOr lib.types.str;
21 description = "Public key to accept for bean";
22 default = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKsVzdJra+x5aEuwTjL1FBOiMh9bftvs8QwsM1xyEbdd";
23 };
24 social = lib.mkEnableOption "Social apps";
25 email = lib.mkOption {
26 type = lib.types.str;
27 # TODO: Tangled supports DIDs instead...
28 description = "Email to use for Git operations";
29 default = lib.join "@bwc9876" [
30 "ben"
31 ".dev"
32 ];
33 };
34 };
35
36 config = let
37 conf = config.cow.bean;
38 in
39 lib.mkIf conf.enable {
40 # My Personal config using most of my HM modules
41
42 home = {
43 file.".ssh/authorized_keys".text = lib.mkIf (conf.pubkey != null) ''
44 ${conf.pubkey} ${conf.username}
45 '';
46 username = lib.mkDefault conf.username;
47 homeDirectory = lib.mkDefault "/home/${conf.username}";
48 packages = lib.mkIf conf.social [
49 pkgs.signal-desktop
50 ];
51 };
52
53 programs.jujutsu.settings = {
54 user = {
55 inherit (conf) name email;
56 };
57 git = {
58 sign-on-push = true;
59 };
60 signing = {
61 behavior = "drop";
62 backend = "ssh";
63 key = lib.mkIf (conf.pubkey != null) conf.pubkey;
64 };
65 };
66
67 programs.git = {
68 signing = lib.mkIf (conf.pubkey != null) {
69 format = "ssh";
70 signByDefault = true;
71 };
72 settings = {
73 user = {
74 inherit (conf) name email;
75 signingKey = lib.mkIf (conf.pubkey != null) conf.pubkey;
76 };
77 };
78 };
79
80 cow = {
81 kitty.enable = lib.mkDefault config.cow.gdi.enable;
82 libraries.enable = true;
83 imperm = {
84 keepLibraries = true;
85 keep = lib.mkIf conf.social [".config/Signal"];
86 };
87 pictures = {
88 enable = true;
89 pfp = ../res/pictures/cow.png;
90 bg = ../res/pictures/background.png;
91 };
92 nushell = {
93 enable = true;
94 commandNotFound = true;
95 };
96 neovim.enable = true;
97 starship.enable = true;
98 dev.enable = lib.mkDefault true;
99 jj.enable = true;
100 comma.enable = true;
101 cat.enable = true;
102
103 keepassxc = {
104 enable = true;
105 dbPath = lib.mkDefault "${config.xdg.userDirs.documents}/Keepass/DB/Database.kdbx";
106 };
107 };
108 };
109}