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