mirror of
https://github.com/Theaninova/TheaninovOS.git
synced 2026-01-21 17:12:39 +00:00
Compare commits
10 Commits
3bf3bf5fa5
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
|
86e0491a97
|
|||
|
7a30d561c0
|
|||
|
e3e1d93b99
|
|||
|
648380f91b
|
|||
|
6cb301eb81
|
|||
|
63a657fc84
|
|||
|
a8528b7fcd
|
|||
|
0b0b568916
|
|||
|
02103e2585
|
|||
|
de9477ad84
|
137
flake.lock
generated
137
flake.lock
generated
@@ -24,11 +24,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1762980239,
|
"lastModified": 1765835352,
|
||||||
"narHash": "sha256-8oNVE8TrD19ulHinjaqONf9QWCKK+w4url56cdStMpM=",
|
"narHash": "sha256-XswHlK/Qtjasvhd1nOa1e8MgZ8GS//jBoTqWtrS1Giw=",
|
||||||
"owner": "hercules-ci",
|
"owner": "hercules-ci",
|
||||||
"repo": "flake-parts",
|
"repo": "flake-parts",
|
||||||
"rev": "52a2caecc898d0b46b2b905f058ccc5081f842da",
|
"rev": "a34fae9c08a15ad73f295041fec82323541400a9",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -37,24 +37,6 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"flake-utils": {
|
|
||||||
"inputs": {
|
|
||||||
"systems": "systems_2"
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1731533236,
|
|
||||||
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
|
|
||||||
"owner": "numtide",
|
|
||||||
"repo": "flake-utils",
|
|
||||||
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "numtide",
|
|
||||||
"repo": "flake-utils",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"home-manager": {
|
"home-manager": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
@@ -62,11 +44,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1763416652,
|
"lastModified": 1767556355,
|
||||||
"narHash": "sha256-8EBEEvtzQ11LCxpQHMNEBQAGtQiCu/pqP9zSovDSbNM=",
|
"narHash": "sha256-RDTUBDQBi9D4eD9iJQWtUDN/13MDLX+KmE+TwwNUp2s=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"rev": "ea164b7c9ccdc2321379c2ff78fd4317b4c41312",
|
"rev": "f894bc4ffde179d178d8deb374fcf9855d1a82b7",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -75,34 +57,6 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"ixx": {
|
|
||||||
"inputs": {
|
|
||||||
"flake-utils": [
|
|
||||||
"nixvim",
|
|
||||||
"nuschtosSearch",
|
|
||||||
"flake-utils"
|
|
||||||
],
|
|
||||||
"nixpkgs": [
|
|
||||||
"nixvim",
|
|
||||||
"nuschtosSearch",
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1754860581,
|
|
||||||
"narHash": "sha256-EM0IE63OHxXCOpDHXaTyHIOk2cNvMCGPqLt/IdtVxgk=",
|
|
||||||
"owner": "NuschtOS",
|
|
||||||
"repo": "ixx",
|
|
||||||
"rev": "babfe85a876162c4acc9ab6fb4483df88fa1f281",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "NuschtOS",
|
|
||||||
"ref": "v0.1.1",
|
|
||||||
"repo": "ixx",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"matugen": {
|
"matugen": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
@@ -137,11 +91,11 @@
|
|||||||
"xwayland-satellite-unstable": "xwayland-satellite-unstable"
|
"xwayland-satellite-unstable": "xwayland-satellite-unstable"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1763446461,
|
"lastModified": 1767544157,
|
||||||
"narHash": "sha256-/matsRMDk8RgftY9BFva7c5fcRv9miFeDUl+92j3fns=",
|
"narHash": "sha256-DVTMOUd4uHkDcZXWAqOS+Pa0M9a27G1Ya3B7SFG6BQs=",
|
||||||
"owner": "sodiboo",
|
"owner": "sodiboo",
|
||||||
"repo": "niri-flake",
|
"repo": "niri-flake",
|
||||||
"rev": "f309d15295085e7863cb8a727354d4c638541ca0",
|
"rev": "d0e2c4bebf9d0b879410736f7abce628976bfb92",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -170,11 +124,11 @@
|
|||||||
"niri-unstable": {
|
"niri-unstable": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1763370666,
|
"lastModified": 1767530622,
|
||||||
"narHash": "sha256-Y4IYBfaTxffpm6UIbhY1Xfpij+aVh/C+tF9Tdg6nYig=",
|
"narHash": "sha256-ywnL1cc0A6fni7m859ImiBYA8DlXXJ+5OXIlcBqJ2B0=",
|
||||||
"owner": "YaLTeR",
|
"owner": "YaLTeR",
|
||||||
"repo": "niri",
|
"repo": "niri",
|
||||||
"rev": "7f19d268b3563e3683eaca02d9665fed66ce862e",
|
"rev": "54c2e2ab476629d17fdba861895f58e7cdac32ab",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -201,11 +155,11 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1763283776,
|
"lastModified": 1767379071,
|
||||||
"narHash": "sha256-Y7TDFPK4GlqrKrivOcsHG8xSGqQx3A6c+i7novT85Uk=",
|
"narHash": "sha256-EgE0pxsrW9jp9YFMkHL9JMXxcqi/OoumPJYwf+Okucw=",
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "50a96edd8d0db6cc8db57dab6bb6d6ee1f3dc49a",
|
"rev": "fb7944c166a3b630f177938e478f0378e64ce108",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -217,16 +171,16 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs-stable": {
|
"nixpkgs-stable": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1763334038,
|
"lastModified": 1767480499,
|
||||||
"narHash": "sha256-LBVOyaH6NFzQ3X/c6vfMZ9k4SV2ofhpxeL9YnhHNJQQ=",
|
"narHash": "sha256-8IQQUorUGiSmFaPnLSo2+T+rjHtiNWc+OAzeHck7N48=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "4c8cdd5b1a630e8f72c9dd9bf582b1afb3127d2c",
|
"rev": "30a3c519afcf3f99e2c6df3b359aec5692054d92",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"ref": "nixos-25.05",
|
"ref": "nixos-25.11",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
@@ -237,15 +191,14 @@
|
|||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
],
|
],
|
||||||
"nuschtosSearch": "nuschtosSearch",
|
"systems": "systems_2"
|
||||||
"systems": "systems_3"
|
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1763393971,
|
"lastModified": 1767553127,
|
||||||
"narHash": "sha256-FhgZD8pk3VE2SL0g4nCYKF0L6IO3uL110tfrBaZkdG0=",
|
"narHash": "sha256-H6JzPMmvBYlGjIBgrHIS2dFXh05h4bwMJTZTn3IGVtc=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "nixvim",
|
"repo": "nixvim",
|
||||||
"rev": "7a30e6cf259d8db84aefc626058c074bd995d482",
|
"rev": "3d7bcda3d163c1c38e231f81e0e90155b7b9e9bf",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -254,29 +207,6 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nuschtosSearch": {
|
|
||||||
"inputs": {
|
|
||||||
"flake-utils": "flake-utils",
|
|
||||||
"ixx": "ixx",
|
|
||||||
"nixpkgs": [
|
|
||||||
"nixvim",
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1761730856,
|
|
||||||
"narHash": "sha256-t1i5p/vSWwueZSC0Z2BImxx3BjoUDNKyC2mk24krcMY=",
|
|
||||||
"owner": "NuschtOS",
|
|
||||||
"repo": "search",
|
|
||||||
"rev": "e29de6db0cb3182e9aee75a3b1fd1919d995d85b",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "NuschtOS",
|
|
||||||
"repo": "search",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"root": {
|
"root": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"home-manager": "home-manager",
|
"home-manager": "home-manager",
|
||||||
@@ -334,21 +264,6 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"systems_3": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1681028828,
|
|
||||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
|
||||||
"owner": "nix-systems",
|
|
||||||
"repo": "default",
|
|
||||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nix-systems",
|
|
||||||
"repo": "default",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"tidal-src": {
|
"tidal-src": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
@@ -444,11 +359,11 @@
|
|||||||
"xwayland-satellite-unstable": {
|
"xwayland-satellite-unstable": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1762747449,
|
"lastModified": 1766429945,
|
||||||
"narHash": "sha256-Z1TKiux8K09a93w4PFDFsj8HFugXNy3iCC3Z8MpR5Rk=",
|
"narHash": "sha256-9Kv4gWagx/u4RfZJzBMAoagW9ava5waxd+XoTkzqF7E=",
|
||||||
"owner": "Supreeeme",
|
"owner": "Supreeeme",
|
||||||
"repo": "xwayland-satellite",
|
"repo": "xwayland-satellite",
|
||||||
"rev": "6338574bc5c036487486acde264f38f39ea15fad",
|
"rev": "0dde7ca1d3a8e8c5082533d76084e2aa02bef70e",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|||||||
@@ -3,6 +3,8 @@
|
|||||||
imports = [ ./hardware-configuration.nix ];
|
imports = [ ./hardware-configuration.nix ];
|
||||||
|
|
||||||
boot = {
|
boot = {
|
||||||
|
loader.timeout = 0;
|
||||||
|
|
||||||
quiet.enable = true;
|
quiet.enable = true;
|
||||||
|
|
||||||
kernelPackages = pkgs.linuxPackages_xanmod_stable;
|
kernelPackages = pkgs.linuxPackages_xanmod_stable;
|
||||||
@@ -34,16 +36,19 @@
|
|||||||
|
|
||||||
shell.components = {
|
shell.components = {
|
||||||
firefox-pip.enable = true;
|
firefox-pip.enable = true;
|
||||||
# grimblast.enable = true;
|
grimblast.enable = true;
|
||||||
gnome-keyring.enable = true;
|
gnome-keyring.enable = true;
|
||||||
# hyprpicker.enable = true;
|
hyprpicker.enable = true;
|
||||||
kde-connect.enable = true;
|
kde-connect.enable = true;
|
||||||
kitty.enable = true;
|
kitty.enable = true;
|
||||||
swaync.enable = true;
|
swaync.enable = true;
|
||||||
walker.enable = true;
|
walker.enable = true;
|
||||||
waybar.enable = true;
|
waybar.enable = true;
|
||||||
};
|
};
|
||||||
desktops.niri.enable = true;
|
desktops.hyprland = {
|
||||||
|
enable = true;
|
||||||
|
scrolling = true;
|
||||||
|
};
|
||||||
locale.preset.theaninova.enable = true;
|
locale.preset.theaninova.enable = true;
|
||||||
|
|
||||||
networking.hosts = {
|
networking.hosts = {
|
||||||
@@ -193,6 +198,14 @@
|
|||||||
25565
|
25565
|
||||||
50765
|
50765
|
||||||
];
|
];
|
||||||
|
/*
|
||||||
|
allowedUDPPortRanges = [
|
||||||
|
{
|
||||||
|
from = 1;
|
||||||
|
to = 65535;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
*/
|
||||||
};
|
};
|
||||||
|
|
||||||
networkmanager = {
|
networkmanager = {
|
||||||
|
|||||||
@@ -8,6 +8,8 @@
|
|||||||
imports = [ ./hardware-configuration.nix ];
|
imports = [ ./hardware-configuration.nix ];
|
||||||
|
|
||||||
boot = {
|
boot = {
|
||||||
|
loader.timeout = 0;
|
||||||
|
|
||||||
quiet.enable = true;
|
quiet.enable = true;
|
||||||
|
|
||||||
kernelParams = [ "module_blacklist=i915" ];
|
kernelParams = [ "module_blacklist=i915" ];
|
||||||
@@ -71,6 +73,7 @@
|
|||||||
hardware = {
|
hardware = {
|
||||||
q3279vwf.enable = true;
|
q3279vwf.enable = true;
|
||||||
audio.preset.pipewire.enable = true;
|
audio.preset.pipewire.enable = true;
|
||||||
|
cc1.enable = true;
|
||||||
|
|
||||||
nvidia.preset.proprietary.enable = true;
|
nvidia.preset.proprietary.enable = true;
|
||||||
|
|
||||||
@@ -109,7 +112,6 @@
|
|||||||
config.cudaSupport = true;
|
config.cudaSupport = true;
|
||||||
config.rocmSupport = false;
|
config.rocmSupport = false;
|
||||||
};
|
};
|
||||||
acceleration = "cuda";
|
|
||||||
};
|
};
|
||||||
services.open-webui = {
|
services.open-webui = {
|
||||||
enable = false;
|
enable = false;
|
||||||
@@ -179,6 +181,15 @@
|
|||||||
];
|
];
|
||||||
|
|
||||||
networking = {
|
networking = {
|
||||||
|
firewall = {
|
||||||
|
allowedUDPPortRanges = [
|
||||||
|
{
|
||||||
|
from = 1;
|
||||||
|
to = 65535;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
networkmanager = {
|
networkmanager = {
|
||||||
enable = true;
|
enable = true;
|
||||||
plugins = with pkgs; [ networkmanager-openconnect ];
|
plugins = with pkgs; [ networkmanager-openconnect ];
|
||||||
|
|||||||
@@ -24,10 +24,10 @@
|
|||||||
options = [ "fmask=0077" "dmask=0077" ];
|
options = [ "fmask=0077" "dmask=0077" ];
|
||||||
};
|
};
|
||||||
|
|
||||||
fileSystems."/home" =
|
/*fileSystems."/home2" =
|
||||||
{ device = "/dev/disk/by-uuid/fa017457-fef3-4fac-9348-d37d2cd98656";
|
{ device = "/dev/disk/by-uuid/fa017457-fef3-4fac-9348-d37d2cd98656";
|
||||||
fsType = "xfs";
|
fsType = "xfs";
|
||||||
};
|
};*/
|
||||||
|
|
||||||
swapDevices = [ ];
|
swapDevices = [ ];
|
||||||
|
|
||||||
|
|||||||
@@ -17,6 +17,8 @@
|
|||||||
gamma-launcher
|
gamma-launcher
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
wayland.windowManager.hyprland.settings.input.kb_options = [ "lv3:caps_switch" ];
|
||||||
|
services.nextcloud-client.enable = true;
|
||||||
systemd.user.services = {
|
systemd.user.services = {
|
||||||
blueman-applet = {
|
blueman-applet = {
|
||||||
Unit = {
|
Unit = {
|
||||||
|
|||||||
@@ -13,13 +13,17 @@ let
|
|||||||
hyprctl clients -j | jq -r "map(select(.workspace.id == $WORKSPACE) | select(.class == \"$1\") | .address | select(. != $WINDOW)) | .[0]"
|
hyprctl clients -j | jq -r "map(select(.workspace.id == $WORKSPACE) | select(.class == \"$1\") | .address | select(. != $WINDOW)) | .[0]"
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
cfg = osConfig.desktops.hyprland;
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
config = lib.mkIf osConfig.desktops.hyprland.enable {
|
config = lib.mkIf cfg.enable {
|
||||||
wayland.windowManager.hyprland = {
|
wayland.windowManager.hyprland = {
|
||||||
enable = true;
|
enable = true;
|
||||||
settings = {
|
settings = {
|
||||||
general.allow_tearing = true;
|
general = {
|
||||||
|
allow_tearing = true;
|
||||||
|
layout = lib.mkIf cfg.scrolling "scrolling";
|
||||||
|
};
|
||||||
input = {
|
input = {
|
||||||
accel_profile = "flat";
|
accel_profile = "flat";
|
||||||
kb_layout = osConfig.services.xserver.xkb.layout;
|
kb_layout = osConfig.services.xserver.xkb.layout;
|
||||||
@@ -32,23 +36,43 @@ in
|
|||||||
"SUPER,D,fullscreen,1"
|
"SUPER,D,fullscreen,1"
|
||||||
"SUPER,V,fullscreen,0"
|
"SUPER,V,fullscreen,0"
|
||||||
|
|
||||||
"SUPER_SHIFT,up,movewindow,u"
|
|
||||||
"SUPER_SHIFT,down,movewindow,d"
|
|
||||||
"SUPER_SHIFT,left,movewindow,l"
|
|
||||||
"SUPER_SHIFT,right,movewindow,r"
|
|
||||||
|
|
||||||
"SUPER,up,movefocus,u"
|
|
||||||
"SUPER,down,movefocus,d"
|
|
||||||
"SUPER,left,movefocus,l"
|
|
||||||
"SUPER,right,movefocus,r"
|
|
||||||
|
|
||||||
"SUPER,f,workspace,r-1"
|
"SUPER,f,workspace,r-1"
|
||||||
"SUPER,h,workspace,r+1"
|
"SUPER,h,workspace,r+1"
|
||||||
"SUPER_SHIFT,f,movetoworkspace,r-1"
|
"SUPER_SHIFT,f,movetoworkspace,r-1"
|
||||||
"SUPER_SHIFT,h,movetoworkspace,r+1"
|
"SUPER_SHIFT,h,movetoworkspace,r+1"
|
||||||
"SUPER,mouse_up,workspace,r+1"
|
]
|
||||||
"SUPER,mouse_down,workspace,r-1"
|
++ (
|
||||||
];
|
if cfg.scrolling then
|
||||||
|
[
|
||||||
|
"SUPER,up,layoutmsg,focus u"
|
||||||
|
"SUPER,down,layoutmsg,focus d"
|
||||||
|
"SUPER,right,layoutmsg,focus r"
|
||||||
|
"SUPER,left,layoutmsg,focus l"
|
||||||
|
|
||||||
|
"SUPER_SHIFT,up,layoutmsg,movewindowto u"
|
||||||
|
"SUPER_SHIFT,down,layoutmsg,movewindowto d"
|
||||||
|
"SUPER_SHIFT,left,layoutmsg,swapcol l"
|
||||||
|
"SUPER_SHIFT,right,layoutmsg,swapcol r"
|
||||||
|
|
||||||
|
"SUPER,mouse_up,layoutmsg,focus r"
|
||||||
|
"SUPER,mouse_down,layoutmsg,focus l"
|
||||||
|
]
|
||||||
|
else
|
||||||
|
[
|
||||||
|
"SUPER_SHIFT,up,movewindow,u"
|
||||||
|
"SUPER_SHIFT,down,movewindow,d"
|
||||||
|
"SUPER_SHIFT,left,movewindow,l"
|
||||||
|
"SUPER_SHIFT,right,movewindow,r"
|
||||||
|
|
||||||
|
"SUPER,up,movefocus,u"
|
||||||
|
"SUPER,down,movefocus,d"
|
||||||
|
"SUPER,left,movefocus,l"
|
||||||
|
"SUPER,right,movefocus,r"
|
||||||
|
|
||||||
|
"SUPER,mouse_up,workspace,r+1"
|
||||||
|
"SUPER,mouse_down,workspace,r-1"
|
||||||
|
]
|
||||||
|
);
|
||||||
bindm = [
|
bindm = [
|
||||||
"SUPER,mouse:272,movewindow"
|
"SUPER,mouse:272,movewindow"
|
||||||
"SUPER,mouse:273,resizewindow"
|
"SUPER,mouse:273,resizewindow"
|
||||||
|
|||||||
@@ -33,9 +33,8 @@
|
|||||||
prismlauncher
|
prismlauncher
|
||||||
|
|
||||||
# chat apps
|
# chat apps
|
||||||
vesktop
|
# vesktop
|
||||||
discord
|
discord
|
||||||
element-desktop
|
|
||||||
thunderbird
|
thunderbird
|
||||||
signal-desktop
|
signal-desktop
|
||||||
# cinny-desktop
|
# cinny-desktop
|
||||||
@@ -47,8 +46,8 @@
|
|||||||
# creative
|
# creative
|
||||||
gimp3
|
gimp3
|
||||||
inkscape-with-extensions
|
inkscape-with-extensions
|
||||||
scribus
|
# scribus
|
||||||
# audacity
|
audacity
|
||||||
pinta
|
pinta
|
||||||
losslesscut-bin
|
losslesscut-bin
|
||||||
shotcut
|
shotcut
|
||||||
|
|||||||
167
modules/home-manager/theme/nvim/syntax.nix
Normal file
167
modules/home-manager/theme/nvim/syntax.nix
Normal file
@@ -0,0 +1,167 @@
|
|||||||
|
# Somewhat adapted from https://github.com/catppuccin/nvim/blob/main/lua/catppuccin/groups/syntax.lua
|
||||||
|
{ C, O }:
|
||||||
|
{
|
||||||
|
Comment.fg = C.outline; # just comments
|
||||||
|
SpecialComment.link = C.keywords; # special things inside a comment
|
||||||
|
Constant.fg = C.constants; # (preferred) any constant
|
||||||
|
String.fg = C.strings; # a string constant: "this is a string"
|
||||||
|
Character.fg = C.keywords; # a character constant: 'c', '\n'
|
||||||
|
Number.fg = C.numbers; # a number constant: 234, 0xff
|
||||||
|
Float.fg = C.numbers; # a floating point constant: 2.3e10
|
||||||
|
Boolean.fg = C.keywords; # a boolean constant: TRUE, false
|
||||||
|
Identifier.fg = C.on_surface; # (preferred) any variable name
|
||||||
|
Function.fg = C.functions; # function name (also: methods for classes)
|
||||||
|
Statement.fg = C.mauve; # (preferred) any statement
|
||||||
|
Conditional.fg = C.keywords; # if, then, else, endif, switch, etc.
|
||||||
|
Repeat.fg = C.keywords; # for, do, while, etc.
|
||||||
|
Label.fg = C.keywords; # case, default, etc.
|
||||||
|
Operator.fg = C.on_surface; # "sizeof", "+", "*", etc.
|
||||||
|
Keyword.fg = C.keywords; # any other keyword
|
||||||
|
Exception.fg = C.keywords; # try, catch, throw
|
||||||
|
|
||||||
|
PreProc.link = C.structures; # (preferred) generic Preprocessor
|
||||||
|
Include.fg = C.keywords; # preprocessor #include
|
||||||
|
Define.fg = C.keywords; # preprocessor #define
|
||||||
|
Macro.fg = C.keywords; # same as Define
|
||||||
|
PreCondit.fg = C.keywords; # preprocessor #if, #else, #endif, etc.
|
||||||
|
|
||||||
|
StorageClass.fg = C.keywords; # static, register, volatile, etc.
|
||||||
|
Structure.fg = C.structures; # struct, union, enum, etc.
|
||||||
|
Special.fg = C.keywords; # (preferred) any special symbol
|
||||||
|
Type.fg = C.types; # (preferred) int, long, char, etc.
|
||||||
|
Typedef.link = "Type"; # A typedef
|
||||||
|
SpecialChar.link = "Special"; # special character in a constant
|
||||||
|
Tag = C.structures; # you can use CTRL-] on this
|
||||||
|
Delimiter.fg = C.on_surface; # character that needs attention
|
||||||
|
Debug.link = "Special"; # debugging statements
|
||||||
|
|
||||||
|
Underlined.style = [ "underline" ]; # (preferred) text that stands out, HTML links
|
||||||
|
Bold.style = [ "bold" ];
|
||||||
|
Italic.style = [ "italic" ];
|
||||||
|
# ("Ignore", below, may be invisible...)
|
||||||
|
# Ignore = { }; # (preferred) left blank, hidden |hl-Ignore|
|
||||||
|
|
||||||
|
Error = {
|
||||||
|
bg = C.danger_container; # (preferred) any erroneous construct
|
||||||
|
fg = C.on_danger_container;
|
||||||
|
};
|
||||||
|
Todo = {
|
||||||
|
bg = C.yellow_container;
|
||||||
|
fg = C.on_yellow_container;
|
||||||
|
}; # (preferred) anything that needs extra attention; mostly the keywords TODO FIXME and XXX
|
||||||
|
qfLineNr.fg = C.yellow;
|
||||||
|
qfFileName.fg = C.blue;
|
||||||
|
htmlH1 = {
|
||||||
|
fg = C.pink;
|
||||||
|
style = [ "bold" ];
|
||||||
|
};
|
||||||
|
htmlH2 = {
|
||||||
|
fg = C.blue;
|
||||||
|
style = [ "bold" ];
|
||||||
|
};
|
||||||
|
# mkdHeading = { fg = C.peach; style = [ "bold" ]; };
|
||||||
|
# mkdCode = { bg = C.terminal_black; fg = C.text; };
|
||||||
|
mkdCodeDelimiter = {
|
||||||
|
bg = C.base;
|
||||||
|
fg = C.text;
|
||||||
|
};
|
||||||
|
mkdCodeStart = {
|
||||||
|
fg = C.flamingo;
|
||||||
|
style = [ "bold" ];
|
||||||
|
};
|
||||||
|
mkdCodeEnd = {
|
||||||
|
fg = C.flamingo;
|
||||||
|
style = [ "bold" ];
|
||||||
|
};
|
||||||
|
# mkdLink = { fg = C.blue; style = [ "underline" ]; };
|
||||||
|
|
||||||
|
# debugging
|
||||||
|
debugPC = {
|
||||||
|
bg = if O.transparent_background then C.none else C.crust;
|
||||||
|
}; # used for highlighting the current line in terminal-debug
|
||||||
|
debugBreakpoint = {
|
||||||
|
bg = C.base;
|
||||||
|
fg = C.overlay0;
|
||||||
|
}; # used for breakpoint colors in terminal-debug
|
||||||
|
# illuminate
|
||||||
|
illuminatedWord = {
|
||||||
|
bg = C.surface1;
|
||||||
|
};
|
||||||
|
illuminatedCurWord = {
|
||||||
|
bg = C.surface1;
|
||||||
|
};
|
||||||
|
# diff
|
||||||
|
Added.fg = C.green;
|
||||||
|
Changed.fg = C.blue;
|
||||||
|
diffAdded.fg = C.green;
|
||||||
|
diffRemoved.fg = C.red;
|
||||||
|
diffChanged.fg = C.blue;
|
||||||
|
diffOldFile.fg = C.yellow;
|
||||||
|
diffNewFile.fg = C.peach;
|
||||||
|
diffFile.fg = C.blue;
|
||||||
|
diffLine.fg = C.overlay0;
|
||||||
|
diffIndexLine.fg = C.teal;
|
||||||
|
DiffAdd = {
|
||||||
|
bg = U.darken C.green 0.18 C.base;
|
||||||
|
}; # diff mode: Added line |diff.txt|
|
||||||
|
DiffChange = {
|
||||||
|
bg = U.darken C.blue 0.07 C.base;
|
||||||
|
}; # diff mode: Changed line |diff.txt|
|
||||||
|
DiffDelete = {
|
||||||
|
bg = U.darken C.red 0.18 C.base;
|
||||||
|
}; # diff mode: Deleted line |diff.txt|
|
||||||
|
DiffText = {
|
||||||
|
bg = U.darken C.blue 0.30 C.base;
|
||||||
|
}; # diff mode: Changed text within a changed line |diff.txt|
|
||||||
|
# NeoVim
|
||||||
|
healthError.fg = C.red;
|
||||||
|
healthSuccess.fg = C.teal;
|
||||||
|
healthWarning.fg = C.yellow;
|
||||||
|
# misc
|
||||||
|
|
||||||
|
# glyphs
|
||||||
|
GlyphPalette1.fg = C.red;
|
||||||
|
GlyphPalette2.fg = C.teal;
|
||||||
|
GlyphPalette3.fg = C.yellow;
|
||||||
|
GlyphPalette4.fg = C.blue;
|
||||||
|
GlyphPalette6.fg = C.teal;
|
||||||
|
GlyphPalette7.fg = C.text;
|
||||||
|
GlyphPalette9.fg = C.red;
|
||||||
|
|
||||||
|
# rainbow
|
||||||
|
rainbow1.fg = C.red;
|
||||||
|
rainbow2.fg = C.peach;
|
||||||
|
rainbow3.fg = C.yellow;
|
||||||
|
rainbow4.fg = C.green;
|
||||||
|
rainbow5.fg = C.sapphire;
|
||||||
|
rainbow6.fg = C.lavender;
|
||||||
|
|
||||||
|
# csv
|
||||||
|
csvCol0.fg = C.red;
|
||||||
|
csvCol1.fg = C.peach;
|
||||||
|
csvCol2.fg = C.yellow;
|
||||||
|
csvCol3.fg = C.green;
|
||||||
|
csvCol4.fg = C.sky;
|
||||||
|
csvCol5.fg = C.blue;
|
||||||
|
csvCol6.fg = C.lavender;
|
||||||
|
csvCol7.fg = C.mauve;
|
||||||
|
csvCol8.fg = C.pink;
|
||||||
|
|
||||||
|
# markdown
|
||||||
|
markdownHeadingDelimiter = {
|
||||||
|
fg = C.peach;
|
||||||
|
style = [ "bold" ];
|
||||||
|
};
|
||||||
|
markdownCode.fg = C.flamingo;
|
||||||
|
markdownCodeBlock.fg = C.flamingo;
|
||||||
|
markdownLinkText = {
|
||||||
|
fg = C.blue;
|
||||||
|
style = [ "underline" ];
|
||||||
|
};
|
||||||
|
markdownH1.link = "rainbow1";
|
||||||
|
markdownH2.link = "rainbow2";
|
||||||
|
markdownH3.link = "rainbow3";
|
||||||
|
markdownH4.link = "rainbow4";
|
||||||
|
markdownH5.link = "rainbow5";
|
||||||
|
markdownH6.link = "rainbow6";
|
||||||
|
}
|
||||||
415
modules/home-manager/theme/nvim/treesitter.nix
Normal file
415
modules/home-manager/theme/nvim/treesitter.nix
Normal file
@@ -0,0 +1,415 @@
|
|||||||
|
{ C, O }:
|
||||||
|
let
|
||||||
|
self = {
|
||||||
|
# Reference: https://github.com/nvim-treesitter/nvim-treesitter/blob/master/CONTRIBUTING.md
|
||||||
|
# Identifiers
|
||||||
|
"@variable".fg = C.on_surface; # Any variable name that does not have another highlight.
|
||||||
|
"@variable.builtin".fg = C.keywords; # Variable names that are defined by the languages, like this or self.
|
||||||
|
"@variable.parameter".fg = C.on_surface; # For parameters of a function.
|
||||||
|
"@variable.member".fg = C.properties; # For fields.
|
||||||
|
|
||||||
|
"@constant".fg = C.constants; # For constants
|
||||||
|
"@constant.builtin".fg = C.keywords; # For constant that are built in the language: nil in Lua.
|
||||||
|
"@constant.macro".link = "Macro"; # For constants that are defined by macros: NULL in C.
|
||||||
|
|
||||||
|
"@module".fg = C.structures; # For identifiers referring to modules and namespaces.
|
||||||
|
"@label".link = "Label"; # For labels: label: in C and :label: in Lua.
|
||||||
|
|
||||||
|
# Literals
|
||||||
|
"@string".link = "String"; # For strings.
|
||||||
|
/*
|
||||||
|
"@string.documentation" = {
|
||||||
|
fg = C.teal;
|
||||||
|
style = O.styles.strings or { };
|
||||||
|
}; # For strings documenting code (e.g. Python docstrings).
|
||||||
|
"@string.regexp" = {
|
||||||
|
fg = C.pink;
|
||||||
|
style = O.styles.strings or { };
|
||||||
|
}; # For regexes.
|
||||||
|
"@string.escape" = {
|
||||||
|
fg = C.pink;
|
||||||
|
style = O.styles.strings or { };
|
||||||
|
}; # For escape characters within a string.
|
||||||
|
"@string.special".link = "Special"; # other special strings (e.g. dates)
|
||||||
|
"@string.special.path".link = "Special"; # filenames
|
||||||
|
"@string.special.symbol".fg = C.flamingo; # symbols or atoms
|
||||||
|
"@string.special.url" = {
|
||||||
|
fg = C.blue;
|
||||||
|
style = [
|
||||||
|
"italic"
|
||||||
|
"underline"
|
||||||
|
];
|
||||||
|
}; # urls, links and emails
|
||||||
|
"@punctuation.delimiter.regex" = {
|
||||||
|
link = "@string.regexp";
|
||||||
|
};
|
||||||
|
*/
|
||||||
|
|
||||||
|
"@character".link = "Character"; # character literals
|
||||||
|
"@character.special".link = "SpecialChar"; # special characters (e.g. wildcards)
|
||||||
|
|
||||||
|
"@boolean".link = "Boolean"; # For booleans.
|
||||||
|
"@number".link = "Number"; # For all numbers
|
||||||
|
"@number.float".link = "Float"; # For floats.
|
||||||
|
|
||||||
|
# Types
|
||||||
|
"@type".link = "Type"; # For types.
|
||||||
|
"@type.builtin".fg = C.keywords; # For builtin types.
|
||||||
|
"@type.definition".link = "Type"; # type definitions (e.g. `typedef` in C)
|
||||||
|
|
||||||
|
"@attribute".fg = C.properties; # attribute annotations (e.g. Python decorators)
|
||||||
|
"@property".fg = C.properties; # fields, like accessing `bar` property on `foo.bar`. Overriden later for data languages and CSS.
|
||||||
|
|
||||||
|
# Functions
|
||||||
|
"@function".link = "Function"; # For function (calls and definitions).
|
||||||
|
"@function.builtin" = {
|
||||||
|
fg = C.functions;
|
||||||
|
style = [ "bold" ];
|
||||||
|
}; # For builtin functions: table.insert in Lua.
|
||||||
|
"@function.call".link = "Function"; # function calls
|
||||||
|
"@function.macro".link = "Macro"; # For macro defined functions (calls and definitions): each macro_rules in Rust.
|
||||||
|
|
||||||
|
"@function.method".link = "Function"; # For method definitions.
|
||||||
|
"@function.method.call".link = "Function"; # For method calls.
|
||||||
|
|
||||||
|
"@constructor" = {
|
||||||
|
fg = C.yellow;
|
||||||
|
}; # For constructor calls and definitions: = { } in Lua, and Java constructors.
|
||||||
|
"@operator" = {
|
||||||
|
link = "Operator";
|
||||||
|
}; # For any operator: +, but also -> and * in C.
|
||||||
|
|
||||||
|
# Keywords
|
||||||
|
"@keyword".link = "Keyword"; # For keywords that don't fall in previous categories.
|
||||||
|
"@keyword.modifier".link = "Keyword"; # For keywords modifying other constructs (e.g. `const`, `static`, `public`)
|
||||||
|
"@keyword.type".link = "Keyword"; # For keywords describing composite types (e.g. `struct`, `enum`)
|
||||||
|
"@keyword.coroutine".link = "Keyword"; # For keywords related to coroutines (e.g. `go` in Go, `async/await` in Python)
|
||||||
|
"@keyword.function" = {
|
||||||
|
fg = C.mauve;
|
||||||
|
style = O.styles.keywords or { };
|
||||||
|
}; # For keywords used to define a function.
|
||||||
|
"@keyword.operator" = {
|
||||||
|
fg = C.mauve;
|
||||||
|
style = O.styles.keywords or { };
|
||||||
|
}; # For new keyword operator
|
||||||
|
"@keyword.import" = {
|
||||||
|
link = "Include";
|
||||||
|
}; # For includes: #include in C, use or extern crate in Rust, or require in Lua.
|
||||||
|
"@keyword.repeat" = {
|
||||||
|
link = "Repeat";
|
||||||
|
}; # For keywords related to loops.
|
||||||
|
"@keyword.return" = {
|
||||||
|
fg = C.mauve;
|
||||||
|
style = O.styles.keywords or { };
|
||||||
|
};
|
||||||
|
"@keyword.debug".link = "Exception"; # For keywords related to debugging
|
||||||
|
"@keyword.exception".link = "Exception"; # For exception related keywords.
|
||||||
|
|
||||||
|
"@keyword.conditional".link = "Conditional"; # For keywords related to conditionals.
|
||||||
|
"@keyword.conditional.ternary".link = "Operator"; # For ternary operators (e.g. `?` / `:`)
|
||||||
|
|
||||||
|
"@keyword.directive".link = "PreProc"; # various preprocessor directives & shebangs
|
||||||
|
"@keyword.directive.define".link = "Define"; # preprocessor definition directives
|
||||||
|
"@keyword.export" = {
|
||||||
|
fg = C.mauve;
|
||||||
|
style = O.styles.keywords;
|
||||||
|
}; # JS & derivative
|
||||||
|
|
||||||
|
# Punctuation
|
||||||
|
"@punctuation.delimiter".link = "Delimiter"; # For delimiters (e.g. `;` / `.` / `,`).
|
||||||
|
"@punctuation.bracket".fg = C.overlay2; # For brackets and parenthesis.
|
||||||
|
"@punctuation.special".link = "Special"; # For special punctuation that does not fall in the categories before (e.g. `{}` in string interpolation).
|
||||||
|
|
||||||
|
# Comment
|
||||||
|
"@comment".link = "Comment";
|
||||||
|
"@comment.documentation".link = "Comment"; # For comments documenting code
|
||||||
|
|
||||||
|
"@comment.error" = {
|
||||||
|
fg = C.base;
|
||||||
|
bg = C.red;
|
||||||
|
};
|
||||||
|
"@comment.warning" = {
|
||||||
|
fg = C.base;
|
||||||
|
bg = C.yellow;
|
||||||
|
};
|
||||||
|
"@comment.hint" = {
|
||||||
|
fg = C.base;
|
||||||
|
bg = C.blue;
|
||||||
|
};
|
||||||
|
"@comment.todo" = {
|
||||||
|
fg = C.base;
|
||||||
|
bg = C.flamingo;
|
||||||
|
};
|
||||||
|
"@comment.note" = {
|
||||||
|
fg = C.base;
|
||||||
|
bg = C.rosewater;
|
||||||
|
};
|
||||||
|
|
||||||
|
# Markup
|
||||||
|
"@markup" = {
|
||||||
|
fg = C.text;
|
||||||
|
}; # For strings considerated text in a markup language.
|
||||||
|
"@markup.strong" = {
|
||||||
|
fg = C.red;
|
||||||
|
style = [ "bold" ];
|
||||||
|
}; # bold
|
||||||
|
"@markup.italic" = {
|
||||||
|
fg = C.red;
|
||||||
|
style = [ "italic" ];
|
||||||
|
}; # italic
|
||||||
|
"@markup.strikethrough" = {
|
||||||
|
fg = C.text;
|
||||||
|
style = [ "strikethrough" ];
|
||||||
|
}; # strikethrough text
|
||||||
|
"@markup.underline" = {
|
||||||
|
link = "Underlined";
|
||||||
|
}; # underlined text
|
||||||
|
|
||||||
|
"@markup.heading".fg = C.blue; # titles like: # Example
|
||||||
|
"@markup.heading.markdown".style = [ "bold" ]; # bold headings in markdown, but not in HTML or other markup
|
||||||
|
|
||||||
|
"@markup.math".fg = C.blue; # math environments (e.g. `$ ... $` in LaTeX)
|
||||||
|
"@markup.quote".fg = C.pink; # block quotes
|
||||||
|
"@markup.environment".fg = C.pink; # text environments of markup languages
|
||||||
|
"@markup.environment.name".fg = C.blue; # text indicating the type of an environment
|
||||||
|
|
||||||
|
"@markup.link".fg = C.lavender; # text references, footnotes, citations, etc.
|
||||||
|
"@markup.link.label".fg = C.lavender; # link, reference descriptions
|
||||||
|
"@markup.link.url" = {
|
||||||
|
fg = C.blue;
|
||||||
|
style = [
|
||||||
|
"italic"
|
||||||
|
"underline"
|
||||||
|
];
|
||||||
|
}; # urls, links and emails
|
||||||
|
|
||||||
|
"@markup.raw" = {
|
||||||
|
fg = C.green;
|
||||||
|
}; # used for inline code in markdown and for doc in python (""")
|
||||||
|
|
||||||
|
"@markup.list" = {
|
||||||
|
fg = C.teal;
|
||||||
|
};
|
||||||
|
"@markup.list.checked" = {
|
||||||
|
fg = C.green;
|
||||||
|
}; # todo notes
|
||||||
|
"@markup.list.unchecked" = {
|
||||||
|
fg = C.overlay1;
|
||||||
|
}; # todo notes
|
||||||
|
|
||||||
|
# Diff
|
||||||
|
"@diff.plus" = {
|
||||||
|
link = "diffAdded";
|
||||||
|
}; # added text (for diff files)
|
||||||
|
"@diff.minus" = {
|
||||||
|
link = "diffRemoved";
|
||||||
|
}; # deleted text (for diff files)
|
||||||
|
"@diff.delta" = {
|
||||||
|
link = "diffChanged";
|
||||||
|
}; # deleted text (for diff files)
|
||||||
|
|
||||||
|
# Tags
|
||||||
|
"@tag" = {
|
||||||
|
fg = C.blue;
|
||||||
|
}; # Tags like HTML tag names.
|
||||||
|
"@tag.builtin" = {
|
||||||
|
fg = C.blue;
|
||||||
|
}; # JSX tag names.
|
||||||
|
"@tag.attribute" = {
|
||||||
|
fg = C.yellow;
|
||||||
|
style = O.styles.miscs or [ "italic" ];
|
||||||
|
}; # XML/HTML attributes (foo in foo="bar").
|
||||||
|
"@tag.delimiter" = {
|
||||||
|
fg = C.teal;
|
||||||
|
}; # Tag delimiter like < > /
|
||||||
|
|
||||||
|
# Misc
|
||||||
|
"@error" = {
|
||||||
|
link = "Error";
|
||||||
|
};
|
||||||
|
|
||||||
|
# Language specific:
|
||||||
|
"@function.builtin.bash" = {
|
||||||
|
fg = C.red;
|
||||||
|
style = O.styles.miscs or [ "italic" ];
|
||||||
|
};
|
||||||
|
"@variable.parameter.bash" = {
|
||||||
|
fg = C.green;
|
||||||
|
};
|
||||||
|
|
||||||
|
"@markup.heading.1.markdown".link = "rainbow1";
|
||||||
|
"@markup.heading.2.markdown".link = "rainbow2";
|
||||||
|
"@markup.heading.3.markdown".link = "rainbow3";
|
||||||
|
"@markup.heading.4.markdown".link = "rainbow4";
|
||||||
|
"@markup.heading.5.markdown".link = "rainbow5";
|
||||||
|
"@markup.heading.6.markdown".link = "rainbow6";
|
||||||
|
|
||||||
|
"@markup.heading.html" = {
|
||||||
|
link = "@markup";
|
||||||
|
};
|
||||||
|
"@markup.heading.1.html" = {
|
||||||
|
link = "@markup";
|
||||||
|
};
|
||||||
|
"@markup.heading.2.html" = {
|
||||||
|
link = "@markup";
|
||||||
|
};
|
||||||
|
"@markup.heading.3.html" = {
|
||||||
|
link = "@markup";
|
||||||
|
};
|
||||||
|
"@markup.heading.4.html" = {
|
||||||
|
link = "@markup";
|
||||||
|
};
|
||||||
|
"@markup.heading.5.html" = {
|
||||||
|
link = "@markup";
|
||||||
|
};
|
||||||
|
"@markup.heading.6.html" = {
|
||||||
|
link = "@markup";
|
||||||
|
};
|
||||||
|
|
||||||
|
"@constant.java" = {
|
||||||
|
fg = C.teal;
|
||||||
|
};
|
||||||
|
|
||||||
|
"@property.css" = {
|
||||||
|
fg = C.blue;
|
||||||
|
};
|
||||||
|
"@property.scss" = {
|
||||||
|
fg = C.blue;
|
||||||
|
};
|
||||||
|
"@property.id.css" = {
|
||||||
|
fg = C.yellow;
|
||||||
|
};
|
||||||
|
"@property.class.css" = {
|
||||||
|
fg = C.yellow;
|
||||||
|
};
|
||||||
|
"@type.css" = {
|
||||||
|
fg = C.lavender;
|
||||||
|
};
|
||||||
|
"@type.tag.css" = {
|
||||||
|
fg = C.blue;
|
||||||
|
};
|
||||||
|
"@string.plain.css" = {
|
||||||
|
fg = C.text;
|
||||||
|
};
|
||||||
|
"@number.css" = {
|
||||||
|
fg = C.peach;
|
||||||
|
};
|
||||||
|
"@keyword.directive.css" = {
|
||||||
|
link = "Keyword";
|
||||||
|
}; # CSS at-rules
|
||||||
|
|
||||||
|
"@string.special.url.html" = {
|
||||||
|
fg = C.green;
|
||||||
|
}; # Links in href, src attributes.
|
||||||
|
"@markup.link.label.html" = {
|
||||||
|
fg = C.text;
|
||||||
|
}; # Text between <a></a> tags.
|
||||||
|
"@character.special.html" = {
|
||||||
|
fg = C.red;
|
||||||
|
}; # Symbols such as .
|
||||||
|
|
||||||
|
"@constructor.lua" = {
|
||||||
|
link = "@punctuation.bracket";
|
||||||
|
}; # For constructor calls and definitions: = { } in Lua.
|
||||||
|
"@constructor.python" = {
|
||||||
|
fg = C.sky;
|
||||||
|
}; # __init__(), __new__().
|
||||||
|
"@label.yaml" = {
|
||||||
|
fg = C.yellow;
|
||||||
|
}; # Anchor and alias names.
|
||||||
|
"@string.special.symbol.ruby" = {
|
||||||
|
fg = C.flamingo;
|
||||||
|
};
|
||||||
|
|
||||||
|
"@function.method.php" = {
|
||||||
|
link = "Function";
|
||||||
|
};
|
||||||
|
"@function.method.call.php" = {
|
||||||
|
link = "Function";
|
||||||
|
};
|
||||||
|
|
||||||
|
"@keyword.import.c" = {
|
||||||
|
fg = C.yellow;
|
||||||
|
};
|
||||||
|
"@keyword.import.cpp" = {
|
||||||
|
fg = C.yellow;
|
||||||
|
};
|
||||||
|
"@attribute.c_sharp" = {
|
||||||
|
fg = C.yellow;
|
||||||
|
};
|
||||||
|
"@comment.warning.gitcommit" = {
|
||||||
|
fg = C.yellow;
|
||||||
|
};
|
||||||
|
"@string.special.path.gitignore" = {
|
||||||
|
fg = C.text;
|
||||||
|
};
|
||||||
|
|
||||||
|
gitcommitSummary = {
|
||||||
|
fg = C.rosewater;
|
||||||
|
style = O.styles.miscs or [ "italic" ];
|
||||||
|
};
|
||||||
|
zshKSHFunction = {
|
||||||
|
link = "Function";
|
||||||
|
};
|
||||||
|
|
||||||
|
# Legacy highlights
|
||||||
|
"@parameter" = self."@variable.parameter";
|
||||||
|
"@field" = self."@variable.member";
|
||||||
|
"@namespace" = self."@module";
|
||||||
|
"@float" = self."@number.float";
|
||||||
|
"@symbol" = self."@string.special.symbol";
|
||||||
|
"@string.regex" = self."@string.regexp";
|
||||||
|
|
||||||
|
"@text" = self."@markup";
|
||||||
|
"@text.strong" = self."@markup.strong";
|
||||||
|
"@text.emphasis" = self."@markup.italic";
|
||||||
|
"@text.underline" = self."@markup.underline";
|
||||||
|
"@text.strike" = self."@markup.strikethrough";
|
||||||
|
"@text.uri" = self."@markup.link.url";
|
||||||
|
"@text.math" = self."@markup.math";
|
||||||
|
"@text.environment" = self."@markup.environment";
|
||||||
|
"@text.environment.name" = self."@markup.environment.name";
|
||||||
|
|
||||||
|
"@text.title" = self."@markup.heading";
|
||||||
|
"@text.literal" = self."@markup.raw";
|
||||||
|
"@text.reference" = self."@markup.link";
|
||||||
|
|
||||||
|
"@text.todo.checked" = self."@markup.list.checked";
|
||||||
|
"@text.todo.unchecked" = self."@markup.list.unchecked";
|
||||||
|
|
||||||
|
"@text.todo" = self."@comment.todo";
|
||||||
|
"@text.warning" = self."@comment.warning";
|
||||||
|
"@text.note" = self."@comment.note";
|
||||||
|
"@text.danger" = self."@comment.error";
|
||||||
|
|
||||||
|
"@method" = self."@function.method";
|
||||||
|
"@method.call" = self."@function.method.call";
|
||||||
|
|
||||||
|
"@text.diff.add" = self."@diff.plus";
|
||||||
|
"@text.diff.delete" = self."@diff.minus";
|
||||||
|
|
||||||
|
"@type.qualifier" = self."@keyword.modifier";
|
||||||
|
"@keyword.storage" = self."@keyword.modifier";
|
||||||
|
"@define" = self."@keyword.directive.define";
|
||||||
|
"@preproc" = self."@keyword.directive";
|
||||||
|
"@storageclass" = self."@keyword.storage";
|
||||||
|
"@conditional" = self."@keyword.conditional";
|
||||||
|
"@exception" = self."@keyword.exception";
|
||||||
|
"@include" = self."@keyword.import";
|
||||||
|
"@repeat" = self."@keyword.repeat";
|
||||||
|
|
||||||
|
"@symbol.ruby" = self."@string.special.symbol.ruby";
|
||||||
|
"@variable.member.yaml" = self."@field.yaml";
|
||||||
|
|
||||||
|
"@text.title.1.markdown" = self."@markup.heading.1.markdown";
|
||||||
|
"@text.title.2.markdown" = self."@markup.heading.2.markdown";
|
||||||
|
"@text.title.3.markdown" = self."@markup.heading.3.markdown";
|
||||||
|
"@text.title.4.markdown" = self."@markup.heading.4.markdown";
|
||||||
|
"@text.title.5.markdown" = self."@markup.heading.5.markdown";
|
||||||
|
"@text.title.6.markdown" = self."@markup.heading.6.markdown";
|
||||||
|
|
||||||
|
"@method.php" = self."@function.method.php";
|
||||||
|
"@method.call.php" = self."@function.method.call.php";
|
||||||
|
};
|
||||||
|
in
|
||||||
|
self
|
||||||
@@ -19,8 +19,6 @@ in
|
|||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
users.users.${username}.linger = true;
|
users.users.${username}.linger = true;
|
||||||
boot = {
|
boot = {
|
||||||
loader.timeout = 0;
|
|
||||||
|
|
||||||
plymouth.enable = true;
|
plymouth.enable = true;
|
||||||
|
|
||||||
kernelParams = [
|
kernelParams = [
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ in
|
|||||||
{
|
{
|
||||||
options.desktops.hyprland = {
|
options.desktops.hyprland = {
|
||||||
enable = lib.mkEnableOption "Enable a DE based on Hyprland";
|
enable = lib.mkEnableOption "Enable a DE based on Hyprland";
|
||||||
|
scrolling = lib.mkEnableOption "Hyprland scrolling wm";
|
||||||
};
|
};
|
||||||
|
|
||||||
config = lib.mkIf cfg.enable {
|
config = lib.mkIf cfg.enable {
|
||||||
@@ -32,9 +33,14 @@ in
|
|||||||
no_update_news = true;
|
no_update_news = true;
|
||||||
no_donation_nag = true;
|
no_donation_nag = true;
|
||||||
};
|
};
|
||||||
|
input.numlock_by_default = true;
|
||||||
};
|
};
|
||||||
plugins = with pkgs.hyprlandPlugins; [
|
plugins = lib.mkIf cfg.scrolling (
|
||||||
];
|
with pkgs.hyprlandPlugins;
|
||||||
|
[
|
||||||
|
hyprscrolling
|
||||||
|
]
|
||||||
|
);
|
||||||
};
|
};
|
||||||
home = {
|
home = {
|
||||||
packages = with pkgs; [ grim ];
|
packages = with pkgs; [ grim ];
|
||||||
@@ -83,6 +89,9 @@ in
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
security.pam.services.gdm.enableGnomeKeyring = true;
|
||||||
|
security.pam.services.hyprland.enableGnomeKeyring = true;
|
||||||
|
|
||||||
services = {
|
services = {
|
||||||
kmscon = {
|
kmscon = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|||||||
13
modules/nixos/hardware/astro-a50-dock.sh
Normal file
13
modules/nixos/hardware/astro-a50-dock.sh
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
stdbuf -oL hexdump -v -e '32/2 "%x " "\n"' "$HID_DEVICE" | while read -r line; do
|
||||||
|
echo "$line"
|
||||||
|
if [[ $line =~ ^c02[[:space:]]4[[:space:]]13[[:space:]]([0-9a-f]+) ]]; then
|
||||||
|
power_state=${BASH_REMATCH[1]}
|
||||||
|
if [[ $power_state == "0" ]]; then
|
||||||
|
echo "power=on"
|
||||||
|
wpctl set-default "$(pw-cli info "$HEADSET_NAME" | head -n 1 | awk '{print $2}')"
|
||||||
|
else
|
||||||
|
echo "power=off"
|
||||||
|
wpctl set-default "$(pw-cli info "$SPEAKERS_NAME" | head -n 1 | awk '{print $2}')"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
done
|
||||||
@@ -13,34 +13,54 @@ in
|
|||||||
{
|
{
|
||||||
options.hardware.astro-a50 = {
|
options.hardware.astro-a50 = {
|
||||||
enable = mkEnableOption "Enable optimisations for the Logitech Astro A50 headset";
|
enable = mkEnableOption "Enable optimisations for the Logitech Astro A50 headset";
|
||||||
|
sinkWhenDocked = mkOption {
|
||||||
|
type = types.nullOr types.str;
|
||||||
|
description = "The PipeWire sink name to switch to when the Astro A50 is docked. If null, no switching will be done.";
|
||||||
|
default = "alsa_output.pci-0000_0a_00.4.analog-stereo";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config =
|
||||||
home-manager.users.${username} =
|
let
|
||||||
let
|
name = "Astro A50";
|
||||||
name = "Astro A50";
|
nick = "A50";
|
||||||
nick = "A50";
|
pipewireFilter = bitrate: {
|
||||||
filter = bitrate: {
|
"media.class" = "Audio/Sink";
|
||||||
"media.class" = "Audio/Sink";
|
"alsa.components" = "USB046d:0b1c";
|
||||||
"alsa.components" = "USB046d:0b1c";
|
"alsa.resolution_bits" = bitrate;
|
||||||
"alsa.resolution_bits" = bitrate;
|
};
|
||||||
};
|
serviceName = "astro-a50-dock-detection";
|
||||||
nodeNameIn = "astro-a50-eq-harman-in";
|
nodeNameIn = "astro-a50-eq-harman-in";
|
||||||
in
|
hidrawName = "hidraw_astro_a50";
|
||||||
{
|
hidrawPath = "/dev/${hidrawName}";
|
||||||
|
deviceUnit = "dev-${hidrawName}.device";
|
||||||
|
in
|
||||||
|
|
||||||
|
mkIf cfg.enable {
|
||||||
|
services.udev.extraRules = lib.strings.join ", " [
|
||||||
|
"KERNEL==\"hidraw*\""
|
||||||
|
"ATTRS{idVendor}==\"046d\""
|
||||||
|
"ATTRS{idProduct}==\"0b1c\""
|
||||||
|
"MODE=\"0660\""
|
||||||
|
"GROUP=\"input\""
|
||||||
|
"TAG+=\"systemd\""
|
||||||
|
"SYMLINK+=\"${hidrawName}\""
|
||||||
|
];
|
||||||
|
users.extraGroups.input.members = [ username ];
|
||||||
|
home-manager.users.${username} = {
|
||||||
home.packages = with pkgs; [ zam-plugins ];
|
home.packages = with pkgs; [ zam-plugins ];
|
||||||
xdg.configFile = {
|
xdg.configFile = {
|
||||||
"wireplumber/wireplumber.conf.d/51-astro-a50.conf".text = builtins.toJSON {
|
"wireplumber/wireplumber.conf.d/51-astro-a50.conf".text = builtins.toJSON {
|
||||||
"monitor.alsa.rules" = [
|
"monitor.alsa.rules" = [
|
||||||
{
|
{
|
||||||
matches = [ (filter 16) ];
|
matches = [ (pipewireFilter 16) ];
|
||||||
actions.update-props = {
|
actions.update-props = {
|
||||||
"node.description" = "${name} Chat";
|
"node.description" = "${name} Chat";
|
||||||
"node.nick" = "${nick} Chat";
|
"node.nick" = "${nick} Chat";
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
matches = [ (filter 24) ];
|
matches = [ (pipewireFilter 24) ];
|
||||||
actions.update-props = {
|
actions.update-props = {
|
||||||
"node.description" = name;
|
"node.description" = name;
|
||||||
"node.nick" = nick;
|
"node.nick" = nick;
|
||||||
@@ -53,12 +73,12 @@ in
|
|||||||
{
|
{
|
||||||
name = "libpipewire-module-parametric-equalizer";
|
name = "libpipewire-module-parametric-equalizer";
|
||||||
args = {
|
args = {
|
||||||
"equalizer.filepath" = builtins.toString ./astro-a50-harman.txt;
|
"equalizer.filepath" = toString ./astro-a50-harman.txt;
|
||||||
"equalizer.description" = "${name} (Harman EQ)";
|
"equalizer.description" = "${name} (Harman EQ)";
|
||||||
"capture.props" = {
|
"capture.props" = {
|
||||||
"node.name" = nodeNameIn;
|
"node.name" = nodeNameIn;
|
||||||
"filter.smart" = true;
|
"filter.smart" = true;
|
||||||
"filter.smart.target" = filter 24;
|
"filter.smart.target" = pipewireFilter 24;
|
||||||
};
|
};
|
||||||
"playback.props"."node.name" = "EQ Output";
|
"playback.props"."node.name" = "EQ Output";
|
||||||
};
|
};
|
||||||
@@ -66,6 +86,33 @@ in
|
|||||||
];
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
systemd.user.services.${serviceName} = mkIf (cfg.sinkWhenDocked != null) {
|
||||||
|
Unit = {
|
||||||
|
Description = "Astro A50 Dock Detection";
|
||||||
|
StopPropagatedFrom = [ deviceUnit ];
|
||||||
|
};
|
||||||
|
Install.WantedBy = [
|
||||||
|
"default.target"
|
||||||
|
deviceUnit
|
||||||
|
];
|
||||||
|
Service = {
|
||||||
|
Restart = "always";
|
||||||
|
RestartSec = "5";
|
||||||
|
ExecStart = "-${
|
||||||
|
lib.getExe (
|
||||||
|
pkgs.writeShellApplication {
|
||||||
|
name = "astro-dock-detect";
|
||||||
|
runtimeEnv = {
|
||||||
|
HID_DEVICE = hidrawPath;
|
||||||
|
HEADSET_NAME = nodeNameIn;
|
||||||
|
SPEAKERS_NAME = cfg.sinkWhenDocked;
|
||||||
|
};
|
||||||
|
text = builtins.readFile ./astro-a50-dock.sh;
|
||||||
|
}
|
||||||
|
)
|
||||||
|
}";
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -57,7 +57,9 @@ in
|
|||||||
layout.struts.top = 80;
|
layout.struts.top = 80;
|
||||||
};
|
};
|
||||||
wayland.windowManager.hyprland.settings = {
|
wayland.windowManager.hyprland.settings = {
|
||||||
general.layout = "master";
|
plugin.hyprscrolling = lib.mkIf config.desktops.hyprland.scrolling {
|
||||||
|
column_width = 0.4;
|
||||||
|
};
|
||||||
master = {
|
master = {
|
||||||
orientation = "center";
|
orientation = "center";
|
||||||
slave_count_for_center_master = 0;
|
slave_count_for_center_master = 0;
|
||||||
@@ -65,19 +67,13 @@ in
|
|||||||
allow_small_split = true;
|
allow_small_split = true;
|
||||||
};
|
};
|
||||||
render.direct_scanout = 0;
|
render.direct_scanout = 0;
|
||||||
/*
|
|
||||||
monitor = [
|
|
||||||
"${monitorline},sdrbrightness,1.3"
|
|
||||||
"DP-3,addreserved,340,0,0,0"
|
|
||||||
];
|
|
||||||
*/
|
|
||||||
monitorv2 = {
|
monitorv2 = {
|
||||||
output = "DP-3";
|
output = "DP-3";
|
||||||
mode = "3840x2160@144";
|
mode = "3840x2160@144";
|
||||||
position = "0x0";
|
position = "0x0";
|
||||||
scale = 1;
|
scale = 1;
|
||||||
bitdepth = 10;
|
bitdepth = 10;
|
||||||
addreserved = "340,0,0,0";
|
addreserved = "80,0,0,0";
|
||||||
cm = if cfg.hdr then "hdredid" else "srgb";
|
cm = if cfg.hdr then "hdredid" else "srgb";
|
||||||
sdr_min_luminance = 0.25;
|
sdr_min_luminance = 0.25;
|
||||||
sdr_max_luminance = 250;
|
sdr_max_luminance = 250;
|
||||||
@@ -88,7 +84,7 @@ in
|
|||||||
min_refresh_rate = 48;
|
min_refresh_rate = 48;
|
||||||
no_break_fs_vrr = 1;
|
no_break_fs_vrr = 1;
|
||||||
};
|
};
|
||||||
experimental.xx_color_management_v4 = true;
|
# experimental.xx_color_management_v4 = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
programs.waybar.settings.mainBar =
|
programs.waybar.settings.mainBar =
|
||||||
|
|||||||
@@ -19,11 +19,13 @@ in
|
|||||||
home-manager.users.${username} = {
|
home-manager.users.${username} = {
|
||||||
wayland.windowManager.hyprland.settings = {
|
wayland.windowManager.hyprland.settings = {
|
||||||
bindr = [ "SUPER,SUPER_L,exec,uwsm app -- ${lib.getExe pkgs.walker}" ];
|
bindr = [ "SUPER,SUPER_L,exec,uwsm app -- ${lib.getExe pkgs.walker}" ];
|
||||||
layerrule = [
|
/*
|
||||||
# TODO: Add layer rules for walker
|
layerrule = [
|
||||||
"blur, anyrun"
|
# TODO: Add layer rules for walker
|
||||||
"ignorealpha 0.3, anyrun"
|
"blur, anyrun"
|
||||||
];
|
"ignorealpha 0.3, anyrun"
|
||||||
|
];
|
||||||
|
*/
|
||||||
};
|
};
|
||||||
programs.niri.settings.binds."Mod+Space".action.spawn = [ (lib.getExe pkgs.walker) ];
|
programs.niri.settings.binds."Mod+Space".action.spawn = [ (lib.getExe pkgs.walker) ];
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
|
|||||||
Reference in New Issue
Block a user