diff --git a/flake.lock b/flake.lock index 890bcd5..3fa8ae8 100644 --- a/flake.lock +++ b/flake.lock @@ -9,11 +9,11 @@ "rust-overlay": "rust-overlay" }, "locked": { - "lastModified": 1759319421, - "narHash": "sha256-45yE92tDGtCX/vdyUuD3ckCqyZ3pwP0yrTorjvL80fc=", + "lastModified": 1764169039, + "narHash": "sha256-9DabwGlLz2mEOV7nw97HP6LLx1xv4RAHhnQSICbW+mE=", "owner": "ezKEa", "repo": "aagl-gtk-on-nix", - "rev": "37bf87881ae7a68bccdd383fef345c748a23d3b7", + "rev": "c4a5f08a6ff74624ac576525765b06c79d2077e3", "type": "github" }, "original": { @@ -99,11 +99,11 @@ "rust-overlay": "rust-overlay_2" }, "locked": { - "lastModified": 1760747305, - "narHash": "sha256-SsuuyaFp4TbJ+ofti9EXot9gIOk4vZqccat/zERVQN4=", + "lastModified": 1764720660, + "narHash": "sha256-zrU6DwLb5zXCg6JxfVJyNCJex0LjuTUXchotq44Vn+w=", "owner": "chaotic-cx", "repo": "nyx", - "rev": "9838e14b30857ac0a50dbe98a5ba2233d6ccb2de", + "rev": "1739cb8049b3184496279dc6a272b56d466ddd58", "type": "github" }, "original": { @@ -115,11 +115,11 @@ }, "crane": { "locked": { - "lastModified": 1754269165, - "narHash": "sha256-0tcS8FHd4QjbCVoxN9jI+PjHgA4vc/IjkUSp+N3zy0U=", + "lastModified": 1763938834, + "narHash": "sha256-j8iB0Yr4zAvQLueCZ5abxfk6fnG/SJ5JnGUziETjwfg=", "owner": "ipetkov", "repo": "crane", - "rev": "444e81206df3f7d92780680e45858e31d2f07a08", + "rev": "d9e753122e51cee64eb8d2dddfe11148f339f5a2", "type": "github" }, "original": { @@ -135,11 +135,11 @@ ] }, "locked": { - "lastModified": 1760701190, - "narHash": "sha256-y7UhnWlER8r776JsySqsbTUh2Txf7K30smfHlqdaIQw=", + "lastModified": 1764627417, + "narHash": "sha256-D6xc3Rl8Ab6wucJWdvjNsGYGSxNjQHzRc2EZ6eeQ6l4=", "owner": "nix-community", "repo": "disko", - "rev": "3a9450b26e69dcb6f8de6e2b07b3fc1c288d85f5", + "rev": "5a88a6eceb8fd732b983e72b732f6f4b8269bef3", "type": "github" }, "original": { @@ -167,11 +167,11 @@ "flake-compat": { "flake": false, "locked": { - "lastModified": 1747046372, - "narHash": "sha256-CIVLLkVgvHYbgI2UpXvIIBJ12HWgX+fjA8Xf8PUmqCY=", + "lastModified": 1761588595, + "narHash": "sha256-XKUZz9zewJNUj46b4AJdiRZJAvSZ0Dqj2BNfXvFlJC4=", "owner": "edolstra", "repo": "flake-compat", - "rev": "9100a0f413b0c601e0533d1d94ffd501ce2e7885", + "rev": "f387cd2afec9419c8ee37694406ca490c3f34ee5", "type": "github" }, "original": { @@ -183,11 +183,11 @@ "flake-compat_2": { "flake": false, "locked": { - "lastModified": 1747046372, - "narHash": "sha256-CIVLLkVgvHYbgI2UpXvIIBJ12HWgX+fjA8Xf8PUmqCY=", + "lastModified": 1761588595, + "narHash": "sha256-XKUZz9zewJNUj46b4AJdiRZJAvSZ0Dqj2BNfXvFlJC4=", "owner": "edolstra", "repo": "flake-compat", - "rev": "9100a0f413b0c601e0533d1d94ffd501ce2e7885", + "rev": "f387cd2afec9419c8ee37694406ca490c3f34ee5", "type": "github" }, "original": { @@ -212,28 +212,22 @@ "url": "https://git.lix.systems/lix-project/flake-compat.git" } }, - "flake-parts": { - "inputs": { - "nixpkgs-lib": [ - "lanzaboote", - "nixpkgs" - ] - }, + "flake-compat_4": { "locked": { - "lastModified": 1754091436, - "narHash": "sha256-XKqDMN1/Qj1DKivQvscI4vmHfDfvYR2pfuFOJiCeewM=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "67df8c627c2c39c41dbec76a1f201929929ab0bd", + "lastModified": 1761588595, + "narHash": "sha256-XKUZz9zewJNUj46b4AJdiRZJAvSZ0Dqj2BNfXvFlJC4=", + "owner": "nixos", + "repo": "flake-compat", + "rev": "f387cd2afec9419c8ee37694406ca490c3f34ee5", "type": "github" }, "original": { - "owner": "hercules-ci", - "repo": "flake-parts", + "owner": "nixos", + "repo": "flake-compat", "type": "github" } }, - "flake-parts_2": { + "flake-parts": { "inputs": { "nixpkgs-lib": [ "nur", @@ -254,7 +248,7 @@ "type": "github" } }, - "flake-parts_3": { + "flake-parts_2": { "inputs": { "nixpkgs-lib": [ "nvf", @@ -262,11 +256,11 @@ ] }, "locked": { - "lastModified": 1759362264, - "narHash": "sha256-wfG0S7pltlYyZTM+qqlhJ7GMw2fTF4mLKCIVhLii/4M=", + "lastModified": 1760948891, + "narHash": "sha256-TmWcdiUUaWk8J4lpjzu4gCGxWY6/Ok7mOK4fIFfBuU4=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "758cf7296bee11f1706a574c77d072b8a7baa881", + "rev": "864599284fc7c0ba6357ed89ed5e2cd5040f0c04", "type": "github" }, "original": { @@ -275,7 +269,7 @@ "type": "github" } }, - "flake-parts_4": { + "flake-parts_3": { "inputs": { "nixpkgs-lib": [ "stylix", @@ -330,7 +324,7 @@ "inputs": { "nixpkgs": [ "lanzaboote", - "pre-commit-hooks-nix", + "pre-commit", "nixpkgs" ] }, @@ -351,18 +345,20 @@ "gnome-shell": { "flake": false, "locked": { - "lastModified": 1748186689, - "narHash": "sha256-UaD7Y9f8iuLBMGHXeJlRu6U1Ggw5B9JnkFs3enZlap0=", + "host": "gitlab.gnome.org", + "lastModified": 1762869044, + "narHash": "sha256-nwm/GJ2Syigf7VccLAZ66mFC8mZJFqpJmIxSGKl7+Ds=", "owner": "GNOME", "repo": "gnome-shell", - "rev": "8c88f917db0f1f0d80fa55206c863d3746fa18d0", - "type": "github" + "rev": "680e3d195a92203f28d4bf8c6e8bb537cc3ed4ad", + "type": "gitlab" }, "original": { + "host": "gitlab.gnome.org", "owner": "GNOME", - "ref": "48.2", + "ref": "gnome-49", "repo": "gnome-shell", - "type": "github" + "type": "gitlab" } }, "home-manager": { @@ -373,11 +369,11 @@ ] }, "locked": { - "lastModified": 1760662441, - "narHash": "sha256-mlDqR1Ntgs9uYYEAUR1IhamKBO0lxoNS4zGLzEZaY0A=", + "lastModified": 1764636297, + "narHash": "sha256-S41K55kw+hWgDfgKmZ9/fMZ3F0BQDMvqFfE120fMHeE=", "owner": "nix-community", "repo": "home-manager", - "rev": "722792af097dff5790f1a66d271a47759f477755", + "rev": "ff067cfc619fdf6f82d50344e7d19ff2323f0827", "type": "github" }, "original": { @@ -393,11 +389,11 @@ ] }, "locked": { - "lastModified": 1760929667, - "narHash": "sha256-nZh6uvc71nVNaf/y+wesnjwsmJ6IZZUnP2EzpZe48To=", + "lastModified": 1764765981, + "narHash": "sha256-QbjsTmAsxSVPw/w3pN1ftlOYHpOZZkXVSgoWnj43j0A=", "owner": "nix-community", "repo": "home-manager", - "rev": "189c21cf879669008ccf06e78a553f17e88d8ef0", + "rev": "43173abcb4a48adb1d56be30ed17d9afaf4310ae", "type": "github" }, "original": { @@ -415,11 +411,11 @@ ] }, "locked": { - "lastModified": 1760534924, - "narHash": "sha256-OIOCC86DxTxp1VG7xAiM+YABtVqp6vTkYIoAiGQMqso=", + "lastModified": 1764655750, + "narHash": "sha256-tBrcUSu/47u+E+81SUVUpXrqhkcM3Xqg/4taWFI/99k=", "owner": "Jovian-Experiments", "repo": "Jovian-NixOS", - "rev": "100b4e000032b865563a9754e5bca189bc544764", + "rev": "1127a4fc66425cceae683becb93f038819cf2633", "type": "github" }, "original": { @@ -431,20 +427,18 @@ "lanzaboote": { "inputs": { "crane": "crane", - "flake-compat": "flake-compat_2", - "flake-parts": "flake-parts", "nixpkgs": [ "nixpkgs" ], - "pre-commit-hooks-nix": "pre-commit-hooks-nix", + "pre-commit": "pre-commit", "rust-overlay": "rust-overlay_3" }, "locked": { - "lastModified": 1756744479, - "narHash": "sha256-EyZXusK/wRD3V9vDh00W2Re3Eg8UQ+LjVBQrrH9dq1U=", + "lastModified": 1764622702, + "narHash": "sha256-HggOVvg2U3EwT44wPHEwFKromf9qR9rTqfV1i3q7rYs=", "owner": "nix-community", "repo": "lanzaboote", - "rev": "747b7912f49e2885090c83364d88cf853a020ac1", + "rev": "6242b3b2b5e5afcf329027ed4eb5fa6e2eab10f1", "type": "github" }, "original": { @@ -473,11 +467,11 @@ "nixpkgs": "nixpkgs_3" }, "locked": { - "lastModified": 1756852730, - "narHash": "sha256-qPere4RBHoZxiEGl8zXU8gjroZg4gkYGEwaAbKmL4vE=", + "lastModified": 1764554060, + "narHash": "sha256-vewrwjGqublgja1bvlIybRnlltKHLNlnP7WYDg+9h1Y=", "owner": "musnix", "repo": "musnix", - "rev": "7ccc92050e43dc92309396c6f2fe1f542214a242", + "rev": "599562080b2901046829ca69e0d1461041d27b32", "type": "github" }, "original": { @@ -498,11 +492,11 @@ "xwayland-satellite-unstable": "xwayland-satellite-unstable" }, "locked": { - "lastModified": 1760950171, - "narHash": "sha256-E2ySTu/oK7cYBdAI3tlGP9zVjF4mZgWJ1OZInBCMb00=", + "lastModified": 1764721873, + "narHash": "sha256-EHMH54iI7MYYb7mUBE6JUtbbVhHTF7jtkuZ0Lo1bkBg=", "owner": "sodiboo", "repo": "niri-flake", - "rev": "f851a923137c0a54719412146fd63d24b3214e60", + "rev": "f3935696628433007c582fc323730ba18f137a1d", "type": "github" }, "original": { @@ -531,11 +525,11 @@ "niri-unstable": { "flake": false, "locked": { - "lastModified": 1760940149, - "narHash": "sha256-KbM47vD6E0cx+v4jYQZ8mD5N186AKm2CQlyh34TW58U=", + "lastModified": 1764678181, + "narHash": "sha256-TMs2Px19UAG06zITXAH7efl7X8G7BDyMCy1ilX/8wy0=", "owner": "YaLTeR", "repo": "niri", - "rev": "b3245b81a6ed8edfaf5388a74d2e0a23c24941e5", + "rev": "f874b2fce50e0f7ba21e270c86cfa168a1506b82", "type": "github" }, "original": { @@ -601,11 +595,11 @@ }, "nixpkgs-master": { "locked": { - "lastModified": 1760959718, - "narHash": "sha256-BHneo3Wb4Zg6jDgsLwfsklCR6we8HDrS3dMHmYk7kKY=", + "lastModified": 1764767520, + "narHash": "sha256-gs0x3CIkBN/2ALvfNkKZ82NJe/k/WrddcwT/NstLpUo=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "4fb2921e644ef2e3c84365336f632cae3af4ce0b", + "rev": "511f22afbfaccda862e13f8f2441c717bc962e89", "type": "github" }, "original": { @@ -617,11 +611,11 @@ }, "nixpkgs-stable": { "locked": { - "lastModified": 1760862643, - "narHash": "sha256-PXwG0TM7Ek87DNx4LbGWuD93PbFeKAJs4FfALtp7Wo0=", + "lastModified": 1764560356, + "narHash": "sha256-M5aFEFPppI4UhdOxwdmceJ9bDJC4T6C6CzCK1E2FZyo=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "33c6dca0c0cb31d6addcd34e90a63ad61826b28c", + "rev": "6c8f0cca84510cc79e09ea99a299c9bc17d03cb6", "type": "github" }, "original": { @@ -633,11 +627,11 @@ }, "nixpkgs-stable_2": { "locked": { - "lastModified": 1760862643, - "narHash": "sha256-PXwG0TM7Ek87DNx4LbGWuD93PbFeKAJs4FfALtp7Wo0=", + "lastModified": 1764560356, + "narHash": "sha256-M5aFEFPppI4UhdOxwdmceJ9bDJC4T6C6CzCK1E2FZyo=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "33c6dca0c0cb31d6addcd34e90a63ad61826b28c", + "rev": "6c8f0cca84510cc79e09ea99a299c9bc17d03cb6", "type": "github" }, "original": { @@ -649,11 +643,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1760703608, - "narHash": "sha256-MMIIShabm9KnYTmm0WbJ2h+jxI86gfE7NcByVOaBNNU=", - "owner": "PedroHLC", + "lastModified": 1764517877, + "narHash": "sha256-pp3uT4hHijIC8JUK5MEqeAWmParJrgBVzHLNfJDZxg4=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "95d8e5f411dc2fcc7f73a72766aaabfab1a1c456", + "rev": "2d293cbfa5a793b4c50d17c05ef9e385b90edf6c", "type": "github" }, "original": { @@ -665,11 +659,11 @@ }, "nixpkgs_3": { "locked": { - "lastModified": 1756542300, - "narHash": "sha256-tlOn88coG5fzdyqz6R93SQL5Gpq+m/DsWpekNFhqPQk=", + "lastModified": 1764242076, + "narHash": "sha256-sKoIWfnijJ0+9e4wRvIgm/HgE27bzwQxcEmo2J/gNpI=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "d7600c775f877cd87b4f5a831c28aa94137377aa", + "rev": "2fad6eac6077f03fe109c4d4eb171cf96791faa4", "type": "github" }, "original": { @@ -681,11 +675,11 @@ }, "nixpkgs_4": { "locked": { - "lastModified": 1760878510, - "narHash": "sha256-K5Osef2qexezUfs0alLvZ7nQFTGS9DL2oTVsIXsqLgs=", + "lastModified": 1764517877, + "narHash": "sha256-pp3uT4hHijIC8JUK5MEqeAWmParJrgBVzHLNfJDZxg4=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "5e2a59a5b1a82f89f2c7e598302a9cacebb72a67", + "rev": "2d293cbfa5a793b4c50d17c05ef9e385b90edf6c", "type": "github" }, "original": { @@ -697,11 +691,11 @@ }, "nixpkgs_5": { "locked": { - "lastModified": 1760878510, - "narHash": "sha256-K5Osef2qexezUfs0alLvZ7nQFTGS9DL2oTVsIXsqLgs=", + "lastModified": 1764517877, + "narHash": "sha256-pp3uT4hHijIC8JUK5MEqeAWmParJrgBVzHLNfJDZxg4=", "owner": "nixos", "repo": "nixpkgs", - "rev": "5e2a59a5b1a82f89f2c7e598302a9cacebb72a67", + "rev": "2d293cbfa5a793b4c50d17c05ef9e385b90edf6c", "type": "github" }, "original": { @@ -713,15 +707,15 @@ }, "nur": { "inputs": { - "flake-parts": "flake-parts_2", + "flake-parts": "flake-parts", "nixpkgs": "nixpkgs_5" }, "locked": { - "lastModified": 1760957406, - "narHash": "sha256-RbkddCl9zGR2Qokm1XaVy1rx/Thtlt844nrJQexbMpc=", + "lastModified": 1764767347, + "narHash": "sha256-dbu93ALez1KUDO8mJNgrrtkXbLXlT33G9+1/d9acc2U=", "owner": "nix-community", "repo": "NUR", - "rev": "002670169373b0e35a4adb92f02ed2a7edd09ac4", + "rev": "30d1eefb822b46740073584b1eed2dc03dc2197f", "type": "github" }, "original": { @@ -758,7 +752,7 @@ "nvf": { "inputs": { "flake-compat": "flake-compat_3", - "flake-parts": "flake-parts_3", + "flake-parts": "flake-parts_2", "mnw": "mnw", "nixpkgs": [ "nixpkgs" @@ -766,11 +760,11 @@ "systems": "systems" }, "locked": { - "lastModified": 1760781693, - "narHash": "sha256-kNLWWt/FXqDpPZdmNYCTeeUBYZM0RV0UL7+Cg3CvQMI=", + "lastModified": 1764300702, + "narHash": "sha256-JytizsFCUjx2U5dQYPuX59x7jcIwigGjBhrA3rZICCg=", "owner": "notashelf", "repo": "nvf", - "rev": "ea3ee477fa1814352b30d114f31bf4895eed053e", + "rev": "d5efd7cc1aaa3906537e92d35494e8b35aad778d", "type": "github" }, "original": { @@ -790,11 +784,11 @@ ] }, "locked": { - "lastModified": 1759321049, - "narHash": "sha256-8XkU4gIrLT2DJZWQyvsP5woXGZF5eE/7AnKfwQkiwYU=", + "lastModified": 1763909441, + "narHash": "sha256-56LwV51TX/FhgX+5LCG6akQ5KrOWuKgcJa+eUsRMxsc=", "owner": "nix-community", "repo": "plasma-manager", - "rev": "205dcfd4a30d4a5d1b4f28defee69daa7c7252cd", + "rev": "b24ed4b272256dfc1cc2291f89a9821d5f9e14b4", "type": "github" }, "original": { @@ -803,12 +797,9 @@ "type": "github" } }, - "pre-commit-hooks-nix": { + "pre-commit": { "inputs": { - "flake-compat": [ - "lanzaboote", - "flake-compat" - ], + "flake-compat": "flake-compat_2", "gitignore": "gitignore", "nixpkgs": [ "lanzaboote", @@ -816,11 +807,11 @@ ] }, "locked": { - "lastModified": 1750779888, - "narHash": "sha256-wibppH3g/E2lxU43ZQHC5yA/7kIKLGxVEnsnVK1BtRg=", + "lastModified": 1763988335, + "narHash": "sha256-QlcnByMc8KBjpU37rbq5iP7Cp97HvjRP0ucfdh+M4Qc=", "owner": "cachix", "repo": "pre-commit-hooks.nix", - "rev": "16ec914f6fb6f599ce988427d9d94efddf25fe6d", + "rev": "50b9238891e388c9fdc6a5c49e49c42533a1b5ce", "type": "github" }, "original": { @@ -854,11 +845,11 @@ "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1759199574, - "narHash": "sha256-w24RYly3VSVKp98rVfCI1nFYfQ0VoWmShtKPCbXgK6A=", + "lastModified": 1764124769, + "narHash": "sha256-vcoOEy3i8AGJi3Y2C48hrf6CuL2h8W1gLe1gNt72Kxg=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "381776b12d0d125edd7c1930c2041a1471e586c0", + "rev": "5da8c00313b4434f00aed6b4c94cd3b207bafdc5", "type": "github" }, "original": { @@ -875,11 +866,11 @@ ] }, "locked": { - "lastModified": 1760668505, - "narHash": "sha256-Ed0cGwPZtLRiSvMx4KgPx8bhLYzn5jiJ7s5o5vj4oG0=", + "lastModified": 1764643237, + "narHash": "sha256-6Ezx9DqVv5UZ7DBK9rcNwBuQUENFyWPS7M09I+FvNao=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "18234d2c11b10eaec9ccc3a1089a5ea872ec8858", + "rev": "e66d6b924ac59e6c722f69332f6540ea57c69233", "type": "github" }, "original": { @@ -896,11 +887,11 @@ ] }, "locked": { - "lastModified": 1754189623, - "narHash": "sha256-fstu5eb30UYwsxow0aQqkzxNxGn80UZjyehQVNVHuBk=", + "lastModified": 1764470739, + "narHash": "sha256-sa9f81B1dWO16QtgDTWHX8DQbiHKzHndpaunY5EQtwE=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "c582ff7f0d8a7ea689ae836dfb1773f1814f472a", + "rev": "3bfa664055e1a09c6aedab5533c5fc8d6ca5741a", "type": "github" }, "original": { @@ -911,17 +902,18 @@ }, "satisfactory-server": { "inputs": { + "flake-compat": "flake-compat_4", "nixpkgs": [ "nixpkgs" ], "steam-fetcher": "steam-fetcher" }, "locked": { - "lastModified": 1736724634, - "narHash": "sha256-qh4ZyULRXhC27FTMLH6riBXT0lxNceWETuIldWRMOS4=", + "lastModified": 1764518984, + "narHash": "sha256-U4J9Af8Wm9LdQQxATpwQJfa79ddHpTzjclYFVUlvz1A=", "owner": "nekowinston", "repo": "satisfactory-server-flake", - "rev": "b51eeb991866924a7cd6e863f5540fc84dffda45", + "rev": "d41cc9655520aa9b046469922fdbbe76c93df9c3", "type": "github" }, "original": { @@ -938,11 +930,11 @@ ] }, "locked": { - "lastModified": 1714795926, - "narHash": "sha256-PkgC9jqoN6cJ8XYzTA2PlrWs7aPJkM3BGiTxNqax0cA=", + "lastModified": 1758622040, + "narHash": "sha256-BRUZZoQDCD1qByJjHm4YKipQlB2PburWLG9Iaggr8XQ=", "owner": "nix-community", "repo": "steam-fetcher", - "rev": "12f66eafb7862d91b3e30c14035f96a21941bd9c", + "rev": "ab5e3a0828b4b179feb548c57be584ce812956a8", "type": "github" }, "original": { @@ -958,7 +950,7 @@ "base16-helix": "base16-helix", "base16-vim": "base16-vim", "firefox-gnome-theme": "firefox-gnome-theme", - "flake-parts": "flake-parts_4", + "flake-parts": "flake-parts_3", "gnome-shell": "gnome-shell", "nixpkgs": [ "nixpkgs" @@ -972,11 +964,11 @@ "tinted-zed": "tinted-zed" }, "locked": { - "lastModified": 1760472212, - "narHash": "sha256-4C3I/ssFsq8EgaUmZP0xv5V7RV0oCHgL/Rx+MUkuE+E=", + "lastModified": 1764722003, + "narHash": "sha256-s+rXjTHsjC39zcFFq8UkQPdpy/uzdhQU+RGvehYJQm0=", "owner": "nix-community", "repo": "stylix", - "rev": "8d008296a1b3be9b57ad570f7acea00dd2fc92db", + "rev": "ddc49fd564a599474d6587df25553cbfd7325ece", "type": "github" }, "original": { @@ -1116,11 +1108,11 @@ "xwayland-satellite-unstable": { "flake": false, "locked": { - "lastModified": 1759707084, - "narHash": "sha256-0pkftKs6/LReNvxw7DVTN2AJEheZVgyeK0Aarbagi70=", + "lastModified": 1764721075, + "narHash": "sha256-ChH4nq0cMEEkzkHqKlQt5Z7wxrk8ybcEHuA1YKAYmV0=", "owner": "Supreeeme", "repo": "xwayland-satellite", - "rev": "a9188e70bd748118b4d56a529871b9de5adb9988", + "rev": "1b918e29b419e89910014054e8b71d54c9235ea5", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index 26b9edd..793ecb8 100644 --- a/flake.nix +++ b/flake.nix @@ -17,7 +17,7 @@ # Automatic themeing (using home-manager module) stylix = { - url = "github:nix-community/stylix/"; + url = "github:nix-community/stylix"; inputs.nixpkgs.follows = "nixpkgs"; }; @@ -132,6 +132,7 @@ ./modules/packages.nix ./modules/aagl.nix ./modules/virtualisation.nix + ./modules/udev.nix inputs.aagl.nixosModules.default inputs.lanzaboote.nixosModules.lanzaboote inputs.musnix.nixosModules.musnix diff --git a/home-manager/home.nix b/home-manager/home.nix index 2c7f71f..d289422 100644 --- a/home-manager/home.nix +++ b/home-manager/home.nix @@ -8,7 +8,6 @@ home.homeDirectory = "/home/blue"; imports = [ - ./hyprland.nix ./waybar.nix ./swaync.nix ./swaylock.nix diff --git a/home-manager/packages.nix b/home-manager/packages.nix index 7e1a65e..32a772b 100644 --- a/home-manager/packages.nix +++ b/home-manager/packages.nix @@ -28,13 +28,14 @@ stable.qmk # qmk configurator wl-clipboard # command-line copy/paste lutris # game launcher - tenacity # small DAW + audacity # small DAW davinci-resolve # video editor libreoffice # office suite zoom-us # proprietary meeting app libnotify # notification server useful in scripting playerctl # lets you play and pause media from the terminal peaclock # timer and clock app with vi-like controls + teams-for-linux # unofficial ms teams app, works a treat including screenshare :) # Audio Plugins calf diff --git a/hosts/gabbielaptop/configuration.nix b/hosts/gabbielaptop/configuration.nix index 4c1ffdd..1c44edf 100644 --- a/hosts/gabbielaptop/configuration.nix +++ b/hosts/gabbielaptop/configuration.nix @@ -30,7 +30,7 @@ boot.initrd.kernelModules = [ "amdgpu" ]; boot.extraModulePackages = [ config.boot.kernelPackages.v4l2loopback ]; boot.kernelModules = [ "v4l2loopback" ]; - boot.kernelPackages = pkgs.linuxPackages_cachyos; # remember to set this to the kernel package SET, not the kernel package itself + boot.kernelPackages = pkgs.linuxKernel.kernels.linux_zen; # remember to set this to the kernel package SET, not the kernel package itself networking.hostName = "gabbielaptop"; # Define your hostname. @@ -63,6 +63,7 @@ LC_TIME = "en_GB.UTF-8"; }; + # Enable PPD to improve battery life maybe services.power-profiles-daemon.enable = true; powerManagement.powertop = { @@ -76,13 +77,6 @@ ''; }; - services.udev.extraRules = '' - # disable USB auto suspend for framework keyboard - ACTION=="bind", SUBSYSTEM=="usb", ATTR{idVendor}=="32ac", ATTR{idProduct}=="0012", TEST=="power/control", ATTR{power/control}="on" - # disable USB auto suspend for framework macropad - ACTION=="bind", SUBSYSTEM=="usb", ATTR{idVendor}=="32ac", ATTR{idProduct}=="0013", TEST=="power/control", ATTR{power/control}="on" - ''; - # Enable greetd with ReGreet services.greetd = { enable = true; @@ -98,9 +92,6 @@ ]; }; - # Enable the Hyprland WM functionality for NixOS (xdg portals etc.) - programs.hyprland.enable = true; - # Enable plasma 6 services.desktopManager.plasma6.enable = true; @@ -143,23 +134,31 @@ services.gnome.gnome-keyring.enable = true; + # Used to install grapheneOS + programs.adb.enable = true; + nix.settings.trusted-users = [ "root" "blue" ]; programs.fish.enable = true; - users.users.blue = { - isNormalUser = true; - description = "Gabriella Bere"; - extraGroups = [ - "networkmanager" - "wheel" - "dialout" - "audio" - "libvirtd" - ]; - shell = pkgs.fish; + users = { + users.blue = { + isNormalUser = true; + description = "Gabriella Bere"; + extraGroups = [ + "networkmanager" + "wheel" + "dialout" + "audio" + "libvirtd" + "adbusers" + "kvm" + ]; + shell = pkgs.fish; + }; + groups.adbusers.name = "adbusers"; }; # Enable fingerprint daemon diff --git a/modules/packages.nix b/modules/packages.nix index 3a8b927..6993c3c 100644 --- a/modules/packages.nix +++ b/modules/packages.nix @@ -17,5 +17,6 @@ nixd adwaita-icon-theme usbutils + android-tools ]; } diff --git a/modules/udev.nix b/modules/udev.nix new file mode 100644 index 0000000..f3b401d --- /dev/null +++ b/modules/udev.nix @@ -0,0 +1,1127 @@ +{ pkgs, ... }: { + services.udev = { + enable = true; + #required for grapehenOS install + #packages = [pkgs.android-udev-rules]; + extraRules = '' + # disable USB auto suspend for framework keyboard + ACTION=="bind", SUBSYSTEM=="usb", ATTR{idVendor}=="32ac", ATTR{idProduct}=="0012", TEST=="power/control", ATTR{power/control}="on" + # disable USB auto suspend for framework macropad + ACTION=="bind", SUBSYSTEM=="usb", ATTR{idVendor}=="32ac", ATTR{idProduct}=="0013", TEST=="power/control", ATTR{power/control}="on" + +# SPDX-FileCopyrightText: 2012-2023 JoesCat, M0Rf30 and contributors +# SPDX-License-Identifier: GPL-3.0-or-later + +# Latest version can be found at: +# + +# These rules refer to: +# +# and include many suggestions from Arch Linux, GitHub and other Communities. + + +# Skip testing for android devices if device is not add, or usb +ACTION!="add", ACTION!="bind", GOTO="android_usb_rules_end" +SUBSYSTEM!="usb", GOTO="android_usb_rules_end" + +# Skip testing for unexpected devices like hubs, controllers or printers +ATTR{bDeviceClass}=="09", GOTO="android_usb_rules_end" +ENV{ID_MODEL}=="Controller", GOTO="android_usb_rules_end" +ENV{ID_USB_INTERFACES}=="*:0701??:*", GOTO="android_usb_rules_end" + +# Devices listed here are connected by USB + +# Acer +ATTR{idVendor}!="0502", GOTO="not_Acer" +# Iconia Tab A1-830 +ATTR{idProduct}=="3604", GOTO="adbfast" +# Iconia Tab A210 (33cc=normal,33cb=debug) +ATTR{idProduct}=="33cb", GOTO="adb" +# Iconia Tab A500 +ATTR{idProduct}=="3325", GOTO="adbfast" +# Liquid (3202=normal,3203=debug) +ATTR{idProduct}=="3203", GOTO="adb" +GOTO="android_usb_rules_end" +LABEL="not_Acer" + +# Actions Semiconductor Co., Ltd +# Denver TAD 70111 +ATTR{idVendor}=="10d6", ATTR{idProduct}=="0c02", GOTO="adb" + +# ADVANCE (Need product specific rules) +# S5 +ATTR{idVendor}=="0a5c", ATTR{idProduct}=="e681", GOTO="adb" + +# Allwinner Technology +ATTR{idVendor}!="1f3a", GOTO="not_Allwinner" +# Prestigio PER3464B ebook reader (Mass storage mode) +ATTR{idProduct}=="1000", GOTO="adbmtp" +# Allwinner Technology Android device in fastboot mode +ATTR{idProduct}=="1010", GOTO="adbfast" +GOTO="android_usb_rules_end" +LABEL="not_Allwinner" + +# Amazon Lab126 +ATTR{idVendor}!="1949", GOTO="not_Amazon" +# Amazon Kindle Fire +ATTR{idProduct}=="0006", GOTO="adbfast" +# Amazon Kindle 8 2016 (giza) (0bb4:0c01=fastboot 0231=mtp 0232=adb,mtp 0233=ptp 0234=adb,ptp) +ATTR{idProduct}=="0232", GOTO="adbmtp" +ATTR{idProduct}=="0234", GOTO="adbptp" +# Amazon Kindle 10 2021 (trona) (05e0=fastboot 05e1=mtp 05e1=chg 05e2=adb,mtp 05e3=ptp 05e4=adb,ptp 05e8=adb,chg=05e8 2046=midi 2048=adb,midi) +ATTR{idProduct}=="05e0", GOTO="adbfast" +ATTR{idProduct}=="05e2", GOTO="adbmtp" +ATTR{idProduct}=="05e4", GOTO="adbptp" +ATTR{idProduct}=="05e8", GOTO="adb" +ATTR{idProduct}=="2048", GOTO="adbmidi" +# Amazon Fire TV Stick Lite (3rd gen) +ATTR{idProduct}=="03a8", GOTO="adbfast" +# Amazon Fire 7 (mustang) +ATTR{idProduct}=="03c8", GOTO="adbfast" +ATTR{idProduct}=="03cb", GOTO="adbfast" +# Amazon Fire HD 8 2018 (karnak) +ATTR{idProduct}=="0338", GOTO="adbfast" +ATTR{idProduct}=="033b", GOTO="adbfast" +# Amazon Fire HD 8 2020 10th gen (onyx) (0581=mtp 0581=chg 0582=adb,mtp 0583=ptp 0584=adb,ptp 0588=adb,chg 2046=midi 2048=adb,midi) +ATTR{idProduct}=="0582", GOTO="adbmtp" +ATTR{idProduct}=="0584", GOTO="adbptp" +ATTR{idProduct}=="0588", GOTO="adb" +ATTR{idProduct}=="2048", GOTO="adbmidi" +# Amazon Fire HD 8 2022 (raphite) +ATTR{idProduct}=="0658", GOTO="adbfast" +# Amazon Fire HD 10 2023 (tungsten) +ATTR{idProduct}=="06f8", GOTO="adbfast" +GOTO="android_usb_rules_end" +LABEL="not_Amazon" + +# Archos +ATTR{idVendor}!="0e79", GOTO="not_Archos" +# 43 +ATTR{idProduct}=="1417", GOTO="adbfast" +# 79 Xenon +ATTR{idProduct}=="303e", GOTO="adbfast" +# 101 +ATTR{idProduct}=="1411", GOTO="adbfast" +# 101 xs +ATTR{idProduct}=="1549", GOTO="adbfast" +GOTO="android_usb_rules_end" +LABEL="not_Archos" + +# Ascom +ATTR{idVendor}!="1768", GOTO="not_Ascom" +ATTR{idProduct}=="0007", GOTO="adb" +ATTR{idProduct}=="000e", GOTO="adb" +ATTR{idProduct}=="4ee7", GOTO="adb" +ATTR{idProduct}=="0013", GOTO="adb" +ATTR{idProduct}=="0011", GOTO="adb" +GOTO="android_usb_rules_end" +LABEL="not_Ascom" + +# ASUSTeK +ATTR{idVendor}!="0b05", GOTO="not_Asus" +# False positive - accessory +ATTR{idProduct}=="1???", GOTO="android_usb_rules_end" +# Zenphone 2 (ZE500CL) (7770=adb 7773=mtp,adb 7775=rndis,adb,mass_storage 7777=ptp,adb 5F03=mtp,adb,pclink,mass_storage 5F05=rndis,adb,pclink,mass_storage 5F07=ptp,adb,pclink) +# Zenfone GO (ZB500KL) (7772=mtp 7773=mtp,adb 7774=rndis 7775=rndis,adb 7776=ptp 7777=ptp,adb) +ATTR{idProduct}=="7770", GOTO="adb" +ATTR{idProduct}=="7771", GOTO="adbfast" +ATTR{idProduct}=="7773", GOTO="adbmtp" +ATTR{idProduct}=="7775", ENV{adb_adbmass}="yes", GOTO="adbrndis" +ATTR{idProduct}=="7777", GOTO="adbptp" +ATTR{idProduct}=="5F03", GOTO="adbmtp" +ATTR{idProduct}=="5F07", GOTO="adbptp" +ATTR{idProduct}=="5F05", ENV{adb_adbmass}="yes", GOTO="adbrndis" +# Zenphone 4 (581f=mtp,adb 583f=rndis,adb) +ATTR{idProduct}=="581f", GOTO="adbmtp" +ATTR{idProduct}=="583f", GOTO="adbrndis" +# TF300 (4c80=mtp 4c81=mtp,adb) +# TF700 (4c90=mtp 4c91=mtp,adb) +# Zenphone 5 (4c90=normal 4c91=debug 4daf=Fastboot 7780=mtp 7781=mtp,adb) +# TF701T (4ca0=mtp, 4ca1=mtp,adb) +# ME302KL (4cc0=mtp, 4cc1=mtp,adb) +# ME301T (4cd0=mtp, 4cd1=mtp,adb) +# Fonepad 6 (4ce0=mtp, 4ce1=mtp,adb) +ATTR{idProduct}=="4c81", GOTO="adbmtp" +ATTR{idProduct}=="4c91", GOTO="adbmtp" +ATTR{idProduct}=="4ca1", GOTO="adbmtp" +ATTR{idProduct}=="4cc1", GOTO="adbmtp" +ATTR{idProduct}=="4cd1", GOTO="adbmtp" +ATTR{idProduct}=="4ce1", GOTO="adbmtp" +ATTR{idProduct}=="4daf", GOTO="adbfast" +ATTR{idProduct}=="7781", GOTO="adbmtp" +# SL101 (4e00=mtp, 4e01=mtp,adb) +# TF101 (4e0f=mtp, 4e1f=mtp,adb) +ATTR{idProduct}=="4e1f", GOTO="adbmtp" +# Tegra APX +ATTR{idProduct}=="7030", GOTO="adb" +GOTO="android_usb_rules_end" +LABEL="not_Asus" + +# BQ +ATTR{idVendor}!="2a47", GOTO="not_BQ" +# Aquaris 4.5, Krillin (0c02=mtp,adb 2008=mtp) +ATTR{idProduct}=="0c02", GOTO="adbmtp" +GOTO="android_usb_rules_end" +LABEL="not_BQ" + +# Castles +ATTR{idVendor}!="0ca6", GOTO="not_Castles" +# Saturn1000-E +ATTR{idProduct}=="a051", GOTO="user" +GOTO="android_usb_rules_end" +LABEL="not_Castles" + +# Dell (Need product specific rules) +#ATTR{idVendor}=="413c", ENV{adb_user}="yes" + +# Essential +ATTR{idVendor}!="2e17", GOTO="not_Essential" +# Essential PH-1 +ATTR{idProduct}=="c009", GOTO="adb" +ATTR{idProduct}=="c03[02]", GOTO="adb" +GOTO="android_usb_rules_end" +LABEL="not_Essential" + +# Fairphone 1 (see Hisense 109b) +# Fairphone 2 (f000=mtp,mass f003=mtp f005=tether f00e=rndis 90de=charge 90dc=charge,adb 9015=storage,adb, 9024=rndis,adb, 9039=mtp,adb 904d=ptp 904e=ptp,adb) 90bb=qualcom midi+adb +ATTR{idVendor}!="2ae5", GOTO="not_Fairphone2" +ATTR{idProduct}=="9015", GOTO="adb" +ATTR{idProduct}=="9024", GOTO="adbrndis" +ATTR{idProduct}=="9039", GOTO="adbmtp" +ATTR{idProduct}=="904e", GOTO="adbptp" +ATTR{idProduct}=="90bb", GOTO="adbmidi" +ATTR{idProduct}=="90dc", GOTO="adb" +GOTO="android_usb_rules_end" +LABEL="not_Fairphone2" + +# Foxconn +# Commtiva Z71, Geeksphone One +ATTR{idVendor}=="0489", ATTR{idProduct}=="c001", GOTO="adb" + +# Fujitsu/Fujitsu Toshiba (Need product specific rules) +#ATTR{idVendor}=="04c5", GOTO="user" + +# Fuzhou Rockchip Electronics +# Mediacom Smartpad 715i +ATTR{idVendor}!="2207", GOTO="not_Fuzhou" +ATTR{idProduct}=="0000", GOTO="adb" +# Ubislate 7Ci +ATTR{idProduct}=="0010", GOTO="adb" +# Anbernic RG353P - AOSP12beta#1 (0003=rndis 0006=adb,chg 0007=mtp 0008=ptp 0013=adb,rndis 0017=adb,mtp 0018=adb,ptp) +ATTR{idProduct}=="0006", GOTO="adb" +ATTR{idProduct}=="0013", GOTO="adbrndis" +ATTR{idProduct}=="0017", GOTO="adbmtp" +ATTR{idProduct}=="0018", GOTO="adbptp" +GOTO="android_usb_rules_end" +LABEL="not_Fuzhou" + +# Fibocom +ATTR{idVendor}!="2cb7", GOTO="not_Fibocom" +# FG180_NA +ATTR{idProduct}=="010b", GOTO="adbcdc" +GOTO="android_usb_rules_end" +LABEL="not_Fibocom" + +# Garmin-Asus (Need product specific rules) +#ATTR{idVendor}=="091e", GOTO="user" + +# Google +ATTR{idVendor}!="18d1", GOTO="not_Google" +# Nexus, Pixel (/XL/2/2XL) (4ee1=mtp 4ee2=mtp,adb 4ee3=rndis 4ee4=rndis,adb 4ee5=ptp 4ee6=ptp,adb 4ee7=adb 4ee8=midi 4ee9=midi,adb 2d00=accessory 2d01=accessory,adb 2d03=audio,adb 2d05=accessory,audio,adb) +# See https://android.googlesource.com/device/google/wahoo/+/master/usb/UsbGadget.cpp +# OnePlus 6 (4ee1=charging 4ee2=mtp,adb 4ee6=ptp,adb 4ee7=charging,adb) +# Onda V972 (0001=mass_storage 0006=mtp 0007=ptp 0008=camera) +# Pico i.MX7 Dual Development Board 4ee7=debug +# PinePhone (v1.2) (4ee0=fast 4ee1=mtp 4ee2=mtp,adb 4ee3=rndis 4ee4=rndis,adb 4ee5=ptp 4ee6=ptp,adb 4ee7=adb) +# Yandex Phone 4ee7=debug +# Fairphone3 (4ee1=mtp) +# Motorola G3 (2d02=audio 2d03=audio,adb 4ee8=midi 4ee9=midi,adb) +ATTR{idProduct}=="4ee0", GOTO="adbfast" +ATTR{idProduct}=="4ee2", GOTO="adbmtp" +ATTR{idProduct}=="4ee4", GOTO="adbrndis" +ATTR{idProduct}=="4ee6", GOTO="adbptp" +ATTR{idProduct}=="4ee7", GOTO="adb" +ATTR{idProduct}=="4ee8", GOTO="midi" +ATTR{idProduct}=="4ee9", GOTO="adbmidi" + +# Tensor Pixel phones (Pixel 7/7 pro/6/6A/6 Pro) 4eeb=cdc-ncm; 4eec=cdc-ncm,adb +ATTR{idProduct}=="4eec", GOTO="adbcdc" +ATTR{idProduct}=="4ee0", GOTO="adbfast" + +# Tensor Pixel phones (Pixel 7/7 pro/6/6A/6 Pro) 4eed=uvc; 4eee=uvc,adb +ATTR{idProduct}=="4eed", GOTO="uvc" +ATTR{idProduct}=="4eee", GOTO="adbuvc" + +# Pixel Watch 2 (4ee0=fastboot 4e11=adb) +ATTR{idProduct}=="4e11", GOTO="adb" + +# Pixel C Tablet (5202=mtp 5203=mtp,adb) +ATTR{idProduct}=="5201", GOTO="adbfast" +ATTR{idProduct}=="5203", GOTO="adbmtp" +ATTR{idProduct}=="5208", GOTO="adb" + +# Android Open Accessory device (2d00=accessory 2d01=accessory,adb 2d02=audio 2d03=audio,adb 2d04=accessory,audio 2d05=accessory,audio,adb) +ATTR{idProduct}=="2d00", GOTO="adb" +ATTR{idProduct}=="2d01", GOTO="adb" +ATTR{idProduct}=="2d03", GOTO="adbaud" +ATTR{idProduct}=="2d04", GOTO="adbaud" +ATTR{idProduct}=="2d05", GOTO="adbaud" +# Nexus 7 (4e40=fastboot 4e41=mtp 4e42=mtp,adb 4e43=ptp) Nexus 7 2012 (4e44=ptp) +ATTR{idProduct}=="4e40", GOTO="adbfast" +ATTR{idProduct}=="4e42", GOTO="adbmtp" +# Nexus S (4e20=fastboot 4e21=? 4e22=mass_storage,adb 4e24=rndis,adb) +# See https://android.googlesource.com/device/samsung/crespo/+/android-4.1.2_r2.1/init.herring.usb.rc +ATTR{idProduct}=="4e20", GOTO="adbfast" +ATTR{idProduct}=="4e22", GOTO="adbmass" +ATTR{idProduct}=="4e24", GOTO="adbrndis" +ATTR{idProduct}=="4e20", GOTO="adbfast" +# Galaxy Nexus, Galaxy Nexus (GSM) (4e30=fastboot) +ATTR{idProduct}=="4e30", GOTO="adbfast" +# Nexus One (4e11=normal 4e12=mtp,adb 4e13=tether 0fff=debug) +ATTR{idProduct}=="4e12", GOTO="adbmtp" +ATTR{idProduct}=="0fff", GOTO="adbfast" +# Xiaomi MiPhone Mi1/Mi1S (9024=ndis,adb 9025=mass_storage,adb 9026=mass storage f00e=ndis) +ATTR{idProduct}=="9024", GOTO="adb" +ATTR{idProduct}=="9025", GOTO="adbmass" +# Generic and unspecified debug interface (test after d00?) +# examples: Xiaomi Mi/Redmi 2, Anbernic RG353P +# Xiaomi Mi2 (d00d=bootloader d002=charger), LG-V20 (d00d=bootloader) +ATTR{idProduct}=="d00d", GOTO="adbfast" +# Nexus 4 (d001=fastboot d002=debug) +ATTR{idProduct}=="d001", GOTO="adbfast" +ATTR{idProduct}=="d002", GOTO="adb" +# LG G2x (d109=mtp d10a=mtp,adb) +ATTR{idProduct}=="d10a", GOTO="adbmtp" + +# Other vendors that also used duplicated Google's idVendor code follows: +# IDEA XDS-1078 (debug=2c11) +ATTR{idProduct}=="2c11", GOTO="adb" +# Hisense U8G Smart TV (MTK MT5895) +ATTR{idProduct}=="0d02", GOTO="adbfast" +GOTO="android_usb_rules_end" +LABEL="not_Google" + +# Haier (Need product specific rules) +#ATTR{idVendor}=="201e", GOTO="user" + +# Hisense (includes Fairphone 1) (Need product specific rules) +#ATTR{idVendor}=="109b", GOTO="user" + +# Honeywell/Foxconn +ATTR{idVendor}!="0c2e", GOTO="not_Honeywell" +# D70e +ATTR{idProduct}=="0ba3", GOTO="adb" +GOTO="android_usb_rules_end" +LABEL="not_Honeywell" + +# HTC +ATTR{idVendor}!="0bb4", GOTO="not_HTC" +# Android phone (0fff=fastboot 0001=mass_storage) +ATTR{idProduct}=="0001", GOTO="mass" +ATTR{idProduct}=="0fff", GOTO="adbfast" +# ADP1, Dream, G1, HD2, Magic, Tattoo (0c01=mass_storage, 0c02=mass_storage,adb) +# Desire/desire HD/Hero (0ce5=debug 0fb4=rndis 0ff8=tether 0ff9=charge,mass_storage 0ffc=sync_manager 0ffe=modem) +# NOTE: Amazon Kindle 8 2016 (giza) (fastboot=0bb4:0c01 conflicts with mass storage=0c01) +ATTR{idProduct}=="0c01", GOTO="mass" +ATTR{idProduct}=="0c02", GOTO="adbmass" +ATTR{idProduct}=="0ce5", GOTO="adb" +ATTR{idProduct}=="0ff9", GOTO="mass" +# ChaCha +ATTR{idProduct}=="0cb2", GOTO="adbfast" +# Desire (Bravo) (0c87=debug 0c99=debug) +ATTR{idProduct}=="0c87", GOTO="adb" +ATTR{idProduct}=="0c99", GOTO="adb" +# Desire HD (0ca2=debug 0ff8=tether 0ff9=charge 0ffe=modem) +ATTR{idProduct}=="0ca2", GOTO="adb" +# Desire S (Saga), Desire HD, Hero, Thunderbolt (0cab=syncmode 0ff9=charge) +ATTR{idProduct}=="0cab", SYMLINK+="android_adb" +# Desire Z +ATTR{idProduct}=="0c91", GOTO="adbfast" +# Evo Shift 4G (0c8d=debug 0ca5=?) +ATTR{idProduct}=="0c8d", GOTO="adb" +ATTR{idProduct}=="0ca5", SYMLINK+="android_adb" +# Hero (GSM), Desire +ATTR{idProduct}=="0c99", SYMLINK+="android_adb" +# Hero (CDMA) +ATTR{idProduct}=="0c9a", SYMLINK+="android_adb" +# Incredible +ATTR{idProduct}=="0c9e", SYMLINK+="android_adb" +# Incredible rev 0002 +ATTR{idProduct}=="0c8d", SYMLINK+="android_adb" +# MyTouch 4G +ATTR{idProduct}=="0c96", SYMLINK+="android_adb" +# One (m7) && One (m8) +ATTR{idProduct}=="0c93", SYMLINK+="android_adb" +# Sensation, One (0f87=mtp,?,adb) +ATTR{idProduct}=="0f87", GOTO="adbmtp" +ATTR{idProduct}=="0ff0", SYMLINK+="android_fastboot" +# One X +ATTR{idProduct}=="0cd6", SYMLINK+="android_adb" +# Slide +ATTR{idProduct}=="0e03", SYMLINK+="android_adb" +# Vision +ATTR{idProduct}=="0c91", SYMLINK+="android_adb" +# Wildfire +ATTR{idProduct}=="0c8b", GOTO="adbfast" +# Wildfire S +ATTR{idProduct}=="0c86", GOTO="adbfast" +# Zopo ZP900, Fairphone 1 +ATTR{idProduct}=="0c03", GOTO="adbfast" +# Zopo C2, Android phone via MTP [MT65xx] (2008=mtp) +ATTR{idProduct}=="2008", GOTO="mtp" +# Android phone via PTP [Wiko Cink Peax 2] (200b=ptp) +ATTR{idProduct}=="200b", GOTO="ptp" +# Desire 510 (05fd=mtp,adb) +ATTR{idProduct}=="05fd", GOTO="adbmtp" +# Droid DNA (0dff=mtp,ums,adb 0ebd=mtp,ums) +ATTR{idProduct}=="0dff", GOTO="adbmtp" +ATTR{idProduct}=="0ebd", GOTO="mtp" +# Droid Incredible 4G LTE (0e31=mtp 0e32=mtp,adb) +ATTR{idProduct}=="0e31", GOTO="mtp" +ATTR{idProduct}=="0e32", GOTO="adbmtp" +# One (0dea=mtp,ums,adb 0f87=mtp,?,adb 0f5f=mtp,cdc,adb 0f60=mtp,cdc 0f63=mtp,adb 0f64=mtp) +ATTR{idProduct}=="0dea", GOTO="adbmtp" +ATTR{idProduct}=="0f87", GOTO="adbmtp" +ATTR{idProduct}=="0f5f", ENV{adb_adbcdc}="yes", GOTO="adbmtp" +ATTR{idProduct}=="0f60", ENV{adb_cdc}="yes", GOTO="mtp" +ATTR{idProduct}=="0f63", GOTO="adbmtp" +ATTR{idProduct}=="0f64", GOTO="mtp" +# One M8 Google Play Edition (060b=mtp,adb) +ATTR{idProduct}=="060b", GOTO="adbmtp" +# One M8 (061a=mtp,adb 0f25=mtp 0fb4=mtp,ums,adb 0fb5=mtp,ums) +ATTR{idProduct}=="061a", GOTO="adbmtp" +ATTR{idProduct}=="0f25", GOTO="mtp" +ATTR{idProduct}=="0fb4", GOTO="adbmtp" +ATTR{idProduct}=="0fb5", GOTO="mtp" +# HP Touchpad (685c=mtp 6860=mtp,adb) +ATTR{idProduct}=="6860", GOTO="adbmtp" +ENV{adb_user}="yes" +GOTO="android_usb_rule_match" +LABEL="not_HTC" + +# Huawei +ATTR{idVendor}!="12d1", GOTO="not_Huawei" +# IDEOS (1037=? 1038=debug 1039=tether) +ATTR{idProduct}=="1038", GOTO="adbfast" +# U8850 Vision +ATTR{idProduct}=="1021", GOTO="adbfast" +# HiKey (1050=usbnet 1057=adb) +ATTR{idProduct}=="1050", SYMLINK+="android_adb" +ATTR{idProduct}=="1057", GOTO="adb" +# Honor 6 +ATTR{idProduct}=="103a", SYMLINK+="android_adb" +ATTR{idProduct}=="1051", GOTO="mtp" +# MediaPad M2-A01L +ATTR{idProduct}=="1052", GOTO="mtp" +# P7-L10 (1052=?mtp 1053=ptp 1054=ptp,adb) +ATTR{idProduct}=="1054", GOTO="adbptp" +# MediaPad T3 +ATTR{idProduct}=="107d", SYMLINK+="android_adb" +# P10 Lite +ATTR{idProduct}=="107e", SYMLINK+="android_adb" +# Watch +ATTR{idProduct}=="1c2c", GOTO="adb" +# Mate 9 +ATTR{idProduct}=="107e", SYMLINK+="android_adb" +GOTO="android_usb_rules_end" +LABEL="not_Huawei" + +# Intel +ATTR{idVendor}!="8087", GOTO="not_Intel" +# Geeksphone Revolution +ATTR{idProduct}=="0a16", GOTO="adb" +# Chuwi Hi 10 Pro (HQ64) +ATTR{idProduct}=="2a65", GOTO="adb" +ATTR{idProduct}=="07ef", GOTO="adb" +# Asus ZenFone 2 (ADB Sideload in TWRP Recovery) +ATTR{idProduct}=="0a5d", GOTO="adb" +# ASUS MeMo Pad 7 ME176C/CX (DNX/Rescue mode) +ATTR{idProduct}=="0a65", GOTO="adbfast" +# Reference Boards using kernelflinger +# See https://github.com/intel/kernelflinger/blob/master/libefiusb/usb.c#L56 +ATTR{idProduct}=="09ef", GOTO="adbfast" +GOTO="android_usb_rules_end" +LABEL="not_Intel" + +# IUNI +ATTR{idVendor}!="271d", GOTO="not_IUNI" +# Gionee (3f11=mass,adb) +ATTR{idProduct}=="3f11", GOTO="adbmass" +# U3 +ATTR{idProduct}=="bf39", GOTO="adb" +GOTO="android_usb_rules_end" +LABEL="not_IUNI" + +# K-Touch (Need product specific rules) +#ATTR{idVendor}=="24e3", GOTO="user" + +# KT Tech (Need product specific rules) +#ATTR{idVendor}=="2116", GOTO="user" + +# Kyocera (Need product specific rules) +#ATTR{idVendor}=="0482", ENV{adb_user}="yes" + +# Lenovo +ATTR{idVendor}!="17ef", GOTO="not_Lenovo" +# Lenovo Tab K10 +ATTR{idProduct}=="201c", GOTO="adb" +GOTO="android_usb_rules_end" +LABEL="not_Lenovo" + +# LeTv (LeECo) +ATTR{idVendor}!="2b0e", GOTO="not_letv" +# LEX720 LeEco Pro3 6GB (610c=normal,610d=debug, 610b=camera) +ATTR{idProduct}=="610d", GOTO="adbfast" +ENV{adb_user}="yes" +GOTO="android_usb_rule_match" +LABEL="not_letv" + +# LG +ATTR{idVendor}!="1004", GOTO="not_LG" +# Ally, Vortex, P500, P500h (61c5=charge 618e=debug 618f=mass_storage) +ATTR{idProduct}=="618e", GOTO="adb" +ATTR{idProduct}=="618f", GOTO="mass" +# G2 D802 (61f1=LG software mode) +ATTR{idProduct}=="61f1", SYMLINK+="android_adb" +# G2 D803 +ATTR{idProduct}=="618c", SYMLINK+="android_adb" +# G2 D803 rogers (631f=charge) +ATTR{idProduct}=="631f", SYMLINK+="android_adb" +# G3 (VS985), Android Phone (627f=mtp) +ATTR{idProduct}=="627f", GOTO="mtp" +# LM-X420xxx/G2/Optimus (6300=charge 631c=charge 631d=ptp 631e=ptp 633e=mtp 6344=tether 6348=midi 6356=CDrom) +# LG-V20 (62ce=mtp,cdc 633a=adp,cdc 18d1:d00d=fastboot) +ATTR{idProduct}=="631c", GOTO="adb" +ATTR{idProduct}=="631d", GOTO="ptp" +ATTR{idProduct}=="631e", GOTO="ptp" +ATTR{idProduct}=="633a", GOTO="adbcdc" +ATTR{idProduct}=="633e", GOTO="mtp" +ATTR{idProduct}=="6344", GOTO="rndis" +ATTR{idProduct}=="6348", GOTO="midi" +# Optimus LTE (61f9=mtp 61fe=tether) +ATTR{idProduct}=="6315", SYMLINK+="android_adb" +ATTR{idProduct}=="61f9", GOTO="mtp" +# Swift GT540 +ATTR{idProduct}=="61b4", SYMLINK+="android_adb" +# P500 CM10 +ATTR{idProduct}=="61a6", SYMLINK+="android_adb" +# L90 D410, Various (6300=charge) +ATTR{idProduct}=="6300", SYMLINK+="android_adb" +ENV{adb_user}="yes" +GOTO="android_usb_rule_match" +LABEL="not_LG" + +# Meizu +ATTR{idVendor}!="2a45", GOTO="not_Meizu" +# M1E +ATTR{idProduct}=="0c01", GOTO="adb" +# MX6 +ATTR{idProduct}=="0c02", GOTO="adb" +# M6T (untested; See +ATTR{idProduct}=="201c", GOTO="adb" +GOTO="android_usb_rules_end" +LABEL="not_Meizu" + +# Micromax +ATTR{idVendor}!="2a96", GOTO="not_Micromax" +# P702 +ATTR{idProduct}=="201d", GOTO="adbfast" +GOTO="android_usb_rules_end" +LABEL="not_Micromax" + +# Microsoft +ATTR{idVendor}!="045e", GOTO="not_Microsoft" +# Surface Duo +ATTR{idProduct}=="0c26", GOTO="adbfast" +# False positive xbox controllers 028e, 02ea, 0719 +ATTR{idProduct}=="02??", GOTO="android_usb_rules_end" +ATTR{idProduct}=="07??", GOTO="android_usb_rules_end" +ENV{adb_user}="yes" +GOTO="android_usb_rule_match" +LABEL="not_Microsoft" + +# Motorola +ATTR{idVendor}!="22b8", GOTO="not_Motorola" +# CLIQ XT/Quench +ATTR{idProduct}=="2d66", SYMLINK+="android_adb" +# Defy/MB525 +ATTR{idProduct}=="428c", SYMLINK+="android_adb" +# Droid +ATTR{idProduct}=="41db", SYMLINK+="android_adb" +# Razr XT912 +ATTR{idProduct}=="4362", GOTO="adbfast" +# Droid Turbo 2 +ATTR{idProduct}=="2ea4", GOTO="adbfast" +# Atrix/Razr HD (2e32=mtp 2e33=mtp,adb) +# Razr M (2e50=mtp 2e51=mtp,adb) +# Moto G3 (2e76=mtp,adb 2e81=charge,adb 2e82=mtp 2e83=ptp 2e84=ptp,adb 2e24=rndis 2e25=rndis,adb) +# Moto E/G dual sim (2e76=mtp,adb 2e80=fast 2e81=recovery 2e82=mtp 2e83=ptp 2e84=ptp,adb 2e24=rndis 2e25=rndis,adb) +# Moto Z3 Play, beckham, XT1929 +# For details see: +# 18d1:4ee8=midi; 18d1:4ee9=midi+adb +# BP TOOLS: 2ee5=charging, mtp, ptp; 2ee6=charging+adb, mtp+adb, ptp+adb; 2ee7=rndis; 2ee8=rndis+adb; 18d1:4ee8=midi; 18d1:4ee9=midi+adb +# QCOM: 05c6:9091=charing+adb, mtp+adb, ptp+adb; 05c6:9092=charging, mtp, ptp; 18d1:4ee8=midi; 18d1:4ee9=midi+adb; 22b8:2e24=rndis; 22b8:2e25=rndis+adb +ATTR{idProduct}=="2e24", GOTO="rndis" +ATTR{idProduct}=="2e25", GOTO="adbrndis" +ATTR{idProduct}=="2e33", GOTO="adbmtp" +ATTR{idProduct}=="2e51", GOTO="adbmtp" +ATTR{idProduct}=="2e76", GOTO="adbmtp" +ATTR{idProduct}=="2e80", GOTO="adbfast" +ATTR{idProduct}=="2e81", GOTO="adb" +ATTR{idProduct}=="2e84", GOTO="adbptp" +ATTR{idProduct}=="2eb7", GOTO="mass" +# Xoom (70a8=mtp 70a9=mtp,adb 70ae=rndis 70af=rndis,adb 70b0=acm 70b1=acm,adb 70b2=acm,rndis 70b3=acm,rndis,adb 70b4=ptp 70b5ptp,adb) +ATTR{idProduct}=="70a9", GOTO="adbmtp" +ATTR{idProduct}=="70ae", GOTO="rndis" +ATTR{idProduct}=="70af", GOTO="adbrndis" +ATTR{idProduct}=="70b1", GOTO="adbcdc" +ATTR{idProduct}=="70b3", GOTO="adbrndis" +ATTR{idProduct}=="70b5", GOTO="adbptp" +# XT890/907/Razr (710d=mtp 710e=mtp,adb 710f=mass) +ATTR{idProduct}=="710e", GOTO="adbmtp" +GOTO="android_usb_rules_end" +LABEL="not_Motorola" + +# MTK (MediaTek Inc) +ATTR{idVendor}!="0e8d", GOTO="not_MTK" +# Umidigi F1 (201c=adbfast) +# MT65xx/67xx (2000=cdc 2008=mtp 200a=mtp,cdc,adb 2012=mtp,cdc 201d=mtp,adb) +# Moto E22i (2005=rndis,adb 200c=ptp,adb 2048=midi,adb 201c=adb 201d=mtp,adb) +ATTR{idProduct}=="2005", GOTO="adbrndis" +ATTR{idProduct}=="200a", ENV{adb_adbcdc}="yes", GOTO="adbmtp" +ATTR{idProduct}=="200c", GOTO="adbptp" +ATTR{idProduct}=="2048", GOTO="adbmidi" +ATTR{idProduct}=="201c", GOTO="adb" +ATTR{idProduct}=="201d", GOTO="adbmtp" +GOTO="android_usb_rules_end" +LABEL="not_MTK" + +# NEC LifeTouch Note (0300=? 0301=debug) +ATTR{idVendor}=="0409", ATTR{idProduct}=="0300", GOTO="user" + +# Nextbit (Need product specific rules) +#ATTR{idVendor}=="2c3f", GOTO="user" + +# Nintendo +ATTR{idVendor}!="057e", GOTO="not_Nintendo" +# Switch +ATTR{idProduct}=="2000", GOTO="adb" +GOTO="android_usb_rules_end" +LABEL="not_Nintendo" + +# Nokia X (Need product specific rules) +#ATTR{idVendor}=="0421", GOTO="user" + +# Nokia 3 (Need product specific rules) +#ATTR{idVendor}=="2e04", GOTO="user" + +# Nook (Barnes & Noble) (Need product specific rules) +ATTR{idVendor}!="2080", GOTO="not_Nook" +# Glowlight 3 +ATTR{idProduct}=="000b", GOTO="adb" +GOTO="android_usb_rules_end" +LABEL="not_Nook" + +# Nvidia +ATTR{idVendor}!="0955", GOTO="not_Nvidia" +# Audi SDIS Rear Seat Entertainment Tablet +# Folio +ATTR{idProduct}=="7000", SYMLINK+="android_fastboot" +ATTR{idProduct}=="7100", GOTO="user" +# SHIELD Tablet (cf05=mtp,adb cf06= cf07=mtp cf08= cf09=) +ATTR{idProduct}=="cf05", GOTO="adbmtp" +ATTR{idProduct}=="cf09", GOTO="adb" +# Shield TV (b42a=mtp) +ATTR{idProduct}=="b442", SYMLINK+="android_fastboot" +ENV{adb_user}="yes" +GOTO="android_usb_rule_match" +LABEL="not_Nvidia" + +# Oculus +ATTR{idVendor}!="2833", GOTO="not_Oculus" +# Oculus Go +ATTR{idProduct}=="0083", GOTO="user" +# Oculus Quest +ATTR{idProduct}=="0183", GOTO="user" +# Oculus Quest 2, Quest 3 +ATTR{idProduct}=="0186", GOTO="user" +GOTO="android_usb_rules_end" +LABEL="not_Oculus" + +# Pico XR +ATTR{idVendor}!="2d40", GOTO="not_Pico" +# Pico 4 +ATTR{idProduct}=="00b7", GOTO="user" +GOTO="android_usb_rules_end" +LABEL="not_Pico" + +# OnePlus(Oreo) +ATTR{idVendor}!="2a70", GOTO="not_OnePlus" +# Oneplus 3T/5T/6 (4ee7=charge,adb) +# OnePlus 6, 4ee1=charging, 4ee2=MTP+debug, 4ee6=PTP+debug, 4ee7=charging+debug +ATTR{idProduct}=="4ee2", GOTO="adbmtp" +ATTR{idProduct}=="4ee6", GOTO="adbptp" +ATTR{idProduct}=="4ee7", GOTO="adb" +# OnePlus 6T +ATTR{idProduct}=="d001", GOTO="adb" +# OnePlus Nord N10 4G USB tethering mode +ATTR{idProduct}=="9024", GOTO="adb" +# OnePlus 3T with Oreo MIDI mode 90bb=midi,adb 9011=mtp 904d=ptp 904e=ptp,adb +# OnePlus 7T (9012=mtp,adb) +ATTR{idProduct}=="9011", GOTO="mtp" +ATTR{idProduct}=="9012", GOTO="adbmtp" +ATTR{idProduct}=="904d", GOTO="ptp" +ATTR{idProduct}=="904e", GOTO="adbptp" +ATTR{idProduct}=="90bb", GOTO="adbmidi" +GOTO="android_usb_rules_end" +LABEL="not_OnePlus" + +# Oppo +ATTR{idVendor}!="22d9", GOTO="not_Oppo" +# Find 5 (2767=debug) +ATTR{idProduct}=="2767", GOTO="adb" +# Realme 8, OnePlus 9 Pro, Watch=adb +ATTR{idProduct}=="2769", GOTO="adb" +ATTR{idProduct}=="2764", GOTO="mtp" +# Oppo Watch, fastboot +ATTR{idProduct}=="2024", GOTO="user" +# RMX3231 - Realme C11 20221, normal, rndis, mtp +ATTR{idProduct}=="200e", GOTO="user" +ATTR{idProduct}=="2028", GOTO="user" +ATTR{idProduct}=="2026", GOTO="user" +# OnePlus 7a (2774=mass,adb) +# OnePlus 7T (2765=adb,mtp 2766=rndis,adb) +# OnePlus 8T (2771=adb,ptp 2772=adb,mtp) +ATTR{idProduct}=="2765", GOTO="adbmtp" +ATTR{idProduct}=="2766", GOTO="adbrndis" +ATTR{idProduct}=="2771", GOTO="adbptp" +ATTR{idProduct}=="2772", GOTO="adbmtp" +ATTR{idProduct}=="2774", GOTO="adbmass" +GOTO="android_usb_rules_end" +LABEL="not_Oppo" + +# OTGV (Need product specific rules) +#ATTR{idVendor}=="2257", GOTO="user" + +# Pantech (SK Teletech Co, Ltd.) (Need product specific rules) +#ATTR{idVendor}=="10a9", GOTO="user" + +# Parrot SA (Car HUD) +ATTR{idVendor}=="19cf", ATTR{idProduct}=="0001", GOTO="user" + +# Pegatron Chagall (5035=adb) +ATTR{idVendor}=="1d4d", ATTR{idProduct}=="5035", GOTO="adb" + +# Philips (and NXP) (Need product specific rules) +#ATTR{idVendor}=="0471", GOTO="user" + +# Pico (Need product specific rules) +#ATTR{idVendor}=="2d40", GOTO="user" + +# PMC-Sierra, (Panasonic Mobile communications, Matsushita) (Need product specific rules) +#ATTR{idVendor}=="04da", GOTO="user" + +# Point Mobile +ATTR{idVendor}!="2a48", GOTO="not_Point_Mobile" +# PM90 +ATTR{idProduct}=="5101", GOTO="user" +GOTO="android_usb_rules_end" +LABEL="not_Point_Mobile" + +# Polar +ATTR{idVendor}!="0da4", GOTO="not_Polar" +ENV{adb_user}="yes" +# Polar M600 (0010=adb 000b=fastboot) +ATTR{idProduct}=="0010", GOTO="adb" +ATTR{idProduct}=="000b", GOTO="adbfast" +GOTO="android_usb_rules_end" +LABEL="not_Polar" + +# Qualcomm (Wearners also 05c6) +ATTR{idVendor}!="05c6", GOTO="not_Qualcomm" +# Geeksphone Zero +ATTR{idProduct}=="9025", SYMLINK+="android_adb" +# OnePlus One (6765=mtp,adb 6764=mtp) +ATTR{idProduct}=="6765", GOTO="adbmtp" +# OnePlus Two +ATTR{idProduct}=="9011", SYMLINK+="android_adb" +# OnePlus 3 +ATTR{idProduct}=="900e", SYMLINK+="android_adb" +# OnePlus 3T +ATTR{idProduct}=="676c", SYMLINK+="android_adb" +# Snapdragon, OnePlus 3T w/ Oreo MIDI mode (9011=mtp 90bb=midi,adb 904e=ptp) +# Xiaomi A1 (90bb=midi,adb) +ATTR{idProduct}=="90bb", GOTO="adbmidi" +ATTR{idProduct}=="90dc", GOTO="adb" +# OnePlus 5 / 6 / 6T +ATTR{idProduct}=="9011", SYMLINK+="android_adb" +# OnePlus 6 / Asia +ATTR{idProduct}=="f003", SYMLINK+="android_adb" +# Yongnuo YN450m (identified in lsusb as Intex Aqua Fish & Jolla C Diagnostic Mode) +ATTR{idProduct}=="9091", GOTO="adb" +# Wileyfox Swift 2 Plus +ATTR{idProduct}=="0001", GOTO="user" +ENV{adb_user}="yes" +GOTO="android_usb_rule_match" +LABEL="not_Qualcomm" + +# Quectel +ATTR{idVendor}!="2c7c", GOTO="not_Quectel" +# EC25 +ATTR{idProduct}=="0125", GOTO="adb" +GOTO="android_usb_rules_end" +LABEL="not_Quectel" + +# Razer USA, Ltd. +ATTR{idVendor}!="1532", GOTO="not_Razer" +# Razer Phone 2 +ATTR{idProduct}=="9050", GOTO="adbfast" +ATTR{idProduct}=="9051", GOTO="adb" +GOTO="android_usb_rules_end" +LABEL="not_Razer" + +# Research In Motion, Ltd. +ATTR{idVendor}!="0fca", GOTO="not_RIM" +# BlackBerry DTEK60 +ATTR{idProduct}=="8042", GOTO="adbfast" +GOTO="android_usb_rules_end" +LABEL="not_RIM" + +# Samsung +ATTR{idVendor}!="04e8", GOTO="not_Samsung" +# False positive printer and other devices +ATTR{idProduct}!="6???", GOTO="android_usb_rules_end" +# Galaxy i5700 +ATTR{idProduct}=="681c", GOTO="adbfast" +# Galaxy i5800 (681c=debug 6601=fastboot 68a0=mediaplayer) +ATTR{idProduct}=="681c", SYMLINK+="android_adb" +ATTR{idProduct}=="6601", SYMLINK+="android_fastboot" +ATTR{idProduct}=="68a9", SYMLINK+="libmtp-%k", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" +# Galaxy i7500 +ATTR{idProduct}=="6640", GOTO="adbfast" +# Galaxy i9000 S, i9300 S3 +ATTR{idProduct}=="6601", SYMLINK+="android_adb" +ATTR{idProduct}=="685d", MODE="0660" +ATTR{idProduct}=="68c3", MODE="0660" +# Galaxy Ace (S5830) "Cooper" +ATTR{idProduct}=="689e", GOTO="adbfast" +# Galaxy Tab +ATTR{idProduct}=="6877", GOTO="adbfast" +# Galaxy Nexus (GSM) (6860=mtp,adb 6864=rndis,adb 6866=ptp,adb) +# Galaxy Core ([6860=mtp+6860=mtp,adb] 6863=tether 6864=tether,adb 6865=ptp 6866=ptp,adb) +# Galaxy A5 ([6860=mtp+6860=mtp,adb] 6863=rndis 6864=rndis,adb 6865=ptp 6866=ptp,adb 686c=midi 686c=midi,adb) +ATTR{idProduct}=="6860", SYMLINK+="android_adb", GOTO="mtp" +ATTR{idProduct}=="6864", GOTO="adbrndis" +ATTR{idProduct}=="6866", GOTO="adbptp" +ATTR{idProduct}=="686c", GOTO="adbmidi" +# Galaxy Core, Tab 10.1, i9100 S2, i9300 S3, N5100 Note (8.0), Galaxy S3 SHW-M440S 3G (Korea only) +ATTR{idProduct}=="685e", GOTO="adbfast" +# Galaxy A5, S4 GT-I9500 (seems to be universally used for this purpose) +ATTR{idProduct}=="685d", GOTO="odin" +ENV{adb_user}="yes" +GOTO="android_usb_rule_match" +LABEL="not_Samsung" + +# Sharp (Need product specific rules) +#ATTR{idVendor}=="04dd", GOTO="user" + +# SHIFT GmbH +ATTR{idVendor}!="3360", GOTO="not_shift" +# SHIFT5me +ATTR{idProduct}=="201c", GOTO="adb" +GOTO="android_usb_rules_end" +LABEL="not_shift" + +# SK Telesys +ATTR{idVendor}=="1f53", GOTO="user" + +# Sonim +ATTR{idVendor}=="1d9c", GOTO="user" + +# Sony +ATTR{idVendor}!="054c", GOTO="not_Sony" +# (Need product specific rules) +GOTO="android_usb_rules_end" +# False positives dualshock 0268,05c4,05c5, adapters 0ba0, bluetooth 09cc, 0ce6, VR 09af +ATTR{idProduct}=="02??", GOTO="android_usb_rules_end" +ATTR{idProduct}=="05??", GOTO="android_usb_rules_end" +ATTR{idProduct}=="09??", GOTO="android_usb_rules_end" +ATTR{idProduct}=="0b??", GOTO="android_usb_rules_end" +ATTR{idProduct}=="0c??", GOTO="android_usb_rules_end" +ENV{adb_user}="yes" +GOTO="android_usb_rule_match" +LABEL="not_Sony" + +# Sony Ericsson +ATTR{idVendor}!="0fce", GOTO="not_Sony_Ericsson" +# Xperia X10 mini (3137=mass_storage) +ATTR{idProduct}=="2137", SYMLINK+="android_adb" +# Xperia X10 mini pro (3138=mass_storage) +ATTR{idProduct}=="2138", SYMLINK+="android_adb" +# Xperia X8 (3149=mass_storage) +ATTR{idProduct}=="2149", SYMLINK+="android_adb" +# Xperia X12 (e14f=mass_storage) +ATTR{idProduct}=="614f", SYMLINK+="android_adb" +# Xperia Arc S +ATTR{idProduct}=="414f", GOTO="adbfast" +# Xperia Neo V (6156=debug 0dde=fastboot) +ATTR{idProduct}=="6156", SYMLINK+="android_adb" +ATTR{idProduct}=="0dde", SYMLINK+="android_fastboot" +# Xperia S +ATTR{idProduct}=="5169", GOTO="adbfast" +# Xperia SP +ATTR{idProduct}=="6195", GOTO="adbfast" +# Xperia L +ATTR{idProduct}=="5192", GOTO="adbfast" +# Xperia Mini Pro +ATTR{idProduct}=="0166", GOTO="adbfast" +# Xperia V +ATTR{idProduct}=="0186", GOTO="adbfast" +# Xperia Acro S +ATTR{idProduct}=="5176", GOTO="adbfast" +# Xperia Z1 Compact +ATTR{idProduct}=="51a7", GOTO="adbfast" +# Xperia Z2 +ATTR{idProduct}=="51ba", GOTO="adbfast" +# Xperia Z3 +ATTR{idProduct}=="01af", GOTO="adbfast" +# Xperia Z3 Compact +ATTR{idProduct}=="01bb", GOTO="adbfast" +# Xperia Z3+ Dual +ATTR{idProduct}=="51c9", GOTO="adbfast" +# Xperia XZ +ATTR{idProduct}=="51e7", GOTO="adbfast" +# Xperia XZ1 Compact +ATTR{idProduct}=="01f4", GOTO="adbfast" +# Xperia XZ2 Compact +ATTR{idProduct}=="b00b", GOTO="adbfast" +# Xperia 5 II +ATTR{idProduct}=="020d", GOTO="adbfast" +# Xperia Z Ultra +ATTR{idProduct}=="519c", GOTO="adbfast" +# Xperia Play +ATTR{idProduct}=="615d", GOTO="adbfast" +ENV{adb_user}="yes" +GOTO="android_usb_rule_match" +LABEL="not_Sony_Ericsson" + +# Spectralink +ATTR{idVendor}=="1973", GOTO="user" + +# Spreadtrum +ATTR{idVendor}!="1782", GOTO="not_Spreadtrum" +# (Unisoc) Various devices (4001=mtp 4002=mtp,adb 4003=mtp,adb) +ATTR{idProduct}=="4002", GOTO="adbmtp" +ATTR{idProduct}=="4003", GOTO="adbmtp" +GOTO="android_usb_rules_end" +LABEL="not_Spreadtrum" + +# T & A Mobile Phones +ATTR{idVendor}!="1bbb", GOTO="not_T_A_Mobile" +# Alcatel 1 2019 5033F +ATTR{idProduct}=="0c01", GOTO="adb" +# Alcatel OT991D +ATTR{idProduct}=="00f2", GOTO="adb" +# Alcatel OT6012A +ATTR{idProduct}=="0167", GOTO="adb" +# Alcatel 5024L +ATTR{idProduct}=="4ee7", GOTO="adb" +ENV{adb_user}="yes" +GOTO="android_usb_rule_match" +LABEL="not_T_A_Mobile" + +# Teleepoch (Need product specific rules) +#ATTR{idVendor}=="2340", GOTO="user" + +# Texas Instruments UsbBoot +ATTR{idVendor}=="0451", ATTR{idProduct}=="d00f", GOTO="user" +ATTR{idVendor}=="0451", ATTR{idProduct}=="d010", GOTO="user" + +# Toshiba (Need product specific rules) +#ATTR{idVendor}=="0930", GOTO="user" + +# Unitech Electronics +ATTR{idVendor}!="2e8e", GOTO="not_Unitech_Electronics" +# EA630 (96e1=normal 96e7=debug) +ATTR{idProduct}=="96e7", GOTO="adb" +ENV{adb_user}="yes" +GOTO="android_usb_rule_match" +LABEL="not_Unitech_Electronics" + +# Vivo (Need product specific rules) +ATTR{idVendor}=="2d95", GOTO="user" + +# Wileyfox KAZAM Tornado 348 (0c03=mass,adb) +ATTR{idVendor}=="2970", ATTR{idProduct}=="0c03", GOTO="adb" + +# XiaoMi +ATTR{idVendor}!="2717", GOTO="not_XiaoMi" +# Mi3 +ATTR{idProduct}=="0368", GOTO="adbmtp" +# RedMi 1S WCDMA (MTP+Debug) +ATTR{idProduct}=="1268", GOTO="adbmtp" +# RedMi 1S / RedMi / RedMi Note WCDMA (1210=ptp 1218=ptp,adb 1220=CDrom 1228=usb,adb 1240=mtp 1248=mtp,adb) +ATTR{idProduct}=="1218", GOTO="adbptp" +ATTR{idProduct}=="1228", GOTO="adb" +ATTR{idProduct}=="1248", GOTO="adbmtp" +# RedMi / RedMi Note 4G WCDMA (1311=ptp,adb 1328=usb,adb 1368=mtp,adb) +ATTR{idProduct}=="1318", GOTO="adbptp" +ATTR{idProduct}=="1328", GOTO="adb" +ATTR{idProduct}=="1368", GOTO="adbmtp" +# Mi2 (f003=mtp,mass_storage 9039=mtp,adb,mass_storage 904d=ptp 904e=ptp,adb f000=mass_storage 9015=mass_storage,adb f00e=ndis 9024=ndis,adb f00f=ndis 803e=ndis,adb) +# Mi2A / Mi2S (9039=mtp,adb, 904e=adb,ptp) +ATTR{idProduct}=="9039", GOTO="adbmtp" +ATTR{idProduct}=="904e", GOTO="adbptp" +ATTR{idProduct}=="9015", GOTO="adbmass" +ATTR{idProduct}=="9024", GOTO="adb" +ATTR{idProduct}=="803e", GOTO="adb" +# Redmi Note 3 (ff08=adb) +# Mi/Redmi (ff10=ptp ff18=ptp,adb ff40=mtp ff48=mtp,adb ff80=rndis ff88=rndis,adb) +# Mi Mix / A1 (ff18=ptp,adb ff28=storage,adb ff48=mtp,adb ff88=rndis,adb) +ATTR{idProduct}=="ff08", GOTO="adb" +ATTR{idProduct}=="ff18", GOTO="adbptp" +ATTR{idProduct}=="ff28", GOTO="adbmass" +ATTR{idProduct}=="ff40", GOTO="mtp" +ATTR{idProduct}=="ff48", GOTO="adbmtp" +ATTR{idProduct}=="ff88", GOTO="adbrndis" +# RedMi / RedMi Note 4G CDMA (ff68=usb,adb) / Mi4c / Mi5 +ATTR{idProduct}=="ff68", GOTO="adb" +GOTO="android_usb_rules_end" +LABEL="not_XiaoMi" + +# Yota +ATTR{idVendor}!="2916", GOTO="not_Yota" +# YotaPhone2 (f003=normal 9139=debug) +ATTR{idProduct}=="9139", GOTO="adb" +ENV{adb_user}="yes" +GOTO="android_usb_rule_match" +LABEL="not_Yota" + +# YU (Need product specific rules) +ATTR{idVendor}=="1ebf", GOTO="user" + +# Zebra +ATTR{idVendor}!="05e0", GOTO="not_Zebra" +# TC55 +ATTR{idProduct}=="2101", GOTO="adb" +# TC72 +ATTR{idProduct}=="2106", GOTO="adb" +# TC78 +ATTR{idProduct}=="2107", GOTO="adb" +GOTO="android_usb_rules_end" +LABEL="not_Zebra" + +# ZTE +ATTR{idVendor}!="19d2", GOTO="not_ZTE" +# ZTE Blade A5 2020 (0306=mtp,adb 0310=ptp,adb 0501=cdrom,adb 1352=charging,adb 1373=rndis,adb) +ATTR{idProduct}=="0306", GOTO="adbmtp" +ATTR{idProduct}=="0310", GOTO="adbptp" +ATTR{idProduct}=="0501", GOTO="adb" +ATTR{idProduct}=="1352", GOTO="adb" +ATTR{idProduct}=="1373", GOTO="adbrndis" +# Blade (1351=debug 1353=normal) +ATTR{idProduct}=="1351", GOTO="adb" +# Blade S (Crescent, Orange San Francisco 2) (1354=debug 1355=normal) +ATTR{idProduct}=="1354", GOTO="adb" +# P685M LTE modem +ATTR{idProduct}=="1275", GOTO="user" +# MF286[A] internal LTE modem +ATTR{idProduct}=="1432", GOTO="user" +# MF286D internal LTE modem +ATTR{idProduct}=="1485", GOTO="user" +# MF286R internal LTE modem +ATTR{idProduct}=="1489", GOTO="user" +# Nubia / RedMagic Series (NX***) +# See https://github.com/TadiT7/nubia_nx619j_dump/blob/NX619J-user-9-PKQ1.180929.001-eng.nubia.20181220.181559-release-keys/vendor/etc/init/hw/init.nubia.usb.rc +# (... ffc0=diag,mass_storage,adb ffc1=adb ffcb=rndis,adb ffcd=mass_storage,adb ffcf=mtp,adb ffd1=ptp,adb) +ATTR{idProduct}=="ffc0", GOTO="adbmass" +ATTR{idProduct}=="ffc1", GOTO="adb" +ATTR{idProduct}=="ffcb", GOTO="adbrndis" +ATTR{idProduct}=="ffcd", GOTO="adbmass" +ATTR{idProduct}=="ffcf", GOTO="adbmtp" +ATTR{idProduct}=="ffd1", GOTO="adbptp" +# modem,service,nema,adb +ATTR{idProduct}=="ffc9", GOTO="adb" +# modem,service,nema,mass_storage,adb +ATTR{idProduct}=="ffc7", GOTO="adb" +# diag,modem,mass_storage,adb +ATTR{idProduct}=="ffb0", GOTO="adb" +# diag,modem,service,mass_storage,adb +ATTR{idProduct}=="ffb2", GOTO="adb" +GOTO="android_usb_rules_end" +LABEL="not_ZTE" + +# ZUK (Need product specific rules) +#ATTR{idVendor}=="2b4c", GOTO="user" + +# Verifone +ATTR{idVendor}=="11ca", GOTO="user" + +# No android devices found +GOTO="android_usb_rules_end" + +# ADB Debug User (default) +LABEL="adb", ENV{adb_adb}="yes", GOTO="android_usb_rule_match" + +# ADB Debug and Audio Source +LABEL="adbaud", ENV{adb_adb}="yes", GOTO="android_usb_rule_match" + +# ADB Debug and AT-commands CDC Serial +LABEL="adbcdc", ENV{adb_adbcdc}="yes", GOTO="android_usb_rule_match" + +# ADB Debug and USB Video Class +LABEL="adbuvc", ENV{adb_adbuvc}="yes" +LABEL="uvc", ENV{adb_uvc}="yes", GOTO="android_usb_rule_match" + +# ADB Debug and Fastboot mode +LABEL="adbfast", ENV{adb_adbfast}="yes", GOTO="android_usb_rule_match" + +# ADB Debug and mass storage (note: generally android_ver<4.3; Moto Z3 Play when powered off) +LABEL="adbmass", ENV{adb_adbmass}="yes" +LABEL="mass", ENV{adb_mass}="yes", GOTO="android_usb_rule_match" + +# ADB Debug and MIDI mode (also check to see /dev/midi%n) +LABEL="adbmidi", ENV{adb_adbmidi}="yes" +LABEL="midi", ENV{adb_user}="yes", GOTO="android_usb_rule_match" + +# ADB Debug and MTP mode +LABEL="adbmtp", ENV{adb_adbmtp}="yes" +LABEL="mtp", ENV{adb_mtp}="yes", GOTO="android_usb_rule_match" + +# ADB Debug and PTP mode +LABEL="adbptp", ENV{adb_adbptp}="yes" +LABEL="ptp", ENV{adb_ptp}="yes", GOTO="android_usb_rule_match" + +# ADB Debug and Tether mode +LABEL="adbrndis", ENV{adb_adb}="yes" +LABEL="rndis", ENV{adb_user}="yes", GOTO="android_usb_rule_match" + +# Odin (Samsung-specific flashing protocol, add user SYMLINK) +LABEL="odin" + +# Add "android" SYMLINK +LABEL="user", ENV{adb_user}="yes" + +# Symlink common code to reduce steps above +LABEL="android_usb_rule_match" +ENV{adb_adbcdc}=="yes", ENV{adb_adb}="yes", SYMLINK+="android_cdc", SYMLINK+="android_cdc%n" +ENV{adb_adbfast}=="yes", ENV{adb_adb}="yes", ENV{adb_fast}="yes" +ENV{adb_adbmass}=="yes", ENV{adb_mass}="yes" +ENV{adb_adbmtp}=="yes", ENV{adb_adb}="yes", ENV{adb_mtp}="yes" +ENV{adb_adbptp}=="yes", ENV{adb_adb}="yes", ENV{adb_ptp}="yes" +ENV{adb_adbmidi}=="yes", ENV{adb_adb}="yes", SYMLINK+="android_midi", SYMLINK+="android_midi0%n" +ENV{adb_adbuvc}=="yes", ENV{adb_adb}="yes", ENV{adb_uvc}="yes" +ENV{adb_adb}=="yes", ENV{adb_user}="yes", SYMLINK+="android_adb" +ENV{adb_fast}=="yes", SYMLINK+="android_fastboot" +ENV{adb_mass}=="yes", ENV{adb_mtp}="yes" +ENV{adb_ptp}=="yes", ENV{adb_user}="yes", ATTR{bDeviceClass}=="00|02|06|ef|ff", ENV{adb_mtp}="yes" +ENV{adb_mtp}=="yes", ENV{adb_user}="yes", SYMLINK+="libmtp-%k", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" + +# Enable device as a user device if found (add an "android" SYMLINK) +ENV{adb_user}=="yes", MODE="0660", GROUP="adbusers", TAG+="uaccess", SYMLINK+="android", SYMLINK+="android%n" + +# Devices listed here {begin...end} are connected by USB +LABEL="android_usb_rules_end" + ''; + }; +}