Compare commits
21 Commits
381d6c2795
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
| 0edd66d61a | |||
| 2f7ae02b36 | |||
| f7e26a9793 | |||
| 47cd19b701 | |||
| f0c2a38366 | |||
| b2b4e434fd | |||
| a442183047 | |||
| eb6019b131 | |||
| 423e136895 | |||
|
|
fe40f11559 | ||
| c45ec8d9cd | |||
|
|
f073bda700 | ||
|
|
af5ca69e02 | ||
| c22a16c4ea | |||
| 92d70ee2fc | |||
|
|
ebe65dc108 | ||
| 4a8274bd59 | |||
|
|
e7275b4c37 | ||
|
|
088c99e2cb | ||
| ec9f987c14 | |||
| 854bf14796 |
@@ -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;
|
||||
|
||||
qt = {
|
||||
enable = true;
|
||||
# style = "gtk2";
|
||||
platformTheme = "qt5ct";
|
||||
programs.zsh.enable = true;
|
||||
users = {
|
||||
users = {
|
||||
root = {
|
||||
openssh = {
|
||||
authorizedKeys = {
|
||||
keys = [
|
||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDwjTCq2GXRuqVXf1CeyntkOIFYNu0+tW1lurW8PNtK1 zastian00@gmail.com"
|
||||
];
|
||||
};
|
||||
|
||||
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 = "";
|
||||
};
|
||||
|
||||
# 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";
|
||||
};
|
||||
};
|
||||
|
||||
mrfluffy = {
|
||||
isNormalUser = true;
|
||||
shell = pkgs.zsh;
|
||||
createHome = true;
|
||||
extraGroups = [
|
||||
"wheel"
|
||||
"networkmanager"
|
||||
"video"
|
||||
"render"
|
||||
"docker"
|
||||
"libvirt"
|
||||
"input"
|
||||
"seat"
|
||||
"dialout"
|
||||
];
|
||||
packages = with pkgs; [ ];
|
||||
};
|
||||
|
||||
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"
|
||||
];
|
||||
|
||||
};
|
||||
##############################################################################
|
||||
# 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
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
{
|
||||
programs = {
|
||||
caelestia = {
|
||||
enable = true;
|
||||
enable = false;
|
||||
systemd = {
|
||||
enable = true; # if you prefer starting from your compositor
|
||||
target = "graphical-session.target";
|
||||
|
||||
26
dots/dankMeterialShell.nix
Normal file
26
dots/dankMeterialShell.nix
Normal 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
|
||||
#};
|
||||
};
|
||||
}
|
||||
@@ -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 @@
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -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" ])
|
||||
#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"
|
||||
# "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;
|
||||
|
||||
@@ -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 = [
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
|
||||
@@ -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" ];
|
||||
|
||||
@@ -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";
|
||||
|
||||
655
flake.lock
generated
655
flake.lock
generated
File diff suppressed because it is too large
Load Diff
27
flake.nix
27
flake.nix
@@ -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
|
||||
|
||||
@@ -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."/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 it’s 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 user’s 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" # don’t 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" # don’t 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."/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 it’s 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 user’s 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" # don’t 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" # don’t 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
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 = "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;
|
||||
}
|
||||
@@ -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
|
||||
@@ -195,8 +203,8 @@ in
|
||||
############################
|
||||
imv
|
||||
mpv
|
||||
upscaler
|
||||
youtube-music
|
||||
#upscaler
|
||||
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
|
||||
@@ -246,10 +256,14 @@ in
|
||||
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
|
||||
];
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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") {
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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" ]; })
|
||||
|
||||
@@ -23,7 +23,13 @@ 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;
|
||||
};
|
||||
|
||||
@@ -49,10 +55,5 @@ in
|
||||
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";
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
})
|
||||
];
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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,7 +192,8 @@
|
||||
description = "Service to launch Steam URLs via FIFO";
|
||||
wantedBy = [ "default.target" ];
|
||||
serviceConfig = {
|
||||
ExecStart = let
|
||||
ExecStart =
|
||||
let
|
||||
script = pkgs.writeShellScript "steam-run-url-service.sh" ''
|
||||
#!/usr/bin/env bash
|
||||
FIFO="/run/user/$(id --user)/steam-run-url.fifo"
|
||||
@@ -184,7 +210,8 @@
|
||||
fi
|
||||
done
|
||||
'';
|
||||
in "${script}";
|
||||
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 = ''
|
||||
|
||||
116
system/specialisation/main-system.nix
Normal file
116
system/specialisation/main-system.nix
Normal 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;
|
||||
};
|
||||
|
||||
}
|
||||
144
system/specialisation/steam.nix
Normal file
144
system/specialisation/steam.nix
Normal 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 it’s 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;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user