diff --git a/docs/src/README.md b/docs/src/README.md index cae9646..6ac856e 100644 --- a/docs/src/README.md +++ b/docs/src/README.md @@ -165,6 +165,37 @@ nixosConfigurations = inputs.dashNix.dashNixLib.buildSystems { root = ./.; inherit additionalInputs; }; ``` +## Configuring pkgs + +While DashNix offers a default pkgs config, you may want to permit an unsecure packages or add an overlay to them. +You can configure both stable and unstable pkgs the following way: + +```nix +currentSystem = "x86_64-linux"; +permittedPackages = [ + "some package" +]; +config = { + system = currentSystem; + config = { + allowUnfree = true; + permittedInsecurePackages = permittedPackages; + }; +}; +unstableBundle = { + pkgs = inputs.unstable; + inherit config; +}; +inputs.dashNix.dashNixLib.buildSystems { + root = ./.; + inherit unstableBundle; +} +``` + +With this you could also change your input to something different should you wish to do so. +Note that overriding inputs via the flake still works, +this way however ensures you can also configure the inputs. + ## Stable/Unstable Sometimes you want to differentiate between systems that are stable and unstable, e.g. for servers and desktops/laptops. diff --git a/flake.nix b/flake.nix index 665829b..8033b24 100644 --- a/flake.nix +++ b/flake.nix @@ -59,47 +59,27 @@ currentSystem = "x86_64-linux"; permittedPackages = [ "olm-3.2.16" - # well done dotnet... - # this is just for omnisharp - "dotnet-core-combined" - "dotnet-wrapped-combined" - "dotnet-combined" - "dotnet-sdk-6.0.428" - "dotnet-sdk-wrapped-6.0.428" - "dotnet-sdk-6.0.136" - "dotnet-sdk-wrapped-6.0.136" - "dotnet-sdk-7.0.120" - "dotnet-sdk-wrapped-7.0.120" - "dotnet-sdk-7.0.410" - "dotnet-sdk-wrapped-7.0.410" - "jitsi-meet-1.0.8043" - "nextcloud-27.1.11" ]; - stable = import ./lib/importPkgs.nix { - inherit inputs permittedPackages currentSystem; - pkgs = inputs.stable; - }; - unstable = import ./lib/importPkgs.nix { - inherit inputs permittedPackages currentSystem; - pkgs = inputs.unstable; - }; - pkgsDarkreader = import ./lib/importPkgs.nix { - inherit inputs permittedPackages currentSystem; - pkgs = inputs.pkgsDarkreader; - }; + importPkgsFn = import ./lib/importPkgs.nix; + defaultConfigureFn = pkgs: + importPkgsFn { + inherit inputs currentSystem permittedPackages pkgs; + }; + stable = defaultConfigureFn inputs.stable; + unstable = defaultConfigureFn inputs.unstable; + pkgsDarkreader = defaultConfigureFn inputs.pkgsDarkreader; in rec { dashNixLib = import ./lib { inherit self inputs unstable - stable + permittedPackages ; dashNixAdditionalProps = { inherit pkgsDarkreader; }; system = currentSystem; - inherit (inputs.unstable) lib; }; docs = import ./docs { inherit inputs; diff --git a/lib/default.nix b/lib/default.nix index 30d34ec..0254ba2 100644 --- a/lib/default.nix +++ b/lib/default.nix @@ -1,13 +1,35 @@ { inputs, - lib, unstable, self, - stable, system, + permittedPackages, dashNixAdditionalProps ? {}, ... -}: { +}: let + defaultConfig = { + config = { + allowUnfree = true; + permittedInsecurePackages = permittedPackages; + }; + overlays = [ + inputs.nur.overlays.default + inputs.chaoticNyx.overlays.cache-friendly + ]; + inherit system; + }; + mkPkgs = { + pkgs, + config, + }: let + overlays = + if (config ? overlays) + then config.overlays + else []; + comnbinedConfig = config // {overlays = overlays ++ defaultConfig.overlays;}; + in + import pkgs comnbinedConfig; +in { /* * # buildSystems @@ -75,9 +97,27 @@ ]; }, additionalInputs ? {}, + unstableBundle ? {}, + stableBundle ? {}, overridePkgs ? false, ... - }: + }: let + unstableInput = unstableBundle.pkgs or inputs.unstable; + stableInput = stableBundle.pkgs or inputs.stable; + unstableConfig = unstableBundle.config or defaultConfig; + stableConfig = stableBundle.config or defaultConfig; + + unstablePkgs = mkPkgs { + pkgs = unstableInput; + config = unstableConfig; + }; + stablePkgs = mkPkgs { + pkgs = stableInput; + config = stableConfig; + }; + inputlib = unstableInput.lib; + inherit (unstablePkgs) lib; + in builtins.listToAttrs ( map (name: { @@ -94,27 +134,28 @@ additionalHomeConfig system root - stable - unstable additionalInputs dashNixAdditionalProps + lib ; + stable = stablePkgs; + unstable = unstablePkgs; pkgs = lib.mkForce ( if overridePkgs - then stable - else unstable + then stablePkgs + else unstablePkgs ); alternativePkgs = if overridePkgs - then unstable - else stable; + then unstablePkgs + else stablePkgs; hostName = name; homeMods = mods.home; additionalHomeMods = additionalMods.home; mkDashDefault = import ./override.nix {inherit lib;}; }; in - inputs.unstable.lib.nixosSystem { + inputlib.nixosSystem { modules = [ {_module.args = args;} @@ -122,8 +163,8 @@ ] ++ mods.nixos ++ additionalMods.nixos - ++ inputs.unstable.lib.optional (builtins.pathExists additionalNixosConfig) additionalNixosConfig - ++ inputs.unstable.lib.optional (builtins.pathExists mod) mod; + ++ lib.optional (builtins.pathExists additionalNixosConfig) additionalNixosConfig + ++ lib.optional (builtins.pathExists mod) mod; }; }) ( diff --git a/modules/programs/gpu.nix b/modules/programs/gpu.nix index 8fd8959..87305f0 100644 --- a/modules/programs/gpu.nix +++ b/modules/programs/gpu.nix @@ -87,7 +87,7 @@ pkgs.intel-media-driver) (lib.mkIf config.mods.gpu.vapi.enable pkgs.libvdpau-va-gl) (lib.mkIf config.mods.gpu.vapi.enable pkgs.libva) - (lib.mkIf config.mods.gpu.vapi.enable pkgs.vaapiVdpau) + (lib.mkIf config.mods.gpu.vapi.enable pkgs.libva-vdpau-driver) (lib.mkIf (config.mods.gpu.intelgpu.enable || config.mods.gpu.amdgpu.enable) pkgs.mesa) ]; rocmPackages = [ diff --git a/modules/programs/homePackages.nix b/modules/programs/homePackages.nix index eabd176..c987c94 100644 --- a/modules/programs/homePackages.nix +++ b/modules/programs/homePackages.nix @@ -102,11 +102,11 @@ (lib.mkIf config.mods.homePackages.orcaSlicer orca-slicer) (lib.mkIf config.mods.homePackages.vesktop vesktop) (lib.mkIf config.mods.homePackages.nextcloudClient nextcloud-client) - (lib.mkIf (!isNull config.mods.homePackages.matrixClient) config.mods.homePackages.matrixClient) - (lib.mkIf (!isNull config.mods.homePackages.mailClient) config.mods.homePackages.mailClient) + (lib.mkIf (config.mods.homePackages.matrixClient != null) config.mods.homePackages.matrixClient) + (lib.mkIf (config.mods.homePackages.mailClient != null) config.mods.homePackages.mailClient) (lib.mkIf ( # NOTE: This should be package, but nix doesn't have that.... - builtins.isAttrs config.mods.homePackages.browser && !isNull config.mods.homePackages.browser + builtins.isAttrs config.mods.homePackages.browser && config.mods.homePackages.browser != null ) config.mods.homePackages.browser) adw-gtk3 @@ -128,10 +128,10 @@ nh nix-index playerctl - poppler_utils + poppler-utils pulseaudio libsForQt5.qt5ct - qt6ct + qt6Packages.qt6ct fcp ripgrep rm-improved diff --git a/modules/programs/ironbar.nix b/modules/programs/ironbar.nix index b34b32a..b955d51 100644 --- a/modules/programs/ironbar.nix +++ b/modules/programs/ironbar.nix @@ -4,6 +4,7 @@ pkgs, inputs, options, + mkDashDefault, ... }: let inherit (config.conf) username; @@ -263,8 +264,7 @@ in { config = lib.mkIf (config.mods.ironbar.enable || config.mods.hypr.hyprland.useIronbar) ( lib.optionalAttrs (options ? programs.ironbar) { programs.ironbar = { - # TODO broken - # package = mkDashDefault pkgs.ironbar; + package = mkDashDefault pkgs.ironbar; enable = true; style = if config.mods.ironbar.useDefaultCss diff --git a/modules/programs/media.nix b/modules/programs/media.nix index f05500d..6afa15e 100644 --- a/modules/programs/media.nix +++ b/modules/programs/media.nix @@ -94,7 +94,7 @@ zathura evince libreoffice-fresh - onlyoffice-bin + onlyoffice-desktopeditors pdftk pdfpc polylux2pdfpc diff --git a/modules/programs/stylix.nix b/modules/programs/stylix.nix index 124cc64..dd11e8c 100644 --- a/modules/programs/stylix.nix +++ b/modules/programs/stylix.nix @@ -91,7 +91,7 @@ in { }; emoji = { - package = pkgs.noto-fonts-emoji; + package = pkgs.noto-fonts-color-emoji; name = "Noto Color Emoji"; }; };