+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
-
{
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
-
}
···
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
+3
-4
modules/shared/home/programs/cli/beets.nix
+3
-4
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
-
{
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;
···
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;
+13
-1
modules/shared/home/services/syncthing.nix
+13
-1
modules/shared/home/services/syncthing.nix
···
2
config,
3
lib,
4
osConfig,
0
5
...
6
}: let
0
0
7
cfg = osConfig.settings.system.services.sync;
8
9
devices = {
···
25
inherit devices;
26
options = {
27
urAccepted = -1; # disable usage reporting
28
-
# relaysEnabled = false;
29
};
30
folders = {
31
docs = {
···
42
label = "Pictures";
43
devices = allDevices;
44
path = config.xdg.userDirs.pictures;
0
0
0
0
0
0
0
0
0
45
};
46
videos = {
47
label = "Videos";
···
2
config,
3
lib,
4
osConfig,
5
+
pkgs,
6
...
7
}: let
8
+
inherit (pkgs.stdenv) isDarwin;
9
+
10
cfg = osConfig.settings.system.services.sync;
11
12
devices = {
···
28
inherit devices;
29
options = {
30
urAccepted = -1; # disable usage reporting
31
+
relaysEnabled = false;
32
};
33
folders = {
34
docs = {
···
45
label = "Pictures";
46
devices = allDevices;
47
path = config.xdg.userDirs.pictures;
48
+
};
49
+
# ignored in documents
50
+
git = {
51
+
label = "Git";
52
+
devices = allDevices;
53
+
path =
54
+
if isDarwin
55
+
then "${config.xdg.userDirs.documents}/git"
56
+
else "~/git";
57
};
58
videos = {
59
label = "Videos";
+103
-44
modules/shared/options/default.nix
+103
-44
modules/shared/options/default.nix
···
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
}
···
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
}