Giter Site home page Giter Site logo

vide's Introduction

Vide

asciicast

Nix-powered modal IDE composed of individual tools, namely :

Motivation

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

This is particularly advantageous if you often have to switch computers, as it eliminates the need to reinstall and reconfigure your entire IDE setup. Since it is modal, the only additional requirement besides Nix is a terminal application, which is available on virtually all operating systems.

The motivation behind designing this IDE was my frequent need to use preconfigured tools due to the time-consuming process of setting up a new IDE (even creating symlinks from existing dotfiles). This project addresses that challenge, offering a quick and consistent development environment across different machines.

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:lokasku/vide";
  };

  outputs = inputs @ { self, ... }: {
    nixosConfigurations.myconfig = nixos.lib.nixosSystem rec {
      ...
      system = "x86_64-linux";
      specialArgs = {
        inherit inputs;
      };
    };
  };
}
{ pkgs
, inputs
, system
, ...
}:
  {
    environment.systemPackages = [
      inputs.vide.packages.${system}.vide
    ];
  }

Home Manager

{
  inputs = {
    ...

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

  outputs = { nixpkgs, ... } @ inputs:
    let
      system = "x86_64-linux";
      pkgs = nixpkgs.legacyPackages.${system};
    in {
      homeConfigurations.lokasku = home-manager.lib.homeManagerConfiguration {
        ...
        extraSpecialArgs = {
          inherit inputs system;
        };
      };
    };
}
{ pkgs
, inputs
, system
, ...
}:
  {
    home.packages = [
      inputs.vide.packages.${system}.vide
    ];
  }

Credits

This project was inspired by Felko's Vide project. The original idea of using Nix to combine various tools belongs to him. Thank you Felko for sharing this concept.

vide's People

Contributors

lokasku avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.