mirror of
https://github.com/softinio/softinio.com.git
synced 2025-09-05 11:16:41 -07:00
86 lines
1.9 KiB
Markdown
86 lines
1.9 KiB
Markdown
+++
|
|
title = "Using Stable And Unstable Nix/NixOS Channels Together"
|
|
date = 2025-05-03
|
|
|
|
[taxonomies]
|
|
tags = ["Nix", "NixOS"]
|
|
categories = [ "TIL" ]
|
|
|
|
[extra]
|
|
toc = true
|
|
keywords = ["Nix", "NixOS"]
|
|
+++
|
|
|
|
For one of my servers that is running NixOS I have been using the stable channel for all packages. However I wanted for one package to use the version of the package that the unstable channel had and had to learn how to do it.
|
|
|
|
I am using flakes and this is what I originally had as my input:
|
|
|
|
```nix
|
|
inputs = {
|
|
nixpkgs = {
|
|
url = "github:NixOS/nixpkgs/nixos-24.11";
|
|
};
|
|
};
|
|
```
|
|
|
|
I added the unstable channel as an input:
|
|
|
|
```nix
|
|
inputs = {
|
|
nixpkgs = {
|
|
url = "github:NixOS/nixpkgs/nixos-24.11";
|
|
};
|
|
nixpkgs-unstable = { # <-- added this !
|
|
url = "github:NixOS/nixpkgs/nixos-unstable";
|
|
};
|
|
};
|
|
```
|
|
|
|
I changed my output to make sure my system is configured with both channels as follows (see comments in code snippet for what I added):
|
|
|
|
```nix
|
|
outputs =
|
|
{
|
|
self,
|
|
nixpkgs,
|
|
nixpkgs-unstable, # <--- added this
|
|
}:
|
|
let
|
|
system = "x86_64-linux";
|
|
|
|
# Define the pkgs from both stable and unstable channels
|
|
pkgs = import nixpkgs {
|
|
inherit system;
|
|
};
|
|
|
|
unstablePkgs = import nixpkgs-unstable {
|
|
inherit system;
|
|
};
|
|
in
|
|
{
|
|
nixosConfigurations = {
|
|
myserver = nixpkgs.lib.nixosSystem {
|
|
inherit system;
|
|
modules = [
|
|
./configuration.nix
|
|
];
|
|
specialArgs = {
|
|
inherit pkgs unstablePkgs; # <--- inheriting both!
|
|
};
|
|
};
|
|
};
|
|
};
|
|
```
|
|
|
|
Now where ever I define a nix function I include both `pkgs` and `unstablePkgs` as arguments and am able to chose what package from which channel to use.
|
|
|
|
For example when choosing what system packages I want to install:
|
|
|
|
```nix
|
|
environment.systemPackages = with pkgs; [
|
|
eza
|
|
unstablePkgs.ripgrep
|
|
];
|
|
```
|
|
|
|
Happy Days!
|