Compare commits

..

No commits in common. "7a0a62fd88359eea51cbd66284847c24c88953e2" and "02de4d9cb3e25e8cec092f39b4f3acad1ba23f62" have entirely different histories.

50 changed files with 3316 additions and 846 deletions

759
flake.lock generated

File diff suppressed because it is too large Load diff

View file

@ -28,7 +28,19 @@
inputs.nixpkgs.follows = "nixpkgs-stable";
};
## Theming ##
# TODO: theming
## Hyprland ##
watershot = {
url = "github:Liassica/watershot/165dd431c95054ac1bfea2f9a85e1be924af21c9";
inputs.nixpkgs.follows = "nixpkgs-stable";
};
better-control = {
url = "github:rishabh5321/better-control-flake";
inputs.nixpkgs.follows = "nixpkgs";
};
rose-pine-hyprcursor = {
url = "github:ndom91/rose-pine-hyprcursor";

View file

@ -1,3 +1,5 @@
#FIXME: Move attrs that will only work on linux to nixos.nix
#FIXME: if pulling in homemanager for isMinimal maybe set up conditional for some packages
{
config,
lib,
@ -16,7 +18,17 @@ in
"modules/global"
"modules/home"
])
(lib.custom.scanPaths ./.)
./asdf.nix
./bash.nix # TODO: setup a nicer bash config... or zsh
./bat.nix
./direnv.nix
./fastfetch
./fish
./git.nix
./ranger.nix
./screen.nix
./ssh.nix
./zoxide.nix
];
services.ssh-agent.enable = true;
@ -31,8 +43,9 @@ in
sessionVariables = {
EDITOR = "micro";
FLAKE = "${homeDir}/git/Nix/dot.nix";
MANPAGER = "batman";
MANPAGER = "batman"; # see ./cli/bat.nix
SHELL = shell;
TERM = "foot";
VISUAL = "micro";
};
preferXdgDirectories = true; # whether to make programs use XDG directories whenever supported
@ -54,14 +67,15 @@ in
};
};
# Core pkgs with no configs
home.packages = builtins.attrValues {
inherit (pkgs)
# Packages that don't have custom configs go here
btop # resource monitor
coreutils # basic gnu utils
dust # disk usage
eza # ls replacement
jq # json parser
p7zip # compression & encryption
pre-commit # git hooks
trashy # trash cli
unrar # rar extraction

View file

@ -15,7 +15,9 @@
delta # diffing
gh # github cli
logisim-evolution
mcaselector
prettierd
# nix
nixpkgs-review

View file

@ -1,3 +1,5 @@
# This module just provides a customized .desktop file with gamescope args dynamically created based on the
# host's monitors configuration
{
pkgs,
config,
@ -5,51 +7,50 @@
...
}:
#INFO: Gamescope is REALLY broken rn, this wont work
# let
# monitor = lib.head (lib.filter (m: m.primary) config.monitors);
# steam-session =
# let
# gamescope = lib.concatStringsSep " " [
# (lib.getExe pkgs.gamescope)
# "--rt"
# "--output-width ${toString monitor.width}"
# "--output-height ${toString monitor.height}"
# "--framerate-limit ${toString monitor.refreshRate}"
# "--prefer-output ${monitor.name}"
# "--adaptive-sync"
# "--expose-wayland"
# "--backend wayland"
# "--force-grab-cursor"
# "--steam"
# # "--hdr-enabled"
# ];
# steam = lib.concatStringsSep " " [
# "steam"
# #"steam://open/bigpicture"
# "-forcedesktopscaling ${toString monitor.scale}"
# "-nofriendsui"
# "-noschatui"
# ];
# in
# pkgs.writeTextDir "share/applications/steam-session.desktop" ''
# [Desktop Entry]
# Name=Steam Session
# Comment=Steam with Gamescope
# Exec=${gamescope} -- ${steam}
# Icon=steam
# Type=Application
# Categories=Network;FileTransfer;Game;
# MimeType=x-scheme-handler/steam;x-scheme-handler/steamlink;
# PrefersNonDefaultGPU = true;
# '';
# in
let
monitor = lib.head (lib.filter (m: m.primary) config.monitors);
steam-session =
let
gamescope = lib.concatStringsSep " " [
(lib.getExe pkgs.gamescope)
"--rt"
"--output-width ${toString monitor.width}"
"--output-height ${toString monitor.height}"
"--framerate-limit ${toString monitor.refreshRate}"
"--prefer-output ${monitor.name}"
"--adaptive-sync"
"--expose-wayland"
"--backend wayland"
"--force-grab-cursor"
"--steam"
# "--hdr-enabled"
];
steam = lib.concatStringsSep " " [
"steam"
#"steam://open/bigpicture"
"-forcedesktopscaling ${toString monitor.scale}"
"-nofriendsui"
"-noschatui"
];
in
pkgs.writeTextDir "share/applications/steam-session.desktop" ''
[Desktop Entry]
Name=Steam Session
Comment=Steam with Gamescope
Exec=${gamescope} -- ${steam}
Icon=steam
Type=Application
Categories=Network;FileTransfer;Game;
MimeType=x-scheme-handler/steam;x-scheme-handler/steamlink;
PrefersNonDefaultGPU = true;
'';
in
{
imports = lib.custom.scanPaths ./.;
home.packages = with pkgs; [
prismlauncher
# steam-session
steam-session
# modrinth-app
(lutris.override {
extraLibraries = pkgs: [
@ -61,6 +62,3 @@
})
];
}
# INFO: Example working command for running gamescope
# gamescope --adaptive-sync --backend sdl --expose-wayland --force-grab-cursor --framerate-limit 120 --immediate-flips --output-height 2160 --output-width 3840 --prefer-output DP-3 --rt -- gamemoderun %command%

View file

@ -8,6 +8,13 @@
}:
let
# citron-emu = pkgs.callPackage (lib.custom.relativeToRoot "pkgs/common/citron-emu/package.nix") {
# inherit pkgs;
# };
# borgtui = pkgs.callPackage (lib.custom.relativeToRoot "pkgs/common/borgtui/package.nix") {
# inherit pkgs;
# };
homeDir = hostSpec.home;
borg-wrapper = pkgs.writeScript "borg-wrapper" ''

View file

@ -0,0 +1,575 @@
# Generated via dconf2nix: https://github.com/gvolpe/dconf2nix
{ lib, ... }:
with lib.hm.gvariant;
{
dconf.settings = {
"desktop/ibus/general" = {
preload-engines = [];
};
"io/elementary/code/folder-manager" = {
opened-folders = [ "/home/toph/git/Nix/dot.nix" ];
};
"io/elementary/code/saved-state" = {
hp1-size = 144;
last-opened-path = "/home/toph";
vp-size = 125;
window-size = mkTuple [ 850 550 ];
window-state = "Normal";
};
"io/elementary/code/settings" = {
focused-document = "file:///home/toph/git/Nix/dot.nix/home/toph/common/optional/gaming/default.nix";
opened-files = [ (mkTuple [ "file:///home/toph/git/Nix/dot.nix/home/toph/rune/default.nix" 258 ]) (mkTuple [ "file:///home/toph/git/Nix/dot.nix/home/toph/common/optional/gaming/default.nix" 1079 ]) ];
plugins-enabled = [ "brackets-completion" "detect-indent" "editorconfig" ];
};
"io/elementary/desktop/wingpanel/applications-menu" = {
use-category = false;
};
"io/elementary/desktop/wingpanel/bluetooth" = {
bluetooth-enabled = true;
};
"io/elementary/desktop/wingpanel/sound" = {
last-title-info = [ "io.elementary.music.desktop" "" "" ];
preferred-devices = {
alsa_card.usb-Sonix_Technology_Co.__Ltd._USB_Live_camera_SN0001-02:analog-input-mic = 1741729685;
alsa_card.usb-Kingston_HyperX_Cloud_Alpha_S_000000000001-00:analog-input-mic = 1741729685;
alsa_card.pci-0000_03_00.1:hdmi-output-4 = 1741729685;
alsa_card.pci-0000_13_00.1:hdmi-output-0 = 1741724405;
};
};
"io/elementary/files/file-chooser" = {
last-folder-uri = "file:///home/toph/git/Nix/dot.nix";
window-size = mkTuple [ 800 450 ];
};
"io/elementary/files/icon-view" = {
zoom-level = "large";
};
"io/elementary/files/preferences" = {
active-tab-position = 0;
default-viewmode = "icon";
show-hiddenfiles = true;
sidebar-cat-personal-expander = true;
sidebar-width = 365;
tab-info-list = [ (mkTuple [ (mkUint32 0) "file:///home/toph/git/Nix/dot.nix/home/toph/rune" "" ]) ];
window-size = mkTuple [ 1970 1450 ];
window-state = "normal";
};
"io/elementary/settings" = {
window-height = 817;
window-maximized = false;
window-width = 1207;
};
"io/elementary/settings/keyboard" = {
first-launch = false;
};
"io/elementary/terminal/saved-state" = {
focused-tab = 0;
tab-zooms = [ "1" ];
tabs = [ "/home/toph/git/Nix/dot.nix" ];
window-size = mkTuple [ 1844 1281 ];
window-state = "Normal";
zoom = 1.0;
};
"io/elementary/terminal/settings" = {
prefer-dark-style = true;
theme = "dark";
};
"net/launchpad/plank/docks/dock1" = {
dock-items = [ "gala-multitaskingview.dockitem" "io.elementary.files.dockitem" "org.gnome.Epiphany.dockitem" "io.elementary.mail.dockitem" "io.elementary.tasks.dockitem" "io.elementary.calendar.dockitem" "io.elementary.music.dockitem" "io.elementary.videos.dockitem" "io.elementary.photos.dockitem" "io.elementary.settings.dockitem" ];
};
"org/gnome/Console" = {
last-window-maximised = false;
last-window-size = mkTuple [ 1463 1048 ];
};
"org/gnome/Extensions" = {
window-height = 1144;
window-maximized = false;
window-width = 1736;
};
"org/gnome/Weather" = {
window-height = 420;
window-maximized = false;
window-width = 992;
};
"org/gnome/baobab/ui" = {
is-maximized = false;
window-size = mkTuple [ 2023 1374 ];
};
"org/gnome/clocks/state/window" = {
maximized = false;
panel-id = "world";
size = mkTuple [ 870 690 ];
};
"org/gnome/control-center" = {
last-panel = "keyboard";
window-state = mkTuple [ 1663 1048 false ];
};
"org/gnome/desktop/app-folders" = {
folder-children = [ "Utilities" "YaST" "Pardus" ];
};
"org/gnome/desktop/app-folders/folders/Pardus" = {
categories = [ "X-Pardus-Apps" ];
name = "X-Pardus-Apps.directory";
translate = true;
};
"org/gnome/desktop/app-folders/folders/Utilities" = {
apps = [ "org.freedesktop.GnomeAbrt.desktop" "nm-connection-editor.desktop" "org.gnome.baobab.desktop" "org.gnome.Connections.desktop" "org.gnome.DejaDup.desktop" "org.gnome.DiskUtility.desktop" "org.gnome.Evince.desktop" "org.gnome.FileRoller.desktop" "org.gnome.font-viewer.desktop" "org.gnome.Loupe.desktop" "org.freedesktop.MalcontentControl.desktop" "org.gnome.seahorse.Application.desktop" "org.gnome.tweaks.desktop" "org.gnome.Usage.desktop" ];
categories = [ "X-GNOME-Utilities" ];
name = "X-GNOME-Utilities.directory";
translate = true;
};
"org/gnome/desktop/app-folders/folders/YaST" = {
categories = [ "X-SuSE-YaST" ];
name = "suse-yast.directory";
translate = true;
};
"org/gnome/desktop/background" = {
color-shading-type = "solid";
picture-options = "zoom";
picture-uri = "file:////nix/store/2fkxipgns07ik26hswq58kkx1m889ycw-wallpaper.jpg";
picture-uri-dark = "file:////nix/store/2fkxipgns07ik26hswq58kkx1m889ycw-wallpaper.jpg";
primary-color = "#000000";
secondary-color = "#000000";
};
"org/gnome/desktop/datetime" = {
automatic-timezone = true;
};
"org/gnome/desktop/input-sources" = {
sources = [ (mkTuple [ "xkb" "us" ]) ];
xkb-options = [ "compose:menu" "lv3:ralt_switch" "terminate:ctrl_alt_bksp" ];
};
"org/gnome/desktop/input-sources/xkb-options" = {
xkb-options = [ "compose:menu" "lv3:ralt_switch" "terminate:ctrl_alt_bksp" ];
};
"org/gnome/desktop/interface" = {
accent-color = "blue";
color-scheme = "prefer-dark";
cursor-theme = "Numix-Cursor";
gtk-theme = "Gruvbox-Dark";
icon-theme = "Papirus-Dark";
};
"org/gnome/desktop/notifications" = {
application-children = [ "org-gnome-console" "zen-twilight" "gnome-power-panel" "org-gnome-nautilus" "org-gnome-baobab" "spotify" "vesktop" "org-wezfurlong-wezterm" "org-remmina-remmina" "idea-ultimate" "org-telegram-desktop" ];
};
"org/gnome/desktop/notifications/application/gnome-power-panel" = {
application-id = "gnome-power-panel.desktop";
};
"org/gnome/desktop/notifications/application/idea-ultimate" = {
application-id = "idea-ultimate.desktop";
};
"org/gnome/desktop/notifications/application/org-gnome-baobab" = {
application-id = "org.gnome.baobab.desktop";
};
"org/gnome/desktop/notifications/application/org-gnome-console" = {
application-id = "org.gnome.Console.desktop";
};
"org/gnome/desktop/notifications/application/org-gnome-nautilus" = {
application-id = "org.gnome.Nautilus.desktop";
};
"org/gnome/desktop/notifications/application/org-remmina-remmina" = {
application-id = "org.remmina.Remmina.desktop";
};
"org/gnome/desktop/notifications/application/org-telegram-desktop" = {
application-id = "org.telegram.desktop.desktop";
};
"org/gnome/desktop/notifications/application/org-wezfurlong-wezterm" = {
application-id = "org.wezfurlong.wezterm.desktop";
};
"org/gnome/desktop/notifications/application/spotify" = {
application-id = "spotify.desktop";
};
"org/gnome/desktop/notifications/application/vesktop" = {
application-id = "vesktop.desktop";
};
"org/gnome/desktop/notifications/application/zen-twilight" = {
application-id = "zen.desktop";
};
"org/gnome/desktop/peripherals/mouse" = {
accel-profile = "flat";
natural-scroll = false;
speed = 0.0;
};
"org/gnome/desktop/peripherals/touchpad" = {
edge-scrolling-enabled = false;
two-finger-scrolling-enabled = true;
};
"org/gnome/desktop/screensaver" = {
color-shading-type = "solid";
picture-options = "zoom";
picture-uri = "file:////nix/store/2fkxipgns07ik26hswq58kkx1m889ycw-wallpaper.jpg";
primary-color = "#241f31";
secondary-color = "#000000";
};
"org/gnome/desktop/search-providers" = {
disabled = [ "org.gnome.seahorse.Application.desktop" "org.gnome.Epiphany.desktop" "org.gnome.Contacts.desktop" "org.gnome.Calendar.desktop" "org.gnome.Characters.desktop" "org.gnome.clocks.desktop" "org.gnome.Calculator.desktop" ];
enabled = [ "org.gnome.Weather.desktop" ];
sort-order = [ "org.gnome.Settings.desktop" "org.gnome.Contacts.desktop" "org.gnome.Nautilus.desktop" ];
};
"org/gnome/desktop/session" = {
idle-delay = mkUint32 480;
};
"org/gnome/desktop/sound" = {
event-sounds = true;
theme-name = "__custom";
};
"org/gnome/desktop/wm/keybindings" = {
close = [ "<Super>q" ];
maximize = [""];
move-to-monitor-left = [""];
move-to-monitor-right = [""];
move-to-workspace-right = [""];
shift-overview-down = [ "" ];
shift-overview-up = [ "" ];
switch-to-workspace-down = [ "" ];
switch-to-workspace-right = [];
switch-to-workspace-up = [ "" ];
toggle-application-view = [ "" ];
toggle-message-tray = [ "<Super>a" ];
unmaximize = [ "" ];
};
"org/gnome/evolution-data-server" = {
migrated = true;
};
"org/gnome/mutter" = {
dynamic-workspaces = true;
edge-tiling = false;
};
"org/gnome/mutter/keybindings" = {
toggle-tiled-left = [ "" ];
toggle-tiled-right = [ "" ];
};
"org/gnome/nautilus/preferences" = {
default-folder-viewer = "icon-view";
migrated-gtk-settings = true;
search-filter-time-type = "last_modified";
};
"org/gnome/nautilus/window-state" = {
initial-size = mkTuple [ 2120 1584 ];
initial-size-file-chooser = mkTuple [ 890 550 ];
maximized = false;
};
"org/gnome/portal/filechooser/org/gnome/Settings" = {
last-folder-path = "/home/toph/Pictures";
};
"org/gnome/settings-daemon/plugins/color" = {
night-light-enabled = true;
night-light-schedule-automatic = true;
night-light-schedule-from = 18.0;
night-light-schedule-to = 7.0;
night-light-temperature = mkUint32 3700;
};
"org/gnome/settings-daemon/plugins/media-keys" = {
custom-keybindings = [ "/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/" "/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom1/" ];
};
"org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0" = {
binding = "<Super>t";
command = "wezterm";
name = "Terminal";
};
"org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom1" = {
binding = "<Super>f";
command = "nautilus";
name = "Files";
};
"org/gnome/settings-daemon/plugins/power" = {
power-button-action = "hibernate";
sleep-inactive-ac-timeout = 1200;
sleep-inactive-ac-type = "suspend";
};
"org/gnome/shell" = {
disable-user-extensions = false;
enabled-extensions = [ "appindicatorsupport@rgcjonas.gmail.com" "blur-my-shell@aunetx" "clipboard-indicator@tudmotu.com" "color-picker@tuberry" "dash-to-panel@jderose9.github.com" "hibernate@dafne.rocks" "monitor-brightness-volume@ailin.nemui" "native-window-placement@gnome-shell-extensions.gcampax.github.com" "screenshot-window-sizer@gnome-shell-extensions.gcampax.github.com" "tilingshell@ferrarodomenico.com" "user-theme@gnome-shell-extensions.gcampax.github.com" "Vitals@CoreCoding.com" ];
favorite-apps = [ "org.gnome.Nautilus.desktop" "org.wezfurlong.wezterm.desktop" "win11.desktop" "zen.desktop" "spotify.desktop" "vesktop.desktop" "org.telegram.desktop.desktop" "code.desktop" "fleet-jet.desktop" "steam.desktop" "Marvel Rivals.desktop" "org.prismlauncher.PrismLauncher.desktop" ];
last-selected-power-profile = "performance";
welcome-dialog-last-shown-version = "47.4";
};
"org/gnome/shell/extensions/blur-my-shell" = {
settings-version = 2;
};
"org/gnome/shell/extensions/blur-my-shell/appfolder" = {
brightness = 0.6;
sigma = 30;
};
"org/gnome/shell/extensions/blur-my-shell/dash-to-dock" = {
blur = true;
brightness = 0.6;
sigma = 30;
static-blur = true;
style-dash-to-dock = 0;
};
"org/gnome/shell/extensions/blur-my-shell/panel" = {
brightness = 0.6;
sigma = 50;
static-blur = false;
};
"org/gnome/shell/extensions/blur-my-shell/window-list" = {
brightness = 0.6;
sigma = 30;
};
"org/gnome/shell/extensions/clipboard-indicator" = {
cache-only-favorites = false;
cache-size = 120;
display-mode = 0;
enable-keybindings = true;
history-size = 40;
notify-on-copy = false;
pinned-on-bottom = true;
strip-text = false;
toggle-menu = [ "<Super>v" ];
topbar-preview-size = 10;
};
"org/gnome/shell/extensions/color-picker" = {
color-history = [ (mkUint32 3158064) 1447446 14538709 14637907 1447446 3355443 16777215 1644825 ];
color-picker-shortcut = [ "<Super>c" ];
enable-notify = true;
enable-shortcut = true;
enable-systray = true;
menu-size = mkUint32 8;
notify-style = mkUint32 0;
persistent-mode = false;
preview-style = mkUint32 0;
};
"org/gnome/shell/extensions/dash-to-panel" = {
appicon-margin = 6;
appicon-padding = 8;
available-monitors = [ 0 1 ];
dot-position = "TOP";
dot-style-focused = "DASHES";
dot-style-unfocused = "DASHES";
multi-monitors = false;
panel-positions = ''
{"0":"TOP","1":"TOP"}\n
'';
primary-monitor = 0;
scroll-icon-action = "CYCLE_WINDOWS";
scroll-panel-action = "SWITCH_WORKSPACE";
trans-panel-opacity = "0.40";
trans-use-custom-opacity = true;
tray-padding = 8;
};
"org/gnome/shell/extensions/hibernate-status-button" = {
show-hibernate-dialog = true;
show-hybrid-sleep = true;
show-hybrid-sleep-dialog = false;
};
"org/gnome/shell/extensions/tilingshell" = {
enable-autotiling = false;
enable-smart-window-border-radius = false;
enable-window-border = true;
inner-gaps = mkUint32 8;
last-version-name-installed = "16.2";
layouts-json = "[{\"id\":\"Layout 1\",\"tiles\":[{\"x\":0,\"y\":0,\"width\":0.22,\"height\":0.5,\"groups\":[2,1]},{\"x\":0,\"y\":0.5,\"width\":0.22,\"height\":0.5,\"groups\":[1,2]},{\"x\":0.22,\"y\":0,\"width\":0.2794791666666666,\"height\":0.5,\"groups\":[7,5,2]},{\"x\":0.753125,\"y\":0,\"width\":0.24687499999999998,\"height\":0.5,\"groups\":[4,3]},{\"x\":0.753125,\"y\":0.5,\"width\":0.24687499999999998,\"height\":0.5,\"groups\":[4,3]},{\"x\":0.22,\"y\":0.5,\"width\":0.2797395833333334,\"height\":0.5,\"groups\":[5,6,2]},{\"x\":0.49973958333333335,\"y\":0.5,\"width\":0.2533854166666667,\"height\":0.5,\"groups\":[5,3,6]},{\"x\":0.49947916666666664,\"y\":0,\"width\":0.25364583333333346,\"height\":0.5,\"groups\":[3,5,7]}]},{\"id\":\"Layout 2\",\"tiles\":[{\"x\":0,\"y\":0,\"width\":0.22,\"height\":1,\"groups\":[1]},{\"x\":0.22,\"y\":0,\"width\":0.56,\"height\":1,\"groups\":[1,2]},{\"x\":0.78,\"y\":0,\"width\":0.22,\"height\":1,\"groups\":[2]}]},{\"id\":\"985825\",\"tiles\":[{\"x\":0,\"y\":0,\"width\":1,\"height\":0.5,\"groups\":[1]},{\"x\":0,\"y\":0.5,\"width\":1,\"height\":0.5,\"groups\":[1]}]}]";
move-window-center = [ "<Super>Return" ];
outer-gaps = mkUint32 4;
overridden-settings = "{\"org.gnome.mutter.keybindings\":{\"toggle-tiled-right\":\"['<Super>Right']\",\"toggle-tiled-left\":\"['<Super>Left']\"},\"org.gnome.desktop.wm.keybindings\":{\"maximize\":\"['<Super>Up']\",\"unmaximize\":\"['<Super>Down', '<Alt>F5']\"},\"org.gnome.mutter\":{\"edge-tiling\":\"false\"}}";
restore-window-original-size = false;
selected-layouts = [ [ "Layout 1" "985825" ] [ "Layout 1" "985825" ] ];
span-multiple-tiles-activation-key = [ "1" ];
span-window-all-tiles = [ "<Control><Super>Page_Up" ];
span-window-down = [ "<Alt><Super>Down" ];
span-window-left = [ "<Alt><Super>Left" ];
span-window-right = [ "<Alt><Super>Right" ];
span-window-up = [ "<Alt><Super>Up" ];
tiling-system-activation-key = [ "2" ];
untile-window = [ "<Control><Super>Page_Down" ];
window-border-color = "rgb(53,132,228)";
window-border-width = mkUint32 1;
};
"org/gnome/shell/extensions/user-theme" = {
name = "Gruvbox-Dark";
};
"org/gnome/shell/extensions/vitals" = {
alphabetize = true;
hide-icons = false;
hide-zeros = false;
hot-sensors = [ "_memory_usage_" "_storage_free_" "_network_public_ip_" "_processor_usage_" "__temperature_avg__" "_system_uptime_" ];
icon-style = 0;
include-static-gpu-info = false;
menu-centered = false;
position-in-panel = 4;
show-gpu = false;
};
"org/gnome/shell/keybindings" = {
shift-overview-down = [];
shift-overview-up = [];
};
"org/gnome/shell/weather" = {
automatic-location = true;
locations = [];
};
"org/gnome/shell/world-clocks" = {
locations = [];
};
"org/gnome/tweaks" = {
show-extensions-notice = false;
};
"org/gtk/gtk4/settings/color-chooser" = {
custom-colors = [ (mkTuple [ 0.2078431397676468 0.5176469683647156 0.8941176533699036 1.0 ]) (mkTuple [ 0.9254902005195618 0.3686274588108063 0.3686274588108063 1.0 ]) ];
selected-color = mkTuple [ true 0.2078431397676468 0.5176469683647156 0.8941176533699036 1.0 ];
};
"org/gtk/gtk4/settings/file-chooser" = {
show-hidden = true;
};
"org/gtk/settings/file-chooser" = {
date-format = "regular";
location-mode = "path-bar";
show-hidden = true;
show-size-column = true;
show-type-column = true;
sidebar-width = 165;
sort-column = "name";
sort-directories-first = true;
sort-order = "ascending";
type-format = "category";
window-position = mkTuple [ 102 102 ];
window-size = mkTuple [ 1231 902 ];
};
"org/onboard" = {
schema-version = "2.3";
system-theme-associations = {
HighContrast = "HighContrast";
HighContrastInverse = "HighContrastInverse";
LowContrast = "LowContrast";
ContrastHighInverse = "HighContrastInverse";
Default = "";
};
use-system-defaults = false;
};
"org/virt-manager/virt-manager" = {
manager-window-height = 960;
manager-window-width = 1557;
xmleditor-enabled = true;
};
"org/virt-manager/virt-manager/confirm" = {
delete-storage = true;
forcepoweroff = true;
removedev = false;
unapplied-dev = true;
};
"org/virt-manager/virt-manager/connections" = {
autoconnect = [ "qemu:///session" "qemu:///system" ];
uris = [ "qemu:///session" "qemu:///system" ];
};
"org/virt-manager/virt-manager/conns/qemu:session" = {
window-size = mkTuple [ 800 600 ];
};
"org/virt-manager/virt-manager/conns/qemu:system" = {
window-size = mkTuple [ 800 600 ];
};
"org/virt-manager/virt-manager/details" = {
show-toolbar = true;
};
"org/virt-manager/virt-manager/new-vm" = {
graphics-type = "system";
};
"org/virt-manager/virt-manager/vmlist-fields" = {
disk-usage = true;
network-traffic = true;
};
"org/virt-manager/virt-manager/vms/338a0af844bb4ac49039e20b1763e86b" = {
autoconnect = 1;
vm-window-size = mkTuple [ 1280 872 ];
};
"org/virt-manager/virt-manager/vms/9148c8b7c3584392a70d923a0d8ae8ad" = {
autoconnect = 1;
vm-window-size = mkTuple [ 1280 844 ];
};
"org/virt-manager/virt-manager/vms/af177cf0fd0a4cc9817e574402e106f5" = {
autoconnect = 1;
vm-window-size = mkTuple [ 2021 1178 ];
};
};
}

View file

@ -1,492 +0,0 @@
# Generated via dconf2nix: https://github.com/gvolpe/dconf2nix
{ lib, ... }:
with lib.hm.gvariant;
{
dconf.settings = {
"org/gnome/TextEditor" = {
style-scheme = "stylix";
};
"org/gnome/desktop/app-folders" = {
folder-children = [
"System"
"Utilities"
"Useless Launchers"
];
};
"org/gnome/desktop/app-folders/folders/System" = {
apps = [
"org.gnome.baobab.desktop"
"org.gnome.DiskUtility.desktop"
"org.gnome.Logs.desktop"
"org.gnome.SystemMonitor.desktop"
"org.gnome.tweaks.desktop"
];
name = "X-GNOME-Shell-System.directory";
translate = true;
};
"org/gnome/desktop/app-folders/folders/Utilities" = {
apps = [
"org.gnome.Connections.desktop"
"org.gnome.FileRoller.desktop"
"org.gnome.font-viewer.desktop"
"org.gnome.Loupe.desktop"
"org.gnome.seahorse.Application.desktop"
];
name = "X-GNOME-Shell-Utilities.directory";
translate = true;
};
"org/gnome/desktop/app-folders/folders/Useless" = {
apps = [
"fish.desktop"
"ranger.desktop"
];
name = "Useless Launchers";
translate = false;
};
"org/gnome/desktop/input-sources" = {
sources = [
(mkTuple [
"xkb"
"us"
])
];
xkb-options = [
"terminate:ctrl_alt_bksp"
"lv3:ralt_switch"
"compose:menu"
];
};
"org/gnome/desktop/wm/keybindings" = {
maximize = [ ];
move-to-monitor-down = [ ];
move-to-monitor-left = [ ];
move-to-monitor-right = [ ];
move-to-monitor-up = [ ];
move-to-workspace-down = [ "<Control><Shift><Alt>Down" ];
move-to-workspace-left = [ ];
move-to-workspace-right = [ ];
move-to-workspace-up = [ "<Control><Shift><Alt>Up" ];
shift-overview-down = [ "" ];
shift-overview-up = [ "" ];
switch-applications = [ ];
switch-applications-backward = [
"<Shift><Super>Tab"
"<Shift><Alt>Tab"
];
switch-group = [
"<Super>Above_Tab"
"<Alt>Above_Tab"
];
switch-group-backward = [
"<Shift><Super>Above_Tab"
"<Shift><Alt>Above_Tab"
];
switch-panels = [ "<Control><Alt>Tab" ];
switch-panels-backward = [ "<Shift><Control><Alt>Tab" ];
switch-to-workspace-1 = [ ];
switch-to-workspace-down = [ "" ];
switch-to-workspace-last = [ ];
switch-to-workspace-left = [ ];
switch-to-workspace-right = [ ];
switch-to-workspace-up = [ "" ];
toggle-application-view = [ "" ];
toggle-message-tray = [ "" ];
unmaximize = [ ];
};
"org/gnome/nautilus/preferences" = {
default-folder-viewer = "icon-view";
migrated-gtk-settings = true;
search-filter-time-type = "last_modified";
};
"org/gnome/settings-daemon/plugins/color" = {
night-light-enabled = true;
night-light-schedule-automatic = false;
night-light-schedule-from = 19.0;
night-light-temperature = mkUint32 3892;
};
"org/gnome/settings-daemon/plugins/media-keys" = {
www = [ "<Super>w" ];
custom-keybindings = [
"/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/"
"/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom1/"
"/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom2/"
];
};
"org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0" = {
binding = "<Super>t";
command = "ghostty";
name = "Terminal";
};
"org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom1" = {
binding = "<Super>f";
command = "nautilus";
name = "Files";
};
"org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom2" = {
binding = "<Super>e";
command = "code";
name = "Code";
};
"org/gnome/shell" = {
enabled-extensions = [
"user-theme@gnome-shell-extensions.gcampax.github.com"
"dash-in-panel@fthx"
"AlphabeticalAppGrid@stuarthayhurst"
"color-picker@tuberry"
"monitor-brightness-volume@ailin.nemui"
"quicksettings-audio-devices-renamer@marcinjahn.com"
"Vitals@CoreCoding.com"
"appindicatorsupport@rgcjonas.gmail.com"
"paperwm@paperwm.github.com"
"just-perfection-desktop@just-perfection"
"pano@elhan.io"
"blur-my-shell@aunetx"
"quicksettings-audio-devices-hider@marcinjahn.com"
"undecorate@sun.wxg@gmail.com"
];
favorite-apps = [
"com.mitchellh.ghostty.desktop"
"org.gnome.Nautilus.desktop"
"win11.desktop"
"zen.desktop"
"code.desktop"
"spotify.desktop"
"vesktop.desktop"
"org.telegram.desktop.desktop"
"appeditor-local-application-1.desktop"
"Ryujinx.desktop"
"Marvel Rivals.desktop"
];
last-selected-power-profile = "performance";
welcome-dialog-last-shown-version = "48.1";
};
"org/gnome/shell/extensions/alphabetical-app-grid" = {
folder-order-position = "start";
};
"org/gnome/shell/extensions/appindicator" = {
icon-brightness = 0.0;
icon-contrast = 0.0;
icon-opacity = 240;
icon-saturation = 0.0;
icon-size = 0;
legacy-tray-enabled = true;
tray-pos = "right";
};
"org/gnome/shell/extensions/blur-my-shell" = {
hacks-level = 1;
settings-version = 2;
};
"org/gnome/shell/extensions/blur-my-shell/appfolder" = {
brightness = 1.0;
sigma = 85;
};
"org/gnome/shell/extensions/blur-my-shell/applications" = {
blur = true;
dynamic-opacity = false;
enable-all = true;
opacity = 230;
sigma = 85;
};
"org/gnome/shell/extensions/blur-my-shell/coverflow-alt-tab" = {
pipeline = "pipeline_default";
};
"org/gnome/shell/extensions/blur-my-shell/dash-to-dock" = {
blur = false;
brightness = 1.0;
override-background = true;
pipeline = "pipeline_default_rounded";
sigma = 85;
static-blur = false;
style-dash-to-dock = 0;
unblur-in-overview = true;
};
"org/gnome/shell/extensions/blur-my-shell/dash-to-panel" = {
blur-original-panel = false;
};
"org/gnome/shell/extensions/blur-my-shell/hidetopbar" = {
compatibility = false;
};
"org/gnome/shell/extensions/blur-my-shell/lockscreen" = {
pipeline = "pipeline_default";
};
"org/gnome/shell/extensions/blur-my-shell/overview" = {
pipeline = "pipeline_default";
};
"org/gnome/shell/extensions/blur-my-shell/panel" = {
brightness = 1.0;
override-background = true;
pipeline = "pipeline_default";
sigma = 85;
static-blur = false;
};
"org/gnome/shell/extensions/blur-my-shell/screenshot" = {
pipeline = "pipeline_default";
};
"org/gnome/shell/extensions/dash-in-panel" = {
button-margin = 6;
center-dash = true;
colored-dot = true;
icon-size = 32;
move-date = true;
panel-height = 46;
show-apps = false;
show-dash = false;
show-label = true;
};
"org/gnome/shell/extensions/just-perfection" = {
accessibility-menu = true;
activities-button = false;
clock-menu = true;
clock-menu-position = 1;
dash = true;
dash-app-running = true;
dash-separator = false;
keyboard-layout = true;
max-displayed-search-results = 0;
panel-in-overview = true;
quick-settings = true;
quick-settings-dark-mode = true;
ripple-box = true;
show-apps-button = false;
support-notifier-showed-version = 34;
support-notifier-type = 0;
top-panel-position = 0;
window-preview-close-button = true;
workspace = false;
workspace-switcher-size = 0;
workspaces-in-app-grid = true;
};
"org/gnome/shell/extensions/pano" = {
history-length = 100;
is-in-incognito = false;
window-position = mkUint32 2;
};
"org/gnome/shell/extensions/paperwm" = {
cycle-height-steps = [
0.25
0.3
0.5
0.7
0.95
];
cycle-width-steps = [
0.25
0.3
0.5
0.7
0.95
];
default-focus-mode = 1;
disable-topbar-styling = true;
edge-preview-enable = true;
edge-preview-timeout-enable = false;
gesture-enabled = false;
gesture-horizontal-fingers = 0;
horizontal-margin = 8;
last-used-display-server = "Wayland";
restore-attach-modal-dialogs = "true";
restore-edge-tiling = "true";
restore-workspaces-only-on-primary = "true";
selection-border-size = 4;
show-focus-mode-icon = false;
show-open-position-icon = false;
show-window-position-bar = false;
show-workspace-indicator = false;
vertical-margin = 8;
vertical-margin-bottom = 8;
window-gap = 8;
winprops = [ ];
};
"org/gnome/shell/extensions/paperwm/keybindings" = {
center = [ "<Super>c" ];
center-horizontally = [ "" ];
center-vertically = [ "" ];
close-window = [ "<Super>q" ];
cycle-height = [ "<Alt><Super>Up" ];
cycle-height-backwards = [ "<Alt><Super>Down" ];
cycle-width = [ "<Alt><Super>Right" ];
cycle-width-backwards = [ "<Alt><Super>Left" ];
live-alt-tab = [ "<Alt>Tab" ];
live-alt-tab-backward = [ "" ];
live-alt-tab-scratch = [ "" ];
live-alt-tab-scratch-backward = [ "" ];
move-down = [ "<Shift><Super>Down" ];
move-down-workspace = [ "" ];
move-left = [ "<Shift><Super>Left" ];
move-monitor-above = [ "" ];
move-monitor-below = [ "" ];
move-monitor-left = [ "<Shift><Alt><Super>Left" ];
move-monitor-right = [ "<Shift><Alt><Super>Right" ];
move-previous-workspace = [ "" ];
move-previous-workspace-backward = [ "" ];
move-right = [ "<Shift><Super>Right" ];
move-space-monitor-above = [ "" ];
move-space-monitor-below = [ "" ];
move-space-monitor-left = [ "" ];
move-space-monitor-right = [ "" ];
move-up = [ "<Shift><Super>Up" ];
move-up-workspace = [ "" ];
new-window = [ "<Super>n" ];
previous-workspace = [ "" ];
previous-workspace-backward = [ "" ];
swap-monitor-above = [ "" ];
swap-monitor-below = [ "" ];
swap-monitor-left = [ "" ];
swap-monitor-right = [ "" ];
switch-down-workspace = [ "" ];
switch-focus-mode = [ "<Alt><Super>a" ];
switch-monitor-above = [ "" ];
switch-monitor-below = [ "" ];
switch-monitor-left = [ "" ];
switch-monitor-right = [ "" ];
switch-next = [ "" ];
switch-open-window-position = [ "" ];
switch-previous = [ "" ];
switch-up-workspace = [ "" ];
take-window = [ "" ];
toggle-maximize-width = [ "" ];
toggle-scratch = [ "<Super>BackSpace" ];
toggle-scratch-layer = [ "<Control><Super>BackSpace" ];
toggle-scratch-window = [ "" ];
toggle-top-and-position-bar = [ "" ];
};
"org/gnome/shell/extensions/paperwm/workspaces" = {
list = [
"d3fe7ebc-4b28-4738-98b8-d4cd3e31cf7f"
"5291a627-8b95-48f4-bfd4-1f9e56b5234b"
"77949e36-39cc-4831-ad12-48054589a02a"
"407eab83-d3cd-4974-8d32-8fe0de05579c"
"0617efdf-c223-434c-9fd2-8bf9bedf9700"
];
};
"org/gnome/shell/extensions/paperwm/workspaces/0617efdf-c223-434c-9fd2-8bf9bedf9700" = {
index = 4;
};
"org/gnome/shell/extensions/paperwm/workspaces/407eab83-d3cd-4974-8d32-8fe0de05579c" = {
index = 3;
};
"org/gnome/shell/extensions/paperwm/workspaces/5291a627-8b95-48f4-bfd4-1f9e56b5234b" = {
index = 1;
show-top-bar = true;
};
"org/gnome/shell/extensions/paperwm/workspaces/77949e36-39cc-4831-ad12-48054589a02a" = {
index = 2;
};
"org/gnome/shell/extensions/paperwm/workspaces/d3fe7ebc-4b28-4738-98b8-d4cd3e31cf7f" = {
index = 0;
show-top-bar = true;
};
"org/gnome/shell/extensions/quicksettings-audio-devices-hider" = {
available-input-names = [
"Microphone \8211 USB Live camera"
"Digital Input (S/PDIF) \8211 USB Live camera"
"Microphone \8211 HyperX Cloud Alpha S"
];
available-output-names = [
"HDMI / DisplayPort 3 \8211 HD-Audio Generic"
"HDMI / DisplayPort \8211 Rembrandt Radeon High Definition Audio Controller"
"Analog Output \8211 HyperX Cloud Alpha S"
"Digital Output (S/PDIF) \8211 HyperX Cloud Alpha S"
];
excluded-input-names = [
"Digital Input (S/PDIF) \8211 USB Live camera"
"Microphone \8211 USB Live camera"
];
excluded-output-names = [
"HDMI / DisplayPort \8211 Rembrandt Radeon High Definition Audio Controller"
"Analog Output \8211 HyperX Cloud Alpha S"
];
};
"org/gnome/shell/extensions/quicksettings-audio-devices-renamer" = {
input-names-map = ''{'Microphone USB Live camera': 'NO', 'Digital Input (S/PDIF) USB Live camera': 'NO', 'Microphone HyperX Cloud Alpha S': 'Cloud S'}'';
output-names-map = ''{'HDMI / DisplayPort 3 HD-Audio Generic': 'Navi', 'HDMI / DisplayPort Rembrandt Radeon High Definition Audio Controller': 'NO', 'Analog Output HyperX Cloud Alpha S': 'NO', 'Digital Output (S/PDIF) HyperX Cloud Alpha S': 'Cloud S', 'Dummy Output': 'Dummy Output'}'';
};
"org/gnome/shell/extensions/user-theme" = {
name = "Stylix";
};
"org/gnome/shell/extensions/vitals" = {
alphabetize = true;
fixed-widths = true;
hide-icons = false;
hide-zeros = true;
icon-style = 1;
include-static-gpu-info = true;
include-static-info = true;
menu-centered = false;
position-in-panel = 0;
show-fan = false;
show-gpu = true;
show-memory = true;
show-network = true;
show-processor = true;
show-storage = true;
show-system = true;
show-temperature = true;
show-voltage = false;
use-higher-precision = false;
};
"org/gnome/shell/keybindings" = {
focus-active-notification = [ ];
shift-overview-down = [ ];
shift-overview-up = [ ];
toggle-application-view = [ "Home" ];
toggle-message-tray = [
"<Super>v"
"<Super>m"
];
};
"org/gnome/shell/world-clocks" = {
locations = [ ];
};
"org/virt-manager/virt-manager/connections" = {
autoconnect = [ "qemu:///system" ];
uris = [ "qemu:///system" ];
};
};
}

View file

@ -1,7 +1,411 @@
{
pkgs,
config,
lib,
...
}:
{
imports = lib.custom.scanPaths ./.;
home.packages = with pkgs; [
gruvbox-gtk-theme
papirus-icon-theme
numix-cursor-theme
];
gtk = {
enable = true;
iconTheme = {
name = "Papirus-Dark";
package = pkgs.papirus-icon-theme;
};
theme = {
name = "Gruvbox-Dark";
package = pkgs.gruvbox-gtk-theme;
};
cursorTheme = {
name = "Numix-Cursor";
package = pkgs.numix-cursor-theme;
};
gtk3.extraConfig = {
Settings = ''
gtk-application-prefer-dark-theme=1
'';
};
gtk4.extraConfig = {
Settings = ''
gtk-application-prefer-dark-theme=1
'';
};
};
# Created with 'dconf dump / | dconf2nix > dconf.nix'
dconf = {
enable = true;
settings = with lib.hm.gvariant; {
"org/gnome/desktop/background" = {
color-shading-type = "solid";
picture-options = "zoom";
picture-uri = "file:///" + ./wallpaper.jpg;
picture-uri-dark = "file:///" + ./wallpaper.jpg;
primary-color = "#000000";
secondary-color = "#000000";
};
"org/gnome/desktop/screensaver" = {
color-shading-type = "solid";
picture-options = "zoom";
picture-uri = "file:///" + ./wallpaper.jpg;
primary-color = "#241f31";
secondary-color = "#000000";
};
"org/gnome/desktop/interface" = {
accent-color = "blue";
color-scheme = "prefer-dark";
cursor-theme = "Numix-Cursor";
gtk-theme = "Gruvbox-Dark";
icon-theme = "Papirus-Dark";
};
"org/gnome/desktop/datetime" = {
automatic-timezone = true;
};
"org/gnome/desktop/input-sources" = {
sources = [
(mkTuple [
"xkb"
"us"
])
];
xkb-options = [
"compose:menu"
"lv3:ralt_switch"
"terminate:ctrl_alt_bksp"
];
};
"org/gnome/desktop/input-sources/xkb-options" = {
xkb-options = [
"compose:menu"
"lv3:ralt_switch"
"terminate:ctrl_alt_bksp"
];
};
"org/gnome/desktop/peripherals/mouse" = {
accel-profile = "flat";
natural-scroll = false;
speed = 0.0;
};
"org/gnome/desktop/search-providers" = {
disabled = [
"org.gnome.seahorse.Application.desktop"
"org.gnome.Epiphany.desktop"
"org.gnome.Contacts.desktop"
"org.gnome.Calendar.desktop"
"org.gnome.Characters.desktop"
"org.gnome.clocks.desktop"
"org.gnome.Calculator.desktop"
];
enabled = [ "org.gnome.Weather.desktop" ];
sort-order = [
"org.gnome.Settings.desktop"
"org.gnome.Contacts.desktop"
"org.gnome.Nautilus.desktop"
];
};
"org/gnome/desktop/session" = {
idle-delay = mkUint32 480;
};
"org/gnome/desktop/wm/keybindings" = {
close = [ "<Super>q" ];
maximize = [ "" ];
move-to-monitor-left = [ "" ];
move-to-monitor-right = [ "" ];
move-to-workspace-right = [ "" ];
shift-overview-down = [ "" ];
shift-overview-up = [ "" ];
switch-to-workspace-down = [ "" ];
switch-to-workspace-right = [ ];
switch-to-workspace-up = [ "" ];
toggle-application-view = [ "" ];
toggle-message-tray = [ "<Super>a" ];
unmaximize = [ "" ];
};
"org/gnome/mutter" = {
dynamic-workspaces = true;
edge-tiling = false;
};
"org/gnome/mutter/keybindings" = {
toggle-tiled-left = [ "" ];
toggle-tiled-right = [ "" ];
};
"org/gnome/settings-daemon/plugins/color" = {
night-light-enabled = true;
night-light-schedule-automatic = true;
night-light-schedule-from = 18.0;
night-light-schedule-to = 7.0;
night-light-temperature = mkUint32 3700;
};
"org/gnome/settings-daemon/plugins/media-keys" = {
custom-keybindings = [
"/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/"
"/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom1/"
];
};
"org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0" = {
binding = "<Super>t";
command = "wezterm";
name = "Terminal";
};
"org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom1" = {
binding = "<Super>f";
command = "nautilus";
name = "Files";
};
# "org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom2" = {
# binding = "<Super>f";
# command = "rofi?";
# name = "rofi";
# };
"org/gnome/settings-daemon/plugins/power" = {
power-button-action = "hibernate";
sleep-inactive-ac-timeout = 1200;
sleep-inactive-ac-type = "suspend";
};
"org/gnome/shell" = {
disable-user-extensions = false;
enabled-extensions = [
"appindicatorsupport@rgcjonas.gmail.com"
"blur-my-shell@aunetx"
"clipboard-indicator@tudmotu.com"
"color-picker@tuberry"
"dash-to-panel@jderose9.github.com"
"monitor-brightness-volume@ailin.nemui"
"native-window-placement@gnome-shell-extensions.gcampax.github.com"
"screenshot-window-sizer@gnome-shell-extensions.gcampax.github.com"
"tilingshell@ferrarodomenico.com"
"user-theme@gnome-shell-extensions.gcampax.github.com"
"Vitals@CoreCoding.com"
# pkgs.gnomeExtensions.just-perfection.extensionUuid
pkgs.gnomeExtensions.alphabetical-app-grid.extensionUuid
pkgs.gnomeExtensions.quick-settings-audio-devices-hider.extensionUuid
pkgs.gnomeExtensions.quick-settings-audio-devices-renamer.extensionUuid
];
favorite-apps = [
"org.gnome.Nautilus.desktop"
"org.wezfurlong.wezterm.desktop"
"win11.desktop"
"zen.desktop"
"spotify.desktop"
"vesktop.desktop"
"org.telegram.desktop.desktop"
"code.desktop"
"fleet-jet.desktop"
"steam.desktop"
"Marvel Rivals.desktop"
"org.prismlauncher.PrismLauncher.desktop"
];
last-selected-power-profile = "performance";
};
"org/gnome/shell/extensions/blur-my-shell" = {
settings-version = 2;
};
"org/gnome/shell/extensions/blur-my-shell/appfolder" = {
brightness = 0.6;
sigma = 30;
};
"org/gnome/shell/extensions/blur-my-shell/dash-to-dock" = {
blur = true;
brightness = 0.6;
sigma = 30;
static-blur = true;
style-dash-to-dock = 0;
};
"org/gnome/shell/extensions/blur-my-shell/panel" = {
brightness = 0.6;
sigma = 50;
static-blur = false;
};
"org/gnome/shell/extensions/blur-my-shell/window-list" = {
brightness = 0.6;
sigma = 30;
};
"org/gnome/shell/extensions/clipboard-indicator" = {
cache-only-favorites = false;
cache-size = 120;
display-mode = 0;
enable-keybindings = true;
history-size = 40;
notify-on-copy = false;
pinned-on-bottom = true;
strip-text = false;
toggle-menu = [ "<Super>v" ];
topbar-preview-size = 10;
};
"org/gnome/shell/extensions/color-picker" = {
color-history = [
(mkUint32 3158064)
1447446
14538709
14637907
1447446
3355443
16777215
1644825
];
color-picker-shortcut = [ "<Super>c" ];
enable-notify = true;
enable-shortcut = true;
enable-systray = true;
menu-size = mkUint32 8;
notify-style = mkUint32 0;
persistent-mode = false;
preview-style = mkUint32 0;
};
"org/gnome/shell/extensions/dash-to-panel" = {
appicon-margin = 6;
appicon-padding = 8;
available-monitors = [
0
1
];
dot-position = "TOP";
dot-style-focused = "DASHES";
dot-style-unfocused = "DASHES";
multi-monitors = false;
panel-positions = ''
{"0":"TOP","1":"TOP"}
'';
primary-monitor = 0;
scroll-icon-action = "CYCLE_WINDOWS";
scroll-panel-action = "SWITCH_WORKSPACE";
trans-panel-opacity = "0.40";
trans-use-custom-opacity = true;
tray-padding = 8;
};
"org/gnome/shell/extensions/tilingshell" = {
enable-autotiling = false;
enable-smart-window-border-radius = false;
enable-window-border = true;
inner-gaps = mkUint32 8;
last-version-name-installed = "16.2";
layouts-json = "[{\"id\":\"Layout 1\",\"tiles\":[{\"x\":0,\"y\":0,\"width\":0.22,\"height\":0.5,\"groups\":[2,1]},{\"x\":0,\"y\":0.5,\"width\":0.22,\"height\":0.5,\"groups\":[1,2]},{\"x\":0.22,\"y\":0,\"width\":0.2794791666666666,\"height\":0.5,\"groups\":[7,5,2]},{\"x\":0.753125,\"y\":0,\"width\":0.24687499999999998,\"height\":0.5,\"groups\":[4,3]},{\"x\":0.753125,\"y\":0.5,\"width\":0.24687499999999998,\"height\":0.5,\"groups\":[4,3]},{\"x\":0.22,\"y\":0.5,\"width\":0.2797395833333334,\"height\":0.5,\"groups\":[5,6,2]},{\"x\":0.49973958333333335,\"y\":0.5,\"width\":0.2533854166666667,\"height\":0.5,\"groups\":[5,3,6]},{\"x\":0.49947916666666664,\"y\":0,\"width\":0.25364583333333346,\"height\":0.5,\"groups\":[3,5,7]}]},{\"id\":\"Layout 2\",\"tiles\":[{\"x\":0,\"y\":0,\"width\":0.22,\"height\":1,\"groups\":[1]},{\"x\":0.22,\"y\":0,\"width\":0.56,\"height\":1,\"groups\":[1,2]},{\"x\":0.78,\"y\":0,\"width\":0.22,\"height\":1,\"groups\":[2]}]},{\"id\":\"985825\",\"tiles\":[{\"x\":0,\"y\":0,\"width\":1,\"height\":0.5,\"groups\":[1]},{\"x\":0,\"y\":0.5,\"width\":1,\"height\":0.5,\"groups\":[1]}]}]";
move-window-center = [ "<Super>Return" ];
outer-gaps = mkUint32 4;
overridden-settings = "{\"org.gnome.mutter.keybindings\":{\"toggle-tiled-right\":\"['<Super>Right']\",\"toggle-tiled-left\":\"['<Super>Left']\"},\"org.gnome.desktop.wm.keybindings\":{\"maximize\":\"['<Super>Up']\",\"unmaximize\":\"['<Super>Down', '<Alt>F5']\"},\"org.gnome.mutter\":{\"edge-tiling\":\"false\"}}";
restore-window-original-size = false;
selected-layouts = [
[
"Layout 1"
"985825"
]
[
"Layout 1"
"985825"
]
];
span-multiple-tiles-activation-key = [ "1" ];
span-window-all-tiles = [ "<Control><Super>Page_Up" ];
span-window-down = [ "<Alt><Super>Down" ];
span-window-left = [ "<Alt><Super>Left" ];
span-window-right = [ "<Alt><Super>Right" ];
span-window-up = [ "<Alt><Super>Up" ];
tiling-system-activation-key = [ "2" ];
untile-window = [ "<Control><Super>Page_Down" ];
window-border-width = mkUint32 1;
};
"org/gnome/shell/extensions/user-theme" = {
name = "Gruvbox-Dark";
};
"org/gnome/shell/extensions/vitals" = {
alphabetize = true;
hide-icons = false;
hide-zeros = false;
hot-sensors = [
"_memory_usage_"
"_storage_free_"
"_network_public_ip_"
"_processor_usage_"
"__temperature_avg__"
"_system_uptime_"
];
icon-style = 0;
include-static-gpu-info = false;
menu-centered = false;
position-in-panel = 4;
show-gpu = false;
};
"org/gtk/gtk4/settings/file-chooser" = {
show-hidden = true;
};
"org/gtk/settings/file-chooser" = {
date-format = "regular";
location-mode = "path-bar";
show-hidden = true;
show-size-column = true;
show-type-column = true;
sidebar-width = 165;
sort-column = "name";
sort-directories-first = true;
sort-order = "ascending";
type-format = "category";
window-position = mkTuple [
102
102
];
window-size = mkTuple [
1231
902
];
};
"org/virt-manager/virt-manager/connections" = {
autoconnect = [
"qemu:///session"
"qemu:///system"
];
uris = [
"qemu:///session"
"qemu:///system"
];
};
"org/virt-manager/virt-manager/vmlist-fields" = {
disk-usage = true;
network-traffic = true;
};
};
};
}

View file

@ -1,17 +0,0 @@
{
# Replaces the default terminal emulator; gnome-terminal/gnome-console is disabled
programs.ghostty = {
enable = true;
enableFishIntegration = true;
settings = {
theme = "stylix";
font-family = "monospace";
font-size = "11";
background-opacity = "0.85";
};
};
home.sessionVariables = {
TERM = "ghostty";
};
}

View file

Before

Width:  |  Height:  |  Size: 2.9 MiB

After

Width:  |  Height:  |  Size: 2.9 MiB

View file

@ -0,0 +1,179 @@
{
config,
inputs,
lib,
pkgs,
...
}:
let
## Functions, Variables and Launchers ##
# colorpicker = exec ./scripts/colorpicker.fish;
# lockscreen = exec ./scripts/lockscreen.fish;
# notify = exec ./scripts/notify.fish;
# wlogout = exec ./scripts/wlogout.fish;
#gtk-play = "${pkgs.libcanberra-gtk3}/bin/canberra-gtk-play";
#makoctl = "${config.services.mako.package}/bin/makoctl";
#notify-send = "${pkgs.libnotify}/bin/notify-send";
#playerctl = lib.getExe pkgs.playerctl; # installed via /home/common/optional/desktops/playerctl.nix
#swaylock = "lib.getExe pkgs.swaylock;
betterControl = inputs.better-control.packages.${pkgs.system}.better-control;
defaultApp =
type: "${pkgs.gtk3}/bin/gtk-launch $(${pkgs.xdg-utils}/bin/xdg-mime query default ${type})";
exec = script: "${pkgs.fish}/bin/fish ${script}";
files = "${pkgs.nautilus}/bin/nautilus $HOME";
browser = defaultApp "x-scheme-handler/https";
editor = "code";
launcher = "${pkgs.walker}/bin/walker --modules applications,ssh";
pactl = lib.getExe' pkgs.pulseaudio "pactl";
terminal = exec (import ./scripts/terminal.nix { inherit pkgs; });
brightness = exec (import ./scripts/brightness.nix { inherit pkgs lib; });
## Long ass keys ##
lowerVol = "XF86AudioLowerVolume";
raiseVol = "XF86AudioRaiseVolume";
brightUp = "XF86MonBrightnessUp";
brightDown = "XF86MonBrightnessDown";
## Keybinds & Submaps ##
#INFO: Did this scripts to avoid the shitty hyprland config implementation for nix :)
submaps = {
## Submap: Reset ##
"" = {
binds = {
## One-Shot Binds ##
"" = [
## Terminal ##
"SUPER, T, exec, ${terminal}"
# "SUPER_SHIFT, T, exec, ${terminal}" # Floating
# "SUPER_ALT, T, exec, ${terminal}" # Select
## App Runs ##
"SUPER, F, exec, ${files}"
"SUPER, E, exec, ${editor}"
"SUPER, W, exec, ${browser}"
"SUPER, N, exec, nm-connection-editor"
## Launcher ##
"SUPER, SUPER_L, exec, ${launcher}"
# "SUPER, SUPER_L, exec, ${launcher} --app launcher"
# "SUPER, P, exec, ${launcher} --app color" # Color Picker
# "SUPER, V, exec, ${launcher} --app clip" # Clipboard
# "SUPER, X, exec, ${launcher} --app power" # Power Menu
"SUPER, X, exec, ${lib.getExe betterControl} -pm" # Power Menu
## System ##
"SUPER, L, exec, hyprlock"
# "SUPER, L, exec, ${lockscreen}"
"SUPER, Q, killactive,"
"CTRL_ALT, Delete, exec, uwsm stop"
", ${brightUp}, exec, ${brightness} + 10"
", ${brightDown}, exec, ${brightness} - 10"
## Window Management ##
"SUPER_SHIFT, F, fullscreen, 0"
"SUPER_ALT, F, fullscreenstate, 0 3"
# "SUPER, F, exec, ${notify} 'Fullscreen Mode'"
"SUPER, Backspace, togglefloating,"
"SUPER, Backspace, centerwindow,"
"SUPER, left, scroller:movefocus, l"
"SUPER, right, scroller:movefocus, r"
"SUPER, up, scroller:movefocus, u"
"SUPER, down, scroller:movefocus, d"
"SUPER_SHIFT, left, scroller:movewindow, l, nomode"
"SUPER_SHIFT, right, scroller:movewindow, r, nomode"
"SUPER_SHIFT, up, scroller:movewindow, u, nomode"
"SUPER_SHIFT, down, scroller:movewindow, d, nomode"
"SUPER_SHIFT, P, pin,"
# "SUPER_SHIFT, P, exec, ${notify} 'Toggled Pin'"
"SUPER_SHIFT, S, swapnext"
# "SUPER_SHIFT, O, toggleopaque"
"SUPER, G, togglegroup"
# "SUPER, G, exec, ${notify} 'Toggled Group'"
"SUPER, Tab, changegroupactive, f"
# ## Workspaces ##
# ", Home, hyprexpo:expo, toggle"
", Home, overview:toggle"
"ALT, Tab, cyclenext,"
"ALT, Tab, bringactivetotop,"
"SUPER, 1, workspace, 1"
"SUPER, 2, workspace, 2"
"SUPER, 3, workspace, 3"
"SUPER, 4, workspace, 4"
"SUPER_ALT, G, exec, ${steam-map} on ${monitors-json}"
## Scroller ##
"SUPER, P, scroller:pin"
"SUPER, P, scroller:alignwindow, left"
"SUPER, P, scroller:setsize, onethird"
# "\\notify"
"SUPER_SHIFT, P, scroller:pin"
"SUPER_SHIFT, P, scroller:alignwindow, right"
"SUPER_SHIFT, P, scroller:setsize, onethird"
# "\\notify"
"SUPER, A, scroller:jump"
# F20 - F23
", code:198, scroller:selectiontoggle"
", code:199, scroller:selectionworkspace"
", code:200, scroller:selectionmove, e"
", code:201, scroller:selectionreset"
];
## Repeating Binds ##
e = [
"SUPER_ALT, left, scroller:cyclewidth, next"
"SUPER_ALT, right, scroller:cyclewidth, prev"
"SUPER_ALT, up, scroller:cycleheight, next"
"SUPER_ALT, down, scroller:cycleheight, prev"
# "SUPER_ALT, left, resizeactive, -20 0"
# "SUPER_ALT, right, resizeactive, 20 0"
# "SUPER_ALT, up, resizeactive, 0 -20"
# "SUPER_ALT, down, resizeactive, 0 20"
", ${raiseVol}, exec, ${pactl} set-sink-volume @DEFAULT_SINK@ +5%"
", ${lowerVol}, exec, ${pactl} set-sink-volume @DEFAULT_SINK@ -5%"
", ${raiseVol}, exec, ${pactl} set-source-volume @DEFAULT_SOURCE@ +5%"
", ${lowerVol}, exec, ${pactl} set-source-volume @DEFAULT_SOURCE@ -5%"
];
## Mouse Binds ##
m = [
", mouse:275, movewindow"
", mouse:276, resizewindow"
];
};
};
## Submap: Steam ##
steam = {
binds = {
"" = [
"SUPER, Escape, exec, ${steam-map} off ${monitors-json}"
];
n = [
"SUPER, SUPER_L, pass"
", mouse:275, pass"
", mouse:276, pass"
];
};
};
};
steam-map = import ./scripts/steam-map.nix { inherit pkgs; };
monitors-json = pkgs.writeText "monitors.json" (builtins.toJSON config.monitors);
submaps-script = import ./scripts/submaps.nix { inherit pkgs; };
submaps-json = pkgs.writeText "submaps.json" (builtins.toJSON submaps);
submaps-run = pkgs.runCommand "submaps-run" { inherit submaps-json submaps-script; } ''
mkdir -p $out
${pkgs.fish}/bin/fish ${submaps-script} ${submaps-json} > $out/submaps-out
'';
in
{
wayland.windowManager.hyprland.extraConfig = builtins.readFile "${submaps-run}/submaps-out";
}

View file

@ -0,0 +1,190 @@
{
config,
inputs,
lib,
pkgs,
...
}:
{
imports = lib.custom.scanPaths ./.;
wayland.windowManager.hyprland = {
enable = true;
systemd.enable = false; # using withUWSM
package = null;
portalPackage = null;
# systemd = {
# enable = true;
# variables = [ "--all" ];
# extraCommands = lib.mkBefore [
# "systemctl --user stop graphical-session.target"
# "systemctl --user start hyprland-session.target"
# ];
# };
settings = {
## Environment Vars ##
env = [
"NIXOS_XDG_OPEN_USE_PORTAL, 1" # for xdg-open to use portal
"NIXOS_OZONE_WL, 1" # for ozone-based and electron apps to run on wayland
"MOZ_ENABLE_WAYLAND, 1" # for firefox to run on wayland
"MOZ_WEBRENDER, 1" # for firefox to run on wayland
"XDG_SESSION_TYPE, wayland"
"XDG_SESSION_DESKTOP, Hyprland"
"XDG_CURRENT_DESKTOP, Hyprland"
"WLR_NO_HARDWARE_CURSORS, 1"
"WLR_RENDERER_ALLOW_SOFTWARE, 1"
"QT_QPA_PLATFORM, wayland"
"GTK_USE_PORTAL, 1"
"HYPRCURSOR_THEME, rose-pine-hyprcursor" # this will be better than default for now
];
xwayland = {
force_zero_scaling = true;
};
## Monitor ##
monitor = (
# INFO: parse the monitors defined in home/<user>/<host>/default.nix
map (
m:
"${m.name},${
if m.enabled then
"${toString m.width}x${toString m.height}@${toString m.refreshRate},${toString m.x}x${toString m.y},${toString m.scale},transform,${toString m.transform},vrr,${toString m.vrr}"
else
"disable"
}"
) (config.monitors)
);
# This used to be usefull now its just overkill
# Creates 1 persistent workspaces for all monitors
workspace =
let
json = pkgs.writeTextFile {
name = "monitors.json";
text = builtins.toJSON config.monitors;
};
parse = pkgs.runCommand "parse-workspaces" { } ''
mkdir "$out"; ${pkgs.jq}/bin/jq -r '
[ to_entries[] |
(.key as $i | .value.name as $name |
[ range(1;2) | ($i * 1 + .) as $wsnum |
if . == 0 then "\($wsnum), monitor:\($name), default:true, persistent:true"
else "\($wsnum), monitor:\($name)" end
]
)
] | flatten
' ${json} > "$out/out.json"
'';
output = builtins.fromJSON (builtins.readFile "${parse}/out.json");
in
output;
## Behavior ##
binds = {
workspace_center_on = 1;
movefocus_cycles_fullscreen = false;
};
input = {
follow_mouse = 2;
mouse_refocus = false;
kb_options = "fkeys:basic_13-24";
sensitivity = 0.5;
};
cursor = {
inactive_timeout = 10;
};
misc = {
disable_hyprland_logo = true;
animate_manual_resizes = true;
animate_mouse_windowdragging = true;
#disable_autoreload = true;
new_window_takes_over_fullscreen = 2;
middle_click_paste = false;
};
group = {
drag_into_group = 2;
merge_groups_on_drag = true;
# col.border_active = "";
# col.border_inactive = "";
groupbar = {
enabled = true;
height = 12;
};
};
dwindle = {
pseudotile = false;
force_split = 0;
smart_split = true;
split_bias = 1;
};
## Appearance ##
general = {
layout = "scroller";
border_size = 2;
gaps_in = 6;
gaps_out = 6;
# "col.inactive_border" = "rgb(191b1c)";
# "col.active_border" = "rgb(1cbdd9) rgb(f6ef9d) 30deg";
allow_tearing = true; # used to reduce latency and/or jitter in games
snap = {
enabled = true;
window_gap = 6;
};
};
decoration = {
rounding = 10;
rounding_power = 4.0;
active_opacity = 0.85;
inactive_opacity = 0.75;
fullscreen_opacity = 1.0;
dim_inactive = true;
dim_strength = 0.2;
blur = {
enabled = true;
size = 7;
passes = 3;
new_optimizations = true;
ignore_opacity = true;
xray = true;
# noise = 0.15;
popups = true;
};
shadow = {
enabled = true;
range = 30;
render_power = 2;
scale = 1.5;
# color = "rgb(191b1c)";
# color_inactive = "rgb(191b1c)";
};
};
animation = [
"windowsIn, 1, 5 ,default, popin 0%"
"windowsOut, 1, 5 ,default, popin"
"windowsMove, 1, 5 ,default, slide"
"fadeIn, 1, 8 ,default"
"fadeOut, 1, 8 ,default"
"fadeSwitch, 1, 8 ,default"
"fadeShadow, 1, 8 ,default"
"fadeDim, 1, 8 ,default"
"border, 1, 10 ,default"
"workspaces, 1, 5 ,default, slide"
];
};
};
}

View file

@ -0,0 +1,68 @@
{ pkgs, inputs, ... }:
{
home.packages = [
# pkgs.hyprlandPlugins.hyprexpo
pkgs.hyprlandPlugins.hyprspace
pkgs.hyprlandPlugins.hyprscroller
];
wayland.windowManager.hyprland = {
plugins = [
# pkgs.hyprlandPlugins.hyprexpo
pkgs.hyprlandPlugins.hyprspace
pkgs.hyprlandPlugins.hyprscroller
];
# TODO: Colors and Theme
settings = {
windowrulev2 = [
"bordercolor rgb(191b1c) rgb(ffffff) 25deg, tag: scroller:pinned"
];
plugin = {
# hyprexpo = {
# columns = 3;
# gap_size = 5;
# bg_col = "rgb(000000)";
# workspace_method = "center current"; # [center/first] [workspace] e.g. first 1 or center m+1
# };
overview = {
centerAligned = true;
hideOverlayLayers = true;
showSpecialWorkspaces = true;
};
scroller = {
mode = "row";
center_active_column = true;
center_active_window = false;
focus_wrap = true;
overview_scale_content = false;
"col.selection_border" = "rgb(191b1c)";
jump_labels_font = "Monocraft";
jump_labels_color = "rgb(ffffff)";
jump_labels_scale = "0.1";
jump_labels_keys = "qwfpgarstd";
# monitor_options = ''
# (
# DP-1 = (
# mode = row;
# column_default_width = onehalf;
# column_widths = onehalf onethird twothirds threefourths;
# window_default_height = seveneighths;
# window_heights = seveneighths onehalf onethird twothirds
# ),
# HDMI-A-2 = (
# mode = col;
# column_default_width = one;
# column_widths = one onehalf;
# window_default_height = twothirds;
# window_heights = seveneighths onehalf onethird twothirds
# ),
# )'';
monitor_options = "(DP-1 = (mode = row;column_default_width = onehalf;column_widths = seveneighths threequarters twothirds onehalf onethird;window_default_height = one;window_heights = one seveneighths twothirds onehalf onethird),HDMI-A-2 = (mode = col; column_default_width = one;column_widths = one onehalf;window_default_height = twothirds;window_heights = seveneighths twothirds onehalf onethird),)";
};
};
};
};
}

View file

@ -1,7 +1,4 @@
{
lib,
...
}:
{ lib, ... }:
{
imports = lib.custom.scanPaths ./.;
}

View file

@ -0,0 +1,38 @@
{ lib, ... }:
{
programs.hyprlock = {
enable = true;
settings = {
general = {
disable_loading_bar = true;
immediate_render = true;
hide_cursor = false;
no_fade_in = true;
};
background = lib.mkDefault [
{
path = "screenshot";
blur_passes = 3;
blur_size = 8;
}
];
input-field = lib.mkDefault [
{
size = "200, 50";
position = "0, -80";
monitor = "";
dots_center = true;
fade_on_empty = false;
font_color = "rgb(202, 211, 245)";
inner_color = "rgb(91, 96, 120)";
outer_color = "rgb(24, 25, 38)";
outline_thickness = 5;
shadow_passes = 2;
}
];
};
};
}

View file

@ -0,0 +1,248 @@
app_launch_prefix = ""
terminal_title_flag = ""
locale = ""
close_when_open = false
theme = "default"
monitor = ""
hotreload_theme = false
as_window = false
timeout = 0
disable_click_to_close = false
force_keyboard_focus = true
[keys]
accept_typeahead = ["tab"]
trigger_labels = "lalt"
next = ["down"]
prev = ["up"]
close = ["esc"]
remove_from_history = ["shift backspace"]
resume_query = ["ctrl r"]
toggle_exact_search = ["ctrl m"]
[keys.activation_modifiers]
keep_open = "shift"
alternate = "alt"
[keys.ai]
clear_session = ["ctrl x"]
copy_last_response = ["ctrl c"]
resume_session = ["ctrl r"]
run_last_response = ["ctrl e"]
[events]
on_activate = ""
on_selection = ""
on_exit = ""
on_launch = ""
on_query_change = ""
[list]
dynamic_sub = true
keyboard_scroll_style = "emacs"
max_entries = 50
show_initial_entries = true
single_click = true
visibility_threshold = 20
placeholder = "No Results"
[search]
argument_delimiter = "#"
placeholder = "Search..."
delay = 0
resume_last_query = false
[activation_mode]
labels = "jkl;asdf"
[builtins.applications]
weight = 5
name = "applications"
placeholder = "Applications"
prioritize_new = true
hide_actions_with_empty_query = true
context_aware = true
refresh = true
show_sub_when_single = true
show_icon_when_single = true
show_generic = true
history = true
[builtins.applications.actions]
enabled = true
hide_category = false
hide_without_query = true
[builtins.bookmarks]
weight = 5
placeholder = "Bookmarks"
name = "bookmarks"
icon = "bookmark"
switcher_only = true
[[builtins.bookmarks.entries]]
label = "Walker"
url = "https://github.com/abenz1267/walker"
keywords = ["walker", "github"]
[builtins.xdph_picker]
hidden = true
weight = 5
placeholder = "Screen/Window Picker"
show_sub_when_single = true
name = "xdphpicker"
switcher_only = true
[builtins.ai]
weight = 5
placeholder = "AI"
name = "ai"
icon = "help-browser"
switcher_only = true
[[builtins.ai.anthropic.prompts]]
model = "claude-3-5-sonnet-20241022"
temperature = 1
max_tokens = 1_000
label = "General Assistant"
prompt = "You are a helpful general assistant. Keep your answers short and precise."
[builtins.calc]
require_number = true
weight = 5
name = "calc"
icon = "accessories-calculator"
placeholder = "Calculator"
min_chars = 4
[builtins.windows]
weight = 5
icon = "view-restore"
name = "windows"
placeholder = "Windows"
show_icon_when_single = true
[builtins.clipboard]
always_put_new_on_top = true
exec = "wl-copy"
weight = 5
name = "clipboard"
avoid_line_breaks = true
placeholder = "Clipboard"
image_height = 300
max_entries = 10
switcher_only = true
[builtins.commands]
weight = 5
icon = "utilities-terminal"
switcher_only = true
name = "commands"
placeholder = "Commands"
[builtins.custom_commands]
weight = 5
icon = "utilities-terminal"
name = "custom_commands"
placeholder = "Custom Commands"
[builtins.emojis]
exec = "wl-copy"
weight = 5
name = "emojis"
placeholder = "Emojis"
switcher_only = true
history = true
typeahead = true
show_unqualified = false
[builtins.symbols]
after_copy = ""
weight = 5
name = "symbols"
placeholder = "Symbols"
switcher_only = true
history = true
typeahead = true
[builtins.finder]
use_fd = false
weight = 5
icon = "file"
name = "finder"
placeholder = "Finder"
switcher_only = true
ignore_gitignore = true
refresh = true
concurrency = 8
show_icon_when_single = true
preview_images = false
[builtins.runner]
eager_loading = true
weight = 5
icon = "utilities-terminal"
name = "runner"
placeholder = "Runner"
typeahead = true
history = true
generic_entry = false
refresh = true
use_fd = false
[builtins.ssh]
weight = 5
icon = "preferences-system-network"
name = "ssh"
placeholder = "SSH"
switcher_only = true
history = true
refresh = true
[builtins.switcher]
weight = 5
name = "switcher"
placeholder = "Switcher"
prefix = "/"
[builtins.websearch]
keep_selection = true
weight = 5
icon = "applications-internet"
name = "websearch"
placeholder = "Websearch"
[[builtins.websearch.entries]]
name = "Google"
url = "https://www.google.com/search?q=%TERM%"
[[builtins.websearch.entries]]
name = "DuckDuckGo"
url = "https://duckduckgo.com/?q=%TERM%"
switcher_only = true
[[builtins.websearch.entries]]
name = "Ecosia"
url = "https://www.ecosia.org/search?q=%TERM%"
switcher_only = true
[[builtins.websearch.entries]]
name = "Yandex"
url = "https://yandex.com/search/?text=%TERM%"
switcher_only = true
[builtins.dmenu]
hidden = true
weight = 5
name = "dmenu"
placeholder = "Dmenu"
switcher_only = true
[builtins.translation]
delay = 1000
weight = 5
name = "translation"
icon = "accessories-dictionary"
placeholder = "Translation"
switcher_only = true
provider = "googlefree"

View file

@ -0,0 +1,13 @@
{ pkgs, ... }:
{
home.packages = [ pkgs.walker ];
wayland.windowManager.hyprland.settings.exec-once = [
''walker --gapplication-service''
];
home.file."~/.config/walker/config.toml" = {
source = ./config.toml;
target = ".config/walker/config.toml";
};
}

View file

@ -0,0 +1,11 @@
{ pkgs, inputs, ... }:
{
home.packages = [
inputs.watershot.packages.${pkgs.system}.default
pkgs.grim
];
home.file.".config/watershot.ron" = {
source = ./watershot.ron;
};
}

View file

@ -0,0 +1,25 @@
Config(
handle_radius: 10,
line_width: 2,
display_highlight_width: 5,
selection_color: Color(
r: 0.38,
g: 0.68,
b: 0.94,
a: 1.0,
),
shade_color: Color(
r: 0.11,
g: 0.0,
b: 0.11,
a: 0.6,
),
text_color: Color(
r: 1.0,
g: 1.0,
b: 1.0,
a: 1.0,
),
mode_text_size: 50,
font_family: "monospace",
)

View file

@ -0,0 +1,134 @@
{ pkgs, ... }:
let
# Zen extensions to float
zen-script = import ./scripts/zen-float.nix { inherit pkgs; };
zen-json = pkgs.writeText "zen-extensions.json" (builtins.toJSON zen-extensions);
zen-extensions = {
bitwarden = {
regex = "'*(Bitwarden Password Manager) - Bitwarden*'";
x = 500;
y = 900;
};
authenticator = {
regex = "'*(Authenticator) - Authenticator*'";
x = 335;
y = 525;
};
};
in
{
wayland.windowManager.hyprland.settings = {
# Floats zen extensions
exec-once = [
"${pkgs.fish}/bin/fish ${zen-script} ${zen-json}"
];
## Layers Rules ##
layer = [
#"blur, rofi"
#"ignorezero, rofi"
#"ignorezero, logout_dialog"
];
## Window Rules ##
windowrulev2 = [
# Dialogs
"float, title:^(Open File)(.*)$"
"float, title:^(Select a File)(.*)$"
"float, title:^(Choose wallpaper)(.*)$"
"float, title:^(Open Folder)(.*)$"
"float, title:^(Save As)(.*)$"
"float, title:^(Library)(.*)$"
"float, title:^(Accounts)(.*)$"
"float, title:^(Media viewer)$"
# Zen
"suppressevent maximize, class:^(zen)$"
"float, initialTitle:^(Picture-in-Picture)$"
"nodim, initialTitle:^(Picture-in-Picture)$"
"keepaspectratio, initialTitle:^(Picture-in-Picture)$"
"float, class:^(zen)$, title:^(File Upload)$"
"workspace special silent, title:^(Zen Sharing Indicator)$"
"workspace special silent, title:^(.*is sharing (your screen|a window)\.)$"
# Foot
"plugin:scroller:modemodifier col after focus, class:^(foot)$"
"plugin:scroller:windowheight onethird, class:^(foot)$"
# Vesktop
"workspace 2, class:^(vesktop)$"
"plugin:scroller:group vesktop, class:^(vesktop)$"
"opaque, initialTitle:^(Discord Popout)$"
"plugin:scroller:modemodifier row before focus, initialTitle:^(Discord Popout)$"
"plugin:scroller:windowheight onethird, initialTitle:^(Discord Popout)$"
# VsCode
"plugin:scroller:group code, class:^(code)$"
"plugin:scroller:alignwindow center, class:^(code)$"
"plugin:scroller:windowheight seveneighths, class:^(code)$"
# Float Apps
"float, class:^(galculator)$"
"float, class:^(waypaper)$"
"float, class:^(keymapp)$"
# Nautilus
"float, initialClass:^(org.gnome.Nautilus)$"
"float, initialClass:^(org.gnome.Nautilus)$, move 10% 50%"
"size 30% 30%, initialClass:^(org.gnome.Nautilus)$"
# Always opaque
"opaque, class:^([Gg]imp)$"
"opaque, class:^([Ff]lameshot)$"
"opaque, class:^([Ii]nkscape)$"
"opaque, class:^([Bb]lender)$"
"opaque, class:^([Oo][Bb][Ss])$"
"opaque, class:^([Vv]lc)$"
# Remove transparency from video
"opaque, title:^(Netflix)(.*)$"
"opaque, title:^(.*YouTube.*)$"
## Scratch rules ##
#"size 80% 85%, workspace:^(special:special)$"
#"center, workspace:^(special:special)$"
#Ryujinx
"opaque, initialClass:^(Ryujinx)$"
"immediate, initialClass:^(Ryujinx)$"
"workspace 3, initialClass:^(Ryujinx)$"
"float, initialTitle:^(ContentDialogOverlayWindow)$"
"center, initialTitle:^(ContentDialogOverlayWindow)$"
## Steam rules ##
"opaque, initialClass:^([Gg]amescope)$"
# "stayfocused, initialClass:^([Gg]amescope)$"
"fullscreen, initialClass:^([Gg]amescope)$"
"minsize 1 1, initialClass:^([Gg]amescope)$"
"immediate, initialClass:^([Gg]amescope)$"
"workspace 3, initialClass:^([Gg]amescope)$"
#
# ========== Fameshot rules ==========
#
# flameshot currently doesn't have great wayland support so needs some tweaks
#"rounding 0, class:^([Ff]lameshot)$"
#"noborder, class:^([Ff]lameshot)$"
#"float, class:^([Ff]lameshot)$"
#"move 0 0, class:^([Ff]lameshot)$"
#"suppressevent fullscreen, class:^([Ff]lameshot)$"
# "monitor:DP-1, ${flameshot}"
## Workspace Assignments ##
"workspace 2, initialClass:^(spotify)$"
"workspace 2, initialClass:^(org.telegram.desktop)$"
# "workspace name:4, initialClass:^(virt-manager)$"
# "workspace 8, class:^(obsidian)$"
# "workspace 9, class:^(brave-browser)$"
];
};
}

View file

@ -0,0 +1,46 @@
{ pkgs, lib, ... }:
let
# Define your I2C bus numbers
# Couldnt find a non hardcoded way to get the bus numbers :(
busesList = [
6
9
];
busesStr = lib.concatStringsSep " " (map toString busesList);
in
pkgs.writeScript "brightness-control" ''
#!/usr/bin/env fish
# Usage:
# brightness-control --up 10
# brightness-control + 10
# brightness-control --down 15
# brightness-control - 15
if test (count $argv) -ne 2
echo "Usage: $argv[0] [--up|+|--down|-] <INTEGER>"
exit 1
end
set option $argv[1]
set value $argv[2]
if test "$option" = "--up" -o "$option" = "+"
set op "+"
else if test "$option" = "--down" -o "$option" = "-"
set op "-"
else
echo "Invalid option. Use --up | + or --down | -"
exit 1
end
# Hard-coded bus list:
set buses ${busesStr}
for bus in $buses
echo "Changing brightness on bus $bus: ddcutil setvcp 10 $op $value --bus $bus"
${pkgs.ddcutil}/bin/ddcutil setvcp 10 $op $value --bus $bus
end
''

View file

@ -0,0 +1,3 @@
{
# :D
}

View file

@ -0,0 +1,55 @@
{
pkgs,
...
}:
pkgs.writeScript "steam-map" ''
#!/usr/bin/env fish
# Usage: ./steam-map-toggle.fish on|off <monitors.json>
if test (count $argv) -lt 2
echo "Usage: $0 on|off <monitors.json>"
exit 1
end
set mode $argv[1]
set json_file $argv[2]
if not test -e $json_file
echo "Error: File $json_file does not exist"
exit 1
end
# Parse the JSON and generate instructions for NON-primary monitors.
# When 'off', build the monitor string; when 'on', disable the monitor.
set instructions (${pkgs.jq}/bin/jq -r --arg mode "$mode" '
.[] |
if .primary then empty else
if $mode == "off" then
.name + "," +
(.width|tostring) + "x" + (.height|tostring) + "@" + (.refreshRate|tostring) + "," +
(.x|tostring) + "x" + (.y|tostring) + "," +
(.scale|tostring) +
(if has("transform") then ",transform," + (.transform|tostring) else "" end) +
",vrr," + (if has("vrr") then (.vrr|tostring) else "0" end)
else
.name + ", disable"
end
end
' $json_file)
# Execute hyprctl keyword monitor for each instruction.
for instruction in $instructions
echo "Running: hyprctl keyword monitor $instruction"
hyprctl keyword monitor "$instruction"
end
# Dispatch the appropriate submap.
if [ "$mode" = "on" ]
hyprctl --batch "dispatch submap steam; dispatch workspace 3"
else if [ "$mode" = "off" ]
hyprctl dispatch submap reset
else
echo "Invalid mode: $mode"
exit 1
end
''

View file

@ -0,0 +1,44 @@
{
pkgs,
...
}:
pkgs.writeScript "submap-script" ''
#!/usr/bin/env fish
# Usage: ./parse_submaps.fish path/to/file.json
if test (count $argv) -lt 1
echo "Usage: $argv[0] path/to/file.json"
exit 1
end
set json_file $argv[1]
# Iterate over submaps preserving order
for entry in (${pkgs.jq}/bin/jq -c '.| to_entries[]' $json_file)
set submap_name (echo $entry | ${pkgs.jq}/bin/jq -r '.key')
echo "submap=$submap_name"
# Process each binds entry within the submap
for bind_entry in (echo $entry | ${pkgs.jq}/bin/jq -c '.value.binds | to_entries[]')
set bind_key (echo $bind_entry | ${pkgs.jq}/bin/jq -r '.key')
if test "$bind_key" = ""
set prefix "bind="
else if test "$bind_key" = "unbind"
set prefix "unbind="
else
set prefix "bind$bind_key="
end
# Process each binding's value in the array
for binding in (echo $bind_entry | ${pkgs.jq}/bin/jq -r '.value[]')
echo "$prefix$binding"
end
end
# Append submap reset except for default "" submap
if not test "$submap_name" = ""
echo "submap=reset"
end
end
''

View file

@ -0,0 +1,10 @@
{
pkgs,
...
}:
# TODO: obviously lol
# Handle float terminal and grim select terminal
pkgs.writeScript "terminal-launch" ''
#!/usr/bin/env fish
foot
''

View file

@ -0,0 +1,60 @@
{
pkgs,
...
}:
pkgs.writeScript "zen-script" ''
#!/usr/bin/env fish
if test (count $argv) -lt 1
echo "Usage: $argv[0] path/to/your.json"
exit 1
end
set json_file $argv[1]
function handle
set -l line $argv[1]
set -l file_path $argv[2]
switch $line
case "windowtitlev2*"
# Expected format: windowtitlev2>><id>,<title>
set -l payload (string replace -r '^windowtitlev2>>' "" $line)
set -l parts (string split "," $payload)
set -l window_id (string trim $parts[1])
set -l title (string join "," $parts[2..-1])
# Debug output
echo "Extracted window_id: [$window_id]"
echo "Extracted title: [$title]"
# Loop over the extensions defined in the JSON file.
for ext in ( ${pkgs.jq}/bin/jq -r 'keys[]' $file_path )
echo "Processing extension: [$ext]"
# Get regex, x and y for the current extension.
set -l reg ( ${pkgs.jq}/bin/jq -r --arg k $ext '.[$k].regex' $file_path )
set -l ext_x ( ${pkgs.jq}/bin/jq -r --arg k $ext '.[$k].x' $file_path )
set -l ext_y ( ${pkgs.jq}/bin/jq -r --arg k $ext '.[$k].y' $file_path )
# Remove any extra surrounding single quotes.
set -l reg (string trim -c "'" $reg)
# Debug: show the extension and regex being used.
echo "Checking extension [$ext] with regex [$reg] against title [$title]"
# If the title matches the regex, dispatch floating commands.
if string match -q -- "*$reg*" "$title"
echo "$ext window id: $window_id -- setting float mode with size $ext_x x $ext_y"
hyprctl --batch "dispatch togglefloating address:0x$window_id; dispatch resizewindowpixel exact $ext_x $ext_y,address:0x$window_id;"
return
end
end
case "*"
# Do nothing for other events.
end
end
${pkgs.socat}/bin/socat -U - UNIX-CONNECT:/run/user/1000/hypr/$HYPRLAND_INSTANCE_SIGNATURE/.socket2.sock | while read -l line
handle "$line" "$json_file"
end
''

View file

@ -0,0 +1,4 @@
{ lib, ... }:
{
imports = lib.custom.scanPaths ./.;
}

View file

@ -0,0 +1,200 @@
#
# Dunst
# Notification Daemon
#
{ pkgs, ... }:
{
home.packages = builtins.attrValues {
inherit (pkgs) libnotify; # required by dunst
};
services.dunst = {
enable = true;
# waylandDisplay = ""; # set the service's WAYLAND_DISPLAY environment variable
# configFile = "";
iconTheme = {
name = "Adwaita";
package = pkgs.adwaita-icon-theme;
size = "16x16";
};
settings = {
global = {
# Allow a small subset of html markup:<b></b>, <i></i>, <s></s>, and <u></u>.
# For a complete reference see
# <http://developer.gnome.org/pango/stable/PangoMarkupFormat.html>.
# If markup is not allowed, those tags will be stripped out of the message.
allow_markup = "yes";
# The format of the message. Possible variables are:
# %a appname
# %s summary
# %b body
# %i iconname (including its path)
# %I iconname (without its path)
# %p progress value if set ([ 0%] to [100%]) or nothing
# Markup is allowed
format = "%I %s %p\\n%b";
#TODO dynamic fonts
#font = "Droid Sans 12";
alignment = "left"; # Options are "left", "center", and "right".
sort = "yes"; # Sort messages by urgency.
indicate_hidden = "yes"; # Show how many messages are currently hidden (because of geometry).
# The frequency with which text that is longer than the notification
# window allows bounces back and forth.
# This option conflicts with "word_wrap".
# Set to 0 to disable.
bounce_freq = 5;
# Show age of message if message is older than show_age_threshold
# seconds.
# Set to -1 to disable.
show_age_threshold = 60;
# Split notifications into multiple lines if they don't fit into
# geometry.
word_wrap = "no";
# Ignore newlines '\n' in notifications.
ignore_newline = "no";
# The geometry of the window:
# [{width}]x{height}[+/-{x}+/-{y}]
# The geometry of the message window.
# The height is measured in number of notifications everything else
# in pixels. If the width is omitted but the height is given
# ("-geometry x2"), the message window expands over the whole screen
# (dmenu-like). If width is 0, the window expands to the longest
# message displayed. A positive x is measured from the left, a
# negative from the right side of the screen. Y is measured from
# the top and down respectevly.
# The width can be negative. In this case the actual width is the
# screen width minus the width defined in within the geometry option.
geometry = "0x4-25+25";
# Shrink window if it's smaller than the width. Will be ignored if
# width is 0.
shrink = "yes";
# Display notification on focused monitor. Possible modes are:
# mouse: follow mouse pointer
# keyboard: follow window with keyboard focus
# none: don't follow anything
#
# "keyboard" needs a windowmanager that exports the _NET_ACTIVE_WINDOW property.
# This should be the case for almost all modern windowmanagers.
#
# If this option is set to mouse or keyboard, the monitor option will be ignored.
follow = "mouse";
# Should a notification popped up from history be sticky or timeout
# as if it would normally do.
sticky_history = "yes";
# Maximum amount of notifications kept in history
history_length = 20;
# Display indicators for URLs (U) and actions (A).
show_indicators = "yes";
# The height of a single line. If the height is smaller than the
# font height, it will get raised to the font height.
# This adds empty space above and under the text.
line_height = 0;
# Draw a line of "separator_height" pixel height between two
# notifications. Set to 0 to disable.
separator_height = 1;
# Padding between text and separator.
padding = 8;
# Horizontal padding.
horizontal_padding = 10;
# The transparency of the window. Range: [0; 100].
# This option will only work if a compositing windowmanager is
# present (e.g. xcompmgr, compiz, etc.).
transparency = 15;
# Define a color for the separator.
# possible values are:
# * auto: dunst tries to find a color fitting to the background;
# * foreground: use the same color as the foreground;
# * frame: use the same color as the frame;
# * anything else will be interpreted as a X color.
# separator_color = "#454947";
# Print a notification on startup.
# This is mainly for error detection, since dbus (re-)starts dunst
# automatically after a crash.
#set to true for debugging
startup_notification = false;
# Align icons left/right/off
icon_position = "left";
width = 300;
height = 300;
offset = "30x50";
#origin = "top-right";
origin = "top-center";
#TODO dynamic theme colours
# frame_color = "#dc7f41";
# Browser for opening urls in context menu.
browser = "firefox";
};
frame = {
width = 2;
#TODO dynamic colours
# color = "#dc7f41";
};
shortcuts = {
# Shortcuts are specified as [modifier+][modifier+]...key
# Available modifiers are "ctrl", "mod1" (the alt-key), "mod2",
# "mod3" and "mod4" (windows-key).
# Xev might be helpful to find names for keys.
# Close notification.
close = "mod1+space";
# Close all notifications.
close_all = "ctrl+mod1+space";
# Redisplay last message(s).
history = "ctrl+mod4+h";
# Context menu.
context = "ctrl+mod1+c";
};
urgency_low = {
#TODO dynamic colours
# background = "#1e1e20";
# foreground = "#c5c8c6";
timeout = 10;
};
urgency_normal = {
#TODO dynamic colours
# background = "#1e1e20";
# foreground = "#c5c8c6";
timeout = 10;
};
urgency_critical = {
#TODO dynamic colours
# background = "#1e1e20";
# foreground = "#c5c8c6";
timeout = 0;
};
};
};
}

View file

@ -0,0 +1,19 @@
{
# Enable gammastep for night light
services.gammastep = {
enable = true;
provider = "manual";
latitude = 37.541290;
longitude = -77.434769;
settings = {
general = {
fade = 1;
adjustment-method = "wayland";
};
};
temperature = {
day = 6500;
night = 4500;
};
};
}

View file

@ -0,0 +1,23 @@
# Hyprpaper is used to set the wallpaper on the system
{
pkgs,
config,
...
}:
{
# The wallpaper is set by stylix
services.hyprpaper = {
enable = true;
settings = {
ipc = "on";
splash = false;
splash_offset = 2.0;
};
};
wayland.windowManager.hyprland.settings = {
exec-once = [
"${pkgs.hyprpaper}/bin/hyprpaper"
];
};
}

View file

@ -0,0 +1,6 @@
{ pkgs, ... }:
{
services.playerctld = {
enable = true;
};
}

View file

@ -47,18 +47,10 @@ in
package = pkgs.noto-fonts-emoji;
name = "Noto Color Emoji";
};
sizes = {
applications = 12;
desktop = 11;
popups = 11;
terminal = 12;
};
};
targets = {
gnome = {
enable = true;
useWallpaper = true;
};
hyprpaper.enable = true;
vscode = {
enable = false;
# profileNames = [ "Stylix" ];

View file

Before

Width:  |  Height:  |  Size: 6.2 MiB

After

Width:  |  Height:  |  Size: 6.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 MiB

View file

@ -1,134 +0,0 @@
<monitors version="2">
<configuration>
<layoutmode>physical</layoutmode>
<logicalmonitor>
<x>0</x>
<y>0</y>
<scale>1</scale>
<transform>
<rotation>right</rotation>
<flipped>no</flipped>
</transform>
<monitor>
<monitorspec>
<connector>HDMI-1-2</connector>
<vendor>DEL</vendor>
<product>DELL U2417H</product>
<serial>XVNNT67I176L</serial>
</monitorspec>
<mode>
<width>1920</width>
<height>1080</height>
<rate>60.000</rate>
</mode>
</monitor>
</logicalmonitor>
<logicalmonitor>
<x>1080</x>
<y>0</y>
<scale>1</scale>
<primary>yes</primary>
<monitor>
<monitorspec>
<connector>DP-3</connector>
<vendor>AUS</vendor>
<product>PG42UQ</product>
<serial>R1LMTF056092</serial>
</monitorspec>
<mode>
<width>3840</width>
<height>2160</height>
<rate>59.997</rate>
</mode>
</monitor>
</logicalmonitor>
</configuration>
<configuration>
<layoutmode>physical</layoutmode>
<logicalmonitor>
<x>0</x>
<y>0</y>
<scale>1</scale>
<transform>
<rotation>right</rotation>
<flipped>no</flipped>
</transform>
<monitor>
<monitorspec>
<connector>HDMI-2</connector>
<vendor>DEL</vendor>
<product>DELL U2417H</product>
<serial>XVNNT67I176L</serial>
</monitorspec>
<mode>
<width>1920</width>
<height>1080</height>
<rate>60.000</rate>
</mode>
</monitor>
</logicalmonitor>
<logicalmonitor>
<x>1080</x>
<y>0</y>
<scale>1</scale>
<primary>yes</primary>
<monitor>
<monitorspec>
<connector>DP-3</connector>
<vendor>AUS</vendor>
<product>PG42UQ</product>
<serial>R1LMTF056092</serial>
</monitorspec>
<mode>
<width>3840</width>
<height>2160</height>
<rate>120.000</rate>
</mode>
</monitor>
</logicalmonitor>
</configuration>
<configuration>
<layoutmode>physical</layoutmode>
<logicalmonitor>
<x>0</x>
<y>0</y>
<scale>1</scale>
<transform>
<rotation>right</rotation>
<flipped>no</flipped>
</transform>
<monitor>
<monitorspec>
<connector>HDMI-A-1-1</connector>
<vendor>DEL</vendor>
<product>DELL U2417H</product>
<serial>XVNNT67I176L</serial>
</monitorspec>
<mode>
<width>1920</width>
<height>1080</height>
<rate>60.000</rate>
</mode>
</monitor>
</logicalmonitor>
<logicalmonitor>
<x>1080</x>
<y>0</y>
<scale>1</scale>
<primary>yes</primary>
<monitor>
<monitorspec>
<connector>DisplayPort-2</connector>
<vendor>AUS</vendor>
<product>PG42UQ</product>
<serial>R1LMTF056092</serial>
</monitorspec>
<mode>
<width>3840</width>
<height>2160</height>
<rate>119.999</rate>
</mode>
</monitor>
</logicalmonitor>
</configuration>
</monitors>

View file

@ -9,15 +9,16 @@
## Required Configs ##
../common/core # required
## Optional Configs ##
## Host-specific Optional Configs ##
../common/optional/browsers
../common/optional/gnome
# ../common/optional/gnome
../common/optional/hyprland
../common/optional/development
../common/optional/gaming
../common/optional/xdg.nix
../common/optional/xdg.nix # file associations
## Rune Specific ##
./config
## Home-specific Configs ##
./desktop
];
## Packages with no needed configs ##
@ -41,6 +42,34 @@
## Productivity ##
gimp
inkscape
xdg-desktop-portal-gtk
xdg-desktop-portal-hyprland
;
};
monitors = [
{
name = "DP-1";
x = 900;
y = 0;
width = 3840;
height = 2160;
refreshRate = 120;
primary = true;
scale = 1.20;
vrr = 2;
}
{
name = "HDMI-A-2";
x = 0;
y = 0;
width = 1920;
height = 1080;
refreshRate = 60;
primary = false;
transform = 3;
scale = 1.20;
}
];
}

View file

@ -26,8 +26,4 @@
];
};
};
home.file.".config/monitors.xml" = {
source = ./monitors.xml;
};
}

View file

@ -18,5 +18,16 @@
wireplumber.enable = true;
jack.enable = true;
lowLatency.enable = true;
# use the example session manager (no others are packaged yet so this is enabled by default,
# no need to redefine it in your config for now)
# media-session.enable = true;
};
environment.systemPackages = builtins.attrValues {
inherit (pkgs)
playerctl # cli utility and lib for controlling media players
# pamixer # cli pulseaudio sound mixer
;
};
}

View file

@ -25,9 +25,17 @@
};
};
services.blueman.enable = true;
# these 2 options below were not mentioned in wiki
boot = {
extraModprobeConfig = ''
options bluetooth enable_ecred=1
'';
};
environment.systemPackages = with pkgs; [
bluez-tools
bluetuith # can transfer files via OBEX
];
}

View file

@ -7,13 +7,6 @@
{
hardware.xone.enable = true; # xbox controller
hardware.opengl = {
enable = true;
driSupport32Bit = true;
};
services.xserver.videoDrivers = [ "amdgpu" ];
programs = {
steam = {
enable = true;
@ -38,24 +31,30 @@
;
inherit (pkgs)
gamemode
gamescope # !!!: DO NOT ADD GAMESCOPE ANYWHERE ELSE IN CONFIG, IT WILL BREAK!
gperftools
keyutils
libkrb5
libpng
libpulseaudio
libvorbis
libkrb5
keyutils
gperftools
gamemode
;
});
};
extraCompatPackages = [ pkgs.unstable.proton-ge-bin ];
gamescopeSession.enable = true;
};
#gamescope launch args set dynamically in home/<user>/common/optional/gaming
gamescope = {
enable = true;
capSysNice = true;
};
# to run steam games in game mode, add the following to the game's properties from within steam
# gamemoderun %command%
gamemode = {
enable = true;
settings = {
#see gamemode man page for settings info
general = {
softrealtime = "auto";
inhibit_screensaver = 1;
@ -74,5 +73,3 @@
};
};
}
# gamescope --adaptive-sync --backend sdl --expose-wayland --force-grab-cursor --framerate-limit 120 --immediate-flips --output-height 2160 --output-width 3840 --prefer-output DP-1 --rt -- gamemoderun %command%

View file

@ -1,18 +1,12 @@
{ pkgs, config, ... }:
{ pkgs, ... }:
{
# Enable the X11 windowing system.
services.xserver = {
enable = true;
# Enable the GNOME Desktop Environment.
displayManager.gdm.enable = true;
desktopManager.gnome.enable = true;
displayManager = {
gdm.enable = true;
autoLogin = {
enable = true;
user = config.hostSpec.username;
};
};
# Configure keymap in X11
xkb = {
@ -21,26 +15,22 @@
};
};
#INFO: Fix for autoLogin
systemd.services."getty@tty1".enable = false;
systemd.services."autovt@tty1".enable = false;
services.udev.packages = with pkgs; [ gnome-settings-daemon ];
environment.systemPackages = with pkgs; [
gnome-tweaks
gnomeExtensions.alphabetical-app-grid
gnomeExtensions.appindicator
gnomeExtensions.blur-my-shell
gnomeExtensions.clipboard-indicator
gnomeExtensions.color-picker
gnomeExtensions.control-monitor-brightness-and-volume-with-ddcutil
gnomeExtensions.dash-in-panel
gnomeExtensions.just-perfection
gnomeExtensions.pano
gnomeExtensions.paperwm
gnomeExtensions.dash-to-panel
gnomeExtensions.tiling-shell
gnomeExtensions.vitals
# gnomeExtensions.just-perfection
gnomeExtensions.alphabetical-app-grid
gnomeExtensions.quick-settings-audio-devices-hider
gnomeExtensions.quick-settings-audio-devices-renamer
gnomeExtensions.undecorate
gnomeExtensions.vitals
];
## Exclusions ##
@ -48,20 +38,14 @@
environment.gnome.excludePackages = (
with pkgs;
[
atomix
baobab
epiphany
# evince
geary
gedit
gnome-console
gnome-contacts
atomix # puzzle game
epiphany # web browser
evince # document viewer
gedit # text editor
gnome-maps
gnome-music
gnome-photos
gnome-terminal
gnome-tour
gnome-user-docs
gnomeExtensions.applications-menu
gnomeExtensions.launch-new-instance
gnomeExtensions.light-style
@ -70,10 +54,9 @@
gnomeExtensions.system-monitor
gnomeExtensions.window-list
gnomeExtensions.windownavigator
hitori
iagno
simple-scan
tali
hitori # sudoku game
iagno # go game
tali # poker game
yelp
]
);

View file

@ -0,0 +1,20 @@
{
inputs,
pkgs,
lib,
...
}:
{
imports = lib.custom.scanPaths ./.;
programs.hyprland = {
enable = true;
withUWSM = true;
};
environment.systemPackages = [
inputs.rose-pine-hyprcursor.packages.${pkgs.system}.default
inputs.better-control.packages.${pkgs.system}.better-control
];
}

View file

@ -0,0 +1,16 @@
{
programs.foot = {
enable = true;
settings = {
main = {
term = "xterm-256color";
font = "monospace:size=10";
dpi-aware = "yes";
};
mouse = {
hide-when-typing = "yes";
};
};
};
}

View file

@ -0,0 +1,24 @@
{ pkgs, ... }:
{
environment.systemPackages = with pkgs; [
file-roller
nautilus
nautilus-open-any-terminal
sushi
];
services = {
# needed for GNOME services outside of GNOME Desktop
dbus.packages = with pkgs; [
gcr
gnome-keyring
gnome-settings-daemon
gvfs
];
gnome.gnome-keyring.enable = true;
gvfs.enable = true;
};
}

View file

@ -0,0 +1,36 @@
#
# greeter -> tuigreet https://github.com/apognu/tuigreet?tab=readme-ov-file
# display manager -> greetd https://man.sr.ht/~kennylevinsen/greetd/
#
{
config,
pkgs,
lib,
...
}:
let
user = config.hostSpec.username;
default = {
command = "${pkgs.greetd.tuigreet}/bin/tuigreet --asterisks --time --time-format '%I:%M %p | %a %h | %F' --cmd uwsm start default";
user = user;
};
initial = {
# command = "${pkgs.hyprland}/bin/Hyprland";
command = "uwsm start default";
user = user;
};
in
{
# environment.systemPackages = [ pkgs.greetd.tuigreet ];
services.greetd = {
enable = true;
restart = true;
settings = rec {
default_session = default;
initial_session = initial;
};
};
}

View file

@ -0,0 +1,22 @@
{ pkgs, ... }:
{
# general packages related to wayland
environment.systemPackages = with pkgs; [
grim # screen capture component, required by flameshot
waypaper # wayland packages(nitrogen analog for wayland)
swww # backend wallpaper daemon required by waypaper
wl-clipboard-rs
wlr-randr
];
xdg.portal = {
enable = true;
xdgOpenUsePortal = true;
extraPortals = [
pkgs.xdg-desktop-portal-gtk
# pkgs.xdg-desktop-portal-hyprland
];
# configPackages = [ pkgs.hyprland ];
# config.common.default = "*";
};
}

View file

@ -37,7 +37,8 @@ in
"hosts/global/common/bluetooth.nix"
"hosts/global/common/ddcutil.nix" # ddcutil for monitor controls
"hosts/global/common/gaming.nix" # steam, gamescope, gamemode, and related hardware
"hosts/global/common/gnome.nix"
# "hosts/global/common/gnome.nix" # desktop
"hosts/global/common/hyprland" # desktop
"hosts/global/common/libvirt.nix" # vm tools
"hosts/global/common/nvtop.nix" # GPU monitor (not available in home-manager)
"hosts/global/common/plymouth.nix" # fancy boot screen

Binary file not shown.