gay ming it works soooo goood but looks are bad will make clean

This commit is contained in:
2025-12-12 01:38:06 +00:00
parent ebe65dc108
commit 92d70ee2fc
4 changed files with 207 additions and 41 deletions

View File

@@ -29,6 +29,7 @@ in
./system/hardware.nix ./system/hardware.nix
./system/fonts.nix ./system/fonts.nix
inputs.home-manager.nixosModules.home-manager inputs.home-manager.nixosModules.home-manager
inputs.jovian.nixosModules.default
#inputs.niri.nixosModules.niri #inputs.niri.nixosModules.niri
]; ];
@@ -61,6 +62,7 @@ in
"docker" "docker"
"libvirt" "libvirt"
"input" "input"
"seat"
]; ];
packages = with pkgs; [ ]; packages = with pkgs; [ ];
}; };
@@ -77,25 +79,31 @@ in
"docker" "docker"
"libvirt" "libvirt"
"input" "input"
"seat"
]; ];
packages = with pkgs; [ ]; packages = with pkgs; [ ];
}; };
users.game = {
isNormalUser = true;
description = "Dedicated gaming user (auto-login in Steam specialisation)";
shell = pkgs.bash;
createHome = true;
password = ""; # no password
extraGroups = [
"wheel"
"video"
"render"
"input"
"seat"
"networkmanager"
];
home = "/home/game";
};
groups.libvirtd.members = [ groups.libvirtd.members = [
"mrfluffy" "mrfluffy"
"work" "work"
]; ];
}; };
# greetd + tuigreet
services.greetd = {
enable = true;
restart = true;
useTextGreeter = true;
settings.default_session = {
command = "${lib.getExe pkgs.tuigreet} --window-padding 1 --time --time-format '%R - %F' --remember --remember-session --asterisks";
user = "greeter";
};
};
############################################################################## ##############################################################################
# Home-Manager # Home-Manager
############################################################################## ##############################################################################
@@ -104,6 +112,7 @@ in
users = { users = {
mrfluffy = import ./home/mrfluffy.nix; mrfluffy = import ./home/mrfluffy.nix;
work = import ./home/work.nix; work = import ./home/work.nix;
game = import ./home/game.nix;
}; };
}; };
@@ -141,6 +150,21 @@ in
permittedInsecurePackages = [ ]; permittedInsecurePackages = [ ];
}; };
##############################################################################
# decky
##############################################################################
nixpkgs.overlays = [
inputs.jovian.overlays.default
];
jovian.decky-loader = {
enable = true;
user = "game"; # Run as your gaming user
stateDir = "/home/game/.local/share/decky"; # Store plugins/data in user's home (adjust if preferred)
# Optional: Add extra packages if needed for specific plugins
# extraPackages = with pkgs; [ some-package ];
# extraPythonPackages = ps: with ps; [ some-python-package ];
};
############################################################################## ##############################################################################
# State version # State version
############################################################################## ##############################################################################
@@ -149,36 +173,64 @@ in
specialisation = { specialisation = {
"01-steam" = { "01-steam" = {
configuration = { configuration = {
boot = {
kernelParams = lib.mkForce [ "ipv6e=1" "quiet" "splash"];
plymouth = {
enable = true;
themePackages = [ pkgs.adi1090x-plymouth-themes ];
theme = "abstract_ring_alt";
};
};
# ── HDMI-CEC: Turn on TV when Steam specialisation starts ───────────────────── # ── HDMI-CEC: Turn on TV when Steam specialisation starts ─────────────────────
services.udev.packages = [ pkgs.libcec ]; # ensures cec-utils is in PATH services.udev.packages = [ pkgs.libcec ]; # ensures cec-utils is in PATH
services.blueman.enable = true;
services.seatd.enable = true;
# A user service that runs once the graphical session (Steam/GameScope) is ready # A user service that runs once the graphical session (Steam/GameScope) is ready
systemd.user.services.cec-tv-on = { #systemd.user.services.cec-tv-on = {
description = "Turn on TV via HDMI-CEC when entering Steam specialisation"; # description = "Turn on TV via HDMI-CEC when entering Steam specialisation";
wantedBy = [ "graphical-session.target" ]; # wantedBy = [ "graphical-session.target" ];
after = [ "graphical-session.target" ]; # after = [ "graphical-session.target" ];
serviceConfig = { # serviceConfig = {
Type = "oneshot"; # Type = "oneshot";
RemainAfterExit = true; # RemainAfterExit = true;
ExecStart = toString ( # ExecStart = toString (
pkgs.writeShellScript "cec-tv-on.sh" '' # pkgs.writeShellScript "cec-tv-on.sh" ''
# Wait a moment for the HDMI link to settle # # Wait a moment for the HDMI link to settle
sleep 3 # sleep 3
# Turn on the TV and set it as active source (most TVs understand this) # # Turn on the TV and set it as active source (most TVs understand this)
${pkgs.libcec}/bin/cec-client -s -d 1 <<EOF # ${pkgs.libcec}/bin/cec-client -s -d 1 <<EOF
on 0 # on 0
as # as
EOF # EOF
# Alternative one-liner if the above somehow fails: # # Alternative one-liner if the above somehow fails:
# echo 'on 0' | ${pkgs.libcec}/bin/cec-client -s -d 1 # # echo 'on 0' | ${pkgs.libcec}/bin/cec-client -s -d 1
# echo 'as' | ${pkgs.libcec}/bin/cec-client -s -d 1 # # echo 'as' | ${pkgs.libcec}/bin/cec-client -s -d 1
'' # ''
); # );
# };
#};
# THIS is the important part direct boot into the Gamescope Steam session
services.greetd = {
enable = true;
restart = true;
settings = {
# Tell greetd to auto-start the official gamescope steam session immediately
default_session = {
command = "${pkgs.gamescope}/bin/gamescope --prefer-outpu HDMI-A-2 --hdr-enabled --steam --mangoapp -- steam -pipewire-dmabuf -gamepadui -steamos3 > /dev/null 2>&1";
user = "game";
};
}; };
}; };
# Auto-login the game user (no password prompt ever)
services.getty.autologinUser = "game";
# Make sure the user service starts automatically # Make sure the user service starts automatically
systemd.user.targets.graphical-session = { systemd.user.targets.graphical-session = {
# This target already exists, we just ensure its active # This target already exists, we just ensure its active
@@ -192,9 +244,10 @@ in
systemPackages = with pkgs; [ systemPackages = with pkgs; [
mangohud mangohud
gamemode gamemode
gamescope-wsi
]; ];
variables = { variables = {
LIBSEAT_BACKEND = "logind"; #LIBSEAT_BACKEND = "logind";
}; };
}; };
@@ -213,14 +266,10 @@ in
gamescope gamescope
mangohud mangohud
gamemode gamemode
gamescope-wsi
]; ];
gamescopeSession = { gamescopeSession = {
enable = true; enable = true;
args = [
"--prefer-output"
"HDMI-A-2"
"--hdr-enabled"
];
}; };
}; };
}; };
@@ -239,6 +288,17 @@ in
#inputs.niri.nixosModules.niri #inputs.niri.nixosModules.niri
]; ];
# greetd + tuigreet
services.greetd = {
enable = true;
restart = true;
useTextGreeter = true;
settings.default_session = {
command = "${lib.getExe pkgs.tuigreet} --window-padding 1 --time --time-format '%R - %F' --remember --remember-session --asterisks";
user = "greeter";
};
};
############################################################################## ##############################################################################
# Desktop / WM # Desktop / WM
############################################################################## ##############################################################################
@@ -266,7 +326,7 @@ in
# Hyprland # Hyprland
programs.hyprland = { programs.hyprland = {
enable = useHypr; enable = useHypr;
package = inputs.hyprland.packages.${pkgs.system}.hyprland; package = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.hyprland;
}; };
# X11 base (kept enabled for keymap + DM if needed) # X11 base (kept enabled for keymap + DM if needed)

View File

@@ -1,6 +1,6 @@
{ {
description = "Nixos config flake"; description = "Nixos config flake";
inputs = { inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
nix-index-database.url = "github:nix-community/nix-index-database"; nix-index-database.url = "github:nix-community/nix-index-database";
nix-index-database.inputs.nixpkgs.follows = "nixpkgs"; nix-index-database.inputs.nixpkgs.follows = "nixpkgs";
@@ -55,6 +55,11 @@ inputs = {
url = "github:vicinaehq/vicinae"; url = "github:vicinaehq/vicinae";
#inputs.nixpkgs.follows = "nixpkgs"; #inputs.nixpkgs.follows = "nixpkgs";
}; };
# ... your existing inputs ...
jovian = {
url = "github:Jovian-Experiments/Jovian-NixOS";
inputs.nixpkgs.follows = "nixpkgs";
};
}; };
outputs = outputs =
{ {

View File

@@ -76,7 +76,7 @@
fsType = "btrfs"; fsType = "btrfs";
}) })
]; ];
fileSystems."/home/mrfluffy/Games" = lib.mkMerge [ fileSystems."/home/game/Games" = lib.mkMerge [
(lib.mkIf (systemName == "pc") { (lib.mkIf (systemName == "pc") {
device = "/dev/disk/by-uuid/54188f21-d525-4681-a9d4-b798363eef17"; device = "/dev/disk/by-uuid/54188f21-d525-4681-a9d4-b798363eef17";
fsType = "ext4"; fsType = "ext4";

101
home/game.nix Executable file
View File

@@ -0,0 +1,101 @@
{
config,
pkgs,
inputs,
lib,
window_manager,
...
}:
let
in
{
imports = [
# Core theming & integrations
inputs.nix-colors.homeManagerModules.default
inputs.stylix.homeModules.stylix
inputs.nixcord.homeModules.nixcord
# inputs.niri.homeModules.niri
# Local modules
./sessionVars.nix
./stylix.nix
./homePkgs.nix
./services.nix
# Dots
../dots/foot.nix
../dots/zsh.nix
../dots/xdg.nix
../dots/hyprland.nix
../dots/caelestia.nix
];
# You can find color schemes at: https://github.com/tinted-theming/schemes
colorScheme = inputs.nix-colors.colorSchemes.hardcore;
stylix.base16Scheme.base00 = "141414";
# Home Manager needs a bit of information about you and the paths it should manage.
home.username = "game";
home.homeDirectory = "/home/game";
# This determines compatibility with a specific Home Manager release.
home.stateVersion = "23.11"; # Please read the comment before changing.
# Example GTK block (disabled)
# gtk = {
# enable = true;
# iconTheme = {
# name = "Dracula";
# # package = pkgs.dracula-icon-theme;
# };
# };
home.packages = with pkgs; [
############################
# Wayland / Desktop tools
############################
lswt
swaybg
wlr-randr
############################
# Experimental (inputs)
############################
# inputs.ladybird.packages."${pkgs.system}".ladybird
# ##########################
# Examples (disabled)
# ##########################
# pkgs.hello
# (pkgs.nerdfonts.override { fonts = [ "FantasqueSansMono" ]; })
# (pkgs.writeShellScriptBin "my-hello" ''
# echo "Hello, ${config.home.username}!"
# '')
];
# Dotfiles & static files managed by Home Manager
home.file = {
".config/nixpkgs/config.nix".text = ''
{ allowUnfree = true; }
'';
".config/doom".source = ../dots/doom;
# ".config/quickshell".source = ../dots/shell;
# ".config/kitty".source = ../../universal/dots/kitty;
# ".config/nvim".source = ../../universal/dots/nvim;
"Pictures/Wallpapers".source = ../assets/Wallpapers;
# ".screenrc".source = dotfiles/screenrc;
# ".gradle/gradle.properties".text = ''
# org.gradle.console=verbose
# org.gradle.daemon.idletimeout=3600000
# '';
};
# If you don't manage your shell with Home Manager, remember to source:
# ~/.nix-profile/etc/profile.d/hm-session-vars.sh
# ~/.local/state/nix/profiles/profile/etc/profile.d/hm-session-vars.sh
# /etc/profiles/per-user/mrfluffy/etc/profile.d/hm-session-vars.sh
# Let Home Manager install and manage itself.
programs.home-manager.enable = true;
}