summary refs log tree commit diff
path: root/nixos/modules/services/x11
diff options
context:
space:
mode:
authorJohannes Arnold <johannes.arnold@stud.uni-hannover.de>2022-02-05 00:50:11 +0100
committerJohannes Arnold <johannes.arnold@stud.uni-hannover.de>2022-02-08 20:52:02 +0100
commitd282f448ff74243ed1a1661c09ae27f010096cef (patch)
treef817903fc1c2e8501975d54eb98956468a0f663d /nixos/modules/services/x11
parentf80278219f00b38762847049f6d482898051c2ca (diff)
downloadnixpkgs-d282f448ff74243ed1a1661c09ae27f010096cef.tar
nixpkgs-d282f448ff74243ed1a1661c09ae27f010096cef.tar.gz
nixpkgs-d282f448ff74243ed1a1661c09ae27f010096cef.tar.bz2
nixpkgs-d282f448ff74243ed1a1661c09ae27f010096cef.tar.lz
nixpkgs-d282f448ff74243ed1a1661c09ae27f010096cef.tar.xz
nixpkgs-d282f448ff74243ed1a1661c09ae27f010096cef.tar.zst
nixpkgs-d282f448ff74243ed1a1661c09ae27f010096cef.zip
nixos/retroarch: add RetroArch as a desktop session
Diffstat (limited to 'nixos/modules/services/x11')
-rw-r--r--nixos/modules/services/x11/desktop-managers/default.nix2
-rw-r--r--nixos/modules/services/x11/desktop-managers/retroarch.nix40
2 files changed, 41 insertions, 1 deletions
diff --git a/nixos/modules/services/x11/desktop-managers/default.nix b/nixos/modules/services/x11/desktop-managers/default.nix
index 6ee5b0fc54f..8247a7e381c 100644
--- a/nixos/modules/services/x11/desktop-managers/default.nix
+++ b/nixos/modules/services/x11/desktop-managers/default.nix
@@ -19,7 +19,7 @@ in
   # E.g., if Plasma 5 is enabled, it supersedes xterm.
   imports = [
     ./none.nix ./xterm.nix ./xfce.nix ./plasma5.nix ./lumina.nix
-    ./lxqt.nix ./enlightenment.nix ./gnome.nix ./kodi.nix
+    ./lxqt.nix ./enlightenment.nix ./gnome.nix ./retroarch.nix ./kodi.nix
     ./mate.nix ./pantheon.nix ./surf-display.nix ./cde.nix
     ./cinnamon.nix
   ];
diff --git a/nixos/modules/services/x11/desktop-managers/retroarch.nix b/nixos/modules/services/x11/desktop-managers/retroarch.nix
new file mode 100644
index 00000000000..d471673d452
--- /dev/null
+++ b/nixos/modules/services/x11/desktop-managers/retroarch.nix
@@ -0,0 +1,40 @@
+{ config, lib, pkgs, ... }:
+
+with lib;
+
+let cfg = config.services.xserver.desktopManager.retroarch;
+
+in {
+  options.services.xserver.desktopManager.retroarch = {
+    enable = mkEnableOption "RetroArch";
+
+    package = mkOption {
+      type = types.package;
+      default = pkgs.retroarch;
+      defaultText = literalExpression "pkgs.retroarch";
+      example = literalExpression "pkgs.retroarch-full";
+      description = "RetroArch package to use.";
+    };
+
+    extraArgs = mkOption {
+      type = types.listOf types.str;
+      default = [ ];
+      example = [ "--verbose" "--host" ];
+      description = "Extra arguments to pass to RetroArch.";
+    };
+  };
+
+  config = mkIf cfg.enable {
+    services.xserver.desktopManager.session = [{
+      name = "RetroArch";
+      start = ''
+        ${cfg.package}/bin/retroarch -f ${escapeShellArgs cfg.extraArgs} &
+        waitPID=$!
+      '';
+    }];
+
+    environment.systemPackages = [ cfg.package ];
+  };
+
+  meta.maintainers = with maintainers; [ j0hax ];
+}