summaryrefslogtreecommitdiff
path: root/features/system
diff options
context:
space:
mode:
authoroutremonde <outremonde@vivaldi.net>2025-06-10 20:32:00 -0400
committeroutremonde <outremonde@vivaldi.net>2025-06-10 20:32:00 -0400
commit9786eb8672213344d8d1b7bdef12bc94510b20db (patch)
treeb7d79440800c92d32187ab32c636b0830c94a610 /features/system
initialized repository
Former-commit-id: 84647f22b951a957b2b83885b612115d473f6626
Diffstat (limited to 'features/system')
-rw-r--r--features/system/cli/shells/nushell.nix10
-rw-r--r--features/system/cli/utils/nh.nix17
-rw-r--r--features/system/global/agenix.nix7
-rw-r--r--features/system/global/nix.nix13
-rw-r--r--features/system/global/noxterm.nix3
-rw-r--r--features/system/gui/apps/steam.nix27
-rw-r--r--features/system/gui/apps/vmware.nix8
-rw-r--r--features/system/gui/desktops/niri.nix9
-rw-r--r--features/system/server/cloud/syncthing.nix1
-rw-r--r--features/system/server/core/ssh.nix15
-rw-r--r--features/system/server/development/git-server.nix1
-rw-r--r--features/system/server/gaming/minecraft.nix1
-rw-r--r--features/system/server/media/calibre.nix1
-rw-r--r--features/system/server/media/invidious.nix1
-rw-r--r--features/system/services/bundles/printing.nix13
-rw-r--r--features/system/services/core/systemd-boot.nix11
-rw-r--r--features/system/services/extra/plymouth.nix36
-rw-r--r--features/system/services/extra/sddm.nix23
-rw-r--r--features/system/services/extra/ssh.nix14
-rw-r--r--features/system/services/extra/syncthing-client.nix35
-rw-r--r--features/system/services/extra/udisks2.nix12
-rw-r--r--features/system/services/hardware/bluetooth.nix23
-rw-r--r--features/system/services/hardware/iwd.nix19
-rw-r--r--features/system/services/hardware/networkmanager.nix11
-rw-r--r--features/system/services/hardware/pipewire.nix15
25 files changed, 326 insertions, 0 deletions
diff --git a/features/system/cli/shells/nushell.nix b/features/system/cli/shells/nushell.nix
new file mode 100644
index 0000000..0974e9a
--- /dev/null
+++ b/features/system/cli/shells/nushell.nix
@@ -0,0 +1,10 @@
+{ config, pkgs, lib, ... }: let
+ cfg = config.features.cli.shells.nushell;
+in {
+ options.features.cli.shells.nushell.enable = lib.mkEnableOption "nushell";
+ config = lib.mkIf cfg.enable {
+ environment.shells = [ pkgs.nushell ];
+ users.defaultUserShell = pkgs.nushell;
+ environment.systemPackages = [ pkgs.nushell ];
+ };
+}
diff --git a/features/system/cli/utils/nh.nix b/features/system/cli/utils/nh.nix
new file mode 100644
index 0000000..e34157e
--- /dev/null
+++ b/features/system/cli/utils/nh.nix
@@ -0,0 +1,17 @@
+{ config, lib, ... }: let
+ cfg = config.features.cli.utils.nh;
+in {
+ options.features.cli.utils.nh = {
+ enable = lib.mkEnableOption "nh";
+ flake = lib.mkOption {
+ type = lib.types.str;
+ description = "Absolute path to the flake.";
+ };
+ };
+ config = lib.mkIf cfg.enable {
+ programs.nh = {
+ enable = true;
+ flake = cfg.flake;
+ };
+ };
+}
diff --git a/features/system/global/agenix.nix b/features/system/global/agenix.nix
new file mode 100644
index 0000000..f232886
--- /dev/null
+++ b/features/system/global/agenix.nix
@@ -0,0 +1,7 @@
+{ pkgs, inputs, ...}: {
+ imports = [ inputs.agenix.nixosModules.default ];
+ environment.systemPackages = [
+ inputs.agenix.packages.${pkgs.system}.default
+ ];
+ age.identityPaths = [ "/etc/ssh/ssh_host_ed25519_key" ];
+}
diff --git a/features/system/global/nix.nix b/features/system/global/nix.nix
new file mode 100644
index 0000000..a0ece02
--- /dev/null
+++ b/features/system/global/nix.nix
@@ -0,0 +1,13 @@
+{ ... }: {
+ nix = {
+ settings = {
+ experimental-features = [ "nix-command" "flakes" ];
+ auto-optimise-store = true;
+ };
+ gc = {
+ automatic = true;
+ dates = "daily";
+ options = "-d 5";
+ };
+ };
+}
diff --git a/features/system/global/noxterm.nix b/features/system/global/noxterm.nix
new file mode 100644
index 0000000..44c0917
--- /dev/null
+++ b/features/system/global/noxterm.nix
@@ -0,0 +1,3 @@
+{ pkgs, ... }: {
+ services.xserver.excludePackages = [ pkgs.xterm ];
+}
diff --git a/features/system/gui/apps/steam.nix b/features/system/gui/apps/steam.nix
new file mode 100644
index 0000000..de17f43
--- /dev/null
+++ b/features/system/gui/apps/steam.nix
@@ -0,0 +1,27 @@
+{
+ config,
+ pkgs,
+ lib,
+ ...
+}: let
+ cfg = config.features.gui.apps.steam;
+in {
+ options.features.gui.apps.steam.enable = lib.mkEnableOption "steam";
+ config = lib.mkIf cfg.enable {
+ programs.steam = {
+ enable = true;
+ remotePlay.openFirewall = true;
+ dedicatedServer.openFirewall = true;
+ gamescopeSession.enable = true;
+ };
+ hardware.steam-hardware.enable = true;
+ programs.gamemode.enable = true;
+ environment.systemPackages = [pkgs.mangohud];
+
+ # Steam Launch Options
+ # Add this to 3D games:
+ # LD_PRELOAD="" gamescope --force-grab-cursor --backend sdl -bf -W 1600 -H 900 -- %command%
+ # Add this to 2D games:
+ # LD_PRELOAD="" gamescope -bf -W 1600 -H 900 -- %command%
+ };
+}
diff --git a/features/system/gui/apps/vmware.nix b/features/system/gui/apps/vmware.nix
new file mode 100644
index 0000000..4da3f09
--- /dev/null
+++ b/features/system/gui/apps/vmware.nix
@@ -0,0 +1,8 @@
+{ config, lib, ... }: let
+ cfg = config.features.gui.apps.vmware;
+in {
+ options.features.gui.apps.vmware.enable = lib.mkEnableOption "vmware";
+ config = lib.mkIf cfg.enable {
+ virtualisation.vmware.host.enable = true;
+ };
+}
diff --git a/features/system/gui/desktops/niri.nix b/features/system/gui/desktops/niri.nix
new file mode 100644
index 0000000..c68a4b6
--- /dev/null
+++ b/features/system/gui/desktops/niri.nix
@@ -0,0 +1,9 @@
+{ config, lib, inputs, ... }: let
+ cfg = config.features.gui.desktops.niri;
+in {
+ imports = [ inputs.niri.nixosModules.niri ];
+ options.features.gui.desktops.niri.enable = lib.mkEnableOption "niri";
+ config = lib.mkIf cfg.enable {
+ programs.niri.enable = true;
+ };
+}
diff --git a/features/system/server/cloud/syncthing.nix b/features/system/server/cloud/syncthing.nix
new file mode 100644
index 0000000..0967ef4
--- /dev/null
+++ b/features/system/server/cloud/syncthing.nix
@@ -0,0 +1 @@
+{}
diff --git a/features/system/server/core/ssh.nix b/features/system/server/core/ssh.nix
new file mode 100644
index 0000000..16fec48
--- /dev/null
+++ b/features/system/server/core/ssh.nix
@@ -0,0 +1,15 @@
+{ config, lib, ... }: let
+ cfg = config.features.server.ssh;
+in {
+ options.features.server.ssh.enable = lib.mkEnableOption "sshd";
+ config = lib.mkIf cfg.enable {
+ services.openssh = {
+ enable = true;
+ ports = [ 2200 ];
+ settings = {
+ PermitRootLogin = "no";
+ PasswordAuthentication = false;
+ };
+ };
+ };
+}
diff --git a/features/system/server/development/git-server.nix b/features/system/server/development/git-server.nix
new file mode 100644
index 0000000..0967ef4
--- /dev/null
+++ b/features/system/server/development/git-server.nix
@@ -0,0 +1 @@
+{}
diff --git a/features/system/server/gaming/minecraft.nix b/features/system/server/gaming/minecraft.nix
new file mode 100644
index 0000000..0967ef4
--- /dev/null
+++ b/features/system/server/gaming/minecraft.nix
@@ -0,0 +1 @@
+{}
diff --git a/features/system/server/media/calibre.nix b/features/system/server/media/calibre.nix
new file mode 100644
index 0000000..0967ef4
--- /dev/null
+++ b/features/system/server/media/calibre.nix
@@ -0,0 +1 @@
+{}
diff --git a/features/system/server/media/invidious.nix b/features/system/server/media/invidious.nix
new file mode 100644
index 0000000..0967ef4
--- /dev/null
+++ b/features/system/server/media/invidious.nix
@@ -0,0 +1 @@
+{}
diff --git a/features/system/services/bundles/printing.nix b/features/system/services/bundles/printing.nix
new file mode 100644
index 0000000..ea255be
--- /dev/null
+++ b/features/system/services/bundles/printing.nix
@@ -0,0 +1,13 @@
+{ config, lib, ... }: let
+ cfg = config.features.services.bundles.printing;
+in {
+ options.features.services.bundles.printing.enable = lib.mkEnableOption "printing";
+ config = lib.mkIf cfg.enable {
+ services.printing.enable = true;
+ services.avahi = {
+ enable = true;
+ nssmdns4 = true;
+ openFirewall = true;
+ };
+ };
+}
diff --git a/features/system/services/core/systemd-boot.nix b/features/system/services/core/systemd-boot.nix
new file mode 100644
index 0000000..2826f1b
--- /dev/null
+++ b/features/system/services/core/systemd-boot.nix
@@ -0,0 +1,11 @@
+{ config, lib, ... }: let
+ cfg = config.features.services.core.systemd-boot;
+in {
+ options.features.services.core.systemd-boot.enable = lib.mkEnableOption "systemd-boot";
+ config = lib.mkIf cfg.enable {
+ boot.loader = {
+ systemd-boot.enable = true;
+ efi.canTouchEfiVariables = true;
+ };
+ };
+}
diff --git a/features/system/services/extra/plymouth.nix b/features/system/services/extra/plymouth.nix
new file mode 100644
index 0000000..07f00cd
--- /dev/null
+++ b/features/system/services/extra/plymouth.nix
@@ -0,0 +1,36 @@
+{ config, pkgs, lib, ... }: let
+ cfg = config.features.services.extra.plymouth;
+in {
+ options.features.services.extra.plymouth.enable = lib.mkEnableOption "plymouth";
+ config = lib.mkIf cfg.enable {
+ boot = {
+ plymouth = {
+ enable = true;
+ theme = "dark_planet";
+ themePackages = with pkgs; [
+ # By default we would install all themes
+ (adi1090x-plymouth-themes.override {
+ selected_themes = [ "dark_planet" ];
+ })
+ ];
+ };
+
+ # Enable "Silent Boot"
+ consoleLogLevel = 0;
+ initrd.verbose = false;
+ kernelParams = [
+ "quiet"
+ "splash"
+ "boot.shell_on_fail"
+ "loglevel=3"
+ "rd.systemd.show_status=false"
+ "rd.udev.log_level=3"
+ "udev.log_priority=3"
+ ];
+ # Hide the OS choice for bootloaders.
+ # It's still possible to open the bootloader list by pressing any key
+ # It will just not appear on screen unless a key is pressed
+ loader.timeout = 0;
+ };
+ };
+}
diff --git a/features/system/services/extra/sddm.nix b/features/system/services/extra/sddm.nix
new file mode 100644
index 0000000..f266575
--- /dev/null
+++ b/features/system/services/extra/sddm.nix
@@ -0,0 +1,23 @@
+{ config, pkgs, lib, ... }: let
+ cfg = config.features.services.extra.sddm;
+ sddm-astronaut = pkgs.sddm-astronaut.override {
+ themeConfig = {
+ # Background = ./background.png;
+ };
+ };
+in {
+ options.features.services.extra.sddm.enable = lib.mkEnableOption "sddm";
+ config = lib.mkIf cfg.enable {
+ services = {
+ displayManager.sddm = {
+ enable = true;
+ wayland.enable = true;
+ package = pkgs.kdePackages.sddm;
+ theme = "sddm-astronaut-theme";
+ extraPackages = [ sddm-astronaut ];
+ };
+ # xserver.enable = true;
+ };
+ environment.systemPackages = [ sddm-astronaut ];
+ };
+}
diff --git a/features/system/services/extra/ssh.nix b/features/system/services/extra/ssh.nix
new file mode 100644
index 0000000..d1cee26
--- /dev/null
+++ b/features/system/services/extra/ssh.nix
@@ -0,0 +1,14 @@
+{ config, lib, ... }: let
+ cfg = config.features.services.extra.ssh;
+in {
+ options.features.services.extra.ssh.enable = lib.mkEnableOption "ssh";
+ config = lib.mkIf cfg.enable {
+ services.openssh = {
+ enable = true;
+ settings = {
+ PermitRootLogin = "no";
+ PasswordAuthentication = false;
+ };
+ };
+ };
+}
diff --git a/features/system/services/extra/syncthing-client.nix b/features/system/services/extra/syncthing-client.nix
new file mode 100644
index 0000000..6d3d3d3
--- /dev/null
+++ b/features/system/services/extra/syncthing-client.nix
@@ -0,0 +1,35 @@
+{ config, pkgs, lib, ... }: let
+ cfg = config.features.services.extra.syncthing-client;
+in {
+ options.features.services.extra.syncthing-client = {
+ enable = lib.mkEnableOption "syncthing";
+ username = lib.mkOption {
+ type = lib.types.str;
+ description = "The username of syncthing's user";
+ };
+ };
+ config = lib.mkIf cfg.enable {
+ services.syncthing = {
+ enable = true;
+ user = cfg.username;
+ dataDir = "/home/${cfg.username}/Sync";
+ configDir = "/home/${cfg.username}/.config/syncthing";
+ overrideDevices = true;
+ overrideFolders = true;
+ settings = {
+ devices = {
+ "prodesk-server" = {
+ id = "SBH4S2T-B7KVAAI-BKBOQKZ-YSNQDSM-TKXPV6O-OSZUD3O-N6USL6L-DHL3BAK";
+ };
+ };
+ folders = {
+ "Main" = {
+ path = "/home/${cfg.username}/Sync";
+ devices = [ "prodesk-server" ];
+ };
+ };
+ };
+ };
+ environment.systemPackages = [ pkgs.syncthing ];
+ };
+}
diff --git a/features/system/services/extra/udisks2.nix b/features/system/services/extra/udisks2.nix
new file mode 100644
index 0000000..2ec2fa4
--- /dev/null
+++ b/features/system/services/extra/udisks2.nix
@@ -0,0 +1,12 @@
+{
+ config,
+ lib,
+ ...
+}: let
+ cfg = config.features.services.extra.udisks2;
+in {
+ options.features.services.extra.udisks2.enable = lib.mkEnableOption "udisks2";
+ config = lib.mkIf cfg.enable {
+ services.udisks2.enable = true;
+ };
+}
diff --git a/features/system/services/hardware/bluetooth.nix b/features/system/services/hardware/bluetooth.nix
new file mode 100644
index 0000000..a9829ac
--- /dev/null
+++ b/features/system/services/hardware/bluetooth.nix
@@ -0,0 +1,23 @@
+{ config, pkgs, lib, ... }: let
+ cfg = config.features.services.hardware.bluetooth;
+in {
+ options.features.services.hardware.bluetooth.enable = lib.mkEnableOption "bluetooth";
+ config = lib.mkIf cfg.enable {
+ environment.systemPackages = [ pkgs.bluetui ];
+ services.blueman = {
+ enable = true;
+ };
+ hardware.bluetooth = {
+ enable = true;
+ powerOnBoot = true;
+ };
+ services.pulseaudio = {
+ package = pkgs.pulseaudioFull;
+ };
+ hardware.bluetooth.settings = {
+ General = {
+ Enable = "Source,Sink,Media,Socket";
+ };
+ };
+ };
+}
diff --git a/features/system/services/hardware/iwd.nix b/features/system/services/hardware/iwd.nix
new file mode 100644
index 0000000..c2394bc
--- /dev/null
+++ b/features/system/services/hardware/iwd.nix
@@ -0,0 +1,19 @@
+{ config, pkgs, lib, ... }: let
+ cfg = config.features.services.hardware.iwd;
+in {
+ options.features.services.hardware.iwd.enable = lib.mkEnableOption "iwd";
+ config = lib.mkIf cfg.enable {
+ environment.systemPackages = [ pkgs.impala ];
+ networking.wireless.iwd = {
+ enable = true;
+ settings = {
+ IPv6 = {
+ Enabled = true;
+ };
+ Settings = {
+ AutoConnect = true;
+ };
+ };
+ };
+ };
+}
diff --git a/features/system/services/hardware/networkmanager.nix b/features/system/services/hardware/networkmanager.nix
new file mode 100644
index 0000000..49cc7bc
--- /dev/null
+++ b/features/system/services/hardware/networkmanager.nix
@@ -0,0 +1,11 @@
+{ config, lib, ... }: let
+ cfg = config.features.services.hardware.networkmanager;
+in {
+ options.features.services.hardware.networkmanager.enable = lib.mkEnableOption "networkmanager";
+ config = lib.mkIf cfg.enable {
+ networking.networkmanager = {
+ enable = true;
+ };
+ systemd.services.NetworkManager-wait-online.enable = false;
+ };
+}
diff --git a/features/system/services/hardware/pipewire.nix b/features/system/services/hardware/pipewire.nix
new file mode 100644
index 0000000..f36a0e9
--- /dev/null
+++ b/features/system/services/hardware/pipewire.nix
@@ -0,0 +1,15 @@
+{ config, pkgs, lib, ... }: let
+ cfg = config.features.services.hardware.pipewire;
+in {
+ options.features.services.hardware.pipewire.enable = lib.mkEnableOption "pipewire";
+ config = lib.mkIf cfg.enable {
+ security.rtkit.enable = true;
+ environment.systemPackages = [ pkgs.git ]; # Fixes a weird error
+ services.pipewire = {
+ enable = true;
+ alsa.enable = true;
+ alsa.support32Bit = true;
+ pulse.enable = true;
+ };
+ };
+}