replace variant argument with modules
All checks were successful
/ build-all (push) Successful in 1m18s
All checks were successful
/ build-all (push) Successful in 1m18s
This commit is contained in:
parent
f2608d0a82
commit
1a0086f941
13 changed files with 586 additions and 577 deletions
20
flake.nix
20
flake.nix
|
|
@ -39,7 +39,6 @@
|
||||||
|
|
||||||
extraSpecialArgs = {
|
extraSpecialArgs = {
|
||||||
inherit pkgs-unstable;
|
inherit pkgs-unstable;
|
||||||
variant = "allegro";
|
|
||||||
};
|
};
|
||||||
|
|
||||||
modules = [
|
modules = [
|
||||||
|
|
@ -49,6 +48,10 @@
|
||||||
{ targets.genericLinux.enable = true; }
|
{ targets.genericLinux.enable = true; }
|
||||||
{ home.packages = [ inputs.st-flexipatch.packages.${system}.st ]; }
|
{ home.packages = [ inputs.st-flexipatch.packages.${system}.st ]; }
|
||||||
./home/syncthing.nix
|
./home/syncthing.nix
|
||||||
|
./home/allegro.nix
|
||||||
|
|
||||||
|
./home/ui.nix
|
||||||
|
./home/gui-software.nix
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -57,7 +60,6 @@
|
||||||
|
|
||||||
extraSpecialArgs = {
|
extraSpecialArgs = {
|
||||||
inherit pkgs-unstable;
|
inherit pkgs-unstable;
|
||||||
variant = "hs";
|
|
||||||
};
|
};
|
||||||
|
|
||||||
modules = [
|
modules = [
|
||||||
|
|
@ -71,7 +73,6 @@
|
||||||
|
|
||||||
extraSpecialArgs = {
|
extraSpecialArgs = {
|
||||||
inherit pkgs-unstable;
|
inherit pkgs-unstable;
|
||||||
variant = "hs";
|
|
||||||
};
|
};
|
||||||
|
|
||||||
modules = [
|
modules = [
|
||||||
|
|
@ -85,7 +86,6 @@
|
||||||
|
|
||||||
extraSpecialArgs = {
|
extraSpecialArgs = {
|
||||||
inherit pkgs-unstable;
|
inherit pkgs-unstable;
|
||||||
variant = "default";
|
|
||||||
inherit inputs;
|
inherit inputs;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -94,6 +94,12 @@
|
||||||
./home/base.nix
|
./home/base.nix
|
||||||
{ home.packages = [ inputs.st-flexipatch.packages.${system}.st ]; }
|
{ home.packages = [ inputs.st-flexipatch.packages.${system}.st ]; }
|
||||||
./home/syncthing.nix
|
./home/syncthing.nix
|
||||||
|
./home/basado.nix
|
||||||
|
|
||||||
|
./home/ui.nix
|
||||||
|
./home/gui-software.nix
|
||||||
|
./home/gaming.nix
|
||||||
|
{ services.kdeconnect.enable = true; }
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -102,7 +108,6 @@
|
||||||
|
|
||||||
extraSpecialArgs = {
|
extraSpecialArgs = {
|
||||||
inherit pkgs-unstable;
|
inherit pkgs-unstable;
|
||||||
variant = "moon";
|
|
||||||
inherit inputs;
|
inherit inputs;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -111,6 +116,11 @@
|
||||||
./home/base.nix
|
./home/base.nix
|
||||||
{ home.packages = [ inputs.st-flexipatch.packages.${system}.st ]; }
|
{ home.packages = [ inputs.st-flexipatch.packages.${system}.st ]; }
|
||||||
./home/syncthing.nix
|
./home/syncthing.nix
|
||||||
|
./home/moon.nix
|
||||||
|
|
||||||
|
./home/ui.nix
|
||||||
|
./home/gui-software.nix
|
||||||
|
{ services.kdeconnect.enable = true; }
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,25 +0,0 @@
|
||||||
{ lib, config, pkgs, variant, ... }: {
|
|
||||||
config = {
|
|
||||||
home.packages =
|
|
||||||
if variant == "default" then
|
|
||||||
with pkgs; [
|
|
||||||
qbittorrent
|
|
||||||
pipewire
|
|
||||||
discord
|
|
||||||
feather # monero wallet
|
|
||||||
# litecoin
|
|
||||||
librewolf
|
|
||||||
spotify
|
|
||||||
ungoogled-chromium
|
|
||||||
immich-cli
|
|
||||||
vesktop
|
|
||||||
]
|
|
||||||
else if variant == "allegro" then
|
|
||||||
with pkgs; [
|
|
||||||
aria2
|
|
||||||
pipewire
|
|
||||||
teams-for-linux
|
|
||||||
]
|
|
||||||
else [];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
115
home/allegro.nix
Normal file
115
home/allegro.nix
Normal file
|
|
@ -0,0 +1,115 @@
|
||||||
|
{ config, lib, pkgs, ... }: {
|
||||||
|
programs.fish = {
|
||||||
|
loginShellInit = ''
|
||||||
|
source ${pkgs.nix}/etc/profile.d/nix.fish
|
||||||
|
if test $(tty) = /dev/tty2
|
||||||
|
nixGLIntel Hyprland
|
||||||
|
end
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
xdg = {
|
||||||
|
configFile."systemd/user/dbus-broker.service".source =
|
||||||
|
"${pkgs.dbus-broker}/share/systemd/user/dbus-broker.service";
|
||||||
|
configFile."systemd/user/at-spi-dbus-bus.service".source =
|
||||||
|
"${pkgs.at-spi2-core}/lib/systemd/user/at-spi-dbus-bus.service";
|
||||||
|
dataFile."dbus-1/services/org.a11y.Bus.service".source =
|
||||||
|
"${pkgs.at-spi2-core}/share/dbus-1/services/org.a11y.Bus.service";
|
||||||
|
dataFile."dbus-1/accessibility-services/org.a11y.atspi.Registry.service".source =
|
||||||
|
"${pkgs.at-spi2-core}/share/dbus-1/accessibility-services/org.a11y.atspi.Registry.service";
|
||||||
|
|
||||||
|
configFile."systemd/user/xdg-desktop-portal.service".source =
|
||||||
|
"${pkgs.xdg-desktop-portal}/lib/systemd/user/xdg-desktop-portal.service";
|
||||||
|
configFile."systemd/user/xdg-desktop-portal-gtk.service".source =
|
||||||
|
"${pkgs.xdg-desktop-portal-gtk}/lib/systemd/user/xdg-desktop-portal-gtk.service";
|
||||||
|
configFile."systemd/user/xdg-desktop-portal-hyprland.service".source =
|
||||||
|
"${pkgs.xdg-desktop-portal-hyprland}/lib/systemd/user/xdg-desktop-portal-hyprland.service";
|
||||||
|
dataFile."share/dbus-1/services/org.freedesktop.impl.portal.desktop.hyprland.service".source =
|
||||||
|
"${pkgs.xdg-desktop-portal-hyprland}share/dbus-1/services/org.freedesktop.impl.portal.desktop.hyprland.service";
|
||||||
|
dataFile."systemd/user/pipewire.service".source =
|
||||||
|
"${pkgs.pipewire}/share/systemd/user/pipewire.service";
|
||||||
|
dataFile."systemd/user/pipewire-pulse.service".source =
|
||||||
|
"${pkgs.pipewire}/share/systemd/user/pipewire-pulse.service";
|
||||||
|
dataFile."systemd/user/filter-chain.service".source =
|
||||||
|
"${pkgs.pipewire}/share/systemd/user/filter-chain.service";
|
||||||
|
|
||||||
|
dataFile."systemd/user/pipewire.socket".source =
|
||||||
|
"${pkgs.pipewire}/share/systemd/user/pipewire.socket";
|
||||||
|
dataFile."systemd/user/pipewire-pulse.socket".source =
|
||||||
|
"${pkgs.pipewire}/share/systemd/user/pipewire-pulse.socket";
|
||||||
|
|
||||||
|
portal = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
# xdgOpenUsePortal = true;
|
||||||
|
extraPortals =
|
||||||
|
[ pkgs.xdg-desktop-portal-gtk pkgs.xdg-desktop-portal-hyprland ];
|
||||||
|
configPackages =
|
||||||
|
[ pkgs.xdg-desktop-portal-gtk pkgs.xdg-desktop-portal-hyprland ];
|
||||||
|
# config.common.default = "*";
|
||||||
|
config = {
|
||||||
|
hyprland = { default = [ "gtk,hyprland" ]; };
|
||||||
|
common = { default = [ "gtk,hyprland" ]; };
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
wayland.windowManager.hyprland = {
|
||||||
|
extraConfig = ''
|
||||||
|
monitor= DP-4, 1920x1200@75, 3840x0, 1
|
||||||
|
monitor= DP-3, 1920x1200@75, 1920x0, 1
|
||||||
|
monitor=eDP-1, 1920x1080, 0x0, 1
|
||||||
|
monitor=HDMI-1, 3440x1440, auto, 1
|
||||||
|
monitor=HDMI-A-1, 3440x1440, auto, 1
|
||||||
|
# monitor=HDMI-1, 1920x1080, auto, 1, mirror, eDP-1
|
||||||
|
# monitor=HDMI-A-1, 1920x1080, auto, 1, mirror, eDP-1
|
||||||
|
|
||||||
|
env = WLR_DRM_DEVICES,/dev/dri/card0
|
||||||
|
env = AQ_WLR_DEVICES,/dev/dri/card0
|
||||||
|
env = AQ_DRM_DEVICES,/dev/dri/card0
|
||||||
|
env = TERMINAL,st
|
||||||
|
|
||||||
|
env = NIXOS_OZONE_WL,1
|
||||||
|
env = GDK_BACKEND,wayland,x11
|
||||||
|
env = QT_QPA_PLATFORM,wayland;xcb
|
||||||
|
env = CLUTTER_BACKEND,wayland
|
||||||
|
env = XDG_CURRENT_DESKTOP,Hyprland
|
||||||
|
env = XDG_SESSION_TYPE,wayland
|
||||||
|
env = XDG_SESSION_DESKTOP,Hyprland
|
||||||
|
env = QT_AUTO_SCREEN_SCALE_FACTOR,1
|
||||||
|
env = WLR_NO_HARDWARE_CURSORS,1
|
||||||
|
env = XCURSOR_SIZE,24
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.waybar.settings.bar = {
|
||||||
|
"group/disks".modules = [
|
||||||
|
"disk#home"
|
||||||
|
];
|
||||||
|
|
||||||
|
"disk#home" = {
|
||||||
|
interval = 1;
|
||||||
|
format = " {free}";
|
||||||
|
path = "/home/${config.home.username}";
|
||||||
|
"on-click" = "$TERMINAL -c floating -e ${pkgs.ncdu}/bin/ncdu -x /home/${config.home.username}";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
home.file = {
|
||||||
|
".bin/shutdown".source = pkgs.writeShellScript "usr_sbin_shutdown" "/usr/sbin/shutdown $@";
|
||||||
|
".bin/reboot".source = pkgs.writeShellScript "usr_sbin_reboot" "/usr/sbin/reboot $@";
|
||||||
|
};
|
||||||
|
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
aria2
|
||||||
|
pipewire
|
||||||
|
];
|
||||||
|
|
||||||
|
home.sessionVariables = {
|
||||||
|
TMPDIR = "/home/${config.home.username}/tmp";
|
||||||
|
GSETTINGS_SCHEMA_DIR = "${pkgs.gsettings-desktop-schemas}/share/gsettings-schemas/gsettings-desktop-schemas-47.1/glib-2.0/schemas";
|
||||||
|
};
|
||||||
|
|
||||||
|
swaylock-bin = "/usr/bin/swaylock";
|
||||||
|
}
|
||||||
40
home/bar.nix
40
home/bar.nix
|
|
@ -1,4 +1,4 @@
|
||||||
{ lib, config, pkgs, variant, ... }: {
|
{ lib, config, pkgs, ... }: {
|
||||||
|
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
material-design-icons
|
material-design-icons
|
||||||
|
|
@ -71,15 +71,8 @@
|
||||||
"group/disks" = {
|
"group/disks" = {
|
||||||
orientation = "inherit";
|
orientation = "inherit";
|
||||||
modules = [
|
modules = [
|
||||||
"disk" # /
|
"disk"
|
||||||
]
|
];
|
||||||
++
|
|
||||||
(if (variant == "default") then [
|
|
||||||
"disk#2"
|
|
||||||
"disk#3"
|
|
||||||
] else if (variant == "allegro") then [
|
|
||||||
"disk#home"
|
|
||||||
] else []);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
backlight = {
|
backlight = {
|
||||||
|
|
@ -130,27 +123,6 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
"disk#2" = lib.attrsets.optionalAttrs (variant == "default") {
|
|
||||||
interval = 1;
|
|
||||||
format = " {free}";
|
|
||||||
path = "/home/ant/disk1";
|
|
||||||
"on-click" = "$TERMINAL -c floating -e ${pkgs.ncdu}/bin/ncdu -x /home/${username}/disk1";
|
|
||||||
};
|
|
||||||
|
|
||||||
"disk#3" = lib.attrsets.optionalAttrs (variant == "default") {
|
|
||||||
interval = 1;
|
|
||||||
format = " {free}";
|
|
||||||
path = "/home/ant/disk2";
|
|
||||||
"on-click" = "$TERMINAL -c floating -e ${pkgs.ncdu}/bin/ncdu -x /home/${username}/disk2";
|
|
||||||
};
|
|
||||||
|
|
||||||
"disk#home" = lib.attrsets.optionalAttrs (variant == "allegro") {
|
|
||||||
interval = 1;
|
|
||||||
format = " {free}";
|
|
||||||
path = "/home/${username}";
|
|
||||||
"on-click" = "$TERMINAL -c floating -e ${pkgs.ncdu}/bin/ncdu -x /home/${username}";
|
|
||||||
};
|
|
||||||
|
|
||||||
memory = {
|
memory = {
|
||||||
interval = 1;
|
interval = 1;
|
||||||
format = " {percentage:2}%";
|
format = " {percentage:2}%";
|
||||||
|
|
@ -279,12 +251,6 @@
|
||||||
"scroll-step" = 5;
|
"scroll-step" = 5;
|
||||||
};
|
};
|
||||||
|
|
||||||
"custom/loopback" = lib.attrsets.optionalAttrs (variant == "default") {
|
|
||||||
exec = "journalctl --user -f -u loopback | exec_on_stdin_newline 'if systemctl --user is-active --quiet loopback; then echo loopback ON; else echo loopback; fi'";
|
|
||||||
on-click = "if systemctl --user is-active --quiet loopback; then systemctl --user stop loopback; else systemctl --user start loopback; fi";
|
|
||||||
format = "{}";
|
|
||||||
};
|
|
||||||
|
|
||||||
"hyprland/submap" = {
|
"hyprland/submap" = {
|
||||||
format = "(l)ock, (d)pms, (e)xit, (s)uspend, (h)ibernate, (r)eboot, (S)hutdown";
|
format = "(l)ock, (d)pms, (e)xit, (s)uspend, (h)ibernate, (r)eboot, (S)hutdown";
|
||||||
};
|
};
|
||||||
|
|
|
||||||
47
home/basado.nix
Normal file
47
home/basado.nix
Normal file
|
|
@ -0,0 +1,47 @@
|
||||||
|
{ config, lib, pkgs, ... }: {
|
||||||
|
wayland.windowManager.hyprland = {
|
||||||
|
extraConfig = ''
|
||||||
|
monitor=,highrr,auto,1
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
qbittorrent
|
||||||
|
pipewire
|
||||||
|
discord
|
||||||
|
feather # monero wallet
|
||||||
|
# litecoin
|
||||||
|
librewolf
|
||||||
|
spotify
|
||||||
|
ungoogled-chromium
|
||||||
|
immich-cli
|
||||||
|
vesktop
|
||||||
|
];
|
||||||
|
|
||||||
|
programs.waybar.settings.bar = {
|
||||||
|
"group/disks".modules = [
|
||||||
|
"disk#2"
|
||||||
|
"disk#3"
|
||||||
|
];
|
||||||
|
|
||||||
|
"disk#2" = {
|
||||||
|
interval = 1;
|
||||||
|
format = " {free}";
|
||||||
|
path = "/home/${config.home.username}/disk1";
|
||||||
|
"on-click" = "$TERMINAL -c floating -e ${pkgs.ncdu}/bin/ncdu -x /home/${config.home.username}/disk1";
|
||||||
|
};
|
||||||
|
|
||||||
|
"disk#3" = {
|
||||||
|
interval = 1;
|
||||||
|
format = " {free}";
|
||||||
|
path = "/home/${config.home.username}/disk2";
|
||||||
|
"on-click" = "$TERMINAL -c floating -e ${pkgs.ncdu}/bin/ncdu -x /home/${config.home.username}/disk2";
|
||||||
|
};
|
||||||
|
|
||||||
|
"custom/loopback" = {
|
||||||
|
exec = "journalctl --user -f -u loopback | exec_on_stdin_newline 'if systemctl --user is-active --quiet loopback; then echo loopback ON; else echo loopback; fi'";
|
||||||
|
on-click = "if systemctl --user is-active --quiet loopback; then systemctl --user stop loopback; else systemctl --user start loopback; fi";
|
||||||
|
format = "{}";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
@ -1,18 +1,11 @@
|
||||||
{ inputs, config, lib, pkgs, variant, ... }:
|
{ inputs, config, lib, pkgs, ... }:
|
||||||
{
|
{
|
||||||
|
|
||||||
imports = [
|
imports = [
|
||||||
./lf.nix
|
./lf.nix
|
||||||
./fish.nix
|
./fish.nix
|
||||||
./terminal-software.nix
|
./terminal-software.nix
|
||||||
] ++ (if variant != "hs" then
|
];
|
||||||
[
|
|
||||||
./ui.nix
|
|
||||||
./gui-software.nix
|
|
||||||
./gaming.nix
|
|
||||||
./additional-software.nix
|
|
||||||
]
|
|
||||||
else []);
|
|
||||||
|
|
||||||
# Home Manager needs a bit of information about you and the paths it should
|
# Home Manager needs a bit of information about you and the paths it should
|
||||||
# manage.
|
# manage.
|
||||||
|
|
@ -56,12 +49,8 @@
|
||||||
home.sessionVariables = {
|
home.sessionVariables = {
|
||||||
GOPATH = "${config.home.homeDirectory}/.local/share/go";
|
GOPATH = "${config.home.homeDirectory}/.local/share/go";
|
||||||
GOMODCACHE = "${config.home.homeDirectory}/.cache/go/pkg/mod";
|
GOMODCACHE = "${config.home.homeDirectory}/.cache/go/pkg/mod";
|
||||||
|
|
||||||
CCACHE_MAXSIZE = "100Gi";
|
CCACHE_MAXSIZE = "100Gi";
|
||||||
} // (if variant == "allegro" then {
|
};
|
||||||
TMPDIR = "/home/${config.home.username}/tmp";
|
|
||||||
GSETTINGS_SCHEMA_DIR = "${pkgs.gsettings-desktop-schemas}/share/gsettings-schemas/gsettings-desktop-schemas-47.1/glib-2.0/schemas";
|
|
||||||
} else {});
|
|
||||||
|
|
||||||
home.keyboard.options = [
|
home.keyboard.options = [
|
||||||
"caps:escape"
|
"caps:escape"
|
||||||
|
|
|
||||||
|
|
@ -1,16 +1,10 @@
|
||||||
{ lib, pkgs, variant, ... }:
|
{ lib, pkgs, ... }:
|
||||||
{
|
{
|
||||||
programs.fish = {
|
programs.fish = {
|
||||||
enable = true;
|
enable = true;
|
||||||
loginShellInit = ''
|
loginShellInit = ''
|
||||||
set -gx fish_greeting
|
set -gx fish_greeting
|
||||||
'' +
|
'';
|
||||||
(if variant == "allegro" then ''
|
|
||||||
source ${pkgs.nix}/etc/profile.d/nix.fish
|
|
||||||
if test $(tty) = /dev/tty2
|
|
||||||
nixGLIntel Hyprland
|
|
||||||
end
|
|
||||||
'' else "");
|
|
||||||
|
|
||||||
interactiveShellInit = ''
|
interactiveShellInit = ''
|
||||||
set -gx fish_greeting
|
set -gx fish_greeting
|
||||||
|
|
@ -118,8 +112,6 @@
|
||||||
gdb_asan = "gdb -tui -ex='break __asan::ReportGenericError'";
|
gdb_asan = "gdb -tui -ex='break __asan::ReportGenericError'";
|
||||||
gdb_ubsan = "gdb -tui -ex='break __ubsan::ScopedReport::~ScopedReport'";
|
gdb_ubsan = "gdb -tui -ex='break __ubsan::ScopedReport::~ScopedReport'";
|
||||||
gdb_msan = "gdb -tui -ex='break __sanitizer::Die'";
|
gdb_msan = "gdb -tui -ex='break __sanitizer::Die'";
|
||||||
} // lib.attrsets.optionalAttrs (variant == "allegro") {
|
|
||||||
d = "./run_in_container.sh docker/ci.Dockerfile.signature";
|
|
||||||
};
|
};
|
||||||
|
|
||||||
plugins = [
|
plugins = [
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,12 @@
|
||||||
{ lib, config, pkgs, variant, ... }: {
|
{ lib, config, pkgs, ... }: {
|
||||||
nixpkgs.config = { allowUnfree = true; };
|
nixpkgs.config = { allowUnfree = true; };
|
||||||
|
|
||||||
home.packages = if variant == "default" then with pkgs; [
|
home.packages = with pkgs; [
|
||||||
lutris
|
lutris
|
||||||
prismlauncher
|
prismlauncher
|
||||||
gamemode
|
gamemode
|
||||||
mangohud
|
mangohud
|
||||||
heroic
|
heroic
|
||||||
steam
|
steam
|
||||||
]
|
];
|
||||||
else [];
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,13 @@
|
||||||
{ lib, config, variant, pkgs, pkgs-unstable, ... }:
|
{ lib, config, pkgs, pkgs-unstable, ... }:
|
||||||
{
|
{
|
||||||
home.packages = (with pkgs; [
|
home.packages = with pkgs; [
|
||||||
nsxiv
|
nsxiv
|
||||||
libreoffice
|
libreoffice
|
||||||
keepassxc
|
keepassxc
|
||||||
thunderbird
|
thunderbird
|
||||||
vieb
|
vieb
|
||||||
gimp
|
gimp
|
||||||
]) ++ (if variant != "allegro" then [ pkgs.warpinator ] else []);
|
];
|
||||||
|
|
||||||
programs.mpv = {
|
programs.mpv = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
|
||||||
|
|
@ -1,50 +1,4 @@
|
||||||
{ config, lib, pkgs, pkgs-unstable, pkgs-24_05, variant, ... }: {
|
{ config, lib, pkgs, ... }: {
|
||||||
xdg = lib.attrsets.optionalAttrs (variant == "allegro") {
|
|
||||||
configFile."systemd/user/dbus-broker.service".source =
|
|
||||||
"${pkgs.dbus-broker}/share/systemd/user/dbus-broker.service";
|
|
||||||
configFile."systemd/user/at-spi-dbus-bus.service".source =
|
|
||||||
"${pkgs.at-spi2-core}/lib/systemd/user/at-spi-dbus-bus.service";
|
|
||||||
dataFile."dbus-1/services/org.a11y.Bus.service".source =
|
|
||||||
"${pkgs.at-spi2-core}/share/dbus-1/services/org.a11y.Bus.service";
|
|
||||||
dataFile."dbus-1/accessibility-services/org.a11y.atspi.Registry.service".source =
|
|
||||||
"${pkgs.at-spi2-core}/share/dbus-1/accessibility-services/org.a11y.atspi.Registry.service";
|
|
||||||
|
|
||||||
configFile."systemd/user/xdg-desktop-portal.service".source =
|
|
||||||
"${pkgs.xdg-desktop-portal}/lib/systemd/user/xdg-desktop-portal.service";
|
|
||||||
configFile."systemd/user/xdg-desktop-portal-gtk.service".source =
|
|
||||||
"${pkgs.xdg-desktop-portal-gtk}/lib/systemd/user/xdg-desktop-portal-gtk.service";
|
|
||||||
configFile."systemd/user/xdg-desktop-portal-hyprland.service".source =
|
|
||||||
"${pkgs.xdg-desktop-portal-hyprland}/lib/systemd/user/xdg-desktop-portal-hyprland.service";
|
|
||||||
dataFile."share/dbus-1/services/org.freedesktop.impl.portal.desktop.hyprland.service".source =
|
|
||||||
"${pkgs.xdg-desktop-portal-hyprland}share/dbus-1/services/org.freedesktop.impl.portal.desktop.hyprland.service";
|
|
||||||
dataFile."systemd/user/pipewire.service".source =
|
|
||||||
"${pkgs.pipewire}/share/systemd/user/pipewire.service";
|
|
||||||
dataFile."systemd/user/pipewire-pulse.service".source =
|
|
||||||
"${pkgs.pipewire}/share/systemd/user/pipewire-pulse.service";
|
|
||||||
dataFile."systemd/user/filter-chain.service".source =
|
|
||||||
"${pkgs.pipewire}/share/systemd/user/filter-chain.service";
|
|
||||||
|
|
||||||
dataFile."systemd/user/pipewire.socket".source =
|
|
||||||
"${pkgs.pipewire}/share/systemd/user/pipewire.socket";
|
|
||||||
dataFile."systemd/user/pipewire-pulse.socket".source =
|
|
||||||
"${pkgs.pipewire}/share/systemd/user/pipewire-pulse.socket";
|
|
||||||
|
|
||||||
portal = {
|
|
||||||
enable = true;
|
|
||||||
|
|
||||||
# xdgOpenUsePortal = true;
|
|
||||||
extraPortals =
|
|
||||||
[ pkgs.xdg-desktop-portal-gtk pkgs.xdg-desktop-portal-hyprland ];
|
|
||||||
configPackages =
|
|
||||||
[ pkgs.xdg-desktop-portal-gtk pkgs.xdg-desktop-portal-hyprland ];
|
|
||||||
# config.common.default = "*";
|
|
||||||
config = {
|
|
||||||
hyprland = { default = [ "gtk,hyprland" ]; };
|
|
||||||
common = { default = [ "gtk,hyprland" ]; };
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
home.sessionVariables = {
|
home.sessionVariables = {
|
||||||
NIXOS_OZONE_WL = "1";
|
NIXOS_OZONE_WL = "1";
|
||||||
GDK_BACKEND = "wayland,x11";
|
GDK_BACKEND = "wayland,x11";
|
||||||
|
|
@ -342,57 +296,8 @@
|
||||||
# -p pkgs.rubyPackages.gdk_pixbuf2 \
|
# -p pkgs.rubyPackages.gdk_pixbuf2 \
|
||||||
# --run "${pkgs.swaybg}/bin/swaybg -m fill -i $bg"
|
# --run "${pkgs.swaybg}/bin/swaybg -m fill -i $bg"
|
||||||
'');
|
'');
|
||||||
monitors = if (variant == "default") then ''
|
|
||||||
monitor=,highrr,auto,1
|
|
||||||
''
|
|
||||||
else if variant == "moon" then ''
|
|
||||||
monitor=,preferred,auto,1
|
|
||||||
monitor=HDMI-1, 1920x1080, auto, 1, mirror, eDP-1
|
|
||||||
monitor=HDMI-A-1, 1920x1080, auto, 1, mirror, eDP-1
|
|
||||||
''
|
|
||||||
else if variant == "allegro" then ''
|
|
||||||
monitor= DP-4, 1920x1200@75, 3840x0, 1
|
|
||||||
monitor= DP-3, 1920x1200@75, 1920x0, 1
|
|
||||||
monitor=eDP-1, 1920x1080, 0x0, 1
|
|
||||||
monitor=HDMI-1, 3440x1440, auto, 1
|
|
||||||
monitor=HDMI-A-1, 3440x1440, auto, 1
|
|
||||||
# monitor=HDMI-1, 1920x1080, auto, 1, mirror, eDP-1
|
|
||||||
# monitor=HDMI-A-1, 1920x1080, auto, 1, mirror, eDP-1
|
|
||||||
''
|
|
||||||
else ''
|
|
||||||
'';
|
|
||||||
in
|
in
|
||||||
''
|
''
|
||||||
${monitors}
|
|
||||||
|
|
||||||
${ # system specific configs
|
|
||||||
if variant == "default" then ''
|
|
||||||
#env = GBM_BACKEND,nvidia-drm
|
|
||||||
#env = __GLX_VENDOR_LIBRARY_NAME,nvidia
|
|
||||||
# env = WLR_DRM_DEVICES,/dev/dri/card1
|
|
||||||
# env = AQ_WLR_DEVICES,/dev/dri/card1
|
|
||||||
# env = AQ_DRM_DEVICES,/dev/dri/card1
|
|
||||||
''
|
|
||||||
else if variant == "allegro" then ''
|
|
||||||
env = WLR_DRM_DEVICES,/dev/dri/card0
|
|
||||||
env = AQ_WLR_DEVICES,/dev/dri/card0
|
|
||||||
env = AQ_DRM_DEVICES,/dev/dri/card0
|
|
||||||
env = TERMINAL,st
|
|
||||||
|
|
||||||
env = NIXOS_OZONE_WL,1
|
|
||||||
env = GDK_BACKEND,wayland,x11
|
|
||||||
env = QT_QPA_PLATFORM,wayland;xcb
|
|
||||||
env = CLUTTER_BACKEND,wayland
|
|
||||||
env = XDG_CURRENT_DESKTOP,Hyprland
|
|
||||||
env = XDG_SESSION_TYPE,wayland
|
|
||||||
env = XDG_SESSION_DESKTOP,Hyprland
|
|
||||||
env = QT_AUTO_SCREEN_SCALE_FACTOR,1
|
|
||||||
env = WLR_NO_HARDWARE_CURSORS,1
|
|
||||||
env = XCURSOR_SIZE,24
|
|
||||||
'' else ''
|
|
||||||
''
|
|
||||||
}
|
|
||||||
|
|
||||||
env = HYPRCURSOR_THEME,Hackneyed
|
env = HYPRCURSOR_THEME,Hackneyed
|
||||||
env = HYPRCURSOR_SIZE,24
|
env = HYPRCURSOR_SIZE,24
|
||||||
|
|
||||||
|
|
@ -425,7 +330,7 @@
|
||||||
bind = ,s, exec, systemctl suspend
|
bind = ,s, exec, systemctl suspend
|
||||||
bind = ,s, submap, reset
|
bind = ,s, submap, reset
|
||||||
|
|
||||||
bind = SHIFT,S,exec, ${if variant == "allegro" then "/usr/sbin/shutdown" else "shutdown"} now
|
bind = SHIFT,S,exec, shutdown now
|
||||||
bind = ,S, submap, reset
|
bind = ,S, submap, reset
|
||||||
|
|
||||||
bind = ,h, exec, systemctl hibernate
|
bind = ,h, exec, systemctl hibernate
|
||||||
|
|
@ -434,7 +339,7 @@
|
||||||
bind = ,e, exit
|
bind = ,e, exit
|
||||||
bind = ,e, submap, reset
|
bind = ,e, submap, reset
|
||||||
|
|
||||||
bind = ,r, exec, ${if variant == "allegro" then "/usr/sbin/reboot" else "reboot"}
|
bind = ,r, exec, reboot
|
||||||
bind = ,r, submap, reset
|
bind = ,r, submap, reset
|
||||||
|
|
||||||
bind = ,l, exec, swaylock
|
bind = ,l, exec, swaylock
|
||||||
|
|
|
||||||
9
home/moon.nix
Normal file
9
home/moon.nix
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
{ config, lib, pkgs, ... }: {
|
||||||
|
wayland.windowManager.hyprland = {
|
||||||
|
extraConfig = ''
|
||||||
|
monitor=,preferred,auto,1
|
||||||
|
monitor=HDMI-1, 1920x1080, auto, 1, mirror, eDP-1
|
||||||
|
monitor=HDMI-A-1, 1920x1080, auto, 1, mirror, eDP-1
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
{ lib, config, pkgs, variant, pkgs-unstable, ... }: {
|
{ lib, config, pkgs, pkgs-unstable, ... }: {
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
entr
|
entr
|
||||||
trash-cli
|
trash-cli
|
||||||
|
|
@ -21,7 +21,7 @@
|
||||||
viAlias = true;
|
viAlias = true;
|
||||||
defaultEditor = true;
|
defaultEditor = true;
|
||||||
package = pkgs-unstable.neovim-unwrapped;
|
package = pkgs-unstable.neovim-unwrapped;
|
||||||
extraPackages = (with pkgs; [
|
extraPackages = with pkgs; [
|
||||||
nodejs_24
|
nodejs_24
|
||||||
ocamlPackages.lsp
|
ocamlPackages.lsp
|
||||||
ocamlPackages.ocamlformat
|
ocamlPackages.ocamlformat
|
||||||
|
|
@ -33,7 +33,8 @@
|
||||||
ocamlPackages.ocaml-lsp
|
ocamlPackages.ocaml-lsp
|
||||||
pyright
|
pyright
|
||||||
ripgrep
|
ripgrep
|
||||||
]) ++ (if variant != "allegro" then [ pkgs.gcc ] else [] );
|
gcc
|
||||||
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
xdg.mimeApps.defaultApplications = { "text/plain" = "nvim.desktop"; };
|
xdg.mimeApps.defaultApplications = { "text/plain" = "nvim.desktop"; };
|
||||||
|
|
|
||||||
757
home/ui.nix
757
home/ui.nix
|
|
@ -1,4 +1,4 @@
|
||||||
{ lib, config, pkgs, variant, ... }:
|
{ lib, config, options, pkgs, ... }:
|
||||||
let
|
let
|
||||||
defaultTerminal = "st";
|
defaultTerminal = "st";
|
||||||
alacrittyLightTheme = "${pkgs.alacritty-theme}/night_owlish_light.toml";
|
alacrittyLightTheme = "${pkgs.alacritty-theme}/night_owlish_light.toml";
|
||||||
|
|
@ -11,422 +11,423 @@ in
|
||||||
./gui-software.nix
|
./gui-software.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
home.file = {
|
options = {
|
||||||
".config/kitty/light.conf".source = dotfiles/kitty/light.conf;
|
swaylock-bin = lib.mkOption {
|
||||||
".config/kitty/dark.conf".source = dotfiles/kitty/dark.conf;
|
default = "${config.programs.swaylock.package}/bin/swaylock";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
".config/rofi/colors-dark.rasi".source = dotfiles/rofi/colors-dark.rasi;
|
config = {
|
||||||
".config/rofi/colors-light.rasi".source = dotfiles/rofi/colors-light.rasi;
|
home.file = {
|
||||||
".config/rofi/theme.rasi".source = dotfiles/rofi/theme.rasi;
|
".config/kitty/light.conf".source = dotfiles/kitty/light.conf;
|
||||||
|
".config/kitty/dark.conf".source = dotfiles/kitty/dark.conf;
|
||||||
|
|
||||||
".config/keepmenu/config.ini".source = dotfiles/keepmenu.ini;
|
".config/rofi/colors-dark.rasi".source = dotfiles/rofi/colors-dark.rasi;
|
||||||
|
".config/rofi/colors-light.rasi".source = dotfiles/rofi/colors-light.rasi;
|
||||||
|
".config/rofi/theme.rasi".source = dotfiles/rofi/theme.rasi;
|
||||||
|
|
||||||
".bin/runmenu".source = pkgs.writers.writeBash "runmenu" ''
|
".config/keepmenu/config.ini".source = dotfiles/keepmenu.ini;
|
||||||
${config.programs.rofi.package}/bin/rofi -matching normal -sort -show run
|
|
||||||
'';
|
|
||||||
|
|
||||||
".bin/notifications".source = bin/notifications;
|
".bin/runmenu".source = pkgs.writers.writeBash "runmenu" ''
|
||||||
|
${config.programs.rofi.package}/bin/rofi -matching normal -sort -show run
|
||||||
".bin/window_dir".source = pkgs.writers.writeBash "window_dir" ''
|
|
||||||
PID=$(${pkgs.hyprland}/bin/hyprctl activewindow | grep pid | cut -d' ' -f 2)
|
|
||||||
PID=$(echo $(ps --ppid $PID -o pid | tail -n1))
|
|
||||||
cwd=$(readlink /proc/"$PID"/cwd)
|
|
||||||
echo "$cwd"
|
|
||||||
'';
|
|
||||||
|
|
||||||
".bin/exec_on_stdin_newline".source = pkgs.writers.writePython3 "exec_on_stdin_newline" {} ''
|
|
||||||
# run command whjen a newline is added to stdin
|
|
||||||
import subprocess
|
|
||||||
from sys import stdin, argv
|
|
||||||
cmd = argv[1:]
|
|
||||||
subprocess.call(cmd, shell=True)
|
|
||||||
while stdin.readline():
|
|
||||||
subprocess.call(cmd, shell=True)
|
|
||||||
'';
|
'';
|
||||||
|
|
||||||
".bin/screenshot".source = (import ./bin/screenshot.nix) pkgs;
|
".bin/notifications".source = bin/notifications;
|
||||||
|
|
||||||
".bin/ocrzone".source = pkgs.writers.writeBash "ocrzone" ''
|
".bin/window_dir".source = pkgs.writers.writeBash "window_dir" ''
|
||||||
${pkgs.pkgs.sway-contrib.grimshot}/bin/grimshot save area - | \
|
PID=$(${pkgs.hyprland}/bin/hyprctl activewindow | grep pid | cut -d' ' -f 2)
|
||||||
${pkgs.tesseract}/bin/tesseract -l fra - - | \
|
PID=$(echo $(ps --ppid $PID -o pid | tail -n1))
|
||||||
${pkgs.wl-clipboard}/bin/wl-copy
|
cwd=$(readlink /proc/"$PID"/cwd)
|
||||||
'';
|
echo "$cwd"
|
||||||
|
'';
|
||||||
|
|
||||||
".bin/wifi-toggle".source = pkgs.writers.writeBash "wifi-toggle" ''
|
".bin/exec_on_stdin_newline".source = pkgs.writers.writePython3 "exec_on_stdin_newline" {} ''
|
||||||
if [[ $(nmcli radio wifi) == "enabled" ]]; then
|
# run command whjen a newline is added to stdin
|
||||||
nmcli radio wifi off
|
import subprocess
|
||||||
else
|
from sys import stdin, argv
|
||||||
nmcli radio wifi on
|
cmd = argv[1:]
|
||||||
fi
|
subprocess.call(cmd, shell=True)
|
||||||
'';
|
while stdin.readline():
|
||||||
|
subprocess.call(cmd, shell=True)
|
||||||
|
'';
|
||||||
|
|
||||||
".bin/rofi-udisk".source = pkgs.writers.writeBash "rofi-udisk" ''
|
".bin/screenshot".source = (import ./bin/screenshot.nix) pkgs;
|
||||||
device=$(${pkgs.udiskie}/bin/udiskie-info -a -o "{ui_label} {in_use}" -f is_filesystem | \
|
|
||||||
${pkgs.gnused}/bin/sed 's/True$/[Mounted]/' | \
|
|
||||||
${pkgs.gnused}/bin/sed 's/False$//' | \
|
|
||||||
${config.programs.rofi.package}/bin/rofi -dmenu | \
|
|
||||||
${pkgs.coreutils}/bin/cut -d':' -f1)
|
|
||||||
|
|
||||||
if [ -n "$device" ] ; then
|
".bin/ocrzone".source = pkgs.writers.writeBash "ocrzone" ''
|
||||||
if ${pkgs.mount}/bin/mount | ${pkgs.gnugrep}/bin/grep "$device" ; then
|
${pkgs.pkgs.sway-contrib.grimshot}/bin/grimshot save area - | \
|
||||||
${pkgs.libnotify}/bin/notify-send "Unmounting $device..."
|
${pkgs.tesseract}/bin/tesseract -l fra - - | \
|
||||||
output=$(${pkgs.udisks}/bin/udisksctl unmount -b $device 2>&1)
|
${pkgs.wl-clipboard}/bin/wl-copy
|
||||||
if [ $? -eq 0 ] ; then
|
'';
|
||||||
${pkgs.libnotify}/bin/notify-send "Device successfully unmounted."
|
|
||||||
else
|
".bin/wifi-toggle".source = pkgs.writers.writeBash "wifi-toggle" ''
|
||||||
${pkgs.libnotify}/bin/notify-send "Failed to unmount device" "$output"
|
if [[ $(nmcli radio wifi) == "enabled" ]]; then
|
||||||
fi
|
nmcli radio wifi off
|
||||||
else
|
else
|
||||||
${pkgs.libnotify}/bin/notify-send "Mounting $device..."
|
nmcli radio wifi on
|
||||||
output=$(${pkgs.udisks}/bin/udisksctl mount -b $device 2>&1)
|
fi
|
||||||
if [ $? -eq 0 ] ; then
|
'';
|
||||||
${pkgs.libnotify}/bin/notify-send "Device successfully mounted."
|
|
||||||
|
".bin/rofi-udisk".source = pkgs.writers.writeBash "rofi-udisk" ''
|
||||||
|
device=$(${pkgs.udiskie}/bin/udiskie-info -a -o "{ui_label} {in_use}" -f is_filesystem | \
|
||||||
|
${pkgs.gnused}/bin/sed 's/True$/[Mounted]/' | \
|
||||||
|
${pkgs.gnused}/bin/sed 's/False$//' | \
|
||||||
|
${config.programs.rofi.package}/bin/rofi -dmenu | \
|
||||||
|
${pkgs.coreutils}/bin/cut -d':' -f1)
|
||||||
|
|
||||||
|
if [ -n "$device" ] ; then
|
||||||
|
if ${pkgs.mount}/bin/mount | ${pkgs.gnugrep}/bin/grep "$device" ; then
|
||||||
|
${pkgs.libnotify}/bin/notify-send "Unmounting $device..."
|
||||||
|
output=$(${pkgs.udisks}/bin/udisksctl unmount -b $device 2>&1)
|
||||||
|
if [ $? -eq 0 ] ; then
|
||||||
|
${pkgs.libnotify}/bin/notify-send "Device successfully unmounted."
|
||||||
|
else
|
||||||
|
${pkgs.libnotify}/bin/notify-send "Failed to unmount device" "$output"
|
||||||
|
fi
|
||||||
else
|
else
|
||||||
${pkgs.libnotify}/bin/notify-send "Failed to mount device" "$output"
|
${pkgs.libnotify}/bin/notify-send "Mounting $device..."
|
||||||
|
output=$(${pkgs.udisks}/bin/udisksctl mount -b $device 2>&1)
|
||||||
|
if [ $? -eq 0 ] ; then
|
||||||
|
${pkgs.libnotify}/bin/notify-send "Device successfully mounted."
|
||||||
|
else
|
||||||
|
${pkgs.libnotify}/bin/notify-send "Failed to mount device" "$output"
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
fi
|
'';
|
||||||
'';
|
|
||||||
|
|
||||||
".bin/mount-android".source = pkgs.writers.writeBash "mount-android" ''
|
".bin/mount-android".source = pkgs.writers.writeBash "mount-android" ''
|
||||||
if ${pkgs.mount}/bin/mount | ${pkgs.gnugrep}/bin/grep $(realpath ~/android); then
|
if ${pkgs.mount}/bin/mount | ${pkgs.gnugrep}/bin/grep $(realpath ~/android); then
|
||||||
umount $(realpath ~/android)
|
umount $(realpath ~/android)
|
||||||
${pkgs.libnotify}/bin/notify-send "Android unmounted"
|
${pkgs.libnotify}/bin/notify-send "Android unmounted"
|
||||||
elif ${pkgs.simple-mtpfs}/bin/simple-mtpfs $(realpath ~/android); then
|
elif ${pkgs.simple-mtpfs}/bin/simple-mtpfs $(realpath ~/android); then
|
||||||
${pkgs.libnotify}/bin/notify-send "Android mounted in ~/android"
|
${pkgs.libnotify}/bin/notify-send "Android mounted in ~/android"
|
||||||
else
|
else
|
||||||
${pkgs.libnotify}/bin/notify-send "Can't find Android device"
|
${pkgs.libnotify}/bin/notify-send "Can't find Android device"
|
||||||
fi
|
fi
|
||||||
'';
|
'';
|
||||||
|
|
||||||
".bin/dark".source = (import ./bin/dark.nix) pkgs; # deprecated, prefer darkman
|
".bin/dark".source = (import ./bin/dark.nix) pkgs; # deprecated, prefer darkman
|
||||||
};
|
|
||||||
|
|
||||||
home.sessionVariables = {
|
|
||||||
TERMINAL = defaultTerminal;
|
|
||||||
};
|
|
||||||
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
gentium
|
|
||||||
nerd-fonts.noto
|
|
||||||
nerd-fonts.hack
|
|
||||||
nerd-fonts.jetbrains-mono
|
|
||||||
nerd-fonts.caskaydia-cove
|
|
||||||
cascadia-code
|
|
||||||
inter
|
|
||||||
emojione
|
|
||||||
|
|
||||||
bluetuith
|
|
||||||
keepmenu
|
|
||||||
rofimoji
|
|
||||||
ydotool
|
|
||||||
libnotify
|
|
||||||
wtype
|
|
||||||
wl-clipboard
|
|
||||||
|
|
||||||
pamixer
|
|
||||||
pulsemixer
|
|
||||||
|
|
||||||
(catppuccin-gtk.override {
|
|
||||||
accents = [ "pink" ];
|
|
||||||
size = "compact";
|
|
||||||
tweaks = [ "black" ];
|
|
||||||
variant = "mocha";
|
|
||||||
})
|
|
||||||
];
|
|
||||||
|
|
||||||
xsession.enable = true;
|
|
||||||
|
|
||||||
fonts.fontconfig.enable = true;
|
|
||||||
fonts.fontconfig.defaultFonts = {
|
|
||||||
serif = [ "Gentium Plus" ];
|
|
||||||
sansSerif = [ "Inter" ];
|
|
||||||
monospace = [ "CaskaydiaCove Nerd Font Mono" ];
|
|
||||||
# monospace = [ "CascadiaCode" ];
|
|
||||||
# monospace = [ "Hack Nerd Font Mono" ];
|
|
||||||
emoji = [ "Noto Color Emoji" "OpenMoji Color" ];
|
|
||||||
};
|
|
||||||
|
|
||||||
services.gnome-keyring.enable = true;
|
|
||||||
|
|
||||||
services.kdeconnect.enable = variant != "allegro";
|
|
||||||
|
|
||||||
programs.kitty = {
|
|
||||||
enable = true;
|
|
||||||
font.name = "CaskaydiaCove NFM Regular";
|
|
||||||
font.size = 12;
|
|
||||||
settings = {
|
|
||||||
cursor_shape = "block";
|
|
||||||
default_pointer_shape = "arrow";
|
|
||||||
pointer_shape_when_dragging = "arrow";
|
|
||||||
enable_audio_bell = false;
|
|
||||||
placement_strategy = "top-left";
|
|
||||||
remember_window_size = false;
|
|
||||||
initial_window_width = 1300;
|
|
||||||
initial_window_height = 800;
|
|
||||||
confirm_os_window_close = 0;
|
|
||||||
resize_debounce_time = "0.1 0.1";
|
|
||||||
};
|
};
|
||||||
keybindings = {
|
|
||||||
"ctrl+shift+equal" = "change_font_size all +0.5";
|
|
||||||
"ctrl+shift+plus" = "change_font_size all +0.5";
|
|
||||||
"ctrl+shift+kp_add" = "change_font_size all +0.5";
|
|
||||||
"ctrl+shift+minus" = "change_font_size all -0.5";
|
|
||||||
"ctrl+shift+kp_subtract" = "change_font_size all -0.5";
|
|
||||||
};
|
|
||||||
shellIntegration.enableFishIntegration = true;
|
|
||||||
shellIntegration.mode = "no-cursor";
|
|
||||||
extraConfig = ''
|
|
||||||
include colors.conf
|
|
||||||
bold_font CaskaydiaCove NFM Bold
|
|
||||||
italic_font CaskaydiaCove NFM Italic
|
|
||||||
bold_italic_font CaskaydiaCove NFM Bold Italic
|
|
||||||
text_composition_strategy 1.4 4
|
|
||||||
font_features CaskaydiaCoveNF-Italic +calt +ss01
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
programs.alacritty = {
|
home.sessionVariables = {
|
||||||
enable = true;
|
TERMINAL = defaultTerminal;
|
||||||
settings = {
|
};
|
||||||
font = {
|
|
||||||
size = 12.0;
|
home.packages = with pkgs; [
|
||||||
|
gentium
|
||||||
|
nerd-fonts.noto
|
||||||
|
nerd-fonts.hack
|
||||||
|
nerd-fonts.jetbrains-mono
|
||||||
|
nerd-fonts.caskaydia-cove
|
||||||
|
cascadia-code
|
||||||
|
inter
|
||||||
|
emojione
|
||||||
|
|
||||||
|
bluetuith
|
||||||
|
keepmenu
|
||||||
|
rofimoji
|
||||||
|
ydotool
|
||||||
|
libnotify
|
||||||
|
wtype
|
||||||
|
wl-clipboard
|
||||||
|
|
||||||
|
pamixer
|
||||||
|
pulsemixer
|
||||||
|
|
||||||
|
(catppuccin-gtk.override {
|
||||||
|
accents = [ "pink" ];
|
||||||
|
size = "compact";
|
||||||
|
tweaks = [ "black" ];
|
||||||
|
variant = "mocha";
|
||||||
|
})
|
||||||
|
];
|
||||||
|
|
||||||
|
xsession.enable = true;
|
||||||
|
|
||||||
|
fonts.fontconfig.enable = true;
|
||||||
|
fonts.fontconfig.defaultFonts = {
|
||||||
|
serif = [ "Gentium Plus" ];
|
||||||
|
sansSerif = [ "Inter" ];
|
||||||
|
monospace = [ "CaskaydiaCove Nerd Font Mono" ];
|
||||||
|
# monospace = [ "CascadiaCode" ];
|
||||||
|
# monospace = [ "Hack Nerd Font Mono" ];
|
||||||
|
emoji = [ "Noto Color Emoji" "OpenMoji Color" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
services.gnome-keyring.enable = true;
|
||||||
|
|
||||||
|
programs.kitty = {
|
||||||
|
enable = true;
|
||||||
|
font.name = "CaskaydiaCove NFM Regular";
|
||||||
|
font.size = 12;
|
||||||
|
settings = {
|
||||||
|
cursor_shape = "block";
|
||||||
|
default_pointer_shape = "arrow";
|
||||||
|
pointer_shape_when_dragging = "arrow";
|
||||||
|
enable_audio_bell = false;
|
||||||
|
placement_strategy = "top-left";
|
||||||
|
remember_window_size = false;
|
||||||
|
initial_window_width = 1300;
|
||||||
|
initial_window_height = 800;
|
||||||
|
confirm_os_window_close = 0;
|
||||||
|
resize_debounce_time = "0.1 0.1";
|
||||||
};
|
};
|
||||||
|
keybindings = {
|
||||||
|
"ctrl+shift+equal" = "change_font_size all +0.5";
|
||||||
|
"ctrl+shift+plus" = "change_font_size all +0.5";
|
||||||
|
"ctrl+shift+kp_add" = "change_font_size all +0.5";
|
||||||
|
"ctrl+shift+minus" = "change_font_size all -0.5";
|
||||||
|
"ctrl+shift+kp_subtract" = "change_font_size all -0.5";
|
||||||
|
};
|
||||||
|
shellIntegration.enableFishIntegration = true;
|
||||||
|
shellIntegration.mode = "no-cursor";
|
||||||
|
extraConfig = ''
|
||||||
|
include colors.conf
|
||||||
|
bold_font CaskaydiaCove NFM Bold
|
||||||
|
italic_font CaskaydiaCove NFM Italic
|
||||||
|
bold_italic_font CaskaydiaCove NFM Bold Italic
|
||||||
|
text_composition_strategy 1.4 4
|
||||||
|
font_features CaskaydiaCoveNF-Italic +calt +ss01
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
general.import = [
|
programs.alacritty = {
|
||||||
alacrittyLightTheme # default to white
|
enable = true;
|
||||||
"~/.config/alacritty/colors.toml"
|
settings = {
|
||||||
|
font = {
|
||||||
|
size = 12.0;
|
||||||
|
};
|
||||||
|
|
||||||
|
general.import = [
|
||||||
|
alacrittyLightTheme # default to white
|
||||||
|
"~/.config/alacritty/colors.toml"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
xdg = {
|
||||||
|
mimeApps.defaultApplications."TerminalEmulator" = "Alacritty.desktop";
|
||||||
|
};
|
||||||
|
|
||||||
|
services.swayidle =
|
||||||
|
{
|
||||||
|
enable = true;
|
||||||
|
events = [
|
||||||
|
{
|
||||||
|
event = "before-sleep";
|
||||||
|
command = "${config.swaylock-bin} -defF";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
event = "after-resume";
|
||||||
|
command = "${config.wayland.windowManager.hyprland.package}/bin/hyprctl dispatch dpms on";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
event = "lock";
|
||||||
|
command = "${config.swaylock-bin} -defF";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
timeouts = [
|
||||||
|
{
|
||||||
|
timeout = 900;
|
||||||
|
command = "${config.swaylock-bin} -defF";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
timeout = 900;
|
||||||
|
command = "${config.wayland.windowManager.hyprland.package}/bin/hyprctl dispatch dpms off";
|
||||||
|
}
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
};
|
|
||||||
|
|
||||||
xdg = {
|
programs.swaylock = {
|
||||||
mimeApps.defaultApplications."TerminalEmulator" = "Alacritty.desktop";
|
enable = (config.swaylock-bin == options.swaylock-bin.default);
|
||||||
};
|
package = pkgs.swaylock-effects;
|
||||||
|
settings = {
|
||||||
|
screenshots = true;
|
||||||
|
# clock = true;
|
||||||
|
font = "Sans:bold";
|
||||||
|
disable-caps-lock-text = true;
|
||||||
|
effect-blur = "7x5";
|
||||||
|
text-color = "ffffff";
|
||||||
|
layout-text-color = "ffffff";
|
||||||
|
|
||||||
services.swayidle =
|
ring-color = "000000";
|
||||||
let swaylock-bin = (if variant == "allegro"
|
key-hl-color = "dddddd";
|
||||||
then "/usr/bin/swaylock"
|
line-color = "00000000";
|
||||||
else "${config.programs.swaylock.package}/bin/swaylock");
|
inside-color = "00000088";
|
||||||
in
|
separator-color = "00000000";
|
||||||
{
|
|
||||||
enable = true;
|
|
||||||
events = [
|
|
||||||
{
|
|
||||||
event = "before-sleep";
|
|
||||||
command = "${swaylock-bin} -defF";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
event = "after-resume";
|
|
||||||
command = "${config.wayland.windowManager.hyprland.package}/bin/hyprctl dispatch dpms on";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
event = "lock";
|
|
||||||
command = "${swaylock-bin} -defF";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
timeouts = [
|
ring-clear-color = "00000000";
|
||||||
{
|
line-clear-color = "00000000";
|
||||||
timeout = 900;
|
inside-clear-color = "00000000";
|
||||||
command = "${swaylock-bin} -defF";
|
text-clear-color = "00000000";
|
||||||
}
|
};
|
||||||
{
|
|
||||||
timeout = 900;
|
|
||||||
command = "${config.wayland.windowManager.hyprland.package}/bin/hyprctl dispatch dpms off";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
programs.swaylock = {
|
|
||||||
enable = (variant != "allegro");
|
|
||||||
package = pkgs.swaylock-effects;
|
|
||||||
settings = {
|
|
||||||
screenshots = true;
|
|
||||||
# clock = true;
|
|
||||||
font = "Sans:bold";
|
|
||||||
disable-caps-lock-text = true;
|
|
||||||
effect-blur = "7x5";
|
|
||||||
text-color = "ffffff";
|
|
||||||
layout-text-color = "ffffff";
|
|
||||||
|
|
||||||
ring-color = "000000";
|
|
||||||
key-hl-color = "dddddd";
|
|
||||||
line-color = "00000000";
|
|
||||||
inside-color = "00000088";
|
|
||||||
separator-color = "00000000";
|
|
||||||
|
|
||||||
ring-clear-color = "00000000";
|
|
||||||
line-clear-color = "00000000";
|
|
||||||
inside-clear-color = "00000000";
|
|
||||||
text-clear-color = "00000000";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
services.dunst.enable = true;
|
|
||||||
services.dunst.settings = {
|
|
||||||
global = {
|
|
||||||
width = "(0, 1000)";
|
|
||||||
height = "(0, 1000)";
|
|
||||||
offset = "(20,20)";
|
|
||||||
horizontal_padding = 8;
|
|
||||||
indicate_hidden = true;
|
|
||||||
shrink = true;
|
|
||||||
transparency = 20;
|
|
||||||
separator_height = 2;
|
|
||||||
frame_width = 3;
|
|
||||||
frame_color = "#000000";
|
|
||||||
font = "Monospace 11";
|
|
||||||
alignment = "left";
|
|
||||||
show_age_threshold = 60;
|
|
||||||
background = "#ffffff";
|
|
||||||
foreground = "#000000";
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
services.dunst.enable = true;
|
||||||
|
services.dunst.settings = {
|
||||||
|
global = {
|
||||||
|
width = "(0, 1000)";
|
||||||
|
height = "(0, 1000)";
|
||||||
|
offset = "(20,20)";
|
||||||
|
horizontal_padding = 8;
|
||||||
|
indicate_hidden = true;
|
||||||
|
shrink = true;
|
||||||
|
transparency = 20;
|
||||||
|
separator_height = 2;
|
||||||
|
frame_width = 3;
|
||||||
|
frame_color = "#000000";
|
||||||
|
font = "Monospace 11";
|
||||||
|
alignment = "left";
|
||||||
|
show_age_threshold = 60;
|
||||||
|
background = "#ffffff";
|
||||||
|
foreground = "#000000";
|
||||||
|
};
|
||||||
|
|
||||||
urgency_critical = {
|
|
||||||
background = "#ff9999";
|
urgency_critical = {
|
||||||
|
background = "#ff9999";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
|
||||||
|
|
||||||
programs.rofi = {
|
programs.rofi = {
|
||||||
enable = true;
|
enable = true;
|
||||||
package = pkgs.rofi-wayland;
|
package = pkgs.rofi-wayland;
|
||||||
plugins = [ pkgs.rofi-calc pkgs.rofi-emoji ];
|
plugins = [ pkgs.rofi-calc pkgs.rofi-emoji ];
|
||||||
theme = "theme.rasi";
|
theme = "theme.rasi";
|
||||||
};
|
|
||||||
|
|
||||||
qt = {
|
|
||||||
enable = true;
|
|
||||||
platformTheme.name = "kde";
|
|
||||||
};
|
|
||||||
|
|
||||||
gtk = {
|
|
||||||
enable = true;
|
|
||||||
font = {
|
|
||||||
package = pkgs.inter;
|
|
||||||
name = "Inter";
|
|
||||||
};
|
};
|
||||||
# theme = {
|
|
||||||
# name = "Catppuccin-Latte-Compact-Pink-Light";
|
|
||||||
# # name = "Catppuccin-Mocha-Compact-Pink-Dark";
|
|
||||||
# package = pkgs.catppuccin-gtk.override {
|
|
||||||
# accents = [ "pink" ];
|
|
||||||
# size = "compact";
|
|
||||||
# tweaks = [ ];
|
|
||||||
# variant = "latte";
|
|
||||||
# };
|
|
||||||
# };
|
|
||||||
# iconTheme = {
|
|
||||||
# name = "Adwaita";
|
|
||||||
# package = pkgs.adwaita-icon-theme;
|
|
||||||
# };
|
|
||||||
cursorTheme = {
|
|
||||||
name = "Hackneyed";
|
|
||||||
package = pkgs.hackneyed;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
services.darkman = let
|
qt = {
|
||||||
reload-hyprland = ''
|
enable = true;
|
||||||
${pkgs.hyprland}/bin/hyprctl reload
|
platformTheme.name = "kde";
|
||||||
'';
|
};
|
||||||
reload-st = ''
|
|
||||||
kill -SIGUSR1 $(pgrep st) # reload st config
|
gtk = {
|
||||||
'';
|
enable = true;
|
||||||
reload-neovim = ''
|
font = {
|
||||||
kill -SIGUSR1 $(pgrep nvim)
|
package = pkgs.inter;
|
||||||
'';
|
name = "Inter";
|
||||||
in {
|
};
|
||||||
enable = true;
|
# theme = {
|
||||||
lightModeScripts = {
|
# name = "Catppuccin-Latte-Compact-Pink-Light";
|
||||||
gtk-theme = ''
|
# # name = "Catppuccin-Mocha-Compact-Pink-Dark";
|
||||||
${pkgs.dconf}/bin/dconf write /org/gnome/desktop/interface/color-scheme "'prefer-light'"
|
# package = pkgs.catppuccin-gtk.override {
|
||||||
'';
|
# accents = [ "pink" ];
|
||||||
set-background = ''
|
# size = "compact";
|
||||||
rm -f ~/.local/share/bg/*
|
# tweaks = [ ];
|
||||||
ln -rs ~/.local/share/bg-light.* ~/.local/share/bg/
|
# variant = "latte";
|
||||||
|
# };
|
||||||
|
# };
|
||||||
|
# iconTheme = {
|
||||||
|
# name = "Adwaita";
|
||||||
|
# package = pkgs.adwaita-icon-theme;
|
||||||
|
# };
|
||||||
|
cursorTheme = {
|
||||||
|
name = "Hackneyed";
|
||||||
|
package = pkgs.hackneyed;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
services.darkman = let
|
||||||
|
reload-hyprland = ''
|
||||||
${pkgs.hyprland}/bin/hyprctl reload
|
${pkgs.hyprland}/bin/hyprctl reload
|
||||||
'';
|
'';
|
||||||
set-rofi-colors = ''
|
reload-st = ''
|
||||||
rm -f ~/.config/rofi/colors-current.rasi
|
kill -SIGUSR1 $(pgrep st) # reload st config
|
||||||
ln -rs ~/.config/rofi/colors-light.rasi ~/.config/rofi/colors-current.rasi
|
|
||||||
'';
|
'';
|
||||||
set-kitty-colors = ''
|
reload-neovim = ''
|
||||||
rm -f ~/.config/kitty/colors.conf
|
kill -SIGUSR1 $(pgrep nvim)
|
||||||
ln -rs ~/.config/kitty/light.conf ~/.config/kitty/colors.conf
|
|
||||||
kill -SIGUSR1 $(pgrep kitty)
|
|
||||||
'';
|
'';
|
||||||
set-alacritty-colors = ''
|
in {
|
||||||
rm -f ~/.config/alacritty/colors.toml
|
enable = true;
|
||||||
ln -s ${alacrittyLightTheme} ~/.config/alacritty/colors.toml
|
lightModeScripts = {
|
||||||
'';
|
gtk-theme = ''
|
||||||
notify = "${pkgs.libnotify}/bin/notify-send \"Light mode\"";
|
${pkgs.dconf}/bin/dconf write /org/gnome/desktop/interface/color-scheme "'prefer-light'"
|
||||||
inherit reload-hyprland;
|
|
||||||
inherit reload-st;
|
|
||||||
inherit reload-neovim;
|
|
||||||
};
|
|
||||||
|
|
||||||
darkModeScripts = {
|
|
||||||
gtk-theme = ''
|
|
||||||
${pkgs.dconf}/bin/dconf write /org/gnome/desktop/interface/color-scheme "'prefer-dark'"
|
|
||||||
'';
|
'';
|
||||||
set-background = ''
|
set-background = ''
|
||||||
rm -f ~/.local/share/bg/*
|
rm -f ~/.local/share/bg/*
|
||||||
ln -rs ~/.local/share/bg-dark.* ~/.local/share/bg/
|
ln -rs ~/.local/share/bg-light.* ~/.local/share/bg/
|
||||||
${pkgs.hyprland}/bin/hyprctl reload
|
${pkgs.hyprland}/bin/hyprctl reload
|
||||||
'';
|
'';
|
||||||
set-rofi-colors = ''
|
set-rofi-colors = ''
|
||||||
rm -f ~/.config/rofi/colors-current.rasi
|
rm -f ~/.config/rofi/colors-current.rasi
|
||||||
ln -rs ~/.config/rofi/colors-dark.rasi ~/.config/rofi/colors-current.rasi
|
ln -rs ~/.config/rofi/colors-light.rasi ~/.config/rofi/colors-current.rasi
|
||||||
'';
|
'';
|
||||||
set-kitty-colors = ''
|
set-kitty-colors = ''
|
||||||
rm -f ~/.config/kitty/colors.conf
|
rm -f ~/.config/kitty/colors.conf
|
||||||
ln -rs ~/.config/kitty/dark.conf ~/.config/kitty/colors.conf
|
ln -rs ~/.config/kitty/light.conf ~/.config/kitty/colors.conf
|
||||||
kill -SIGUSR1 $(pgrep kitty)
|
kill -SIGUSR1 $(pgrep kitty)
|
||||||
'';
|
'';
|
||||||
set-alacritty-colors = ''
|
set-alacritty-colors = ''
|
||||||
rm -f ~/.config/alacritty/colors.toml
|
rm -f ~/.config/alacritty/colors.toml
|
||||||
ln -s ${alacrittyDarkTheme} ~/.config/alacritty/colors.toml
|
ln -s ${alacrittyLightTheme} ~/.config/alacritty/colors.toml
|
||||||
'';
|
'';
|
||||||
notify = "${pkgs.libnotify}/bin/notify-send \"Dark mode\"";
|
notify = "${pkgs.libnotify}/bin/notify-send \"Light mode\"";
|
||||||
inherit reload-hyprland;
|
inherit reload-hyprland;
|
||||||
inherit reload-st;
|
inherit reload-st;
|
||||||
inherit reload-neovim;
|
inherit reload-neovim;
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
systemd.user.services = {
|
|
||||||
battery-notify = {
|
|
||||||
Unit = {
|
|
||||||
Description = "Send notification when battery is low";
|
|
||||||
Wants = "battery-timer.timer";
|
|
||||||
};
|
};
|
||||||
Service = {
|
|
||||||
Type = "oneshot";
|
darkModeScripts = {
|
||||||
ExecStart = "${pkgs.writers.writeBash "battery-notify" ''
|
gtk-theme = ''
|
||||||
if [[ $(${pkgs.coreutils}/bin/cat /sys/class/power_supply/BAT0/capacity) -lt 10 ]]; then
|
${pkgs.dconf}/bin/dconf write /org/gnome/desktop/interface/color-scheme "'prefer-dark'"
|
||||||
${pkgs.libnotify}/bin/notify-send -u critical "Battery is low"
|
'';
|
||||||
fi
|
set-background = ''
|
||||||
'' }";
|
rm -f ~/.local/share/bg/*
|
||||||
|
ln -rs ~/.local/share/bg-dark.* ~/.local/share/bg/
|
||||||
|
${pkgs.hyprland}/bin/hyprctl reload
|
||||||
|
'';
|
||||||
|
set-rofi-colors = ''
|
||||||
|
rm -f ~/.config/rofi/colors-current.rasi
|
||||||
|
ln -rs ~/.config/rofi/colors-dark.rasi ~/.config/rofi/colors-current.rasi
|
||||||
|
'';
|
||||||
|
set-kitty-colors = ''
|
||||||
|
rm -f ~/.config/kitty/colors.conf
|
||||||
|
ln -rs ~/.config/kitty/dark.conf ~/.config/kitty/colors.conf
|
||||||
|
kill -SIGUSR1 $(pgrep kitty)
|
||||||
|
'';
|
||||||
|
set-alacritty-colors = ''
|
||||||
|
rm -f ~/.config/alacritty/colors.toml
|
||||||
|
ln -s ${alacrittyDarkTheme} ~/.config/alacritty/colors.toml
|
||||||
|
'';
|
||||||
|
notify = "${pkgs.libnotify}/bin/notify-send \"Dark mode\"";
|
||||||
|
inherit reload-hyprland;
|
||||||
|
inherit reload-st;
|
||||||
|
inherit reload-neovim;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.user.services = {
|
||||||
|
battery-notify = {
|
||||||
|
Unit = {
|
||||||
|
Description = "Send notification when battery is low";
|
||||||
|
Wants = "battery-timer.timer";
|
||||||
|
};
|
||||||
|
Service = {
|
||||||
|
Type = "oneshot";
|
||||||
|
ExecStart = "${pkgs.writers.writeBash "battery-notify" ''
|
||||||
|
if [[ $(${pkgs.coreutils}/bin/cat /sys/class/power_supply/BAT0/capacity) -lt 10 ]]; then
|
||||||
|
${pkgs.libnotify}/bin/notify-send -u critical "Battery is low"
|
||||||
|
fi
|
||||||
|
'' }";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.user.timers = {
|
||||||
|
battery-timer = {
|
||||||
|
Unit = {
|
||||||
|
Description = "Execute battery-notify every minute";
|
||||||
|
};
|
||||||
|
Install = {
|
||||||
|
# enable the service
|
||||||
|
# WantedBy = [ "default.target" ];
|
||||||
|
};
|
||||||
|
Timer = {
|
||||||
|
Unit = "battery-notify.service";
|
||||||
|
OnCalendar = "*-*-* *:*:00";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
systemd.user.timers = {
|
|
||||||
battery-timer = {
|
|
||||||
Unit = {
|
|
||||||
Description = "Execute battery-notify every minute";
|
|
||||||
};
|
|
||||||
Install = {
|
|
||||||
# enable the service
|
|
||||||
# WantedBy = [ "default.target" ];
|
|
||||||
};
|
|
||||||
Timer = {
|
|
||||||
Unit = "battery-notify.service";
|
|
||||||
OnCalendar = "*-*-* *:*:00";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue