All Projects → cole-mickens → nixcfg

cole-mickens / nixcfg

Licence: other
NixOS and Home-Manager configurations for all of my devices (desktop, Pinebook Pro, RPi4, cloud servers, etc). Like dotfiles, but way better. (née 'nixos-config')

Programming Languages

Nix
1067 projects
shell
77523 projects
Dhall
116 projects
javascript
184084 projects - #8 most used programming language
CSS
56736 projects
Nu
17 projects
python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to nixcfg

nixdots
I have no idea what the hell I'm doing
Stars: ✭ 46 (-61.34%)
Mutual labels:  nix, nix-flake, nix-config
nixpkgs
My Nix system configs!
Stars: ✭ 143 (+20.17%)
Mutual labels:  dotfiles, nix, nix-flake
dotfiles
🏠
Stars: ✭ 53 (-55.46%)
Mutual labels:  nix, nix-flake
deadnix
Scan Nix files for dead code
Stars: ✭ 121 (+1.68%)
Mutual labels:  nix, nix-flake
nyx
⚙️Nix[OS] Configuration
Stars: ✭ 50 (-57.98%)
Mutual labels:  nix, nix-flake
digga
A flake utility library to craft shell-, home-, and hosts- environments.
Stars: ✭ 818 (+587.39%)
Mutual labels:  nix, nix-flake
dotnix
nix stuff
Stars: ✭ 27 (-77.31%)
Mutual labels:  nix, nix-flake
base16.nix
Quickly theme programs in your favourite base16 colorscheme
Stars: ✭ 61 (-48.74%)
Mutual labels:  nix, nix-flake
microvm.nix
NixOS MicroVMs
Stars: ✭ 136 (+14.29%)
Mutual labels:  nix, nix-flake
dotfiles
My dotfiles as a Nix flake
Stars: ✭ 27 (-77.31%)
Mutual labels:  dotfiles, nix-flake
flake-utils-plus
Use Nix flakes without any fluff.
Stars: ✭ 280 (+135.29%)
Mutual labels:  nix, nix-flake
dotnix
Shackled within an elaborate prison of my own design.
Stars: ✭ 35 (-70.59%)
Mutual labels:  dotfiles, nix
dotfiles
Dotfiles
Stars: ✭ 25 (-78.99%)
Mutual labels:  nix, nix-flake
system
The system configuration of a professional yak shaver
Stars: ✭ 42 (-64.71%)
Mutual labels:  nix, nix-flake
dotfiles
My personal dotfiles
Stars: ✭ 71 (-40.34%)
Mutual labels:  nix, nix-flake
nix-config
A collection of my system configs and dotfiles
Stars: ✭ 35 (-70.59%)
Mutual labels:  nix, nix-flake
Home Manager
Manage a user environment using Nix [maintainer=@rycee]
Stars: ✭ 2,447 (+1956.3%)
Mutual labels:  dotfiles, nix
nix-configs
My Nix{OS} configuration files
Stars: ✭ 54 (-54.62%)
Mutual labels:  nix, nix-flake
nix-config
NixOS configuration (also on WSL)
Stars: ✭ 51 (-57.14%)
Mutual labels:  nix, nix-config
dotfiles
My NixOS dotfiles
Stars: ✭ 21 (-82.35%)
Mutual labels:  dotfiles, nix

nixcfg

Nix rules everything around me

Overview

  • nix configuration for my laptops, desktops, phone, and cloud servers - all of my devices
  • nix flake-powered
  • guaranteed to be reproducible
  • all of my dotfiles

Note: this readme assumes you have enabled nixUnstable + flakes.

Disclaimer

This is not the best NixOS config repo to start from, if you are starting out and trying to build your own configuration. For example, nixflk provides a flake repo that is more thoughtfully laid out, and that does a better job of organizing configuration in a proper layered way.

In this repo, I freely combine NixOS and Home-Manager configuration via my "mixins" and "profiles". For a while, they were layered and separatedly "nicely", but there are a number of things that fundemtanlly require being configured in tandem and I prefer having the relevant config side-by-side in a single "mixin" file, rather than in two distinct places for the sake of "layering".

Howevever, the layered approach feels more rigorous and more appropriate to recommend for others starting out. This layered approach also makes it easier to re-use the Home-Manager configuration on a non-NixOS system. (Though, I suspect you can still build my home-manager module individually to get the same config.)

Repo Layout

  • cloud - contains some scripts/configs for booting NixOS instances in GCP/Azure
  • hosts - machine definitions for:
    • azdev - an Azure dev env machine
    • pinebook - my current daily-driver laptop (Pinebook Pro, aarch64)
    • pinephone - my future daily-driver phone (Pinephone Pro, via NixOS Mobile, aarch64)
    • pixel - a defunct attempt at porting NixOS Mobile to bluecross (Pixel 3)
    • rpione - the brain of my house
      • Home-Assistant with my custom config + Lovelace layouts, etc.
      • Unifi Controller (on demand, to relieve memory usage)
      • Tor Hidden Service (for reliable permanent remote-access into my network)
      • (WIP) a netboot server for rpitwo
    • rpitwo - a WIP attempt at fully netbooting an UEFI-powered RPI4 with NixOS over NFS
    • slynux - this is my gaming-machine turns quarantine-dev-machine. This runs natively on my gaming machine, or as a hyperV VM when the host is running Windows (Very Useful!)
    • winvm - an example Windows VM built with Nix, via the awesome wfvm project
    • xeep - my old, dead XPS 13 (9370) laptop
  • misc/ - literally just a script I have no better home for
  • mixins/ - this is where all of the important parts of system/dotfile config lives
    • this is where sway, redshift, etc type config lives
    • this is also where docker, libvirt, etc are configured
  • packages/ - nix packages that I maintain local to this repo, they don't belong in nixpkgs (yet)
  • profiles/ - these are the bits that primarily get pulled into a system configuration.
    • gui.nix - all of my GUI related settings that only apply to machines that I sit in front of
    • interactive.nix - anything related to a machine that I interact with regularly (and thus want neovim, etc)
  • secrets/ - some light infra around sops-nix for dealing with encrypted secrets in this repo and my systems
  • shells/ - a few shell.nixs for being able to hack on random source code trees

Custom Packages

I package these things, mostly for myself:

  • cchat-gtk (a new GTK chat client supporting, so far, Discord!)
  • obs-v4l2sink (my fork of obs-v4l2sink)
  • mirage-im (an Qt5 Matrix client)
  • neovim (nightly 0.5 build for LSP support)
  • passrs (a Rust pass implementation, not actually using though)
  • raspberrypi-eeprom (the rpi4 boot eeprom files)
  • rpi4-uefi (a rpi4 uefi build)

Many of these are building latest from the tip of their development branches, using an auto-update script that is also used in nixpkgs-wayland.

These are easily runnable, if you have enabled Nix flakes:

nix shell "github:colemickens/nixcfg#cchat-gtk" --command cchat-gtk

Dotfiles

Interspersed in my configuration is home-manager configuration. Home Manager modules produce config files in the Nix store which are then symlinked into place in your home directory. This means that my dotfiles are entirely managed as part of my system configuration:

Some examples:

If you think converting config to Nix is overkill, you can also include the raw config files and instruct Home-Manager to symlink them into place.

Secrets

Secrets are all stored encrypted with sops (via sops-nix) so that they remain encrypted at rest in the Nix store.

Interesting Tidbits

(TODO: note to self, remove this section, turn it into a blog post, or series)

  • Everything builds in Nix, with Flakes (meaning Pure mode). This necessitated the creation of colemickens/flake-firefox-nightly.
  • Nix lets you do silly things like The terminal colors and fonts for all of my terminal emulators are declared in Nix. I can change the appearance of all of them uniformly, in one place. (https://github.com/colemickens/nixcfg/blob/main/mixins/_common/termsettings.nix)
  • home-assistant config
  • unifi
  • sops for secrets stored in-tree
  • auto-update script for ./pkgs/ that keep everything building from their tips-of-trees

Other Interesting Nix Repos

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].