Coder Social home page Coder Social logo

tygo-van-den-hurk / nixos Goto Github PK

View Code? Open in Web Editor NEW
4.0 1.0 0.0 197 KB

This repository contains the the configuration files for my NixOS instance. NixOS is a linux distrobution that allows reproducibility. The point of the repository is such that I can store my configuration safely in the cloud, have version control, and sync any updates to all machines using this configuration as it supports mulitple machines.

Nix 100.00%
nix nix-flake nixos nixos-configuration nixos-config nixos-dotfiles

nixos's Introduction

This repository contains the the configuration files for the NixOS.

NixOS

The NixOS logo

What is NixOS?

NixOS is a Declarative linux distribution that allows reproducibility, and focuses of reliability.

1. Reproducible

Nix builds packages in isolation from each other. This ensures that they are reproducible and don’t have undeclared dependencies, so if a package works on one machine, it will also work on another. Declarative

2. Declarative

Nix makes it trivial to share development and build environments for your projects, regardless of what programming languages and tools you’re using. Reliable

3. Reliable

Nix ensures that installing or upgrading one package cannot break other packages. It allows you to roll back to previous versions, and ensures that no package is in an inconsistent state during an upgrade.

Structure of this Repository

This repository has 3 main directories:

  • Systems: the systems that I've configured. Load modules from modules/ . You can learn more about that module here.
  • Modules: is used to store a set of modules a system can load. You can learn more about that module here.
  • Users: this is were the home-manager data will be stored. You can read more about that module here.

Here is an overview of the structure:

NixOS/
├── systems/
├── modules/
├── user/
├── flake.nix
└── flake.lock

There is also the flake.nix, and flake.lock of course here at the root. The flow is as follows:

  • The flake takes the argument from the CLI and loads the system from ./systems/ somewhere.
  • That system loads the module loader at /modules/default.nix, which you can read more about here.
  • The module loader loads the modules specified in the machines settings.

You can learn more about the structure of the systems directory, modules directory, or user directory by clicking these links.

Todo List

This is a todo-list of things we still need to do to get this system as I'd like. After all these are done, it will become a feature list! Go to To Do list

Learn NixOS

These resources helped me with building my own configuration file:

Name Link
NixOS Setup Guide - Configuration / Home-Manager / Flakes YouTube
How to Start Adding Modularity to Your NixOS Config YouTube

nixos's People

Contributors

tygo-van-den-hurk avatar

Stargazers

Sander Jochems avatar  avatar Koda Katsu avatar Jasper Brandsma avatar

Watchers

 avatar

nixos's Issues

Settings are not merged deeply

Let's say you have:

# /systems/common-settings.nix
arguments @ { config, pkgs, lib, ... } : {
    user = {
        # some settings
    };  

    modules = { 
        kmonad              = true;         
        gaming              = false;
        # more settings below
    };  

    system = {          
        # some settings
    };
}

and

# `/systems/category/common-settings.nix`, or `/systems/category/machine/settings.nix`
arguments @ { config, pkgs, lib, ... } : let

    common-settings ( import ../common-settings.nix arguments );

in ( common-settings // { # add updates below:
    modules = {
        gaming = true;
    };  
})

then instead of:

 {
    user = {
        # some settings
    };  

    modules = { 
        kmonad              = true;         
        gaming              = true;
        # more settings below
    };  

    system = {          
        # some settings
    };
}

You'll get:

 {
    user = {
        # some settings
    };  

    modules = {         
        gaming = false;
    };  

    system = {          
        # some settings
    };
}

Note here that the other module settings are completely gone. Modules is completely overwritten and now, only has one module gaming.

What is happening here is that module gets assigned the new set, but it does not get it's attributes overwritten as it is supposed to.

xremap does not have application specific remaps on i3wm

Issue

xremap does not know what application is in focus. As you can see from the logs:

may 08 11:33:33 tygos-thinkpad xremap[59750]: warning: Failed to connect to X11: X11 setup failed: 'Authorization required, but no authorization protocol specified

Quick fix

run

xhost +SI:localuser:root

as listed here.

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.