diff options
Diffstat (limited to 'modules/services')
| -rw-r--r-- | modules/services/options.nix | 20 | ||||
| -rw-r--r-- | modules/services/system/audio.nix | 19 | ||||
| -rw-r--r-- | modules/services/system/bluetooth.nix | 16 | ||||
| -rw-r--r-- | modules/services/system/default.nix | 7 | ||||
| -rw-r--r-- | modules/services/system/networking/default.nix | 19 | ||||
| -rw-r--r-- | modules/services/system/networking/iwd.nix | 26 | ||||
| -rw-r--r-- | modules/services/system/networking/nm.nix | 15 |
7 files changed, 122 insertions, 0 deletions
diff --git a/modules/services/options.nix b/modules/services/options.nix new file mode 100644 index 0000000..344d37d --- /dev/null +++ b/modules/services/options.nix @@ -0,0 +1,20 @@ +{lib, ...}: let + inherit (lib) mkEnableOption mkOption types; +in { + options = { + collinux.services = { + networking = { + enable = mkEnableOption "wifi"; + wifiDaemon = mkOption { + type = types.enum ["networkmanager" "iwd"]; + }; + }; + audio = { + enable = mkEnableOption "pipewire + wireplumber"; + pulse.enable = mkEnableOption "pipewire-pulse"; + # some config to make audio work with wine (TODO for jupiter) + }; + bluetooth.enable = mkEnableOption "bluetooth"; + }; + }; +} diff --git a/modules/services/system/audio.nix b/modules/services/system/audio.nix new file mode 100644 index 0000000..f0586ea --- /dev/null +++ b/modules/services/system/audio.nix @@ -0,0 +1,19 @@ +{ + pkgs, + config, + lib, + ... +}: let + cfg = config.collinux.services.audio; +in + lib.mkIf cfg.enable { + services.pipewire = { + enable = true; + wireplumber.enable = true; + alsa.enable = true; + + pulse.enable = cfg.pulse.enable; + }; + + environment.systemPackages = [pkgs.pwvucontrol]; + } diff --git a/modules/services/system/bluetooth.nix b/modules/services/system/bluetooth.nix new file mode 100644 index 0000000..a0c3f86 --- /dev/null +++ b/modules/services/system/bluetooth.nix @@ -0,0 +1,16 @@ +{ + pkgs, + lib, + config, + ... +}: let + cfg = config.collinux.services.bluetooth; +in + lib.mkIf cfg.enable { + hardware.bluetooth = { + enable = true; + powerOnBoot = true; + }; + + environment.systemPackages = [pkgs.blueman]; + } diff --git a/modules/services/system/default.nix b/modules/services/system/default.nix new file mode 100644 index 0000000..4c03dfd --- /dev/null +++ b/modules/services/system/default.nix @@ -0,0 +1,7 @@ +{ + imports = [ + ./networking + ./audio.nix + ./bluetooth.nix + ]; +} diff --git a/modules/services/system/networking/default.nix b/modules/services/system/networking/default.nix new file mode 100644 index 0000000..4908b6f --- /dev/null +++ b/modules/services/system/networking/default.nix @@ -0,0 +1,19 @@ +{ + imports = [ + ./iwd.nix + ./nm.nix + ]; + + config = { + services.resolved = { + enable = true; + domains = [ + "10.0.0.1" + "10.0.0.10" + ]; + }; + + networking.resolvconf.enable = false; + }; +} + diff --git a/modules/services/system/networking/iwd.nix b/modules/services/system/networking/iwd.nix new file mode 100644 index 0000000..5306f29 --- /dev/null +++ b/modules/services/system/networking/iwd.nix @@ -0,0 +1,26 @@ +{ + lib, + config, + ... +}: let + cfg = config.collinux.services.networking; +in + lib.mkIf (cfg.enable && cfg.wifiDaemon == "iwd") { + networking = { + wireless.iwd = { + enable = true; + settings = { + General = { + EnableNetworkConfiguration = true; # use builtin dhcp client + AddressRandomization = "once"; + }; + Network.NameResolvingService = "systemd"; # either systemd or resolvconf + }; + }; + + # Disable default networking stuff + dhcpcd.enable = false; + useDHCP = false; + networkmanager.enable = false; + }; + } diff --git a/modules/services/system/networking/nm.nix b/modules/services/system/networking/nm.nix new file mode 100644 index 0000000..674664e --- /dev/null +++ b/modules/services/system/networking/nm.nix @@ -0,0 +1,15 @@ +{ + lib, + config, + ... +}: let + cfg = config.collinux.services.networking; +in + lib.mkIf (cfg.enable && cfg.wifiDaemon == "networkmanager") { + networking = { + nameservers = ["1.1.1.1" "1.0.0.1"]; + enableIPv6 = false; + + networkmanager.enable = true; + }; + } |
