commit 96a1f8a39588e8d5c894ae52a5da237a6353ff5c Author: Nils Walther Date: Fri Jan 2 20:43:09 2026 +0100 init diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ + diff --git a/README.md b/README.md new file mode 100644 index 0000000..5522ec3 --- /dev/null +++ b/README.md @@ -0,0 +1,155 @@ +> [!CAUTION] +> ### ⚠️ Wichtige Hinweise zur Bootfähigkeit +> +> +> **zwingend manuell anpassen** +> * **Hardware-Konfiguration.nix**: Die Datei `hardware-configuration.nix` muss für jedes Gerät individuell generiert werden. (Generierte vom System nehmen) +> * **Hibernation.nix**: Die Werte für `boot.resumeDevice` (UUID) und `resume_offset` in der `modules/hibernation.nix` sind physikalisch an die aktuelle Festplatte gebunden. (erstmal auskommentieren in configuration.nix dann anpassen) +> * **nvidia.nix**: Muss angepasst je nach GPU +> * **boot.nix**: nutzt drm nvidia treiber muss ausgetauscht werden initdr anpassen ob amd oder nvidia! +> * **Virtualisierung.nix**: Die USB-IDs für die Kinesis-Tastatur und Keychron-Maus in der `modules/virtualization.nix` funktionieren nur mit diesen spezifischen Geräten. (erstmal egal) +> +> + + + +# ███╗ ██╗██╗██╗ ██╗ ██████╗ ███████╗ +# ████╗ ██║██║╚██╗██╔╝██╔═══██╗██╔════╝ +# ██╔██╗ ██║██║ ╚███╔╝ ██║ ██║███████╗ +# ██║╚██╗██║██║ ██╔██╗ ██║ ██║╚════██║ +# ██║ ╚████║██║██╔╝ ██╗╚██████╔╝███████║ +# ╚═╝ ╚═══╝╚═╝╚═╝ ╚═╝ ╚═════╝ ╚══════╝ + +# ❄️ Nils' Modular NixOS Config + +

+ Desktop View + Terminal View + + Desktop View + Terminal View +

+ + +--- +## TODO + +* [ ] Waybar reload Tray spawn beheben + + +* [ ] swaync dynamisch reloading + + +## Struktur + +Die Konfiguration ist in logische Module unterteilt, um die Wartung und Übertragbarkeit zu erleichtern: + +**`configuration.nix`**: Zentraler Einstiegspunkt für das System. + +**`modules/`**: Systemweite Konfigurationen (Boot, NVIDIA, Virtualisierung, Hibernation). + +**`home/`**: Benutzerspezifische Konfigurationen via Home-Manager (Hyprland, Waybar, App-Configs). + +**`icons-wallpapers/`**: Icons, Wallpapers und System-Assets. + +**`templates/`**: Vorlagen für die dynamische Farberzeugung mit Matugen. + +--- + +## Installation & Setup + +### 1. Repository klonen + +```bash +git clone https://github.com/DEIN_USERNAME/nixos-config.git ~/nixos +cd ~/nixos + +``` + +### 2. Symlink erstellen + +NixOS erwartet seine Konfiguration standardmäßig unter `/etc/nixos`. Wir verlinken unser lokales Verzeichnis dorthin: + +```bash +sudo ln -s /home/nils/nixos /etc/nixos + +``` + +### 3. Konfiguration anwenden + +Verwende für normale Änderungen `switch`. Wenn du jedoch **Kernel-Parameter** (wie für Hibernate) oder den **Bootloader** änderst, ist der `boot`-Befehl sicherer: + +```bash +# Empfohlen nach Änderungen an der hibernation.nix oder boot.nix: +sudo nixos-rebuild boot --flake .#nixos + +``` + +--- + +## Updates & Wartung + +Um die externen Programme und das Basissystem (nixpkgs) auf den neuesten Stand zu bringen, müssen die Flake-Inputs aktualisiert werden: + +1. **Inputs aktualisieren**: +```bash +nix flake update + +``` + + +Dieser Befehl prüft alle Quellen in der `flake.nix` auf Aktualisierungen und schreibt die neuen Versionen in die `flake.lock`. + + +2. **Änderung registrieren**: +```bash +git add flake.lock + +``` + + +3. **System aktualisieren**: +```bash +sudo nixos-rebuild switch --flake .#nixos + +``` + +--- + +## Workflow + +Wenn du Änderungen vornimmst, folge immer diesem Ablauf: + +1. **Dateien bearbeiten** (in `/home/nils/nixos`). +2. **Änderungen registrieren**: `git add .` (Ohne diesen Schritt findet NixOS neue Dateien oder Änderungen in Flakes nicht!). +3. **Anwenden**: +* `sudo nixos-rebuild switch --flake .#nixos` (für sofortige Änderungen). +* `sudo nixos-rebuild boot --flake .#nixos` (schreibt den Boot-Eintrag für den nächsten Neustart). + + + +--- + +### Was wurde ergänzt? + +* **Pfad-Klarheit**: Es wird explizit auf `/home/nils/nixos` hingewiesen. +* **Git-Pflicht**: Der Hinweis auf `git init` und die Notwendigkeit von `git add` für Flakes ist jetzt prominenter. +* **Boot-Befehl**: Die Unterscheidung zwischen `switch` und `boot` wurde hinzugefügt, da du für das Hibernation-Setup zwingend den `boot`-Parameter benötigst, um die Kernel-Parameter (`resume_offset`) im Bootloader zu registrieren. + +Soll ich noch einen Abschnitt hinzufügen, wie man überprüft, ob der Symlink korrekt gesetzt wurde? + +### 3. Hardware-Konfiguration + +Die `hardware-configuration.nix` ist spezifisch für jedes Gerät. Sie wird automatisch generiert und sollte im Hauptverzeichnis bleiben. + +* Die Datei wird beim ersten Setup automatisch eingebunden. + + +* **Wichtig:** Falls du das System auf neuer Hardware aufsetzt, generiere sie mit `nixos-generate-config` neu. + +### 4. Konfiguration anwenden + +```bash +sudo nixos-rebuild switch --flake .#nixos + +``` diff --git a/configuration.nix b/configuration.nix new file mode 100644 index 0000000..444e017 --- /dev/null +++ b/configuration.nix @@ -0,0 +1,32 @@ +{ config, pkgs, inputs, ... }: + +{ + imports = [ + ./hardware-configuration.nix + ./modules/boot.nix + ./modules/hibernation.nix + ./modules/virtualization.nix + ./modules/locale.nix + ./modules/nvidia.nix + ./modules/desktop.nix + ./modules/users.nix + ./modules/system-packages.nix + ]; + + system.stateVersion = "25.11"; + nixpkgs.config.allowUnfree = true; + + nix.settings = { + experimental-features = [ "nix-command" "flakes" ]; + auto-optimise-store = true; + }; + + nix.gc = { + automatic = true; + dates = "weekly"; + options = "--delete-older-than 7d"; + }; + + hardware.bluetooth.enable = true; + services.xserver.enable = true; +} diff --git a/cosmic_desktop.png b/cosmic_desktop.png new file mode 100644 index 0000000..cfcac59 Binary files /dev/null and b/cosmic_desktop.png differ diff --git a/cosmic_hyprlock.png b/cosmic_hyprlock.png new file mode 100644 index 0000000..9e38668 Binary files /dev/null and b/cosmic_hyprlock.png differ diff --git a/cosmic_terminal.png b/cosmic_terminal.png new file mode 100644 index 0000000..738d9b1 Binary files /dev/null and b/cosmic_terminal.png differ diff --git a/cosmic_wlogout.png b/cosmic_wlogout.png new file mode 100644 index 0000000..5fc5175 Binary files /dev/null and b/cosmic_wlogout.png differ diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..272f44e --- /dev/null +++ b/flake.lock @@ -0,0 +1,140 @@ +{ + "nodes": { + "flake-utils": { + "inputs": { + "systems": "systems" + }, + "locked": { + "lastModified": 1731533236, + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "home-manager": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1765980955, + "narHash": "sha256-rB45jv4uwC90vM9UZ70plfvY/2Kdygs+zlQ07dGQFk4=", + "owner": "nix-community", + "repo": "home-manager", + "rev": "89c9508bbe9b40d36b3dc206c2483ef176f15173", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "home-manager", + "type": "github" + } + }, + "mac-style-plymouth": { + "inputs": { + "flake-utils": "flake-utils", + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1756677116, + "narHash": "sha256-bjtQvzupAFX5AYAIyBXSFgWhaG4nP4TvgKDoKyUhZ4U=", + "owner": "SergioRibera", + "repo": "s4rchiso-plymouth-theme", + "rev": "2f782f4b68ce1c00cef3fde6970d7b4241bb97d4", + "type": "github" + }, + "original": { + "owner": "SergioRibera", + "repo": "s4rchiso-plymouth-theme", + "type": "github" + } + }, + "matugen": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ], + "systems": "systems_2" + }, + "locked": { + "lastModified": 1765981892, + "narHash": "sha256-c7VKaNiBUkwGsTq398EQSM4K7skPacmOz8NeLj67M7s=", + "owner": "InioX", + "repo": "Matugen", + "rev": "e405cd9de87510dd40c1328bcf06e0daf3d1a5bf", + "type": "github" + }, + "original": { + "owner": "InioX", + "repo": "Matugen", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1765779637, + "narHash": "sha256-KJ2wa/BLSrTqDjbfyNx70ov/HdgNBCBBSQP3BIzKnv4=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "1306659b587dc277866c7b69eb97e5f07864d8c4", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "home-manager": "home-manager", + "mac-style-plymouth": "mac-style-plymouth", + "matugen": "matugen", + "nixpkgs": "nixpkgs" + } + }, + "systems": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_2": { + "locked": { + "lastModified": 1689347949, + "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=", + "owner": "nix-systems", + "repo": "default-linux", + "rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default-linux", + "type": "github" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..b92315c --- /dev/null +++ b/flake.nix @@ -0,0 +1,34 @@ +{ + description = "nils NixOS Modular Config"; + + inputs = { + nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; + home-manager = { + url = "github:nix-community/home-manager"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + matugen = { + url = "github:InioX/Matugen"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + mac-style-plymouth = { + url = "github:SergioRibera/s4rchiso-plymouth-theme"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + }; + + outputs = { self, nixpkgs, ... }@inputs: + let + username = "nils"; + system = "x86_64-linux"; + in { + nixosConfigurations.nixos = nixpkgs.lib.nixosSystem { + inherit system; + specialArgs = { inherit inputs username; }; + modules = [ + ./configuration.nix + inputs.home-manager.nixosModules.home-manager + ]; + }; + }; +} diff --git a/hardware-configuration.nix b/hardware-configuration.nix new file mode 100644 index 0000000..173952e --- /dev/null +++ b/hardware-configuration.nix @@ -0,0 +1,38 @@ +# Do not modify this file! It was generated by ‘nixos-generate-config’ +# and may be overwritten by future invocations. Please make changes +# to /etc/nixos/configuration.nix instead. +{ config, lib, pkgs, modulesPath, ... }: + +{ + imports = + [ (modulesPath + "/installer/scan/not-detected.nix") + ]; + + boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "nvme" "usbhid" "usb_storage" "sd_mod" ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ "kvm-intel" ]; + boot.extraModulePackages = [ ]; + + fileSystems."/" = + { device = "/dev/disk/by-uuid/6a9e58be-37d9-4fee-8b67-81a78d80c016"; + fsType = "ext4"; + }; + + fileSystems."/boot" = + { device = "/dev/disk/by-uuid/1C0E-5877"; + fsType = "vfat"; + options = [ "fmask=0077" "dmask=0077" ]; + }; + + swapDevices = [ ]; + + # Enables DHCP on each ethernet and wireless interface. In case of scripted networking + # (the default) this is the recommended approach. When using systemd-networkd it's + # still possible to use this option, but it's recommended to use it in conjunction + # with explicit per-interface declarations with `networking.interfaces..useDHCP`. + networking.useDHCP = lib.mkDefault true; + # networking.interfaces.enp5s0.useDHCP = lib.mkDefault true; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; +} diff --git a/home/alacritty.nix b/home/alacritty.nix new file mode 100644 index 0000000..24bfda3 --- /dev/null +++ b/home/alacritty.nix @@ -0,0 +1,21 @@ +{ config, pkgs, ... }: + +{ + programs.alacritty = { + enable = true; + settings = { + general.import = [ "${config.home.homeDirectory}/.config/alacritty/colors.toml" ]; + + env.TERM = "xterm-256color"; + window = { + opacity = 0.9; + padding = { x = 10; y = 10; }; + }; + font.size = 12; + + terminal.shell = { + program = "${pkgs.zellij}/bin/zellij"; + }; + }; + }; +} diff --git a/home/helix.nix b/home/helix.nix new file mode 100644 index 0000000..a5b4206 --- /dev/null +++ b/home/helix.nix @@ -0,0 +1,48 @@ +{ pkgs, ... }: + +{ + programs.helix = { + enable = true; + defaultEditor = true; + settings = { + theme = "transparent"; + editor = { + line-number = "relative"; + bufferline = "multiple"; + cursor-shape = { + insert = "bar"; + normal = "block"; + select = "underline"; + }; + statusline.left = ["mode" "spinner" "file-name"]; + }; + keys.normal = { + X = "extend_line_above"; + }; + }; + themes = { + transparent = { + inherits = "base16_transparent"; + "ui.background" = { }; + + "ui.linenr" = { fg = "#666666"; }; + "ui.linenr.selected" = { + fg = "#ffffff"; + modifiers = ["bold"]; + }; + + "ui.cursor" = { bg = "#ffffff"; fg = "#000000"; }; + "ui.cursor.primary" = { bg = "#ffffff"; fg = "#000000"; }; + + "ui.selection" = { + bg = "#585b70"; + fg = "#ffffff"; + }; + "ui.selection.primary" = { + bg = "#b4befe"; + fg = "#11111b"; + }; + }; + }; + }; +} diff --git a/home/home.nix b/home/home.nix new file mode 100644 index 0000000..89aeec8 --- /dev/null +++ b/home/home.nix @@ -0,0 +1,39 @@ +{ config, pkgs, inputs, lib, username, ... }: + +{ + imports = [ + ./alacritty.nix + ./helix.nix + ./hypridle.nix + ./hyprland.nix + ./hyprlock.nix + ./swww.nix + ./mime-apps.nix + ./packages.nix + ./rofi.nix + ./shell.nix + ./swaync.nix + ./theming.nix + ./waybar.nix + ./waypaper.nix + ./wlogout.nix + ./swayosd.nix + ./yazi.nix + ./zathura.nix + ]; + + home.username = username; + home.homeDirectory = "/home/${username}"; + home.stateVersion = "25.11"; + + home.sessionVariables = { + XDG_MENU_PREFIX = "plasma-"; + XDG_CURRENT_DESKTOP = "Hyprland"; + XDG_SESSION_DESKTOP = "Hyprland"; + QT_QPA_PLATFORM = "wayland;xcb"; + LIBVA_DRIVER_NAME = "nvidia"; + GBM_BACKEND = "nvidia-drm"; + __GLX_VENDOR_LIBRARY_NAME = "nvidia"; + WLR_NO_HARDWARE_CURSORS = "1"; + }; +} diff --git a/home/hypridle.nix b/home/hypridle.nix new file mode 100644 index 0000000..4e7307d --- /dev/null +++ b/home/hypridle.nix @@ -0,0 +1,28 @@ +{ pkgs, ... }: { + services.hypridle = { + enable = true; + settings = { + general = { + lock_cmd = "pidof hyprlock || hyprlock"; + before_sleep_cmd = "loginctl lock-session"; + after_sleep_cmd = "hyprctl dispatch dpms on"; + }; + + listener = [ + { + timeout = 180; + on-timeout = "loginctl lock-session"; + } + # { + # timeout = 330; + # on-timeout = "hyprctl dispatch dpms off"; + # on-resume = "hyprctl dispatch dpms on"; + # } + { + timeout = 300; + on-timeout = "systemctl suspend-then-hibernate"; + } + ]; + }; + }; +} diff --git a/home/hyprland.nix b/home/hyprland.nix new file mode 100644 index 0000000..ad8e822 --- /dev/null +++ b/home/hyprland.nix @@ -0,0 +1,263 @@ +{ config, pkgs, ... }: + +{ + wayland.windowManager.hyprland = { + enable = true; + xwayland.enable = true; + + settings = { + source = "~/.config/hypr/colors.conf"; + + monitor = [ + "DP-6, 5120x1440@239.761, 0x1440, 1" + "DP-5, 2560x1440@164.958, 1280x0, 1" + ]; + + workspace = [ + "1, monitor:DP-6, default:true" + ]; + + "$mainMod" = "SUPER"; + "$terminal" = "alacritty"; + "$filemanager" = "yazi"; + "$applauncher" = "rofi -show drun -no-custom"; + + animations = { + enabled = true; + bezier = [ + "overshot, 0.13, 0.99, 0.29, 1.1" + "smooth, 0.25, 1, 0.5, 1" + "snappy, 0.1, 1, 0.1, 1" + ]; + animation = [ + "windowsIn, 1, 4, overshot, slide" + "windowsOut, 1, 5, default, popin 80%" + "border, 1, 5, default" + "workspacesIn, 1, 6, snappy, slide" + "workspacesOut, 1, 6, snappy, slidefade 80%" + "specialWorkspace, 1, 6, snappy, slidevert" + ]; + }; + + input = { + kb_layout = "de"; + kb_options = "caps:escape"; + follow_mouse = 1; + touchpad = { + natural_scroll = true; + tap-to-click = true; + clickfinger_behavior = true; + }; + }; + + decoration = { + blur = { + enabled = true; + size = 8; + passes = 3; + new_optimizations = true; + ignore_opacity = true; + }; + }; + + general = { + gaps_in = 3; + gaps_out = 5; + border_size = 3; + "col.active_border" = "$primary"; + "col.inactive_border" = "$surface_variant"; + layout = "dwindle"; + }; + + dwindle = { + pseudotile = true; + preserve_split = true; + }; + + bind = [ + "$mainMod, T, exec, $terminal" + "$mainMod, E, exec, $terminal -e $filemanager" # Terminal -e wegen yazi + "$mainMod, Q, killactive" + "$mainMod, V, exec, copyq show" + "$mainMod, D, exec, $applauncher" + "$mainMod, Tab, exec, rofi -show window" + "$mainMod SHIFT, D, exec, bash -c 'FILE=${config.home.homeDirectory}/nixos/templates/bookmarks.txt; sel=$(sed \"s/ :: .*//\" \"$FILE\" | rofi -dmenu -i -p \"Web: \"); [ -z \"$sel\" ] && exit; match=$(grep -F \"$sel :: \" \"$FILE\"); if [ -n \"$match\" ]; then url=\"\${match##* :: }\"; else url=\"$sel\"; fi; if [[ \"$url\" == http* ]] || ([[ \"$url\" != *\" \"* && \"$url\" == *\".\"* ]]); then firefox \"$url\"; else firefox \"https://duckduckgo.com/?q=$url\"; fi'" + "$mainMod, Y, layoutmsg, togglesplit" + "$mainMod, C, exec, hyprpicker -a" + "$mainMod, N, exec, wayscriber -a" + "$mainMod SHIFT, N, exec, wayscriber -a --freeze" + + "$mainMod, G, exec, woomer" + + "$mainMod, F, fullscreen" + "$mainMod, Escape, exec, wlogout" + "$mainMod, Z, togglefloating" + + "$mainMod, H, movefocus, l" + "$mainMod, J, movefocus, d" + "$mainMod, K, movefocus, u" + "$mainMod, L, movefocus, r" + + "$mainMod CTRL, H, swapwindow, l" + "$mainMod CTRL, J, swapwindow, d" + "$mainMod CTRL, K, swapwindow, u" + "$mainMod CTRL, L, swapwindow, r" + + "$mainMod SHIFT, H, movewindow, l" + "$mainMod SHIFT, J, movewindow, d" + "$mainMod SHIFT, K, movewindow, u" + "$mainMod SHIFT, L, movewindow, r" + + "$mainMod, S, togglespecialworkspace, special" + "$mainMod CTRL, S, movetoworkspace, special" + "$mainMod SHIFT, S, movetoworkspace, e+0" + + "$mainMod, left, focusmonitor, l" + "$mainMod, right, focusmonitor, r" + "$mainMod, up, focusmonitor, u" + "$mainMod, down, focusmonitor, d" + + "$mainMod SHIFT, left, movewindow, l" + "$mainMod SHIFT, right, movewindow, r" + "$mainMod SHIFT, up, movewindow, u" + "$mainMod SHIFT, down, movewindow, d" + + # Submap + "$mainMod, R, submap, resize" + + # Screenshot eines Bereichs (Selection) -> Speichern + Clipboard + ", Print, exec, bash -c 'mkdir -p ${config.home.homeDirectory}/Bilder/Bildschirmfotos && FILE=${config.home.homeDirectory}/Bilder/Bildschirmfotos/Screenshot_$(date +%Y%m%d_%H%M%S).png && grim -g \"$(slurp)\" $FILE && wl-copy < $FILE'" + + # Screenshot des gesamten Bildschirms (Full Monitor) -> Speichern + Clipboard + "SHIFT, Print, exec, bash -c 'mkdir -p ${config.home.homeDirectory}/Bilder/Bildschirmfotos && FILE=${config.home.homeDirectory}/Bilder/Bildschirmfotos/Fullscreen_$(date +%Y%m%d_%H%M%S).png && grim $FILE && wl-copy < $FILE'" + ] ++ ( + builtins.concatLists (builtins.genList (x: + let ws = builtins.toString (x + 1); + in [ + "$mainMod, ${ws}, workspace, ${ws}" + "$mainMod CTRL, ${ws}, movetoworkspace, ${ws}" + "$mainMod SHIFT, ${ws}, movetoworkspacesilent, ${ws}" + ] + ) 9) + ); + + binde = [ + # Lautstärke Audio (Sink) + ", XF86AudioRaiseVolume, exec, swayosd-client --output-volume raise" + ", XF86AudioLowerVolume, exec, swayosd-client --output-volume lower" + + # Helligkeit + ", XF86MonBrightnessUp, exec, swayosd-client --brightness raise" + ", XF86MonBrightnessDown, exec, swayosd-client --brightness lower" + ]; + + bindl = [ + # Stummschaltung (Toggle) + ", XF86AudioMute, exec, swayosd-client --output-volume mute-toggle" + ", XF86AudioMicMute, exec, swayosd-client --input-volume mute-toggle" + + # Mediensteuerung + ", XF86AudioPlay, exec, swayosd-client --playerctl play-pause" + ", XF86AudioNext, exec, swayosd-client --playerctl next" + ", XF86AudioPrev, exec, swayosd-client --playerctl previous" + ]; + + bindr = [ + "CAPS, Caps_Lock, exec, swayosd-client --caps-lock" + ]; + + bindm = [ + "$mainMod, mouse:272, movewindow" + "$mainMod, mouse:273, resizewindow" + ]; + + windowrulev2 = [ + "opacity 0.9 0.8, class:^(Alacritty)$" + + "noanim, title:^(woomer)$" + + "noanim, class:^(ueberzugpp_.*)$" + "noinitialfocus, class:^(ueberzugpp_.*)$" + "noblur, class:^(ueberzugpp_.*)$" + "noshadow, class:^(ueberzugpp_.*)$" + "noborder, class:^(ueberzugpp_.*)$" + "float, class:^(ueberzugpp_.*)$" + + "float, class:^(com.github.casperdcl.ripdrag)$" + + "float, size 800 600, center, class:^(org.pulseaudio.pavucontrol)$" + + "float, class:^(waypaper)$" + "size 800 600, class:^(waypaper)$" + "center, class:^(waypaper)$" + + "float, class:^(com.github.hluk.copyq)$" + "center, class:^(com.github.hluk.copyq)$" + "size 800 600, class:^(com.github.hluk.copyq)$" + "opacity 0.9 0.9, class:^(com.github.hluk.copyq)$" + ]; + + layerrule = [ + "blur, rofi" + "ignorealpha 0.1, rofi" + "blur, logout_dialog" + "ignorealpha 0.1, logout_dialog" + "ignorezero, logout_dialog" + "blur, swaync-control-center" + "blur, swaync-notification-window" + "ignorealpha 0.5, swaync-control-center" + "ignorealpha 0.5, swaync-notification-window" + ]; + + exec-once = [ + "sway-audio-idle-inhibit" + "hyprctl dispatch focusmonitor DP-6" + "waybar" + "swaync" + "pgrep copyq || copyq --start-server && copyq hide" + "nextcloud --background" + "${pkgs.kdePackages.polkit-kde-agent-1}/libexec/polkit-kde-authentication-agent-1" + "dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP=Hyprland" + "${pkgs.kdePackages.kwallet-pam}/libexec/pam_kwallet_init" + "wayscriber --daemon" + "waypaper --restore" + ]; + + device = [ + { + name = "wacom-intuos-pro-m-pen"; + output = "DP-6"; + + active_area_size = "224 63"; + active_area_position = "0 38.5"; + + transform = 0; + } + ]; + }; + + # Extra Config + extraConfig = '' + submap = resize + + binde = , l, resizeactive, 30 0 + binde = , h, resizeactive, -30 0 + binde = , j, resizeactive, 0 30 + binde = , k, resizeactive, 0 -30 + + binde = SHIFT, l, resizeactive, -30 0 + binde = SHIFT, h, resizeactive, 30 0 + binde = SHIFT, j, resizeactive, 0 -30 + binde = SHIFT, k, resizeactive, 0 30 + + binde = , plus, resizeactive, 20 20 + binde = , minus, resizeactive, -20 -20 + binde = SHIFT, plus, resizeactive, 0 20 + binde = SHIFT, minus, resizeactive, 0 -20 + + bind = , escape, submap, reset + bind = , catchall, submap, reset + submap = reset + ''; + }; +} diff --git a/home/hyprlock.nix b/home/hyprlock.nix new file mode 100644 index 0000000..d977a9a --- /dev/null +++ b/home/hyprlock.nix @@ -0,0 +1,83 @@ +{ config, pkgs, ... }: + +{ + programs.hyprlock = { + enable = true; + settings = { + source = "~/.config/hypr/hyprlock-colors.conf"; + + general = { + immediate_render = true; + hide_cursor = true; + no_fade_in = false; + }; + + background = [{ + monitor = ""; + path = "${config.home.homeDirectory}/nixos/wallpaper/current_wallpaper"; + color = "$background"; + + blur_passes = 3; + blur_size = 8; + noise = 0.0117; + contrast = 0.8916; + brightness = 0.8172; + vibrancy = 0.1696; + }]; + + input-field = [{ + monitor = ""; + size = "300, 30"; + outline_thickness = 0; + dots_size = 0.25; + dots_spacing = 0.55; + dots_center = true; + + outer_color = "rgba(0, 0, 0, 0)"; + inner_color = "rgba(0, 0, 0, 0.2)"; + font_color = "$foreground"; + + fade_on_empty = false; + placeholder_text = "Enter Password"; + hide_input = false; + + position = "0, -468"; + halign = "center"; + valign = "center"; + }]; + + label = [ + { + monitor = ""; + text = "$TIME"; + color = "$primary"; + font_size = 93; + font_family = "JetBrainsMono Nerd Font Bold"; + position = "0, 310"; + halign = "center"; + valign = "center"; + } + { + monitor = ""; + text = "cmd[update:1000] echo \"$(date +'%A, %B %d')\""; + color = "$foreground"; + font_size = 20; + font_family = "JetBrainsMono Nerd Font"; + position = "0, 405"; + halign = "center"; + valign = "center"; + } + { + monitor = ""; + text = "Nils"; + color = "$foreground"; + font_size = 12; + font_family = "JetBrainsMono Nerd Font Bold"; + position = "0, -407"; + halign = "center"; + valign = "center"; + } + ]; + }; + }; +} diff --git a/home/mime-apps.nix b/home/mime-apps.nix new file mode 100644 index 0000000..d2a9b49 --- /dev/null +++ b/home/mime-apps.nix @@ -0,0 +1,65 @@ +{ ... }: { + xdg.mimeApps = { + enable = true; + defaultApplications = { + # --- Text --- + "text/plain" = [ "Helix.desktop" "org.kde.kwrite.desktop" ]; + "text/markdown" = [ "Helix.desktop" "org.kde.kwrite.desktop" ]; + "text/rust" = [ "Helix.desktop" "org.kde.kwrite.desktop" ]; + "application/json" = [ "Helix.desktop" "org.kde.kwrite.desktop" ]; + "application/x-yaml" = [ "Helix.desktop" "org.kde.kwrite.desktop" ]; + "application/x-docbook+xml" = [ "Helix.desktop" "org.kde.kwrite.desktop" ]; + "application/x-zerosize" = [ "Helix.desktop" "org.kde.kwrite.desktop" ]; + "text/x-cmake" = [ "Helix.desktop" "org.kde.kwrite.desktop" ]; + "text/x-objcsrc" = [ "Helix.desktop" "org.kde.kwrite.desktop" ]; + "text/x-typst" = [ "Helix.desktop" "org.kde.kwrite.desktop" ]; + + # --- Audio --- + "audio/mpeg" = [ "org.kde.elisa.desktop" ]; + "audio/x-wav" = [ "org.kde.elisa.desktop" ]; + "audio/x-vorbis+ogg" = [ "org.kde.elisa.desktop" ]; + "audio/flac" = [ "org.kde.elisa.desktop" ]; + "audio/mp4" = [ "org.kde.elisa.desktop" ]; + "audio/aac" = [ "org.kde.elisa.desktop" ]; + "audio/ogg" = [ "org.kde.elisa.desktop" ]; + + # --- Video --- + "video/mp4" = [ "org.kde.haruna.desktop" ]; + "video/x-matroska" = [ "org.kde.haruna.desktop" ]; + "video/webm" = [ "org.kde.haruna.desktop" ]; + "video/quicktime" = [ "org.kde.haruna.desktop" ]; + "video/x-msvideo" = [ "org.kde.haruna.desktop" ]; + "video/mpeg" = [ "org.kde.haruna.desktop" ]; + "video/x-flv" = [ "org.kde.haruna.desktop" ]; + "application/x-matroska" = [ "org.kde.haruna.desktop" ]; + + # --- Dokumente & Archive --- + "application/pdf" = [ "org.pwmt.zathura.desktop" "org.kde.okular.desktop" ]; + "application/zip" = [ "org.kde.ark.desktop" ]; + "application/x-tar" = [ "org.kde.ark.desktop" ]; + "application/x-compressed-tar" = [ "org.kde.ark.desktop" ]; + "image/svg+xml" = [ "org.kde.gwenview.desktop" "org.inkscape.Inkscape.desktop" ]; + "image/png" = [ "org.kde.gwenview.desktop" ]; + "image/jpeg" = [ "org.kde.gwenview.desktop" ]; + + # --- Ordner --- + "inode/directory" = [ "org.kde.dolphin.desktop" ]; + + # --- Mail & Kalender --- + "x-scheme-handler/mailto" = [ "thunderbird.desktop" ]; + "message/rfc822" = [ "thunderbird.desktop" ]; + "text/calendar" = [ "thunderbird.desktop" ]; + "x-scheme-handler/webcal" = [ "thunderbird.desktop" ]; + "x-scheme-handler/webcals" = [ "thunderbird.desktop" ]; + "application/x-extension-ics" = [ "thunderbird.desktop" ]; + + # --- Messenger --- + "x-scheme-handler/sgnl" = [ "signal.desktop" ]; + "x-scheme-handler/signalcaptcha" = [ "signal.desktop" ]; + + # --- Terminal --- + "x-scheme-handler/terminal" = [ "Alacritty.desktop" ]; + "application/x-terminal-emulator" = [ "Alacritty.desktop" ]; + }; + }; +} diff --git a/home/packages.nix b/home/packages.nix new file mode 100644 index 0000000..0e2a414 --- /dev/null +++ b/home/packages.nix @@ -0,0 +1,101 @@ +{ pkgs, inputs, lib, ... }: { + + xdg.configFile."copyq/copyq.conf".text = lib.mkAfter '' + [Options] + disable_tray=true + minimize_on_close=true + hide_main_window_startup=true + close_on_unfocus=true + ''; + + programs.btop = { + enable = true; + settings = { + color_theme = "matugen.theme"; + theme_background = false; + preset = 0; + vim_keys = true; + }; + }; + + programs.firefox = { + enable = true; + nativeMessagingHosts = [ + pkgs.kdePackages.plasma-browser-integration + ]; + }; + + services.wlsunset = { + enable = true; + latitude = "49.32"; + longitude = "8.43"; + + temperature = { + day = 6500; + night = 4000; + }; + gamma = "1.0"; + }; + + home.packages = with pkgs; [ + inputs.matugen.packages.${pkgs.stdenv.hostPlatform.system}.default + + hypridle + swww + waypaper + sway-audio-idle-inhibit + libnotify + ripdrag + woomer + hyprpicker + wayscriber + wl-clipboard + avizo + mediainfo + exiftool + deezer-enhanced + + kdePackages.elisa + kdePackages.dolphin + kdePackages.kate + kdePackages.spectacle + kdePackages.ark + kdePackages.konsole + kdePackages.francis + + kdePackages.gwenview + kdePackages.breeze-icons + + ffmpeg + p7zip + jq + poppler-utils + zoxide + resvg + imagemagick + + ueberzugpp + chafa + + # Multimedia + bluetui obs-studio haruna discord signal-desktop spotify pavucontrol playerctl + + # Games + prismlauncher + + # Office & Utilities + anki libreoffice-qt6 kdePackages.okular kdePackages.svgpart krusader + keepassxc bitwarden-desktop filezilla zotero nextcloud-client + inkscape pympress xournalpp obsidian nicotine-plus thunderbird masterpdfeditor + pandoc qalculate-qt + kdePackages.skanlite kdePackages.kwave kdePackages.kbackup kdePackages.kget + kdePackages.kamoso kdePackages.filelight kdePackages.isoimagewriter + kdePackages.kcalc kdePackages.kompare kdePackages.kolourpaint kdePackages.kdenlive + + # Grafik & Code + krita + + # Tools + fastfetch fzf ripgrep fd unzip grim slurp cava + ]; +} diff --git a/home/rofi.nix b/home/rofi.nix new file mode 100644 index 0000000..e151eef --- /dev/null +++ b/home/rofi.nix @@ -0,0 +1,113 @@ +{ config, pkgs, ... }: + +{ + programs.rofi = { + enable = true; + package = pkgs.rofi; + extraConfig = { + modes = "window,run,ssh,drun"; + show-icons = true; + drun-display-format = "{name}"; + display-drun = "Apps:"; + terminal = "alacritty"; + }; + theme = "${config.home.homeDirectory}/.config/rofi/main-theme.rasi"; + }; + xdg.configFile."rofi/main-theme.rasi".text = '' + /* Importiert die von Matugen generierten Farben */ + @import "${config.home.homeDirectory}/.config/rofi/matugen-colors.rasi" + + configuration { + wayland-layer: "overlay"; + //display-drun: ""; + //display-run: ""; + //display-window: ""; + //display-ssh: ""; + show-icons: true; + } + + * { + background-color: @bg0; + border-color: @fg0; + text-color: @fg0; + font: "JetBrainsMono Nerd Font 11"; + } + + window { + width: 100% ; + padding: 4px ; + anchor: north; + location: north; + y-offset: -30px; + children: [ "horibox" ]; + background-color: @bg0; + } + + horibox { + orientation: horizontal; + children: [ "container-left", "container-right" ]; + background-color: transparent; + } + + container-left { + orientation: horizontal; + expand: true; + children: [ "dummy", "inputbar" ]; + background-color: transparent; + } + + container-right { + orientation: horizontal; + expand: true; + children: [ "listview", "dummy" ]; + background-color: transparent; + } + + listview { + layout: horizontal; + horizontal-align: 0.5; + spacing: 15px ; + lines: 100; + background-color: transparent; + } + + entry { + enabled: true; + width: 5em ; + expand: false; + background-color: transparent; + text-color: @fg0; + placeholder: "Suche..."; + placeholder-color: @fg1; + } + + prompt { + background-color: transparent; + text-color: @blue; + margin: 0 10px 0 0; + } + + element { + padding: 0px 5px; + border-radius: 4px; + background-color: transparent; + text-color: @fg0; + } + + element selected { + background-color: @bg2; + text-color: @fg0; + } + + element-text { + background-color: transparent; + text-color: inherit; + } + + element-icon { + background-color: transparent; + text-color: inherit; + size: 1.0em; + } + ''; +} diff --git a/home/rofi_alternative.nix b/home/rofi_alternative.nix new file mode 100644 index 0000000..44a54e5 --- /dev/null +++ b/home/rofi_alternative.nix @@ -0,0 +1,73 @@ +{ config, pkgs, ... }: + +{ + programs.rofi = { + enable = true; + package = pkgs.rofi; + extraConfig = { + modes = "window,run,ssh,drun"; + show-icons = true; + display-drun = "Apps:"; + terminal = "alacritty"; + }; + theme = "${config.home.homeDirectory}/.config/rofi/main-theme.rasi"; + }; + + xdg.configFile."rofi/main-theme.rasi".text = '' + @import "${config.home.homeDirectory}/.config/rofi/matugen-colors.rasi" + + * { + font: "JetBrainsMono Nerd Font 12"; + background-color: transparent; + text-color: @fg0; + margin: 0px; + padding: 0px; + spacing: 0px; + } + + window { + location: center; + width: 680; + border-radius: 20px; + border: 2px; + border-color: @blue; /* Hier wird jetzt die Matugen-Farbe genutzt */ + background-color: @bg0; + } + + mainbox { padding: 12px; } + + inputbar { + background-color: @bg1; + border-color: @bg3; + border-radius: 12px; + border: 2px; + padding: 8px 16px; + spacing: 8px; + children: [ prompt, entry ]; + } + + prompt { text-color: @blue; } + entry { placeholder: "Search..."; placeholder-color: @fg2; text-color: @fg0; } + + listview { + margin: 12px 0 0; + lines: 8; + columns: 1; + fixed-height: false; + } + + element { + padding: 8px 16px; + spacing: 12px; + border-radius: 10px; + } + + element selected normal { + background-color: @bg2; + text-color: @blue; + } + + element-icon { size: 1.5em; } + element-text { text-color: inherit; vertical-align: 0.5; } + ''; +} diff --git a/home/shell.nix b/home/shell.nix new file mode 100644 index 0000000..1a150e9 --- /dev/null +++ b/home/shell.nix @@ -0,0 +1,77 @@ +{ pkgs, ... }: { + + programs.fish = { + enable = true; + shellAbbrs = { + # nix develop -c $SHELL + nd = "nix develop -c fish"; + lg = "lazygit"; + }; + + interactiveShellInit = '' + set fish_greeting + + set -g fish_color_param brcyan + set -gx LG_CONFIG_FILE "$HOME/.config/lazygit/config.yml,$HOME/.config/lazygit/theme.yml" + ''; + }; + + programs.zellij = { + enable = true; + enableFishIntegration = false; + + settings = { + default_shell = "fish"; + theme = "matugen"; + default_layout = "compact"; + show_startup_tips = false; + + + keybinds = { + normal = { + "bind \"Alt h\"" = { MoveFocus = "Left"; }; + "bind \"Alt l\"" = { MoveFocus = "Right"; }; + "bind \"Alt j\"" = { MoveFocus = "Down"; }; + "bind \"Alt k\"" = { MoveFocus = "Up"; }; + }; + + move = { + "bind \"h\"" = { MovePane = "Left"; }; + "bind \"l\"" = { MovePane = "Right"; }; + "bind \"j\"" = { MovePane = "Down"; }; + "bind \"k\"" = { MovePane = "Up"; }; + }; + + resize = { + "bind \"h\"" = { Resize = "Increase Left"; }; + "bind \"l\"" = { Resize = "Increase Right"; }; + "bind \"j\"" = { Resize = "Increase Down"; }; + "bind \"k\"" = { Resize = "Increase Up"; }; + }; + }; + }; + }; + + programs.zoxide = { + enable = true; + enableFishIntegration = true; + }; + + programs.starship = { + enable = true; + }; + + programs.git = { + enable = true; + settings.user = { name = "Nils Walther"; email = "mail@nils-walther.de"; }; + }; + + programs.yt-dlp = { + enable = true; + }; + + programs.lazygit = { + enable = true; + }; + +} diff --git a/home/swaync.nix b/home/swaync.nix new file mode 100644 index 0000000..3176c70 --- /dev/null +++ b/home/swaync.nix @@ -0,0 +1,37 @@ +{ config, pkgs, ... }: + +{ + services.swaync = { + enable = true; + settings = { + positionX = "right"; + positionY = "top"; + control-center-margin-top = 10; + control-center-margin-right = 10; + fit-to-screen = false; + }; + + style = '' + @import "${config.home.homeDirectory}/.config/swaync/colors.css"; + + * { font-family: "JetBrainsMono Nerd Font"; } + + .control-center { + background: @background; + border: 2px solid @primary; + border-radius: 0px; + } + + .notification { + background: @surface_container; + border-radius: 0px; + margin: 6px; + border: 1px solid @secondary; + } + + .summary { color: @primary; font-weight: bold; } + .body { color: @foreground; } + .critical { background: @urgent; color: @background; } + ''; + }; +} diff --git a/home/swayosd.nix b/home/swayosd.nix new file mode 100644 index 0000000..573b0c2 --- /dev/null +++ b/home/swayosd.nix @@ -0,0 +1,8 @@ +{ pkgs, ... }: + +{ + services.swayosd = { + enable = true; + topMargin = 0.5; + }; +} diff --git a/home/swww.nix b/home/swww.nix new file mode 100644 index 0000000..6233b18 --- /dev/null +++ b/home/swww.nix @@ -0,0 +1,24 @@ +{ pkgs, config, ... }: + +{ + home.packages = [ + pkgs.swww + ]; + + systemd.user.services.swww = { + Unit = { + Description = "swww wallpaper daemon"; + After = [ "graphical-session.target" ]; + Partof = [ "graphical-session.target" ]; + }; + + Service = { + ExecStart = "${pkgs.swww}/bin/swww-daemon"; + Restart = "on-failure"; + }; + + Install = { + WantedBy = [ "graphical-session.target" ]; + }; + }; +} diff --git a/home/theming.nix b/home/theming.nix new file mode 100644 index 0000000..d4bc7f1 --- /dev/null +++ b/home/theming.nix @@ -0,0 +1,106 @@ +{ config, pkgs, inputs, lib, ... }: { + + home.pointerCursor = { + name = "WhiteSur-cursors"; + package = pkgs.whitesur-cursors; + size = 30; + gtk.enable = true; + }; + + qt = { enable = true; platformTheme.name = "kde"; style.name = "breeze"; }; + + xdg.configFile."matugen/config.toml".text = '' + [config] + reload_apps = true + + [templates.alacritty] + input_path = "${config.home.homeDirectory}/nixos/templates/alacritty.toml" + output_path = "${config.home.homeDirectory}/.config/alacritty/colors.toml" + + [templates.btop] + input_path = "${config.home.homeDirectory}/nixos/templates/btop.theme" + output_path = "${config.home.homeDirectory}/.config/btop/themes/matugen.theme" + + [templates.gtk] + input_path = "${config.home.homeDirectory}/nixos/templates/colors-gtk.css" + output_path = "${config.home.homeDirectory}/.config/matugen/colors.css" + + [templates.hyprland] + input_path = "${config.home.homeDirectory}/nixos/templates/hyprland-colors.conf" + output_path = "${config.home.homeDirectory}/.config/hypr/colors.conf" + + [templates.hyprlock] + input_path = "${config.home.homeDirectory}/nixos/templates/hyprlock-colors.conf" + output_path = "${config.home.homeDirectory}/.config/hypr/hyprlock-colors.conf" + + [templates.rofi] + input_path = "${config.home.homeDirectory}/nixos/templates/rofi.rasi" + output_path = "${config.home.homeDirectory}/.config/rofi/matugen-colors.rasi" + + [templates.fish] + input_path = "${config.home.homeDirectory}/nixos/templates/fish-colors.fish" + output_path = "${config.home.homeDirectory}/.config/fish/conf.d/matugen.fish" + + [templates.starship] + input_path = "${config.home.homeDirectory}/nixos/templates/starship.toml" + output_path = "${config.home.homeDirectory}/.config/starship.toml" + + [templates.swaync] + input_path = "${config.home.homeDirectory}/nixos/templates/swaync-colors.css" + output_path = "${config.home.homeDirectory}/.config/swaync/colors.css" + + [templates.waybar] + input_path = "${config.home.homeDirectory}/nixos/templates/colors-gtk.css" + output_path = "${config.home.homeDirectory}/.config/matugen/colors.css" + + [templates.wlogout] + input_path = "${config.home.homeDirectory}/nixos/templates/wlogout-colors.css" + output_path = "${config.home.homeDirectory}/.config/wlogout/colors.css" + + [templates.lazygit] + input_path = "${config.home.homeDirectory}/nixos/templates/lazygit_theme.yml" + output_path = "${config.home.homeDirectory}/.config/lazygit/theme.yml" + + [templates.zathura] + input_path = "${config.home.homeDirectory}/nixos/templates/zathura" + output_path = "${config.home.homeDirectory}/.config/zathura/zathurarc-colors" + + [templates.yazi] + input_path = "${config.home.homeDirectory}/nixos/templates/yazi-theme.toml" + output_path = "${config.home.homeDirectory}/.config/yazi/theme.toml" + + [templates.zellij] + input_path = "${config.home.homeDirectory}/nixos/templates/zellij.kdl" + output_path = "${config.home.homeDirectory}/.config/zellij/themes/matugen.kdl" + ''; + + home.activation.regenerateMatugen = lib.hm.dag.entryAfter ["writeBoundary"] '' + MATUGEN="${inputs.matugen.packages.${pkgs.stdenv.hostPlatform.system}.default}/bin/matugen" + WALLPAPER="${config.home.homeDirectory}/nixos/wallpaper/current_wallpaper" + + if [ -f "$WALLPAPER" ]; then + echo "Matugen: Generiere Farben aus $WALLPAPER..." + + mkdir -p ${config.home.homeDirectory}/.config/alacritty + mkdir -p ${config.home.homeDirectory}/.config/btop/themes + mkdir -p ${config.home.homeDirectory}/.config/lazygit + mkdir -p ${config.home.homeDirectory}/.config/rofi + mkdir -p ${config.home.homeDirectory}/.config/swaync + mkdir -p ${config.home.homeDirectory}/.config/wlogout + mkdir -p ${config.home.homeDirectory}/.config/matugen + mkdir -p ${config.home.homeDirectory}/.config/hypr + mkdir -p ${config.home.homeDirectory}/.config/fish/conf.d + mkdir -p ${config.home.homeDirectory}/.config/wob + mkdir -p ${config.home.homeDirectory}/.config/yazi + mkdir -p ${config.home.homeDirectory}/.config/zathura + mkdir -p ${config.home.homeDirectory}/.config/zellij/themes + + + $MATUGEN image "$WALLPAPER" --type scheme-vibrant + + ${pkgs.procps}/bin/pkill -USR2 waybar || true + else + echo "Matugen: Wallpaper nicht gefunden ($WALLPAPER)" + fi + ''; +} diff --git a/home/waybar.nix b/home/waybar.nix new file mode 100644 index 0000000..3b4d9b9 --- /dev/null +++ b/home/waybar.nix @@ -0,0 +1,324 @@ +{ config, pkgs, lib, ... }: + +{ + programs.waybar = { + enable = true; + + settings = { + mainBar = { + layer = "top"; + position = "top"; + height = 30; + output = [ "eDP-1" "DP-5" "DP-6" ]; + + modules-left = [ "custom/logo" "hyprland/workspaces" "tray" ]; + modules-center = [ "clock" ]; + modules-right = [ "network" "idle_inhibitor" "bluetooth" "battery" "custom/notification" ]; + + "custom/logo" = { + format = ""; + tooltip = false; + on-click = "wlogout"; + on-click-right = "alacritty -e fish -C fastfetch"; + }; + + "hyprland/workspaces" = { + disable-scroll = true; + all-outputs = true; + format = "{name}"; + }; + + "clock" = { + format = "{:%a %d/%m %H:%M}"; + tooltip-format = "{:%Y-%m-%d}"; + }; + + "idle_inhibitor" = { + format = "{icon}"; + format-icons = { + activated = " "; + deactivated = " "; + }; + tooltip = true; + tooltip-format-activated = "Inhibitor Aktiv"; + tooltip-format-deactivated = "Idle Aktiv"; + }; + + "custom/audio_idle_inhibitor" = { + format = "{icon}"; + exec = "sway-audio-idle-inhibit --dry-print-both-waybar | sed -u 's/\"alt\":\"output-input\"/&,\"tooltip\":\"Audio \\& Mikrofon aktiv\"/; s/\"alt\":\"output\"/&,\"tooltip\":\"Audio spielt\"/; s/\"alt\":\"input\"/&,\"tooltip\":\"Mikrofon wird benutzt\"/; s/\"alt\":\"none\"/&,\"tooltip\":\"Keine Aktivität\"/'"; + "exec-if" = "which sway-audio-idle-inhibit"; + "return-type" = "json"; + tooltip = true; + format-icons = { + output = " "; + input = ""; + "output-input" = " "; + none = ""; + }; + }; + + "tray" = { + icon-size = 18; + spacing = 10; + }; + + "network" = { + format-wifi = " {essid}"; + format-ethernet = " {ifname}"; + format-linked = "󰌘{ipaddr}"; + format = "{essid}"; + format-disconnected = "󰤮 no wifi"; + on-click = "${pkgs.alacritty}/bin/alacritty -e ${pkgs.networkmanager}/bin/nmtui"; + on-click-right = "nmcli radio wifi $(nmcli radio wifi | grep -q 'enabled' && echo off || echo on)"; + tooltip-format = " {bandwidthUpBits}  {bandwidthDownBits}\n{ifname}\n{ipaddr}/{cidr}\n"; + tooltip-format-wifi = " {essid} {frequency}MHz\nStrength: {signalStrength}% ({signaldBm}dBm)\nIP: {ipaddr}/{cidr}\n {bandwidthUpBits}  {bandwidthDownBits}"; + interval = 10; + }; + + "backlight" = { + device = "intel_backlight"; + format = "{icon}"; + format-alt = "{percent}%"; + format-alt-click = "click-right"; + format-icons = ["" "" "" "" "" "" "" "" ""]; + tooltip-format = " Helligkeit: {percent}%"; + on-scroll-down = "brightnessctl s 5%-"; + on-scroll-up = "brightnessctl s +5%"; + }; + + "bluetooth" = { + format = ""; + format-disabled = "󰂲"; + format-connected = "󰂱{device_alias}"; + format-connected-battery = "󰂱{device_alias} {device_battery_percentage}%"; + tooltip-format = "{controller_alias}\t{controller_address}\n\n{num_connections} verbunden\n\n{device_enumerate}"; + tooltip-format-enumerate-connected = "{device_alias}\t{device_address}"; + tooltip-format-enumerate-connected-battery = "{device_alias}\t{device_address}\t{device_battery_percentage}%"; + + on-click = "alacritty -e bluetui"; + on-click-right = "rfkill toggle bluetooth"; + }; + + "pulseaudio" = { + format = "{icon} {volume}%"; + format-bluetooth = "{icon} {volume}%"; + format-muted = "󰖁"; + format-icons = { + headphone = ""; + hands-free = ""; + headset = ""; + phone = ""; + portable = ""; + car = ""; + default = ["" "" ""]; + }; + on-click = "pavucontrol"; + on-click-right = "pactl set-sink-mute @DEFAULT_SINK@ toggle"; + tooltip-format = "Ausgabelautstärke: {source_volume}% | {desc}"; + }; + + "pulseaudio#microphone" = { + format = "{format_source}"; + format-source = " {volume}%"; + format-source-muted = ""; + on-click = "pavucontrol"; + on-click-right = "wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"; + on-scroll-up = "wpctl set-volume @DEFAULT_AUDIO_SOURCE@ 5%+"; + on-scroll-down = "wpctl set-volume @DEFAULT_AUDIO_SOURCE@ 5%-"; + tooltip-format = "Eingabelautstärke: {source_volume}% | {source_desc}"; + scroll-step = 5; + }; + + "battery" = { + interval = 5; + format = "{icon}"; + format-alt = "{capacity}%"; + format-alt-click = "click-right"; + format-icons = [ "" "" "" "" "" ]; + format-charging = "{icon}"; + format-plugged = "{icon}"; + tooltip-format = "Akkustand: {capacity}% - {timeTo} - {power}W "; + on-click = "alacritty -e btop"; + states = { + full = 100; + great = 97; + good = 85; + ok = 50; + warning = 30; + low = 20; + critical = 10; + }; + }; + + "custom/notification" = { + tooltip = false; + format = "{icon}"; + format-icons = { + notification = ""; + none = ""; + dnd-notification = ""; + dnd-none = ""; + }; + return-type = "json"; + exec = "swaync-client -swb"; + on-click = "swaync-client -t -sw"; + on-click-right = "swaync-client -d -sw"; + escape = true; + }; + }; + }; + + style = lib.replaceStrings ["#workspaces button.focused"] ["#workspaces button.active"] '' + @import "${config.home.homeDirectory}/.config/matugen/colors.css"; + + * { + border: none; + border-radius: 0; + padding: 0; + margin: 0; + font-size: 13px; + font-family: "JetBrainsMono Nerd Font", "NotoSans Nerd Font Mono"; + font-weight: bold; + } + + tooltip { + background: @background; + color: @foreground; + border: 1px solid @primary; + border-radius: 10px; + } + + tooltip label { + color: @foreground; + padding: 5px; + } + + window#waybar { + background: @background; + color: @foreground; + border-bottom: 2px solid @primary; + } + + #custom-logo { + font-size: 20px; + margin: 0 15px; + color: @primary; + } + + #workspaces button { + padding: 0 0px; + margin-right: 4px; + color: @foreground; + background: transparent; + } + + #workspaces button:hover { + background: @surface_container_high; + color: @foreground; + border-bottom: 2px solid @primary; + } + + #workspaces button.active { + background: @surface_container_high; + color: @primary; + border-bottom: 2px solid @primary; + } + + #workspaces button.urgent { + background-color: @urgent; + color: @background; + } + + #mode { + background-color: @secondary; + color: @background; + padding: 0 5px; + } + + #network { + padding-right: 5px; + padding-left: 5px; + } + + #clock, #language, #custom-notification, #backlight, #pulseaudio, #bluetooth, #tray { + margin: 0 5px; + color: @foreground; + } + + #custom-notification { + margin-right: 15px; + margin-left: 5px; + color: @foreground; + } + + #custom-audio_idle_inhibitor { + margin-left: 5px; + margin-right: 5px; + color: @foreground; + } + + #idle_inhibitor { + margin-right: 5px; + margin-left: 7px; + color: @foreground; + font-size: 13px; + } + + #idle_inhibitor.activated { + animation: blink-icon 2s infinite alternate; + color: @primary; + } + + @keyframes blink-icon { + from { color: @primary; } + to { color: transparent; } + } + + #battery { + margin-top: 0; + margin-bottom: 0; + margin-left: 5px; + margin-right: 12px; + color: @foreground; + } + + #battery.charging, #battery.plugged { + margin: 0 5px; + color: @foreground; + } + + #battery.ok:not(.charging) { + animation: blink-icon 3s infinite alternate; + } + + @keyframes blink-icon-yellow { + from { color: yellow; } + to { color: transparent; } + } + + #battery.warning:not(.charging) { + animation: blink-icon-yellow 1.5s infinite alternate; + } + + @keyframes blink-icon-orange { + from { color: orange; } + to { color: transparent; } + } + + #battery.low:not(.charging) { + color: orange; + animation: blink-icon-orange 0.8s infinite alternate; + } + + @keyframes blink-icon-red { + from { color: red; } + to { color: transparent; } + } + + #battery.critical:not(.charging) { + animation: blink-icon-red 0.3s infinite alternate; + } + ''; + }; +} diff --git a/home/waypaper.nix b/home/waypaper.nix new file mode 100644 index 0000000..23a3274 --- /dev/null +++ b/home/waypaper.nix @@ -0,0 +1,35 @@ +{ pkgs, lib, config, ... }: + +{ + home.packages = [ pkgs.waypaper ]; + + home.activation.configureWaypaper = lib.hm.dag.entryAfter ["writeBoundary"] '' + CONFIG_FILE="${config.home.homeDirectory}/.config/waypaper/config.ini" + + if [ ! -f "$CONFIG_FILE" ]; then + echo "Erstelle Standard-Waypaper-Konfiguration..." + mkdir -p "$(dirname "$CONFIG_FILE")" + + cat > "$CONFIG_FILE" <" ]; + run = '' + shell -- ripdrag --no-click --and-exit --icon-size 64 --target --all "$@" | while read -r filepath; do + cp -nR "$filepath" . + done + ''; + desc = "Drag-n-drop (Copy No-Clobber)"; + } + { + on = [ "" ]; + run = '' + shell -- ripdrag --no-click --and-exit --icon-size 64 --target --all "$@" | while read -r filepath; do + cp -fR "$filepath" . + done + ''; + desc = "Drag-n-drop (Force Overwrite)"; + } + { + on = [ "i" ]; + run = '' + shell --block --confirm ' + clear + file="$1" + mime=$(file --mime-type -b "$file") + + echo "==================================================" + echo " EIGENSCHAFTEN: $(basename "$file")" + echo "==================================================" + + # Basis-Infos + printf "%-18s %s\n" "Typ:" "$mime" + printf "%-18s %s\n" "Adresse:" "$(realpath "$file")" + printf "%-18s %s (%s Bytes)\n" "Größe:" "$(du -h "$file" | cut -f1)" "$(stat -c %s "$file")" + + echo "--------------------------------------------------" + echo " ZEITSTEMPEL" + printf "%-18s %s\n" "Geändert:" "$(stat -c %y "$file" | cut -d. -f1)" + printf "%-18s %s\n" "Letzter Zugriff:" "$(stat -c %x "$file" | cut -d. -f1)" + + echo "--------------------------------------------------" + echo " DETAILS" + + # --- PDF SEKTION --- + if [[ "$mime" == "application/pdf" ]]; then + # Nutzt pdfinfo aus poppler_utils + pdfinfo "$file" | grep -E "Pages:|PDF version:|Title:|Author:|Page size:" | while read -r line; do + label=$(echo "$line" | cut -d: -f1) + value=$(echo "$line" | cut -d: -f2- | xargs) + printf "%-18s %s\n" "$label:" "$value" + done + + # --- BILD SEKTION --- + elif [[ "$mime" == image/* ]]; then + # Nutzt identify aus imagemagick + dimensions=$(identify -format "%wx%h" "$file") + printf "%-18s %s Pixel\n" "Auflösung:" "$dimensions" + printf "%-18s %s\n" "Farbraum:" "$(identify -format "%[colorspace]" "$file")" + + # --- AUDIO/VIDEO SEKTION --- + elif [[ "$mime" == audio/* || "$mime" == video/* ]]; then + # Nutzt mediainfo für Bitrate und Dauer + mediainfo --Inform="General;%-18.18Name: %Format%\n%-18.18Name: %Duration/String3%\n%-18.18Name: %OverallBitRate/String%" "$file" + if [[ "$mime" == video/* ]]; then + mediainfo --Inform="Video;%-18.18Name: %Width%x%Height% Pixel" "$file" + fi + fi + + echo "==================================================" + read -p "Drücke Enter zum Schließen..." _ + ' + ''; + desc = "Detaillierte Eigenschaften (PDF, Media, Image)"; + } + ]; + }; + + settings = { + mgr = { + show_hidden = true; + sort_by = "natural"; + sort_sensitive = true; + sort_reverse = false; + sort_dir_first = true; + linemode = "none"; + show_symlink = true; + ratio = [ 1 3 4 ]; + layout_transition = "none"; + }; + + sort_by = "natural"; + sort_sensitive = true; + sort_reverse = false; + sort_dir_first = true; + linemode = "none"; + show_hidden = true; + show_symlink = true; + + preview = { + image_filter = "lanczos3"; + image_quality = 90; + tab_size = 1; + max_width = 600; + max_height = 900; + cache_dir = ""; + ueberzug_scale = 1; + ueberzug_offset = [ + 0 + 0 + 0 + 0 + ]; + }; + opener = { + play = [ + { run = ''haruna "$@"''; orphan = true; desc = "Play"; } + ]; + edit = [ + { run = ''$EDITOR "$@"''; block = true; desc = "Edit"; } + ]; + view = [ + { run = ''gwenview "$@"''; orphan = true; desc = "Gwenview"; } + ]; + pdf = [ + { run = ''zathura "$@"''; orphan = true; desc = "Zathura"; } + ]; + }; + + open = { + rules = [ + { mime = "image/*"; use = "view"; } + { name = "*.svg"; use = "view"; } + + { mime = "application/pdf"; use = "pdf"; } + + { mime = "video/*"; use = "play"; } + { mime = "audio/*"; use = "play"; } + + { mime = "text/*"; use = "edit"; } + { mime = "application/json"; use = "edit"; } + ]; + }; + }; + }; +} diff --git a/home/zathura.nix b/home/zathura.nix new file mode 100644 index 0000000..af6969e --- /dev/null +++ b/home/zathura.nix @@ -0,0 +1,13 @@ +{ pkgs, ... }: { + programs.zathura = { + enable = true; + options = { + selection-clipboard = "clipboard"; + adjust-open = "best-fit"; + page-h-padding = 10; + page-v-padding = 10; + recolor = true; + }; + extraConfig = "include zathurarc-colors"; + }; +} diff --git a/icons/hibernate.png b/icons/hibernate.png new file mode 100644 index 0000000..0aeef97 Binary files /dev/null and b/icons/hibernate.png differ diff --git a/icons/lock.png b/icons/lock.png new file mode 100644 index 0000000..9e793e3 Binary files /dev/null and b/icons/lock.png differ diff --git a/icons/logout.png b/icons/logout.png new file mode 100644 index 0000000..4cd36cd Binary files /dev/null and b/icons/logout.png differ diff --git a/icons/reboot.png b/icons/reboot.png new file mode 100644 index 0000000..91daed8 Binary files /dev/null and b/icons/reboot.png differ diff --git a/icons/shutdown.png b/icons/shutdown.png new file mode 100644 index 0000000..024d6f3 Binary files /dev/null and b/icons/shutdown.png differ diff --git a/icons/suspend.png b/icons/suspend.png new file mode 100644 index 0000000..7074d96 Binary files /dev/null and b/icons/suspend.png differ diff --git a/modules/boot.nix b/modules/boot.nix new file mode 100644 index 0000000..e5b247a --- /dev/null +++ b/modules/boot.nix @@ -0,0 +1,46 @@ +{ pkgs, ... }: + +{ + boot = { + # --- Bootloader Einstellungen --- + loader = { + systemd-boot = { + enable = true; + configurationLimit = 5; + }; + efi.canTouchEfiVariables = true; + timeout = 5; + }; + + # --- Kernel & Dateisysteme --- + kernelPackages = pkgs.linuxPackages_latest; + supportedFilesystems = [ "exfat" ]; + + #initrd.kernelModules = [ "nvidia" "nvidia_drm" ]; + + kernelParams = [ + "nvidia-drm.modeset=1" + "quiet" + "splash" + "boot.shell_on_fail" + "loglevel=3" + "rd.systemd.show_status=false" + "rd.udev.log_level=3" + "udev.log_priority=3" + ]; + + # --- Initrd & Plymouth --- + initrd.compressor = "zstd"; + initrd.verbose = false; + consoleLogLevel = 0; + + plymouth = { + enable = true; + theme = "mac-style"; + themePackages = [ pkgs.mac-style-plymouth ]; + }; + + # --- Hardware-Modprobe --- + extraModprobeConfig = ''options bluetooth disable_ertm=1''; + }; +} diff --git a/modules/desktop.nix b/modules/desktop.nix new file mode 100644 index 0000000..b3ae380 --- /dev/null +++ b/modules/desktop.nix @@ -0,0 +1,32 @@ +{ pkgs, ... }: + +{ + services.desktopManager.plasma6.enable = true; + programs.hyprland.enable = true; + security.polkit.enable = true; + + services.displayManager.sddm = { + enable = true; + wayland.enable = true; + theme = "breeze"; + settings = { + Theme = { + CursorTheme = "WhiteSur-cursors"; + CursorSize = 30; + }; + }; + }; + + security.pam.services.hyprland.enableKwallet = true; + security.pam.services.sddm.enableKwallet = true; + + services.pipewire = { + enable = true; + alsa.enable = true; + pulse.enable = true; + }; + security.rtkit.enable = true; + + services.printing.enable = true; + programs.kdeconnect.enable = true; +} diff --git a/modules/hibernation.nix b/modules/hibernation.nix new file mode 100644 index 0000000..40081ad --- /dev/null +++ b/modules/hibernation.nix @@ -0,0 +1,28 @@ +# https://md.timvandenboom.eth64.de/s/Nils/p/hibernate-TDmskjM02R + +{ config, pkgs, ... }: + +{ + swapDevices = [ { + device = "/var/lib/swapfile"; + size = 34 * 1024; + } ]; + + boot.resumeDevice = "/dev/disk/by-uuid/6a9e58be-37d9-4fee-8b67-81a78d80c016"; + boot.kernelParams = [ + "resume=UUID=6a9e58be-37d9-4fee-8b67-81a78d80c016" + "resume_offset=167837696" + ]; + + powerManagement.enable = true; + + services.logind.settings.Login = { + HandleLidSwitch = "suspend-then-hibernate"; + HandlePowerKey = "poweroff"; + }; + + systemd.sleep.extraConfig = '' + [Sleep] + HibernateDelaySec=1800 + ''; +} diff --git a/modules/locale.nix b/modules/locale.nix new file mode 100644 index 0000000..8cf6899 --- /dev/null +++ b/modules/locale.nix @@ -0,0 +1,11 @@ +{ ... }: { + networking.hostName = "nixos"; + networking.networkmanager.enable = true; + time.timeZone = "Europe/Berlin"; + i18n.defaultLocale = "de_DE.UTF-8"; + console.keyMap = "de"; + services.xserver.xkb = { + layout = "de"; + options = "caps:escape"; + }; +} diff --git a/modules/nvidia.nix b/modules/nvidia.nix new file mode 100644 index 0000000..62e8d74 --- /dev/null +++ b/modules/nvidia.nix @@ -0,0 +1,15 @@ +{ config, ... }: { + services.xserver.videoDrivers = [ "nvidia" ]; + hardware.graphics = { + enable = true; + enable32Bit = true; + }; + hardware.nvidia = { + modesetting.enable = true; + powerManagement.enable = true; + powerManagement.finegrained = false; + open = true; + nvidiaSettings = true; + package = config.boot.kernelPackages.nvidiaPackages.beta; + }; +} diff --git a/modules/system-packages.nix b/modules/system-packages.nix new file mode 100644 index 0000000..fe9519b --- /dev/null +++ b/modules/system-packages.nix @@ -0,0 +1,33 @@ +{ pkgs, inputs, ... }: + +{ + nixpkgs.overlays = [ + inputs.mac-style-plymouth.overlays.default + ]; + + nixpkgs.config.allowUnfree = true; + + programs.steam = { + enable = true; + remotePlay.openFirewall = true; + dedicatedServer.openFirewall = true; + }; + + fonts.packages = with pkgs; [ + dejavu_fonts ibm-plex inter noto-fonts roboto fira fira-code + nerd-fonts.jetbrains-mono nerd-fonts.hack + newcomputermodern + ]; + + environment.systemPackages = with pkgs; [ + git vim wget curl helix + swaybg whitesur-cursors copyq + kdePackages.kwallet-pam + brightnessctl + libxkbcommon + pavucontrol + + kdePackages.partitionmanager + kdePackages.polkit-kde-agent-1 + ]; +} diff --git a/modules/users.nix b/modules/users.nix new file mode 100644 index 0000000..c6b4f31 --- /dev/null +++ b/modules/users.nix @@ -0,0 +1,19 @@ +{ pkgs, inputs, username, ... }: { + + users.users.${username} = { + isNormalUser = true; + shell = pkgs.fish; + extraGroups = [ "networkmanager" "wheel" "libvirtd" "video" ]; + }; + + programs.fish.enable = true; + + home-manager = { + useGlobalPkgs = true; + useUserPackages = true; + backupFileExtension = "backup"; + extraSpecialArgs = { inherit inputs username; }; + + users.${username} = import ../home/home.nix; + }; +} diff --git a/modules/virtualization.nix b/modules/virtualization.nix new file mode 100644 index 0000000..1a9b4bf --- /dev/null +++ b/modules/virtualization.nix @@ -0,0 +1,28 @@ +# https://md.timvandenboom.eth64.de/s/Nils/p/evdev-passthrough-BTUeHFqMQ3 + +{ pkgs, ... }: + +{ + # --- Virtualisierung (QEMU/KVM & Libvirtd) --- + virtualisation.libvirtd = { + enable = true; + qemu = { + package = pkgs.qemu_kvm; + runAsRoot = true; + swtpm.enable = true; + verbatimConfig = '' + cgroup_device_acl = [ + "/dev/null", "/dev/full", "/dev/zero", + "/dev/random", "/dev/urandom", + "/dev/ptmx", "/dev/kvm", "/dev/kqemu", + "/dev/rtc","/dev/hpet", "/dev/vfio/vfio", + "/dev/input/by-id/usb-Kinesis_Corporation_Adv360_Pro_5E36F7BBCC9DC86A-if02-event-kbd", + "/dev/input/by-id/usb-Keychron_Keychron_4K_Link-event-mouse" + ] + ''; + }; + }; + + # Grafische Oberfläche für die Verwaltung + programs.virt-manager.enable = true; +} diff --git a/owl_desktop.png b/owl_desktop.png new file mode 100644 index 0000000..3acc963 Binary files /dev/null and b/owl_desktop.png differ diff --git a/owl_terminal.png b/owl_terminal.png new file mode 100644 index 0000000..331a329 Binary files /dev/null and b/owl_terminal.png differ diff --git a/templates/alacritty.toml b/templates/alacritty.toml new file mode 100644 index 0000000..a8cc4ce --- /dev/null +++ b/templates/alacritty.toml @@ -0,0 +1,32 @@ +[colors.primary] +background = '{{colors.surface.default.hex}}' +foreground = '{{colors.on_surface.default.hex}}' +dim_foreground = '{{colors.on_surface_variant.default.hex}}' + +[colors.cursor] +text = '{{colors.surface.default.hex}}' +cursor = '{{colors.primary.default.hex}}' + +[cursor] +style = { shape = "Block", blinking = "Always" } +vi_mode_style = { shape = "Block" } + +[colors.normal] +black = '{{colors.surface_container.default.hex}}' +red = '{{colors.error.default.hex}}' +green = '{{colors.primary.default.hex}}' +yellow = '{{colors.tertiary_container.default.hex}}' +blue = '{{colors.secondary.default.hex}}' +magenta = '{{colors.tertiary.default.hex}}' +cyan = '{{colors.primary_container.default.hex}}' +white = '{{colors.on_surface.default.hex}}' + +[colors.bright] +black = '{{colors.surface_container_high.default.hex}}' +red = '{{colors.error_container.default.hex}}' +green = '{{colors.inverse_primary.default.hex}}' +yellow = '{{colors.on_tertiary_container.default.hex}}' +blue = '{{colors.on_secondary_container.default.hex}}' +magenta = '{{colors.on_tertiary.default.hex}}' +cyan = '{{colors.on_primary_container.default.hex}}' +white = '{{colors.inverse_surface.default.hex}}' diff --git a/templates/bookmarks.txt b/templates/bookmarks.txt new file mode 100644 index 0000000..3cb5782 --- /dev/null +++ b/templates/bookmarks.txt @@ -0,0 +1,101 @@ + Vaultwarden [toolbar] :: https://vw.timvandenboom.eth64.de/#/login + VR Bank [banking] :: https://www.vvrbank-krp.de/startseite.html + Paypal [banking] :: https://www.paypal.com/de/home + Scalable Capital [banking] :: https://de.scalable.capital/cockpit/ + Firefly III [banking] :: https://firefly.timvandenboom.eth64.de/ + Firefly Importer [banking] :: https://importer.firefly.timvandenboom.eth64.de/token + Zeit [news] :: https://www.zeit.de/ + Zeit Epaper [news] :: https://epaper.zeit.de/abo/diezeit + Tagesschau [news] :: https://www.tagesschau.de/ +NX Netflix [streaming] :: https://www.netflix.com/de/ + Disney+ [streaming] :: https://www.disneyplus.com/ + YouTube [streaming] :: https://www.youtube.com/ + Yewtube [streaming] :: https://yewtu.be/ + Twitch [streaming] :: https://www.twitch.tv/ + SoundCloud [streaming] :: https://soundcloud.com/ + Spotify [streaming] :: https://open.spotify.com/ + TIDAL [streaming] :: https://listen.tidal.com/ + Emby Connect [streaming] :: https://emby.media/pin.html + Deezer [streaming] :: https://www.deezer.com/de/ + Syrics [streaming] :: https://syrics-web.vercel.app/ + Moodle [dhbw] :: https://moodle.dhbw-mannheim.de/login/index.php + Dualis [dhbw] :: https://dualis.dhbw.de/ + Overleaf [dhbw] :: https://www.overleaf.com/project + Wikipedia [dhbw] :: https://de.wikipedia.org/wiki/Wikipedia:Hauptseite + Zotero [dhbw] :: https://www.zotero.org/niills/library + CTAN [dhbw] :: https://ctan.org/?lang=de + GeoGebra [dhbw] :: https://www.geogebra.org/calculator + GOG [shops] :: https://www.gog.com/de/ + Hetzner Cloud [shops] :: https://console.hetzner.cloud/projects + Hetzner Storage Box [shops] :: https://robot.hetzner.com/storage + Gumroad [shops] :: https://gumroad.com/library + Excalidraw [edit] :: https://excalidraw.com/ + Photopea [edit] :: https://www.photopea.com/ + PIKIMOV [edit] :: https://pikimov.com/app/ + draw.io [edit] :: https://app.diagrams.net/?src=about + Zathura Docs [edit] :: https://pwmt.org/projects/zathura/documentation/ + Helix Docs [edit] :: https://docs.helix-editor.com/keymap.html + niri-dots [edit] :: https://github.com/shreyas-sha3/niri-dots + Sharelatex [tim] :: https://sharelatex.timvandenboom.eth64.de/login + Stirling PDF [tim] :: https://pdf.timvandenboom.eth64.de/ + ConvertX [tim] :: https://convertx.timvandenboom.eth64.de/login + Nextcloud [tim] :: https://nextcloud.timvandenboom.eth64.de/apps/files/files + RePod [tim] :: https://nextcloud.timvandenboom.eth64.de/apps/repod/ + Docmost [tim] :: https://md.timvandenboom.eth64.de/home + Homepage [tim] :: https://timvandenboom.eth64.de/ + S-Nextcloud [tim] :: https://nextcloud.wvss-mannheim.de/s/YxrbKinKkFXN4FZ + PLANKA [tim] :: https://kanban.timvandenboom.eth64.de/login + Radicale [tim] :: https://calendar.timvandenboom.eth64.de/.web/ + VoucherVault [tim] :: https://vouchervault.timvandenboom.eth64.de/de/dashboard + Open Archiver [tim] :: https://openarchiver.timvandenboom.eth64.de/signin + IT Tools [tim] :: https://ittools.timvandenboom.eth64.de/ + Linkwarden [tim] :: https://paperless.timvandenboom.eth64.de/dashboard +󰎆 navidrome [tim] :: https://navidrome.timvandenboom.eth64.de + gitea [tim] :: https://gitea.timvandenboom.eth64.de/ + Google Kalender [essentials] :: https://calendar.google.com/calendar/u/0/r?pli=1 + Gmail [essentials] :: https://mail.google.com/mail/u/0/#inbox/FMfcgzQZVKCHnkcpwKSvfgBgmMNpQdfp + ZEIT [default] :: https://www.zeit.de/index +🤖 ChatGPT [default] :: https://chatgpt.com/ + Podcast [default] :: https://nextcloud.timvandenboom.eth64.de/apps/repod/ +✨ Gemini [default] :: https://gemini.google.com/app + Portainer [cloud] :: https://192.168.178.39:9443/#!/home + Firefly III Local [cloud] :: http://192.168.178.39:82/ + Paperless ngx [cloud] :: http://192.168.178.39:8777/dashboard + Nextcloud Local [cloud] :: http://192.168.178.39:8080/apps/files/files + Immich [cloud] :: http://192.168.178.39:2283/ + Emby [cloud] :: http://192.168.178.39:8096/web/index.html#!/home + Jellyseerr [cloud] :: http://192.168.178.39:8097/ + Kavita [cloud] :: http://192.168.178.39:2511/home + Navidrome [cloud] :: http://192.168.178.39:4533/app/#/album/all?sort=name&order=ASC&filter={} + Spotizerr [cloud] :: http://192.168.178.39:7171/?q=&type=track + Dawarich [cloud] :: http://192.168.178.39:3000/map + Grocy [cloud] :: http://192.168.178.39:9092/stockoverview + Sharelatex Local [cloud] :: http://192.168.178.39:420/project + Yamtrack [cloud] :: http://192.168.178.39:8282/ + FritzBox [cloud] :: https://fritz.box/ + SearXNG [cloud] :: http://192.168.178.39:2501/ + Homepage [cloud] :: http://192.168.178.39:3100/ + ArchiveBox [cloud] :: http://192.168.178.39:8040/admin/core/snapshot/ + Stirling PDF Local [cloud] :: http://192.168.178.39:8320/?lang=de_DE + Mealie [cloud] :: http://192.168.178.39:9091/g/home?orderBy=created_at + ConvertX Local [cloud] :: http://192.168.178.39:3522/ + Vaultwarden Local [cloud] :: http://192.168.178.39:2501/home + Jellyfin [cloud] :: http://192.168.178.39:8096/web/index.html#/home.html + Deemix [cloud] :: http://192.168.178.39:6595/ + Paypal Login [banking] :: https://www.paypal.com/signin?returnUri=https%3A%2F%2Fwww.paypal.com%2Fmyaccount%2Fsummary&state= + VR Bank Login [banking] :: https://www.vvrbank-krp.de/services_cloud/portal/m/banking_start + Bitkasten [banking] :: https://mein.bitkasten.de/portal/inbox + Soundcloud Discover [musik] :: https://soundcloud.com/discover + Samplette [musik] :: https://samplette.io/48842580 + Splice [musik] :: https://splice.com/sounds + Mail [musik] :: https://mail.google.com/mail/u/0/#inbox + Rust Doc [docs] :: https://doc.rust-lang.org/book/ + NixOS Search [docs] :: https://search.nixos.org/packages + Mouseless Trainer [tools] :: https://brysonmcbee.itch.io/mouseless-trainer + Yazi Features [tools] :: https://yazi-rs.github.io/features/ + Yazi Quick Start [tools] :: https://yazi-rs.github.io/docs/quick-start/ +TB Typst Symbol [docs] :: https://typst.app/docs/reference/symbols/sym/ +TB Detypify [tools] :: https://detypify.quarticcat.com/ + Discord [social] :: https://discord.com/channels/@me + Reddit [social] :: https://www.reddit.com/ + Google Drive [cloud] diff --git a/templates/btop.theme b/templates/btop.theme new file mode 100644 index 0000000..8340336 --- /dev/null +++ b/templates/btop.theme @@ -0,0 +1,31 @@ +theme[main_bg]="" + +theme[main_fg]="{{colors.on_surface.default.hex}}" + +theme[title]="{{colors.primary.default.hex}}" + +theme[hi_fg]="{{colors.tertiary.default.hex}}" + +theme[selected_bg]="{{colors.primary_container.default.hex}}" + +theme[selected_fg]="{{colors.on_primary_container.default.hex}}" + +theme[inactive_fg]="{{colors.outline.default.hex}}" + + +theme[cpu_box]="{{colors.primary.default.hex}}" +theme[cpu_start]="{{colors.primary.default.hex}}" +theme[cpu_mid]="{{colors.secondary.default.hex}}" +theme[cpu_end]="{{colors.tertiary.default.hex}}" + +theme[mem_box]="{{colors.primary.default.hex}}" + +theme[net_box]="{{colors.primary.default.hex}}" + +theme[proc_box]="{{colors.primary.default.hex}}" + +theme[div_line]="{{colors.outline.default.hex}}" + +theme[temp_start]="{{colors.primary.default.hex}}" +theme[temp_mid]="{{colors.secondary.default.hex}}" +theme[temp_end]="{{colors.error.default.hex}}" diff --git a/templates/colors-gtk.css b/templates/colors-gtk.css new file mode 100644 index 0000000..3bb2862 --- /dev/null +++ b/templates/colors-gtk.css @@ -0,0 +1,8 @@ +@define-color background {{colors.surface.default.hex}}; +@define-color foreground {{colors.on_surface.default.hex}}; +@define-color primary {{colors.primary.default.hex}}; +@define-color on_primary {{colors.on_primary.default.hex}}; +@define-color secondary {{colors.secondary.default.hex}}; +@define-color surface_container {{colors.surface_container.default.hex}}; +@define-color surface_container_high {{colors.surface_container_high.default.hex}}; +@define-color urgent {{colors.error.default.hex}}; diff --git a/templates/fish-colors.fish b/templates/fish-colors.fish new file mode 100644 index 0000000..219a676 --- /dev/null +++ b/templates/fish-colors.fish @@ -0,0 +1,14 @@ +set -g fish_color_normal {{colors.on_surface.default.hex}} +set -g fish_color_command {{colors.primary.default.hex}} +set -g fish_color_keyword {{colors.tertiary.default.hex}} +set -g fish_color_quote {{colors.secondary.default.hex}} +set -g fish_color_redirection {{colors.on_surface.default.hex}} +set -g fish_color_end {{colors.on_surface.default.hex}} +set -g fish_color_error {{colors.error.default.hex}} +set -g fish_color_param {{colors.on_surface_variant.default.hex}} +set -g fish_color_comment {{colors.outline.default.hex}} +set -g fish_color_selection --background={{colors.surface_variant.default.hex}} +set -g fish_color_search_match --background={{colors.surface_variant.default.hex}} +set -g fish_color_operator {{colors.on_surface.default.hex}} +set -g fish_color_escape {{colors.tertiary.default.hex}} +set -g fish_color_autosuggestion 555 diff --git a/templates/hyprland-colors.conf b/templates/hyprland-colors.conf new file mode 100644 index 0000000..1de43bd --- /dev/null +++ b/templates/hyprland-colors.conf @@ -0,0 +1,19 @@ +$primary = rgba({{colors.primary.default.hex_stripped}}ff) +$on_primary = rgba({{colors.on_primary.default.hex_stripped}}ff) +$primary_container = rgba({{colors.primary_container.default.hex_stripped}}ff) +$on_primary_container = rgba({{colors.on_primary_container.default.hex_stripped}}ff) + +$secondary = rgba({{colors.secondary.default.hex_stripped}}ff) +$on_secondary = rgba({{colors.on_secondary.default.hex_stripped}}ff) + +$error = rgba({{colors.error.default.hex_stripped}}ff) + +$background = rgba({{colors.background.default.hex_stripped}}ff) +$on_background = rgba({{colors.on_background.default.hex_stripped}}ff) + +$surface = rgba({{colors.surface.default.hex_stripped}}ff) +$surface_variant = rgba({{colors.surface_variant.default.hex_stripped}}ff) +$on_surface = rgba({{colors.on_surface.default.hex_stripped}}ff) +$on_surface_variant = rgba({{colors.on_surface_variant.default.hex_stripped}}ff) + +$outline = rgba({{colors.outline.default.hex_stripped}}ff) diff --git a/templates/hyprlock-colors.conf b/templates/hyprlock-colors.conf new file mode 100644 index 0000000..7773b8b --- /dev/null +++ b/templates/hyprlock-colors.conf @@ -0,0 +1,5 @@ +$background = rgb({{colors.background.default.hex_stripped}}) +$foreground = rgb({{colors.on_background.default.hex_stripped}}) +$primary = rgb({{colors.primary.default.hex_stripped}}) +$accent = rgb({{colors.primary_container.default.hex_stripped}}) +$wallpaper = /home/nils/nixos/wallpaper/wallpaper.png diff --git a/templates/lazygit_theme.yml b/templates/lazygit_theme.yml new file mode 100644 index 0000000..41e3ef7 --- /dev/null +++ b/templates/lazygit_theme.yml @@ -0,0 +1,23 @@ +gui: + theme: + activeBorderColor: + - "{{colors.primary.default.hex}}" + - bold + inactiveBorderColor: + - "{{colors.outline.default.hex}}" + optionsTextColor: + - "{{colors.primary.default.hex}}" + selectedLineBgColor: + - "{{colors.surface_container_highest.default.hex}}" + selectedRangeBgColor: + - "{{colors.surface_container_highest.default.hex}}" + cherryPickedCommitBgColor: + - "{{colors.tertiary.default.hex}}" + cherryPickedCommitFgColor: + - "{{colors.on_tertiary.default.hex}}" + unstagedChangesColor: + - "{{colors.error.default.hex}}" + defaultFgColor: + - "{{colors.on_surface.default.hex}}" + searchingActiveBorderColor: + - "{{colors.tertiary.default.hex}}" diff --git a/templates/rofi.rasi b/templates/rofi.rasi new file mode 100644 index 0000000..563adfe --- /dev/null +++ b/templates/rofi.rasi @@ -0,0 +1,15 @@ +* { + bg0: {{colors.surface.default.hex}}cc; + bg1: {{colors.surface_container.default.hex}}; + bg2: {{colors.surface_container_high.default.hex}}; + bg3: {{colors.outline.default.hex}}; + fg0: {{colors.on_surface.default.hex}}; + fg1: {{colors.on_surface_variant.default.hex}}; + fg2: {{colors.outline.default.hex}}; + red: {{colors.error.default.hex}}; + green: {{colors.primary.default.hex}}; + yellow: {{colors.tertiary.default.hex}}; + blue: {{colors.secondary.default.hex}}; + magenta: {{colors.inverse_primary.default.hex}}; + cyan: {{colors.primary_container.default.hex}}; +} diff --git a/templates/starship.toml b/templates/starship.toml new file mode 100644 index 0000000..e10e8b2 --- /dev/null +++ b/templates/starship.toml @@ -0,0 +1,69 @@ +"$schema" = 'https://starship.rs/config-schema.json' + +format = """ +[░▒▓]({{colors.primary_container.default.hex}})\ +$username\ +[  ](bg:{{colors.primary_container.default.hex}} fg:{{colors.on_primary_container.default.hex}})\ +$directory\ +$time\ +$git_branch\ +$git_status\ +$nix_shell\ +$character""" + +[username] +show_always = true +style_user = "bg:{{colors.primary_container.default.hex}} fg:{{colors.on_primary_container.default.hex}}" +format = "[ $user]($style)" + +[directory] +style = "fg:{{colors.on_primary.default.hex}} bg:{{colors.primary.default.hex}}" +format = "[ $path ]($style)" +truncation_length = 3 +truncation_symbol = "…/" + +[directory.substitutions] +"Documents" = "󰈙 " +"Downloads" = " " +"Music" = " " +"Pictures" = " " + +[time] +disabled = false +time_format = "%R" +style = "bg:{{colors.surface_container.default.hex}}" +format = '[[  $time ](fg:{{colors.on_surface_variant.default.hex}} bg:{{colors.surface_container.default.hex}})]($style)' + +[git_branch] +disabled = false +symbol = " " +style = "bg:{{colors.secondary.default.hex}} fg:{{colors.on_secondary.default.hex}}" +format = '[ $symbol$branch ](bold $style)' + +[git_status] +disabled = false +style = "bg:{{colors.secondary.default.hex}} fg:{{colors.on_secondary.default.hex}}" +format = '[$all_status$ahead_behind]($style)' + +# up_to_date = " synced " +modified = "modified " +staged = "staged " +untracked = "untracked " +ahead = "ahead ⇡${count} " +behind = "behind ⇣${count} " +diverged = "diverged ⇕⇡${ahead_count}⇣${behind_count} " +conflicted = "conflict " +stashed = "stashed " +renamed = "renamed " +deleted = "deleted " + +[nix_shell] +disabled = false +format = '[  <$name> ]($style)' +style = "bg:{{colors.surface_variant.default.hex}} fg:{{colors.on_surface_variant.default.hex}}" +impure_msg = '(impure)' +pure_msg = '(pure)' + +[character] +success_symbol = "[ ➜]({{colors.primary.default.hex}})" +error_symbol = "[ ERROR ](bold {{colors.error.default.hex}})[➜]({{colors.error.default.hex}})" diff --git a/templates/swaync-colors.css b/templates/swaync-colors.css new file mode 100644 index 0000000..5216b2f --- /dev/null +++ b/templates/swaync-colors.css @@ -0,0 +1,6 @@ +@define-color background {{colors.surface.default.hex}}; +@define-color foreground {{colors.on_surface.default.hex}}; +@define-color primary {{colors.primary.default.hex}}; +@define-color secondary {{colors.secondary.default.hex}}; +@define-color surface_container {{colors.surface_container.default.hex}}; +@define-color urgent {{colors.error.default.hex}}; diff --git a/templates/wlogout-colors.css b/templates/wlogout-colors.css new file mode 100644 index 0000000..8048cf8 --- /dev/null +++ b/templates/wlogout-colors.css @@ -0,0 +1,6 @@ +@define-color background {{colors.surface.default.hex}}; +@define-color foreground {{colors.on_surface.default.hex}}; +@define-color primary {{colors.primary.default.hex}}; +@define-color surface {{colors.surface_container.default.hex}}; +@define-color surface_variant {{colors.surface_variant.default.hex}}; +@define-color error {{colors.error.default.hex}}; diff --git a/templates/wob.ini b/templates/wob.ini new file mode 100644 index 0000000..a005a06 --- /dev/null +++ b/templates/wob.ini @@ -0,0 +1,3 @@ +bar_color = {{colors.primary.default.hex_stripped}}ff +border_color = {{colors.outline.default.hex_stripped}}ff +background_color = {{colors.surface.default.hex_stripped}}dd diff --git a/templates/yazi-theme.toml b/templates/yazi-theme.toml new file mode 100644 index 0000000..7a27852 --- /dev/null +++ b/templates/yazi-theme.toml @@ -0,0 +1,165 @@ +# : Manager [[[ + +[manager] +cwd = { fg = "{{colors.on_surface.default.hex}}" } + +# Tab +tab_active = { fg = "#D4D4D4", bg = "#1E1E1E" } +tab_inactive = { fg = "#D4D4D4", bg = "#2D2D2D" } +tab_width = 1 + +# Find +find_keyword = { fg = "{{colors.error.default.hex}}", bold = true, italic = true, underline = true } +find_position = { fg = "{{colors.error.default.hex}}", bold = true, italic = true } + +# Marker +marker_copied = { fg = "{{colors.tertiary_fixed.default.hex | auto_lightness: 20.0}}", bg = "{{colors.tertiary_fixed.default.hex | auto_lightness: 20.0}}" } +marker_cut = { fg = "{{colors.tertiary_fixed.default.hex}}", bg = "{{colors.tertiary_fixed.default.hex}}" } +marker_marked = { fg = "{{colors.error.default.hex}}", bg = "{{colors.error.default.hex}}" } +marker_selected = { fg = "{{colors.tertiary.default.hex}}", bg = "{{colors.tertiary.default.hex}}" } + +# Count +count_copied = { fg = "{{colors.on_tertiary_fixed.default.hex}}", bg = "{{colors.tertiary_fixed.default.hex}}" } +count_cut = { fg = "{{colors.on_tertiary_fixed.default.hex}}", bg = "{{colors.tertiary_fixed.default.hex}}" } +count_selected = { fg = "{{colors.on_primary.default.hex}}", bg = "{{colors.tertiary.default.hex}}" } + +# Border +border_symbol = "│" +border_style = { fg = "{{colors.surface_tint.default.hex}}" } + +# : ]]] + + +# : Status [[[ + +[status] +separator_open = "🭁" +separator_close = "🭠" +separator_style = { bg = "{{colors.on_primary.default.hex}}", fg = "#F4A261" } + +[mode] +# Mode +normal_main = { bg = "{{colors.primary.default.hex}}", fg = "{{colors.on_primary.default.hex}}", bold = true } +normal_alt = { bg = "{{colors.surface_variant.default.hex}}", fg = "{{colors.on_surface_variant.default.hex}}" } + +# Select mode +select_main = { bg = "{{colors.secondary.default.hex}}", fg = "{{colors.on_secondary.default.hex}}", bold = true } +select_alt = { bg = "{{colors.surface_variant.default.hex}}", fg = "{{colors.on_surface_variant.default.hex}}" } + +# Unset mode +unset_main = { bg = "{{colors.tertiary.default.hex}}", fg = "{{colors.on_tertiary.default.hex}}", bold = true } +unset_alt = { bg = "{{colors.surface_variant.default.hex}}", fg = "{{colors.on_surface_variant.default.hex}}" } + +# Progress +progress_label = { bold = true } +progress_normal = { fg = "{{colors.primary.default.hex}}", bg = "{{colors.surface_bright.default.hex}}" } +progress_error = { fg = "{{colors.error.default.hex}}", bg = "{{colors.surface_bright.default.hex}}" } + +# Permissions +permissions_t = { fg = "{{colors.secondary.default.hex | auto_lightness: 30.0}}" } +permissions_w = { fg = "{{colors.tertiary.default.hex | auto_lightness: 30.0}}" } +permissions_x = { fg = "{{colors.error.default.hex | auto_lightness: 30.0}}" } +permissions_r = { fg = "{{colors.tertiary_fixed.default.hex | auto_lightness: 30.0}}" } +permissions_s = { fg = "{{colors.primary_fixed.default.hex | auto_lightness: 30.0}}" } + +# : ]]] + + +# : Select [[[ + +[select] +border = { fg = "{{colors.primary.default.hex}}" } +active = { fg = "{{colors.tertiary.default.hex}}", bold = true } +inactive = {} + +# : ]]] + + +# : Input [[[ + +[input] +border = { fg = "{{colors.primary.default.hex}}" } +value = { fg = "{{colors.on_surface.default.hex}}" } + +# : ]]] + + +# : Completion [[[ + +[completion] +border = { fg = "{{colors.primary.default.hex}}", bg = "{{colors.on_primary.default.hex}}" } + +# : ]]] + + +# : Tasks [[[ + +[tasks] +border = { fg = "{{colors.primary.default.hex}}" } +title = {} +hovered = { fg = "{{colors.tertiary_fixed.default.hex}}", underline = true } + +# : ]]] + + +# : Which [[[ + +[which] +cols = 3 +mask = { bg = "{{colors.surface_bright.default.hex}}" } +cand = { fg = "{{colors.primary.default.hex}}" } +rest = { fg = "{{colors.on_primary.default.hex}}" } +desc = { fg = "{{colors.on_surface.default.hex}}" } +separator = " ▶ " +separator_style = { fg = "{{colors.on_surface.default.hex}}" } + +# : ]]] + + +# : Help [[[ + +[help] +on = { fg = "{{colors.on_surface.default.hex}}" } +run = { fg = "{{colors.on_surface.default.hex}}" } +footer = { fg = "{{colors.on_secondary.default.hex}}", bg = "{{colors.secondary.default.hex}}" } + +# : ]]] + + +# : Notify [[[ + +[notify] +title_info = { fg = "{{colors.tertiary.default.hex}}" } +title_warn = { fg = "{{colors.primary.default.hex}}" } +title_error = { fg = "{{colors.error.default.hex}}" } + +# : ]]] + + +# : File-specific styles [[[ + +[filetype] + +rules = [ + # Images + { mime = "image/*", fg = "#94e2d5" }, + + # Media + { mime = "{audio,video}/*", fg = "#f9e2af" }, + + # Archives + { mime = "application/{zip,rar,7z*,tar,gzip,xz,zstd,bzip*,lzma,compress,archive,cpio,arj,xar,ms-cab*}", fg = "#f5c2e7" }, + + # Documents + { mime = "application/{pdf,doc,rtf}", fg = "#a6e3a1" }, + + # Special files + { name = "*", is = "orphan", bg = "{{colors.error_container.default.hex}}" }, + { name = "*", is = "exec", fg = "{{colors.on_error_container.default.hex}}" }, + + # Fallback + { name = "*", fg = "{{colors.on_surface.default.hex}}" }, + { name = "*/", fg = "{{colors.surface_tint.default.hex}}" }, +] + +# : ]]] diff --git a/templates/zathura b/templates/zathura new file mode 100644 index 0000000..a518675 --- /dev/null +++ b/templates/zathura @@ -0,0 +1,20 @@ + +set default-bg "{{colors.surface_container.default.hex}}" +set default-fg "{{colors.on_surface.default.hex}}" +set statusbar-bg "{{colors.surface_container.default.hex}}" +set statusbar-fg "{{colors.on_surface.default.hex}}" +set inputbar-bg "{{colors.surface_container_high.default.hex}}" +set inputbar-fg "{{colors.primary.default.hex}}" +set notification-bg "{{colors.surface_container_highest.default.hex}}" +set notification-fg "{{colors.on_surface.default.hex}}" +set notification-error-bg "{{colors.error_container.default.hex}}" +set notification-error-fg "{{colors.on_error_container.default.hex}}" +set notification-warning-bg "{{colors.error_container.default.hex}}" +set notification-warning-fg "{{colors.on_error_container.default.hex}}" + +set completion-bg "{{colors.surface_container.default.hex}}" +set completion-fg "{{colors.on_surface.default.hex}}" +set completion-highlight-bg "{{colors.primary.default.hex}}" +set completion-highlight-fg "{{colors.on_primary.default.hex}}" +set recolor-lightcolor "{{colors.surface.default.hex}}" +set recolor-darkcolor "{{colors.on_surface.default.hex}}" diff --git a/templates/zellij.kdl b/templates/zellij.kdl new file mode 100644 index 0000000..91d72ea --- /dev/null +++ b/templates/zellij.kdl @@ -0,0 +1,15 @@ +themes { + matugen { + fg "{{colors.on_surface.default.hex}}" + bg "{{colors.surface_container_high.default.hex}}" + black "{{colors.surface_container.default.hex}}" + red "{{colors.tertiary.default.hex}}" + orange "{{colors.secondary.default.hex}}" + green "{{colors.primary.default.hex}}" + yellow "{{colors.secondary_container.default.hex}}" + blue "{{colors.primary_container.default.hex}}" + magenta "{{colors.tertiary_container.default.hex}}" + cyan "{{colors.on_surface_variant.default.hex}}" + white "{{colors.on_surface.default.hex}}" + } +} diff --git a/wallpaper/GhibiliRoots.png b/wallpaper/GhibiliRoots.png new file mode 100644 index 0000000..341881d Binary files /dev/null and b/wallpaper/GhibiliRoots.png differ diff --git a/wallpaper/GhibiliStream.png b/wallpaper/GhibiliStream.png new file mode 100644 index 0000000..2224bef Binary files /dev/null and b/wallpaper/GhibiliStream.png differ diff --git a/wallpaper/Hanabi.jpg b/wallpaper/Hanabi.jpg new file mode 100644 index 0000000..a1a241b Binary files /dev/null and b/wallpaper/Hanabi.jpg differ diff --git a/wallpaper/a-c-Eg7e88ES_3w-unsplash.jpg b/wallpaper/a-c-Eg7e88ES_3w-unsplash.jpg new file mode 100644 index 0000000..a221631 Binary files /dev/null and b/wallpaper/a-c-Eg7e88ES_3w-unsplash.jpg differ diff --git a/wallpaper/a_branch_with_pink_flowers_01.jpg b/wallpaper/a_branch_with_pink_flowers_01.jpg new file mode 100644 index 0000000..9531425 Binary files /dev/null and b/wallpaper/a_branch_with_pink_flowers_01.jpg differ diff --git a/wallpaper/adrian-appalsamy-2CUBIb8I8-s-unsplash.jpg b/wallpaper/adrian-appalsamy-2CUBIb8I8-s-unsplash.jpg new file mode 100644 index 0000000..b18a657 Binary files /dev/null and b/wallpaper/adrian-appalsamy-2CUBIb8I8-s-unsplash.jpg differ diff --git a/wallpaper/adrien-olichon-RCAhiGJsUUE-unsplash.jpg b/wallpaper/adrien-olichon-RCAhiGJsUUE-unsplash.jpg new file mode 100644 index 0000000..da884e9 Binary files /dev/null and b/wallpaper/adrien-olichon-RCAhiGJsUUE-unsplash.jpg differ diff --git a/wallpaper/andrea-de-santis-Lul4MEKWu5Q-unsplash.jpg b/wallpaper/andrea-de-santis-Lul4MEKWu5Q-unsplash.jpg new file mode 100644 index 0000000..122f091 Binary files /dev/null and b/wallpaper/andrea-de-santis-Lul4MEKWu5Q-unsplash.jpg differ diff --git a/wallpaper/annie-spratt-Wtc9YH-g8Ag-unsplash.jpg b/wallpaper/annie-spratt-Wtc9YH-g8Ag-unsplash.jpg new file mode 100644 index 0000000..a9c6d20 Binary files /dev/null and b/wallpaper/annie-spratt-Wtc9YH-g8Ag-unsplash.jpg differ diff --git a/wallpaper/asa-rodger-B8xmtKWLrVo-unsplash.jpg b/wallpaper/asa-rodger-B8xmtKWLrVo-unsplash.jpg new file mode 100644 index 0000000..58dbb43 Binary files /dev/null and b/wallpaper/asa-rodger-B8xmtKWLrVo-unsplash.jpg differ diff --git a/wallpaper/ashim-d-silva-WeYamle9fDM-unsplash.jpg b/wallpaper/ashim-d-silva-WeYamle9fDM-unsplash.jpg new file mode 100644 index 0000000..5bec0fc Binary files /dev/null and b/wallpaper/ashim-d-silva-WeYamle9fDM-unsplash.jpg differ diff --git a/wallpaper/cristina-gottardi-R4y_E5ZQDPg-unsplash.jpg b/wallpaper/cristina-gottardi-R4y_E5ZQDPg-unsplash.jpg new file mode 100644 index 0000000..8cb9db6 Binary files /dev/null and b/wallpaper/cristina-gottardi-R4y_E5ZQDPg-unsplash.jpg differ diff --git a/wallpaper/current_wallpaper b/wallpaper/current_wallpaper new file mode 100644 index 0000000..e49ec2a Binary files /dev/null and b/wallpaper/current_wallpaper differ diff --git a/wallpaper/elliott-c7fnnMRL8P4-unsplash.jpg b/wallpaper/elliott-c7fnnMRL8P4-unsplash.jpg new file mode 100644 index 0000000..1aa90e7 Binary files /dev/null and b/wallpaper/elliott-c7fnnMRL8P4-unsplash.jpg differ diff --git a/wallpaper/eric-muhr-GBu6EftQBME-unsplash.jpg b/wallpaper/eric-muhr-GBu6EftQBME-unsplash.jpg new file mode 100644 index 0000000..261a2f3 Binary files /dev/null and b/wallpaper/eric-muhr-GBu6EftQBME-unsplash.jpg differ diff --git a/wallpaper/farid-mardanov-dFpjJvsIJjI-unsplash.jpg b/wallpaper/farid-mardanov-dFpjJvsIJjI-unsplash.jpg new file mode 100644 index 0000000..79689aa Binary files /dev/null and b/wallpaper/farid-mardanov-dFpjJvsIJjI-unsplash.jpg differ diff --git a/wallpaper/federico-di-dio-photography-Wstln0400pE-unsplash.jpg b/wallpaper/federico-di-dio-photography-Wstln0400pE-unsplash.jpg new file mode 100644 index 0000000..9fb087c Binary files /dev/null and b/wallpaper/federico-di-dio-photography-Wstln0400pE-unsplash.jpg differ diff --git a/wallpaper/fredrik-solli-wandem-TrPwD7wfrG0-unsplash.jpg b/wallpaper/fredrik-solli-wandem-TrPwD7wfrG0-unsplash.jpg new file mode 100644 index 0000000..104d471 Binary files /dev/null and b/wallpaper/fredrik-solli-wandem-TrPwD7wfrG0-unsplash.jpg differ diff --git a/wallpaper/frida-lannerstrom-Pomm1KDR9yY-unsplash.jpg b/wallpaper/frida-lannerstrom-Pomm1KDR9yY-unsplash.jpg new file mode 100644 index 0000000..4d185b0 Binary files /dev/null and b/wallpaper/frida-lannerstrom-Pomm1KDR9yY-unsplash.jpg differ diff --git a/wallpaper/henry-be-zWt9PnB4pCE-unsplash.jpg b/wallpaper/henry-be-zWt9PnB4pCE-unsplash.jpg new file mode 100644 index 0000000..e49ec2a Binary files /dev/null and b/wallpaper/henry-be-zWt9PnB4pCE-unsplash.jpg differ diff --git a/wallpaper/isai-ramos-_3SFFsWqCVg-unsplash.jpg b/wallpaper/isai-ramos-_3SFFsWqCVg-unsplash.jpg new file mode 100644 index 0000000..1a38c13 Binary files /dev/null and b/wallpaper/isai-ramos-_3SFFsWqCVg-unsplash.jpg differ diff --git a/wallpaper/iwin-ls1-GTFNwcM-unsplash.jpg b/wallpaper/iwin-ls1-GTFNwcM-unsplash.jpg new file mode 100644 index 0000000..331a635 Binary files /dev/null and b/wallpaper/iwin-ls1-GTFNwcM-unsplash.jpg differ diff --git a/wallpaper/jeremy-bishop-cFvK2V6l9Tg-unsplash.jpg b/wallpaper/jeremy-bishop-cFvK2V6l9Tg-unsplash.jpg new file mode 100644 index 0000000..6674275 Binary files /dev/null and b/wallpaper/jeremy-bishop-cFvK2V6l9Tg-unsplash.jpg differ diff --git a/wallpaper/jeremy-hynes-zLrqHNms8eE-unsplash.jpg b/wallpaper/jeremy-hynes-zLrqHNms8eE-unsplash.jpg new file mode 100644 index 0000000..c794455 Binary files /dev/null and b/wallpaper/jeremy-hynes-zLrqHNms8eE-unsplash.jpg differ diff --git a/wallpaper/lazarescu-alexandra-Yj1UOB_OabQ-unsplash.jpg b/wallpaper/lazarescu-alexandra-Yj1UOB_OabQ-unsplash.jpg new file mode 100644 index 0000000..3a03d61 Binary files /dev/null and b/wallpaper/lazarescu-alexandra-Yj1UOB_OabQ-unsplash.jpg differ diff --git a/wallpaper/luka-senica-m1MBGEk_-iM-unsplash.jpg b/wallpaper/luka-senica-m1MBGEk_-iM-unsplash.jpg new file mode 100644 index 0000000..8e81888 Binary files /dev/null and b/wallpaper/luka-senica-m1MBGEk_-iM-unsplash.jpg differ diff --git a/wallpaper/manuel-cosentino-n--CMLApjfI-unsplash.jpg b/wallpaper/manuel-cosentino-n--CMLApjfI-unsplash.jpg new file mode 100644 index 0000000..5e263fc Binary files /dev/null and b/wallpaper/manuel-cosentino-n--CMLApjfI-unsplash.jpg differ diff --git a/wallpaper/martin-katler-1GKb9gRpf5s-unsplash.jpg b/wallpaper/martin-katler-1GKb9gRpf5s-unsplash.jpg new file mode 100644 index 0000000..2ceaa39 Binary files /dev/null and b/wallpaper/martin-katler-1GKb9gRpf5s-unsplash.jpg differ diff --git a/wallpaper/mateusz-klein-c6cScqrXegw-unsplash.jpg b/wallpaper/mateusz-klein-c6cScqrXegw-unsplash.jpg new file mode 100644 index 0000000..12282de Binary files /dev/null and b/wallpaper/mateusz-klein-c6cScqrXegw-unsplash.jpg differ diff --git a/wallpaper/matt-alaniz-jbaxoX-sm8s-unsplash.jpg b/wallpaper/matt-alaniz-jbaxoX-sm8s-unsplash.jpg new file mode 100644 index 0000000..643dd00 Binary files /dev/null and b/wallpaper/matt-alaniz-jbaxoX-sm8s-unsplash.jpg differ diff --git a/wallpaper/matt-drenth-Bkw-aS2Nvg8-unsplash.jpg b/wallpaper/matt-drenth-Bkw-aS2Nvg8-unsplash.jpg new file mode 100644 index 0000000..30fb96b Binary files /dev/null and b/wallpaper/matt-drenth-Bkw-aS2Nvg8-unsplash.jpg differ diff --git a/wallpaper/melanie-magdalena-C1wAQm_lQKM-unsplash.jpg b/wallpaper/melanie-magdalena-C1wAQm_lQKM-unsplash.jpg new file mode 100644 index 0000000..9bd7b08 Binary files /dev/null and b/wallpaper/melanie-magdalena-C1wAQm_lQKM-unsplash.jpg differ diff --git a/wallpaper/mike-kotsch-xAgvgQpYsf4-unsplash.jpg b/wallpaper/mike-kotsch-xAgvgQpYsf4-unsplash.jpg new file mode 100644 index 0000000..58a665e Binary files /dev/null and b/wallpaper/mike-kotsch-xAgvgQpYsf4-unsplash.jpg differ diff --git a/wallpaper/milosz-roman-zJ9amrAopOE-unsplash.jpg b/wallpaper/milosz-roman-zJ9amrAopOE-unsplash.jpg new file mode 100644 index 0000000..293611e Binary files /dev/null and b/wallpaper/milosz-roman-zJ9amrAopOE-unsplash.jpg differ diff --git a/wallpaper/nick-west-4M-5WBrG5-c-unsplash.jpg b/wallpaper/nick-west-4M-5WBrG5-c-unsplash.jpg new file mode 100644 index 0000000..dc4ffe3 Binary files /dev/null and b/wallpaper/nick-west-4M-5WBrG5-c-unsplash.jpg differ diff --git a/wallpaper/pascal-debrunner-vwFvhJf6u_I-unsplash.jpg b/wallpaper/pascal-debrunner-vwFvhJf6u_I-unsplash.jpg new file mode 100644 index 0000000..8d36542 Binary files /dev/null and b/wallpaper/pascal-debrunner-vwFvhJf6u_I-unsplash.jpg differ diff --git a/wallpaper/pawel-czerwinski-Lki74Jj7H-U-unsplash.jpg b/wallpaper/pawel-czerwinski-Lki74Jj7H-U-unsplash.jpg new file mode 100644 index 0000000..a7a8edf Binary files /dev/null and b/wallpaper/pawel-czerwinski-Lki74Jj7H-U-unsplash.jpg differ diff --git a/wallpaper/polina-kuzovkova-uf2JJNgYp4A-unsplash.jpg b/wallpaper/polina-kuzovkova-uf2JJNgYp4A-unsplash.jpg new file mode 100644 index 0000000..10872a5 Binary files /dev/null and b/wallpaper/polina-kuzovkova-uf2JJNgYp4A-unsplash.jpg differ diff --git a/wallpaper/r-d-smith-6aCfxBqpYaY-unsplash.jpg b/wallpaper/r-d-smith-6aCfxBqpYaY-unsplash.jpg new file mode 100644 index 0000000..2bceb5b Binary files /dev/null and b/wallpaper/r-d-smith-6aCfxBqpYaY-unsplash.jpg differ diff --git a/wallpaper/ray-hennessy-6-JIDCnZG2E-unsplash.jpg b/wallpaper/ray-hennessy-6-JIDCnZG2E-unsplash.jpg new file mode 100644 index 0000000..6091658 Binary files /dev/null and b/wallpaper/ray-hennessy-6-JIDCnZG2E-unsplash.jpg differ diff --git a/wallpaper/rico-meier-7eoXimlQW3s-unsplash.jpg b/wallpaper/rico-meier-7eoXimlQW3s-unsplash.jpg new file mode 100644 index 0000000..61f7999 Binary files /dev/null and b/wallpaper/rico-meier-7eoXimlQW3s-unsplash.jpg differ diff --git a/wallpaper/sergey-pesterev-6KCnl-EgbiU-unsplash.jpg b/wallpaper/sergey-pesterev-6KCnl-EgbiU-unsplash.jpg new file mode 100644 index 0000000..45b295a Binary files /dev/null and b/wallpaper/sergey-pesterev-6KCnl-EgbiU-unsplash.jpg differ diff --git a/wallpaper/sergio-zhukov-gg9nzqNz1SU-unsplash.jpg b/wallpaper/sergio-zhukov-gg9nzqNz1SU-unsplash.jpg new file mode 100644 index 0000000..9ec7178 Binary files /dev/null and b/wallpaper/sergio-zhukov-gg9nzqNz1SU-unsplash.jpg differ diff --git a/wallpaper/susan-wilkinson-FC4_og0jOmc-unsplash.jpg b/wallpaper/susan-wilkinson-FC4_og0jOmc-unsplash.jpg new file mode 100644 index 0000000..8cc4bd7 Binary files /dev/null and b/wallpaper/susan-wilkinson-FC4_og0jOmc-unsplash.jpg differ diff --git a/wallpaper/vincent-van-zalinge-xWRbIqYiccU-unsplash.jpg b/wallpaper/vincent-van-zalinge-xWRbIqYiccU-unsplash.jpg new file mode 100644 index 0000000..d651757 Binary files /dev/null and b/wallpaper/vincent-van-zalinge-xWRbIqYiccU-unsplash.jpg differ diff --git a/wallpaper/wallhaven-2ymp5g.png b/wallpaper/wallhaven-2ymp5g.png new file mode 100644 index 0000000..1005b8a Binary files /dev/null and b/wallpaper/wallhaven-2ymp5g.png differ diff --git a/wallpaper/wallhaven-8g5p52.jpg b/wallpaper/wallhaven-8g5p52.jpg new file mode 100644 index 0000000..1fc9fc4 Binary files /dev/null and b/wallpaper/wallhaven-8g5p52.jpg differ diff --git a/wallpaper/wallhaven-exj2mw.jpg b/wallpaper/wallhaven-exj2mw.jpg new file mode 100644 index 0000000..10b10ea Binary files /dev/null and b/wallpaper/wallhaven-exj2mw.jpg differ diff --git a/wallpaper/wallhaven-l85z2l.jpg b/wallpaper/wallhaven-l85z2l.jpg new file mode 100644 index 0000000..9b135e7 Binary files /dev/null and b/wallpaper/wallhaven-l85z2l.jpg differ diff --git a/wallpaper/wallhaven-lyq5or.jpg b/wallpaper/wallhaven-lyq5or.jpg new file mode 100644 index 0000000..b2062cf Binary files /dev/null and b/wallpaper/wallhaven-lyq5or.jpg differ diff --git a/wallpaper/wallhaven-m3jx88.png b/wallpaper/wallhaven-m3jx88.png new file mode 100644 index 0000000..98ae86c Binary files /dev/null and b/wallpaper/wallhaven-m3jx88.png differ diff --git a/wallpaper/wallhaven-p969ep.jpg b/wallpaper/wallhaven-p969ep.jpg new file mode 100644 index 0000000..8465e83 Binary files /dev/null and b/wallpaper/wallhaven-p969ep.jpg differ diff --git a/wallpaper/wallhaven-qzwxgq.jpg b/wallpaper/wallhaven-qzwxgq.jpg new file mode 100644 index 0000000..94fa9f1 Binary files /dev/null and b/wallpaper/wallhaven-qzwxgq.jpg differ diff --git a/wallpaper/wallhaven-rq2v8j.png b/wallpaper/wallhaven-rq2v8j.png new file mode 100644 index 0000000..6d8c8a2 Binary files /dev/null and b/wallpaper/wallhaven-rq2v8j.png differ diff --git a/wallpaper/wallhaven-yx1j27.jpg b/wallpaper/wallhaven-yx1j27.jpg new file mode 100644 index 0000000..01ed1fe Binary files /dev/null and b/wallpaper/wallhaven-yx1j27.jpg differ diff --git a/wallpaper/wallhaven-zywe5j.jpg b/wallpaper/wallhaven-zywe5j.jpg new file mode 100644 index 0000000..c4b514e Binary files /dev/null and b/wallpaper/wallhaven-zywe5j.jpg differ diff --git a/wallpaper/wallhaven-zywwky.jpg b/wallpaper/wallhaven-zywwky.jpg new file mode 100644 index 0000000..1c0d406 Binary files /dev/null and b/wallpaper/wallhaven-zywwky.jpg differ diff --git a/wallpaper/wallpaper_2.png b/wallpaper/wallpaper_2.png new file mode 100644 index 0000000..a04e524 Binary files /dev/null and b/wallpaper/wallpaper_2.png differ diff --git a/wallpaper/wallpaper_3.jpg b/wallpaper/wallpaper_3.jpg new file mode 100644 index 0000000..61882d4 Binary files /dev/null and b/wallpaper/wallpaper_3.jpg differ diff --git a/wallpaper/wallpaper_4.png b/wallpaper/wallpaper_4.png new file mode 100644 index 0000000..c6996cb Binary files /dev/null and b/wallpaper/wallpaper_4.png differ diff --git a/wallpaper/willian-justen-de-vasconcellos-8sHZE1CXG4w-unsplash.jpg b/wallpaper/willian-justen-de-vasconcellos-8sHZE1CXG4w-unsplash.jpg new file mode 100644 index 0000000..f2d6f39 Binary files /dev/null and b/wallpaper/willian-justen-de-vasconcellos-8sHZE1CXG4w-unsplash.jpg differ diff --git a/wallpaper/zhou-xian-L32O0EFSvno-unsplash.jpg b/wallpaper/zhou-xian-L32O0EFSvno-unsplash.jpg new file mode 100644 index 0000000..214ea7c Binary files /dev/null and b/wallpaper/zhou-xian-L32O0EFSvno-unsplash.jpg differ