Comments (8)
Uh, I'm still very new to Nix, so I'm not entirely sure what I'm supposed to do, maybe an example of the whole flakes.nix
? Otherwise, I'll try this out when I have the time this weekend. Sorry about that...
from nyx.
To be more specific on the "you should be able to use it without a module":
-
You can use https://nix-community.github.io/home-manager/nixos-options.html#nixos-opt-home-manager.extraSpecialArgs for forwarding
chaotic
from yourflake.nix
'soutputs
to yourhome.nix
. -
Once inside you can:
{ chaotic, ... }:
{
programs.yt-dlp.package = chaotic.packages.x86-64-linux.yt-dlp_git;
}
from nyx.
Great, I'll make a module with it, but I'll add your instructions meanwhile.
Also, you can use with
to shorten repeating our "full" path:
{ config, pkgs, chaotic, ... }:
{
home.packages = with chaotic.packages.${pkgs.hostPlatform.system}; [
fastfetch
firedragon
];
}
from nyx.
Currently, we don't have a home-manager-specific module. But the overlay should still work as desired:
- Add the inputs to the
flake.nix
:
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
+ chaotic.url = "github:chaotic-cx/nyx/nyxpkgs-unstable";
};
- You still need to get the
chaotic
from the output's parameter's attrset:
- outputs = { nixpkgs, ... }: {
+ outputs = { nixpkgs, chaotic, ... }: {
- Now you have to add our overlay:
3.a. Option A: Add it to home-manager'snixpkgs.overlays
option, inside one of yourmodule
s:
+nixpkgs.overlays = [ chaotic.overlays.default ];
3.b. Option B: Add it to import nixpkgs
:
pkgs = import nixpkgs {
+ overlays = [ chaotic.overlays.default ];
system = "x86_64-linux"
- After this, you shall be able to install our packages as if they were from nixpkgs:
{
home.packages = with pkgs; [ yuzu-early-access_git ];
}
Please, let me know if it worked out.
from nyx.
@bayazidbh bumping you to know if it worked. (So I can add it to the README)
from nyx.
Alright, I tested it out, but I think there are some additions needed to be added to this repo's flake.nix
.
Currently, this is my flake.nix:
My flake.nix
{
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; # use nixpkgs-unstable as main nixpkgs source
home-manager = {
url = "github:nix-community/home-manager"; # home-manager unstable url
inputs.nixpkgs.follows = "nixpkgs"; # inherit nixpkgs-unstable as main nixpkgs source
};
flatpaks.url = "github:GermanBread/declarative-flatpak/stable"; # declarative-flatpak, still WIP
chaotic.url = "github:chaotic-cx/nyx/nyxpkgs-unstable"; # https://github.com/chaotic-cx/nyx#how-to-use-it
# Add other inputs if needed
};
outputs = { self, nixpkgs, home-manager, flatpaks }:
let
# Generate a user-friendly version number.
# version = builtins.substring 0 2 self.lastModifiedDate;
# System types to support. [ "x86_64-linux" "x86_64-darwin" "aarch64-linux" "aarch64-darwin" ];
supportedSystems = [ "x86_64-linux" ];
# Helper function to generate an attrset '{ x86_64-linux = f "x86_64-linux"; ... }'.
forAllSystems = nixpkgs.lib.genAttrs supportedSystems;
# Nixpkgs instantiated for supported system types.
nixpkgsFor = forAllSystems (system: import nixpkgs { inherit system; });
in
{
# Standalone home-manager configuration entrypoint
homeConfigurations = {
# declare a "username" or "username@hostname" specific configuration
"fenglengshun@ostree-pc" = home-manager.lib.homeManagerConfiguration {
pkgs = nixpkgs.legacyPackages.x86_64-linux; # Home-manager requires 'pkgs' instance
modules = [
./pc/home.nix # device specific home.nix
flatpaks.homeManagerModules.default # import declarative-flatpak module
chaotic.nixosModules.default # default nix
];
};
"fenglengshun@neon-laptop" = home-manager.lib.homeManagerConfiguration {
pkgs = nixpkgs.legacyPackages.x86_64-linux; # Home-manager requires 'pkgs' instance
modules = [
./laptop/home.nix # device specific home.nix
flatpaks.homeManagerModules.default # import declarative-flatpak module
];
};
};
};
}
Remove the two lines about chaotic, and it works. So the minimum to get chaotic-nyx working on non-NixOS home-manager should be:
minimum flake.nix for future instruction
{
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; # use nixpkgs-unstable as main nixpkgs source
home-manager = {
url = "github:nix-community/home-manager"; # home-manager unstable url
inputs.nixpkgs.follows = "nixpkgs"; # inherit nixpkgs-unstable as main nixpkgs source
};
chaotic.url = "github:chaotic-cx/nyx/nyxpkgs-unstable"; # add chaotic's github url
# Add your other inputs
};
outputs = { self, nixpkgs, home-manager, flatpaks }:
{
# Standalone home-manager configuration entrypoint
homeConfigurations = {
# declare a "username" or "username@hostname" specific configuration
">INSERT YOUR USERNAME + OPTIONALLY HOSTNAME<" = home-manager.lib.homeManagerConfiguration {
pkgs = nixpkgs.legacyPackages.x86_64-linux; # Home-manager requires 'pkgs' instance
modules = [
./<folder>/home.nix # location to home.nix relative to flake.nix path, use ./home.nix if in the same folder
chaotic.homeManagerModules.default # default chaotic-nyx module
];
};
};
};
}
However, switching to the flakes using chaotic's default module gets me the error:
nixosModules
home-manager switch
error: undefined variable 'chaotic'
at /nix/store/mwh336zsyvhg95xicdqdf6yxbmc2ca6q-source/flake.nix:37:11:
36| flatpaks.homeManagerModules.default # import declarative-flatpak module
37| chaotic.nixosModules.default # default chaotic-nyx module
| ^
38| ];
error: undefined variable 'chaotic'
at /nix/store/mwh336zsyvhg95xicdqdf6yxbmc2ca6q-source/flake.nix:37:11:
36| flatpaks.homeManagerModules.default # import declarative-flatpak module
37| chaotic.nixosModules.default # default chaotic-nyx module
| ^
38| ];
error: undefined variable 'chaotic'
at /nix/store/mwh336zsyvhg95xicdqdf6yxbmc2ca6q-source/flake.nix:37:11:
36| flatpaks.homeManagerModules.default # import declarative-flatpak module
37| chaotic.nixosModules.default # default chaotic-nyx module
| ^
38| ];
Looking at declarative-flatpak's flake.nix, it seems you guys would need separate module for handling home-manager? Based on what I've learned, you'd probably need to make a separate section for home-manager in flake.nix, or import it from a separate file.
One of the headache as I was trying to get a flake working, aside for scattered documentation and guides (don't use ChatGPT, it hallucinates WAY too much for Nix), is that I don't have nixosSystem
and any variables involving nixos. Instead of nixosConfigurations
I have to use homeConfigurations
or home-manager.lib.homeManagerConfiguration
. That's probably the blocker.
Also would probably need to make a list for actual home-manager pkgs and Options -- they're packages and configs that would be installed, set, and operates properly purely through /home/$USER
. For pkgs and Options that needs root access, if you want to support them for non-NixOS then you can have a separate instruction, list, and module for system-manager.
So for now, I would suggest just adding "non-NixOS home-manager users are not currently supported". You'd have to make separate section for HM, shedding all the NixOS assumptions.
(At least from what I've learned anyways - I could be wrong tbh)
from nyx.
Looking at declarative-flatpak's flake.nix, it seems you guys would need separate module for handling home-manager? Based on what I've learned, you'd probably need to make a separate section for home-manager in flake.nix, or import it from a separate file.****
You should be able to use it without a module and referring to the flake's packages directly. But yeah, we could make one HM module to make things easier too.
from nyx.
Okay, that works. I found what I needed to do:
1.) NOT forgetting to add chaotic
into the opening statement of outputs on nix
2.) Add extraSpecialArgs = { inherit chaotic; };
to home-manager.lib.homeManagerConfiguration
as you say
3.) Add the full chaotic.packages.x86_64-linux.<pkgs-name>
when adding to home.packages
, following what you said. chaotic.packages.${pkgs.hostPlatform.system}.<pkgs-name>
also works when adding to home.packages
in the main home.nix file.
So, I would say the instruction could be something like:
instruction draft
Put in ~/.config/home-manager/flake.nix :
{
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; # use nixpkgs-unstable as main nixpkgs source
home-manager = {
url = "github:nix-community/home-manager"; # home-manager unstable url
inputs.nixpkgs.follows = "nixpkgs"; # inherit nixpkgs-unstable as main nixpkgs source
};
chaotic.url = "github:chaotic-cx/nyx/nyxpkgs-unstable"; # add chaotic's github url
# Add your other inputs
};
outputs = { self, nixpkgs, home-manager, flatpaks, chaotic }:
{
# Standalone home-manager configuration entrypoint
homeConfigurations = {
# declare a "username" or "username@hostname" specific configuration
">INSERT YOUR USERNAME + OPTIONALLY HOSTNAME<" = home-manager.lib.homeManagerConfiguration {
pkgs = nixpkgs.legacyPackages.x86_64-linux; # Home-manager requires 'pkgs' instance
extraSpecialArgs = { inherit chaotic; }; # so that home-manager can correctly read chaotic.packages
modules = [
./<folder>/home.nix # location to home.nix relative to flake.nix path, use ./home.nix if in the same folder
./<folder>/chaotic.nix # if you prefer a separate file for chaotic-nyx configs
# chaotic.nixosModules.default # do not add the module, it does not currently work outside of NixOS - either don't write it, or comment it out
];
};
};
};
}
Then, if you just use the one home.nix file:
{ config, pkgs, chaotic, ... }:
{
home.packages = with pkgs; [
chaotic.packages.${pkgs.hostPlatform.system}.fastfetch # you may also use absolute system platform such as `x86_64-linux`
# ... your other packages
];
}
Or, if you have a separate chaotic.nix file:
{ chaotic, ... }:
{
home.packages = [
chaotic.packages.x86_64-linux.fastfetch # `${pkgs.hostPlatform.system}` may not work, unless you have manually adjusted it for this file
];
}
And yeah, the module doesn't work, adding chaotic.nixosModules.default
results in:
Details
home-manager switch
error:
… while evaluating a branch condition
at /nix/store/8dq1grzr2g9ghh8nrwh15mn65pnp9qb1-source/lib/lists.nix:57:9:
56| fold' = n:
57| if n == len
| ^
58| then nul
… while calling the 'length' builtin
at /nix/store/8dq1grzr2g9ghh8nrwh15mn65pnp9qb1-source/lib/lists.nix:55:13:
54| let
55| len = length list;
| ^
56| fold' = n:
(stack trace truncated; use '--show-trace' to show the full trace)
error: attribute 'steam' missing
at /nix/store/j5c9cby4i29zsjgfkzz6vdhaiw7cc6ag-source/modules/steam-compat-tools.nix:7:14:
6| with lib; let
7| steamCfg = config.programs.steam;
| ^
8| cfg = config.chaotic.steam;
from nyx.
Related Issues (20)
- [Bug Report] scx_lavd failed to run HOT 6
- [Bug] linuxPackages_cachyos-lto.nvidia_x11 fails to build (fix included) HOT 8
- [Bug] linux-cachyos iwlwifi crashes HOT 7
- [Request] Make linux-cachyos also part of pkgsx86_64_v3-core HOT 1
- [Request] picom - X11 Compositor HOT 1
- [Request] HOT 1
- [Request] ollama HOT 1
- [Request] open-webui HOT 1
- [Bug] readline build failure HOT 1
- [Bug] Error when starting schedulers manually HOT 7
- [Request] Add ACS override to linux-cachyos HOT 2
- [Bug] Cannot install SCX HOT 9
- [Support Request] linux-cachyos 6.9.8 is not in the binary cache server HOT 2
- [Bug] Cannot use with channels HOT 1
- "scx_bpfland" is not a valid value for the chaotic.scx.scheduler option. HOT 2
- [Bug] niri_git from `4dd5fbea01eeda3b45d8d0af37d10de61fdd9659`
- [Support Request] Binary cache for linux-cachyos HOT 6
- [Request] Goverlay 1.2 HOT 2
- [Request] Steam Tinker Launch HOT 1
- [Bug] linuxPackages_cachyos causes problems with Distrobox containers HOT 7
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from nyx.