My personal package overlay for sharing my most commonly used derivations.
There are several packages exposed by this flake. Each directory in pkgs
contains a description of the package inside its README.
Package | Description |
---|---|
alejandra-custom | A patched version of the Alejandra Nix formatter, without the pesky ads and spacing patches |
ani-cli | An up-to-date, auto updated version of ani-cli following auto-updated pins |
cloneit | A CLI tool to download specific GitHub directories or files |
foot-transparent | A patched version of the Foot terminal emulator that brings back fullscreen transparency1 |
fuzzel-git | Patched version of Fuzzel that tracks the latest git revision |
headscale-ui | A web frontend for the headscale Tailscale-compatible coordination server |
mastodon-bird-ui | Mastodon web UI, but strongly inspired by Twitter. |
zsh-stripped | ZSH with newinstall scripts removed, and patches to handle special characters such as ^ or # |
Regardless of your setup,you may want to add the binary cache to your substituters to avoid building the provided packages on each pull. You may follow the example below to add the binary cache to your system.
nix.settings = {
builders-use-substitutes = true;
substituters = [
# other substituters
"https://nyx.cachix.org"
];
trusted-public-keys = [
# other trusted keys
"nyx.cachix.org-1:xH6G0MO9PrpeGe7mHBtj1WbNzmnXr7jId2mCiq6hipE="
];
};
It is as simple as adding a new entry to your inputs with the correct url.
# flake.nix
inputs = {
# ...
nyxexprs.url = "github:notashelf/nyxexprs";
# ...
};
After adding the input, you can consume the exposed packages in
your system configuration. An example flake.nix
would be as follows:
# flake.nix
{
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
home-manager.url = "github:nix-community/home-manager";
# ↓ add nyxexprs as a flake input
nyxexprs.url = "github:notashelf/nyxexprs";
};
outputs = inputs @ {self, nixpkgs, ...}: {
# set up for NixOS
nixosConfigurations.<yourHostName> = nixpkgs.lib.nixosSystem {
specialArgs = {inherit inputs;};
modules = [
./configuration.nix
# ...
];
};
# or for Home Manager
homeConfigurations.<yourHostName> = inputs.home-manager.lib.homeManagerConfiguration {
extraSpecialArgs = {inherit inputs;};
pkgs = import nixpkgs {
system = "x86_64-linux";
config.allowUnfree = true;
};
modules = [
./home.nix
# ...
];
}
};
}
Where you can then add the relevant package to your environment.systemPackages
or home.packages
{pkgs, inputs, ...}: {
# in case of home-manager, this will be home.packages
environment.systemPackages = [
inputs.nyxexprs.packages.${pkgs.system}.<packageName> # installs a package
];
}
If you are using Nix on a non-NixOS distro, you may nix run
to try out
packages, or nix profile install
to install them on your system profile. If
using home-manager on non-NixOS, I recommend using home.packages
instead.
nix profile install github:notashelf/nyxexprs#<package>
If you are not using flakes, the above instructions will not apply. You may obtain the source as a tarball to consume in your system configuration as follows:
{pkgs, ...}: let
nyxexprs = import (builtins.fetchTarball "https://github.com/notashelf/nyxexprs/archive/main.tar.gz");
in {
# install packages
# this can also be home.packages if you are using home-manager
environment.systemPackages = [
nyxexprs.packages.${pkgs.hostPlatform.system}.<packageName>
];
}
PRs are always welcome.
The repository structure is mostly borrowed from @fufexan's nix-gaming.
Footnotes
-
Foot has broken fullscreen transparency on 1.15, which looks really ugly with padding. The author is dead set on not fixing it, because it's broken on one wayland compositor that a total of 7 people use. ↩