Giter VIP home page Giter VIP logo

dev's Introduction

Description

A notice

If you are unsure, please refer to the description on the last commit on the master branch.

What is this?

This is an OCI compliant image containing my personal development environment. The main reason for creation is the desire to stop setting up environments from scratch when transitioning between machines. Designed initially for remote development, but can also be used both locally and in the cloud.

What's inside?

See all details under the spoiler:

Content of the image

How do I get it?

I recommend using Podman for pulling and building the image or running a container, although the same can be done using Docker.

Since v0.4.0, the image can be pulled from GitHub Container Registry:

podman pull ghcr.io/paveloom-d/dev:tag

where the tag is one of the releases (e.g. 0.1.0).

Older versions can be pulled from DockerHub or from GitHub Packages:

podman pull docker.io/paveloom/dev:tag

Since v0.5.0 container archives are provided as part of the releases. These can be used for importing a container using Docker / Podman or for registering as a WSL distribution.

Can I build the image myself?

Yes. To build the image, checkout the repository from a tagged commit on the master branch and execute the following in the repository's root directory:

podman build --squash-all -t dev .

You can then run a container based on this image as follows:

podman run --name container -t -d dev

Since Fish is the default shell, you can enter the container using the following command:

podman exec -it container fish

I don't see any password requests. Is that normal?

Yes. The system will not ask the user to enter a password (this makes it easier to run administrator commands, for instance), but it will be asked if you try to establish an SSH connection with a container from the outside. If no password has been set, the connection cannot be established. If you want to set this password, run passwd $USER as root.

So I can connect to a container over SSH?

Absolutely. Although to establish an SSH connection to the container, you need to map the container's 22 port to any other port available and not occupied on the host machine (for example, 5001).

This can be accomplished by running a container using the -p flag:

podman run -p 5001:22 --name container -t -d dev

Remember, you can't publish new ports when the container is already running.

If the SSH service is running inside the container (it starts automatically when you open a new shell instance, although you can check this by running service ssh status), you can SSH into the container as follows:

ssh -p 5001 username@remote

This will prompt for the username's password. If you haven't done this yet, set it up.

What is this Keychain thing?

Instead of calling ssh-add every time you log-in, you can add your SSH key(s) using keychain. The corresponding lines are present in the ~/.config/fish/config.fish, just uncomment them and specify your keys.

Auxiliary user scripts, huh? What's that?

The image provides auxiliary scripts that can help the user create SSH and GPG keys and connect them to an account on GitHub. These scripts adjust Git config and add several Git aliases.

Also, scripts to install the latest stable versions of Julia and Rust are included.

They are located in ~/Scripts.

Color scheme?

Different terminals (like Xterm), programs (like Visual Studio Code) and utilities (like PuTTY) have their own color pallettes. So the current theme can look ugly depending on what you use to enter the container. Since this is my image, I made it look more or less attractive when using Windows Terminal with the following scheme:

{
  "name": "paveloom-theme",
  "black": "#fefefe",
  "red": "#f97e72",
  "green": "#72f1b8",
  "yellow": "#fede5d",
  "blue": "#f772e0",
  "purple": "#c792ea",
  "cyan": "#f772e0",
  "white": "#f92aad",
  "brightBlack": "#f772e0",
  "brightRed": "#f88414",
  "brightGreen": "#72f1b8",
  "brightYellow": "#fff951",
  "brightBlue": "#36f9f6",
  "brightPurple": "#c792ea",
  "brightCyan": "#f92aad",
  "brightWhite": "#fefefe",
  "background": "#2a2139",
  "foreground": "#f0eff1"
}

It's based on synthwave-everything. With everything else set correctly, the terminal window should look like this:

dev's People

Watchers

James Cloos avatar

dev's Issues

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.