mirror of
https://github.com/Theaninova/TheaninovOS.git
synced 2026-02-14 20:42:45 +00:00
Compare commits
3 Commits
0b0b568916
...
6cb301eb81
| Author | SHA1 | Date | |
|---|---|---|---|
|
6cb301eb81
|
|||
|
63a657fc84
|
|||
|
a8528b7fcd
|
48
flake.lock
generated
48
flake.lock
generated
@@ -24,11 +24,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1763759067,
|
||||
"narHash": "sha256-LlLt2Jo/gMNYAwOgdRQBrsRoOz7BPRkzvNaI/fzXi2Q=",
|
||||
"lastModified": 1765835352,
|
||||
"narHash": "sha256-XswHlK/Qtjasvhd1nOa1e8MgZ8GS//jBoTqWtrS1Giw=",
|
||||
"owner": "hercules-ci",
|
||||
"repo": "flake-parts",
|
||||
"rev": "2cccadc7357c0ba201788ae99c4dfa90728ef5e0",
|
||||
"rev": "a34fae9c08a15ad73f295041fec82323541400a9",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -44,11 +44,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1765172714,
|
||||
"narHash": "sha256-/cjofqGxSWpRj2XJM+Bd5VUgWDkBWSxxO//HE+zOHMY=",
|
||||
"lastModified": 1766881808,
|
||||
"narHash": "sha256-JR7A2xS3EBPWFeONzhqez5vp7nKEsp7eLj2Ks210Srk=",
|
||||
"owner": "nix-community",
|
||||
"repo": "home-manager",
|
||||
"rev": "a7887340779d5e70ef68012f3823568ee59eaa30",
|
||||
"rev": "d2e0458d6531885600b346e161c38790dc356fa8",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -91,11 +91,11 @@
|
||||
"xwayland-satellite-unstable": "xwayland-satellite-unstable"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1765120349,
|
||||
"narHash": "sha256-MvwrHRV80hOdEwfLgI16XhApHuvj69aAgUWQ8ZBgAqE=",
|
||||
"lastModified": 1766765523,
|
||||
"narHash": "sha256-DCk3GKdKZNjpvNuDy9ZVfVwCy3tlm96/UZnYkJO7N44=",
|
||||
"owner": "sodiboo",
|
||||
"repo": "niri-flake",
|
||||
"rev": "0f4acff79842637e92f5f2609d3844bac9d5e592",
|
||||
"rev": "a3e638c75d07de759421e6f34bd69c3f9a0a3567",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -124,11 +124,11 @@
|
||||
"niri-unstable": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1764966114,
|
||||
"narHash": "sha256-nC0Fsu4zSdabdR4tHHMCrTgqLms612eEDy5VCdQVZFk=",
|
||||
"lastModified": 1766751930,
|
||||
"narHash": "sha256-83/YSW6c58i/iwGzAFApuMy6MCgoIaROeCcoIGh+ViU=",
|
||||
"owner": "YaLTeR",
|
||||
"repo": "niri",
|
||||
"rev": "ba29735fbbd8cf8319c71ccb55b54a0580007c80",
|
||||
"rev": "b5640d5293ad8dca06cb447692ea7cbb21680eb1",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -155,11 +155,11 @@
|
||||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1764950072,
|
||||
"narHash": "sha256-BmPWzogsG2GsXZtlT+MTcAWeDK5hkbGRZTeZNW42fwA=",
|
||||
"lastModified": 1766651565,
|
||||
"narHash": "sha256-QEhk0eXgyIqTpJ/ehZKg9IKS7EtlWxF3N7DXy42zPfU=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "f61125a668a320878494449750330ca58b78c557",
|
||||
"rev": "3e2499d5539c16d0d173ba53552a4ff8547f4539",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -171,11 +171,11 @@
|
||||
},
|
||||
"nixpkgs-stable": {
|
||||
"locked": {
|
||||
"lastModified": 1764983851,
|
||||
"narHash": "sha256-y7RPKl/jJ/KAP/VKLMghMgXTlvNIJMHKskl8/Uuar7o=",
|
||||
"lastModified": 1766736597,
|
||||
"narHash": "sha256-BASnpCLodmgiVn0M1MU2Pqyoz0aHwar/0qLkp7CjvSQ=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "d9bc5c7dceb30d8d6fafa10aeb6aa8a48c218454",
|
||||
"rev": "f560ccec6b1116b22e6ed15f4c510997d99d5852",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -194,11 +194,11 @@
|
||||
"systems": "systems_2"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1765196590,
|
||||
"narHash": "sha256-DJuH2toKIEhqrAntJig2mlEH1Q5A5HN22JUCUtT+Y00=",
|
||||
"lastModified": 1766918207,
|
||||
"narHash": "sha256-G/Msy+w6e6W5Z517draGcMC0Fqpl4cfutZS5ijndpyM=",
|
||||
"owner": "nix-community",
|
||||
"repo": "nixvim",
|
||||
"rev": "6ab2b305da7c48a697535c1e72f9294cb342cfac",
|
||||
"rev": "51ae9913767528723397e1b227bd32a080058bb5",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -359,11 +359,11 @@
|
||||
"xwayland-satellite-unstable": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1764721075,
|
||||
"narHash": "sha256-ChH4nq0cMEEkzkHqKlQt5Z7wxrk8ybcEHuA1YKAYmV0=",
|
||||
"lastModified": 1766429945,
|
||||
"narHash": "sha256-9Kv4gWagx/u4RfZJzBMAoagW9ava5waxd+XoTkzqF7E=",
|
||||
"owner": "Supreeeme",
|
||||
"repo": "xwayland-satellite",
|
||||
"rev": "1b918e29b419e89910014054e8b71d54c9235ea5",
|
||||
"rev": "0dde7ca1d3a8e8c5082533d76084e2aa02bef70e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
||||
@@ -8,6 +8,8 @@
|
||||
imports = [ ./hardware-configuration.nix ];
|
||||
|
||||
boot = {
|
||||
loader.timeout = 0;
|
||||
|
||||
quiet.enable = true;
|
||||
|
||||
kernelParams = [ "module_blacklist=i915" ];
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
gamma-launcher
|
||||
];
|
||||
};
|
||||
wayland.windowManager.hyprland.settings.input.kb_options = [ "lv3:caps_switch" ];
|
||||
services.nextcloud-client.enable = true;
|
||||
systemd.user.services = {
|
||||
blueman-applet = {
|
||||
|
||||
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,9 +13,18 @@ in
|
||||
{
|
||||
options.hardware.astro-a50 = {
|
||||
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 {
|
||||
services.udev.extraRules = ''
|
||||
KERNEL=="hidraw*", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="0b1c", MODE="0660", GROUP="input"
|
||||
'';
|
||||
users.extraGroups.input.members = [ username ];
|
||||
home-manager.users.${username} =
|
||||
let
|
||||
name = "Astro A50";
|
||||
@@ -66,6 +75,29 @@ in
|
||||
];
|
||||
};
|
||||
};
|
||||
systemd.user.services.astro-dock = mkIf (cfg.sinkWhenDocked != null) {
|
||||
Unit = {
|
||||
Description = "Astro A50 Dock Detection";
|
||||
After = [ "pipewire.service" ];
|
||||
};
|
||||
|
||||
Install.WantedBy = [ "default.target" ];
|
||||
|
||||
Service = {
|
||||
Restart = "always";
|
||||
ExecStart = lib.getExe (
|
||||
pkgs.writeShellApplication {
|
||||
name = "astro-dock-detect";
|
||||
runtimeEnv = {
|
||||
HID_DEVICE = "/dev/input/by-id/usb-Logitech_A50-if08-hidraw";
|
||||
HEADSET_NAME = nodeNameIn;
|
||||
SPEAKERS_NAME = cfg.sinkWhenDocked;
|
||||
};
|
||||
text = builtins.readFile ./astro-a50-dock.sh;
|
||||
}
|
||||
);
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user