{ inputs }: final: prev: let mkDate = longDate: (prev.lib.concatStringsSep "-" [ (builtins.substring 0 4 longDate) (builtins.substring 4 2 longDate) (builtins.substring 6 2 longDate) ]); mkVersionInput = input: "unstable" + mkDate (input.lastModifiedDate or "19700101") + "_" + (input.shortRev or "dirty"); in { agenix = inputs.agenix.packages.${prev.system}.default; attic = inputs.attic.packages.${prev.system}.default; hyprpaper = inputs.hyprpaper.packages.${prev.system}.default; neovim-nightly = inputs.neovim.packages.${prev.system}.default; nil = inputs.nil.packages.${prev.system}.default; logseq-wayland = prev.symlinkJoin { name = "logseq-wayland"; paths = [ prev.logseq ]; nativeBuildInputs = [ prev.makeWrapper ]; postBuild = '' wrapProgram $out/bin/logseq \ --add-flags "--socket=wayland --enable-features=UseOzonePlatform --ozone-platform=wayland" ''; }; waybar-hyprland = prev.waybar.overrideAttrs (old: { pname = "${old.pname}-hyprland"; postPatch = old.postPatch or "" + '' sed -i 's,zext_workspace_handle_v1_activate(workspace_handle_);,const std::string command = "${final.hyprland}/bin/hyprctl dispatch workspace " + name_;\n\tsystem(command.c_str());,g' src/modules/wlr/workspace_manager.cpp ''; mesonFlags = old.mesonFlags or [ ] ++ [ "-Dexperimental=true" ]; }); vimPlugins = prev.vimPlugins // { nvim-treesitter-textsubjects = prev.vimUtils.buildVimPluginFrom2Nix { pname = "nvim-treesitter-textsubjects"; version = mkVersionInput inputs.nvim-treesitter-textsubjects; src = inputs.nvim-treesitter-textsubjects; }; smartcolumn-nvim = prev.vimUtils.buildVimPluginFrom2Nix { pname = "smartcolumn-nvim"; version = mkVersionInput inputs.smartcolumn-nvim; src = inputs.smartcolumn-nvim; }; copilot-lua = prev.vimPlugins.copilot-lua.overrideAttrs (old: { version = mkVersionInput inputs.copilot-lua; src = inputs.copilot-lua; }); lspsaga-nvim-original = prev.vimPlugins.lspsaga-nvim-original.overrideAttrs (old: { version = mkVersionInput inputs.lspsaga-nvim; src = inputs.lspsaga-nvim; }); }; master = import inputs.master { inherit (prev) system; config.allowUnfree = true; }; stable = import inputs.stable { inherit (prev) system; config.allowUnfree = true; }; }