gay ming it works soooo goood but looks are bad will make clean
This commit is contained in:
@@ -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 it’s active
|
# This target already exists, we just ensure it’s 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)
|
||||||
|
|||||||
@@ -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 =
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -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
101
home/game.nix
Executable 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;
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user