Giter Club home page Giter Club logo

nixos's Introduction

NixOS is the declaritive linux distribution composed of immutable packages defined in a functional syntax called Nix.

New System Procedure

# Clone this repository 
nix profile install nixpkgs#gh --extra-experimental-features "nix-command flakes"
nix profile install github:marcuswhybrow/git --extra-experimental-features "nix-command flakes"
mkdir ~/Repos
cd ~/Repos
gh auth login
git clone [email protected]:marcuswhybrow/nixos.git

# Replace default configuration with symlink to this repo
sudo mv /etc/nixos/configuration.nix /etc/nixos/configuration.nix.old
sudo ln -s ~/Repos/nixos/flake.nix /etc/nixos/flake.nix

# For a first time install specify the exact flake and system name.
sudo nixos-rebuild switch --flake ~/Repos/nixos#SYSTEM_NAME

nixos's People

Stargazers

 avatar

Watchers

 avatar  avatar  avatar

nixos's Issues

Neovim should complete first entry on tab complete

Currently Neovim automatically brings up the completion window selecting the first option. If I hit enter that entry is written to the buffer. If I hit tab, the next entry is written to the buffer.

Instead I want tab to write the current entry to the buffer if it hasn't been already. Currently I have to press enter. But this also executes commands in the context of the neovim command line. And it closes the completion window.

Add network printing

When I try to print a web page, my network printer (AirPrint) is not in the list.

Fish has wrong config files inside of Neovim

:!mkdir templates
error: can not save universal variables or functions
warning-path: Unable to locate config directory derived from $XDG_CONFIG_HOME: '/nix/store/xabd1qazk33n780qanahmxyqmgb1n83r-neovim-config/fish'.
warning-path: The error was 'Read-only file system'.
warning-path: Please set $XDG_CONFIG_HOME to a directory where you have write access.

When I ask Neovim to run a command in the shell with the :! Neovim command, fish complains it has no write access to it's XDG_CONFIG_HOME. That's correct, because I'm hoisting it to a nix store derivation when Neovim starts up:

https://github.com/marcuswhybrow/.nixos/blob/4d44fa8001dc2dbcfd86a7dc8a70e12f89be1fa1/pkgs/neovim/default.nix#L104-L105

Proposed solution: Add to XDG_CONFIG_DIRS, instead of overriding XDG_CONFIG_HOME.

Add nixos updates to starship prompt

  • Starship creates my prompt

  • It's creates a dynamic representation of the terminal's state

  • This currently includes ssh tunneling, git repo status, project languages, shells.

  • It can be extended.

  • I want to build an extension that tells me that NixOS has updates available.

  • I've already build flake-updates which I use in my desktop environment.

  • Given a flake.nix it reads the "github:" inputs and uses the GitHub API to see how many updates are outstanding.

  • It can render the result to any string you choose.

  • I want to output something like that to the terminal too as a Starship plugin.

Make custom packaging a breeze

My heart sinks at the thought of creating a custom self-contained package. Creating a custom package isolates the result with it's configuration. But that demands knowing the package dependencies well enough.

  • nix profile install is appropriate for trivial cases.
  • Modifying ./users/marcus.nix disintegrates logical dependencies that should be packaged together.

Solutions?

  • Adjust perceptions of custom packages to start in non-isolation (i.e. using XDG_CONFIG_HOME) and move over time into complete isolation.
    • Indicate isolation by naming convention?
  • Support multiple modules in ./users/marcus.nix. Modules prevent disintegration of dependencies. Without modules nix options cannot be repeated, meaning the API becomes the ordering principle.

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.