diff --git a/flake.lock b/flake.lock index 40f754d..ddf0e8d 100644 --- a/flake.lock +++ b/flake.lock @@ -151,11 +151,11 @@ "nuscht-search": "nuscht-search" }, "locked": { - "lastModified": 1736069220, - "narHash": "sha256-76MaB3COao55nlhWmSmq9PKgu2iGIs54C1cAE0E5J6Y=", + "lastModified": 1736785029, + "narHash": "sha256-xHe4X4Je/4WjBL3BPlI1KGqA5N7VQpi4x57YYU9ZOlI=", "owner": "catppuccin", "repo": "nix", - "rev": "8eada392fd6571a747e1c5fc358dd61c14c8704e", + "rev": "4a5ac694d7f8a63dec75cbe0ac1c84c818b6b789", "type": "github" }, "original": { @@ -180,12 +180,12 @@ }, "catppuccin-v1_2": { "locked": { - "lastModified": 1734728407, - "narHash": "sha256-Let3uJo4YDyfqbqaw66dpZxhJB2TrDyZWSFd5rpPLJA=", - "rev": "23ee86dbf4ed347878115a78971d43025362fab1", - "revCount": 341, + "lastModified": 1734734291, + "narHash": "sha256-CFX4diEQHKvZYjnhf7TLg20m3ge1O4vqgplsk/Kuaek=", + "rev": "1e4c3803b8da874ff75224ec8512cb173036bbd8", + "revCount": 344, "type": "tarball", - "url": "https://api.flakehub.com/f/pinned/catppuccin/nix/1.2.0/0193e5e0-33b7-7149-a362-bfe56b20f64e/source.tar.gz" + "url": "https://api.flakehub.com/f/pinned/catppuccin/nix/1.2.1/0193e646-1107-7f69-a402-f2a3988ecf1d/source.tar.gz" }, "original": { "type": "tarball", @@ -250,11 +250,11 @@ ] }, "locked": { - "lastModified": 1736591904, - "narHash": "sha256-LFO8pSrPKrH8OPq2HaAuBG5skk8/MNJ/9YmK3KsnSks=", + "lastModified": 1736711425, + "narHash": "sha256-8hKhPQuMtXfJi+4lPvw3FBk/zSJVHeb726Zo0uF1PP8=", "owner": "nix-community", "repo": "disko", - "rev": "33827d2bd16bfe2e21b62956526c72d313595dfd", + "rev": "f720e64ec37fa16ebba6354eadf310f81555cc07", "type": "github" }, "original": { @@ -269,11 +269,11 @@ "nixpkgs-stable": "nixpkgs-stable_2" }, "locked": { - "lastModified": 1736615554, - "narHash": "sha256-R/YjqNsVVSzJT50zPRaxwr0foAMIGfeoqU2jOF4G5qk=", + "lastModified": 1736788127, + "narHash": "sha256-ssFq6P15HEhT1gVU8LD464hlnhapYRky449Y1R7QXfA=", "owner": "nix-community", "repo": "emacs-overlay", - "rev": "38789ef3dafe7a3a8927ccc874ddc90d0d5ef3b2", + "rev": "2126f88367e999c4ec9b50cd3966b32f7a27c66e", "type": "github" }, "original": { @@ -862,11 +862,11 @@ "zig": "zig" }, "locked": { - "lastModified": 1736633944, - "narHash": "sha256-AQsDtTcYFN1ETxeETysvI0f79/5DHQ4ON4c9quB9vrg=", + "lastModified": 1736780823, + "narHash": "sha256-0O+w/MYI7xC4h1MmNg8rPVUIGPIIZYv+Vq0ZAY+MnW4=", "owner": "ghostty-org", "repo": "ghostty", - "rev": "bdbd0263a1c55e656408c772718370c92374bedb", + "rev": "132c4f1f68d75813370cadfc090f96a32be19705", "type": "github" }, "original": { @@ -1015,11 +1015,11 @@ ] }, "locked": { - "lastModified": 1734366194, - "narHash": "sha256-vykpJ1xsdkv0j8WOVXrRFHUAdp9NXHpxdnn1F4pYgSw=", + "lastModified": 1736373539, + "narHash": "sha256-dinzAqCjenWDxuy+MqUQq0I4zUSfaCvN9rzuCmgMZJY=", "owner": "nix-community", "repo": "home-manager", - "rev": "80b0fdf483c5d1cb75aaad909bd390d48673857f", + "rev": "bd65bc3cde04c16755955630b344bc9e35272c56", "type": "github" }, "original": { @@ -1037,11 +1037,11 @@ ] }, "locked": { - "lastModified": 1734622215, - "narHash": "sha256-OOfI0XhSJGHblfdNDhfnn8QnZxng63rWk9eeJ2tCbiI=", + "lastModified": 1736508663, + "narHash": "sha256-ZOaGwa+WnB7Zn3YXimqjmIugAnHePdXCmNu+AHkq808=", "owner": "nix-community", "repo": "home-manager", - "rev": "1395379a7a36e40f2a76e7b9936cc52950baa1be", + "rev": "2532b500c3ed2b8940e831039dcec5a5ea093afc", "type": "github" }, "original": { @@ -1057,11 +1057,11 @@ ] }, "locked": { - "lastModified": 1736508663, - "narHash": "sha256-ZOaGwa+WnB7Zn3YXimqjmIugAnHePdXCmNu+AHkq808=", + "lastModified": 1736785676, + "narHash": "sha256-TY0jUwR3EW0fnS0X5wXMAVy6h4Z7Y6a3m+Yq++C9AyE=", "owner": "nix-community", "repo": "home-manager", - "rev": "2532b500c3ed2b8940e831039dcec5a5ea093afc", + "rev": "fc52a210b60f2f52c74eac41a8647c1573d2071d", "type": "github" }, "original": { @@ -1168,11 +1168,11 @@ "xdph": "xdph" }, "locked": { - "lastModified": 1736613484, - "narHash": "sha256-gYlminxNivqjOur5Zp6xDOh1U3VesO7/t+fNlV1WFH8=", + "lastModified": 1736701836, + "narHash": "sha256-gD2SA08Lfngi1Eguhoc4QHS5Tf4I76GaLr5ATpUXwwE=", "ref": "refs/heads/main", - "rev": "2778aff08fba59a34b404751039d7acb6bfb3bdf", - "revCount": 5665, + "rev": "a6b263713a2b862ed41362082e2147e081934077", + "revCount": 5670, "submodules": true, "type": "git", "url": "https://github.com/hyprwm/Hyprland" @@ -1370,21 +1370,6 @@ "type": "github" } }, - "impermanence": { - "locked": { - "lastModified": 1734945620, - "narHash": "sha256-olIfsfJK4/GFmPH8mXMmBDAkzVQ1TWJmeGT3wBGfQPY=", - "owner": "nix-community", - "repo": "impermanence", - "rev": "d000479f4f41390ff7cf9204979660ad5dd16176", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "impermanence", - "type": "github" - } - }, "ixx": { "inputs": { "flake-utils": [ @@ -1531,11 +1516,11 @@ "treefmt-nix": "treefmt-nix_3" }, "locked": { - "lastModified": 1736553940, - "narHash": "sha256-xicqHwvq2S/Y36DwcY+xGy6+4jdFT78bclBhwjs4KJY=", + "lastModified": 1736753650, + "narHash": "sha256-qSbPnZ2utGL39UD6lKi+K/7sWyZVl/kGZfOoy+xJEjA=", "owner": "nix-community", "repo": "neovim-nightly-overlay", - "rev": "b2237869f288c278b6fd429445d460cb44a0e788", + "rev": "9e2c41b7c12adc3ca17b1b50589f5234bcc0bbac", "type": "github" }, "original": { @@ -1547,11 +1532,11 @@ "neovim-src": { "flake": false, "locked": { - "lastModified": 1736553525, - "narHash": "sha256-Kfx1r0yVTTa83EdP7Ta5ValnXy4ak3F10hHCymDAU7o=", + "lastModified": 1736752727, + "narHash": "sha256-sFD18EfXyQrN51ru6uzCt20C3DT4qBipJ1PbP9hnw80=", "owner": "neovim", "repo": "neovim", - "rev": "fbe546e25d21f3184814d696c329d23d146bd615", + "rev": "2c16c849986794682a4776ff4ec100d00eeba5ca", "type": "github" }, "original": { @@ -1562,11 +1547,11 @@ }, "nixlib": { "locked": { - "lastModified": 1734829460, - "narHash": "sha256-dPhc+f2wkmhMqMIfq+hColJdysgVxKP9ilZ5bR0NRZI=", + "lastModified": 1736643958, + "narHash": "sha256-tmpqTSWVRJVhpvfSN9KXBvKEXplrwKnSZNAoNPf/S/s=", "owner": "nix-community", "repo": "nixpkgs.lib", - "rev": "0a31e8d833173ae63e43fd9dbff1ccf09c4f778c", + "rev": "1418bc28a52126761c02dd3d89b2d8ca0f521181", "type": "github" }, "original": { @@ -1583,11 +1568,11 @@ ] }, "locked": { - "lastModified": 1734915500, - "narHash": "sha256-A7CTIQ8SW0hfbhKlwK+vSsu4pD+Oaelw3v6goX6go+U=", + "lastModified": 1736730523, + "narHash": "sha256-mvTZ7fLKA6ggGnA8GZwcXV57EvVReRTCfi26xc08Q3g=", "owner": "nix-community", "repo": "nixos-generators", - "rev": "051d1b2dda3b2e81b38d82e2b691e5c2f4d335f4", + "rev": "74b8e31dd709760c86eed16b6c1d0b88d7360937", "type": "github" }, "original": { @@ -1598,11 +1583,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1736523798, - "narHash": "sha256-Xb8mke6UCYjge9kPR9o4P1nVrhk7QBbKv3xQ9cj7h2s=", + "lastModified": 1736701207, + "narHash": "sha256-jG/+MvjVY7SlTakzZ2fJ5dC3V1PrKKrUEOEE30jrOKA=", "owner": "nixos", "repo": "nixpkgs", - "rev": "130595eba61081acde9001f43de3248d8888ac4a", + "rev": "ed4a395ea001367c1f13d34b1e01aa10290f67d6", "type": "github" }, "original": { @@ -1672,11 +1657,11 @@ }, "nixpkgs-stable": { "locked": { - "lastModified": 1734600368, - "narHash": "sha256-nbG9TijTMcfr+au7ZVbKpAhMJzzE2nQBYmRvSdXUD8g=", + "lastModified": 1736061677, + "narHash": "sha256-DjkQPnkAfd7eB522PwnkGhOMuT9QVCZspDpJJYyOj60=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "b47fd6fa00c6afca88b8ee46cfdb00e104f50bca", + "rev": "cbd8ec4de4469333c82ff40d057350c30e9f7d36", "type": "github" }, "original": { @@ -1688,11 +1673,11 @@ }, "nixpkgs-stable_2": { "locked": { - "lastModified": 1736200483, - "narHash": "sha256-JO+lFN2HsCwSLMUWXHeOad6QUxOuwe9UOAF/iSl1J4I=", + "lastModified": 1736684107, + "narHash": "sha256-vH5mXxEvZeoGNkqKoCluhTGfoeXCZ1seYhC2pbMN0sg=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "3f0a8ac25fb674611b98089ca3a5dd6480175751", + "rev": "635e887b48521e912a516625eee7df6cf0eba9c1", "type": "github" }, "original": { @@ -1736,11 +1721,11 @@ }, "nixpkgs-stable_5": { "locked": { - "lastModified": 1736634154, - "narHash": "sha256-7Qoh6wVDj2Tov7uV2szrsVV4mJruh295DPd4EcBkL9c=", + "lastModified": 1736795688, + "narHash": "sha256-QRYJ/l4UcjcotdOWkT8Xdi5NNRRqWvIPhLjWtxwJHOk=", "owner": "nixos", "repo": "nixpkgs", - "rev": "56571f191ac650bb336b1451253add751ef91b1a", + "rev": "4616bdf77fdfc7c1b6276718c7496d305e4aa694", "type": "github" }, "original": { @@ -1800,11 +1785,11 @@ }, "nixpkgs_12": { "locked": { - "lastModified": 1736320768, - "narHash": "sha256-nIYdTAiKIGnFNugbomgBJR+Xv5F1ZQU+HfaBqJKroC0=", + "lastModified": 1736657626, + "narHash": "sha256-FWlPMUzp0lkQBdhKlPqtQdqmp+/C+1MBiEytaYfrCTY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "4bc9c909d9ac828a039f288cf872d16d38185db8", + "rev": "2f9e2f85cb14a46410a1399aa9ea7ecf433e422e", "type": "github" }, "original": { @@ -1816,11 +1801,11 @@ }, "nixpkgs_13": { "locked": { - "lastModified": 1736344531, - "narHash": "sha256-8YVQ9ZbSfuUk2bUf2KRj60NRraLPKPS0Q4QFTbc+c2c=", + "lastModified": 1736701207, + "narHash": "sha256-jG/+MvjVY7SlTakzZ2fJ5dC3V1PrKKrUEOEE30jrOKA=", "owner": "nixos", "repo": "nixpkgs", - "rev": "bffc22eb12172e6db3c5dde9e3e5628f8e3e7912", + "rev": "ed4a395ea001367c1f13d34b1e01aa10290f67d6", "type": "github" }, "original": { @@ -1864,11 +1849,11 @@ }, "nixpkgs_16": { "locked": { - "lastModified": 1728538411, - "narHash": "sha256-f0SBJz1eZ2yOuKUr5CA9BHULGXVSn6miBuUWdTyhUhU=", + "lastModified": 1736320768, + "narHash": "sha256-nIYdTAiKIGnFNugbomgBJR+Xv5F1ZQU+HfaBqJKroC0=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "b69de56fac8c2b6f8fd27f2eca01dcda8e0a4221", + "rev": "4bc9c909d9ac828a039f288cf872d16d38185db8", "type": "github" }, "original": { @@ -1954,11 +1939,11 @@ }, "nixpkgs_4": { "locked": { - "lastModified": 1734424634, - "narHash": "sha256-cHar1vqHOOyC7f1+tVycPoWTfKIaqkoe1Q6TnKzuti4=", + "lastModified": 1736012469, + "narHash": "sha256-/qlNWm/IEVVH7GfgAIyP6EsVZI6zjAx1cV5zNyrs+rI=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "d3c42f187194c26d9f0309a8ecc469d6c878ce33", + "rev": "8f3e1f807051e32d8c95cd12b9b421623850a34d", "type": "github" }, "original": { @@ -1970,11 +1955,11 @@ }, "nixpkgs_5": { "locked": { - "lastModified": 1736344531, - "narHash": "sha256-8YVQ9ZbSfuUk2bUf2KRj60NRraLPKPS0Q4QFTbc+c2c=", + "lastModified": 1736701207, + "narHash": "sha256-jG/+MvjVY7SlTakzZ2fJ5dC3V1PrKKrUEOEE30jrOKA=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "bffc22eb12172e6db3c5dde9e3e5628f8e3e7912", + "rev": "ed4a395ea001367c1f13d34b1e01aa10290f67d6", "type": "github" }, "original": { @@ -2058,11 +2043,11 @@ ] }, "locked": { - "lastModified": 1733773348, - "narHash": "sha256-Y47y+LesOCkJaLvj+dI/Oa6FAKj/T9sKVKDXLNsViPw=", + "lastModified": 1735854821, + "narHash": "sha256-Iv59gMDZajNfezTO0Fw6LHE7uKAShxbvMidmZREit7c=", "owner": "NuschtOS", "repo": "search", - "rev": "3051be7f403bff1d1d380e4612f0c70675b44fc9", + "rev": "836908e3bddd837ae0f13e215dd48767aee355f0", "type": "github" }, "original": { @@ -2203,11 +2188,11 @@ "systems": "systems_17" }, "locked": { - "lastModified": 1736531727, - "narHash": "sha256-OP1LAyC8RE/TuqHZ9sEfEWBRZnGlLNsmCRngI0608LY=", + "lastModified": 1736732675, + "narHash": "sha256-8O/YgYql1hJz0h+ldLsgU9bXZdm3RVwLPG5vl7LqtkY=", "owner": "raphamorim", "repo": "rio", - "rev": "6239ed8df9ef6f922d34df3268aa2000cb1d8b32", + "rev": "d8a5e2e2c4f5b926c8183465983a5adba8366667", "type": "github" }, "original": { @@ -2231,7 +2216,6 @@ "home-manager": "home-manager_3", "hypridle": "hypridle", "hyprland": "hyprland", - "impermanence": "impermanence", "kb-gui": "kb-gui", "lanzaboote": "lanzaboote", "lix-module": "lix-module", @@ -2318,11 +2302,11 @@ "nixpkgs": "nixpkgs_16" }, "locked": { - "lastModified": 1736476219, - "narHash": "sha256-+qyv3QqdZCdZ3cSO/cbpEY6tntyYjfe1bB12mdpNFaY=", + "lastModified": 1736632357, + "narHash": "sha256-o+XYHMxGi8oiJlQ7UkDv0lzUuED6iaxZwPzD3kY7R38=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "de30cc5963da22e9742bbbbb9a3344570ed237b9", + "rev": "09f2869b164f8b6d5e30f0bd7ed30d6eb8237058", "type": "github" }, "original": { @@ -2338,11 +2322,11 @@ ] }, "locked": { - "lastModified": 1736632357, - "narHash": "sha256-o+XYHMxGi8oiJlQ7UkDv0lzUuED6iaxZwPzD3kY7R38=", + "lastModified": 1736735482, + "narHash": "sha256-QOA4jCDyyUM9Y2Vba+HSZ/5LdtCMGaTE/7NkkUzBr50=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "09f2869b164f8b6d5e30f0bd7ed30d6eb8237058", + "rev": "cf960a1938ee91200fe0d2f7b2582fde2429d562", "type": "github" }, "original": { @@ -2406,11 +2390,11 @@ "snowfall-lib": "snowfall-lib_2" }, "locked": { - "lastModified": 1736321133, - "narHash": "sha256-WcMlGvUYUEUCxtrG3DHExdnvAHKuJazi9FLhAiqOorw=", + "lastModified": 1736760170, + "narHash": "sha256-GvMN9vsy59xitBKt0Qh/grANYi0AWHXokrr6FY4JXRM=", "owner": "Svenum", "repo": "Solaar-Flake", - "rev": "808a089a32a2c0f436f106fc554215c4930b3c69", + "rev": "255c70259546c7201141e7903cd94b0507c6377e", "type": "github" }, "original": { @@ -2428,11 +2412,11 @@ ] }, "locked": { - "lastModified": 1736568948, - "narHash": "sha256-nnaMeMQPDg1GLQPBejn4nBtvQKSRVv64IIPZ7XmX5u0=", + "lastModified": 1736741830, + "narHash": "sha256-7cXbJ3t/gvuHTI1uJ8juBK1NmSs4tRSGsb0MtCGo70o=", "owner": "Gerg-L", "repo": "spicetify-nix", - "rev": "3da50a44c6c47b3361e56231123797101892c565", + "rev": "e1a0822469d975d25de4953860a15662fe5d6595", "type": "github" }, "original": { @@ -2837,11 +2821,11 @@ ] }, "locked": { - "lastModified": 1736498040, - "narHash": "sha256-fen7o+m7nVlRc1YEhxdWXZTZvcTYEy078nrccTulb7w=", + "lastModified": 1736677965, + "narHash": "sha256-vj4NpvjjW5cUBYJc9AUbH8D8LIkoSwQyKJ+02tHKAAU=", "owner": "Alexays", "repo": "Waybar", - "rev": "369c81d6f29e46287a961e8ef26dbf349021d4fb", + "rev": "a4241d700823cbee9e717c90a8408e2dfc977b45", "type": "github" }, "original": { @@ -2896,11 +2880,11 @@ "nixpkgs": "nixpkgs_17" }, "locked": { - "lastModified": 1736565714, - "narHash": "sha256-/OyRMWPzV7027/Zvi5Kwb7D8UM0mhRLqPkC0WRHre2I=", + "lastModified": 1736742126, + "narHash": "sha256-vncZtYaV+MKOZrDJW/OkvtXEu2a5bYvgO6ldN6s+1To=", "owner": "0xc000022070", "repo": "zen-browser-flake", - "rev": "48a7f03cdc23ca81c668d0f09ea4ab2278f61162", + "rev": "ee8352faad5be12f7088431b979fa36088be65c4", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index c666d49..05f8009 100644 --- a/flake.nix +++ b/flake.nix @@ -118,10 +118,6 @@ inputs.nixpkgs.follows = "nixpkgs"; }; - impermanence = { - url = "github:nix-community/impermanence"; - }; - g2claude.url = "git+https://git.zoeys.cloud/zoey/g2claude.git"; rust-overlay = { @@ -155,7 +151,6 @@ catppuccin.homeManagerModules.catppuccin anyrun.homeManagerModules.default ags.homeManagerModules.default - impermanence.nixosModules.home-manager.impermanence ]; systems.modules.nixos = with inputs; [ @@ -168,7 +163,6 @@ zoeycomputer.nixosModules.default lix-module.nixosModules.default disko.nixosModules.default - impermanence.nixosModules.impermanence ]; }; in diff --git a/homes/x86_64-linux/zoey@earth/default.nix b/homes/x86_64-linux/zoey@earth/default.nix index 18de999..b99f6d9 100644 --- a/homes/x86_64-linux/zoey@earth/default.nix +++ b/homes/x86_64-linux/zoey@earth/default.nix @@ -60,11 +60,11 @@ enable = true; defaultApplications = { - "text/html" = "zen_twilight.desktop"; - "x-scheme-handler/http" = "zen_twilight.desktop"; - "x-scheme-handler/https" = "zen_twilight.desktop"; - "x-scheme-handler/about" = "zen_twilight.desktop"; - "x-scheme-handler/unknown" = "zen_twilight.desktop"; + "text/html" = "zen_beta.desktop"; + "x-scheme-handler/http" = "zen_beta.desktop"; + "x-scheme-handler/https" = "zen_beta.desktop"; + "x-scheme-handler/about" = "zen_beta.desktop"; + "x-scheme-handler/unknown" = "zen_beta.desktop"; "inode/directory" = ["org.gnome.Nautilus.desktop"]; @@ -118,6 +118,7 @@ pkgs.custom.enc pkgs.nix-tree + inputs.g2claude.packages.${pkgs.system}.default pkgs.mongodb-compass pkgs.postman @@ -174,6 +175,9 @@ options = ["--cmd cd"]; }; + catppuccin.helix.enable = true; + programs.helix.enable = true; + programs.cava = { enable = true; catppuccin.enable = true; @@ -190,7 +194,6 @@ programs.lazygit = { enable = true; - catppuccin.enable = true; }; programs.fzf = { diff --git a/modules/home/apps/helpers/rofi/default.nix b/modules/home/apps/helpers/rofi/default.nix index 005fafa..e144ff4 100644 --- a/modules/home/apps/helpers/rofi/default.nix +++ b/modules/home/apps/helpers/rofi/default.nix @@ -18,8 +18,8 @@ in { package = pkgs.rofi; # Basic configuration - terminal = "ghostty"; - font = "Lexend Medium 16px"; + terminal = "kitty"; + font = "Cantarell"; extraConfig = { modi = "drun"; @@ -138,7 +138,7 @@ in { cursor = mkLiteral "inherit"; "vertical-align" = mkLiteral "0.5"; "horizontal-align" = mkLiteral "0.0"; - font = mkLiteral ''"Lexend Medium 16px"''; + font = mkLiteral ''"Cantarell 16px"''; }; }; }; diff --git a/modules/home/shells/zsh/default.nix b/modules/home/shells/zsh/default.nix index 9448b54..e4df3a9 100644 --- a/modules/home/shells/zsh/default.nix +++ b/modules/home/shells/zsh/default.nix @@ -58,6 +58,10 @@ in { bindkey "^[[1;5C" forward-word bindkey "^[[1;5D" backward-word + + if command -v tmux &> /dev/null && [ -z "$TMUX" ]; then + tmux attach-session -t default || tmux new-session -s default + fi ''; # oh my zsh diff --git a/modules/nixos/hardware/gpu-passthru/default.nix b/modules/nixos/hardware/gpu-passthru/default.nix new file mode 100644 index 0000000..fb1f0bd --- /dev/null +++ b/modules/nixos/hardware/gpu-passthru/default.nix @@ -0,0 +1,202 @@ +{ + inputs, + lib, + config, + pkgs, + ... +}: +with lib; +with lib.custom; let + cfg = config.hardware.gpu-passthru; +in { + options.hardware.gpu-passthru = with types; { + enable = mkBoolOpt false "Enable support for single gpu-passthru"; + }; + + config = mkIf cfg.enable { + boot.kernelParams = ["intel_iommu=on" "iommu=pt"]; + boot.kernelModules = ["vfio-pci"]; + + virtualisation.libvirtd = { + enable = true; + onBoot = "ignore"; + onShutdown = "shutdown"; + qemuOvmf = true; + qemuRunAsRoot = true; + }; + + systemd.services.libvirtd = { + path = let + env = pkgs.buildEnv { + name = "qemu-hook-env"; + paths = with pkgs; [ + bash + libvirt + kmod + systemd + ripgrep + sd + ]; + }; + in [env]; + }; + + system.activationScripts.libvirt-hooks.text = '' + ln -Tfs /etc/libvirt/hooks /var/lib/libvirt/hooks + ''; + + # environment.systemPackages = with pkgs; [ + # virt-manager + # gnome3.dconf + # libguestfs + # ]; + + environment.etc = { + "/libvirt/hooks/qemu" = { + text = '' + #!/run/current-system/sw/bin/bash + # + # Author: Sebastiaan Meijer (sebastiaan@passthroughpo.st) + # + # Copy this file to /etc/libvirt/hooks, make sure it's called "qemu". + # After this file is installed, restart libvirt. + # From now on, you can easily add per-guest qemu hooks. + # Add your hooks in /etc/libvirt/hooks/qemu.d/vm_name/hook_name/state_name. + # For a list of available hooks, please refer to https://www.libvirt.org/hooks.html + # + + GUEST_NAME="$1" + HOOK_NAME="$2" + STATE_NAME="$3" + MISC="''${@:4}" + + BASEDIR="$(dirname $0)" + + HOOKPATH="$BASEDIR/qemu.d/$GUEST_NAME/$HOOK_NAME/$STATE_NAME" + + set -e # If a script exits with an error, we should as well. + + # check if it's a non-empty executable file + if [ -f "$HOOKPATH" ] && [ -s "$HOOKPATH"] && [ -x "$HOOKPATH" ]; then + eval \"$HOOKPATH\" "$@" + elif [ -d "$HOOKPATH" ]; then + while read file; do + # check for null string + if [ ! -z "$file" ]; then + eval \"$file\" "$@" + fi + done <<< "$(find -L "$HOOKPATH" -maxdepth 1 -type f -executable -print;)" + fi + ''; + mode = "0755"; + }; + + "libvirt/hooks/kvm.conf" = { + text = '' + VIRSH_GPU_VIDEO=pci_0000_0B_00_0 + VIRSH_GPU_AUDIO=pci_0000_0B_00_1 + ''; + mode = "0755"; + }; + + "libvirt/hooks/qemu.d/win10/prepare/begin/start.sh" = { + text = '' + #!/run/current-system/sw/bin/bash + + # Debugging + exec 19>/home/zoey/Desktop/startlogfile + BASH_XTRACEFD=19 + set -x + + # Load variables we defined + source "/etc/libvirt/hooks/kvm.conf" + + # Change to performance governor + echo performance | tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor + + # Isolate host to core 0 + systemctl set-property --runtime -- user.slice AllowedCPUs=0-6 + systemctl set-property --runtime -- system.slice AllowedCPUs=0-6 + systemctl set-property --runtime -- init.scope AllowedCPUs=0-6 + + # Logout + # source "/home/owner/Desktop/Sync/Files/Tools/logout.sh" + + # Stop display manager + systemctl stop display-manager.service + killall gdm-wayland-session + + # Unbind VTconsoles + echo 0 > /sys/class/vtconsole/vtcon0/bind + echo 0 > /sys/class/vtconsole/vtcon1/bind + + # Unbind EFI Framebuffer + echo efi-framebuffer.0 > /sys/bus/platform/drivers/efi-framebuffer/unbind + + # Avoid race condition + sleep 5 + + # Unload NVIDIA kernel modules + modprobe -r nvidia_drm nvidia_modeset nvidia_uvm nvidia + + # Detach GPU devices from host + virsh nodedev-detach $VIRSH_GPU_VIDEO + virsh nodedev-detach $VIRSH_GPU_AUDIO + + # Load vfio module + modprobe vfio-pci + ''; + mode = "0755"; + }; + + "libvirt/hooks/qemu.d/win10/release/end/stop.sh" = { + text = '' + #!/run/current-system/sw/bin/bash + + # Debugging + exec 19>/home/zoey/Desktop/stoplogfile + BASH_XTRACEFD=19 + set -x + + # Load variables we defined + source "/etc/libvirt/hooks/kvm.conf" + + # Unload vfio module + modprobe -r vfio-pci + + # Attach GPU devices from host + virsh nodedev-reattach $VIRSH_GPU_VIDEO + virsh nodedev-reattach $VIRSH_GPU_AUDIO + + # Read nvidia x config + nvidia-xconfig --query-gpu-info > /dev/null 2>&1 + + # Load NVIDIA kernel modules + modprobe nvidia_drm nvidia_modeset nvidia_uvm nvidia + + # Avoid race condition + sleep 5 + + # Bind EFI Framebuffer + echo efi-framebuffer.0 > /sys/bus/platform/drivers/efi-framebuffer/bind + + # Bind VTconsoles + echo 1 > /sys/class/vtconsole/vtcon0/bind + echo 1 > /sys/class/vtconsole/vtcon1/bind + + # Start display manager + systemctl start display-manager.service + + # Return host to all cores + systemctl set-property --runtime -- user.slice AllowedCPUs=0-31 + systemctl set-property --runtime -- system.slice AllowedCPUs=0-31 + systemctl set-property --runtime -- init.scope AllowedCPUs=0-31 + + # Change to powersave governor + echo powersave | tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor + ''; + mode = "0755"; + }; + }; + }; +} diff --git a/packages/sc/default.nix b/packages/sc/default.nix index ff23047..dd8634f 100644 --- a/packages/sc/default.nix +++ b/packages/sc/default.nix @@ -6,10 +6,8 @@ }: writeShellScriptBin "sc" '' - # Take a screenshot with grim and slurp ${lib.getExe pkgs.grim} -g "$(${lib.getExe pkgs.slurp})" /tmp/screenshot.png - # Upload the screenshot and store the response response=$(${lib.getExe pkgs.curl} -s \ -X POST \ -H "Accept: application/json" \ @@ -17,12 +15,9 @@ writeShellScriptBin "sc" '' -F "file=@/tmp/screenshot.png" \ https://zoeys.computer/api/images/create) - # Extract the URL using jq and copy to clipboard echo "$response" | ${lib.getExe pkgs.jq} -r '.url' | ${pkgs.wl-clipboard}/bin/wl-copy - # Clean up the temporary file rm /tmp/screenshot.png - # Notify user echo "Screenshot uploaded and URL copied to clipboard!" '' diff --git a/systems/x86_64-linux/earth/default.nix b/systems/x86_64-linux/earth/default.nix index 256dca0..28aea42 100644 --- a/systems/x86_64-linux/earth/default.nix +++ b/systems/x86_64-linux/earth/default.nix @@ -187,7 +187,7 @@ dockerCompat = true; defaultNetwork.settings.dns_enabled = true; }; - virtualisation.libvirtd.enable = true; + hardware.gpu-passthru.enable = true; system.stateVersion = "24.05"; }