diff --git a/firefox.nix b/firefox.nix index 0fd50ee..9d9cec1 100644 --- a/firefox.nix +++ b/firefox.nix @@ -1,11 +1,6 @@ -{ config, lib, pkgs, osConfig, ... }: +{ config, lib, pkgs, ... }@args: let - inherit (osConfig) hardware; - - graphical = - if lib.versionAtLeast osConfig.system.stateVersion "24.11" - then hardware.graphics.enable - else hardware.opengl.enable; + osConfig = args.osConfig or { }; firefox-csshacks = pkgs.fetchFromGitHub { owner = "MrOtherGuy"; @@ -14,7 +9,7 @@ let sparseCheckout = [ "!/*" "/chrome" "/content" ]; hash = "sha256-rk0jC5AMw41xt5yItY7CAxuYAFhoe5Jy2tvwgh59cPI="; }; -in lib.mkIf graphical { +in lib.mkIf (osConfig.hardware.graphics.enable or false) { programs.firefox = { enable = true; package = pkgs.firefox; diff --git a/flake.nix b/flake.nix index 53d5860..f980ec1 100644 --- a/flake.nix +++ b/flake.nix @@ -22,8 +22,42 @@ }; }; - outputs = { self, ... }@inputs: { + outputs = { self, nixpkgs, home-manager, ... }@inputs: + let + inherit (nixpkgs) lib; + in { nixosModules.default = import ./module.nix inputs; homeConfigurations.default = import ./home.nix inputs; + + checks = lib.genAttrs lib.systems.flakeExposed (system: { + home = (home-manager.lib.homeManagerConfiguration { + pkgs = nixpkgs.legacyPackages.${system}; + modules = [ + self.homeConfigurations.default { + home.username = "nil"; + home.homeDirectory = "/home/nil"; + } + ]; + }).activationPackage; + } // lib.optionalAttrs (lib.hasSuffix "-linux" system) { + nixos = (nixpkgs.lib.nixosSystem { + inherit system; + modules = [ + (self.nixosModules.default "nil") { + boot.loader.grub.enable = false; + fileSystems."/".device = "nodev"; + hardware.graphics.enable = true; + location = { + provider = "manual"; + latitude = 90.0; + longitude = 0.0; + }; + system.stateVersion = lib.versions.majorMinor lib.version; + } + ]; + }).config.system.build.toplevel; + }); + + hydraJobs.checks = { inherit (self.checks) x86_64-linux; }; }; } diff --git a/home.nix b/home.nix index 88ecbed..071565b 100644 --- a/home.nix +++ b/home.nix @@ -1,11 +1,6 @@ -inputs: { config, lib, pkgs, osConfig, ... }: +inputs: { config, lib, pkgs, ... }@args: let - inherit (osConfig) hardware; - - graphical = - if lib.versionAtLeast osConfig.system.stateVersion "24.11" - then hardware.graphics.enable - else hardware.opengl.enable; + osConfig = args.osConfig or { }; in { imports = [ inputs.nur.hmModules.nur @@ -226,7 +221,8 @@ in { }; programs.jq.enable = true; - programs.man.generateCaches = osConfig.documentation.man.generateCaches; + programs.man.generateCaches = + osConfig.documentation.man.generateCaches or false; programs.ripgrep.enable = true; programs.ssh = { diff --git a/module.nix b/module.nix index 434d294..da53a90 100644 --- a/module.nix +++ b/module.nix @@ -1,11 +1,6 @@ inputs: user: { config, lib, pkgs, ... }: let - inherit (config) hardware; - - graphical = - if lib.versionAtLeast config.system.stateVersion "24.11" - then hardware.graphics.enable - else hardware.opengl.enable; + graphical = config.hardware.graphics.enable; in { imports = [ inputs.home-manager.nixosModules.home-manager ]; diff --git a/wayland.nix b/wayland.nix index b9a4600..ad449e4 100644 --- a/wayland.nix +++ b/wayland.nix @@ -1,11 +1,6 @@ -{ config, lib, pkgs, osConfig, ... }: +{ config, lib, pkgs, ... }@args: let - inherit (osConfig) hardware location; - - graphical = - if lib.versionAtLeast osConfig.system.stateVersion "24.11" - then hardware.graphics.enable - else hardware.opengl.enable; + osConfig = args.osConfig or { }; cmd = { brightnessctl = "${pkgs.brightnessctl}/bin/brightnessctl"; @@ -26,7 +21,7 @@ let wpctl = "${osConfig.services.pipewire.wireplumber.package}/bin/wpctl"; xdg-open = "${pkgs.xdg-utils}/bin/xdg-open"; }; -in lib.mkIf graphical { +in lib.mkIf (osConfig.hardware.graphics.enable or false) { home.packages = with pkgs; [ # Image processing oxipng @@ -321,17 +316,16 @@ in lib.mkIf graphical { programs.yt-dlp.enable = true; - services.gammastep = { + services.gammastep = lib.optionalAttrs (osConfig ? location) ( + let inherit (osConfig) location; in { inherit (location) provider; - enable = true; - latitude = location.latitude or null; - longitude = location.longitude or null; - settings = { general.adjustment-method = "wayland"; }; - }; + } // lib.optionalAttrs (location.provider == "manual") { + inherit (location) latitude longitude; + }); services.hypridle = { enable = true;