aboutsummaryrefslogtreecommitdiff
path: root/modules/services
diff options
context:
space:
mode:
Diffstat (limited to 'modules/services')
-rw-r--r--modules/services/options.nix20
-rw-r--r--modules/services/system/audio.nix19
-rw-r--r--modules/services/system/bluetooth.nix16
-rw-r--r--modules/services/system/default.nix7
-rw-r--r--modules/services/system/networking/default.nix19
-rw-r--r--modules/services/system/networking/iwd.nix26
-rw-r--r--modules/services/system/networking/nm.nix15
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;
+ };
+ }