libswaykbswitch 0.2.0

A library for controlling sway through its IPC interface
Documentation
{
  inputs = {
    nixpkgs.url = "github:NixOS/nixpkgs/nixos-23.11";
    flake-utils.url = "github:numtide/flake-utils";
    khaser.url = "git+ssh://git@109.124.253.149/~git/nixos-config?ref=master";
  };

  outputs = { self, nixpkgs, flake-utils, khaser }:
  flake-utils.lib.eachDefaultSystem ( system:
  let
    pkgs = import nixpkgs { inherit system; };
  in {

    devShell = pkgs.mkShell {
      name = "rust-vim";

      inputsFrom = [ self.outputs.defaultPackage ];

      buildInputs = with pkgs; [
        rustc
        cargo
        rustfmt
        clippy
        rust-analyzer
        (callPackage khaser.lib.vim {
          extraPlugins = with vimPlugins; [
            rust-vim
            tagbar
            syntastic
            LanguageClient-neovim
          ];
          extraRC = ''
            let g:rustfmt_autosave = 1

            let g:LanguageClient_serverCommands = {
             \ 'rust': ['rust-analyzer']
             \ }
            nnoremap <F5> :call LanguageClient_contextMenu()<CR>
            nnoremap <silent> gh :call LanguageClient_textDocument_hover()<CR>
            nnoremap <silent> gd :call LanguageClient_textDocument_definition()<CR>
            nnoremap <silent> gr :call LanguageClient_textDocument_references()<CR>
            nnoremap <silent> gs :call LanguageClient_textDocument_documentSymbol()<CR>
            nnoremap <silent> <F2> :call LanguageClient_textDocument_rename()<CR>
            nnoremap <silent> gf :call LanguageClient_textDocument_formatting()<CR>
          '';
        })
      ];

      RUST_SRC_PATH = "${pkgs.rustPlatform.rustLibSrc}";
    };

    defaultPackage = let
      manifest = (pkgs.lib.importTOML ./Cargo.toml).package;
    in
      pkgs.rustPlatform.buildRustPackage (with manifest; {
        inherit name version;
        src = ./.;
        cargoLock.lockFile = ./Cargo.lock;
        meta = {
          inherit description license;
          homepage = repository;
        };
      });
  });

}