+11
-1
hosts/earthy/default.nix
+11
-1
hosts/earthy/default.nix
···
14
14
settings = {
15
15
system = {
16
16
hostName = "earthy";
17
17
-
services.sync.enable = true;
17
17
+
services = {
18
18
+
sync.enable = true;
19
19
+
navidrome.enable = true;
20
20
+
};
21
21
+
};
22
22
+
};
23
23
+
24
24
+
services.openssh = {
25
25
+
enable = true;
26
26
+
settings = {
27
27
+
PermitRootLogin = "yes";
18
28
};
19
29
};
20
30
+1
modules/nixos/services/default.nix
+1
modules/nixos/services/default.nix
+19
modules/nixos/services/navidrome.nix
+19
modules/nixos/services/navidrome.nix
···
1
1
+
{
2
2
+
config,
3
3
+
lib,
4
4
+
...
5
5
+
}: let
6
6
+
cfg = config.settings.system.services.navidrome;
7
7
+
in {
8
8
+
config = lib.mkIf cfg.enable {
9
9
+
services.navidrome = {
10
10
+
enable = true;
11
11
+
openFirewall = true;
12
12
+
13
13
+
settings = {
14
14
+
# TODO: use this value for beets
15
15
+
MusicFolder = "${config.settings.system.user.home}/media/music/music";
16
16
+
};
17
17
+
};
18
18
+
};
19
19
+
}
+4
-3
modules/shared/home/programs/cli/beets.nix
+4
-3
modules/shared/home/programs/cli/beets.nix
···
11
11
config = lib.mkIf (cfg.cli.enable
12
12
&& cfg.categories.music.enable) {
13
13
systemd.user.services.mpdstats =
14
14
-
lib.mkIf stdenv.isLinux
15
15
-
&& config.services.mpd.enable
16
16
-
== true {
14
14
+
lib.mkIf (stdenv.isLinux
15
15
+
&& config.services.mpd.enable)
16
16
+
{
17
17
Unit = {
18
18
Description = "Beets MPDStats daemon";
19
19
Requires = ["mpd.service"];
···
27
27
Restart = "on-failure";
28
28
};
29
29
};
30
30
+
30
31
programs.beets = {
31
32
enable = true;
32
33
mpdIntegration.enableUpdate = true;
+1
-1
modules/shared/home/services/syncthing.nix
+1
-1
modules/shared/home/services/syncthing.nix
+44
-103
modules/shared/options/default.nix
+44
-103
modules/shared/options/default.nix
···
11
11
programs = {
12
12
enable =
13
13
mkEnableOption "Enable all programs"
14
14
-
// {
15
15
-
default = true;
16
16
-
};
14
14
+
// {default = true;};
17
15
18
18
-
cli = {
19
19
-
enable =
20
20
-
mkEnableOption "Enable CLI programs"
21
21
-
// {
22
22
-
default = cfg.programs.enable;
23
23
-
};
24
24
-
};
25
25
-
gui = {
26
26
-
enable =
27
27
-
mkEnableOption "Enable GUI programs"
28
28
-
// {
29
29
-
default = cfg.desktop.enable;
30
30
-
};
31
31
-
};
32
32
-
tui = {
33
33
-
enable =
34
34
-
mkEnableOption "Enable TUI programs"
35
35
-
// {
36
36
-
default = cfg.programs.enable;
37
37
-
};
38
38
-
};
16
16
+
cli.enable =
17
17
+
mkEnableOption "Enable CLI programs"
18
18
+
// {default = cfg.programs.enable;};
19
19
+
tui.enable =
20
20
+
mkEnableOption "Enable TUI programs"
21
21
+
// {default = cfg.programs.enable;};
22
22
+
gui.enable =
23
23
+
mkEnableOption "Enable GUI programs"
24
24
+
// {default = cfg.desktop.enable;};
39
25
40
26
categories = {
41
27
enable =
42
28
mkEnableOption "Enable all program categories"
43
43
-
// {
44
44
-
default = cfg.programs.enable;
45
45
-
};
29
29
+
// {default = cfg.programs.enable;};
46
30
core.enable =
47
31
mkEnableOption "Enable core programs"
48
48
-
// {
49
49
-
default = cfg.programs.categories.enable;
50
50
-
};
32
32
+
// {default = cfg.programs.categories.enable;};
51
33
design.enable =
52
34
mkEnableOption "Enable design programs"
53
53
-
// {
54
54
-
default = cfg.programs.categories.enable;
55
55
-
};
35
35
+
// {default = cfg.programs.categories.enable;};
56
36
dev.enable =
57
37
mkEnableOption "Enable development programs"
58
58
-
// {
59
59
-
default = cfg.programs.categories.enable;
60
60
-
};
38
38
+
// {default = cfg.programs.categories.enable;};
61
39
edu.enable =
62
40
mkEnableOption "Enable educational programs"
63
63
-
// {
64
64
-
default = cfg.programs.categories.enable;
65
65
-
};
41
41
+
// {default = cfg.programs.categories.enable;};
66
42
fs.enable =
67
43
mkEnableOption "Enable file management programs"
68
68
-
// {
69
69
-
default = cfg.programs.categories.enable;
70
70
-
};
44
44
+
// {default = cfg.programs.categories.enable;};
71
45
fun.enable =
72
46
mkEnableOption "Enable fun programs"
73
73
-
// {
74
74
-
default = cfg.programs.categories.enable;
75
75
-
};
47
47
+
// {default = cfg.programs.categories.enable;};
76
48
gaming.enable =
77
49
mkEnableOption "Enable gaming programs"
78
78
-
// {
79
79
-
default = cfg.programs.categories.enable;
80
80
-
};
50
50
+
// {default = cfg.programs.categories.enable;};
81
51
mail.enable =
82
52
mkEnableOption "Enable email programs"
83
83
-
// {
84
84
-
default = cfg.programs.categories.enable;
85
85
-
};
53
53
+
// {default = cfg.programs.categories.enable;};
86
54
media.enable =
87
55
mkEnableOption "Enable multimedia programs"
88
88
-
// {
89
89
-
default = cfg.programs.categories.enable;
90
90
-
};
56
56
+
// {default = cfg.programs.categories.enable;};
91
57
music.enable =
92
58
mkEnableOption "Enable music programs"
93
93
-
// {
94
94
-
default = cfg.programs.categories.enable;
95
95
-
};
59
59
+
// {default = cfg.programs.categories.enable;};
96
60
printing.enable =
97
61
mkEnableOption "Enable 3D printing programs"
98
98
-
// {
99
99
-
default = cfg.programs.categories.enable;
100
100
-
};
62
62
+
// {default = cfg.programs.categories.enable;};
101
63
privacy.enable =
102
64
mkEnableOption "Enable privacy programs"
103
103
-
// {
104
104
-
default = cfg.programs.categories.enable;
105
105
-
};
65
65
+
// {default = cfg.programs.categories.enable;};
106
66
tools.enable =
107
67
mkEnableOption "Enable QOL programs"
108
108
-
// {
109
109
-
default = cfg.programs.categories.enable;
110
110
-
};
68
68
+
// {default = cfg.programs.categories.enable;};
111
69
web.enable =
112
70
mkEnableOption "Enable browsers"
113
113
-
// {
114
114
-
default = cfg.programs.categories.enable;
115
115
-
};
71
71
+
// {default = cfg.programs.categories.enable;};
116
72
};
117
73
};
74
74
+
118
75
system = {
119
76
user = {
120
77
name = mkOption {
···
133
90
default = "users";
134
91
};
135
92
};
93
93
+
136
94
hostName = mkOption {
137
95
type = types.str;
138
96
description = "The hostname of your system";
139
97
default = "nixos";
140
98
};
99
99
+
141
100
services = {
142
101
enable =
143
102
mkEnableOption "Enable system services"
144
144
-
// {
145
145
-
default = true;
146
146
-
};
103
103
+
// {default = true;};
147
104
bluetooth.enable =
148
105
mkEnableOption "Enable Bluetooth"
149
149
-
// {
150
150
-
default = cfg.system.services.enable;
151
151
-
};
106
106
+
// {default = cfg.system.services.enable;};
152
107
sound.enable =
153
108
mkEnableOption "Enable sound"
154
154
-
// {
155
155
-
default = cfg.system.services.enable;
156
156
-
};
109
109
+
// {default = cfg.system.services.enable;};
157
110
sync.enable =
158
111
mkEnableOption "Enable syncthing"
159
159
-
// {
160
160
-
default = false;
161
161
-
};
112
112
+
// {default = false;};
162
113
printing.enable =
163
114
mkEnableOption "Enable printing"
164
164
-
// {
165
165
-
default = cfg.system.services.enable;
166
166
-
};
115
115
+
// {default = cfg.system.services.enable;};
116
116
+
navidrome.enable =
117
117
+
mkEnableOption "Enable navidrome"
118
118
+
// {default = false;};
167
119
networking.enable =
168
120
mkEnableOption "Enable networking"
169
169
-
// {
170
170
-
default = cfg.system.services.enable;
171
171
-
};
121
121
+
// {default = cfg.system.services.enable;};
172
122
security.enable =
173
123
mkEnableOption "Enable security"
174
174
-
// {
175
175
-
default = cfg.system.services.enable;
176
176
-
};
124
124
+
// {default = cfg.system.services.enable;};
177
125
backups.enable =
178
178
-
mkEnableOption "Enable backups"
179
179
-
// {
180
180
-
default = cfg.system.services.enable;
181
181
-
};
126
126
+
mkEnableOption "Enable restic"
127
127
+
// {default = false;};
182
128
};
183
129
};
130
130
+
184
131
desktop = {
185
132
enable =
186
133
mkEnableOption "Enable desktop environment"
187
187
-
// {
188
188
-
default = true;
189
189
-
};
134
134
+
// {default = true;};
190
135
niri.enable =
191
136
mkEnableOption "Enable Niri twm"
192
192
-
// {
193
193
-
default = cfg.desktop.enable;
194
194
-
};
137
137
+
// {default = cfg.desktop.enable;};
195
138
hyprland.enable =
196
139
mkEnableOption "Enable Hyprland and its ecosystem"
197
197
-
// {
198
198
-
default = cfg.desktop.enable;
199
199
-
};
140
140
+
// {default = cfg.desktop.enable;};
200
141
};
201
142
};
202
143
}