me like nix
1{
2 pkgs,
3 ...
4}:
5
6{
7 imports = [
8 # Include the results of the hardware scan.
9 ./hardware-configuration.nix
10 ];
11
12 nix.settings.experimental-features = [
13 "nix-command"
14 "flakes"
15 ];
16
17 # Bootloader.
18 boot.loader.systemd-boot.enable = true;
19 boot.loader.efi.canTouchEfiVariables = true;
20
21 # Use latest kernel.
22 boot.kernelPackages = pkgs.linuxPackages_latest;
23
24 networking.hostName = "nixos"; # Define your hostname.
25 # networking.wireless.enable = true; # Enables wireless support via wpa_supplicant.
26
27 # Configure network proxy if necessary
28 # networking.proxy.default = "http://user:password@proxy:port/";
29 # networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";
30
31 # Enable networking
32 networking.networkmanager.enable = true;
33
34 # Set your time zone.
35 time.timeZone = "America/New_York";
36
37 # Select internationalisation properties.
38 i18n.defaultLocale = "en_US.UTF-8";
39
40 i18n.extraLocaleSettings = {
41 LC_ADDRESS = "en_US.UTF-8";
42 LC_IDENTIFICATION = "en_US.UTF-8";
43 LC_MEASUREMENT = "en_US.UTF-8";
44 LC_MONETARY = "en_US.UTF-8";
45 LC_NAME = "en_US.UTF-8";
46 LC_NUMERIC = "en_US.UTF-8";
47 LC_PAPER = "en_US.UTF-8";
48 LC_TELEPHONE = "en_US.UTF-8";
49 LC_TIME = "en_US.UTF-8";
50 };
51
52 programs.niri = {
53 enable = true;
54 package = pkgs.niri;
55 };
56
57 services.greetd = {
58 enable = true;
59 settings = {
60 default_session = {
61 command = "${pkgs.greetd.tuigreet}/bin/tuigreet --time --cmd niri-session";
62 user = "greeter";
63 };
64 };
65 };
66
67 # xdg.portal = {
68 # enable = true;
69 # xdgOpenUsePortal = true;
70 # config = {
71 # common = {
72 # default = [
73 # "gnome"
74 # "gtk"
75 # ];
76
77 # "org.freedesktop.impl.portal.ScreenCast" = "gnome";
78 # "org.freedesktop.impl.portal.Screenshot" = "gnome";
79 # "org.freedesktop.impl.portal.RemoteDesktop" = "gnome";
80 # };
81 # };
82
83 # # Specify the backends you want to use.
84 # # The order matters, the first one is the primary.
85 # extraPortals = with pkgs; [
86 # xdg-desktop-portal-gtk
87 # xdg-desktop-portal-gnome
88 # ];
89 # };
90
91 # Enable CUPS to print documents.
92 services.printing.enable = true;
93
94 # Enable sound with pipewire.
95 security.polkit.enable = true;
96 security.rtkit.enable = true;
97 services.pipewire = {
98 enable = true;
99 alsa.enable = true;
100 alsa.support32Bit = true;
101 pulse.enable = true;
102 # If you want to use JACK applications, uncomment this
103 #jack.enable = true;
104
105 # use the example session manager (no others are packaged yet so this is enabled by default,
106 # no need to redefine it in your config for now)
107 #media-session.enable = true;
108 };
109
110 services.udisks2.enable = true;
111 services.tailscale.enable = true;
112 services.openssh = {
113 enable = true;
114 ports = [ 5431 ];
115 settings = {
116 PasswordAuthentication = false;
117 KbdInteractiveAuthentication = false;
118 PermitRootLogin = "no";
119 AllowUsers = [ "sean" ];
120 };
121 };
122
123 # Define a user account. Don't forget to set a password with ‘passwd’.
124 users.groups.storage = { };
125 users.users.sean = {
126 openssh.authorizedKeys.keys = [
127 "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDCIqgZ7kedxo+mOW7YG73Vp3zel3h180y3GKvHtRsXfGlpIIvRDy7pgCBQ4AGXYD4y78URQmFohYSAPqCPOPaWcU2un3XG9KvCzEsHmsbskPonitUmCiKvrKkb6oW4jCBtd7AEtBn+AiajAQFtPZ7NN2Df3AmTypvR6Irg7R+nxnfc9NTIHmGvxSDyWcbb4pguL20sctUSqGL6xGh8q/bqhdOThSimM+z9bEUNxK/5rPhwkNniMrp4pJcUrUiAh5/4DiRFG6KT+oeg+/myoz/Z1sPvAs7u/8JDQI4RshRD8Hu0oTkRBN6Hxj478q2SXbeBUZlD6IdjP3RhGpmSecoDdtWqKbpuV3eVRtQtba3KL86GBeV/bugaOdJ1Aud+1SOFJreAAuvxzMMKT+cdQZk6oOPP148DA/No+mDm/2S43lcdCXh79wA6YRAmKQ8jmZxTCtPutrvuZK1rguvvUlEoG/vhdNHh7eDa4Td07V6bjCRPUl8qk/e4M0E3pwsTlZc="
128 ];
129 isNormalUser = true;
130 description = "Sean Aye";
131 extraGroups = [
132 "docker"
133 "networkmanager"
134 "wheel"
135 "video"
136 "disk"
137 "storage"
138 "input"
139 ];
140 shell = pkgs.fish;
141 };
142
143 programs.fish.enable = true;
144 programs._1password.enable = true;
145 programs._1password-gui = {
146 enable = true;
147 polkitPolicyOwners = [ "sean" ];
148 };
149
150 programs.steam = {
151 enable = true;
152 };
153 virtualisation.docker.enable = true;
154
155 # Allow unfree packages
156 nixpkgs.config.allowUnfree = true;
157
158 # List packages installed in system profile. To search, run:
159 # $ nix search wget
160 environment.systemPackages = with pkgs; [
161 wl-clipboard
162 ];
163 environment.variables = {
164 EDITOR = "hx";
165 VISUAL = "hx";
166 SUDO_EDITOR = "hx";
167 };
168
169 # List services that you want to enable:
170 nixarr = {
171 enable = true;
172 mediaDir = "/mnt/storage1/nixarr/media";
173 vpn = {
174 enable = true;
175 wgConf = "/mnt/storage1/nixarr/wireguard.conf";
176 };
177
178 jellyfin = {
179 enable = true;
180 openFirewall = true;
181 };
182
183 transmission = {
184 enable = true;
185 vpn.enable = true;
186 };
187 sabnzbd = {
188 enable = true;
189 vpn.enable = true;
190 openFirewall = true;
191 };
192
193 prowlarr.enable = true;
194 radarr.enable = true;
195 sonarr.enable = true;
196 jellyseerr = {
197 enable = true;
198 openFirewall = true;
199 };
200
201 recyclarr = {
202 enable = true;
203 configuration = {
204 sonarr = {
205 series = {
206 base_url = "http://localhost:8989";
207 api_key = "!env_var SONARR_API_KEY";
208 quality_definition = {
209 type = "series";
210 };
211 delete_old_custom_formats = true;
212 custom_formats = [
213 {
214 trash_ids = [
215 "85c61753df5da1fb2aab6f2a47426b09" # BR-DISK
216 "9c11cd3f07101cdba90a2d81cf0e56b4" # LQ
217 ];
218 assign_scores_to = [
219 {
220 name = "WEB-DL (1080p)";
221 score = -10000;
222 }
223 ];
224 }
225 ];
226 };
227 };
228 radarr = {
229 movies = {
230 base_url = "http://localhost:7878";
231 api_key = "!env_var RADARR_API_KEY";
232 quality_definition = {
233 type = "movie";
234 };
235 delete_old_custom_formats = true;
236 custom_formats = [
237 {
238 trash_ids = [
239 "570bc9ebecd92723d2d21500f4be314c" # Remaster
240 "eca37840c13c6ef2dd0262b141a5482f" # 4K Remaster
241 ];
242 assign_scores_to = [
243 {
244 name = "HD Bluray + WEB";
245 score = 25;
246 }
247 ];
248 }
249 ];
250 };
251 };
252 };
253 };
254 };
255
256 # Enable the OpenSSH daemon.
257 # services.openssh.enable = true;
258
259 # Open ports in the firewall.
260 networking.firewall.allowedTCPPorts = [
261 8096
262 5055
263 ];
264 networking.firewall.allowedUDPPorts = [
265 8096
266 5055
267 ];
268 # Or disable the firewall altogether.
269 # networking.firewall.enable = false;
270
271 # This value determines the NixOS release from which the default
272 # settings for stateful data, like file locations and database versions
273 # on your system were taken. It‘s perfectly fine and recommended to leave
274 # this value at the release version of the first install of this system.
275 # Before changing this value read the documentation for this option
276 # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
277 system.stateVersion = "25.05"; # Did you read the comment?
278
279}