diff --git a/flake.nix b/flake.nix index 6048b93..fd37b1e 100644 --- a/flake.nix +++ b/flake.nix @@ -87,7 +87,10 @@ }) # various temporary fixes that automatically revert - (import ./overlays self) + self.overlays.mitigations + + # auto backports from nixpkgs unstable + self.overlays.backports inputs.hyprwm-contrib.overlays.default inputs.rust-overlay.overlays.default @@ -284,6 +287,8 @@ apps = eachSystem (system: import ./pkgs/apps.nix { inherit (self.outputs) packages; inherit system; }); + overlays = import ./overlays self; + nixosConfigurations = { slab = mkSystem { system = "x86_64-linux"; diff --git a/overlays/backports.nix b/overlays/backports.nix new file mode 100644 index 0000000..f49618e --- /dev/null +++ b/overlays/backports.nix @@ -0,0 +1,20 @@ +nixfiles: final: prev: +let + pkgs-unstable = import nixfiles.inputs.nixpkgs-unstable { config.allowUnfree = true; inherit (final) system; }; + inherit (final) callPackage lib electron_28; + + backport = pkg: let + inherit (lib) getAttrFromPath; + inherit (builtins) getAttr isString; + getAttr' = name: attrs: if isString pkg then getAttr name attrs else getAttrFromPath name attrs; + oldPkg = getAttr' pkg prev; + newPkg = getAttr' pkg pkgs-unstable; + in if oldPkg.version == newPkg.version + then oldPkg + else (callPackage newPkg.override); + +in { + + vesktop = backport "vesktop" { }; + obsidian = backport "obsidian" { electron = final.electron_28; }; +} diff --git a/overlays/default.nix b/overlays/default.nix new file mode 100644 index 0000000..41d51df --- /dev/null +++ b/overlays/default.nix @@ -0,0 +1,16 @@ +nixfiles: +let + inherit (nixfiles.inputs.nixpkgs) lib; + # this name is awful. maybe i don't know anything about functional + # programming or something, but the naming isn't very self explanatory + # - why is it "compose" instead of "combine" + # - why is it "extensions" instead of "overlays" + inherit (lib) composeManyExtensions; +in rec { + backports = import ./backports.nix nixfiles; + mitigations = import ./mitigations.nix nixfiles; + default = composeManyExtensions [ + backports + mitigations + ]; +} diff --git a/overlays/mitigations.nix b/overlays/mitigations.nix index f6e8ffa..8d0e9ec 100644 --- a/overlays/mitigations.nix +++ b/overlays/mitigations.nix @@ -16,10 +16,10 @@ let hash="sha256-oat4TwOorFevUMZdBFgaQHx/UKqGW7CGMoOHVgQxVdM="; }; in recurseIntoAttrs (callPackage "${src}/pkgs/applications/graphics/gimp/plugins" {}); -in (optionalAttrs gap-hold { gimpPlugins = gimpPlugins-gap; }) // - # can't optionalAttrs for version checks because it breaks lazy eval and causes infinite recursion - { - obsidian = let - pkg = final.callPackage "${nixfiles.inputs.nixpkgs-unstable}/pkgs/applications/misc/obsidian" { electron = final.electron_28; }; - in if isNewer "1.4.16" prev.obsidian.version then prev.obsidian else pkg; - } +in (optionalAttrs gap-hold { gimpPlugins = gimpPlugins-gap; }) + # # can't optionalAttrs for version checks because it breaks lazy eval and causes infinite recursion + # // { + # obsidian = let + # pkg = final.callPackage "${nixfiles.inputs.nixpkgs-unstable}/pkgs/applications/misc/obsidian" { electron = final.electron_28; }; + # in if isNewer "1.4.16" prev.obsidian.version then prev.obsidian else pkg; + # }