format all

This commit is contained in:
Callum Leslie 2026-04-22 21:28:19 +01:00
parent 091cfbdf96
commit bcf0553529
Signed by: cleslie
GPG key ID: D382C4AFEECEAA90
40 changed files with 271 additions and 140 deletions

View file

@ -1,5 +1,9 @@
{pkgs, ...}: {
imports = [./programs ./services];
{ pkgs, ... }:
{
imports = [
./programs
./services
];
programs.home-manager.enable = true;
services.trayscale.enable = true;

View file

@ -1,8 +1,11 @@
{...}: {
{ ... }:
{
programs.alacritty = {
enable = true;
settings = {
env = {TERM = "xterm-256color";};
env = {
TERM = "xterm-256color";
};
};
};
}

View file

@ -1,4 +1,5 @@
{...}: {
{ ... }:
{
imports = [
./hypr
./waybar

View file

@ -1,4 +1,5 @@
{...}: {
{ ... }:
{
programs.direnv = {
enable = true;
nix-direnv.enable = true;

View file

@ -1,4 +1,5 @@
{inputs, ...}: {
{ inputs, ... }:
{
programs.firefox = {
enable = true;
policies = {

View file

@ -1,4 +1,5 @@
{...}: {
{ ... }:
{
programs = {
git = {
enable = true;
@ -18,7 +19,9 @@
email = "psycl6@nottingham.ac.uk";
signingKey = "14861F1282EFB5C8!";
};
credential = {helper = "store";};
credential = {
helper = "store";
};
};
}
];
@ -29,10 +32,16 @@
autocrlf = false;
};
init = {defaultBranch = "main";};
init = {
defaultBranch = "main";
};
push = {autoSetupRemote = true;};
ghq = {root = "~/repos";};
push = {
autoSetupRemote = true;
};
ghq = {
root = "~/repos";
};
};
};
delta.enable = true;

View file

@ -1,4 +1,5 @@
{...}: {
{ ... }:
{
programs.jujutsu = {
enable = true;
settings = {

View file

@ -1,4 +1,5 @@
{pkgs, ...}: {
{ pkgs, ... }:
{
programs.rbw = {
enable = true;
settings = {

View file

@ -1,4 +1,5 @@
{pkgs, ...}: {
{ pkgs, ... }:
{
programs.rofi = {
enable = true;
package = pkgs.rofi;

View file

@ -1,5 +1,9 @@
{pkgs, ...}: {
imports = [./mako ./kanshi];
{ pkgs, ... }:
{
imports = [
./mako
./kanshi
];
services = {
network-manager-applet.enable = true;
mpris-proxy.enable = true;

View file

@ -1,4 +1,5 @@
{...}: {
{ ... }:
{
services.kanshi = {
enable = true;
settings = [

View file

@ -1,4 +1,5 @@
{...}: {
{ ... }:
{
services.mako = {
enable = true;
settings.defaultTimeout = 7000;

View file

@ -1,4 +1,5 @@
{...}: {
{ ... }:
{
virtualisation = {
waydroid.enable = true;
libvirtd.enable = true;

View file

@ -1,4 +1,5 @@
{...}: {
{ ... }:
{
imports = [
./hardware-configuration.nix
./configuration.nix

View file

@ -4,11 +4,18 @@
pkgs,
modulesPath,
...
}: {
}:
{
imports = [ (modulesPath + "/installer/scan/not-detected.nix") ];
zramSwap.enable = true;
boot = {
initrd.availableKernelModules = ["xhci_pci" "thunderbolt" "nvme" "usb_storage" "rtsx_pci_sdmmc"];
initrd.availableKernelModules = [
"xhci_pci"
"thunderbolt"
"nvme"
"usb_storage"
"rtsx_pci_sdmmc"
];
initrd.kernelModules = [ ];
kernelModules = [ "kvm-intel" ];
extraModulePackages = [ ];
@ -25,7 +32,11 @@
bluetooth = {
enable = true;
powerOnBoot = true;
settings = {General = {Enable = "Source,Sink,Media,Socket";};};
settings = {
General = {
Enable = "Source,Sink,Media,Socket";
};
};
};
graphics = {
@ -44,7 +55,9 @@
cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
};
environment.sessionVariables = {LIBVA_DRIVER_NAME = "iHD";}; # Force intel-media-driver
environment.sessionVariables = {
LIBVA_DRIVER_NAME = "iHD";
}; # Force intel-media-driver
services = {
blueman.enable = true;

View file

@ -1,10 +1,14 @@
{...}: {
{ ... }:
{
networking = {
hostName = "artemis";
networkmanager.enable = true;
firewall.enable = true;
firewall.allowPing = true;
enableIPv6 = false;
nameservers = ["9.9.9.9" "149.112.112.112"];
nameservers = [
"9.9.9.9"
"149.112.112.112"
];
};
}

View file

@ -2,7 +2,8 @@
pkgs,
lib,
...
}: {
}:
{
programs = {
wireshark.enable = true;
fish.enable = true;
@ -30,7 +31,11 @@
# theme_name = "Adwaita";
# };
};
cageArgs = ["-s" "-m" "last"];
cageArgs = [
"-s"
"-m"
"last"
];
};
};
services = {

View file

@ -1,4 +1,5 @@
{...}: {
{ ... }:
{
services.openssh = {
enable = true;
settings = {

View file

@ -1,4 +1,5 @@
{pkgs, ...}: {
{ pkgs, ... }:
{
stylix = {
enable = true;

View file

@ -2,10 +2,20 @@
inputs,
mods,
...
}: let
sharedModules = [inputs.home-manager.nixosModules.home-manager inputs.stylix.nixosModules.stylix inputs.agenix.nixosModules.default] ++ mods.sharedModules;
}:
let
sharedModules = [
inputs.home-manager.nixosModules.home-manager
inputs.stylix.nixosModules.stylix
inputs.agenix.nixosModules.default
]
++ mods.sharedModules;
artemis = import ./artemis { inherit inputs sharedModules; };
hermes = import ./hermes { inherit inputs sharedModules; };
in {
hosts = [artemis hermes];
in
{
hosts = [
artemis
hermes
];
}

View file

@ -2,7 +2,8 @@
config,
pkgs,
...
}: {
}:
{
nixpkgs.hostPlatform = "x86_64-linux";
c.services.mesh = {
enable = true;
@ -22,7 +23,10 @@
users.users.media = {
isNormalUser = true;
extraGroups = ["wheel" "multimedia"];
extraGroups = [
"wheel"
"multimedia"
];
openssh.authorizedKeys.keys = config.keys.c;
packages = with pkgs; [
tree

View file

@ -1,4 +1,5 @@
{...}: {
{ ... }:
{
virtualisation = {
podman.enable = true;
podman.dockerCompat = true;
@ -17,7 +18,10 @@
tdarr = {
image = "ghcr.io/haveagitgat/tdarr";
autoStart = true;
ports = ["0.0.0.0:8265:8265" "127.0.0.1:8266:8266"];
ports = [
"0.0.0.0:8265:8265"
"127.0.0.1:8266:8266"
];
volumes = [
"/var/lib/tdarr/server:/app/server"
"/var/lib/tdarr/configs:/app/configs"
@ -37,7 +41,10 @@
PUID = "1000";
PGID = "994";
};
extraOptions = ["--device=/dev/dri:/dev/dri" "--network=bridge"];
extraOptions = [
"--device=/dev/dri:/dev/dri"
"--network=bridge"
];
};
};
};

View file

@ -1,6 +1,8 @@
{config, ...}: let
{ config, ... }:
let
domain = "files.cleslie.uk";
in {
in
{
services = {
cloudflare-dyndns.domains = [ domain ];
copyparty = {

View file

@ -1,4 +1,5 @@
{config, ...}: {
{ config, ... }:
{
services.cloudflare-dyndns = {
enable = true;
ipv4 = true;

View file

@ -1,4 +1,5 @@
{...}: {
{ ... }:
{
imports = [
./hardware-configuration.nix
./configuration.nix

View file

@ -1,8 +1,11 @@
{pkgs, ...}: {
{ pkgs, ... }:
{
services.fail2ban = {
enable = true;
jails = {
sshd.settings = {enabled = false;};
sshd.settings = {
enabled = false;
};
radarr.settings = {
enabled = true;
filter = "arr";
@ -74,7 +77,8 @@
};
};
environment.etc = {
"fail2ban/filter.d/arr.local".text = pkgs.lib.mkDefault (pkgs.lib.mkAfter ''
"fail2ban/filter.d/arr.local".text = pkgs.lib.mkDefault (
pkgs.lib.mkAfter ''
[INCLUDES]
before = common.conf
@ -82,9 +86,11 @@
datepattern = ^%%Y-%%m-%%d %%H:%%M:%%S\.%%f\|
failregex = ^\s*Warn\|Auth\|Auth-Failure ip <ADDR> username '<F-USER>[^']+</F-USER>'
ignoreregex =
'');
''
);
"fail2ban/filter.d/jellyseerr.local".text = pkgs.lib.mkDefault (pkgs.lib.mkAfter ''
"fail2ban/filter.d/jellyseerr.local".text = pkgs.lib.mkDefault (
pkgs.lib.mkAfter ''
[INCLUDES]
before = common.conf
@ -92,15 +98,18 @@
failregex = ^.*\[warn\]\[API\]: Failed sign-in attempt using invalid Overseerr password {"ip":"<HOST>","email":
^.*\[warn\]\[Auth\]: Failed login attempt from user with incorrect Jellyfin credentials {"account":{"ip":"<HOST>","email":
ignoreregex =
'');
''
);
"fail2ban/filter.d/jellyfin.local".text = pkgs.lib.mkDefault (pkgs.lib.mkAfter ''
"fail2ban/filter.d/jellyfin.local".text = pkgs.lib.mkDefault (
pkgs.lib.mkAfter ''
[INCLUDES]
before = common.conf
[Definition]
failregex = ^.*Authentication request for .* has been denied \(IP: "<ADDR>"\)\.
ignoreregex =
'');
''
);
};
}

View file

@ -2,9 +2,11 @@
lib,
config,
...
}: let
}:
let
domain = "git.cleslie.uk";
in {
in
{
services = {
cloudflare-dyndns.domains = [ domain ];
forgejo = {

View file

@ -3,12 +3,19 @@
lib,
modulesPath,
...
}: {
}:
{
imports = [
(modulesPath + "/installer/scan/not-detected.nix")
];
boot = {
initrd.availableKernelModules = ["xhci_pci" "ahci" "usbhid" "usb_storage" "sd_mod"];
initrd.availableKernelModules = [
"xhci_pci"
"ahci"
"usbhid"
"usb_storage"
"sd_mod"
];
initrd.kernelModules = [ ];
kernelModules = [ "kvm-intel" ];
kernelParams = [
@ -27,7 +34,10 @@
fileSystems."/boot" = {
device = "/dev/disk/by-uuid/57CE-8609";
fsType = "vfat";
options = ["fmask=0077" "dmask=0077"];
options = [
"fmask=0077"
"dmask=0077"
];
};
swapDevices = [ ];

View file

@ -1,6 +1,8 @@
{config, ...}: let
{ config, ... }:
let
domain = "mesh.cleslie.uk";
in {
in
{
services = {
headscale = {
enable = true;

View file

@ -1,8 +1,12 @@
{pkgs, ...}: let
{ pkgs, ... }:
let
mediaDir = "/var/lib/media";
in {
in
{
users = {
groups.multimedia = {gid = 994;};
groups.multimedia = {
gid = 994;
};
users."root".extraGroups = [ "multimedia" ];
users."media".extraGroups = [ "multimedia" ];
};
@ -87,7 +91,11 @@ in {
};
};
cloudflare-dyndns.domains = ["media.cleslie.uk" "watch.cleslie.uk" "request.cleslie.uk"];
cloudflare-dyndns.domains = [
"media.cleslie.uk"
"watch.cleslie.uk"
"request.cleslie.uk"
];
jellyfin = {
enable = true;

View file

@ -1,6 +1,8 @@
{pkgs, ...}: let
{ pkgs, ... }:
let
domain = "automation.cleslie.uk";
in {
in
{
services = {
cloudflare-dyndns.domains = [ domain ];
n8n = {

View file

@ -1,8 +1,13 @@
{config, ...}: {
{ config, ... }:
{
networking = {
hostName = "hermes";
enableIPv6 = false;
firewall.allowedTCPPorts = [80 443 8265];
firewall.allowedTCPPorts = [
80
443
8265
];
firewall.checkReversePath = false;
iproute2.enable = true;
iproute2.rttablesExtraConfig = ''

View file

@ -1,6 +1,8 @@
_: let
_:
let
domain = "hub.cleslie.uk";
in {
in
{
services = {
cloudflare-dyndns.domains = [ domain ];
nocodb = {

View file

@ -1,4 +1,5 @@
{...}: {
{ ... }:
{
services.quassel = {
enable = true;
interfaces = [ "0.0.0.0" ];

View file

@ -1,4 +1,5 @@
{...}: {
{ ... }:
{
services = {
openssh = {
enable = true;

View file

@ -1,6 +1,8 @@
{config, ...}: let
{ config, ... }:
let
domain = "vaultwarden.cleslie.uk";
in {
in
{
services = {
cloudflare-dyndns.domains = [ domain ];
vaultwarden = {

View file

@ -1,4 +1,5 @@
{inputs, ...}: _final: prev: {
{ inputs, ... }:
_final: prev: {
nvf = inputs.nvf.packages.${prev.system}.default;
devour-flake = prev.callPackage inputs.devour-flake { };
agenix = inputs.agenix.packages.${prev.system}.default;

View file

@ -2,7 +2,8 @@
pkgs,
inputs,
inputs',
}: {
}:
{
tmux-sessionizer-cl = pkgs.callPackage ./tmux-sessionizer { };
om = inputs'.omnix.packages.default;
nvf = inputs'.nvf.packages.default;

View file

@ -1,6 +1,11 @@
{pkgs}: let
{ pkgs }:
let
name = "tmux-sessionizer";
runtimeInputs = [pkgs.tmux pkgs.ghq pkgs.fzf];
runtimeInputs = [
pkgs.tmux
pkgs.ghq
pkgs.fzf
];
text = builtins.readFile ./tmux-sessionizer.sh;
in
pkgs.writeShellApplication {

View file

@ -5,7 +5,8 @@ let
artemis = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILERlCL5ZwP/mmtBNAMtLrUwEDy+tOprUWUmsGBRlTCF";
};
allSystems = builtins.attrValues systems;
in {
in
{
"wg-conf.age".publicKeys = keys.c ++ allSystems;
"mesh-conf-infra.age".publicKeys = keys.c ++ allSystems;
"mesh-conf-cleslie.age".publicKeys = keys.c ++ allSystems;