Compare commits

..

6 Commits

Author SHA1 Message Date
a9772259f0 [i3] Setup brightness control with ddcutil 2025-11-19 19:41:50 -08:00
4f6d65316a Fixes for stable systems 2025-11-19 19:41:34 -08:00
0b8e3bf527 [steamos] Add virtual malitt-keyboard 2025-11-18 08:56:05 -08:00
d3c906134b [nix-deck] setup stuff 2025-11-18 08:55:49 -08:00
30b616dd93 [gaming] Always include emulators 2025-11-18 08:55:13 -08:00
c9252c42c2 [i3+sway] Only launch waybar in sway 2025-11-18 08:54:46 -08:00
10 changed files with 85 additions and 34 deletions

View File

@@ -48,8 +48,8 @@
nixosModules = [ nixosModules = [
./roles ./roles
] ++ [ ] ++ [
./roles/jovian-compat.nix
inputs.home-manager.nixosModules.home-manager inputs.home-manager.nixosModules.home-manager
inputs.jovian.nixosModules.jovian
{ {
nixpkgs.overlays = [ nixpkgs.overlays = [
(final: prev: { (final: prev: {

View File

@@ -87,8 +87,8 @@ let
"${shared_config.modifier}+r" = "mode resize"; "${shared_config.modifier}+r" = "mode resize";
"XF86MonBrightnessUp" = "exec brightnessctl s +5%"; "XF86MonBrightnessUp" = "exec ddcutil setvcp 10 + 5";
"XF86MonBrightnessDown" = "exec brightnessctl s 5%-"; "XF86MonBrightnessDown" = "exec ddcutil setvcp 10 - 5";
}; };
} cfg.extraSharedConfig; } cfg.extraSharedConfig;
in { in {
@@ -149,11 +149,21 @@ in {
[backlight] [backlight]
command=${pkgs.writeShellScript "i3blocks-backlight" '' command=${pkgs.writeShellScript "i3blocks-backlight" ''
if command -v brightnessctl &>/dev/null; then if command -v ddcutil &>/dev/null; then
brightnessctl g | awk -v max=$(brightnessctl m) '{printf " %.0f%%\n", ($1/max)*100}' # Handle mouse scroll events
case $BLOCK_BUTTON in
4) ddcutil setvcp 10 + 5 ;; # Scroll up - increase brightness
5) ddcutil setvcp 10 - 5 ;; # Scroll down - decrease brightness
esac
# Display current brightness
brightness=$(ddcutil getvcp 10 2>/dev/null | grep -oP 'current value =\s*\K\d+')
if [ -n "$brightness" ]; then
echo " $brightness%"
fi
fi fi
''} ''}
interval=1 interval=5
separator=true separator=true
[network] [network]
@@ -296,6 +306,13 @@ in {
bg = "${../../wallpapers/metroid-samus-returns-kz-3440x1440.jpg} fill"; bg = "${../../wallpapers/metroid-samus-returns-kz-3440x1440.jpg} fill";
}; };
}; };
startup = [
# Launch waybar status bar
{
command = "waybar";
always = false;
}
];
}; };
in { in {
enable = true; enable = true;
@@ -304,7 +321,7 @@ in {
programs.waybar = { programs.waybar = {
enable = true; enable = true;
systemd.enable = true; systemd.enable = false; # Don't auto-start via systemd - only launch in sway
settings = { settings = {
mainBar = { mainBar = {
layer = "top"; layer = "top";

View File

@@ -12,11 +12,10 @@
wayland = true; wayland = true;
gaming.enable = true; gaming.enable = true;
kde = true; kde = true;
sddm = true;
steamos = { steamos = {
enable = true; enable = true;
autoStart = false; autoStart = true;
desktopSession = "plasmawayland"; desktopSession = "plasma";
}; };
}; };
remote-build.builders = [{ remote-build.builders = [{

View File

@@ -19,7 +19,6 @@ with lib;
enable = true; enable = true;
gaming = { gaming = {
enable = true; enable = true;
emulation = true;
}; };
kde = true; kde = true;
sddm = true; sddm = true;

View File

@@ -11,7 +11,6 @@ with lib;
kde = mkOption { type = types.bool; default = false; description = "Enable KDE."; }; kde = mkOption { type = types.bool; default = false; description = "Enable KDE."; };
gaming = { gaming = {
enable = mkOption { type = types.bool; default = false; description = "Enable gaming support."; }; enable = mkOption { type = types.bool; default = false; description = "Enable gaming support."; };
emulation = mkOption { type = types.bool; default = false; description = "Enable emulation support."; };
}; };
sddm = mkOption { type = types.bool; default = false; description = "Enable SDDM greeter."; }; sddm = mkOption { type = types.bool; default = false; description = "Enable SDDM greeter."; };
}; };

View File

@@ -12,13 +12,8 @@ in
steam steam
lutris lutris
moonlight moonlight
];
# Possibly other gaming specific services or settings # Emulators
})
(mkIf (cfg.enable && cfg.gaming.emulation) {
environment.systemPackages = with pkgs; [
dolphin-emu dolphin-emu
dolphin-emu-primehack dolphin-emu-primehack
retroarch-full retroarch-full

View File

@@ -43,5 +43,9 @@ in
}; };
jovian.decky-loader.enable = cfg.steamos.enableDeckyLoader; jovian.decky-loader.enable = cfg.steamos.enableDeckyLoader;
environment.systemPackages = with pkgs; [
maliit-keyboard
];
}; };
} }

View File

@@ -19,8 +19,20 @@ in
polkit_gnome # GNOME polkit authentication agent (more stable with i3) polkit_gnome # GNOME polkit authentication agent (more stable with i3)
picom # Compositor for smooth rendering (important for Nvidia) picom # Compositor for smooth rendering (important for Nvidia)
networkmanagerapplet # NetworkManager system tray applet networkmanagerapplet # NetworkManager system tray applet
ddcutil # DDC/CI monitor control for brightness
]; ];
}; };
}; };
# Enable DDC/CI support for monitor brightness control
boot.kernelModules = [ "i2c-dev" ];
# Add ddcutil udev rules and user permissions
hardware.i2c.enable = true;
# Install ddcutil system-wide
environment.systemPackages = with pkgs; [
ddcutil
];
}; };
} }

View File

@@ -1,8 +1,9 @@
{ lib, config, ... }: { lib, config, ... }:
# Compatibility shim to provide services.logind.settings for NixOS 25.05 # Minimal Jovian compatibility layer for NixOS stable (25.05)
# This allows Jovian-NixOS to work with stable NixOS # Defines only the Jovian options used by roles/desktop/steamos.nix
# REMOVE THIS FILE when upgrading to NixOS 25.11 or later # No actual implementation - just option definitions to prevent evaluation errors
# REMOVE THIS FILE when all systems are on NixOS 25.11+ or unstable
with lib; with lib;
@@ -11,10 +12,32 @@ let
isCompatibleVersion = versionOlder nixosVersion "25.11"; isCompatibleVersion = versionOlder nixosVersion "25.11";
in in
{ {
options.services.logind.settings = mkOption { options.jovian = {
type = types.attrsOf (types.attrsOf types.anything); steam = {
default = {}; enable = mkEnableOption "Steam (jovian-compat stub)";
description = "systemd-logind configuration. See logind.conf(5) for available options.";
autoStart = mkOption {
type = types.bool;
default = false;
description = "Auto-start Steam (jovian-compat stub)";
};
user = mkOption {
type = types.str;
default = "user";
description = "Steam user (jovian-compat stub)";
};
desktopSession = mkOption {
type = types.nullOr types.str;
default = null;
description = "Desktop session (jovian-compat stub)";
};
};
decky-loader = {
enable = mkEnableOption "Decky Loader (jovian-compat stub)";
};
}; };
config = mkMerge [ config = mkMerge [
@@ -25,19 +48,17 @@ in
message = '' message = ''
The Jovian compatibility shim (roles/jovian-compat.nix) is only needed for NixOS 25.05 and earlier. The Jovian compatibility shim (roles/jovian-compat.nix) is only needed for NixOS 25.05 and earlier.
You are running NixOS ${nixosVersion}. You are running NixOS ${nixosVersion}.
Please remove 'roles/jovian-compat.nix' from your flake.nix imports. Please remove 'roles/jovian-compat.nix' from your flake.nix nixosModules list.
''; '';
} }
]; ];
} }
(mkIf (config.services.logind.settings != {}) { # No config implementation - these options do nothing on stable systems
# Convert the settings to extraConfig format for older NixOS # steamos role is only enabled on nix-deck which uses unstable anyway
services.logind.extraConfig = let (mkIf config.jovian.steam.enable {
mkSection = section: settings: warnings = [
"[${section}]\n" + "Jovian is enabled but you're using the compatibility stub. This won't work correctly. Use NixOS unstable for Jovian support."
(concatStringsSep "\n" (mapAttrsToList (k: v: "${k}=${toString v}") settings)); ];
in
concatStringsSep "\n\n" (mapAttrsToList mkSection config.services.logind.settings);
}) })
]; ];
} }

View File

@@ -91,6 +91,11 @@ in
users.groups.${cfg.builderUser} = {}; users.groups.${cfg.builderUser} = {};
# Ensure home directory has correct permissions
systemd.tmpfiles.rules = [
"d /var/lib/${cfg.builderUser} 0700 ${cfg.builderUser} ${cfg.builderUser} -"
];
# Allow builder user to perform builds # Allow builder user to perform builds
nix.settings.trusted-users = [ cfg.builderUser ]; nix.settings.trusted-users = [ cfg.builderUser ];