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
113 # Define a user account. Don't forget to set a password with ‘passwd’.
114 users.groups.storage = { };
115 users.users.sean = {
116 isNormalUser = true;
117 description = "Sean Aye";
118 extraGroups = [
119 "networkmanager"
120 "wheel"
121 "video"
122 "disk"
123 "storage"
124 "input"
125 ];
126 shell = pkgs.fish;
127 };
128
129 programs.fish.enable = true;
130 programs._1password.enable = true;
131 programs._1password-gui = {
132 enable = true;
133 polkitPolicyOwners = [ "sean" ];
134 };
135
136 programs.steam = {
137 enable = true;
138 };
139
140 # Allow unfree packages
141 nixpkgs.config.allowUnfree = true;
142
143 # List packages installed in system profile. To search, run:
144 # $ nix search wget
145 environment.systemPackages = with pkgs; [
146 wl-clipboard
147 ];
148 environment.variables = {
149 EDITOR = "hx";
150 VISUAL = "hx";
151 SUDO_EDITOR = "hx";
152 };
153
154 # List services that you want to enable:
155 nixarr = {
156 enable = true;
157 mediaDir = "/mnt/storage1/nixarr/media";
158 stateDir = "/mnt/storage1/nixarr/.state";
159 vpn = {
160 enable = true;
161 wgConf = "/mnt/storage1/nixarr/wireguard.conf";
162 };
163
164 jellyfin = {
165 enable = true;
166 openFirewall = true;
167 };
168
169 transmission = {
170 enable = true;
171 vpn.enable = true;
172 };
173 sabnzbd = {
174 enable = true;
175 vpn.enable = true;
176 openFirewall = true;
177 };
178
179 prowlarr.enable = true;
180 radarr.enable = true;
181 sonarr.enable = true;
182 jellyseerr = {
183 enable = true;
184 openFirewall = true;
185 };
186
187 recyclarr = {
188 enable = true;
189 configuration = {
190 sonarr = {
191 series = {
192 base_url = "http://localhost:8989";
193 api_key = "!env_var SONARR_API_KEY";
194 quality_definition = {
195 type = "series";
196 };
197 delete_old_custom_formats = true;
198 custom_formats = [
199 {
200 trash_ids = [
201 "85c61753df5da1fb2aab6f2a47426b09" # BR-DISK
202 "9c11cd3f07101cdba90a2d81cf0e56b4" # LQ
203 ];
204 assign_scores_to = [
205 {
206 name = "WEB-DL (1080p)";
207 score = -10000;
208 }
209 ];
210 }
211 ];
212 };
213 };
214 radarr = {
215 movies = {
216 base_url = "http://localhost:7878";
217 api_key = "!env_var RADARR_API_KEY";
218 quality_definition = {
219 type = "movie";
220 };
221 delete_old_custom_formats = true;
222 custom_formats = [
223 {
224 trash_ids = [
225 "570bc9ebecd92723d2d21500f4be314c" # Remaster
226 "eca37840c13c6ef2dd0262b141a5482f" # 4K Remaster
227 ];
228 assign_scores_to = [
229 {
230 name = "HD Bluray + WEB";
231 score = 25;
232 }
233 ];
234 }
235 ];
236 };
237 };
238 };
239 };
240 };
241
242 # Enable the OpenSSH daemon.
243 # services.openssh.enable = true;
244
245 # Open ports in the firewall.
246 networking.firewall.allowedTCPPorts = [
247 8096
248 5055
249 ];
250 networking.firewall.allowedUDPPorts = [
251 8096
252 5055
253 ];
254 # Or disable the firewall altogether.
255 # networking.firewall.enable = false;
256
257 # This value determines the NixOS release from which the default
258 # settings for stateful data, like file locations and database versions
259 # on your system were taken. It‘s perfectly fine and recommended to leave
260 # this value at the release version of the first install of this system.
261 # Before changing this value read the documentation for this option
262 # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
263 system.stateVersion = "25.05"; # Did you read the comment?
264
265}