Compare commits

...

10 commits

Author SHA1 Message Date
a2ffe642ef
treewide: nix fmt
Some checks are pending
Checks / check (NIXPKGS_ALLOW_INSECURE=1 nix flake check --accept-flake-config --impure) (push) Waiting to run
Checks / check (nix run .#alejandra-custom -- -c . -e ./npins) (push) Waiting to run
Checks / build (push) Blocked by required conditions
2025-04-19 19:39:07 +03:00
6ce880fe0c
foot-git: re-add fullstreen alpha patch 2025-04-19 19:37:53 +03:00
f0e6e546d8
{headscale-ui, ai-robots-txt}: track with npins 2025-04-19 18:55:29 +03:00
f42261e903
flake: bump inputs 2025-04-19 18:48:09 +03:00
fc105dc2dd
docs: simplify 2025-04-19 18:48:02 +03:00
da9443728f
ani-cli: rename to ani-cli-git 2025-04-19 18:47:49 +03:00
efe83b353f
foot-transparent: rename to foot-git; drop fullscreen transparency patch 2025-04-19 18:47:32 +03:00
0ba3882e71
cloneit: drop
It is now available in Nixpkgs
2025-04-19 18:47:01 +03:00
4cb6ed2d62
robots-ai-txt: rename to ai-robots-txt; update to 1.28 2025-04-19 18:46:24 +03:00
0b3e6433c3
headscale-ui: 0-unstable-2024-02-24 -> 2025.03.21 2025-04-19 18:45:48 +03:00
14 changed files with 329 additions and 446 deletions

152
README.md
View file

@ -1,25 +1,28 @@
# 🌙 nyxexprs
My personal package overlay for sharing my most commonly used derivations.
## 📦 Packages
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 transparency[^1] |
| 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 `#` |
My personal package overlay for sharing my most commonly used derivations. Kept
up to date with Github workflows and npins. Contributions welcome.
## Usage
All packages in Nyxexprs are exposed in the flake outputs.
### Flakes
```nix
# flake.nix
inputs = {
# Add an input as such. Avoid adding "follows" lines if you would
# like to benefit from the binary cache.
nyxexprs.url = "github:notashelf/nyxexprs";
# ...
};
```
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.
### Binary Cache
Regardless of your setup,you may want to add the
@ -42,112 +45,15 @@ nix.settings = {
};
```
### NixOS/Home-manager (flakes)
It is as simple as adding a new entry to your inputs with the correct url.
```nix
# flake.nix
inputs = {
# ...
nyxexprs.url = "github:notashelf/nyxexprs";
# ...
};
```
After adding the input, you can consume the [exposed packages](#-packages) in
your system configuration. An example `flake.nix` would be as follows:
```nix
# 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`
```nix
{pkgs, inputs, ...}: {
# in case of home-manager, this will be home.packages
environment.systemPackages = [
inputs.nyxexprs.packages.${pkgs.system}.<packageName> # installs a package
];
}
```
### Nix
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.
```console
nix profile install github:notashelf/nyxexprs#<package>
```
### NixOS/Home-manager (no flakes)
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:
```nix
{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>
];
}
```
## 🔧 Contributing
PRs are always welcome.
## 🫂 Credits
The repository structure is mostly borrowed from
[@fufexan](https://github.com/fufexan)'s
[nix-gaming](https://github.com/fufexan/nix-gaming).
[@fufexan]: https://github.com/fufexan
[nix-gaming]: https://github.com/fufexan/nix-gaming
[^1]:
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.
The repository structure is mostly borrowed from [@fufexan] 's [nix-gaming]
repository. Thank you fuf!
## 📜 License
This repository (Nix, patches, ettc.) is released under EUPL v1.2. Please see
the [license file](./LICENSE) for more details.

View file

@ -7,7 +7,9 @@
in
fetchTarball {
url =
lock.nodes.${nodeName}.locked.url
lock.nodes.${
nodeName
}.locked.url
or "https://github.com/edolstra/flake-compat/archive/${
lock.nodes.${nodeName}.locked.rev
}.tar.gz";

BIN
flake.lock generated

Binary file not shown.

View file

@ -13,8 +13,10 @@ let
version = data.version;
# https://github.com/NixOS/nixpkgs/blob/0258808f5744ca980b9a1f24fe0b1e6f0fecee9c/lib/lists.nix#L295
range =
first: last: if first > last then [ ] else builtins.genList (n: first + n) (last - first + 1);
range = first: last:
if first > last
then []
else builtins.genList (n: first + n) (last - first + 1);
# https://github.com/NixOS/nixpkgs/blob/0258808f5744ca980b9a1f24fe0b1e6f0fecee9c/lib/strings.nix#L257
stringToCharacters = s: map (p: builtins.substring p 1 s) (range 0 (builtins.stringLength s - 1));
@ -27,47 +29,44 @@ let
# If the environment variable NPINS_OVERRIDE_${name} is set, then use
# the path directly as opposed to the fetched source.
# (Taken from Niv for compatibility)
mayOverride =
name: path:
let
mayOverride = name: path: let
envVarName = "NPINS_OVERRIDE_${saneName}";
saneName = stringAsChars (c: if (builtins.match "[a-zA-Z0-9]" c) == null then "_" else c) name;
saneName = stringAsChars (c:
if (builtins.match "[a-zA-Z0-9]" c) == null
then "_"
else c)
name;
ersatz = builtins.getEnv envVarName;
in
if ersatz == "" then
path
if ersatz == ""
then path
else
# this turns the string into an actual Nix path (for both absolute and
# relative paths)
builtins.trace "Overriding path of \"${name}\" with \"${ersatz}\" due to set \"${envVarName}\"" (
if builtins.substring 0 1 ersatz == "/" then
/. + ersatz
else
/. + builtins.getEnv "PWD" + "/${ersatz}"
if builtins.substring 0 1 ersatz == "/"
then /. + ersatz
else /. + builtins.getEnv "PWD" + "/${ersatz}"
);
mkSource =
name: spec:
assert spec ? type;
let
mkSource = name: spec:
assert spec ? type; let
path =
if spec.type == "Git" then
mkGitSource spec
else if spec.type == "GitRelease" then
mkGitSource spec
else if spec.type == "PyPi" then
mkPyPiSource spec
else if spec.type == "Channel" then
mkChannelSource spec
else if spec.type == "Tarball" then
mkTarballSource spec
else
builtins.throw "Unknown source type ${spec.type}";
if spec.type == "Git"
then mkGitSource spec
else if spec.type == "GitRelease"
then mkGitSource spec
else if spec.type == "PyPi"
then mkPyPiSource spec
else if spec.type == "Channel"
then mkChannelSource spec
else if spec.type == "Tarball"
then mkTarballSource spec
else builtins.throw "Unknown source type ${spec.type}";
in
spec // {outPath = mayOverride name path;};
mkGitSource =
{
mkGitSource = {
repository,
revision,
url ? null,
@ -79,32 +78,35 @@ let
assert repository ? type;
# At the moment, either it is a plain git repository (which has an url), or it is a GitHub/GitLab repository
# In the latter case, there we will always be an url to the tarball
if url != null && !submodules then
if url != null && !submodules
then
builtins.fetchTarball {
inherit url;
sha256 = hash; # FIXME: check nix version & use SRI hashes
}
else
let
else let
url =
if repository.type == "Git" then
repository.url
else if repository.type == "GitHub" then
"https://github.com/${repository.owner}/${repository.repo}.git"
else if repository.type == "GitLab" then
"${repository.server}/${repository.repo_path}.git"
else
throw "Unrecognized repository type ${repository.type}";
urlToName =
url: rev:
let
if repository.type == "Git"
then repository.url
else if repository.type == "GitHub"
then "https://github.com/${repository.owner}/${repository.repo}.git"
else if repository.type == "GitLab"
then "${repository.server}/${repository.repo_path}.git"
else throw "Unrecognized repository type ${repository.type}";
urlToName = url: rev: let
matched = builtins.match "^.*/([^/]*)(\\.git)?$" url;
short = builtins.substring 0 7 rev;
appendShort = if (builtins.match "[a-f0-9]*" rev) != null then "-${short}" else "";
in
"${if matched == null then "source" else builtins.head matched}${appendShort}";
appendShort =
if (builtins.match "[a-f0-9]*" rev) != null
then "-${short}"
else "";
in "${
if matched == null
then "source"
else builtins.head matched
}${appendShort}";
name = urlToName url revision;
in
builtins.fetchGit {
@ -114,22 +116,27 @@ let
inherit url submodules;
};
mkPyPiSource =
{ url, hash, ... }:
mkPyPiSource = {
url,
hash,
...
}:
builtins.fetchurl {
inherit url;
sha256 = hash;
};
mkChannelSource =
{ url, hash, ... }:
mkChannelSource = {
url,
hash,
...
}:
builtins.fetchTarball {
inherit url;
sha256 = hash;
};
mkTarballSource =
{
mkTarballSource = {
url,
locked_url ? url,
hash,
@ -140,7 +147,6 @@ let
sha256 = hash;
};
in
if version == 5 then
builtins.mapAttrs mkSource data.pins
else
throw "Unsupported format version ${toString version} in sources.json. Try running `npins upgrade`"
if version == 5
then builtins.mapAttrs mkSource data.pins
else throw "Unsupported format version ${toString version} in sources.json. Try running `npins upgrade`"

View file

@ -1,5 +1,21 @@
{
"pins": {
"ai-robots-txt": {
"type": "GitRelease",
"repository": {
"type": "GitHub",
"owner": "ai-robots-txt",
"repo": "ai.robots.txt"
},
"pre_releases": false,
"version_upper_bound": null,
"release_prefix": null,
"submodules": false,
"version": "v1.28",
"revision": "e0cdb278fbd243f554579fe5050850f124b286a8",
"url": "https://api.github.com/repos/ai-robots-txt/ai.robots.txt/tarball/v1.28",
"hash": "1lv5alddyk2wcqnsnb2x7i0n9m127mjmaa083im14a4hygw7d7r7"
},
"ani-cli": {
"type": "GitRelease",
"repository": {
@ -59,6 +75,22 @@
"url": null,
"hash": "037psx1j608hkl8d3d84ybyvh8fky82i1ihkpa0xnavqagnjc0fr"
},
"headscale-ui": {
"type": "GitRelease",
"repository": {
"type": "GitHub",
"owner": "gurucomputing",
"repo": "headscale-ui"
},
"pre_releases": false,
"version_upper_bound": null,
"release_prefix": null,
"submodules": false,
"version": "2025.03.21",
"revision": "84aec5f45a64d5537237f2fccdf86581df42726b",
"url": "https://api.github.com/repos/gurucomputing/headscale-ui/tarball/2025.03.21",
"hash": "1zs6f5da9d0a8vin98alfsdyip1av624yyl43kjyw88dicw78y3n"
},
"mov-cli": {
"type": "GitRelease",
"repository": {

View file

@ -0,0 +1,38 @@
{
lib,
stdenvNoCC,
fetchurl,
pins,
}: let
pin = pins.ai-robots-txt;
in
stdenvNoCC.mkDerivation (finalAttrs: {
pname = "ai-robots-txt";
inherit (pin) version;
src = fetchurl {
url = "https://github.com/ai-robots-txt/ai.robots.txt/releases/download/${finalAttrs.version}/robots.txt";
hash = "sha256-Cx01MI5Rss08lLgzwoppou0nqD0HxvfUbsa1NRVp8eQ=";
};
dontUnpack = true;
dontConfigure = true;
dontBuild = true;
installPhase = ''
runHook preInstall
mkdir -p $out/share
cp $src $out/share/robots.txt
runHook postInstall
'';
meta = {
description = "List of AI agents and robots to block";
homepage = "https://github.com/ai-robots-txt/ai.robots.txt";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [NotAShelf];
platforms = lib.platforms.all;
};
})

View file

@ -1,32 +0,0 @@
{
lib,
rustPlatform,
fetchFromGitHub,
pkg-config,
openssl,
...
}:
rustPlatform.buildRustPackage {
pname = "cloneit";
version = "0-unstable-2024-06-28";
src = fetchFromGitHub {
owner = "alok8bb";
repo = "cloneit";
rev = "6198556e810d964cc5938c446ef42fc21b55fe0b";
sha256 = "sha256-RP0/kquAlSwRMeB6cjvS5JB9qfdkT8IKLVxaxrmzJ+0=";
};
cargoHash = "sha256-XXcqmDPEQUm4YBqY5+06X55ym3o3RqE7fNSiR4n+iyc=";
nativeBuildInputs = [pkg-config];
buildInputs = [openssl];
meta = {
description = "CLI tool to download specific GitHub directories or files";
homepage = "https://github.com/alok8bb/cloneit";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [NotAShelf];
platforms = lib.platforms.linux;
};
}

37
pkgs/foot-git/package.nix Normal file
View file

@ -0,0 +1,37 @@
{
withAlphaPatch ? true,
lib,
fetchFromGitea,
foot,
pins,
date,
...
}:
foot.overrideAttrs (oldAttrs: let
pin = pins.foot;
in {
pname = "foot-transparent";
version = "0-unstable-${date}";
src = fetchFromGitea {
domain = "codeberg.org";
owner = "dnkl";
repo = "foot";
rev = pin.revision;
sha256 = pin.hash;
};
patches =
(oldAttrs.patches or [])
++ (lib.optionals withAlphaPatch [
# Thank you fazzi :)
# <https://codeberg.org/fazzi/foot/commit/bebc6f0ffd0d767f560ee50825a0b0fba197c90f.patch>
./patches/foot_fullscreen_alpha.patch
]);
meta = {
description = "An auto-upgrading version of FOot to ensure we are always up to dates";
mainProgram = "foot";
maintainers = with lib.maintainers; [NotAShelf];
};
})

View file

@ -0,0 +1,80 @@
From bebc6f0ffd0d767f560ee50825a0b0fba197c90f Mon Sep 17 00:00:00 2001
From: Fazzi <faaris.ansari@proton.me>
Date: Fri, 18 Apr 2025 21:15:19 +0100
Subject: [PATCH] config: add transparent_fullscreen option
---
config.c | 5 +++++
config.h | 2 ++
render.c | 8 +++++---
3 files changed, 12 insertions(+), 3 deletions(-)
diff --git a/config.c b/config.c
index 347cc1ec..fa081ce7 100644
--- a/config.c
+++ b/config.c
@@ -1095,6 +1095,10 @@ parse_section_main(struct context *ctx)
return true;
}
+ else if (streq(key, "transparent-fullscreen")) {
+ return value_to_bool(ctx, &conf->transparent_fullscreen);
+ }
+
else {
LOG_CONTEXTUAL_ERR("not a valid option: %s", key);
return false;
@@ -3347,6 +3351,7 @@ config_load(struct config *conf, const char *conf_path,
},
.multiplier = 3.,
},
+ .transparent_fullscreen = false,
.colors = {
.fg = default_foreground,
.bg = default_background,
diff --git a/config.h b/config.h
index 2dec82c1..542e22e6 100644
--- a/config.h
+++ b/config.h
@@ -167,6 +167,8 @@ struct config {
enum { STARTUP_WINDOWED, STARTUP_MAXIMIZED, STARTUP_FULLSCREEN } startup_mode;
+ bool transparent_fullscreen;
+
bool dpi_aware;
enum {GAMMA_CORRECT_DISABLED,
GAMMA_CORRECT_ENABLED,
diff --git a/render.c b/render.c
index 0e403949..2040d5be 100644
--- a/render.c
+++ b/render.c
@@ -744,7 +744,8 @@ render_cell(struct terminal *term, pixman_image_t *pix,
_bg = swap;
}
- if (!term->window->is_fullscreen && term->colors.alpha != 0xffff) {
+ if ((!term->window->is_fullscreen || term->conf->transparent_fullscreen)
+ && term->colors.alpha != 0xffff) {
switch (term->conf->colors.alpha_mode) {
case ALPHA_MODE_DEFAULT: {
if (cell->attrs.bg_src == COLOR_DEFAULT) {
@@ -1215,7 +1216,7 @@ render_margin(struct terminal *term, struct buffer *buf,
const uint32_t _bg = !term->reverse ? term->colors.bg : term->colors.fg;
uint16_t alpha = term->colors.alpha;
- if (term->window->is_fullscreen) {
+ if (term->window->is_fullscreen && !term->conf->transparent_fullscreen) {
/* Disable alpha in fullscreen - see render_cell() for details */
alpha = 0xffff;
}
@@ -3244,7 +3245,8 @@ grid_render(struct terminal *term)
xassert(term->height > 0);
struct buffer_chain *chain = term->render.chains.grid;
- bool use_alpha = !term->window->is_fullscreen &&
+ bool use_alpha = (!term->window->is_fullscreen ||
+ term->conf->transparent_fullscreen) &&
term->colors.alpha != 0xffff;
struct buffer *buf = shm_get_buffer(
chain, term->width, term->height, use_alpha);

View file

@ -1,113 +0,0 @@
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 7ed4bd7a..013ff1be 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -913,7 +913,7 @@
instead of the one least recently.
* Starlight theme (the default theme) updated to [V4][starlight-v4]
* Background transparency (alpha) is now disabled in fullscreened
- windows ([#1416][1416]).
+ windows ([#1416][1416]) by default but can be enabled with `fullscreen_alpha`.
* Foot server systemd units now use the standard
graphical-session.target ([#1281][1281]).
* If `$XDG_RUNTIME_DIR/foot-$WAYLAND_DISPLAY.sock` does not exist,
diff --git a/INSTALL.md b/INSTALL.md
index 7df8d0b8..0f7f1aef 100644
--- a/INSTALL.md
+++ b/INSTALL.md
@@ -148,6 +148,7 @@ Available compile-time options:
| `-Ddocs` | feature | `auto` | Builds and install documentation | scdoc |
| `-Dtests` | bool | `true` | Build tests (adds a `ninja test` build target) | None |
| `-Dime` | bool | `true` | Enables IME support | None |
+| `-Dfullscreen-alpha` | bool | `false` | Enables transparency on fullscreen windows | None |
| `-Dgrapheme-clustering` | feature | `auto` | Enables grapheme clustering | libutf8proc |
| `-Dterminfo` | feature | `enabled` | Build and install terminfo files | tic (ncurses) |
| `-Ddefault-terminfo` | string | `foot` | Default value of `TERM` | None |
diff --git a/meson.build b/meson.build
index e85d95e5..bf9b021a 100644
--- a/meson.build
+++ b/meson.build
@@ -82,6 +82,9 @@ add_project_arguments(
(get_option('b_pgo') == 'use'
? ['-DFOOT_PGO_ENABLED=1']
: []) +
+ (get_option('fullscreen-alpha')
+ ? ['-DFOOT_FULLSCREEN_ALPHA_ENABLED=1']
+ : []) +
cc.get_supported_arguments(
['-pedantic',
'-fstrict-aliasing',
@@ -414,6 +417,7 @@ summary(
'Documentation': scdoc.found(),
'Themes': get_option('themes'),
'IME': get_option('ime'),
+ 'Fullscreen alpha': get_option('fullscreen-alpha'),
'Grapheme clustering': utf8proc.found(),
'utmp backend': utmp_backend,
'utmp helper default path': utmp_default_helper_path,
diff --git a/meson_options.txt b/meson_options.txt
index ab7a07be..30078102 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -7,6 +7,9 @@ option('themes', type: 'boolean', value: true,
option('ime', type: 'boolean', value: true,
description: 'IME (Input Method Editor) support')
+option('fullscreen-alpha', type: 'boolean', value: false,
+ description: 'Enables transparency on fullscreen windows')
+
option('grapheme-clustering', type: 'feature',
description: 'Enables grapheme clustering using libutf8proc. Requires fcft with harfbuzz support to be useful.')
diff --git a/render.c b/render.c
index 4975394f..eddf465a 100644
--- a/render.c
+++ b/render.c
@@ -746,6 +746,13 @@ render_cell(struct terminal *term, pixman_image_t *pix,
}
else if (cell->attrs.bg_src == COLOR_DEFAULT) {
+#if defined(FOOT_FULLSCREEN_ALPHA_ENABLED) && FOOT_FULLSCREEN_ALPHA_ENABLED
+ /*
+ * Note: I don't care about the stupid ass wayland
+ * protocol I want transparent fullscreen windows.
+ */
+ alpha = term->colors.alpha;
+#else
if (term->window->is_fullscreen) {
/*
* Note: disable transparency when fullscreened.
@@ -783,6 +790,7 @@ render_cell(struct terminal *term, pixman_image_t *pix,
} else {
alpha = term->colors.alpha;
}
+#endif
}
}
@@ -1191,10 +1199,12 @@ render_margin(struct terminal *term, struct buffer *buf,
const uint32_t _bg = !term->reverse ? term->colors.bg : term->colors.fg;
uint16_t alpha = term->colors.alpha;
+#if !defined(FOOT_FULLSCREEN_ALPHA_ENABLED) || !FOOT_FULLSCREEN_ALPHA_ENABLED
if (term->window->is_fullscreen) {
/* Disable alpha in fullscreen - see render_cell() for details */
alpha = 0xffff;
}
+#endif
pixman_color_t bg = color_hex_to_pixman_with_alpha(_bg, alpha, gamma_correct);
@@ -3220,8 +3230,12 @@ grid_render(struct terminal *term)
xassert(term->height > 0);
struct buffer_chain *chain = term->render.chains.grid;
+#if defined(FOOT_FULLSCREEN_ALPHA_ENABLED) && FOOT_FULLSCREEN_ALPHA_ENABLED
+ bool use_alpha = term->colors.alpha != 0xffff;
+#else
bool use_alpha = !term->window->is_fullscreen &&
term->colors.alpha != 0xffff;
+#endif
struct buffer *buf = shm_get_buffer(
chain, term->width, term->height, use_alpha);

View file

@ -1,45 +0,0 @@
{
lib,
fetchFromGitea,
fcft,
foot,
pins,
date,
...
}:
foot.overrideAttrs (prev: let
pin = pins.foot;
in {
pname = "foot-transparent";
version = "0-unstable-${date}";
src = fetchFromGitea {
domain = "codeberg.org";
owner = "dnkl";
repo = "foot";
rev = pin.revision;
sha256 = pin.hash;
};
patches = (prev.patches or []) ++ [./0001-fullscreen-transparency.patch];
mesonFlags = (prev.mesonFlags or []) ++ ["-Dfullscreen-alpha=true"];
nativeBuildInputs =
(prev.nativeBuildInputs or [])
++ [
(fcft.overrideAttrs {
src = fetchFromGitea {
domain = "codeberg.org";
owner = "dnkl";
repo = "fcft";
tag = "3.3.1";
hash = "sha256-qgNNowWQhiu6pr9bmWbBo3mHgdkmNpDHDBeTidk32SE=";
};
})
];
meta = {
description = "Patched version of Foor terminal emulator that brings back fullscreen transparency";
mainProgram = "foot";
maintainers = with lib.maintainers; [NotAShelf];
};
})

View file

@ -1,22 +1,27 @@
{
lib,
stdenvNoCC,
fetchzip,
lib,
pins,
}: let
pname = "headscale-ui";
version = "0-unstable-2024-02-24";
pin = pins.headscale-ui;
in
stdenvNoCC.mkDerivation {
inherit pname version;
stdenvNoCC.mkDerivation (finalAttrs: {
pname = "headscale-ui";
inherit (pin) version;
src = fetchzip {
url = "https://github.com/gurucomputing/headscale-ui/releases/download/2024.02.24-beta1/headscale-ui.zip";
sha256 = "sha256-HHzxGlAtVXs0jfNJ/khbNA/aQsGKvii1Hm+8hlJQYYY=";
url = "https://github.com/gurucomputing/headscale-ui/releases/download/${finalAttrs.version}/headscale-ui.zip";
sha256 = "sha256-Autk8D9G1Ott2ahbgJ7mGZKDChsSDgfrOhnurNiIdsQ=";
};
installPhase = ''
runHook preInstall
ls -lah
mkdir -p $out/share
cp -r ./* $out/share
cp -rvf ./* $out/share
runHook postInstall
'';
@ -26,4 +31,4 @@ in
license = [lib.licenses.bsd3];
maintainers = with lib.maintainers; [NotAShelf];
};
}
})

View file

@ -1,33 +0,0 @@
{
lib,
stdenvNoCC,
fetchurl,
}:
stdenvNoCC.mkDerivation (finalAttrs: {
pname = "ai-robots-txt";
version = "1.25";
src = fetchurl {
url = "https://github.com/ai-robots-txt/ai.robots.txt/releases/download/v${finalAttrs.version}/robots.txt";
hash = "sha256-r4C+RDNpzfokBkvTG1v1D9gbu5zpC91+onQFYw05lZE=";
};
dontUnpack = true;
dontConfigure = true;
dontBuild = true;
installPhase = ''
runHook preInstall
cp $src $out
runHook postInstall
'';
meta = {
description = "List of AI agents and robots to block";
homepage = "https://github.com/ai-robots-txt/ai.robots.txt";
license = lib.licenses.bsd3;
maintainers = with lib.maintainers; [NotAShelf];
platforms = lib.platforms.all;
};
})