This commit is contained in:
2026-01-02 20:43:09 +01:00
commit 96a1f8a395
124 changed files with 2833 additions and 0 deletions

1
.gitignore vendored Normal file
View File

@@ -0,0 +1 @@

155
README.md Normal file
View File

@@ -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
<p align="center">
<img src="./cosmic_desktop.png" width="450" alt="Desktop View">
<img src="./cosmic_terminal.png" width="450" alt="Terminal View">
<img src="./owl_desktop.png" width="450" alt="Desktop View">
<img src="./owl_terminal.png" width="450" alt="Terminal View">
</p>
---
## 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
```

32
configuration.nix Normal file
View File

@@ -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;
}

BIN
cosmic_desktop.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 MiB

BIN
cosmic_hyprlock.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 MiB

BIN
cosmic_terminal.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 MiB

BIN
cosmic_wlogout.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 MiB

140
flake.lock generated Normal file
View File

@@ -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
}

34
flake.nix Normal file
View File

@@ -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
];
};
};
}

View File

@@ -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.<interface>.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;
}

21
home/alacritty.nix Normal file
View File

@@ -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";
};
};
};
}

48
home/helix.nix Normal file
View File

@@ -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";
};
};
};
};
}

39
home/home.nix Normal file
View File

@@ -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";
};
}

28
home/hypridle.nix Normal file
View File

@@ -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";
}
];
};
};
}

263
home/hyprland.nix Normal file
View File

@@ -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
'';
};
}

83
home/hyprlock.nix Normal file
View File

@@ -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";
}
];
};
};
}

65
home/mime-apps.nix Normal file
View File

@@ -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" ];
};
};
}

101
home/packages.nix Normal file
View File

@@ -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
];
}

113
home/rofi.nix Normal file
View File

@@ -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;
}
'';
}

73
home/rofi_alternative.nix Normal file
View File

@@ -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; }
'';
}

77
home/shell.nix Normal file
View File

@@ -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;
};
}

37
home/swaync.nix Normal file
View File

@@ -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; }
'';
};
}

8
home/swayosd.nix Normal file
View File

@@ -0,0 +1,8 @@
{ pkgs, ... }:
{
services.swayosd = {
enable = true;
topMargin = 0.5;
};
}

24
home/swww.nix Normal file
View File

@@ -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" ];
};
};
}

106
home/theming.nix Normal file
View File

@@ -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
'';
}

324
home/waybar.nix Normal file
View File

@@ -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 = "<span foreground='red'><sup></sup></span>";
none = "";
dnd-notification = "<span foreground='red'><sup></sup></span>";
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;
}
'';
};
}

35
home/waypaper.nix Normal file
View File

@@ -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" <<EOF
[Settings]
language = en
folder = ${config.home.homeDirectory}/nixos/wallpaper
wallpaper = ${config.home.homeDirectory}/nixos/wallpaper/current_wallpaper
backend = swww
monitors = All
fill = fill
sort = name
color = #ffffff
subfolders = False
show_hidden = False
show_gifs_only = False
post_command = cp "\$wallpaper" "${config.home.homeDirectory}/nixos/wallpaper/current_wallpaper" && matugen image "\$wallpaper" --type scheme-vibrant && sleep 0.5 && pkill -USR2 waybar && systemctl --user restart swaync
number_of_columns = 3
swww_transition_type = fade
swww_transition_step = 90
swww_transition_angle = 0
swww_transition_duration = 2
EOF
fi
'';
}

57
home/wlogout.nix Normal file
View File

@@ -0,0 +1,57 @@
{ config, pkgs, ... }:
{
programs.wlogout = {
enable = true;
layout = [
{ label = "lock"; action = "hyprlock"; text = "Lock (l)"; keybind = "l"; }
{ label = "reboot"; action = "systemctl reboot"; text = "Reboot (r)"; keybind = "r"; }
{ label = "shutdown"; action = "systemctl poweroff"; text = "Shut Down (s)"; keybind = "s"; }
{ label = "logout"; action = "hyprctl dispatch exit"; text = "Exit (e)"; keybind = "e"; }
{ label = "suspend"; action = "systemctl suspend"; text = "Suspend (u)"; keybind = "u"; }
{ label = "hibernate"; action = "systemctl hibernate"; text = "Hibernate (h)"; keybind = "h"; }
];
style = ''
@import url("${config.home.homeDirectory}/.config/wlogout/colors.css");
* {
box-shadow: none;
font-family: "JetBrainsMono Nerd Font";
}
window {
background-color: rgba(0, 0, 0, 0.4);
}
button {
border-radius: 0;
border-color: @surface;
color: @on_surface;
background-color: rgba(0, 0, 0, 0.4);
border-style: solid;
border-width: 1px;
background-repeat: no-repeat;
background-position: center;
background-size: 25%;
margin: 5px;
}
button:focus, button:active, button:hover {
background-color: rgba(0, 0, 0, 0.4);
color: @on_primary;
outline-style: none;
border-color: @outline;
border-style: solid;
border-width: 1px;
}
#lock { background-image: url("${../icons/lock.png}"); }
#logout { background-image: url("${../icons/logout.png}"); }
#suspend { background-image: url("${../icons/suspend.png}"); }
#hibernate { background-image: url("${../icons/hibernate.png}"); }
#shutdown { background-image: url("${../icons/shutdown.png}"); }
#reboot { background-image: url("${../icons/reboot.png}"); }
'';
};
}

174
home/yazi.nix Normal file
View File

@@ -0,0 +1,174 @@
{ pkgs, ... }:
{
programs.yazi = {
enable = true;
enableFishIntegration = true;
keymap = {
manager.prepend_keymap = [
{
on = [ "g" "e" ];
run = "arrow 100000000";
desc = "Zum Ende der Liste springen (ge)";
}
{
on = [ "T" ];
run = ''shell --orphan --block=false "${pkgs.alacritty}/bin/alacritty"'';
desc = "Terminal in neuem Fenster öffnen";
}
{
on = [ "E" ];
run = ''shell --orphan --block=false "${pkgs.kdePackages.dolphin}/bin/dolphin ."'';
desc = "Dolphin in diesem Ordner öffnen";
}
{
on = [ "G" ];
run = ''shell --orphan --block=false "${pkgs.alacritty}/bin/alacritty -e ${pkgs.lazygit}/bin/lazygit"'';
desc = "Lazygit in neuem Fenster öffnen";
}
{
on = [ "<C-d>" ];
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 = [ "<C-D>" ];
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"; }
];
};
};
};
}

13
home/zathura.nix Normal file
View File

@@ -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";
};
}

BIN
icons/hibernate.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

BIN
icons/lock.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

BIN
icons/logout.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

BIN
icons/reboot.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

BIN
icons/shutdown.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

BIN
icons/suspend.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

46
modules/boot.nix Normal file
View File

@@ -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'';
};
}

32
modules/desktop.nix Normal file
View File

@@ -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;
}

28
modules/hibernation.nix Normal file
View File

@@ -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
'';
}

11
modules/locale.nix Normal file
View File

@@ -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";
};
}

15
modules/nvidia.nix Normal file
View File

@@ -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;
};
}

View File

@@ -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
];
}

19
modules/users.nix Normal file
View File

@@ -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;
};
}

View File

@@ -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;
}

BIN
owl_desktop.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 MiB

BIN
owl_terminal.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 MiB

32
templates/alacritty.toml Normal file
View File

@@ -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}}'

101
templates/bookmarks.txt Normal file
View File

@@ -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]

31
templates/btop.theme Normal file
View File

@@ -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}}"

8
templates/colors-gtk.css Normal file
View File

@@ -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}};

View File

@@ -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

View File

@@ -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)

View File

@@ -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

View File

@@ -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}}"

15
templates/rofi.rasi Normal file
View File

@@ -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}};
}

69
templates/starship.toml Normal file
View File

@@ -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}})"

View File

@@ -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}};

View File

@@ -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}};

3
templates/wob.ini Normal file
View File

@@ -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

165
templates/yazi-theme.toml Normal file
View File

@@ -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}}" },
]
# : ]]]

20
templates/zathura Normal file
View File

@@ -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}}"

15
templates/zellij.kdl Normal file
View File

@@ -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}}"
}
}

BIN
wallpaper/GhibiliRoots.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 MiB

BIN
wallpaper/GhibiliStream.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 MiB

BIN
wallpaper/Hanabi.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 395 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 592 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 MiB

BIN
wallpaper/current_wallpaper Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.9 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 545 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 789 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 MiB

Some files were not shown because too many files have changed in this diff Show More