diff --git a/etcnixos/common.nix b/etcnixos/common.nix index cad4ab1..0417087 100644 --- a/etcnixos/common.nix +++ b/etcnixos/common.nix @@ -6,6 +6,7 @@ system, hostname, inputs, + niri-package, ... }: { @@ -33,6 +34,9 @@ services.kmscon.enable = true; + # Add niri to display manager session packages + services.displayManager.sessionPackages = [ niri-package ]; + # Gamescope configuration for Steam Deck-like experience programs = { gamescope = { @@ -45,26 +49,6 @@ }; }; - services.greetd = { - enable = true; - settings = { - default_session = { - command = "${lib.getExe pkgs.tuigreet} --sessions /etc/xdg/wayland-sessions/ --time"; - user = username; - }; - terminal.vt = lib.mkForce 2; - }; - }; - - environment.etc."xdg/wayland-sessions/niri-session.desktop".text = '' - [Desktop Entry] - Name=Niri Session - Comment=Niri Wayland compositor - Exec=niri-session - Type=Application - DesktopNames=niri - ''; - system.activationScripts = { # FIX: https://github.com/NixOS/nix/issues/2982 "profile-channel-dummy".text = '' @@ -97,6 +81,9 @@ ]; }; + # allow unfree packages for jovian-nixos + nixpkgs.config.allowUnfree = true; + # kernel options boot = { kernelPackages = pkgs.linuxPackages_latest; diff --git a/etcnixos/steam.nix b/etcnixos/steam.nix index ef43b97..2a893c9 100644 --- a/etcnixos/steam.nix +++ b/etcnixos/steam.nix @@ -25,26 +25,4 @@ goverlay yad ]; - - # Create steam session script - environment.etc."steam-session-greetd".source = pkgs.writeShellScript "steam-session-greetd" '' - export STEAM_RUNTIME=1 - export SDL_VIDEODRIVER=wayland - export QT_QPA_PLATFORM=wayland - export GDK_BACKEND=wayland - export XDG_CURRENT_DESKTOP=Steam - export XDG_SESSION_TYPE=wayland - exec ${pkgs.gamescope}/bin/gamescope --adaptive-sync --hdr-enabled --rt --steam -- ${pkgs.steam}/bin/steam -pipewire-dmabuf -tenfoot - ''; - - # Create system-wide session files - environment.etc."xdg/wayland-sessions/steam-session.desktop".text = '' - [Desktop Entry] - Name=Steam Session - Comment=Steam Deck-like gaming session with gamescope - Exec=/etc/steam-session-greetd - Type=Application - DesktopNames=steam - ''; - } diff --git a/etcnixos/system-mreow.nix b/etcnixos/system-mreow.nix index 834f5a9..bac09f7 100644 --- a/etcnixos/system-mreow.nix +++ b/etcnixos/system-mreow.nix @@ -34,4 +34,25 @@ # disable framework kernel module # https://github.com/NixOS/nixos-hardware/issues/1330 hardware.framework.enableKmod = false; + + # Greetd display manager + services.greetd = { + enable = true; + settings = { + default_session = { + command = "${lib.getExe pkgs.tuigreet} --sessions /etc/xdg/wayland-sessions/ --time"; + user = username; + }; + terminal.vt = lib.mkForce 2; + }; + }; + + environment.etc."xdg/wayland-sessions/niri-session.desktop".text = '' + [Desktop Entry] + Name=Niri Session + Comment=Niri Wayland compositor + Exec=niri-session + Type=Application + DesktopNames=niri + ''; } diff --git a/etcnixos/system-yarn.nix b/etcnixos/system-yarn.nix index b49d963..60b2f6c 100644 --- a/etcnixos/system-yarn.nix +++ b/etcnixos/system-yarn.nix @@ -18,6 +18,7 @@ inputs.nixos-hardware.nixosModules.common-cpu-amd-zenpower inputs.impermanence.nixosModules.impermanence inputs.disko.nixosModules.disko + inputs.jovian-nixos.nixosModules.default ]; fileSystems."/media/games" = { @@ -58,4 +59,17 @@ systemd.services.lactd.wantedBy = [ "multi-user.target" ]; systemd.services.lactd.serviceConfig.ExecStartPre = "${lib.getExe pkgs.bash} -c \"sleep 3s\""; + + jovian = { + devices.steamdeck.enable = false; + steam = { + enable = true; + autoStart = true; + desktopSession = "niri"; + user = username; + }; + }; + + # Disable gamescope from common.nix to avoid conflict with jovian-nixos + programs.gamescope.enable = lib.mkForce false; } diff --git a/flake.lock b/flake.lock index 3497c48..b6a192d 100644 --- a/flake.lock +++ b/flake.lock @@ -186,6 +186,27 @@ "type": "github" } }, + "jovian-nixos": { + "inputs": { + "nix-github-actions": "nix-github-actions", + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1763640802, + "narHash": "sha256-TAsO9p2cF/Wm6sYWPqvC/mBzMBzG119XLB6T0XwU2NU=", + "owner": "Jovian-Experiments", + "repo": "Jovian-NixOS", + "rev": "4b1c28efe3b31e00c427e651b398d8251dd29812", + "type": "github" + }, + "original": { + "owner": "Jovian-Experiments", + "repo": "Jovian-NixOS", + "type": "github" + } + }, "lanzaboote": { "inputs": { "crane": "crane", @@ -309,6 +330,28 @@ "type": "github" } }, + "nix-github-actions": { + "inputs": { + "nixpkgs": [ + "jovian-nixos", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1729697500, + "narHash": "sha256-VFTWrbzDlZyFHHb1AlKRiD/qqCJIripXKiCSFS8fAOY=", + "owner": "zhaofengli", + "repo": "nix-github-actions", + "rev": "e418aeb728b6aa5ca8c5c71974e7159c2df1d8cf", + "type": "github" + }, + "original": { + "owner": "zhaofengli", + "ref": "matrix-name", + "repo": "nix-github-actions", + "type": "github" + } + }, "nixos-hardware": { "locked": { "lastModified": 1762847253, @@ -371,6 +414,7 @@ "emacs-overlay": "emacs-overlay", "home-manager": "home-manager", "impermanence": "impermanence", + "jovian-nixos": "jovian-nixos", "lanzaboote": "lanzaboote", "niri": "niri", "nix-doom-emacs-unstraightened": "nix-doom-emacs-unstraightened", diff --git a/flake.nix b/flake.nix index 0e2264a..3af431d 100644 --- a/flake.nix +++ b/flake.nix @@ -60,6 +60,11 @@ url = "github:serokell/deploy-rs"; inputs.nixpkgs.follows = "nixpkgs"; }; + + jovian-nixos = { + url = "github:Jovian-Experiments/Jovian-NixOS"; + inputs.nixpkgs.follows = "nixpkgs"; + }; }; outputs = @@ -70,6 +75,7 @@ nixos-hardware, home-manager, deploy-rs, + jovian-nixos, ... }@inputs: let @@ -79,6 +85,7 @@ "mreow" "yarn" ]; + niri-package = inputs.niri.packages.${system}.niri-unstable; in { formatter.${system} = nixpkgs.legacyPackages.${system}.nixfmt-rfc-style; @@ -93,6 +100,7 @@ inputs username hostname + niri-package ; }; modules = [ @@ -103,7 +111,7 @@ # home-manager.useGlobalPkgs = true; home-manager.useUserPackages = true; home-manager.extraSpecialArgs = { - inherit inputs hostname username; + inherit inputs hostname username niri-package; homeDirectory = "/home/${username}"; stateVersion = config.system.stateVersion; }; diff --git a/home-manager/progs/niri.nix b/home-manager/progs/niri.nix index 46f29b7..9f1890f 100644 --- a/home-manager/progs/niri.nix +++ b/home-manager/progs/niri.nix @@ -3,6 +3,7 @@ pkgs, lib, inputs, + niri-package, ... }: let @@ -22,7 +23,7 @@ in ]; programs.niri = { - package = pkgs.niri-unstable; + package = niri-package; settings = { prefer-no-csd = true;