aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--flake.lock95
-rw-r--r--flake.nix24
-rw-r--r--home.nix3
-rw-r--r--hosts/mantis/configuration.nix200
-rw-r--r--hosts/mantis/hardware-configuration.nix40
-rw-r--r--hosts/myrtle/configuration.nix6
-rw-r--r--programs/bash.nix2
-rw-r--r--programs/git.nix23
-rw-r--r--programs/neovim.nix1
9 files changed, 335 insertions, 59 deletions
diff --git a/flake.lock b/flake.lock
index 6e39042..07bf271 100644
--- a/flake.lock
+++ b/flake.lock
@@ -20,44 +20,62 @@
20 "url": "https://git.peppe.rs/vim/better-text-objs" 20 "url": "https://git.peppe.rs/vim/better-text-objs"
21 } 21 }
22 }, 22 },
23 "home-manager": { 23 "flaresolverr": {
24 "inputs": { 24 "inputs": {
25 "flaresolverr-src": "flaresolverr-src",
25 "nixpkgs": [ 26 "nixpkgs": [
26 "nixpkgs" 27 "nixpkgs"
27 ] 28 ],
29 "undetected-chromedriver-src": "undetected-chromedriver-src"
28 }, 30 },
29 "locked": { 31 "locked": {
30 "lastModified": 1701433070, 32 "lastModified": 1709380050,
31 "narHash": "sha256-Gf9JStfENaUQ7YWFz3V7x/srIwr4nlnVteqaAxtwpgM=", 33 "narHash": "sha256-Nwtjc3XZgr9NT8acSGt3IvaVBYRPFWFBo+xVw58eKRw=",
32 "owner": "nix-community", 34 "ref": "refs/heads/master",
33 "repo": "home-manager", 35 "rev": "6798a20e5482b574c8e02e5ff260d72ea6431a29",
34 "rev": "4a8545f5e737a6338814a4676dc8e18c7f43fc57", 36 "revCount": 1,
37 "type": "git",
38 "url": "https://git.peppe.rs/flakes/flaresolverr"
39 },
40 "original": {
41 "type": "git",
42 "url": "https://git.peppe.rs/flakes/flaresolverr"
43 }
44 },
45 "flaresolverr-src": {
46 "flake": false,
47 "locked": {
48 "lastModified": 1709156333,
49 "narHash": "sha256-pf5sibZ9Vjc98UOVTEUlKrBoXXKiykrt+szXLbNJB3k=",
50 "owner": "FlareSolverr",
51 "repo": "FlareSolverr",
52 "rev": "fd773e59097c1aca4e08edc07c1ed30164f88bd3",
35 "type": "github" 53 "type": "github"
36 }, 54 },
37 "original": { 55 "original": {
38 "owner": "nix-community", 56 "owner": "FlareSolverr",
39 "repo": "home-manager", 57 "ref": "v3.3.16",
58 "repo": "FlareSolverr",
40 "type": "github" 59 "type": "github"
41 } 60 }
42 }, 61 },
43 "nix-github-actions": { 62 "home-manager": {
44 "inputs": { 63 "inputs": {
45 "nixpkgs": [ 64 "nixpkgs": [
46 "talon",
47 "nixpkgs" 65 "nixpkgs"
48 ] 66 ]
49 }, 67 },
50 "locked": { 68 "locked": {
51 "lastModified": 1693660503, 69 "lastModified": 1701433070,
52 "narHash": "sha256-B/g2V4v6gjirFmy+I5mwB2bCYc0l3j5scVfwgl6WOl8=", 70 "narHash": "sha256-Gf9JStfENaUQ7YWFz3V7x/srIwr4nlnVteqaAxtwpgM=",
53 "owner": "nix-community", 71 "owner": "nix-community",
54 "repo": "nix-github-actions", 72 "repo": "home-manager",
55 "rev": "bd5bdbb52350e145c526108f4ef192eb8e554fa0", 73 "rev": "4a8545f5e737a6338814a4676dc8e18c7f43fc57",
56 "type": "github" 74 "type": "github"
57 }, 75 },
58 "original": { 76 "original": {
59 "owner": "nix-community", 77 "owner": "nix-community",
60 "repo": "nix-github-actions", 78 "repo": "home-manager",
61 "type": "github" 79 "type": "github"
62 } 80 }
63 }, 81 },
@@ -78,11 +96,11 @@
78 }, 96 },
79 "nixpkgs": { 97 "nixpkgs": {
80 "locked": { 98 "locked": {
81 "lastModified": 1701141680, 99 "lastModified": 1707205916,
82 "narHash": "sha256-qaPcwKI0RR6mxfn4sMrHEjjDl6VCEPUTRZhN+OFB6zg=", 100 "narHash": "sha256-fmRJilYGlB7VCt3XsdYxrA0u8e/K84O5xYucerUY0iM=",
83 "owner": "NixOS", 101 "owner": "NixOS",
84 "repo": "nixpkgs", 102 "repo": "nixpkgs",
85 "rev": "4469e22700c47792f93daa882786d36f9bf8bc2a", 103 "rev": "8cc79aa39bbc6eaedaf286ae655b224c71e02907",
86 "type": "github" 104 "type": "github"
87 }, 105 },
88 "original": { 106 "original": {
@@ -92,22 +110,6 @@
92 "type": "github" 110 "type": "github"
93 } 111 }
94 }, 112 },
95 "nixpkgs_2": {
96 "locked": {
97 "lastModified": 1698318101,
98 "narHash": "sha256-gUihHt3yPD7bVqg+k/UVHgngyaJ3DMEBchbymBMvK1E=",
99 "owner": "NixOS",
100 "repo": "nixpkgs",
101 "rev": "63678e9f3d3afecfeafa0acead6239cdb447574c",
102 "type": "github"
103 },
104 "original": {
105 "owner": "NixOS",
106 "ref": "nixos-unstable",
107 "repo": "nixpkgs",
108 "type": "github"
109 }
110 },
111 "prompt": { 113 "prompt": {
112 "inputs": { 114 "inputs": {
113 "nixpkgs": [ 115 "nixpkgs": [
@@ -131,30 +133,27 @@
131 "root": { 133 "root": {
132 "inputs": { 134 "inputs": {
133 "better-text-objs": "better-text-objs", 135 "better-text-objs": "better-text-objs",
136 "flaresolverr": "flaresolverr",
134 "home-manager": "home-manager", 137 "home-manager": "home-manager",
135 "nixos-hardware": "nixos-hardware", 138 "nixos-hardware": "nixos-hardware",
136 "nixpkgs": "nixpkgs", 139 "nixpkgs": "nixpkgs",
137 "prompt": "prompt", 140 "prompt": "prompt",
138 "talon": "talon",
139 "vim-colors-plain": "vim-colors-plain" 141 "vim-colors-plain": "vim-colors-plain"
140 } 142 }
141 }, 143 },
142 "talon": { 144 "undetected-chromedriver-src": {
143 "inputs": { 145 "flake": false,
144 "nix-github-actions": "nix-github-actions",
145 "nixpkgs": "nixpkgs_2"
146 },
147 "locked": { 146 "locked": {
148 "lastModified": 1701208467, 147 "lastModified": 1708190030,
149 "narHash": "sha256-1xt+pieI5N1muLQ3NVuar9yl/YpkWX4/2+LPdhPC31Y=", 148 "narHash": "sha256-Qe+GrsUPnhjJMDgjdUCloapjj0ggFlm/Dr42WLcmb1o=",
150 "owner": "nix-community", 149 "owner": "ultrafunkamsterdam",
151 "repo": "talon-nix", 150 "repo": "undetected-chromedriver",
152 "rev": "75a4a73b457ccbb44229dc9a5ec97c2ca46da065", 151 "rev": "0aa5fbe252370b4cb2b95526add445392cad27ba",
153 "type": "github" 152 "type": "github"
154 }, 153 },
155 "original": { 154 "original": {
156 "owner": "nix-community", 155 "owner": "ultrafunkamsterdam",
157 "repo": "talon-nix", 156 "repo": "undetected-chromedriver",
158 "type": "github" 157 "type": "github"
159 } 158 }
160 }, 159 },
diff --git a/flake.nix b/flake.nix
index f57748d..e5b79b6 100644
--- a/flake.nix
+++ b/flake.nix
@@ -11,8 +11,6 @@
11 inputs.nixpkgs.follows = "nixpkgs"; 11 inputs.nixpkgs.follows = "nixpkgs";
12 }; 12 };
13 13
14 talon.url = "github:nix-community/talon-nix";
15
16 prompt = { 14 prompt = {
17 url = "git+https://git.peppe.rs/cli/prompt"; 15 url = "git+https://git.peppe.rs/cli/prompt";
18 inputs.nixpkgs.follows = "nixpkgs"; 16 inputs.nixpkgs.follows = "nixpkgs";
@@ -28,6 +26,11 @@
28 inputs.nixpkgs.follows = "nixpkgs"; 26 inputs.nixpkgs.follows = "nixpkgs";
29 }; 27 };
30 28
29 flaresolverr = {
30 url = "git+https://git.peppe.rs/flakes/flaresolverr";
31 inputs.nixpkgs.follows = "nixpkgs";
32 };
33
31 }; 34 };
32 35
33 outputs = 36 outputs =
@@ -35,11 +38,10 @@
35 , nixpkgs 38 , nixpkgs
36 , nixos-hardware 39 , nixos-hardware
37 , home-manager 40 , home-manager
38 # , statix
39 , prompt 41 , prompt
40 , better-text-objs 42 , better-text-objs
41 , vim-colors-plain 43 , vim-colors-plain
42 , talon 44 , flaresolverr
43 , ... 45 , ...
44 } @ inputs: { 46 } @ inputs: {
45 47
@@ -48,7 +50,7 @@
48 prompt = prompt.overlay; 50 prompt = prompt.overlay;
49 better-text-objs = better-text-objs.overlay; 51 better-text-objs = better-text-objs.overlay;
50 vim-colors-plain = vim-colors-plain.overlay; 52 vim-colors-plain = vim-colors-plain.overlay;
51 talon = talon.overlays.default; 53 flaresolverr = flaresolverr.overlays.default;
52 }; 54 };
53 55
54 nixosConfigurations = { 56 nixosConfigurations = {
@@ -97,6 +99,18 @@
97 nixos-hardware.nixosModules.asus-battery 99 nixos-hardware.nixosModules.asus-battery
98 ]; 100 ];
99 }; 101 };
102
103 mantis = nixpkgs.lib.nixosSystem {
104 system = "x86_64-linux";
105 modules = [
106 ({ config = { nix.registry.nixpkgs.flake = nixpkgs; }; })
107 {
108 imports = [ ./hosts/mantis/configuration.nix ];
109 _module.args.self = self;
110 }
111 ];
112 };
113
100 }; 114 };
101 }; 115 };
102 116
diff --git a/home.nix b/home.nix
index 6500216..f946df1 100644
--- a/home.nix
+++ b/home.nix
@@ -36,10 +36,8 @@
36 cmus 36 cmus
37 tree 37 tree
38 neomutt 38 neomutt
39 nodePackages.bash-language-server
40 w3m 39 w3m
41 noto-fonts-emoji 40 noto-fonts-emoji
42 urlview
43 fd 41 fd
44 du-dust 42 du-dust
45 jq 43 jq
@@ -52,6 +50,7 @@
52 httpie 50 httpie
53 thunderbird 51 thunderbird
54 calibre 52 calibre
53 gh
55 54
56 # gaming 55 # gaming
57 mgba 56 mgba
diff --git a/hosts/mantis/configuration.nix b/hosts/mantis/configuration.nix
new file mode 100644
index 0000000..8b5b489
--- /dev/null
+++ b/hosts/mantis/configuration.nix
@@ -0,0 +1,200 @@
1# Edit this configuration file to define what should be installed on
2# your system. Help is available in the configuration.nix(5) man page, on
3# https://search.nixos.org/options and in the NixOS manual (`nixos-help`).
4
5{ config, lib, pkgs, self, ... }:
6
7{
8 imports =
9 [
10 # Include the results of the hardware scan.
11 ./hardware-configuration.nix
12 ];
13
14 nixpkgs.overlays = with self.overlays; [
15 flaresolverr
16 ];
17
18 # Use the systemd-boot EFI boot loader.
19 boot.loader.systemd-boot.enable = true;
20 boot.loader.efi.canTouchEfiVariables = true;
21
22 networking.hostName = "mantis"; # Define your hostname.
23 networking.wireless.iwd.enable = true; # Enables wireless support via wpa_supplicant.
24 networking.firewall.allowedTCPPorts = [ 80 443 ];
25
26 time.timeZone = "Europe/London";
27 i18n.defaultLocale = "en_US.UTF-8";
28
29 nixpkgs.config.packageOverrides = pkgs: {
30 vaapiIntel = pkgs.vaapiIntel.override { enableHybridCodec = true; };
31 };
32
33 # Enable sound.
34 sound.enable = true;
35 hardware.pulseaudio.enable = true;
36 hardware.opengl = {
37 enable = true;
38 extraPackages = with pkgs; [
39 intel-media-driver
40 vaapiIntel
41 vaapiVdpau
42 libvdpau-va-gl
43 intel-compute-runtime # OpenCL filter support (hardware tonemapping and subtitle burn-in)
44 ];
45 };
46
47 # Define a user account. Don't forget to set a password with ‘passwd’.
48 users.users.op = {
49 isNormalUser = true;
50 extraGroups = [ "wheel" "tty" ];
51 packages = with pkgs; [ ];
52 home = "/home/op";
53 openssh.authorizedKeys.keys = [
54 "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILzFK/zY2ZaAftBfFPO+IJAgyD45pe0fXrpF81p8aNIl np@myrtle"
55 ];
56 };
57 users.groups."torrent".members = [
58 "sonarr"
59 "radarr"
60 "bazarr"
61 "jackett"
62 "lidarr"
63 "jellyfin"
64 "transmission"
65 ];
66
67 environment.systemPackages = with pkgs; [
68 vim
69 wget
70 pkgs.jellyfin
71 pkgs.jellyfin-web
72 pkgs.jellyfin-ffmpeg
73
74 pkgs.htop
75 pkgs.ripgrep
76 ];
77
78 services.openssh.enable = true;
79 services.nginx.enable = true;
80 services.tailscale.enable = true;
81
82 services.jellyfin = {
83 enable = true;
84 openFirewall = true;
85 group = "torrent";
86 };
87 services.nginx.virtualHosts."stream.mantis" = {
88 listen = [{ port = 80; addr = "0.0.0.0"; }];
89 locations."/" = {
90 proxyPass = "http://127.0.0.1:8096";
91 proxyWebsockets = true;
92 };
93 };
94
95 services.transmission = {
96 enable = true;
97 openFirewall = true;
98 openRPCPort = true;
99 group = "torrent";
100 settings = {
101 download-dir = "/torrents";
102 incomplete-dir = "/.incomplete";
103 rpc-bind-address = "0.0.0.0";
104 rpc-whitelist = "127.0.0.1,10.0.0.1,192.168.*.*,100.64.*.*";
105 };
106 };
107 services.nginx.virtualHosts."torrent.mantis" = {
108 listen = [{ port = 80; addr = "0.0.0.0"; }];
109 locations."/" = {
110 proxyPass = "http://127.0.0.1:9091";
111 };
112 };
113
114 services.sonarr = {
115 enable = true;
116 openFirewall = true;
117 group = "torrent";
118 };
119 services.nginx.virtualHosts."sonarr.mantis" = {
120 listen = [{ port = 80; addr = "0.0.0.0"; }];
121 locations."/" = {
122 proxyPass = "http://127.0.0.1:8989";
123 };
124 };
125
126 services.radarr = {
127 enable = true;
128 openFirewall = true;
129 group = "torrent";
130 };
131 services.nginx.virtualHosts."radarr.mantis" = {
132 listen = [{ port = 80; addr = "0.0.0.0"; }];
133 locations."/" = {
134 proxyPass = "http://127.0.0.1:7878";
135 };
136 };
137
138 services.bazarr = {
139 enable = true;
140 openFirewall = true;
141 group = "torrent";
142 };
143 services.nginx.virtualHosts."bazarr.mantis" = {
144 listen = [{ port = 80; addr = "0.0.0.0"; }];
145 locations."/" = {
146 proxyPass = "http://127.0.0.1:6767";
147 };
148 };
149
150 services.jackett = {
151 enable = true;
152 openFirewall = true;
153 group = "torrent";
154 };
155 services.nginx.virtualHosts."jackett.mantis" = {
156 listen = [{ port = 80; addr = "0.0.0.0"; }];
157 locations."/" = {
158 proxyPass = "http://127.0.0.1:9117";
159 };
160 };
161
162 services.lidarr = {
163 enable = true;
164 openFirewall = true;
165 group = "torrent";
166 };
167 services.nginx.virtualHosts."lidarr.mantis" = {
168 listen = [{ port = 80; addr = "0.0.0.0"; }];
169 locations."/" = {
170 proxyPass = "http://127.0.0.1:8686";
171 };
172 };
173
174 nix.settings.experimental-features = [ "nix-command" "flakes" ];
175
176 # Copy the NixOS configuration file and link it from the resulting system
177 # (/run/current-system/configuration.nix). This is useful in case you
178 # accidentally delete configuration.nix.
179 # system.copySystemConfiguration = true;
180
181 # This option defines the first version of NixOS you have installed on this particular machine,
182 # and is used to maintain compatibility with application data (e.g. databases) created on older NixOS versions.
183 #
184 # Most users should NEVER change this value after the initial install, for any reason,
185 # even if you've upgraded your system to a new NixOS release.
186 #
187 # This value does NOT affect the Nixpkgs version your packages and OS are pulled from,
188 # so changing it will NOT upgrade your system.
189 #
190 # This value being lower than the current NixOS release does NOT mean your system is
191 # out of date, out of support, or vulnerable.
192 #
193 # Do NOT change this value unless you have manually inspected all the changes it would make to your configuration,
194 # and migrated your data accordingly.
195 #
196 # For more information, see `man configuration.nix` or https://nixos.org/manual/nixos/stable/options#opt-system.stateVersion .
197 system.stateVersion = "23.11"; # Did you read the comment?
198
199}
200
diff --git a/hosts/mantis/hardware-configuration.nix b/hosts/mantis/hardware-configuration.nix
new file mode 100644
index 0000000..8d7f39a
--- /dev/null
+++ b/hosts/mantis/hardware-configuration.nix
@@ -0,0 +1,40 @@
1# Do not modify this file! It was generated by ‘nixos-generate-config’
2# and may be overwritten by future invocations. Please make changes
3# to /etc/nixos/configuration.nix instead.
4{ config, lib, pkgs, modulesPath, ... }:
5
6{
7 imports =
8 [ (modulesPath + "/installer/scan/not-detected.nix")
9 ];
10
11 boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "usbhid" "usb_storage" "sd_mod" ];
12 boot.initrd.kernelModules = [ ];
13 boot.kernelModules = [ "kvm-intel" ];
14 boot.extraModulePackages = [ ];
15
16 fileSystems."/" =
17 { device = "/dev/disk/by-uuid/e3eda8a2-b5fe-4458-988c-48579a7cc6c6";
18 fsType = "ext4";
19 };
20
21 fileSystems."/boot" =
22 { device = "/dev/disk/by-uuid/A170-EC57";
23 fsType = "vfat";
24 };
25
26 swapDevices =
27 [ { device = "/dev/disk/by-uuid/61cb6a91-b916-40b9-b231-c04378629d90"; }
28 ];
29
30 # Enables DHCP on each ethernet and wireless interface. In case of scripted networking
31 # (the default) this is the recommended approach. When using systemd-networkd it's
32 # still possible to use this option, but it's recommended to use it in conjunction
33 # with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
34 networking.useDHCP = lib.mkDefault true;
35 # networking.interfaces.enp2s0.useDHCP = lib.mkDefault true;
36 # networking.interfaces.wlp3s0.useDHCP = lib.mkDefault true;
37
38 nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
39 hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
40}
diff --git a/hosts/myrtle/configuration.nix b/hosts/myrtle/configuration.nix
index 069425f..dd45d3b 100644
--- a/hosts/myrtle/configuration.nix
+++ b/hosts/myrtle/configuration.nix
@@ -53,7 +53,6 @@
53 prompt 53 prompt
54 better-text-objs 54 better-text-objs
55 vim-colors-plain 55 vim-colors-plain
56 talon
57 ]; 56 ];
58 57
59 environment = { 58 environment = {
@@ -141,7 +140,7 @@
141 services = { 140 services = {
142 xserver = { 141 xserver = {
143 enable = true; 142 enable = true;
144 layout = "us"; 143 xkb.layout = "us";
145 videoDrivers = [ "nvidia" ]; 144 videoDrivers = [ "nvidia" ];
146 displayManager.startx.enable = true; 145 displayManager.startx.enable = true;
147 libinput.enable = true; 146 libinput.enable = true;
@@ -196,6 +195,7 @@
196 mountOnMedia = true; 195 mountOnMedia = true;
197 }; 196 };
198 197
198 tailscale.enable = true;
199 }; 199 };
200 200
201 systemd.sleep.extraConfig = '' 201 systemd.sleep.extraConfig = ''
@@ -249,7 +249,7 @@
249 nix = { 249 nix = {
250 package = pkgs.nixUnstable; 250 package = pkgs.nixUnstable;
251 extraOptions = '' 251 extraOptions = ''
252 experimental-features = nix-command flakes 252 experimental-features = nix-command flakes repl-flake
253 warn-dirty = false 253 warn-dirty = false
254 keep-outputs = false 254 keep-outputs = false
255 keep-derivations = false 255 keep-derivations = false
diff --git a/programs/bash.nix b/programs/bash.nix
index f6f8de9..e2b825a 100644
--- a/programs/bash.nix
+++ b/programs/bash.nix
@@ -87,7 +87,7 @@
87 git worktree list | \ 87 git worktree list | \
88 fzf --min-height=15 \ 88 fzf --min-height=15 \
89 --preview-window=up,10 \ 89 --preview-window=up,10 \
90 --preview='git log --color=always -n10 --oneline {2}' \ 90 --preview='git log --color=always -n10 --decorate --oneline {2}' \
91 --cycle -1 \ 91 --cycle -1 \
92 -q "$query" | \ 92 -q "$query" | \
93 awk '{print $1}' 93 awk '{print $1}'
diff --git a/programs/git.nix b/programs/git.nix
index bc312de..e4b5e0f 100644
--- a/programs/git.nix
+++ b/programs/git.nix
@@ -39,11 +39,34 @@ with theme;
39 }; 39 };
40 }; 40 };
41 }; 41 };
42 # difftastic = {
43 # enable = true;
44 # background = "dark";
45 # display = "inline";
46 # };
47 aliases = {
48 co = "checkout";
49 rb = "rebase";
50 };
42 extraConfig = { 51 extraConfig = {
43 commit.verbose = true; 52 commit.verbose = true;
44 core = { 53 core = {
45 hooksPath = "/home/np/.hooks"; 54 hooksPath = "/home/np/.hooks";
46 }; 55 };
56 column = {
57 ui = "auto dense";
58 status = "never";
59 };
60 branch.sort = "-committerdate";
61 worktree.guessRemote = true;
62 rebase = {
63 abbreviateCommands = true;
64 stat = true;
65 };
66 rerere = {
67 enabled = true;
68 autoUpdate = true;
69 };
47 }; 70 };
48 }; 71 };
49} 72}
diff --git a/programs/neovim.nix b/programs/neovim.nix
index 0430868..08a1ada 100644
--- a/programs/neovim.nix
+++ b/programs/neovim.nix
@@ -14,6 +14,7 @@
14 extraPackages = with pkgs; [ 14 extraPackages = with pkgs; [
15 # gcc 15 # gcc
16 python311Packages.yapf 16 python311Packages.yapf
17 nodePackages.bash-language-server
17 # hlint 18 # hlint
18 # ocamlformat 19 # ocamlformat
19 ]; 20 ];