diff --git a/flake.lock b/flake.lock index 01417c6..5bc9ed6 100644 --- a/flake.lock +++ b/flake.lock @@ -1,5 +1,27 @@ { "nodes": { + "aagl": { + "inputs": { + "flake-compat": "flake-compat", + "nixpkgs": [ + "nixpkgs" + ], + "rust-overlay": "rust-overlay" + }, + "locked": { + "lastModified": 1779290455, + "narHash": "sha256-FsCEzxL4NotctEIiQnzvIGDcANWasc+RZ/2d6QJVD+Q=", + "owner": "ezKEa", + "repo": "aagl-gtk-on-nix", + "rev": "1e9a8def348c046a626d087998782c2ae7779434", + "type": "github" + }, + "original": { + "owner": "ezKEa", + "repo": "aagl-gtk-on-nix", + "type": "github" + } + }, "alejandra": { "inputs": { "fenix": "fenix", @@ -61,11 +83,11 @@ "base16-helix": { "flake": false, "locked": { - "lastModified": 1760703920, - "narHash": "sha256-m82fGUYns4uHd+ZTdoLX2vlHikzwzdu2s2rYM2bNwzw=", + "lastModified": 1776754714, + "narHash": "sha256-E3OAK27smtATTmX45uoTSRsVD+Y+ZiVVfgM/tjpbtYg=", "owner": "tinted-theming", "repo": "base16-helix", - "rev": "d646af9b7d14bff08824538164af99d0c521b185", + "rev": "4d508123037e7851ad36ebf7d9c48b0e9e1eb581", "type": "github" }, "original": { @@ -136,11 +158,11 @@ "firefox-gnome-theme": { "flake": false, "locked": { - "lastModified": 1764873433, - "narHash": "sha256-1XPewtGMi+9wN9Ispoluxunw/RwozuTRVuuQOmxzt+A=", + "lastModified": 1776136500, + "narHash": "sha256-r0gN2brVWA351zwMV0Flmlcd6SGMvYqFbvC3DfKFM8Y=", "owner": "rafaelmardojai", "repo": "firefox-gnome-theme", - "rev": "f7ffd917ac0d253dbd6a3bf3da06888f57c69f92", + "rev": "0f8ba203d475587f477e7ae12661bd8459e225b7", "type": "github" }, "original": { @@ -149,6 +171,22 @@ "type": "github" } }, + "flake-compat": { + "flake": false, + "locked": { + "lastModified": 1767039857, + "narHash": "sha256-vNpUSpF5Nuw8xvDLj2KCwwksIbjua2LZCqhV1LNRDns=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "5edf11c44bc78a0d334f6334cdaf7d60d732daab", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, "flake-parts": { "inputs": { "nixpkgs-lib": [ @@ -157,11 +195,11 @@ ] }, "locked": { - "lastModified": 1769996383, - "narHash": "sha256-AnYjnFWgS49RlqX7LrC4uA+sCCDBj0Ry/WOJ5XWAsa0=", + "lastModified": 1778716662, + "narHash": "sha256-m1Yf0wZ8j1OHjTc2UwHwyQRSnNeSgLJOd7q5Y45hzi4=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "57928607ea566b5db3ad13af0e57e921e6b12381", + "rev": "f7c1a2d347e4c52d5fb8d10cb4d94b5884e546fb", "type": "github" }, "original": { @@ -178,11 +216,11 @@ ] }, "locked": { - "lastModified": 1767609335, - "narHash": "sha256-feveD98mQpptwrAEggBQKJTYbvwwglSbOv53uCfH9PY=", + "lastModified": 1775087534, + "narHash": "sha256-91qqW8lhL7TLwgQWijoGBbiD4t7/q75KTi8NxjVmSmA=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "250481aafeb741edfe23d29195671c19b36b6dca", + "rev": "3107b77cd68437b9a76194f0f7f9c55f2329ca5b", "type": "github" }, "original": { @@ -226,20 +264,18 @@ "gnome-shell": { "flake": false, "locked": { - "host": "gitlab.gnome.org", "lastModified": 1767737596, "narHash": "sha256-eFujfIUQDgWnSJBablOuG+32hCai192yRdrNHTv0a+s=", "owner": "GNOME", "repo": "gnome-shell", "rev": "ef02db02bf0ff342734d525b5767814770d85b49", - "type": "gitlab" + "type": "github" }, "original": { - "host": "gitlab.gnome.org", "owner": "GNOME", - "ref": "gnome-49", "repo": "gnome-shell", - "type": "gitlab" + "rev": "ef02db02bf0ff342734d525b5767814770d85b49", + "type": "github" } }, "grub2-themes": { @@ -267,11 +303,11 @@ ] }, "locked": { - "lastModified": 1773286336, - "narHash": "sha256-+yFtmhOHterllxWmV6YbdevTXpJdGS0mS0UmJ0k9fh0=", + "lastModified": 1779678629, + "narHash": "sha256-gHcIFg0mm+KFsg7iZQt67kni3+qR5U3PhEC9P7vKlZ4=", "owner": "nix-community", "repo": "home-manager", - "rev": "7d06e0cefe6e4a1e85b2b3274dcb0b3da242a557", + "rev": "612bbe3b405ad5f71d7bf9edecc04b678a061652", "type": "github" }, "original": { @@ -293,11 +329,11 @@ "xwayland-satellite-unstable": "xwayland-satellite-unstable" }, "locked": { - "lastModified": 1773303738, - "narHash": "sha256-qrl74wNFMTUzA8z6nSEWNjQcJI/MQEWdWu2Wn+u4Ctg=", + "lastModified": 1779622619, + "narHash": "sha256-CoyW4Uy3DEpI252S6vTV6/UeQ+6wsIHvi94ggC1Ev/E=", "owner": "sodiboo", "repo": "niri-flake", - "rev": "329df7671b7859abd1cbca5d5af296ed6dc22b46", + "rev": "f9e8b871f11137d4b9e15296ea134522dc7a7cb4", "type": "github" }, "original": { @@ -326,11 +362,11 @@ "niri-unstable": { "flake": false, "locked": { - "lastModified": 1773130184, - "narHash": "sha256-3bwx4WqCB06yfQIGB+OgIckOkEDyKxiTD5pOo4Xz2rI=", + "lastModified": 1779374863, + "narHash": "sha256-qKWgJ2MUODpg+b8tOwWMdMKREvs8TdGBz63SHaQZCeA=", "owner": "YaLTeR", "repo": "niri", - "rev": "b07bde3ee82dd73115e6b949e4f3f63695da35ea", + "rev": "4294948cf1c70c50e938383c2c865d7ca455ac7e", "type": "github" }, "original": { @@ -341,11 +377,11 @@ }, "nix-flatpak": { "locked": { - "lastModified": 1768656715, - "narHash": "sha256-Sbh037scxKFm7xL0ahgSCw+X2/5ZKeOwI2clqrYr9j4=", + "lastModified": 1777402031, + "narHash": "sha256-6gkfl9y3+ti0Z6dgby8/R4/DRT8sWU0I0TLCIxwWtjk=", "owner": "gmodena", "repo": "nix-flatpak", - "rev": "123fe29340a5b8671367055b75a6e7c320d6f89a", + "rev": "22a3adbe7c5c8c8a10a635d32c9ef7fc01a6e4b8", "type": "github" }, "original": { @@ -354,13 +390,33 @@ "type": "github" } }, + "nix-index-database": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1779604987, + "narHash": "sha256-ZQ5z+fVhxYKtIFwtqGp5O0PD84BM1riASvqDaN5Xs+s=", + "owner": "nix-community", + "repo": "nix-index-database", + "rev": "8fba98c80b48fa013820e0163c5096922fea4ddd", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nix-index-database", + "type": "github" + } + }, "nixos-hardware": { "locked": { - "lastModified": 1772972630, - "narHash": "sha256-mUJxsNOrBMNOUJzN0pfdVJ1r2pxeqm9gI/yIKXzVVbk=", + "lastModified": 1779258371, + "narHash": "sha256-j1iZsLy6oFApqR1oiDmHhvkwxXqcNi0aoSJj643LuwU=", "owner": "NixOS", "repo": "nixos-hardware", - "rev": "3966ce987e1a9a164205ac8259a5fe8a64528f72", + "rev": "c97bc4d15bd3473dd095e8e8ba57330ab1943a77", "type": "github" }, "original": { @@ -371,11 +427,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1773304180, - "narHash": "sha256-e/ctVWU2EYXBOsJHU76lN6vqugD8u1Xl20MJ+A+bPuE=", + "lastModified": 1779700212, + "narHash": "sha256-1pEdBfcjgfrSoYfP06BXC/ypGhwONP+PMO44yEb2Aqc=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "d5eb8dca28f5be580c26f8fcb2ec4ec4215e9102", + "rev": "415536cd2b4165c658dd130f53fbd316333b182b", "type": "github" }, "original": { @@ -387,11 +443,11 @@ }, "nixpkgs-stable": { "locked": { - "lastModified": 1773068389, - "narHash": "sha256-vMrm7Pk2hjBRPnCSjhq1pH0bg350Z+pXhqZ9ICiqqCs=", + "lastModified": 1779467186, + "narHash": "sha256-nOesoDCiXcUftqbRBMz9tt4blI5PvljMWbm3kuCA+0s=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "44bae273f9f82d480273bab26f5c50de3724f52f", + "rev": "b77b3de8775677f84492abe84635f87b0e153f0f", "type": "github" }, "original": { @@ -403,11 +459,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1773122722, - "narHash": "sha256-FIqHByVqxCprNjor1NqF80F2QQoiiyqanNNefdlvOg4=", + "lastModified": 1779508470, + "narHash": "sha256-Ap9KJX+5xHIn3bPIpfNgT6MEXdAECECwo4/rmlQD74M=", "owner": "nixos", "repo": "nixpkgs", - "rev": "62dc67aa6a52b4364dd75994ec00b51fbf474e50", + "rev": "29916453413845e54a65b8a1cf996842300cd299", "type": "github" }, "original": { @@ -417,20 +473,34 @@ "type": "github" } }, + "nixpkgs_3": { + "locked": { + "lastModified": 1779259093, + "narHash": "sha256-7DKWmH23hL2eYdkxCKeqj2i+yljTKuU+3Nk1UPHOnxc=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "d99b013d5d1931ad77fe3912ed218170dec5d9a4", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, "nixvim": { "inputs": { "flake-parts": "flake-parts", - "nixpkgs": [ - "nixpkgs" - ], + "nixpkgs": "nixpkgs_3", "systems": "systems" }, "locked": { - "lastModified": 1772402258, - "narHash": "sha256-3DmCFOdmbkFML1/G9gj8Wb+rCCZFPOQtNoMCpqOF8SA=", + "lastModified": 1779683452, + "narHash": "sha256-Ksx8jghpDBCPDiTaTyGhYUXG1BUwqPjf5pajl0q0cqA=", "owner": "nix-community", "repo": "nixvim", - "rev": "21ae25e13b01d3b4cdc750b5f9e7bad68b150c10", + "rev": "afec1bae0e6f7983a5c03ec559f7ed2ec0e714a9", "type": "github" }, "original": { @@ -451,11 +521,11 @@ ] }, "locked": { - "lastModified": 1767810917, - "narHash": "sha256-ZKqhk772+v/bujjhla9VABwcvz+hB2IaRyeLT6CFnT0=", + "lastModified": 1777598946, + "narHash": "sha256-X239dAGaU1+gfDj8jKH8GzlqKMcxaVfXOio+uzBOkeE=", "owner": "nix-community", "repo": "NUR", - "rev": "dead29c804adc928d3a69dfe7f9f12d0eec1f1a4", + "rev": "5d55af01c0f86be583931fe99207fc56c14134b3", "type": "github" }, "original": { @@ -511,11 +581,11 @@ ] }, "locked": { - "lastModified": 1772361940, - "narHash": "sha256-B1Cz+ydL1iaOnGlwOFld/C8lBECPtzhiy/pP93/CuyY=", + "lastModified": 1775856943, + "narHash": "sha256-b7Mp7P+q2Md5AGt4rjHfMcBykzMumFTen10ST++AuTU=", "owner": "nix-community", "repo": "plasma-manager", - "rev": "a4b33606111c9c5dcd10009042bb710307174f51", + "rev": "a524a6160e6df89f7673ba293cf7d78b559eb1a5", "type": "github" }, "original": { @@ -531,11 +601,11 @@ ] }, "locked": { - "lastModified": 1773291133, - "narHash": "sha256-9Odn+7x5l90HnXRY7MwVYcX+8CYAo+ldJ+GOVs7e2T8=", + "lastModified": 1779430452, + "narHash": "sha256-zTslhsxLqUlRTML506iougTGzyR38Fzhzn7t4KDEuuE=", "owner": "outfoxxed", "repo": "quickshell", - "rev": "9a9c60525014bcdf83aace03db4b53c19168edcc", + "rev": "4b4fca3224ab977dc515ac0bb78d00b3dfa71e00", "type": "github" }, "original": { @@ -546,12 +616,14 @@ }, "root": { "inputs": { + "aagl": "aagl", "alejandra": "alejandra", "cookiez-assets": "cookiez-assets", "grub2-themes": "grub2-themes", "home-manager": "home-manager", "niri": "niri", "nix-flatpak": "nix-flatpak", + "nix-index-database": "nix-index-database", "nixos-hardware": "nixos-hardware", "nixpkgs": "nixpkgs_2", "nixvim": "nixvim", @@ -578,6 +650,27 @@ "type": "github" } }, + "rust-overlay": { + "inputs": { + "nixpkgs": [ + "aagl", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1777605393, + "narHash": "sha256-Hjp0VOOHgHcTrX23iVvnfAudPcuCmfkfpQNFwv2v/ks=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "ff88db34cfa486fc4964a6991cab1678d82eee8c", + "type": "github" + }, + "original": { + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" + } + }, "stylix": { "inputs": { "base16": "base16", @@ -592,18 +685,17 @@ ], "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": 1772296853, - "narHash": "sha256-pAtzPsgHRKw/2Kv8HgAjSJg450FDldHPWsP3AKG/Xj0=", + "lastModified": 1779378391, + "narHash": "sha256-IsDb9erotvx9npI94UDosvMeYQK17p7/vmU2v9batrY=", "owner": "nix-community", "repo": "stylix", - "rev": "c4b8e80a1020e09a1f081ad0f98ce804a6e85acf", + "rev": "c1456cc4ba3c9485e7b4158c909eeca5a752cd59", "type": "github" }, "original": { @@ -643,23 +735,6 @@ "type": "github" } }, - "tinted-foot": { - "flake": false, - "locked": { - "lastModified": 1726913040, - "narHash": "sha256-+eDZPkw7efMNUf3/Pv0EmsidqdwNJ1TaOum6k7lngDQ=", - "owner": "tinted-theming", - "repo": "tinted-foot", - "rev": "fd1b924b6c45c3e4465e8a849e67ea82933fcbe4", - "type": "github" - }, - "original": { - "owner": "tinted-theming", - "repo": "tinted-foot", - "rev": "fd1b924b6c45c3e4465e8a849e67ea82933fcbe4", - "type": "github" - } - }, "tinted-kitty": { "flake": false, "locked": { @@ -679,11 +754,11 @@ "tinted-schemes": { "flake": false, "locked": { - "lastModified": 1767710407, - "narHash": "sha256-+W1EB79Jl0/gm4JqmO0Nuc5C7hRdp4vfsV/VdzI+des=", + "lastModified": 1777041405, + "narHash": "sha256-BAGZ7ObFV/9Z61OJZun7ifPyhkuHqNuW1QIhQ8LuzCo=", "owner": "tinted-theming", "repo": "schemes", - "rev": "2800e2b8ac90f678d7e4acebe4fa253f602e05b2", + "rev": "5f868b3a338b6904c47f3833b9c411be641983a8", "type": "github" }, "original": { @@ -695,11 +770,11 @@ "tinted-tmux": { "flake": false, "locked": { - "lastModified": 1767489635, - "narHash": "sha256-e6nnFnWXKBCJjCv4QG4bbcouJ6y3yeT70V9MofL32lU=", + "lastModified": 1777169200, + "narHash": "sha256-h7dDbIzP5hDr9v97w9PL6jdAgXawmj6krcH+959rqpU=", "owner": "tinted-theming", "repo": "tinted-tmux", - "rev": "3c32729ccae99be44fe8a125d20be06f8d7d8184", + "rev": "f798c2dce44ef815bb6b8f05a82135c7942d35ac", "type": "github" }, "original": { @@ -711,11 +786,11 @@ "tinted-zed": { "flake": false, "locked": { - "lastModified": 1767488740, - "narHash": "sha256-wVOj0qyil8m+ouSsVZcNjl5ZR+1GdOOAooAatQXHbuU=", + "lastModified": 1777463218, + "narHash": "sha256-Bhkozqtq3BKLqWTlmKm8uAptfX4aRGI8QX3eEL54Vpc=", "owner": "tinted-theming", "repo": "base16-zed", - "rev": "11abb0b282ad3786a2aae088d3a01c60916f2e40", + "rev": "5768d08ed2e7944a26a958868cdb073cb8856dae", "type": "github" }, "original": { @@ -744,11 +819,11 @@ "xwayland-satellite-unstable": { "flake": false, "locked": { - "lastModified": 1772429643, - "narHash": "sha256-M+bAeCCcjBnVk6w/4dIVvXvpJwOKnXjwi/lDbaN6Yws=", + "lastModified": 1779591853, + "narHash": "sha256-osTG6d7BfV5CchHjETh3jcmZwDYrHpNcpAIyh1KyIs0=", "owner": "Supreeeme", "repo": "xwayland-satellite", - "rev": "10f985b84cdbcc3bbf35b3e7e43d1b2a84fa9ce2", + "rev": "3273a0fccd71da21c6362c74f3b1d1c0a89ff3ba", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index 022a550..985ee31 100644 --- a/flake.nix +++ b/flake.nix @@ -4,10 +4,22 @@ inputs = { nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; + nix-index-database = { + url = "github:nix-community/nix-index-database"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + + aagl = { + url = "github:ezKEa/aagl-gtk-on-nix"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + nixos-hardware.url = "github:NixOS/nixos-hardware"; #To Provide Framework13 hardware modules - home-manager.url = "github:nix-community/home-manager/master"; - home-manager.inputs.nixpkgs.follows = "nixpkgs"; + home-manager = { + url = "github:nix-community/home-manager/master"; + inputs.nixpkgs.follows = "nixpkgs"; + }; plasma-manager = { url = "github:nix-community/plasma-manager"; @@ -15,9 +27,10 @@ inputs.home-manager.follows = "home-manager"; }; - #stylix.url = "github:nix-community/stylix/"; - stylix.url = "github:nix-community/stylix/master"; #Had to use branch or it would not build corrently - stylix.inputs.nixpkgs.follows = "nixpkgs"; + stylix = { + url = "github:nix-community/stylix/master"; #Had to use branch or it would not build corrently + inputs.nixpkgs.follows = "nixpkgs"; + }; quickshell = { url = "github:outfoxxed/quickshell"; @@ -31,7 +44,7 @@ nixvim = { url = "github:nix-community/nixvim"; - inputs.nixpkgs.follows = "nixpkgs"; + #Do not use follows here as it will throw warnings with nixvim's built-in source }; alejandra = { @@ -62,10 +75,12 @@ home-manager, plasma-manager, nixos-hardware, + aagl, stylix, niri, grub2-themes, nix-flatpak, + nix-index-database, ... }: let username = "cookiez"; diff --git a/modules/configuration.nix b/modules/configuration.nix index 38d0ae5..10f4746 100644 --- a/modules/configuration.nix +++ b/modules/configuration.nix @@ -18,15 +18,24 @@ ... }: { #Assign Swap to the PC - #swapDevices = [{ - # device = "/swapfile"; - # size = 16 * 1024; # 16GB - #}]; + swapDevices = [ + { + device = "/swapfile"; + size = 34 * 1024; # 34GB + #randomEncryption.enable = true; #Doesnt work with hybernation + } + ]; + nix = { + settings.nix-path = config.nix.nixPath; + nixPath = ["nixpkgs=${inputs.nixpkgs}"]; + }; imports = [ + inputs.nix-index-database.nixosModules.nix-index inputs.home-manager.nixosModules.home-manager inputs.grub2-themes.nixosModules.default inputs.nix-flatpak.nixosModules.nix-flatpak + inputs.aagl.nixosModules.default ./hardware-configuration.nix ./firefox @@ -38,8 +47,10 @@ # Bootloader. boot = { + kernelPackages = pkgs.linuxPackages_latest; kernelParams = ["quiet" "splash"]; initrd = { + systemd.enable = true; #For swap to automatically work verbose = false; kernelModules = ["amdgpu"]; }; @@ -124,22 +135,6 @@ # List services that you want to enable: services = { - ollama = { - enable = false; - # Optional: load models on startup - #loadModels = [ ... ]; - }; - - open-webui = { - enable = true; - package = pkgs.open-webui; - #environment = { - # DATA_DIR = "/var/lib/open-webui"; # System-wide writable dir - # OLLAMA_API_BASE_URL = "http://127.0.0.1:11434"; - #}; - #openFirewall = true; - }; - fprintd.enable = true; fprintd.tod.enable = true; fprintd.tod.driver = pkgs.libfprint-2-tod1-goodix; @@ -198,6 +193,8 @@ }; fonts = { + fontDir.enable = true; + packages = with pkgs; [ font-awesome nerd-fonts.jetbrains-mono @@ -222,10 +219,42 @@ programs = { steam.enable = true; + gamemode.enable = true; + + gamescope.enable = true; + + nix-index-database.comma.enable = true; + + direnv = { + enable = true; + silent = true; # Suppresses direnv's output in the terminal + nix-direnv.enable = true; + }; + ssh.askPassword = lib.mkForce "${pkgs.kdePackages.ksshaskpass}/bin/ksshaskpass"; + sleepy-launcher.enable = true; #Zenless zone zero launcher + #In order for dynamically linked executables to work - nix-ld.enable = true; + nix-ld = { + enable = true; + #To ensure that the neccesary libraries are included in the wrapper + libraries = with pkgs; [ + wayland + libadwaita + gtk4 + gtk3 + glib + gdk-pixbuf + pango + cairo + libGL + openssl + dbus + fontconfig + freetype + ]; + }; }; # Configure console keymap @@ -276,7 +305,7 @@ users.users.${username} = { isNormalUser = true; description = "Cookiez"; - extraGroups = ["networkmanager" "wheel" "docker"]; + extraGroups = ["networkmanager" "wheel" "docker" "gamemode"]; packages = with pkgs; [ #User Packages Here ]; @@ -290,7 +319,7 @@ # dockerCompat = true; #}; - waydroid.enable = true; + waydroid.enable = false; }; environment = { @@ -341,7 +370,16 @@ }; #Allow Nix Commands - nix.settings.experimental-features = ["nix-command" "flakes"]; + nix.settings = { + experimental-features = ["nix-command" "flakes"]; + + max-substitution-jobs = 32; + http-connections = 50; + + #Both needed for sleepy-launcher to work + extra-substituters = ["https://ezkea.cachix.org" "https://nix-community.cachix.org"]; + extra-trusted-public-keys = ["ezkea.cachix.org-1:ioBmUbJTZIKsHmWWXPe1FSFbeVe+afhfgqgTSNd34eI=" "nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="]; + }; # Allow unfree packages nixpkgs.config.allowUnfree = true; diff --git a/modules/desktop-entries.nix b/modules/desktop-entries.nix index 25649f3..2960dd9 100644 --- a/modules/desktop-entries.nix +++ b/modules/desktop-entries.nix @@ -59,11 +59,6 @@ noDisplay = true; }; - desktopEntries."org.kde.kmenuedit" = { - name = "Menu Editor"; - noDisplay = true; - }; - desktopEntries."micro" = { name = "Micro"; noDisplay = true; @@ -107,10 +102,5 @@ name = "KWrite"; noDisplay = true; }; - - desktopEntries."org.kde.discover" = { - name = "Discover"; - noDisplay = true; - }; }; } diff --git a/modules/firefox/home.nix b/modules/firefox/home.nix index e4c403c..1eddd6e 100644 --- a/modules/firefox/home.nix +++ b/modules/firefox/home.nix @@ -3,6 +3,7 @@ enable = true; profiles = { "${username}" = { + isDefault = true; extensions.force = true; #Create multiple containers, like "work" "social media" ..., for cookies to reside in so they dont cross leak diff --git a/modules/home.nix b/modules/home.nix index cc2a0a1..01338db 100644 --- a/modules/home.nix +++ b/modules/home.nix @@ -25,6 +25,7 @@ ".config/gtk-4.0/settings.ini.backup" ".config/niri/config.kdl" ]; + devTemplate = ../other/dev-template.nix; }) ]; @@ -55,6 +56,12 @@ #]; }; + direnv = { + enable = true; + enableZshIntegration = true; + nix-direnv.enable = true; + }; + kitty = { enable = true; settings = { diff --git a/modules/ncli.nix b/modules/ncli.nix index 31ccfff..a31ffd6 100644 --- a/modules/ncli.nix +++ b/modules/ncli.nix @@ -15,7 +15,7 @@ in PROJECT="${project}" HOST="${host}" BACKUP_FILES_STR="${backupFilesString}" - VERSION="2.0.0" + VERSION="2.1.3" FLAKE_NIX_PATH="$HOME/$PROJECT/flake.nix" read -r -a BACKUP_FILES <<< "$BACKUP_FILES_STR" @@ -45,6 +45,11 @@ in echo " pull - Pull latest changes from origin." echo " status - Show git status." echo "" + echo "Development Commands:" + echo " dev - Initialize a Nix development environment (flake.nix + direnv)." + echo " dev track - Remove assume-unchanged flag from flake files." + echo " dev untrack - Mark flake files as assume-unchanged in a directory." + echo "" echo " help - Show this help message." echo "" } @@ -65,7 +70,53 @@ in done } - # --- Main Logic --- + # --- Dev Init Helper Functions --- + print_header() { + echo "" + echo -e "''${BLUE}==============================================''${NOCOLOR}" + echo -e "''${BLUE} Nix Flake Development Environment Initializer''${NOCOLOR}" + echo -e "''${BLUE}==============================================''${NOCOLOR}" + echo "" + } + + print_success() { + echo -e "''${GREEN}[OK]''${NOCOLOR} $1" + } + + print_error() { + echo -e "''${RED}[ERR]''${NOCOLOR} $1" + } + + print_info() { + echo -e "''${YELLOW}[->]''${NOCOLOR} $1" + } + + handle_build_error() { + local exit_code=$? + # Exit code 137 = 128+9 = SIGKILL, almost always OOM killer + if [ "$exit_code" -eq 137 ]; then + echo "" + echo -e "''${RED}╔══════════════════════════════════════════════════════════╗''${NOCOLOR}" + echo -e "''${RED}║ BUILD KILLED — Signal 9 (SIGKILL) detected ║''${NOCOLOR}" + echo -e "''${RED}╚══════════════════════════════════════════════════════════╝''${NOCOLOR}" + echo "" + echo -e "''${YELLOW}What happened:''${NOCOLOR}" + echo " The build process was forcefully terminated by the OS." + echo " This is almost always the Linux kernel OOM killer running out" + echo " of RAM + swap during Nix evaluation or compilation." + echo "" + echo -e "''${YELLOW}Suggested fixes (try in order):''${NOCOLOR}" + echo "" + echo -e " ''${GREEN}1. Reduce parallel jobs''${NOCOLOR} (lowest RAM usage):" + echo " sudo nixos-rebuild switch --flake . --max-jobs 1 --cores 1" + echo "" + echo -e " ''${GREEN}2. Confirm OOM killer fired:''${NOCOLOR}" + echo " journalctl -k --since '5 minutes ago' | grep -i oom" + echo "" + fi + } + + # --- Main Logic --- if [ "$#" -eq 0 ]; then echo "Error: No command provided." >&2 print_help @@ -138,7 +189,8 @@ in current=$(cat /etc/nixos-tags) fi - if sudo nixos-rebuild switch --flake .; then + sudo nixos-rebuild switch --flake . ; _rebuild_exit=$? + if [ "$_rebuild_exit" -eq 0 ]; then echo "✓ Rebuild finished successfully for $HOST" if [ -n "$current" ]; then @@ -151,6 +203,7 @@ in echo -e "Running on new generation: $YELLOW $geno $NOCOLOR-> $GREEN$genn$NOCOLOR" else + ( exit "$_rebuild_exit" ); handle_build_error echo "✗ Rebuild failed for $HOST" >&2 exit 1 fi @@ -232,7 +285,8 @@ in echo "Rebuilding system... Staying on current specialization" fi - if sudo nixos-rebuild switch --flake .; then + sudo nixos-rebuild switch --flake . ; _rebuild_exit=$? + if [ "$_rebuild_exit" -eq 0 ]; then echo "✓ Update and rebuild finished successfully for $HOST" if [ -n "$current" ]; then @@ -245,6 +299,7 @@ in echo -e "Running on new generation: $YELLOW $geno $NOCOLOR-> $GREEN$genn$NOCOLOR" else + ( exit "$_rebuild_exit" ); handle_build_error echo "✗ Update and rebuild failed for $HOST" >&2 exit 1 fi @@ -327,6 +382,376 @@ in echo "Trim operation cancelled." fi ;; + dev) + # Only flake files need assume-unchanged (Nix requires them in the index). + # .envrc and .direnv are handled via .git/info/exclude instead. + DEV_FILES=(flake.nix flake.lock) + DIRENV_LOCAL_FILES=(.envrc .direnv) + + _dev_resolve_dir() { + read -rp " Enter target directory [./]: " TARGET_DIR + TARGET_DIR="''${TARGET_DIR:-./}" + if [[ ! -d "$TARGET_DIR" ]]; then + print_error "Directory '$TARGET_DIR' does not exist." + exit 1 + fi + TARGET_ABS="$(cd "$TARGET_DIR" && pwd)" + if ! git -C "$TARGET_ABS" rev-parse --git-dir > /dev/null 2>&1; then + print_error "No Git repository found at '$TARGET_ABS'." + exit 1 + fi + } + + # Add .envrc and .direnv to .git/info/exclude (local-only, never committed). + _add_local_excludes() { + local repo_abs="$1" + local git_dir exclude_file + git_dir="$(git -C "$repo_abs" rev-parse --git-dir)" + exclude_file="$git_dir/info/exclude" + mkdir -p "$(dirname "$exclude_file")" + touch "$exclude_file" + + for entry in "''${DIRENV_LOCAL_FILES[@]}"; do + if ! grep -qxF "$entry" "$exclude_file" 2>/dev/null; then + echo "$entry" >> "$exclude_file" + print_success "$entry → ignored via .git/info/exclude (local only)" + else + print_info "$entry already in .git/info/exclude, skipping." + fi + done + } + + _remove_local_excludes() { + local repo_abs="$1" + local git_dir exclude_file tmp_file + git_dir="$(git -C "$repo_abs" rev-parse --git-dir)" + exclude_file="$git_dir/info/exclude" + + [[ -f "$exclude_file" ]] || return 0 + + tmp_file="$(mktemp)" + cp "$exclude_file" "$tmp_file" + + for entry in "''${DIRENV_LOCAL_FILES[@]}"; do + if grep -qxF "$entry" "$tmp_file" 2>/dev/null; then + grep -vxF "$entry" "$tmp_file" > "''${tmp_file}.new" || true + mv "''${tmp_file}.new" "$tmp_file" + print_success "$entry → removed from .git/info/exclude" + else + print_info "$entry not present in .git/info/exclude, skipping." + fi + done + + mv "$tmp_file" "$exclude_file" + } + + case "''${2:-init}" in + + untrack) + echo "" + echo -e "''${BLUE}--- Dev: Track Files (assume-unchanged) ---''${NOCOLOR}" + echo "" + _dev_resolve_dir + + acted=false + for f in "''${DEV_FILES[@]}"; do + full="$TARGET_ABS/$f" + if [[ ! -f "$full" ]]; then + print_info "$f not found in $TARGET_ABS — skipping." + continue + fi + if ! git -C "$TARGET_ABS" ls-files --error-unmatch "$f" > /dev/null 2>&1; then + git -C "$TARGET_ABS" add --intent-to-add "$f" + fi + git -C "$TARGET_ABS" update-index --assume-unchanged "$f" + print_success "$f → untracked (assume-unchanged)" + acted=true + done + + _add_local_excludes "$TARGET_ABS" + + if ! $acted; then + print_info "No dev files found in '$TARGET_ABS' to track." + fi + ;; + + track) + echo "" + echo -e "''${BLUE}--- Dev: Untrack Files (remove assume-unchanged) ---''${NOCOLOR}" + echo "" + _dev_resolve_dir + + acted=false + for f in "''${DEV_FILES[@]}"; do + if git -C "$TARGET_ABS" ls-files -v "$f" 2>/dev/null | grep -q "^h "; then + git -C "$TARGET_ABS" update-index --no-assume-unchanged "$f" + print_success "$f → tracked (assume-unchanged removed)" + acted=true + else + print_info "$f is not marked assume-unchanged — skipping." + fi + done + + _remove_local_excludes "$TARGET_ABS" + + if ! $acted; then + print_info "No files in '$TARGET_ABS' had the assume-unchanged bit set." + fi + ;; + + init|*) + # ---- Defaults ----- + SOURCE_FLAKE="$HOME/$PROJECT/other/dev-template.nix" + + # ---- Check source flake exists ------------------------------ + if [[ ! -f "$SOURCE_FLAKE" ]]; then + print_error "Source flake template not found: $SOURCE_FLAKE" + echo "Please ensure dev-template.nix exists in $HOME/$PROJECT/other/" + exit 1 + fi + + print_header + + # ---- Step 1: Target Directory ----------------------------------- + echo -e "''${YELLOW}Step 1/5: Target Directory''${NOCOLOR}" + echo "" + read -p " Enter target directory [./]: " TARGET_DIR + + if [[ -z "$TARGET_DIR" ]]; then + TARGET_DIR="./" + fi + + if [[ ! -d "$TARGET_DIR" ]]; then + print_error "Directory '$TARGET_DIR' does not exist. Exiting." + exit 1 + fi + + print_success "Target directory: $TARGET_DIR" + echo "" + + # ---- Check for existing flake ---------------------------------- + if [[ -f "$TARGET_DIR/flake.nix" ]]; then + echo "" + print_error "A flake.nix already exists in '$TARGET_DIR'!" + echo "" + read -p " Would you like to just place the .envrc instead? [y/N]: " ENVRC_ONLY + ENVRC_ONLY="''${ENVRC_ONLY:-N}" + + if [[ "$ENVRC_ONLY" =~ ^[Yy]$ ]]; then + TARGET_ABS="$(cd "$TARGET_DIR" && pwd)" + echo "" + print_info "Placing .envrc only..." + if ! grep -qxF "use flake" "$TARGET_ABS/.envrc" 2>/dev/null; then + echo "use flake" >> "$TARGET_ABS/.envrc" + print_success ".envrc created at $TARGET_ABS/" + else + print_info ".envrc already contains 'use flake', nothing to do." + fi + + echo "" + print_info "Next steps:" + echo " cd $TARGET_DIR" + echo " direnv allow" + echo "" + exit 0 + else + print_info "Aborting. No files were changed." + exit 1 + fi + fi + + # ---- Step 2: Project Name --------------------------------------- + echo -e "''${YELLOW}Step 2/5: Project Name''${NOCOLOR}" + echo "" + read -p " Enter development environment name [devShell]: " PROJECT_NAME + + if [[ -z "$PROJECT_NAME" ]]; then + PROJECT_NAME="devShell" + fi + + print_success "Project name: $PROJECT_NAME" + echo "" + + # ---- Step 3: Select template ---------------------------------------- + echo -e "''${YELLOW}Step 3/5: Select Template''${NOCOLOR}" + echo "" + echo " 1) Empty - Basic shell, add packages yourself" + echo " 2) Python - Python 3, pip, venv setup" + echo " 3) Node.js - Node.js, npm" + echo " 4) Rust - Rustc, cargo, rust-analyzer" + echo " 5) Go - Go, gopls, golangci-lint" + echo " 6) C/C++ - GCC, CMake, GDB, pkg-config" + echo " 7) Java - JDK 21, Maven" + echo "" + + read -p " Select template [1-7] (default: 1): " TEMPLATE_CHOICE + + case "$TEMPLATE_CHOICE" in + 2) + TEMPLATE="python3" + PACKAGES="python3 python3Packages.pip python3Packages.virtualenv" + BUILD_INPUTS="" + SHELL_HOOK_EXTRA=" + # Create venv if it doesn't exist + if [ ! -d .venv ]; then + echo 'Creating Python virtual environment...' + python3 -m venv .venv + fi + + # Activate venv + source .venv/bin/activate + + echo 'Python venv activated.' + " + ;; + 3) + TEMPLATE="node" + PACKAGES="nodejs_22" + BUILD_INPUTS="" + SHELL_HOOK_EXTRA='echo "Node.js $(node --version) ready."' + ;; + 4) + TEMPLATE="rust" + PACKAGES="rustc cargo rust-analyzer" + BUILD_INPUTS="openssl pkg-config" + SHELL_HOOK_EXTRA='echo "Rust $(rustc --version) ready."' + ;; + 5) + TEMPLATE="go" + PACKAGES="go gopls golangci-lint" + BUILD_INPUTS="" + SHELL_HOOK_EXTRA=' + export GOPATH="$PWD/.gopath" + export PATH="$GOPATH/bin:$PATH" + mkdir -p "$GOPATH" + echo "Go $(go version) ready. GOPATH: $GOPATH" + ' + ;; + 6) + TEMPLATE="cpp" + PACKAGES="gcc gdb cmake gnumake" + BUILD_INPUTS="pkg-config" + SHELL_HOOK_EXTRA='echo "GCC $(gcc --version | head -1) ready."' + ;; + 7) + TEMPLATE="java" + PACKAGES="jdk21 maven" + BUILD_INPUTS="" + SHELL_HOOK_EXTRA='echo "Java $(java --version | head -1) ready."' + ;; + *) + TEMPLATE="empty" + PACKAGES="" + BUILD_INPUTS="" + SHELL_HOOK_EXTRA="" + ;; + esac + + print_success "Selected template: $TEMPLATE" + echo "" + + # ---- Step 4: Copy and modify flake ---------------------------------- + echo -e "''${YELLOW}Step 4/5: Generating flake.nix''${NOCOLOR}" + echo "" + + cp "$SOURCE_FLAKE" "$TARGET_DIR/flake.nix" + print_success "Copied flake.nix to $TARGET_DIR/" + + sed -i "s|name = \"replaceNameHere\";|name = \"''${PROJECT_NAME}\";|" "$TARGET_DIR/flake.nix" + print_success "Set project name: $PROJECT_NAME" + + if [[ -n "$PACKAGES" ]]; then + sed -i "s|# replacePackagesHere|$PACKAGES|" "$TARGET_DIR/flake.nix" + print_success "Added packages: $PACKAGES" + fi + + if [[ -n "$BUILD_INPUTS" ]]; then + BUILD_INPUTS_LINE="buildInputs = with pkgs; [ $BUILD_INPUTS ];" + sed -i "s|# replaceBuildInputsHere|$BUILD_INPUTS_LINE|" "$TARGET_DIR/flake.nix" + print_success "Added build inputs: $BUILD_INPUTS" + fi + + if [[ -n "$SHELL_HOOK_EXTRA" ]]; then + awk -v hook="$SHELL_HOOK_EXTRA" '/# replaceShellHookHere/ { print hook; next } { print }' \ + "$TARGET_DIR/flake.nix" > "$TARGET_DIR/flake.nix.tmp" \ + && mv "$TARGET_DIR/flake.nix.tmp" "$TARGET_DIR/flake.nix" + print_success "Added template-specific shell hook" + fi + + # ---- Step 5: Git Integration & .envrc -------------------------------- + echo -e "''${YELLOW}Step 5/5: Git Integration''${NOCOLOR}" + echo "" + + TARGET_ABS="$(cd "$TARGET_DIR" && pwd)" + + echo "Creating .envrc for direnv to automatically work!" + if ! grep -qxF "use flake" "$TARGET_ABS/.envrc" 2>/dev/null; then + echo "use flake" >> "$TARGET_ABS/.envrc" + print_success ".envrc created at $TARGET_ABS/" + else + print_info ".envrc already contains 'use flake', skipping." + fi + + if git -C "$TARGET_ABS" rev-parse --git-dir > /dev/null 2>&1; then + echo " A Git repository was detected at:" + echo " $(git -C "$TARGET_ABS" rev-parse --show-toplevel)" + echo "" + + # Always add .envrc and .direnv to local exclude — no prompt needed, + # these should never be committed regardless. + _add_local_excludes "$TARGET_ABS" + echo "" + + echo " Nix flakes require flake.nix (and flake.lock) to be Git-tracked." + echo " This script can stage them as 'assume-unchanged' so Nix sees them," + echo " but they will NEVER be committed or show up in git status." + echo "" + read -p " Set up flake files as tracked-but-invisible to Git? [y/N]: " GIT_CHOICE + + GIT_CHOICE="''${GIT_CHOICE:-N}" + + if [[ "$GIT_CHOICE" =~ ^[Yy]$ ]]; then + cat > "$TARGET_ABS/flake.lock" << 'EOF' + { + "nodes": { + "root": {} + }, + "root": "root", + "version": 7 + } + EOF + print_success "flake.lock ready (Nix will populate it on first run if empty)" + + git -C "$TARGET_ABS" add --intent-to-add flake.nix flake.lock + git -C "$TARGET_ABS" update-index --assume-unchanged flake.nix flake.lock + print_success "flake.nix + flake.lock → tracked (assume-unchanged)" + else + print_info "Skipped. You can do this manually later:" + echo "" + echo " git -C \"$TARGET_ABS\" add --intent-to-add flake.nix flake.lock" + echo " git -C \"$TARGET_ABS\" update-index --assume-unchanged flake.nix flake.lock" + echo "" + fi + else + print_info "No Git repository detected — skipping Git integration." + echo "" + fi + + # ---- Done --------------------------------------------------- + echo -e "''${GREEN}==============================================''${NOCOLOR}" + echo -e "''${GREEN} Done! Your flake is ready at:''${NOCOLOR}" + echo -e "''${GREEN} $TARGET_DIR/flake.nix''${NOCOLOR}" + echo -e "''${GREEN}==============================================''${NOCOLOR}" + echo "" + print_info "Next steps:" + echo " cd $TARGET_DIR" + echo " direnv allow # Trust the .envrc so direnv auto-activates" + echo " nix develop # Or just: cd out and back in" + echo "" + ;; + + esac + ;; *) echo "Error: Invalid command '$1'" >&2 print_help diff --git a/modules/packages/cli.nix b/modules/packages/cli.nix index 9a62806..6246ddf 100644 --- a/modules/packages/cli.nix +++ b/modules/packages/cli.nix @@ -7,21 +7,21 @@ }: { environment.systemPackages = with pkgs; [ #CLI tools - pdftk #PDF toolkit - yt-dlp #YouTube and others video downloader + imagemagick #Used as a dependency for Zenless Zone Zero + #pdftk #PDF toolkit + #yt-dlp #YouTube and others video downloader tailscale #VPN - speedtest-cli #Internet speed tester + #speedtest-cli #Internet speed tester #duplicati - ollama-rocm - open-webui - cloudflare-warp - ddrescue - texliveFull #LaTeX PDF maker + #open-webui + #cloudflare-warp + #ddrescue + #texliveFull #LaTeX PDF maker lazygit #Git CLI tool with TUI - gtypist #Typing tutor - powertop #Power consumption monitor and optimizer - file #File type identifier - hashcat #Password recovery/cracking tool - packwiz #A Minecraft modpack editor + #gtypist #Typing tutor + #powertop #Power consumption monitor and optimizer + #file #File type identifier + #hashcat #Password recovery/cracking tool + #packwiz #A Minecraft modpack editor ]; } diff --git a/modules/packages/default.nix b/modules/packages/default.nix index 582ed20..519ad18 100644 --- a/modules/packages/default.nix +++ b/modules/packages/default.nix @@ -4,5 +4,6 @@ ./cli.nix ./essentials.nix ./flatpak.nix + ./overlays.nix ]; } diff --git a/modules/packages/desktop.nix b/modules/packages/desktop.nix index 04ca7cc..8c87b9a 100644 --- a/modules/packages/desktop.nix +++ b/modules/packages/desktop.nix @@ -7,58 +7,60 @@ }: { environment.systemPackages = with pkgs; [ #Programming - jetbrains.pycharm #The PyCharm IDE to edit Python code - jetbrains.idea #The IntelliJ IDE to edit Java code - jetbrains.clion #The CLion IDE to edit and compile c/c++ code + #jetbrains.pycharm #The PyCharm IDE to edit Python code + #jetbrains.idea #The IntelliJ IDE to edit Java code + #jetbrains.clion #The CLion IDE to edit and compile c/c++ code jetbrains.datagrip #The DataGrip IDE to manage Databases #jetbrains-toolbox #racket #The racket Programming language, with DrRacket IDE, for University (*Not* because it's my favourite) - rustup #Rust Programming Toolchain + #rustup #Rust Programming Toolchain #go #Go Programming Language - gcc #C/C++ Compiler - pkg-config + #gcc #C/C++ Compiler + #pkg-config vscode #Editor for all kinds of programms - nodejs_22 #NodeJS for JavaScript programming + #nodejs_22 #NodeJS for JavaScript programming #Hochschule - postgresql #Database system - dbeaver-bin #Database Management Tool - sqlite #Lightweight Database system + #postgresql #Database system + #dbeaver-bin #Database Management Tool + #sqlite #Lightweight Database system #Desktop Applications + mangohud + protonup-qt #For managing proton versions drawio ryubing #Nintendo Switch Emulator vlc #VLC Media Player lutris #Gaming Platform mission-center #For a Task Manager like GUI trayscale #Tailscale unofficial GUI - spotify #Spotify Music Client - rpi-imager #Raspberry Pi Imager + #spotify #Spotify Music Client + #rpi-imager #Raspberry Pi Imager atlauncher #Minecraft Launcher #discord vesktop #Aternative for discord on Wayland wineWow64Packages.stagingFull winetricks - wasistlos #Whatsapp - losslesscut-bin #Lossless cut for quckly cutting videos + #karere #Whatsapp + #losslesscut-bin #Lossless cut for quckly cutting videos #obs-studio #Screen Recorder gparted #Disk partition Manager #rustdesk #Remote Desktop Client - realvnc-vnc-viewer #VNC Remote Desktop Client + #realvnc-vnc-viewer #VNC Remote Desktop Client eddie #AirVPN desktop client chromium #Chromium browser for Youtube app to work - moonlight-qt #Game Streaming Client + #moonlight-qt #Game Streaming Client kitty #Kitty Terminal Emulator wmctrl #To Force windows into fullscreen kdePackages.dolphin #KDE File Browser - libreoffice-still #Office Suite + #libreoffice-still #Office Suite kdePackages.kservice - qbittorrent #Torrent Client - waydroid #Android emulator on Linux - gimp2-with-plugins #Image Editor - kdePackages.filelight #Disk Usage Analyzer - filezilla - audacity - freecad + #qbittorrent #Torrent Client + #waydroid #Android emulator on Linux + #gimp2-with-plugins #Image Editor + #kdePackages.filelight #Disk Usage Analyzer + #filezilla + #audacity + #freecad ]; } diff --git a/modules/packages/essentials.nix b/modules/packages/essentials.nix index 0fa3b83..acd8d85 100644 --- a/modules/packages/essentials.nix +++ b/modules/packages/essentials.nix @@ -10,22 +10,23 @@ environment.systemPackages = with pkgs; [ #Essentials (CLI Only) wget #A tool for quickly downloading things from the Web - javaPackages.compiler.openjdk25 #Java Development Kit 25 - python314 #Python - python314Packages.pip #Pip for Python 3.12 - python314Packages.cmake #The CMake tool to manage project build configurations + #javaPackages.compiler.openjdk25 #Java Development Kit 25 + #python314 #Python + #python314Packages.pip #Pip for Python 3.12 + #python314Packages.cmake #The CMake tool to manage project build configurations fastfetch #A utility to see information about your machine btop #A replacement for htop to see your machines resources git #Git ... no need to explain - efibootmgr #A tool to manage UEFI boot entries + #efibootmgr #A tool to manage UEFI boot entries zip #A utility for ZIP archives unzip #A utility for ZIP archives + p7zip rar #A utility for RAR archives gnutar #A utility for .tar archives cron #A tool to set up commands to run scheduled tmux #A tool to let command windows contiune to run in the background home-manager #A package to also edit the user Configuration, like with nix - konsave #A package to transfer the look and feel of KDE Plasma to other machines + #konsave #A package to transfer the look and feel of KDE Plasma to other machines openssh #SSH zoxide #Alternatice to cd, browse files zsh #Search for file names @@ -47,7 +48,7 @@ pipewire #Multimedia handling fzf #Needed for nix-selective update tool jq #Needed for nix-selective update tool - distrobox + #distrobox dbus cifs-utils samba diff --git a/modules/packages/overlays.nix b/modules/packages/overlays.nix new file mode 100644 index 0000000..fe0372f --- /dev/null +++ b/modules/packages/overlays.nix @@ -0,0 +1,10 @@ +{...}: { + nixpkgs.overlays = [ + #Skip checks of openldap (dependency for Lutris) as it is already tested enough upstream and is not needed directly + (final: prev: { + openldap = prev.openldap.overrideAttrs (old: { + doCheck = false; + }); + }) + ]; +} diff --git a/modules/stylix/home.nix b/modules/stylix/home.nix index a90145a..ef99ade 100644 --- a/modules/stylix/home.nix +++ b/modules/stylix/home.nix @@ -18,7 +18,7 @@ # colorTheme.enable = true; # profileNames = [ "${username}" ]; #}; - qt.enable = true; + qt.enable = false; qt.platform = "kde"; #kde.enable = false; }; diff --git a/other/dev-template.nix b/other/dev-template.nix new file mode 100644 index 0000000..f33dfd5 --- /dev/null +++ b/other/dev-template.nix @@ -0,0 +1,75 @@ +{ + description = "A reproducible development environment"; + + # ───────────────────────────────────────────── + # Inputs – external flakes this flake depends on + # ───────────────────────────────────────────── + inputs = { + nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; + + # flake-utils generates per-system outputs so you don't + # have to repeat yourself for every architecture. + flake-utils.url = "github:numtide/flake-utils"; + }; + + # ───────────────────────────────────────────── + # Outputs – everything this flake exposes + # ───────────────────────────────────────────── + outputs = { self, nixpkgs, flake-utils, ... }: + flake-utils.lib.eachDefaultSystem (system: + let + pkgs = import nixpkgs { + inherit system; + # Allow non-free packages + config.allowUnfree = true; + }; + in + { + + # ───────────────────────────────────────── + # `nix develop` drops you into this shell + # ───────────────────────────────────────── + devShells.default = pkgs.mkShell { + + # Human-readable name shown in the shell prompt + name = "replaceNameHere"; + + # ── Runtime packages available inside the shell ────────────── + # Add or remove anything from https://search.nixos.org/packages + packages = with pkgs; [ + # Version control + git + + # Common utilities + curl + wget + bat + + # ── Language toolchains ────────────────────────────────── + # replacePackagesHere + ]; + + # ── Build inputs (headers, libraries needed at compile time) ── + # Use this for native C libraries, e.g.: + # buildInputs = with pkgs; [ openssl zlib pkg-config ]; + + # replaceBuildInputsHere + + # ── Shell hook – runs every time you enter the shell ────────── + shellHook = '' + echo "" + echo " 🐚 Development shell ready!" + echo " 📦 nixpkgs: ${nixpkgs.rev or "unknown"}" + echo "" + + # replaceShellHookHere + ''; + + # ── Environment variables always present in the shell ───────── + + # Allow broken or insecure packages + # NIX_CONFIG = "allow-broken = true"; + }; + } + ); +} diff --git a/plasma/autostart.nix b/plasma/autostart.nix index e044f0d..9730a58 100644 --- a/plasma/autostart.nix +++ b/plasma/autostart.nix @@ -15,7 +15,7 @@ serviceConfig = { ExecStart = ["${pkgs.kdePackages.yakuake}/bin/yakuake"]; - Type = "oneshot"; + Type = "simple"; Restart = "on-failure"; RestartSec = "5s"; Environment = "PATH=/run/current-system/sw/bin:/etc/profiles/per-user/$USER/bin"; @@ -30,7 +30,7 @@ serviceConfig = { ExecStart = ["${pkgs.trayscale}/bin/trayscale --hide-window"]; - Type = "oneshot"; + Type = "simple"; Restart = "on-failure"; RestartSec = "5s"; }; diff --git a/plasma/default.nix b/plasma/default.nix index 2fb8ab2..89a599a 100644 --- a/plasma/default.nix +++ b/plasma/default.nix @@ -38,8 +38,6 @@ in { "sddm".serviceConfig.KillMode = "mixed"; }; - programs.gamemode.enable = true; - services = { xserver = { enable = true; diff --git a/plasma/settings/powerProfile.nix b/plasma/settings/powerProfile.nix index 2c915fd..8e49453 100644 --- a/plasma/settings/powerProfile.nix +++ b/plasma/settings/powerProfile.nix @@ -8,8 +8,8 @@ }: let profiles = { laptop = { - AC.powerProfile = "powerSaving"; - battery.powerProfile = "powerSaving"; + AC.powerProfile = null; #Set to null so it doesnt change on plugging it in. + battery.powerProfile = null; lowBattery.powerProfile = "powerSaving"; }; desktop = {