diff --git a/configuration.nix b/configuration.nix index 0d2d463..8470840 100644 --- a/configuration.nix +++ b/configuration.nix @@ -2,6 +2,7 @@ { imports = [ ./home-manager.nix + ./modules/system ./hardware-configuration.nix ]; @@ -14,9 +15,6 @@ efi.canTouchEfiVariables = true; }; - networking.hostName = "benq-serv"; - networking.networkmanager.enable = true; - time.timeZone = "Europe/Moscow"; i18n = { @@ -39,13 +37,9 @@ environment.systemPackages = with pkgs; [ git vim + tmux ]; - services.openssh.enable = true; - - networking.firewall.allowedTCPPorts = [ 22 80 443 ]; - networking.firewall.allowedUDPPorts = []; - system.stateVersion = "25.05"; } diff --git a/flake.lock b/flake.lock index efdc944..9b590da 100644 --- a/flake.lock +++ b/flake.lock @@ -1,5 +1,25 @@ { "nodes": { + "home-manager": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1772807318, + "narHash": "sha256-Qjw6ILt8cb2HQQpCmWNLMZZ63wEo1KjTQt+1BcQBr7k=", + "owner": "nix-community", + "repo": "home-manager", + "rev": "daa2c221320809f5514edde74d0ad0193ad54ed8", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "home-manager", + "type": "github" + } + }, "nixpkgs": { "locked": { "lastModified": 1772542754, @@ -18,6 +38,7 @@ }, "root": { "inputs": { + "home-manager": "home-manager", "nixpkgs": "nixpkgs" } } diff --git a/flake.nix b/flake.nix index b7ee399..2e8d66a 100644 --- a/flake.nix +++ b/flake.nix @@ -3,13 +3,23 @@ inputs = { nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable"; + home-manager = { + url = "github:nix-community/home-manager"; + inputs.nixpkgs.follows = "nixpkgs"; + }; }; - outputs = { self, nixpkgs }@inputs: { + outputs = { self, nixpkgs, ... }@inputs: + let + system = "x86_64-linux"; + in + { nixosConfigurations.nixos = nixpkgs.lib.nixosSystem { + inherit system; specialArgs = { inherit inputs; }; modules = [ ./configuration.nix + inputs.home-manager.nixosModules.home-manager ]; }; }; diff --git a/home-manager.nix b/home-manager.nix index addcfa2..e944836 100644 --- a/home-manager.nix +++ b/home-manager.nix @@ -1,25 +1,17 @@ -{ config, pkgs, lib, ... }: -let - home-manager = builtins.fetchTarball { - url = "https://github.com/nix-community/home-manager/archive/release-25.05.tar.gz"; - sha256 = "07pk5m6mxi666dclaxdwf7xrinifv01vvgxn49bjr8rsbh31syaq"; - }; -in -{ - imports = [ - (import "${home-manager}/nixos") - ]; +{ config, pkgs, ... }: { + users.users.benq = { + isNormalUser = true; + extraGroups = [ "wheel" ]; + }; - users.users.benq.isNormalUser = true; - - home-manager = { - useGlobalPkgs = true; - users.benq = { pkgs, ... }: { - home.packages = with pkgs; [ - lazygit - tmux - ]; - home.stateVersion = "25.05"; - }; - }; -} + home-manager = { + useGlobalPkgs = true; + useUserPackages = true; + users.benq = { pkgs, ... }: { + home.packages = with pkgs; [ + lazygit + ]; + home.stateVersion = "25.05"; + }; + }; + } diff --git a/modules/system/default.nix b/modules/system/default.nix new file mode 100644 index 0000000..61e77bd --- /dev/null +++ b/modules/system/default.nix @@ -0,0 +1,8 @@ +{ config, ... }: { + imports = [ + ./docker.nix + ./gc.nix + ./network.nix + ./openssh.nix + ]; +} diff --git a/modules/system/docker.nix b/modules/system/docker.nix new file mode 100644 index 0000000..8cb12d7 --- /dev/null +++ b/modules/system/docker.nix @@ -0,0 +1,6 @@ +{ config, ... }: { + virtualisation.docker.rootless = { + enable = true; + setSocketVariable = true; + }; +} diff --git a/modules/system/gc.nix b/modules/system/gc.nix new file mode 100644 index 0000000..fb4f8f2 --- /dev/null +++ b/modules/system/gc.nix @@ -0,0 +1,8 @@ +{ config, ... }: { + nix.gc = { + automatic = true; + dates = "daily"; + options = "--delete-older-than +5"; + }; + nix.settings.auto-optimise-store = true; +} diff --git a/modules/system/network.nix b/modules/system/network.nix new file mode 100644 index 0000000..b71307f --- /dev/null +++ b/modules/system/network.nix @@ -0,0 +1,13 @@ +{ config, pkgs, ... }: { + networking.hostName = "benq-serv"; + networking.networkmanager.enable = true; + + networking.firewall.allowedTCPPorts = [ 22 80 443 ]; + networking.firewall.allowedUDPPorts = []; + + boot.kernelModules = [ "tcp_bbr" ]; + boot.kernel.sysctl = { + "net.ipv4.tcp_congestion_control" = "bbr"; + "net.core.default_qdisc" = "fq"; + }; +} diff --git a/modules/system/openssh.nix b/modules/system/openssh.nix new file mode 100644 index 0000000..2489687 --- /dev/null +++ b/modules/system/openssh.nix @@ -0,0 +1,30 @@ +{ config, pkgs, ... }: { + services.openssh = { + enable = true; + ports = [ 6969 ]; + settings = { + PasswordAuthentication = false; + PermitEmptyPasswords = false; + KbdInteractiveAuthentication = false; + PermitRootLogin = "no"; + PubkeyAuthentication = true; + }; + }; + + services.fail2ban = { + enable = true; + maxretry = 3; + bantime = "48h"; + }; + + services.endlessh = { + enable = true; + port = 22; + openFirewall = true; + }; + + systemd.services.endlessh = { + wantedBy = [ "multi-user.target" ]; + after = [ "network.target" ]; + }; +}