diff --git a/flake.lock b/flake.lock index 01616f2..bc6b6b9 100755 --- a/flake.lock +++ b/flake.lock @@ -37,11 +37,11 @@ "base16-helix": { "flake": false, "locked": { - "lastModified": 1725860795, - "narHash": "sha256-Z2o8VBPW3I+KKTSfe25kskz0EUj7MpUh8u355Z1nVsU=", + "lastModified": 1736852337, + "narHash": "sha256-esD42YdgLlEh7koBrSqcT7p2fsMctPAcGl/+2sYJa2o=", "owner": "tinted-theming", "repo": "base16-helix", - "rev": "7f795bf75d38e0eea9fed287264067ca187b88a9", + "rev": "03860521c40b0b9c04818f2218d9cc9efc21e7a5", "type": "github" }, "original": { @@ -53,37 +53,17 @@ "base16-vim": { "flake": false, "locked": { - "lastModified": 1731949548, - "narHash": "sha256-XIDexXM66sSh5j/x70e054BnUsviibUShW7XhbDGhYo=", + "lastModified": 1732806396, + "narHash": "sha256-e0bpPySdJf0F68Ndanwm+KWHgQiZ0s7liLhvJSWDNsA=", "owner": "tinted-theming", "repo": "base16-vim", - "rev": "61165b1632409bd55e530f3dbdd4477f011cadc6", + "rev": "577fe8125d74ff456cf942c733a85d769afe58b7", "type": "github" }, "original": { "owner": "tinted-theming", "repo": "base16-vim", - "type": "github" - } - }, - "devshell": { - "inputs": { - "nixpkgs": [ - "nixvim", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1735644329, - "narHash": "sha256-tO3HrHriyLvipc4xr+Ewtdlo7wM1OjXNjlWRgmM7peY=", - "owner": "numtide", - "repo": "devshell", - "rev": "f7795ede5b02664b57035b3b757876703e2c3eac", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "devshell", + "rev": "577fe8125d74ff456cf942c733a85d769afe58b7", "type": "github" } }, @@ -94,11 +74,11 @@ ] }, "locked": { - "lastModified": 1736165297, - "narHash": "sha256-OT+sF4eNDFN/OdyUfIQwyp28+CFQL7PAdWn0wGU7F0U=", + "lastModified": 1740485968, + "narHash": "sha256-WK+PZHbfDjLyveXAxpnrfagiFgZWaTJglewBWniTn2Y=", "owner": "nix-community", "repo": "disko", - "rev": "76816af65d5294761636a838917e335992a52e0c", + "rev": "19c1140419c4f1cdf88ad4c1cfb6605597628940", "type": "github" }, "original": { @@ -107,28 +87,29 @@ "type": "github" } }, + "firefox-gnome-theme": { + "flake": false, + "locked": { + "lastModified": 1739223196, + "narHash": "sha256-vAxN2f3rvl5q62gQQjZGVSvF93nAsOxntuFz+e/655w=", + "owner": "rafaelmardojai", + "repo": "firefox-gnome-theme", + "rev": "a89108e6272426f4eddd93ba17d0ea101c34fb21", + "type": "github" + }, + "original": { + "owner": "rafaelmardojai", + "repo": "firefox-gnome-theme", + "type": "github" + } + }, "flake-compat": { "locked": { - "lastModified": 1696426674, - "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", - "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", - "revCount": 57, - "type": "tarball", - "url": "https://api.flakehub.com/f/pinned/edolstra/flake-compat/1.0.1/018afb31-abd1-7bff-a5e4-cff7e18efb7a/source.tar.gz" - }, - "original": { - "type": "tarball", - "url": "https://flakehub.com/f/edolstra/flake-compat/1.tar.gz" - } - }, - "flake-compat_2": { - "flake": false, - "locked": { - "lastModified": 1696426674, - "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "lastModified": 1733328505, + "narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=", "owner": "edolstra", "repo": "flake-compat", - "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "rev": "ff81ac966bb2cae68946d5ed5fc4994f96d0ffec", "type": "github" }, "original": { @@ -145,11 +126,33 @@ ] }, "locked": { - "lastModified": 1736143030, - "narHash": "sha256-+hu54pAoLDEZT9pjHlqL9DNzWz0NbUn8NEAHP7PQPzU=", + "lastModified": 1738453229, + "narHash": "sha256-7H9XgNiGLKN1G1CgRh0vUL4AheZSYzPm+zmZ7vxbJdo=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "b905f6fc23a9051a6e1b741e1438dbfc0634c6de", + "rev": "32ea77a06711b758da0ad9bd6a844c5740a87abd", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_2": { + "inputs": { + "nixpkgs-lib": [ + "stylix", + "nur", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1733312601, + "narHash": "sha256-4pDvzqnegAfRkPwO3wmwBhVi/Sye1mzps0zHWYnP88c=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "205b12d8b7cd4802fbcb8e8ef6a0f1408781a4f9", "type": "github" }, "original": { @@ -216,52 +219,21 @@ "git-hooks": { "inputs": { "flake-compat": [ - "nixvim", + "stylix", "flake-compat" ], "gitignore": "gitignore", "nixpkgs": [ - "nixvim", + "stylix", "nixpkgs" ] }, "locked": { - "lastModified": 1735882644, - "narHash": "sha256-3FZAG+pGt3OElQjesCAWeMkQ7C/nB1oTHLRQ8ceP110=", + "lastModified": 1737465171, + "narHash": "sha256-R10v2hoJRLq8jcL4syVFag7nIGE7m13qO48wRIukWNg=", "owner": "cachix", "repo": "git-hooks.nix", - "rev": "a5a961387e75ae44cc20f0a57ae463da5e959656", - "type": "github" - }, - "original": { - "owner": "cachix", - "repo": "git-hooks.nix", - "type": "github" - } - }, - "git-hooks_2": { - "inputs": { - "flake-compat": [ - "stylix", - "flake-compat" - ], - "gitignore": "gitignore_2", - "nixpkgs": [ - "stylix", - "nixpkgs" - ], - "nixpkgs-stable": [ - "stylix", - "git-hooks", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1731363552, - "narHash": "sha256-vFta1uHnD29VUY4HJOO/D6p6rxyObnf+InnSMT4jlMU=", - "owner": "cachix", - "repo": "git-hooks.nix", - "rev": "cd1af27aa85026ac759d5d3fccf650abe7e1bbf0", + "rev": "9364dc02281ce2d37a1f55b6e51f7c0f65a75f17", "type": "github" }, "original": { @@ -271,28 +243,6 @@ } }, "gitignore": { - "inputs": { - "nixpkgs": [ - "nixvim", - "git-hooks", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1709087332, - "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", - "owner": "hercules-ci", - "repo": "gitignore.nix", - "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "gitignore.nix", - "type": "github" - } - }, - "gitignore_2": { "inputs": { "nixpkgs": [ "stylix", @@ -338,11 +288,11 @@ ] }, "locked": { - "lastModified": 1736089250, - "narHash": "sha256-/LPWMiiJGPHGd7ZYEgmbE2da4zvBW0acmshUjYC3WG4=", + "lastModified": 1741056285, + "narHash": "sha256-/JKDMVqq8PIqcGonBVKbKq1SooV3kzGmv+cp3rKAgPA=", "owner": "nix-community", "repo": "home-manager", - "rev": "172b91bfb2b7f5c4a8c6ceac29fd53a01ef07196", + "rev": "70fbbf05a5594b0a72124ab211bff1d502c89e3f", "type": "github" }, "original": { @@ -352,27 +302,6 @@ } }, "home-manager_2": { - "inputs": { - "nixpkgs": [ - "nixvim", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1736089250, - "narHash": "sha256-/LPWMiiJGPHGd7ZYEgmbE2da4zvBW0acmshUjYC3WG4=", - "owner": "nix-community", - "repo": "home-manager", - "rev": "172b91bfb2b7f5c4a8c6ceac29fd53a01ef07196", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "home-manager", - "type": "github" - } - }, - "home-manager_3": { "inputs": { "nixpkgs": [ "stylix", @@ -380,11 +309,11 @@ ] }, "locked": { - "lastModified": 1735774425, - "narHash": "sha256-C73gLFnEh8ZI0uDijUgCDWCd21T6I6tsaWgIBHcfAXg=", + "lastModified": 1740347597, + "narHash": "sha256-st5q9egkPGz8TUcVVlIQX7y6G3AzHob+6M963bwVq74=", "owner": "nix-community", "repo": "home-manager", - "rev": "5f6aa268e419d053c3d5025da740e390b12ac936", + "rev": "12e26a74e5eb1a31e13daaa08858689e25ebd449", "type": "github" }, "original": { @@ -395,11 +324,11 @@ }, "impermanence": { "locked": { - "lastModified": 1734945620, - "narHash": "sha256-olIfsfJK4/GFmPH8mXMmBDAkzVQ1TWJmeGT3wBGfQPY=", + "lastModified": 1737831083, + "narHash": "sha256-LJggUHbpyeDvNagTUrdhe/pRVp4pnS6wVKALS782gRI=", "owner": "nix-community", "repo": "impermanence", - "rev": "d000479f4f41390ff7cf9204979660ad5dd16176", + "rev": "4b3e914cdf97a5b536a889e939fb2fd2b043a170", "type": "github" }, "original": { @@ -436,27 +365,6 @@ "type": "github" } }, - "nix-darwin": { - "inputs": { - "nixpkgs": [ - "nixvim", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1736085891, - "narHash": "sha256-bTl9fcUo767VaSx4Q5kFhwiDpFQhBKna7lNbGsqCQiA=", - "owner": "lnl7", - "repo": "nix-darwin", - "rev": "ba9b3173b0f642ada42b78fb9dfc37ca82266f6c", - "type": "github" - }, - "original": { - "owner": "lnl7", - "repo": "nix-darwin", - "type": "github" - } - }, "nix-index-database": { "inputs": { "nixpkgs": [ @@ -464,11 +372,11 @@ ] }, "locked": { - "lastModified": 1736047960, - "narHash": "sha256-hutd85FA1jUJhhqBRRJ+u7UHO9oFGD/RVm2x5w8WjVQ=", + "lastModified": 1740886574, + "narHash": "sha256-jN6kJ41B6jUVDTebIWeebTvrKP6YiLd1/wMej4uq4Sk=", "owner": "nix-community", "repo": "nix-index-database", - "rev": "816a6ae88774ba7e74314830546c29e134e0dffb", + "rev": "26a0f969549cf4d56f6e9046b9e0418b3f3b94a5", "type": "github" }, "original": { @@ -479,11 +387,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1736012469, - "narHash": "sha256-/qlNWm/IEVVH7GfgAIyP6EsVZI6zjAx1cV5zNyrs+rI=", + "lastModified": 1741010256, + "narHash": "sha256-WZNlK/KX7Sni0RyqLSqLPbK8k08Kq7H7RijPJbq9KHM=", "owner": "nixos", "repo": "nixpkgs", - "rev": "8f3e1f807051e32d8c95cd12b9b421623850a34d", + "rev": "ba487dbc9d04e0634c64e3b1f0d25839a0a68246", "type": "github" }, "original": { @@ -495,11 +403,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1735648875, - "narHash": "sha256-fQ4k/hyQiH9RRPznztsA9kbcDajvwV1sRm01el6Sr3c=", + "lastModified": 1740367490, + "narHash": "sha256-WGaHVAjcrv+Cun7zPlI41SerRtfknGQap281+AakSAw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "47e29c20abef74c45322eca25ca1550cdf5c3b50", + "rev": "0196c0175e9191c474c26ab5548db27ef5d34b05", "type": "github" }, "original": { @@ -511,24 +419,18 @@ }, "nixvim": { "inputs": { - "devshell": "devshell", - "flake-compat": "flake-compat", "flake-parts": "flake-parts", - "git-hooks": "git-hooks", - "home-manager": "home-manager_2", - "nix-darwin": "nix-darwin", "nixpkgs": [ "nixpkgs" ], - "nuschtosSearch": "nuschtosSearch", - "treefmt-nix": "treefmt-nix" + "nuschtosSearch": "nuschtosSearch" }, "locked": { - "lastModified": 1736157655, - "narHash": "sha256-/ggXMK8Q/rN94kaaSHPtEcf4SPKgPXfzSbDgAR6Odzs=", + "lastModified": 1741098523, + "narHash": "sha256-gXDSXDr6tAb+JgxGMvcEjKC9YO8tVOd8hMMZHJLyQ6Q=", "owner": "nix-community", "repo": "nixvim", - "rev": "31139e0605fd886d981e0a197e30ceac4b859d6e", + "rev": "03065fd4708bfdf47dd541d655392a60daa25ded", "type": "github" }, "original": { @@ -537,6 +439,29 @@ "type": "github" } }, + "nur": { + "inputs": { + "flake-parts": "flake-parts_2", + "nixpkgs": [ + "stylix", + "nixpkgs" + ], + "treefmt-nix": "treefmt-nix" + }, + "locked": { + "lastModified": 1740408283, + "narHash": "sha256-2xECnhgF3MU9YjmvOkrRp8wRFo2OjjewgCtlfckhL5s=", + "owner": "nix-community", + "repo": "NUR", + "rev": "496a4a11162bdffb9a7b258942de138873f019f7", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "NUR", + "type": "github" + } + }, "nuschtosSearch": { "inputs": { "flake-utils": "flake-utils", @@ -547,11 +472,11 @@ ] }, "locked": { - "lastModified": 1735854821, - "narHash": "sha256-Iv59gMDZajNfezTO0Fw6LHE7uKAShxbvMidmZREit7c=", + "lastModified": 1738508923, + "narHash": "sha256-4DaDrQDAIxlWhTjH6h/+xfG05jt3qDZrZE/7zDLQaS4=", "owner": "NuschtOS", "repo": "search", - "rev": "836908e3bddd837ae0f13e215dd48767aee355f0", + "rev": "86e2038290859006e05ca7201425ea5b5de4aecb", "type": "github" }, "original": { @@ -578,24 +503,27 @@ "base16-fish": "base16-fish", "base16-helix": "base16-helix", "base16-vim": "base16-vim", - "flake-compat": "flake-compat_2", + "firefox-gnome-theme": "firefox-gnome-theme", + "flake-compat": "flake-compat", "flake-utils": "flake-utils_2", - "git-hooks": "git-hooks_2", + "git-hooks": "git-hooks", "gnome-shell": "gnome-shell", - "home-manager": "home-manager_3", + "home-manager": "home-manager_2", "nixpkgs": "nixpkgs_2", + "nur": "nur", "systems": "systems_2", "tinted-foot": "tinted-foot", "tinted-kitty": "tinted-kitty", + "tinted-schemes": "tinted-schemes", "tinted-tmux": "tinted-tmux", "tinted-zed": "tinted-zed" }, "locked": { - "lastModified": 1736176887, - "narHash": "sha256-XacDv8TFEcqaZlfsRqNFUCgca7Xv3SQtzrXon8oEhVo=", + "lastModified": 1741112087, + "narHash": "sha256-dBGwN4aHmX2QUXolZDhV+p06+WM5ZykL4wd9BD6bT7k=", "owner": "danth", "repo": "stylix", - "rev": "b47ef3b8560c3921404d72cec95d84632e355e01", + "rev": "11780517948f214b9f93d1bf5a2d29bc181d3a33", "type": "github" }, "original": { @@ -668,14 +596,30 @@ "type": "github" } }, + "tinted-schemes": { + "flake": false, + "locked": { + "lastModified": 1740351358, + "narHash": "sha256-Hdk850xgAd3DL8KX0AbyU7tC834d3Lej1jOo3duWiOA=", + "owner": "tinted-theming", + "repo": "schemes", + "rev": "a1bc2bd89e693e7e3f5764cfe8114e2ae150e184", + "type": "github" + }, + "original": { + "owner": "tinted-theming", + "repo": "schemes", + "type": "github" + } + }, "tinted-tmux": { "flake": false, "locked": { - "lastModified": 1729501581, - "narHash": "sha256-1ohEFMC23elnl39kxWnjzH1l2DFWWx4DhFNNYDTYt54=", + "lastModified": 1740272597, + "narHash": "sha256-/etfUV3HzAaLW3RSJVwUaW8ULbMn3v6wbTlXSKbcoWQ=", "owner": "tinted-theming", "repo": "tinted-tmux", - "rev": "f0e7f7974a6441033eb0a172a0342e96722b4f14", + "rev": "b6c7f46c8718cc484f2db8b485b06e2a98304cd0", "type": "github" }, "original": { @@ -703,16 +647,17 @@ "treefmt-nix": { "inputs": { "nixpkgs": [ - "nixvim", + "stylix", + "nur", "nixpkgs" ] }, "locked": { - "lastModified": 1736115332, - "narHash": "sha256-FBG9d7e0BTFfxVdw4b5EmNll2Mv7hfRc54hbB4LrKko=", + "lastModified": 1733222881, + "narHash": "sha256-JIPcz1PrpXUCbaccEnrcUS8jjEb/1vJbZz5KkobyFdM=", "owner": "numtide", "repo": "treefmt-nix", - "rev": "1788ca5acd4b542b923d4757d4cfe4183cc6a92d", + "rev": "49717b5af6f80172275d47a418c9719a31a78b53", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index 0a72b33..64b8c69 100755 --- a/flake.nix +++ b/flake.nix @@ -51,103 +51,116 @@ # url = "github:hyprwm/hyprland-plugins"; # inputs.hyprland.follows = "hyprland"; # }; - }; - outputs = { self, nixpkgs, ... } @ inputs: - let - system = "x86_64-linux"; - pkgs = import nixpkgs { inherit system; overlays = []; }; - in - { - nixosConfigurations = { - - bootstrap = nixpkgs.lib.nixosSystem { - specialArgs = { - inherit inputs; - }; - modules = [ - inputs.disko.nixosModules.default - (import ./modules/disko/disko-luks.nix { device = "/dev/nvme0n1"; swap-size = "8G"; encrypted = false; }) - - ./hosts/bootstrap/configuration.nix - - inputs.impermanence.nixosModules.impermanence - ]; - }; - - desktop = nixpkgs.lib.nixosSystem { - specialArgs = { - inherit inputs; - }; - modules = [ - inputs.disko.nixosModules.default - (import ./modules/disko/disko-luks.nix { device = "/dev/nvme0n1"; swap-size = "8G"; encrypted = false; }) - - ./hosts/desktop/configuration.nix - - inputs.impermanence.nixosModules.impermanence - inputs.home-manager.nixosModules.default - inputs.nixvim.nixosModules.nixvim - inputs.stylix.nixosModules.stylix - - inputs.nix-index-database.nixosModules.nix-index - { programs.nix-index-database.comma.enable = true; } - ]; - }; - - nixos-vm = nixpkgs.lib.nixosSystem { - specialArgs = { - inherit inputs; - }; - modules = [ - inputs.disko.nixosModules.default - (import ./hosts/nixos-vm/disko-luks.nix { device = "/dev/vda"; }) - - ./hosts/nixos-vm/configuration.nix - - inputs.impermanence.nixosModules.impermanence - inputs.home-manager.nixosModules.default - inputs.nixvim.nixosModules.nixvim - inputs.stylix.nixosModules.stylix - ]; - }; - - laptop = nixpkgs.lib.nixosSystem { - specialArgs = { - inherit inputs; - }; - modules = [ - inputs.disko.nixosModules.default - (import ./modules/disko/disko-luks.nix { device = "/dev/sda"; swap-size = "32G"; encrypted = true; }) - - ./hosts/laptop/configuration.nix - - inputs.impermanence.nixosModules.impermanence - inputs.home-manager.nixosModules.default - inputs.nixvim.nixosModules.nixvim - inputs.stylix.nixosModules.stylix - - inputs.nix-index-database.nixosModules.nix-index - { programs.nix-index-database.comma.enable = true; } - ]; - }; - }; - - templates = { - - dotnet = { - path = ./templates/dotnet; - description = "Flake for programming in dotnet"; - }; - - latex = { - path = ./templates/latex; - description = "Flake for creating latex documents"; - }; - - - }; - + outputs = { + self, + nixpkgs, + ... + } @ inputs: let + system = "x86_64-linux"; + pkgs = import nixpkgs { + inherit system; + overlays = []; }; + in { + nixosConfigurations = { + bootstrap = nixpkgs.lib.nixosSystem { + specialArgs = { + inherit inputs; + }; + modules = [ + inputs.disko.nixosModules.default + (import ./modules/disko/disko-luks.nix { + device = "/dev/nvme0n1"; + swap-size = "8G"; + encrypted = false; + }) + + ./hosts/bootstrap/configuration.nix + + inputs.impermanence.nixosModules.impermanence + ]; + }; + + desktop = nixpkgs.lib.nixosSystem { + specialArgs = { + inherit inputs; + }; + modules = [ + inputs.disko.nixosModules.default + (import ./modules/disko/disko-luks.nix { + device = "/dev/nvme0n1"; + swap-size = "8G"; + encrypted = false; + }) + + ./hosts/desktop/configuration.nix + + inputs.impermanence.nixosModules.impermanence + inputs.home-manager.nixosModules.default + inputs.nixvim.nixosModules.nixvim + inputs.stylix.nixosModules.stylix + + inputs.nix-index-database.nixosModules.nix-index + {programs.nix-index-database.comma.enable = true;} + ]; + }; + + nixos-vm = nixpkgs.lib.nixosSystem { + specialArgs = { + inherit inputs; + }; + modules = [ + inputs.disko.nixosModules.default + (import ./hosts/nixos-vm/disko-luks.nix {device = "/dev/vda";}) + + ./hosts/nixos-vm/configuration.nix + + inputs.impermanence.nixosModules.impermanence + inputs.home-manager.nixosModules.default + inputs.nixvim.nixosModules.nixvim + inputs.stylix.nixosModules.stylix + ]; + }; + + laptop = nixpkgs.lib.nixosSystem { + specialArgs = { + inherit inputs; + }; + modules = [ + inputs.disko.nixosModules.default + (import ./modules/disko/disko-luks.nix { + device = "/dev/sda"; + swap-size = "32G"; + encrypted = true; + }) + + ./hosts/laptop/configuration.nix + + inputs.impermanence.nixosModules.impermanence + inputs.home-manager.nixosModules.default + inputs.nixvim.nixosModules.nixvim + inputs.stylix.nixosModules.stylix + + inputs.nix-index-database.nixosModules.nix-index + {programs.nix-index-database.comma.enable = true;} + ]; + }; + }; + + formatter.x86_64-linux = pkgs.alejandra; + + templates = { + dotnet = { + path = ./templates/dotnet; + description = "Flake for programming in dotnet"; + }; + + latex = { + path = ./templates/latex; + description = "Flake for creating latex documents"; + }; + }; + }; } diff --git a/hosts/bootstrap/configuration.nix b/hosts/bootstrap/configuration.nix index 06b1776..d0dde6d 100755 --- a/hosts/bootstrap/configuration.nix +++ b/hosts/bootstrap/configuration.nix @@ -1,29 +1,32 @@ # Edit this configuration file to define what should be installed on # your system. Help is available in the configuration.nix(5) man page, on # https://search.nixos.org/options and in the NixOS manual (`nixos-help`). - -{ config, lib, pkgs, inputs, ... }: { + config, + lib, + pkgs, + inputs, + ... +}: { # This is where you specify all .nix files to import - imports = - [ - # Hardware configuration that you generated in earlier steps - ./hardware-configuration.nix + imports = [ + # Hardware configuration that you generated in earlier steps + ./hardware-configuration.nix - (import ../../modules/disko/delete-on-boot.nix { - inherit lib; - persistExtraDirectories = [ ]; - persistExtraFiles = [ ]; - users = {}; - }) - ]; + (import ../../modules/disko/delete-on-boot.nix { + inherit lib; + persistExtraDirectories = []; + persistExtraFiles = []; + users = {}; + }) + ]; # Use the systemd-boot EFI boot loader. boot.loader.systemd-boot.enable = true; boot.loader.efi.canTouchEfiVariables = true; boot.loader.timeout = 0; - nix.settings.experimental-features = [ "nix-command" "flakes" ]; + nix.settings.experimental-features = ["nix-command" "flakes"]; # System wide packages goes here environment.systemPackages = with pkgs; [ @@ -80,5 +83,4 @@ # # For more information, see `man configuration.nix` or https://nixos.org/manual/nixos/stable/options#opt-system.stateVersion . system.stateVersion = "23.11"; # Did you read the comment? - } diff --git a/hosts/bootstrap/hardware-configuration.nix b/hosts/bootstrap/hardware-configuration.nix index 8d5a934..5981896 100644 --- a/hosts/bootstrap/hardware-configuration.nix +++ b/hosts/bootstrap/hardware-configuration.nix @@ -1,17 +1,21 @@ # Do not modify this file! It was generated by ‘nixos-generate-config’ # and may be overwritten by future invocations. Please make changes # to /etc/nixos/configuration.nix instead. -{ config, lib, pkgs, modulesPath, ... }: - { - imports = - [ (modulesPath + "/installer/scan/not-detected.nix") - ]; + config, + lib, + pkgs, + modulesPath, + ... +}: { + imports = [ + (modulesPath + "/installer/scan/not-detected.nix") + ]; - boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "nvme" "usb_storage" "usbhid" "sd_mod" ]; - boot.initrd.kernelModules = [ ]; - boot.kernelModules = [ "kvm-amd" ]; - boot.extraModulePackages = [ ]; + boot.initrd.availableKernelModules = ["xhci_pci" "ahci" "nvme" "usb_storage" "usbhid" "sd_mod"]; + boot.initrd.kernelModules = []; + boot.kernelModules = ["kvm-amd"]; + boot.extraModulePackages = []; # Enables DHCP on each ethernet and wireless interface. In case of scripted networking # (the default) this is the recommended approach. When using systemd-networkd it's diff --git a/hosts/desktop/configuration.nix b/hosts/desktop/configuration.nix index b9bda6d..d651956 100755 --- a/hosts/desktop/configuration.nix +++ b/hosts/desktop/configuration.nix @@ -1,36 +1,42 @@ # Edit this configuration file to define what should be installed on # your system. Help is available in the configuration.nix(5) man page, on # https://search.nixos.org/options and in the NixOS manual (`nixos-help`). - -{ config, lib, pkgs, inputs, ... }: -let +{ + config, + lib, + pkgs, + inputs, + ... +}: let persistence = { "snorre" = import ./persist.nix; }; -in -{ - imports = - [ - # Include the results of the hardware scan. - ./hardware-configuration.nix - # ../../modules/drivers/nvidia.nix - ../../modules/plymouth/blahaj.nix +in { + imports = [ + # Include the results of the hardware scan. + ./hardware-configuration.nix + # ../../modules/drivers/nvidia.nix + ../../modules/plymouth/blahaj.nix - (import ../../modules/disko/delete-on-boot.nix { - inherit lib; - persistExtraDirectories = [ ]; - persistExtraFiles = [ ]; - users = persistence; - }) - # ../../modules/plymouth - #../../modules/users/main-user.nix - ]; + (import ../../modules/disko/delete-on-boot.nix { + inherit lib; + persistExtraDirectories = []; + persistExtraFiles = []; + users = persistence; + }) + # ../../modules/plymouth + #../../modules/users/main-user.nix + ]; + + services.mullvad-vpn.enable = true; # Use the systemd-boot EFI boot loader. boot.loader.systemd-boot.enable = true; boot.loader.efi.canTouchEfiVariables = true; boot.loader.timeout = 0; + boot.blacklistedKernelModules = ["btusb"]; + boot.kernelPackages = pkgs.linuxPackages_zen; # boot.plymouth.enable = true; @@ -60,10 +66,10 @@ in # "udev.log_priority=3" ]; - nix.settings.experimental-features = [ "nix-command" "flakes" ]; + nix.settings.experimental-features = ["nix-command" "flakes"]; home-manager = { - extraSpecialArgs = { inherit inputs; }; + extraSpecialArgs = {inherit inputs;}; users = { "snorre" = import ./home.nix; }; @@ -109,9 +115,9 @@ in "libvirtd" ]; -# openssh.authorizedKeys.keyFiles = [ -# ./ssh/authorized_keys_snorre -# ]; + # openssh.authorizedKeys.keyFiles = [ + # ./ssh/authorized_keys_snorre + # ]; shell = pkgs.zsh; }; @@ -175,7 +181,7 @@ in # Gnome keyring makes it so we dont have to keep logging into programs gnome-keyring # Ui for when programs want sudo - polkit-kde-agent + hyprpolkitagent ]; programs.gamemode = { @@ -191,24 +197,20 @@ in # start = "${pkgs.libnotify}/bin/notify-send 'GameMode started'"; # end = "${pkgs.libnotify}/bin/notify-send 'GameMode ended'"; - start = - let - script = pkgs.writeScriptBin "gamemode_start.sh" '' - ${pkgs.libnotify}/bin/notify-send "GameMode started" - ${pkgs.libnotify}/bin/notify-send "user is: $USER" - /home/$USER/.nix-profile/bin/hyprctl keyword input:touchpad:disable_while_typing false - ''; - in - "${script}/bin/gamemode_start.sh"; + start = let + script = pkgs.writeScriptBin "gamemode_start.sh" '' + ${pkgs.libnotify}/bin/notify-send "GameMode started" + ${pkgs.libnotify}/bin/notify-send "user is: $USER" + /home/$USER/.nix-profile/bin/hyprctl keyword input:touchpad:disable_while_typing false + ''; + in "${script}/bin/gamemode_start.sh"; - end = - let - script = pkgs.writeScriptBin "gamemode_end.sh" '' - ${pkgs.libnotify}/bin/notify-send "GameMode end" - /home/$USER/.nix-profile/bin/hyprctl keyword input:touchpad:disable_while_typing true - ''; - in - "${script}/bin/gamemode_end.sh"; + end = let + script = pkgs.writeScriptBin "gamemode_end.sh" '' + ${pkgs.libnotify}/bin/notify-send "GameMode end" + /home/$USER/.nix-profile/bin/hyprctl keyword input:touchpad:disable_while_typing true + ''; + in "${script}/bin/gamemode_end.sh"; }; }; }; @@ -233,18 +235,21 @@ in wlr.enable = true; extraPortals = [ pkgs.xdg-desktop-portal-gtk - (pkgs.callPackage ../../modules/portals/xdg-desktop-portal-termfilechooser.nix { }) + (pkgs.callPackage ../../modules/portals/xdg-desktop-portal-termfilechooser.nix {}) ]; # xdgOpenUsePortal = true; }; + xdg.mime.defaultApplications = { + "application/pdf" = "firefox.desktop"; + }; + qt = { enable = true; platformTheme = "qt5ct"; }; - - # Delete old entries to + # Delete old entries to nix = { gc = { automatic = true; @@ -255,6 +260,7 @@ in stylix.base16Scheme = "${pkgs.base16-schemes}/share/themes/gruvbox-material-dark-soft.yaml"; stylix.autoEnable = true; stylix.polarity = "dark"; + stylix.targets.qt.platform = "qtct"; # stylix.cursor.package = ( pkgs.callPackage ../../modules/stylix/cursors/posy-improved {} ); # stylix.cursor.name = "Posy_Cursor"; @@ -266,18 +272,46 @@ in stylix.image = ./nixos-wallpaper.png; networking.hostName = "desktop"; # Define your hostname. - networking.networkmanager.enable = true; # Easiest to use and most distros use this by default. - networking.networkmanager.wifi.powersave = true; + networking.networkmanager.enable = false; # Easiest to use and most distros use this by default. + networking.useNetworkd = true; + networking.useDHCP = false; + networking.hosts."10.0.101.10" = ["server"]; + networking.interfaces = { + enp8s0.ipv4.addresses = [ + { + address = "10.0.101.11"; + prefixLength = 24; + } + ]; + wlp7s0.ipv4.addresses = [ + { + address = "10.0.101.12"; + prefixLength = 24; + } + ]; + }; + networking.defaultGateway = { + address = "10.0.101.1"; + interface = "enp8s0"; + }; + networking.nameservers = [ + "10.0.101.1" + "4.4.4.4" + ]; networking.firewall = { enable = true; - allowedTCPPorts = [ 8000 ]; + allowedTCPPorts = [8000]; allowedUDPPortRanges = [ - { from = 8000; to = 8010; } + { + from = 8000; + to = 8010; + } ]; }; # Fuck off, i wanna boot systemd.services."NetworkManager-wait-online".enable = false; + systemd.services."systemd-networkd-wait-online".enable = lib.mkForce false; # Set your time zone. time.timeZone = "Europe/Copenhagen"; @@ -296,16 +330,20 @@ in ''; }; + services.udev.extraRules = '' + KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="6964", ATTRS{idProduct}=="0075", MODE="0660", GROUP="users", TAG+="uaccess", TAG+="udev-acl" + ''; + services.blueman = { - enable = true; + enable = false; }; virtualisation.docker = { - enable = true; + enable = false; storageDriver = "btrfs"; }; - hardware.bluetooth.enable = true; + hardware.bluetooth.enable = false; hardware.bluetooth.powerOnBoot = false; hardware.bluetooth.settings = { General = { @@ -316,8 +354,8 @@ in hardware.graphics = { enable = true; extraPackages = with pkgs; [ - intel-media-driver # LIBVA_DRIVER_NAME=iHD - intel-vaapi-driver # LIBVA_DRIVER_NAME=i965 (older but works better for Firefox/Chromium) + # intel-media-driver # LIBVA_DRIVER_NAME=iHD + # intel-vaapi-driver # LIBVA_DRIVER_NAME=i965 (older but works better for Firefox/Chromium) libvdpau-va-gl ]; }; @@ -355,7 +393,6 @@ in turbo = "never"; scaling_max_freq = 1000000; }; - }; }; @@ -392,7 +429,6 @@ in # hardware.opengl.driSupport = true; # This is already enabled by default # hardware.opengl.driSupport32Bit = true; # For 32 bit applications - # This option defines the first version of NixOS you have installed on this particular machine, # and is used to maintain compatibility with application data (e.g. databases) created on older NixOS versions. # @@ -410,6 +446,4 @@ in # # For more information, see `man configuration.nix` or https://nixos.org/manual/nixos/stable/options#opt-system.stateVersion . system.stateVersion = "23.11"; # Did you read the comment? - } - diff --git a/hosts/desktop/disko.nix b/hosts/desktop/disko.nix index dfa75a2..023240c 100644 --- a/hosts/desktop/disko.nix +++ b/hosts/desktop/disko.nix @@ -1,17 +1,16 @@ -{ device ? throw "Set this to your disk device, e.g. /dev/sda" -, swap-size ? "0" -, encrypted ? false -, lib -, ... -}: -let - disko-luks = import ../modules/disko/disko-luks.nix; -in { + device ? throw "Set this to your disk device, e.g. /dev/sda", + swap-size ? "0", + encrypted ? false, + lib, + ... +}: let + disko-luks = import ../modules/disko/disko-luks.nix; +in { disko.devices.disk = lib.mergeAttrsList [ - { main = disko-luks.devices.disk.main; } + {main = disko-luks.devices.disk.main;} { - hdd = { + hdd = { device = "/dev/sda"; type = "disk"; content = { @@ -19,7 +18,6 @@ in partitions = { main = { size = "100%"; - }; }; }; diff --git a/hosts/desktop/hardware-configuration.nix b/hosts/desktop/hardware-configuration.nix index 8d5a934..9d2e5c6 100644 --- a/hosts/desktop/hardware-configuration.nix +++ b/hosts/desktop/hardware-configuration.nix @@ -1,17 +1,21 @@ # Do not modify this file! It was generated by ‘nixos-generate-config’ # and may be overwritten by future invocations. Please make changes # to /etc/nixos/configuration.nix instead. -{ config, lib, pkgs, modulesPath, ... }: - { - imports = - [ (modulesPath + "/installer/scan/not-detected.nix") - ]; + config, + lib, + pkgs, + modulesPath, + ... +}: { + imports = [ + (modulesPath + "/installer/scan/not-detected.nix") + ]; - boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "nvme" "usb_storage" "usbhid" "sd_mod" ]; - boot.initrd.kernelModules = [ ]; - boot.kernelModules = [ "kvm-amd" ]; - boot.extraModulePackages = [ ]; + boot.initrd.availableKernelModules = ["xhci_pci" "ahci" "nvme" "usb_storage" "usbhid" "sd_mod"]; + boot.initrd.kernelModules = []; + boot.kernelModules = ["kvm-amd" "joydev" "usbhid"]; + boot.extraModulePackages = []; # Enables DHCP on each ethernet and wireless interface. In case of scripted networking # (the default) this is the recommended approach. When using systemd-networkd it's diff --git a/hosts/desktop/home.nix b/hosts/desktop/home.nix index 7d4b895..256c9d7 100755 --- a/hosts/desktop/home.nix +++ b/hosts/desktop/home.nix @@ -1,6 +1,9 @@ -{ pkgs, inputs, lib, ... }: - { + pkgs, + inputs, + lib, + ... +}: { imports = [ # inputs.impermanence.nixosModules.home-manager.impermanence @@ -12,7 +15,11 @@ ../../modules/programs/waybar ../../modules/programs/hyprpaper.nix ../../modules/programs/tofi.nix - ../../modules/programs/alacritty.nix + + # ../../modules/programs/alacritty.nix + ../../modules/programs/foot.nix + ../../modules/programs/legcord.nix + ../../modules/programs/firefox.nix ../../modules/programs/tmux.nix ../../modules/programs/mangohud.nix @@ -66,51 +73,74 @@ nixpkgs.config.allowUnfree = true; - home.packages = - let - tex = (pkgs.texlive.combine { - inherit (pkgs.texlive) scheme-medium - titling - biblatex hyperref amsmath tcolorbox environ - ; - }); - in - (with pkgs; [ - file - nixpkgs-fmt - ripgrep - jump - wl-clipboard - hyprpaper - hyprpicker - grimblast - tofi - brightnessctl - # Required for waybar to work - playerctl - wl-clipboard + nixpkgs.config.permittedInsecurePackages = [ + "dotnet-runtime-7.0.20" + ]; - localsend + home.packages = let + tex = pkgs.texlive.combine { + inherit + (pkgs.texlive) + scheme-medium + titling + biblatex + hyperref + amsmath + tcolorbox + environ + ; + }; + in (with pkgs; [ + file + nixpkgs-fmt + ripgrep + jump + wl-clipboard + hyprpaper + hyprpicker + grimblast + tofi + brightnessctl + # Required for waybar to work + playerctl + wl-clipboard - ipe - texlivePackages.latex - texlivePackages.luatex - zathura - tex - biber + localsend - prismlauncher + # ipe + texlivePackages.latex + texlivePackages.luatex + zathura + tex + biber - spotify - vesktop - sublime-merge + prismlauncher - obs-studio + spotify + # vesktop + sublime-merge - vial + obs-studio - path-of-building - ]); + (vintagestory.overrideAttrs (old: { + desktopItems = [ + (makeDesktopItem { + name = "vintagestory"; + desktopName = "Vintage Story"; + exec = "mangohud gamemoderun vintagestory"; + icon = "vintagestory"; + comment = "Innovate and explore in a sandbox world"; + categories = ["Game"]; + }) + ]; + })) + + vial + + (qt6Packages.callPackage ../../modules/programs/path-of-building-poe2 {}) + + path-of-building + ]); # Mount 2tb harddisk systemd.user.mounts."home-snorre-2tb" = { diff --git a/hosts/desktop/persist.nix b/hosts/desktop/persist.nix index d960583..5891a4b 100644 --- a/hosts/desktop/persist.nix +++ b/hosts/desktop/persist.nix @@ -16,8 +16,10 @@ ".mozilla" - ".config/vesktop" + # ".config/vesktop" + ".config/legcord" ".config/zsh" + ".config/VintagestoryData" ".cache/mozilla" ".cache/nix" diff --git a/hosts/laptop/configuration.nix b/hosts/laptop/configuration.nix index 7cc4991..8381dd2 100755 --- a/hosts/laptop/configuration.nix +++ b/hosts/laptop/configuration.nix @@ -1,31 +1,33 @@ # Edit this configuration file to define what should be installed on # your system. Help is available in the configuration.nix(5) man page, on # https://search.nixos.org/options and in the NixOS manual (`nixos-help`). - -{ config, lib, pkgs, inputs, ... }: -let +{ + config, + lib, + pkgs, + inputs, + ... +}: let persistence = { "snorre" = import ./persist.nix; "work" = import ./persist-work.nix; }; -in -{ - imports = - [ - # Include the results of the hardware scan. - ./hardware-configuration.nix - ../../modules/drivers/nvidia.nix - ../../modules/plymouth/blahaj.nix +in { + imports = [ + # Include the results of the hardware scan. + ./hardware-configuration.nix + ../../modules/drivers/nvidia.nix + ../../modules/plymouth/blahaj.nix - (import ../../modules/disko/delete-on-boot.nix { - inherit lib; - persistExtraDirectories = [ ]; - persistExtraFiles = [ ]; - users = persistence; - }) - # ../../modules/plymouth - #../../modules/users/main-user.nix - ]; + (import ../../modules/disko/delete-on-boot.nix { + inherit lib; + persistExtraDirectories = []; + persistExtraFiles = []; + users = persistence; + }) + # ../../modules/plymouth + #../../modules/users/main-user.nix + ]; # Use the systemd-boot EFI boot loader. boot.loader.systemd-boot.enable = true; @@ -61,10 +63,10 @@ in # "udev.log_priority=3" ]; - nix.settings.experimental-features = [ "nix-command" "flakes" ]; + nix.settings.experimental-features = ["nix-command" "flakes"]; home-manager = { - extraSpecialArgs = { inherit inputs; }; + extraSpecialArgs = {inherit inputs;}; users = { "snorre" = import ./home.nix; "work" = import ./work-home.nix; @@ -116,7 +118,6 @@ in ]; shell = pkgs.zsh; - }; users.users."work" = { @@ -209,24 +210,20 @@ in # start = "${pkgs.libnotify}/bin/notify-send 'GameMode started'"; # end = "${pkgs.libnotify}/bin/notify-send 'GameMode ended'"; - start = - let - script = pkgs.writeScriptBin "gamemode_start.sh" '' - ${pkgs.libnotify}/bin/notify-send "GameMode started" - ${pkgs.libnotify}/bin/notify-send "user is: $USER" - /home/$USER/.nix-profile/bin/hyprctl keyword input:touchpad:disable_while_typing false - ''; - in - "${script}/bin/gamemode_start.sh"; + start = let + script = pkgs.writeScriptBin "gamemode_start.sh" '' + ${pkgs.libnotify}/bin/notify-send "GameMode started" + ${pkgs.libnotify}/bin/notify-send "user is: $USER" + /home/$USER/.nix-profile/bin/hyprctl keyword input:touchpad:disable_while_typing false + ''; + in "${script}/bin/gamemode_start.sh"; - end = - let - script = pkgs.writeScriptBin "gamemode_end.sh" '' - ${pkgs.libnotify}/bin/notify-send "GameMode end" - /home/$USER/.nix-profile/bin/hyprctl keyword input:touchpad:disable_while_typing true - ''; - in - "${script}/bin/gamemode_end.sh"; + end = let + script = pkgs.writeScriptBin "gamemode_end.sh" '' + ${pkgs.libnotify}/bin/notify-send "GameMode end" + /home/$USER/.nix-profile/bin/hyprctl keyword input:touchpad:disable_while_typing true + ''; + in "${script}/bin/gamemode_end.sh"; }; }; }; @@ -251,7 +248,7 @@ in wlr.enable = true; extraPortals = [ pkgs.xdg-desktop-portal-gtk - (pkgs.callPackage ../../modules/portals/xdg-desktop-portal-termfilechooser.nix { }) + (pkgs.callPackage ../../modules/portals/xdg-desktop-portal-termfilechooser.nix {}) ]; # xdgOpenUsePortal = true; }; @@ -261,8 +258,7 @@ in platformTheme = "qt5ct"; }; - - # Delete old entries to + # Delete old entries to nix = { gc = { automatic = true; @@ -288,9 +284,12 @@ in networking.networkmanager.wifi.powersave = true; networking.firewall = { enable = true; - allowedTCPPorts = [ 8000 ]; + allowedTCPPorts = [8000]; allowedUDPPortRanges = [ - { from = 8000; to = 8010; } + { + from = 8000; + to = 8010; + } ]; }; @@ -373,7 +372,6 @@ in turbo = "never"; scaling_max_freq = 1000000; }; - }; }; @@ -410,7 +408,6 @@ in # hardware.opengl.driSupport = true; # This is already enabled by default # hardware.opengl.driSupport32Bit = true; # For 32 bit applications - # This option defines the first version of NixOS you have installed on this particular machine, # and is used to maintain compatibility with application data (e.g. databases) created on older NixOS versions. # @@ -428,6 +425,4 @@ in # # For more information, see `man configuration.nix` or https://nixos.org/manual/nixos/stable/options#opt-system.stateVersion . system.stateVersion = "23.11"; # Did you read the comment? - } - diff --git a/hosts/laptop/hardware-configuration.nix b/hosts/laptop/hardware-configuration.nix index 9cb6923..f6eafa7 100755 --- a/hosts/laptop/hardware-configuration.nix +++ b/hosts/laptop/hardware-configuration.nix @@ -1,17 +1,21 @@ # Do not modify this file! It was generated by ‘nixos-generate-config’ # and may be overwritten by future invocations. Please make changes # to /etc/nixos/configuration.nix instead. -{ config, lib, pkgs, modulesPath, ... }: - { - imports = - [ (modulesPath + "/installer/scan/not-detected.nix") - ]; + config, + lib, + pkgs, + modulesPath, + ... +}: { + imports = [ + (modulesPath + "/installer/scan/not-detected.nix") + ]; - boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "nvme" "usb_storage" "usbhid" "sd_mod" ]; - boot.initrd.kernelModules = [ ]; - boot.kernelModules = [ "kvm-intel" ]; - boot.extraModulePackages = [ ]; + boot.initrd.availableKernelModules = ["xhci_pci" "ahci" "nvme" "usb_storage" "usbhid" "sd_mod"]; + boot.initrd.kernelModules = []; + boot.kernelModules = ["kvm-intel"]; + boot.extraModulePackages = []; # Enables DHCP on each ethernet and wireless interface. In case of scripted networking # (the default) this is the recommended approach. When using systemd-networkd it's diff --git a/hosts/laptop/home.nix b/hosts/laptop/home.nix index 88be01c..33bef12 100755 --- a/hosts/laptop/home.nix +++ b/hosts/laptop/home.nix @@ -1,6 +1,8 @@ -{ pkgs, inputs, ... }: - { + pkgs, + inputs, + ... +}: { imports = [ # inputs.impermanence.nixosModules.home-manager.impermanence @@ -16,7 +18,7 @@ # ../../modules/programs/firefox.nix ../../modules/programs/tmux.nix - (import ../../modules/window-managers/hyprland { monitors = ["eDP-1, 1920x1080@60, auto, 1"]; }) + (import ../../modules/window-managers/hyprland {monitors = ["eDP-1, 1920x1080@60, auto, 1"];}) ../../modules/window-managers/hyprland/hyprlock.nix ../../modules/window-managers/hyprland/hypridle.nix @@ -57,49 +59,53 @@ nixpkgs.config.allowUnfree = true; - home.packages = - let - tex = (pkgs.texlive.combine { - inherit (pkgs.texlive) scheme-medium - titling - biblatex hyperref amsmath tcolorbox environ - ; - }); - in - (with pkgs; [ - file - nixpkgs-fmt - ripgrep - jump - wl-clipboard - hyprpaper - hyprpicker - grimblast - tofi - brightnessctl - # Required for waybar to work - playerctl - wl-clipboard - - localsend + home.packages = let + tex = pkgs.texlive.combine { + inherit + (pkgs.texlive) + scheme-medium + titling + biblatex + hyperref + amsmath + tcolorbox + environ + ; + }; + in (with pkgs; [ + file + nixpkgs-fmt + ripgrep + jump + wl-clipboard + hyprpaper + hyprpicker + grimblast + tofi + brightnessctl + # Required for waybar to work + playerctl + wl-clipboard - ipe - texlivePackages.latex - texlivePackages.luatex - zathura - tex - biber + localsend - inputs.zen-browser.packages."${system}".default + ipe + texlivePackages.latex + texlivePackages.luatex + zathura + tex + biber - spotify - vesktop - sublime-merge - ]); + inputs.zen-browser.packages."${system}".default + + spotify + vesktop + sublime-merge + ]); programs.btop.enable = true; programs.mangohud.enable = true; - + # programs.nix-index = { # enable = true; # enableZshIntegration = true; diff --git a/hosts/laptop/work-home.nix b/hosts/laptop/work-home.nix index 5bc6e64..c994a21 100755 --- a/hosts/laptop/work-home.nix +++ b/hosts/laptop/work-home.nix @@ -1,6 +1,9 @@ -{ config, pkgs, inputs, ... }: - { + config, + pkgs, + inputs, + ... +}: { imports = [ inputs.impermanence.nixosModules.home-manager.impermanence @@ -124,7 +127,7 @@ # type = "Application"; # categories = [ "Development" ]; # icon = "unityhub"; - # # tryExec = "unityhub"; + # # tryExec = "unityhub"; # mimeType = [ "x-scheme-handler/unityhub" ]; # }; # }; diff --git a/hosts/nixos-vm/configuration.nix b/hosts/nixos-vm/configuration.nix index 4253ce2..063c606 100755 --- a/hosts/nixos-vm/configuration.nix +++ b/hosts/nixos-vm/configuration.nix @@ -1,22 +1,24 @@ # Edit this configuration file to define what should be installed on # your system. Help is available in the configuration.nix(5) man page, on # https://search.nixos.org/options and in the NixOS manual (`nixos-help`). - -{ config, lib, pkgs, inputs, ... }: - { - imports = - [ - # Include the results of the hardware scan. - ./hardware-configuration.nix - #../../modules/users/main-user.nix - ]; + config, + lib, + pkgs, + inputs, + ... +}: { + imports = [ + # Include the results of the hardware scan. + ./hardware-configuration.nix + #../../modules/users/main-user.nix + ]; # Use the systemd-boot EFI boot loader. boot.loader.systemd-boot.enable = true; boot.loader.efi.canTouchEfiVariables = true; - nix.settings.experimental-features = [ "nix-command" "flakes" ]; + nix.settings.experimental-features = ["nix-command" "flakes"]; boot.initrd.postDeviceCommands = lib.mkAfter '' # Prepare temporary folder @@ -67,7 +69,12 @@ "/var/lib/nixos" "/var/lib/systemd/coredump" "/etc/NetworkManager/system-connections" - { directory = "/var/lib/colord"; user = "colord"; group = "colord"; mode = "u=rwx, g=rx, o="; } + { + directory = "/var/lib/colord"; + user = "colord"; + group = "colord"; + mode = "u=rwx, g=rx, o="; + } ]; files = [ "/etc/machine-id" @@ -81,24 +88,23 @@ programs.fuse.userAllowOther = true; home-manager = { - extraSpecialArgs = { inherit inputs; }; + extraSpecialArgs = {inherit inputs;}; users = { "snorre" = import ./home.nix; }; }; - users.users."snorre" = - { - isNormalUser = true; - initialPassword = "1234"; - extraGroups = [ - "networkmanager" - "audio" - "wheel" - ]; + users.users."snorre" = { + isNormalUser = true; + initialPassword = "1234"; + extraGroups = [ + "networkmanager" + "audio" + "wheel" + ]; - shell = pkgs.zsh; - }; + shell = pkgs.zsh; + }; # Programs to enable programs.zsh.enable = true; # Better shell than bash @@ -106,7 +112,7 @@ # Fuck nano, all my homies hate nano programs.nano.enable = false; - # Delete old entries to + # Delete old entries to nix = { gc = { automatic = true; @@ -128,7 +134,6 @@ # Set your time zone. time.timeZone = "Europe/Copenhagen"; - # Select internationalisation properties. i18n.defaultLocale = "en_US.UTF-8"; console = { @@ -179,6 +184,4 @@ # # For more information, see `man configuration.nix` or https://nixos.org/manual/nixos/stable/options#opt-system.stateVersion . system.stateVersion = "23.11"; # Did you read the comment? - } - diff --git a/hosts/nixos-vm/disko-luks.nix b/hosts/nixos-vm/disko-luks.nix index 9a70f41..88f5cc9 100755 --- a/hosts/nixos-vm/disko-luks.nix +++ b/hosts/nixos-vm/disko-luks.nix @@ -1,6 +1,4 @@ -{ device ? throw "Set this to your disk device, e.g. /dev/sda" -, ... -}: { +{device ? throw "Set this to your disk device, e.g. /dev/sda", ...}: { disko.devices = { disk = { main = { @@ -45,25 +43,24 @@ # additionalKeyFiles = [ "/tmp/additionalSecret.key" ]; content = { type = "btrfs"; - extraArgs = [ "-f" ]; + extraArgs = ["-f"]; subvolumes = { "/root" = { mountpoint = "/"; - mountOptions = [ "compress=zstd" "noatime" ]; + mountOptions = ["compress=zstd" "noatime"]; }; "/persist" = { mountpoint = "/persist"; - mountOptions = [ "subvol=persist" "compress=zstd" "noatime" ]; + mountOptions = ["subvol=persist" "compress=zstd" "noatime"]; }; "/nix" = { mountpoint = "/nix"; - mountOptions = [ "subvol=nix" "compress=zstd" "noatime" ]; + mountOptions = ["subvol=nix" "compress=zstd" "noatime"]; }; }; }; }; }; - }; }; }; diff --git a/hosts/nixos-vm/hardware-configuration.nix b/hosts/nixos-vm/hardware-configuration.nix index 29852de..37f6224 100755 --- a/hosts/nixos-vm/hardware-configuration.nix +++ b/hosts/nixos-vm/hardware-configuration.nix @@ -1,18 +1,21 @@ # Do not modify this file! It was generated by ‘nixos-generate-config’ # and may be overwritten by future invocations. Please make changes # to /etc/nixos/configuration.nix instead. -{ config, lib, pkgs, modulesPath, ... }: - { - imports = - [ - (modulesPath + "/profiles/qemu-guest.nix") - ]; + config, + lib, + pkgs, + modulesPath, + ... +}: { + imports = [ + (modulesPath + "/profiles/qemu-guest.nix") + ]; - boot.initrd.availableKernelModules = [ "ahci" "xhci_pci" "virtio_pci" "sr_mod" "virtio_blk" ]; - boot.initrd.kernelModules = [ ]; - boot.kernelModules = [ "kvm-intel" ]; - boot.extraModulePackages = [ ]; + boot.initrd.availableKernelModules = ["ahci" "xhci_pci" "virtio_pci" "sr_mod" "virtio_blk"]; + boot.initrd.kernelModules = []; + boot.kernelModules = ["kvm-intel"]; + boot.extraModulePackages = []; # Enables DHCP on each ethernet and wireless interface. In case of scripted networking # (the default) this is the recommended approach. When using systemd-networkd it's diff --git a/hosts/nixos-vm/home.nix b/hosts/nixos-vm/home.nix index cd99561..ee2fa5a 100755 --- a/hosts/nixos-vm/home.nix +++ b/hosts/nixos-vm/home.nix @@ -1,6 +1,9 @@ -{ config, pkgs, inputs, ... }: - { + config, + pkgs, + inputs, + ... +}: { imports = [ inputs.impermanence.nixosModules.home-manager.impermanence diff --git a/modules/disko/delete-on-boot.nix b/modules/disko/delete-on-boot.nix index 7c41799..1081255 100755 --- a/modules/disko/delete-on-boot.nix +++ b/modules/disko/delete-on-boot.nix @@ -1,12 +1,11 @@ -{ lib -, persistExtraDirectories -, persistExtraFiles -, users ? {} -, extraConfig ? {} -, ... -}: - { + lib, + persistExtraDirectories, + persistExtraFiles, + users ? {}, + extraConfig ? {}, + ... +}: { boot.initrd.postDeviceCommands = lib.mkAfter '' # Prepare temporary folder mkdir /btrfs_tmp @@ -49,23 +48,40 @@ fileSystems."/persist".neededForBoot = true; environment.persistence."/persist/system" = { hideMounts = true; - directories = [ - "/etc/nixos" - "/var/log" - "/var/lib/bluetooth" - "/var/lib/nixos" - "/var/lib/systemd/coredump" - "/etc/NetworkManager/system-connections" - { directory = "/var/lib/colord"; user = "colord"; group = "colord"; mode = "u=rwx, g=rx, o="; } - ] ++ (if (persistExtraDirectories == null) then [ ] else persistExtraDirectories); + directories = + [ + "/etc/nixos" + "/var/log" + "/var/lib/bluetooth" + "/var/lib/nixos" + "/var/lib/systemd/coredump" + "/etc/NetworkManager/system-connections" + { + directory = "/var/lib/colord"; + user = "colord"; + group = "colord"; + mode = "u=rwx, g=rx, o="; + } + ] + ++ ( + if (persistExtraDirectories == null) + then [] + else persistExtraDirectories + ); - files = [ - "/etc/machine-id" - "/etc/ssh/ssh_host_rsa_key" - "/etc/ssh/ssh_host_ed25519_key" - "/etc/ssh/ssh_host_rsa_key.pub" - "/etc/ssh/ssh_host_ed25519_key.pub" - ] ++ (if (persistExtraFiles == null) then [ ] else persistExtraFiles); + files = + [ + "/etc/machine-id" + "/etc/ssh/ssh_host_rsa_key" + "/etc/ssh/ssh_host_ed25519_key" + "/etc/ssh/ssh_host_rsa_key.pub" + "/etc/ssh/ssh_host_ed25519_key.pub" + ] + ++ ( + if (persistExtraFiles == null) + then [] + else persistExtraFiles + ); inherit users; }; diff --git a/modules/disko/disko-btrfs-impermanence.nix b/modules/disko/disko-btrfs-impermanence.nix index ce16d07..120b4d2 100644 --- a/modules/disko/disko-btrfs-impermanence.nix +++ b/modules/disko/disko-btrfs-impermanence.nix @@ -1,18 +1,18 @@ { type = "btrfs"; - extraArgs = [ "-f" ]; + extraArgs = ["-f"]; subvolumes = { "/root" = { mountpoint = "/"; - mountOptions = [ "compress=zstd" "noatime" ]; + mountOptions = ["compress=zstd" "noatime"]; }; "/persist" = { mountpoint = "/persist"; - mountOptions = [ "subvol=persist" "compress=zstd" "noatime" ]; + mountOptions = ["subvol=persist" "compress=zstd" "noatime"]; }; "/nix" = { mountpoint = "/nix"; - mountOptions = [ "subvol=nix" "compress=zstd" "noatime" ]; + mountOptions = ["subvol=nix" "compress=zstd" "noatime"]; }; }; } diff --git a/modules/disko/disko-luks.nix b/modules/disko/disko-luks.nix index 9b29371..eae300b 100755 --- a/modules/disko/disko-luks.nix +++ b/modules/disko/disko-luks.nix @@ -1,7 +1,8 @@ -{ device ? throw "Set this to your disk device, e.g. /dev/sda" -, swap-size ? "0" -, encrypted ? false -, ... +{ + device ? throw "Set this to your disk device, e.g. /dev/sda", + swap-size ? "0", + encrypted ? false, + ... }: { disko.devices = { disk = { @@ -24,36 +25,39 @@ }; }; - swap = if swap-size == "0" then {} else { - size = swap-size; - content = { - type = "swap"; - resumeDevice = true; + swap = + if swap-size == "0" + then {} + else { + size = swap-size; + content = { + type = "swap"; + resumeDevice = true; + }; }; - }; # Fill until 8gb are left - root = if encrypted then { - size = "100%"; - content = { - type = "luks"; - name = "crypted"; - # disable settings.keyFile if you want to use interactive password entry - passwordFile = null; # Interactive - settings = { - allowDiscards = true; - keyFile = null; + root = + if encrypted + then { + size = "100%"; + content = { + type = "luks"; + name = "crypted"; + # disable settings.keyFile if you want to use interactive password entry + passwordFile = null; # Interactive + settings = { + allowDiscards = true; + keyFile = null; + }; + # additionalKeyFiles = [ "/tmp/additionalSecret.key" ]; + content = import ./disko-btrfs-impermanence.nix; }; - # additionalKeyFiles = [ "/tmp/additionalSecret.key" ]; - content = (import ./disko-btrfs-impermanence.nix); + } + else { + size = "100%"; + content = import ./disko-btrfs-impermanence.nix; }; - } - else - { - size = "100%"; - content = (import ./disko-btrfs-impermanence.nix); - }; - }; }; }; diff --git a/modules/disko/impermanence-home.nix b/modules/disko/impermanence-home.nix index fa674a5..8101a7a 100755 --- a/modules/disko/impermanence-home.nix +++ b/modules/disko/impermanence-home.nix @@ -1,31 +1,42 @@ -{ extraDirectories -, extraFiles -, username ? throw "need to know the username" -, nixIndexEnabled ? false -, ... -}: - { + extraDirectories, + extraFiles, + username ? throw "need to know the username", + nixIndexEnabled ? false, + ... +}: { home.persistence."/persist/home/${username}" = { - directories = [ - # "Downloads" # no. - "Documents" - "Music" - "Pictures" - "Videos" - ".gnupg" - ".ssh" - ".local" - ".cache/mesa_shader_cache" - ".cache/mesa_shader_cache_db" - # TODO: Move this shit into work user - ] ++ (if (extraDirectories == null) then [ ] else extraDirectories); - files = [ - ".gitconfig" - # ".zsh_history" - ] ++ (if (extraFiles == null) then [ ] else extraFiles) - # ++ (if nixIndexEnabled then [ ".cache/nix-index" ] else []) - ; + directories = + [ + # "Downloads" # no. + "Documents" + "Music" + "Pictures" + "Videos" + ".gnupg" + ".ssh" + ".local" + ".cache/mesa_shader_cache" + ".cache/mesa_shader_cache_db" + # TODO: Move this shit into work user + ] + ++ ( + if (extraDirectories == null) + then [] + else extraDirectories + ); + files = + [ + ".gitconfig" + # ".zsh_history" + ] + ++ ( + if (extraFiles == null) + then [] + else extraFiles + ) + # ++ (if nixIndexEnabled then [ ".cache/nix-index" ] else []) + ; allowOther = true; }; } diff --git a/modules/drivers/nvidia.nix b/modules/drivers/nvidia.nix index 1941e73..b34ee58 100755 --- a/modules/drivers/nvidia.nix +++ b/modules/drivers/nvidia.nix @@ -1,10 +1,13 @@ -{ config, pkgs, lib, ... }: - { + config, + pkgs, + lib, + ... +}: { nixpkgs.config.nvidia.acceptLicense = true; - services.xserver.videoDrivers = [ "nvidia" ]; + services.xserver.videoDrivers = ["nvidia"]; - boot.kernelParams = [ "nvidia.NVreg_PreserveVideoMemoryAllocations=1" ]; + boot.kernelParams = ["nvidia.NVreg_PreserveVideoMemoryAllocations=1"]; hardware.graphics = { enable = true; @@ -15,7 +18,6 @@ }; hardware.nvidia = { - package = config.boot.kernelPackages.nvidiaPackages.stable; modesetting.enable = true; open = false; @@ -41,23 +43,23 @@ specialisation = { Battery.configuration = { - system.nixos.tags = [ "Battery" ]; + system.nixos.tags = ["Battery"]; boot.extraModprobeConfig = '' blacklist nouveau options nouveau modeset=0 ''; - services.udev.extraRules = ''s - # Remove NVIDIA USB xHCI Host Controller devices, if present - ACTION=="add", SUBSYSTEM=="pci", ATTR{vendor}=="0x10de", ATTR{class}=="0x0c0330", ATTR{power/control}="auto", ATTR{remove}="1" - # Remove NVIDIA USB Type-C UCSI devices, if present - ACTION=="add", SUBSYSTEM=="pci", ATTR{vendor}=="0x10de", ATTR{class}=="0x0c8000", ATTR{power/control}="auto", ATTR{remove}="1" - # Remove NVIDIA Audio devices, if present - ACTION=="add", SUBSYSTEM=="pci", ATTR{vendor}=="0x10de", ATTR{class}=="0x040300", ATTR{power/control}="auto", ATTR{remove}="1" - # Remove NVIDIA VGA/3D controller devices - ACTION=="add", SUBSYSTEM=="pci", ATTR{vendor}=="0x10de", ATTR{class}=="0x03[0-9]*", ATTR{power/control}="auto", ATTR{remove}="1" -''; - boot.blacklistedKernelModules = [ "nouveau" "nvidia" "nvidia_drm" "nvidia_modeset" ]; + services.udev.extraRules = '' s + # Remove NVIDIA USB xHCI Host Controller devices, if present + ACTION=="add", SUBSYSTEM=="pci", ATTR{vendor}=="0x10de", ATTR{class}=="0x0c0330", ATTR{power/control}="auto", ATTR{remove}="1" + # Remove NVIDIA USB Type-C UCSI devices, if present + ACTION=="add", SUBSYSTEM=="pci", ATTR{vendor}=="0x10de", ATTR{class}=="0x0c8000", ATTR{power/control}="auto", ATTR{remove}="1" + # Remove NVIDIA Audio devices, if present + ACTION=="add", SUBSYSTEM=="pci", ATTR{vendor}=="0x10de", ATTR{class}=="0x040300", ATTR{power/control}="auto", ATTR{remove}="1" + # Remove NVIDIA VGA/3D controller devices + ACTION=="add", SUBSYSTEM=="pci", ATTR{vendor}=="0x10de", ATTR{class}=="0x03[0-9]*", ATTR{power/control}="auto", ATTR{remove}="1" + ''; + boot.blacklistedKernelModules = ["nouveau" "nvidia" "nvidia_drm" "nvidia_modeset"]; }; }; } diff --git a/modules/editors/nixvim/default.nix b/modules/editors/nixvim/default.nix index 9ee75f7..db3e032 100755 --- a/modules/editors/nixvim/default.nix +++ b/modules/editors/nixvim/default.nix @@ -1,6 +1,10 @@ -{ config, pkgs, lib, inputs, ... }: - { + config, + pkgs, + lib, + inputs, + ... +}: { imports = [ inputs.nixvim.homeManagerModules.default @@ -8,11 +12,10 @@ ./plugins/undotree.nix ./plugins/telescope.nix ./plugins/lsp.nix - ./plugins/lsp-lines.nix - ./plugins/cmp.nix + # ./plugins/lsp-lines.nix + ./plugins/cmp.nix ./plugins/wilder.nix ./plugins/nvim-ts-comment-context.nix - ./plugins/treesitter.nix ./plugins/vimtex.nix # ./plugins/neorg.nix # ./plugins/image.nix diff --git a/modules/editors/nixvim/extra.nix b/modules/editors/nixvim/extra.nix index d00900d..97a23be 100755 --- a/modules/editors/nixvim/extra.nix +++ b/modules/editors/nixvim/extra.nix @@ -1,70 +1,70 @@ -{ config, pkgs, lib, ... }: { - programs.nixvim.extraConfigLua = lib.strings.concatLines ([ + config, + pkgs, + lib, + ... +}: { + programs.nixvim.extraConfigLua = lib.strings.concatLines [ '' - vim.cmd([[ - augroup highlight_yank - autocmd! - au TextYankPost * silent! lua vim.highlight.on_yank{higroup="IncSearch", timeout=100} - augroup END - ]]) + vim.cmd([[ + augroup highlight_yank + autocmd! + au TextYankPost * silent! lua vim.highlight.on_yank{higroup="IncSearch", timeout=100} + augroup END + ]]) - '' - ] - ); + '' + ]; - programs.nixvim.extraPlugins = [ - # actions-preview.nvim - (pkgs.vimUtils.buildVimPlugin { - name = "actions-preview.nvim"; - src = pkgs.fetchFromGitHub { - owner = "aznhe21"; - repo = "actions-preview.nvim"; - rev = "9f52a01c374318e91337697ebed51c6fae57f8a4"; - hash = "sha256-lYjsv8y1fMuTGpBF/iG7cm/a7tLdh748vJhVsSp/Iz8="; - }; - }) - - # (pkgs.vimUtils.buildVimPlugin { - # name = "fsharp-vim"; - # src = pkgs.fetchFromGitHub { - # owner = "DrTom"; - # repo = "fsharp-vim"; - # rev = "81f51e7155c3df0f56e48b894aba8cb65a9cc04b"; - # hash = "sha256-cSsUVG3MbjGD6bheZ+k1bxkDx0fZ17kbKqgBNywOaZc="; - # }; - # }) - - # fsharp-language-server - # (pkgs.vimUtils.buildVimPlugin { - # name = "fsharp-language-server"; - # src = pkgs.fetchFromGitHub { - # owner = "fsprojects"; - # repo = "fsharp-language-server"; - # rev = "471439c562c484f2fe57adfd54485e7c1ee4ca29"; - # hash = ""; - # }; - # }) - - ] - ++ - ( - if config.programs.nixvim.plugins.neorg.enable - then [ + programs.nixvim.extraPlugins = + [ + # actions-preview.nvim (pkgs.vimUtils.buildVimPlugin { - inherit (pkgs.luaPackages.lua-utils-nvim) pname version src; + name = "actions-preview.nvim"; + src = pkgs.fetchFromGitHub { + owner = "aznhe21"; + repo = "actions-preview.nvim"; + rev = "9f52a01c374318e91337697ebed51c6fae57f8a4"; + hash = "sha256-lYjsv8y1fMuTGpBF/iG7cm/a7tLdh748vJhVsSp/Iz8="; + }; }) - (pkgs.vimUtils.buildVimPlugin { - inherit (pkgs.luaPackages.pathlib-nvim) pname version src; - }) + # (pkgs.vimUtils.buildVimPlugin { + # name = "fsharp-vim"; + # src = pkgs.fetchFromGitHub { + # owner = "DrTom"; + # repo = "fsharp-vim"; + # rev = "81f51e7155c3df0f56e48b894aba8cb65a9cc04b"; + # hash = "sha256-cSsUVG3MbjGD6bheZ+k1bxkDx0fZ17kbKqgBNywOaZc="; + # }; + # }) - (pkgs.vimUtils.buildVimPlugin { - inherit (pkgs.luaPackages.nvim-nio) pname version src; - }) + # fsharp-language-server + # (pkgs.vimUtils.buildVimPlugin { + # name = "fsharp-language-server"; + # src = pkgs.fetchFromGitHub { + # owner = "fsprojects"; + # repo = "fsharp-language-server"; + # rev = "471439c562c484f2fe57adfd54485e7c1ee4ca29"; + # hash = ""; + # }; + # }) ] - else [ ] - ) - ; + ++ ( + if config.programs.nixvim.plugins.neorg.enable + then [ + (pkgs.vimUtils.buildVimPlugin { + inherit (pkgs.luaPackages.lua-utils-nvim) pname version src; + }) + (pkgs.vimUtils.buildVimPlugin { + inherit (pkgs.luaPackages.pathlib-nvim) pname version src; + }) + + (pkgs.vimUtils.buildVimPlugin { + inherit (pkgs.luaPackages.nvim-nio) pname version src; + }) + ] + else [] + ); } diff --git a/modules/editors/nixvim/keymaps.nix b/modules/editors/nixvim/keymaps.nix index 5e23869..3f8fd22 100755 --- a/modules/editors/nixvim/keymaps.nix +++ b/modules/editors/nixvim/keymaps.nix @@ -1,5 +1,4 @@ -{ ... }: -{ +{...}: { programs.nixvim.globals.mapleader = " "; programs.nixvim.globals.maplocalleader = ","; @@ -49,26 +48,26 @@ event = "LspAttach"; callback = { __raw = '' - function(event) - local opts = { buffer = event.buf } + function(event) + local opts = { buffer = event.buf } - -- these will be buffer-local keybindings - -- because they only work if you have an active language server + -- these will be buffer-local keybindings + -- because they only work if you have an active language server - vim.keymap.set('n', 'K', 'lua vim.lsp.buf.hover()', opts) - vim.keymap.set('n', 'gd', 'Telescope lsp_definitions', opts) - vim.keymap.set('n', 'gD', 'lua vim.lsp.buf.declaration()', opts) - vim.keymap.set('n', 'gi', 'Telescope lsp_implementations', opts) - vim.keymap.set('n', 'go', 'Telescope lsp_type_definitions', opts) - vim.keymap.set('n', 'gr', 'Telescope lsp_references', opts) - vim.keymap.set('n', 'gs', 'lua vim.lsp.buf.signature_help()', opts) - vim.keymap.set('n', 'r', 'lua vim.lsp.buf.rename()', opts) - vim.keymap.set({ 'n', 'x' }, '', 'lua vim.lsp.buf.format({async = true})', opts) - -- vim.keymap.set('n', 'a', 'lua vim.lsp.buf.code_action()', opts) - vim.keymap.set("n", "a", require("actions-preview").code_actions, opts) - vim.keymap.set("n", "gh", "ClangdSwitchSourceHeader", opts) - end - ''; + vim.keymap.set('n', 'K', 'lua vim.lsp.buf.hover()', opts) + vim.keymap.set('n', 'gd', 'Telescope lsp_definitions', opts) + vim.keymap.set('n', 'gD', 'lua vim.lsp.buf.declaration()', opts) + vim.keymap.set('n', 'gi', 'Telescope lsp_implementations', opts) + vim.keymap.set('n', 'go', 'Telescope lsp_type_definitions', opts) + vim.keymap.set('n', 'gr', 'Telescope lsp_references', opts) + vim.keymap.set('n', 'gs', 'lua vim.lsp.buf.signature_help()', opts) + vim.keymap.set('n', 'r', 'lua vim.lsp.buf.rename()', opts) + vim.keymap.set({ 'n', 'x' }, '', 'lua vim.lsp.buf.format({async = true})', opts) + -- vim.keymap.set('n', 'a', 'lua vim.lsp.buf.code_action()', opts) + vim.keymap.set("n", "a", require("actions-preview").code_actions, opts) + vim.keymap.set("n", "gh", "ClangdSwitchSourceHeader", opts) + end + ''; }; } ]; diff --git a/modules/editors/nixvim/options.nix b/modules/editors/nixvim/options.nix index 671b033..5be04f5 100755 --- a/modules/editors/nixvim/options.nix +++ b/modules/editors/nixvim/options.nix @@ -1,5 +1,4 @@ -{ ... }: -{ +{...}: { programs.nixvim.opts = { number = true; relativenumber = true; diff --git a/modules/editors/nixvim/plugins/cmp.nix b/modules/editors/nixvim/plugins/cmp.nix index e62e037..bbd9ded 100755 --- a/modules/editors/nixvim/plugins/cmp.nix +++ b/modules/editors/nixvim/plugins/cmp.nix @@ -1,5 +1,4 @@ -{ config, ... }: -{ +{config, ...}: { # programs.nixvim.plugins.cmp-vsnip.enable = true; # programs.nixvim.plugins.cmp_luasnip.enable = true; programs.nixvim.plugins.cmp-nvim-lsp-signature-help.enable = true; @@ -10,51 +9,49 @@ enable = true; autoEnableSources = true; settings = { - sources = [ - { name = "nvim_lsp"; } - { name = "path"; } - # { name = "buffer"; } - { name = "nvim_lsp_signature_help"; } - { name = "latex_symbols"; } - { name = "vsnip"; } - ] - ++ - ( - if config.programs.nixvim.plugins.orgmode.enable - then [{ name = "orgmode"; }] - else [ ] - ) - ++ - ( - if config.programs.nixvim.plugins.neorg.enable - then [{ name = "neorg"; }] - else [ ] - ) - ; + sources = + [ + {name = "nvim_lsp";} + {name = "path";} + # { name = "buffer"; } + {name = "nvim_lsp_signature_help";} + {name = "latex_symbols";} + {name = "vsnip";} + ] + ++ ( + if config.programs.nixvim.plugins.orgmode.enable + then [{name = "orgmode";}] + else [] + ) + ++ ( + if config.programs.nixvim.plugins.neorg.enable + then [{name = "neorg";}] + else [] + ); mapping = { "" = "cmp.mapping.confirm({ select = true })"; "" = "cmp.mapping.confirm({ select = true })"; "" = '' - function(fallback) - if cmp.visible() then - cmp.select_next_item() - else - fallback() - end - end - ''; + function(fallback) + if cmp.visible() then + cmp.select_next_item() + else + fallback() + end + end + ''; "" = '' - function(fallback) - if cmp.visible() then - cmp.select_prev_item() - else - fallback() - end - end - ''; + function(fallback) + if cmp.visible() then + cmp.select_prev_item() + else + fallback() + end + end + ''; "" = "cmp.mapping.complete()"; }; diff --git a/modules/editors/nixvim/plugins/image.nix b/modules/editors/nixvim/plugins/image.nix index 38d6416..39233e6 100755 --- a/modules/editors/nixvim/plugins/image.nix +++ b/modules/editors/nixvim/plugins/image.nix @@ -1,5 +1,4 @@ -{ pkgs, ... }: -{ +{pkgs, ...}: { programs.nixvim.plugins.image = { enable = true; backend = "ueberzug"; diff --git a/modules/editors/nixvim/plugins/lsp-lines.nix b/modules/editors/nixvim/plugins/lsp-lines.nix index a6de9f0..47f6710 100755 --- a/modules/editors/nixvim/plugins/lsp-lines.nix +++ b/modules/editors/nixvim/plugins/lsp-lines.nix @@ -1,5 +1,4 @@ -{ ... }: -{ +{...}: { programs.nixvim.plugins.lsp-lines = { enable = true; }; diff --git a/modules/editors/nixvim/plugins/lsp.nix b/modules/editors/nixvim/plugins/lsp.nix index 03e0871..0269516 100755 --- a/modules/editors/nixvim/plugins/lsp.nix +++ b/modules/editors/nixvim/plugins/lsp.nix @@ -1,5 +1,4 @@ -{ ... }: -{ +{...}: { programs.nixvim.plugins.zig.enable = true; programs.nixvim.plugins.lsp = { enable = true; @@ -9,14 +8,14 @@ enable = true; settings = { - formatting.command = [ "nixpkgs-fmt" ]; + formatting.command = ["nixpkgs-fmt"]; }; }; clangd = { enable = true; # package = null; # Install your own clang fucker # actually dont, its aids - cmd = [ "clangd" "--background-index" "--suggest-missing-includes" ]; + cmd = ["clangd" "--background-index" "--suggest-missing-includes"]; }; # As much as i hate python, it is useful for CTF and quick scripts @@ -32,6 +31,9 @@ enable = true; }; + cssls.enable = true; + html.enable = true; + rust_analyzer = { enable = true; package = null; # Install your own rust @@ -48,8 +50,8 @@ fsautocomplete = { enable = false; - cmd = [ "fsautocomplete" "--adaptive-lsp-server-enabled" "--verbose" ]; - filetypes = [ "fsharp" "fs" ]; + cmd = ["fsautocomplete" "--adaptive-lsp-server-enabled" "--verbose"]; + filetypes = ["fsharp" "fs"]; package = null; # Fuck you too # settings = { @@ -65,11 +67,12 @@ # }; }; + omnisharp.enable = true; + csharp_ls = { - enable = true; + enable = false; # package = null; # Fuck c#, install it yourself if you need it }; - }; }; } diff --git a/modules/editors/nixvim/plugins/lualine.nix b/modules/editors/nixvim/plugins/lualine.nix index ccec838..35e7be2 100755 --- a/modules/editors/nixvim/plugins/lualine.nix +++ b/modules/editors/nixvim/plugins/lualine.nix @@ -1,4 +1,3 @@ -{ ... }: -{ +{...}: { programs.nixvim.plugins.lualine.enable = true; } diff --git a/modules/editors/nixvim/plugins/neorg.nix b/modules/editors/nixvim/plugins/neorg.nix index 7062fc9..ec54528 100755 --- a/modules/editors/nixvim/plugins/neorg.nix +++ b/modules/editors/nixvim/plugins/neorg.nix @@ -1,5 +1,4 @@ -{ ... }: -{ +{...}: { programs.nixvim.plugins.neorg = { enable = true; # lazyLoading = true; @@ -22,5 +21,4 @@ }; }; }; - } diff --git a/modules/editors/nixvim/plugins/nvim-ts-comment-context.nix b/modules/editors/nixvim/plugins/nvim-ts-comment-context.nix index 03d04d4..bf15950 100755 --- a/modules/editors/nixvim/plugins/nvim-ts-comment-context.nix +++ b/modules/editors/nixvim/plugins/nvim-ts-comment-context.nix @@ -1,6 +1,4 @@ -{ lib, ... }: - -{ +{lib, ...}: { programs.nixvim.plugins.ts-context-commentstring.enable = true; programs.nixvim.plugins.comment.enable = true; } diff --git a/modules/editors/nixvim/plugins/orgmode.nix b/modules/editors/nixvim/plugins/orgmode.nix index 818014b..4875a0e 100755 --- a/modules/editors/nixvim/plugins/orgmode.nix +++ b/modules/editors/nixvim/plugins/orgmode.nix @@ -1,5 +1,4 @@ -{ ... }: -{ +{...}: { programs.nixvim.plugins.orgmode = { enable = true; settings = { diff --git a/modules/editors/nixvim/plugins/telescope.nix b/modules/editors/nixvim/plugins/telescope.nix index 5f41182..e6807c8 100755 --- a/modules/editors/nixvim/plugins/telescope.nix +++ b/modules/editors/nixvim/plugins/telescope.nix @@ -1,5 +1,4 @@ -{...}: -{ - programs.nixvim.plugins.telescope.enable = true; - programs.nixvim.plugins.web-devicons.enable = true; +{...}: { + programs.nixvim.plugins.telescope.enable = true; + programs.nixvim.plugins.web-devicons.enable = true; } diff --git a/modules/editors/nixvim/plugins/treesitter.nix b/modules/editors/nixvim/plugins/treesitter.nix index 6d72325..87f568c 100755 --- a/modules/editors/nixvim/plugins/treesitter.nix +++ b/modules/editors/nixvim/plugins/treesitter.nix @@ -1,12 +1,15 @@ -{ ... }: - -{ +{pkgs, ...}: { programs.nixvim.plugins.treesitter = { enable = true; settings = { auto_install = false; + # highlight.enable = true; }; + + # grammarPackages = with pkgs.vimPlugins.nvim-treesitter.builtGrammars; [ + # wgsl + # ]; }; programs.nixvim.plugins.treesitter-textobjects.enable = true; diff --git a/modules/editors/nixvim/plugins/undotree.nix b/modules/editors/nixvim/plugins/undotree.nix index f3ed990..5dafb44 100755 --- a/modules/editors/nixvim/plugins/undotree.nix +++ b/modules/editors/nixvim/plugins/undotree.nix @@ -1,4 +1,3 @@ -{ ... }: -{ +{...}: { programs.nixvim.plugins.undotree.enable = true; } diff --git a/modules/editors/nixvim/plugins/vimtex.nix b/modules/editors/nixvim/plugins/vimtex.nix index 9d76c52..6f476c2 100755 --- a/modules/editors/nixvim/plugins/vimtex.nix +++ b/modules/editors/nixvim/plugins/vimtex.nix @@ -1,5 +1,4 @@ -{ ... }: -{ +{...}: { programs.nixvim.plugins.vimtex = { enable = true; texlivePackage = null; diff --git a/modules/editors/nixvim/plugins/which-key.nix b/modules/editors/nixvim/plugins/which-key.nix index b6ce666..e87ebd0 100755 --- a/modules/editors/nixvim/plugins/which-key.nix +++ b/modules/editors/nixvim/plugins/which-key.nix @@ -1,4 +1,3 @@ -{ ... }: -{ +{...}: { programs.nixvim.plugins.which-key.enable = true; } diff --git a/modules/editors/nixvim/plugins/wilder.nix b/modules/editors/nixvim/plugins/wilder.nix index 0d76df3..250fc29 100755 --- a/modules/editors/nixvim/plugins/wilder.nix +++ b/modules/editors/nixvim/plugins/wilder.nix @@ -1,22 +1,21 @@ -{ ... }: -{ +{...}: { programs.nixvim.plugins.wilder = { enable = true; - modes = [ ":" "/" "?" ]; + modes = [":" "/" "?"]; enableCmdlineEnter = true; acceptKey = ""; renderer = '' - wilder.popupmenu_renderer( - wilder.popupmenu_border_theme({ - highlights = { - border = 'Normal', -- highlight to use for the border - }, - left = { ' ', wilder.popupmenu_devicons() }, - -- 'single', 'double', 'rounded' or 'solid' - -- can also be a list of 8 characters, see :h wilder#popupmenu_border_theme() for more details - border = 'rounded', - }) - ) - ''; + wilder.popupmenu_renderer( + wilder.popupmenu_border_theme({ + highlights = { + border = 'Normal', -- highlight to use for the border + }, + left = { ' ', wilder.popupmenu_devicons() }, + -- 'single', 'double', 'rounded' or 'solid' + -- can also be a list of 8 characters, see :h wilder#popupmenu_border_theme() for more details + border = 'rounded', + }) + ) + ''; }; } diff --git a/modules/editors/nixvim/syntax/e2.nix b/modules/editors/nixvim/syntax/e2.nix new file mode 100644 index 0000000..92bbb20 --- /dev/null +++ b/modules/editors/nixvim/syntax/e2.nix @@ -0,0 +1,10 @@ +{pkgs, ...}: { + xdg.configFile."nvim/syntax/e2.vim" = let + fetch = pkgs.fetchurl { + url = "https://www.vim.org/scripts/download_script.php?src_id=17326"; + sha256 = ""; + }; + in { + source = "${fetch}/e2.vim"; + }; +} diff --git a/modules/editors/nixvim/syntax/fsharp.nix b/modules/editors/nixvim/syntax/fsharp.nix index 6309529..72695b9 100755 --- a/modules/editors/nixvim/syntax/fsharp.nix +++ b/modules/editors/nixvim/syntax/fsharp.nix @@ -1,15 +1,12 @@ -{ pkgs, ... }: -{ - xdg.configFile."nvim/syntax/fsharp.vim" = - let - git = pkgs.fetchFromGitHub { - owner = "lulu-berlin"; - repo = "vim-fsharp"; - rev = "1afff075e0a1bcbedcc52881454b99f58ec5bbfc"; - sha256 = "sha256-tpEgCxZubyzz4z+JVep1R6F+mQidw/iAfRMTOF00v6U="; - }; - in - { - source = "${git}/syntax/fsharp.vim"; +{pkgs, ...}: { + xdg.configFile."nvim/syntax/fsharp.vim" = let + git = pkgs.fetchFromGitHub { + owner = "lulu-berlin"; + repo = "vim-fsharp"; + rev = "1afff075e0a1bcbedcc52881454b99f58ec5bbfc"; + sha256 = "sha256-tpEgCxZubyzz4z+JVep1R6F+mQidw/iAfRMTOF00v6U="; }; + in { + source = "${git}/syntax/fsharp.vim"; + }; } diff --git a/modules/plymouth/blahaj.nix b/modules/plymouth/blahaj.nix index 532add6..be4d90b 100755 --- a/modules/plymouth/blahaj.nix +++ b/modules/plymouth/blahaj.nix @@ -1,5 +1,4 @@ -{pkgs, ...}: -{ +{pkgs, ...}: { boot.plymouth.enable = true; boot.plymouth.themePackages = with pkgs; [ plymouth-blahaj-theme diff --git a/modules/plymouth/default.nix b/modules/plymouth/default.nix index 84ac053..ddaa40a 100755 --- a/modules/plymouth/default.nix +++ b/modules/plymouth/default.nix @@ -1,5 +1,4 @@ -{pkgs, ...}: -{ +{pkgs, ...}: { boot.plymouth.enable = true; # boot.plymouth.themePackages = with pkgs; [ # plymouth-blahaj-theme diff --git a/modules/plymouth/modern-bgrt.nix b/modules/plymouth/modern-bgrt.nix index 973ccb9..fcb0a77 100755 --- a/modules/plymouth/modern-bgrt.nix +++ b/modules/plymouth/modern-bgrt.nix @@ -1,10 +1,10 @@ -{ lib -, stdenv -, fetchFromGitHub -, unstableGitUpdater -, pkgs +{ + lib, + stdenv, + fetchFromGitHub, + unstableGitUpdater, + pkgs, }: - stdenv.mkDerivation { name = "modern-bgrt"; version = "0-unstable-2023-03-10"; @@ -19,259 +19,258 @@ stdenv.mkDerivation { dontConfigure = true; dontBuild = true; - nativeBuildInputs = [ pkgs.imagemagick ]; + nativeBuildInputs = [pkgs.imagemagick]; installPhase = '' - runHook preInstall + runHook preInstall - # mkdir -p $out/share/plymouth/themes/modern-bgrt - # cp -r $src/theme/{*} $out/share/plymouth/themes/modern-bgrt/ - # substituteInPlace $out/share/plymouth/themes/modern-bgrt/*.plymouth --replace '/usr/share/plymouth/themes/plymouth-modern-bgrt' "$out/share/plymouth/themes/modern-bgrt/images" - # - # substituteInPlace $out/share/plymouth/themes/modern-bgrt/*.plymouth --replace '/usr/share/plymouth/themes/plymouth-modern-bgrt/bgrt.script' "$out/share/plymouth/themes/modern-bgrt/bgrt.script" + # mkdir -p $out/share/plymouth/themes/modern-bgrt + # cp -r $src/theme/{*} $out/share/plymouth/themes/modern-bgrt/ + # substituteInPlace $out/share/plymouth/themes/modern-bgrt/*.plymouth --replace '/usr/share/plymouth/themes/plymouth-modern-bgrt' "$out/share/plymouth/themes/modern-bgrt/images" + # + # substituteInPlace $out/share/plymouth/themes/modern-bgrt/*.plymouth --replace '/usr/share/plymouth/themes/plymouth-modern-bgrt/bgrt.script' "$out/share/plymouth/themes/modern-bgrt/bgrt.script" - mkdir /tmp/plymouth-theme - cp -r $src/* /tmp/plymouth-theme - - substituteInPlace /tmp/plymouth-theme/install.sh --replace '/usr' "$out" - substituteInPlace /tmp/plymouth-theme/install.sh --replace 'convert /sys/firmware/acpi/bgrt/image theme/bgrt.png' "convert theme/bgrt.jpeg theme/bgrt.png" - substituteInPlace /tmp/plymouth-theme/install.sh --replace '[[ !' "[[" + mkdir /tmp/plymouth-theme + cp -r $src/* /tmp/plymouth-theme - substituteInPlace /tmp/plymouth-theme/install.sh --replace 'convert' "${pkgs.imagemagick}/bin/convert" + substituteInPlace /tmp/plymouth-theme/install.sh --replace '/usr' "$out" + substituteInPlace /tmp/plymouth-theme/install.sh --replace 'convert /sys/firmware/acpi/bgrt/image theme/bgrt.png' "convert theme/bgrt.jpeg theme/bgrt.png" + substituteInPlace /tmp/plymouth-theme/install.sh --replace '[[ !' "[[" - echo "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 -PwBkf//Z -" | base64 --decode > /tmp/plymouth-theme/bgrt.jpg + substituteInPlace /tmp/plymouth-theme/install.sh --replace 'convert' "${pkgs.imagemagick}/bin/convert" - # curl "https://static-community.frame.work/original/2X/1/191e90201ff9e3276524e10064310c3fb439cde7.jpeg" -o "/tmp/plymouth-theme/theme/bgrt.jpeg" + echo "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 + PwBkf//Z + " | base64 --decode > /tmp/plymouth-theme/bgrt.jpg - bash /tmp/plymouth-theme/install.sh + # curl "https://static-community.frame.work/original/2X/1/191e90201ff9e3276524e10064310c3fb439cde7.jpeg" -o "/tmp/plymouth-theme/theme/bgrt.jpeg" - runHook postInstall + bash /tmp/plymouth-theme/install.sh + + runHook postInstall ''; - passthru.updateScript = unstableGitUpdater { }; + passthru.updateScript = unstableGitUpdater {}; meta = with lib; { description = "This theme uses your UEFI logo for seamless booting"; homepage = "https://github.com/glics/plymouth-modern-bgrt"; license = licenses.mit; - maintainers = with maintainers; [ me ]; + maintainers = with maintainers; [me]; platforms = platforms.all; }; } - diff --git a/modules/portals/xdg-desktop-portal-termfilechooser.nix b/modules/portals/xdg-desktop-portal-termfilechooser.nix index 14fcce6..c5bcf9a 100755 --- a/modules/portals/xdg-desktop-portal-termfilechooser.nix +++ b/modules/portals/xdg-desktop-portal-termfilechooser.nix @@ -1,10 +1,10 @@ -{ lib -, stdenv -, fetchFromGitHub -, unstableGitUpdater -, pkgs +{ + lib, + stdenv, + fetchFromGitHub, + unstableGitUpdater, + pkgs, }: - stdenv.mkDerivation { name = "xdg-desktop-portal-termfilechooser"; version = "1.0.0"; @@ -66,9 +66,8 @@ stdenv.mkDerivation { homepage = "https://github.com/GermainZ/xdg-desktop-portal-termfilechooser"; description = "xdg-desktop-portal backend for choosing files with your favorite file chooser."; license = licenses.mit; - maintainers = with maintainers; [ SpoodyTheOne ]; + maintainers = with maintainers; [SpoodyTheOne]; mainProgram = "xdg-desktop-portal-termfilechooser"; platforms = platforms.linux; }; - } diff --git a/modules/programs/alacritty.nix b/modules/programs/alacritty.nix index 2d8aa53..c80cbdb 100755 --- a/modules/programs/alacritty.nix +++ b/modules/programs/alacritty.nix @@ -1,6 +1,4 @@ -{ ... }: - -{ +{...}: { programs.alacritty = { enable = true; diff --git a/modules/programs/dunst.nix b/modules/programs/dunst.nix index 4e837f2..d7a453d 100755 --- a/modules/programs/dunst.nix +++ b/modules/programs/dunst.nix @@ -1,5 +1,9 @@ -{ pkgs, lib, config, ... }: { + pkgs, + lib, + config, + ... +}: { services.dunst.enable = true; services.dunst.settings = { global = { @@ -38,7 +42,6 @@ stack_duplicates = false; show_indicators = false; - }; "[spotify-album-art-waybar]" = { @@ -46,7 +49,7 @@ script = builtins.toString (pkgs.writeShellScript "album_art.sh" '' #!/bin/bash album_art=$(${pkgs.playerctl}/bin/playerctl -p spotify metadata mpris:artUrl) - if [[ -z $album_art ]] + if [[ -z $album_art ]] then # spotify is dead, we should die too. exit diff --git a/modules/programs/firefox.nix b/modules/programs/firefox.nix index 811ba45..2647216 100755 --- a/modules/programs/firefox.nix +++ b/modules/programs/firefox.nix @@ -1,8 +1,8 @@ -{ config -, pkgs -, ... -}: -let +{ + config, + pkgs, + ... +}: let lock-false = { Value = false; Status = "locked"; @@ -11,12 +11,11 @@ let Value = true; Status = "locked"; }; -in -{ +in { programs = { firefox = { enable = true; - languagePacks = [ "en-US" ]; + languagePacks = ["en-US"]; /* ---- PROFILES ---- @@ -86,7 +85,7 @@ in }; # FUCK youtube ai translated titles "{458160b9-32eb-0f0c-8_d1-89ad3bdeb9dc}" = { - install_url = "https://addons.mozilla.org/firefox/downloads/latest/youtube-anti-translate/latext.xpi"; + install_url = "https://addons.mozilla.org/firefox/downloads/latest/youtube-anti-translate/latext.xpi"; installation_mode = "force_installed"; }; # 1Password: diff --git a/modules/programs/foot.nix b/modules/programs/foot.nix index 01bf87b..6560ea9 100755 --- a/modules/programs/foot.nix +++ b/modules/programs/foot.nix @@ -1,9 +1,7 @@ -{ ... }: - -{ +{...}: { programs.foot.enable = true; - home.sessionVariables.TERM = "alacritty"; - home.sessionVariables.TERMINAL = "alacritty"; - home.sessionVariables.TERMCMD = "alacritty"; + home.sessionVariables.TERM = "xterm"; + home.sessionVariables.TERMINAL = "foot"; + home.sessionVariables.TERMCMD = "foot"; } diff --git a/modules/programs/hyprpaper.nix b/modules/programs/hyprpaper.nix index 9657b51..e047e03 100755 --- a/modules/programs/hyprpaper.nix +++ b/modules/programs/hyprpaper.nix @@ -1,5 +1,8 @@ -{ lib, config, ... }: { + lib, + config, + ... +}: { options = { hyprpaper.wallpaper = lib.mkOption { description = "Path to the wallpaper that should be used"; @@ -10,8 +13,8 @@ config = { xdg.configFile."hypr/hyprpaper.conf".text = # if builtins.pathExists config.hyprpaper.wallpaper then - if config.stylix.enable then - " + if config.stylix.enable + then " preload = ${config.stylix.image} wallpaper = ,${config.stylix.image} " diff --git a/modules/programs/keypassxc/default.nix b/modules/programs/keypassxc/default.nix index e69de29..0967ef4 100755 --- a/modules/programs/keypassxc/default.nix +++ b/modules/programs/keypassxc/default.nix @@ -0,0 +1 @@ +{} diff --git a/modules/programs/legcord.nix b/modules/programs/legcord.nix new file mode 100644 index 0000000..6703ddd --- /dev/null +++ b/modules/programs/legcord.nix @@ -0,0 +1,75 @@ +{ + config, + lib, + pkgs, + ... +}: +with config.lib.stylix.colors.withHashtag; { + home.packages = with pkgs; [ + legcord + ]; + + xdg.configFile."legcord/themes/Stylix-BD/manifest.json".text = builtins.toJSON { + theme = "src.css"; + name = "Stylix"; + enabled = true; + author = "Stylix"; + version = "0.0.0"; + description = "Theme configured via NixOS or Home Manager."; + supportsLegcordTitlebar = false; + }; + + xdg.configFile."legcord/themes/Stylix-BD/src.css".text = '' + :root { + --base00: ${base00}; /* Black */ + --base01: ${base01}; /* Bright Black */ + --base02: ${base02}; /* Grey */ + --base03: ${base03}; /* Brighter Grey */ + --base04: ${base04}; /* Bright Grey */ + --base05: ${base05}; /* White */ + --base06: ${base06}; /* Brighter White */ + --base07: ${base07}; /* Bright White */ + --base08: ${base08}; /* Red */ + --base09: ${base09}; /* Orange */ + --base0A: ${base0A}; /* Yellow */ + --base0B: ${base0B}; /* Green */ + --base0C: ${base0C}; /* Cyan */ + --base0D: ${base0D}; /* Blue */ + --base0E: ${base0E}; /* Purple */ + --base0F: ${base0F}; /* Magenta */ + + --primary-630: var(--base00); /* Autocomplete background */ + --primary-660: var(--base00); /* Search input background */ + } + + .theme-light, .theme-dark { + --search-popout-option-fade: none; /* Disable fade for search popout */ + --bg-overlay-2: var(--base00); /* These 2 are needed for proper threads coloring */ + --home-background: var(--base00); + --bg-overlay-chat : var(--base00); /* Recolor forum channels */ + --background-primary: var(--base00); + --background-secondary: var(--base01); + --background-secondary-alt: var(--base01); + --channeltextarea-background: var(--base01); + --background-tertiary: var(--base00); + --background-accent: var(--base0E); + --background-floating: var(--base01); + --background-modifier-hover: ${base00}4c; /* 30% of base00 */ + --background-modifier-selected: var(--base00); + --text-normal: var(--base05); + --text-secondary: var(--base03); + --text-muted: var(--base04); + --text-link: var(--base0C); + --interactive-normal: var(--base05); + --interactive-hover: var(--base05); + --interactive-active: var(--base07); + --interactive-muted: var(--base03); + --channels-default: var(--base04); + --channel-icon: var(--base04); + --header-primary: var(--base06); + --header-secondary: var(--base04); + --scrollbar-thin-track: transparent; + --scrollbar-auto-track: transparent; + } + ''; +} diff --git a/modules/programs/mangohud.nix b/modules/programs/mangohud.nix index 1df8f00..0ce851c 100644 --- a/modules/programs/mangohud.nix +++ b/modules/programs/mangohud.nix @@ -1,5 +1,9 @@ -{ pkgs, config, lib, ... }: { + pkgs, + config, + lib, + ... +}: { programs.mangohud = { enable = true; settings = { @@ -10,6 +14,11 @@ alpha = lib.mkForce 1.0; round_corners = lib.mkForce 4; gpu_name = true; + + battery = true; + device_battery = ["gamepad" "mouse"]; + battery_watt = true; + battery_time = true; }; }; } diff --git a/modules/programs/path-of-building-poe2/default.nix b/modules/programs/path-of-building-poe2/default.nix new file mode 100644 index 0000000..757156d --- /dev/null +++ b/modules/programs/path-of-building-poe2/default.nix @@ -0,0 +1,96 @@ +{ + stdenv, + lib, + fetchFromGitHub, + unzip, + wineWowPackages, + luajit, + copyDesktopItems, + makeDesktopItem, +}: +stdenv.mkDerivation rec { + pname = "path-of-building-poe2"; + version = "v0.3.0"; + + src = fetchFromGitHub { + owner = "PathOfBuildingCommunity"; + repo = "PathOfBuilding-PoE2"; + rev = "${version}"; + hash = "sha256-eIT5QWadpIAgRLCQpA80D3wKmtikSnP6wBqj3TqkUPs="; + }; + + nativeBuildInputs = [unzip] ++ lib.optional stdenv.hostPlatform.isLinux copyDesktopItems; + + buildInputs = [ + # wineWowPackages.base.out + # luajit + # luajit.pkgs.lua-curl + ]; + + installPhase = '' + runHook preInstall + + # I have absolutely no idea how this file is generated + # and I don't think I want to know. The Flatpak also does this. + unzip -j -d $out $src/runtime-win32.zip lua/sha1.lua + + # Install the actual data + # cp -r $src/src $src/runtime/lua/*.lua $src/manifest.xml $out + cp -r $src/* $out + + # Pretend this is an official build so we don't get the ugly "dev mode" warning + substituteInPlace $out/manifest.xml --replace ' + # + # + # + # + # + # + # + # + # + # ' > $out/src/Settings.xml + + # Completely stub out the update check + chmod +w $out/src/UpdateCheck.lua + echo 'return "none"' > $out/src/UpdateCheck.lua + + runHook postInstall + ''; + + desktopItems = [ + (makeDesktopItem { + name = "path-of-building-poe2"; + desktopName = "Path of Building for PoE2"; + comment = "Offline build planner for Path of Exile 2"; + exec = "nix-shell -p wineWowPackages.base.out --run \"wine ${src}/runtime/Path{space}of{space}Building-PoE2.exe %U\""; + terminal = false; + type = "Application"; + icon = "pathofbuilding"; + categories = ["Game"]; + keywords = [ + "poe" + "pob" + "pobc" + "path" + "exile" + ]; + mimeTypes = ["x-scheme-handler/pob"]; + }) + ]; + + meta = { + description = "Offline build planner for Path of Exile 2"; + homepage = "https://pathofbuilding.community/"; + license = lib.licenses.mit; + maintainers = []; + mainProgram = "pob2frontend"; + broken = stdenv.hostPlatform.isDarwin; # doesn't find uic6 for some reason + }; +} diff --git a/modules/programs/path-of-building-poe2/fix_drawimage.patch b/modules/programs/path-of-building-poe2/fix_drawimage.patch new file mode 100644 index 0000000..e69de29 diff --git a/modules/programs/path-of-building-poe2/fix_drawimage_lua.patch b/modules/programs/path-of-building-poe2/fix_drawimage_lua.patch new file mode 100644 index 0000000..14beba6 --- /dev/null +++ b/modules/programs/path-of-building-poe2/fix_drawimage_lua.patch @@ -0,0 +1,20 @@ +diff --git a/src/Classes/PassiveTreeView.lua b/src/Classes/PassiveTreeView.lua +index 5757f18e..60a49b9b 100644 +--- a/src/Classes/PassiveTreeView.lua ++++ b/src/Classes/PassiveTreeView.lua +@@ -912,7 +912,7 @@ function PassiveTreeViewClass:DrawAsset(data, x, y, scale, isHalf) + DrawImage(data.handle, x - width, y - height * 2, width * 2, height * 2) + DrawImage(data.handle, x - width, y, width * 2, height * 2, 0, 1, 1, 0) + else +- DrawImage(data.handle, x - width, y - height, width * 2, height * 2, unpack(data)) ++ -- DrawImage(data.handle, x - width, y - height, width * 2, height * 2, 0,1,1,0) + end + end + +@@ -1308,4 +1308,4 @@ function PassiveTreeViewClass:LessLuminance() + + local newA = a * alphaFactor; + SetDrawColor(newR, newG, newB, newA) +-end +\ No newline at end of file ++end diff --git a/modules/programs/path-of-building-poe2/old.nix b/modules/programs/path-of-building-poe2/old.nix new file mode 100644 index 0000000..2649510 --- /dev/null +++ b/modules/programs/path-of-building-poe2/old.nix @@ -0,0 +1,140 @@ +{ + stdenv, + lib, + fetchFromGitHub, + unzip, + meson, + ninja, + pkg-config, + qtbase, + qttools, + wrapQtAppsHook, + icoutils, + copyDesktopItems, + makeDesktopItem, + luajit, +}: let + data = stdenv.mkDerivation (finalAttrs: { + pname = "path-of-building-poe2-data"; + version = "0.3.0"; + + src = fetchFromGitHub { + owner = "PathOfBuildingCommunity"; + repo = "PathOfBuilding-PoE2"; + rev = "v${finalAttrs.version}"; + hash = "sha256-eIT5QWadpIAgRLCQpA80D3wKmtikSnP6wBqj3TqkUPs="; + }; + + nativeBuildInputs = [unzip]; + + buildCommand = '' + # I have absolutely no idea how this file is generated + # and I don't think I want to know. The Flatpak also does this. + unzip -j -d $out $src/runtime-win32.zip lua/sha1.lua + + # Install the actual data + cp -r $src/src $src/runtime/lua/*.lua $src/manifest.xml $out + + # Pretend this is an official build so we don't get the ugly "dev mode" warning + substituteInPlace $out/manifest.xml --replace ' $out/src/UpdateCheck.lua + ''; + }); +in + stdenv.mkDerivation { + pname = "path-of-building-poe2"; + version = "${data.version}-unstable-2025-01-23"; + + patches = [ + ./fix_drawimage.patch + ]; + + src = fetchFromGitHub { + owner = "ernstp"; + repo = "pobfrontend"; + rev = "9faa19aa362f975737169824c1578d5011487c18"; + hash = "sha256-zhw2PZ6ZNMgZ2hG+a6AcYBkeg7kbBHNc2eSt4if17Wk="; + }; + + nativeBuildInputs = + [ + meson + ninja + pkg-config + qttools + wrapQtAppsHook + icoutils + ] + ++ lib.optional stdenv.hostPlatform.isLinux copyDesktopItems; + + buildInputs = [ + qtbase + luajit + luajit.pkgs.lua-curl + ]; + + installPhase = '' + runHook preInstall + install -Dm555 pobfrontend $out/bin/pob2frontend + + wrestool -x -t 14 ${data.src}/runtime/Path{space}of{space}Building-PoE2.exe -o pathofbuilding2.ico + icotool -x pathofbuilding2.ico + + for size in 16 32 48 256; do + mkdir -p $out/share/icons/hicolor/"$size"x"$size"/apps + install -Dm 644 pathofbuilding*"$size"x"$size"*.png \ + $out/share/icons/hicolor/"$size"x"$size"/apps/pathofbuilding2.png + done + rm pathofbuilding2.ico + + runHook postInstall + ''; + + preFixup = '' + qtWrapperArgs+=( + --set LUA_PATH "$LUA_PATH" + --set LUA_CPATH "$LUA_CPATH" + --chdir "${data}" + ) + ''; + + desktopItems = [ + (makeDesktopItem { + name = "path-of-building-poe2"; + desktopName = "Path of Building for PoE2"; + comment = "Offline build planner for Path of Exile 2"; + exec = "pob2frontend %U"; + terminal = false; + type = "Application"; + icon = "pathofbuilding2"; + categories = ["Game"]; + keywords = [ + "poe" + "pob" + "pobc" + "path" + "exile" + ]; + mimeTypes = ["x-scheme-handler/pob"]; + }) + ]; + + passthru.data = data; + + meta = { + description = "Offline build planner for Path of Exile"; + homepage = "https://pathofbuilding.community/"; + license = lib.licenses.mit; + maintainers = [lib.maintainers.k900]; + mainProgram = "pob2frontend"; + broken = stdenv.hostPlatform.isDarwin; # doesn't find uic6 for some reason + }; + } diff --git a/modules/programs/tmux.nix b/modules/programs/tmux.nix index f716141..81f951a 100644 --- a/modules/programs/tmux.nix +++ b/modules/programs/tmux.nix @@ -1,9 +1,15 @@ -{ pkgs, lib, config, ... }: { +{ + pkgs, + lib, + config, + ... +}: { programs.tmux = { enable = true; # Enable 24-hour clock clock24 = true; - terminal = if config.programs.alacritty.enable then "alacritty" else lib.mkDefault; + # terminal = if config.programs.alacritty.enable then "alacritty" else lib.mkDefault; + terminal = config.home.sessionVariables.TERMINAL; baseIndex = 1; mouse = true; shell = "${pkgs.zsh}/bin/zsh"; diff --git a/modules/programs/tofi.nix b/modules/programs/tofi.nix index ac260d2..ca8bce6 100755 --- a/modules/programs/tofi.nix +++ b/modules/programs/tofi.nix @@ -1,4 +1,8 @@ -{ lib, config, ...}: { +{ + lib, + config, + ... +}: { programs.tofi.enable = true; # xdg.configFile."tofi/config".text = '' @@ -23,7 +27,7 @@ # hide-cursor = false # text-cursor = true # ''; - + programs.tofi.settings = { width = "35%"; height = "25%"; @@ -44,7 +48,7 @@ home.activation = { # https://github.com/philj56/tofi/issues/115#issuecomment-1701748297 - regenerateTofiCache = lib.hm.dag.entryAfter [ "writeBoundary" ] '' + regenerateTofiCache = lib.hm.dag.entryAfter ["writeBoundary"] '' tofi_cache=${config.xdg.cacheHome}/tofi-drun [[ -f "$tofi_cache" ]] && rm "$tofi_cache" ''; diff --git a/modules/programs/waybar/default.nix b/modules/programs/waybar/default.nix index 3d020d1..c232030 100755 --- a/modules/programs/waybar/default.nix +++ b/modules/programs/waybar/default.nix @@ -1,8 +1,11 @@ -{ config, lib, pkgs, ... }: -with config.lib.stylix.colors.withHashtag; -with config.stylix.fonts; { - + config, + lib, + pkgs, + ... +}: +with config.lib.stylix.colors.withHashtag; +with config.stylix.fonts; { stylix.targets.waybar.enable = false; services.playerctld.enable = true; @@ -12,38 +15,39 @@ with config.stylix.fonts; enable = true; # style = ./style.css; - style = lib.mkForce - ('' - @define-color base00 ${base00}; @define-color base01 ${base01}; @define-color base02 ${base02}; @define-color base03 ${base03}; - @define-color base04 ${base04}; @define-color base05 ${base05}; @define-color base06 ${base06}; @define-color base07 ${base07}; + style = + lib.mkForce + ( + '' + @define-color base00 ${base00}; @define-color base01 ${base01}; @define-color base02 ${base02}; @define-color base03 ${base03}; + @define-color base04 ${base04}; @define-color base05 ${base05}; @define-color base06 ${base06}; @define-color base07 ${base07}; - @define-color base08 ${base08}; @define-color base09 ${base09}; @define-color base0A ${base0A}; @define-color base0B ${base0B}; - @define-color base0C ${base0C}; @define-color base0D ${base0D}; @define-color base0E ${base0E}; @define-color base0F ${base0F}; + @define-color base08 ${base08}; @define-color base09 ${base09}; @define-color base0A ${base0A}; @define-color base0B ${base0B}; + @define-color base0C ${base0C}; @define-color base0D ${base0D}; @define-color base0E ${base0E}; @define-color base0F ${base0F}; - * { - font-family: "${sansSerif.name}"; - font-size: ${builtins.toString sizes.desktop}pt; - margin:0; - } + * { + font-family: "${sansSerif.name}"; + font-size: ${builtins.toString sizes.desktop}pt; + margin:0; + } - window#waybar { - background: transparent; - } + window#waybar { + background: transparent; + } - tooltip { - border-color: @base0D; - background: alpha(@base00, ${with config.stylix.opacity; builtins.toString desktop}); - color: @base05; - } - '' - + (builtins.readFile ./style.css) + tooltip { + border-color: @base0D; + background: alpha(@base00, ${with config.stylix.opacity; builtins.toString desktop}); + color: @base05; + } + '' + + (builtins.readFile ./style.css) ); settings = { - test = { layer = "top"; - output = [ "eDP-1" ]; + output = ["eDP-1"]; position = "top"; width = 1920; @@ -169,7 +173,7 @@ with config.stylix.fonts; "wireplumber" = { format = "{volume}% {icon}"; format-muted = ""; - format-icons = [ "" "" "" ]; + format-icons = ["" "" ""]; on-click = "wpctl set-mute @DEFAULT_SINK@ toggle"; max-volume = 150; scroll-step = 0.2; @@ -185,14 +189,14 @@ with config.stylix.fonts; format = "{capacity}% {icon}"; format-charging = "{capacity}% "; - format-icons = [ "" "" "" "" "" ]; + format-icons = ["" "" "" "" ""]; max-length = 25; }; "image#album-art" = { exec = pkgs.writeShellScript "album_art.sh" '' album_art=$(playerctl metadata | grep artUrl | awk '{ print $3 }') - if [[ -z $album_art ]] + if [[ -z $album_art ]] then # remove image echo "/tmp/invalid.tiff"; @@ -230,7 +234,6 @@ with config.stylix.fonts; interval = 2; }; }; - }; }; } diff --git a/modules/shells/zsh.nix b/modules/shells/zsh.nix index 046ee74..94c6017 100755 --- a/modules/shells/zsh.nix +++ b/modules/shells/zsh.nix @@ -1,5 +1,9 @@ -{ pkgs, lib, config, ... }: { - +{ + pkgs, + lib, + config, + ... +}: { options = { zsh.jump = { enable = lib.mkEnableOption "enables jump in zsh"; @@ -8,7 +12,7 @@ zsh.extraLines = lib.mkOption { type = lib.types.listOf lib.types.str; - default = [ ]; + default = []; description = "List of extra commands to run on zsh init"; }; @@ -56,12 +60,13 @@ # programs.zsh.initExtra = lib.concatStringsSep "\n" ([ # "echo zsh" - # ] ++ lib.lists.optionals config.zsh.jump.enable + # ] ++ lib.lists.optionals config.zsh.jump.enable # "eval"); programs.zsh.initExtra = lib.concatStringsSep "\n" ( # Add any extra lines to the zsh config - config.zsh.extraLines ++ + config.zsh.extraLines + ++ # Add jump shell script to list if jump is enabled ( if config.zsh.jump.show-destination @@ -74,12 +79,12 @@ } '' ] - else [ "eval \"$(jump shell zsh)\"" ] + else ["eval \"$(jump shell zsh)\""] ) - ++ - ( - if config.zsh.direnv then [ "eval \"$(direnv hook zsh)\"" ] - else [ ] + ++ ( + if config.zsh.direnv + then ["eval \"$(direnv hook zsh)\""] + else [] ) # ++ # ( @@ -91,4 +96,3 @@ ); }; } - diff --git a/modules/stylix/cursors/posy-improved/default.nix b/modules/stylix/cursors/posy-improved/default.nix index 184cc6c..afb5af8 100755 --- a/modules/stylix/cursors/posy-improved/default.nix +++ b/modules/stylix/cursors/posy-improved/default.nix @@ -1,10 +1,10 @@ -{ lib -, stdenvNoCC -, fetchFromGitHub -, unstableGitUpdater -, pkgs +{ + lib, + stdenvNoCC, + fetchFromGitHub, + unstableGitUpdater, + pkgs, }: - stdenvNoCC.mkDerivation { name = "posy-cursors"; @@ -34,9 +34,9 @@ stdenvNoCC.mkDerivation { description = "Posy cursors for NixOS"; homepage = "https://github.com/simtrami/posy-improved-cursor-linux"; # license = licenses.mit; - maintainers = with maintainers; [ me ]; + maintainers = with maintainers; [me]; platforms = platforms.all; }; -# https://github.com/ripperhowls/Posys-Cursors-Improved-by-ripperhowls.git + # https://github.com/ripperhowls/Posys-Cursors-Improved-by-ripperhowls.git } diff --git a/modules/stylix/home/default.nix b/modules/stylix/home/default.nix index 94eafca..7dc30ce 100755 --- a/modules/stylix/home/default.nix +++ b/modules/stylix/home/default.nix @@ -1,17 +1,19 @@ -{ pkgs, ... }: -{ +{pkgs, ...}: { stylix.enable = true; # stylix.image = ./nixos-wallpaper.png; stylix.autoEnable = true; + + home.packages = [pkgs.dejavu_fonts]; + stylix.fonts = { serif = { - package = pkgs.dejavu_fonts; - name = "DejaVu Serif"; + package = pkgs.iosevka-comfy.comfy; + name = "FreeSerif"; }; sansSerif = { - package = pkgs.dejavu_fonts; - name = "DejaVu Sans"; + package = pkgs.ubuntu-sans; + name = "Ubuntu Sans"; }; monospace = { @@ -21,14 +23,13 @@ # "Mononoki" # ]; # }); - package = pkgs.nerd-fonts.mononoki; - name = "Mononoki Nerd Font"; + package = pkgs.nerd-fonts.jetbrains-mono; + name = "JetBrainsMono Nerd Font"; }; emoji = { package = pkgs.noto-fonts-emoji; name = "Noto Color Emoji"; }; - }; } diff --git a/modules/users/main-user.nix b/modules/users/main-user.nix index 554e70c..a21809d 100755 --- a/modules/users/main-user.nix +++ b/modules/users/main-user.nix @@ -1,7 +1,10 @@ -{ pkgs, lib, config, ... }: { + pkgs, + lib, + config, + ... +}: { options = { - main-user = { enable = lib.mkEnableOption "Enable main user"; name = lib.mkOption { @@ -12,7 +15,7 @@ groups = lib.mkOption { type = lib.types.listOf lib.types.str; - default = [ ]; + default = []; description = "List of groups to add the user to"; }; @@ -25,13 +28,13 @@ home-manager = { enable = lib.mkEnableOption "Enable home-manager for the user"; - import = lib.mkOption + import = + lib.mkOption { description = "Import path. MUST BE SET IN CONFIGURATION.NIX"; }; }; }; - }; config = lib.mkIf config.main-user.enable { @@ -39,12 +42,13 @@ isNormalUser = true; initialPassword = "1234"; description = "Main system user"; - extraGroups = [ - "networkmanager" - "audio" - ] - ++ config.main-user.groups - ++ (lib.lists.optional config.main-user.sudo "wheel"); + extraGroups = + [ + "networkmanager" + "audio" + ] + ++ config.main-user.groups + ++ (lib.lists.optional config.main-user.sudo "wheel"); shell = config.main-user.shell; }; @@ -53,4 +57,3 @@ lib.mkIf config.main-user.home-manager.enable config.main-user.home-manager.import; }; } - diff --git a/modules/window-managers/hyprland/default.nix b/modules/window-managers/hyprland/default.nix index ade5c43..24e1af5 100755 --- a/modules/window-managers/hyprland/default.nix +++ b/modules/window-managers/hyprland/default.nix @@ -1,8 +1,13 @@ -{ monitors ? [] -, border-radius ? 0 -}: -{ lib, pkgs, inputs, config, ... } @ params: { + monitors ? [], + border-radius ? 0, +}: { + lib, + pkgs, + inputs, + config, + ... +} @ params: { imports = [ ./exec.nix ./env.nix @@ -10,12 +15,10 @@ # programs.alacritty.enable = lib.mkDefault true; - wayland.windowManager.hyprland = - let - pluginsNix = (import ./plugins.nix params); + wayland.windowManager.hyprland = let + pluginsNix = import ./plugins.nix params; inherit (pluginsNix) plugins; - in - { + in { enable = true; # plugins = plugins; @@ -99,51 +102,49 @@ # Set mod key "$mod" = "super"; - bind = [ - "$mod, Return, exec, ${config.home.sessionVariables.TERMCMD}" - "$mod, C, killactive" - "$mod, V, togglefloating" - "$mod, G, fullscreen" + bind = + [ + "$mod, Return, exec, ${config.home.sessionVariables.TERMCMD}" + "$mod, C, killactive" + "$mod, V, togglefloating" + "$mod, G, fullscreen" - "$mod, D, exec, tofi-drun | bash" - "$mod, F, exec, ${pkgs.writeScriptBin "run_anything.sh" '' - package=$(echo "" | tofi --require-match=false --prompt-text=", " --height=35); + "$mod, D, exec, tofi-drun | bash" + "$mod, F, exec, ${pkgs.writeScriptBin "run_anything.sh" '' + package=$(echo "" | tofi --require-match=false --prompt-text=", " --height=35); - if [[ -z "$package" ]]; then - exit 1; - fi + if [[ -z "$package" ]]; then + exit 1; + fi - notify-send "Running $package"; - error=$(, -P tofi $package 2>&1) - if [ $? -ne 0 ]; then - notify-send "Error with $package" "$error" - fi - ''}/bin/run_anything.sh" + notify-send "Running $package"; + error=$(, -P tofi $package 2>&1) + if [ $? -ne 0 ]; then + notify-send "Error with $package" "$error" + fi + ''}/bin/run_anything.sh" - "$mod SHIFT, S, exec, grimblast --freeze copy area" - "$mod SHIFT, Q, exec, hyprctl kill" + "$mod SHIFT, S, exec, grimblast --freeze copy area" + "$mod SHIFT, Q, exec, hyprctl kill" - "$mod, L, exec, hyprlock" - - ] ++ ( - # Auto generate workspace switching from [0-9] and shift + [0-9] - builtins.concatLists (builtins.genList - ( - x: - let - ws = - let + "$mod, L, exec, hyprlock" + ] + ++ ( + # Auto generate workspace switching from [0-9] and shift + [0-9] + builtins.concatLists (builtins.genList + ( + x: let + ws = let c = (x + 1) / 10; in - builtins.toString (x + 1 - (c * 10)); - in - [ - "$mod, ${ws}, workspace, ${toString (x + 1)}" - "$mod SHIFT, ${ws}, movetoworkspace, ${toString (x + 1)}" - ] - ) - 10) - ); + builtins.toString (x + 1 - (c * 10)); + in [ + "$mod, ${ws}, workspace, ${toString (x + 1)}" + "$mod SHIFT, ${ws}, movetoworkspace, ${toString (x + 1)}" + ] + ) + 10) + ); # XF86AudioMedia # XF86AudioPrev @@ -170,12 +171,15 @@ windowrulev2 = [ "pin, initialClass:^(zen-alpha)$, initialTitle:^(Zen)$" + "fullscreen, initialTitle:^(Steam Big Picture Mode)$" ]; }; - + extraConfig = '' - '' - # + (import ./plugins.nix { inherit pkgs; inherit inputs; }).pluginConfig - ; + bind=CTRL,ALT_L,submap,passthrough + submap=passthrough + bindr=CTRL,Escape,submap,reset + submap=reset + ''; }; } diff --git a/modules/window-managers/hyprland/env.nix b/modules/window-managers/hyprland/env.nix index a74fe88..023155d 100755 --- a/modules/window-managers/hyprland/env.nix +++ b/modules/window-managers/hyprland/env.nix @@ -1,9 +1,7 @@ -{...}: - -{ +{...}: { wayland.windowManager.hyprland.settings.env = [ # "LIBVA_DRIVER_NAME,nvidia" - "LIBVA_DRIVER_NAME,iHD" + "LIBVA_DRIVER_NAME,radeonsi" "XDG_SESSION_TYPE,wayland" # "GBM_BACKEND,wayland" "GTK_USE_PORTAL,1" diff --git a/modules/window-managers/hyprland/exec.nix b/modules/window-managers/hyprland/exec.nix index 54c660c..a8897ad 100755 --- a/modules/window-managers/hyprland/exec.nix +++ b/modules/window-managers/hyprland/exec.nix @@ -1,6 +1,5 @@ -{ ... }: -{ - wayland.windowManager.hyprland.settings.exec = [ ]; +{...}: { + wayland.windowManager.hyprland.settings.exec = []; wayland.windowManager.hyprland.settings.exec-once = [ # "hyprpaper &" "waybar &" diff --git a/modules/window-managers/hyprland/hypridle.nix b/modules/window-managers/hyprland/hypridle.nix index 52120d8..e983c52 100755 --- a/modules/window-managers/hyprland/hypridle.nix +++ b/modules/window-managers/hyprland/hypridle.nix @@ -1,6 +1,4 @@ -{ ... }: - -{ +{...}: { services.hypridle = { enable = true; @@ -41,5 +39,4 @@ ]; }; }; - } diff --git a/modules/window-managers/hyprland/hyprlock.nix b/modules/window-managers/hyprland/hyprlock.nix index 8d2b014..7bd2fd5 100755 --- a/modules/window-managers/hyprland/hyprlock.nix +++ b/modules/window-managers/hyprland/hyprlock.nix @@ -1,15 +1,21 @@ -{ lib, inputs, config, ... }: { + lib, + inputs, + config, + ... +}: { programs.hyprlock = { enable = true; settings = { - general.grace = 2; + general.grace = 15; - background = { - # path = (if config.stylix.enable then builtins.toString config.stylix.image else ""); - # color = (if config.stylix.enable then config.lib.stylix.colors.base01 else ""); - }; + # background = { + # # path = (if config.stylix.enable then builtins.toString config.stylix.image else ""); + # # color = (if config.stylix.enable then config.lib.stylix.colors.base01 else ""); + # }; + + background = lib.mkForce []; input-field = { size = "250, 50"; diff --git a/modules/window-managers/hyprland/plugins.nix b/modules/window-managers/hyprland/plugins.nix index 53f5719..603495e 100644 --- a/modules/window-managers/hyprland/plugins.nix +++ b/modules/window-managers/hyprland/plugins.nix @@ -1,168 +1,170 @@ -{ pkgs, inputs, ... }: - { + pkgs, + inputs, + ... +}: { plugins = with pkgs.hyprlandPlugins; [ hyprfocus # inputs.hypr-dynamic-cursors.packages.${pkgs.system}.hypr-dynamic-cursors ]; pluginConfig = '' - hyprfocus { - enabled = yes - animate_floating = yes - animate_workspacechange = yes - focus_animation = shrink - # Beziers for focus animations - bezier = bezIn, 0.5,0.0,1.0,0.5 - bezier = bezOut, 0.0,0.5,0.5,1.0 - bezier = overshot, 0.05, 0.9, 0.1, 1.05 - bezier = smoothOut, 0.36, 0, 0.66, -0.56 - bezier = smoothIn, 0.25, 1, 0.5, 1 - bezier = realsmooth, 0.28,0.29,.69,1.08 - # Flash settings - flash { - flash_opacity = 0.95 - in_bezier = realsmooth - in_speed = 0.5 - out_bezier = realsmooth - out_speed = 3 + hyprfocus { + enabled = yes + animate_floating = yes + animate_workspacechange = yes + focus_animation = shrink + # Beziers for focus animations + bezier = bezIn, 0.5,0.0,1.0,0.5 + bezier = bezOut, 0.0,0.5,0.5,1.0 + bezier = overshot, 0.05, 0.9, 0.1, 1.05 + bezier = smoothOut, 0.36, 0, 0.66, -0.56 + bezier = smoothIn, 0.25, 1, 0.5, 1 + bezier = realsmooth, 0.28,0.29,.69,1.08 + # Flash settings + flash { + flash_opacity = 0.95 + in_bezier = realsmooth + in_speed = 0.5 + out_bezier = realsmooth + out_speed = 3 + } + # Shrink settings + shrink { + shrink_percentage = 0.95 + in_bezier = realsmooth + in_speed = 1 + out_bezier = realsmooth + out_speed = 2 + } } - # Shrink settings - shrink { - shrink_percentage = 0.95 - in_bezier = realsmooth - in_speed = 1 - out_bezier = realsmooth - out_speed = 2 - } - } - plugin:dynamic-cursors { + plugin:dynamic-cursors { - # enables the plugin - enabled = true - - # sets the cursor behaviour, supports these values: - # tilt - tilt the cursor based on x-velocity - # rotate - rotate the cursor based on movement direction - # stretch - stretch the cursor shape based on direction and velocity - # none - do not change the cursors behaviour - mode = tilt - - # minimum angle difference in degrees after which the shape is changed - # smaller values are smoother, but more expensive for hw cursors - threshold = 2 - - # override the mode behaviour per shape - # this is a keyword and can be repeated many times - # by default, there are no rules added - # see the dedicated `shape rules` section below! - # shaperule = , (optional), : , ... - # shaperule = , (optional), : , ... - # ... - - # for mode = rotate - rotate { - - # length in px of the simulated stick used to rotate the cursor - # most realistic if this is your actual cursor size - length = 20 - - # clockwise offset applied to the angle in degrees - # this will apply to ALL shapes - offset = 0.0 - } - - # for mode = tilt - tilt { - - # controls how powerful the tilt is, the lower, the more power - # this value controls at which speed (px/s) the full tilt is reached - limit = 5000 - - # relationship between speed and tilt, supports these values: - # linear - a linear function is used - # quadratic - a quadratic function is used (most realistic to actual air drag) - # negative_quadratic - negative version of the quadratic one, feels more aggressive - function = negative_quadratic - } - - # for mode = stretch - stretch { - - # controls how much the cursor is stretched - # this value controls at which speed (px/s) the full stretch is reached - limit = 3000 - - # relationship between speed and stretch amount, supports these values: - # linear - a linear function is used - # quadratic - a quadratic function is used - # negative_quadratic - negative version of the quadratic one, feels more aggressive - function = quadratic - } - - # configure shake to find - # magnifies the cursor if its is being shaken - shake { - - # enables shake to find + # enables the plugin enabled = true - # use nearest-neighbour (pixelated) scaling when shaking - # may look weird when effects are enabled - nearest = true + # sets the cursor behaviour, supports these values: + # tilt - tilt the cursor based on x-velocity + # rotate - rotate the cursor based on movement direction + # stretch - stretch the cursor shape based on direction and velocity + # none - do not change the cursors behaviour + mode = tilt - # controls how soon a shake is detected - # lower values mean sooner - threshold = 6.0 + # minimum angle difference in degrees after which the shape is changed + # smaller values are smoother, but more expensive for hw cursors + threshold = 2 - # magnification level immediately after shake start - base = 4.0 - # magnification increase per second when continuing to shake - speed = 4.0 - # how much the speed is influenced by the current shake intensitiy - influence = 0.0 + # override the mode behaviour per shape + # this is a keyword and can be repeated many times + # by default, there are no rules added + # see the dedicated `shape rules` section below! + # shaperule = , (optional), : , ... + # shaperule = , (optional), : , ... + # ... - # maximal magnification the cursor can reach - # values below 1 disable the limit (e.g. 0) - limit = 0.0 + # for mode = rotate + rotate { - # time in millseconds the cursor will stay magnified after a shake has ended - timeout = 2000 + # length in px of the simulated stick used to rotate the cursor + # most realistic if this is your actual cursor size + length = 20 - # show cursor behaviour `tilt`, `rotate`, etc. while shaking - effects = false + # clockwise offset applied to the angle in degrees + # this will apply to ALL shapes + offset = 0.0 + } - # enable ipc events for shake - # see the `ipc` section below - ipc = false + # for mode = tilt + tilt { + + # controls how powerful the tilt is, the lower, the more power + # this value controls at which speed (px/s) the full tilt is reached + limit = 5000 + + # relationship between speed and tilt, supports these values: + # linear - a linear function is used + # quadratic - a quadratic function is used (most realistic to actual air drag) + # negative_quadratic - negative version of the quadratic one, feels more aggressive + function = negative_quadratic + } + + # for mode = stretch + stretch { + + # controls how much the cursor is stretched + # this value controls at which speed (px/s) the full stretch is reached + limit = 3000 + + # relationship between speed and stretch amount, supports these values: + # linear - a linear function is used + # quadratic - a quadratic function is used + # negative_quadratic - negative version of the quadratic one, feels more aggressive + function = quadratic + } + + # configure shake to find + # magnifies the cursor if its is being shaken + shake { + + # enables shake to find + enabled = true + + # use nearest-neighbour (pixelated) scaling when shaking + # may look weird when effects are enabled + nearest = true + + # controls how soon a shake is detected + # lower values mean sooner + threshold = 6.0 + + # magnification level immediately after shake start + base = 4.0 + # magnification increase per second when continuing to shake + speed = 4.0 + # how much the speed is influenced by the current shake intensitiy + influence = 0.0 + + # maximal magnification the cursor can reach + # values below 1 disable the limit (e.g. 0) + limit = 0.0 + + # time in millseconds the cursor will stay magnified after a shake has ended + timeout = 2000 + + # show cursor behaviour `tilt`, `rotate`, etc. while shaking + effects = false + + # enable ipc events for shake + # see the `ipc` section below + ipc = false + } + + # use hyprcursor to get a higher resolution texture when the cursor is magnified + # see the `hyprcursor` section below + hyprcursor { + + # use nearest-neighbour (pixelated) scaling when magnifing beyond texture size + # this will also have effect without hyprcursor support being enabled + # 0 / false - never use pixelated scaling + # 1 / true - use pixelated when no highres image + # 2 - always use pixleated scaling + nearest = true + + # enable dedicated hyprcursor support + enabled = true + + # resolution in pixels to load the magnified shapes at + # be warned that loading a very high-resolution image will take a long time and might impact memory consumption + # -1 means we use [normal cursor size] * [shake:base option] + resolution = -1 + + # shape to use when clientside cursors are being magnified + # see the shape-name property of shape rules for possible names + # specifying clientside will use the actual shape, but will be pixelated + fallback = clientside + } } - - # use hyprcursor to get a higher resolution texture when the cursor is magnified - # see the `hyprcursor` section below - hyprcursor { - - # use nearest-neighbour (pixelated) scaling when magnifing beyond texture size - # this will also have effect without hyprcursor support being enabled - # 0 / false - never use pixelated scaling - # 1 / true - use pixelated when no highres image - # 2 - always use pixleated scaling - nearest = true - - # enable dedicated hyprcursor support - enabled = true - - # resolution in pixels to load the magnified shapes at - # be warned that loading a very high-resolution image will take a long time and might impact memory consumption - # -1 means we use [normal cursor size] * [shake:base option] - resolution = -1 - - # shape to use when clientside cursors are being magnified - # see the shape-name property of shape rules for possible names - # specifying clientside will use the actual shape, but will be pixelated - fallback = clientside - } -} ''; # wayland.windowManager.hyprland.hyprfocus = { @@ -232,7 +234,7 @@ # # linear - a linear function is used # # quadratic - a quadratic function is used (most realistic to actual air drag) # # negative_quadratic - negative version of the quadratic one, feels more aggressive - # function = "negative_quadratic"; + # function = "negative_quadratic"; # }; # }; } diff --git a/templates/dotnet/flake.nix b/templates/dotnet/flake.nix index 352ebd2..d8ae7a0 100755 --- a/templates/dotnet/flake.nix +++ b/templates/dotnet/flake.nix @@ -1,12 +1,14 @@ { description = "Dotnet flake for dotnet development"; - outputs = { self, nixpkgs }: - let - pkgs = nixpkgs.legacyPackages.x86_64-linux; - in - { - devShells.x86_64-linux = { - default = with pkgs; mkShell { + outputs = { + self, + nixpkgs, + }: let + pkgs = nixpkgs.legacyPackages.x86_64-linux; + in { + devShells.x86_64-linux = { + default = with pkgs; + mkShell { buildInputs = with pkgs; [ dotnet-sdk_8 ]; @@ -15,6 +17,6 @@ echo "dotnet shell" ''; }; - }; }; + }; }