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