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 vpn = {
158 enable = true;
159 wgConf = "/data/wireguard.conf";
160 };
161
162 jellyfin = {
163 enable = true;
164 openFirewall = true;
165 };
166
167 transmission = {
168 enable = true;
169 vpn.enable = true;
170 };
171 sabnzbd = {
172 enable = true;
173 vpn.enable = true;
174 openFirewall = true;
175 };
176
177 prowlarr.enable = true;
178 radarr.enable = true;
179 sonarr.enable = true;
180 jellyseerr = {
181 enable = true;
182 openFirewall = true;
183 };
184
185 recyclarr = {
186 enable = true;
187 configuration = {
188 sonarr = {
189 series = {
190 base_url = "http://localhost:8989";
191 api_key = "!env_var SONARR_API_KEY";
192 quality_definition = {
193 type = "series";
194 };
195 delete_old_custom_formats = true;
196 custom_formats = [
197 {
198 trash_ids = [
199 "85c61753df5da1fb2aab6f2a47426b09" # BR-DISK
200 "9c11cd3f07101cdba90a2d81cf0e56b4" # LQ
201 ];
202 assign_scores_to = [
203 {
204 name = "WEB-DL (1080p)";
205 score = -10000;
206 }
207 ];
208 }
209 ];
210 };
211 };
212 radarr = {
213 movies = {
214 base_url = "http://localhost:7878";
215 api_key = "!env_var RADARR_API_KEY";
216 quality_definition = {
217 type = "movie";
218 };
219 delete_old_custom_formats = true;
220 custom_formats = [
221 {
222 trash_ids = [
223 "570bc9ebecd92723d2d21500f4be314c" # Remaster
224 "eca37840c13c6ef2dd0262b141a5482f" # 4K Remaster
225 ];
226 assign_scores_to = [
227 {
228 name = "HD Bluray + WEB";
229 score = 25;
230 }
231 ];
232 }
233 ];
234 };
235 };
236 };
237 };
238 };
239
240 # Enable the OpenSSH daemon.
241 # services.openssh.enable = true;
242
243 # Open ports in the firewall.
244 networking.firewall.allowedTCPPorts = [
245 8096
246 5055
247 ];
248 networking.firewall.allowedUDPPorts = [
249 8096
250 5055
251 ];
252 # Or disable the firewall altogether.
253 # networking.firewall.enable = false;
254
255 # This value determines the NixOS release from which the default
256 # settings for stateful data, like file locations and database versions
257 # on your system were taken. It‘s perfectly fine and recommended to leave
258 # this value at the release version of the first install of this system.
259 # Before changing this value read the documentation for this option
260 # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
261 system.stateVersion = "25.05"; # Did you read the comment?
262
263}