Compare commits

..

19 Commits

Author SHA1 Message Date
0edd66d61a Giving claude access diving in balls first 2026-01-15 16:48:40 +00:00
2f7ae02b36 flake.lock: Update
Flake lock file updates:

• Updated input 'caelestia-cli':
    'github:caelestia-dots/cli/55590bd9e4c24189c44c1ad1ec7b3b54538fcefb?narHash=sha256-sD6q%2BLrM6vd2i2BrQoowhGARa43zWeR8oPTjzlxq3RU%3D' (2026-01-04)
  → 'github:caelestia-dots/cli/55d75a117540e37263ac450ed7c40cc2212b5e3c?narHash=sha256-9aevqBizkmywn0buASzLCNOwY/Wm6tq9FpaPrRgZ/KQ%3D' (2026-01-07)
• Updated input 'caelestia-cli/nixpkgs':
    'github:nixos/nixpkgs/fb7944c166a3b630f177938e478f0378e64ce108?narHash=sha256-EgE0pxsrW9jp9YFMkHL9JMXxcqi/OoumPJYwf%2BOkucw%3D' (2026-01-02)
  → 'github:nixos/nixpkgs/9f0c42f8bc7151b8e7e5840fb3bd454ad850d8c5?narHash=sha256-UWYqmD7JFBEDBHWYcqE6s6c77pWdcU/i%2BbwD6XxMb8A%3D' (2026-01-05)
• Updated input 'dms':
    'github:AvengeMedia/DankMaterialShell/ab071e12aaf0c42b6e0921b94f96553c4a10bcbf?narHash=sha256-njG0q58Xnx69/V0KCTwBsI514sO/Eq1yF74%2B8hLDU1A%3D' (2026-01-05)
  → 'github:AvengeMedia/DankMaterialShell/3dd21382bad5d43604850e257cfd1b8d35e16fb9?narHash=sha256-4tLYqLiLZqI7xmhNBi5zyGkaAXZJNUtGuxWzA7NJf8A%3D' (2026-01-07)
• Updated input 'home-manager':
    'github:nix-community/home-manager/a65c04965c841eb01ba401f5162f12bc8d52014f?narHash=sha256-N0kK1JqxIjFl7hPAfhkW6C9AO7feYJUWLPyqJO2VuQQ%3D' (2026-01-05)
  → 'github:nix-community/home-manager/c068188a8e5c277f7bc8671557a7568864b57515?narHash=sha256-QICeGwbXfqtaOZmgh6BrSBB72drPuHO3pjuyh%2Bx8eIY%3D' (2026-01-07)
• Updated input 'hyprland':
    'github:hyprwm/Hyprland/9817553c664b0b7f6776671383a6368c74ee8dee?narHash=sha256-M5WVoXwlZpYcEKS23sEQKMzzdqItY/iEWoj3reIBfiE%3D' (2026-01-05)
  → 'github:hyprwm/Hyprland/918e2bb9be0e1d233f9394f1d569137788c43c01?narHash=sha256-BHBiQhlNl%2BLxvp/bBOOTWhxbXYMoVG4xiyv9DE/nuZ4%3D' (2026-01-07)
• Updated input 'hyprland-hyprsplit':
    'github:Duckonaut/split-monitor-workspaces/7b179721fcd272154d2917e9c4a7f9659c6104a2?narHash=sha256-FtitmvggxcZqCEKhYIN66td6JONenoTsuOFVS9pYi5E%3D' (2026-01-04)
  → 'github:Duckonaut/split-monitor-workspaces/764548c3aa22c9f4cb436ec7243d21795eb6ebec?narHash=sha256-yTuyde8TpBR3NhNnOcK4uOGukvMCwrH3otP8E04e9X0%3D' (2026-01-06)
• Updated input 'hyprland-plugins':
    'github:hyprwm/hyprland-plugins/0b356053fa4e6a6f5e857529654ff45eba2859d8?narHash=sha256-502sjmbTK/W8x6DUbJAyiBOABwV1q5Wb5caCMwd6BuI%3D' (2026-01-05)
  → 'github:hyprwm/hyprland-plugins/fef398ed5e4faf59bc43b915e46a75cfe8b16697?narHash=sha256-jObY8O7OI%2B91hoE137APsDxm0235/Yx%2BHhFIip187zM%3D' (2026-01-06)
• Updated input 'jovian':
    'github:Jovian-Experiments/Jovian-NixOS/efd4b22e6fdc6d7fb4e186ae333a4b74e03da440?narHash=sha256-2tL1mRb9uFJThUNfuDm/ehrnPvImL/QDtCxfn71IEz4%3D' (2025-12-30)
  → 'github:Jovian-Experiments/Jovian-NixOS/a81fad3f4a70fdaa779e74b7da2063fa2e358028?narHash=sha256-jXb2kBU6lO6Q6S9zoR/bhVLMjg2hM9EW8gWIwsmkj64%3D' (2026-01-07)
• Updated input 'nixcord':
    'github:kaylorben/nixcord/9748d874957aef2a3f44de2c3fdfe412c62a9063?narHash=sha256-pnfuAPzku7uqNt7Bc0zILNrvmeHd%2B1/iEN5caWJb8x4%3D' (2026-01-05)
  → 'github:kaylorben/nixcord/d9f83906a12678900b2b36c3bdf7329e8efaa0c0?narHash=sha256-uW5BgnDOn41rlKn1JxdN7CU4bbOgZf%2BaxEw8pBVP6RU%3D' (2026-01-07)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/3bd884a63dc53ecb0bf43422f4aa4f51d87a04e9?narHash=sha256-bGKKceW7Sr5HsuyDrdUCdx3/NkyvASdst86yx955CCE%3D' (2025-12-24)
  → 'github:nixos/nixpkgs/5912c1772a44e31bf1c63c0390b90501e5026886?narHash=sha256-Mj3d3PfwltLmukFal5i3fFt27L6NiKXdBezC1EBuZs4%3D' (2026-01-07)
• Updated input 'quickshell':
    'git+https://git.outfoxxed.me/outfoxxed/quickshell?ref=refs/heads/master&rev=41828c4180fb921df7992a5405f5ff05d2ac2fff' (2025-12-26)
  → 'git+https://git.outfoxxed.me/outfoxxed/quickshell?ref=refs/heads/master&rev=6742148cf4a8415a9c51fdeb11d8c3ea716c2e14' (2026-01-06)
• Updated input 'vicinae':
    'github:vicinaehq/vicinae/b79669006c4e49e32f2ae889c1294cd62c8071d5?narHash=sha256-L0A4daBtEuponvKr5YM4wn8btDku0Cs2Eu5b%2BEtTgSk%3D' (2026-01-05)
  → 'github:vicinaehq/vicinae/aab965dcf29529c5fab67b9c2fb5f8168f76fa1b?narHash=sha256-OPBgcM2ZzbVEUS6lwRpJo2JBfiRK8TmYVSmZImEW2gA%3D' (2026-01-07)
• Updated input 'zen-browser':
    'github:0xc000022070/zen-browser-flake/350c729b261e6f5529460140a5f0943dd4c5e156?narHash=sha256-6s8hL3YX9zAq2T7qvcwwzaEVwc9MEYbW%2BC2LcAAQfbk%3D' (2026-01-04)
  → 'github:0xc000022070/zen-browser-flake/8b2302d8c10369c9135552cc892da75cff5ddb03?narHash=sha256-5ysv8EuVAgDoYmNuXEUNf7vBzdeRaFxeIlIndv5HMvs%3D' (2026-01-07)
2026-01-07 19:53:11 +00:00
f7e26a9793 pain and suffering 2026-01-06 19:56:41 +00:00
47cd19b701 flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/93d0f90099f5f3b9295aae90ccbce4e2d14e1160?narHash=sha256-eDrvOyIt/2GRUyZtKd7pJOLAOdQh8IaSzEdEzsSxYSU%3D' (2025-12-31)
  → 'github:nixos/nixpkgs/fb7944c166a3b630f177938e478f0378e64ce108?narHash=sha256-EgE0pxsrW9jp9YFMkHL9JMXxcqi/OoumPJYwf%2BOkucw%3D' (2026-01-02)
2026-01-04 16:05:55 +00:00
f0c2a38366 dickplays 2025-12-17 22:42:37 +00:00
b2b4e434fd temu fix 2025-12-17 21:37:02 +00:00
a442183047 shfjdshf 2025-12-17 20:46:37 +00:00
eb6019b131 better shell integration 2025-12-17 17:10:25 +00:00
423e136895 theme stuff 2025-12-17 13:00:21 +00:00
zastian-dev
fe40f11559 testing sone shite 2025-12-15 18:06:05 +00:00
c45ec8d9cd cad my dude 2025-12-15 13:53:40 +00:00
zastian-dev
f073bda700 Fuck minor spelling mistake 2025-12-12 12:39:45 +00:00
zastian-dev
af5ca69e02 clean up the house a bit 2025-12-12 12:21:22 +00:00
c22a16c4ea can you now stop making noice nix please stop complaining 2025-12-12 01:38:45 +00:00
92d70ee2fc gay ming it works soooo goood but looks are bad will make clean 2025-12-12 01:38:06 +00:00
zastian-dev
ebe65dc108 stuff IDK 2025-12-11 14:48:22 +00:00
4a8274bd59 setting up the cumsole 2025-12-11 12:14:43 +00:00
zastian-dev
e7275b4c37 reee 2025-12-10 16:37:00 +00:00
zastian-dev
088c99e2cb wgnord shit 2025-12-10 13:52:34 +00:00
24 changed files with 1103 additions and 816 deletions

View File

@@ -11,29 +11,16 @@
...
}:
let
oreo = pkgs.callPackage ./personalPKGS/oreo.nix { };
# Window manager toggles
wmAll = window_manager == "all";
useRiver = window_manager == "river" || wmAll;
useNiri = window_manager == "niri" || wmAll;
useHypr = window_manager == "hyprland" || wmAll;
in
{
##############################################################################
# Imports
##############################################################################
imports = [
./hardware-configuration.nix
./system/hardware.nix
./system/boot.nix
./system/network.nix
./system/inputMethods.nix
./system/services.nix
./system/hardware.nix
./system/fonts.nix
./system/nixOSPkgs.nix
inputs.home-manager.nixosModules.home-manager
inputs.jovian.nixosModules.default
#inputs.niri.nixosModules.niri
];
@@ -50,77 +37,89 @@ in
};
##############################################################################
# Desktop / WM
# Users
##############################################################################
programs.river-classic.enable = useRiver;
programs.zsh.enable = true;
users = {
users = {
root = {
openssh = {
authorizedKeys = {
keys = [
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDwjTCq2GXRuqVXf1CeyntkOIFYNu0+tW1lurW8PNtK1 zastian00@gmail.com"
];
};
};
};
qt = {
enable = true;
# style = "gtk2";
platformTheme = "qt5ct";
};
mrfluffy = {
isNormalUser = true;
shell = pkgs.zsh;
createHome = true;
extraGroups = [
"wheel"
"networkmanager"
"video"
"render"
"docker"
"libvirt"
"input"
"seat"
"dialout"
];
packages = with pkgs; [ ];
};
xdg.menus.enable = true;
# Work around Dolphin menu oddities: force Plasma menu definition
environment.etc."/xdg/menus/applications.menu".text =
builtins.readFile "${pkgs.kdePackages.plasma-workspace}/etc/xdg/menus/plasma-applications.menu";
# Niri (via overlay)
#nixpkgs.overlays = [ inputs.niri.overlays.niri ];
#programs.niri = {
# enable = useNiri;
# package = pkgs.niri-stable; # Only needed if not provided by the overlay
#};
# Hyprland
programs.hyprland = {
enable = useHypr;
package = inputs.hyprland.packages.${pkgs.system}.hyprland;
};
# X11 base (kept enabled for keymap + DM if needed)
services.xserver = {
enable = true;
xkb = {
layout = "ie";
variant = "";
work = {
isNormalUser = true;
shell = pkgs.zsh;
createHome = true;
extraGroups = [
"wheel"
"networkmanager"
"video"
"render"
"docker"
"libvirt"
"input"
"seat"
"dialout"
];
packages = with pkgs; [ ];
};
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"
"dialout"
];
home = "/home/game";
};
};
groups.libvirtd.members = [
"mrfluffy"
"work"
];
# displayManager.lightdm = {
# enable = true;
# greeters.gtk = {
# enable = true;
# theme.package = pkgs.amarena-theme;
# theme.name = "amarena";
# cursorTheme.package = oreo.override { colors = [ "oreo_spark_pink_cursors" ]; };
# cursorTheme.name = "oreo_spark_pink_cursors";
# extraConfig = "background=${./assets/Wallpapers/138.png}";
# };
# };
};
# 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";
};
};
##############################################################################
# Security / PolicyKit / PAM
# Home-Manager
##############################################################################
security = {
rtkit.enable = true;
polkit.enable = true;
pam.services = {
swaylock = { };
greetd.enableGnomeKeyring = true;
greetd.kwallet.enable = true;
home-manager = {
extraSpecialArgs = { inherit inputs window_manager systemName; };
users = {
mrfluffy = import ./home/mrfluffy.nix;
work = import ./home/work.nix;
game = import ./home/game.nix;
};
};
@@ -140,7 +139,8 @@ in
# AMD_VULKAN_ICD = "RADV";
# VK_ICD_FILENAMES = "/run/opengl-driver/share/vulkan/icd.d/radeon_icd.x86_64.json";
# XDG_CURRENT_DESKTOP = "hyprland";
# QT_QPA_PLATFORMTHEME = "qt6ct";
#QT_QPA_PLATFORMTHEME = "gtk3";
#QT_QPA_PLATFORMTHEME_QT6 = "gtk3";
};
systemPackages = with pkgs; [
@@ -150,70 +150,6 @@ in
];
};
##############################################################################
# Users
##############################################################################
users = {
users.mrfluffy = {
isNormalUser = true;
shell = pkgs.zsh;
createHome = true;
extraGroups = [
"wheel"
"networkmanager"
"video"
"render"
"docker"
"libvirt"
"input"
];
packages = with pkgs; [ ];
};
users.work = {
isNormalUser = true;
shell = pkgs.zsh;
createHome = true;
extraGroups = [
"wheel"
"networkmanager"
"video"
"render"
"docker"
"libvirt"
"input"
];
packages = with pkgs; [ ];
};
groups.libvirtd.members = [
"mrfluffy"
"work"
];
};
##############################################################################
# Home-Manager
##############################################################################
home-manager = {
extraSpecialArgs = { inherit inputs window_manager systemName; };
users = {
mrfluffy = import ./home/mrfluffy.nix;
work = import ./home/work.nix;
};
};
##############################################################################
# Virtualisation
##############################################################################
virtualisation = {
docker = {
enable = true;
storageDriver = lib.mkIf (systemName == "pc") "btrfs";
};
libvirtd.enable = true;
};
##############################################################################
# Nixpkgs policy
##############################################################################
@@ -222,8 +158,48 @@ in
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
##############################################################################
system.stateVersion = "24.11"; # Did you read the comment?
specialisation = {
"01-steam" = {
configuration = {
imports = [
./system/specialisation/steam.nix
];
};
};
"00-main-system" = {
configuration = {
#boot.loader.systemd-boot.sortKey = lib.mkDefault "00000000000-main";
##############################################################################
# Imports
##############################################################################
imports = [
./system/services.nix
./system/nixOSPkgs.nix
./system/specialisation/main-system.nix
#inputs.niri.nixosModules.niri
];
};
};
};
}

View File

@@ -8,7 +8,7 @@
{
programs = {
caelestia = {
enable = true;
enable = false;
systemd = {
enable = true; # if you prefer starting from your compositor
target = "graphical-session.target";

View File

@@ -0,0 +1,26 @@
{
config,
lib,
pkgs,
inputs,
...
}:
{
imports = [
inputs.dms.homeModules.dank-material-shell
];
programs.dank-material-shell = {
enable = true;
systemd = {
enable = true; # if you prefer starting from your compositor
};
#settings = {
# theme = "dark";
# dynamicTheming = true;
# # Add any other settings here
#};
};
}

View File

@@ -10,6 +10,8 @@
settings = {
main = {
pad = "5x5";
font = "${config.stylix.fonts.monospace.name}:size=${toString config.stylix.fonts.sizes.terminal}";
include = "/home/${config.home.username}/.config/foot/dank-colors.ini";
};
colors = {
alpha = lib.mkForce (0.9);
@@ -17,4 +19,3 @@
};
};
}

View File

@@ -8,18 +8,19 @@
...
}:
let
caelestia-cli = inputs.caelestia-cli.packages.${pkgs.system}.caelestia-cli;
hypr-package = inputs.hyprland.packages.${pkgs.system}.hyprland;
hypr-portal = inputs.hyprland.packages.${pkgs.system}.xdg-desktop-portal-hyprland;
hypr-split = inputs.hyprland-hyprsplit.packages.${pkgs.system}.split-monitor-workspaces;
#hyprscrolling = inputs.hyprland-plugins.packages.${pkgs.system}.hyprscrolling;
hypr-package = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.hyprland;
hypr-portal =
inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.xdg-desktop-portal-hyprland;
hypr-split =
inputs.hyprland-hyprsplit.packages.${pkgs.stdenv.hostPlatform.system}.split-monitor-workspaces;
#hyprscrolling = inputs.hyprland-plugins.packages.${pkgs.stdenv.hostPlatform.system}.hyprscrolling;
mod = "Alt";
terminal = "footclient";
fileManager = "dolphin";
fileManager = "thunar";
#runner = "${lib.getExe caelestia-cli} shell drawers toggle launcher";
runner = "vicinae toggle";
# runner = "anyrun";
browser = "zen-beta";
browser = "firefox";
editor = "emacsclient -c";
in
{
@@ -37,51 +38,53 @@ in
##########################################################################
# Monitors
##########################################################################
source = [
"./dms/outputs.conf"
#"./dms/cursor.conf"
"./dms/colors.conf"
];
# See https://wiki.hyprland.org/Configuring/Monitors/
# monitor = lib.mkMerge [
# (lib.mkIf (systemName == "laptop") [ "eDP-1,1920x1080@59.99700,0x0,1" ])
# (lib.mkIf (systemName == "pc") [
# "DP-2,2560x1440@144,0x0,1"
# "DP-1,2560x1440@239.97,2569x0,1"
# #"DP-1,2560x1440@144,1920x0,1,bitdepth,10,cm,hdr"
# ])
# ];
#monitor = lib.mkMerge [
# #(lib.mkIf (systemName == "laptop") [ "eDP-1,1920x1080@59.99700,0x0,1" ])
# (lib.mkIf (systemName == "pc") [
# "HDMI-A-2, disable"
# ])
#];
monitorv2 =
[ ]
++ lib.optional (systemName == "laptop") {
output = "eDP-1";
mode = "1920x1080@59.99700";
scale = 1;
position = "0x0";
}
++ lib.optional (systemName == "pc") {
output = "DP-1";
mode = "2560x1440@239.97";
position = "2560x0"; # "1440x750"; # Corrected from 2569x0 for seamless alignment
scale = 1;
#supports_wide_color = 1;
bitdepth = 10;
cm = "hdr";
supports_hdr = true;
supports_wide_color = true;
sdr_min_luminance = 0; # For true black on OLED
sdr_max_luminance = 275; # Matches typical SDR brightness
min_luminance = 0;
max_luminance = 1000; # HDR peak
max_avg_luminance = 400; # Average frame luminance
sdrbrightness = 1.2; # Slight boost to avoid washed out look
sdrsaturation = 1.0;
#transform = 2; # Uncomment if needed
}
++ lib.optional (systemName == "pc") {
output = "DP-2";
mode = "2560x1440@144";
scale = 1;
position = "0x0";
transform = 0;
};
#monitorv2 =
# [ ]
# ++ lib.optional (systemName == "laptop") {
# output = "eDP-1";
# mode = "1920x1080@59.99700";
# scale = 1;
# position = "0x0";
# }
# ++ lib.optional (systemName == "pc") {
# output = "DP-1";
# mode = "2560x1440@239.97";
# position = "2560x0"; # "1440x750"; # Corrected from 2569x0 for seamless alignment
# scale = 1;
# #supports_wide_color = 1;
# bitdepth = 10;
# cm = "wide";
# supports_hdr = true;
# supports_wide_color = true;
# sdr_min_luminance = 0; # For true black on OLED
# sdr_max_luminance = 275; # Matches typical SDR brightness
# min_luminance = 0;
# max_luminance = 1000; # HDR peak
# max_avg_luminance = 400; # Average frame luminance
# sdrbrightness = 1.2; # Slight boost to avoid washed out look
# sdrsaturation = 1.0;
# }
# ++ lib.optional (systemName == "pc") {
# output = "DP-2";
# mode = "2560x1440@144";
# scale = 1;
# position = "0x0";
# transform = 0;
# };
##########################################################################
# Autostart
@@ -92,7 +95,9 @@ in
exec-once = [
# "waybar"
# "quickshell"
"${pkgs.polkit_gnome}/libexec/polkit-gnome-authentication-agent-1"
#"${pkgs.polkit_gnome}/libexec/polkit-gnome-authentication-agent-1"
"${pkgs.kdePackages.polkit-kde-agent-1}/libexec/polkit-kde-authentication-agent-1"
"${pkgs.kdePackages.kwallet-pam}/libexec/pam_kwallet_init"
"fcitx5 -d"
"foot -s"
"systemctl --user import-environment DBUS_SESSION_BUS_ADDRESS WAYLAND_DISPLAY XDG_SESSION_TYPE XDG_CURRENT_DESKTOP XDG_SESSION_DESKTOP QT_QPA_PLATFORMTHEME GTK_THEME"
@@ -160,8 +165,8 @@ in
# https://wiki.hyprland.org/Configuring/Variables/#decoration
decoration = {
rounding = 10;
rounding_power = 2;
rounding = 0;
rounding_power = 0;
active_opacity = 1.0;
inactive_opacity = 1.0;
@@ -227,8 +232,8 @@ in
# See https://wiki.hyprland.org/Configuring/Master-Layout/ for more
master = {
new_status = "master";
mfact = 0.5;
new_on_top = true;
mfact = 0.5;
new_on_top = true;
};
##########################################################################
@@ -294,7 +299,8 @@ in
"${mod}, V, togglefloating,"
"${mod}, T, fullscreen"
# ",Print, exec, grim -g \"$(slurp)\" - | swappy -f -"
",Print, exec, ${lib.getExe caelestia-cli} screenshot -r -f"
",Print, exec, dms screenshot"
"${mod}, f1, exec, dms ipc call keybinds toggle hyprland"
# Dwindle
"${mod}, P, pseudo, "
@@ -375,8 +381,8 @@ in
# ",XF86MonBrightnessDown, exec, light -U 5"
# Brightness
",XF86MonBrightnessUp, global, caelestia:brightnessUp"
",XF86MonBrightnessDown, global, caelestia:brightnessDown"
",XF86MonBrightnessUp, global, dms ipc call brightness increment 5"
",XF86MonBrightnessDown, global, dms ipc call brightness decrement 5"
];
bindl = [

View File

@@ -10,12 +10,12 @@
enable = true;
discord = {
enable = false;
package = pkgs.vencord;
#package = pkgs.vencord;
};
vesktop = {
enable = true;
package = pkgs.vesktop;
useSystemVencord = false;
#package = pkgs.vesktop;
#useSystemVencord = false;
};
config = {
plugins = {
@@ -42,9 +42,6 @@
biggerStreamPreview = {
enable = true;
};
clearURLs = {
enable = true;
};
copyFileContents = {
enable = true;
};

View File

@@ -26,7 +26,7 @@
extraPortals = with pkgs; [
xdg-desktop-portal-wlr
xdg-desktop-portal-gtk
inputs.hyprland.packages.${pkgs.system}.xdg-desktop-portal-hyprland
inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.xdg-desktop-portal-hyprland
kdePackages.xdg-desktop-portal-kde
];
};
@@ -38,7 +38,7 @@
defaultApplications =
let
browser = [ "zen-beta.desktop" ];
browser = [ "firefox.desktop" ];
fileManager = [ "pcmanfm.desktop" ];
editor = [ "emacs.desktop" ];
player = [ "mpv.desktop" ];

View File

@@ -31,7 +31,7 @@
GNUPGHOME = "$XDG_DATA_HOME/gnupg";
GOPATH = "$XDG_DATA_HOME/go";
GRADLE_USER_HOME = "$XDG_DATA_HOME/gradle";
IPYTHONDIR = "$XDG_CONFIG_HOMEipython";
IPYTHONDIR = "$XDG_CONFIG_HOME/ipython";
JUPYTER_CONFIG_DIR = "$XDG_CONFIG_HOME/jupyter";
LESSHISTFILE = "$XDG_CACHE_HOME/less/history";
NUGET_PACKAGES = "$XDG_CACHE_HOME/NuGetPackages";
@@ -44,9 +44,9 @@
};
shellAliases = {
nix-switch = "sudo nixos-rebuild switch";
nix-upgrade = "sudo nixos-rebuild switch --upgrade";
nix-edit = "sudo vim /etc/nixos/configuration.nix";
ns = "nh os switch --specialisation 00-main-system";
nu = "(cd ~/nixos-dots && nix flake update --commit-lock-file) && echo 'flake.lock updated'";
ne = "emacsclient -c ~/nixos-dots/configuration.nix";
ls = "exa -lag --icons";
upload = "~/.config/script/upload.sh";

697
flake.lock generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,6 @@
{
description = "Nixos config flake";
inputs = {
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
nix-index-database.url = "github:nix-community/nix-index-database";
nix-index-database.inputs.nixpkgs.follows = "nixpkgs";
@@ -22,6 +22,14 @@ inputs = {
inputs.nixpkgs.follows = "nixpkgs";
};
#niri.url = "github:sodiboo/niri-flake";
dgop = {
url = "github:AvengeMedia/dgop";
inputs.nixpkgs.follows = "nixpkgs";
};
dms = {
url = "github:AvengeMedia/DankMaterialShell";
inputs.nixpkgs.follows = "nixpkgs";
};
caelestia.url = "github:caelestia-dots/shell";
caelestia-cli.url = "github:caelestia-dots/cli";
quickshell = {
@@ -51,14 +59,15 @@ inputs = {
url = "github:Duckonaut/split-monitor-workspaces";
inputs.hyprland.follows = "hyprland";
};
hyprlauncher = {
url = "github:hyprwm/hyprlauncher";
inputs.nixpkgs.follows = "nixpkgs";
};
vicinae = {
url = "github:vicinaehq/vicinae";
#inputs.nixpkgs.follows = "nixpkgs";
};
# ... your existing inputs ...
jovian = {
url = "github:Jovian-Experiments/Jovian-NixOS";
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs =
{
@@ -68,7 +77,13 @@ inputs = {
}@inputs:
let
system = "x86_64-linux";
pkgs = nixpkgs.legacyPackages.${system};
#pkgs = nixpkgs.legacyPackages.${system};
pkgs = import nixpkgs {
system = "x86_64-linux"; # or your system
config = {
allowUnfree = true;
};
};
#Avalable options are ["niri" "river" "hyprland" "all"]
window_manager = "hyprland";
in

View File

@@ -35,9 +35,14 @@
boot.initrd.kernelModules = [ ];
boot.kernelModules =
[ ]
++ (lib.optionals (systemName == "pc") [ "kvm-amd" ])
++ (lib.optionals (systemName == "pc") [ "kvm-amd" "btusb"])
++ (lib.optionals (systemName == "laptop") [ "kvm-intel" ]);
boot.extraModulePackages = [ ];
boot.kernelParams = [
# Most common working combination in 2024/2025
"btusb.enable_autosuspend=0"
"btusb.reset=1"
];
fileSystems."/" = lib.mkMerge [
(lib.mkIf (systemName == "pc") {
@@ -71,29 +76,36 @@
fsType = "btrfs";
})
];
fileSystems."/home/game/Games" = lib.mkMerge [
(lib.mkIf (systemName == "pc") {
device = "/dev/disk/by-uuid/54188f21-d525-4681-a9d4-b798363eef17";
fsType = "ext4";
})
];
fileSystems."/server" = lib.mkIf (systemName == "pc") { # or remove the mkIf if you want it on both
device = "//192.168.1.8/mrfluffy"; # adjust the share name if its not the home share
fsType = "cifs";
options = let
# Separate credentials from the Nix store (very important for security)
credFile = "/etc/nixos/smb-credentials-mrfluffy";
in [
# Basic recommended options
"credentials=${credFile}"
"gid=users" # make files belong to the "users" group (or your preferred group)
"uid=1000" # replace with your users UID, or use "uid=${config.users.users.yourname.uid}"
"file_mode=0664"
"dir_mode=0775"
"nofail" # ← this makes the mount OPTIONAL (boot continues if unreachable)
"noauto" # dont mount automatically at boot (optional, combine with x-systemd.automount)
"x-systemd.automount" # creates a systemd automount unit → mounts on first access
"x-systemd.mount-timeout=15" # dont wait forever
"vers=3.0" # force SMB3 if the server supports it (recommended)
# "iocharset=utf8" # usually not needed with modern servers
# "cache=loose" # improves performance for some workloads
];
};
#fileSystems."/server" = lib.mkIf (systemName == "pc") { # or remove the mkIf if you want it on both
# device = "//192.168.1.8/mrfluffy"; # adjust the share name if its not the home share
# fsType = "cifs";
# options = let
# # Separate credentials from the Nix store (very important for security)
# credFile = "/etc/nixos/smb-credentials-mrfluffy";
# in [
# # Basic recommended options
# "credentials=${credFile}"
# "gid=users" # make files belong to the "users" group (or your preferred group)
# "uid=1000" # replace with your users UID, or use "uid=${config.users.users.yourname.uid}"
# "file_mode=0664"
# "dir_mode=0775"
# "nofail" # ← this makes the mount OPTIONAL (boot continues if unreachable)
# "noauto" # dont mount automatically at boot (optional, combine with x-systemd.automount)
# "x-systemd.automount" # creates a systemd automount unit → mounts on first access
# "x-systemd.mount-timeout=15" # dont wait forever
# "vers=3.0" # force SMB3 if the server supports it (recommended)
# # "iocharset=utf8" # usually not needed with modern servers
# # "cache=loose" # improves performance for some workloads
# ];
#};
swapDevices =
[ ]

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 = "Reversal-black-dark";
package = pkgs.reversal-icon-theme.override { allColorVariants = true; };
};
};
home.packages = with pkgs; [
############################
# Wayland / Desktop tools
############################
lswt
swaybg
wlr-randr
############################
# Experimental (inputs)
############################
# inputs.ladybird.packages."${pkgs.stdenv.hostPlatform.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;
}

View File

@@ -51,6 +51,7 @@ in
profiles.default = {
extensions = with pkgs.vscode-extensions; [
platformio.platformio-vscode-ide
ms-vscode.cpptools
];
# Optional: keep Code from trying to self-update
@@ -64,13 +65,17 @@ in
# enableUpdateCheck = false;
# enableExtensionUpdateCheck = false;
};
};
};
services.vicinae = {
enable = true; # default: false
autoStart = true; # default: true
useLayerShell = false;
systemd = {
enable = true;
environment = {
USE_LAYER_SHELL = 1;
};
};
#package = # specify package to use here. Can be omitted.
# Installing (vicinae) extensions declaratively
#settings = {
@@ -86,7 +91,7 @@ in
# };
#};
#extensions = [
# (inputs.vicinae.mkVicinaeExtension.${pkgs.system} {
# (inputs.vicinae.mkVicinaeExtension.${pkgs.stdenv.hostPlatform.system} {
# inherit pkgs;
# name = "extension-name";
# src = pkgs.fetchFromGitHub {
@@ -108,10 +113,12 @@ in
nixpkgs = {
config = {
allowUnfree = true;
android_sdk.accept_license = true;
permittedInsecurePackages = [
"freeimage-unstable-2021-11-01"
"qtwebengine-5.15.19"
];
rocmSupport = true;
};
};
@@ -175,6 +182,7 @@ in
brave
firefox
ladybird
wgnord
############################
# Communication & Sharing
@@ -196,7 +204,7 @@ in
imv
mpv
#upscaler
youtube-music
pear-desktop
libsixel
############################
@@ -208,16 +216,18 @@ in
rustc
rustup
zed-editor
android-studio-full
claude-code
# Language tooling from inputs
#inputs.qs-qml.packages.${pkgs.system}.qml-ts-mode
#inputs.qs-qml.packages.${pkgs.system}.tree-sitter-qmljs
#inputs.qs-qml.packages.${pkgs.stdenv.hostPlatform.system}.qml-ts-mode
#inputs.qs-qml.packages.${pkgs.stdenv.hostPlatform.system}.tree-sitter-qmljs
############################
# Game Dev / Engines
# Game Dev / Engines / Creative
############################
blender-hip
blender
godot_4
freecad
############################
# Emulation
@@ -239,17 +249,21 @@ in
gamemode
goverlay
(pkgs.heroic.override {
extraPkgs = pkgs: [ pkgs.gamescope ]; # pulls in the real package
extraPkgs = pkgs: [ pkgs.gamescope ]; # pulls in the real package
})
prismlauncher
protonup-qt
wineWowPackages.stable
mangayomi
rink
protontricks
abaddon
############################
# KDE / File Management
############################
kdePackages.qt6ct
kdePackages.baloo # new
kdePackages.baloo-widgets # new
kdePackages.dolphin
@@ -268,16 +282,19 @@ in
hicolor-icon-theme
qt6.qtsvg
adw-gtk3
pywalfox-native
############################
# Experimental (inputs)
############################
#inputs.ladybird.packages."${pkgs.system}".ladybird
inputs.hyprlauncher.packages.${pkgs.system}.default
#inputs.ladybird.packages."${pkgs.stdenv.hostPlatform.system}".ladybird
#inputs.hyprlauncher.packages.${pkgs.stdenv.hostPlatform.system}.default
############################
# Blockchain (inputs)
############################
#inputs.caelestia-cli.packages.${pkgs.system}.caelestia-cli
#inputs.caelestia.packages.${pkgs.system}.caelestia-shell
#inputs.caelestia-cli.packages.${pkgs.stdenv.hostPlatform.system}.caelestia-cli
#inputs.caelestia.packages.${pkgs.stdenv.hostPlatform.system}.caelestia-shell
];
}

View File

@@ -34,6 +34,7 @@ in
../dots/hyprland.nix
../dots/hyprpaper.nix
../dots/caelestia.nix
../dots/dankMeterialShell.nix
];
# You can find color schemes at: https://github.com/tinted-theming/schemes
@@ -48,13 +49,25 @@ in
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;
# };
# };
gtk = {
enable = true;
gtk3 = {
theme = {
name = "adw-gtk3";
package = pkgs.adw-gtk3;
};
};
#gtk4 = {
# theme = {
# name = "adw-gtk3";
# package = pkgs.adw-gtk3;
# };
#};
iconTheme = {
name = "Reversal-black-dark";
package = pkgs.reversal-icon-theme.override { allColorVariants = true; };
};
};
home.packages = with pkgs; [
############################
@@ -67,7 +80,7 @@ in
############################
# Experimental (inputs)
############################
# inputs.ladybird.packages."${pkgs.system}".ladybird
# inputs.ladybird.packages."${pkgs.stdenv.hostPlatform.system}".ladybird
# ##########################
# Examples (disabled)

View File

@@ -7,7 +7,7 @@
...
}:
let
#quickshellPackage = inputs.caelestia.packages.${pkgs.system}.caelestia-shell;
#quickshellPackage = inputs.caelestia.packages.${pkgs.stdenv.hostPlatform.system}.caelestia-shell;
in
{
#systemd.user.services.quickshell = lib.mkIf (window_manager == "hyprland") {

View File

@@ -21,37 +21,37 @@ in
font-packages.enable = true;
# fontconfig.enable = true;
gtk = {
enable = true;
flatpakSupport.enable = true;
};
kde.enable = true;
#gtk = {
# enable = true;
# flatpakSupport.enable = true;
#};
#kde.enable = true;
qt.enable = true;
vscode.enable = true;
#qt.enable = true;
#vscode.enable = true;
lazygit.enable = true;
foot.enable = true;
#foot.enable = true;
river.enable = true;
hyprland.enable = true;
#hyprland.enable = true;
waybar.enable = true;
nixcord.enable = true;
zen-browser = {
enable = true;
profileNames = [ "default" ];
};
firefox = {
enable = true;
profileNames = [ "default" ];
};
#zen-browser = {
# enable = true;
# profileNames = [ "default" ];
#};
#firefox = {
# enable = true;
# profileNames = [ "default" ];
#};
};
iconTheme = {
enable = true;
package = lib.mkForce (pkgs.reversal-icon-theme.override { allColorVariants = true; });
light = "Reversal-black";
dark = "Reversal-black-dark";
};
#iconTheme = {
# enable = true;
# #package = lib.mkForce (pkgs.reversal-icon-theme.override { allColorVariants = true; });
# light = "Reversal-black";
# dark = "Reversal-black-dark";
#};
polarity = "dark";
image = ../assets/Wallpapers/001.jpg;

View File

@@ -34,6 +34,8 @@ in
../dots/hyprland.nix
../dots/hyprpaper.nix
../dots/caelestia.nix
../dots/dankMeterialShell.nix
];
# You can find color schemes at: https://github.com/tinted-theming/schemes
@@ -48,13 +50,13 @@ in
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;
# };
# };
gtk = {
enable = true;
iconTheme = {
name = "Reversal-black-dark";
package = pkgs.reversal-icon-theme.override { allColorVariants = true; };
};
};
home.packages = with pkgs; [
############################
@@ -67,7 +69,6 @@ in
############################
# Browsers
############################
brave
############################
# work stuff
@@ -76,7 +77,7 @@ in
# swaynotificationcenter
# inputs.ladybird.packages."${pkgs.system}".ladybird
# inputs.ladybird.packages."${pkgs.stdenv.hostPlatform.system}".ladybird
# pkgs.hello
# (pkgs.nerdfonts.override { fonts = [ "FantasqueSansMono" ]; })

View File

@@ -8,22 +8,28 @@
let
isLaptop = systemName == "laptop";
isPc = systemName == "pc";
isPc = systemName == "pc";
initrdBaseModules = [ "btusb" ];
initrdLPModules = [ "kvm" ]; # for laptop & pc
initrdLPModules = [ "kvm" ]; # for laptop & pc
kernelBaseModules = [ "v4l2loopback" ];
kernelBaseParams = [ ];
kernelLPParams = [ "ipv6e=1" ]; # for laptop & pc
kernelLaptopOnly = [ "i915.force_probe=46a6" ];
kernelPcOnly = [ "video=2560x1440x32" ];
kernelBaseParams = [ ];
kernelLPParams = [ "ipv6e=1" ]; # for laptop & pc
kernelLaptopOnly = [ "i915.force_probe=46a6" ];
kernelPcOnly = [ "video=2560x1440x32" ];
in
{
boot = {
loader = {
systemd-boot.enable = true;
systemd-boot = {
enable = true;
extraInstallCommands = ''
${lib.getExe pkgs.gnused} -i 's/default .*/default *-specialisation-00-main-system.conf/' /boot/loader/loader.conf
'';
#sortKey = "z-normal";
};
efi.canTouchEfiVariables = true;
};
@@ -33,7 +39,7 @@ in
];
kernelPackages = pkgs.linuxPackages_latest;
kernelModules = kernelBaseModules;
kernelModules = kernelBaseModules;
extraModulePackages = [
pkgs.linuxPackages_latest.v4l2loopback
@@ -42,17 +48,12 @@ in
kernelParams = lib.mkMerge [
(lib.mkIf (isLaptop || isPc) kernelLPParams)
(lib.mkIf isLaptop kernelLaptopOnly)
(lib.mkIf isPc kernelPcOnly)
(lib.mkIf isPc kernelPcOnly)
];
extraModprobeConfig = ''
options v4l2loopback devices=2 video_nr=1,0 card_label="OBS Cam","phone cam" exclusive_caps=1,1
'';
plymouth = {
enable = false;
themePackages = [ pkgs.plymouth-matrix-theme ];
theme = "matrix";
};
};
}

View File

@@ -33,17 +33,17 @@ in
enable = true;
enable32Bit = true;
extraPackages = with pkgs; [
rocmPackages.rocm-core
rocmPackages.rocminfo
rocmPackages.rocm-runtime
rocmPackages.clr.icd
rocmPackages.rocm-smi
rocmPackages.clr
#rocmPackages.hipblas
rocmPackages.rocblas
rocmPackages.rocsolver
rocmPackages.rocm-comgr
rocmPackages.rocsparse
#rocmPackages.rocm-core
#rocmPackages.rocminfo
#rocmPackages.rocm-runtime
#rocmPackages.clr.icd
#rocmPackages.rocm-smi
#rocmPackages.clr
##rocmPackages.hipblas
#rocmPackages.rocblas
#rocmPackages.rocsolver
#rocmPackages.rocm-comgr
#rocmPackages.rocsparse
# amdvlk
# driversi686Linux.amdvlk
# mesa

View File

@@ -1,37 +1,26 @@
{ config, lib, pkgs, systemName, ... }:
{
console.keyMap = "ie";
# Set console keymap based on systemName
console.keyMap = if systemName == "laptop" then "ie" else "us";
i18n = lib.mkMerge [
(lib.mkIf (systemName == "laptop") {
defaultLocale = "en_IE.UTF-8";
extraLocaleSettings = {
LC_ADDRESS = "en_IE.UTF-8";
LC_IDENTIFICATION = "en_IE.UTF-8";
LC_MEASUREMENT = "en_IE.UTF-8";
LC_MONETARY = "en_IE.UTF-8";
LC_NAME = "en_IE.UTF-8";
LC_NUMERIC = "en_IE.UTF-8";
LC_PAPER = "en_IE.UTF-8";
LC_TELEPHONE = "en_IE.UTF-8";
LC_TIME = "en_IE.UTF-8";
};
})
# Locale settings
i18n.defaultLocale =
if systemName == "laptop"
then "en_IE.UTF-8"
else "en_US.UTF-8";
(lib.mkIf (systemName == "pc") {
defaultLocale = "en_US.UTF-8";
extraLocaleSettings = {
LC_ADDRESS = "en_US.UTF-8";
LC_IDENTIFICATION = "en_US.UTF-8";
LC_MEASUREMENT = "en_US.UTF-8";
LC_MONETARY = "en_US.UTF-8";
LC_NAME = "en_US.UTF-8";
LC_NUMERIC = "en_US.UTF-8";
LC_PAPER = "en_US.UTF-8";
LC_TELEPHONE = "en_US.UTF-8";
LC_TIME = "en_US.UTF-8";
};
})
];
i18n.extraLocaleSettings = let
locale = if systemName == "laptop" then "en_IE.UTF-8" else "en_US.UTF-8";
in {
LC_ADDRESS = locale;
LC_IDENTIFICATION = locale;
LC_MEASUREMENT = locale;
LC_MONETARY = locale;
LC_NAME = locale;
LC_NUMERIC = locale;
LC_PAPER = locale;
LC_TELEPHONE = locale;
LC_TIME = locale;
};
}

View File

@@ -70,6 +70,7 @@ in
# Core programs
############################
programs = {
dconf.enable = true;
appimage = {
enable = true;
@@ -84,7 +85,7 @@ in
};
gamescope = {
enable = true;
capSysNice = true;
capSysNice = false;
};
nix-index-database = {
@@ -111,7 +112,6 @@ in
};
virt-manager.enable = true;
zsh.enable = true;
corectrl.enable = true;
opengamepadui = {
@@ -124,13 +124,14 @@ in
remotePlay.openFirewall = true;
dedicatedServer.openFirewall = true;
extraCompatPackages = with pkgs; [ gamescope mangohud gamemode ];
gamescopeSession.enable = true;
gamescopeSession.enable = false;
};
# Dynamic linker for foreign binaries
nix-ld = {
enable = true;
libraries = with pkgs; [
gcc15.cc.lib
# add libraries here if needed
# alsa-lib
# libGL
@@ -144,9 +145,18 @@ in
# NetworkManager applet
nm-applet = {
enable = true;
enable = false;
indicator = false;
};
thunar = {
enable = true;
plugins = with pkgs; [
thunar-archive-plugin
thunar-volman
];
};
xfconf.enable = true;
};
############################
@@ -171,8 +181,8 @@ in
# --- Nix tooling ---
nil
nixfmt-rfc-style
inputs.nix-alien.packages.${pkgs.system}.nix-alien
nixfmt
inputs.nix-alien.packages.${pkgs.stdenv.hostPlatform.system}.nix-alien
# --- Wayland / Desktop ---
foot
@@ -194,7 +204,7 @@ in
# --- Development toolchains ---
cmake
gcc
gcc15
gnumake
jdk11
ladspaPlugins

View File

@@ -1,4 +1,10 @@
{ config, lib, pkgs, systemName, ... }:
{
config,
lib,
pkgs,
systemName,
...
}:
{
###############################################
@@ -54,13 +60,32 @@
"92-low-latency" = {
"context.properties" = {
"default.clock.rate" = 96000;
"default.clock.allowed-rates" = [ 44100 48000 96000 ];
"default.clock.allowed-rates" = [
44100
48000
96000
];
};
};
};
})
];
###############################################
# nice shit
###############################################
services.ananicy = {
enable = true;
package = pkgs.ananicy-cpp;
rulesProvider = pkgs.ananicy-cpp;
extraRules = [
{
"name" = "gamescope";
"nice" = -20;
}
];
};
services.blueman.enable = true;
###############################################
@@ -111,7 +136,7 @@
# Sunshine (only on PC)
services.sunshine = lib.mkIf (systemName == "pc") {
enable = true;
enable = false;
settings = {
sunshine_name = "nixos";
port = 47989;
@@ -145,16 +170,16 @@
# Ollama (only on PC)
services.ollama = lib.mkIf (systemName == "pc") {
enable = true;
package = pkgs.ollama-rocm;
port = 11434;
host = "0.0.0.0";
acceleration = "rocm";
rocmOverrideGfx = "11.0.0";
environmentVariables = {
OLLAMA_DEBUG = "1";
OLLAMA_MMAP = "0";
OLLAMA_NUM_CTX = "40000";
OLLAMA_NUM_GPU = "20";
OLLAMA_FLASH_ATTENTION="true";
OLLAMA_FLASH_ATTENTION = "true";
# HSA_OVERRIDE_GFX_VERSION = "11.0.0";
OLLAMA_KV_CACHE_TYPE = "f16";
};
@@ -167,24 +192,26 @@
description = "Service to launch Steam URLs via FIFO";
wantedBy = [ "default.target" ];
serviceConfig = {
ExecStart = let
script = pkgs.writeShellScript "steam-run-url-service.sh" ''
#!/usr/bin/env bash
FIFO="/run/user/$(id --user)/steam-run-url.fifo"
if [ ! -p "$FIFO" ]; then
mkfifo "$FIFO"
fi
while true; do
if read line <"$FIFO"; then
steam_env=();
if [ "$XDG_SESSION_DESKTOP" = "sway" ] || [ "$XDG_SESSION_DESKTOP" = "Hyprland" ] || [ "$DESKTOP_SESSION" = "sway" ] || [ "$DESKTOP_SESSION" = "Hyprland" ]; then
steam_env+=("QT_QPA_PLATFORM=wayland");
fi
steam "$line"
ExecStart =
let
script = pkgs.writeShellScript "steam-run-url-service.sh" ''
#!/usr/bin/env bash
FIFO="/run/user/$(id --user)/steam-run-url.fifo"
if [ ! -p "$FIFO" ]; then
mkfifo "$FIFO"
fi
done
'';
in "${script}";
while true; do
if read line <"$FIFO"; then
steam_env=();
if [ "$XDG_SESSION_DESKTOP" = "sway" ] || [ "$XDG_SESSION_DESKTOP" = "Hyprland" ] || [ "$DESKTOP_SESSION" = "sway" ] || [ "$DESKTOP_SESSION" = "Hyprland" ]; then
steam_env+=("QT_QPA_PLATFORM=wayland");
fi
steam "$line"
fi
done
'';
in
"${script}";
Restart = "always";
};
path = [ pkgs.steam ];
@@ -216,7 +243,7 @@
pkgs.platformio-core
pkgs.platformio
pkgs.openocd
pkgs.brave
#pkgs.brave
];
# services.udev.extraRules = ''

View File

@@ -0,0 +1,116 @@
{
config,
lib,
pkgs,
window_manager,
systemName,
inputs,
...
}:
let
oreo = pkgs.callPackage ./personalPKGS/oreo.nix { };
# Window manager toggles
wmAll = window_manager == "all";
useRiver = window_manager == "river" || wmAll;
useNiri = window_manager == "niri" || wmAll;
useHypr = window_manager == "hyprland" || wmAll;
in
{
# 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";
};
};
#services.displayManager.dms-greeter = {
# enable = true;
# compositor.name = "hyprland"; # Or "hyprland" or "sway"
# configHome = "${config.users.users.mrfluffy.home}";
#};
#services.displayManager.cosmic-greeter.enable = true;
##############################################################################
# Desktop / WM
##############################################################################
programs.river-classic.enable = useRiver;
qt = {
enable = true;
platformTheme = "qt5ct";
};
xdg.menus.enable = true;
# Work around Dolphin menu oddities: force Plasma menu definition
environment.etc."/xdg/menus/applications.menu".text =
builtins.readFile "${pkgs.kdePackages.plasma-workspace}/etc/xdg/menus/plasma-applications.menu";
# Niri (via overlay)
#nixpkgs.overlays = [ inputs.niri.overlays.niri ];
#programs.niri = {
# enable = useNiri;
# package = pkgs.niri-stable; # Only needed if not provided by the overlay
#};
# Hyprland
programs.hyprland = {
enable = useHypr;
package = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.hyprland;
};
#services.desktopManager.cosmic = {
# enable = true;
#};
# X11 base (kept enabled for keymap + DM if needed)
services.xserver = {
enable = true;
xkb = {
layout = "ie";
variant = "";
};
# displayManager.lightdm = {
# enable = true;
# greeters.gtk = {
# enable = true;
# theme.package = pkgs.amarena-theme;
# theme.name = "amarena";
# cursorTheme.package = oreo.override { colors = [ "oreo_spark_pink_cursors" ]; };
# cursorTheme.name = "oreo_spark_pink_cursors";
# extraConfig = "background=${./assets/Wallpapers/138.png}";
# };
# };
};
##############################################################################
# Security / PolicyKit / PAM
##############################################################################
security = {
rtkit.enable = true;
polkit.enable = true;
pam.services = {
swaylock = { };
greetd.enableGnomeKeyring = true;
greetd.kwallet.enable = true;
};
};
##############################################################################
# Virtualisation
##############################################################################
virtualisation = {
docker = {
enable = true;
storageDriver = lib.mkIf (systemName == "pc") "btrfs";
};
libvirtd.enable = true;
};
}

View File

@@ -0,0 +1,144 @@
{
config,
lib,
pkgs,
...
}:
{
boot = {
kernelModules = lib.mkForce [
"cec"
];
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 ─────────────────────
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
systemd.services.cec-tv-control = {
description = "Control TV via HDMI-CEC (turn on early, turn off on shutdown)";
wantedBy = [ "multi-user.target" ];
# Run very early: after modules load and local filesystems are available,
# but before Plymouth boot splash quits and before the display manager
after = [
"systemd-modules-load.service"
"local-fs.target"
"systemd-udev-settle.service"
];
before = [
"plymouth-quit-wait.service"
"greetd.service"
];
# Ensure the /dev/cec* device exists (udev settles early)
requires = [ "systemd-udev-settle.service" ];
serviceConfig = {
Type = "oneshot";
RemainAfterExit = true;
# Turn TV on during boot
ExecStart = toString (
pkgs.writeShellScript "cec-tv-on.sh" ''
sleep 3 # Give CEC time to initialize
${pkgs.libcec}/bin/cec-client -s -d 1 <<EOF
on 0
EOF
sleep 2
${pkgs.libcec}/bin/cec-client -s -d 1 <<EOF
as
EOF
''
);
# Turn TV off on shutdown/reboot (ExecStop runs when the service stops)
ExecStop = toString (
pkgs.writeShellScript "cec-tv-off.sh" ''
${pkgs.libcec}/bin/cec-client -s -d 1 <<EOF
standby 0
EOF
''
);
};
};
# 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
# HDMI-A-2
default_session = {
command = "${pkgs.gamescope}/bin/gamescope --prefer-output 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
systemd.user.targets.graphical-session = {
# This target already exists, we just ensure its active
unitConfig = {
RefuseManualStart = false;
RefuseManualStop = false;
};
};
environment = {
systemPackages = with pkgs; [
mangohud
gamemode
gamescope-wsi
];
variables = {
#LIBSEAT_BACKEND = "logind";
};
};
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 ];
};
programs = {
gamescope = {
enable = true;
capSysNice = true;
};
steam = {
enable = true;
remotePlay.openFirewall = true;
dedicatedServer.openFirewall = true;
extraCompatPackages = with pkgs; [
gamescope
mangohud
gamemode
gamescope-wsi
];
gamescopeSession = {
enable = true;
};
};
};
}