feat(nu): add clipboard plugin

This commit is contained in:
winston 2024-08-02 17:54:48 +02:00
parent aa827b2bd1
commit 4f13391717
Signed by: winston
GPG key ID: 3786770EDBC2B481
4 changed files with 88 additions and 41 deletions

View file

@ -17,11 +17,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1720546205, "lastModified": 1722339003,
"narHash": "sha256-boCXsjYVxDviyzoEyAk624600f3ZBo/DKtUdvMTpbGY=", "narHash": "sha256-ZeS51uJI30ehNkcZ4uKqT4ZDARPyqrHADSKAwv5vVCU=",
"owner": "ryantm", "owner": "ryantm",
"repo": "agenix", "repo": "agenix",
"rev": "de96bd907d5fbc3b14fc33ad37d1b9a3cb15edc6", "rev": "3f1dae074a12feb7327b4bf43cbac0d124488bb7",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -37,11 +37,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1722082646, "lastModified": 1722609272,
"narHash": "sha256-od8dBWVP/ngg0cuoyEl/w9D+TCNDj6Kh4tr151Aax7w=", "narHash": "sha256-Kkb+ULEHVmk07AX+OhwyofFxBDpw+2WvsXguUS2m6e4=",
"owner": "lnl7", "owner": "lnl7",
"repo": "nix-darwin", "repo": "nix-darwin",
"rev": "0413754b3cdb879ba14f6e96915e5fdf06c6aab6", "rev": "f7142b8024d6b70c66fd646e1d099d3aa5bfec49",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -81,11 +81,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1719994518, "lastModified": 1722555600,
"narHash": "sha256-pQMhCCHyQGRzdfAkdJ4cIWiw+JNuWsTX7f0ZYSyz0VY=", "narHash": "sha256-XOQkdLafnb/p9ij77byFQjDf5m5QYl9b2REiVClC+x4=",
"owner": "hercules-ci", "owner": "hercules-ci",
"repo": "flake-parts", "repo": "flake-parts",
"rev": "9227223f6d922fee3c7b190b2cc238a99527bbb7", "rev": "8471fe90ad337a8074e957b69ca4d0089218391d",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -140,11 +140,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1722119539, "lastModified": 1722462338,
"narHash": "sha256-2kU90liMle0vKR8exJx1XM4hZh9CdNgZGHCTbeA9yzY=", "narHash": "sha256-ss0G8t8RJVDewA3MyqgAlV951cWRK6EtVhVKEZ7J5LU=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "d0240a064db3987eb4d5204cf2400bc4452d9922", "rev": "6e090576c4824b16e8759ebca3958c5b09659ee8",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -159,11 +159,11 @@
"nixpkgs": "nixpkgs" "nixpkgs": "nixpkgs"
}, },
"locked": { "locked": {
"lastModified": 1722150512, "lastModified": 1722582224,
"narHash": "sha256-3b7XG9bw4LASaxy0UlvzmyWbSfvNbGJw0F70fPZaAVU=", "narHash": "sha256-bQojWHhO0+yNqtIH+00oc5K2id+pN9IIuRtDNfemq9o=",
"owner": "nekowinston", "owner": "nekowinston",
"repo": "nur", "repo": "nur",
"rev": "04f53d543a87b79b3fb174ee357572e59f78c04d", "rev": "155e575d91c38cf3c9a692bfb3ef37d459df57d1",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -203,11 +203,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1722130475, "lastModified": 1722562293,
"narHash": "sha256-VT2GvIRL8+nNSQ/XS9N6m42VDBiNDy7Luz3wMHoPLBk=", "narHash": "sha256-JLhM5xSbx5Isjyfz8+WhCfJ9hgEJ4VYRivTOANYZVWM=",
"owner": "nix-community", "owner": "nix-community",
"repo": "nix-vscode-extensions", "repo": "nix-vscode-extensions",
"rev": "25a36236f5051034e2085fb3414493c921bb1994", "rev": "2056dac5adce82433b1dae711868b1c22e5ed07e",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -234,11 +234,11 @@
}, },
"nixpkgs_2": { "nixpkgs_2": {
"locked": { "locked": {
"lastModified": 1722062969, "lastModified": 1722421184,
"narHash": "sha256-QOS0ykELUmPbrrUGmegAUlpmUFznDQeR4q7rFhl8eQg=", "narHash": "sha256-/DJBI6trCeVnasdjUo9pbnodCLZcFqnVZiLUfqLH4jA=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "b73c2221a46c13557b1b3be9c2070cc42cf01eb3", "rev": "9f918d616c5321ad374ae6cb5ea89c9e04bf3e58",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -266,11 +266,11 @@
}, },
"nur": { "nur": {
"locked": { "locked": {
"lastModified": 1722153156, "lastModified": 1722610226,
"narHash": "sha256-edzknwFxbIpX5zdq6rspYQpYFz3uhXXH00IJzdjMCxY=", "narHash": "sha256-e9sPV2i4N1J0zAxcsZNpdoTRgpHfYva4azi7ZA6jMcc=",
"owner": "nix-community", "owner": "nix-community",
"repo": "nur", "repo": "nur",
"rev": "c20d05903e7cad473b58f6809851c110cc88c350", "rev": "0e1e13187bbb07c80b61f057843602af1f1ffd99",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -348,11 +348,11 @@
"scenefx": "scenefx" "scenefx": "scenefx"
}, },
"locked": { "locked": {
"lastModified": 1717215848, "lastModified": 1722269591,
"narHash": "sha256-jG/FJjjIGgAqgA6WRzDHZug+X0CXk1ABdp48o36vzXY=", "narHash": "sha256-uqRVQmhtswgbM9bp4bIkQhS1J2fYqOuLo/Rt9ZpLT7I=",
"owner": "willpower3309", "owner": "willpower3309",
"repo": "swayfx", "repo": "swayfx",
"rev": "da559b3ea13addecdd7747b99f3ed498f991d031", "rev": "4d7ca7d975fb6d8ccae9830765986d5812fd011d",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -410,11 +410,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1722012218, "lastModified": 1722253092,
"narHash": "sha256-Rnjo49C5/slnmcQW9c57IdiHJZ3YEFmUn3as/NIPD4E=", "narHash": "sha256-37vyqHPx57deHhwvi4jwyNQLYkhm/rlVTYKOG1iahsc=",
"owner": "nix-community", "owner": "nix-community",
"repo": "nixos-wsl", "repo": "nixos-wsl",
"rev": "ac026940beb42f74c5666f6ed3989aca41eddeea", "rev": "f373ad59ae5866f0f98216bd5c71526b373450d2",
"type": "github" "type": "github"
}, },
"original": { "original": {

View file

@ -7,24 +7,26 @@
let let
nu_scripts = "${pkgs.nu_scripts}/share/nu_scripts"; nu_scripts = "${pkgs.nu_scripts}/share/nu_scripts";
shellAliases = lib.concatStringsSep "\n" ( aliases = mkAliases (
lib.mapAttrsToList (k: v: "alias ${k} = ${v}") config.home.shellAliases (config.home.shellAliases or { })
// {
clipcopy = "clipboard copy";
clippaste = "clipboard paste";
}
); );
mkAliases =
aliases: lib.concatStringsSep "\n" (lib.mapAttrsToList (k: v: "alias ${k} = ${v}") aliases);
mkCompletions = mkCompletions =
completions: completions:
lib.concatStringsSep "\n" ( lib.concatStringsSep "\n" (
builtins.map ( builtins.map (
el: el: "source ${nu_scripts}/custom-completions/${el.name or el}/${el.filename or el}-completions.nu"
let
name = el.name or el;
filename = el.filename or el;
in
"source ${nu_scripts}/custom-completions/${name}/${filename}-completions.nu"
) completions ) completions
); );
completions = [ completions = mkCompletions [
"cargo" "cargo"
"composer" "composer"
"gh" "gh"
@ -46,6 +48,12 @@ let
} }
]; ];
mkPlugins =
plugins:
lib.concatStringsSep "\n" (builtins.map (plugin: "plugin add ${lib.getExe plugin}") plugins);
plugins = mkPlugins (with pkgs.nushellPlugins; [ clipboard ]);
command-not-found = pkgs.writeShellScript "command-not-found" '' command-not-found = pkgs.writeShellScript "command-not-found" ''
source ${config.programs.nix-index.package}/etc/profile.d/command-not-found.sh source ${config.programs.nix-index.package}/etc/profile.d/command-not-found.sh
command_not_found_handle "$@" command_not_found_handle "$@"
@ -54,6 +62,7 @@ in
{ {
programs.carapace = { programs.carapace = {
enable = true; enable = true;
# prefer my own completer
enableNushellIntegration = false; enableNushellIntegration = false;
}; };
@ -74,8 +83,9 @@ in
source ${./nu/keybindings.nu} source ${./nu/keybindings.nu}
'' ''
+ lib.concatStringsSep "\n" [ + lib.concatStringsSep "\n" [
shellAliases completions
(mkCompletions completions) plugins
aliases
]; ];
}; };
} }

View file

@ -0,0 +1,34 @@
{
darwin,
fetchFromGitHub,
rustPlatform,
lib,
stdenv,
}:
let
inherit (darwin.apple_sdk.frameworks) AppKit IOKit;
in
rustPlatform.buildRustPackage {
name = "nu_plugin_clipboard";
version = "0.96.0";
src = fetchFromGitHub {
owner = "FMotalleb";
repo = "nu_plugin_clipboard";
sha256 = "sha256-Uo9dd9D32Q1eBVPFG9dYBvsWvBcpuu6QuaVqs7bdZfM=";
rev = "494018928fb72e5b19c4eb83f0390645fc839651";
};
buildInputs = lib.optionals stdenv.isDarwin [
AppKit
IOKit
];
cargoHash = "sha256-wGKqQwPjBjrqJEmfe8L6Wz2tRYJsZ4PiY7AmRvxxABQ=";
meta = with lib; {
description = "A nushell plugin to copy text into clipboard or get text from it.";
license = licenses.mit;
mainProgram = "nu_plugin_clipboard";
};
}

View file

@ -8,6 +8,9 @@
in in
{ {
inherit (inputs.swayfx.packages.${prev.system}) swayfx-unwrapped; inherit (inputs.swayfx.packages.${prev.system}) swayfx-unwrapped;
nushellPlugins = (prev.nushellPlugins or { }) // {
clipboard = prev.callPackage ./nu_plugin_clipboard.nix { };
};
starship = prev.starship.overrideAttrs (old: { starship = prev.starship.overrideAttrs (old: {
patches = [ patches = [
(prev.fetchpatch { (prev.fetchpatch {