removed dragyx
This commit is contained in:
parent
f1582a353b
commit
54eb3e68e9
10 changed files with 0 additions and 1124 deletions
|
@ -1,46 +0,0 @@
|
||||||
{ config, pkgs, ... }:
|
|
||||||
|
|
||||||
let
|
|
||||||
username = config.modules.other.system.username;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
imports = [
|
|
||||||
../../../options/common/pin-registry.nix
|
|
||||||
../../../options/common/preserve-system.nix
|
|
||||||
../../../options/desktop/fonts.nix
|
|
||||||
];
|
|
||||||
|
|
||||||
|
|
||||||
services.locate = {
|
|
||||||
enable = true;
|
|
||||||
interval = "hourly";
|
|
||||||
package = pkgs.plocate;
|
|
||||||
localuser = null;
|
|
||||||
};
|
|
||||||
|
|
||||||
nix = {
|
|
||||||
package = pkgs.nixFlakes;
|
|
||||||
extraOptions = "experimental-features = nix-command flakes";
|
|
||||||
};
|
|
||||||
|
|
||||||
home-manager.users.${username} = {
|
|
||||||
programs.firefox = {
|
|
||||||
enable = true;
|
|
||||||
profiles = {
|
|
||||||
main = {
|
|
||||||
id = 0;
|
|
||||||
isDefault = true;
|
|
||||||
search.default = "DuckDuckGo";
|
|
||||||
extensions = with pkgs.nur.repos.rycee.firefox-addons; [
|
|
||||||
ublock-origin
|
|
||||||
bitwarden
|
|
||||||
darkreader
|
|
||||||
maya-dark
|
|
||||||
];
|
|
||||||
search.force = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,178 +0,0 @@
|
||||||
{ config, lib, pkgs, ... }:
|
|
||||||
|
|
||||||
with lib;
|
|
||||||
let
|
|
||||||
username = config.modules.other.system.username;
|
|
||||||
cfg = config.modules.WM.hyprland;
|
|
||||||
|
|
||||||
|
|
||||||
ani-script = pkgs.writeShellApplication {
|
|
||||||
name = "ani-cli-advanced";
|
|
||||||
runtimeInputs = with pkgs; [ ani-cli ];
|
|
||||||
text = ''
|
|
||||||
selection=$(printf "\\ueacf Continue\n\\uf002 Search\n\\uea81 Delete History" | rofi -p "ani-cli" -dmenu -i)
|
|
||||||
case $selection in
|
|
||||||
*Search) ani-cli --rofi;;
|
|
||||||
*Continue) ani-cli --rofi -c;;
|
|
||||||
"*Delete History") ani-cli -D;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
in
|
|
||||||
{
|
|
||||||
config = mkIf cfg.enable {
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
rofi-wayland
|
|
||||||
waybar
|
|
||||||
hyprpaper
|
|
||||||
hyprlock
|
|
||||||
hyprland
|
|
||||||
hyprshade
|
|
||||||
lxqt.lxqt-openssh-askpass
|
|
||||||
|
|
||||||
dunst
|
|
||||||
# wireplumber
|
|
||||||
pciutils # lspci is needed by hyprland
|
|
||||||
dunst
|
|
||||||
swww
|
|
||||||
flameshot
|
|
||||||
];
|
|
||||||
|
|
||||||
# hyprland settings
|
|
||||||
home-manager.users.${username} = {
|
|
||||||
programs.waybar.enable = true;
|
|
||||||
wayland.windowManager.hyprland.settings = {
|
|
||||||
input = {
|
|
||||||
kb_layout = "us";
|
|
||||||
natural_scroll = true;
|
|
||||||
sensitivity = 0;
|
|
||||||
kb_variant = "altgr-intl";
|
|
||||||
};
|
|
||||||
general = {
|
|
||||||
gaps_in = 2;
|
|
||||||
gaps_out = 1;
|
|
||||||
border_size = 1;
|
|
||||||
"col.active_border" = "rgba(33ccffee) rgba(00ff99ee) 45deg";
|
|
||||||
"col.inactive_border" = "rgba(595959aa)";
|
|
||||||
layout = "dwindle";
|
|
||||||
};
|
|
||||||
decoration.rounding = 5;
|
|
||||||
misc.disable_hyprland_logo = true;
|
|
||||||
animations = {
|
|
||||||
enabled = true;
|
|
||||||
# Some default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more
|
|
||||||
|
|
||||||
bezier = ["myBezier, 0.05, 0.9, 0.1, 1.05"];
|
|
||||||
|
|
||||||
animation = [
|
|
||||||
"windowsOut, 1, 7, default, popin 80%"
|
|
||||||
"border, 1, 10, default"
|
|
||||||
"borderangle, 1, 8, default"
|
|
||||||
"fade, 1, 7, default"
|
|
||||||
"workspaces, 1, 6, default"
|
|
||||||
"windows, 1, 7, myBezier"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
xwayland = {
|
|
||||||
force_zero_scaling = true;
|
|
||||||
};
|
|
||||||
gestures.workspace_swipe = true;
|
|
||||||
debug.enable_stdout_logs = true;
|
|
||||||
windowrulev2 = [
|
|
||||||
"float,title:bluetuith"
|
|
||||||
];
|
|
||||||
bind = [
|
|
||||||
# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more
|
|
||||||
"SUPER, RETURN, exec, alacritty"
|
|
||||||
"SUPER SHIFT, RETURN, exec, rofi -show drun"
|
|
||||||
"SUPER SHIFT, Q, killactive,"
|
|
||||||
"SUPER, M, exit, "
|
|
||||||
"SUPER, B, exec, alacritty --title bluetuith -e bluetuith"
|
|
||||||
"SUPER, A, exec, ${ani-script}/bin/ani-cli-advanced"
|
|
||||||
"SUPER SHIFT, A, exec, ani-cli --rofi -c"
|
|
||||||
"SUPER, f, fullscreen"
|
|
||||||
"SUPER, E, exec, nautilus --new-window "
|
|
||||||
"SUPER, V, togglefloating, "
|
|
||||||
"SUPER, P, pseudo, # dwindle"
|
|
||||||
"SUPER, S, togglesplit, # dwindle"
|
|
||||||
"SUPER, C, exec, /home/vali/.config/wallpaper/colorscheme-setter"
|
|
||||||
",PRINT, exec, flameshot"
|
|
||||||
|
|
||||||
|
|
||||||
# Move focus with mainMod + arrow keys"
|
|
||||||
"SUPER, h, movefocus, l"
|
|
||||||
"SUPER, l, movefocus, r"
|
|
||||||
"SUPER, k, movefocus, u"
|
|
||||||
"SUPER, j, movefocus, d"
|
|
||||||
|
|
||||||
# move window to next / previous workspace"
|
|
||||||
"SUPER CTRL, h, movetoworkspace, r-1"
|
|
||||||
"SUPER CTRL, l, movetoworkspace, r+1"
|
|
||||||
|
|
||||||
# move to next / previous workspace"
|
|
||||||
"SUPER CTRL, j, workspace, r-1"
|
|
||||||
"SUPER CTRL, k, workspace, r+1"
|
|
||||||
|
|
||||||
|
|
||||||
# Switch workspaces with mainMod + [0-9]"
|
|
||||||
"SUPER, 1, workspace, 1"
|
|
||||||
"SUPER, 2, workspace, 2"
|
|
||||||
"SUPER, 3, workspace, 3"
|
|
||||||
"SUPER, 4, workspace, 4"
|
|
||||||
"SUPER, 5, workspace, 5"
|
|
||||||
"SUPER, 6, workspace, 6"
|
|
||||||
"SUPER, 7, workspace, 7"
|
|
||||||
"SUPER, 8, workspace, 8"
|
|
||||||
"SUPER, 9, workspace, 9"
|
|
||||||
"SUPER, 0, workspace, 10"
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Move active window to a workspace with mainMod + SHIFT + [0-9]"
|
|
||||||
"SUPER SHIFT, 1, movetoworkspace, 1"
|
|
||||||
"SUPER SHIFT, 2, movetoworkspace, 2"
|
|
||||||
"SUPER SHIFT, 3, movetoworkspace, 3"
|
|
||||||
"SUPER SHIFT, 4, movetoworkspace, 4"
|
|
||||||
"SUPER SHIFT, 5, movetoworkspace, 5"
|
|
||||||
"SUPER SHIFT, 6, movetoworkspace, 6"
|
|
||||||
"SUPER SHIFT, 7, movetoworkspace, 7"
|
|
||||||
"SUPER SHIFT, 8, movetoworkspace, 8"
|
|
||||||
"SUPER SHIFT, 9, movetoworkspace, 9"
|
|
||||||
"SUPER SHIFT, 0, movetoworkspace, 10"
|
|
||||||
|
|
||||||
|
|
||||||
"SUPER SHIFT, h, movewindow, l"
|
|
||||||
"SUPER SHIFT, l, movewindow, r"
|
|
||||||
"SUPER SHIFT, k, movewindow, u"
|
|
||||||
"SUPER SHIFT, j, movewindow, d"
|
|
||||||
|
|
||||||
# resize windows
|
|
||||||
"SUPER, -, resizeactive, -30"
|
|
||||||
"SUPER, +, resizeactive, 30"
|
|
||||||
|
|
||||||
# Scroll through existing workspaces with mainMod + scroll"
|
|
||||||
"SUPER, mouse_down, workspace, e+1"
|
|
||||||
"SUPER, mouse_up, workspace, e-1"
|
|
||||||
|
|
||||||
# Move/resize windows with mainMod + LMB/RMB and dragging
|
|
||||||
"SUPER, mouse:272, movewindow"
|
|
||||||
# "bindm = SUPER, mouse:273, resizewindow"
|
|
||||||
];
|
|
||||||
binde = [
|
|
||||||
",XF86MonBrightnessUp, exec, brightnessctl set 10%+"
|
|
||||||
",XF86MonBrightnessDown, exec, brightnessctl set 10%-"
|
|
||||||
# Example volume button that allows press and hold, volume limited to 150%"
|
|
||||||
",XF86AudioRaiseVolume, exec, wpctl set-volume -l 1.5 @DEFAULT_AUDIO_SINK@ 5%+"
|
|
||||||
# Example volume button that will activate even while an input inhibitor is active"
|
|
||||||
",XF86AudioLowerVolume, exec, wpctl set-volume -l 1.5 @DEFAULT_AUDIO_SINK@ 5%-"
|
|
||||||
",XF86AudioMute, exec, $ wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,67 +0,0 @@
|
||||||
# which default packages to use for the system
|
|
||||||
{ inputs, outputs, profile-config, pkgs, ...}:
|
|
||||||
|
|
||||||
let
|
|
||||||
python-packages = ps: with ps; [
|
|
||||||
pandas
|
|
||||||
numpy
|
|
||||||
opencv4
|
|
||||||
ipython
|
|
||||||
];
|
|
||||||
in
|
|
||||||
{
|
|
||||||
# List packages installed in system profile. To search, run:
|
|
||||||
# $ nix search wget
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
(python3.withPackages python-packages)
|
|
||||||
vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
|
|
||||||
neovim
|
|
||||||
eza # exa is unmaintained
|
|
||||||
hwinfo
|
|
||||||
zsh
|
|
||||||
git
|
|
||||||
broot
|
|
||||||
unzip
|
|
||||||
rsync
|
|
||||||
# neofetch
|
|
||||||
# fastfetch has the option to set a timeout for
|
|
||||||
# for each module, which makes it dramatically faster
|
|
||||||
# as counting the number of packages takes over 800 (!!!) ms,
|
|
||||||
# which makes it very unpleasant to use as default thing
|
|
||||||
# to display when starting a terminal
|
|
||||||
zathura
|
|
||||||
fastfetch
|
|
||||||
wlr-randr
|
|
||||||
alacritty
|
|
||||||
wget
|
|
||||||
gnumake
|
|
||||||
zoxide
|
|
||||||
python3
|
|
||||||
nodejs
|
|
||||||
gcc
|
|
||||||
cargo
|
|
||||||
rustc
|
|
||||||
rust-analyzer
|
|
||||||
clippy
|
|
||||||
lsof
|
|
||||||
htop
|
|
||||||
okular
|
|
||||||
smartmontools
|
|
||||||
networkmanager
|
|
||||||
pkg-config
|
|
||||||
sof-firmware # audio
|
|
||||||
nix-index
|
|
||||||
# --------- optional
|
|
||||||
gnome.eog
|
|
||||||
sherlock
|
|
||||||
xfce.thunar
|
|
||||||
|
|
||||||
plocate
|
|
||||||
alsa-utils
|
|
||||||
|
|
||||||
# partition management
|
|
||||||
parted
|
|
||||||
gnufdisk
|
|
||||||
lapce
|
|
||||||
];
|
|
||||||
}
|
|
|
@ -1 +0,0 @@
|
||||||
/home/dragyx/.config/waybar/catppuccin.css
|
|
|
@ -1,170 +0,0 @@
|
||||||
{ config, pkgs, ... }:
|
|
||||||
|
|
||||||
# TODO: Make this more generic / reusable
|
|
||||||
let
|
|
||||||
username = config.modules.other.system.username;
|
|
||||||
gitPath = config.modules.other.system.gitPath;
|
|
||||||
|
|
||||||
variant = "frappe";
|
|
||||||
|
|
||||||
|
|
||||||
catpuccin-rofi = pkgs.stdenv.mkDerivation {
|
|
||||||
pname = "catppuccin-rofi";
|
|
||||||
version = "0";
|
|
||||||
src = pkgs.fetchFromGitHub {
|
|
||||||
owner = "catppuccin";
|
|
||||||
repo = "rofi";
|
|
||||||
rev = "5350da41a11814f950c3354f090b90d4674a95ce";
|
|
||||||
sha256 = "sha256-DNorfyl3C4RBclF2KDgwvQQwixpTwSRu7fIvihPN8JY=";
|
|
||||||
};
|
|
||||||
installPhase = ''
|
|
||||||
mkdir -p $out/share/
|
|
||||||
mkdir -p $out/.config/
|
|
||||||
|
|
||||||
cp -r $src/basic/.config/rofi/* $out/.config/
|
|
||||||
cp -r $src/basic/.local/share/rofi/themes/* $out/share/
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
grub-theme = pkgs.stdenv.mkDerivation {
|
|
||||||
pname = "catppuccin-grub";
|
|
||||||
version = "0";
|
|
||||||
src = pkgs.fetchFromGitHub {
|
|
||||||
owner = "catppuccin";
|
|
||||||
repo = "grub";
|
|
||||||
rev = "803c5df0e83aba61668777bb96d90ab8f6847106";
|
|
||||||
sha256 = "sha256-/bSolCta8GCZ4lP0u5NVqYQ9Y3ZooYCNdTwORNvR7M0=";
|
|
||||||
};
|
|
||||||
installPhase = ''
|
|
||||||
# runHook preInstall
|
|
||||||
|
|
||||||
|
|
||||||
mkdir -p $out/
|
|
||||||
|
|
||||||
cp -r $src/src/catppuccin-mocha-grub-theme/* $out/
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# runHook postInstall
|
|
||||||
'';
|
|
||||||
|
|
||||||
};
|
|
||||||
# catppuccin-sddm-corners-patched = pkgs.catppuccin-sddm-corners.overrideAttrs (prevAttrs: {
|
|
||||||
|
|
||||||
# postInstall = (prevAttrs.postInstall or "") + ''
|
|
||||||
# sed -i -E "s/passwordMaskDelay: [0-9]+/passwordMaskDelay: 0/" $out/share/sddm/themes/catppuccin-sddm-corners/components/PasswordPanel.qml
|
|
||||||
# '';
|
|
||||||
# });
|
|
||||||
catppuccin-sddm = pkgs.stdenv.mkDerivation rec {
|
|
||||||
pname="catppuccin-sddm";
|
|
||||||
version="1.0.0";
|
|
||||||
dontBuild = true;
|
|
||||||
src = pkgs.fetchFromGitHub {
|
|
||||||
owner = "catppuccin";
|
|
||||||
repo = "sddm";
|
|
||||||
rev = "v${version}";
|
|
||||||
sha256 = "sha256-SdpkuonPLgCgajW99AzJaR8uvdCPi4MdIxS5eB+Q9WQ=";
|
|
||||||
};
|
|
||||||
# nativeBuildInputs = with pkgs; [ qt6.qtsvg qt6.qtdeclarative ];
|
|
||||||
installPhase = ''
|
|
||||||
runHook preInstall
|
|
||||||
theme_dir="$out/share/sddm/themes/";
|
|
||||||
mkdir -p $theme_dir
|
|
||||||
|
|
||||||
for variant in "latte" "frappe" "macchiato" "mocha"; do
|
|
||||||
this_theme="$theme_dir/catppuccin-$variant"
|
|
||||||
mkdir "$this_theme"
|
|
||||||
cp -r $src/src/* $this_theme
|
|
||||||
# replace the theme name in the metadata file
|
|
||||||
sed -i -e "s/%%THEME%%/$variant/g" "$this_theme/metadata.desktop"
|
|
||||||
|
|
||||||
|
|
||||||
# handle items that are different per theme
|
|
||||||
cp "$src/pertheme/$variant.png" "$this_theme/preview.png"
|
|
||||||
cp "$src/pertheme/$variant.conf" "$this_theme/theme.conf"
|
|
||||||
done
|
|
||||||
|
|
||||||
runHook postInstall
|
|
||||||
'';
|
|
||||||
|
|
||||||
|
|
||||||
};
|
|
||||||
catppuccin-wallpapers = pkgs.stdenv.mkDerivation {
|
|
||||||
pname="catppuccin-wallpapers";
|
|
||||||
version = "0";
|
|
||||||
src = pkgs.fetchFromGitHub {
|
|
||||||
owner = "zhichaoh";
|
|
||||||
repo = "catppuccin-wallpapers";
|
|
||||||
rev = "1023077979591cdeca76aae94e0359da1707a60e";
|
|
||||||
sha256 = "sha256-h+cFlTXvUVJPRMpk32jYVDDhHu1daWSezFcvhJqDpmU=";
|
|
||||||
};
|
|
||||||
installPhase = ''
|
|
||||||
mkdir -p $out/
|
|
||||||
cp -r $src/* $out/
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
catppuccin = (pkgs.catppuccin.override {
|
|
||||||
inherit variant;
|
|
||||||
});
|
|
||||||
catppuccin-waybar = pkgs.stdenv.mkDerivation rec {
|
|
||||||
name = "catppuccin-waybar";
|
|
||||||
version = "1.1";
|
|
||||||
src = pkgs.fetchFromGitHub {
|
|
||||||
owner = "catppuccin";
|
|
||||||
repo = "waybar";
|
|
||||||
rev = "v${version}";
|
|
||||||
hash = "sha256-9lY+v1CTbpw2lREG/h65mLLw5KuT8OJdEPOb+NNC6Fo=";
|
|
||||||
};
|
|
||||||
installPhase = ''
|
|
||||||
runHook preInstall
|
|
||||||
mkdir -p $out
|
|
||||||
cp $src/themes/* $out/
|
|
||||||
|
|
||||||
runHook postInstall
|
|
||||||
'';
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
in
|
|
||||||
{
|
|
||||||
home-manager.users.${username} = {
|
|
||||||
xdg.configFile."rofi".source = "${catpuccin-rofi}/.config";
|
|
||||||
xdg.dataFile."rofi/themes".source = "${catpuccin-rofi}/share";
|
|
||||||
|
|
||||||
programs.waybar.style = ./waybar-style.css;
|
|
||||||
# add catppuccin theme to waybar
|
|
||||||
xdg.configFile."waybar/catppuccin.css".source = "${catppuccin-waybar}/${variant}.css";
|
|
||||||
|
|
||||||
wayland.windowManager.hyprland.settings.exec-once = [
|
|
||||||
"hyprshade auto"
|
|
||||||
"dunst"
|
|
||||||
"hyprpaper"
|
|
||||||
];
|
|
||||||
|
|
||||||
xdg.configFile."hypr/hyprpaper.conf" = { #TODO: generic path
|
|
||||||
text = ''
|
|
||||||
preload = ${catppuccin-wallpapers}/landscapes/Rainnight.jpg
|
|
||||||
wallpaper = ,${catppuccin-wallpapers}/landscapes/Rainnight.jpg
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
# catppuccin-sddm-corners-patched
|
|
||||||
catppuccin
|
|
||||||
catppuccin-sddm
|
|
||||||
|
|
||||||
# deps of catppuccin-sddm-corners-patched
|
|
||||||
libsForQt5.qt5.qtgraphicaleffects
|
|
||||||
libsForQt5.qt5.qtsvg
|
|
||||||
libsForQt5.qt5.qtquickcontrols
|
|
||||||
qt6.qtsvg qt6.qtdeclarative
|
|
||||||
qt6.qtwayland
|
|
||||||
];
|
|
||||||
services.displayManager.sddm = {
|
|
||||||
theme = "catppuccin-${variant}";
|
|
||||||
package = pkgs.kdePackages.sddm; # NEEDED for the catppuccin theme
|
|
||||||
};
|
|
||||||
|
|
||||||
boot.loader.grub.theme = grub-theme;
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,60 +0,0 @@
|
||||||
@import "catppuccin.css";
|
|
||||||
|
|
||||||
/* Reset all styles */
|
|
||||||
* {
|
|
||||||
min-height: 0;
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
box-shadow: none;
|
|
||||||
text-shadow: none;
|
|
||||||
-gtk-icon-shadow: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* The whole bar */
|
|
||||||
#waybar {
|
|
||||||
background: rgba(0, 0, 0, 0);
|
|
||||||
/*background-image: linear-gradient(to left, rgba(255, 100, 100, 100), rgba(255, 100, 100, 0));*/
|
|
||||||
/* background: linear-gradient(90deg, @rosewater 0%, rgba(255,255,255,0) 25%, rgba(255,255,255,0) 75%, @teal 100%); */
|
|
||||||
color: @text;
|
|
||||||
font-family: JetBrains Mono;
|
|
||||||
font-size: 13pt;
|
|
||||||
}
|
|
||||||
|
|
||||||
#widget {
|
|
||||||
background: @base;
|
|
||||||
}
|
|
||||||
|
|
||||||
#workspaces button {
|
|
||||||
margin: 0 5px;
|
|
||||||
padding: 2px 3px 0 3px;
|
|
||||||
border-width: 0 0 2px 0;
|
|
||||||
border-color: @pink;
|
|
||||||
border-style: solid;
|
|
||||||
color: @text;
|
|
||||||
border-radius: 0;
|
|
||||||
background-color: transparent;
|
|
||||||
}
|
|
||||||
|
|
||||||
#workspaces button.active {
|
|
||||||
background-color: @crust;
|
|
||||||
border-color: @yellow;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
#workspaces button:hover {
|
|
||||||
background-color: @crust;
|
|
||||||
box-shadow: none;
|
|
||||||
text-shadow: none;
|
|
||||||
box-shadow: none; /* Remove predefined box-shadow */
|
|
||||||
text-shadow: none; /* Remove predefined text-shadow */
|
|
||||||
background: none; /* Remove predefined background color (white) */
|
|
||||||
transition: none; /* Disable predefined animations */
|
|
||||||
}
|
|
||||||
|
|
||||||
#workspaces button.focused {
|
|
||||||
background-color: @crust;
|
|
||||||
}
|
|
||||||
|
|
||||||
#workspaces button.urgent {
|
|
||||||
background-color: @maroon;
|
|
||||||
}
|
|
|
@ -1,136 +0,0 @@
|
||||||
/* Styles */
|
|
||||||
|
|
||||||
@define-color bar-back rgba(40, 40, 40, 0.2);
|
|
||||||
@define-color widget rgba(40, 40, 40, 0.8);
|
|
||||||
@define-color warning @bryellow;
|
|
||||||
@define-color critical red;
|
|
||||||
@define-color mode black;
|
|
||||||
@define-color unfocused @widget;
|
|
||||||
@define-color active rgba(100, 40, 40, 0.7);
|
|
||||||
@define-color focused red;/*rgba(100, 40, 40, 0.7);*/
|
|
||||||
@define-color inactive purple;
|
|
||||||
@define-color fg1 rgba(0, 0, 255, 1);
|
|
||||||
@define-color fg2 rgba(255, 0, 0, 1);
|
|
||||||
|
|
||||||
/* Reset all styles */
|
|
||||||
* {
|
|
||||||
border: none;
|
|
||||||
border-radius: 0;
|
|
||||||
min-height: 0;
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
box-shadow: none;
|
|
||||||
text-shadow: none;
|
|
||||||
-gtk-icon-shadow: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* The whole bar */
|
|
||||||
#waybar {
|
|
||||||
background: @bar-back;
|
|
||||||
/*
|
|
||||||
background: rgba(0, 0, 0, 0);
|
|
||||||
*/
|
|
||||||
/*background-image: linear-gradient(to left, rgba(255, 100, 100, 100), rgba(255, 100, 100, 0));*/
|
|
||||||
background: linear-gradient(90deg, rgba(0,212,255,0.19089642693014708) 0%, rgba(255,255,255,0) 25%, rgba(255,255,255,0) 75%, rgba(248,0,255,0.2105042700674019) 100%);
|
|
||||||
color: @white;
|
|
||||||
font-family: JetBrains Mono;
|
|
||||||
font-size: 13pt;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Each module */
|
|
||||||
#battery,
|
|
||||||
#clock,
|
|
||||||
#cpu,
|
|
||||||
#language,
|
|
||||||
#memory,
|
|
||||||
#mode,
|
|
||||||
#network,
|
|
||||||
#pulseaudio-slider,
|
|
||||||
#temperature,
|
|
||||||
#tray,
|
|
||||||
#backlight,
|
|
||||||
#wireplumber,
|
|
||||||
#idle_inhibitor,
|
|
||||||
#disk,
|
|
||||||
#user,
|
|
||||||
#keyboard-state,
|
|
||||||
#workspaces button,
|
|
||||||
#custom-os-icon,
|
|
||||||
#mpris {
|
|
||||||
background: @widget;
|
|
||||||
margin: 0 0.2em 0 0.2em;
|
|
||||||
padding: 0em 0.3em 0em 0.3em;
|
|
||||||
border-radius: 0.35em;
|
|
||||||
}
|
|
||||||
|
|
||||||
#custom-os-icon {
|
|
||||||
min-width: 0.8em;
|
|
||||||
padding: 0 0.5em 0 0.1em; /*Otherwise the icon is not centered properly*/
|
|
||||||
}
|
|
||||||
|
|
||||||
#tray {
|
|
||||||
min-width: 0.8em;
|
|
||||||
}
|
|
||||||
|
|
||||||
#keyboard-state {
|
|
||||||
min-width: 2em;
|
|
||||||
color: white;
|
|
||||||
}
|
|
||||||
|
|
||||||
#workspaces button {
|
|
||||||
opacity: 100;
|
|
||||||
color: white;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Inactive (on unfocused output) */
|
|
||||||
#workspaces button.inactive {
|
|
||||||
background: @inactive;
|
|
||||||
}
|
|
||||||
|
|
||||||
#workspaces button.active {
|
|
||||||
background: @active;
|
|
||||||
}
|
|
||||||
|
|
||||||
#custom-os-icon {
|
|
||||||
color: rgba(150, 150, 255, 1);
|
|
||||||
margin: 0 1em 0 0.2em;
|
|
||||||
}
|
|
||||||
|
|
||||||
#wireplumber {
|
|
||||||
/*color: @fg1;*/
|
|
||||||
border-radius: 0 0.3em 0.3em 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
#backlight {
|
|
||||||
/*color: @fg2;*/
|
|
||||||
border-radius: 0.3em 0 0 0.3em;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* Active (on focused output) */
|
|
||||||
#workspaces button.focused {
|
|
||||||
opacity: 100;
|
|
||||||
background: @focused;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Contains an urgent window */
|
|
||||||
#workspaces button.urgent {
|
|
||||||
background: @warning;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Style when cursor is on the button */
|
|
||||||
#workspaces button:hover {
|
|
||||||
opacity: 110;
|
|
||||||
background: @focused;
|
|
||||||
}
|
|
||||||
|
|
||||||
#clock.date {
|
|
||||||
border-radius: 0.3em 0 0 0.3em;
|
|
||||||
min-width: 7em;
|
|
||||||
}
|
|
||||||
#clock.time{
|
|
||||||
/*border-radius: 0 0.3em 0.3em 0;*/
|
|
||||||
border-radius: 0;
|
|
||||||
min-width: 4em;
|
|
||||||
}
|
|
|
@ -1,197 +0,0 @@
|
||||||
{ config, lib, pkgs, ... }:
|
|
||||||
|
|
||||||
with lib;
|
|
||||||
let
|
|
||||||
username = config.modules.other.system.username;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
environment.systemPackages = with pkgs; [ waybar ];
|
|
||||||
home-manager.users.${username} = {
|
|
||||||
programs.waybar = {
|
|
||||||
systemd.enable = true;
|
|
||||||
settings = {
|
|
||||||
main = {
|
|
||||||
layer = "top";
|
|
||||||
position = "top";
|
|
||||||
modules-left = [
|
|
||||||
# "custom/os-icon"
|
|
||||||
"hyprland/workspaces"
|
|
||||||
];
|
|
||||||
modules-center = [
|
|
||||||
"backlight"
|
|
||||||
"clock#time"
|
|
||||||
"wireplumber"
|
|
||||||
];
|
|
||||||
modules-right = [
|
|
||||||
"tray"
|
|
||||||
"network"
|
|
||||||
"battery"
|
|
||||||
];
|
|
||||||
# Modules
|
|
||||||
"custom/os-icon" = {
|
|
||||||
format = ""; #NixOS logo
|
|
||||||
};
|
|
||||||
battery = {
|
|
||||||
interval = 10;
|
|
||||||
states = {
|
|
||||||
warning = 30;
|
|
||||||
critical = 15;
|
|
||||||
};
|
|
||||||
format-time = "{H}:{M:02}";
|
|
||||||
format = "{icon} {capacity}%";
|
|
||||||
format-charging = " {capacity}%";
|
|
||||||
format-charging-full = " {capacity}%";
|
|
||||||
format-full = "{icon} {capacity}%";
|
|
||||||
format-icons = [
|
|
||||||
""
|
|
||||||
""
|
|
||||||
""
|
|
||||||
""
|
|
||||||
""
|
|
||||||
];
|
|
||||||
tooltip = false;
|
|
||||||
};
|
|
||||||
"clock#time" = {
|
|
||||||
interval = 10;
|
|
||||||
format = "{:%H:%M}";
|
|
||||||
tooltip = false;
|
|
||||||
};
|
|
||||||
"clock#date" = {
|
|
||||||
interval = 20;
|
|
||||||
format = "{:%d.%m.%Y}";
|
|
||||||
tooltip = false;
|
|
||||||
};
|
|
||||||
memory = {
|
|
||||||
interval = 5;
|
|
||||||
format = " {used:0.1f}G/{total:0.1f}G";
|
|
||||||
states = {
|
|
||||||
warning = 70;
|
|
||||||
critical = 90;
|
|
||||||
};
|
|
||||||
tooltip = false;
|
|
||||||
};
|
|
||||||
network = {
|
|
||||||
interval = 5;
|
|
||||||
format-wifi = "{icon} {essid}";
|
|
||||||
format-ethernet = " {ifname}";
|
|
||||||
format-disconnected = "2 Offline";
|
|
||||||
format-alt = " {bandwidthDownBytes} {bandwidthUpBytes} {ipaddr}/{cidr}";
|
|
||||||
format-icons = [
|
|
||||||
" "
|
|
||||||
" "
|
|
||||||
" "
|
|
||||||
" "
|
|
||||||
" "
|
|
||||||
];
|
|
||||||
tooltip = false;
|
|
||||||
};
|
|
||||||
"hyprland/mode" = {
|
|
||||||
format = "test{}";
|
|
||||||
tooltip = false;
|
|
||||||
};
|
|
||||||
"hyprland/window" = {
|
|
||||||
format = "{}";
|
|
||||||
max-length = 30;
|
|
||||||
tooltip = false;
|
|
||||||
rewrite = {
|
|
||||||
"([Aa]lacritty|kitty)" = " $1";
|
|
||||||
"(.*) .{15} Mozilla Firefox" = " $1";
|
|
||||||
"(^Spotify.*)" = " $1";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
"hyprland/workspaces" = {
|
|
||||||
disable-scroll-wraparound = true;
|
|
||||||
smooth-scrolling-threshold = 4;
|
|
||||||
enable-bar-scroll = true;
|
|
||||||
format = "{icon}";
|
|
||||||
format-icons = {
|
|
||||||
"1" = "Ⅰ";
|
|
||||||
"2" = "Ⅱ";
|
|
||||||
"3" = "Ⅲ";
|
|
||||||
"4" = "Ⅳ";
|
|
||||||
"5" = "Ⅴ";
|
|
||||||
"6" = "Ⅵ";
|
|
||||||
"7" = "Ⅶ";
|
|
||||||
"8" = "Ⅷ";
|
|
||||||
"9" = "Ⅸ";
|
|
||||||
"10" = "Ⅹ";
|
|
||||||
"11" = "Ⅺ";
|
|
||||||
"12" = "Ⅻ";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
"pulseaudio/slider" = {
|
|
||||||
min = 0;
|
|
||||||
max = 100;
|
|
||||||
orientation = "horizontal";
|
|
||||||
};
|
|
||||||
pulseaudio = {
|
|
||||||
format = "{icon} {volume}%";
|
|
||||||
format-bluetooth = "{icon} {volume}%";
|
|
||||||
format-muted = "";
|
|
||||||
format-icons = {
|
|
||||||
headphone = "";
|
|
||||||
hands-free = "";
|
|
||||||
headset = "";
|
|
||||||
phone = "";
|
|
||||||
portable = "";
|
|
||||||
car = "";
|
|
||||||
default = [
|
|
||||||
""
|
|
||||||
""
|
|
||||||
];
|
|
||||||
};
|
|
||||||
scroll-step = 1;
|
|
||||||
on-click = "pactl set-sink-mute @DEFAULT_SINK@ toggle";
|
|
||||||
tooltip = false;
|
|
||||||
};
|
|
||||||
user = {};
|
|
||||||
temperature = {
|
|
||||||
critical-threshold = 90;
|
|
||||||
interval = 5;
|
|
||||||
format = " {icon} {temperatureC}°";
|
|
||||||
format-icons = [
|
|
||||||
""
|
|
||||||
""
|
|
||||||
""
|
|
||||||
""
|
|
||||||
""
|
|
||||||
];
|
|
||||||
tooltip = false;
|
|
||||||
};
|
|
||||||
backlight = {
|
|
||||||
format = "{percent}% {icon} ";
|
|
||||||
format-icons = [
|
|
||||||
""
|
|
||||||
""
|
|
||||||
""
|
|
||||||
""
|
|
||||||
""
|
|
||||||
""
|
|
||||||
""
|
|
||||||
""
|
|
||||||
""
|
|
||||||
""
|
|
||||||
""
|
|
||||||
];
|
|
||||||
};
|
|
||||||
wireplumber = {
|
|
||||||
format = "{icon} {volume}%";
|
|
||||||
format-muted = "";
|
|
||||||
format-icons = [
|
|
||||||
""
|
|
||||||
""
|
|
||||||
""
|
|
||||||
];
|
|
||||||
};
|
|
||||||
tray = {
|
|
||||||
icon-size = 18;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,214 +0,0 @@
|
||||||
{ config, pkgs, ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
imports = [
|
|
||||||
../common/default.nix
|
|
||||||
./packages.nix
|
|
||||||
];
|
|
||||||
|
|
||||||
|
|
||||||
nixpkgs.config.allowUnfree = true;
|
|
||||||
time.timeZone = "Europe/Zurich";
|
|
||||||
security.sudo.package = pkgs.sudo.override { withInsults = true; };
|
|
||||||
|
|
||||||
services.displayManager = {
|
|
||||||
sessionPackages = [ pkgs.hyprland ]; # pkgs.gnome.gnome-session.sessions ];
|
|
||||||
defaultSession = "hyprland";
|
|
||||||
sddm = {
|
|
||||||
enable = true;
|
|
||||||
wayland.enable = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
hardware.bluetooth.enable = true;
|
|
||||||
hardware.bluetooth.powerOnBoot = true;
|
|
||||||
|
|
||||||
hardware.opengl.driSupport = true;
|
|
||||||
hardware.opengl.driSupport32Bit = true;
|
|
||||||
hardware.opengl.enable = true;
|
|
||||||
|
|
||||||
services.logrotate.checkConfig = false;
|
|
||||||
|
|
||||||
networking.hostName = "flocke"; # Define your hostname.
|
|
||||||
networking.hostId = "adf23c31";
|
|
||||||
networking.interfaces.wlp1s0.useDHCP = true;
|
|
||||||
networking.networkmanager.enable = true;
|
|
||||||
environment.systemPackages = with pkgs; [ networkmanager ]; # cli tool for managing connections
|
|
||||||
|
|
||||||
boot = {
|
|
||||||
kernelParams = [ ];
|
|
||||||
initrd.supportedFilesystems = [ "ext4" ];
|
|
||||||
supportedFilesystems = [ "ext4" ];
|
|
||||||
loader = {
|
|
||||||
efi.efiSysMountPoint = "/boot";
|
|
||||||
efi.canTouchEfiVariables = true;
|
|
||||||
grub = {
|
|
||||||
enable = true;
|
|
||||||
device = "nodev";
|
|
||||||
efiSupport = true;
|
|
||||||
enableCryptodisk = true;
|
|
||||||
useOSProber = true;
|
|
||||||
extraEntries = ''
|
|
||||||
menuentry "Reboot" {
|
|
||||||
reboot
|
|
||||||
}
|
|
||||||
menuentry "Poweroff" {
|
|
||||||
halt
|
|
||||||
}
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
initrd.luks.devices = {
|
|
||||||
cryptroot = {
|
|
||||||
device = "/dev/disk/by-uuid/ec5ff3a1-9b39-4ba5-aa0f-19e898b4f6e8";
|
|
||||||
preLVM = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
# see https://nixos.wiki/wiki/AMD_GPU
|
|
||||||
services.xserver.videoDrivers = [ "amdgpu" ];
|
|
||||||
systemd.tmpfiles.rules = [
|
|
||||||
"L+ /opt/rocm/hip - - - - ${pkgs.rocmPackages.clr}"
|
|
||||||
];
|
|
||||||
hardware.opengl.extraPackages = with pkgs; [
|
|
||||||
rocmPackages.clr.icd
|
|
||||||
];
|
|
||||||
|
|
||||||
services.power-profiles-daemon.enable = false;
|
|
||||||
|
|
||||||
# stock nixos power management
|
|
||||||
powerManagement.enable = true;
|
|
||||||
|
|
||||||
services.tlp = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
CPU_SCALING_GOVERNOR_ON_AC = "performance";
|
|
||||||
CPU_SCALING_GOVERNOR_ON_BAT = "powersave";
|
|
||||||
|
|
||||||
CPU_ENERGY_PERF_POLICY_ON_BAT = "power";
|
|
||||||
CPU_ENERGY_PERF_POLICY_ON_AC = "performance";
|
|
||||||
|
|
||||||
CPU_MIN_PERF_ON_AC = 0;
|
|
||||||
CPU_MAX_PERF_ON_AC = 100;
|
|
||||||
CPU_MIN_PERF_ON_BAT = 0;
|
|
||||||
CPU_MAX_PERF_ON_BAT = 20;
|
|
||||||
|
|
||||||
#Optional helps save long term battery health
|
|
||||||
START_CHARGE_THRESH_BAT0 = 40; # 40 and bellow it starts to charge
|
|
||||||
STOP_CHARGE_THRESH_BAT0 = 85; # 80 and above it stops charging
|
|
||||||
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
swapDevices = [ {
|
|
||||||
device = "/var/lib/swapfile";
|
|
||||||
size = 32*1024;
|
|
||||||
} ];
|
|
||||||
|
|
||||||
|
|
||||||
# be nice to your ssds
|
|
||||||
services.fstrim.enable = true;
|
|
||||||
# services.xserver.enable = pkgs.lib.mkForce false;
|
|
||||||
|
|
||||||
security.polkit.enable = true;
|
|
||||||
home-manager.users."dragyx".home.packages = with pkgs; [ vesktop ];
|
|
||||||
|
|
||||||
# Mainly for coding weekend
|
|
||||||
services.hardware.bolt.enable = true;
|
|
||||||
|
|
||||||
modules = {
|
|
||||||
other = {
|
|
||||||
system = rec {
|
|
||||||
hostname = "flocke";
|
|
||||||
username = "dragyx";
|
|
||||||
gitPath = "/home/${username}/repos/nichts";
|
|
||||||
monitors = [
|
|
||||||
{
|
|
||||||
name = "LaptopMain";
|
|
||||||
device = "eDP-1";
|
|
||||||
resolution = {
|
|
||||||
x = 2256;
|
|
||||||
y = 1504;
|
|
||||||
};
|
|
||||||
scale = 1.175;
|
|
||||||
refresh_rate = 60;
|
|
||||||
position = {
|
|
||||||
x = 0;
|
|
||||||
y = 0;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
rec {
|
|
||||||
name = "CodingWeekend";
|
|
||||||
device = "DP-9";
|
|
||||||
resolution = {
|
|
||||||
x = 2560;
|
|
||||||
y = 1440;
|
|
||||||
};
|
|
||||||
refresh_rate = 60;
|
|
||||||
scale = 1;
|
|
||||||
position = {
|
|
||||||
x = -152;
|
|
||||||
y = -resolution.y;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
rec {
|
|
||||||
name = "CodingWeekend2";
|
|
||||||
device = "DP-10";
|
|
||||||
resolution = {
|
|
||||||
x = 2560;
|
|
||||||
y = 1440;
|
|
||||||
};
|
|
||||||
refresh_rate = 60;
|
|
||||||
scale = 1;
|
|
||||||
position = {
|
|
||||||
x = -152;
|
|
||||||
y = -resolution.y;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
];
|
|
||||||
wayland = true;
|
|
||||||
};
|
|
||||||
home-manager = {
|
|
||||||
enable = true;
|
|
||||||
enableDirenv = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
programs = {
|
|
||||||
vesktop.enable = false;
|
|
||||||
btop.enable = true;
|
|
||||||
mpv.enable = true;
|
|
||||||
schizofox.enable = false;
|
|
||||||
obs.enable = true;
|
|
||||||
vivado.enable = true;
|
|
||||||
rofi.enable = true;
|
|
||||||
zathura.enable = true;
|
|
||||||
# neovim.enable = true;
|
|
||||||
git = {
|
|
||||||
enable = true;
|
|
||||||
userName = "Dragyx";
|
|
||||||
userEmail = "66752602+Dragyx@users.noreply.github.com";
|
|
||||||
defaultBranch = "main";
|
|
||||||
};
|
|
||||||
starship.enable = true;
|
|
||||||
zsh = {
|
|
||||||
enable = true;
|
|
||||||
profiling = false;
|
|
||||||
};
|
|
||||||
neovim-old.enable = true;
|
|
||||||
};
|
|
||||||
services = {
|
|
||||||
pipewire.enable = true;
|
|
||||||
};
|
|
||||||
WM.hyprland.enable = true;
|
|
||||||
WM.hyprland.gnome-keyring = true;
|
|
||||||
};
|
|
||||||
# This value determines the NixOS release from which the default
|
|
||||||
# settings for stateful data, like file locations and database versions
|
|
||||||
# on your system were taken. It‘s perfectly fine and recommended to leave
|
|
||||||
# this value at the release version of the first install of this system.
|
|
||||||
# Before changing this value read the documentation for this option
|
|
||||||
# (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
|
|
||||||
system.stateVersion = "21.11"; # Did you read the comment?
|
|
||||||
}
|
|
|
@ -1,55 +0,0 @@
|
||||||
# which default packages to use for the system
|
|
||||||
{ inputs, outputs, profile-config, pkgs, ...}:
|
|
||||||
|
|
||||||
let
|
|
||||||
python-packages = ps: with ps; [
|
|
||||||
pandas
|
|
||||||
numpy
|
|
||||||
opencv4
|
|
||||||
ipython
|
|
||||||
];
|
|
||||||
in
|
|
||||||
{
|
|
||||||
|
|
||||||
# List packages installed in system profile. To search, run:
|
|
||||||
# $ nix search wget
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
# inputs.vivado2019flake.vivado-2019_2
|
|
||||||
|
|
||||||
# security audits
|
|
||||||
lynis
|
|
||||||
element-desktop
|
|
||||||
jetbrains.idea-community
|
|
||||||
jetbrains.rust-rover
|
|
||||||
baobab
|
|
||||||
amdvlk
|
|
||||||
texlive.combined.scheme-full
|
|
||||||
android-tools
|
|
||||||
signal-desktop
|
|
||||||
nextcloud-client
|
|
||||||
# etcher
|
|
||||||
vlc
|
|
||||||
audacity
|
|
||||||
thunderbird
|
|
||||||
eclipses.eclipse-java
|
|
||||||
openjdk
|
|
||||||
firefox
|
|
||||||
# pkgs.nordvpn # nur.repos.LuisChDev.nordvpn
|
|
||||||
material-icons
|
|
||||||
material-design-icons
|
|
||||||
libreoffice
|
|
||||||
gimp
|
|
||||||
spotify
|
|
||||||
okular
|
|
||||||
# minecraft
|
|
||||||
prismlauncher-unwrapped
|
|
||||||
glfw-wayland-minecraft
|
|
||||||
glxinfo
|
|
||||||
# window manager
|
|
||||||
flameshot
|
|
||||||
feh
|
|
||||||
# Animeeeeee!
|
|
||||||
ani-cli # The stable version is very outdated
|
|
||||||
];
|
|
||||||
|
|
||||||
}
|
|
Loading…
Add table
Add a link
Reference in a new issue