diff --git a/modules/homelab/homelab.nix b/modules/homelab/homelab.nix new file mode 100644 index 0000000..fe40e08 --- /dev/null +++ b/modules/homelab/homelab.nix @@ -0,0 +1,14 @@ +{ config, lib, pkgs, ... }: + +{ + imports = [ + ./zfs.nix + ./smb.nix + ./nfs.nix + ]; + + homelab.zfs.enable = lib.mkDefault true; + homelab.smb.enable = lib.mkDefault true; + homelab.nfs.enable = lib.mkDefault true; + +} diff --git a/modules/system/docker.nix b/modules/system/docker.nix new file mode 100644 index 0000000..d0698bc --- /dev/null +++ b/modules/system/docker.nix @@ -0,0 +1,10 @@ +{ config, pkgs, ... }: + +{ + virtualisation.docker = { + enable = true; + daemon.settings = { + experimental = true; + }; + }; +} diff --git a/modules/system/nvidia.nix b/modules/system/nvidia.nix new file mode 100644 index 0000000..6a6dd65 --- /dev/null +++ b/modules/system/nvidia.nix @@ -0,0 +1,20 @@ +{ config, pkgs, lib, ... }: + +{ + # enable nvidia proprietary driver + hardware.nvidia = { + modesetting.enable = true; # required + open = false; # use proprietary driver + nvidiaSettings = true; # no shit + powerManagement.enable = false; # can cause sleep issues + package = config.boot.kernelPackages.nvidiaPackages.stable; + }; + + # install nvidia-smi + environment.systemPackages = with pkgs; [ + nvidia-smi + ]; + + # enable docker gpu passthrough + virtualisation.docker.enableNvidia = true; +} diff --git a/modules/system/ssh.nix b/modules/system/ssh.nix new file mode 100644 index 0000000..c3327fa --- /dev/null +++ b/modules/system/ssh.nix @@ -0,0 +1,15 @@ +{ config, lib, pkgs, ... }: + +{ + # enable and configure openssh + services.openssh = { + enable = true; + settings = { + PasswordAuthentication = true; + PermitRootLogin = "no"; + X11Forwarding = false; + }; + }; + + +} diff --git a/modules/system/syncthing.nix b/modules/system/syncthing.nix new file mode 100644 index 0000000..4db4f65 --- /dev/null +++ b/modules/system/syncthing.nix @@ -0,0 +1,16 @@ +{ config, pkgs, ... }: + +{ + services.syncthing = { + enable = true; + user = "blake"; + group = "blake"; + + dataDir = "/home/blake/.local/state/syncthing"; + configDir = "/home/blake/.config/syncthing"; + + # webui + guiAddress = "0.0.0.0:2222"; + openDefaultPorts = true; + }; +} diff --git a/modules/system/tailscale.nix b/modules/system/tailscale.nix new file mode 100644 index 0000000..f0d85da --- /dev/null +++ b/modules/system/tailscale.nix @@ -0,0 +1,10 @@ +{ config, pkgs, ... }: + +{ + services.tailscale = { + enable = true; + + useRoutingFeatures = "both"; + authKeyFile = "/home/blake/.nix/.keyring/tailscale/authkey"; + }; +}