lot of stuff

This commit is contained in:
2025-11-25 21:22:00 +02:00
parent 40ebfb3b98
commit 0af2b0c815
10 changed files with 485 additions and 274 deletions

View File

@@ -8,6 +8,9 @@
with lib; let
cfg = config.desktop.gnome;
inherit (config.lib.stylix) colors;
getColorCh = colorName: channel: config.lib.stylix.colors."${colorName}-rgb-${channel}";
rgb = color: ''rgb(${getColorCh color "r"}, ${getColorCh color "g"}, ${getColorCh color "b"})'';
in {
options = {
desktop.gnome.enable =
@@ -16,15 +19,16 @@ in {
config = mkIf cfg.enable {
home.packages =
(with pkgs.gnomeExtensions; [
# extensions
alphabetical-app-grid
app-icons-taskbar
appindicator
caffeine
pano
# gnome-bedtime
quick-lang-switch
removable-drive-menu
space-bar
switcher
tactile
vicinae
window-is-ready-remover
])
++ (with pkgs; [
@@ -39,12 +43,14 @@ in {
programs.gnome-shell.extensions = [
{package = pkgs.gnomeExtensions.alphabetical-app-grid;}
{package = pkgs.gnomeExtensions.app-icons-taskbar;}
{package = pkgs.gnomeExtensions.appindicator;}
{package = pkgs.gnomeExtensions.caffeine;}
{package = pkgs.gnomeExtensions.pano;}
# {package = pkgs.gnomeExtensions.gnome-bedtime;}
{package = pkgs.gnomeExtensions.quick-lang-switch;}
{package = pkgs.gnomeExtensions.removable-drive-menu;}
{package = pkgs.gnomeExtensions.space-bar;}
{package = pkgs.gnomeExtensions.switcher;}
{package = pkgs.gnomeExtensions.tactile;}
{package = pkgs.gnomeExtensions.vicinae;}
{package = pkgs.gnomeExtensions.window-is-ready-remover;}
];
gtk = {
@@ -68,7 +74,7 @@ in {
};
qt = {
enable = true;
platformTheme.name = lib.mkForce "adwaita";
platformTheme.name = lib.mkForce "gtk3";
};
dconf.settings = with lib.hm.gvariant; {
@@ -76,13 +82,6 @@ in {
screen-reader-enabled = false;
};
"org/gnome/desktop/app-folders/folders/Utilities" = {
apps = ["org.gnome.baobab.desktop" "org.gnome.FileRoller.desktop" "org.gnome.DiskUtility.desktop" "org.gnome.Connections.desktop" "org.gnome.seahorse.Application.desktop" "org.gnome.Loupe.desktop" "org.gnome.Evince.desktop" "org.gnome.font-viewer.desktop" "org.freedesktop.GnomeAbrt.desktop" "nm-connection-editor.desktop" "org.gnome.DejaDup.desktop" "org.gnome.tweaks.desktop" "org.gnome.Usage.desktop"];
categories = ["X-GNOME-Utilities"];
name = "X-GNOME-Utilities.directory";
translate = true;
};
"org/gnome/desktop/input-sources" = {
mru-sources = [(mkTuple ["xkb" "us"])];
# sources = [(mkTuple ["xkb" "us"]) (mkTuple ["xkb" "ua"]) (mkTuple ["xkb" "us+colemak_dh"])];
@@ -90,10 +89,9 @@ in {
};
"org/gnome/desktop/interface" = {
# accent-color = "slate";
clock-show-seconds = true;
color-scheme = "prefer-dark";
enable-animations = true;
# color-scheme = "prefer-dark";
enable-animations = false;
gtk-enable-primary-paste = false;
scaling-factor = mkUint32 1;
toolbar-style = "text";
@@ -103,9 +101,10 @@ in {
"org/gnome/desktop/peripherals/mouse" = {
accel-profile = "flat";
};
"org/gnome/desktop/peripherals/keyboard" = {
delay = 250;
repeat-interval = 25;
delay = 200;
repeat-interval = 50;
};
"org/gnome/desktop/peripherals/touchpad" = {
@@ -114,11 +113,10 @@ in {
"org/gnome/desktop/search-providers" = {
disabled = ["org.gnome.Epiphany.desktop"];
sort-order = ["org.gnome.Settings.desktop" "org.gnome.Contacts.desktop" "org.gnome.Nautilus.desktop"];
};
"org/gnome/desktop/wm/keybindings" = {
close = ["<Control><Super>q"];
close = ["<Super>q"];
move-to-monitor-down = ["<Shift><Control><Super>Down"];
move-to-monitor-left = ["<Shift><Control><Super>Left"];
move-to-monitor-right = ["<Shift><Control><Super>Right"];
@@ -137,8 +135,8 @@ in {
switch-to-workspace-2 = ["<Super>2"];
switch-to-workspace-3 = ["<Super>3"];
switch-to-workspace-4 = ["<Super>4"];
switch-to-workspace-left = ["<Super>Left"];
switch-to-workspace-right = ["<Super>Right"];
switch-to-workspace-left = ["<Shift><Super>Left"];
switch-to-workspace-right = ["<Shift><Super>Right"];
};
"org/gnome/desktop/wm/preferences" = {
@@ -152,7 +150,7 @@ in {
"org/gnome/mutter" = {
dynamic-workspaces = true;
experimental-features = ["scale-monitor-framebuffer"];
experimental-features = ["scale-monitor-framebuffer" "xwayland-native-scaling"];
workspaces-only-on-primary = true;
};
@@ -172,61 +170,79 @@ in {
"aztaskbar@aztaskbar.gitlab.com"
"caffeine@patapon.info"
"drive-menu@gnome-shell-extensions.gcampax.github.com"
"pano@elhan.io"
"focuscontrol@itsfernn"
"gnomebedtime@ionutbortis.gmail.com"
"just-perfection-desktop@just-perfection"
"quick-lang-switch@ankostis.gmail.com"
"space-bar@luchrioh"
"switcher@landau.fi"
"tactile@lundal.io"
"user-theme@gnome-shell-extensions.gcampax.github.com"
"vicinae@dagimg-dot"
];
};
"org/gnome/shell/app-switcher" = {
current-workspace-only = true;
"org/gnome/shell/extensions/aztaskbar" = with lib.hm.gvariant; {
favorites = true;
icon-size = 20;
icon-style = "REGULAR";
# intellihide = true;
indicator-color-focused = rgb "base0D";
indicator-color-running = rgb "base05";
main-panel-height = mkTuple [true 32];
position-offset = 4;
prefs-visible-page = "";
show-apps-button = mkTuple [false 0];
show-panel-activities-button = true;
show-weather-by-clock = "LEFT";
taskbar-spacing = 2;
};
"org/gnome/shell/extensions/caffeine" = {
indicator-position-max = 1;
};
# "org/gnome/shell/extensions/bedtime-mode" = {
# bedtime-mode-active = false;
# color-tone-preset = "grayscale";
# ondemand-button-location = "'menu'";
# };
"org/gnome/shell/extensions/focuscontrol" = {
border-color = "'rgba(0,0,0,0)'";
border-width = 1;
corner-radius = 0;
focus-down = "['<Super>Down']";
focus-left = "['<Super>Left']";
focus-right = "['<Super>Right']";
focus-up = "['<Super>Up']";
highlight-duration = 1;
};
"org/gnome/shell/extensions/space-bar/appearance" = {
application-styles = ".space-bar {n -natural-hpadding: 12px;n}nn.space-bar-workspace-label.active {n margin: 0 4px;n background-color: rgba(255,255,255,0.3);n color: rgba(255,255,255,1);n border-color: rgba(0,0,0,0);n font-weight: 700;n border-radius: 4px;n border-width: 0px;n padding: 3px 8px;n}nn.space-bar-workspace-label.inactive {n margin: 0 4px;n background-color: rgba(0,0,0,0);n color: rgba(255,255,255,1);n border-color: rgba(0,0,0,0);n font-weight: 700;n border-radius: 4px;n border-width: 0px;n padding: 3px 8px;n}nn.space-bar-workspace-label.inactive.empty {n margin: 0 4px;n background-color: rgba(0,0,0,0);n color: rgba(255,255,255,0.5);n border-color: rgba(0,0,0,0);n font-weight: 700;n border-radius: 4px;n border-width: 0px;n padding: 3px 8px;n}";
active-workspace-background-color = "rgba(0,0,0,0)";
inactive-workspace-background-color = "rgba(0,0,0,0)";
active-workspace-text-color = rgb "base05";
inactive-workspace-text-color = rgb "base03";
};
"org/gnome/shell/extensions/space-bar/behavior" = {
always-show-numbers = false;
custom-label-named = "{{number}}";
custom-label-unnamed = "{{number}}";
enable-custom-label = true;
indicator-style = "workspaces-bar";
position = "right";
position-index = 0;
show-empty-workspaces = false;
};
"org/gnome/shell/extensions/switcher" = {
activate-after-ms = mkUint32 0;
activate-by-key = mkUint32 1;
fade-enable = true;
font-size = mkUint32 24;
icon-size = mkUint32 24;
max-width-percentage = mkUint32 60;
only-current-workspace = true;
show-executables = false;
show-switcher = ["<Super>space"];
workspace-indicator = true;
};
"org/gnome/shell/extensions/aztaskbar" = with lib.hm.gvariant; {
favorites = true;
icon-size = 25;
icon-style = "REGULAR";
# intellihide = true;
main-panel-height = mkTuple [true 40];
position-offset = 4;
prefs-visible-page = "";
show-apps-button = mkTuple [true 0];
show-panel-activities-button = true;
show-weather-by-clock = "LEFT";
taskbar-spacing = 2;
# update-notifier-project-version = 30;
smart-workspace-names = false;
system-workspace-indicator = false;
};
"org/gnome/shell/extensions/tactile" = {
background-color = "#${colors.base00}";
border-color = "#${colors.base0D}";
text-color = "#${colors.base05}";
border-size = 3;
col-3 = 0;
gap-size = 6;
@@ -237,7 +253,6 @@ in {
layout-3-col-3 = 0;
layout-3-row-2 = 0;
monitor-1-layout = 3;
text-color = "#${colors.base05}";
tile-0-2 = ["z"];
tile-1-1 = ["r"];
tile-1-2 = ["x"];
@@ -249,6 +264,10 @@ in {
tile-3-2 = ["d"];
};
"org/gnome/shell/extensions/vicinae" = {
show-status-indicator = false;
};
"org/gnome/software" = {
download-updates = false;
download-updates-notify = false;

View File

@@ -0,0 +1,4 @@
{
enable = true;
autoStart = true;
}

View File

@@ -31,6 +31,7 @@ in {
ll = "ls -lh";
p = "pueue";
s = "systemctl";
stui = "systemctl-tui";
};
shellAbbrs = {
pa = "pueue add --";
@@ -41,8 +42,8 @@ in {
bind \cH backward-kill-word
set fish_greeting
set fish_cursor_default block blink
set EDITOR hx
${getExe pkgs.bat-extras.batman} --export-env | source
# ${getExe pkgs.bat-extras.batman} --export-env | source
if test -e ~/.profile; source ~/.profile; end
'';
};
};

View File

@@ -39,35 +39,115 @@ in {
boot.loader.systemd-boot.enable = mkDefault (!cfg.secureBoot);
}
(mkIf (cfg.laptop.homeRowMods) {
services.keyd = {
enable = true;
keyboards = {
internal = {
ids = ["0001:0001" "048d:c101"];
settings.main = let
# finger = mod;
pinky = "alt";
ring = "meta";
middle = "control";
index = "shift";
# timeouts
idle = "200";
hold = "150";
# function takes finger and letter
homeRowMod = f: l: "lettermod(${f}, ${l}, ${idle}, ${hold})";
in {
"a" = homeRowMod pinky "a";
"s" = homeRowMod ring "s";
"d" = homeRowMod middle "d";
"f" = homeRowMod index "f";
"j" = homeRowMod index "j";
"k" = homeRowMod middle "k";
"l" = homeRowMod ring "l";
";" = homeRowMod pinky ";";
};
};
};
};
services.kanata.keyboards.internal.config = ''
;; Kanata Configuration File for Graphite Anglemod Layout
;; Add a default configuration section to define unmapped key behavior.
(defcfg
process-unmapped-keys no ;; Ensure unmapped keys are passed to the OS unchanged.
)
;; Define the source keys Kanata will intercept.
(defsrc
grv 1 2 3 4 5 6 7 8 9 0 - = bspc
tab q w e r t y u i o p [ ] \
caps a s d f g h j k l ; ' ret
lsft z x c v b n m , . / rsft
lctl lmet lalt spc ralt rmet rctl
)
(defvar
tap-time 150
hold-time 200
)
;; Default QWERTY Layout
(deflayer qwerty
grv 1 2 3 4 5 6 7 8 9 0 - = bspc
tab q w e r t y u i o p [ ] \
caps a s d f g h j k l ; ' ret
lsft z x c v b n m , . / rsft
lctl lmet lalt spc ralt rmet rctl
)
(defalias
escctrl (tap-hold 100 100 esc lctl)
a (multi f24 (tap-hold $tap-time $hold-time a lalt))
s (multi f24 (tap-hold $tap-time $hold-time s lmet))
d (multi f24 (tap-hold $tap-time $hold-time d lctl))
f (multi f24 (tap-hold $tap-time $hold-time f lsft))
x (multi f24 (tap-hold $tap-time $hold-time x ralt))
j (multi f24 (tap-hold $tap-time $hold-time j lsft))
k (multi f24 (tap-hold $tap-time $hold-time k lctl))
l (multi f24 (tap-hold $tap-time $hold-time l lmet))
; (multi f24 (tap-hold $tap-time $hold-time ; lalt))
. (multi f24 (tap-hold $tap-time $hold-time . ralt))
)
;; QWERTY Layout with home row mods
(deflayer qwerty-home-mod
@grl 1 2 3 4 5 6 7 8 9 0 - = bspc
tab q w e r t y u i o p [ ] \
@esscctrl @a @s @d @f g h @j @k @l @; ' ret
lsft z @x c v b n m , @. / rsft
lctl lmet lalt spc ralt rmet rctl
)
(defalias
quote (fork ' S-- (lsft rsft)) ;; ' -> _
comma (fork , S-/ (lsft rsft)) ;; , -> ?
hyphen (fork - S-' (lsft rsft)) ;; - -> "
slash (fork / S-, (lsft rsft)) ;; / -> <
)
(defalias
n (multi f24 (tap-hold $tap-time $hold-time n lalt))
r (multi f24 (tap-hold $tap-time $hold-time r lmet))
t (multi f24 (tap-hold $tap-time $hold-time t lctl))
gs (multi f24 (tap-hold $tap-time $hold-time s lsft))
m (multi f24 (tap-hold $tap-time $hold-time m ralt))
h (multi f24 (tap-hold $tap-time $hold-time h lsft))
ga (multi f24 (tap-hold $tap-time $hold-time a lctl))
e (multi f24 (tap-hold $tap-time $hold-time e lmet))
i (multi f24 (tap-hold $tap-time $hold-time i lalt))
hyph (multi f24 (tap-hold $tap-time $hold-time @hyphen ralt))
)
;; Graphite Anglemod Layout
(deflayer graphite-anglemod
@grl 1 2 3 4 5 6 7 8 9 0 [ ] bspc
tab b l d w z @quote f o u j ; = \
@cap @n @r @t @gs g y @h @ga @e @i @comma ret
lsft x @m c v q p k . @hyph @slash rsft
lctl lmet lalt spc ralt rmet rctl
)
;; Define layer-switching aliases for clean deflayer declarations
(defalias
;; Tap: backtick (grave), Hold: toggles 'layers' for layer switching.
grl (tap-hold 200 200 grv (layer-toggle layers))
;; Layer-switch aliases
gar (layer-switch graphite-anglemod)
qwr (layer-switch qwerty)
qwm (layer-switch qwerty-home-mod)
;; Tap for Caps Lock, Hold for Ctrl
cap (tap-hold 200 200 caps lctl)
)
;; Layer-Switching Layer
;; Keys 1 and 2 switch between QWERTY and Graphite Anglemod layouts
;; The _ (underscore) indicates transparent behavior (passes through base layer).
(deflayer layers
_ @qwm @gar @qwr _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _
)
'';
})
(mkIf (cfg.powerSave) {
powerManagement.enable = true;

View File

@@ -32,6 +32,7 @@
# Allow the use of the impure-env setting.
# "configurable-impure-env"
];
use-xdg-base-directories = true;
};
};
# no longer need to pre-allocate build users for everything

View File

@@ -5,12 +5,14 @@
"https://chaotic-nyx.cachix.org/"
"https://cosmic.cachix.org/"
"https://nix-community.cachix.org/"
"https://vicinae.cachix.org"
];
trusted-public-keys = [
"cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY="
"chaotic-nyx.cachix.org-1:HfnXSw4pj95iI/n17rIDy40agHj12WfF+Gqk6SonIT8="
"cosmic.cachix.org-1:Dya9IyXD4xdBehWjrkPv6rtxpmMdRel02smYzA85dPE="
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
"vicinae.cachix.org-1:1kDrfienkGHPYbkpNj1mWTr7Fm1+zcenzgTizIcI3oc="
];
};
}

View File

@@ -39,8 +39,9 @@
# chatting
"im.riot.Riot" # matrix client
"io.github.kukuruzka165.materialgram" # telegram client
"io.github.equicord.equibop" # discord client
"org.equicord.equibop" # discord client
# "org.mozilla.Thunderbird" # mail client
"com.tutanota.Tutanota"
"org.signal.Signal"
# "org.telegram.desktop"
]
@@ -65,6 +66,7 @@
# misc
"app.drey.Warp" # share files using magic wormhole
"com.bitwarden.desktop"
"com.github.johnfactotum.Foliate" # book reader
"com.github.tchx84.Flatseal" # control flatpak permissions
"com.logseq.Logseq"
"com.obsproject.Studio"
@@ -107,7 +109,7 @@
};
"app.grayjay.Grayjay".Context.sockets = ["x11" "!wayland" "!fallback-x11"]; # because CEF
"ca.edestcroix.Recordbox".Context.filesystems = ["xdg-music"];
"md.obsidian.Obsidian".Context.filesystems = ["xdg-docs"];
"md.obsidian.Obsidian".Context.filesystems = ["~/Obsidian"];
"com.valvesoftware.Steam" = {
Context = {
inherit (game) sockets;

View File

@@ -3,12 +3,19 @@
lib,
osConfig,
pkgs,
inputs,
...
}: let
inherit (lib) mkIf;
inherit (osConfig.virtualisation) libvirtd;
inherit (osConfig.hardware) bluetooth;
in {
imports = [
inputs.vicinae.homeManagerModules.default
];
services.vicinae.enable = true;
console.yazi.enable = true;
editor.helix.enable = true;
shell = {
@@ -17,9 +24,18 @@ in {
};
syncthing.enable = true;
terminal.wezterm.enable = true;
# terminal.ghostty.enable = true;
terminal.ghostty.enable = true;
systemd.user.settings.Manager.DefaultEnvironment = {
TERMINAL = "wezterm";
TERMINAL = "ghostty";
HISTFILE = ''"$XDG_STATE_HOME"/bash/history'';
CARGO_HOME = ''"$XDG_DATA_HOME"/cargo'';
DOTNET_CLI_HOME = ''"$XDG_DATA_HOME"/dotnet'';
GNUPGHOME = ''"$XDG_DATA_HOME"/gnupg'';
ICEAUTHORITY = ''"$XDG_CACHE_HOME"/ICEauthority'';
NUGET_PACKAGES = ''"$XDG_CACHE_HOME"/NuGetPackages'';
NPM_CONFIG_INIT_MODULE = ''"$XDG_CONFIG_HOME"/npm/config/npm-init.js'';
NPM_CONFIG_CACHE = ''"$XDG_CACHE_HOME"/npm'';
NPM_CONFIG_TMP = ''"$XDG_RUNTIME_DIR"/npm'';
};
services = {
@@ -110,6 +126,8 @@ in {
# sonusmix # pipewire routing tool in rust
];
xdg.configFile."vicinae/vicinae.json".enable = false;
# xdg.desktopEntries.uni = {
# actions."Copy".exec = "fish -c \"~/.local/bin/uni --copy\"";
# categories = ["Utility" "X-Launch" "Network"];