diff --git a/hosts/altaria/default.nix b/hosts/altaria/default.nix new file mode 100644 index 00000000..07a3cdf5 --- /dev/null +++ b/hosts/altaria/default.nix @@ -0,0 +1,41 @@ +{ + inputs, + pkgs, + lib, + config, + ... +}: + +let +in +{ + imports = [ + inputs.disko.nixosModules.disko + ./hardware.nix + ./disk-config.nix + ./services/modules.nix + ]; + + boot.loader.systemd-boot.enable = true; + boot.loader.efi.canTouchEfiVariables = true; + boot.initrd.systemd.enable = true; + + systemd.targets.multi-user.enable = true; + + services.scrutiny.collector.enable = lib.mkForce false; + + environment.systemPackages = with pkgs; [ + curl + wget + cloudflared + zulu25 + ]; + + networking.firewall.allowedTCPPorts = [ + 25565 + ]; + + documentation.enable = false; + + system.stateVersion = "25.05"; +} diff --git a/hosts/altaria/disk-config.nix b/hosts/altaria/disk-config.nix new file mode 100644 index 00000000..84ce4aca --- /dev/null +++ b/hosts/altaria/disk-config.nix @@ -0,0 +1,32 @@ +{ + disko.devices = { + disk = { + main = { + type = "disk"; + device = "/dev/sda"; + content = { + type = "gpt"; + partitions = { + boot = { + size = "1024M"; + type = "EF00"; + content = { + type = "filesystem"; + format = "vfat"; + mountpoint = "/boot"; + }; + }; + root = { + size = "100%"; + content = { + type = "filesystem"; + format = "ext4"; + mountpoint = "/"; + }; + }; + }; + }; + }; + }; + }; +} diff --git a/hosts/altaria/hardware.nix b/hosts/altaria/hardware.nix new file mode 100644 index 00000000..41edac2c --- /dev/null +++ b/hosts/altaria/hardware.nix @@ -0,0 +1,26 @@ +{ + config, + lib, + pkgs, + modulesPath, + ... +}: + +{ + imports = [ + (modulesPath + "/profiles/qemu-guest.nix") + ]; + + boot.initrd.availableKernelModules = [ + "xhci_pci" + "virtio_pci" + "virtio_scsi" + "usbhid" + ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ ]; + boot.extraModulePackages = [ ]; + + networking.useDHCP = lib.mkDefault true; + nixpkgs.hostPlatform = lib.mkDefault "aarch64-linux"; +} diff --git a/hosts/altaria/services/anubis.nix b/hosts/altaria/services/anubis.nix new file mode 100644 index 00000000..c2cc8019 --- /dev/null +++ b/hosts/altaria/services/anubis.nix @@ -0,0 +1,32 @@ +{ + lib, + config, + self, + ... +}: +let +in +{ + services.anubis = { + instances.gotosocial = { + enable = true; + settings = { + TARGET = "http://127.0.0.1:8000"; + BIND = ":8010"; + BIND_NETWORK = "tcp"; + OG_PASSTHROUGH = true; + POLICY_FNAME = "/etc/anubis/policy.yaml"; + }; + }; + instances.g2swebui = { + enable = true; + settings = { + TARGET = "http://127.0.0.1:8005"; + BIND = ":8015"; + BIND_NETWORK = "tcp"; + OG_PASSTHROUGH = true; + POLICY_FNAME = "/etc/anubis/policy.yaml"; + }; + }; + }; +} diff --git a/hosts/altaria/services/cloudflared.nix b/hosts/altaria/services/cloudflared.nix new file mode 100644 index 00000000..aba3f3b4 --- /dev/null +++ b/hosts/altaria/services/cloudflared.nix @@ -0,0 +1,20 @@ +{ + lib, + config, + self, + ... +}: +let + tunnelId = builtins.readFile /etc/vixen/cloudflare-tunnel; +in +{ + services.cloudflared = { + enable = true; + tunnels = { + tunnelId = { + credentialsFile = "/etc/vixen/4ed6b559-d63b-436f-a1ae-17e8e629c935.json"; + default = "http_status:404"; + }; + }; + }; +} diff --git a/hosts/altaria/services/docker.nix b/hosts/altaria/services/docker.nix new file mode 100644 index 00000000..49eafd0f --- /dev/null +++ b/hosts/altaria/services/docker.nix @@ -0,0 +1,17 @@ +{ + lib, + config, + self, + ... +}: +let +in +{ + virtualisation.docker = { + enable = true; + daemon.settings = { + "insecure-registries" = [ "registry.den.vixen.lgbt" ]; + "live-restore" = true; + }; + }; +} diff --git a/hosts/altaria/services/modules.nix b/hosts/altaria/services/modules.nix new file mode 100644 index 00000000..51e8ab45 --- /dev/null +++ b/hosts/altaria/services/modules.nix @@ -0,0 +1,8 @@ +{ + imports = [ + ./docker.nix + ./cloudflared.nix + ./pufferpanel.nix + ./anubis.nix + ]; +} diff --git a/hosts/altaria/services/pufferpanel.nix b/hosts/altaria/services/pufferpanel.nix new file mode 100644 index 00000000..06b89ce3 --- /dev/null +++ b/hosts/altaria/services/pufferpanel.nix @@ -0,0 +1,32 @@ +{ + lib, + pkgs, + config, + self, + ... +}: +let +in +{ + services.pufferpanel = { + enable = true; + extraPackages = with pkgs; [ + bash + curl + gawk + gnutar + gzip + ]; + package = pkgs.buildFHSEnv { + name = "pufferpanel-fhs"; + runScript = lib.getExe pkgs.pufferpanel; + targetPkgs = + pkgs': with pkgs'; [ + icu + openssl + zlib + zulu25 + ]; + }; + }; +} diff --git a/hosts/default.nix b/hosts/default.nix index e475784c..154d615e 100644 --- a/hosts/default.nix +++ b/hosts/default.nix @@ -1,73 +1,43 @@ { inputs, ... }: { + imports = [ + ./dish-hosts.nix + ./skye-hosts.nix + ]; easy-hosts = { useGlobalPkgs = true; + perTag = + let + tags = { + dish.imports = [ + inputs.ctp.nixosModules.catppuccin + inputs.self.nixosModules.chromium + inputs.self.nixosModules.defaultConfig + inputs.self.nixosModules.defaultUsers + inputs.self.nixosModules.firefox + inputs.self.nixosModules.niri + inputs.self.nixosModules.forgejo-runner + inputs.self.nixosModules.hm-pyrox + inputs.self.nixosModules.hm-thehedgehog + inputs.self.nixosModules.miscPrograms + inputs.self.nixosModules.neovim + inputs.self.nixosModules.profiles + inputs.self.nixosModules.scrutiny + + ]; + skye.imports = [ + inputs.self.nixosModules.skye-base + + ]; + }; + in + tag: { modules = [ tags.${tag} ]; }; shared = { modules = [ inputs.agenix.nixosModules.default - inputs.ctp.nixosModules.catppuccin inputs.home-manager.nixosModules.home-manager - inputs.self.nixosModules.chromium - inputs.self.nixosModules.defaultConfig - inputs.self.nixosModules.defaultUsers - inputs.self.nixosModules.firefox - inputs.self.nixosModules.niri - inputs.self.nixosModules.forgejo-runner - inputs.self.nixosModules.hm-pyrox - inputs.self.nixosModules.hm-thehedgehog - inputs.self.nixosModules.miscPrograms - inputs.self.nixosModules.neovim - inputs.self.nixosModules.profiles - inputs.self.nixosModules.scrutiny ]; }; path = ./.; - hosts = { - marvin = { - deployable = true; - tags = [ - "server" - "home" - ]; - modules = [ - inputs.golink.nixosModules.default - inputs.tangled.nixosModules.knot - inputs.tangled.nixosModules.spindle - inputs.tsnsrv.nixosModules.default - inputs.self.nixosModules.voidauth - ]; - }; - prefect = { - deployable = true; - tags = [ - "server" - "vps" - ]; - modules = [ - inputs.dn42.nixosModules.default - ]; - }; - thought = { - deployable = true; - tags = [ - "server" - "vps" - ]; - }; - zaphod = { - deployable = true; - tags = [ "laptop" ]; - modules = [ - inputs.hardware.nixosModules.framework-16-7040-amd - inputs.self.nixosModules.hm-pyrox-zaphod - inputs.self.nixosModules.hm-thehedgehog-zaphod - inputs.self.nixosModules.dms - { - home-manager.useGlobalPkgs = true; - home-manager.useUserPackages = true; - } - ]; - }; - }; }; } diff --git a/hosts/dialga/default.nix b/hosts/dialga/default.nix new file mode 100644 index 00000000..79c4fcd3 --- /dev/null +++ b/hosts/dialga/default.nix @@ -0,0 +1,43 @@ +{ + inputs, + pkgs, + lib, + config, + ... +}: + +let +in +{ + imports = [ + ./hardware.nix + ./services/modules.nix + ]; + + boot.loader.systemd-boot.enable = true; + boot.loader.efi.canTouchEfiVariables = true; + boot.supportedFilesystems = [ "zfs" ]; + + boot.zfs.extraPools = [ + "apps-new" + "sinnoh" + "kanto" + ]; + services.zfs.autoScrub.enable = true; + + hardware.graphics = { + enable = true; + }; + + #kinda stupid, we have to overwrite the metrics endpoint because tailscale services don't work on the same node + services.vmagent.remoteWrite.url = lib.mkForce "http://localhost:8428/api/v1/write"; + services.scrutiny.collector.settings.api.endpoint = lib.mkForce "http://localhost:8400"; + + services.restic.backups.cloud.paths = [ + "/sinnoh/backup" + "/sinnoh/personal" + "/sinnoh/forgejo-backup" + ]; + + system.stateVersion = "25.11"; +} diff --git a/hosts/dialga/hardware.nix b/hosts/dialga/hardware.nix new file mode 100644 index 00000000..d72f2392 --- /dev/null +++ b/hosts/dialga/hardware.nix @@ -0,0 +1,47 @@ +{ + config, + lib, + pkgs, + modulesPath, + ... +}: +{ + imports = [ + (modulesPath + "/installer/scan/not-detected.nix") + ]; + + boot.initrd.availableKernelModules = [ + "xhci_pci" + "ahci" + "mpt3sas" + "usb_storage" + "sd_mod" + ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ ]; + boot.extraModulePackages = [ ]; + + boot.kernelParams = [ "amd_pstate=guided" ]; + powerManagement.enable = true; + powerManagement.cpuFreqGovernor = "schedutil"; + + fileSystems."/" = { + device = "/dev/disk/by-label/NIXROOT"; + fsType = "ext4"; + }; + + fileSystems."/boot" = { + device = "/dev/disk/by-label/NIXBOOT"; + fsType = "vfat"; + options = [ + "fmask=0022" + "dmask=0022" + ]; + }; + + swapDevices = [ ]; + + networking.hostId = "0aef1983"; + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; +} diff --git a/hosts/dialga/services/caddy.nix b/hosts/dialga/services/caddy.nix new file mode 100644 index 00000000..5ae814be --- /dev/null +++ b/hosts/dialga/services/caddy.nix @@ -0,0 +1,26 @@ +{ + lib, + config, + self, + ... +}: +let +in +{ + services.caddy = { + enable = true; + virtualHosts = { + "http://jelly.den.vixen.lgbt".extraConfig = '' + reverse_proxy http://localhost:8096 + ''; + "http://lib.den.vixen.lgbt".extraConfig = '' + reverse_proxy http://localhost:6060 + ''; + "http://feed.den.vixen.lgbt".extraConfig = '' + reverse_proxy http://localhost:6070 + ''; + }; + }; + + networking.firewall.allowedTCPPorts = [ 80 443 ]; +} diff --git a/hosts/dialga/services/docker.nix b/hosts/dialga/services/docker.nix new file mode 100644 index 00000000..49eafd0f --- /dev/null +++ b/hosts/dialga/services/docker.nix @@ -0,0 +1,17 @@ +{ + lib, + config, + self, + ... +}: +let +in +{ + virtualisation.docker = { + enable = true; + daemon.settings = { + "insecure-registries" = [ "registry.den.vixen.lgbt" ]; + "live-restore" = true; + }; + }; +} diff --git a/hosts/dialga/services/forgejo.nix b/hosts/dialga/services/forgejo.nix new file mode 100644 index 00000000..d5451a6b --- /dev/null +++ b/hosts/dialga/services/forgejo.nix @@ -0,0 +1,69 @@ +{ + lib, + config, + self, + ... +}: +let + tunnelId = builtins.readFile /etc/vixen/cloudflare-tunnel; +in +{ + services.cloudflared = { + enable = true; + tunnels = { + # im lazy and i dont think this matters but,, better safe than sorry? + tunnelId = { + credentialsFile = "/etc/vixen/cloudflare-token"; + default = "http_status:404"; + }; + }; + }; + services.anubis.instances.forgejo = { + enable = true; + settings = { + TARGET = "http://127.0.0.1:3100"; + BIND = ":3800"; + BIND_NETWORK = "tcp"; + OG_PASSTHROUGH = true; + POLICY_FNAME = "/etc/anubis/policy.yaml"; + }; + }; + services.forgejo = { + enable = true; + customDir = "/etc/forgejo/custom"; + repositoryRoot = "/etc/forgejo/repos"; + dump = { + enable = true; + backupDir = "/sinnoh/forgejo-backup"; + }; + lfs = { + enable = true; + contentDir = "/etc/forgejo/lfs"; + }; + settings = { + DEFAULT.APP_NAME = "git.vixen.lgbt"; + server = { + DOMAIN = "git.vixen.lgbt"; + ROOT_URL = "https://git.vixen.lgbt/"; + HTTP_PORT = 3100; + }; + service.DISABLE_REGISTRATION = true; + actions = { + ENABLED = true; + DEFAULT_ACTIONS_URL = "github"; + }; + mailer = { + ENABLED = true; + SMTP_ADDR = "smtp.fastmail.com"; + SMTP_PORT = 587; + USER = "skye@vixen.lgbt"; + FROM = "mail-noreply@vixen.lgbt"; + }; + ui = { + THEMES="forgejo-auto, forgejo-light, forgejo-dark, gitea-auto, gitea-light, gitea-dark, forgejo-auto-deuteranopia-protanopia, forgejo-light-deuteranopia-protanopia, forgejo-dark-deuteranopia-protanopia, forgejo-auto-tritanopia, forgejo-light-tritanopia, forgejo-dark-tritanopia, custom-light"; + DEFAULT_THEME="custom-light"; + }; + }; + mailerPasswordFile = "/etc/vixen/mailer-secret"; + }; +} diff --git a/hosts/dialga/services/grafana.nix b/hosts/dialga/services/grafana.nix new file mode 100644 index 00000000..f0a1c295 --- /dev/null +++ b/hosts/dialga/services/grafana.nix @@ -0,0 +1,34 @@ +{ + lib, + config, + self, + ... +}: +let +in +{ + imports = [ + ../../../nixosModules/base/misc/tailscale-serve.nix + ]; + + services.grafana = { + enable = true; + settings = { + server = { + http_addr = "0.0.0.0"; + http_port = 3000; + enable_gzip = true; + domain = "grafana.vixen.lgbt"; + }; + # someone remind me to change this ,,,, + security.secret_key = "SW2YcwTIb9zpOOhoPsMm"; + analytics.reporting_enabled = false; + }; + }; + + vixens.tailscale-serve."grafana" = { + port = 3000; + targetService = "grafana.service"; + tailscaleService = "grafana"; + }; +} diff --git a/hosts/dialga/services/jellyfin.nix b/hosts/dialga/services/jellyfin.nix new file mode 100644 index 00000000..2efded38 --- /dev/null +++ b/hosts/dialga/services/jellyfin.nix @@ -0,0 +1,25 @@ +{ + lib, + config, + self, + ... +}: +let +in +{ + services.jellyfin = { + enable = true; + }; + users.users.jellyfin.extraGroups = [ + "input" + "render" + "video" + ]; + + networking.firewall.allowedUDPPorts = [ + 7359 + ]; + networking.firewall.allowedTCPPorts = [ + 8096 + ]; +} diff --git a/hosts/dialga/services/miniflux.nix b/hosts/dialga/services/miniflux.nix new file mode 100644 index 00000000..3eba3582 --- /dev/null +++ b/hosts/dialga/services/miniflux.nix @@ -0,0 +1,10 @@ +{ self, config, ... }: +let +in +{ + services.miniflux = { + enable = true; + config.LISTEN_ADDR = "127.0.0.1:6070"; + adminCredentialsFile = "/etc/vixen/miniflux"; + }; +} diff --git a/hosts/dialga/services/modules.nix b/hosts/dialga/services/modules.nix new file mode 100644 index 00000000..bd0e16f2 --- /dev/null +++ b/hosts/dialga/services/modules.nix @@ -0,0 +1,14 @@ +{ + imports = [ + ./jellyfin.nix + ./samba.nix + ./docker.nix + ./victorialogs.nix + ./victoriametrics.nix + ./grafana.nix + ./scrutiny.nix + ./forgejo.nix + ./caddy.nix + ./miniflux.nix + ]; +} diff --git a/hosts/dialga/services/samba.nix b/hosts/dialga/services/samba.nix new file mode 100644 index 00000000..0efc0f75 --- /dev/null +++ b/hosts/dialga/services/samba.nix @@ -0,0 +1,52 @@ +{ + lib, + config, + self, + ... +}: +let +in +{ + services.samba = { + enable = true; + securityType = "user"; + openFirewall = true; + settings = { + global = { + "workgroup" = "WORKGROUP"; + "server string" = "dialga"; + "netbios name" = "dialga"; + "security" = "user"; + "hosts allow" = "100.64.0.0/10 10.0.0.0/8 127.0.0.1 localhost"; + "hosts deny" = "0.0.0.0/0"; + "guest account" = "nobody"; + "map to guest" = "bad user"; + }; + + "media" = { + "path" = "/kanto/media"; + "browseable" = "yes"; + "read only" = "no"; + "guest ok" = "no"; + "create mask" = "0644"; + "directory mask" = "0755"; + "force user" = "jellyfin"; + "force group" = "jellyfin"; + }; + + "personal" = { + "path" = "/sinnoh/personal"; + "browseable" = "yes"; + "read only" = "no"; + "guest ok" = "no"; + "create mask" = "0644"; + "directory mask" = "0755"; + }; + }; + }; + + services.samba-wsdd = { + enable = true; + openFirewall = true; + }; +} diff --git a/hosts/dialga/services/scrutiny.nix b/hosts/dialga/services/scrutiny.nix new file mode 100644 index 00000000..ca842282 --- /dev/null +++ b/hosts/dialga/services/scrutiny.nix @@ -0,0 +1,33 @@ +{ self, config, ... }: +let +in +{ + age.secrets."monitoring/scrutiny" = { + file = ../../../secrets/monitoring/scrutiny.age; + }; + + services.scrutiny = { + enable = true; + influxdb.enable = true; + settings = { + web = { + listen.port = 8400; + influxdb.tls.insecure_skip_verify = true; + }; + notify = { + urls = [ + { _secret = "/run/credentials/scrutiny.service/discord_webhook"; } + ]; + }; + }; + }; + systemd.services.scrutiny.serviceConfig.LoadCredential = [ + "discord_webhook:${config.age.secrets."monitoring/scrutiny".path}" + ]; + + vixens.tailscale-serve."scrutiny" = { + port = 8400; + targetService = "scrutiny.service"; + tailscaleService = "scrutiny"; + }; +} diff --git a/hosts/dialga/services/victorialogs.nix b/hosts/dialga/services/victorialogs.nix new file mode 100644 index 00000000..3ad6e012 --- /dev/null +++ b/hosts/dialga/services/victorialogs.nix @@ -0,0 +1,23 @@ +{ + lib, + config, + self, + ... +}: +let +in +{ + imports = [ + ../../../nixosModules/base/misc/tailscale-serve.nix + ]; + + services.victorialogs = { + enable = true; + }; + + vixens.tailscale-serve."logs" = { + port = 9428; + targetService = "victorialogs.service"; + tailscaleService = "logs"; + }; +} diff --git a/hosts/dialga/services/victoriametrics.nix b/hosts/dialga/services/victoriametrics.nix new file mode 100644 index 00000000..2332e232 --- /dev/null +++ b/hosts/dialga/services/victoriametrics.nix @@ -0,0 +1,23 @@ +{ + lib, + config, + self, + ... +}: +let +in +{ + imports = [ + ../../../nixosModules/base/misc/tailscale-serve.nix + ]; + + services.victoriametrics = { + enable = true; + }; + + vixens.tailscale-serve."metrics" = { + port = 8428; + targetService = "victoriametrics.service"; + tailscaleService = "metrics"; + }; +} diff --git a/hosts/dish-hosts.nix b/hosts/dish-hosts.nix new file mode 100644 index 00000000..03791206 --- /dev/null +++ b/hosts/dish-hosts.nix @@ -0,0 +1,58 @@ +{ inputs, ... }: +{ + easy-hosts = { + hosts = { + marvin = { + deployable = true; + tags = [ + "dish" + "server" + "home" + ]; + modules = [ + inputs.golink.nixosModules.default + inputs.tangled.nixosModules.knot + inputs.tangled.nixosModules.spindle + inputs.tsnsrv.nixosModules.default + inputs.self.nixosModules.voidauth + ]; + }; + prefect = { + deployable = true; + tags = [ + "dish" + "server" + "vps" + ]; + modules = [ + inputs.dn42.nixosModules.default + ]; + }; + thought = { + deployable = true; + tags = [ + "dish" + "server" + "vps" + ]; + }; + zaphod = { + deployable = true; + tags = [ + "dish" + "laptop" + ]; + modules = [ + inputs.hardware.nixosModules.framework-16-7040-amd + inputs.self.nixosModules.hm-pyrox-zaphod + inputs.self.nixosModules.hm-thehedgehog-zaphod + inputs.self.nixosModules.dms + { + home-manager.useGlobalPkgs = true; + home-manager.useUserPackages = true; + } + ]; + }; + }; + }; +} diff --git a/hosts/mareep/default.nix b/hosts/mareep/default.nix new file mode 100644 index 00000000..9c3cad84 --- /dev/null +++ b/hosts/mareep/default.nix @@ -0,0 +1,45 @@ +{ + inputs, + pkgs, + lib, + config, + ... +}: + +let +in +{ + imports = [ + ./hardware.nix + ]; + + boot.loader.systemd-boot.enable = true; + boot.loader.efi.canTouchEfiVariables = true; + + hardware.graphics = { + enable = true; + }; + services.xserver.videoDrivers = [ "nvidia" ]; + hardware.nvidia = { + modesetting.enable = true; + powerManagement.enable = true; + nvidiaSettings = true; + open = true; + }; + + services.ollama = { + enable = true; + package = pkgs.ollama-cuda; + host = "100.105.168.46"; + }; + services.open-webui = { + enable = true; + host = "100.105.168.46"; + }; + services.logind.lidSwitch = "ignore"; + + hardware.bluetooth.enable = true; + hardware.bluetooth.powerOnBoot = true; + + system.stateVersion = "26.05"; +} diff --git a/hosts/mareep/hardware.nix b/hosts/mareep/hardware.nix new file mode 100644 index 00000000..4fb786db --- /dev/null +++ b/hosts/mareep/hardware.nix @@ -0,0 +1,30 @@ +{ config, lib, pkgs, modulesPath, ... }: + +{ + imports = + [ (modulesPath + "/installer/scan/not-detected.nix") + ]; + + boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "nvme" "usb_storage" "sd_mod" "rtsx_pci_sdmmc" ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ "kvm-intel" ]; + boot.extraModulePackages = [ ]; + + fileSystems."/" = + { device = "/dev/disk/by-uuid/ef3b60af-c66d-46d4-838c-05817127ca9b"; + fsType = "ext4"; + }; + + fileSystems."/boot" = + { device = "/dev/disk/by-uuid/1581-9A44"; + fsType = "vfat"; + options = [ "fmask=0077" "dmask=0077" ]; + }; + + swapDevices = + [ { device = "/dev/disk/by-uuid/2f20e039-dbfd-4c79-b91d-3f8945ac1018"; } + ]; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; +} diff --git a/hosts/ninetails/default.nix b/hosts/ninetails/default.nix new file mode 100644 index 00000000..fa61d0ec --- /dev/null +++ b/hosts/ninetails/default.nix @@ -0,0 +1,99 @@ +{ + inputs, + pkgs, + lib, + config, + ... +}: + +let +in +{ + imports = [ + ./hardware.nix + ]; + + boot.loader.systemd-boot.enable = true; + boot.loader.efi.canTouchEfiVariables = true; + boot.supportedFilesystems = [ + "ntfs" + "nfs" + ]; + + boot.kernelParams = [ + "amd_iommu=on" + "iommu=pt" + #"vfio-pci.ids=10de:2705,10de:22bb" + ]; + boot.initrd.kernelModules = [ + "vfio_pci" + "vfio" + "vfio_iommu_type1" + ]; + services.rpcbind.enable = true; + programs.nix-ld.enable = true; + + #uhhhhhhhh someone remind me to clean all this up later :p + hardware.bluetooth.enable = true; + hardware.bluetooth.powerOnBoot = true; + + hardware.graphics = { + enable = true; + enable32Bit = true; + }; + services.xserver.videoDrivers = [ "nvidia" "displaylink" "modesetting" ]; + hardware.nvidia = { + modesetting.enable = true; + powerManagement.enable = true; + nvidiaSettings = true; + open = true; + }; + + environment.systemPackages = with pkgs; [ + prismlauncher + xivlauncher + dotnet-sdk_8 + displaylink + + #(llama-cpp.override { cudaSupport = true; }) + ]; + + services.hardware.openrgb = { + enable = true; + package = pkgs.callPackage ../../pkgs/openrgb/default.nix { }; + motherboard = "amd"; + }; + programs.steam = { + enable = true; + remotePlay.openFirewall = true; + dedicatedServer.openFirewall = true; + localNetworkGameTransfers.openFirewall = true; + }; + + programs.appimage = { + enable = true; + binfmt = true; + package = pkgs.appimage-run.override { + extraPkgs = pkgs: [ pkgs.icu ]; + }; + }; + services.flatpak.enable = true; + + virtualisation.docker = { + enable = true; + daemon.settings = { + "insecure-registries" = [ "registry.den.vixen.lgbt" ]; + }; + }; + services.power-profiles-daemon.enable = true; + + programs.virt-manager.enable = true; + virtualisation.libvirtd.enable = true; + virtualisation.spiceUSBRedirection.enable = true; + + networking.interfaces.enp14s0.wakeOnLan.enable = true; + networking.firewall.enable = true; + networking.firewall.allowedTCPPorts = [ 22 ]; + + system.stateVersion = "25.11"; +} diff --git a/hosts/ninetails/hardware.nix b/hosts/ninetails/hardware.nix new file mode 100644 index 00000000..bb5ccd7e --- /dev/null +++ b/hosts/ninetails/hardware.nix @@ -0,0 +1,48 @@ +{ + config, + lib, + pkgs, + modulesPath, + ... +}: + +{ + imports = [ (modulesPath + "/installer/scan/not-detected.nix") ]; + + boot.initrd.availableKernelModules = [ + "nvme" + "xhci_pci" + "ahci" + "thunderbolt" + "usbhid" + "ixgbe" + ]; + boot.kernelModules = [ "kvm-amd" ]; + boot.extraModulePackages = [ ]; + + fileSystems."/" = { + device = "/dev/disk/by-uuid/bdbfccca-c22d-4ea7-99a4-e6e776b8dd8e"; + fsType = "ext4"; + }; + fileSystems."/mnt/storage" = { + device = "/dev/disk/by-uuid/6A88914488910FA5"; + fsType = "ntfs"; + options = [ "uid=1000" "gid=100" "umask=022" "rw" ]; + }; + + fileSystems."/boot" = { + device = "/dev/disk/by-uuid/D127-08D3"; + fsType = "vfat"; + options = [ + "fmask=0077" + "dmask=0077" + ]; + }; + + swapDevices = [ { device = "/dev/disk/by-uuid/b100a5d3-a307-4298-8893-026ef62fd4d7"; } ]; + + networking.useDHCP = lib.mkDefault true; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; +} diff --git a/hosts/skye-hosts.nix b/hosts/skye-hosts.nix new file mode 100644 index 00000000..ccd08231 --- /dev/null +++ b/hosts/skye-hosts.nix @@ -0,0 +1,32 @@ +{ + easy-hosts = { + hosts = { + dialga = { + deployable = true; + tags = [ "skye" ]; + specialArgs.hostType = "server"; + }; + mareep = { + deployable = true; + tags = [ "skye" ]; + specialArgs.hostType = "server"; + }; + zorua = { + deployable = true; + tags = [ "skye" ]; + specialArgs.hostType = "server"; + }; + altaria = { + deployable = true; + tags = [ "skye" ]; + arch = "aarch64"; + specialArgs.hostType = "server"; + }; + ninetails = { + deployable = true; + tags = [ "skye" ]; + specialArgs.hostType = "desktop"; + }; + }; + }; +} diff --git a/hosts/zorua/default.nix b/hosts/zorua/default.nix new file mode 100644 index 00000000..6db497f4 --- /dev/null +++ b/hosts/zorua/default.nix @@ -0,0 +1,21 @@ +{ + inputs, + pkgs, + lib, + config, + ... +}: + +let +in +{ + imports = [ + ./hardware.nix + ./services/modules.nix + ]; + + boot.loader.systemd-boot.enable = true; + boot.loader.efi.canTouchEfiVariables = true; + + system.stateVersion = "26.05"; +} diff --git a/hosts/zorua/hardware.nix b/hosts/zorua/hardware.nix new file mode 100644 index 00000000..eee75d83 --- /dev/null +++ b/hosts/zorua/hardware.nix @@ -0,0 +1,32 @@ +{ config, lib, pkgs, modulesPath, ... }: + +{ + imports = + [ (modulesPath + "/installer/scan/not-detected.nix") + ]; + + boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "nvme" "usb_storage" "sd_mod" ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ "kvm-amd" ]; + boot.extraModulePackages = [ ]; + + boot.kernelParams = [ "amd_pstate=guided" ]; + powerManagement.enable = true; + powerManagement.cpuFreqGovernor = "schedutil"; + + fileSystems."/" = + { device = "/dev/disk/by-label/NIXROOT"; + fsType = "ext4"; + }; + + fileSystems."/boot" = + { device = "/dev/disk/by-label/NIXBOOT"; + fsType = "vfat"; + options = [ "fmask=0022" "dmask=0022" ]; + }; + + swapDevices = [ ]; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; +} \ No newline at end of file diff --git a/hosts/zorua/services/docker.nix b/hosts/zorua/services/docker.nix new file mode 100644 index 00000000..3f0b4b0d --- /dev/null +++ b/hosts/zorua/services/docker.nix @@ -0,0 +1,16 @@ +{ + lib, + config, + self, + ... +}: +let +in +{ + virtualisation.docker = { + enable = true; + daemon.settings = { + "insecure-registries" = [ "registry.den.vixen.lgbt" ]; + }; + }; +} diff --git a/hosts/zorua/services/modules.nix b/hosts/zorua/services/modules.nix new file mode 100644 index 00000000..9045632e --- /dev/null +++ b/hosts/zorua/services/modules.nix @@ -0,0 +1,5 @@ +{ + imports = [ + ./docker.nix + ]; +}