I'm Mihai, a B.Sc. student at TUCN, studying Electronics and Telecommunications.
My resume is available here.
You can reach me on Discord @fufexan
, Matrix, or email.
NixOS system config & Home-Manager user config
License: MIT License
I Ran nixos-rebuild build-vm --flake '.#io'
to build a VM out of this NixOS config.
after some time (its 4.5 GB download for those who have limited bandwidth), it gave me blank screen.
followed Hyprland on NixOS vm/QEMU
to add
-device virtio-vga-gl \
-display sdl,gl=on,show-cursor=on \
in run-io-vm.sh
(by copying it to local file and making it executable)
The Inputs are not working.
NOTE: i have Nvidia GPU, but i also have Radeon iGPU
I use perSystem.packages
to put the packages in, I try to create a folder firefox-addons like this:
{ fetchurl, lib, stdenv }@args:
let
buildFirefoxXpiAddon = lib.makeOverridable ({ stdenv ? args.stdenv
, fetchurl ? args.fetchurl, pname, version, addonId, url, sha256,...
}:
stdenv.mkDerivation {
name = "${pname}-${version}";
src = fetchurl { inherit url sha256; };
preferLocalBuild = true;
allowSubstitutes = true;
buildCommand = ''
dst="$out/share/mozilla/extensions/{ec8030f7-c20a-464f-9b0e-13a3a9e97384}"
mkdir -p "$dst"
install -v -m644 "$src" "$dst/${addonId}.xpi"
'';
});
in
{
dashlane = buildFirefoxXpiAddon {
pname = "dashlane";
version = "6.2321.2";
addonId = "[email protected]";
url = "https://prod.extensions.dashlane.com/downloads/firefox/dashlane-latest-fx.xpi";
sha256 = "sha256-YcwL/MFfMrIuLDngK3fzclEC58jR02fe7zOh5XWOZwg=";
};
default-zoom = buildFirefoxXpiAddon {
pname = "default-zoom";
version = "1.1.3";
addonId = "[email protected]";
url = "https://addons.mozilla.org/firefox/downloads/file/3567861/default_zoom-1.1.3.xpi";
sha256 = "sha256-bbAC380jFU8Q0ewXfM5O1YcbJXrlnF279WqV2dkgGHY=";
};
aria2 = buildFirefoxXpiAddon {
pname = "aria2-integration";
version = "4.3.0";
addonId = "[email protected]";
url = "https://addons.mozilla.org/firefox/downloads/file/4099805/aria2_extension-4.3.0.xpi";
sha256 = "sha256-MXDHbdSYzaEpQcUz/YXQqKQ5t6q4h83O+84KHN2nAqI=";
};
}
like nur.rycee. I have tried callPackages ./firefox-addons { };
as well as pkgs.recurseIntoAttrs (pkgs.callPackage ./firefox-addons { });
but it doesn't work at all. I don't know where did I go wrong? Can u spare some time for me!
Hi, I have added your flake to my inputs as so:
fufexan.url = "github:fufexan/dotfiles";
fufexan.inputs.nixpkgs.follows = "nixpkgs";
And to my home-manager config:
And nix complains that error: infinite recursion encountered
.
I think you have changed something in your inputs, but I don't quite understand it.
Thanks
Don't recognize keyboard in hyprlock
if hyprlock
is set to exec-one
Basically when I wanted to try out your homeConfigurations. It was throwing some weird errors to me. First encounter would be that they don't show on nix flake show
.
I did some digging and readjustments to make it work for me but I'm not any smarter. The issues seems to be related to some weird magic I found here and here. I figured these must be related to this and that you want to somehow bring the parameters usually carried over by flake-parts to be in scope or something but I'm only guessing.
Maybe a GitHub issue isn't the right way to ask but I would love to hear an explanation.
Another thing to mention would be that I tried this in a Non-NixOS system with home-manager installed. So it's not weird that it might break for me when it works for you. The whole point of this issue is just because I want to learn. And then maybe improve on it.
Hello i just saw you screenshot and it look just amazin, simple yet so artistic.
I have just learn about hyprland one month ago and i have it on my arch installation.
But now i iwant to try an nixos installation, with hyperland and eww, i mena like yours.
if i understand correctly i just have to download all this repo and start in a usb and mount the drives and just
nixos-install --flake .#? and i will have exactly the same setup as yours?
thank you for any answer
Inspired by your dotfiles (BTW the download link here
seems to be broken), I made a modified one (see below)However, when setting the cursor, e.g. with
> hyprctl setcursor BibataHypr-Modern-Classic 26
ok
I see in the Hyprland log:
[hc] getFullPathForThemeName: found /home/jeroen/.local/share/icons/BibataHypr-Modern-Classic
[hc] Found theme BibataHypr-Modern-Classic at /nix/store/hk18adfbwfby1b4lwlmcgwb7zsymakgg-bibata-hyprcursor-1.0/share/icons/BibataHypr-Modern-Classic
[hc] loadThemeStyle: loading for size 39
[hc] Failed reading svg: XML parse error: Error domain 1 code 73 on line 3 column 51 of data: Couldn't find end of Start Tag circle line 3
[hc] getShapesC: found 0 images for left_ptr
[hc] getShapesC: found 0 images for left_ptr
[hc] getShapesC: found 0 images for default
[hc] getShapesC: found 0 images for left_ptr
[hc] getShapesC: found 0 images for left-ptr
and the cursor does not change, though hyprctl
thinks there is no problem.
In other words, it is found but the svg data (compressed in the .hcl
files as I understand) cannot be loaded.
BTW, I noticed that the name in the manifest is the original Bibata name, i.e. not the name of the directory, don't know if this plays a role?
The cursor package for nix (shas not yet finished):
{
lib,
stdenvNoCC,
fetchurl,
# bibata-cursors,
variant ? "Modern-Classic",
}: let
hcversion = "1.0";
variants = {
Modern-Classic = {
url = "https://github.com/LOSEARDES77/Bibata-Cursor-hyprcursor/releases/download/${hcversion}/hypr_Bibata-Modern-Classic.tar.gz";
name = "hypr_Bibata-Modern-Classic.tar.gz";
sha256 = "sha256-+ZXnbI3bBLcb0nv2YW3eM/tK4dsraNM4UAO9BpSqfXk=";
};
Modern-Amber = {
url = "https://github.com/LOSEARDES77/Bibata-Cursor-hyprcursor/releases/download/${hcversion}/hypr_Bibata-Modern-Amber.tar.gz";
name = "hypr_Bibata-Modern-Amber.tar.gz";
sha256 = lib.fakeSha256;
};
Modern-Ice = {
url = "https://github.com/LOSEARDES77/Bibata-Cursor-hyprcursor/releases/download/${hcversion}/hypr_Bibata-Modern-Ice.tar.gz";
name = "hypr_Bibata-Modern-Ice.tar.gz";
sha256 = lib.fakeSha256;
};
Original-Classic = {
url = "https://github.com/LOSEARDES77/Bibata-Cursor-hyprcursor/releases/download/${hcversion}/hypr_Bibata-Original-Classic.tar.gz";
name = "hypr_Bibata-Original-Classic.tar.gz";
sha256 = lib.fakeSha256;
};
Original-Amber = {
url = "https://github.com/LOSEARDES77/Bibata-Cursor-hyprcursor/releases/download/${hcversion}/hypr_Bibata-Original-Amber.tar.gz";
name = "hypr_Bibata-Original-Amber.tar.gz";
sha256 = "sha256-WTXiuRje6VJlVDayvI9GzvKYNjdgXYqKRi8t2QRanDk=";
};
Original-Ice = {
url = "https://github.com/LOSEARDES77/Bibata-Cursor-hyprcursor/releases/download/${hcversion}/hypr_Bibata-Original-Ice.tar.gz";
name = "hypr_Bibata-Original-Ice.tar.gz";
sha256 = lib.fakeSha256;
};
};
in
stdenvNoCC.mkDerivation (finalAttrs: {
pname = "bibata-hyprcursor";
# inherit (bibata-cursors) version;
version = hcversion;
src = fetchurl {
inherit (variants.${variant}) url name sha256;
};
installPhase = ''
runHook preInstall
mkdir -p $out/share/icons/BibataHypr-${variant}
cp -r /build/manifest.hl /build/hyprcursors $out/share/icons/BibataHypr-${variant}/
runHook postInstall
'';
meta = {
description = "Open source, compact, and material designed cursor set";
homepage = "https://github.com/LOSEARDES77/Bibata-Cursor-hyprcursor";
license = lib.licenses.gpl3Only;
platforms = lib.platforms.linux;
maintainers = with lib.maintainers; [fufexan];
};
})
https://github.com/fufexan/dotfiles/blob/main/home/profiles/default.nix#L55
I think it should be ../programs/eww
:)
It's really an awesome desktop setup. But i have encountered some trouble to config it on my Arch Linux. Here are my problems.
eww open bar
. Still, eww bar won't appear until i run it twice or even third times.curl ix.io/xxxx
to get the logs in the terminal.)
RUST_BACKRACE=1
first time: ix.io/4tTMwpctl
with pactl
in the scripts/volume
. But i think that's not the problem why eww didn't show, or is it?)material-symbols-outline
. But, i actually install ttf-material-design-iconic-font
and ttf-material-design-icons
from archlinux aur and try to change the family name
of the icon
, no success.material-icon
and material-symbols
are two things. It seems that icon
are iconic font like awesome font
, but symbols are like svg or png? See herescripts/utils
or scripts/music
. But my XDG_CACHE_HOME
are empty. scripts/utils
sets the XDG_CACHE_HOME
to /home/mihai/.local/cache
, and the scripts/music
doesn't set the value. After i set env to XDG_CACHE_HOME = $HOME/.local/cache
, all programs using caches broken. It seems that $HOME/.cache
is the default cache file on Arch, though not related to XDG_CACHE_HOME
.I'm sry that i am poor in coding. Just like what's said by the elkowar/eww:
Smash your head against the keyboard from frustration (coding is hard)
Any help would be appreciated. Thanks in advance!
Add a button to the ags bar to prevent the screen from turning off.
I see you added both to flake but did not use the flake package. Is there anything wrong with it?
A panel with all your notifications.
when trying to import inputs.fufexan.homeManagerModules.eww-hyprland
it gives me error: attribute 'fufexan' missing.
full log in the github gist and my config is here: https://github.com/2Epik4u/nixos-config
https://gist.github.com/2Epik4u/2cc8e2b9e74ea57db18d5525fa9aa27c
I want to build a package in flake like anyrun
and upload it to cachix
with github action
before building it on the local machine.
As I know I can build all flake with
nix build -L '.#nixosConfigurations.laptop.config.system.build.toplevel'
Doing so takes up too much space and errors occur. Is there a way to build only 1 packags in my flake?
Here is my github action file
name: build-and-cache
"on":
- push
- workflow_dispatch
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: "Create Dir for Mounting moar Disk Space ❄️ "
run: |
sudo mkdir /nix
- name: "Maximize Disk Space"
uses: easimon/maximize-build-space@v8
with:
build-mount-path: /nix
remove-android: true
remove-codeql: true
remove-docker-images: true
remove-dotnet: true
remove-haskell: true
- uses: actions/checkout@v4
- uses: DeterminateSystems/nix-installer-action@main
- uses: DeterminateSystems/magic-nix-cache-action@main
- name: "Install Cachix ❄️ "
uses: cachix/cachix-action@v12
with:
name: hmanhng
authToken: "${{ secrets.CACHIX_AUTH_TOKEN }}"
extraPullNames: nix-community, hyprland, hmanhng, anyrun
- name: Set default git branch (to reduce log spam)
run: git config --global init.defaultBranch tmpfs
- name: Validate Flakes
run: nix flake check --print-build-logs --accept-flake-config
- name: "Build NixOS config ❄️ "
run: |
nix build -L '.#nixosConfigurations.laptop.config.system.build.toplevel'
Hey guys, this may be a newbie question, but I'm confused how to install your package. I thought your screen shots were really impressive and I love the look, but I'm confused how to install your software.
Your README mentions nix run github:fufexan/dotfiles#packageName
but then I get an error output about `experimental Nix feature 'nix-command' is disabled; add --extra-experimental-features nix-command' to enable it.
Could you add a "typical" example to your README to get from basic hyprland to your setup. I don't know what I'm supposed to point at and I don't want to have any awkward changes to my machine when I'm done.
How did you get the nix symbol in starship.nix? i can't render on my current setup.
Distro : Arch
WM : Hyprland
I'm pretty new to eww and followed the steps you told but it spawns errors when trying to open the bar
2023-10-25T06:22:25.040Z INFO eww > Initializing Eww server. (/run/user/1000/eww-server_aa08eec3e14d83d6)
Run `eww logs` to see any errors while editing your configuration.
2023-10-25T06:22:25.040Z INFO eww::server > Loading paths: config-dir: /home/greed/.config/eww, ipc-socket: /run/user/1000/eww-server_aa08eec3e14d83d6, log-file: /home/greed/.cache/eww_aa08eec3e14d83d6.log
error: No variable named `EWW_TIME` in scope
┌─ ./modules/clock.yuck:6:25
│
6 │ :text {formattime(EWW_TIME, "%a %b %d %H:%M")})))
│ ──────── Used here
│
→ Hint: Either define it as a global variable, or add it to the argument-list of your `defwidget` and pass it as an argument
→ Hint: If you meant to use the literal value "EWW_TIME", surround the value in quotes
and doing eww open bar
gives this error
failed to open window `bar`
Caused by:
No window named 'bar' exists in config.
This may also be caused by your config failing to load properly, please check for any other errors in that case.
Sorry for the silly question :(
Are you using xdg-desktop-portal with home-manager standalone?, if so, do you have any pointers to make it work?
On certain times the mouse cursor gets really big.
I tried using Lanzeboote when reinstalling from the iso. But when I reboot it doesn't find the nixos efi
Looks like sudo sbctl create-keys
is needed. Is there a way I can install it from the iso without commenting the lanzeboote module and re-enable it after a successful installation?
Hi @fufexan , I am learning NixOS by looking at others' dotfiles and I find yours quite advanced - especially your Hyprland's config!
I see that you are using systemd-run
to wrap your programs (firefox & alacritty) in this piece of code and I am quite perplexed. I am hoping to learn the benefits of doing it this way.
At first, I thought it is meant to run the program as "singletons" but after trying this out myself, I am ruling that out. May I be enlightened? :)
Can you explain to me how run-as-service
is different from run in normal?
loglevel=3 won't work, nixos will try to add a parameter loglevel=4
at the end, use instead boot.consoleLogLevel
Hi thanks for the great repo to look at,
I'm trying to use your eww-hyprland module in my own (home-manager) config.
I get the following error:
home-manager switch --flake ~/dotfiles#mesmer
trace: warning: optionsDocBook is deprecated since 23.11 and will be removed in 24.05
trace: warning: optionsDocBook is deprecated since 23.11 and will be removed in 24.05
trace: warning: optionsDocBook is deprecated since 23.11 and will be removed in 24.05
error:
… while calling the 'derivationStrict' builtin
at /builtin/derivation.nix:9:12: (source not available)
… while evaluating derivation 'home-manager-generation'
whose name attribute is located at /nix/store/mcrw5vy0xhxd0vkdzc0iqm83q845z23y-source/pkgs/stdenv/generic/make-derivation.nix:300:7
… while evaluating attribute 'buildCommand' of derivation 'home-manager-generation'
at /nix/store/mcrw5vy0xhxd0vkdzc0iqm83q845z23y-source/pkgs/build-support/trivial-builders/default.nix:87:14:
86| enableParallelBuilding = true;
87| inherit buildCommand name;
| ^
88| passAsFile = [ "buildCommand" ]
(stack trace truncated; use '--show-trace' to show the full trace)
error: attribute 'gross' missing
at /nix/store/cihli3fa1sm1v26lh1jpphg7yl5nfg3y-source/home/programs/eww/default.nix:11:5:
10|
11| inputs.gross.packages.${pkgs.system}.gross
| ^
12| config.wayland.windowManager.hyprland.package
Where my eww.nix
file looks like:
{
inputs,
pkgs,
...
}: {
imports = [inputs.fufexan.homeManagerModules.eww-hyprland];
programs.eww-hyprland = {
enable = true;
# default package
package = pkgs.eww-wayland;
# if you want to change colors
#colors = builtins.readFile ./frappe.scss;
# set to true to reload on change
#autoReload = true;
};
}
I am probably doing something silly, as i'm still newish to nix. Any help would be appreciated.
Eww Expression: https://gitlab.com/hmajid2301/dotfiles/-/blob/b781fba01bf8fc3d23036e9193356e382fc8e173/home-manager/desktops/wayland/eww.nix
How can I make sure the ags bar is also showing on my secondary screen?
I'm looking at using your bar configuration in my new Hyprland system, and I'm wondering as to the status of the eww
configuration - it seems like you primarily use ags
now, and the status in terms of maintenance for eww
isn't quite clear to me. In any case, I'm curious:
gross
to nixpkgs? I wasn't able to find it/an open PR.gross
?
How can I install this theme on Arch Linux?
I use Flake and the .nix-profile file and .nix-defexpr/ folder seem to be useless. Is there any way to prevent them from appearing in my HOME directory?
2023-07-28T04:31:26.416Z INFO eww > Initializing Eww server. (/run/user/1000/eww-server_82deaed9ce223bca)
Run eww logs
to see any errors while editing your configuration.
2023-07-28T04:31:26.416Z INFO eww::server > Loading paths: config-dir: /home/think-crag/Git/dotfiles/config/eww, ipc-socket: /run/user/1000/eww-server_82deaed9ce223bca, log-file: /home/think-crag/.cache/eww_82deaed9ce223bca.log
error: No variable named EWW_TIME
in scope
┌─ ./modules/clock.yuck:14:29
│
14 │ :text {formattime(EWW_TIME, "%H")}
│ ──────── Used here
│
→ Hint: Either define it as a global variable, or add it to the argument-list of your defwidget
and pass it as an argument
→ Hint: If you meant to use the literal value "EWW_TIME", surround the value in quotes
I use howdy and found it quite slow to launch the camera, I don't use linux-enable-ir-emitter
my config
howdy = {
enable = true;
package = inputs.nixpkgs-howdy.legacyPackages.${pkgs.system}.howdy;
settings = {
core.no_confirmation = true;
video = {
device_path = "/dev/video0";
force_mjpeg = true;
};
debug.end_report = true;
};
};
Time spent
Starting up: 413ms
Open cam + load libs: 1347ms
Opening the camera: 1347ms
Importing recognition libs: 959ms
Searching for known face: 408ms
Total time: 2168ms
Resolution
Native: 480x-1
Used: 320x427
Frames searched: 1 (2.45 fps)
Black frames ignored: 0
Dark frames ignored: 0
Certainty of winning frame: 2.531
Winning model: 0 ("Model #0")
Is there any way to fix it?
Hey, I'm currently attempting to clone your config, specifically your "io" host. And while I was able to build the flake into a vm with nixos-rebuild build-vm github:fufexan/dotfiles#io
and boot it up successfully I'm unfortunately getting errors while attempting to deploy it onto baremetal. I'm fairly new to NixOS flakes and while I do have a working flake deployment I'm not really happy with it and am in the process of blowing it away in lieu of the one you have configured as it's fantastic. I've forked your config already and just made a few small alterations such as changing the username, and disabling howdy and the ir-emitter since I'm deploying onto an AMD desktop and don't have any method of biometric authentication. I was hoping you might have some insight into the errors that I'm seeing, and I sincerely appreciate any insight you have.
I can provide you some error logs if you'd like but I'm not sure if I should drop them here or a pastebin service, etc. Just let me know if you'd be willing. Thanks for the consideration.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.