/vide

A proof of concept for a nix-powered IDE assembled from individual components

Primary LanguageNixDo What The F*ck You Want To Public LicenseWTFPL

vide

A nix-powered IDE assembled from individual components, namely:

selecting a file by content search using broot

Motivation

Thanks to Nix flakes, one can directly invoke nix run github:felko/vide from any computer with Nix installed with flake and nix-command experimental features. The IDE will run and leave no trace after garbage collection. The configuration is completely standalone which means you will get the exact same interface regardless of any potential XDG configurations.

Make your own

The choice of tools and config is very opinionated and is not written in a modular way. Feel free to fork the repo if you want to use different tools or anything that makes it more to your liking. That being said, I won't accept PRs that add support for alternative tools (e.g. other editors, file explorers, etc) since this repo is intended for my personal use.

Installation

While the primary purpose is to be able to run the IDE by URL as shown above, it's also possible to install it on your system, either declaratively or imperatively.

NixOS/nix-darwin

{
  inputs = {
    ...

    vide.url = "github:felko/vide";
  };

  outputs = inputs @ { self, ... }: {
    # darwinConfigurations.myconfig = nix-darwin.lib.darwinSystem rec {
    #   system = "aarch64-darwin";
    # or
    nixosConfigurations.myconfig = nixos.lib.nixosSystem rec {
      system = "x86_64-linux";
      modules = [ ./configuration.nix ];
      specialArgs = {
        inherit inputs;
      };
    };
  };
}
{ pkgs, inputs, system, ... }:

{
  environment.systemPackages = [
    inputs.vide.packages.${system}.vide
  ];
}

Home-manager

{
  inputs = {
    ...

    vide.url = "github:felko/vide";
  };

  outputs = { nixpkgs, ... } @ inputs:
    let
      system = "aarch64-darwin";
      pkgs = nixpkgs.legacyPackages.${system};
    in {
      homeConfigurations.<user> = home-manager.lib.homeManagerConfiguration {
        ...
        extraSpecialArgs = {
          inherit inputs system;
        };
      };
    };
}
{ pkgs, inputs, system, ... }:

{
  home.packages = [
    inputs.vide.packages.${system}.vide
  ];
}

Profile installation

nix profile install github:felko/vide