mirror of
https://github.com/Swarsel/.dotfiles.git
synced 2025-12-06 00:57:22 +01:00
refactor: eliminate old module setup [part 1]
This commit is contained in:
parent
da4cf4eca0
commit
de9b5cf40c
58 changed files with 2375 additions and 2899 deletions
2925
SwarselSystems.org
2925
SwarselSystems.org
File diff suppressed because it is too large
Load diff
|
|
@ -97,8 +97,8 @@
|
||||||
{
|
{
|
||||||
inherit lib;
|
inherit lib;
|
||||||
|
|
||||||
nixosModules = import ./modules/nixos { inherit lib; };
|
# nixosModules = import ./modules/nixos { inherit lib; };
|
||||||
homeModules = import ./modules/home { inherit lib; };
|
# homeModules = import ./modules/home { inherit lib; };
|
||||||
packages = lib.swarselsystems.forEachSystem (pkgs: import ./pkgs { inherit lib pkgs; });
|
packages = lib.swarselsystems.forEachSystem (pkgs: import ./pkgs { inherit lib pkgs; });
|
||||||
formatter = lib.swarselsystems.forEachSystem (pkgs: pkgs.nixpkgs-fmt);
|
formatter = lib.swarselsystems.forEachSystem (pkgs: pkgs.nixpkgs-fmt);
|
||||||
overlays = import ./overlays { inherit self lib inputs; };
|
overlays = import ./overlays { inherit self lib inputs; };
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,8 @@
|
||||||
inputs.sops-nix.homeManagerModules.sops
|
inputs.sops-nix.homeManagerModules.sops
|
||||||
inputs.nix-index-database.hmModules.nix-index
|
inputs.nix-index-database.hmModules.nix-index
|
||||||
./profiles/home/common
|
./profiles/home/common
|
||||||
] ++ (builtins.attrValues outputs.homeModules);
|
"${self}/profiles/home/common/sharedsetup.nix"
|
||||||
|
];
|
||||||
|
|
||||||
nixpkgs = {
|
nixpkgs = {
|
||||||
overlays = [ outputs.overlays.default ];
|
overlays = [ outputs.overlays.default ];
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
{ self, pkgs, inputs, outputs, config, lib, modulesPath, primaryUser ? "swarsel", ... }:
|
{ self, pkgs, inputs, config, lib, modulesPath, primaryUser ? "swarsel", ... }:
|
||||||
let
|
let
|
||||||
pubKeys = lib.filesystem.listFilesRecursive "${self}/secrets/keys/ssh";
|
pubKeys = lib.filesystem.listFilesRecursive "${self}/secrets/keys/ssh";
|
||||||
in
|
in
|
||||||
|
|
@ -9,12 +9,15 @@ in
|
||||||
"${modulesPath}/installer/cd-dvd/channel.nix"
|
"${modulesPath}/installer/cd-dvd/channel.nix"
|
||||||
|
|
||||||
"${self}/profiles/iso/minimal.nix"
|
"${self}/profiles/iso/minimal.nix"
|
||||||
|
"${self}/profiles/nixos/common/sharedsetup.nix"
|
||||||
|
"${self}/profiles/home/common/sharedsetup.nix"
|
||||||
|
|
||||||
inputs.home-manager.nixosModules.home-manager
|
inputs.home-manager.nixosModules.home-manager
|
||||||
{
|
{
|
||||||
home-manager.users."${primaryUser}".imports = [
|
home-manager.users."${primaryUser}".imports = [
|
||||||
"${self}/profiles/home/common/settings.nix"
|
"${self}/profiles/home/common/settings.nix"
|
||||||
] ++ (builtins.attrValues outputs.homeModules);
|
"${self}/profiles/home/common/sharedsetup.nix"
|
||||||
|
];
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -200,13 +200,13 @@ in
|
||||||
xkb_layout = "us";
|
xkb_layout = "us";
|
||||||
xkb_variant = "altgr-intl";
|
xkb_variant = "altgr-intl";
|
||||||
};
|
};
|
||||||
"2362:628:PIXA3854:00_093A:0274_Touchpad" = {
|
# "2362:628:PIXA3854:00_093A:0274_Touchpad" = {
|
||||||
dwt = "enabled";
|
# dwt = "enabled";
|
||||||
tap = "enabled";
|
# tap = "enabled";
|
||||||
natural_scroll = "enabled";
|
# natural_scroll = "enabled";
|
||||||
middle_emulation = "enabled";
|
# middle_emulation = "enabled";
|
||||||
drag_lock = "disabled";
|
# drag_lock = "disabled";
|
||||||
};
|
# };
|
||||||
"1133:50504:Logitech_USB_Receiver" = {
|
"1133:50504:Logitech_USB_Receiver" = {
|
||||||
xkb_layout = "us";
|
xkb_layout = "us";
|
||||||
xkb_variant = "altgr-intl";
|
xkb_variant = "altgr-intl";
|
||||||
|
|
|
||||||
|
|
@ -6,12 +6,15 @@ in
|
||||||
imports = [
|
imports = [
|
||||||
|
|
||||||
"${profilesPath}/nixos/server"
|
"${profilesPath}/nixos/server"
|
||||||
|
"${profilesPath}/nixos/common/sharedsetup.nix"
|
||||||
|
"${profilesPath}/home/common/sharedsetup.nix"
|
||||||
./hardware-configuration.nix
|
./hardware-configuration.nix
|
||||||
|
|
||||||
inputs.home-manager.nixosModules.home-manager
|
inputs.home-manager.nixosModules.home-manager
|
||||||
{
|
{
|
||||||
home-manager.users."${primaryUser}".imports = [
|
home-manager.users."${primaryUser}".imports = [
|
||||||
"${profilesPath}/home/server"
|
"${profilesPath}/home/server"
|
||||||
|
"${profilesPath}/home/common/sharedsetup.nix"
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
@ -79,14 +82,11 @@ in
|
||||||
|
|
||||||
|
|
||||||
swarselsystems = {
|
swarselsystems = {
|
||||||
hasBluetooth = false;
|
|
||||||
hasFingerprint = false;
|
|
||||||
isImpermanence = false;
|
isImpermanence = false;
|
||||||
isLinux = true;
|
isLinux = true;
|
||||||
isBtrfs = false;
|
isBtrfs = false;
|
||||||
flakePath = "/root/.dotfiles";
|
flakePath = "/root/.dotfiles";
|
||||||
server = {
|
server = {
|
||||||
enable = true;
|
|
||||||
forgejo = true;
|
forgejo = true;
|
||||||
ankisync = true;
|
ankisync = true;
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
{ self, inputs, outputs, pkgs, lib, primaryUser, ... }:
|
{ self, inputs, pkgs, lib, primaryUser, ... }:
|
||||||
let
|
let
|
||||||
profilesPath = "${self}/profiles";
|
profilesPath = "${self}/profiles";
|
||||||
sharedOptions = {
|
sharedOptions = {
|
||||||
|
|
@ -14,6 +14,7 @@ in
|
||||||
|
|
||||||
"${profilesPath}/nixos/optional/autologin.nix"
|
"${profilesPath}/nixos/optional/autologin.nix"
|
||||||
"${profilesPath}/nixos/common/settings.nix"
|
"${profilesPath}/nixos/common/settings.nix"
|
||||||
|
"${profilesPath}/nixos/common/sharedsetup.nix"
|
||||||
"${profilesPath}/nixos/common/home-manager.nix"
|
"${profilesPath}/nixos/common/home-manager.nix"
|
||||||
"${profilesPath}/nixos/common/home-manager-extra.nix"
|
"${profilesPath}/nixos/common/home-manager-extra.nix"
|
||||||
"${profilesPath}/nixos/common/xserver.nix"
|
"${profilesPath}/nixos/common/xserver.nix"
|
||||||
|
|
@ -22,6 +23,7 @@ in
|
||||||
"${profilesPath}/nixos/common/lanzaboote.nix"
|
"${profilesPath}/nixos/common/lanzaboote.nix"
|
||||||
"${profilesPath}/nixos/common/sops.nix"
|
"${profilesPath}/nixos/common/sops.nix"
|
||||||
"${profilesPath}/nixos/server/ssh.nix"
|
"${profilesPath}/nixos/server/ssh.nix"
|
||||||
|
"${profilesPath}/home/common/sharedsetup.nix"
|
||||||
|
|
||||||
inputs.home-manager.nixosModules.home-manager
|
inputs.home-manager.nixosModules.home-manager
|
||||||
{
|
{
|
||||||
|
|
@ -30,9 +32,10 @@ in
|
||||||
"${profilesPath}/home/common/settings.nix"
|
"${profilesPath}/home/common/settings.nix"
|
||||||
"${profilesPath}/home/common/sops.nix"
|
"${profilesPath}/home/common/sops.nix"
|
||||||
"${profilesPath}/home/common/ssh.nix"
|
"${profilesPath}/home/common/ssh.nix"
|
||||||
] ++ (builtins.attrValues outputs.homeModules);
|
"${profilesPath}/home/common/sharedsetup.nix"
|
||||||
|
];
|
||||||
}
|
}
|
||||||
] ++ (builtins.attrValues outputs.nixosModules) ++ (builtins.attrValues outputs.homeModules);
|
];
|
||||||
|
|
||||||
|
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
|
|
|
||||||
|
|
@ -32,13 +32,10 @@ in
|
||||||
};
|
};
|
||||||
|
|
||||||
swarselsystems = {
|
swarselsystems = {
|
||||||
hasBluetooth = false;
|
|
||||||
hasFingerprint = false;
|
|
||||||
isImpermanence = false;
|
isImpermanence = false;
|
||||||
isBtrfs = false;
|
isBtrfs = false;
|
||||||
isLinux = true;
|
isLinux = true;
|
||||||
server = {
|
server = {
|
||||||
enable = true;
|
|
||||||
kavita = true;
|
kavita = true;
|
||||||
navidrome = true;
|
navidrome = true;
|
||||||
jellyfin = true;
|
jellyfin = true;
|
||||||
|
|
|
||||||
|
|
@ -70,7 +70,7 @@ in
|
||||||
# put home-manager imports here that are for all servers and normal hosts
|
# put home-manager imports here that are for all servers and normal hosts
|
||||||
inputs.sops-nix.homeManagerModules.sops
|
inputs.sops-nix.homeManagerModules.sops
|
||||||
inputs.nix-index-database.hmModules.nix-index
|
inputs.nix-index-database.hmModules.nix-index
|
||||||
] ++ (builtins.attrValues outputs.homeModules);
|
];
|
||||||
}
|
}
|
||||||
] else [
|
] else [
|
||||||
# put nixos imports here that are for darwin hosts
|
# put nixos imports here that are for darwin hosts
|
||||||
|
|
@ -80,9 +80,9 @@ in
|
||||||
home-manager.users."${macUser}".imports = [
|
home-manager.users."${macUser}".imports = [
|
||||||
# put home-manager imports here that are for darwin hosts
|
# put home-manager imports here that are for darwin hosts
|
||||||
"${self}/profiles/darwin/home"
|
"${self}/profiles/darwin/home"
|
||||||
] ++ (builtins.attrValues outputs.homeModules);
|
];
|
||||||
}
|
}
|
||||||
]) ++ (builtins.attrValues outputs.nixosModules) ++ (builtins.attrValues outputs.homeModules)
|
])
|
||||||
));
|
));
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -1,6 +0,0 @@
|
||||||
{ lib, ... }:
|
|
||||||
{
|
|
||||||
options.swarselsystems = {
|
|
||||||
isBtrfs = lib.mkEnableOption "use btrfs filesystem";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,25 +0,0 @@
|
||||||
{ lib, ... }:
|
|
||||||
{
|
|
||||||
options.swarselsystems = {
|
|
||||||
cpuCount = lib.mkOption {
|
|
||||||
type = lib.types.int;
|
|
||||||
default = 8;
|
|
||||||
};
|
|
||||||
isSecondaryGpu = lib.mkEnableOption "device has a secondary GPU";
|
|
||||||
SecondaryGpuCard = lib.mkOption {
|
|
||||||
type = lib.types.str;
|
|
||||||
default = "";
|
|
||||||
};
|
|
||||||
temperatureHwmon = {
|
|
||||||
isAbsolutePath = lib.mkEnableOption "absolute temperature path";
|
|
||||||
path = lib.mkOption {
|
|
||||||
type = lib.types.str;
|
|
||||||
default = "";
|
|
||||||
};
|
|
||||||
input-filename = lib.mkOption {
|
|
||||||
type = lib.types.str;
|
|
||||||
default = "";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,39 +0,0 @@
|
||||||
{ lib, config, ... }:
|
|
||||||
{
|
|
||||||
options.swarselsystems = {
|
|
||||||
inputs = lib.mkOption {
|
|
||||||
type = lib.types.attrsOf (lib.types.attrsOf lib.types.str);
|
|
||||||
default = { };
|
|
||||||
};
|
|
||||||
kyria = lib.mkOption {
|
|
||||||
type = lib.types.attrsOf (lib.types.attrsOf lib.types.str);
|
|
||||||
default = {
|
|
||||||
"36125:53060:splitkb.com_splitkb.com_Kyria_rev3" = {
|
|
||||||
xkb_layout = "us";
|
|
||||||
xkb_variant = "altgr-intl";
|
|
||||||
};
|
|
||||||
"7504:24926:Kyria_Keyboard" = {
|
|
||||||
xkb_layout = "us";
|
|
||||||
xkb_variant = "altgr-intl";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
touchpad = lib.mkOption {
|
|
||||||
type = lib.types.attrsOf (lib.types.attrsOf lib.types.str);
|
|
||||||
default = { };
|
|
||||||
};
|
|
||||||
standardinputs = lib.mkOption {
|
|
||||||
type = lib.types.attrsOf (lib.types.attrsOf lib.types.str);
|
|
||||||
default = lib.recursiveUpdate (lib.recursiveUpdate config.swarselsystems.touchpad config.swarselsystems.kyria) config.swarselsystems.inputs;
|
|
||||||
internal = true;
|
|
||||||
};
|
|
||||||
keybindings = lib.mkOption {
|
|
||||||
type = lib.types.attrsOf lib.types.str;
|
|
||||||
default = { };
|
|
||||||
};
|
|
||||||
shellAliases = lib.mkOption {
|
|
||||||
type = lib.types.attrsOf lib.types.str;
|
|
||||||
default = { };
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,35 +0,0 @@
|
||||||
{ lib, config, ... }:
|
|
||||||
{
|
|
||||||
options.swarselsystems = {
|
|
||||||
isLaptop = lib.mkEnableOption "laptop host";
|
|
||||||
};
|
|
||||||
|
|
||||||
config.swarselsystems = {
|
|
||||||
touchpad = lib.mkIf config.swarselsystems.isLaptop {
|
|
||||||
"type:touchpad" = {
|
|
||||||
dwt = "enabled";
|
|
||||||
tap = "enabled";
|
|
||||||
natural_scroll = "enabled";
|
|
||||||
middle_emulation = "enabled";
|
|
||||||
drag_lock = "disabled";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
waybarModules = lib.mkIf config.swarselsystems.isLaptop [
|
|
||||||
"custom/outer-left-arrow-dark"
|
|
||||||
"mpris"
|
|
||||||
"custom/left-arrow-light"
|
|
||||||
"network"
|
|
||||||
"custom/vpn"
|
|
||||||
"custom/left-arrow-dark"
|
|
||||||
"pulseaudio"
|
|
||||||
"custom/left-arrow-light"
|
|
||||||
"battery"
|
|
||||||
"custom/left-arrow-dark"
|
|
||||||
"group/hardware"
|
|
||||||
"custom/left-arrow-light"
|
|
||||||
"clock#2"
|
|
||||||
"custom/left-arrow-dark"
|
|
||||||
"clock#1"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,21 +0,0 @@
|
||||||
{ lib, ... }:
|
|
||||||
{
|
|
||||||
options.swarselsystems = {
|
|
||||||
monitors = lib.mkOption {
|
|
||||||
type = lib.types.attrsOf (lib.types.attrsOf lib.types.str);
|
|
||||||
default = { };
|
|
||||||
};
|
|
||||||
sharescreen = lib.mkOption {
|
|
||||||
type = lib.types.str;
|
|
||||||
default = "";
|
|
||||||
};
|
|
||||||
lowResolution = lib.mkOption {
|
|
||||||
type = lib.types.str;
|
|
||||||
default = "";
|
|
||||||
};
|
|
||||||
highResolution = lib.mkOption {
|
|
||||||
type = lib.types.str;
|
|
||||||
default = "";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,34 +0,0 @@
|
||||||
{ lib, config, ... }:
|
|
||||||
{
|
|
||||||
options.swarselsystems = {
|
|
||||||
isNixos = lib.mkEnableOption "nixos host";
|
|
||||||
isPublic = lib.mkEnableOption "is a public machine (no secrets)";
|
|
||||||
swayfxConfig = lib.mkOption {
|
|
||||||
type = lib.types.str;
|
|
||||||
default = "
|
|
||||||
blur enable
|
|
||||||
blur_xray disable
|
|
||||||
blur_passes 1
|
|
||||||
blur_radius 1
|
|
||||||
shadows enable
|
|
||||||
corner_radius 2
|
|
||||||
titlebar_separator disable
|
|
||||||
default_dim_inactive 0.02
|
|
||||||
";
|
|
||||||
internal = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
config.swarselsystems = {
|
|
||||||
startup = lib.mkIf (!config.swarselsystems.isNixos) [
|
|
||||||
{ command = "sleep 60 && nixGL nextcloud --background"; }
|
|
||||||
{ command = "sleep 60 && nixGL vesktop --start-minimized -enable-features=UseOzonePlatform -ozone-platform=wayland"; }
|
|
||||||
{ command = "sleep 60 && nixGL syncthingtray --wait"; }
|
|
||||||
{ command = "sleep 60 && ANKI_WAYLAND=1 nixGL anki"; }
|
|
||||||
{ command = "nm-applet --indicator"; }
|
|
||||||
{ command = "sleep 60 && OBSIDIAN_USE_WAYLAND=1 nixGL obsidian -enable-features=UseOzonePlatform -ozone-platform=wayland"; }
|
|
||||||
{ command = "sleep 60 && element-desktop --hidden -enable-features=UseOzonePlatform -ozone-platform=wayland --disable-gpu-driver-bug-workarounds"; }
|
|
||||||
];
|
|
||||||
swayfxConfig = lib.mkIf (!config.swarselsystems.isNixos) " ";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,23 +0,0 @@
|
||||||
{ lib, ... }:
|
|
||||||
{
|
|
||||||
options.swarselsystems = {
|
|
||||||
isDarwin = lib.mkEnableOption "darwin host";
|
|
||||||
isLinux = lib.mkEnableOption "whether this is a linux machine";
|
|
||||||
mainUser = lib.mkOption {
|
|
||||||
type = lib.types.str;
|
|
||||||
default = "swarsel";
|
|
||||||
};
|
|
||||||
homeDir = lib.mkOption {
|
|
||||||
type = lib.types.str;
|
|
||||||
default = "/home/swarsel";
|
|
||||||
};
|
|
||||||
xdgDir = lib.mkOption {
|
|
||||||
type = lib.types.str;
|
|
||||||
default = "/run/user/1000";
|
|
||||||
};
|
|
||||||
flakePath = lib.mkOption {
|
|
||||||
type = lib.types.str;
|
|
||||||
default = "/home/swarsel/.dotfiles";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,17 +0,0 @@
|
||||||
{ lib, ... }:
|
|
||||||
{
|
|
||||||
options.swarselsystems = {
|
|
||||||
startup = lib.mkOption {
|
|
||||||
type = lib.types.listOf (lib.types.attrsOf lib.types.str);
|
|
||||||
default = [
|
|
||||||
{ command = "nextcloud --background"; }
|
|
||||||
{ command = "vesktop --start-minimized --enable-speech-dispatcher --ozone-platform-hint=auto --enable-features=WaylandWindowDecorations --enable-wayland-ime"; }
|
|
||||||
{ command = "element-desktop --hidden --enable-features=UseOzonePlatform --ozone-platform=wayland --disable-gpu-driver-bug-workarounds"; }
|
|
||||||
{ command = "ANKI_WAYLAND=1 anki"; }
|
|
||||||
{ command = "OBSIDIAN_USE_WAYLAND=1 obsidian"; }
|
|
||||||
{ command = "nm-applet"; }
|
|
||||||
{ command = "feishin"; }
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,52 +0,0 @@
|
||||||
{ self, lib, pkgs, ... }:
|
|
||||||
{
|
|
||||||
options.swarselsystems = {
|
|
||||||
stylix = lib.mkOption {
|
|
||||||
type = lib.types.attrs;
|
|
||||||
default = {
|
|
||||||
enable = true;
|
|
||||||
base16Scheme = "${self}/programs/stylix/swarsel.yaml";
|
|
||||||
polarity = "dark";
|
|
||||||
opacity.popups = 0.5;
|
|
||||||
cursor = {
|
|
||||||
package = pkgs.banana-cursor;
|
|
||||||
# package = pkgs.capitaine-cursors;
|
|
||||||
name = "Banana";
|
|
||||||
# name = "capitaine-cursors";
|
|
||||||
size = 16;
|
|
||||||
};
|
|
||||||
fonts = {
|
|
||||||
sizes = {
|
|
||||||
terminal = 10;
|
|
||||||
applications = 11;
|
|
||||||
};
|
|
||||||
serif = {
|
|
||||||
# package = (pkgs.nerdfonts.override { fonts = [ "FiraMono" "FiraCode"]; });
|
|
||||||
package = pkgs.cantarell-fonts;
|
|
||||||
# package = pkgs.montserrat;
|
|
||||||
name = "Cantarell";
|
|
||||||
# name = "FiraCode Nerd Font Propo";
|
|
||||||
# name = "Montserrat";
|
|
||||||
};
|
|
||||||
sansSerif = {
|
|
||||||
# package = (pkgs.nerdfonts.override { fonts = [ "FiraMono" "FiraCode"]; });
|
|
||||||
package = pkgs.cantarell-fonts;
|
|
||||||
# package = pkgs.montserrat;
|
|
||||||
name = "Cantarell";
|
|
||||||
# name = "FiraCode Nerd Font Propo";
|
|
||||||
# name = "Montserrat";
|
|
||||||
};
|
|
||||||
monospace = {
|
|
||||||
package = pkgs.nerd-fonts.fira-mono; # has overrides
|
|
||||||
name = "FiraCode Nerd Font Mono";
|
|
||||||
};
|
|
||||||
emoji = {
|
|
||||||
package = pkgs.noto-fonts-emoji;
|
|
||||||
name = "Noto Color Emoji";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
@ -1,9 +0,0 @@
|
||||||
{ self, lib, ... }:
|
|
||||||
{
|
|
||||||
options.swarselsystems = {
|
|
||||||
wallpaper = lib.mkOption {
|
|
||||||
type = lib.types.path;
|
|
||||||
default = self + /wallpaper/lenovowp.png;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,35 +0,0 @@
|
||||||
{ lib, config, ... }:
|
|
||||||
let
|
|
||||||
generateIcons = n: lib.concatStringsSep " " (builtins.map (x: "{icon" + toString x + "}") (lib.range 0 (n - 1)));
|
|
||||||
in
|
|
||||||
{
|
|
||||||
options.swarselsystems = {
|
|
||||||
cpuString = lib.mkOption {
|
|
||||||
type = lib.types.str;
|
|
||||||
default = generateIcons config.swarselsystems.cpuCount;
|
|
||||||
description = "The generated icons string for use by Waybar.";
|
|
||||||
internal = true;
|
|
||||||
};
|
|
||||||
waybarModules = lib.mkOption {
|
|
||||||
type = lib.types.listOf lib.types.str;
|
|
||||||
default = [
|
|
||||||
"custom/outer-left-arrow-dark"
|
|
||||||
"mpris"
|
|
||||||
"custom/left-arrow-light"
|
|
||||||
"network"
|
|
||||||
"custom/vpn"
|
|
||||||
"custom/left-arrow-dark"
|
|
||||||
"pulseaudio"
|
|
||||||
"custom/left-arrow-light"
|
|
||||||
"custom/pseudobat"
|
|
||||||
"battery"
|
|
||||||
"custom/left-arrow-dark"
|
|
||||||
"group/hardware"
|
|
||||||
"custom/left-arrow-light"
|
|
||||||
"clock#2"
|
|
||||||
"custom/left-arrow-dark"
|
|
||||||
"clock#1"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,15 +0,0 @@
|
||||||
{ lib, ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
options.swarselsystems = {
|
|
||||||
hasBluetooth = lib.mkEnableOption "bluetooth availability";
|
|
||||||
hasFingerprint = lib.mkEnableOption "fingerprint sensor availability";
|
|
||||||
trackpoint = {
|
|
||||||
isAvailable = lib.mkEnableOption "trackpoint availability";
|
|
||||||
trackpoint.device = lib.mkOption {
|
|
||||||
type = lib.types.str;
|
|
||||||
default = "";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,26 +0,0 @@
|
||||||
{ lib, ... }:
|
|
||||||
{
|
|
||||||
options.swarselsystems = {
|
|
||||||
server = {
|
|
||||||
enable = lib.mkEnableOption "is a server machine";
|
|
||||||
kavita = lib.mkEnableOption "enable kavita on server";
|
|
||||||
jellyfin = lib.mkEnableOption "enable jellyfin on server";
|
|
||||||
navidrome = lib.mkEnableOption "enable navidrome on server";
|
|
||||||
spotifyd = lib.mkEnableOption "enable spotifyd on server";
|
|
||||||
mpd = lib.mkEnableOption "enable mpd on server";
|
|
||||||
matrix = lib.mkEnableOption "enable matrix on server";
|
|
||||||
nextcloud = lib.mkEnableOption "enable nextcloud on server";
|
|
||||||
immich = lib.mkEnableOption "enable immich on server";
|
|
||||||
paperless = lib.mkEnableOption "enable paperless on server";
|
|
||||||
transmission = lib.mkEnableOption "enable transmission and friends on server";
|
|
||||||
syncthing = lib.mkEnableOption "enable syncthing on server";
|
|
||||||
restic = lib.mkEnableOption "enable restic backups on server";
|
|
||||||
monitoring = lib.mkEnableOption "enable monitoring on server";
|
|
||||||
jenkins = lib.mkEnableOption "enable jenkins on server";
|
|
||||||
emacs = lib.mkEnableOption "enable emacs server on server";
|
|
||||||
forgejo = lib.mkEnableOption "enable forgejo on server";
|
|
||||||
ankisync = lib.mkEnableOption "enable ankisync on server";
|
|
||||||
freshrss = lib.mkEnableOption "enable freshrss on server";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -5,5 +5,6 @@ in
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
"${profilesPath}/home/common/settings.nix"
|
"${profilesPath}/home/common/settings.nix"
|
||||||
|
"${profilesPath}/home/common/sharedsetup.nix"
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,14 +1,4 @@
|
||||||
{ self, pkgs, lib, ... }:
|
{ config, pkgs, lib, ... }:
|
||||||
let
|
|
||||||
lock-false = {
|
|
||||||
Value = false;
|
|
||||||
Status = "locked";
|
|
||||||
};
|
|
||||||
lock-true = {
|
|
||||||
Value = true;
|
|
||||||
Status = "locked";
|
|
||||||
};
|
|
||||||
in
|
|
||||||
{
|
{
|
||||||
programs.firefox = {
|
programs.firefox = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
@ -142,150 +132,16 @@ in
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
profiles.default = {
|
profiles = {
|
||||||
id = 0;
|
default = lib.recursiveUpdate
|
||||||
isDefault = true;
|
{
|
||||||
userChrome = builtins.readFile (self + /programs/firefox/chrome/userChrome.css);
|
id = 0;
|
||||||
extensions = {
|
isDefault = true;
|
||||||
packages = with pkgs.nur.repos.rycee.firefox-addons; [
|
settings = {
|
||||||
tridactyl
|
"browser.startup.homepage" = "https://outlook.office.com|https://satellite.vbc.ac.at|https://bitbucket.vbc.ac.at|https://github.com";
|
||||||
tampermonkey
|
|
||||||
sidebery
|
|
||||||
browserpass
|
|
||||||
clearurls
|
|
||||||
darkreader
|
|
||||||
enhancer-for-youtube
|
|
||||||
istilldontcareaboutcookies
|
|
||||||
translate-web-pages
|
|
||||||
ublock-origin
|
|
||||||
reddit-enhancement-suite
|
|
||||||
sponsorblock
|
|
||||||
web-archives
|
|
||||||
single-file
|
|
||||||
widegithub
|
|
||||||
enhanced-github
|
|
||||||
unpaywall
|
|
||||||
don-t-fuck-with-paste
|
|
||||||
plasma-integration
|
|
||||||
|
|
||||||
# configure the default the same as trusted in order not to be annoyed
|
|
||||||
noscript
|
|
||||||
|
|
||||||
# configure a shortcut 'ctrl+shift+c' with behaviour 'do nothing' in order to disable the dev console shortcut
|
|
||||||
(buildFirefoxXpiAddon {
|
|
||||||
pname = "shortkeys";
|
|
||||||
version = "4.0.2";
|
|
||||||
addonId = "Shortkeys@Shortkeys.com";
|
|
||||||
url = "https://addons.mozilla.org/firefox/downloads/file/3673761/shortkeys-4.0.2.xpi";
|
|
||||||
sha256 = "c6fe12efdd7a871787ac4526eea79ecc1acda8a99724aa2a2a55c88a9acf467c";
|
|
||||||
meta = with lib;
|
|
||||||
{
|
|
||||||
description = "Easily customizable custom keyboard shortcuts for Firefox. To configure this addon go to Addons (ctrl+shift+a) ->Shortkeys ->Options. Report issues here (please specify that the issue is found in Firefox): https://github.com/mikecrittenden/shortkeys";
|
|
||||||
mozPermissions = [
|
|
||||||
"tabs"
|
|
||||||
"downloads"
|
|
||||||
"clipboardWrite"
|
|
||||||
"browsingData"
|
|
||||||
"storage"
|
|
||||||
"bookmarks"
|
|
||||||
"sessions"
|
|
||||||
"<all_urls>"
|
|
||||||
];
|
|
||||||
platforms = platforms.all;
|
|
||||||
};
|
|
||||||
})
|
|
||||||
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
settings = {
|
|
||||||
"extensions.autoDisableScopes" = 0;
|
|
||||||
"browser.startup.homepage" = "https://outlook.office.com|https://satellite.vbc.ac.at|https://bitbucket.vbc.ac.at|https://github.com";
|
|
||||||
"browser.bookmarks.showMobileBookmarks" = lock-true;
|
|
||||||
"toolkit.legacyUserProfileCustomizations.stylesheets" = lock-true;
|
|
||||||
"browser.search.suggest.enabled" = lock-false;
|
|
||||||
"browser.search.suggest.enabled.private" = lock-false;
|
|
||||||
"browser.urlbar.suggest.searches" = lock-false;
|
|
||||||
"browser.urlbar.showSearchSuggestionsFirst" = lock-false;
|
|
||||||
"browser.topsites.contile.enabled" = lock-false;
|
|
||||||
"browser.newtabpage.activity-stream.feeds.section.topstories" = lock-false;
|
|
||||||
"browser.newtabpage.activity-stream.feeds.snippets" = lock-false;
|
|
||||||
"browser.newtabpage.activity-stream.section.highlights.includePocket" = lock-false;
|
|
||||||
"browser.newtabpage.activity-stream.section.highlights.includeBookmarks" = lock-false;
|
|
||||||
"browser.newtabpage.activity-stream.section.highlights.includeDownloads" = lock-false;
|
|
||||||
"browser.newtabpage.activity-stream.section.highlights.includeVisited" = lock-false;
|
|
||||||
"browser.newtabpage.activity-stream.showSponsored" = lock-false;
|
|
||||||
"browser.newtabpage.activity-stream.system.showSponsored" = lock-false;
|
|
||||||
"browser.newtabpage.activity-stream.showSponsoredTopSites" = lock-false;
|
|
||||||
};
|
|
||||||
|
|
||||||
search = {
|
|
||||||
# default = "Kagi";
|
|
||||||
default = "Google";
|
|
||||||
# privateDefault = "Kagi";
|
|
||||||
privateDefault = "Google";
|
|
||||||
engines = {
|
|
||||||
"Kagi" = {
|
|
||||||
urls = [{
|
|
||||||
template = "https://kagi.com/search";
|
|
||||||
params = [
|
|
||||||
{ name = "q"; value = "{searchTerms}"; }
|
|
||||||
];
|
|
||||||
}];
|
|
||||||
iconUpdateURL = "https://kagi.com/favicon.ico";
|
|
||||||
updateInterval = 24 * 60 * 60 * 1000; # every day
|
|
||||||
definedAliases = [ "@k" ];
|
|
||||||
};
|
};
|
||||||
|
}
|
||||||
"Nix Packages" = {
|
config.swarselsystems.firefox;
|
||||||
urls = [{
|
|
||||||
template = "https://search.nixos.org/packages";
|
|
||||||
params = [
|
|
||||||
{ name = "type"; value = "packages"; }
|
|
||||||
{ name = "query"; value = "{searchTerms}"; }
|
|
||||||
];
|
|
||||||
}];
|
|
||||||
icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
|
|
||||||
definedAliases = [ "@np" ];
|
|
||||||
};
|
|
||||||
|
|
||||||
"NixOS Wiki" = {
|
|
||||||
urls = [{
|
|
||||||
template = "https://nixos.wiki/index.php?search={searchTerms}";
|
|
||||||
}];
|
|
||||||
iconUpdateURL = "https://nixos.wiki/favicon.png";
|
|
||||||
updateInterval = 24 * 60 * 60 * 1000; # every day
|
|
||||||
definedAliases = [ "@nw" ];
|
|
||||||
};
|
|
||||||
|
|
||||||
"NixOS Options" = {
|
|
||||||
urls = [{
|
|
||||||
template = "https://search.nixos.org/options";
|
|
||||||
params = [
|
|
||||||
{ name = "query"; value = "{searchTerms}"; }
|
|
||||||
];
|
|
||||||
}];
|
|
||||||
|
|
||||||
icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
|
|
||||||
definedAliases = [ "@no" ];
|
|
||||||
};
|
|
||||||
|
|
||||||
"Home Manager Options" = {
|
|
||||||
urls = [{
|
|
||||||
template = "https://home-manager-options.extranix.com/";
|
|
||||||
params = [
|
|
||||||
{ name = "query"; value = "{searchTerms}"; }
|
|
||||||
];
|
|
||||||
}];
|
|
||||||
|
|
||||||
icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
|
|
||||||
definedAliases = [ "@hm" "@ho" "@hmo" ];
|
|
||||||
};
|
|
||||||
|
|
||||||
"Google".metaData.alias = "@g";
|
|
||||||
};
|
|
||||||
force = true; # this is required because otherwise the search.json.mozlz4 symlink gets replaced on every firefox restart
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,17 +1,26 @@
|
||||||
{ lib, config, nixgl, ... }:
|
{ lib, config, nixgl, ... }:
|
||||||
{
|
{
|
||||||
nixGL = lib.mkIf (!config.swarselsystems.isNixos) {
|
options.swarselsystems = {
|
||||||
inherit (nixgl) packages;
|
isSecondaryGpu = lib.mkEnableOption "device has a secondary GPU";
|
||||||
defaultWrapper = lib.mkDefault "mesa";
|
SecondaryGpuCard = lib.mkOption {
|
||||||
vulkan.enable = lib.mkDefault false;
|
type = lib.types.str;
|
||||||
prime = lib.mkIf config.swarselsystem.isSecondaryGpu {
|
default = "";
|
||||||
card = config.swarselsystem.secondaryGpuCard;
|
};
|
||||||
installScript = "mesa";
|
};
|
||||||
|
config = {
|
||||||
|
nixGL = lib.mkIf (!config.swarselsystems.isNixos) {
|
||||||
|
inherit (nixgl) packages;
|
||||||
|
defaultWrapper = lib.mkDefault "mesa";
|
||||||
|
vulkan.enable = lib.mkDefault false;
|
||||||
|
prime = lib.mkIf config.swarselsystem.isSecondaryGpu {
|
||||||
|
card = config.swarselsystem.secondaryGpuCard;
|
||||||
|
installScript = "mesa";
|
||||||
|
};
|
||||||
|
offloadWrapper = lib.mkIf config.swarselsystem.isSecondaryGpu "mesaPrime";
|
||||||
|
installScripts = [
|
||||||
|
"mesa"
|
||||||
|
"mesaPrime"
|
||||||
|
];
|
||||||
};
|
};
|
||||||
offloadWrapper = lib.mkIf config.swarselsystem.isSecondaryGpu "mesaPrime";
|
|
||||||
installScripts = [
|
|
||||||
"mesa"
|
|
||||||
"mesaPrime"
|
|
||||||
];
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -11,10 +11,104 @@ let
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options.swarselsystems = {
|
options.swarselsystems = {
|
||||||
|
isLaptop = lib.mkEnableOption "laptop host";
|
||||||
|
isNixos = lib.mkEnableOption "nixos host";
|
||||||
|
isPublic = lib.mkEnableOption "is a public machine (no secrets)";
|
||||||
|
isDarwin = lib.mkEnableOption "darwin host";
|
||||||
|
isLinux = lib.mkEnableOption "whether this is a linux machine";
|
||||||
|
isBtrfs = lib.mkEnableOption "use btrfs filesystem";
|
||||||
|
mainUser = lib.mkOption {
|
||||||
|
type = lib.types.str;
|
||||||
|
default = "swarsel";
|
||||||
|
};
|
||||||
|
homeDir = lib.mkOption {
|
||||||
|
type = lib.types.str;
|
||||||
|
default = "/home/swarsel";
|
||||||
|
};
|
||||||
|
xdgDir = lib.mkOption {
|
||||||
|
type = lib.types.str;
|
||||||
|
default = "/run/user/1000";
|
||||||
|
};
|
||||||
|
flakePath = lib.mkOption {
|
||||||
|
type = lib.types.str;
|
||||||
|
default = "/home/swarsel/.dotfiles";
|
||||||
|
};
|
||||||
|
wallpaper = lib.mkOption {
|
||||||
|
type = lib.types.path;
|
||||||
|
default = "${self}/wallpaper/lenovowp.png";
|
||||||
|
};
|
||||||
|
sharescreen = lib.mkOption {
|
||||||
|
type = lib.types.str;
|
||||||
|
default = "";
|
||||||
|
};
|
||||||
|
lowResolution = lib.mkOption {
|
||||||
|
type = lib.types.str;
|
||||||
|
default = "";
|
||||||
|
};
|
||||||
|
highResolution = lib.mkOption {
|
||||||
|
type = lib.types.str;
|
||||||
|
default = "";
|
||||||
|
};
|
||||||
|
|
||||||
|
stylix = lib.mkOption {
|
||||||
|
type = lib.types.attrs;
|
||||||
|
default = {
|
||||||
|
enable = true;
|
||||||
|
base16Scheme = "${self}/programs/stylix/swarsel.yaml";
|
||||||
|
polarity = "dark";
|
||||||
|
opacity.popups = 0.5;
|
||||||
|
cursor = {
|
||||||
|
package = pkgs.banana-cursor;
|
||||||
|
# package = pkgs.capitaine-cursors;
|
||||||
|
name = "Banana";
|
||||||
|
# name = "capitaine-cursors";
|
||||||
|
size = 16;
|
||||||
|
};
|
||||||
|
fonts = {
|
||||||
|
sizes = {
|
||||||
|
terminal = 10;
|
||||||
|
applications = 11;
|
||||||
|
};
|
||||||
|
serif = {
|
||||||
|
# package = (pkgs.nerdfonts.override { fonts = [ "FiraMono" "FiraCode"]; });
|
||||||
|
package = pkgs.cantarell-fonts;
|
||||||
|
# package = pkgs.montserrat;
|
||||||
|
name = "Cantarell";
|
||||||
|
# name = "FiraCode Nerd Font Propo";
|
||||||
|
# name = "Montserrat";
|
||||||
|
};
|
||||||
|
sansSerif = {
|
||||||
|
# package = (pkgs.nerdfonts.override { fonts = [ "FiraMono" "FiraCode"]; });
|
||||||
|
package = pkgs.cantarell-fonts;
|
||||||
|
# package = pkgs.montserrat;
|
||||||
|
name = "Cantarell";
|
||||||
|
# name = "FiraCode Nerd Font Propo";
|
||||||
|
# name = "Montserrat";
|
||||||
|
};
|
||||||
|
monospace = {
|
||||||
|
package = pkgs.nerd-fonts.fira-mono; # has overrides
|
||||||
|
name = "FiraCode Nerd Font Mono";
|
||||||
|
};
|
||||||
|
emoji = {
|
||||||
|
package = pkgs.noto-fonts-emoji;
|
||||||
|
name = "Noto Color Emoji";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
stylixHomeTargets = lib.mkOption {
|
||||||
|
type = lib.types.attrs;
|
||||||
|
default = {
|
||||||
|
emacs.enable = false;
|
||||||
|
waybar.enable = false;
|
||||||
|
sway.useWallpaper = false;
|
||||||
|
firefox.profileNames = [ "default" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
firefox = lib.mkOption {
|
firefox = lib.mkOption {
|
||||||
type = lib.types.attrs;
|
type = lib.types.attrs;
|
||||||
default = {
|
default = {
|
||||||
isDefault = false;
|
|
||||||
userChrome = builtins.readFile "${self}/programs/firefox/chrome/userChrome.css";
|
userChrome = builtins.readFile "${self}/programs/firefox/chrome/userChrome.css";
|
||||||
extensions = {
|
extensions = {
|
||||||
packages = with pkgs.nur.repos.rycee.firefox-addons; [
|
packages = with pkgs.nur.repos.rycee.firefox-addons; [
|
||||||
|
|
@ -38,6 +132,9 @@ in
|
||||||
unpaywall
|
unpaywall
|
||||||
don-t-fuck-with-paste
|
don-t-fuck-with-paste
|
||||||
plasma-integration
|
plasma-integration
|
||||||
|
noscript
|
||||||
|
|
||||||
|
# configure a shortcut 'ctrl+shift+c' with behaviour 'do nothing' in order to disable the dev console shortcut
|
||||||
(buildFirefoxXpiAddon {
|
(buildFirefoxXpiAddon {
|
||||||
pname = "shortkeys";
|
pname = "shortkeys";
|
||||||
version = "4.0.2";
|
version = "4.0.2";
|
||||||
|
|
@ -153,6 +250,6 @@ in
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
|
||||||
|
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
@ -3,12 +3,7 @@
|
||||||
stylix = lib.mkIf (!config.swarselsystems.isNixos) (lib.recursiveUpdate
|
stylix = lib.mkIf (!config.swarselsystems.isNixos) (lib.recursiveUpdate
|
||||||
{
|
{
|
||||||
image = config.swarselsystems.wallpaper;
|
image = config.swarselsystems.wallpaper;
|
||||||
targets = {
|
targets = config.swarselsystems.stylixHomeTargets;
|
||||||
emacs.enable = false;
|
|
||||||
waybar.enable = false;
|
|
||||||
sway.useWallpaper = false;
|
|
||||||
firefox.profileNames = [ "default" ];
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
config.swarselsystems.stylix);
|
config.swarselsystems.stylix);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,321 +1,399 @@
|
||||||
{ self, config, lib, ... }:
|
{ self, config, lib, ... }:
|
||||||
let
|
|
||||||
inherit (config.swarselsystems) monitors;
|
|
||||||
workplaceSets = lib.mapAttrs' lib.swarselsystems.eachOutput monitors;
|
|
||||||
workplaceOutputs = map (key: lib.getAttr key workplaceSets) (lib.attrNames workplaceSets);
|
|
||||||
in
|
|
||||||
{
|
{
|
||||||
wayland.windowManager.sway = {
|
options.swarselsystems = {
|
||||||
enable = true;
|
inputs = lib.mkOption {
|
||||||
checkConfig = false; # delete this line once SwayFX is fixed upstream
|
type = lib.types.attrsOf (lib.types.attrsOf lib.types.str);
|
||||||
package = lib.mkIf config.swarselsystems.isNixos null;
|
default = { };
|
||||||
systemd = {
|
|
||||||
enable = true;
|
|
||||||
xdgAutostart = true;
|
|
||||||
};
|
};
|
||||||
wrapperFeatures.gtk = true;
|
monitors = lib.mkOption {
|
||||||
config = rec {
|
type = lib.types.attrsOf (lib.types.attrsOf lib.types.str);
|
||||||
modifier = "Mod4";
|
default = { };
|
||||||
# terminal = "kitty";
|
};
|
||||||
menu = "fuzzel";
|
keybindings = lib.mkOption {
|
||||||
bars = [{
|
type = lib.types.attrsOf lib.types.str;
|
||||||
command = "waybar";
|
default = { };
|
||||||
mode = "hide";
|
};
|
||||||
hiddenState = "hide";
|
startup = lib.mkOption {
|
||||||
position = "top";
|
type = lib.types.listOf (lib.types.attrsOf lib.types.str);
|
||||||
extraConfig = "modifier Mod4";
|
default = [
|
||||||
}];
|
{ command = "nextcloud --background"; }
|
||||||
keybindings =
|
{ command = "vesktop --start-minimized --enable-speech-dispatcher --ozone-platform-hint=auto --enable-features=WaylandWindowDecorations --enable-wayland-ime"; }
|
||||||
|
{ command = "element-desktop --hidden --enable-features=UseOzonePlatform --ozone-platform=wayland --disable-gpu-driver-bug-workarounds"; }
|
||||||
|
{ command = "ANKI_WAYLAND=1 anki"; }
|
||||||
|
{ command = "OBSIDIAN_USE_WAYLAND=1 obsidian"; }
|
||||||
|
{ command = "nm-applet"; }
|
||||||
|
{ command = "feishin"; }
|
||||||
|
];
|
||||||
|
};
|
||||||
|
kyria = lib.mkOption {
|
||||||
|
type = lib.types.attrsOf (lib.types.attrsOf lib.types.str);
|
||||||
|
default = {
|
||||||
|
"36125:53060:splitkb.com_splitkb.com_Kyria_rev3" = {
|
||||||
|
xkb_layout = "us";
|
||||||
|
xkb_variant = "altgr-intl";
|
||||||
|
};
|
||||||
|
"7504:24926:Kyria_Keyboard" = {
|
||||||
|
xkb_layout = "us";
|
||||||
|
xkb_variant = "altgr-intl";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
internal = true;
|
||||||
|
};
|
||||||
|
standardinputs = lib.mkOption {
|
||||||
|
type = lib.types.attrsOf (lib.types.attrsOf lib.types.str);
|
||||||
|
default = lib.recursiveUpdate (lib.recursiveUpdate config.swarselsystems.touchpad config.swarselsystems.kyria) config.swarselsystems.inputs;
|
||||||
|
internal = true;
|
||||||
|
};
|
||||||
|
touchpad = lib.mkOption {
|
||||||
|
type = lib.types.attrsOf (lib.types.attrsOf lib.types.str);
|
||||||
|
default = { };
|
||||||
|
internal = true;
|
||||||
|
};
|
||||||
|
swayfxConfig = lib.mkOption {
|
||||||
|
type = lib.types.str;
|
||||||
|
default = "
|
||||||
|
blur enable
|
||||||
|
blur_xray disable
|
||||||
|
blur_passes 1
|
||||||
|
blur_radius 1
|
||||||
|
shadows enable
|
||||||
|
corner_radius 2
|
||||||
|
titlebar_separator disable
|
||||||
|
default_dim_inactive 0.02
|
||||||
|
";
|
||||||
|
internal = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
config = {
|
||||||
|
swarselsystems = {
|
||||||
|
touchpad = lib.mkIf config.swarselsystems.isLaptop {
|
||||||
|
"type:touchpad" = {
|
||||||
|
dwt = "enabled";
|
||||||
|
tap = "enabled";
|
||||||
|
natural_scroll = "enabled";
|
||||||
|
middle_emulation = "enabled";
|
||||||
|
drag_lock = "disabled";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
swayfxConfig = lib.mkIf (!config.swarselsystems.isNixos) " ";
|
||||||
|
};
|
||||||
|
wayland.windowManager.sway = {
|
||||||
|
enable = true;
|
||||||
|
checkConfig = false; # delete this line once SwayFX is fixed upstream
|
||||||
|
package = lib.mkIf config.swarselsystems.isNixos null;
|
||||||
|
systemd = {
|
||||||
|
enable = true;
|
||||||
|
xdgAutostart = true;
|
||||||
|
};
|
||||||
|
wrapperFeatures.gtk = true;
|
||||||
|
config = rec {
|
||||||
|
modifier = "Mod4";
|
||||||
|
# terminal = "kitty";
|
||||||
|
menu = "fuzzel";
|
||||||
|
bars = [{
|
||||||
|
command = "waybar";
|
||||||
|
mode = "hide";
|
||||||
|
hiddenState = "hide";
|
||||||
|
position = "top";
|
||||||
|
extraConfig = "modifier Mod4";
|
||||||
|
}];
|
||||||
|
keybindings =
|
||||||
|
let
|
||||||
|
inherit (config.wayland.windowManager.sway.config) modifier;
|
||||||
|
in
|
||||||
|
lib.recursiveUpdate
|
||||||
|
{
|
||||||
|
"${modifier}+q" = "kill";
|
||||||
|
"${modifier}+f" = "exec firefox";
|
||||||
|
"${modifier}+Shift+f" = "exec swaymsg fullscreen";
|
||||||
|
"${modifier}+Space" = "exec fuzzel";
|
||||||
|
"${modifier}+Shift+Space" = "floating toggle";
|
||||||
|
"${modifier}+e" = "exec emacsclient -nquc -a emacs -e \"(dashboard-open)\"";
|
||||||
|
"${modifier}+Shift+m" = "exec emacsclient -nquc -a emacs -e \"(mu4e)\"";
|
||||||
|
"${modifier}+Shift+c" = "exec emacsclient -nquc -a emacs -e \"(swarsel/open-calendar)\"";
|
||||||
|
"${modifier}+m" = "exec swaymsg workspace back_and_forth";
|
||||||
|
"${modifier}+a" = "exec swarselcheck -s";
|
||||||
|
"${modifier}+x" = "exec swarselcheck -k";
|
||||||
|
"${modifier}+d" = "exec swarselcheck -d";
|
||||||
|
"${modifier}+w" = "exec swarselcheck -e";
|
||||||
|
"${modifier}+Shift+t" = "exec opacitytoggle";
|
||||||
|
"${modifier}+Shift+F12" = "move scratchpad";
|
||||||
|
"${modifier}+F12" = "scratchpad show";
|
||||||
|
"${modifier}+c" = "exec qalculate-gtk";
|
||||||
|
"${modifier}+p" = "exec pass-fuzzel";
|
||||||
|
"${modifier}+o" = "exec pass-fuzzel --otp";
|
||||||
|
"${modifier}+Shift+p" = "exec pass-fuzzel --type";
|
||||||
|
"${modifier}+Shift+o" = "exec pass-fuzzel --otp --type";
|
||||||
|
"${modifier}+Ctrl+p" = "exec 1password --quick-acces";
|
||||||
|
"${modifier}+Escape" = "mode $exit";
|
||||||
|
"${modifier}+Shift+Escape" = "exec kitty -o confirm_os_window_close=0 btm";
|
||||||
|
"${modifier}+h" = "exec hyprpicker | wl-copy";
|
||||||
|
"${modifier}+s" = "exec grim -g \"$(slurp)\" -t png - | wl-copy -t image/png";
|
||||||
|
"${modifier}+Shift+s" = "exec slurp | grim -g - Pictures/Screenshots/$(date +'screenshot_%Y-%m-%d-%H%M%S.png')";
|
||||||
|
"${modifier}+Shift+v" = "exec wf-recorder -g '$(slurp -f %o -or)' -f ~/Videos/screenrecord_$(date +%Y-%m-%d-%H%M%S).mkv";
|
||||||
|
"${modifier}+1" = "workspace 1:一";
|
||||||
|
"${modifier}+Shift+1" = "move container to workspace 1:一";
|
||||||
|
"${modifier}+2" = "workspace 2:二";
|
||||||
|
"${modifier}+Shift+2" = "move container to workspace 2:二";
|
||||||
|
"${modifier}+3" = "workspace 3:三";
|
||||||
|
"${modifier}+Shift+3" = "move container to workspace 3:三";
|
||||||
|
"${modifier}+4" = "workspace 4:四";
|
||||||
|
"${modifier}+Shift+4" = "move container to workspace 4:四";
|
||||||
|
"${modifier}+5" = "workspace 5:五";
|
||||||
|
"${modifier}+Shift+5" = "move container to workspace 5:五";
|
||||||
|
"${modifier}+6" = "workspace 6:六";
|
||||||
|
"${modifier}+Shift+6" = "move container to workspace 6:六";
|
||||||
|
"${modifier}+7" = "workspace 7:七";
|
||||||
|
"${modifier}+Shift+7" = "move container to workspace 7:七";
|
||||||
|
"${modifier}+8" = "workspace 8:八";
|
||||||
|
"${modifier}+Shift+8" = "move container to workspace 8:八";
|
||||||
|
"${modifier}+9" = "workspace 9:九";
|
||||||
|
"${modifier}+Shift+9" = "move container to workspace 9:九";
|
||||||
|
"${modifier}+0" = "workspace 10:十";
|
||||||
|
"${modifier}+Shift+0" = "move container to workspace 10:十";
|
||||||
|
"${modifier}+Ctrl+m" = "workspace 11:M";
|
||||||
|
"${modifier}+Ctrl+Shift+m" = "move container to workspace 11:M";
|
||||||
|
"${modifier}+Ctrl+s" = "workspace 12:S";
|
||||||
|
"${modifier}+Ctrl+Shift+s" = "move container to workspace 12:S";
|
||||||
|
"${modifier}+Ctrl+e" = "workspace 13:E";
|
||||||
|
"${modifier}+Ctrl+Shift+e" = "move container to workspace 13:E";
|
||||||
|
"${modifier}+Ctrl+t" = "workspace 14:T";
|
||||||
|
"${modifier}+Ctrl+Shift+t" = "move container to workspace 14:T";
|
||||||
|
"${modifier}+Ctrl+l" = "workspace 15:L";
|
||||||
|
"${modifier}+Ctrl+Shift+l" = "move container to workspace 15:L";
|
||||||
|
"${modifier}+Ctrl+f" = "workspace 16:F";
|
||||||
|
"${modifier}+Ctrl+Shift+f" = "move container to workspace 16:F";
|
||||||
|
"${modifier}+Left" = "focus left";
|
||||||
|
"${modifier}+Right" = "focus right";
|
||||||
|
"${modifier}+Down" = "focus down";
|
||||||
|
"${modifier}+Up" = "focus up";
|
||||||
|
"${modifier}+Shift+Left" = "move left 40px";
|
||||||
|
"${modifier}+Shift+Right" = "move right 40px";
|
||||||
|
"${modifier}+Shift+Down" = "move down 40px";
|
||||||
|
"${modifier}+Shift+Up" = "move up 40px";
|
||||||
|
"${modifier}+Ctrl+Shift+c" = "reload";
|
||||||
|
"${modifier}+Ctrl+Shift+r" = "exec swarsel-displaypower";
|
||||||
|
"${modifier}+Shift+e" = "exec swaynag -t warning -m 'You pressed the exit shortcut. Do you really want to exit sway? This will end your Wayland session.' -b 'Yes, exit sway' 'swaymsg exit'";
|
||||||
|
"${modifier}+r" = "mode resize";
|
||||||
|
# "${modifier}+Return" = "exec kitty";
|
||||||
|
"${modifier}+Return" = "exec swarselzellij";
|
||||||
|
"${modifier}+Print" = "exec screenshare";
|
||||||
|
# exec swaymsg move workspace to "$(swaymsg -t get_outputs | jq '[.[] | select(.active == true)] | .[(map(.focused) | index(true) + 1) % length].name')"
|
||||||
|
# "XF86AudioRaiseVolume" = "exec pa 5%";
|
||||||
|
"XF86AudioRaiseVolume" = "exec pamixer -i 5";
|
||||||
|
# "XF86AudioLowerVolume" = "exec pactl set-sink-volume @DEFAULT_SINK@ -5%";
|
||||||
|
"XF86AudioLowerVolume" = "exec pamixer -d 5";
|
||||||
|
# "XF86AudioMute" = "exec pactl set-sink-mute @DEFAULT_SINK@ toggle";
|
||||||
|
"XF86AudioMute" = "exec pamixer -t";
|
||||||
|
"XF86MonBrightnessUp" = "exec brightnessctl set +5%";
|
||||||
|
"XF86MonBrightnessDown" = "exec brightnessctl set 5%-";
|
||||||
|
"XF86Display" = "exec wl-mirror eDP-1";
|
||||||
|
}
|
||||||
|
config.swarselsystems.keybindings;
|
||||||
|
modes = {
|
||||||
|
resize = {
|
||||||
|
Down = "resize grow height 10 px or 10 ppt";
|
||||||
|
Escape = "mode default";
|
||||||
|
Left = "resize shrink width 10 px or 10 ppt";
|
||||||
|
Return = "mode default";
|
||||||
|
Right = "resize grow width 10 px or 10 ppt";
|
||||||
|
Up = "resize shrink height 10 px or 10 ppt";
|
||||||
|
Tab = "move position center, resize set width 50 ppt height 50 ppt";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
defaultWorkspace = "workspace 1:一";
|
||||||
|
# output = lib.mapAttrs' lib.swarselsystems.eachMonitor monitors;
|
||||||
|
output = {
|
||||||
|
"${config.swarselsystems.sharescreen}" = {
|
||||||
|
bg = "${self}/wallpaper/lenovowp.png ${config.stylix.imageScalingMode}";
|
||||||
|
};
|
||||||
|
"Philips Consumer Electronics Company PHL BDM3270 AU11806002320" = {
|
||||||
|
bg = "${self}/wallpaper/standwp.png ${config.stylix.imageScalingMode}";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
input = config.swarselsystems.standardinputs;
|
||||||
|
workspaceOutputAssign =
|
||||||
|
let
|
||||||
|
workplaceSets = lib.mapAttrs' lib.swarselsystems.eachOutput config.swarselsystems.monitors;
|
||||||
|
workplaceOutputs = map (key: lib.getAttr key workplaceSets) (lib.attrNames workplaceSets);
|
||||||
|
in
|
||||||
|
workplaceOutputs;
|
||||||
|
startup = config.swarselsystems.startup ++ [
|
||||||
|
{ command = "kitty -T kittyterm -o confirm_os_window_close=0 zellij attach --create kittyterm"; }
|
||||||
|
{ command = "sleep 60; kitty -T spotifytui -o confirm_os_window_close=0 spotify_player"; }
|
||||||
|
];
|
||||||
|
seat = {
|
||||||
|
"*" = {
|
||||||
|
hide_cursor = "when-typing enable";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
window = {
|
||||||
|
border = 1;
|
||||||
|
titlebar = false;
|
||||||
|
};
|
||||||
|
assigns = {
|
||||||
|
"15:L" = [{ app_id = "teams-for-linux"; }];
|
||||||
|
};
|
||||||
|
floating = {
|
||||||
|
border = 1;
|
||||||
|
criteria = [
|
||||||
|
{ app_id = "qalculate-gtk"; }
|
||||||
|
{ app_id = "blueman"; }
|
||||||
|
{ app_id = "pavucontrol"; }
|
||||||
|
{ app_id = "syncthingtray"; }
|
||||||
|
{ app_id = "Element"; }
|
||||||
|
{ class = "1Password"; }
|
||||||
|
{ app_id = "com.nextcloud.desktopclient.nextcloud"; }
|
||||||
|
{ title = "(?:Open|Save) (?:File|Folder|As)"; }
|
||||||
|
{ title = "^Add$"; }
|
||||||
|
{ title = "^Picture-in-Picture$"; }
|
||||||
|
{ title = "Syncthing Tray"; }
|
||||||
|
{ title = "^spotifytui$"; }
|
||||||
|
{ title = "^kittyterm$"; }
|
||||||
|
{ app_id = "vesktop"; }
|
||||||
|
{ window_role = "pop-up"; }
|
||||||
|
{ window_role = "bubble"; }
|
||||||
|
{ window_role = "dialog"; }
|
||||||
|
{ window_role = "task_dialog"; }
|
||||||
|
{ window_role = "menu"; }
|
||||||
|
{ window_role = "Preferences"; }
|
||||||
|
];
|
||||||
|
titlebar = false;
|
||||||
|
};
|
||||||
|
window = {
|
||||||
|
commands = [
|
||||||
|
{
|
||||||
|
command = "opacity 0.95";
|
||||||
|
criteria = {
|
||||||
|
class = ".*";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
command = "opacity 1";
|
||||||
|
criteria = {
|
||||||
|
app_id = "at.yrlf.wl_mirror";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
command = "opacity 1";
|
||||||
|
criteria = {
|
||||||
|
app_id = "Gimp-2.10";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
command = "opacity 0.99";
|
||||||
|
criteria = {
|
||||||
|
app_id = "firefox";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
command = "opacity 0.99";
|
||||||
|
criteria = {
|
||||||
|
app_id = "chromium-browser";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
command = "sticky enable, shadows enable";
|
||||||
|
criteria = {
|
||||||
|
title = "^Picture-in-Picture$";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
command = "resize set width 60 ppt height 60 ppt, opacity 0.8, sticky enable, border normal, move container to scratchpad";
|
||||||
|
criteria = {
|
||||||
|
title = "^kittyterm$";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
command = "resize set width 60 ppt height 60 ppt, opacity 0.95, sticky enable, border normal, move container to scratchpad";
|
||||||
|
criteria = {
|
||||||
|
title = "^spotifytui$";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
|
||||||
|
command = "resize set width 60 ppt height 60 ppt, sticky enable, move container to scratchpad";
|
||||||
|
criteria = {
|
||||||
|
class = "Spotify";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
command = "resize set width 60 ppt height 60 ppt, sticky enable";
|
||||||
|
criteria = {
|
||||||
|
app_id = "vesktop";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
command = "resize set width 60 ppt height 60 ppt, sticky enable";
|
||||||
|
criteria = {
|
||||||
|
class = "Element";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
# {
|
||||||
|
# command = "resize set width 60 ppt height 60 ppt, sticky enable, move container to scratchpad";
|
||||||
|
# criteria = {
|
||||||
|
# app_id="^$";
|
||||||
|
# class="^$";
|
||||||
|
# };
|
||||||
|
# }
|
||||||
|
];
|
||||||
|
};
|
||||||
|
gaps = {
|
||||||
|
inner = 5;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
extraSessionCommands = ''
|
||||||
|
export SDL_VIDEODRIVER=wayland
|
||||||
|
export QT_QPA_PLATFORM=wayland
|
||||||
|
export QT_WAYLAND_DISABLE_WINDOWDECORATION="1"
|
||||||
|
export _JAVA_AWT_WM_NONREPARENTING=1
|
||||||
|
export XDG_CURRENT_DESKTOP=sway
|
||||||
|
export XDG_SESSION_DESKTOP=sway
|
||||||
|
export QTWEBENGINE_CHROMIUM_FLAGS="--no-sandbox";
|
||||||
|
export ANKI_WAYLAND=1;
|
||||||
|
export OBSIDIAN_USE_WAYLAND=1;
|
||||||
|
'';
|
||||||
|
# extraConfigEarly = "
|
||||||
|
# exec systemctl --user import-environment DISPLAY WAYLAND_DISPLAY SWAYSOCK
|
||||||
|
# exec hash dbus-update-activation-environment 2>/dev/null && dbus-update-activation-environment --systemd DISPLAY WAYLAND_DISPLAY SWAYSOCK
|
||||||
|
# ";
|
||||||
|
extraConfig =
|
||||||
let
|
let
|
||||||
inherit (config.wayland.windowManager.sway.config) modifier;
|
inherit (config.wayland.windowManager.sway.config) modifier;
|
||||||
|
swayfxSettings = config.swarselsystems.swayfxConfig;
|
||||||
in
|
in
|
||||||
lib.recursiveUpdate
|
"
|
||||||
{
|
exec_always autotiling
|
||||||
"${modifier}+q" = "kill";
|
set $exit \"exit: [s]leep, [l]ock, [p]oweroff, [r]eboot, [u]ser logout\"
|
||||||
"${modifier}+f" = "exec firefox";
|
|
||||||
"${modifier}+Shift+f" = "exec swaymsg fullscreen";
|
|
||||||
"${modifier}+Space" = "exec fuzzel";
|
|
||||||
"${modifier}+Shift+Space" = "floating toggle";
|
|
||||||
"${modifier}+e" = "exec emacsclient -nquc -a emacs -e \"(dashboard-open)\"";
|
|
||||||
"${modifier}+Shift+m" = "exec emacsclient -nquc -a emacs -e \"(mu4e)\"";
|
|
||||||
"${modifier}+Shift+c" = "exec emacsclient -nquc -a emacs -e \"(swarsel/open-calendar)\"";
|
|
||||||
"${modifier}+m" = "exec swaymsg workspace back_and_forth";
|
|
||||||
"${modifier}+a" = "exec swarselcheck -s";
|
|
||||||
"${modifier}+x" = "exec swarselcheck -k";
|
|
||||||
"${modifier}+d" = "exec swarselcheck -d";
|
|
||||||
"${modifier}+w" = "exec swarselcheck -e";
|
|
||||||
"${modifier}+Shift+t" = "exec opacitytoggle";
|
|
||||||
"${modifier}+Shift+F12" = "move scratchpad";
|
|
||||||
"${modifier}+F12" = "scratchpad show";
|
|
||||||
"${modifier}+c" = "exec qalculate-gtk";
|
|
||||||
"${modifier}+p" = "exec pass-fuzzel";
|
|
||||||
"${modifier}+o" = "exec pass-fuzzel --otp";
|
|
||||||
"${modifier}+Shift+p" = "exec pass-fuzzel --type";
|
|
||||||
"${modifier}+Shift+o" = "exec pass-fuzzel --otp --type";
|
|
||||||
"${modifier}+Ctrl+p" = "exec 1password --quick-acces";
|
|
||||||
"${modifier}+Escape" = "mode $exit";
|
|
||||||
"${modifier}+Shift+Escape" = "exec kitty -o confirm_os_window_close=0 btm";
|
|
||||||
"${modifier}+h" = "exec hyprpicker | wl-copy";
|
|
||||||
"${modifier}+s" = "exec grim -g \"$(slurp)\" -t png - | wl-copy -t image/png";
|
|
||||||
"${modifier}+Shift+s" = "exec slurp | grim -g - Pictures/Screenshots/$(date +'screenshot_%Y-%m-%d-%H%M%S.png')";
|
|
||||||
"${modifier}+Shift+v" = "exec wf-recorder -g '$(slurp -f %o -or)' -f ~/Videos/screenrecord_$(date +%Y-%m-%d-%H%M%S).mkv";
|
|
||||||
"${modifier}+1" = "workspace 1:一";
|
|
||||||
"${modifier}+Shift+1" = "move container to workspace 1:一";
|
|
||||||
"${modifier}+2" = "workspace 2:二";
|
|
||||||
"${modifier}+Shift+2" = "move container to workspace 2:二";
|
|
||||||
"${modifier}+3" = "workspace 3:三";
|
|
||||||
"${modifier}+Shift+3" = "move container to workspace 3:三";
|
|
||||||
"${modifier}+4" = "workspace 4:四";
|
|
||||||
"${modifier}+Shift+4" = "move container to workspace 4:四";
|
|
||||||
"${modifier}+5" = "workspace 5:五";
|
|
||||||
"${modifier}+Shift+5" = "move container to workspace 5:五";
|
|
||||||
"${modifier}+6" = "workspace 6:六";
|
|
||||||
"${modifier}+Shift+6" = "move container to workspace 6:六";
|
|
||||||
"${modifier}+7" = "workspace 7:七";
|
|
||||||
"${modifier}+Shift+7" = "move container to workspace 7:七";
|
|
||||||
"${modifier}+8" = "workspace 8:八";
|
|
||||||
"${modifier}+Shift+8" = "move container to workspace 8:八";
|
|
||||||
"${modifier}+9" = "workspace 9:九";
|
|
||||||
"${modifier}+Shift+9" = "move container to workspace 9:九";
|
|
||||||
"${modifier}+0" = "workspace 10:十";
|
|
||||||
"${modifier}+Shift+0" = "move container to workspace 10:十";
|
|
||||||
"${modifier}+Ctrl+m" = "workspace 11:M";
|
|
||||||
"${modifier}+Ctrl+Shift+m" = "move container to workspace 11:M";
|
|
||||||
"${modifier}+Ctrl+s" = "workspace 12:S";
|
|
||||||
"${modifier}+Ctrl+Shift+s" = "move container to workspace 12:S";
|
|
||||||
"${modifier}+Ctrl+e" = "workspace 13:E";
|
|
||||||
"${modifier}+Ctrl+Shift+e" = "move container to workspace 13:E";
|
|
||||||
"${modifier}+Ctrl+t" = "workspace 14:T";
|
|
||||||
"${modifier}+Ctrl+Shift+t" = "move container to workspace 14:T";
|
|
||||||
"${modifier}+Ctrl+l" = "workspace 15:L";
|
|
||||||
"${modifier}+Ctrl+Shift+l" = "move container to workspace 15:L";
|
|
||||||
"${modifier}+Ctrl+f" = "workspace 16:F";
|
|
||||||
"${modifier}+Ctrl+Shift+f" = "move container to workspace 16:F";
|
|
||||||
"${modifier}+Left" = "focus left";
|
|
||||||
"${modifier}+Right" = "focus right";
|
|
||||||
"${modifier}+Down" = "focus down";
|
|
||||||
"${modifier}+Up" = "focus up";
|
|
||||||
"${modifier}+Shift+Left" = "move left 40px";
|
|
||||||
"${modifier}+Shift+Right" = "move right 40px";
|
|
||||||
"${modifier}+Shift+Down" = "move down 40px";
|
|
||||||
"${modifier}+Shift+Up" = "move up 40px";
|
|
||||||
"${modifier}+Ctrl+Shift+c" = "reload";
|
|
||||||
"${modifier}+Ctrl+Shift+r" = "exec swarsel-displaypower";
|
|
||||||
"${modifier}+Shift+e" = "exec swaynag -t warning -m 'You pressed the exit shortcut. Do you really want to exit sway? This will end your Wayland session.' -b 'Yes, exit sway' 'swaymsg exit'";
|
|
||||||
"${modifier}+r" = "mode resize";
|
|
||||||
# "${modifier}+Return" = "exec kitty";
|
|
||||||
"${modifier}+Return" = "exec swarselzellij";
|
|
||||||
"${modifier}+Print" = "exec screenshare";
|
|
||||||
# exec swaymsg move workspace to "$(swaymsg -t get_outputs | jq '[.[] | select(.active == true)] | .[(map(.focused) | index(true) + 1) % length].name')"
|
|
||||||
# "XF86AudioRaiseVolume" = "exec pa 5%";
|
|
||||||
"XF86AudioRaiseVolume" = "exec pamixer -i 5";
|
|
||||||
# "XF86AudioLowerVolume" = "exec pactl set-sink-volume @DEFAULT_SINK@ -5%";
|
|
||||||
"XF86AudioLowerVolume" = "exec pamixer -d 5";
|
|
||||||
# "XF86AudioMute" = "exec pactl set-sink-mute @DEFAULT_SINK@ toggle";
|
|
||||||
"XF86AudioMute" = "exec pamixer -t";
|
|
||||||
"XF86MonBrightnessUp" = "exec brightnessctl set +5%";
|
|
||||||
"XF86MonBrightnessDown" = "exec brightnessctl set 5%-";
|
|
||||||
"XF86Display" = "exec wl-mirror eDP-1";
|
|
||||||
}
|
|
||||||
config.swarselsystems.keybindings;
|
|
||||||
modes = {
|
|
||||||
resize = {
|
|
||||||
Down = "resize grow height 10 px or 10 ppt";
|
|
||||||
Escape = "mode default";
|
|
||||||
Left = "resize shrink width 10 px or 10 ppt";
|
|
||||||
Return = "mode default";
|
|
||||||
Right = "resize grow width 10 px or 10 ppt";
|
|
||||||
Up = "resize shrink height 10 px or 10 ppt";
|
|
||||||
Tab = "move position center, resize set width 50 ppt height 50 ppt";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
defaultWorkspace = "workspace 1:一";
|
|
||||||
# output = lib.mapAttrs' lib.swarselsystems.eachMonitor monitors;
|
|
||||||
output = {
|
|
||||||
"${config.swarselsystems.sharescreen}" = {
|
|
||||||
bg = "${self}/wallpaper/lenovowp.png ${config.stylix.imageScalingMode}";
|
|
||||||
};
|
|
||||||
"Philips Consumer Electronics Company PHL BDM3270 AU11806002320" = {
|
|
||||||
bg = "${self}/wallpaper/standwp.png ${config.stylix.imageScalingMode}";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
input = config.swarselsystems.standardinputs;
|
|
||||||
workspaceOutputAssign = workplaceOutputs;
|
|
||||||
startup = config.swarselsystems.startup ++ [
|
|
||||||
{ command = "kitty -T kittyterm -o confirm_os_window_close=0 zellij attach --create kittyterm"; }
|
|
||||||
{ command = "sleep 60; kitty -T spotifytui -o confirm_os_window_close=0 spotify_player"; }
|
|
||||||
];
|
|
||||||
seat = {
|
|
||||||
"*" = {
|
|
||||||
hide_cursor = "when-typing enable";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
window = {
|
|
||||||
border = 1;
|
|
||||||
titlebar = false;
|
|
||||||
};
|
|
||||||
assigns = {
|
|
||||||
"15:L" = [{ app_id = "teams-for-linux"; }];
|
|
||||||
};
|
|
||||||
floating = {
|
|
||||||
border = 1;
|
|
||||||
criteria = [
|
|
||||||
{ app_id = "qalculate-gtk"; }
|
|
||||||
{ app_id = "blueman"; }
|
|
||||||
{ app_id = "pavucontrol"; }
|
|
||||||
{ app_id = "syncthingtray"; }
|
|
||||||
{ app_id = "Element"; }
|
|
||||||
{ class = "1Password"; }
|
|
||||||
{ app_id = "com.nextcloud.desktopclient.nextcloud"; }
|
|
||||||
{ title = "(?:Open|Save) (?:File|Folder|As)"; }
|
|
||||||
{ title = "^Add$"; }
|
|
||||||
{ title = "^Picture-in-Picture$"; }
|
|
||||||
{ title = "Syncthing Tray"; }
|
|
||||||
{ title = "^spotifytui$"; }
|
|
||||||
{ title = "^kittyterm$"; }
|
|
||||||
{ app_id = "vesktop"; }
|
|
||||||
{ window_role = "pop-up"; }
|
|
||||||
{ window_role = "bubble"; }
|
|
||||||
{ window_role = "dialog"; }
|
|
||||||
{ window_role = "task_dialog"; }
|
|
||||||
{ window_role = "menu"; }
|
|
||||||
{ window_role = "Preferences"; }
|
|
||||||
];
|
|
||||||
titlebar = false;
|
|
||||||
};
|
|
||||||
window = {
|
|
||||||
commands = [
|
|
||||||
{
|
|
||||||
command = "opacity 0.95";
|
|
||||||
criteria = {
|
|
||||||
class = ".*";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
{
|
|
||||||
command = "opacity 1";
|
|
||||||
criteria = {
|
|
||||||
app_id = "at.yrlf.wl_mirror";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
{
|
|
||||||
command = "opacity 1";
|
|
||||||
criteria = {
|
|
||||||
app_id = "Gimp-2.10";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
{
|
|
||||||
command = "opacity 0.99";
|
|
||||||
criteria = {
|
|
||||||
app_id = "firefox";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
{
|
|
||||||
command = "opacity 0.99";
|
|
||||||
criteria = {
|
|
||||||
app_id = "chromium-browser";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
{
|
|
||||||
command = "sticky enable, shadows enable";
|
|
||||||
criteria = {
|
|
||||||
title = "^Picture-in-Picture$";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
{
|
|
||||||
command = "resize set width 60 ppt height 60 ppt, opacity 0.8, sticky enable, border normal, move container to scratchpad";
|
|
||||||
criteria = {
|
|
||||||
title = "^kittyterm$";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
{
|
|
||||||
command = "resize set width 60 ppt height 60 ppt, opacity 0.95, sticky enable, border normal, move container to scratchpad";
|
|
||||||
criteria = {
|
|
||||||
title = "^spotifytui$";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
{
|
|
||||||
|
|
||||||
command = "resize set width 60 ppt height 60 ppt, sticky enable, move container to scratchpad";
|
mode $exit {
|
||||||
criteria = {
|
bindsym --to-code {
|
||||||
class = "Spotify";
|
s exec \"systemctl suspend\", mode \"default\"
|
||||||
};
|
h exec \"systemctl hibernate\", mode \"default\"
|
||||||
}
|
l exec \"swaylock --screenshots --clock --effect-blur 7x5 --effect-vignette 0.5:0.5 --fade-in 0.2 --daemonize\", mode \"default\
|
||||||
{
|
p exec \"systemctl poweroff\"
|
||||||
command = "resize set width 60 ppt height 60 ppt, sticky enable";
|
r exec \"systemctl reboot\"
|
||||||
criteria = {
|
u exec \"swaymsg exit\"
|
||||||
app_id = "vesktop";
|
|
||||||
};
|
Return mode \"default\"
|
||||||
}
|
Escape mode \"default\"
|
||||||
{
|
${modifier}+Escape mode \"default\"
|
||||||
command = "resize set width 60 ppt height 60 ppt, sticky enable";
|
}
|
||||||
criteria = {
|
}
|
||||||
class = "Element";
|
|
||||||
};
|
exec systemctl --user import-environment
|
||||||
}
|
exec swayidle -w
|
||||||
# {
|
|
||||||
# command = "resize set width 60 ppt height 60 ppt, sticky enable, move container to scratchpad";
|
seat * hide_cursor 2000
|
||||||
# criteria = {
|
|
||||||
# app_id="^$";
|
exec kanshi
|
||||||
# class="^$";
|
exec_always kill -1 $(pidof kanshi)
|
||||||
# };
|
|
||||||
# }
|
bindswitch --locked lid:on exec kanshictl switch lidclosed
|
||||||
];
|
bindswitch --locked lid:off exec kanshictl switch lidopen
|
||||||
};
|
|
||||||
gaps = {
|
${swayfxSettings}
|
||||||
inner = 5;
|
";
|
||||||
};
|
|
||||||
};
|
};
|
||||||
extraSessionCommands = ''
|
|
||||||
export SDL_VIDEODRIVER=wayland
|
|
||||||
export QT_QPA_PLATFORM=wayland
|
|
||||||
export QT_WAYLAND_DISABLE_WINDOWDECORATION="1"
|
|
||||||
export _JAVA_AWT_WM_NONREPARENTING=1
|
|
||||||
export XDG_CURRENT_DESKTOP=sway
|
|
||||||
export XDG_SESSION_DESKTOP=sway
|
|
||||||
export QTWEBENGINE_CHROMIUM_FLAGS="--no-sandbox";
|
|
||||||
export ANKI_WAYLAND=1;
|
|
||||||
export OBSIDIAN_USE_WAYLAND=1;
|
|
||||||
'';
|
|
||||||
# extraConfigEarly = "
|
|
||||||
# exec systemctl --user import-environment DISPLAY WAYLAND_DISPLAY SWAYSOCK
|
|
||||||
# exec hash dbus-update-activation-environment 2>/dev/null && dbus-update-activation-environment --systemd DISPLAY WAYLAND_DISPLAY SWAYSOCK
|
|
||||||
# ";
|
|
||||||
extraConfig =
|
|
||||||
let
|
|
||||||
inherit (config.wayland.windowManager.sway.config) modifier;
|
|
||||||
swayfxSettings = config.swarselsystems.swayfxConfig;
|
|
||||||
in
|
|
||||||
"
|
|
||||||
exec_always autotiling
|
|
||||||
set $exit \"exit: [s]leep, [l]ock, [p]oweroff, [r]eboot, [u]ser logout\"
|
|
||||||
|
|
||||||
mode $exit {
|
|
||||||
bindsym --to-code {
|
|
||||||
s exec \"systemctl suspend\", mode \"default\"
|
|
||||||
h exec \"systemctl hibernate\", mode \"default\"
|
|
||||||
l exec \"swaylock --screenshots --clock --effect-blur 7x5 --effect-vignette 0.5:0.5 --fade-in 0.2 --daemonize\", mode \"default\
|
|
||||||
p exec \"systemctl poweroff\"
|
|
||||||
r exec \"systemctl reboot\"
|
|
||||||
u exec \"swaymsg exit\"
|
|
||||||
|
|
||||||
Return mode \"default\"
|
|
||||||
Escape mode \"default\"
|
|
||||||
${modifier}+Escape mode \"default\"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
exec systemctl --user import-environment
|
|
||||||
exec swayidle -w
|
|
||||||
|
|
||||||
seat * hide_cursor 2000
|
|
||||||
|
|
||||||
exec kanshi
|
|
||||||
exec_always kill -1 $(pidof kanshi)
|
|
||||||
|
|
||||||
bindswitch --locked lid:on exec kanshictl switch lidclosed
|
|
||||||
bindswitch --locked lid:off exec kanshictl switch lidopen
|
|
||||||
|
|
||||||
${swayfxSettings}
|
|
||||||
";
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,253 +1,309 @@
|
||||||
{ self, config, lib, ... }:
|
{ self, config, lib, ... }:
|
||||||
|
let
|
||||||
|
generateIcons = n: lib.concatStringsSep " " (builtins.map (x: "{icon" + toString x + "}") (lib.range 0 (n - 1)));
|
||||||
|
modulesLeft = [
|
||||||
|
"custom/outer-left-arrow-dark"
|
||||||
|
"mpris"
|
||||||
|
"custom/left-arrow-light"
|
||||||
|
"network"
|
||||||
|
"custom/vpn"
|
||||||
|
"custom/left-arrow-dark"
|
||||||
|
"pulseaudio"
|
||||||
|
"custom/left-arrow-light"
|
||||||
|
];
|
||||||
|
modulesRight = [
|
||||||
|
"custom/left-arrow-dark"
|
||||||
|
"group/hardware"
|
||||||
|
"custom/left-arrow-light"
|
||||||
|
"clock#2"
|
||||||
|
"custom/left-arrow-dark"
|
||||||
|
"clock#1"
|
||||||
|
];
|
||||||
|
in
|
||||||
{
|
{
|
||||||
programs.waybar = {
|
options.swarselsystems = {
|
||||||
|
cpuCount = lib.mkOption {
|
||||||
enable = true;
|
type = lib.types.int;
|
||||||
systemd = {
|
default = 8;
|
||||||
enable = true;
|
|
||||||
target = "sway-sessions.target";
|
|
||||||
};
|
};
|
||||||
settings = {
|
temperatureHwmon = {
|
||||||
mainBar = {
|
isAbsolutePath = lib.mkEnableOption "absolute temperature path";
|
||||||
ipc = true;
|
path = lib.mkOption {
|
||||||
id = "bar-0";
|
type = lib.types.str;
|
||||||
layer = "top";
|
default = "";
|
||||||
position = "top";
|
};
|
||||||
modules-left = [ "sway/workspaces" "custom/outer-right-arrow-dark" "sway/window" ];
|
input-filename = lib.mkOption {
|
||||||
modules-center = [ "sway/mode" "privacy" "custom/github" "custom/configwarn" "custom/nix-updates" ];
|
type = lib.types.str;
|
||||||
"sway/mode" = {
|
default = "";
|
||||||
format = "<span style=\"italic\" font-weight=\"bold\">{}</span>";
|
|
||||||
};
|
|
||||||
|
|
||||||
modules-right = config.swarselsystems.waybarModules;
|
|
||||||
|
|
||||||
"custom/pseudobat" = lib.mkIf (!config.swarselsystems.isLaptop) {
|
|
||||||
format = "";
|
|
||||||
on-click-right = "wlogout -p layer-shell";
|
|
||||||
};
|
|
||||||
|
|
||||||
"custom/configwarn" = {
|
|
||||||
exec = "waybarupdate";
|
|
||||||
interval = 60;
|
|
||||||
};
|
|
||||||
|
|
||||||
"custom/scratchpad-indicator" = {
|
|
||||||
interval = 3;
|
|
||||||
exec = "swaymsg -t get_tree | jq 'recurse(.nodes[]) | first(select(.name==\"__i3_scratch\")) | .floating_nodes | length | select(. >= 1)'";
|
|
||||||
format = "{} ";
|
|
||||||
on-click = "swaymsg 'scratchpad show'";
|
|
||||||
on-click-right = "swaymsg 'move scratchpad'";
|
|
||||||
};
|
|
||||||
|
|
||||||
"custom/github" = {
|
|
||||||
format = "{} ";
|
|
||||||
return-type = "json";
|
|
||||||
interval = 60;
|
|
||||||
exec = "github-notifications";
|
|
||||||
on-click = "xdg-open https://github.com/notifications";
|
|
||||||
};
|
|
||||||
|
|
||||||
idle_inhibitor = {
|
|
||||||
format = "{icon}";
|
|
||||||
format-icons = {
|
|
||||||
activated = "";
|
|
||||||
deactivated = "";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
"group/hardware" = {
|
|
||||||
orientation = "inherit";
|
|
||||||
drawer = {
|
|
||||||
"transition-left-to-right" = false;
|
|
||||||
};
|
|
||||||
modules = [
|
|
||||||
"tray"
|
|
||||||
"temperature"
|
|
||||||
"power-profiles-daemon"
|
|
||||||
"custom/left-arrow-light"
|
|
||||||
"custom/left-arrow-dark"
|
|
||||||
"custom/scratchpad-indicator"
|
|
||||||
"custom/left-arrow-light"
|
|
||||||
"disk"
|
|
||||||
"custom/left-arrow-dark"
|
|
||||||
"memory"
|
|
||||||
"custom/left-arrow-light"
|
|
||||||
"cpu"
|
|
||||||
"custom/left-arrow-dark"
|
|
||||||
"backlight/slider"
|
|
||||||
"idle_inhibitor"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
"backlight/slider" = {
|
|
||||||
min = 0;
|
|
||||||
max = 100;
|
|
||||||
orientation = "horizontal";
|
|
||||||
device = "intel_backlight";
|
|
||||||
};
|
|
||||||
|
|
||||||
power-profiles-daemon = {
|
|
||||||
format = "{icon}";
|
|
||||||
tooltip-format = "Power profile: {profile}\nDriver: {driver}";
|
|
||||||
tooltip = true;
|
|
||||||
format-icons = {
|
|
||||||
"default" = "";
|
|
||||||
"performance" = "";
|
|
||||||
"balanced" = "";
|
|
||||||
"power-saver" = "";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
temperature = {
|
|
||||||
hwmon-path = lib.mkIf (!config.swarselsystems.temperatureHwmon.isAbsolutePath) config.swarselsystems.temperatureHwmon.path;
|
|
||||||
hwmon-path-abs = lib.mkIf config.swarselsystems.temperatureHwmon.isAbsolutePath config.swarselsystems.temperatureHwmon.path;
|
|
||||||
input-filename = lib.mkIf config.swarselsystems.temperatureHwmon.isAbsolutePath config.swarselsystems.temperatureHwmon.input-filename;
|
|
||||||
critical-threshold = 80;
|
|
||||||
format-critical = " {temperatureC}°C";
|
|
||||||
format = " {temperatureC}°C";
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
mpris = {
|
|
||||||
format = "{player_icon} {title} <small>[{position}/{length}]</small>";
|
|
||||||
format-paused = "{player_icon} <i>{title} <small>[{position}/{length}]</small></i>";
|
|
||||||
player-icons = {
|
|
||||||
"default" = "▶ ";
|
|
||||||
"mpv" = "🎵 ";
|
|
||||||
"spotify" = " ";
|
|
||||||
};
|
|
||||||
status-icons = {
|
|
||||||
"paused" = " ";
|
|
||||||
};
|
|
||||||
interval = 1;
|
|
||||||
title-len = 20;
|
|
||||||
artist-len = 20;
|
|
||||||
album-len = 10;
|
|
||||||
};
|
|
||||||
"custom/left-arrow-dark" = {
|
|
||||||
format = "";
|
|
||||||
tooltip = false;
|
|
||||||
};
|
|
||||||
"custom/outer-left-arrow-dark" = {
|
|
||||||
format = "";
|
|
||||||
tooltip = false;
|
|
||||||
};
|
|
||||||
"custom/left-arrow-light" = {
|
|
||||||
format = "";
|
|
||||||
tooltip = false;
|
|
||||||
};
|
|
||||||
"custom/right-arrow-dark" = {
|
|
||||||
format = "";
|
|
||||||
tooltip = false;
|
|
||||||
};
|
|
||||||
"custom/outer-right-arrow-dark" = {
|
|
||||||
format = "";
|
|
||||||
tooltip = false;
|
|
||||||
};
|
|
||||||
"custom/right-arrow-light" = {
|
|
||||||
format = "";
|
|
||||||
tooltip = false;
|
|
||||||
};
|
|
||||||
"sway/workspaces" = {
|
|
||||||
disable-scroll = true;
|
|
||||||
format = "{name}";
|
|
||||||
};
|
|
||||||
|
|
||||||
"clock#1" = {
|
|
||||||
min-length = 8;
|
|
||||||
interval = 1;
|
|
||||||
format = "{:%H:%M:%S}";
|
|
||||||
# on-click-right= "gnome-clocks";
|
|
||||||
tooltip-format = "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>";
|
|
||||||
};
|
|
||||||
|
|
||||||
"clock#2" = {
|
|
||||||
format = "{:%d. %B %Y}";
|
|
||||||
# on-click-right= "gnome-clocks";
|
|
||||||
tooltip-format = "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>";
|
|
||||||
};
|
|
||||||
|
|
||||||
pulseaudio = {
|
|
||||||
format = "{icon} {volume:2}%";
|
|
||||||
format-bluetooth = "{icon} {volume}%";
|
|
||||||
format-muted = "MUTE";
|
|
||||||
format-icons = {
|
|
||||||
headphones = "";
|
|
||||||
default = [
|
|
||||||
""
|
|
||||||
""
|
|
||||||
];
|
|
||||||
};
|
|
||||||
scroll-step = 1;
|
|
||||||
on-click = "pamixer -t";
|
|
||||||
on-click-right = "pavucontrol";
|
|
||||||
};
|
|
||||||
|
|
||||||
memory = {
|
|
||||||
interval = 5;
|
|
||||||
format = " {}%";
|
|
||||||
tooltip-format = "Memory: {used:0.1f}G/{total:0.1f}G\nSwap: {swapUsed}G/{swapTotal}G";
|
|
||||||
};
|
|
||||||
cpu = {
|
|
||||||
format = config.swarselsystems.cpuString;
|
|
||||||
min-length = 6;
|
|
||||||
interval = 5;
|
|
||||||
format-icons = [ "▁" "▂" "▃" "▄" "▅" "▆" "▇" "█" ];
|
|
||||||
# on-click-right= "com.github.stsdc.monitor";
|
|
||||||
on-click-right = "kitty -o confirm_os_window_close=0 btm";
|
|
||||||
|
|
||||||
};
|
|
||||||
"custom/vpn" = {
|
|
||||||
format = "()";
|
|
||||||
exec = "echo '{\"class\": \"connected\"}'";
|
|
||||||
exec-if = "test -d /proc/sys/net/ipv4/conf/tun0";
|
|
||||||
return-type = "json";
|
|
||||||
interval = 5;
|
|
||||||
};
|
|
||||||
battery = {
|
|
||||||
states = {
|
|
||||||
"warning" = 60;
|
|
||||||
"error" = 30;
|
|
||||||
"critical" = 15;
|
|
||||||
};
|
|
||||||
interval = 5;
|
|
||||||
format = "{icon} {capacity}%";
|
|
||||||
format-charging = "{capacity}% ";
|
|
||||||
format-plugged = "{capacity}% ";
|
|
||||||
format-icons = [
|
|
||||||
""
|
|
||||||
""
|
|
||||||
""
|
|
||||||
""
|
|
||||||
""
|
|
||||||
];
|
|
||||||
on-click-right = "wlogout -p layer-shell";
|
|
||||||
};
|
|
||||||
disk = {
|
|
||||||
interval = 30;
|
|
||||||
format = "Disk {percentage_used:2}%";
|
|
||||||
path = "/";
|
|
||||||
states = {
|
|
||||||
"warning" = 80;
|
|
||||||
"critical" = 90;
|
|
||||||
};
|
|
||||||
tooltip-format = "{used} used out of {total} on {path} ({percentage_used}%)\n{free} free on {path} ({percentage_free}%)";
|
|
||||||
};
|
|
||||||
tray = {
|
|
||||||
icon-size = 20;
|
|
||||||
};
|
|
||||||
network = {
|
|
||||||
interval = 5;
|
|
||||||
format-wifi = "{signalStrength}% ";
|
|
||||||
format-ethernet = "";
|
|
||||||
format-linked = "{ifname} (No IP) ";
|
|
||||||
format-disconnected = "Disconnected ⚠";
|
|
||||||
format-alt = "{ifname}: {ipaddr}/{cidr}";
|
|
||||||
tooltip-format-ethernet = "{ifname} via {gwaddr}: {essid} {ipaddr}/{cidr}\n\n⇡{bandwidthUpBytes} ⇣{bandwidthDownBytes}";
|
|
||||||
tooltip-format-wifi = "{ifname} via {gwaddr}: {essid} {ipaddr}/{cidr} \n{signaldBm}dBm @ {frequency}MHz\n\n⇡{bandwidthUpBytes} ⇣{bandwidthDownBytes}";
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
style = builtins.readFile (self + /programs/waybar/style.css);
|
waybarModules = lib.mkOption {
|
||||||
|
type = lib.types.listOf lib.types.str;
|
||||||
|
default = modulesLeft ++ [
|
||||||
|
"custom/pseudobat"
|
||||||
|
] ++ modulesRight;
|
||||||
|
};
|
||||||
|
cpuString = lib.mkOption {
|
||||||
|
type = lib.types.str;
|
||||||
|
default = generateIcons config.swarselsystems.cpuCount;
|
||||||
|
description = "The generated icons string for use by Waybar.";
|
||||||
|
internal = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
config = {
|
||||||
|
swarselsystems = {
|
||||||
|
waybarModules = lib.mkIf config.swarselsystems.isLaptop (modulesLeft ++ [
|
||||||
|
"battery"
|
||||||
|
] ++ modulesRight);
|
||||||
|
};
|
||||||
|
programs.waybar = {
|
||||||
|
enable = true;
|
||||||
|
systemd = {
|
||||||
|
enable = true;
|
||||||
|
target = "sway-sessions.target";
|
||||||
|
};
|
||||||
|
settings = {
|
||||||
|
mainBar = {
|
||||||
|
ipc = true;
|
||||||
|
id = "bar-0";
|
||||||
|
layer = "top";
|
||||||
|
position = "top";
|
||||||
|
modules-left = [ "sway/workspaces" "custom/outer-right-arrow-dark" "sway/window" ];
|
||||||
|
modules-center = [ "sway/mode" "privacy" "custom/github" "custom/configwarn" "custom/nix-updates" ];
|
||||||
|
"sway/mode" = {
|
||||||
|
format = "<span style=\"italic\" font-weight=\"bold\">{}</span>";
|
||||||
|
};
|
||||||
|
|
||||||
|
modules-right = config.swarselsystems.waybarModules;
|
||||||
|
|
||||||
|
"custom/pseudobat" = lib.mkIf (!config.swarselsystems.isLaptop) {
|
||||||
|
format = "";
|
||||||
|
on-click-right = "wlogout -p layer-shell";
|
||||||
|
};
|
||||||
|
|
||||||
|
"custom/configwarn" = {
|
||||||
|
exec = "waybarupdate";
|
||||||
|
interval = 60;
|
||||||
|
};
|
||||||
|
|
||||||
|
"custom/scratchpad-indicator" = {
|
||||||
|
interval = 3;
|
||||||
|
exec = "swaymsg -t get_tree | jq 'recurse(.nodes[]) | first(select(.name==\"__i3_scratch\")) | .floating_nodes | length | select(. >= 1)'";
|
||||||
|
format = "{} ";
|
||||||
|
on-click = "swaymsg 'scratchpad show'";
|
||||||
|
on-click-right = "swaymsg 'move scratchpad'";
|
||||||
|
};
|
||||||
|
|
||||||
|
"custom/github" = {
|
||||||
|
format = "{} ";
|
||||||
|
return-type = "json";
|
||||||
|
interval = 60;
|
||||||
|
exec = "github-notifications";
|
||||||
|
on-click = "xdg-open https://github.com/notifications";
|
||||||
|
};
|
||||||
|
|
||||||
|
idle_inhibitor = {
|
||||||
|
format = "{icon}";
|
||||||
|
format-icons = {
|
||||||
|
activated = "";
|
||||||
|
deactivated = "";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
"group/hardware" = {
|
||||||
|
orientation = "inherit";
|
||||||
|
drawer = {
|
||||||
|
"transition-left-to-right" = false;
|
||||||
|
};
|
||||||
|
modules = [
|
||||||
|
"tray"
|
||||||
|
"temperature"
|
||||||
|
"power-profiles-daemon"
|
||||||
|
"custom/left-arrow-light"
|
||||||
|
"custom/left-arrow-dark"
|
||||||
|
"custom/scratchpad-indicator"
|
||||||
|
"custom/left-arrow-light"
|
||||||
|
"disk"
|
||||||
|
"custom/left-arrow-dark"
|
||||||
|
"memory"
|
||||||
|
"custom/left-arrow-light"
|
||||||
|
"cpu"
|
||||||
|
"custom/left-arrow-dark"
|
||||||
|
"backlight/slider"
|
||||||
|
"idle_inhibitor"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
"backlight/slider" = {
|
||||||
|
min = 0;
|
||||||
|
max = 100;
|
||||||
|
orientation = "horizontal";
|
||||||
|
device = "intel_backlight";
|
||||||
|
};
|
||||||
|
|
||||||
|
power-profiles-daemon = {
|
||||||
|
format = "{icon}";
|
||||||
|
tooltip-format = "Power profile: {profile}\nDriver: {driver}";
|
||||||
|
tooltip = true;
|
||||||
|
format-icons = {
|
||||||
|
"default" = "";
|
||||||
|
"performance" = "";
|
||||||
|
"balanced" = "";
|
||||||
|
"power-saver" = "";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
temperature = {
|
||||||
|
hwmon-path = lib.mkIf (!config.swarselsystems.temperatureHwmon.isAbsolutePath) config.swarselsystems.temperatureHwmon.path;
|
||||||
|
hwmon-path-abs = lib.mkIf config.swarselsystems.temperatureHwmon.isAbsolutePath config.swarselsystems.temperatureHwmon.path;
|
||||||
|
input-filename = lib.mkIf config.swarselsystems.temperatureHwmon.isAbsolutePath config.swarselsystems.temperatureHwmon.input-filename;
|
||||||
|
critical-threshold = 80;
|
||||||
|
format-critical = " {temperatureC}°C";
|
||||||
|
format = " {temperatureC}°C";
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
mpris = {
|
||||||
|
format = "{player_icon} {title} <small>[{position}/{length}]</small>";
|
||||||
|
format-paused = "{player_icon} <i>{title} <small>[{position}/{length}]</small></i>";
|
||||||
|
player-icons = {
|
||||||
|
"default" = "▶ ";
|
||||||
|
"mpv" = "🎵 ";
|
||||||
|
"spotify" = " ";
|
||||||
|
};
|
||||||
|
status-icons = {
|
||||||
|
"paused" = " ";
|
||||||
|
};
|
||||||
|
interval = 1;
|
||||||
|
title-len = 20;
|
||||||
|
artist-len = 20;
|
||||||
|
album-len = 10;
|
||||||
|
};
|
||||||
|
"custom/left-arrow-dark" = {
|
||||||
|
format = "";
|
||||||
|
tooltip = false;
|
||||||
|
};
|
||||||
|
"custom/outer-left-arrow-dark" = {
|
||||||
|
format = "";
|
||||||
|
tooltip = false;
|
||||||
|
};
|
||||||
|
"custom/left-arrow-light" = {
|
||||||
|
format = "";
|
||||||
|
tooltip = false;
|
||||||
|
};
|
||||||
|
"custom/right-arrow-dark" = {
|
||||||
|
format = "";
|
||||||
|
tooltip = false;
|
||||||
|
};
|
||||||
|
"custom/outer-right-arrow-dark" = {
|
||||||
|
format = "";
|
||||||
|
tooltip = false;
|
||||||
|
};
|
||||||
|
"custom/right-arrow-light" = {
|
||||||
|
format = "";
|
||||||
|
tooltip = false;
|
||||||
|
};
|
||||||
|
"sway/workspaces" = {
|
||||||
|
disable-scroll = true;
|
||||||
|
format = "{name}";
|
||||||
|
};
|
||||||
|
|
||||||
|
"clock#1" = {
|
||||||
|
min-length = 8;
|
||||||
|
interval = 1;
|
||||||
|
format = "{:%H:%M:%S}";
|
||||||
|
# on-click-right= "gnome-clocks";
|
||||||
|
tooltip-format = "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>";
|
||||||
|
};
|
||||||
|
|
||||||
|
"clock#2" = {
|
||||||
|
format = "{:%d. %B %Y}";
|
||||||
|
# on-click-right= "gnome-clocks";
|
||||||
|
tooltip-format = "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>";
|
||||||
|
};
|
||||||
|
|
||||||
|
pulseaudio = {
|
||||||
|
format = "{icon} {volume:2}%";
|
||||||
|
format-bluetooth = "{icon} {volume}%";
|
||||||
|
format-muted = "MUTE";
|
||||||
|
format-icons = {
|
||||||
|
headphones = "";
|
||||||
|
default = [
|
||||||
|
""
|
||||||
|
""
|
||||||
|
];
|
||||||
|
};
|
||||||
|
scroll-step = 1;
|
||||||
|
on-click = "pamixer -t";
|
||||||
|
on-click-right = "pavucontrol";
|
||||||
|
};
|
||||||
|
|
||||||
|
memory = {
|
||||||
|
interval = 5;
|
||||||
|
format = " {}%";
|
||||||
|
tooltip-format = "Memory: {used:0.1f}G/{total:0.1f}G\nSwap: {swapUsed}G/{swapTotal}G";
|
||||||
|
};
|
||||||
|
cpu = {
|
||||||
|
format = config.swarselsystems.cpuString;
|
||||||
|
min-length = 6;
|
||||||
|
interval = 5;
|
||||||
|
format-icons = [ "▁" "▂" "▃" "▄" "▅" "▆" "▇" "█" ];
|
||||||
|
# on-click-right= "com.github.stsdc.monitor";
|
||||||
|
on-click-right = "kitty -o confirm_os_window_close=0 btm";
|
||||||
|
|
||||||
|
};
|
||||||
|
"custom/vpn" = {
|
||||||
|
format = "()";
|
||||||
|
exec = "echo '{\"class\": \"connected\"}'";
|
||||||
|
exec-if = "test -d /proc/sys/net/ipv4/conf/tun0";
|
||||||
|
return-type = "json";
|
||||||
|
interval = 5;
|
||||||
|
};
|
||||||
|
battery = {
|
||||||
|
states = {
|
||||||
|
"warning" = 60;
|
||||||
|
"error" = 30;
|
||||||
|
"critical" = 15;
|
||||||
|
};
|
||||||
|
interval = 5;
|
||||||
|
format = "{icon} {capacity}%";
|
||||||
|
format-charging = "{capacity}% ";
|
||||||
|
format-plugged = "{capacity}% ";
|
||||||
|
format-icons = [
|
||||||
|
""
|
||||||
|
""
|
||||||
|
""
|
||||||
|
""
|
||||||
|
""
|
||||||
|
];
|
||||||
|
on-click-right = "wlogout -p layer-shell";
|
||||||
|
};
|
||||||
|
disk = {
|
||||||
|
interval = 30;
|
||||||
|
format = "Disk {percentage_used:2}%";
|
||||||
|
path = "/";
|
||||||
|
states = {
|
||||||
|
"warning" = 80;
|
||||||
|
"critical" = 90;
|
||||||
|
};
|
||||||
|
tooltip-format = "{used} used out of {total} on {path} ({percentage_used}%)\n{free} free on {path} ({percentage_free}%)";
|
||||||
|
};
|
||||||
|
tray = {
|
||||||
|
icon-size = 20;
|
||||||
|
};
|
||||||
|
network = {
|
||||||
|
interval = 5;
|
||||||
|
format-wifi = "{signalStrength}% ";
|
||||||
|
format-ethernet = "";
|
||||||
|
format-linked = "{ifname} (No IP) ";
|
||||||
|
format-disconnected = "Disconnected ⚠";
|
||||||
|
format-alt = "{ifname}: {ipaddr}/{cidr}";
|
||||||
|
tooltip-format-ethernet = "{ifname} via {gwaddr}: {essid} {ipaddr}/{cidr}\n\n⇡{bandwidthUpBytes} ⇣{bandwidthDownBytes}";
|
||||||
|
tooltip-format-wifi = "{ifname} via {gwaddr}: {essid} {ipaddr}/{cidr} \n{signaldBm}dBm @ {frequency}MHz\n\n⇡{bandwidthUpBytes} ⇣{bandwidthDownBytes}";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
style = builtins.readFile (self + /programs/waybar/style.css);
|
||||||
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -3,102 +3,110 @@ let
|
||||||
inherit (config.swarselsystems) flakePath;
|
inherit (config.swarselsystems) flakePath;
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
programs.zsh = {
|
options.swarselsystems = {
|
||||||
enable = true;
|
shellAliases = lib.mkOption {
|
||||||
shellAliases = lib.recursiveUpdate
|
type = lib.types.attrsOf lib.types.str;
|
||||||
{
|
default = { };
|
||||||
hg = "history | grep";
|
|
||||||
hmswitch = "home-manager --flake ${flakePath}#$(whoami)@$(hostname) switch |& nom";
|
|
||||||
nswitch = "sudo nixos-rebuild --flake ${flakePath}#$(hostname) --show-trace --log-format internal-json -v switch |& nom --json";
|
|
||||||
nboot = "sudo nixos-rebuild --flake ${flakePath}#$(hostname) --show-trace --log-format internal-json -v boot |& nom --json";
|
|
||||||
magit = "emacsclient -nc -e \"(magit-status)\"";
|
|
||||||
config = "git --git-dir=$HOME/.cfg/ --work-tree=$HOME";
|
|
||||||
g = "git";
|
|
||||||
c = "git --git-dir=$FLAKE/.git --work-tree=$FLAKE/";
|
|
||||||
passpush = "cd ~/.local/share/password-store; git add .; git commit -m 'pass file changes'; git push; cd -;";
|
|
||||||
passpull = "cd ~/.local/share/password-store; git pull; cd -;";
|
|
||||||
hotspot = "nmcli connection up local; nmcli device wifi hotspot;";
|
|
||||||
cd = "z";
|
|
||||||
youtube-dl = "yt-dlp";
|
|
||||||
cd-orig = "cd";
|
|
||||||
cat-orig = "cat";
|
|
||||||
cdr = "cd \"$( (find $DOCUMENT_DIR_WORK $DOCUMENT_DIR_PRIV -maxdepth 1 && echo $FLAKE) | fzf )\"";
|
|
||||||
nix-ldd-ldd = "LD_LIBRARY_PATH=$NIX_LD_LIBRARY_PATH ldd";
|
|
||||||
nix-ldd = "LD_LIBRARY_PATH=$NIX_LD_LIBRARY_PATH ldd";
|
|
||||||
nix-ldd-locate = "nix-locate --minimal --top-level -w ";
|
|
||||||
nix-store-search = "ls /nix/store | grep";
|
|
||||||
fs-diff = "sudo mount -o subvol=/ /dev/mapper/cryptroot /mnt ; fs-diff";
|
|
||||||
lt = "eza -las modified --total-size";
|
|
||||||
boot-diff = "nix store diff-closures /run/*-system";
|
|
||||||
gen-diff = "nix profile diff-closures --profile /nix/var/nix/profiles/system";
|
|
||||||
cc = "wl-copy";
|
|
||||||
}
|
|
||||||
config.swarselsystems.shellAliases;
|
|
||||||
autosuggestion.enable = true;
|
|
||||||
enableCompletion = true;
|
|
||||||
syntaxHighlighting.enable = true;
|
|
||||||
autocd = false;
|
|
||||||
cdpath = [
|
|
||||||
"~/.dotfiles"
|
|
||||||
# "~/Documents/GitHub"
|
|
||||||
];
|
|
||||||
defaultKeymap = "emacs";
|
|
||||||
dirHashes = {
|
|
||||||
dl = "$HOME/Downloads";
|
|
||||||
gh = "$HOME/Documents/GitHub";
|
|
||||||
};
|
};
|
||||||
history = {
|
};
|
||||||
expireDuplicatesFirst = true;
|
config = {
|
||||||
path = "$HOME/.histfile";
|
programs.zsh = {
|
||||||
save = 10000;
|
|
||||||
size = 10000;
|
|
||||||
};
|
|
||||||
historySubstringSearch = {
|
|
||||||
enable = true;
|
enable = true;
|
||||||
searchDownKey = "^[OB";
|
shellAliases = lib.recursiveUpdate
|
||||||
searchUpKey = "^[OA";
|
{
|
||||||
|
hg = "history | grep";
|
||||||
|
hmswitch = "home-manager --flake ${flakePath}#$(whoami)@$(hostname) switch |& nom";
|
||||||
|
nswitch = "sudo nixos-rebuild --flake ${flakePath}#$(hostname) --show-trace --log-format internal-json -v switch |& nom --json";
|
||||||
|
nboot = "sudo nixos-rebuild --flake ${flakePath}#$(hostname) --show-trace --log-format internal-json -v boot |& nom --json";
|
||||||
|
magit = "emacsclient -nc -e \"(magit-status)\"";
|
||||||
|
config = "git --git-dir=$HOME/.cfg/ --work-tree=$HOME";
|
||||||
|
g = "git";
|
||||||
|
c = "git --git-dir=$FLAKE/.git --work-tree=$FLAKE/";
|
||||||
|
passpush = "cd ~/.local/share/password-store; git add .; git commit -m 'pass file changes'; git push; cd -;";
|
||||||
|
passpull = "cd ~/.local/share/password-store; git pull; cd -;";
|
||||||
|
hotspot = "nmcli connection up local; nmcli device wifi hotspot;";
|
||||||
|
cd = "z";
|
||||||
|
youtube-dl = "yt-dlp";
|
||||||
|
cd-orig = "cd";
|
||||||
|
cat-orig = "cat";
|
||||||
|
cdr = "cd \"$( (find $DOCUMENT_DIR_WORK $DOCUMENT_DIR_PRIV -maxdepth 1 && echo $FLAKE) | fzf )\"";
|
||||||
|
nix-ldd-ldd = "LD_LIBRARY_PATH=$NIX_LD_LIBRARY_PATH ldd";
|
||||||
|
nix-ldd = "LD_LIBRARY_PATH=$NIX_LD_LIBRARY_PATH ldd";
|
||||||
|
nix-ldd-locate = "nix-locate --minimal --top-level -w ";
|
||||||
|
nix-store-search = "ls /nix/store | grep";
|
||||||
|
fs-diff = "sudo mount -o subvol=/ /dev/mapper/cryptroot /mnt ; fs-diff";
|
||||||
|
lt = "eza -las modified --total-size";
|
||||||
|
boot-diff = "nix store diff-closures /run/*-system";
|
||||||
|
gen-diff = "nix profile diff-closures --profile /nix/var/nix/profiles/system";
|
||||||
|
cc = "wl-copy";
|
||||||
|
}
|
||||||
|
config.swarselsystems.shellAliases;
|
||||||
|
autosuggestion.enable = true;
|
||||||
|
enableCompletion = true;
|
||||||
|
syntaxHighlighting.enable = true;
|
||||||
|
autocd = false;
|
||||||
|
cdpath = [
|
||||||
|
"~/.dotfiles"
|
||||||
|
# "~/Documents/GitHub"
|
||||||
|
];
|
||||||
|
defaultKeymap = "emacs";
|
||||||
|
dirHashes = {
|
||||||
|
dl = "$HOME/Downloads";
|
||||||
|
gh = "$HOME/Documents/GitHub";
|
||||||
|
};
|
||||||
|
history = {
|
||||||
|
expireDuplicatesFirst = true;
|
||||||
|
path = "$HOME/.histfile";
|
||||||
|
save = 10000;
|
||||||
|
size = 10000;
|
||||||
|
};
|
||||||
|
historySubstringSearch = {
|
||||||
|
enable = true;
|
||||||
|
searchDownKey = "^[OB";
|
||||||
|
searchUpKey = "^[OA";
|
||||||
|
};
|
||||||
|
plugins = [
|
||||||
|
{
|
||||||
|
name = "fzf-tab";
|
||||||
|
src = pkgs.zsh-fzf-tab;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
initExtra = ''
|
||||||
|
bindkey "^[[1;5D" backward-word
|
||||||
|
bindkey "^[[1;5C" forward-word
|
||||||
|
|
||||||
|
my-backward-delete-word() {
|
||||||
|
# Copy the global WORDCHARS variable to a local variable. That way any
|
||||||
|
# modifications are scoped to this function only
|
||||||
|
local WORDCHARS=$WORDCHARS
|
||||||
|
# Use bash string manipulation to remove `:` so our delete will stop at it
|
||||||
|
WORDCHARS="''${WORDCHARS//:}"
|
||||||
|
# Use bash string manipulation to remove `/` so our delete will stop at it
|
||||||
|
WORDCHARS="''${WORDCHARS//\/}"
|
||||||
|
# Use bash string manipulation to remove `.` so our delete will stop at it
|
||||||
|
WORDCHARS="''${WORDCHARS//.}"
|
||||||
|
# zle <widget-name> will run an existing widget.
|
||||||
|
zle backward-delete-word
|
||||||
|
}
|
||||||
|
zle -N my-backward-delete-word
|
||||||
|
bindkey '^H' my-backward-delete-word
|
||||||
|
|
||||||
|
# This will be our `ctrl+alt+w` command
|
||||||
|
my-backward-delete-whole-word() {
|
||||||
|
# Copy the global WORDCHARS variable to a local variable. That way any
|
||||||
|
# modifications are scoped to this function only
|
||||||
|
local WORDCHARS=$WORDCHARS
|
||||||
|
# Use bash string manipulation to add `:` to WORDCHARS if it's not present
|
||||||
|
# already.
|
||||||
|
[[ ! $WORDCHARS == *":"* ]] && WORDCHARS="$WORDCHARS"":"
|
||||||
|
# zle <widget-name> will run that widget.
|
||||||
|
zle backward-delete-word
|
||||||
|
}
|
||||||
|
# `zle -N` will create a new widget that we can use on the command line
|
||||||
|
zle -N my-backward-delete-whole-word
|
||||||
|
# bind this new widget to `ctrl+alt+w`
|
||||||
|
bindkey '^W' my-backward-delete-whole-word
|
||||||
|
'';
|
||||||
};
|
};
|
||||||
plugins = [
|
|
||||||
{
|
|
||||||
name = "fzf-tab";
|
|
||||||
src = pkgs.zsh-fzf-tab;
|
|
||||||
}
|
|
||||||
];
|
|
||||||
initExtra = ''
|
|
||||||
bindkey "^[[1;5D" backward-word
|
|
||||||
bindkey "^[[1;5C" forward-word
|
|
||||||
|
|
||||||
my-backward-delete-word() {
|
|
||||||
# Copy the global WORDCHARS variable to a local variable. That way any
|
|
||||||
# modifications are scoped to this function only
|
|
||||||
local WORDCHARS=$WORDCHARS
|
|
||||||
# Use bash string manipulation to remove `:` so our delete will stop at it
|
|
||||||
WORDCHARS="''${WORDCHARS//:}"
|
|
||||||
# Use bash string manipulation to remove `/` so our delete will stop at it
|
|
||||||
WORDCHARS="''${WORDCHARS//\/}"
|
|
||||||
# Use bash string manipulation to remove `.` so our delete will stop at it
|
|
||||||
WORDCHARS="''${WORDCHARS//.}"
|
|
||||||
# zle <widget-name> will run an existing widget.
|
|
||||||
zle backward-delete-word
|
|
||||||
}
|
|
||||||
zle -N my-backward-delete-word
|
|
||||||
bindkey '^H' my-backward-delete-word
|
|
||||||
|
|
||||||
# This will be our `ctrl+alt+w` command
|
|
||||||
my-backward-delete-whole-word() {
|
|
||||||
# Copy the global WORDCHARS variable to a local variable. That way any
|
|
||||||
# modifications are scoped to this function only
|
|
||||||
local WORDCHARS=$WORDCHARS
|
|
||||||
# Use bash string manipulation to add `:` to WORDCHARS if it's not present
|
|
||||||
# already.
|
|
||||||
[[ ! $WORDCHARS == *":"* ]] && WORDCHARS="$WORDCHARS"":"
|
|
||||||
# zle <widget-name> will run that widget.
|
|
||||||
zle backward-delete-word
|
|
||||||
}
|
|
||||||
# `zle -N` will create a new widget that we can use on the command line
|
|
||||||
zle -N my-backward-delete-whole-word
|
|
||||||
# bind this new widget to `ctrl+alt+w`
|
|
||||||
bindkey '^W' my-backward-delete-whole-word
|
|
||||||
'';
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -104,25 +104,36 @@ in
|
||||||
};
|
};
|
||||||
|
|
||||||
firefox = {
|
firefox = {
|
||||||
profiles = {
|
profiles =
|
||||||
dc = lib.recursiveUpdate
|
let
|
||||||
{
|
isDefault = false;
|
||||||
id = 1;
|
in
|
||||||
settings = {
|
{
|
||||||
"browser.startup.homepage" = "https://tower.vbc.ac.at|https://artifactory.vbc.ac.at";
|
dc = lib.recursiveUpdate
|
||||||
};
|
{
|
||||||
}
|
inherit isDefault;
|
||||||
config.swarselsystems.firefox;
|
id = 1;
|
||||||
cl = lib.recursiveUpdate
|
settings = {
|
||||||
{
|
"browser.startup.homepage" = "https://tower.vbc.ac.at|https://artifactory.vbc.ac.at";
|
||||||
id = 2;
|
};
|
||||||
settings = {
|
}
|
||||||
"browser.startup.homepage" = "https://portal.azure.com";
|
config.swarselsystems.firefox;
|
||||||
};
|
cl = lib.recursiveUpdate
|
||||||
}
|
{
|
||||||
config.swarselsystems.firefox;
|
inherit isDefault;
|
||||||
ws = lib.recursiveUpdate { id = 3; } config.swarselsystems.firefox;
|
id = 2;
|
||||||
};
|
settings = {
|
||||||
|
"browser.startup.homepage" = "https://portal.azure.com";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
config.swarselsystems.firefox;
|
||||||
|
ws = lib.recursiveUpdate
|
||||||
|
{
|
||||||
|
inherit isDefault;
|
||||||
|
id = 3;
|
||||||
|
}
|
||||||
|
config.swarselsystems.firefox;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
chromium = {
|
chromium = {
|
||||||
|
|
|
||||||
|
|
@ -6,5 +6,6 @@ in
|
||||||
{
|
{
|
||||||
imports = lib.swarselsystems.mkImports importNames "profiles/home/server" ++ [
|
imports = lib.swarselsystems.mkImports importNames "profiles/home/server" ++ [
|
||||||
"${profilesPath}/home/common/settings.nix"
|
"${profilesPath}/home/common/settings.nix"
|
||||||
|
"${profilesPath}/home/common/sharedsetup.nix"
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,12 @@
|
||||||
{ lib, ... }:
|
{ self, lib, ... }:
|
||||||
let
|
let
|
||||||
importNames = lib.swarselsystems.readNix "profiles/nixos/common";
|
importNames = lib.swarselsystems.readNix "profiles/nixos/common";
|
||||||
|
profilesPath = "${self}/profiles";
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
imports = lib.swarselsystems.mkImports importNames "profiles/nixos/common";
|
imports = lib.swarselsystems.mkImports importNames "profiles/nixos/common" ++ [
|
||||||
|
"${profilesPath}/home/common/sharedsetup.nix"
|
||||||
|
];
|
||||||
|
|
||||||
nixpkgs.config.permittedInsecurePackages = [
|
nixpkgs.config.permittedInsecurePackages = [
|
||||||
"jitsi-meet-1.0.8043"
|
"jitsi-meet-1.0.8043"
|
||||||
|
|
|
||||||
|
|
@ -1,34 +1,47 @@
|
||||||
{ pkgs, config, lib, ... }:
|
{ pkgs, config, lib, ... }:
|
||||||
{
|
{
|
||||||
|
|
||||||
hardware = {
|
options.swarselsystems = {
|
||||||
# opengl.driSupport32Bit = true is replaced with graphics.enable32Bit and hence redundant
|
hasBluetooth = lib.mkEnableOption "bluetooth availability";
|
||||||
graphics = {
|
hasFingerprint = lib.mkEnableOption "fingerprint sensor availability";
|
||||||
enable = true;
|
trackpoint = {
|
||||||
enable32Bit = true;
|
isAvailable = lib.mkEnableOption "trackpoint availability";
|
||||||
};
|
trackpoint.device = lib.mkOption {
|
||||||
|
type = lib.types.str;
|
||||||
|
default = "";
|
||||||
trackpoint = lib.mkIf config.swarselsystems.trackpoint.isAvailable {
|
|
||||||
enable = true;
|
|
||||||
inherit (config.swarselsystems.trackpoint) device;
|
|
||||||
};
|
|
||||||
|
|
||||||
keyboard.qmk.enable = true;
|
|
||||||
|
|
||||||
enableAllFirmware = true;
|
|
||||||
|
|
||||||
bluetooth = lib.mkIf config.swarselsystems.hasBluetooth {
|
|
||||||
enable = true;
|
|
||||||
package = pkgs.stable.bluez;
|
|
||||||
powerOnBoot = true;
|
|
||||||
settings = {
|
|
||||||
General = {
|
|
||||||
Enable = "Source,Sink,Media,Socket";
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
config = {
|
||||||
|
hardware = {
|
||||||
|
# opengl.driSupport32Bit = true is replaced with graphics.enable32Bit and hence redundant
|
||||||
|
graphics = {
|
||||||
|
enable = true;
|
||||||
|
enable32Bit = true;
|
||||||
|
};
|
||||||
|
|
||||||
services.fprintd.enable = lib.mkIf config.swarselsystems.hasFingerprint true;
|
|
||||||
|
trackpoint = lib.mkIf config.swarselsystems.trackpoint.isAvailable {
|
||||||
|
enable = true;
|
||||||
|
inherit (config.swarselsystems.trackpoint) device;
|
||||||
|
};
|
||||||
|
|
||||||
|
keyboard.qmk.enable = true;
|
||||||
|
|
||||||
|
enableAllFirmware = true;
|
||||||
|
|
||||||
|
bluetooth = lib.mkIf config.swarselsystems.hasBluetooth {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.stable.bluez;
|
||||||
|
powerOnBoot = true;
|
||||||
|
settings = {
|
||||||
|
General = {
|
||||||
|
Enable = "Source,Sink,Media,Socket";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
services.fprintd.enable = lib.mkIf config.swarselsystems.hasFingerprint true;
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -8,12 +8,7 @@
|
||||||
config.swarselsystems.stylix;
|
config.swarselsystems.stylix;
|
||||||
home-manager.users."${config.swarselsystems.mainUser}" = {
|
home-manager.users."${config.swarselsystems.mainUser}" = {
|
||||||
stylix = {
|
stylix = {
|
||||||
targets = {
|
targets = config.swarselsystems.stylixHomeTargets;
|
||||||
emacs.enable = false;
|
|
||||||
waybar.enable = false;
|
|
||||||
sway.useWallpaper = false;
|
|
||||||
firefox.profileNames = [ "default" ];
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
{ lib, config, ... }:
|
{ lib, config, ... }:
|
||||||
{
|
{
|
||||||
|
options.swarselsystems.server.ankisync = lib.mkEnableOption "enable ankisync on server";
|
||||||
config = lib.mkIf config.swarselsystems.server.ankisync {
|
config = lib.mkIf config.swarselsystems.server.ankisync {
|
||||||
|
|
||||||
networking.firewall.allowedTCPPorts = [ 22701 ];
|
networking.firewall.allowedTCPPorts = [ 22701 ];
|
||||||
|
|
|
||||||
|
|
@ -14,5 +14,7 @@ in
|
||||||
"${profilesPath}/nixos/common/time.nix"
|
"${profilesPath}/nixos/common/time.nix"
|
||||||
"${profilesPath}/nixos/common/users.nix"
|
"${profilesPath}/nixos/common/users.nix"
|
||||||
"${profilesPath}/nixos/common/nix-ld.nix"
|
"${profilesPath}/nixos/common/nix-ld.nix"
|
||||||
|
"${profilesPath}/nixos/common/sharedsetup.nix"
|
||||||
|
"${profilesPath}/home/common/sharedsetup.nix"
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
{ lib, config, ... }:
|
{ lib, config, ... }:
|
||||||
{
|
{
|
||||||
|
options.swarselsystems.server.emacs = lib.mkEnableOption "enable emacs server on server";
|
||||||
config = lib.mkIf config.swarselsystems.server.emacs {
|
config = lib.mkIf config.swarselsystems.server.emacs {
|
||||||
|
|
||||||
networking.firewall.allowedTCPPorts = [ 9812 ];
|
networking.firewall.allowedTCPPorts = [ 9812 ];
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
{ lib, config, ... }:
|
{ lib, config, ... }:
|
||||||
{
|
{
|
||||||
|
options.swarselsystems.server.forgejo = lib.mkEnableOption "enable forgejo on server";
|
||||||
config = lib.mkIf config.swarselsystems.server.forgejo {
|
config = lib.mkIf config.swarselsystems.server.forgejo {
|
||||||
|
|
||||||
networking.firewall.allowedTCPPorts = [ 3000 ];
|
networking.firewall.allowedTCPPorts = [ 3000 ];
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
{ lib, config, ... }:
|
{ lib, config, ... }:
|
||||||
{
|
{
|
||||||
|
options.swarselsystems.server.freshrss = lib.mkEnableOption "enable freshrss on server";
|
||||||
config = lib.mkIf config.swarselsystems.server.freshrss {
|
config = lib.mkIf config.swarselsystems.server.freshrss {
|
||||||
|
|
||||||
users.users.freshrss = {
|
users.users.freshrss = {
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
{ lib, config, ... }:
|
{ lib, config, ... }:
|
||||||
{
|
{
|
||||||
|
options.swarselsystems.server.immich = lib.mkEnableOption "enable immich on server";
|
||||||
config = lib.mkIf config.swarselsystems.server.immich {
|
config = lib.mkIf config.swarselsystems.server.immich {
|
||||||
|
|
||||||
users.users.immich = {
|
users.users.immich = {
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
{ pkgs, lib, config, ... }:
|
{ pkgs, lib, config, ... }:
|
||||||
{
|
{
|
||||||
|
options.swarselsystems.server.jellyfin = lib.mkEnableOption "enable jellyfin on server";
|
||||||
config = lib.mkIf config.swarselsystems.server.jellyfin {
|
config = lib.mkIf config.swarselsystems.server.jellyfin {
|
||||||
users.users.jellyfin = {
|
users.users.jellyfin = {
|
||||||
extraGroups = [ "video" "render" "users" ];
|
extraGroups = [ "video" "render" "users" ];
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
{ pkgs, lib, config, ... }:
|
{ pkgs, lib, config, ... }:
|
||||||
{
|
{
|
||||||
|
options.swarselsystems.server.jenkins = lib.mkEnableOption "enable jenkins on server";
|
||||||
config = lib.mkIf config.swarselsystems.server.jenkins {
|
config = lib.mkIf config.swarselsystems.server.jenkins {
|
||||||
|
|
||||||
services.jenkins = {
|
services.jenkins = {
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
{ pkgs, lib, config, ... }:
|
{ pkgs, lib, config, ... }:
|
||||||
{
|
{
|
||||||
|
options.swarselsystems.server.kavita = lib.mkEnableOption "enable kavita on server";
|
||||||
config = lib.mkIf config.swarselsystems.server.kavita {
|
config = lib.mkIf config.swarselsystems.server.kavita {
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
calibre
|
calibre
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@ let
|
||||||
'';
|
'';
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
|
options.swarselsystems.server.matrix = lib.mkEnableOption "enable matrix on server";
|
||||||
config = lib.mkIf config.swarselsystems.server.matrix {
|
config = lib.mkIf config.swarselsystems.server.matrix {
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
matrix-synapse
|
matrix-synapse
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
{ self, lib, config, ... }:
|
{ self, lib, config, ... }:
|
||||||
{
|
{
|
||||||
|
options.swarselsystems.server.monitoring = lib.mkEnableOption "enable monitoring on server";
|
||||||
config = lib.mkIf config.swarselsystems.server.monitoring {
|
config = lib.mkIf config.swarselsystems.server.monitoring {
|
||||||
|
|
||||||
sops.secrets = {
|
sops.secrets = {
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
{ pkgs, lib, config, ... }:
|
{ pkgs, lib, config, ... }:
|
||||||
{
|
{
|
||||||
|
options.swarselsystems.server.mpd = lib.mkEnableOption "enable mpd on server";
|
||||||
config = lib.mkIf config.swarselsystems.server.mpd {
|
config = lib.mkIf config.swarselsystems.server.mpd {
|
||||||
users = {
|
users = {
|
||||||
groups = {
|
groups = {
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,7 @@ let
|
||||||
secretsDirectory = builtins.toString inputs.nix-secrets;
|
secretsDirectory = builtins.toString inputs.nix-secrets;
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
|
options.swarselsystems.server.navidrome = lib.mkEnableOption "enable navidrome on server";
|
||||||
config = lib.mkIf config.swarselsystems.server.navidrome {
|
config = lib.mkIf config.swarselsystems.server.navidrome {
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
pciutils
|
pciutils
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
{ pkgs, lib, config, ... }:
|
{ pkgs, lib, config, ... }:
|
||||||
{
|
{
|
||||||
|
options.swarselsystems.server.nextcloud = lib.mkEnableOption "enable nextcloud on server";
|
||||||
config = lib.mkIf config.swarselsystems.server.nextcloud {
|
config = lib.mkIf config.swarselsystems.server.nextcloud {
|
||||||
|
|
||||||
sops.secrets.nextcloudadminpass = {
|
sops.secrets.nextcloudadminpass = {
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
{ lib, config, ... }:
|
{ lib, config, ... }:
|
||||||
{
|
{
|
||||||
|
options.swarselsystems.server.paperless = lib.mkEnableOption "enable paperless on server";
|
||||||
config = lib.mkIf config.swarselsystems.server.paperless {
|
config = lib.mkIf config.swarselsystems.server.paperless {
|
||||||
|
|
||||||
users.users.paperless = {
|
users.users.paperless = {
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
{ lib, config, ... }:
|
{ lib, config, ... }:
|
||||||
{
|
{
|
||||||
config = lib.mkIf (config.swarselsystems.server.mpd || config.swarselsystems.server.navidrome) {
|
config = lib.mkIf (config?swarselsystems.server.mpd || config?swarselsystems.server.navidrome) {
|
||||||
|
|
||||||
security.rtkit.enable = true; # this is required for pipewire real-time access
|
security.rtkit.enable = true; # this is required for pipewire real-time access
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
{ lib, config, ... }:
|
{ lib, config, ... }:
|
||||||
{
|
{
|
||||||
|
options.swarselsystems.server.restic = lib.mkEnableOption "enable restic backups on server";
|
||||||
config = lib.mkIf config.swarselsystems.server.restic {
|
config = lib.mkIf config.swarselsystems.server.restic {
|
||||||
|
|
||||||
# TODO
|
# TODO
|
||||||
|
|
|
||||||
|
|
@ -3,26 +3,33 @@ let
|
||||||
inherit (config.swarselsystems) flakePath;
|
inherit (config.swarselsystems) flakePath;
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
environment.shellAliases = lib.recursiveUpdate
|
options.swarselsystems = {
|
||||||
{
|
shellAliases = lib.mkOption {
|
||||||
npswitch = "cd ${flakePath}; git pull; sudo nixos-rebuild --flake .#$(hostname) switch; cd -;";
|
type = lib.types.attrsOf lib.types.str;
|
||||||
nswitch = "sudo nixos-rebuild --flake ${flakePath}#$(hostname) switch;";
|
default = { };
|
||||||
npiswitch = "cd ${flakePath}; git pull; sudo nixos-rebuild --flake .#$(hostname) switch --impure; cd -;";
|
};
|
||||||
nipswitch = "cd ${flakePath}; git pull; sudo nixos-rebuild --flake .#$(hostname) switch --impure; cd -;";
|
};
|
||||||
niswitch = "sudo nixos-rebuild --flake ${flakePath}#$(hostname) switch --impure;";
|
config = {
|
||||||
}
|
environment.shellAliases = lib.recursiveUpdate
|
||||||
config.swarselsystems.shellAliases;
|
{
|
||||||
|
npswitch = "cd ${flakePath}; git pull; sudo nixos-rebuild --flake .#$(hostname) switch; cd -;";
|
||||||
nixpkgs.config.permittedInsecurePackages = [
|
nswitch = "sudo nixos-rebuild --flake ${flakePath}#$(hostname) switch;";
|
||||||
# matrix
|
npiswitch = "cd ${flakePath}; git pull; sudo nixos-rebuild --flake .#$(hostname) switch --impure; cd -;";
|
||||||
"olm-3.2.16"
|
nipswitch = "cd ${flakePath}; git pull; sudo nixos-rebuild --flake .#$(hostname) switch --impure; cd -;";
|
||||||
# sonarr
|
niswitch = "sudo nixos-rebuild --flake ${flakePath}#$(hostname) switch --impure;";
|
||||||
"aspnetcore-runtime-wrapped-6.0.36"
|
}
|
||||||
"aspnetcore-runtime-6.0.36"
|
config.swarselsystems.shellAliases;
|
||||||
"dotnet-sdk-wrapped-6.0.428"
|
|
||||||
"dotnet-sdk-6.0.428"
|
|
||||||
#
|
|
||||||
"SDL_ttf-2.0.11"
|
|
||||||
];
|
|
||||||
|
|
||||||
|
nixpkgs.config.permittedInsecurePackages = [
|
||||||
|
# matrix
|
||||||
|
"olm-3.2.16"
|
||||||
|
# sonarr
|
||||||
|
"aspnetcore-runtime-wrapped-6.0.36"
|
||||||
|
"aspnetcore-runtime-6.0.36"
|
||||||
|
"dotnet-sdk-wrapped-6.0.428"
|
||||||
|
"dotnet-sdk-6.0.428"
|
||||||
|
#
|
||||||
|
"SDL_ttf-2.0.11"
|
||||||
|
];
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
{ lib, config, ... }:
|
{ lib, config, ... }:
|
||||||
{
|
{
|
||||||
|
options.swarselsystems.server.spotifyd = lib.mkEnableOption "enable spotifyd on server";
|
||||||
config = lib.mkIf config.swarselsystems.server.spotifyd {
|
config = lib.mkIf config.swarselsystems.server.spotifyd {
|
||||||
users.groups.spotifyd = {
|
users.groups.spotifyd = {
|
||||||
gid = 65136;
|
gid = 65136;
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@ let
|
||||||
workHostName = lib.swarselsystems.getSecret "${secretsDirectory}/work/worklaptop-hostname";
|
workHostName = lib.swarselsystems.getSecret "${secretsDirectory}/work/worklaptop-hostname";
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
|
options.swarselsystems.server.syncthing = lib.mkEnableOption "enable syncthing on server";
|
||||||
config = lib.mkIf config.swarselsystems.server.syncthing {
|
config = lib.mkIf config.swarselsystems.server.syncthing {
|
||||||
|
|
||||||
users.users.syncthing = {
|
users.users.syncthing = {
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
{ pkgs, lib, config, ... }:
|
{ pkgs, lib, config, ... }:
|
||||||
{
|
{
|
||||||
|
options.swarselsystems.server.transmission = lib.mkEnableOption "enable transmission and friends on server";
|
||||||
config = lib.mkIf config.swarselsystems.server.transmission {
|
config = lib.mkIf config.swarselsystems.server.transmission {
|
||||||
|
|
||||||
# this user/group section is probably unneeded
|
# this user/group section is probably unneeded
|
||||||
|
|
|
||||||
|
|
@ -55,15 +55,6 @@ in
|
||||||
isLaptop = true;
|
isLaptop = true;
|
||||||
isNixos = true;
|
isNixos = true;
|
||||||
cpuCount = 16;
|
cpuCount = 16;
|
||||||
startup = [
|
|
||||||
{ command = "nextcloud --background"; }
|
|
||||||
{ command = "vesktop --start-minimized --enable-speech-dispatcher --ozone-platform-hint=auto --enable-features=WaylandWindowDecorations --enable-wayland-ime"; }
|
|
||||||
{ command = "element-desktop --hidden --enable-features=UseOzonePlatform --ozone-platform=wayland --disable-gpu-driver-bug-workarounds"; }
|
|
||||||
{ command = "ANKI_WAYLAND=1 anki"; }
|
|
||||||
{ command = "OBSIDIAN_USE_WAYLAND=1 obsidian"; }
|
|
||||||
{ command = "nm-applet"; }
|
|
||||||
{ command = "feishin"; }
|
|
||||||
];
|
|
||||||
}
|
}
|
||||||
sharedOptions;
|
sharedOptions;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue