Compare commits
65 Commits
00a79a16fc
...
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 | |||
|
|
381d6c2795 | ||
|
|
29a540706c | ||
| 68dcfeef3d | |||
| af0d2db342 | |||
|
|
914212ce30 | ||
| d33d191613 | |||
|
|
c48cce4a4a | ||
| e55659e082 | |||
|
|
4ffc8d20b6 | ||
| cfa793c41a | |||
|
|
9337ee3385 | ||
|
|
d197e054dd | ||
|
|
d04259ac3d | ||
|
|
b9fb4b9515 | ||
| cfa57e9a3f | |||
|
|
f5c7879447 | ||
|
|
935257bc4b | ||
| cdb912796e | |||
|
|
3839a0e292 | ||
|
|
59cb67267c | ||
|
|
e73179e113 | ||
|
|
dbf42a7482 | ||
|
|
1736701831 | ||
|
|
6d10cd93a9 | ||
|
|
1ceccb3993 | ||
|
|
0c57087584 | ||
|
|
b1384a3898 | ||
|
|
9738b3a61e | ||
|
|
388d5f63cc | ||
|
|
8414845ce5 | ||
|
|
5d1691811a | ||
|
|
62e143d3a1 | ||
|
|
0208d78969 | ||
|
|
cfd848d610 | ||
|
|
14e37841c1 | ||
|
|
a7b80b43a9 | ||
|
|
59482884c5 | ||
|
|
9645a29026 | ||
|
|
e888dc33e8 | ||
|
|
d4397e5298 | ||
|
|
8df64cd43c | ||
|
|
010864f906 | ||
|
|
d81ba65c92 | ||
|
|
4418e3bb2b |
Binary file not shown.
|
Before Width: | Height: | Size: 1.5 MiB After Width: | Height: | Size: 704 KiB |
BIN
assets/Wallpapers/142.png
Normal file
BIN
assets/Wallpapers/142.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.4 MiB |
@@ -1,6 +1,5 @@
|
||||
# Edit this configuration file to define what should be installed on
|
||||
# your system. Help is available in the configuration.nix(5) man page
|
||||
# and in the NixOS manual (accessible by running ‘nixos-help’).
|
||||
# your system. Help is available in configuration.nix(5) and via `nixos-help`.
|
||||
|
||||
{
|
||||
config,
|
||||
@@ -12,197 +11,195 @@
|
||||
...
|
||||
}:
|
||||
|
||||
let
|
||||
oreo = pkgs.callPackage ./personalPKGS/oreo.nix { };
|
||||
in
|
||||
|
||||
{
|
||||
imports = [
|
||||
# Include the results of the hardware scan.
|
||||
./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.niri.nixosModules.niri
|
||||
inputs.jovian.nixosModules.default
|
||||
#inputs.niri.nixosModules.niri
|
||||
];
|
||||
# niri settings
|
||||
nix = {
|
||||
settings = {
|
||||
experimental-features = [
|
||||
"nix-command"
|
||||
"flakes"
|
||||
];
|
||||
build-dir = "/var/tmp";
|
||||
auto-optimise-store = true;
|
||||
|
||||
##############################################################################
|
||||
# Nix settings
|
||||
##############################################################################
|
||||
nix.settings = {
|
||||
experimental-features = [
|
||||
"nix-command"
|
||||
"flakes"
|
||||
];
|
||||
build-dir = "/nix/var/nix/builds";
|
||||
auto-optimise-store = true;
|
||||
};
|
||||
|
||||
##############################################################################
|
||||
# Users
|
||||
##############################################################################
|
||||
programs.zsh.enable = true;
|
||||
users = {
|
||||
users = {
|
||||
root = {
|
||||
openssh = {
|
||||
authorizedKeys = {
|
||||
keys = [
|
||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDwjTCq2GXRuqVXf1CeyntkOIFYNu0+tW1lurW8PNtK1 zastian00@gmail.com"
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
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"
|
||||
];
|
||||
|
||||
};
|
||||
##############################################################################
|
||||
# Home-Manager
|
||||
##############################################################################
|
||||
home-manager = {
|
||||
extraSpecialArgs = { inherit inputs window_manager systemName; };
|
||||
users = {
|
||||
mrfluffy = import ./home/mrfluffy.nix;
|
||||
work = import ./home/work.nix;
|
||||
game = import ./home/game.nix;
|
||||
};
|
||||
};
|
||||
|
||||
# Set your time zone.
|
||||
#time.timeZone = "Europe/Dublin";
|
||||
#programs.river.enable = true;
|
||||
#programs.niri.enable = true;
|
||||
#programs.niri.package = pkgs.niri-stable;
|
||||
#nixpkgs.overlays = [ inputs.niri.overlays.niri ];
|
||||
#programs.hyprland.enable = true;
|
||||
programs.river.enable = window_manager == "river" || window_manager == "all";
|
||||
qt.enable = true;
|
||||
#qt.style = "gtk2";
|
||||
qt.platformTheme = "qt5ct";
|
||||
|
||||
nixpkgs.overlays = [ inputs.niri.overlays.niri ];
|
||||
programs.niri = {
|
||||
enable = window_manager == "niri" || window_manager == "all";
|
||||
package = pkgs.niri-stable; # Only needed if not provided by the overlay
|
||||
};
|
||||
|
||||
programs.hyprland.enable = window_manager == "hyprland" || window_manager == "all";
|
||||
# Configure keymap in X11
|
||||
services.xserver = {
|
||||
xkb = {
|
||||
layout = "ie";
|
||||
variant = "";
|
||||
##############################################################################
|
||||
# Environment
|
||||
##############################################################################
|
||||
environment = {
|
||||
sessionVariables = {
|
||||
ZDOTDIR = "$HOME/.config/zsh";
|
||||
};
|
||||
enable = true;
|
||||
#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}";
|
||||
# };
|
||||
#};
|
||||
pathsToLink = [ "/share/zsh" ];
|
||||
variables = {
|
||||
# VAAPI and VDPAU config for accelerated video.
|
||||
# See https://wiki.archlinux.org/index.php/Hardware_video_acceleration
|
||||
VDPAU_DRIVER = "radeonsi";
|
||||
LIBVA_DRIVER_NAME = "radeonsi";
|
||||
# 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 = "gtk3";
|
||||
#QT_QPA_PLATFORMTHEME_QT6 = "gtk3";
|
||||
};
|
||||
|
||||
systemPackages = with pkgs; [
|
||||
vim
|
||||
wget
|
||||
neovim
|
||||
];
|
||||
};
|
||||
services.greetd = {
|
||||
|
||||
##############################################################################
|
||||
# Nixpkgs policy
|
||||
##############################################################################
|
||||
nixpkgs.config = {
|
||||
allowUnfree = true;
|
||||
permittedInsecurePackages = [ ];
|
||||
};
|
||||
|
||||
##############################################################################
|
||||
# decky
|
||||
##############################################################################
|
||||
nixpkgs.overlays = [
|
||||
inputs.jovian.overlays.default
|
||||
];
|
||||
jovian.decky-loader = {
|
||||
enable = true;
|
||||
restart = true;
|
||||
settings = {
|
||||
default_session = {
|
||||
command = "${lib.getExe pkgs.greetd.tuigreet} --window-padding 1 --time --time-format '%R - %F' --remember --remember-session --asterisks";
|
||||
user = "greeter";
|
||||
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
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
security.rtkit.enable = true;
|
||||
security.polkit = {
|
||||
enable = true;
|
||||
#package = pkgs.polkit_gnome;
|
||||
};
|
||||
environment.sessionVariables = {
|
||||
ZDOTDIR = "$HOME/.config/zsh";
|
||||
};
|
||||
environment.pathsToLink = [ "/share/zsh" ];
|
||||
environment.variables = {
|
||||
# VAAPI and VDPAU config for accelerated video.
|
||||
# See https://wiki.archlinux.org/index.php/Hardware_video_acceleration
|
||||
VDPAU_DRIVER = "radeonsi";
|
||||
LIBVA_DRIVER_NAME = "radeonsi";
|
||||
#XDG_CURRENT_DESKTOP = "hyprland";
|
||||
#QT_QPA_PLATFORMTHEME = "qt6ct";
|
||||
};
|
||||
# Define a user account. Don't forget to set a password with ‘passwd’.
|
||||
users.users.mrfluffy = {
|
||||
isNormalUser = true;
|
||||
shell = pkgs.zsh;
|
||||
createHome = true;
|
||||
extraGroups = [
|
||||
"wheel"
|
||||
"networkmanager"
|
||||
"video"
|
||||
"render"
|
||||
"docker"
|
||||
"libvirt"
|
||||
"input"
|
||||
]; # Enable ‘sudo’ for the user.
|
||||
packages = with pkgs; [
|
||||
|
||||
];
|
||||
};
|
||||
users.users.work = {
|
||||
isNormalUser = true;
|
||||
shell = pkgs.zsh;
|
||||
createHome = true;
|
||||
extraGroups = [
|
||||
"wheel"
|
||||
"networkmanager"
|
||||
"video"
|
||||
"render"
|
||||
"docker"
|
||||
"libvirt"
|
||||
"input"
|
||||
]; # Enable ‘sudo’ for the user.
|
||||
packages = with pkgs; [
|
||||
|
||||
];
|
||||
};
|
||||
users.groups.libvirtd.members = [
|
||||
"mrfluffy"
|
||||
"work"
|
||||
];
|
||||
|
||||
home-manager = {
|
||||
# also pass inputs to home-manager modules
|
||||
extraSpecialArgs = {
|
||||
inherit inputs window_manager systemName;
|
||||
};
|
||||
users = {
|
||||
"mrfluffy" = import ./home/mrfluffy.nix;
|
||||
|
||||
"work" = import ./home/work.nix;
|
||||
};
|
||||
};
|
||||
|
||||
virtualisation.docker = {
|
||||
enable = true;
|
||||
storageDriver = lib.mkIf (systemName == "pc") "btrfs";
|
||||
};
|
||||
virtualisation.libvirtd.enable = true;
|
||||
|
||||
# Allow unfree packages
|
||||
nixpkgs.config.allowUnfree = true;
|
||||
security.pam.services.swaylock = { };
|
||||
|
||||
# List packages installed in system profile. To search, run:
|
||||
# $ nix search wget
|
||||
environment.systemPackages = with pkgs; [
|
||||
vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
|
||||
wget
|
||||
neovim
|
||||
];
|
||||
|
||||
# Some programs need SUID wrappers, can be configured further or are
|
||||
# started in user sessions.
|
||||
# programs.mtr.enable = true;
|
||||
# programs.gnupg.agent = {
|
||||
# enable = true;
|
||||
# enableSSHSupport = true;
|
||||
# };
|
||||
|
||||
# List services that you want to enable:
|
||||
|
||||
# Enable the OpenSSH daemon.
|
||||
#services.openssh.enable = true;
|
||||
|
||||
# Open ports in the firewall.
|
||||
# networking.firewall.allowedTCPPorts = [ ... ];
|
||||
# networking.firewall.allowedUDPPorts = [ ... ];
|
||||
# Or disable the firewall altogether.
|
||||
# networking.firewall.enable = false;
|
||||
|
||||
# This value determines the NixOS release from which the default
|
||||
# settings for stateful data, like file locations and database versions
|
||||
# on your system were taken. It‘s perfectly fine and recommended to leave
|
||||
# this value at the release version of the first install of this system.
|
||||
# Before changing this value read the documentation for this option
|
||||
# (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
|
||||
system.stateVersion = "24.11"; # Did you read the comment?
|
||||
|
||||
}
|
||||
|
||||
392
dots/caelestia.nix
Normal file
392
dots/caelestia.nix
Normal file
@@ -0,0 +1,392 @@
|
||||
{ config,
|
||||
lib,
|
||||
pkgs,
|
||||
inputs,
|
||||
...
|
||||
}:
|
||||
|
||||
{
|
||||
programs = {
|
||||
caelestia = {
|
||||
enable = false;
|
||||
systemd = {
|
||||
enable = true; # if you prefer starting from your compositor
|
||||
target = "graphical-session.target";
|
||||
environment = [];
|
||||
};
|
||||
settings = {
|
||||
appearance = {
|
||||
anim = {
|
||||
durations = {
|
||||
scale = 1;
|
||||
};
|
||||
};
|
||||
font = {
|
||||
family = {
|
||||
material = "Material Symbols Rounded";
|
||||
mono = "CaskaydiaCove NF";
|
||||
sans = "Rubik";
|
||||
};
|
||||
size = {
|
||||
scale = 1;
|
||||
};
|
||||
};
|
||||
padding = {
|
||||
scale = 1;
|
||||
};
|
||||
rounding = {
|
||||
scale = 1;
|
||||
};
|
||||
spacing = {
|
||||
scale = 1;
|
||||
};
|
||||
transparency = {
|
||||
enabled = false;
|
||||
base = 0.85;
|
||||
layers = 0.4;
|
||||
};
|
||||
};
|
||||
general = {
|
||||
apps = {
|
||||
terminal = [ "foot" ];
|
||||
audio = [ "pavucontrol" ];
|
||||
};
|
||||
battery = {
|
||||
warnLevels = [
|
||||
{
|
||||
level = 20;
|
||||
title = "Low battery";
|
||||
message = "You might want to plug in a charger";
|
||||
icon = "battery_android_frame_2";
|
||||
}
|
||||
{
|
||||
level = 10;
|
||||
title = "Did you see the previous message?";
|
||||
message = "You should probably plug in a charger <b>now</b>";
|
||||
icon = "battery_android_frame_1";
|
||||
}
|
||||
{
|
||||
level = 5;
|
||||
title = "Critical battery level";
|
||||
message = "PLUG THE CHARGER RIGHT NOW!!";
|
||||
icon = "battery_android_alert";
|
||||
critical = true;
|
||||
}
|
||||
];
|
||||
criticalLevel = 3;
|
||||
};
|
||||
idle = {
|
||||
inhibitWhenAudio = true;
|
||||
timeouts = [
|
||||
{
|
||||
timeout = 600;
|
||||
idleAction = "lock";
|
||||
}
|
||||
{
|
||||
timeout = 700;
|
||||
idleAction = "dpms off";
|
||||
returnAction = "dpms on";
|
||||
}
|
||||
{
|
||||
timeout = 800;
|
||||
idleAction = [ "systemctl" "suspend-then-hibernate" ];
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
background = {
|
||||
desktopClock = {
|
||||
enabled = false;
|
||||
};
|
||||
enabled = true;
|
||||
visualiser = {
|
||||
enabled = false;
|
||||
autoHide = true;
|
||||
rounding = 1;
|
||||
spacing = 1;
|
||||
};
|
||||
};
|
||||
bar = {
|
||||
clock = {
|
||||
showIcon = true;
|
||||
};
|
||||
dragThreshold = 20;
|
||||
entries = [
|
||||
{
|
||||
id = "logo";
|
||||
enabled = true;
|
||||
}
|
||||
{
|
||||
id = "workspaces";
|
||||
enabled = true;
|
||||
}
|
||||
{
|
||||
id = "spacer";
|
||||
enabled = true;
|
||||
}
|
||||
{
|
||||
id = "activeWindow";
|
||||
enabled = true;
|
||||
}
|
||||
{
|
||||
id = "spacer";
|
||||
enabled = true;
|
||||
}
|
||||
{
|
||||
id = "tray";
|
||||
enabled = true;
|
||||
}
|
||||
{
|
||||
id = "clock";
|
||||
enabled = true;
|
||||
}
|
||||
{
|
||||
id = "statusIcons";
|
||||
enabled = true;
|
||||
}
|
||||
{
|
||||
id = "power";
|
||||
enabled = true;
|
||||
}
|
||||
];
|
||||
persistent = true;
|
||||
scrollActions = {
|
||||
brightness = true;
|
||||
workspaces = true;
|
||||
volume = true;
|
||||
};
|
||||
showOnHover = true;
|
||||
status = {
|
||||
showAudio = false;
|
||||
showBattery = true;
|
||||
showBluetooth = true;
|
||||
showKbLayout = false;
|
||||
showMicrophone = false;
|
||||
showNetwork = true;
|
||||
showLockStatus = true;
|
||||
};
|
||||
tray = {
|
||||
background = false;
|
||||
iconSubs = [];
|
||||
recolour = false;
|
||||
};
|
||||
workspaces = {
|
||||
activeIndicator = true;
|
||||
activeLabel = "";
|
||||
activeTrail = false;
|
||||
label = " ";
|
||||
occupiedBg = false;
|
||||
occupiedLabel = "";
|
||||
perMonitorWorkspaces = true;
|
||||
showWindows = true;
|
||||
shown = 5;
|
||||
};
|
||||
};
|
||||
border = {
|
||||
rounding = 25;
|
||||
thickness = 10;
|
||||
};
|
||||
dashboard = {
|
||||
enabled = true;
|
||||
dragThreshold = 50;
|
||||
mediaUpdateInterval = 500;
|
||||
showOnHover = true;
|
||||
};
|
||||
launcher = {
|
||||
actionPrefix = ">";
|
||||
actions = [
|
||||
{
|
||||
name = "Calculator";
|
||||
icon = "calculate";
|
||||
description = "Do simple math equations (powered by Qalc)";
|
||||
command = [ "autocomplete" "calc" ];
|
||||
enabled = true;
|
||||
dangerous = false;
|
||||
}
|
||||
{
|
||||
name = "Scheme";
|
||||
icon = "palette";
|
||||
description = "Change the current colour scheme";
|
||||
command = [ "autocomplete" "scheme" ];
|
||||
enabled = true;
|
||||
dangerous = false;
|
||||
}
|
||||
{
|
||||
name = "Wallpaper";
|
||||
icon = "image";
|
||||
description = "Change the current wallpaper";
|
||||
command = [ "autocomplete" "wallpaper" ];
|
||||
enabled = true;
|
||||
dangerous = false;
|
||||
}
|
||||
{
|
||||
name = "Variant";
|
||||
icon = "colors";
|
||||
description = "Change the current scheme variant";
|
||||
command = [ "autocomplete" "variant" ];
|
||||
enabled = true;
|
||||
dangerous = false;
|
||||
}
|
||||
{
|
||||
name = "Transparency";
|
||||
icon = "opacity";
|
||||
description = "Change shell transparency";
|
||||
command = [ "autocomplete" "transparency" ];
|
||||
enabled = false;
|
||||
dangerous = false;
|
||||
}
|
||||
{
|
||||
name = "Random";
|
||||
icon = "casino";
|
||||
description = "Switch to a random wallpaper";
|
||||
command = [ "caelestia" "wallpaper" "-r" ];
|
||||
enabled = true;
|
||||
dangerous = false;
|
||||
}
|
||||
{
|
||||
name = "Light";
|
||||
icon = "light_mode";
|
||||
description = "Change the scheme to light mode";
|
||||
command = [ "setMode" "light" ];
|
||||
enabled = true;
|
||||
dangerous = false;
|
||||
}
|
||||
{
|
||||
name = "Dark";
|
||||
icon = "dark_mode";
|
||||
description = "Change the scheme to dark mode";
|
||||
command = [ "setMode" "dark" ];
|
||||
enabled = true;
|
||||
dangerous = false;
|
||||
}
|
||||
{
|
||||
name = "Shutdown";
|
||||
icon = "power_settings_new";
|
||||
description = "Shutdown the system";
|
||||
command = [ "systemctl" "poweroff" ];
|
||||
enabled = true;
|
||||
dangerous = true;
|
||||
}
|
||||
{
|
||||
name = "Reboot";
|
||||
icon = "cached";
|
||||
description = "Reboot the system";
|
||||
command = [ "systemctl" "reboot" ];
|
||||
enabled = true;
|
||||
dangerous = true;
|
||||
}
|
||||
{
|
||||
name = "Logout";
|
||||
icon = "exit_to_app";
|
||||
description = "Log out of the current session";
|
||||
command = [ "loginctl" "terminate-user" "" ];
|
||||
enabled = true;
|
||||
dangerous = true;
|
||||
}
|
||||
{
|
||||
name = "Lock";
|
||||
icon = "lock";
|
||||
description = "Lock the current session";
|
||||
command = [ "caelestia" "shell" "lock" "lock" ];
|
||||
enabled = true;
|
||||
dangerous = false;
|
||||
}
|
||||
{
|
||||
name = "Sleep";
|
||||
icon = "bedtime";
|
||||
description = "Suspend then hibernate";
|
||||
command = [ "systemctl" "suspend-then-hibernate" ];
|
||||
enabled = true;
|
||||
dangerous = false;
|
||||
}
|
||||
];
|
||||
dragThreshold = 50;
|
||||
vimKeybinds = false;
|
||||
enableDangerousActions = false;
|
||||
maxShown = 7;
|
||||
maxWallpapers = 9;
|
||||
specialPrefix = "@";
|
||||
useFuzzy = {
|
||||
apps = false;
|
||||
actions = false;
|
||||
schemes = false;
|
||||
variants = false;
|
||||
wallpapers = false;
|
||||
};
|
||||
showOnHover = false;
|
||||
hiddenApps = [];
|
||||
};
|
||||
lock = {
|
||||
recolourLogo = false;
|
||||
};
|
||||
notifs = {
|
||||
actionOnClick = false;
|
||||
clearThreshold = 0.3;
|
||||
defaultExpireTimeout = 5000;
|
||||
expandThreshold = 20;
|
||||
expire = true;
|
||||
};
|
||||
osd = {
|
||||
enabled = true;
|
||||
enableBrightness = true;
|
||||
enableMicrophone = false;
|
||||
hideDelay = 2000;
|
||||
};
|
||||
paths = {
|
||||
mediaGif = "root:/assets/bongocat.gif";
|
||||
sessionGif = "root:/assets/kurukuru.gif";
|
||||
wallpaperDir = "~/Pictures/Wallpapers";
|
||||
};
|
||||
services = {
|
||||
audioIncrement = 0.1;
|
||||
defaultPlayer = "Spotify";
|
||||
playerAliases = [
|
||||
{ from = "com.github.th_ch.youtube_music"; to = "YT Music"; }
|
||||
];
|
||||
gpuType = "";
|
||||
weatherLocation = "";
|
||||
useFahrenheit = false;
|
||||
useTwelveHourClock = true;
|
||||
smartScheme = true;
|
||||
visualiserBars = 45;
|
||||
};
|
||||
session = {
|
||||
dragThreshold = 30;
|
||||
enabled = true;
|
||||
vimKeybinds = false;
|
||||
commands = {
|
||||
logout = [ "loginctl" "terminate-user" "" ];
|
||||
shutdown = [ "systemctl" "poweroff" ];
|
||||
hibernate = [ "systemctl" "hibernate" ];
|
||||
reboot = [ "systemctl" "reboot" ];
|
||||
};
|
||||
};
|
||||
sidebar = {
|
||||
dragThreshold = 80;
|
||||
enabled = true;
|
||||
};
|
||||
utilities = {
|
||||
enabled = true;
|
||||
maxToasts = 4;
|
||||
toasts = {
|
||||
audioInputChanged = true;
|
||||
audioOutputChanged = true;
|
||||
capsLockChanged = true;
|
||||
chargingChanged = true;
|
||||
configLoaded = true;
|
||||
dndChanged = true;
|
||||
gameModeChanged = true;
|
||||
numLockChanged = true;
|
||||
};
|
||||
};
|
||||
|
||||
};
|
||||
cli = {
|
||||
enable = true; # Also add caelestia-cli to path
|
||||
settings = {
|
||||
theme.enableGtk = false;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
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
|
||||
#};
|
||||
};
|
||||
}
|
||||
@@ -42,6 +42,8 @@
|
||||
;; change `org-directory'. It must be set before org loads!
|
||||
(setq org-directory "~/org/")
|
||||
|
||||
(require 'direnv)
|
||||
|
||||
|
||||
;; Whenever you reconfigure a package, make sure to wrap your config in an
|
||||
;; `after!' block, otherwise Doom's defaults may override your settings. E.g.
|
||||
|
||||
@@ -103,7 +103,7 @@
|
||||
;;make ; run make tasks from Emacs
|
||||
;;pass ; password manager for nerds
|
||||
pdf ; pdf enhancements
|
||||
;;terraform ; infrastructure as code
|
||||
terraform ; infrastructure as code
|
||||
;;tmux ; an API for interacting with tmux
|
||||
tree-sitter ; syntax and parsing, sitting in a tree...
|
||||
;;upload ; map local to remote projects via ssh/ftp
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
|
||||
;; To install SOME-PACKAGE from MELPA, ELPA or emacsmirror:
|
||||
;; (package! some-package)
|
||||
(package! elisp-benchmarks)
|
||||
|
||||
;; To install a package directly from a remote git repo, you must specify a
|
||||
;; `:recipe'. You'll find documentation on what `:recipe' accepts 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,304 +8,420 @@
|
||||
...
|
||||
}:
|
||||
let
|
||||
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 = "pcmanfm";
|
||||
runner = "anyrun";
|
||||
browser = "zen-twilight";
|
||||
fileManager = "thunar";
|
||||
#runner = "${lib.getExe caelestia-cli} shell drawers toggle launcher";
|
||||
runner = "vicinae toggle";
|
||||
# runner = "anyrun";
|
||||
browser = "firefox";
|
||||
editor = "emacsclient -c";
|
||||
caelestia-cli = inputs.caelestia-cli.packages.${pkgs.system}.caelestia-cli;
|
||||
in
|
||||
{
|
||||
wayland = {
|
||||
windowManager = {
|
||||
hyprland = {
|
||||
enable = window_manager == "hyprland" || window_manager == "all";
|
||||
plugins = [
|
||||
pkgs.hyprlandPlugins.hyprsplit
|
||||
pkgs.hyprlandPlugins.hyprscrolling
|
||||
];
|
||||
settings = {
|
||||
wayland.windowManager.hyprland = {
|
||||
enable = window_manager == "hyprland" || window_manager == "all";
|
||||
package = hypr-package;
|
||||
portalPackage = hypr-portal;
|
||||
plugins = [
|
||||
#pkgs.hyprlandPlugins.hyprsplit
|
||||
hypr-split
|
||||
#hyprscrolling
|
||||
];
|
||||
|
||||
# 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") [
|
||||
"HDMI-A-1,1920x1080@60,0x0,1"
|
||||
"DP-1,2560x1440@144,1920x0,1"
|
||||
])
|
||||
];
|
||||
# Autostart necessary processes (like notifications daemons, status bars, etc.)
|
||||
# Or execute your favorite apps at launch like this:
|
||||
exec-once =
|
||||
[
|
||||
#"waybar"
|
||||
#"quickshell"
|
||||
"${pkgs.polkit_gnome}/libexec/polkit-gnome-authentication-agent-1"
|
||||
"fcitx5 -d"
|
||||
"foot -s"
|
||||
"${pkgs.polkit_gnome}/libexec/polkit-gnome-authentication-agent-1"
|
||||
]
|
||||
++ lib.optionals (config.home.username == "work") [
|
||||
"thunderbird"
|
||||
"sleep 10 && emacsclient -c --frame-parameters='((name . \"work\"))' $HOME/Documents/work/README.org"
|
||||
];
|
||||
#++ lib.optional (systemName == "laptop") "swaybg -o eDP-1 -i ${../assets/Wallpapers/138.png}"
|
||||
#++
|
||||
# lib.optional (systemName == "pc")
|
||||
# "swaybg -o HDMI-A-1 -i ${../assets/Wallpapers/138.png} -o DP-1 -i ${../assets/Wallpapers/138.png}";
|
||||
settings = {
|
||||
##########################################################################
|
||||
# Monitors
|
||||
##########################################################################
|
||||
source = [
|
||||
"./dms/outputs.conf"
|
||||
#"./dms/cursor.conf"
|
||||
"./dms/colors.conf"
|
||||
];
|
||||
|
||||
#plugins
|
||||
plugin = {
|
||||
hyprsplit = {
|
||||
num_workspaces = 10;
|
||||
persistent_workspaces = true;
|
||||
};
|
||||
hyprscrolling = {
|
||||
fullscreen_on_one_column = false;
|
||||
column_width = 0.7;
|
||||
explicit_column_widths = [
|
||||
0.333
|
||||
0.5
|
||||
0.667
|
||||
1.0
|
||||
];
|
||||
focus_fit_method = 0;
|
||||
};
|
||||
};
|
||||
# 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") [
|
||||
# "HDMI-A-2, disable"
|
||||
# ])
|
||||
#];
|
||||
|
||||
env = [
|
||||
"XCURSOR_SIZE, 24"
|
||||
"HYPRCURSOR_SIZE, 24"
|
||||
];
|
||||
# Refer to https://wiki.hyprland.org/Configuring/Variables/
|
||||
# https://wiki.hyprland.org/Configuring/Variables/#general
|
||||
general = {
|
||||
gaps_in = 5;
|
||||
gaps_out = 10;
|
||||
border_size = 2;
|
||||
# https://wiki.hyprland.org/Configuring/Variables/#variable-types for info about colors
|
||||
#"col.active_border" = "rgba(33ccffee) rgba(00ff99ee) 45deg";
|
||||
#"col.inactive_border" = "rgba(595959aa)";
|
||||
# Set to true enable resizing windows by clicking and dragging on borders and gaps
|
||||
resize_on_border = false;
|
||||
# Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on
|
||||
allow_tearing = false;
|
||||
layout = "dwindle";
|
||||
};
|
||||
#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;
|
||||
# };
|
||||
|
||||
# https://wiki.hyprland.org/Configuring/Variables/#decoration
|
||||
decoration = {
|
||||
rounding = 10;
|
||||
rounding_power = 2;
|
||||
# Change transparency of focused and unfocused windows
|
||||
active_opacity = 1.0;
|
||||
inactive_opacity = 1.0;
|
||||
shadow = {
|
||||
enabled = true;
|
||||
range = 4;
|
||||
render_power = 3;
|
||||
#color = "rgba(1a1a1aee)";
|
||||
};
|
||||
# https://wiki.hyprland.org/Configuring/Variables/#blur
|
||||
blur = {
|
||||
enabled = true;
|
||||
size = 3;
|
||||
passes = 1;
|
||||
vibrancy = 0.1696;
|
||||
};
|
||||
};
|
||||
animations = {
|
||||
enabled = "yes, please :)";
|
||||
# Default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more
|
||||
bezier = [
|
||||
"easeOutQuint,0.23,1,0.32,1"
|
||||
"easeInOutCubic,0.65,0.05,0.36,1"
|
||||
"linear,0,0,1,1"
|
||||
"almostLinear,0.5,0.5,0.75,1.0"
|
||||
"quick,0.15,0,0.1,1"
|
||||
];
|
||||
animation = [
|
||||
"global, 1, 10, default"
|
||||
"border, 1, 5.39, easeOutQuint"
|
||||
"windows, 1, 4.79, easeOutQuint"
|
||||
"windowsIn, 1, 4.1, easeOutQuint, popin 87%"
|
||||
"windowsOut, 1, 1.49, linear, popin 87%"
|
||||
"fadeIn, 1, 1.73, almostLinear"
|
||||
"fadeOut, 1, 1.46, almostLinear"
|
||||
"fade, 1, 3.03, quick"
|
||||
"layers, 1, 3.81, easeOutQuint"
|
||||
"layersIn, 1, 4, easeOutQuint, fade"
|
||||
"layersOut, 1, 1.5, linear, fade"
|
||||
"fadeLayersIn, 1, 1.79, almostLinear"
|
||||
"fadeLayersOut, 1, 1.39, almostLinear"
|
||||
"workspaces, 1, 1.94, almostLinear, fade"
|
||||
"workspacesIn, 1, 1.21, almostLinear, fade"
|
||||
"workspacesOut, 1, 1.94, almostLinear, fade"
|
||||
];
|
||||
};
|
||||
# Ref https://wiki.hyprland.org/Configuring/Workspace-Rules/
|
||||
# "Smart gaps" / "No gaps when only"
|
||||
# uncomment all if you wish to use that.
|
||||
# workspace = w[tv1], gapsout:0, gapsin:0
|
||||
# workspace = f[1], gapsout:0, gapsin:0
|
||||
# windowrule = bordersize 0, floating:0, onworkspace:w[tv1]
|
||||
# windowrule = rounding 0, floating:0, onworkspace:w[tv1]
|
||||
# windowrule = bordersize 0, floating:0, onworkspace:f[1]
|
||||
# windowrule = rounding 0, floating:0, onworkspace:f[1]
|
||||
##########################################################################
|
||||
# Autostart
|
||||
##########################################################################
|
||||
|
||||
# See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more
|
||||
dwindle = {
|
||||
pseudotile = true; # Master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
|
||||
preserve_split = true; # You probably want this
|
||||
force_split = 2;
|
||||
};
|
||||
# Autostart necessary processes (like notifications daemons, status bars, etc.)
|
||||
# Or execute your favorite apps at launch like this:
|
||||
exec-once = [
|
||||
# "waybar"
|
||||
# "quickshell"
|
||||
#"${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"
|
||||
"dbus-update-activation-environment --systemd --all"
|
||||
]
|
||||
++ lib.optionals (config.home.username == "work") [
|
||||
"thunderbird"
|
||||
"sleep 10 && emacsclient -c --frame-parameters='((name . \"work\"))' $HOME/Documents/work/README.org"
|
||||
];
|
||||
# ++ lib.optional (systemName == "laptop")
|
||||
# "swaybg -o eDP-1 -i ${../assets/Wallpapers/138.png}"
|
||||
#
|
||||
# ++ lib.optional (systemName == "pc")
|
||||
# "swaybg -o HDMI-A-1 -i ${../assets/Wallpapers/138.png} -o DP-1 -i ${../assets/Wallpapers/138.png}";
|
||||
|
||||
# See https://wiki.hyprland.org/Configuring/Master-Layout/ for more
|
||||
master = {
|
||||
new_status = "master";
|
||||
};
|
||||
|
||||
# https://wiki.hyprland.org/Configuring/Variables/#misc
|
||||
misc = {
|
||||
force_default_wallpaper = -1; # Set to 0 or 1 to disable the anime mascot wallpapers
|
||||
disable_hyprland_logo = false; # If true disables the random hyprland logo / anime girl background. :(
|
||||
enable_swallow = true;
|
||||
swallow_regex = "foot";
|
||||
};
|
||||
|
||||
# https://wiki.hyprland.org/Configuring/Variables/#input
|
||||
input = {
|
||||
kb_layout = lib.mkMerge [
|
||||
(lib.mkIf (systemName == "laptop") "ie")
|
||||
(lib.mkIf (systemName == "pc") "us")
|
||||
];
|
||||
repeat_rate = 40;
|
||||
repeat_delay = 500;
|
||||
#kb_variant =
|
||||
#kb_model =
|
||||
#kb_options =
|
||||
#kb_rules =
|
||||
follow_mouse = 1;
|
||||
sensitivity = 0; # -1.0 - 1.0, 0 means no modification.
|
||||
touchpad = {
|
||||
natural_scroll = false;
|
||||
};
|
||||
};
|
||||
# https://wiki.hyprland.org/Configuring/Variables/#gestures
|
||||
#gestures = {
|
||||
# workspace_swipe = true;
|
||||
# workspace_swipe_cancel_ratio = 0.15;
|
||||
#};
|
||||
|
||||
# Example per-device config
|
||||
# See https://wiki.hyprland.org/Configuring/Keywords/#per-device-input-configs for more
|
||||
device = {
|
||||
name = "epic-mouse-v1";
|
||||
sensitivity = -0.5;
|
||||
};
|
||||
|
||||
bind = [
|
||||
# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more
|
||||
"${mod}, Return, exec, ${terminal}"
|
||||
"${mod}, B, exec, ${browser}"
|
||||
"${mod}, Q, killactive,"
|
||||
"${mod}, M, exit,"
|
||||
"${mod}, F, exec, ${fileManager}"
|
||||
"${mod}, V, togglefloating,"
|
||||
"${mod}, T, fullscreen"
|
||||
"${mod}, D, exec, ${runner}"
|
||||
"${mod}, E, exec, ${editor}"
|
||||
#",Print, exec, grim -g \"$(slurp)\" - | swappy -f -"
|
||||
",Print, exec, ${lib.getExe caelestia-cli} screenshot -r"
|
||||
"${mod}, P, pseudo, " # dwindle
|
||||
#focus with mainMod + arrow keys
|
||||
#"${mod}, H, movefocus, l"
|
||||
#"${mod}, L, movefocus, r"
|
||||
"${mod}, K, movefocus, u"
|
||||
"${mod}, J, movefocus, d"
|
||||
"${mod} SHIFT, H, movewindow, l"
|
||||
"${mod}, h, layoutmsg, move -col"
|
||||
"${mod} SHIFT, L, movewindow, r"
|
||||
"${mod}, L, layoutmsg, move +col"
|
||||
"${mod} SHIFT, K, movewindow, u"
|
||||
"${mod} SHIFT, J, movewindow, d"
|
||||
|
||||
# Switch workspaces with Mod + [0-9]
|
||||
"${mod}, 1, split:workspace, 1 "
|
||||
"${mod}, 2, split:workspace, 2 "
|
||||
"${mod}, 3, split:workspace, 3 "
|
||||
"${mod}, 4, split:workspace, 4 "
|
||||
"${mod}, 5, split:workspace, 5 "
|
||||
"${mod}, 6, split:workspace, 6 "
|
||||
"${mod}, 7, split:workspace, 7 "
|
||||
"${mod}, 8, split:workspace, 8 "
|
||||
"${mod}, 9, split:workspace, 9 "
|
||||
"${mod}, 0, split:workspace, 10"
|
||||
# Move active window to a workspace with mainMod + SHIFT + [0-9]
|
||||
"${mod} SHIFT, 1, split:movetoworkspacesilent, 1 "
|
||||
"${mod} SHIFT, 2, split:movetoworkspacesilent, 2 "
|
||||
"${mod} SHIFT, 3, split:movetoworkspacesilent, 3 "
|
||||
"${mod} SHIFT, 4, split:movetoworkspacesilent, 4 "
|
||||
"${mod} SHIFT, 5, split:movetoworkspacesilent, 5 "
|
||||
"${mod} SHIFT, 6, split:movetoworkspacesilent, 6 "
|
||||
"${mod} SHIFT, 7, split:movetoworkspacesilent, 7 "
|
||||
"${mod} SHIFT, 8, split:movetoworkspacesilent, 8 "
|
||||
"${mod} SHIFT, 9, split:movetoworkspacesilent, 9 "
|
||||
"${mod} SHIFT, 0, split:movetoworkspacesilent, 10"
|
||||
# Example special workspace (scratchpad)
|
||||
"${mod}, SLASH, togglespecialworkspace, magic"
|
||||
"${mod} SHIFT, SLASH, movetoworkspace, special:magic"
|
||||
# Scroll through existing workspaces with mainMod + scroll
|
||||
"${mod}, mouse_down, workspace, e+1"
|
||||
"${mod}, mouse_up, workspace, e-1"
|
||||
# 8BitDo keyboard big red b Button
|
||||
"${mod} SHIFT, F1, exec, scrcpy --video-source=camera -m3000 --camera-facing=back --v4l2-sink=/dev/video1 --no-video-playback --no-audio"
|
||||
|
||||
];
|
||||
|
||||
bindm = [
|
||||
# Move/resize windows with mainMod + LMB/RMB and dragging
|
||||
"${mod}, mouse:272, movewindow"
|
||||
"${mod}, mouse:273, resizewindow"
|
||||
];
|
||||
|
||||
bindel = [
|
||||
",XF86AudioRaiseVolume, exec, pamixer -i 5"
|
||||
",XF86AudioLowerVolume, exec, pamixer -d 5"
|
||||
",XF86AudioMute, exec, pamixer --toggle-mute"
|
||||
",XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"
|
||||
",XF86MonBrightnessUp, exec, light -A 5"
|
||||
",XF86MonBrightnessDown, exec, light -U 5"
|
||||
];
|
||||
bindl = [
|
||||
", XF86AudioNext, exec, playerctl next"
|
||||
", XF86AudioPause, exec, playerctl play-pause"
|
||||
", XF86AudioPlay, exec, playerctl play-pause "
|
||||
", XF86AudioPrev, exec, playerctl previous "
|
||||
];
|
||||
binds = [
|
||||
|
||||
];
|
||||
|
||||
# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more
|
||||
# See https://wiki.hyprland.org/Configuring/Workspace-Rules/ for workspace rules
|
||||
|
||||
# Example windowrule
|
||||
# windowrule = float,class:^(kitty)$,title:^(kitty)$
|
||||
|
||||
# Ignore maximize requests from apps. You'll probably like this.
|
||||
windowrule = [
|
||||
# Ignore maximize requests from apps. You'll probably like this.
|
||||
"suppressevent maximize, class:.*"
|
||||
# Fix some dragging issues with XWayland
|
||||
"nofocus,class:^$,title:^$,xwayland:1,floating:1,fullscreen:0,pinned:0"
|
||||
"workspace special:magic silent, class:thunderbird"
|
||||
"workspace special:magic silent, class:emacs, title:work"
|
||||
];
|
||||
##########################################################################
|
||||
# Plugins
|
||||
##########################################################################
|
||||
|
||||
plugin = {
|
||||
split-monitor-workspaces = {
|
||||
count = 10;
|
||||
penable_persistent_workspaces = 1;
|
||||
};
|
||||
hyprscrolling = {
|
||||
column_width = 0.9;
|
||||
follow_focus = false;
|
||||
fullscreen_on_one_column = true;
|
||||
};
|
||||
};
|
||||
|
||||
##########################################################################
|
||||
# Environment
|
||||
##########################################################################
|
||||
|
||||
env = [
|
||||
"XCURSOR_SIZE, 24"
|
||||
"HYPRCURSOR_SIZE, 24"
|
||||
];
|
||||
|
||||
##########################################################################
|
||||
# General / Render / Decoration / Animations
|
||||
##########################################################################
|
||||
|
||||
# https://wiki.hyprland.org/Configuring/Variables/
|
||||
# https://wiki.hyprland.org/Configuring/Variables/#general
|
||||
general = {
|
||||
gaps_in = 5;
|
||||
gaps_out = 10;
|
||||
border_size = 2;
|
||||
# "col.active_border" = "rgba(33ccffee) rgba(00ff99ee) 45deg";
|
||||
# "col.inactive_border" = "rgba(595959aa)";
|
||||
resize_on_border = false; # enable resizing windows by clicking and dragging on borders and gaps
|
||||
allow_tearing = false; # see https://wiki.hyprland.org/Configuring/Tearing/ before enabling
|
||||
layout = "master";
|
||||
};
|
||||
|
||||
render = {
|
||||
cm_enabled = true; # turn on the CM pipeline (requires Hyprland restart)
|
||||
cm_fs_passthrough = 2; # passthrough only for HDR content (safer than 1)
|
||||
cm_auto_hdr = 1; # auto-switch monitor to HDR for fullscreen apps
|
||||
send_content_type = true; # helps auto HDR on some displays
|
||||
# cm_fs_passthrough = 1; # optional: keep your existing line; you can replace with 2 as above
|
||||
};
|
||||
|
||||
# https://wiki.hyprland.org/Configuring/Variables/#decoration
|
||||
decoration = {
|
||||
rounding = 0;
|
||||
rounding_power = 0;
|
||||
active_opacity = 1.0;
|
||||
inactive_opacity = 1.0;
|
||||
|
||||
shadow = {
|
||||
enabled = true;
|
||||
range = 4;
|
||||
render_power = 3;
|
||||
# color = "rgba(1a1a1aee)";
|
||||
};
|
||||
|
||||
# https://wiki.hyprland.org/Configuring/Variables/#blur
|
||||
blur = {
|
||||
enabled = false;
|
||||
size = 3;
|
||||
passes = 1;
|
||||
vibrancy = 0.1696;
|
||||
};
|
||||
};
|
||||
|
||||
animations = {
|
||||
enabled = "yes, please :)";
|
||||
|
||||
# Default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more
|
||||
bezier = [
|
||||
"easeOutQuint,0.23,1,0.32,1"
|
||||
"easeInOutCubic,0.65,0.05,0.36,1"
|
||||
"linear,0,0,1,1"
|
||||
"almostLinear,0.5,0.5,0.75,1.0"
|
||||
"quick,0.15,0,0.1,1"
|
||||
];
|
||||
|
||||
animation = [
|
||||
"global, 1, 10, default"
|
||||
"border, 1, 5.39, easeOutQuint"
|
||||
"windows, 1, 4.79, easeOutQuint"
|
||||
"windowsIn, 1, 4.1, easeOutQuint, popin 87%"
|
||||
"windowsOut, 1, 1.49, linear, popin 87%"
|
||||
"fadeIn, 1, 1.73, almostLinear"
|
||||
"fadeOut, 1, 1.46, almostLinear"
|
||||
"fade, 1, 3.03, quick"
|
||||
"layers, 1, 3.81, easeOutQuint"
|
||||
"layersIn, 1, 4, easeOutQuint, fade"
|
||||
"layersOut, 1, 1.5, linear, fade"
|
||||
"fadeLayersIn, 1, 1.79, almostLinear"
|
||||
"fadeLayersOut, 1, 1.39, almostLinear"
|
||||
"workspaces, 1, 1.94, almostLinear, fade"
|
||||
"workspacesIn, 1, 1.21, almostLinear, fade"
|
||||
"workspacesOut, 1, 1.94, almostLinear, fade"
|
||||
];
|
||||
};
|
||||
|
||||
##########################################################################
|
||||
# Layouts
|
||||
##########################################################################
|
||||
|
||||
# See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more
|
||||
dwindle = {
|
||||
pseudotile = true; # Master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds
|
||||
preserve_split = true; # You probably want this
|
||||
force_split = 2;
|
||||
};
|
||||
|
||||
# See https://wiki.hyprland.org/Configuring/Master-Layout/ for more
|
||||
master = {
|
||||
new_status = "master";
|
||||
mfact = 0.5;
|
||||
new_on_top = true;
|
||||
};
|
||||
|
||||
##########################################################################
|
||||
# Misc / Input / Gestures / Devices
|
||||
##########################################################################
|
||||
|
||||
# https://wiki.hyprland.org/Configuring/Variables/#misc
|
||||
misc = {
|
||||
force_default_wallpaper = -1; # Set to 0 or 1 to disable the anime mascot wallpapers
|
||||
disable_hyprland_logo = true; # If true disables the random hyprland logo / anime girl background. :(
|
||||
enable_swallow = true;
|
||||
swallow_regex = "footclient";
|
||||
};
|
||||
|
||||
# https://wiki.hyprland.org/Configuring/Variables/#input
|
||||
input = {
|
||||
kb_layout = lib.mkMerge [
|
||||
(lib.mkIf (systemName == "laptop") "ie")
|
||||
(lib.mkIf (systemName == "pc") "us")
|
||||
];
|
||||
repeat_rate = 40;
|
||||
repeat_delay = 500;
|
||||
# kb_variant =
|
||||
# kb_model =
|
||||
# kb_options =
|
||||
# kb_rules =
|
||||
follow_mouse = 1;
|
||||
sensitivity = 0; # -1.0 - 1.0, 0 means no modification.
|
||||
|
||||
touchpad = {
|
||||
natural_scroll = false;
|
||||
};
|
||||
};
|
||||
|
||||
# https://wiki.hyprland.org/Configuring/Variables/#gestures
|
||||
# gestures = {
|
||||
# workspace_swipe = true;
|
||||
# workspace_swipe_cancel_ratio = 0.15;
|
||||
# };
|
||||
|
||||
# Example per-device config
|
||||
# See https://wiki.hyprland.org/Configuring/Keywords/#per-device-input-configs
|
||||
device = {
|
||||
name = "epic-mouse-v1";
|
||||
sensitivity = -0.5;
|
||||
};
|
||||
|
||||
##########################################################################
|
||||
# Binds
|
||||
##########################################################################
|
||||
|
||||
bind = [
|
||||
# Launcher / apps
|
||||
"${mod}, Return, exec, ${terminal}"
|
||||
"${mod}, B, exec, ${browser}"
|
||||
"${mod}, F, exec, ${fileManager}"
|
||||
"${mod}, D, exec, ${runner}"
|
||||
"${mod}, E, exec, ${editor}"
|
||||
|
||||
# Session / window controls
|
||||
"${mod}, Q, killactive,"
|
||||
"${mod}, M, exit,"
|
||||
"${mod}, V, togglefloating,"
|
||||
"${mod}, T, fullscreen"
|
||||
# ",Print, exec, grim -g \"$(slurp)\" - | swappy -f -"
|
||||
",Print, exec, dms screenshot"
|
||||
"${mod}, f1, exec, dms ipc call keybinds toggle hyprland"
|
||||
|
||||
# Dwindle
|
||||
"${mod}, P, pseudo, "
|
||||
|
||||
# Focus (arrows)
|
||||
"${mod}, H, movefocus, l"
|
||||
"${mod}, L, movefocus, r"
|
||||
"${mod}, K, movefocus, u"
|
||||
"${mod}, J, movefocus, d"
|
||||
|
||||
# Column movement (hyprscrolling)
|
||||
#"${mod}, h, layoutmsg, move -col"
|
||||
#"${mod}, L, layoutmsg, move +col"
|
||||
|
||||
# Move window
|
||||
"${mod} SHIFT, H, movewindow, l"
|
||||
"${mod} SHIFT, L, movewindow, r"
|
||||
"${mod} SHIFT, K, movewindow, u"
|
||||
"${mod} SHIFT, J, movewindow, d"
|
||||
#"${mod} SHIFT, L, layoutmsg, movewindowto r"
|
||||
#"${mod} SHIFT, H, layoutmsg, movewindowto l"
|
||||
#"${mod} SHIFT, K, layoutmsg, movewindowto u"
|
||||
#"${mod} SHIFT, J, layoutmsg, movewindowto d"
|
||||
"${mod}, semicolon, layoutmsg, promote"
|
||||
|
||||
#hyperscrolling stuff
|
||||
"${mod}, period, layoutmsg, move +col"
|
||||
"${mod}, comma, layoutmsg, move -col"
|
||||
|
||||
# Workspaces (switch)
|
||||
"${mod}, 1, split-workspace, 1 "
|
||||
"${mod}, 2, split-workspace, 2 "
|
||||
"${mod}, 3, split-workspace, 3 "
|
||||
"${mod}, 4, split-workspace, 4 "
|
||||
"${mod}, 5, split-workspace, 5 "
|
||||
"${mod}, 6, split-workspace, 6 "
|
||||
"${mod}, 7, split-workspace, 7 "
|
||||
"${mod}, 8, split-workspace, 8 "
|
||||
"${mod}, 9, split-workspace, 9 "
|
||||
"${mod}, 0, split-workspace, 10"
|
||||
|
||||
# Workspaces (move active window)
|
||||
"${mod} SHIFT, 1, split-movetoworkspacesilent, 1 "
|
||||
"${mod} SHIFT, 2, split-movetoworkspacesilent, 2 "
|
||||
"${mod} SHIFT, 3, split-movetoworkspacesilent, 3 "
|
||||
"${mod} SHIFT, 4, split-movetoworkspacesilent, 4 "
|
||||
"${mod} SHIFT, 5, split-movetoworkspacesilent, 5 "
|
||||
"${mod} SHIFT, 6, split-movetoworkspacesilent, 6 "
|
||||
"${mod} SHIFT, 7, split-movetoworkspacesilent, 7 "
|
||||
"${mod} SHIFT, 8, split-movetoworkspacesilent, 8 "
|
||||
"${mod} SHIFT, 9, split-movetoworkspacesilent, 9 "
|
||||
"${mod} SHIFT, 0, split-movetoworkspacesilent, 10"
|
||||
|
||||
# Special workspace (scratchpad)
|
||||
"${mod}, SLASH, togglespecialworkspace, magic"
|
||||
"${mod} SHIFT, SLASH, movetoworkspace, special:magic"
|
||||
|
||||
# Scroll through existing workspaces with mainMod + scroll
|
||||
"${mod}, mouse_down, workspace, e+1"
|
||||
"${mod}, mouse_up, workspace, e-1"
|
||||
|
||||
# 8BitDo keyboard big red b Button
|
||||
"${mod} SHIFT, F1, exec, scrcpy --video-source=camera -m3000 --camera-facing=back --v4l2-sink=/dev/video1 --no-video-playback --no-audio"
|
||||
];
|
||||
|
||||
bindm = [
|
||||
# Move/resize windows with mainMod + LMB/RMB and dragging
|
||||
"${mod}, mouse:272, movewindow"
|
||||
"${mod}, mouse:273, resizewindow"
|
||||
];
|
||||
|
||||
bindel = [
|
||||
",XF86AudioRaiseVolume, exec, pamixer -i 5"
|
||||
",XF86AudioLowerVolume, exec, pamixer -d 5"
|
||||
",XF86AudioMute, exec, pamixer --toggle-mute"
|
||||
",XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"
|
||||
# ",XF86MonBrightnessUp, exec, light -A 5"
|
||||
# ",XF86MonBrightnessDown, exec, light -U 5"
|
||||
|
||||
# Brightness
|
||||
",XF86MonBrightnessUp, global, dms ipc call brightness increment 5"
|
||||
",XF86MonBrightnessDown, global, dms ipc call brightness decrement 5"
|
||||
];
|
||||
|
||||
bindl = [
|
||||
", XF86AudioNext, exec, playerctl next"
|
||||
", XF86AudioPause, exec, playerctl play-pause"
|
||||
", XF86AudioPlay, exec, playerctl play-pause "
|
||||
", XF86AudioPrev, exec, playerctl previous "
|
||||
];
|
||||
|
||||
binds = [ ];
|
||||
|
||||
##########################################################################
|
||||
# Rules (windows / workspaces)
|
||||
##########################################################################
|
||||
|
||||
# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more
|
||||
# See https://wiki.hyprland.org/Configuring/Workspace-Rules/ for workspace rules
|
||||
|
||||
# Example windowrule
|
||||
# windowrule = float,class:^(kitty)$,title:^(kitty)$
|
||||
|
||||
# Smart gaps / No gaps when only
|
||||
# workspace = w[tv1], gapsout:0, gapsin:0
|
||||
# workspace = f[1], gapsout:0, gapsin:0
|
||||
# windowrule = bordersize 0, floating:0, onworkspace:w[tv1]
|
||||
# windowrule = rounding 0, floating:0, onworkspace:w[tv1]
|
||||
# windowrule = bordersize 0, floating:0, onworkspace:f[1]
|
||||
# windowrule = rounding 0, floating:0, onworkspace:f[1]
|
||||
|
||||
windowrule = [
|
||||
# Ignore maximize requests from apps. You'll probably like this.
|
||||
"match:class .*, suppress_event maximize"
|
||||
|
||||
# Fix some dragging issues with XWayland
|
||||
"match:class ^$, match:title ^$, match:xwayland 1, match:float 1, match:fullscreen 0, match:pin 0, no_focus on"
|
||||
|
||||
"match:class thunderbird, workspace special:magic silent"
|
||||
"match:class emacs, match:title work, workspace special:magic silent"
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
@@ -18,23 +18,26 @@
|
||||
before_sleep_cmd = "loginctl lock-session && sleep 1.5";
|
||||
ignore_dbus_inhibit = false;
|
||||
};
|
||||
listener =
|
||||
[
|
||||
{
|
||||
timeout = 600;
|
||||
on-timeout = "loginctl lock-session";
|
||||
}
|
||||
|
||||
]
|
||||
++ lib.optional (systemName == "laptop") {
|
||||
timeout = 700;
|
||||
on-timeout = "light -S 0";
|
||||
on-resume = "light -I";
|
||||
listener = [
|
||||
{
|
||||
timeout = 600;
|
||||
on-timeout = "loginctl lock-session";
|
||||
}
|
||||
++ lib.optional (systemName == "laptop") {
|
||||
timeout = 800;
|
||||
on-timeout = "systemctl suspend-then-hibernate";
|
||||
};
|
||||
]
|
||||
++ lib.optional (systemName == "laptop") {
|
||||
timeout = 700;
|
||||
on-timeout = "hyprctl dispatch dpms off"; # Turns off all displays
|
||||
on-resume = "hyprctl dispatch dpms on"; # Turns displays back on
|
||||
}
|
||||
++ lib.optional (systemName == "laptop") {
|
||||
timeout = 800;
|
||||
on-timeout = "systemctl suspend-then-hibernate";
|
||||
}
|
||||
++ lib.optional (systemName == "pc") {
|
||||
timeout = 700; # Adjust timeout as needed (in seconds)
|
||||
on-timeout = "hyprctl dispatch dpms off"; # Turns off all displays
|
||||
on-resume = "hyprctl dispatch dpms on"; # Turns displays back on
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
@@ -445,11 +445,11 @@
|
||||
"Alt+W".action = toggle-column-tabbed-display;
|
||||
|
||||
# Screenshots
|
||||
"Print".action = screenshot { show-pointer = false; };
|
||||
#"Print".action = screenshot { show-pointer = false; };
|
||||
"Ctrl+Print".action.screenshot-screen = {
|
||||
write-to-disk = false;
|
||||
};
|
||||
"Alt+Print".action = screenshot-window;
|
||||
#"Alt+Print".action = screenshot-window;
|
||||
|
||||
# Other
|
||||
"Alt+Escape".action = toggle-keyboard-shortcuts-inhibit;
|
||||
|
||||
@@ -8,9 +8,14 @@
|
||||
{
|
||||
programs.nixcord = {
|
||||
enable = true;
|
||||
discord.enable = false;
|
||||
discord = {
|
||||
enable = false;
|
||||
#package = pkgs.vencord;
|
||||
};
|
||||
vesktop = {
|
||||
enable = true;
|
||||
#package = pkgs.vesktop;
|
||||
#useSystemVencord = false;
|
||||
};
|
||||
config = {
|
||||
plugins = {
|
||||
@@ -37,15 +42,9 @@
|
||||
biggerStreamPreview = {
|
||||
enable = true;
|
||||
};
|
||||
clearURLs = {
|
||||
enable = true;
|
||||
};
|
||||
copyFileContents = {
|
||||
enable = true;
|
||||
};
|
||||
emoteCloner = {
|
||||
enable = true;
|
||||
};
|
||||
fakeNitro = {
|
||||
enable = true;
|
||||
enableEmojiBypass = true;
|
||||
@@ -77,9 +76,6 @@
|
||||
messageLogger = {
|
||||
enable = true;
|
||||
};
|
||||
nsfwGateBypass = {
|
||||
enable = true;
|
||||
};
|
||||
petpet = {
|
||||
enable = true;
|
||||
};
|
||||
|
||||
@@ -19,8 +19,8 @@
|
||||
#
|
||||
#eval $(/usr/bin/gnome-keyring-daemon --start --components=pkcs11,secrets,ssh)
|
||||
#export SSH_AUTH_SOCK
|
||||
browser="zen-twilight"
|
||||
file_manager="pcmanfm"
|
||||
browser="zen"
|
||||
file_manager="dolphin"
|
||||
terminal="footclient"
|
||||
drunner="anyrun"
|
||||
editor="emacs"
|
||||
|
||||
98
dots/xdg.nix
98
dots/xdg.nix
@@ -3,79 +3,97 @@
|
||||
lib,
|
||||
pkgs,
|
||||
window_manager,
|
||||
inputs,
|
||||
...
|
||||
}:
|
||||
|
||||
{
|
||||
xdg = {
|
||||
enable = true;
|
||||
|
||||
portal = {
|
||||
enable = true;
|
||||
|
||||
config.common.default = [
|
||||
"hyprland"
|
||||
"hyprland;kde"
|
||||
"river"
|
||||
"kde"
|
||||
"gtk"
|
||||
];
|
||||
|
||||
xdgOpenUsePortal = true;
|
||||
|
||||
extraPortals = with pkgs; [
|
||||
xdg-desktop-portal-wlr
|
||||
xdg-desktop-portal-gtk
|
||||
xdg-desktop-portal-hyprland
|
||||
inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.xdg-desktop-portal-hyprland
|
||||
kdePackages.xdg-desktop-portal-kde
|
||||
];
|
||||
};
|
||||
|
||||
mime.enable = true;
|
||||
|
||||
mimeApps = {
|
||||
enable = true;
|
||||
|
||||
defaultApplications =
|
||||
let
|
||||
browser = [ "zen-twilight.desktop" ];
|
||||
browser = [ "firefox.desktop" ];
|
||||
fileManager = [ "pcmanfm.desktop" ];
|
||||
editor = [ "emacs.desktop" ];
|
||||
player = [ "mpv.desktop" ];
|
||||
viewer = [ "imv-dir.desktop" ];
|
||||
reader = [ "org.pwmt.zathura.desktop" ];
|
||||
in
|
||||
{
|
||||
"application/pdf" = reader;
|
||||
editor = [ "emacs.desktop" ];
|
||||
player = [ "mpv.desktop" ];
|
||||
viewer = [ "imv-dir.desktop" ];
|
||||
reader = [ "org.pwmt.zathura.desktop" ];
|
||||
in {
|
||||
# Documents
|
||||
"application/pdf" = reader;
|
||||
"application/epub" = reader;
|
||||
|
||||
"text/html" = browser;
|
||||
"text/xml" = browser;
|
||||
"text/plain" = editor;
|
||||
# Text / markup
|
||||
"text/plain" = editor;
|
||||
"application/x-wine-extension-ini" = editor;
|
||||
"text/html" = browser;
|
||||
"text/xml" = browser;
|
||||
|
||||
"application/json" = browser;
|
||||
"application/xml" = browser;
|
||||
"application/xhtml+xml" = browser;
|
||||
"application/xhtml_xml" = browser;
|
||||
"application/rdf+xml" = browser;
|
||||
"application/rss+xml" = browser;
|
||||
"application/x-extension-htm" = browser;
|
||||
"application/x-extension-html" = browser;
|
||||
# Web / XML-ish
|
||||
"application/json" = browser;
|
||||
"application/xml" = browser;
|
||||
"application/xhtml+xml" = browser;
|
||||
"application/xhtml_xml" = browser;
|
||||
"application/rdf+xml" = browser;
|
||||
"application/rss+xml" = browser;
|
||||
"application/x-extension-htm" = browser;
|
||||
"application/x-extension-html" = browser;
|
||||
"application/x-extension-shtml" = browser;
|
||||
"application/x-extension-xht" = browser;
|
||||
"application/x-extension-xht" = browser;
|
||||
"application/x-extension-xhtml" = browser;
|
||||
|
||||
# URL schemes
|
||||
"x-scheme-handler/about" = browser;
|
||||
"x-scheme-handler/ftp" = browser;
|
||||
"x-scheme-handler/http" = browser;
|
||||
"x-scheme-handler/ftp" = browser;
|
||||
"x-scheme-handler/http" = browser;
|
||||
"x-scheme-handler/https" = browser;
|
||||
|
||||
# Files / directories
|
||||
"inode/directory" = fileManager;
|
||||
"application/zip" = fileManager;
|
||||
|
||||
# Audio
|
||||
"audio/mpeg" = player;
|
||||
"audio/aac" = player;
|
||||
"audio/aac" = player;
|
||||
"audio/flac" = player;
|
||||
"audio/wav" = player;
|
||||
"video/mp4" = player;
|
||||
"video/vnd.mpegurl" = player;
|
||||
"video/x-matroska" = player;
|
||||
"audio/wav" = player;
|
||||
|
||||
# Video
|
||||
"video/mp4" = player;
|
||||
"video/vnd.mpegurl" = player;
|
||||
"video/x-matroska" = player;
|
||||
"application/x-mpegURL" = player;
|
||||
|
||||
"image/gif" = viewer;
|
||||
# Images
|
||||
"image/gif" = viewer;
|
||||
"image/jpeg" = viewer;
|
||||
"image/png" = viewer;
|
||||
"image/png" = viewer;
|
||||
"image/webp" = viewer;
|
||||
};
|
||||
};
|
||||
@@ -83,13 +101,14 @@
|
||||
userDirs = {
|
||||
enable = true;
|
||||
createDirectories = true;
|
||||
download = "${config.home.homeDirectory}/Downloads";
|
||||
documents = "${config.home.homeDirectory}/Documents";
|
||||
desktop = "${config.home.homeDirectory}/Desktop";
|
||||
videos = "${config.home.homeDirectory}/Videos";
|
||||
pictures = "${config.home.homeDirectory}/Pictures";
|
||||
music = "${config.home.homeDirectory}/Music";
|
||||
templates = "${config.home.homeDirectory}/.local/share/templates";
|
||||
|
||||
download = "${config.home.homeDirectory}/Downloads";
|
||||
documents = "${config.home.homeDirectory}/Documents";
|
||||
desktop = "${config.home.homeDirectory}/Desktop";
|
||||
videos = "${config.home.homeDirectory}/Videos";
|
||||
pictures = "${config.home.homeDirectory}/Pictures";
|
||||
music = "${config.home.homeDirectory}/Music";
|
||||
templates = "${config.home.homeDirectory}/.local/share/templates";
|
||||
publicShare = "${config.home.homeDirectory}/.local/share/public";
|
||||
};
|
||||
|
||||
@@ -98,7 +117,8 @@
|
||||
--enable-features=UseOzonePlatform
|
||||
--ozone-platform-hint=wayland
|
||||
'';
|
||||
#configFile."hypr/hyprland.conf".onChange = "hyprctl reload";
|
||||
|
||||
# Example:
|
||||
# configFile."hypr/hyprland.conf".onChange = "hyprctl reload";
|
||||
};
|
||||
}
|
||||
|
||||
100
dots/zsh.nix
100
dots/zsh.nix
@@ -6,69 +6,77 @@
|
||||
}:
|
||||
{
|
||||
programs.zsh = {
|
||||
enable = true;
|
||||
dotDir = ".config/zsh";
|
||||
enable = true;
|
||||
dotDir = "${config.xdg.configHome}/zsh";
|
||||
|
||||
plugins = [
|
||||
#pkgs.zsh-autosuggestions
|
||||
#pkgs.spaceship-prompt
|
||||
# pkgs.zsh-autosuggestions
|
||||
# pkgs.spaceship-prompt
|
||||
];
|
||||
|
||||
autosuggestion = {
|
||||
enable = true;
|
||||
enable = true;
|
||||
highlight = "fg=#64677a,bold,underline";
|
||||
};
|
||||
|
||||
history = {
|
||||
path = "$XDG_DATA_HOME/zsh/history";
|
||||
};
|
||||
|
||||
sessionVariables = {
|
||||
LD_LIBRARY_PATH = "/run/current-system/sw/share/nix-ld/lib";
|
||||
HISTSIZE = 3000;
|
||||
SAVEHIST = 3000;
|
||||
CARGO_HOME = "$XDG_DATA_HOME/cargo";
|
||||
GNUPGHOME = "$XDG_DATA_HOME/gnupg";
|
||||
GOPATH = "$XDG_DATA_HOME/go";
|
||||
GRADLE_USER_HOME = "$XDG_DATA_HOME/gradle";
|
||||
IPYTHONDIR = "$XDG_CONFIG_HOMEipython";
|
||||
JUPYTER_CONFIG_DIR = "$XDG_CONFIG_HOME/jupyter";
|
||||
LESSHISTFILE = "$XDG_CACHE_HOME/less/history";
|
||||
NUGET_PACKAGES = "$XDG_CACHE_HOME/NuGetPackages";
|
||||
PYTHONSTARTUP = "$XDG_CONFIG_HOME/python/pythonrc";
|
||||
KERAS_HOME = "$XDG_STATE_HOME/keras";
|
||||
RUSTUP_HOME = "$XDG_DATA_HOME/rustup";
|
||||
XCOMPOSECACHE = "$XDG_CACHE_HOME/X11/xcompose";
|
||||
SSB_HOME = "$XDG_DATA_HOME/zoom";
|
||||
HISTFILE = "$XDG_STATE_HOME/zsh/history";
|
||||
LD_LIBRARY_PATH = "/run/current-system/sw/share/nix-ld/lib";
|
||||
HISTSIZE = 3000;
|
||||
SAVEHIST = 3000;
|
||||
CARGO_HOME = "$XDG_DATA_HOME/cargo";
|
||||
GNUPGHOME = "$XDG_DATA_HOME/gnupg";
|
||||
GOPATH = "$XDG_DATA_HOME/go";
|
||||
GRADLE_USER_HOME = "$XDG_DATA_HOME/gradle";
|
||||
IPYTHONDIR = "$XDG_CONFIG_HOME/ipython";
|
||||
JUPYTER_CONFIG_DIR = "$XDG_CONFIG_HOME/jupyter";
|
||||
LESSHISTFILE = "$XDG_CACHE_HOME/less/history";
|
||||
NUGET_PACKAGES = "$XDG_CACHE_HOME/NuGetPackages";
|
||||
PYTHONSTARTUP = "$XDG_CONFIG_HOME/python/pythonrc";
|
||||
KERAS_HOME = "$XDG_STATE_HOME/keras";
|
||||
RUSTUP_HOME = "$XDG_DATA_HOME/rustup";
|
||||
XCOMPOSECACHE = "$XDG_CACHE_HOME/X11/xcompose";
|
||||
SSB_HOME = "$XDG_DATA_HOME/zoom";
|
||||
HISTFILE = "$XDG_STATE_HOME/zsh/history";
|
||||
};
|
||||
|
||||
shellAliases = {
|
||||
nix-switch = "sudo nixos-rebuild switch";
|
||||
nix-upgrade = "sudo nixos-rebuild switch --upgrade";
|
||||
nix-edit = "sudo vim /etc/nixos/configuration.nix";
|
||||
ls = "exa -lag --icons";
|
||||
upload = "~/.config/script/upload.sh";
|
||||
record = "~/.config/script/record.sh";
|
||||
speak = "~/.config/script/wisper.sh";
|
||||
vim = "nvim";
|
||||
cat = "bat";
|
||||
anime = "~/repos/ani-cli/ani-cli";
|
||||
hentai = "~/repos/and-scripts/fap-cli";
|
||||
manga = "manga-cli";
|
||||
yt = "~/repos/ytfzf/ytfzf --thumb-viewer='kitty' -t";
|
||||
cd = "z";
|
||||
rm = "rip";
|
||||
df = "duf";
|
||||
time = "hyperfine";
|
||||
kami = "~/Documents/Rust/kami/target/release/kami";
|
||||
calc = "cpc";
|
||||
pdf = "mupdf";
|
||||
emacs = "emacs";
|
||||
river = "dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP=river && river";
|
||||
cp = "xcp";
|
||||
wget = "wget --hsts-file=$XDG_DATA_HOME/wget-hsts";
|
||||
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";
|
||||
record = "~/.config/script/record.sh";
|
||||
speak = "~/.config/script/wisper.sh";
|
||||
vim = "nvim";
|
||||
cat = "bat";
|
||||
anime = "~/repos/ani-cli/ani-cli";
|
||||
hentai = "~/repos/and-scripts/fap-cli";
|
||||
manga = "manga-cli";
|
||||
yt = "~/repos/ytfzf/ytfzf --thumb-viewer='kitty' -t";
|
||||
cd = "z";
|
||||
rm = "rip";
|
||||
df = "duf";
|
||||
time = "hyperfine";
|
||||
kami = "~/Documents/Rust/kami/target/release/kami";
|
||||
calc = "cpc";
|
||||
pdf = "mupdf";
|
||||
emacs = "emacs";
|
||||
river = "dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP=river && river";
|
||||
cp = "xcp";
|
||||
wget = "wget --hsts-file=$XDG_DATA_HOME/wget-hsts";
|
||||
};
|
||||
|
||||
initContent = ''
|
||||
eval "$(${lib.getExe pkgs.zoxide} init zsh)"
|
||||
eval "$(${lib.getExe pkgs.atuin} init zsh)"
|
||||
source ${pkgs.spaceship-prompt}/lib/spaceship-prompt/spaceship.zsh
|
||||
'';
|
||||
|
||||
envExtra = ''
|
||||
${lib.getExe pkgs.macchina}
|
||||
nixdev() {
|
||||
|
||||
1184
flake.lock
generated
1184
flake.lock
generated
File diff suppressed because it is too large
Load Diff
64
flake.nix
64
flake.nix
@@ -2,23 +2,39 @@
|
||||
description = "Nixos config flake";
|
||||
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";
|
||||
home-manager = {
|
||||
url = "github:nix-community/home-manager";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
stylix.url = "github:nix-community/stylix";
|
||||
nix-colors.url = "github:Misterio77/nix-colors";
|
||||
anyrun.url = "github:Kirottu/anyrun";
|
||||
anyrun.inputs.nixpkgs.follows = "nixpkgs";
|
||||
zen-browser.url = "github:0xc000022070/zen-browser-flake";
|
||||
nixcord.url = "github:kaylorben/nixcord";
|
||||
niri.url = "github:sodiboo/niri-flake";
|
||||
zen-browser = {
|
||||
url = "github:0xc000022070/zen-browser-flake";
|
||||
inputs = {
|
||||
nixpkgs.follows = "nixpkgs";
|
||||
home-manager.follows = "home-manager";
|
||||
};
|
||||
};
|
||||
nixcord = {
|
||||
url = "github:kaylorben/nixcord";
|
||||
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 = {
|
||||
# remove ?ref=v0.1.0 to track the master branch
|
||||
url = "git+https://git.outfoxxed.me/outfoxxed/quickshell";
|
||||
|
||||
# THIS IS IMPORTANT
|
||||
# Mismatched system dependencies will lead to crashes and other issues.
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
@@ -31,23 +47,49 @@
|
||||
url = "github:thiagokokada/nix-alien";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
hyprland = {
|
||||
url = "github:hyprwm/Hyprland";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
hyprland-plugins = {
|
||||
url = "github:hyprwm/hyprland-plugins";
|
||||
inputs.hyprland.follows = "hyprland";
|
||||
};
|
||||
hyprland-hyprsplit = {
|
||||
url = "github:Duckonaut/split-monitor-workspaces";
|
||||
inputs.hyprland.follows = "hyprland";
|
||||
};
|
||||
vicinae = {
|
||||
url = "github:vicinaehq/vicinae";
|
||||
#inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
# ... your existing inputs ...
|
||||
jovian = {
|
||||
url = "github:Jovian-Experiments/Jovian-NixOS";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
};
|
||||
|
||||
outputs =
|
||||
{
|
||||
self,
|
||||
nixpkgs,
|
||||
anyrun,
|
||||
...
|
||||
}@inputs:
|
||||
let
|
||||
system = "x86_64-linux";
|
||||
#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
|
||||
{
|
||||
nixosConfigurations = {
|
||||
laptop = nixpkgs.lib.nixosSystem {
|
||||
mrfluffyLaptop = nixpkgs.lib.nixosSystem {
|
||||
specialArgs = {
|
||||
systemName = "laptop";
|
||||
inherit inputs window_manager;
|
||||
@@ -55,9 +97,10 @@
|
||||
modules = [
|
||||
./configuration.nix
|
||||
inputs.home-manager.nixosModules.default
|
||||
inputs.nix-index-database.nixosModules.nix-index
|
||||
];
|
||||
};
|
||||
pc = nixpkgs.lib.nixosSystem {
|
||||
mrfluffyPC = nixpkgs.lib.nixosSystem {
|
||||
specialArgs = {
|
||||
systemName = "pc";
|
||||
inherit inputs window_manager;
|
||||
@@ -65,6 +108,7 @@
|
||||
modules = [
|
||||
./configuration.nix
|
||||
inputs.home-manager.nixosModules.default
|
||||
inputs.nix-index-database.nixosModules.nix-index
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
@@ -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") {
|
||||
@@ -56,7 +61,7 @@
|
||||
fsType = "vfat";
|
||||
})
|
||||
(lib.mkIf (systemName == "laptop") {
|
||||
device = "/dev/disk/by-uuid/A4F3-8038";
|
||||
device = "/dev/disk/by-uuid/FF4B-819D";
|
||||
fsType = "vfat";
|
||||
options = [
|
||||
"fmask=0077"
|
||||
@@ -71,6 +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 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;
|
||||
}
|
||||
@@ -6,211 +6,295 @@
|
||||
...
|
||||
}:
|
||||
let
|
||||
# hyprlock = pkgs.callPackage ../../universal/personalPKGS/hyprlock.nix {};
|
||||
# hypridle = pkgs.callPackage ../../universal/personalPKGS/hypridle.nix {};
|
||||
|
||||
defaultProfile = {
|
||||
id = 0;
|
||||
name = "default";
|
||||
isDefault = true;
|
||||
};
|
||||
in
|
||||
#hyprlock = pkgs.callPackage ../../universal/personalPKGS/hyprlock.nix {};
|
||||
#hypridle = pkgs.callPackage ../../universal/personalPKGS/hypridle.nix {};
|
||||
{
|
||||
programs.nix-index.enable = true;
|
||||
programs.lazygit.enable = true;
|
||||
imports = [
|
||||
inputs.zen-browser.homeModules.beta
|
||||
inputs.caelestia.homeManagerModules.default
|
||||
inputs.vicinae.homeManagerModules.default
|
||||
];
|
||||
|
||||
programs = {
|
||||
zen-browser = {
|
||||
enable = true;
|
||||
profiles.default = defaultProfile;
|
||||
};
|
||||
|
||||
firefox = {
|
||||
enable = true;
|
||||
profiles.default = defaultProfile;
|
||||
};
|
||||
|
||||
nix-index = {
|
||||
enable = true;
|
||||
enableZshIntegration = true;
|
||||
};
|
||||
lazygit.enable = true;
|
||||
|
||||
vscode = {
|
||||
enable = true;
|
||||
|
||||
# Key fix: don’t let the CLI touch ~/.vscode/extensions
|
||||
mutableExtensionsDir = false;
|
||||
|
||||
# (Optional but nice) Use a build with a stable headless CLI:
|
||||
# package = pkgs.vscodium; # or keep pkgs.vscode
|
||||
|
||||
profiles.default = {
|
||||
extensions = with pkgs.vscode-extensions; [
|
||||
platformio.platformio-vscode-ide
|
||||
ms-vscode.cpptools
|
||||
];
|
||||
|
||||
# Optional: keep Code from trying to self-update
|
||||
# userSettings = {
|
||||
# "update.mode" = "none";
|
||||
# "extensions.autoUpdate" = false;
|
||||
# };
|
||||
};
|
||||
|
||||
# Optional (older HM versions expose these at top-level):
|
||||
# enableUpdateCheck = false;
|
||||
# enableExtensionUpdateCheck = false;
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
services.vicinae = {
|
||||
enable = true; # default: false
|
||||
systemd = {
|
||||
enable = true;
|
||||
environment = {
|
||||
USE_LAYER_SHELL = 1;
|
||||
};
|
||||
};
|
||||
#package = # specify package to use here. Can be omitted.
|
||||
# Installing (vicinae) extensions declaratively
|
||||
#settings = {
|
||||
# faviconService = "twenty"; # twenty | google | none
|
||||
# font.size = 11;
|
||||
# popToRootOnClose = false;
|
||||
# rootSearch.searchFiles = false;
|
||||
# theme.name = "vicinae-dark";
|
||||
# window = {
|
||||
# csd = true;
|
||||
# opacity = 0.95;
|
||||
# rounding = 10;
|
||||
# };
|
||||
#};
|
||||
#extensions = [
|
||||
# (inputs.vicinae.mkVicinaeExtension.${pkgs.stdenv.hostPlatform.system} {
|
||||
# inherit pkgs;
|
||||
# name = "extension-name";
|
||||
# src = pkgs.fetchFromGitHub {
|
||||
# # You can also specify different sources other than github
|
||||
# owner = "repo-owner";
|
||||
# repo = "repo-name";
|
||||
# rev = "v1.0"; # If the extension has no releases use the latest commit hash
|
||||
# # You can get the sha256 by rebuilding once and then copying the output hash from the error message
|
||||
# sha256 = "sha256-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=";
|
||||
# }; # If the extension is in a subdirectory you can add ` + "/subdir"` between the brace and the semicolon here
|
||||
# })
|
||||
#];
|
||||
};
|
||||
|
||||
qt.enable = true;
|
||||
#qt.style = "gtk2";
|
||||
#qt.platformTheme = "qt5ct";
|
||||
#imports = [ inputs.anyrun.homeManagerModules.default ];
|
||||
# qt.style = "gtk2";
|
||||
# qt.platformTheme = "qt5ct";
|
||||
|
||||
nixpkgs.config.allowUnfree = true;
|
||||
nixpkgs.config.permittedInsecurePackages = [ "freeimage-unstable-2021-11-01" ];
|
||||
programs.vscode = {
|
||||
enable = true;
|
||||
};
|
||||
programs.anyrun = {
|
||||
enable = true;
|
||||
nixpkgs = {
|
||||
config = {
|
||||
plugins = [
|
||||
# An array of all the plugins you want, which either can be paths to the .so files, or their packages
|
||||
"${pkgs.anyrun}/lib/libapplications.so"
|
||||
"${pkgs.anyrun}/lib/libdictionary.so"
|
||||
"${pkgs.anyrun}/lib/libsymbols.so"
|
||||
"${pkgs.anyrun}/lib/librink.so"
|
||||
"${pkgs.anyrun}/lib/libtranslate.so"
|
||||
"${pkgs.anyrun}/lib/libwebsearch.so"
|
||||
allowUnfree = true;
|
||||
android_sdk.accept_license = true;
|
||||
permittedInsecurePackages = [
|
||||
"freeimage-unstable-2021-11-01"
|
||||
"qtwebengine-5.15.19"
|
||||
];
|
||||
x = {
|
||||
fraction = 0.5;
|
||||
};
|
||||
y = {
|
||||
fraction = 0.3;
|
||||
};
|
||||
width = {
|
||||
fraction = 0.3;
|
||||
};
|
||||
hideIcons = false;
|
||||
ignoreExclusiveZones = false;
|
||||
layer = "overlay";
|
||||
hidePluginInfo = false;
|
||||
closeOnClick = false;
|
||||
showResultsImmediately = false;
|
||||
maxEntries = null;
|
||||
rocmSupport = true;
|
||||
};
|
||||
extraCss = ''
|
||||
.some_class
|
||||
enable = true;{
|
||||
background: red;
|
||||
}
|
||||
'';
|
||||
extraConfigFiles."websearch.ron".text = ''
|
||||
Config(
|
||||
prefix: "",
|
||||
// Options: Google, Ecosia, Bing, DuckDuckGo, Custom
|
||||
//
|
||||
// Custom engines can be defined as such:
|
||||
// Custom(
|
||||
// name: "Searx",
|
||||
// url: "searx.be/?q={}",
|
||||
// )
|
||||
//
|
||||
// NOTE: `{}` is replaced by the search query and `https://` is automatically added in front.
|
||||
engines: [Google]
|
||||
)
|
||||
'';
|
||||
extraConfigFiles."dictionary.ron".text = ''
|
||||
Config(
|
||||
prefix: "",
|
||||
max_entries: 5,
|
||||
)
|
||||
'';
|
||||
extraConfigFiles."rink.ron".text = ''
|
||||
Config(
|
||||
prefix: "",
|
||||
max_entries: 5,
|
||||
)
|
||||
'';
|
||||
extraConfigFiles."translate.ron".text = ''
|
||||
Config(
|
||||
prefix: ":",
|
||||
language_delimiter: ">",
|
||||
max_entries: 3,
|
||||
)
|
||||
'';
|
||||
|
||||
extraConfigFiles."symbols.ron".text = ''
|
||||
Config (
|
||||
// The prefix that the search needs to begin with to yield symbol results
|
||||
prefix: "",
|
||||
// Custom user defined symbols to be included along the unicode symbols
|
||||
symbols: {
|
||||
// "name": "text to be copied"
|
||||
"shrug": "¯\\_(ツ)_/¯",
|
||||
},
|
||||
max_entries: 3,
|
||||
)
|
||||
'';
|
||||
};
|
||||
|
||||
services.kdeconnect.enable = true;
|
||||
|
||||
# programs.obs-studio = {
|
||||
# enable = true;
|
||||
# plugins = with pkgs.obs-studio-plugins; [
|
||||
# wlrobs
|
||||
# obs-backgroundremoval
|
||||
# obs-pipewire-audio-capture
|
||||
# ];
|
||||
# };
|
||||
|
||||
home.packages = with pkgs; [
|
||||
|
||||
# # Adds the 'hello' command to your environment. It prints a friendly
|
||||
# # "Hello, world!" when run.
|
||||
# pkgs.hello
|
||||
|
||||
# # It is sometimes useful to fine-tune packages, for example, by applying
|
||||
# # overrides. You can do that directly here, just don't forget the
|
||||
# # parentheses. Maybe you want to install Nerd Fonts with a limited number of
|
||||
# # fonts?
|
||||
# (pkgs.nerdfonts.override { fonts = [ "FantasqueSansMono" ]; })
|
||||
|
||||
# # You can also create simple shell scripts directly inside your
|
||||
# # configuration. For example, this adds a command 'my-hello' to your
|
||||
# # environment:
|
||||
# (pkgs.writeShellScriptBin "my-hello" ''
|
||||
# echo "Hello, ${config.home.username}!"
|
||||
# '')
|
||||
############################
|
||||
# Shells & Terminals
|
||||
############################
|
||||
alacritty
|
||||
zsh
|
||||
zoom-us
|
||||
rink
|
||||
firefox
|
||||
btop
|
||||
libreoffice-fresh
|
||||
rustup
|
||||
rustc
|
||||
macchina
|
||||
hyprpaper
|
||||
#xwaylandvideobridge
|
||||
|
||||
############################
|
||||
# CLI Shit
|
||||
############################
|
||||
atuin
|
||||
|
||||
############################
|
||||
# System Utilities
|
||||
############################
|
||||
app2unit
|
||||
brightnessctl
|
||||
ddcutil
|
||||
duf
|
||||
grim
|
||||
slurp
|
||||
swappy
|
||||
heroic
|
||||
gamemode
|
||||
goverlay
|
||||
libnotify
|
||||
lm_sensors
|
||||
macchina
|
||||
rm-improved
|
||||
nodejs_20
|
||||
playerctl
|
||||
pamixer
|
||||
openai-whisper
|
||||
libreoffice
|
||||
zathura
|
||||
imv
|
||||
libsixel
|
||||
prismlauncher
|
||||
godot_4
|
||||
wf-recorder
|
||||
jellyfin-media-player
|
||||
pcmanfm
|
||||
xarchiver
|
||||
xdg-user-dirs
|
||||
|
||||
############################
|
||||
# Monitoring & TUI Apps
|
||||
############################
|
||||
btop
|
||||
cava
|
||||
|
||||
############################
|
||||
# Wayland / Desktop Tools
|
||||
############################
|
||||
grim
|
||||
hyprpaper
|
||||
hyprpicker
|
||||
mangohud
|
||||
#discord
|
||||
mpv
|
||||
rofi
|
||||
xdg-user-dirs
|
||||
xarchiver
|
||||
atuin
|
||||
blender-hip
|
||||
wineWowPackages.stable
|
||||
gdb
|
||||
slurp
|
||||
swappy
|
||||
wf-recorder
|
||||
|
||||
############################
|
||||
# Audio / Media Tools
|
||||
############################
|
||||
openai-whisper
|
||||
pamixer
|
||||
playerctl
|
||||
alsa-utils
|
||||
|
||||
############################
|
||||
# Browsers & Web
|
||||
############################
|
||||
brave
|
||||
slack
|
||||
firefox
|
||||
ladybird
|
||||
wgnord
|
||||
|
||||
############################
|
||||
# Communication & Sharing
|
||||
############################
|
||||
#element-desktop
|
||||
localsend
|
||||
thunderbird
|
||||
|
||||
############################
|
||||
# Documents & Viewers
|
||||
############################
|
||||
libreoffice
|
||||
libreoffice-fresh
|
||||
zathura
|
||||
|
||||
############################
|
||||
# Media Players & Imaging
|
||||
############################
|
||||
imv
|
||||
mpv
|
||||
#upscaler
|
||||
pear-desktop
|
||||
libsixel
|
||||
|
||||
############################
|
||||
# Development Toolchains
|
||||
############################
|
||||
gdb
|
||||
nodejs_20
|
||||
platformio
|
||||
rustc
|
||||
rustup
|
||||
zed-editor
|
||||
dualsensectl
|
||||
mangayomi
|
||||
element-desktop
|
||||
scrcpy
|
||||
android-studio-full
|
||||
claude-code
|
||||
# Language tooling from inputs
|
||||
#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 / Creative
|
||||
############################
|
||||
blender
|
||||
godot_4
|
||||
freecad
|
||||
|
||||
############################
|
||||
# Emulation
|
||||
############################
|
||||
fuse
|
||||
fuse-emulator
|
||||
fuse3
|
||||
alacritty
|
||||
networkmanagerapplet
|
||||
#inputs.way-inhibitor.packages.${pkgs.system}.default
|
||||
inputs.zen-browser.packages.${pkgs.system}.twilight
|
||||
#inputs.quickshell.packages.${pkgs.system}.default
|
||||
inputs.qs-qml.packages.${pkgs.system}.tree-sitter-qmljs
|
||||
inputs.qs-qml.packages.${pkgs.system}.qml-ts-mode
|
||||
lxqt.pcmanfm-qt
|
||||
protonup-qt
|
||||
ddcutil
|
||||
brightnessctl
|
||||
app2unit
|
||||
cava
|
||||
lm_sensors
|
||||
thunderbird
|
||||
libnotify
|
||||
localsend
|
||||
|
||||
############################
|
||||
# Android Tools
|
||||
############################
|
||||
android-tools
|
||||
#grayjay
|
||||
youtube-music
|
||||
ulauncher
|
||||
inputs.caelestia.packages.${pkgs.system}.caelestia-shell
|
||||
inputs.caelestia-cli.packages.${pkgs.system}.caelestia-cli
|
||||
scrcpy
|
||||
|
||||
############################
|
||||
# Gaming & Launchers
|
||||
############################
|
||||
dualsensectl
|
||||
gamemode
|
||||
goverlay
|
||||
(pkgs.heroic.override {
|
||||
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
|
||||
kdePackages.ffmpegthumbs # new
|
||||
kdePackages.kdegraphics-mobipocket # new
|
||||
kdePackages.kdegraphics-thumbnailers # new
|
||||
kdePackages.kdesdk-thumbnailers # new
|
||||
kdePackages.kimageformats # new
|
||||
kdePackages.kio
|
||||
kdePackages.kio-extras
|
||||
# kdePackages.breeze-icons
|
||||
# kdePackages.dolphin-plugins
|
||||
# kdePackages.kde-cli-tools
|
||||
# resvg # new
|
||||
adwaita-icon-theme
|
||||
hicolor-icon-theme
|
||||
qt6.qtsvg
|
||||
|
||||
adw-gtk3
|
||||
pywalfox-native
|
||||
|
||||
############################
|
||||
# Experimental (inputs)
|
||||
############################
|
||||
#inputs.ladybird.packages."${pkgs.stdenv.hostPlatform.system}".ladybird
|
||||
#inputs.hyprlauncher.packages.${pkgs.stdenv.hostPlatform.system}.default
|
||||
|
||||
############################
|
||||
# Blockchain (inputs)
|
||||
############################
|
||||
#inputs.caelestia-cli.packages.${pkgs.stdenv.hostPlatform.system}.caelestia-cli
|
||||
#inputs.caelestia.packages.${pkgs.stdenv.hostPlatform.system}.caelestia-shell
|
||||
];
|
||||
}
|
||||
|
||||
@@ -10,118 +10,110 @@ let
|
||||
in
|
||||
{
|
||||
imports = [
|
||||
# Core theming & integrations
|
||||
inputs.nix-colors.homeManagerModules.default
|
||||
inputs.stylix.homeModules.stylix
|
||||
inputs.nixcord.homeModules.nixcord
|
||||
#inputs.niri.homeModules.niri
|
||||
# inputs.niri.homeModules.niri
|
||||
|
||||
# Local modules
|
||||
./sessionVars.nix
|
||||
./stylix.nix
|
||||
./homePkgs.nix
|
||||
./services.nix
|
||||
|
||||
# Dots
|
||||
../dots/foot.nix
|
||||
../dots/waybar.nix
|
||||
../dots/zsh.nix
|
||||
../dots/nixcord.nix
|
||||
../dots/hyprlock.nix
|
||||
./stylix.nix
|
||||
./homePkgs.nix
|
||||
./services.nix
|
||||
#../dots/hyprlock.nix
|
||||
../dots/xdg.nix
|
||||
../dots/river.nix
|
||||
../dots/niri.nix
|
||||
#../dots/niri.nix
|
||||
../dots/hyprland.nix
|
||||
../dots/hyprpaper.nix
|
||||
|
||||
../dots/caelestia.nix
|
||||
../dots/dankMeterialShell.nix
|
||||
];
|
||||
|
||||
# you can go look here for a list of color schemes https://github.com/tinted-theming/schemes
|
||||
# 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 Manager needs a bit of information about you and the paths it should manage.
|
||||
home.username = "mrfluffy";
|
||||
home.homeDirectory = "/home/mrfluffy";
|
||||
|
||||
# This value determines the Home Manager release that your configuration is
|
||||
# compatible with. This helps avoid breakage when a new Home Manager release
|
||||
# introduces backwards incompatible changes.
|
||||
#
|
||||
# You should not change this value, even if you update Home Manager. If you do
|
||||
# want to update the value, then make sure to first check the Home Manager
|
||||
# release notes.
|
||||
# This determines compatibility with a specific Home Manager release.
|
||||
home.stateVersion = "23.11"; # Please read the comment before changing.
|
||||
|
||||
# The home.packages option allows you to install Nix packages into your
|
||||
# environment.
|
||||
#gtk = {
|
||||
# enable = true;
|
||||
# iconTheme = {
|
||||
# name = "Dracula";
|
||||
# # package = pkgs.dracula-icon-theme;
|
||||
# };
|
||||
#};
|
||||
# Example GTK block (disabled)
|
||||
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; [
|
||||
swaybg
|
||||
############################
|
||||
# Wayland / Desktop tools
|
||||
############################
|
||||
lswt
|
||||
swaybg
|
||||
wlr-randr
|
||||
#inputs.ladybird.packages."${pkgs.system}".ladybird
|
||||
|
||||
# # Adds the 'hello' command to your environment. It prints a friendly
|
||||
# # "Hello, world!" when run.
|
||||
############################
|
||||
# Experimental (inputs)
|
||||
############################
|
||||
# inputs.ladybird.packages."${pkgs.stdenv.hostPlatform.system}".ladybird
|
||||
|
||||
# ##########################
|
||||
# Examples (disabled)
|
||||
# ##########################
|
||||
# pkgs.hello
|
||||
|
||||
# # It is sometimes useful to fine-tune packages, for example, by applying
|
||||
# # overrides. You can do that directly here, just don't forget the
|
||||
# # parentheses. Maybe you want to install Nerd Fonts with a limited number of
|
||||
# # fonts?
|
||||
# (pkgs.nerdfonts.override { fonts = [ "FantasqueSansMono" ]; })
|
||||
|
||||
# # You can also create simple shell scripts directly inside your
|
||||
# # configuration. For example, this adds a command 'my-hello' to your
|
||||
# # environment:
|
||||
# (pkgs.writeShellScriptBin "my-hello" ''
|
||||
# echo "Hello, ${config.home.username}!"
|
||||
# '')
|
||||
];
|
||||
|
||||
# Home Manager is pretty good at managing dotfiles. The primary way to manage
|
||||
# plain files is through 'home.file'.
|
||||
# Dotfiles & static files managed by Home Manager
|
||||
home.file = {
|
||||
# # Building this configuration will create a copy of 'dotfiles/screenrc' in
|
||||
# # the Nix store. Activating the configuration will then make '~/.screenrc' a
|
||||
# # symlink to the Nix store copy.
|
||||
# ".screenrc".source = dotfiles/screenrc;
|
||||
|
||||
# # You can also set the file content immediately.
|
||||
# ".gradle/gradle.properties".text = ''
|
||||
# org.gradle.console=verbose
|
||||
# org.gradle.daemon.idletimeout=3600000
|
||||
# '';
|
||||
#
|
||||
".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;
|
||||
# ".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
|
||||
# '';
|
||||
};
|
||||
|
||||
# Home Manager can also manage your environment variables through
|
||||
# 'home.sessionVariables'. If you don't want to manage your shell through Home
|
||||
# Manager then you have to manually source 'hm-session-vars.sh' located at
|
||||
# either
|
||||
#
|
||||
# ~/.nix-profile/etc/profile.d/hm-session-vars.sh
|
||||
#
|
||||
# or
|
||||
#
|
||||
# ~/.local/state/nix/profiles/profile/etc/profile.d/hm-session-vars.sh
|
||||
#
|
||||
# or
|
||||
#
|
||||
# /etc/profiles/per-user/mrfluffy/etc/profile.d/hm-session-vars.sh
|
||||
#
|
||||
# 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;
|
||||
|
||||
@@ -7,26 +7,26 @@
|
||||
...
|
||||
}:
|
||||
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") {
|
||||
Unit = {
|
||||
Description = "QuickShell Application";
|
||||
After = [ "graphical-session.target" ];
|
||||
Requires = [ "graphical-session.target" ];
|
||||
};
|
||||
#systemd.user.services.quickshell = lib.mkIf (window_manager == "hyprland") {
|
||||
# Unit = {
|
||||
# Description = "QuickShell Application";
|
||||
# After = [ "graphical-session.target" ];
|
||||
# Requires = [ "graphical-session.target" ];
|
||||
# };
|
||||
|
||||
Service = {
|
||||
Type = "simple";
|
||||
ExecStart = "${quickshellPackage}/bin/caelestia-shell";
|
||||
ExecStartPre = "/bin/sh -c 'test -n \"$WAYLAND_DISPLAY\"'";
|
||||
Restart = "always";
|
||||
RestartSec = "5s";
|
||||
};
|
||||
# Service = {
|
||||
# Type = "simple";
|
||||
# ExecStart = "${quickshellPackage}/bin/caelestia-shell";
|
||||
# ExecStartPre = "/bin/sh -c 'test -n \"$WAYLAND_DISPLAY\"'";
|
||||
# Restart = "always";
|
||||
# RestartSec = "5s";
|
||||
# };
|
||||
|
||||
Install = {
|
||||
WantedBy = [ "graphical-session.target" ];
|
||||
};
|
||||
};
|
||||
# Install = {
|
||||
# WantedBy = [ "graphical-session.target" ];
|
||||
# };
|
||||
#};
|
||||
}
|
||||
|
||||
106
home/stylix.nix
106
home/stylix.nix
@@ -7,77 +7,85 @@
|
||||
let
|
||||
inherit (config.colorScheme) palette;
|
||||
oreo = pkgs.callPackage ../personalPKGS/oreo.nix { };
|
||||
openSans = {
|
||||
package = pkgs.open-sans;
|
||||
name = "Open Sans";
|
||||
};
|
||||
in
|
||||
{
|
||||
stylix = {
|
||||
enable = true;
|
||||
autoEnable = false;
|
||||
targets.font-packages.enable = true;
|
||||
#targets.fontconfig.enable = true;
|
||||
targets.gtk.enable = true;
|
||||
targets.kde.enable = true;
|
||||
targets.qt.enable = true;
|
||||
targets.vscode.enable = true;
|
||||
targets.lazygit.enable = true;
|
||||
targets.foot.enable = true;
|
||||
targets.river.enable = true;
|
||||
targets.hyprland.enable = true;
|
||||
targets.waybar.enable = true;
|
||||
targets.nixcord.enable = true;
|
||||
iconTheme = {
|
||||
enable = true;
|
||||
package = lib.mkForce pkgs.dracula-icon-theme;
|
||||
light = "Dracula";
|
||||
dark = "Dracula";
|
||||
|
||||
targets = {
|
||||
font-packages.enable = true;
|
||||
# fontconfig.enable = true;
|
||||
|
||||
#gtk = {
|
||||
# enable = true;
|
||||
# flatpakSupport.enable = true;
|
||||
#};
|
||||
#kde.enable = true;
|
||||
|
||||
#qt.enable = true;
|
||||
#vscode.enable = true;
|
||||
lazygit.enable = true;
|
||||
#foot.enable = true;
|
||||
river.enable = true;
|
||||
#hyprland.enable = true;
|
||||
waybar.enable = true;
|
||||
nixcord.enable = true;
|
||||
|
||||
#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";
|
||||
#};
|
||||
|
||||
polarity = "dark";
|
||||
image = ../assets/Wallpapers/001.jpg;
|
||||
|
||||
base16Scheme = {
|
||||
base00 = "${palette.base00}";
|
||||
base01 = "${palette.base01}";
|
||||
base02 = "${palette.base02}";
|
||||
base03 = "${palette.base03}";
|
||||
base04 = "${palette.base04}";
|
||||
base05 = "${palette.base05}";
|
||||
base06 = "${palette.base06}";
|
||||
base07 = "${palette.base07}";
|
||||
base08 = "${palette.base08}";
|
||||
base09 = "${palette.base09}";
|
||||
base0A = "${palette.base0A}";
|
||||
base0B = "${palette.base0B}";
|
||||
base0C = "${palette.base0C}";
|
||||
base0D = "${palette.base0D}";
|
||||
base0E = "${palette.base0E}";
|
||||
base0F = "${palette.base0F}";
|
||||
inherit (palette)
|
||||
base00 base01 base02 base03 base04 base05 base06 base07
|
||||
base08 base09 base0A base0B base0C base0D base0E base0F;
|
||||
};
|
||||
|
||||
fonts = {
|
||||
serif = {
|
||||
package = pkgs.open-sans;
|
||||
name = "Open Sans";
|
||||
};
|
||||
sansSerif = {
|
||||
package = pkgs.open-sans;
|
||||
name = "Open Sans";
|
||||
};
|
||||
#monospace = {
|
||||
# package = pkgs.dejavu_fonts;
|
||||
# name = "DejaVu Sans Mono";
|
||||
#};
|
||||
serif = openSans;
|
||||
sansSerif = openSans;
|
||||
|
||||
# monospace = {
|
||||
# package = pkgs.dejavu_fonts;
|
||||
# name = "DejaVu Sans Mono";
|
||||
# };
|
||||
monospace = {
|
||||
package = pkgs.iosevka-comfy.comfy;
|
||||
name = "Iosevka Comfy";
|
||||
};
|
||||
emoji = {
|
||||
package = pkgs.noto-fonts-emoji;
|
||||
package = pkgs.noto-fonts-color-emoji;
|
||||
name = "Noto Color Emoji";
|
||||
};
|
||||
sizes = {
|
||||
applications = 12;
|
||||
desktop = 12;
|
||||
popups = 14;
|
||||
terminal = 16;
|
||||
desktop = 12;
|
||||
popups = 14;
|
||||
terminal = 16;
|
||||
};
|
||||
};
|
||||
|
||||
cursor = {
|
||||
package = oreo.override { colors = [ "oreo_spark_pink_cursors" ]; };
|
||||
name = "oreo_spark_pink_cursors";
|
||||
|
||||
131
home/work.nix
131
home/work.nix
@@ -10,119 +10,104 @@ let
|
||||
in
|
||||
{
|
||||
imports = [
|
||||
# Core theming & apps
|
||||
inputs.nix-colors.homeManagerModules.default
|
||||
inputs.stylix.homeModules.stylix
|
||||
inputs.nixcord.homeModules.nixcord
|
||||
#inputs.niri.homeModules.niri
|
||||
# inputs.niri.homeModules.niri
|
||||
|
||||
# Local modules
|
||||
./sessionVars.nix
|
||||
./stylix.nix
|
||||
./homePkgs.nix
|
||||
./services.nix
|
||||
|
||||
# Dots
|
||||
../dots/foot.nix
|
||||
../dots/waybar.nix
|
||||
../dots/zsh.nix
|
||||
../dots/nixcord.nix
|
||||
../dots/hyprlock.nix
|
||||
./stylix.nix
|
||||
./homePkgs.nix
|
||||
./services.nix
|
||||
#../dots/hyprlock.nix
|
||||
../dots/xdg.nix
|
||||
../dots/river.nix
|
||||
../dots/niri.nix
|
||||
#../dots/niri.nix
|
||||
../dots/hyprland.nix
|
||||
../dots/hyprpaper.nix
|
||||
../dots/caelestia.nix
|
||||
../dots/dankMeterialShell.nix
|
||||
|
||||
];
|
||||
|
||||
# you can go look here for a list of color schemes 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.
|
||||
# You can find color schemes at: https://github.com/tinted-theming/schemes
|
||||
colorScheme = inputs.nix-colors.colorSchemes.blueish;
|
||||
stylix.base16Scheme.base00 = "0F1417";
|
||||
|
||||
# Home Manager user information
|
||||
home.username = "work";
|
||||
home.homeDirectory = "/home/work";
|
||||
|
||||
# This value determines the Home Manager release that your configuration is
|
||||
# compatible with. This helps avoid breakage when a new Home Manager release
|
||||
# introduces backwards incompatible changes.
|
||||
#
|
||||
# You should not change this value, even if you update Home Manager. If you do
|
||||
# want to update the value, then make sure to first check the Home Manager
|
||||
# release notes.
|
||||
# This determines compatibility with a specific Home Manager release.
|
||||
home.stateVersion = "23.11"; # Please read the comment before changing.
|
||||
|
||||
# The home.packages option allows you to install Nix packages into your
|
||||
# environment.
|
||||
#gtk = {
|
||||
# enable = true;
|
||||
# iconTheme = {
|
||||
# name = "Dracula";
|
||||
# # package = pkgs.dracula-icon-theme;
|
||||
# };
|
||||
#};
|
||||
# Example GTK block (disabled)
|
||||
gtk = {
|
||||
enable = true;
|
||||
iconTheme = {
|
||||
name = "Reversal-black-dark";
|
||||
package = pkgs.reversal-icon-theme.override { allColorVariants = true; };
|
||||
};
|
||||
};
|
||||
|
||||
home.packages = with pkgs; [
|
||||
swaybg
|
||||
############################
|
||||
# Wayland / Desktop tools
|
||||
############################
|
||||
lswt
|
||||
swaybg
|
||||
wlr-randr
|
||||
brave
|
||||
#swaynotificationcenter
|
||||
#inputs.ladybird.packages."${pkgs.system}".ladybird
|
||||
|
||||
# # Adds the 'hello' command to your environment. It prints a friendly
|
||||
# # "Hello, world!" when run.
|
||||
############################
|
||||
# Browsers
|
||||
############################
|
||||
|
||||
############################
|
||||
# work stuff
|
||||
############################
|
||||
#awscli2
|
||||
|
||||
|
||||
# swaynotificationcenter
|
||||
# inputs.ladybird.packages."${pkgs.stdenv.hostPlatform.system}".ladybird
|
||||
|
||||
# pkgs.hello
|
||||
|
||||
# # It is sometimes useful to fine-tune packages, for example, by applying
|
||||
# # overrides. You can do that directly here, just don't forget the
|
||||
# # parentheses. Maybe you want to install Nerd Fonts with a limited number of
|
||||
# # fonts?
|
||||
# (pkgs.nerdfonts.override { fonts = [ "FantasqueSansMono" ]; })
|
||||
|
||||
# # You can also create simple shell scripts directly inside your
|
||||
# # configuration. For example, this adds a command 'my-hello' to your
|
||||
# # environment:
|
||||
# (pkgs.writeShellScriptBin "my-hello" ''
|
||||
# echo "Hello, ${config.home.username}!"
|
||||
# '')
|
||||
];
|
||||
|
||||
# Home Manager is pretty good at managing dotfiles. The primary way to manage
|
||||
# plain files is through 'home.file'.
|
||||
# Dotfiles & static files managed by Home Manager
|
||||
home.file = {
|
||||
# # Building this configuration will create a copy of 'dotfiles/screenrc' in
|
||||
# # the Nix store. Activating the configuration will then make '~/.screenrc' a
|
||||
# # symlink to the Nix store copy.
|
||||
# ".screenrc".source = dotfiles/screenrc;
|
||||
|
||||
# # You can also set the file content immediately.
|
||||
# ".gradle/gradle.properties".text = ''
|
||||
# org.gradle.console=verbose
|
||||
# org.gradle.daemon.idletimeout=3600000
|
||||
# '';
|
||||
#
|
||||
".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;
|
||||
# ".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
|
||||
# '';
|
||||
};
|
||||
|
||||
# Home Manager can also manage your environment variables through
|
||||
# 'home.sessionVariables'. If you don't want to manage your shell through Home
|
||||
# Manager then you have to manually source 'hm-session-vars.sh' located at
|
||||
# either
|
||||
#
|
||||
# ~/.nix-profile/etc/profile.d/hm-session-vars.sh
|
||||
#
|
||||
# or
|
||||
#
|
||||
# ~/.local/state/nix/profiles/profile/etc/profile.d/hm-session-vars.sh
|
||||
#
|
||||
# or
|
||||
#
|
||||
# /etc/profiles/per-user/mrfluffy/etc/profile.d/hm-session-vars.sh
|
||||
#
|
||||
# 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;
|
||||
|
||||
@@ -6,53 +6,54 @@
|
||||
...
|
||||
}:
|
||||
|
||||
let
|
||||
isLaptop = systemName == "laptop";
|
||||
isPc = systemName == "pc";
|
||||
|
||||
initrdBaseModules = [ "btusb" ];
|
||||
initrdLPModules = [ "kvm" ]; # for laptop & pc
|
||||
|
||||
kernelBaseModules = [ "v4l2loopback" ];
|
||||
|
||||
kernelBaseParams = [ ];
|
||||
kernelLPParams = [ "ipv6e=1" ]; # for laptop & pc
|
||||
kernelLaptopOnly = [ "i915.force_probe=46a6" ];
|
||||
kernelPcOnly = [ "video=2560x1440x32" ];
|
||||
in
|
||||
{
|
||||
# Use the systemd-boot EFI boot loader.
|
||||
boot = {
|
||||
loader = {
|
||||
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;
|
||||
};
|
||||
|
||||
initrd.kernelModules = lib.mkMerge [
|
||||
[
|
||||
"btusb"
|
||||
]
|
||||
(lib.mkIf (systemName == "laptop") [
|
||||
"kvm"
|
||||
])
|
||||
(lib.mkIf (systemName == "pc") [
|
||||
"amdgpu"
|
||||
"kvm"
|
||||
])
|
||||
initrdBaseModules
|
||||
(lib.mkIf (isLaptop || isPc) initrdLPModules)
|
||||
];
|
||||
|
||||
kernelPackages = pkgs.linuxPackages_latest;
|
||||
kernelModules = [ "v4l2loopback" ];
|
||||
kernelModules = kernelBaseModules;
|
||||
|
||||
extraModulePackages = [
|
||||
pkgs.linuxPackages_latest.v4l2loopback
|
||||
];
|
||||
|
||||
kernelParams = lib.mkMerge [
|
||||
(lib.mkIf (systemName == "laptop") [
|
||||
"ipv6e=1"
|
||||
"i915.force_probe=46a6"
|
||||
])
|
||||
(lib.mkIf (systemName == "pc") [
|
||||
"video=2560x1440x32"
|
||||
"ipv6e=1"
|
||||
])
|
||||
(lib.mkIf (isLaptop || isPc) kernelLPParams)
|
||||
(lib.mkIf isLaptop kernelLaptopOnly)
|
||||
(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 = true;
|
||||
themePackages = [
|
||||
pkgs.plymouth-matrix-theme
|
||||
];
|
||||
theme = "matrix";
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
{
|
||||
#fonts.fontconfig.enable = true;
|
||||
fonts.packages = with pkgs; [
|
||||
ubuntu_font_family
|
||||
ubuntu-classic
|
||||
siji
|
||||
unifont
|
||||
noto-fonts
|
||||
|
||||
@@ -6,9 +6,18 @@
|
||||
...
|
||||
}:
|
||||
|
||||
let
|
||||
# Shared VA-API / VDPAU bits across both machines
|
||||
commonVA = with pkgs; [
|
||||
libva
|
||||
libva-vdpau-driver
|
||||
libvdpau-va-gl
|
||||
];
|
||||
in
|
||||
{
|
||||
# hardware stuff
|
||||
# ── Graphics ─────────────────────────────────────────────────────────────────
|
||||
hardware.graphics = lib.mkMerge [
|
||||
# Laptop: Intel stack
|
||||
(lib.mkIf (systemName == "laptop") {
|
||||
enable = true;
|
||||
enable32Bit = true;
|
||||
@@ -16,49 +25,57 @@
|
||||
intel-media-driver
|
||||
intel-vaapi-driver
|
||||
vpl-gpu-rt
|
||||
libva
|
||||
vaapiVdpau
|
||||
libvdpau-va-gl
|
||||
];
|
||||
] ++ commonVA;
|
||||
})
|
||||
|
||||
# PC: AMD/ROCm stack
|
||||
(lib.mkIf (systemName == "pc") {
|
||||
enable = true;
|
||||
enable32Bit = true;
|
||||
extraPackages = with pkgs; [
|
||||
rocmPackages.rocm-runtime
|
||||
rocmPackages.clr.icd
|
||||
rocmPackages.rocm-smi
|
||||
rocmPackages.clr
|
||||
rocmPackages.hipblas
|
||||
rocmPackages.rocblas
|
||||
rocmPackages.rocsolver
|
||||
rocmPackages.rocm-comgr
|
||||
rocmPackages.rocsparse
|
||||
libva
|
||||
vaapiVdpau
|
||||
libvdpau-va-gl
|
||||
];
|
||||
#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
|
||||
# driversi686Linux.mesa
|
||||
] ++ commonVA;
|
||||
})
|
||||
];
|
||||
|
||||
hardware.bluetooth.enable = true; # enables support for Bluetooth
|
||||
hardware.bluetooth.powerOnBoot = true; # powers up the default Bluetooth controller on boot
|
||||
# hardware.pulseaudio = {
|
||||
# package = pkgs.pulseaudioFull;
|
||||
# };
|
||||
hardware.bluetooth.settings = {
|
||||
General = {
|
||||
Enable = "Source,Sink,Media,Socket";
|
||||
#Experimental = true;
|
||||
# ── Bluetooth ────────────────────────────────────────────────────────────────
|
||||
hardware.bluetooth = {
|
||||
enable = true; # Enable Bluetooth support
|
||||
powerOnBoot = true; # Power up controller on boot
|
||||
settings.General = {
|
||||
#Enable = "Source,Sink,Media,Socket";
|
||||
# Experimental = true;
|
||||
};
|
||||
};
|
||||
hardware.opentabletdriver.enable = true;
|
||||
hardware.opentabletdriver.daemon.enable = true;
|
||||
# Enable sound.
|
||||
# sound.enable = true;
|
||||
#hardware.pulseaudio = {
|
||||
# enable = true;
|
||||
# package = pkgs.pulseaudioFull;
|
||||
#};
|
||||
|
||||
# ── Tablets ─────────────────────────────────────────────────────────────────
|
||||
hardware.opentabletdriver = {
|
||||
enable = true;
|
||||
daemon.enable = true;
|
||||
};
|
||||
hardware.enableRedistributableFirmware = true;
|
||||
hardware.firmware = [
|
||||
pkgs.linux-firmware
|
||||
];
|
||||
|
||||
# ── Audio (disabled examples) ───────────────────────────────────────────────
|
||||
# sound.enable = true;
|
||||
# hardware.pulseaudio = {
|
||||
# enable = true;
|
||||
# package = pkgs.pulseaudioFull;
|
||||
# };
|
||||
}
|
||||
|
||||
@@ -1,46 +1,26 @@
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
systemName,
|
||||
...
|
||||
}:
|
||||
{ config, lib, pkgs, systemName, ... }:
|
||||
|
||||
{
|
||||
console.keyMap = "ie";
|
||||
i18n = lib.mkMerge [
|
||||
(lib.mkIf (systemName == "laptop") {
|
||||
defaultLocale = "en_IE.UTF-8";
|
||||
inputMethod = {
|
||||
enable = true;
|
||||
type = "fcitx5";
|
||||
fcitx5.addons = with pkgs; [
|
||||
fcitx5-mozc
|
||||
fcitx5-gtk
|
||||
];
|
||||
};
|
||||
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";
|
||||
};
|
||||
})
|
||||
(lib.mkIf (systemName == "pc") {
|
||||
inputMethod = {
|
||||
enable = true;
|
||||
type = "fcitx5";
|
||||
fcitx5.addons = with pkgs; [
|
||||
fcitx5-mozc
|
||||
fcitx5-gtk
|
||||
];
|
||||
};
|
||||
})
|
||||
];
|
||||
# Set console keymap based on systemName
|
||||
console.keyMap = if systemName == "laptop" then "ie" else "us";
|
||||
|
||||
# Locale settings
|
||||
i18n.defaultLocale =
|
||||
if systemName == "laptop"
|
||||
then "en_IE.UTF-8"
|
||||
else "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;
|
||||
};
|
||||
}
|
||||
|
||||
@@ -5,35 +5,55 @@
|
||||
systemName,
|
||||
...
|
||||
}:
|
||||
|
||||
let
|
||||
isLaptop = systemName == "laptop";
|
||||
isPc = systemName == "pc";
|
||||
in
|
||||
{
|
||||
# Open ports in the firewall.
|
||||
# networking.firewall.allowedTCPPorts = [ ... ];
|
||||
# networking.firewall.allowedUDPPorts = [ ... ];
|
||||
# Or disable the firewall altogether.
|
||||
#networking.hostName = "mrfluffyLaptop"; # Define your hostname.
|
||||
networking.hostName = lib.mkMerge [
|
||||
(lib.mkIf (systemName == "laptop") "mrfluffyLaptop")
|
||||
(lib.mkIf (systemName == "pc") "mrfluffyPC")
|
||||
];
|
||||
networking = lib.mkMerge [
|
||||
# Hostname per system type
|
||||
(lib.mkIf isLaptop { hostName = "mrfluffyLaptop"; })
|
||||
(lib.mkIf isPc { hostName = "mrfluffyPC"; })
|
||||
|
||||
networking.firewall.enable = false;
|
||||
networking.firewall.checkReversePath = false;
|
||||
# Pick only one of the below networking options.
|
||||
# networking.wireless.enable = true; # Enables wireless support via wpa_supplicant.
|
||||
networking.networkmanager = {
|
||||
enable = true; # Easiest to use and most distros use this by default.
|
||||
enableStrongSwan = true;
|
||||
};
|
||||
#networking.enableIPv6 = false;
|
||||
# Configure network proxy if necessary
|
||||
# networking.proxy.default = "http://user:password@proxy:port/";
|
||||
# networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";
|
||||
networking.extraHosts = ''
|
||||
127.0.0.0 localhost
|
||||
'';
|
||||
networking.nameservers = [ "192.168.1.180" ];
|
||||
# # environment.etc = {
|
||||
# # "resolv.conf".text = "nameserver 192.168.1.180\noptions edns0 trust-ad\nsearch home\n";
|
||||
# # };
|
||||
# Common networking config
|
||||
{
|
||||
# Firewall
|
||||
firewall = {
|
||||
# allowedTCPPorts = [ ... ];
|
||||
# allowedUDPPorts = [ ... ];
|
||||
enable = false;
|
||||
checkReversePath = false;
|
||||
};
|
||||
|
||||
# NetworkManager
|
||||
networkmanager = {
|
||||
enable = true;
|
||||
dns = "default"; # Changed from "none" to get DNS from DHCP (router)
|
||||
};
|
||||
|
||||
# DHCP
|
||||
useDHCP = false;
|
||||
dhcpcd.enable = false;
|
||||
|
||||
# IPv6
|
||||
enableIPv6 = true;
|
||||
|
||||
# Hosts & DNS
|
||||
extraHosts = ''
|
||||
127.0.0.0 localhost
|
||||
'';
|
||||
# nameservers = [ ... ]; # Commented out to use DHCP-provided ones
|
||||
search = [
|
||||
"localdomain"
|
||||
"local"
|
||||
];
|
||||
|
||||
# Proxies (disabled)
|
||||
# proxy.default = "http://user:password@proxy:port/";
|
||||
# proxy.noProxy = "127.0.0.1,localhost,internal.domain";
|
||||
|
||||
# Wireless (alternative approach, disabled)
|
||||
# wireless.enable = true; # wpa_supplicant
|
||||
}
|
||||
];
|
||||
}
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
let
|
||||
inherit (pkgs) anime4k;
|
||||
|
||||
# Use writeText instead of writeLua luacheck can't cry about the long lines
|
||||
# Use writeText instead of writeLua so linters don't complain about long lines
|
||||
autoAnime4k = pkgs.writeText "auto-anime4k-switcher.lua" ''
|
||||
local function get_nearest(x, numbers)
|
||||
local min_index = nil
|
||||
@@ -26,13 +26,7 @@ let
|
||||
return numbers[min_index]
|
||||
end
|
||||
|
||||
-- Fast
|
||||
-- local shader_map = {
|
||||
-- [1080] = "${anime4k}/Anime4K_Clamp_Highlights.glsl:${anime4k}/Anime4K_Restore_CNN_M.glsl:${anime4k}/Anime4K_Upscale_CNN_x2_M.glsl:${anime4k}/Anime4K_AutoDownscalePre_x2.glsl:${anime4k}/Anime4K_AutoDownscalePre_x4.glsl:${anime4k}/Anime4K_Upscale_CNN_x2_S.glsl",
|
||||
-- [720] = "${anime4k}/Anime4K_Clamp_Highlights.glsl:${anime4k}/Anime4K_Restore_CNN_Soft_M.glsl:${anime4k}/Anime4K_Upscale_CNN_x2_M.glsl:${anime4k}/Anime4K_AutoDownscalePre_x2.glsl:${anime4k}/Anime4K_AutoDownscalePre_x4.glsl:${anime4k}/Anime4K_Upscale_CNN_x2_S.glsl",
|
||||
-- [480] = "${anime4k}/Anime4K_Clamp_Highlights.glsl:${anime4k}/Anime4K_Upscale_Denoise_CNN_x2_M.glsl:${anime4k}/Anime4K_AutoDownscalePre_x2.glsl:${anime4k}/Anime4K_AutoDownscalePre_x4.glsl:${anime4k}/Anime4K_Upscale_CNN_x2_S.glsl"
|
||||
-- }
|
||||
-- HQ
|
||||
-- HQ shader map
|
||||
local shader_map = {
|
||||
[1080] = "${anime4k}/Anime4K_Clamp_Highlights.glsl:${anime4k}/Anime4K_Restore_CNN_VL.glsl:${anime4k}/Anime4K_Upscale_CNN_x2_VL.glsl:${anime4k}/Anime4K_AutoDownscalePre_x2.glsl:${anime4k}/Anime4K_AutoDownscalePre_x4.glsl:${anime4k}/Anime4K_Upscale_CNN_x2_M.glsl",
|
||||
[720] = "${anime4k}/Anime4K_Clamp_Highlights.glsl:${anime4k}/Anime4K_Restore_CNN_Soft_VL.glsl:${anime4k}/Anime4K_Upscale_CNN_x2_VL.glsl:${anime4k}/Anime4K_AutoDownscalePre_x2.glsl:${anime4k}/Anime4K_AutoDownscalePre_x4.glsl:${anime4k}/Anime4K_Upscale_CNN_x2_M.glsl",
|
||||
@@ -55,138 +49,184 @@ let
|
||||
end)
|
||||
'';
|
||||
in
|
||||
|
||||
{
|
||||
programs.gamescope = {
|
||||
enable = true;
|
||||
|
||||
};
|
||||
nixpkgs.config = {
|
||||
allowUnfree = true;
|
||||
############################
|
||||
# Nixpkgs & overlays
|
||||
############################
|
||||
nixpkgs = {
|
||||
config.allowUnfree = true;
|
||||
overlays = [
|
||||
(self: super: {
|
||||
mpv = super.wrapMpv (super.mpv.unwrapped.override { sixelSupport = true; }) {
|
||||
scripts = [ self.mpvScripts.mpris ];
|
||||
};
|
||||
})
|
||||
];
|
||||
};
|
||||
|
||||
nixpkgs.overlays = [
|
||||
(self: super: {
|
||||
|
||||
mpv = super.wrapMpv (super.mpv.unwrapped.override { sixelSupport = true; }) {
|
||||
scripts = [ self.mpvScripts.mpris ];
|
||||
|
||||
};
|
||||
})
|
||||
];
|
||||
# Some programs need SUID wrappers, can be configured further or are
|
||||
# started in user sessions.
|
||||
# programs.mtr.enable = true;
|
||||
# programs.gnupg.agent = {
|
||||
# enable = true;
|
||||
# enableSSHSupport = true;
|
||||
# };
|
||||
programs.direnv = {
|
||||
enable = true;
|
||||
enableZshIntegration = true;
|
||||
nix-direnv.enable = true;
|
||||
silent = true;
|
||||
};
|
||||
programs.virt-manager.enable = true;
|
||||
programs.zsh.enable = true;
|
||||
programs.corectrl.enable = true;
|
||||
programs.opengamepadui = {
|
||||
enable = true;
|
||||
gamescopeSession.enable = true;
|
||||
};
|
||||
programs.steam = {
|
||||
enable = true;
|
||||
remotePlay.openFirewall = true; # Open ports in the firewall for Steam Remote Play
|
||||
dedicatedServer.openFirewall = true; # Open ports in the firewall for Source Dedicated Server
|
||||
gamescopeSession = {
|
||||
############################
|
||||
# Core programs
|
||||
############################
|
||||
programs = {
|
||||
dconf.enable = true;
|
||||
|
||||
appimage = {
|
||||
enable = true;
|
||||
binfmt = true; # Optional: Allows direct execution of .AppImage files without `appimage-run` prefix
|
||||
package = pkgs.appimage-run.override {
|
||||
extraPkgs = pkgs: with pkgs; [
|
||||
libepoxy
|
||||
jdk17
|
||||
# Add more if needed, e.g., libGL libGLU for OpenGL issues
|
||||
];
|
||||
};
|
||||
};
|
||||
gamescope = {
|
||||
enable = true;
|
||||
capSysNice = false;
|
||||
};
|
||||
|
||||
nix-index-database = {
|
||||
comma = {
|
||||
enable = true;
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
nh = {
|
||||
enable = true;
|
||||
clean = {
|
||||
enable = true;
|
||||
extraArgs = "--keep-since 4d --keep 3";
|
||||
};
|
||||
flake = "$HOME/nixos-dots/"; # sets NH_OS_FLAKE
|
||||
};
|
||||
|
||||
direnv = {
|
||||
enable = true;
|
||||
enableZshIntegration = true;
|
||||
nix-direnv.enable = true;
|
||||
silent = true;
|
||||
};
|
||||
|
||||
virt-manager.enable = true;
|
||||
corectrl.enable = true;
|
||||
|
||||
opengamepadui = {
|
||||
enable = true;
|
||||
gamescopeSession.enable = true;
|
||||
};
|
||||
|
||||
steam = {
|
||||
enable = true;
|
||||
remotePlay.openFirewall = true;
|
||||
dedicatedServer.openFirewall = true;
|
||||
extraCompatPackages = with pkgs; [ gamescope mangohud gamemode ];
|
||||
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
|
||||
# glibc
|
||||
# ...
|
||||
];
|
||||
};
|
||||
|
||||
# Backlight tool
|
||||
light.enable = true;
|
||||
|
||||
# NetworkManager applet
|
||||
nm-applet = {
|
||||
enable = false;
|
||||
indicator = false;
|
||||
};
|
||||
thunar = {
|
||||
enable = true;
|
||||
plugins = with pkgs; [
|
||||
thunar-archive-plugin
|
||||
thunar-volman
|
||||
];
|
||||
};
|
||||
xfconf.enable = true;
|
||||
|
||||
};
|
||||
# enable dynamic bin executables
|
||||
programs.nix-ld.enable = true;
|
||||
programs.nix-ld.libraries = with pkgs; [
|
||||
# add libraries here
|
||||
#alsa-lib
|
||||
#libGL
|
||||
#glibc
|
||||
#glib
|
||||
#fontconfig
|
||||
#xorg.libX11
|
||||
#xorg.libXcomposite
|
||||
#xorg.libXdamage
|
||||
#xorg.libXfixes
|
||||
#xorg.libXrender
|
||||
#xorg.libXrandr
|
||||
#xorg.libXtst
|
||||
#xorg_sys_opengl
|
||||
#xorg.libXi
|
||||
#xorg.libxshmfence
|
||||
#xorg.libxkbfile
|
||||
#xorg.libxcb
|
||||
#xorg.xcbutilwm
|
||||
#xorg.xcbutilimage
|
||||
#xorg.xcbutilkeysyms
|
||||
#xorg.xcbutilrenderutil
|
||||
#xcb-util-cursor
|
||||
#libgbm
|
||||
#libxkbcommon
|
||||
#freetype
|
||||
#dbus
|
||||
#krb5
|
||||
#nss
|
||||
#zotero
|
||||
#nspr
|
||||
#gtk3
|
||||
#libappindicator-gtk3
|
||||
#mesa
|
||||
#vulkan-loader
|
||||
];
|
||||
|
||||
#backlight tool
|
||||
programs.light.enable = true;
|
||||
|
||||
programs.nm-applet.enable = true;
|
||||
|
||||
# List packages installed in system profile. To search, run:
|
||||
# $ nix search wget
|
||||
############################
|
||||
# System packages
|
||||
############################
|
||||
environment.systemPackages = with pkgs; [
|
||||
vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
|
||||
neovim
|
||||
wl-clipboard
|
||||
# --- Editors & Shell UX ---
|
||||
bat
|
||||
anime4k
|
||||
socat
|
||||
neovim
|
||||
vim
|
||||
zoxide
|
||||
|
||||
# --- CLI essentials ---
|
||||
eza
|
||||
wget
|
||||
foot
|
||||
spaceship-prompt
|
||||
git
|
||||
bitwarden
|
||||
zip
|
||||
xclip
|
||||
fd
|
||||
fzf
|
||||
zotero
|
||||
jdk11
|
||||
hunspell
|
||||
hunspellDicts.en_US
|
||||
pavucontrol
|
||||
zoxide
|
||||
ripgrep
|
||||
wget
|
||||
xcp
|
||||
polkit_gnome
|
||||
zip
|
||||
unzip
|
||||
|
||||
# --- Nix tooling ---
|
||||
nil
|
||||
nixfmt
|
||||
inputs.nix-alien.packages.${pkgs.stdenv.hostPlatform.system}.nix-alien
|
||||
|
||||
# --- Wayland / Desktop ---
|
||||
foot
|
||||
libdecor
|
||||
wl-clipboard
|
||||
xwayland-satellite
|
||||
|
||||
# --- Media / Graphics ---
|
||||
anime4k
|
||||
ffmpeg
|
||||
libva-utils
|
||||
nixfmt-rfc-style
|
||||
nil
|
||||
kdePackages.qt6ct
|
||||
ripgrep
|
||||
xwayland-satellite
|
||||
pavucontrol
|
||||
|
||||
# --- Networking / Secrets ---
|
||||
bitwarden-desktop
|
||||
polkit_gnome
|
||||
xclip
|
||||
socat
|
||||
|
||||
# --- Development toolchains ---
|
||||
cmake
|
||||
gcc15
|
||||
gnumake
|
||||
gcc
|
||||
libtool
|
||||
jdk11
|
||||
ladspaPlugins
|
||||
inputs.nix-alien.packages.${pkgs.system}.nix-alien
|
||||
libtool
|
||||
python311
|
||||
|
||||
# --- Spellcheck / Fonts ---
|
||||
hunspell
|
||||
hunspellDicts.en_US
|
||||
|
||||
# --- KDE Wallet bits ---
|
||||
kdePackages.kwallet
|
||||
kdePackages.kwalletmanager
|
||||
kdePackages.kwallet-pam
|
||||
|
||||
# --- Apps ---
|
||||
git
|
||||
zotero
|
||||
|
||||
|
||||
# --- File System Stuff ---
|
||||
cifs-utils
|
||||
|
||||
];
|
||||
}
|
||||
|
||||
@@ -7,18 +7,20 @@
|
||||
}:
|
||||
|
||||
{
|
||||
|
||||
###############################################
|
||||
# Desktop & Input
|
||||
###############################################
|
||||
services.xserver.windowManager.fvwm2.gestures = true;
|
||||
# Enable CUPS to print documents.
|
||||
services.printing.enable = true;
|
||||
|
||||
# power managment
|
||||
services.power-profiles-daemon.enable = true;
|
||||
services.upower = {
|
||||
# Enable touchpad support (enabled by default in most desktop managers).
|
||||
services.libinput = {
|
||||
enable = true;
|
||||
touchpad = {
|
||||
tapping = true;
|
||||
# horizontalScrolling = false;
|
||||
};
|
||||
};
|
||||
|
||||
services.gnome.gnome-keyring.enable = true;
|
||||
# Configure keymap in X11
|
||||
# services.xserver.xkb.layout = "us";
|
||||
# services.xserver.xkb.options = "eurosign:e,caps:escape";
|
||||
@@ -28,10 +30,10 @@
|
||||
# Enable the GNOME Desktop Environment.
|
||||
# services.xserver.displayManager.gdm.enable = true;
|
||||
# services.xserver.desktopManager.gnome.enable = true;
|
||||
#
|
||||
|
||||
services.flatpak.enable = true;
|
||||
services.automatic-timezoned.enable = true;
|
||||
###############################################
|
||||
# Audio / Bluetooth
|
||||
###############################################
|
||||
services.pipewire = lib.mkMerge [
|
||||
(lib.mkIf (systemName == "laptop") {
|
||||
enable = true;
|
||||
@@ -65,106 +67,159 @@
|
||||
];
|
||||
};
|
||||
};
|
||||
#"93-mic-gain" = {
|
||||
# "context.modules" = [
|
||||
# {
|
||||
# name = "libpipewire-module-filter-chain";
|
||||
# args = {
|
||||
# node.description = "Mic Gain Boost";
|
||||
# media.name = "Mic Gain Boost";
|
||||
# filter.graph = {
|
||||
# nodes = [
|
||||
# {
|
||||
# type = "ladspa";
|
||||
# name = "gain";
|
||||
# plugin = "amp"; # LADSPA amplifier plugin
|
||||
# label = "amp_mono";
|
||||
# control = {
|
||||
# "Gain" = 12.0; # Boost gain by 12 dB (adjust as needed)
|
||||
# };
|
||||
# }
|
||||
# ];
|
||||
# };
|
||||
# capture.props = {
|
||||
# "node.name" = "effect_input.mic_boost";
|
||||
# "audio.position" = [ "MONO" ];
|
||||
# };
|
||||
# playback.props = {
|
||||
# "node.name" = "effect_output.mic_boost";
|
||||
# "audio.position" = [ "MONO" ];
|
||||
# };
|
||||
# };
|
||||
# }
|
||||
# ];
|
||||
#};
|
||||
};
|
||||
#wireplumber.extraConfig = {
|
||||
# "monitor.alsa.rules" = {
|
||||
# rule1 = { # Give the rule a unique name
|
||||
# matches = [
|
||||
# { "node.name" = "~alsa_input.*"; }
|
||||
# ];
|
||||
# actions = {
|
||||
# update-props = {
|
||||
# "api.alsa.soft-mixer" = true;
|
||||
# "api.alsa.volume" = "100%";
|
||||
# "api.alsa.headroom" = 0;
|
||||
# };
|
||||
# };
|
||||
# };
|
||||
# };
|
||||
#};
|
||||
})
|
||||
];
|
||||
|
||||
###############################################
|
||||
# nice shit
|
||||
###############################################
|
||||
services.ananicy = {
|
||||
enable = true;
|
||||
package = pkgs.ananicy-cpp;
|
||||
rulesProvider = pkgs.ananicy-cpp;
|
||||
extraRules = [
|
||||
{
|
||||
"name" = "gamescope";
|
||||
"nice" = -20;
|
||||
}
|
||||
];
|
||||
};
|
||||
|
||||
services.blueman.enable = true;
|
||||
|
||||
# Enable touchpad support (enabled default in most desktopManager).
|
||||
services.libinput = {
|
||||
###############################################
|
||||
# Printing & Files
|
||||
###############################################
|
||||
# Enable CUPS to print documents.
|
||||
services.printing.enable = true;
|
||||
|
||||
services.gvfs.enable = true;
|
||||
services.tumbler.enable = true;
|
||||
|
||||
###############################################
|
||||
# Time & Power
|
||||
###############################################
|
||||
services.automatic-timezoned.enable = true;
|
||||
|
||||
# Power management
|
||||
services.power-profiles-daemon.enable = true;
|
||||
services.upower = {
|
||||
enable = true;
|
||||
touchpad = {
|
||||
tapping = true;
|
||||
#horizontalScrolling = false;
|
||||
};
|
||||
};
|
||||
# List services that you want to enable:
|
||||
|
||||
# Laptop-specific lid and sleep behavior
|
||||
services.logind.settings.Login = lib.mkIf (systemName == "laptop") {
|
||||
HandleLidSwitch = "suspend-then-hibernate";
|
||||
HandleLidSwitchExternalPower = "suspend-then-hibernate";
|
||||
HandleLidSwitchDocked = "suspend-then-hibernate";
|
||||
};
|
||||
|
||||
systemd.sleep.extraConfig = lib.mkIf (systemName == "laptop") ''
|
||||
HibernateDelaySec=120min
|
||||
SuspendState=mem
|
||||
'';
|
||||
|
||||
###############################################
|
||||
# Developer Tools & Services
|
||||
###############################################
|
||||
# direnv speedup
|
||||
services.lorri.enable = true;
|
||||
|
||||
services.emacs = {
|
||||
enable = true;
|
||||
package = pkgs.emacs-pgtk; # replace with emacs-gtk, or a version provided by the community overlay if desired.
|
||||
# replace with emacs-gtk, or a version provided by the community overlay if desired.
|
||||
package = pkgs.emacs-pgtk;
|
||||
};
|
||||
|
||||
#services.flatpak.enable = true;
|
||||
|
||||
# Sunshine (only on PC)
|
||||
services.sunshine = lib.mkIf (systemName == "pc") {
|
||||
enable = true;
|
||||
enable = false;
|
||||
settings = {
|
||||
sunshine_name = "nixos";
|
||||
port = 47989;
|
||||
output_name = 0;
|
||||
};
|
||||
applications = {
|
||||
apps = [
|
||||
{
|
||||
name = "Steam";
|
||||
env = {
|
||||
PATH = "$(PATH):/run/current-system/sw/bin";
|
||||
};
|
||||
output = "steam.txt";
|
||||
detached = [ "${pkgs.util-linux}/bin/setsid ${pkgs.steam}/bin/steam steam://open/gamepadui" ];
|
||||
detached = [
|
||||
"setsid /run/current-system/sw/bin/steam steam://open/bigpicture"
|
||||
];
|
||||
prep-cmd = [
|
||||
{
|
||||
"do" = "";
|
||||
"undo" = "setsid /run/current-system/sw/bin/steam steam://close/bigpicture";
|
||||
}
|
||||
];
|
||||
image-path = "steam.png";
|
||||
}
|
||||
];
|
||||
};
|
||||
capSysAdmin = true;
|
||||
capSysAdmin = false;
|
||||
openFirewall = true;
|
||||
};
|
||||
|
||||
# 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 = {
|
||||
#HSA_OVERRIDE_GFX_VERSION = "11.0.0";
|
||||
#OLLAMA_KV_CACHE_TYPE = "q4";
|
||||
OLLAMA_DEBUG = "1";
|
||||
OLLAMA_MMAP = "0";
|
||||
OLLAMA_NUM_CTX = "40000";
|
||||
OLLAMA_NUM_GPU = "20";
|
||||
OLLAMA_FLASH_ATTENTION = "true";
|
||||
# HSA_OVERRIDE_GFX_VERSION = "11.0.0";
|
||||
OLLAMA_KV_CACHE_TYPE = "f16";
|
||||
};
|
||||
};
|
||||
|
||||
services.gvfs.enable = true;
|
||||
###############################################
|
||||
# Systemd User Services
|
||||
###############################################
|
||||
systemd.user.services.steam-run-url-service = {
|
||||
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"
|
||||
fi
|
||||
done
|
||||
'';
|
||||
in
|
||||
"${script}";
|
||||
Restart = "always";
|
||||
};
|
||||
path = [ pkgs.steam ];
|
||||
};
|
||||
|
||||
###############################################
|
||||
# Networking & Remote
|
||||
###############################################
|
||||
# services.resolved = {
|
||||
# enable = true;
|
||||
# dnssec = "true";
|
||||
@@ -173,23 +228,25 @@
|
||||
# dnsovertls = "true";
|
||||
# };
|
||||
|
||||
virtualisation.libvirtd.enable = true;
|
||||
# Enable the OpenSSH daemon.
|
||||
services.openssh.enable = true;
|
||||
# laptop screen lid colose stuff
|
||||
services.logind = lib.mkIf (systemName == "laptop") {
|
||||
lidSwitch = "suspend-then-hibernate";
|
||||
lidSwitchExternalPower = "suspend-then-hibernate";
|
||||
lidSwitchDocked = "suspend-then-hibernate";
|
||||
};
|
||||
#suspend stuff
|
||||
systemd.sleep.extraConfig = lib.mkIf (systemName == "laptop") ''
|
||||
HibernateDelaySec=120min
|
||||
SuspendState=mem
|
||||
'';
|
||||
#udev rules
|
||||
#services.udev.extraRules = ''
|
||||
# KERNEL=="hidraw*", KERNELS=="*054C:0CE6*", MODE="0660", TAG+="uaccess"
|
||||
#'';
|
||||
|
||||
###############################################
|
||||
# Virtualization
|
||||
###############################################
|
||||
virtualisation.libvirtd.enable = true;
|
||||
|
||||
###############################################
|
||||
# Udev Rules
|
||||
###############################################
|
||||
services.udev.packages = [
|
||||
pkgs.platformio-core
|
||||
pkgs.platformio
|
||||
pkgs.openocd
|
||||
#pkgs.brave
|
||||
];
|
||||
|
||||
# services.udev.extraRules = ''
|
||||
# KERNEL=="hidraw*", KERNELS=="*054C:0CE6*", MODE="0660", TAG+="uaccess"
|
||||
# '';
|
||||
}
|
||||
|
||||
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