me like nix
1{
2 pkgs,
3 config,
4 ...
5}:
6
7{
8 imports = [
9 # Include the results of the hardware scan.
10 ./hardware-configuration.nix
11 ../common/common.nix
12 ];
13
14 networking.hostName = "mira"; # Define your hostname.
15 # networking.wireless.enable = true; # Enables wireless support via wpa_supplicant.
16
17 # Configure network proxy if necessary
18 # networking.proxy.default = "http://user:password@proxy:port/";
19 # networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";
20
21 # this is like a network devices discovery thing
22 services.avahi = {
23 enable = true;
24 nssmdns4 = true;
25 openFirewall = true;
26 };
27
28 services.copyparty.enable = true;
29
30 services.openssh = {
31 enable = true;
32 ports = [ 5431 ];
33 settings = {
34 PasswordAuthentication = false;
35 KbdInteractiveAuthentication = false;
36 PermitRootLogin = "no";
37 AllowUsers = [ "sean" ];
38 };
39 };
40
41 users.users.sean.openssh.authorizedKeys.keys = [
42 "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDCIqgZ7kedxo+mOW7YG73Vp3zel3h180y3GKvHtRsXfGlpIIvRDy7pgCBQ4AGXYD4y78URQmFohYSAPqCPOPaWcU2un3XG9KvCzEsHmsbskPonitUmCiKvrKkb6oW4jCBtd7AEtBn+AiajAQFtPZ7NN2Df3AmTypvR6Irg7R+nxnfc9NTIHmGvxSDyWcbb4pguL20sctUSqGL6xGh8q/bqhdOThSimM+z9bEUNxK/5rPhwkNniMrp4pJcUrUiAh5/4DiRFG6KT+oeg+/myoz/Z1sPvAs7u/8JDQI4RshRD8Hu0oTkRBN6Hxj478q2SXbeBUZlD6IdjP3RhGpmSecoDdtWqKbpuV3eVRtQtba3KL86GBeV/bugaOdJ1Aud+1SOFJreAAuvxzMMKT+cdQZk6oOPP148DA/No+mDm/2S43lcdCXh79wA6YRAmKQ8jmZxTCtPutrvuZK1rguvvUlEoG/vhdNHh7eDa4Td07V6bjCRPUl8qk/e4M0E3pwsTlZc="
43 ];
44
45 programs.steam = {
46 enable = true;
47 };
48
49 # List services that you want to enable:
50 nixarr = {
51 enable = true;
52 mediaDir = "/mnt/storage1/nixarr/media";
53 vpn = {
54 enable = true;
55 wgConf = "/mnt/storage1/nixarr/wireguard.conf";
56 };
57
58 jellyfin = {
59 enable = true;
60 openFirewall = true;
61 };
62
63 transmission = {
64 enable = true;
65 vpn.enable = true;
66 };
67 sabnzbd = {
68 enable = true;
69 vpn.enable = true;
70 openFirewall = true;
71 };
72
73 prowlarr.enable = true;
74 radarr.enable = true;
75 sonarr.enable = true;
76 jellyseerr = {
77 enable = true;
78 openFirewall = true;
79 };
80
81 recyclarr = {
82 enable = true;
83 configuration = {
84 sonarr = {
85 series = {
86 base_url = "http://localhost:8989";
87 api_key = "!env_var SONARR_API_KEY";
88 quality_definition = {
89 type = "series";
90 };
91 delete_old_custom_formats = true;
92 custom_formats = [
93 {
94 trash_ids = [
95 "85c61753df5da1fb2aab6f2a47426b09" # BR-DISK
96 "9c11cd3f07101cdba90a2d81cf0e56b4" # LQ
97 ];
98 assign_scores_to = [
99 {
100 name = "WEB-DL (1080p)";
101 score = -10000;
102 }
103 ];
104 }
105 ];
106 };
107 };
108 radarr = {
109 movies = {
110 base_url = "http://localhost:7878";
111 api_key = "!env_var RADARR_API_KEY";
112 quality_definition = {
113 type = "movie";
114 };
115 delete_old_custom_formats = true;
116 custom_formats = [
117 {
118 trash_ids = [
119 "570bc9ebecd92723d2d21500f4be314c" # Remaster
120 "eca37840c13c6ef2dd0262b141a5482f" # 4K Remaster
121 ];
122 assign_scores_to = [
123 {
124 name = "HD Bluray + WEB";
125 score = 25;
126 }
127 ];
128 }
129 ];
130 };
131 };
132 };
133 };
134 };
135
136 # MQTT broker for Home Assistant (Tasmota devices)
137 services.mosquitto = {
138 enable = true;
139 listeners = [
140 {
141 acl = [ "pattern readwrite #" ];
142 omitPasswordAuth = true;
143 settings.allow_anonymous = true;
144 }
145 ];
146 };
147
148 # Home Assistant service
149 services.home-assistant = {
150 enable = true;
151 extraComponents = [
152 "esphome"
153 "met"
154 "radio_browser"
155 "homekit"
156 "homekit_controller"
157 "isal"
158 "mqtt"
159 "tasmota"
160 "wiz"
161 ];
162 config = {
163 homeassistant = {
164 time_zone = "America/Toronto";
165 };
166 default_config = { };
167 zeroconf = { };
168 # MQTT configuration - broker must be set up via UI
169 mqtt = { };
170 };
171 };
172
173 # Enable the OpenSSH daemon.
174 # services.openssh.enable = true;
175
176 # Open ports in the firewall.
177 networking.firewall.allowedTCPPorts = [
178 8096 # jellyfin
179 5055 # jellyseer
180 3000 # vite dev port
181 1883 # MQTT for Tasmota devices
182 config.services.home-assistant.config.http.server_port
183 ];
184 networking.firewall.allowedUDPPorts = [
185 ];
186 # networking.firewall.enable = false;
187
188 # This value determines the NixOS release from which the default
189 # settings for stateful data, like file locations and database versions
190 # on your system were taken. It‘s perfectly fine and recommended to leave
191 # this value at the release version of the first install of this system.
192 # Before changing this value read the documentation for this option
193 # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
194 system.stateVersion = "25.05"; # Did you read the comment?
195
196}