@@ -1,4 +1,4 @@
|
||||
{pkgs, ...}:
|
||||
{pkgs, ...}:
|
||||
{
|
||||
# Add a udev rule that launches a backup using restic when a specific USB device (the backup drive) is plugged in
|
||||
|
||||
@@ -22,4 +22,4 @@
|
||||
ExecStart = "${pkgs.restic}/bin/restic backup /home/username";
|
||||
};
|
||||
};
|
||||
}
|
||||
}
|
||||
|
@@ -1,8 +1,10 @@
|
||||
{pkgs, ...}:
|
||||
{pkgs, ...}:
|
||||
{
|
||||
programs.vscode = {
|
||||
enable = true;
|
||||
|
||||
# profiles = {
|
||||
# default = {
|
||||
extensions = with pkgs.vscode-extensions; [
|
||||
# QOL
|
||||
mhutchie.git-graph
|
||||
@@ -14,9 +16,117 @@
|
||||
ms-python.isort
|
||||
ms-python.debugpy
|
||||
ms-python.vscode-pylance
|
||||
ms-toolsai.jupyter
|
||||
ms-toolsai.vscode-jupyter-slideshow
|
||||
ms-toolsai.jupyter-renderers
|
||||
|
||||
# Nix language
|
||||
jnoortheen.nix-ide
|
||||
|
||||
# typst
|
||||
myriad-dreamin.tinymist
|
||||
];
|
||||
# };
|
||||
|
||||
keybindings = [
|
||||
{
|
||||
key = "ctrl+#";
|
||||
command = "editor.action.commentLine";
|
||||
when = "editorTextFocus";
|
||||
}
|
||||
];
|
||||
|
||||
userSettings = {
|
||||
# visual
|
||||
"window.menuBarVisibility" = "toggle";
|
||||
|
||||
"editor.fontFamily" = "'FiraCode Nerd Font Mono', 'monospace', monospace";
|
||||
"terminal.integrated.fontFamily" = "FiraCode Nerd Font Mono";
|
||||
"workbench.iconTheme" = "vs-seti";
|
||||
|
||||
# telemetry
|
||||
"telemetry.enableCrashReporter" = false;
|
||||
"telemetry.enableTelemetry" = false;
|
||||
"redhat.telemetry.enabled" = false;
|
||||
|
||||
|
||||
# editor QOL
|
||||
"security.workspace.trust.untrustedFiles" = "open";
|
||||
"editor.wordWrap" = "on";
|
||||
"editor.suggestSelection" = "first";
|
||||
"editor.renderWhitespace" = "none";
|
||||
"editor.acceptSuggestionOnEnter" = "off";
|
||||
"editor.fontLigatures" = true;
|
||||
"editor.inlineSuggest.enabled" = true;
|
||||
"editor.bracketPairColorization.enabled" = true;
|
||||
"editor.unicodeHighlight.nonBasicASCII" = false;
|
||||
"editor.unicodeHighlight.invisibleCharacters" = false;
|
||||
"editor.unicodeHighlight.ambiguousCharacters" = false;
|
||||
|
||||
"files.autoSave" = "onWindowChange";
|
||||
"files.autoSaveDelay" = 1000;
|
||||
"files.insertFinalNewline" = true;
|
||||
"files.trimTrailingWhitespace" = true;
|
||||
|
||||
"explorer.confirmDelete" = false;
|
||||
"explorer.confirmDragAndDrop" = false;
|
||||
"terminal.integrated.enableMultiLinePasteWarning" = false;
|
||||
"update.showReleaseNotes" = false;
|
||||
"terminal.external.linuxExec" = "kitty";
|
||||
"workbench.startupEditor" = "newUntitledFile";
|
||||
# "workbench.colorTheme" = "Default Light+";
|
||||
|
||||
# Extension management
|
||||
"extensions.autoCheckUpdates" = false;
|
||||
"extensions.autoUpdate" = false;
|
||||
"extensions.ignoreRecommendations" = true;
|
||||
|
||||
|
||||
# git
|
||||
"git.ignoreMissingGitWarning" = true;
|
||||
"git.confirmSync" = false;
|
||||
"git.enableSmartCommit" = true;
|
||||
"git.autofetch" = true;
|
||||
"diffEditor.renderSideBySide" = false;
|
||||
"diffEditor.hideUnchangedRegions.enabled" = true;
|
||||
"diffEditor.ignoreTrimWhitespace" = false;
|
||||
|
||||
# Copilot
|
||||
"github.copilot.editor.enableAutoCompletions" = true;
|
||||
"github.copilot.advanced" = {};
|
||||
"github.copilot.enable" = {
|
||||
"*" = true;
|
||||
};
|
||||
|
||||
# Python
|
||||
"python.terminal.activateEnvironment" = false; # let nix-shell handle this
|
||||
"jupyter.disableJupyterAutoStart" = true;
|
||||
"jupyter.askForKernelRestart" = false;
|
||||
"workbench.editorAssociations" = {
|
||||
"*.ipynb" = "jupyter-notebook";
|
||||
};
|
||||
"notebook.cellToolbarLocation" = {
|
||||
"default" = "right";
|
||||
"jupyter-notebook" = "left";
|
||||
};
|
||||
"jupyter.widgetScriptSources" = [
|
||||
"jsdelivr.com"
|
||||
"unpkg.com"
|
||||
];
|
||||
|
||||
|
||||
# Typst
|
||||
"[typst]" = {
|
||||
"editor.wordSeparators" = "`~!@#$%^&*()=+[{]}\\|;:'\",.<>/?";
|
||||
};
|
||||
"[typst-code]" = {
|
||||
"git.openRepositoryInParentFolders" = "never";
|
||||
"editor.wordSeparators" = "`~!@#$%^&*()=+[{]}\\|;:'\",.<>/?";
|
||||
};
|
||||
"tinymist.fontPaths" = [
|
||||
"./font"
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
}
|
||||
|
8
modules/home-manager/dev.nix
Normal file
8
modules/home-manager/dev.nix
Normal file
@@ -0,0 +1,8 @@
|
||||
{pkgs, ...}:
|
||||
{
|
||||
programs.direnv = {
|
||||
enable = true;
|
||||
# enableFishIntegration = true; # see note on other shells below
|
||||
nix-direnv.enable = true;
|
||||
};
|
||||
}
|
7
modules/home-manager/documents.nix
Normal file
7
modules/home-manager/documents.nix
Normal file
@@ -0,0 +1,7 @@
|
||||
{pkgs, ...}:
|
||||
{
|
||||
home.packages = [
|
||||
# pdf viewer
|
||||
pkgs.evince
|
||||
];
|
||||
}
|
@@ -1,9 +1,17 @@
|
||||
{pkgs, ...}:
|
||||
{pkgs, ...}:
|
||||
{
|
||||
# Required by the fzf fish plugin
|
||||
programs.fzf = {
|
||||
enable = true;
|
||||
};
|
||||
|
||||
home.packages = with pkgs; [
|
||||
fd
|
||||
bat
|
||||
];
|
||||
|
||||
|
||||
|
||||
|
||||
programs.fish = {
|
||||
enable = true;
|
||||
@@ -22,9 +30,6 @@
|
||||
];
|
||||
};
|
||||
|
||||
home.packages = [
|
||||
pkgs.fishPlugins.tide
|
||||
];
|
||||
|
||||
# sets the "default" shell to fish
|
||||
# actually keeps bash as a posix-compliant default but starts fish if the shell is not bash
|
||||
|
@@ -1,24 +1,19 @@
|
||||
{ lib, pkgs, ... }: {
|
||||
{
|
||||
lib, pkgs, ...
|
||||
}:
|
||||
{
|
||||
# requires that flatpaks be enabled in the system configuration as well
|
||||
services.flatpak.enable = true;
|
||||
services.flatpak.update.auto.enable = false;
|
||||
services.flatpak.uninstallUnmanaged = false;
|
||||
|
||||
# services.flatpak.enable = true;
|
||||
# xdg.portal.enable = true;
|
||||
# # install the xdg-desktop-portal-gtk package
|
||||
# # to enable the portal service
|
||||
# xdg.portal.extraPortals = with pkgs; [
|
||||
# xdg-desktop-portal-gtk
|
||||
# ];
|
||||
# services.flatpak.update.auto.enable = false;
|
||||
# services.flatpak.uninstallUnmanaged = false;
|
||||
|
||||
# services.flatpak.packages = [
|
||||
# "com.calibre_ebook.calibre"
|
||||
# "com.github.flxzt.rnote"
|
||||
# "com.github.tchx84.Flatseal"
|
||||
# "com.spotify.Client"
|
||||
# "io.podman_desktop.PodmanDesktop"
|
||||
# "org.pipewire.Helvum"
|
||||
# "io.github.zen_browser.zen"
|
||||
# "im.riot.Riot"
|
||||
# ];
|
||||
|
||||
}
|
||||
services.flatpak.packages = [
|
||||
"com.github.flxzt.rnote"
|
||||
"com.github.tchx84.Flatseal"
|
||||
"com.spotify.Client"
|
||||
"io.podman_desktop.PodmanDesktop"
|
||||
"org.pipewire.Helvum"
|
||||
"io.github.zen_browser.zen"
|
||||
"im.riot.Riot"
|
||||
];
|
||||
}
|
||||
|
@@ -1,87 +0,0 @@
|
||||
{pkgs, lib, ...}:
|
||||
with lib.hm.gvariant;
|
||||
{
|
||||
## Gnome extensions
|
||||
programs.gnome-shell = {
|
||||
enable = true;
|
||||
extensions = [
|
||||
{
|
||||
package = pkgs.gnomeExtensions.dash-to-dock;
|
||||
}
|
||||
{
|
||||
id = "tilingshell@ferrarodomenico.com";
|
||||
package = pkgs.gnome-shell-extensions;
|
||||
}
|
||||
{
|
||||
id = "search-light@icedman.github.com";
|
||||
package = pkgs.gnome-shell-extensions;
|
||||
}
|
||||
{
|
||||
package = pkgs.gnomeExtensions.window-gestures;
|
||||
}
|
||||
{
|
||||
package = pkgs.gnomeExtensions.random-wallpaper;
|
||||
}
|
||||
];
|
||||
};
|
||||
|
||||
|
||||
## And their settings (stored in dconf)
|
||||
dconf.settings."org/gnome/shell/extensions/tilingshell" = {
|
||||
inner-gaps = mkUint32 8;
|
||||
layouts-json = ''
|
||||
[{"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":"Layout 3","tiles":[{"x":0,"y":0,"width":0.33,"height":1,"groups":[1]},{"x":0.33,"y":0,"width":0.67,"height":1,"groups":[1]}]},{"id":"Layout 4","tiles":[{"x":0,"y":0,"width":0.67,"height":1,"groups":[1]},{"x":0.67,"y":0,"width":0.33,"height":1,"groups":[1]}]},{"id":"2732837","tiles":[{"x":0,"y":0,"width":0.5002604166666667,"height":1,"groups":[1]},{"x":0.5002604166666667,"y":0,"width":0.49973958333333335,"height":1,"groups":[1]}]},{"id":"241562","tiles":[{"x":0,"y":0,"width":0.3328488372093023,"height":1,"groups":[1]},{"x":0.3328488372093023,"y":0,"width":0.33430232558139533,"height":1,"groups":[2,1]},{"x":0.6671511627906976,"y":0,"width":0.3328488372093023,"height":1,"groups":[2]}]}]
|
||||
'';
|
||||
outer-gaps = mkUint32 0;
|
||||
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":"true"}}
|
||||
'';
|
||||
selected-layouts = [ "Layout 4" ];
|
||||
};
|
||||
|
||||
|
||||
dconf.settings."org/gnome/shell/extensions/search-light" = {
|
||||
background-color = mkTuple [ 0.20333333313465118 0.20333333313465118 0.20333333313465118 0.80236488580703735 ];
|
||||
blur-background = false;
|
||||
entry-font-size = 1;
|
||||
monitor-count = 1;
|
||||
scale-height = 0.10000000000000001;
|
||||
scale-width = 0.20000000000000001;
|
||||
shortcut-search = [ "<Control><Alt>space" ];
|
||||
popup-at-cursor-monitor = true;
|
||||
show-panel-icon = false;
|
||||
};
|
||||
|
||||
dconf.settings."org/gnome/shell/extensions/windowgestures" = {
|
||||
pinch-enable = false;
|
||||
swipe4-left = 9;
|
||||
swipe4-right = 8;
|
||||
swipe4-updown = 0;
|
||||
three-finger = true;
|
||||
};
|
||||
|
||||
dconf.settings."org/gnome/shell/extensions/dash-to-dock" = {
|
||||
background-opacity = 0.80000000000000004;
|
||||
custom-theme-shrink = true;
|
||||
dash-max-icon-size = 40;
|
||||
dock-position = "BOTTOM";
|
||||
height-fraction = 0.90000000000000002;
|
||||
preview-size-scale = 0.29999999999999999;
|
||||
show-running = true;
|
||||
show-trash = false;
|
||||
show-windows-preview = true;
|
||||
};
|
||||
|
||||
dconf.settings."org/gnome/mutter" = {
|
||||
dynamic-workspaces = true;
|
||||
edge-tiling = false;
|
||||
workspaces-only-on-primary = true;
|
||||
};
|
||||
|
||||
|
||||
dconf.settings."org/gnome/desktop/interface" = {
|
||||
color-scheme = "prefer-dark";
|
||||
show-battery-percentage = true;
|
||||
};
|
||||
|
||||
}
|
11
modules/home-manager/hypr/better-control.nix
Normal file
11
modules/home-manager/hypr/better-control.nix
Normal file
@@ -0,0 +1,11 @@
|
||||
{
|
||||
inputs,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
{
|
||||
environment.systemPackages =
|
||||
with pkgs; [
|
||||
inputs.better-control.packages.${pkgs.system}.better-control
|
||||
];
|
||||
}
|
7
modules/home-manager/hypr/cursor.nix
Normal file
7
modules/home-manager/hypr/cursor.nix
Normal file
@@ -0,0 +1,7 @@
|
||||
{inputs, pkgs, ...}:
|
||||
{
|
||||
# Put a cursor theme to the location expected by the hyprland window manager
|
||||
# TODO
|
||||
|
||||
|
||||
}
|
11
modules/home-manager/hypr/default.nix
Normal file
11
modules/home-manager/hypr/default.nix
Normal file
@@ -0,0 +1,11 @@
|
||||
{
|
||||
imports = [
|
||||
# ./better-control.nix
|
||||
./cursor.nix
|
||||
./hyprland-customization.nix
|
||||
./hyprpaper.nix
|
||||
./hyprlock.nix
|
||||
./hypridle.nix
|
||||
./waybar.nix
|
||||
];
|
||||
}
|
37
modules/home-manager/hypr/hypridle.nix
Normal file
37
modules/home-manager/hypr/hypridle.nix
Normal file
@@ -0,0 +1,37 @@
|
||||
{inputs, pkgs, ...}:
|
||||
{
|
||||
services.hypridle = {
|
||||
enable = true;
|
||||
settings = {
|
||||
general = {
|
||||
lock_cmd = "pidof hyprlock || hyprlock"; # avoid starting multiple hyprlock instances.
|
||||
after_sleep_cmd = "hyprctl dispatch dpms on";
|
||||
ignore_dbus_inhibit = false;
|
||||
};
|
||||
|
||||
listener = [
|
||||
{
|
||||
# dim screen after 4 minutes
|
||||
timeout = 240;
|
||||
on-timeout = "brightnessctl -s set 10";
|
||||
# set monitor backlight to minimum, avoid 0 on OLED monitor.
|
||||
on-resume = "brightnessctl -r";
|
||||
# monitor backlight restore.
|
||||
}
|
||||
{
|
||||
# lock screen after 5 minutes
|
||||
timeout = 300;
|
||||
on-timeout = "loginctl lock-session && hyprctl dispatch dpms off";
|
||||
on-resume = "hyprctl dispatch dpms on";
|
||||
}
|
||||
{
|
||||
# suspend after 10 minutes
|
||||
timeout = 600;
|
||||
on-timeout = "systemctl suspend";
|
||||
on-resume = "hyprctl dispatch dpms on";
|
||||
}
|
||||
];
|
||||
};
|
||||
|
||||
};
|
||||
}
|
220
modules/home-manager/hypr/hyprland-customization.nix
Normal file
220
modules/home-manager/hypr/hyprland-customization.nix
Normal file
@@ -0,0 +1,220 @@
|
||||
{inputs, pkgs, ...}:
|
||||
{
|
||||
|
||||
home.packages = [
|
||||
pkgs.hyprshot
|
||||
pkgs.nautilus
|
||||
pkgs.gnome-control-center
|
||||
pkgs.brightnessctl
|
||||
pkgs.cliphist
|
||||
pkgs.wl-clipboard
|
||||
pkgs.gcr # Provides org.gnome.keyring.SystemPrompter
|
||||
];
|
||||
|
||||
|
||||
# Also use gnome keyring
|
||||
services.gnome-keyring.enable = true;
|
||||
|
||||
|
||||
wayland.windowManager.hyprland = {
|
||||
enable = true;
|
||||
systemd.enable = true;
|
||||
settings = {
|
||||
"$mod" = "SUPER";
|
||||
"$browser" = "firefox";
|
||||
"$launcher-cmd" = "wofi --show drun -n";
|
||||
"$ide" = "code";
|
||||
|
||||
# Global bindings
|
||||
bind = [
|
||||
# Launch applications
|
||||
"$mod, space, exec, $launcher-cmd"
|
||||
"$mod, return, exec, kitty"
|
||||
"$mod, b, exec, $browser"
|
||||
"$mod, s, exec, $ide"
|
||||
"$mod, e, exec, nautilus"
|
||||
|
||||
# Lock screen
|
||||
"$mod, l, exec, hyprlock"
|
||||
|
||||
# Clipboard management
|
||||
"$mod, V, exec, cliphist list | wofi --dmenu | cliphist decode | wl-copy"
|
||||
|
||||
# Close window
|
||||
"$mod, Q, killactive,"
|
||||
"$mod+Shift, Q, exit," # this is the true kill
|
||||
|
||||
# Toggle Floating and reduce size
|
||||
"$mod, f, togglefloating,"
|
||||
"$mod, f, resizeactive, 50% 50%,"
|
||||
# Toggle fullscreen
|
||||
"$mod+Shift, f, fullscreen,"
|
||||
|
||||
# Alt-tab alternative
|
||||
"$mod, Tab, cyclenext,"
|
||||
"$mod, Tab, bringactivetotop,"
|
||||
|
||||
# Move the window
|
||||
"$mod+Shift, left, movewindow, l"
|
||||
"$mod+Shift, right, movewindow, r"
|
||||
"$mod+Shift, up, movewindow, u"
|
||||
"$mod+Shift, down, movewindow, d"
|
||||
|
||||
"$mod+Ctrl, left, movetoworkspace, -1"
|
||||
"$mod+Ctrl, right, movetoworkspace, +1"
|
||||
|
||||
# # Switch workspace
|
||||
"$mod+Alt, left, workspace, -1"
|
||||
"$mod+Alt, right, workspace, +1"
|
||||
|
||||
# Screenshot
|
||||
"$mod, Print, exec, hyprshot -m region -o ~/Pictures/Screenshots"
|
||||
"$mod+Shift, Print, exec, hyprshot -m window -o ~/Pictures/Screenshots"
|
||||
|
||||
];
|
||||
|
||||
# repeatable bindings
|
||||
binde = [
|
||||
# Fn keys
|
||||
", XF86MonBrightnessDown, exec, brightnessctl set -5%"
|
||||
", XF86MonBrightnessUp, exec, brightnessctl set +5%"
|
||||
", XF86AudioRaiseVolume, exec, wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+"
|
||||
", XF86AudioLowerVolume, exec, wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%-"
|
||||
", XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"
|
||||
|
||||
# Reshape the window in focus
|
||||
"$mod, MINUS, resizeactive, -2% -2%"
|
||||
"$mod, KP_Subtract, resizeactive, -2% -2%"
|
||||
"$mod, PLUS, resizeactive, 2% 2%"
|
||||
"$mod, KP_Add, resizeactive, 2% 2%"
|
||||
|
||||
];
|
||||
|
||||
# lock-screen bindings
|
||||
bindl = [
|
||||
# on lid close, lock the screen
|
||||
# if another monitor is connected, only turn the internal monitor off and don't lock the screen
|
||||
", switch:on:Lid Switch, exec, hyprctl dispatch dpms off eDP-1"
|
||||
# if there is no active monitor, perform a screen lock
|
||||
", switch:on:Lid Switch, exec, hyprctl monitors | grep 'dpmsStatus: 1' || hyprlock"
|
||||
", switch:off:Lid Switch, exec, hyprctl dispatch dpms on eDP-1"
|
||||
];
|
||||
|
||||
# bindr = [
|
||||
# # Overview
|
||||
# "$mod, , overview:toggle"
|
||||
# ];
|
||||
|
||||
bindm = [
|
||||
# move the window
|
||||
"$mod, mouse:272, movewindow"
|
||||
];
|
||||
|
||||
exec-once = [
|
||||
"gnome-keyring-daemon --start --components=secrets"
|
||||
# "${pkgs.hyprpaper}/bin/hyprpaper"
|
||||
# hyprpaper is handled as its own service
|
||||
"${pkgs.waybar}/bin/waybar"
|
||||
# listen to clipboard events and send them to cliphist
|
||||
"wl-paste --watch cliphist store"
|
||||
"${pkgs.waybar}/bin/hypridle"
|
||||
"hyprpaper"
|
||||
# # Fixes cursor themes in gnome apps under hyprland
|
||||
# "gsettings set org.gnome.desktop.interface cursor-theme '${config.home.pointerCursor.name}'"
|
||||
# "gsettings set org.gnome.desktop.interface cursor-size ${toString home.pointerCursor.size}"
|
||||
];
|
||||
|
||||
general = {
|
||||
resize_on_border = true;
|
||||
gaps_in = 5;
|
||||
gaps_out = 5;
|
||||
border_size = 1;
|
||||
"col.active_border" = "rgb(98971A) rgb(CC241D) 45deg";
|
||||
layout = "master";
|
||||
};
|
||||
|
||||
misc = {
|
||||
# disable refreshs when nothing is going on
|
||||
vfr = false;
|
||||
disable_hyprland_logo = true;
|
||||
};
|
||||
|
||||
input = {
|
||||
kb_layout = "de";
|
||||
# remap caps lock to ctrl
|
||||
kb_options = "ctrl:nocaps";
|
||||
numlock_by_default = true;
|
||||
# mouse input should be unchanged
|
||||
natural_scroll = false;
|
||||
sensitivity = 0.3;
|
||||
touchpad = {
|
||||
disable_while_typing = false;
|
||||
natural_scroll = true;
|
||||
};
|
||||
};
|
||||
|
||||
gestures = {
|
||||
workspace_swipe = true;
|
||||
workspace_swipe_fingers = 4;
|
||||
workspace_swipe_touch = true;
|
||||
};
|
||||
|
||||
decoration = {
|
||||
rounding = 7;
|
||||
# active_opacity = 0.95;
|
||||
inactive_opacity = 0.9;
|
||||
|
||||
shadow = {
|
||||
enabled = false;
|
||||
};
|
||||
|
||||
# blur is set on a per-program basis
|
||||
windowrulev2 = [
|
||||
# kitty should behave like a floating window
|
||||
"animation popin, class:kitty"
|
||||
"move cursor -50% -50%, class:kitty"
|
||||
"float, class:kitty"
|
||||
"size 50% 50%, class:kitty"
|
||||
|
||||
# some more floating windows
|
||||
"float, class:org.gnome.Settings"
|
||||
"float, class:desktopclient.owncloud.com"
|
||||
"float, class:org.keepassxc.KeePassXC"
|
||||
|
||||
];
|
||||
};
|
||||
|
||||
monitor = [
|
||||
"eDP-1, 3840x2160, 0x0, 1.5" # the internal laptop monitor
|
||||
# Samsung monitor at irchel (matching the description)
|
||||
# "desc:Samsung Electric Company LS27D80xU HK7X800803, 3840x2160, auto-up, 1.5"
|
||||
", preferred, auto-up, auto" # automatically add any newly detected monitor
|
||||
];
|
||||
|
||||
xwayland = {
|
||||
enabled = false;
|
||||
};
|
||||
|
||||
env = [
|
||||
# force apps to use wayland
|
||||
"NIXOS_OZONE_WL, 1"
|
||||
"ELECTRON_OZONE_PLATFORM_HINT, wayland"
|
||||
# set the scale factor for GDK apps
|
||||
"GDK_SCALE, 1.5"
|
||||
# set the scale factor for QT apps
|
||||
"QT_SCALE_FACTOR, 1.5"
|
||||
# set the scale factor for GTK apps
|
||||
];
|
||||
};
|
||||
|
||||
plugins = [
|
||||
# Global overview
|
||||
pkgs.hyprlandPlugins.hyprspace
|
||||
# Touch gestures
|
||||
pkgs.hyprlandPlugins.hyprgrass
|
||||
];
|
||||
|
||||
};
|
||||
|
||||
services.swaync.enable = true;
|
||||
}
|
52
modules/home-manager/hypr/hyprlock.nix
Normal file
52
modules/home-manager/hypr/hyprlock.nix
Normal file
@@ -0,0 +1,52 @@
|
||||
{inputs, pkgs, ...}:
|
||||
{
|
||||
programs.hyprlock = {
|
||||
enable = true;
|
||||
settings = {
|
||||
general = {
|
||||
# immediately lock the screen
|
||||
grace = 0;
|
||||
no_fade_in = false;
|
||||
disable_loading_bar = false;
|
||||
};
|
||||
|
||||
background = {
|
||||
blur_passes = 3;
|
||||
blur_size = 10;
|
||||
# image is set by stylix
|
||||
};
|
||||
|
||||
input-field = {
|
||||
monitor = "";
|
||||
size = "300, 60";
|
||||
# radius = 15;
|
||||
position = "0, -250";
|
||||
halign = "center";
|
||||
valign = "center";
|
||||
};
|
||||
|
||||
label = [
|
||||
{
|
||||
# Day-Month-Date
|
||||
monitor = "";
|
||||
text = ''cmd[update:1000] echo -e "$(date +"%A, %B %d")"'';
|
||||
font_size = 28;
|
||||
position = "0, 490";
|
||||
halign = "center";
|
||||
valign = "center";
|
||||
}
|
||||
# Time
|
||||
{
|
||||
monitor = "";
|
||||
text = ''cmd[update:1000] echo "<span>$(date +"%H:%M")</span>"'';
|
||||
font_size = 160;
|
||||
font_weight = "bold";
|
||||
# font_family = "steelfish outline regular";
|
||||
position = "0, 370";
|
||||
halign = "center";
|
||||
valign = "center";
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
63
modules/home-manager/hypr/hyprpaper.nix
Normal file
63
modules/home-manager/hypr/hyprpaper.nix
Normal file
@@ -0,0 +1,63 @@
|
||||
{
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
with lib; let
|
||||
# # load the wallpapers from the wallpapers directory - this gives a set with the folder content
|
||||
# dirContent = builtins.readDir ../../../wallpapers;
|
||||
# wallpaperString = lib.strings.concatMapStrings (x: " " + x) wallpapers;
|
||||
# # # load each wallpaper and keep its path (now in the nix store) as an array
|
||||
# # wallpapers = map (x: builtins.readDir "${../../../wallpapers}/${x.value}") dirContent;
|
||||
# # wallpaperString = lib.strings.concatMapStrings (x: " " + x) wallpapers;
|
||||
|
||||
# # script that picks a random wallpaper from the array and sets it as the desktop background
|
||||
# monitor = ""; # leave empty to set the wallpaper on all monitors
|
||||
|
||||
# wallpaperRandomizer = pkgs.writeShellScriptBin "wallpaperRandomizer" ''
|
||||
# wallpaper=$(shuf -n 1 -e ${wallpaperString})
|
||||
# hyprctl hyprpaper unload all
|
||||
# hyprctl hyprpaper preload $wallpaper
|
||||
# hyprctl hyprpaper wallpaper "${monitor},$wallpaper"
|
||||
# '';
|
||||
|
||||
in {
|
||||
# home.packages = [wallpaperRandomizer];
|
||||
|
||||
|
||||
|
||||
services.hyprpaper = {
|
||||
enable = true;
|
||||
};
|
||||
# settings = {
|
||||
# ipc = "off";
|
||||
# splash = false;
|
||||
# };
|
||||
# };
|
||||
|
||||
# systemd.user = {
|
||||
# services.wallpaperRandomizer = {
|
||||
# Install = {WantedBy = ["graphical-session.target"];};
|
||||
|
||||
# Unit = {
|
||||
# Description = "Set random desktop background using hyprpaper";
|
||||
# After = ["graphical-session-pre.target"];
|
||||
# PartOf = ["graphical-session.target"];
|
||||
# };
|
||||
|
||||
# Service = {
|
||||
# Type = "oneshot";
|
||||
# ExecStart = "${wallpaperRandomizer}/bin/wallpaperRandomizer";
|
||||
# IOSchedulingClass = "idle";
|
||||
# };
|
||||
# };
|
||||
|
||||
# timers.wallpaperRandomizer = {
|
||||
# Unit = {Description = "Set random desktop background using hyprpaper on an interval";};
|
||||
|
||||
# Timer = {OnUnitActiveSec = "6h";};
|
||||
|
||||
# Install = {WantedBy = ["timers.target"];};
|
||||
# };
|
||||
# };
|
||||
}
|
239
modules/home-manager/hypr/waybar.nix
Normal file
239
modules/home-manager/hypr/waybar.nix
Normal file
@@ -0,0 +1,239 @@
|
||||
{inputs, pkgs, ...}:
|
||||
{
|
||||
# required to autoload fonts from packages installed via Home Manager
|
||||
fonts.fontconfig.enable = true;
|
||||
|
||||
# waybar requires font-awesome
|
||||
home.packages = [
|
||||
pkgs.pavucontrol
|
||||
];
|
||||
|
||||
# enable waybar
|
||||
programs.waybar.enable = true;
|
||||
programs.waybar = {
|
||||
settings = {
|
||||
|
||||
mainBar = {
|
||||
margin-top = 2;
|
||||
margin-bottom = 2;
|
||||
margin-left = 5;
|
||||
margin-right = 5;
|
||||
|
||||
layer = "top";
|
||||
position = "top";
|
||||
spacing = 5;
|
||||
|
||||
modules-left = [
|
||||
"hyprland/workspaces"
|
||||
"hyprland/window"
|
||||
];
|
||||
|
||||
modules-center = [
|
||||
"clock"
|
||||
"custom/notification"
|
||||
];
|
||||
|
||||
modules-right = [
|
||||
"tray"
|
||||
"privacy"
|
||||
"wireplumber"
|
||||
"network"
|
||||
"battery"
|
||||
"backlight"
|
||||
"idle_inhibitor"
|
||||
];
|
||||
|
||||
|
||||
# module specific settings
|
||||
"hyprland/workspaces" = {
|
||||
format = "{icon}";
|
||||
format-icons = {
|
||||
active = "●";
|
||||
default = "○";
|
||||
};
|
||||
};
|
||||
"hyprland/window"= {
|
||||
"icon" = true;
|
||||
"separate-outputs" = true;
|
||||
"format" = "{}";
|
||||
"rewrite" = {
|
||||
"(.*) — Mozilla Firefox" = "$1";
|
||||
"(.*) - fish" = "> [$1]";
|
||||
"(.*) - Visual Studio Code" = "$1";
|
||||
};
|
||||
};
|
||||
"clock" = {
|
||||
format = "{:%H:%M}";
|
||||
interval = 1;
|
||||
tooltip-format = "<tt>{calendar}</tt>";
|
||||
calendar = {
|
||||
"format" = {
|
||||
"today" = "<span color='#fAfBfC'><b>{}</b></span>";
|
||||
};
|
||||
};
|
||||
};
|
||||
"idle_inhibitor" = {
|
||||
format = "{icon}";
|
||||
format-icons = {
|
||||
activated = "";
|
||||
deactivated = "";
|
||||
};
|
||||
tooltip = "true";
|
||||
};
|
||||
"bluetooth" = {
|
||||
format-on = "";
|
||||
format-off = "BT-off";
|
||||
format-disabled = "";
|
||||
format-connected-battery = "{device_battery_percentage}% ";
|
||||
format-alt = "{device_alias} ";
|
||||
tooltip-format = "{controller_alias}\t{controller_address}\n\n{num_connections} connected";
|
||||
tooltip-format-connected = "{controller_alias}\t{controller_address}\n\n{num_connections} connected\n\n{device_enumerate}";
|
||||
tooltip-formaenumeratet-enumerate-connected = "{device_alias}\n{device_address}";
|
||||
tooltip-format-enumerate-connected-battery = "{device_alias}\n{device_address}\n{device_battery_percentage}%";
|
||||
on-click-right = "blueman-manager";
|
||||
};
|
||||
"battery" = {
|
||||
interval = 60;
|
||||
states = {
|
||||
good = 80;
|
||||
warning = 30;
|
||||
critical = 10;
|
||||
};
|
||||
format = "{capacity}% {icon}";
|
||||
format-charging = "{capacity}% ";
|
||||
format-plugged = "{capacity}% ";
|
||||
format-icons = [ "" "" "" "" "" "" ];
|
||||
};
|
||||
"backlight" = {
|
||||
"format" = "{percent}% {icon}";
|
||||
"format-icons" = ["" "" "" "" "" "" "" "" ""];
|
||||
};
|
||||
"wireplumber" = {
|
||||
scroll-step = 10;
|
||||
format = "{icon} {volume}%";# {format_source}";
|
||||
format-bluetooth = "{volume}% {icon}";# {format_source}";
|
||||
format-bluetooth-muted = " {icon}";# {format_source}";
|
||||
format-muted = " Muted";# {format_source}";
|
||||
# format-source = " {volume}%";
|
||||
# format-source-muted = "";
|
||||
format-icons = {
|
||||
headphone = "";
|
||||
hands-free = "";
|
||||
headset = "";
|
||||
phone = "";
|
||||
portable = "";
|
||||
default = [
|
||||
""
|
||||
""
|
||||
""
|
||||
];
|
||||
};
|
||||
on-click = "XDG_CURRENT_DESKTOP=GNOME gnome-control-center sound";
|
||||
};
|
||||
"tray" = {
|
||||
spacing = 5;
|
||||
};
|
||||
"custom/notification" = {
|
||||
tooltip = false;
|
||||
format = "{icon} {}";
|
||||
format-icons = {
|
||||
notification = "<span foreground='red'><sup></sup></span>";
|
||||
none = "";
|
||||
dnd-notification = "<span foreground='red'><sup></sup></span>";
|
||||
dnd-none = "";
|
||||
inhibited-notification = "<span foreground='red'><sup></sup></span>";
|
||||
inhibited-none = "";
|
||||
dnd-inhibited-notification = "<span foreground='red'><sup></sup></span>";
|
||||
dnd-inhibited-none = "";
|
||||
};
|
||||
return-type = "json";
|
||||
exec-if = "which swaync-client";
|
||||
exec = "swaync-client -swb";
|
||||
on-click = "sleep 0.1 && task-waybar";
|
||||
escape = true;
|
||||
};
|
||||
"network" = {
|
||||
format = "";
|
||||
format-wifi = "{icon} {essid}";
|
||||
format-icons = [ "" "" "" "" "" ];
|
||||
format-ethernet = " {ipaddr}/{cidr}";
|
||||
format-disconnected = "";
|
||||
tooltip-format = " {ifname} via {gwaddr}";
|
||||
tooltip-format-wifi = "SSID: {essid}({signalStrength}%), {frequency} MHz\nInterface: {ifname}\nIP: {ipaddr}\nGW: {gwaddr}\n\n<span color='#a6da95'>{bandwidthUpBits}</span>\t<span color='#ee99a0'>{bandwidthDownBits}</span>\t<span color='#c6a0f6'>{bandwidthTotalBits}</span>";
|
||||
tooltip-format-ethernet = "{ifname} ";
|
||||
tooltip-format-disconnected = "Disconnected";
|
||||
on-click = "XDG_CURRENT_DESKTOP=GNOME gnome-control-center wifi";
|
||||
};
|
||||
"privacy" = {
|
||||
icon-spacing = 4;
|
||||
# icon-size" = 18;
|
||||
transition-duration = 250;
|
||||
modules = [
|
||||
{
|
||||
type = "screenshare";
|
||||
tooltip = true;
|
||||
# tooltip-icon-size = 24
|
||||
}
|
||||
{
|
||||
type = "audio-out";
|
||||
tooltip = true;
|
||||
# tooltip-icon-size = 24
|
||||
}
|
||||
{
|
||||
type = "audio-in";
|
||||
tooltip = true;
|
||||
# tooltip-icon-size = 24
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
style = ''
|
||||
* {
|
||||
font-family: "FiraCode Nerd Font";
|
||||
font-weight: bold;
|
||||
font-size: 22px;
|
||||
}
|
||||
|
||||
window#waybar {
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
|
||||
.module {
|
||||
background: rgba(0, 0, 0, 0.6);
|
||||
color: white;
|
||||
border-radius: 7px;
|
||||
padding: 5px 5px 5px 5px;
|
||||
margin: 5px 0;
|
||||
}
|
||||
box.module button:hover {
|
||||
box-shadow: inset 0 -3px #ffffff;
|
||||
}
|
||||
|
||||
.modules-left {
|
||||
padding: 3px;
|
||||
}
|
||||
|
||||
.modules-right {
|
||||
padding: 3px;
|
||||
}
|
||||
|
||||
.modules-center {
|
||||
padding: 3px;
|
||||
}
|
||||
|
||||
#workspaces button {
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
#battery.warning {
|
||||
background:rgba(240, 165, 0, 0.6);
|
||||
}
|
||||
#battery.critical {
|
||||
background:rgba(255, 0, 0, 0.6);
|
||||
}
|
||||
'';
|
||||
};
|
||||
}
|
@@ -1,151 +0,0 @@
|
||||
{inputs, pkgs, ...}:
|
||||
{
|
||||
programs.kitty.enable = true;
|
||||
|
||||
wayland.windowManager.hyprland = {
|
||||
enable = true;
|
||||
systemd.enable = true;
|
||||
settings = {
|
||||
"$mod" = "SUPER";
|
||||
bind =
|
||||
[
|
||||
"$mod, F, exec, firefox"
|
||||
"$mod, return, exec, walker"
|
||||
"$mod_SHIFT, return, exec, kitty"
|
||||
"$mod, s, exec, code"
|
||||
"$mod, Q, killactive," # Close window
|
||||
"$mod, T, togglefloating," # Toggle Floating
|
||||
|
||||
"$mod, left, movefocus, l" # Move focus left
|
||||
"$mod, right, movefocus, r" # Move focus Right
|
||||
"$mod, up, movefocus, u" # Move focus Up
|
||||
"$mod, down, movefocus, d" # Move focus Down
|
||||
# "$shiftMod, up, focusmonitor, -1" # Focus previous monitor
|
||||
# "$shiftMod, down, focusmonitor, 1" # Focus next monitor
|
||||
# "$shiftMod, left, layoutmsg, addmaster" # Add to master
|
||||
# "$shiftMod, right, layoutmsg, removemaster" # Remove from master
|
||||
];
|
||||
general = {
|
||||
resize_on_border = true;
|
||||
gaps_in = 5;
|
||||
gaps_out = 5;
|
||||
border_size = 1;
|
||||
layout = "master";
|
||||
};
|
||||
|
||||
misc = {
|
||||
disable_hyprland_logo = true;
|
||||
};
|
||||
|
||||
input = {
|
||||
kb_layout = "de";
|
||||
kb_options = "caps:control";
|
||||
numlock_by_default = true;
|
||||
# mouse input should be unchanged
|
||||
natural_scroll = false;
|
||||
touchpad = {
|
||||
disable_while_typing = false;
|
||||
natural_scroll = true;
|
||||
};
|
||||
};
|
||||
|
||||
gestures = {
|
||||
workspace_swipe = true;
|
||||
workspace_swipe_fingers = 4;
|
||||
workspace_swipe_touch = true;
|
||||
};
|
||||
|
||||
decoration = {
|
||||
rounding = 5;
|
||||
};
|
||||
# plugin.virtual-desktops = {}
|
||||
|
||||
monitor = [
|
||||
"eDP-1, highres, 0x0, 1.5" # the internal laptop monitor
|
||||
", preferred, auto, 1" # automatically add any newly detected monitor
|
||||
];
|
||||
};
|
||||
|
||||
plugins = [
|
||||
# Touch gestures: https://github.com/horriblename/hyprgrass
|
||||
# inputs.hyprgrass.packages.${pkgs.system}.default
|
||||
# Virtual desktops: https://github.com/levnikmyskin/hyprland-virtual-desktops
|
||||
# inputs.hyprland-virtual-desktops.packages.${pkgs.system}.virtual-desktops
|
||||
];
|
||||
};
|
||||
|
||||
imports = [ inputs.hyprpanel.homeManagerModules.hyprpanel ];
|
||||
# the overlay makes this available as a home manager module
|
||||
programs.hyprpanel = {
|
||||
enable = true;
|
||||
# autostart after hyprland
|
||||
hyprland.enable = true;
|
||||
overwrite.enable = true;
|
||||
overlay.enable = true;
|
||||
|
||||
theme = "monochrome";
|
||||
|
||||
settings = {
|
||||
bar = {
|
||||
clock.format = "%H:%M";
|
||||
clock.showIcon = false;
|
||||
launcher.icon = "🚀";
|
||||
launcher.autoDetectIcon = true;
|
||||
workspaces.show_icons = true;
|
||||
};
|
||||
};
|
||||
|
||||
layout = {
|
||||
"bar.layouts" = {
|
||||
"*" = {
|
||||
left = ["workspaces"];
|
||||
middle = ["clock"];
|
||||
right = ["volume" "systray" "nm-applet" "notifications" ];
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
|
||||
programs.walker = {
|
||||
enable = true;
|
||||
runAsService = true;
|
||||
|
||||
# All options from the config.json can be used here.
|
||||
config = {
|
||||
search.placeholder = "Search";
|
||||
ui.fullscreen = true;
|
||||
list = {
|
||||
height = 200;
|
||||
};
|
||||
websearch.prefix = "?";
|
||||
switcher.prefix = "/";
|
||||
};
|
||||
|
||||
# If this is not set the default styling is used.
|
||||
# style = ''
|
||||
# * {
|
||||
# color: #dcd7ba;
|
||||
# }
|
||||
# '';
|
||||
};
|
||||
|
||||
|
||||
programs.hyprlock = {
|
||||
enable = true;
|
||||
settings = {
|
||||
general = {
|
||||
grace = 5;
|
||||
no_fade_in = false;
|
||||
disable_loading_bar = false;
|
||||
};
|
||||
};
|
||||
# Style the lock screen
|
||||
};
|
||||
|
||||
services.network-manager-applet = {
|
||||
enable = true;
|
||||
};
|
||||
|
||||
}
|
@@ -3,5 +3,4 @@
|
||||
home.packages = [
|
||||
pkgs.keepassxc
|
||||
];
|
||||
|
||||
}
|
||||
|
65
modules/home-manager/kitty.nix
Normal file
65
modules/home-manager/kitty.nix
Normal file
@@ -0,0 +1,65 @@
|
||||
{pkgs, lib, ...}:
|
||||
let
|
||||
stylix = import ./stylix.nix { inherit pkgs; };
|
||||
in
|
||||
{
|
||||
programs.kitty = {
|
||||
enable = true;
|
||||
shellIntegration.enableFishIntegration = true;
|
||||
settings = {
|
||||
|
||||
|
||||
# # import the colors from the stylix theme, but keep the background black
|
||||
# color0 = stylix.stylix.base16Scheme.base00;
|
||||
# color8 = stylix.stylix.base16Scheme.base08;
|
||||
|
||||
# color1 = stylix.stylix.base16Scheme.base01;
|
||||
# color9 = stylix.stylix.base16Scheme.base09;
|
||||
|
||||
# color2 = stylix.stylix.base16Scheme.base02;
|
||||
# color10 = stylix.stylix.base16Scheme.base0A;
|
||||
|
||||
# color3 = stylix.stylix.base16Scheme.base03;
|
||||
# color11 = stylix.stylix.base16Scheme.base0B;
|
||||
|
||||
# color4 = stylix.stylix.base16Scheme.base04;
|
||||
# color12 = stylix.stylix.base16Scheme.base0C;
|
||||
|
||||
# color5 = stylix.stylix.base16Scheme.base05;
|
||||
# color13 = stylix.stylix.base16Scheme.base0D;
|
||||
|
||||
# color6 = stylix.stylix.base16Scheme.base06;
|
||||
# color14 = stylix.stylix.base16Scheme.base0E;
|
||||
|
||||
# color7 = stylix.stylix.base16Scheme.base07;
|
||||
# color15 = stylix.stylix.base16Scheme.base0F;
|
||||
|
||||
# also reuse the background opacity by stylix
|
||||
background_opacity = stylix.stylix.opacity.terminal;
|
||||
|
||||
background = "#000000";
|
||||
|
||||
font_family = stylix.stylix.fonts.monospace.name;
|
||||
font_size = stylix.stylix.fonts.sizes.terminal;
|
||||
confirm_os_window_close = 0;
|
||||
enable_audio_bell = false;
|
||||
cursor_trail = 3;
|
||||
cursor_trail_decay = "0.1 0.4";
|
||||
url_style = "curly";
|
||||
notify_on_cmd_finish = "unfocused";
|
||||
};
|
||||
|
||||
keybindings = {
|
||||
# copy and paste
|
||||
"ctrl+shift+c" = "copy_to_clipboard";
|
||||
"ctrl+shift+v" = "paste_from_clipboard";
|
||||
# zoom
|
||||
"ctrl+shift+plus" = "increase_font_size";
|
||||
"ctrl+shift+minus" = "decrease_font_size";
|
||||
"ctrl+shift+0" = "reset_font_size";
|
||||
# tabs
|
||||
"ctrl+shift+t" = "new_tab";
|
||||
"ctrl+shift+w" = "close_tab";
|
||||
};
|
||||
};
|
||||
}
|
8
modules/home-manager/kubectl.nix
Normal file
8
modules/home-manager/kubectl.nix
Normal file
@@ -0,0 +1,8 @@
|
||||
{pkgs, ...}:
|
||||
{
|
||||
home.packages = [
|
||||
pkgs.kubie
|
||||
pkgs.kubectl
|
||||
];
|
||||
|
||||
}
|
96
modules/home-manager/stylix.nix
Normal file
96
modules/home-manager/stylix.nix
Normal file
@@ -0,0 +1,96 @@
|
||||
{pkgs, ...}:
|
||||
{
|
||||
stylix = {
|
||||
# Stylix is already enabled since the system is configured to use it
|
||||
# enable = true;
|
||||
# don't theme applications by default
|
||||
autoEnable = false;
|
||||
|
||||
cursor = {
|
||||
package = pkgs.apple-cursor;
|
||||
name = "macOS";
|
||||
size = 35;
|
||||
};
|
||||
|
||||
iconTheme = {
|
||||
enable = true;
|
||||
package = pkgs.tela-icon-theme;
|
||||
};
|
||||
|
||||
|
||||
image = ./../../wallpapers/magicpattern-87PP9Zd7MNo-unsplash.jpg;
|
||||
|
||||
|
||||
fonts = {
|
||||
|
||||
serif = {
|
||||
package = pkgs.dejavu_fonts;
|
||||
name = "DejaVu Serif";
|
||||
};
|
||||
|
||||
sansSerif = {
|
||||
package = pkgs.dejavu_fonts;
|
||||
name = "DejaVu Sans";
|
||||
};
|
||||
|
||||
monospace = {
|
||||
package = pkgs.nerdfonts.override { fonts = [ "FiraCode" ]; };
|
||||
name = "FiraCode Nerd Font Mono";
|
||||
};
|
||||
|
||||
emoji = {
|
||||
package = pkgs.noto-fonts-emoji;
|
||||
name = "Noto Color Emoji";
|
||||
};
|
||||
|
||||
sizes = {
|
||||
applications = 15;
|
||||
desktop = 15;
|
||||
popups = 12;
|
||||
terminal = 15;
|
||||
};
|
||||
};
|
||||
|
||||
opacity = {
|
||||
applications = 1.0;
|
||||
desktop = 1.0;
|
||||
popups = 0.9;
|
||||
terminal = 0.8;
|
||||
};
|
||||
};
|
||||
|
||||
stylix.base16Scheme = {
|
||||
scheme = "onelight";
|
||||
author = "https://github.com/one-dark";
|
||||
base00 = "#fafafa";
|
||||
base01 = "#f4f4f4";
|
||||
base02 = "#e5e5e6";
|
||||
base03 = "#dfdfe0";
|
||||
base04 = "#d7d7d8";
|
||||
base05 = "#383a42";
|
||||
base06 = "#202227";
|
||||
base07 = "#090a0b";
|
||||
base08 = "#d84a3d";
|
||||
base09 = "#a626a4";
|
||||
base0A = "#c18401";
|
||||
base0B = "#50a14f";
|
||||
base0C = "#0070a8";
|
||||
base0D = "#4078f2";
|
||||
base0E = "#a626a4";
|
||||
base0F = "#986801";
|
||||
|
||||
};
|
||||
|
||||
stylix.targets = {
|
||||
hyprpaper.enable = true;
|
||||
hyprlock.enable = true;
|
||||
gnome.enable = true;
|
||||
|
||||
# disabled because they overwrite too many settings
|
||||
# wofi.enable = true;
|
||||
# vscode.enable = true;
|
||||
# waybar.enable = true;
|
||||
# kitty.enable = true;
|
||||
|
||||
};
|
||||
}
|
95
modules/home-manager/wofi.nix
Normal file
95
modules/home-manager/wofi.nix
Normal file
@@ -0,0 +1,95 @@
|
||||
{ config, pkgs, lib, ... }:
|
||||
let
|
||||
stylix = import ./stylix.nix { inherit pkgs; };
|
||||
|
||||
in {
|
||||
|
||||
home.packages = with pkgs; [ wofi-emoji ];
|
||||
|
||||
programs.wofi = {
|
||||
enable = true;
|
||||
|
||||
settings = {
|
||||
# global layout
|
||||
width = "50%";
|
||||
height = "50%";
|
||||
orientation = "vertical";
|
||||
hide_scroll = true;
|
||||
line_wrap = "off";
|
||||
dynamic_lines = true;
|
||||
|
||||
# search behaviour
|
||||
matching = "fuzzy";
|
||||
single_click = true;
|
||||
|
||||
|
||||
show = "drun";
|
||||
prompt = "Launch...";
|
||||
# normal_window = true;
|
||||
layer = "top";
|
||||
term = "foot";
|
||||
halign = "fill";
|
||||
|
||||
# Rich rendering
|
||||
allow_markup = true;
|
||||
allow_images = true;
|
||||
image_size = 24;
|
||||
|
||||
|
||||
exec_search = false;
|
||||
hide_search = false;
|
||||
parse_search = false;
|
||||
insensitive = true;
|
||||
no_actions = true;
|
||||
|
||||
|
||||
filter_rate = 100;
|
||||
key_expand = "Tab";
|
||||
key_exit = "Escape";
|
||||
|
||||
};
|
||||
|
||||
|
||||
style = ''
|
||||
* {
|
||||
font-family: ${stylix.stylix.fonts.sansSerif.name};
|
||||
font-size: ${builtins.toString (stylix.stylix.fonts.sizes.applications + 10)}px;
|
||||
color: ${stylix.stylix.base16Scheme.base04};
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
#window {
|
||||
background: rgba(41, 46, 66, 0.5);
|
||||
margin: auto;
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
#input {
|
||||
padding: 10px;
|
||||
margin-bottom: 10px;
|
||||
border-radius: 15px;
|
||||
}
|
||||
|
||||
#outer-box {
|
||||
padding: 20px;
|
||||
}
|
||||
|
||||
#img {
|
||||
margin-right: 6px;
|
||||
}
|
||||
|
||||
#entry {
|
||||
padding: 10px;
|
||||
border-radius: 15px;
|
||||
}
|
||||
|
||||
#entry:selected {
|
||||
background-color: #2e3440;
|
||||
}
|
||||
|
||||
#text {
|
||||
margin: 2px;
|
||||
}
|
||||
'';
|
||||
};
|
||||
}
|
@@ -1,11 +1,22 @@
|
||||
{inputs, pkgs, ...}:
|
||||
{inputs, pkgs, ...}:
|
||||
{
|
||||
xdg.enable = true;
|
||||
|
||||
xdg.portal = {
|
||||
enable = true;
|
||||
xdgOpenUsePortal = true;
|
||||
|
||||
# configPackages = [ pkgs.hyprland ];
|
||||
config = {
|
||||
common.default = ["gtk"];
|
||||
hyprland.default = ["gtk" "hyprland"];
|
||||
};
|
||||
|
||||
extraPortals = [
|
||||
pkgs.xdg-desktop-portal-gtk
|
||||
pkgs.xdg-desktop-portal-gtk
|
||||
pkgs.xdg-desktop-portal-wlr
|
||||
pkgs.xdg-desktop-portal-hyprland
|
||||
];
|
||||
};
|
||||
|
||||
}
|
||||
|
Reference in New Issue
Block a user