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