From f7d71835c6e7e023e70ad3c31b459d1d80d284dc Mon Sep 17 00:00:00 2001 From: billy4479 Date: Wed, 22 Jan 2025 11:50:20 +0100 Subject: [PATCH] Add option for hosts to advertise for cuda support Currently blocked by some packages not building with cuda support. Needs flake update. --- flake.nix | 25 +++++++++++++++---------- flake/createAndMergeHosts.nix | 26 +++++++++++++++++++++++--- flake/system.nix | 5 +++-- user/default.nix | 3 --- 4 files changed, 41 insertions(+), 18 deletions(-) diff --git a/flake.nix b/flake.nix index 118a475..1591cfe 100644 --- a/flake.nix +++ b/flake.nix @@ -67,30 +67,35 @@ let system = "x86_64-linux"; - pkgs = import nixpkgs { - config.allowUnfree = true; + pkgsForFlake = import nixpkgs { + # config.allowUnfree = true; inherit system; }; - my-packages = import ./packages { inherit pkgs; } // { - server-tool = server-tool.packages.${system}.default; - }; + # TODO: this should definitely be an overlay. + myPackagesFn = + pkgs: + ( + import ./packages { inherit pkgs; } + // { + server-tool = server-tool.packages.${system}.default; + } + ); hosts = import ./flake/system.nix { inherit - pkgs system - my-packages + myPackagesFn inputs ; }; in { - formatter.${system} = pkgs.nixfmt-rfc-style; + formatter.${system} = pkgsForFlake.nixfmt-rfc-style; - devShells.${system}.default = pkgs.mkShell { - packages = with pkgs; [ + devShells.${system}.default = pkgsForFlake.mkShell { + packages = with pkgsForFlake; [ stylua shfmt nixfmt-rfc-style diff --git a/flake/createAndMergeHosts.nix b/flake/createAndMergeHosts.nix index 6970db1..0edc2ef 100644 --- a/flake/createAndMergeHosts.nix +++ b/flake/createAndMergeHosts.nix @@ -1,7 +1,6 @@ { - pkgs, system, - my-packages, + myPackagesFn, inputs, }: let @@ -39,6 +38,19 @@ let defaultedArgs = lib.recursiveUpdate defaultOptions args; user = defaultedArgs.user; + # This is undocumented like everywhere + # https://github.com/NixOS/nixpkgs/blob/master/pkgs/top-level/config.nix + # https://discourse.nixos.org/t/where-are-options-like-config-cudasupport-documented/17805/7 + nixpkgsConfig = { + allowUnfree = true; + cudaSupport = defaultedArgs.hasCuda; + }; + + pkgs = import inputs.nixpkgs { + config = nixpkgsConfig; + inherit system; + }; + specialArgs = { extraConfig = builtins.removeAttrs (lib.recursiveUpdate defaultedArgs { catppuccinColors = mkCatppuccinColors defaultedArgs.catppuccin; @@ -49,7 +61,7 @@ let vscode-extensions = inputs.nix-vscode-extensions.extensions.${system}; spicetifyPkgs = inputs.spicetify-nix.legacyPackages.${system}; inherit (inputs) catppuccin-vsc; - inherit my-packages; + my-packages = myPackagesFn pkgs; }; flakeInputs = inputs; }; @@ -59,8 +71,16 @@ let inputs.plasma-manager.homeManagerModules.plasma-manager inputs.spicetify-nix.homeManagerModules.default inputs.sops-nix.homeManagerModules.sops + + { + # Not sure why we need thise here too + # https://nix-community.github.io/home-manager/options.xhtml#opt-nixpkgs.config + nixpkgs.config = nixpkgsConfig; + } + ../user ]; + in { nixosConfigurations.${hostname} = inputs.nixpkgs.lib.nixosSystem { diff --git a/flake/system.nix b/flake/system.nix index d95c3a7..28c812d 100644 --- a/flake/system.nix +++ b/flake/system.nix @@ -1,7 +1,6 @@ { - pkgs, system, - my-packages, + myPackagesFn, inputs, }@args: let @@ -13,6 +12,7 @@ let isServer = false; standaloneHomeManager = true; rotateMonitor = false; # only for computerone + hasCuda = false; catppuccin = { flavor = "frappe"; @@ -51,6 +51,7 @@ createAndMergeHosts defaultOptions [ wayland = false; games = true; rotateMonitor = true; + hasCuda = true; }; extraSystemModules = [ ../system/hosts/computerone diff --git a/user/default.nix b/user/default.nix index 73845c3..4ab1016 100644 --- a/user/default.nix +++ b/user/default.nix @@ -13,9 +13,6 @@ in home.username = extraConfig.user.username; home.homeDirectory = "/home/${extraConfig.user.username}"; - # Enable unfree - yes, we have to do this here too - nixpkgs.config.allowUnfree = true; - imports = [ ./${extraConfig.hostname}.nix ./modules/scripts