This is genius, thank you. I'm trying to port my config to snowfall-lib, and this video answers almost all of my questions except for the homes directory. Maybe you could record a follow up, and include it on the front page of documentation? I think video format is more user friendly to get started. (and btw it would be great if you used bigger font :)) But all I can say is that this is revolutionary. I think it would be amazing to create a registry of snowfall-lib modules with good preconfigured defaults (shared by community).
Hey Jake! I've been strongly considering moving my NixOS config to Snowfall ever since I first encountered your channel about a month ago. But it sounds like Aux Labs may be supplanting Snowfall, if I understanding correctly, as part of a larger project. Would you mind clarifying their relationship? Will Snowfall be maintained, or should I wait until Aux is ready?
Hey! It's going to be quite some time before the Aux Labs work graduates to real use cases. Snowfall Lib will still exist for NixPkgs, NixOS, and the rest of the current ecosystem. Though I am envisioning a future where we don't have so many separate tools which need to be glued together. Rather, I would like for the benefits of Snowfall Lib to be included out of the box in whatever we do with Aux. So the short version is: stick with Snowfall Lib, it isn't going anywhere!
This video made me realize that a video explaining all these concepts would be nice. Like - how does the typesystem actually work - deepdive into modules - how does extend work Basically an introduction into programming with nix.
nooo... the cutoff the top 😿. Still a great video! Making that library of functions is such a great idea!! And dang, Tidepool sounds really cool. I am excited to learn more!
I've been using NixOS on my main machine since last November. Today I decided it was time to bring NixOS to a second machine, and went looking for a video I was sure existed on multi host setups. I ended up finding IogaMaster's video on Snowfall and it seems, change of plans, like maybe I want to first port my config to Snowfall. It looks really well thought out, and I especially appreciate introducing an idiomatic convention for the config directory structure.
I created a flake.nix from github:srid/haskell-flake, but any flake command like 'nix flake lock' aborts with "error: unsupported tarball input attribute 'lastModified'". I have no idea, what it is talking about.
When is the Nix language going to have a CLI interface like other languages or at least be more versatile like other config languages: - e.g: `node -e "console.log('lksdjf');" - e.g: JSON can be read and modified by almost any language out there, even BASH can use tools like `jq` to manipulate JSON. Why do I have to keep string-manipulating NixOS config files just to do some automation?
it does: nix repl Also json is NOT a configuration language. It's an object expression language. nix is a functional expression language. Because nix is a purely functional language you need to understand the paradigm. There is no "steps" in nix (a log/print function will not help you much). You have declarations that define state and outputs. You can have the following: flake.nix flake.lock home.nix common.nix configuration-home.nix configuraiton-server.nix you can have import expressions and write your own functions to make redundant declarations in many files. the common.nix can have expressions that are used in both home and server configurations. the flake.nix and flake.lock ensure that the inputs are the same every single time your build. the power of nix is that you can have 1 flake manage an entire network of computers, and git track it for time-machine like rollback. You have to remember the goal is reproducability. If you could imperitively change things you would break your state and lose all the powers nix gives you. If you want a config to be able to change, don't declare it in your config, but know that you will lose the reproducability.
@@MrVampify > it does: > nix repl Thanks, man. Why don't NixOS communit on Discord be like you! instead of educating me on silly NixOS topics, the OS is just a tool after all. I just found Repl and Eval. Both are great, tho they don't save data to config files. I need to interface with the config files, not just the OS. > Also json is NOT a configuration language. It's an object expression language. It is, to many people. If not, it could be, what could stop it? What's a config? how complex is your config? what would stop some random string format from being a config language? This never ends, but it's of no good pedantically splitting hairs. However, I only mentioned JSON because of it's versatility, sorry if I caused any confusion! > nix is a functional expression language. > Because nix is a purely functional language you need to understand the paradigm. I like most of the functional programming paradigm, that's never my problem. > There is no "steps" in nix (a log/print function will not help you much). You have declarations that define state and outputs. No idea what you said here, ¯\_(ツ)_/¯. > You can have the following: > flake.nix > flake.lock > home.nix > common.nix > configuration-home.nix > configuraiton-server.nix > you can have import expressions and write your own functions to make redundant declarations in many files. > the common.nix can have expressions that are used in both home and server configurations. > the flake.nix and flake.lock ensure that the inputs are the same every single time your build. > the power of nix is that you can have 1 flake manage an entire network of computers, and git track it for time-machine like rollback. I'm yet to explore that side of it. > You have to remember the goal is reproducability. If you could imperitively change things you would break your state and lose all the powers nix gives you. It doesn't have to be a black-white situation: we could have both, the command could reflect the changes in a config file, or maybe I just want to do some temporary stuff, one command and rebuild to get the old state. The reason I need that interface, because in Installation phase, I needed to have some booting options changed to automate my installation, I wouldn't need it If I found some official config file for installation (I'm planning to learn Disko, althogh many folks in NixOS Discord server advised me not to). > If you want a config to be able to change, don't declare it in your config, but know that you will lose the reproducability. Again, why not have the best of both world? Anyways, I already made some silly installation script and hosted it in my repo. I'll soon add to it the post-installation flakes thingy, and probably won't need to cry about such topic.
MHWOAR Nix/NixOS stuff from you... PLEASE!!!! Recently found you and am grateful for what you have shared with us here. I am now subscribed to you and my alerts are activated!
It's a nice idea, but I think it'd be more interesting to see actual configs being written,, watching 10-15min of fetching/building lines on a slow terminal isn't the most fun to watch 😬😬
snowfall-lib works for nixos and home-manager separated too? and modules for old and new gpu with nixgl? deploy-rs deploys only home-manager too? Sry to ask you this questions, but i like how snofall-lib handle things, and im up to build my own configs .
You can use Home-Manager in both standalone or as a NixOS module when using Snowfall Lib. You won't have to worry about NixGL if you're on NixOS, but on other linux systems you may need to use it to make sure graphics work for some applications. This is unrelated to Snowfall Lib, though :)
think of it as a docker container. Configuration.nix is a giant function in nix language. The first set of {} is parameter list, and second one in which we declare our Nixos environment is return value, a giant data set. It’s just inputs and outputs in flakes. Except in flakes we write it differently, not as function but a data set. We put parameters in inputs and return values in outputs, and that’s it. The only difference between configuration.nix and a flake is that we have much better control over inputs and outputs, particularly inputs(dependencies).
It's another way of configuring the system ¯\_(ツ)_/¯, it'll manage your /etc/nixos/.configuration.nix instead of doing it the traditional way. And home-manager is a configuration that are specific for the home directory. I find these topics really simple, it's just the way they explain it is really unusual, they are unusual people after all! (kidding)
Corrections: - The command "nix check" should instead be "nix flake check". The former is incorrect and does not exist. I probably confused it with my aliased helper. Oops!
I'm still waiting on that new live stream where you finish your deployment. :p But on another note, may be nice to get some Snowfall Lib content. Like how to convert your existing config to a Snowfall Lib config, etc. :)