Code Monkey home page Code Monkey 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

Contributors

marcuswhybrow avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar

nixos's Issues

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.

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.

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.

Add network printing

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

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.

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.