Code Monkey home page Code Monkey logo

nixos's Introduction

Expectations

Have a fast setup that any organization collaborator can install in their computer

Even if they come from other operating systems they can have a very stable workstation with all the tools installed to start developing.

Solve the pain of versioned software development tools

In software development we use tools that might not always work in all projects, in this case we would solve this by using dev shell + direnv in each local project. This is completely agnostic for developers who don't share the same thoughts or operating system.

An excellent example of this is nvm, which is a tool that works well, but the idea here is to forget the specific version that each project we are working on uses. This would be delegated to a single maintenance operation instead of a pain that is present n times in every developer's day.

Cheatsheet

Where to search more packages and options

Build a new generation

For both of the sections below you'll need to execute the showcased commands in the same directory where the dotfiles were cloned.

If you recently modified something from the ./system AKA NixOS configuration files you'll need to use this command.

# Update system configuration without the need to reboot
$ sudo nixos-rebuild switch --upgrade --flake .

# The updated system configuration should be available on reboot
# You normally want this when you modify something at very low
# level on the computer
$ sudo nixos-rebuild boot --upgrade --flake .

Use this command if you modified something from the ./home AKA home manager configuration files.

# Update the configuration files, services and assets of the user home
# directory.
#
# As long that there's only a single user you'll be able to use this way.
$ home-manager switch --flake .

However, these settings are heavily embodied to Nix flakes, so the idea is that when you update something in the flake.nix or flake.lock files, you update the environments that you think will be affected by those changes.

How to update a flake input

Each flake entry has a fixed (time-lined) version of itself declared in flake.lock, this ensures reproducibility on the used flakes, but you will need to periodically update the entries for each third-party flake. To achieve this you just have to run this:

# You can press <tab> to autocomplete the input names.
$ nix flake lock --update-input <input-name>

This will update the specified input in the flake.lock file but now is in you to update your NixOS and Home manager setup and check that everything's working as expected.

macOS VM guide

This virtual machine is running as a systemd service and by default it's not started so to use it you'll need to execute the following command on every new computer boot:

# Initializes VM process.
 $ sudo systemctl start macos-ventura.service

Important

The VNC connection values used below depends on your macOS Ventura VM definitions and the default VNC configurations of this module.

After that command the qemu VM will be running in background and you will need a VNC client to connect to it. By default TigerVNC Viewer is installed, in this case the URL to perform a connection with the server might be localhost:5900.

Throubleshooting

License

MIT

nixos's People

Contributors

luisnquin avatar luisnquin-invio avatar invio-bot avatar

Forkers

ventrax-01

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.