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