From 871fad26d4ff058824c5e27bf65c3fa37be0a7b7 Mon Sep 17 00:00:00 2001 From: oqyude Date: Tue, 11 Aug 2026 02:27:57 +0300 Subject: [PATCH] big refactoring --- configurations/any.nix | 42 ++-- configurations/default.nix | 16 +- configurations/mini-laptop.nix | 255 ++++++++++++------------ configurations/mini-pc.nix | 271 +++++++++++++------------- configurations/server.nix | 240 +++++++++++------------ configurations/vds-new.nix | 130 ------------- configurations/vds.nix | 298 ++++++++++++++--------------- configurations/wsl.nix | 190 +++++++++--------- deploy/default.nix | 2 - flake.lock | 57 +++++- flake.nix | 2 +- home/vds-new.nix | 27 --- lib/mkSystem.nix | 27 +++ modules/default.nix | 1 + modules/options.nix | 1 - modules/vds-new/default.nix | 9 - modules/wsl/containers/3x-ui.nix | 118 ------------ modules/wsl/containers/default.nix | 3 +- pkgs/default.nix | 1 - 19 files changed, 702 insertions(+), 988 deletions(-) delete mode 100644 configurations/vds-new.nix delete mode 100644 home/vds-new.nix create mode 100644 lib/mkSystem.nix delete mode 100644 modules/vds-new/default.nix delete mode 100644 modules/wsl/containers/3x-ui.nix diff --git a/configurations/any.nix b/configurations/any.nix index 5d18cec..65b2406 100644 --- a/configurations/any.nix +++ b/configurations/any.nix @@ -1,30 +1,18 @@ -{ inputs, ... }@flakeContext: -let - nixosModule = - { - config, - lib, - modulesPath, - pkgs, - xlib, - ... - }: - { - imports = [ - inputs.self.nixosModules.default - ]; - - system = { - stateVersion = "26.05"; - }; - }; -in -inputs.nixpkgs.lib.nixosSystem { +{ + deviceType = "minimal"; modules = [ - nixosModule + ( + { + inputs, + ... + }: + { + imports = [ + inputs.self.nixosModules.default + ]; + + system.stateVersion = "26.05"; + } + ) ]; - system = "x86_64-linux"; - specialArgs = { - deviceType = "minimal"; - }; } diff --git a/configurations/default.nix b/configurations/default.nix index b6ab523..7735bae 100644 --- a/configurations/default.nix +++ b/configurations/default.nix @@ -1,13 +1,15 @@ { inputs, ... }@flakeContext: +let + mkSystem = import ../lib/mkSystem.nix flakeContext; +in { nixosConfigurations = { - default = import ./any.nix flakeContext; # default - atoridu = import ./mini-pc.nix flakeContext; # atoridu - rydiwo = import ./mini-laptop.nix flakeContext; # rydiwo - otreca = import ./vds.nix flakeContext; # vds - otreca-new = import ./vds-new.nix flakeContext; # vds-new - sapphira = import ./server.nix flakeContext; # sapphira - wsl = import ./wsl.nix flakeContext; # wsl + default = mkSystem (import ./any.nix); # default + atoridu = mkSystem (import ./mini-pc.nix); # atoridu + rydiwo = mkSystem (import ./mini-laptop.nix); # rydiwo + otreca = mkSystem (import ./vds.nix); # vds + sapphira = mkSystem (import ./server.nix); # sapphira + wsl = mkSystem (import ./wsl.nix); # wsl }; nixOnDroidConfigurations = { epral = import ./mobile.nix flakeContext; # epral (Android via nix-on-droid) diff --git a/configurations/mini-laptop.nix b/configurations/mini-laptop.nix index 1ca3ec6..bdb3175 100644 --- a/configurations/mini-laptop.nix +++ b/configurations/mini-laptop.nix @@ -1,143 +1,130 @@ { - inputs, - ... -}@flakeContext: -let - nixosModule = - { - config, - lib, - pkgs, - xlib, - ... - }: - { - xlib.device = { - type = "secondary"; - hostname = "rydiwo"; - }; - - imports = with inputs; [ - nixos-hardware.nixosModules.chuwi-minibook-x - ./hardware/mini-laptop.nix - self.nixosModules.default - ]; - - boot = { - kernelPackages = lib.mkDefault pkgs.linuxPackages_xanmod_stable; - loader = { - systemd-boot.enable = lib.mkDefault true; - efi.canTouchEfiVariables = lib.mkDefault true; - }; - }; - - fileSystems."${xlib.dirs.lamet-drive}" = { - device = "/dev/disk/by-uuid/DC76BD3576BD116E"; - fsType = "ntfs3"; - options = [ - "defaults" - "uid=1000" - "gid=1000" - "fmask=0000" - "dmask=0000" - "nofail" + deviceType = "secondary"; + hostname = "rydiwo"; + modules = [ + ( + { + config, + inputs, + lib, + pkgs, + xlib, + ... + }: + { + imports = with inputs; [ + nixos-hardware.nixosModules.chuwi-minibook-x + ./hardware/mini-laptop.nix + self.nixosModules.default ]; - }; - hardware = { - bluetooth.enable = true; - }; - - networking = { - hostName = "${xlib.device.hostname}"; - networkmanager.enable = true; - firewall.enable = false; - }; - - i18n = { - extraLocaleSettings = { - LC_ADDRESS = "ru_RU.UTF-8"; - LC_IDENTIFICATION = "ru_RU.UTF-8"; - LC_MEASUREMENT = "ru_RU.UTF-8"; - LC_MONETARY = "ru_RU.UTF-8"; - LC_NAME = "ru_RU.UTF-8"; - LC_NUMERIC = "ru_RU.UTF-8"; - LC_PAPER = "ru_RU.UTF-8"; - LC_TELEPHONE = "ru_RU.UTF-8"; - LC_TIME = "ru_RU.UTF-8"; - }; - }; - - services = { - # xserver = { - # videoDrivers = [ - # "nomodeset" - # ]; - # }; - syncthing = { - enable = true; - systemService = true; - configDir = "${xlib.dirs.user-storage}/Syncthing/${config.system.name}"; - dataDir = "${xlib.dirs.user-home}"; - group = "users"; - user = "${xlib.device.username}"; - }; - # pipewire = { - # enable = lib.mkDefault true; - # systemWide = true; - # alsa.enable = false; - # alsa.support32Bit = true; - # pulse.enable = true; - # jack.enable = true; - # extraConfig.pipewire = { - # "99-default.conf" = { - # "context.properties" = { - # "default.clock.rate" = 96000; - # "default.clock.allowed-rates" = [ - # 44100 - # 48000 - # 96000 - # ]; - # "default.clock.quantum" = 1024; - # "default.clock.min-quantum" = 256; - # "default.clock.max-quantum" = 2048; - # }; - # }; - # }; - # }; - thermald.enable = true; - earlyoom.enable = true; - openssh = { - enable = true; - allowSFTP = true; - hostKeys = [ - { - path = "/etc/ssh/id_ed25519"; - type = "ed25519"; - } - ]; - settings = { - PasswordAuthentication = false; - PermitRootLogin = "yes"; - UsePAM = true; + boot = { + kernelPackages = lib.mkDefault pkgs.linuxPackages_xanmod_stable; + loader = { + systemd-boot.enable = lib.mkDefault true; + efi.canTouchEfiVariables = lib.mkDefault true; }; }; - }; - security = { - rtkit.enable = true; - }; - hardware.intel-gpu-tools.enable = true; + fileSystems."${xlib.dirs.lamet-drive}" = { + device = "/dev/disk/by-uuid/DC76BD3576BD116E"; + fsType = "ntfs3"; + options = [ + "defaults" + "uid=1000" + "gid=1000" + "fmask=0000" + "dmask=0000" + "nofail" + ]; + }; - system.stateVersion = "26.05"; - }; -in -inputs.nixpkgs.lib.nixosSystem { - modules = with inputs; [ - nixosModule + hardware = { + bluetooth.enable = true; + }; + + networking = { + networkmanager.enable = true; + firewall.enable = false; + }; + + i18n = { + extraLocaleSettings = { + LC_ADDRESS = "ru_RU.UTF-8"; + LC_IDENTIFICATION = "ru_RU.UTF-8"; + LC_MEASUREMENT = "ru_RU.UTF-8"; + LC_MONETARY = "ru_RU.UTF-8"; + LC_NAME = "ru_RU.UTF-8"; + LC_NUMERIC = "ru_RU.UTF-8"; + LC_PAPER = "ru_RU.UTF-8"; + LC_TELEPHONE = "ru_RU.UTF-8"; + LC_TIME = "ru_RU.UTF-8"; + }; + }; + + services = { + # xserver = { + # videoDrivers = [ + # "nomodeset" + # ]; + # }; + syncthing = { + enable = true; + systemService = true; + configDir = "${xlib.dirs.user-storage}/Syncthing/${config.system.name}"; + dataDir = "${xlib.dirs.user-home}"; + group = "users"; + user = "${xlib.device.username}"; + }; + # pipewire = { + # enable = lib.mkDefault true; + # systemWide = true; + # alsa.enable = false; + # alsa.support32Bit = true; + # pulse.enable = true; + # jack.enable = true; + # extraConfig.pipewire = { + # "99-default.conf" = { + # "context.properties" = { + # "default.clock.rate" = 96000; + # "default.clock.allowed-rates" = [ + # 44100 + # 48000 + # 96000 + # ]; + # "default.clock.quantum" = 1024; + # "default.clock.min-quantum" = 256; + # "default.clock.max-quantum" = 2048; + # }; + # }; + # }; + # }; + thermald.enable = true; + earlyoom.enable = true; + openssh = { + enable = true; + allowSFTP = true; + hostKeys = [ + { + path = "/etc/ssh/id_ed25519"; + type = "ed25519"; + } + ]; + settings = { + PasswordAuthentication = false; + PermitRootLogin = "yes"; + UsePAM = true; + }; + }; + }; + security = { + rtkit.enable = true; + }; + + hardware.intel-gpu-tools.enable = true; + + system.stateVersion = "26.05"; + } + ) ]; - system = "x86_64-linux"; - specialArgs = { - deviceType = "secondary"; - }; } diff --git a/configurations/mini-pc.nix b/configurations/mini-pc.nix index c546715..da2c94d 100644 --- a/configurations/mini-pc.nix +++ b/configurations/mini-pc.nix @@ -1,160 +1,147 @@ { - inputs, - ... -}@flakeContext: -let - nixosModule = - { - config, - lib, - pkgs, - xlib, - ... - }: - { - xlib.device = { - type = "primary"; - hostname = "atoridu"; - }; + deviceType = "primary"; + hostname = "atoridu"; + modules = [ + ( + { + config, + inputs, + lib, + pkgs, + xlib, + ... + }: + { + imports = with inputs; [ + ./hardware/mini-pc.nix + ./disko/mini-pc.nix + ./hardware/logitech.nix + self.nixosModules.default + ]; - imports = with inputs; [ - ./hardware/mini-pc.nix - ./disko/mini-pc.nix - ./hardware/logitech.nix - self.nixosModules.default - ]; + fileSystems = { + "${xlib.dirs.therima-drive}" = { + enable = false; + device = "/dev/disk/by-uuid/C0A2DDEFA2DDEA44"; + fsType = "ntfs3"; + options = [ + "defaults" + "uid=1000" + "gid=1000" + "fmask=0007" + "dmask=0007" + "nofail" + ]; + }; + "${xlib.dirs.vetymae-drive}" = { + enable = false; + device = "/dev/disk/by-uuid/6408433908430A0E"; + fsType = "ntfs3"; + options = [ + "defaults" + "uid=1000" + "gid=1000" + "fmask=0007" + "dmask=0007" + "nofail" + ]; + }; + "${xlib.dirs.soptur-drive}" = { + enable = false; + device = "/dev/disk/by-uuid/C00C56E40C56D54E"; + fsType = "ntfs3"; + options = [ + "defaults" + "uid=1000" + "gid=1000" + "fmask=0007" + "dmask=0007" + "nofail" + ]; + }; + }; - fileSystems = { - "${xlib.dirs.therima-drive}" = { - enable = false; - device = "/dev/disk/by-uuid/C0A2DDEFA2DDEA44"; - fsType = "ntfs3"; - options = [ - "defaults" - "uid=1000" - "gid=1000" - "fmask=0007" - "dmask=0007" - "nofail" - ]; + boot = { + kernelPackages = lib.mkDefault pkgs.linuxPackages_xanmod_stable; + loader = { + systemd-boot.enable = lib.mkDefault true; + efi.canTouchEfiVariables = lib.mkDefault true; + }; }; - "${xlib.dirs.vetymae-drive}" = { - enable = false; - device = "/dev/disk/by-uuid/6408433908430A0E"; - fsType = "ntfs3"; - options = [ - "defaults" - "uid=1000" - "gid=1000" - "fmask=0007" - "dmask=0007" - "nofail" - ]; - }; - "${xlib.dirs.soptur-drive}" = { - enable = false; - device = "/dev/disk/by-uuid/C00C56E40C56D54E"; - fsType = "ntfs3"; - options = [ - "defaults" - "uid=1000" - "gid=1000" - "fmask=0007" - "dmask=0007" - "nofail" - ]; - }; - }; - boot = { - kernelPackages = lib.mkDefault pkgs.linuxPackages_xanmod_stable; - loader = { - systemd-boot.enable = lib.mkDefault true; - efi.canTouchEfiVariables = lib.mkDefault true; + hardware = { + bluetooth.enable = true; }; - }; - hardware = { - bluetooth.enable = true; - }; - - networking = { - hostName = "${xlib.device.hostname}"; - networkmanager.enable = true; - firewall.enable = false; - }; - - i18n = { - extraLocaleSettings = { - LC_ADDRESS = "ru_RU.UTF-8"; - LC_IDENTIFICATION = "ru_RU.UTF-8"; - LC_MEASUREMENT = "ru_RU.UTF-8"; - LC_MONETARY = "ru_RU.UTF-8"; - LC_NAME = "ru_RU.UTF-8"; - LC_NUMERIC = "ru_RU.UTF-8"; - LC_PAPER = "ru_RU.UTF-8"; - LC_TELEPHONE = "ru_RU.UTF-8"; - LC_TIME = "ru_RU.UTF-8"; + networking = { + networkmanager.enable = true; + firewall.enable = false; }; - }; - services = { - #logrotate.checkConfig = false; - #power-profiles-daemon.enable = false; - xserver = { - videoDrivers = [ - "amdgpu" - ]; + i18n = { + extraLocaleSettings = { + LC_ADDRESS = "ru_RU.UTF-8"; + LC_IDENTIFICATION = "ru_RU.UTF-8"; + LC_MEASUREMENT = "ru_RU.UTF-8"; + LC_MONETARY = "ru_RU.UTF-8"; + LC_NAME = "ru_RU.UTF-8"; + LC_NUMERIC = "ru_RU.UTF-8"; + LC_PAPER = "ru_RU.UTF-8"; + LC_TELEPHONE = "ru_RU.UTF-8"; + LC_TIME = "ru_RU.UTF-8"; + }; }; - syncthing = { - enable = true; - systemService = true; - configDir = "${xlib.dirs.user-storage}/Syncthing/${config.system.name}"; - dataDir = "${xlib.dirs.user-home}"; - group = "users"; - user = "${xlib.device.username}"; - }; - pipewire = { - enable = lib.mkDefault true; - systemWide = true; - alsa.enable = false; - alsa.support32Bit = true; - pulse.enable = true; - jack.enable = true; - extraConfig.pipewire = { - "99-default.conf" = { - "context.properties" = { - "default.clock.rate" = 96000; - "default.clock.allowed-rates" = [ - 44100 - 48000 - 96000 - ]; - "default.clock.quantum" = 1024; - "default.clock.min-quantum" = 256; - "default.clock.max-quantum" = 2048; + + services = { + #logrotate.checkConfig = false; + #power-profiles-daemon.enable = false; + xserver = { + videoDrivers = [ + "amdgpu" + ]; + }; + syncthing = { + enable = true; + systemService = true; + configDir = "${xlib.dirs.user-storage}/Syncthing/${config.system.name}"; + dataDir = "${xlib.dirs.user-home}"; + group = "users"; + user = "${xlib.device.username}"; + }; + pipewire = { + enable = lib.mkDefault true; + systemWide = true; + alsa.enable = false; + alsa.support32Bit = true; + pulse.enable = true; + jack.enable = true; + extraConfig.pipewire = { + "99-default.conf" = { + "context.properties" = { + "default.clock.rate" = 96000; + "default.clock.allowed-rates" = [ + 44100 + 48000 + 96000 + ]; + "default.clock.quantum" = 1024; + "default.clock.min-quantum" = 256; + "default.clock.max-quantum" = 2048; + }; }; }; }; + thermald.enable = true; + earlyoom.enable = true; }; - thermald.enable = true; - earlyoom.enable = true; - }; - nixpkgs.config.pulseaudio = true; + nixpkgs.config.pulseaudio = true; - security = { - rtkit.enable = true; - }; + security = { + rtkit.enable = true; + }; - system.stateVersion = "26.05"; - }; -in -inputs.nixpkgs.lib.nixosSystem { - modules = [ - nixosModule + system.stateVersion = "26.05"; + } + ) ]; - system = "x86_64-linux"; - specialArgs = { - deviceType = "primary"; - }; } diff --git a/configurations/server.nix b/configurations/server.nix index 96f1fda..bfe3241 100644 --- a/configurations/server.nix +++ b/configurations/server.nix @@ -1,132 +1,122 @@ -{ inputs, ... }@flakeContext: -let - nixosModule = - { - config, - lib, - pkgs, - xlib, - ... - }: - { - xlib.device = { - type = "server"; - hostname = "sapphira"; - }; +{ + deviceType = "server"; + hostname = "sapphira"; + modules = [ + ( + { + config, + inputs, + lib, + pkgs, + xlib, + ... + }: + { + imports = [ + ./hardware/server.nix + inputs.self.nixosModules.default + ]; - imports = [ - ./hardware/server.nix - inputs.self.nixosModules.default - ]; - - boot = { - # kernelPackages = pkgs.linuxPackages_xanmod_stable; - hardwareScan = true; - loader = { - systemd-boot.enable = lib.mkDefault true; - efi.canTouchEfiVariables = lib.mkDefault true; - }; - }; - - hardware = { - bluetooth.enable = true; - graphics = { - enable = true; - extraPackages = with pkgs; [ - intel-media-driver - intel-ocl - intel-vaapi-driver - ]; - }; - intel-gpu-tools.enable = true; - }; - - fileSystems = { - # External drive - "${xlib.dirs.server-home}" = { - device = "/dev/disk/by-uuid/37e53ebc-5343-a94d-9fe2-0ca39e13a8de"; - fsType = "ext4"; - }; - # Archive drive - "${xlib.dirs.archive-drive}" = { - device = "/dev/disk/by-label/archive"; - fsType = "exfat"; - options = [ - "nofail" - "uid=1000" - "gid=1000" - ]; - }; - # Mobile SD-Card - "${xlib.dirs.mobile-drive}" = { - device = "/dev/disk/by-uuid/7EB1-DC99"; - fsType = "exfat"; - options = [ - "nofail" - "uid=1000" - "gid=1000" - ]; - }; - # Services in /mnt folder - "${xlib.dirs.services-mnt-folder}" = { - device = "${xlib.dirs.services-folder}"; - fsType = "none"; - options = [ - "bind" - "nofail" - ]; - }; - }; - - systemd.tmpfiles.rules = [ - "z ${xlib.dirs.services-mnt-folder} 0777 root root -" - ]; - - services = { - earlyoom.enable = true; - journald = { - extraConfig = '' - SystemMaxUse=512M - ''; - }; - openssh = { - enable = true; - allowSFTP = true; - hostKeys = [ - { - path = "/etc/ssh/id_ed25519"; - type = "ed25519"; - } - ]; - settings = { - PasswordAuthentication = false; - PermitRootLogin = "yes"; - UsePAM = true; + boot = { + # kernelPackages = pkgs.linuxPackages_xanmod_stable; + hardwareScan = true; + loader = { + systemd-boot.enable = lib.mkDefault true; + efi.canTouchEfiVariables = lib.mkDefault true; }; }; - }; - networking = { - hostName = "${xlib.device.hostname}"; - networkmanager.enable = true; - firewall.enable = false; - # nameservers = [ - # "192.168.1.1" - # "127.0.0.1" - # ]; - }; + hardware = { + bluetooth.enable = true; + graphics = { + enable = true; + extraPackages = with pkgs; [ + intel-media-driver + intel-ocl + intel-vaapi-driver + ]; + }; + intel-gpu-tools.enable = true; + }; - system = { - stateVersion = "25.05"; - }; - }; -in -inputs.nixpkgs.lib.nixosSystem { - modules = [ - nixosModule + fileSystems = { + # External drive + "${xlib.dirs.server-home}" = { + device = "/dev/disk/by-uuid/37e53ebc-5343-a94d-9fe2-0ca39e13a8de"; + fsType = "ext4"; + }; + # Archive drive + "${xlib.dirs.archive-drive}" = { + device = "/dev/disk/by-label/archive"; + fsType = "exfat"; + options = [ + "nofail" + "uid=1000" + "gid=1000" + ]; + }; + # Mobile SD-Card + "${xlib.dirs.mobile-drive}" = { + device = "/dev/disk/by-uuid/7EB1-DC99"; + fsType = "exfat"; + options = [ + "nofail" + "uid=1000" + "gid=1000" + ]; + }; + # Services in /mnt folder + "${xlib.dirs.services-mnt-folder}" = { + device = "${xlib.dirs.services-folder}"; + fsType = "none"; + options = [ + "bind" + "nofail" + ]; + }; + }; + + systemd.tmpfiles.rules = [ + "z ${xlib.dirs.services-mnt-folder} 0777 root root -" + ]; + + services = { + earlyoom.enable = true; + journald = { + extraConfig = '' + SystemMaxUse=512M + ''; + }; + openssh = { + enable = true; + allowSFTP = true; + hostKeys = [ + { + path = "/etc/ssh/id_ed25519"; + type = "ed25519"; + } + ]; + settings = { + PasswordAuthentication = false; + PermitRootLogin = "yes"; + UsePAM = true; + }; + }; + }; + + networking = { + networkmanager.enable = true; + firewall.enable = false; + # nameservers = [ + # "192.168.1.1" + # "127.0.0.1" + # ]; + }; + + system = { + stateVersion = "25.05"; + }; + } + ) ]; - system = "x86_64-linux"; - specialArgs = { - deviceType = "server"; - }; } diff --git a/configurations/vds-new.nix b/configurations/vds-new.nix deleted file mode 100644 index b40dc99..0000000 --- a/configurations/vds-new.nix +++ /dev/null @@ -1,130 +0,0 @@ -{ inputs, ... }@flakeContext: -let - nixosModule = - { - config, - lib, - modulesPath, - pkgs, - xlib, - ... - }: - { - xlib.device = { - type = "vds-new"; - hostname = "otreca-new"; - }; - - imports = [ - (modulesPath + "/installer/scan/not-detected.nix") - (modulesPath + "/profiles/qemu-guest.nix") - - ./disko/vds.nix - ./hardware/vds.nix - - inputs.self.nixosModules.default - ]; - - boot = { - kernelPackages = pkgs.linuxPackages_xanmod_stable; - hardwareScan = true; - loader = { - grub = { - enable = true; - device = "nodev"; - useOSProber = false; - efiSupport = false; - }; - systemd-boot.enable = lib.mkDefault false; - }; - }; - - services = { - earlyoom.enable = true; - journald = { - extraConfig = '' - SystemMaxUse=512M - ''; - }; - openssh = { - enable = true; - allowSFTP = true; - openFirewall = true; - hostKeys = [ - { - path = "/etc/ssh/id_ed25519"; - type = "ed25519"; - } - ]; - settings = { - PasswordAuthentication = false; - PermitRootLogin = "yes"; - UsePAM = true; - }; - }; - tailscale = { - enable = true; - openFirewall = true; - }; - }; - - networking = { - nameservers = [ - "1.1.1.1" - "8.8.8.8" - "2001:4860:4860::8844" - "2001:4860:4860::8888" - "2606:4700:4700::1111" - "2606:4700:4700::1001" - ]; - hostName = "${xlib.device.hostname}"; - networkmanager.enable = true; - tempAddresses = "disabled"; - dhcpcd = { - enable = true; - IPv6rs = true; - }; - firewall = { - enable = true; - allowPing = true; - }; - enableIPv6 = true; - interfaces.ens3 = { - useDHCP = true; - # ipv4.addresses = [ - # { - # address = "31.57.158.109"; - # prefixLength = 24; - # } - # ]; - # ipv6.addresses = [ - # { - # address = "2a13:7c00:6:102:f816:3eff:fe91:6b9e"; - # prefixLength = 64; - # } - # ]; - }; - # defaultGateway = { - # address = "31.57.158.1"; - # interface = "ens3"; - # }; - # defaultGateway6 = { - # address = "2a13:7c00:6:102::1"; - # interface = "ens3"; - # }; - }; - - system = { - stateVersion = "25.05"; - }; - }; -in -inputs.nixpkgs.lib.nixosSystem { - modules = [ - nixosModule - ]; - system = "x86_64-linux"; - specialArgs = { - deviceType = "vds-new"; - }; -} diff --git a/configurations/vds.nix b/configurations/vds.nix index c14a979..ef6149b 100644 --- a/configurations/vds.nix +++ b/configurations/vds.nix @@ -1,157 +1,147 @@ -{ inputs, ... }@flakeContext: -let - nixosModule = - { - config, - lib, - modulesPath, - pkgs, - xlib, - ... - }: - { - xlib.device = { - type = "vds"; - hostname = "otreca"; - }; - - imports = [ - (modulesPath + "/installer/scan/not-detected.nix") - (modulesPath + "/profiles/qemu-guest.nix") - - ./disko/vds.nix - ./hardware/vds.nix - - inputs.self.nixosModules.default - ]; - - boot = { - # kernelPackages = pkgs.linuxPackages_xanmod_stable; - hardwareScan = true; - loader = { - grub = { - enable = true; - device = "nodev"; - useOSProber = false; - efiSupport = false; - }; - systemd-boot.enable = lib.mkDefault false; - }; - kernel.sysctl = { - "net.ipv4.tcp_syncookies" = 1; - "net.ipv4.tcp_max_syn_backlog" = 4096; - "net.ipv4.tcp_synack_retries" = 3; - "net.ipv4.tcp_syn_retries" = 3; - }; - }; - - services = { - earlyoom.enable = true; - journald = { - extraConfig = '' - SystemMaxUse=512M - ''; - }; - openssh = { - enable = true; - allowSFTP = true; - openFirewall = true; - hostKeys = [ - { - path = "/etc/ssh/id_ed25519"; - type = "ed25519"; - } - ]; - settings = { - PasswordAuthentication = false; - PermitRootLogin = "yes"; - UsePAM = true; - }; - }; - tailscale = { - enable = true; - openFirewall = true; - }; - }; - networking = { - nameservers = [ - "1.1.1.1" - "8.8.8.8" - # "2001:4860:4860::8844" - # "2001:4860:4860::8888" - # "2606:4700:4700::1111" - # "2606:4700:4700::1001" - ]; - hostName = "${xlib.device.hostname}"; - networkmanager.enable = true; - tempAddresses = "disabled"; - dhcpcd = { - enable = true; - IPv6rs = false; - }; - firewall = { - enable = true; - allowPing = true; - }; - nftables = { - enable = true; - ruleset = '' - table inet filter { - chain input { - type filter hook input priority 0; - - # loopback - iif lo accept - - # уже установленные - ct state established,related accept - - # РЕЖЕМ SYN СРАЗУ - tcp flags syn tcp dport {80,443} limit rate 20/second burst 40 packets accept - tcp flags syn tcp dport {80,443} drop - - # остальное по необходимости - } - } - ''; - }; - enableIPv6 = false; - interfaces.ens3 = { - useDHCP = true; - # ipv4.addresses = [ - # { - # address = "31.57.158.109"; - # prefixLength = 24; - # } - # ]; - # ipv6.addresses = [ - # { - # address = "2a13:7c00:6:102:f816:3eff:fe91:6b9e"; - # prefixLength = 64; - # } - # ]; - }; - # defaultGateway = { - # address = "31.57.158.1"; - # interface = "ens3"; - # }; - # defaultGateway6 = { - # address = "2a13:7c00:6:102::1"; - # interface = "ens3"; - # }; - }; - - system = { - stateVersion = "25.05"; - }; - }; -in -inputs.nixpkgs.lib.nixosSystem { +{ + deviceType = "vds"; + hostname = "otreca"; modules = [ - nixosModule + ( + { + config, + inputs, + lib, + modulesPath, + pkgs, + xlib, + ... + }: + { + imports = [ + (modulesPath + "/installer/scan/not-detected.nix") + (modulesPath + "/profiles/qemu-guest.nix") + + ./disko/vds.nix + ./hardware/vds.nix + + inputs.self.nixosModules.default + ]; + + boot = { + # kernelPackages = pkgs.linuxPackages_xanmod_stable; + hardwareScan = true; + loader = { + grub = { + enable = true; + device = "nodev"; + useOSProber = false; + efiSupport = false; + }; + systemd-boot.enable = lib.mkDefault false; + }; + kernel.sysctl = { + "net.ipv4.tcp_syncookies" = 1; + "net.ipv4.tcp_max_syn_backlog" = 4096; + "net.ipv4.tcp_synack_retries" = 3; + "net.ipv4.tcp_syn_retries" = 3; + }; + }; + + services = { + earlyoom.enable = true; + journald = { + extraConfig = '' + SystemMaxUse=512M + ''; + }; + openssh = { + enable = true; + allowSFTP = true; + openFirewall = true; + hostKeys = [ + { + path = "/etc/ssh/id_ed25519"; + type = "ed25519"; + } + ]; + settings = { + PasswordAuthentication = false; + PermitRootLogin = "yes"; + UsePAM = true; + }; + }; + tailscale = { + enable = true; + openFirewall = true; + }; + }; + networking = { + nameservers = [ + "1.1.1.1" + "8.8.8.8" + # "2001:4860:4860::8844" + # "2001:4860:4860::8888" + # "2606:4700:4700::1111" + # "2606:4700:4700::1001" + ]; + networkmanager.enable = true; + tempAddresses = "disabled"; + dhcpcd = { + enable = true; + IPv6rs = false; + }; + firewall = { + enable = true; + allowPing = true; + }; + nftables = { + enable = true; + ruleset = '' + table inet filter { + chain input { + type filter hook input priority 0; + + # loopback + iif lo accept + + # уже установленные + ct state established,related accept + + # РЕЖЕМ SYN СРАЗУ + tcp flags syn tcp dport {80,443} limit rate 20/second burst 40 packets accept + tcp flags syn tcp dport {80,443} drop + + # остальное по необходимости + } + } + ''; + }; + enableIPv6 = false; + interfaces.ens3 = { + useDHCP = true; + # ipv4.addresses = [ + # { + # address = "31.57.158.109"; + # prefixLength = 24; + # } + # ]; + # ipv6.addresses = [ + # { + # address = "2a13:7c00:6:102:f816:3eff:fe91:6b9e"; + # prefixLength = 64; + # } + # ]; + }; + # defaultGateway = { + # address = "31.57.158.1"; + # interface = "ens3"; + # }; + # defaultGateway6 = { + # address = "2a13:7c00:6:102::1"; + # interface = "ens3"; + # }; + }; + + system = { + stateVersion = "25.05"; + }; + } + ) ]; - system = "x86_64-linux"; - specialArgs = { - deviceType = "vds"; - }; } diff --git a/configurations/wsl.nix b/configurations/wsl.nix index ee8952e..b1cfc5c 100644 --- a/configurations/wsl.nix +++ b/configurations/wsl.nix @@ -1,103 +1,93 @@ -{ inputs, ... }@flakeContext: -let - nixosModule = - { - config, - lib, - pkgs, - modulesPath, - xlib, - ... - }: - { - xlib.device = { - type = "wsl"; - hostname = "wsl"; - }; - - imports = [ - inputs.nixos-wsl.nixosModules.default - inputs.self.nixosModules.default - ]; - - #zramSwap.enable = true; - services = { - journald = { - extraConfig = '' - SystemMaxUse=512M - ''; - }; - earlyoom.enable = true; - }; - - hardware = { - graphics.enable = true; - # amdgpu.opencl.enable = true; - # amdgpu.amdvlk.enable = true; - }; - - networking = { - # nameservers = [ - # "1.1.1.1" - # "8.8.8.8" - # "2001:4860:4860::8844" - # "2001:4860:4860::8888" - # "2606:4700:4700::1111" - # "2606:4700:4700::1001" - # ]; - hostName = "${xlib.device.hostname}"; - # networkmanager.enable = true; - # tempAddresses = "disabled"; - # dhcpcd = { - # enable = true; - # IPv6rs = true; - # }; - firewall = { - enable = false; - allowPing = true; - }; - enableIPv6 = true; - # interfaces.ens3 = { - # useDHCP = true; - # # ipv4.addresses = [ - # # { - # # address = "31.57.158.109"; - # # prefixLength = 24; - # # } - # # ]; - # ipv6.addresses = [ - # { - # address = "2a13:7c00:10:6:f816:3eff:fe36:fe1b"; - # prefixLength = 64; - # } - # ]; - # }; - # # defaultGateway = { - # # address = "31.57.158.1"; - # # interface = "ens3"; - # # }; - # defaultGateway6 = { - # address = "2a13:7c00:10:6::1"; - # interface = "ens3"; - # }; - }; - - wsl = { - enable = true; - startMenuLaunchers = true; - useWindowsDriver = true; - defaultUser = config.xlib.device.username; - }; - - system.stateVersion = "24.11"; - }; -in -inputs.nixpkgs.lib.nixosSystem { +{ + deviceType = "wsl"; + hostname = "wsl"; modules = [ - nixosModule + ( + { + config, + inputs, + lib, + modulesPath, + pkgs, + xlib, + ... + }: + { + imports = [ + inputs.nixos-wsl.nixosModules.default + inputs.self.nixosModules.default + ]; + + #zramSwap.enable = true; + services = { + journald = { + extraConfig = '' + SystemMaxUse=512M + ''; + }; + earlyoom.enable = true; + }; + + hardware = { + graphics.enable = true; + # amdgpu.opencl.enable = true; + # amdgpu.amdvlk.enable = true; + }; + + networking = { + # nameservers = [ + # "1.1.1.1" + # "8.8.8.8" + # "2001:4860:4860::8844" + # "2001:4860:4860::8888" + # "2606:4700:4700::1111" + # "2606:4700:4700::1001" + # ]; + # networkmanager.enable = true; + # tempAddresses = "disabled"; + # dhcpcd = { + # enable = true; + # IPv6rs = true; + # }; + firewall = { + enable = false; + allowPing = true; + }; + enableIPv6 = true; + # interfaces.ens3 = { + # useDHCP = true; + # # ipv4.addresses = [ + # # { + # # address = "31.57.158.109"; + # # prefixLength = 24; + # # } + # # ]; + # ipv6.addresses = [ + # { + # address = "2a13:7c00:10:6:f816:3eff:fe36:fe1b"; + # prefixLength = 64; + # } + # ]; + # }; + # # defaultGateway = { + # # address = "31.57.158.1"; + # # interface = "ens3"; + # # }; + # defaultGateway6 = { + # address = "2a13:7c00:10:6::1"; + # interface = "ens3"; + # }; + }; + + wsl = { + enable = true; + startMenuLaunchers = true; + useWindowsDriver = true; + defaultUser = config.xlib.device.username; + }; + + system.stateVersion = "24.11"; + } + ) ]; - system = "x86_64-linux"; - specialArgs = { - deviceType = "wsl"; - }; } diff --git a/deploy/default.nix b/deploy/default.nix index 79b706c..68661f9 100644 --- a/deploy/default.nix +++ b/deploy/default.nix @@ -9,7 +9,6 @@ let user = "${inputs.self.nixosConfigurations.default.config.xlib.device.username}"; server = "sapphira"; vds = "otreca"; - vds-new = "otreca-new"; mini-laptop = "rydiwo"; in { @@ -19,7 +18,6 @@ in nodes = { "${server}" = mkDeploy "${server}"; "${vds}" = mkDeploy "${vds}"; - "${vds-new}" = mkDeploy "${vds-new}"; "${mini-laptop}" = mkDeploy "${mini-laptop}"; }; }; diff --git a/flake.lock b/flake.lock index b7f13bd..dbf4fea 100644 --- a/flake.lock +++ b/flake.lock @@ -420,19 +420,20 @@ "inputs": { "nixpkgs": [ "nixpkgs" - ] + ], + "zapret": "zapret" }, "locked": { - "lastModified": 1783174389, - "narHash": "sha256-aCWC8ngycU7OdJrU2+Je3qf+1a2ykuBvpPhZT/9tXMc=", - "owner": "Mic92", - "repo": "sops-nix", - "rev": "f1406619a3884cd5c47992a70b8b35c9c0fcb4c9", + "lastModified": 1785752612, + "narHash": "sha256-xplyGWMis+MHSOJcwlnOTlebJGNag0qFsZ719JQWsz8=", + "owner": "FUFSoB", + "repo": "proxy-suite-flake", + "rev": "47a07d971cf53e62b912d2809a9a711275ceb00d", "type": "github" }, "original": { - "owner": "Mic92", - "repo": "sops-nix", + "owner": "FUFSoB", + "repo": "proxy-suite-flake", "type": "github" } }, @@ -457,7 +458,7 @@ "proxy-suite": "proxy-suite", "sops-nix": "sops-nix", "utils": "utils", - "zapret": "zapret", + "zapret": "zapret_2", "zeroq-credentials": "zeroq-credentials" } }, @@ -531,6 +532,44 @@ } }, "zapret": { + "inputs": { + "nixpkgs": [ + "proxy-suite", + "nixpkgs" + ], + "zapret-flowseal": "zapret-flowseal" + }, + "locked": { + "lastModified": 1784758289, + "narHash": "sha256-gUwiD33Dn5Q4Fi3RwbRmJJ7wiRw19rvyFJBBnhHWMQc=", + "owner": "kartavkun", + "repo": "zapret-discord-youtube", + "rev": "a7d7f1dd3765937b051d1289fba3fde2a6c8c7c0", + "type": "github" + }, + "original": { + "owner": "kartavkun", + "repo": "zapret-discord-youtube", + "type": "github" + } + }, + "zapret-flowseal": { + "flake": false, + "locked": { + "lastModified": 1784697388, + "narHash": "sha256-Lf7oloMkMziQRzyE/nw16J1/hAxSuRG5ioZb7UbLRUo=", + "owner": "Flowseal", + "repo": "zapret-discord-youtube", + "rev": "9503dc045133000af8075e066f09bb469008e530", + "type": "github" + }, + "original": { + "owner": "Flowseal", + "repo": "zapret-discord-youtube", + "type": "github" + } + }, + "zapret_2": { "locked": { "lastModified": 1767430655, "narHash": "sha256-f9PricXeNm3lG1tk2TepPPY+wxM5y0ezo1HSzNn4BQ8=", diff --git a/flake.nix b/flake.nix index 30b39f4..b4cf2e8 100644 --- a/flake.nix +++ b/flake.nix @@ -67,7 +67,7 @@ }; }; proxy-suite = { - url = "github:Mic92/sops-nix"; + url = "github:FUFSoB/proxy-suite-flake"; inputs.nixpkgs.follows = "nixpkgs"; }; sops-nix = { diff --git a/home/vds-new.nix b/home/vds-new.nix deleted file mode 100644 index 15d68db..0000000 --- a/home/vds-new.nix +++ /dev/null @@ -1,27 +0,0 @@ -{ - config, - pkgs, - xlib, - ... -}: -{ - imports = [ - ./minimal.nix - ]; - xdg = { - enable = true; - autostart.enable = true; - userDirs = { - enable = true; - createDirectories = false; - desktop = null; - documents = null; - download = null; - music = null; - pictures = null; - publicShare = null; - templates = null; - videos = null; - }; - }; -} diff --git a/lib/mkSystem.nix b/lib/mkSystem.nix new file mode 100644 index 0000000..c12bcf2 --- /dev/null +++ b/lib/mkSystem.nix @@ -0,0 +1,27 @@ +{ + inputs, + ... +}: +{ + deviceType, + hostname ? null, + modules ? [ ], + system ? "x86_64-linux", +}: +let + lib = inputs.nixpkgs.lib; +in +lib.nixosSystem { + inherit system; + modules = modules ++ [ + { + xlib.device = { + type = deviceType; + } + // lib.optionalAttrs (hostname != null) { inherit hostname; }; + } + ]; + specialArgs = { + inherit deviceType inputs; + }; +} diff --git a/modules/default.nix b/modules/default.nix index f3503e2..ce433ac 100644 --- a/modules/default.nix +++ b/modules/default.nix @@ -28,6 +28,7 @@ let nixpkgs.overlays = with inputs; [ self.nixosOverlays.default ]; + networking.hostName = lib.mkDefault config.xlib.device.hostname; _module.args = { inputs = inputs; xlib = config.xlib; diff --git a/modules/options.nix b/modules/options.nix index d2b6ed2..bb4a3f6 100644 --- a/modules/options.nix +++ b/modules/options.nix @@ -14,7 +14,6 @@ "secondary" "server" "vds" - "vds-new" "wsl" "termux" ]; diff --git a/modules/vds-new/default.nix b/modules/vds-new/default.nix deleted file mode 100644 index 58a7e29..0000000 --- a/modules/vds-new/default.nix +++ /dev/null @@ -1,9 +0,0 @@ -{ - lib, - ... -}: -{ - imports = [ - ../vds - ]; -} diff --git a/modules/wsl/containers/3x-ui.nix b/modules/wsl/containers/3x-ui.nix deleted file mode 100644 index c951ea0..0000000 --- a/modules/wsl/containers/3x-ui.nix +++ /dev/null @@ -1,118 +0,0 @@ -# Auto-generated using compose2nix v0.3.3-pre. -{ - pkgs, - lib, - config, - ... -}: - -{ - # Runtime - virtualisation.podman = { - enable = true; - autoPrune = { - enable = true; - flags = [ "--all" ]; - }; - dockerCompat = true; - }; - - # Enable container name DNS for all Podman networks. - networking.firewall.interfaces = - let - matchAll = if !config.networking.nftables.enable then "podman+" else "podman*"; - in - { - "${matchAll}".allowedUDPPorts = [ 53 ]; - }; - - networking.firewall = { - allowedUDPPortRanges = [ - { - from = 14380; - to = 15380; - } - ]; - allowedTCPPortRanges = [ - { - from = 14380; - to = 15380; - } - ]; - allowedTCPPorts = [ - 8443 - 9443 - 13380 - ]; - allowedUDPPorts = [ - 8443 - 9443 - 13380 - ]; - }; - virtualisation.oci-containers.backend = "podman"; - - # Containers - virtualisation.oci-containers.containers."3xui_app" = { - image = "ghcr.io/mhsanaei/3x-ui:latest"; - environment = { - "XRAY_VMESS_AEAD_FORCED" = "false"; - "XUI_ENABLE_FAIL2BAN" = "true"; - "TZ" = "Europe/Moscow"; - }; - volumes = [ - "/mnt/containers/3x-ui/cert/:/root/cert:rw" - "/mnt/containers/3x-ui/db/:/etc/x-ui:rw" - ]; - log-driver = "journald"; - extraOptions = [ - "--network=host" - ]; - }; - systemd.services."podman-3xui_app" = { - serviceConfig = { - Restart = lib.mkOverride 90 "always"; - }; - partOf = [ - "podman-compose-3x-ui-root.target" - ]; - wantedBy = [ - "podman-compose-3x-ui-root.target" - ]; - }; - - # Builds - systemd.services."podman-build-3xui_app" = { - path = [ - pkgs.podman - pkgs.git - ]; - serviceConfig = { - Type = "oneshot"; - TimeoutSec = 300; - }; - script = '' - cd /mnt/containers/3x-ui - podman build -t compose2nix/3xui_app -f ./Dockerfile . - ''; - }; - - # Root service - # When started, this will automatically create all resources and start - # the containers. When stopped, this will teardown all resources. - systemd.targets."podman-compose-3x-ui-root" = { - unitConfig = { - Description = "Root target generated by compose2nix."; - }; - wantedBy = [ "multi-user.target" ]; - }; - - # Folders - systemd.tmpfiles.rules = [ - "d /mnt 0755 root root -" - "d /mnt/containers 0755 root root -" - "d /mnt/containers/3x-ui 0755 root root -" - "d /mnt/containers/3x-ui/cert 0755 root root -" - "d /mnt/containers/3x-ui/db 0755 root root -" - ]; -} diff --git a/modules/wsl/containers/default.nix b/modules/wsl/containers/default.nix index d9d57c6..dea844e 100644 --- a/modules/wsl/containers/default.nix +++ b/modules/wsl/containers/default.nix @@ -6,7 +6,8 @@ }: { imports = [ - # ./3x-ui.nix + # shared container modules live in ../../containers + # ../../containers/3x-ui.nix ]; environment.systemPackages = with pkgs; [ diff --git a/pkgs/default.nix b/pkgs/default.nix index 0527dd0..8344d8e 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -12,6 +12,5 @@ in packages.${system} = { rovr = pkgs.callPackage ./rovr { }; pcbu-desktop = pkgs.callPackage ./pcbu-desktop { }; - # immich = pkgs.callPackage ./immich { }; }; }