From a918e1e2ae51989039ac5d0518c929f34a48dc0a Mon Sep 17 00:00:00 2001 From: Franek Date: Sun, 1 Jun 2025 16:17:52 +0200 Subject: [PATCH] feat: separate HM and NixOS configs; try to fix NVIDIA drivers again --- flake.nix | 9 +++-- hosts/base-configuration.nix | 2 +- hosts/default.nix | 15 ++++---- hosts/hulk/default.nix | 12 ------- hosts/hulk/modules.nix | 13 ++----- hosts/hulk/networking.nix | 2 ++ hosts/hulk/users.nix | 2 +- modules/desktop-environments/hyprland.nix | 15 ++++---- modules/nixos/nvidia-support.nix | 17 +++++++--- overlay.nix | 10 ++++++ preferences.nix | 18 +++++++--- profiles/default.nix | 17 +++++----- profiles/hulk/apps/fish/functions.nix | 32 ------------------ profiles/{hulk => sadorowo}/apps/firefox.nix | 0 profiles/sadorowo/apps/fish/functions.nix | 32 ++++++++++++++++++ profiles/{hulk => sadorowo}/default.nix | 8 +---- profiles/{hulk => sadorowo}/modules.nix | 7 +++- profiles/{hulk => sadorowo}/packages.nix | 2 +- .../{hulk => sadorowo}/wallpapers/dark.jpg | Bin .../{hulk => sadorowo}/wallpapers/light.jpg | Bin shells/android.nix | 9 ++--- 21 files changed, 113 insertions(+), 109 deletions(-) create mode 100644 overlay.nix delete mode 100644 profiles/hulk/apps/fish/functions.nix rename profiles/{hulk => sadorowo}/apps/firefox.nix (100%) create mode 100644 profiles/sadorowo/apps/fish/functions.nix rename profiles/{hulk => sadorowo}/default.nix (60%) rename profiles/{hulk => sadorowo}/modules.nix (93%) rename profiles/{hulk => sadorowo}/packages.nix (98%) rename profiles/{hulk => sadorowo}/wallpapers/dark.jpg (100%) rename profiles/{hulk => sadorowo}/wallpapers/light.jpg (100%) diff --git a/flake.nix b/flake.nix index 2477d89..d28c11b 100644 --- a/flake.nix +++ b/flake.nix @@ -34,14 +34,13 @@ in { nixosConfigurations = import ./hosts { inherit self prefs; }; + homeConfigurations = import ./profiles { inherit self prefs; }; + devShells = forAllSystems ( system: - let - pkgs = nixpkgs.legacyPackages.${system}; - in - { + let pkgs = prefs.nixpkgs system; in { ddt4all = import ./shells/ddt4all.nix { inherit pkgs; }; - android = import ./shells/android.nix { inherit pkgs android-nixpkgs; }; + android = import ./shells/android.nix { inherit pkgs; }; dioxus = import ./shells/dioxus.nix { inherit pkgs; }; rust = import ./shells/rust.nix { inherit pkgs; }; } diff --git a/hosts/base-configuration.nix b/hosts/base-configuration.nix index 800d318..e3120ef 100644 --- a/hosts/base-configuration.nix +++ b/hosts/base-configuration.nix @@ -1,4 +1,4 @@ -{ config, pkgs, ... }: +{ config, prefs, pkgs, ... }: { # DO NOT change this unless you know what you're doing! diff --git a/hosts/default.nix b/hosts/default.nix index 7811407..262e65c 100644 --- a/hosts/default.nix +++ b/hosts/default.nix @@ -2,9 +2,7 @@ let inherit (self) inputs; - lib = inputs.nixpkgs.lib; - hmProfiles = self + /profiles; mkSystem = { @@ -12,15 +10,20 @@ let hostname, useHomeManager ? true, modules ? [ ], - }: - lib.nixosSystem { + }: let pkgs = prefs.nixpkgs system; in lib.nixosSystem { + inherit pkgs; + specialArgs = { inherit inputs prefs; }; modules = modules - ++ lib.lists.optionals useHomeManager [ inputs.home-manager.nixosModules.default ] ++ [ ./base-configuration.nix ./${hostname} - hmProfiles + ] ++ lib.lists.optionals useHomeManager [ + { environment.systemPackages = [ pkgs.home-manager ]; } + inputs.home-manager.nixosModules.default { + home-manager.useGlobalPkgs = true; + home-manager.useUserPackages = true; + } ]; }; in diff --git a/hosts/hulk/default.nix b/hosts/hulk/default.nix index 878fe66..793a026 100644 --- a/hosts/hulk/default.nix +++ b/hosts/hulk/default.nix @@ -22,18 +22,6 @@ options = "--delete-older-than 7d"; }; - nixpkgs.config = { - nvidia.acceptLicense = true; - allowUnfreePredicate = - pkg: - builtins.elem (pkgs.lib.getName pkg) [ - "nvidia-settings" - "nvidia-x11" - "nordvpn" - "hplip" - ]; - }; - swapDevices = [ { device = "/swap"; diff --git a/hosts/hulk/modules.nix b/hosts/hulk/modules.nix index f23ea97..89a6637 100644 --- a/hosts/hulk/modules.nix +++ b/hosts/hulk/modules.nix @@ -8,9 +8,6 @@ ../../modules/nixos/bluetooth.nix ../../modules/nixos/greetd.nix ../../modules/nixos/audio.nix - - # Apps & services - ../../modules/nixos/nordvpn.nix ]; modules.fingerprint.enable = true; @@ -25,7 +22,6 @@ }; services = { - tlp.enable = false; gvfs.enable = true; upower.enable = true; power-profiles-daemon.enable = true; @@ -34,22 +30,17 @@ enable = true; drivers = with pkgs; [ hplipWithPlugin ]; }; - - udev.extraRules = '' - SUBSYSTEM=="backlight", KERNEL=="intel_backlight", MODE="0666", RUN+="${pkgs.coreutils}/bin/chmod a+w /sys/class/backlight/%k/brightness" - ''; }; programs = { adb.enable = true; + dconf.enable = true; + light.enable = true; thunar.enable = true; - hyprland.enable = true; thunar.plugins = with pkgs.xfce; [ thunar-archive-plugin thunar-volman ]; - - light.enable = true; }; } diff --git a/hosts/hulk/networking.nix b/hosts/hulk/networking.nix index a3e4b2a..439011d 100644 --- a/hosts/hulk/networking.nix +++ b/hosts/hulk/networking.nix @@ -10,4 +10,6 @@ in networking.wireless.enable = pkgs.lib.mkIf wirelessEnabled true; networking.wireless.userControlled.enable = pkgs.lib.mkIf wirelessEnabled true; + + boot.kernel.sysctl."net.ipv4.ip_forward" = 0; } diff --git a/hosts/hulk/users.nix b/hosts/hulk/users.nix index 31eb55c..ea00348 100644 --- a/hosts/hulk/users.nix +++ b/hosts/hulk/users.nix @@ -25,7 +25,7 @@ in "networkmanager" "plugdev" "adbusers" - ] ++ optional config.modules.nordvpn.enable [ "nordvpn" ]; + ] ++ optional (config.modules ? nordvpn && config.modules.nordvpn.enable) [ "nordvpn" ]; ignoreShellProgramCheck = true; shell = preferredShell pkgs; }; diff --git a/modules/desktop-environments/hyprland.nix b/modules/desktop-environments/hyprland.nix index 933222e..0d653d2 100644 --- a/modules/desktop-environments/hyprland.nix +++ b/modules/desktop-environments/hyprland.nix @@ -40,19 +40,18 @@ wayland.windowManager.hyprland = { enable = true; - xwayland.enable = true; plugins = config.modules.hyprland.plugins; settings = config.modules.hyprland.additionalConfig; }; xdg.portal = { - extraPortals = with pkgs; [ xdg-desktop-portal-wlr ]; - config.hyprland = { - "default" = [ "hyprland" "wlr" ]; - "org.freedesktop.impl.portal.ScreenCast" = "wlr"; - "org.freedesktop.impl.portal.Screenshot" = "wlr"; - #"org.freedesktop.impl.portal.Settings" = "darkman"; - }; + extraPortals = with pkgs; [ xdg-desktop-portal-wlr ]; + config.hyprland = { + "default" = [ "hyprland" "wlr" ]; + "org.freedesktop.impl.portal.ScreenCast" = "wlr"; + "org.freedesktop.impl.portal.Screenshot" = "wlr"; + "org.freedesktop.impl.portal.Settings" = "darkman"; + }; }; systemd.user.services.authentication-agent = { diff --git a/modules/nixos/nvidia-support.nix b/modules/nixos/nvidia-support.nix index e4580ba..70f9999 100644 --- a/modules/nixos/nvidia-support.nix +++ b/modules/nixos/nvidia-support.nix @@ -4,19 +4,28 @@ options.modules.nvidia.enable = lib.mkEnableOption "Enable NVIDIA kernel and modprobe configurations."; config = lib.mkIf config.modules.nvidia.enable { - boot.kernelPackages = pkgs.linuxPackages_6_1; # LTS + environment.systemPackages = with pkgs; [ + libva + nvidia-vaapi-driver + ]; + + hardware.graphics = { + enable = true; + enable32Bit = true; + }; + services.xserver.videoDrivers = [ "nvidia" ]; + boot.kernelParams = ["nvidia.NVreg_PreserveVideoMemoryAllocations=1"]; hardware.nvidia = { modesetting.enable = true; - powerManagement.enable = true; + powerManagement.finegrained = true; prime = { - sync.enable = true; + offload.enable = true; intelBusId = prefs.hosts.hulk.intelBusId; nvidiaBusId = prefs.hosts.hulk.nvidiaBusId; }; - nvidiaSettings = true; package = config.boot.kernelPackages.nvidiaPackages.legacy_470; }; }; diff --git a/overlay.nix b/overlay.nix new file mode 100644 index 0000000..3940bd1 --- /dev/null +++ b/overlay.nix @@ -0,0 +1,10 @@ +inputs: final: prev: { + android-sdk = prev.callPackage inputs.android-sdk {}; + vscodium-wayland = prev.vscodium.override { + commandLineArgs = [ + "--enable-features=UseOzonePlatform" + "--ozone-platform-hint=auto" + "--ozone-platform=wayland" + ]; + }; +} \ No newline at end of file diff --git a/preferences.nix b/preferences.nix index 86a2cfa..4a924db 100644 --- a/preferences.nix +++ b/preferences.nix @@ -9,15 +9,23 @@ }; }; - pkgs = { - hulk = { - insecure = [ + nixpkgs = system: import inputs.nixpkgs { + inherit system; + overlays = [ (import ./overlay.nix inputs) ]; + config = { + nvidia.acceptLicense = true; + permittedInsecurePackages = [ "fluffychat-linux-1.22.1" "olm-3.2.16" ]; - unfree = [ + + allowUnfreePredicate = pkg: builtins.elem (inputs.nixpkgs.lib.getName pkg) [ "davinci-resolve" "anydesk" + "nvidia-settings" + "nvidia-x11" + "nordvpn" + "hplip" ]; }; }; @@ -30,6 +38,6 @@ }; homes = { - sadorowo = ./profiles/hulk; + sadorowo = ./profiles/sadorowo; }; } diff --git a/profiles/default.nix b/profiles/default.nix index fc37b71..ac60bb8 100644 --- a/profiles/default.nix +++ b/profiles/default.nix @@ -1,18 +1,17 @@ { self, prefs, - inputs, - impurity, ... }: -{ - home-manager = { - backupFileExtension = "bak"; - extraSpecialArgs = { - inherit inputs self prefs impurity; - }; +let + inherit (self) inputs; - users = prefs.homes; + mkHome = system: profile: inputs.home-manager.lib.homeManagerConfiguration { + pkgs = prefs.nixpkgs system; + extraSpecialArgs = { inherit self inputs prefs; }; + modules = [ profile ]; }; +in { + sadorowo = mkHome "x86_64-linux" ./sadorowo; } diff --git a/profiles/hulk/apps/fish/functions.nix b/profiles/hulk/apps/fish/functions.nix deleted file mode 100644 index a0fe1bc..0000000 --- a/profiles/hulk/apps/fish/functions.nix +++ /dev/null @@ -1,32 +0,0 @@ -{ - webcopy = '' - set -l domain (string trim $argv) - wget --recursive \ - --level 5 \ - --no-clobber \ - --page-requisites \ - --adjust-extension \ - --span-hosts \ - --convert-links \ - --domains $domain \ - --no-parent \ - $domain - ''; - - venv = '' - if [ -d .venv ]; then - source .venv/bin/activate.fish - else - python -m venv .venv - source .venv/bin/activate.fish - fi - ''; - - thunderbird = '' - if pgrep -x birdtray > /dev/null - birdtray -s - else - birdtray & - end - ''; -} diff --git a/profiles/hulk/apps/firefox.nix b/profiles/sadorowo/apps/firefox.nix similarity index 100% rename from profiles/hulk/apps/firefox.nix rename to profiles/sadorowo/apps/firefox.nix diff --git a/profiles/sadorowo/apps/fish/functions.nix b/profiles/sadorowo/apps/fish/functions.nix new file mode 100644 index 0000000..cfae4b0 --- /dev/null +++ b/profiles/sadorowo/apps/fish/functions.nix @@ -0,0 +1,32 @@ +{ + webcopy = '' + set -l domain (string trim $argv) + wget --recursive \ + --level 5 \ + --no-clobber \ + --page-requisites \ + --adjust-extension \ + --span-hosts \ + --convert-links \ + --domains $domain \ + --no-parent \ + $domain + ''; + + venv = '' + if [ -d .venv ]; then + source .venv/bin/activate.fish + else + python -m venv .venv + source .venv/bin/activate.fish + fi + ''; + + thunderbird = '' + if pgrep -x birdtray > /dev/null + birdtray -s + else + birdtray & + end + ''; +} diff --git a/profiles/hulk/default.nix b/profiles/sadorowo/default.nix similarity index 60% rename from profiles/hulk/default.nix rename to profiles/sadorowo/default.nix index 42a7834..0a23288 100644 --- a/profiles/hulk/default.nix +++ b/profiles/sadorowo/default.nix @@ -10,14 +10,8 @@ home = { inherit (prefs.users.hulk) username homeDirectory; - - stateVersion = "24.11"; packages = import ./packages.nix { inherit pkgs inputs; }; - }; - - nixpkgs.config = { - permittedInsecurePackages = prefs.pkgs.hulk.insecure; - allowUnfreePredicate = pkg: builtins.elem (pkgs.lib.getName pkg) prefs.pkgs.hulk.unfree; + stateVersion = "24.11"; }; programs.home-manager.enable = true; diff --git a/profiles/hulk/modules.nix b/profiles/sadorowo/modules.nix similarity index 93% rename from profiles/hulk/modules.nix rename to profiles/sadorowo/modules.nix index aed857f..94fa1d5 100644 --- a/profiles/hulk/modules.nix +++ b/profiles/sadorowo/modules.nix @@ -37,6 +37,11 @@ "~/.config/hypr/config/workspaces.conf" ]; + additionalConfig.env = [ + "LIBVA_DRIVER_NAME,nvidia" + "__GLX_VENDOR_LIBRARY_NAME,nvidia" + ]; + additionalConfig = { "$terminal" = "alacritty"; "$fileManager" = "thunar"; @@ -83,7 +88,7 @@ programs.vscode = { enable = true; - package = pkgs.vscodium; + package = pkgs.vscodium-wayland; profiles.default.extensions = with pkgs.vscode-extensions; [ rust-lang.rust-analyzer bbenoist.nix diff --git a/profiles/hulk/packages.nix b/profiles/sadorowo/packages.nix similarity index 98% rename from profiles/hulk/packages.nix rename to profiles/sadorowo/packages.nix index 098887c..a34a6ce 100644 --- a/profiles/hulk/packages.nix +++ b/profiles/sadorowo/packages.nix @@ -18,7 +18,7 @@ with pkgs; element-desktop thunderbird-bin libreoffice-qt6-fresh - gimp + gimp3 git anydesk fastfetch diff --git a/profiles/hulk/wallpapers/dark.jpg b/profiles/sadorowo/wallpapers/dark.jpg similarity index 100% rename from profiles/hulk/wallpapers/dark.jpg rename to profiles/sadorowo/wallpapers/dark.jpg diff --git a/profiles/hulk/wallpapers/light.jpg b/profiles/sadorowo/wallpapers/light.jpg similarity index 100% rename from profiles/hulk/wallpapers/light.jpg rename to profiles/sadorowo/wallpapers/light.jpg diff --git a/shells/android.nix b/shells/android.nix index b25a22b..8bf77b5 100644 --- a/shells/android.nix +++ b/shells/android.nix @@ -1,8 +1,7 @@ -{ pkgs, android-nixpkgs }: +{ pkgs }: let - android = pkgs.callPackage android-nixpkgs { }; - androidSdk = android.sdk ( + androidSdk = pkgs.android-sdk.sdk ( sdkPkgs: with sdkPkgs; [ cmdline-tools-latest build-tools-35-0-0 @@ -10,9 +9,7 @@ let platforms-android-35 ] ); - -in -pkgs.mkShell rec { +in pkgs.mkShell rec { buildInputs = with pkgs; [ androidSdk jdk17