beginning of bigger restructure, m3ta-nixpkgs input

This commit is contained in:
m3tam3re
2025-10-03 14:55:24 +02:00
parent 35becfdea4
commit b66553888b
25 changed files with 261 additions and 731 deletions

92
flake.lock generated
View File

@@ -117,6 +117,27 @@
"url": "https://code.m3tam3re.com/m3tam3re/dotfiles.git"
}
},
"flake-parts": {
"inputs": {
"nixpkgs-lib": [
"nur",
"nixpkgs"
]
},
"locked": {
"lastModified": 1733312601,
"narHash": "sha256-4pDvzqnegAfRkPwO3wmwBhVi/Sye1mzps0zHWYnP88c=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "205b12d8b7cd4802fbcb8e8ef6a0f1408781a4f9",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "flake-parts",
"type": "github"
}
},
"flake-utils": {
"inputs": {
"systems": "systems_2"
@@ -239,10 +260,28 @@
"type": "github"
}
},
"m3ta-nixpkgs": {
"inputs": {
"nixpkgs": "nixpkgs_3"
},
"locked": {
"lastModified": 1759490685,
"narHash": "sha256-UbJucUVnIj0EmNHF6TaoMRRvKFk/XcwJTEKmoHj44ts=",
"ref": "refs/heads/master",
"rev": "cb770e18c1a3c4a762ddfc733cccdcb67f409958",
"revCount": 3,
"type": "git",
"url": "https://code.m3ta.dev/m3tam3re/nixpkgs"
},
"original": {
"type": "git",
"url": "https://code.m3ta.dev/m3tam3re/nixpkgs"
}
},
"nix-ai-tools": {
"inputs": {
"blueprint": "blueprint",
"nixpkgs": "nixpkgs_3",
"nixpkgs": "nixpkgs_4",
"treefmt-nix": "treefmt-nix"
},
"locked": {
@@ -296,7 +335,7 @@
"nixos-generators": {
"inputs": {
"nixlib": "nixlib",
"nixpkgs": "nixpkgs_4"
"nixpkgs": "nixpkgs_5"
},
"locked": {
"lastModified": 1751903740,
@@ -440,6 +479,22 @@
}
},
"nixpkgs_3": {
"locked": {
"lastModified": 1759381078,
"narHash": "sha256-gTrEEp5gEspIcCOx9PD8kMaF1iEmfBcTbO0Jag2QhQs=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "7df7ff7d8e00218376575f0acdcc5d66741351ee",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_4": {
"locked": {
"lastModified": 1758690382,
"narHash": "sha256-NY3kSorgqE5LMm1LqNwGne3ZLMF2/ILgLpFr1fS4X3o=",
@@ -455,7 +510,7 @@
"type": "github"
}
},
"nixpkgs_4": {
"nixpkgs_5": {
"locked": {
"lastModified": 1736657626,
"narHash": "sha256-FWlPMUzp0lkQBdhKlPqtQdqmp+/C+1MBiEytaYfrCTY=",
@@ -471,7 +526,7 @@
"type": "github"
}
},
"nixpkgs_5": {
"nixpkgs_6": {
"locked": {
"lastModified": 1757745802,
"narHash": "sha256-hLEO2TPj55KcUFUU1vgtHE9UEIOjRcH/4QbmfHNF820=",
@@ -487,7 +542,7 @@
"type": "github"
}
},
"nixpkgs_6": {
"nixpkgs_7": {
"locked": {
"lastModified": 1710272261,
"narHash": "sha256-g0bDwXFmTE7uGDOs9HcJsfLFhH7fOsASbAuOzDC+fhQ=",
@@ -503,6 +558,27 @@
"type": "github"
}
},
"nur": {
"inputs": {
"flake-parts": "flake-parts",
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1759475326,
"narHash": "sha256-bXXGDZQm05KmaSf/TDqAOkPK4i6Ba5y12aL6/hcJiro=",
"owner": "nix-community",
"repo": "NUR",
"rev": "1d38cb6e7f916b7a31f4d8ef1995ba9fbaf93380",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "NUR",
"type": "github"
}
},
"root": {
"inputs": {
"agenix": "agenix",
@@ -510,22 +586,24 @@
"dotfiles": "dotfiles",
"home-manager": "home-manager_2",
"hyprpanel": "hyprpanel",
"m3ta-nixpkgs": "m3ta-nixpkgs",
"nix-ai-tools": "nix-ai-tools",
"nix-colors": "nix-colors",
"nixos-generators": "nixos-generators",
"nixpkgs": "nixpkgs_5",
"nixpkgs": "nixpkgs_6",
"nixpkgs-45570c2": "nixpkgs-45570c2",
"nixpkgs-9e58ed7": "nixpkgs-9e58ed7",
"nixpkgs-locked": "nixpkgs-locked",
"nixpkgs-master": "nixpkgs-master",
"nixpkgs-stable": "nixpkgs-stable",
"nur": "nur",
"rose-pine-hyprcursor": "rose-pine-hyprcursor"
}
},
"rose-pine-hyprcursor": {
"inputs": {
"hyprlang": "hyprlang",
"nixpkgs": "nixpkgs_6",
"nixpkgs": "nixpkgs_7",
"utils": "utils"
},
"locked": {

View File

@@ -22,6 +22,12 @@
nixpkgs-9e58ed7.url = "github:nixos/nixpkgs/9e58ed7ba759d81c98f033b7f5eba21ca68f53b0";
nixpkgs-master.url = "github:nixos/nixpkgs/master";
m3ta-nixpkgs.url = "git+https://code.m3ta.dev/m3tam3re/nixpkgs";
nur = {
url = "github:nix-community/NUR";
inputs.nixpkgs.follows = "nixpkgs";
};
agenix.url = "github:ryantm/agenix";
disko = {
@@ -50,6 +56,8 @@
dotfiles,
home-manager,
nixpkgs,
m3ta-nixpkgs,
nur,
...
} @ inputs: let
inherit (self) outputs;
@@ -62,28 +70,8 @@
];
forAllSystems = nixpkgs.lib.genAttrs systems;
in {
packages = let
# Import the regular packages for all systems
regularPkgs = forAllSystems (
system:
import ./pkgs nixpkgs.legacyPackages.${system}
);
in
regularPkgs
// {
x86_64-linux =
regularPkgs.x86_64-linux
// {
# Build a QEMU image compatible with Proxmox using nixos-generators
proxmox-hermes-image = inputs.nixos-generators.nixosGenerate {
system = "x86_64-linux";
format = "proxmox";
modules = [
./hosts/m3-hermes/default.nix
];
};
};
};
packages =
forAllSystems (system: import ./pkgs nixpkgs.legacyPackages.${system});
overlays = import ./overlays {inherit inputs outputs;};
homeManagerModules = import ./modules/home-manager;
@@ -96,6 +84,7 @@
modules = [
./hosts/m3-ares
agenix.nixosModules.default
m3ta-nixpkgs.nixosModules.default
];
};
m3-atlas = nixpkgs.lib.nixosSystem {
@@ -105,6 +94,7 @@
./hosts/m3-atlas
inputs.disko.nixosModules.disko
agenix.nixosModules.default
m3ta-nixpkgs.nixosModules.default
];
};
m3-kratos = nixpkgs.lib.nixosSystem {
@@ -115,6 +105,8 @@
modules = [
./hosts/m3-kratos
agenix.nixosModules.default
nur.modules.nixos.default
m3ta-nixpkgs.nixosModules.default
];
};
m3-helios = nixpkgs.lib.nixosSystem {
@@ -124,6 +116,7 @@
./hosts/m3-helios
inputs.disko.nixosModules.disko
agenix.nixosModules.default
m3ta-nixpkgs.nixosModules.default
];
};
};

View File

@@ -6,22 +6,25 @@
...
}: {
imports = [
(import
../../modules/home-manager/zellij-ps.nix)
inputs.nix-colors.homeManagerModules.default
inputs.m3ta-nixpkgs.homeManagerModules.default
]; #imports = builtins.attrValues outputs.homeManagerModules;
nixpkgs = {
# You can add overlays here
overlays = [
# Add overlays your own flake exports (from overlays and pkgs dir):
outputs.overlays.additions
outputs.overlays.modifications
#outputs.overlays.additions
#outputs.overlays.modifications
outputs.overlays.temp-packages
outputs.overlays.stable-packages
outputs.overlays.locked-packages
outputs.overlays.pinned-packages
outputs.overlays.master-packages
inputs.nur.overlays.default
inputs.m3ta-nixpkgs.overlays.default
inputs.m3ta-nixpkgs.overlays.modifications
# You can also add overlays exported from other flakes:
# neovim-nightly-overlay.overlays.default

View File

@@ -26,15 +26,15 @@
enableNushellIntegration = true;
};
programs.neovim = {
enable = true;
defaultEditor = true;
viAlias = true;
vimAlias = true;
vimdiffAlias = true;
withNodeJs = true;
withPython3 = true;
};
# programs.neovim = {
# enable = true;
# defaultEditor = true;
# viAlias = true;
# vimAlias = true;
# vimdiffAlias = true;
# withNodeJs = true;
# withPython3 = true;
# };
programs.bat = {
enable = true;

View File

@@ -3,7 +3,7 @@
devpod
#devpod-desktop
code2prompt
crush
nur.repos.charmbracelet.crush
(python3.withPackages (ps:
with ps; [
pip

View File

@@ -15,122 +15,125 @@ in {
bruno
insomnia
];
programs.zed-editor = {
enable = true;
userSettings = {
features = {
inline_prediction_provider = "zed";
edit_prediction_provider = "zed";
copilot = false;
};
telemetry = {
metrics = false;
};
lsp = {
rust_analyzer = {
binary = {path_lookup = true;};
};
};
languages = {
Nix = {
language_servers = ["nixd"];
formatter = {
external = {
command = "alejandra";
arguments = ["-q" "-"];
};
};
};
Python = {
language_servers = ["pyrefly"];
formatter = {
external = {
command = "black";
arguments = ["-"];
};
};
};
};
lsp = {
"pyrefly" = {
command = {
path = "pyrefly";
args = ["--lsp"];
env = {};
};
settings = {};
};
};
context_servers = {
"some-context-server" = {
command = {
path = "some-command";
args = ["arg-1" "arg-2"];
env = {};
};
settings = {};
};
};
assistant = {
version = "2";
default_model = {
provider = "anthropic";
model = "Claude 3.7 Sonnet";
};
};
language_models = {
anthropic = {
version = "1";
api_url = "https://api.anthropic.com";
};
openai = {
version = "1";
api_url = "https://api.openai.com/v1";
};
ollama = {
api_url = "http://localhost:11434";
};
};
ssh_connections = [
{
host = "152.53.85.162";
nickname = "m3-atlas";
args = ["-i" "~/.ssh/m3tam3re"];
}
{
host = "95.217.189.186";
port = 2222;
nickname = "self-host-playbook";
args = ["-i" "~/.ssh/self-host-playbook"];
"projects" = [
{
paths = ["/etc/nixos/current-systemconfig"];
}
];
}
{
host = "192.168.1.152";
port = 22;
nickname = "m3-daedalus";
args = ["-i" "~/.ssh/m3tam3re"];
"projects" = [
{
paths = ["/home/m3tam3re/home-config"];
}
];
}
];
auto_update = false;
format_on_save = "on";
vim_mode = true;
load_direnv = "shell_hook";
theme = "Dracula";
buffer_font_family = "FiraCode Nerd Font";
ui_font_size = 16;
buffer_font_size = 16;
show_edit_predictions = true;
};
coding.editors = {
neovim.enable = true;
zed.enable = true;
};
# programs.zed-editor = {
# enable = true;
# userSettings = {
# features = {
# inline_prediction_provider = "zed";
# edit_prediction_provider = "zed";
# copilot = false;
# };
# telemetry = {
# metrics = false;
# };
# lsp = {
# rust_analyzer = {
# binary = {path_lookup = true;};
# };
# };
# languages = {
# Nix = {
# language_servers = ["nixd"];
# formatter = {
# external = {
# command = "alejandra";
# arguments = ["-q" "-"];
# };
# };
# };
# Python = {
# language_servers = ["pyrefly"];
# formatter = {
# external = {
# command = "black";
# arguments = ["-"];
# };
# };
# };
# };
# lsp = {
# "pyrefly" = {
# command = {
# path = "pyrefly";
# args = ["--lsp"];
# env = {};
# };
# settings = {};
# };
# };
# context_servers = {
# "some-context-server" = {
# command = {
# path = "some-command";
# args = ["arg-1" "arg-2"];
# env = {};
# };
# settings = {};
# };
# };
# assistant = {
# version = "2";
# default_model = {
# provider = "anthropic";
# model = "Claude 3.7 Sonnet";
# };
# };
# language_models = {
# anthropic = {
# version = "1";
# api_url = "https://api.anthropic.com";
# };
# openai = {
# version = "1";
# api_url = "https://api.openai.com/v1";
# };
# ollama = {
# api_url = "http://localhost:11434";
# };
# };
# ssh_connections = [
# {
# host = "152.53.85.162";
# nickname = "m3-atlas";
# args = ["-i" "~/.ssh/m3tam3re"];
# }
# {
# host = "95.217.189.186";
# port = 2222;
# nickname = "self-host-playbook";
# args = ["-i" "~/.ssh/self-host-playbook"];
# "projects" = [
# {
# paths = ["/etc/nixos/current-systemconfig"];
# }
# ];
# }
# {
# host = "192.168.1.152";
# port = 22;
# nickname = "m3-daedalus";
# args = ["-i" "~/.ssh/m3tam3re"];
# "projects" = [
# {
# paths = ["/home/m3tam3re/home-config"];
# }
# ];
# }
# ];
# auto_update = false;
# format_on_save = "on";
# vim_mode = true;
# load_direnv = "shell_hook";
# theme = "Dracula";
# buffer_font_family = "FiraCode Nerd Font";
# ui_font_size = 16;
# buffer_font_size = 16;
# show_edit_predictions = true;
# };
# };
};
}

View File

@@ -143,8 +143,6 @@
# gsettings-desktop-schemas
# graphviz
# ksnip
msty
msty-sidecar
msty-studio
nwg-look
# pamixer

View File

@@ -24,7 +24,6 @@
# The home.packages option allows you to install Nix packages into your
# environment.
home.packages = with pkgs; [
aider-chat-env
libgtop
# # Adds the 'hello' command to your environment. It prints a friendly
# # "Hello, world!" when run.
@@ -178,11 +177,6 @@
user = "m3tam3re";
identityFile = "~/.ssh/m3tam3re";
};
"m3-hermes" = {
hostname = "95.216.214.142";
user = "m3tam3re";
identityFile = "~/.ssh/m3tam3re";
};
"m3-helios" = {
hostname = "192.168.178.210";
user = "m3tam3re";

View File

@@ -25,13 +25,16 @@
# You can add overlays here
overlays = [
# Add overlays your own flake exports (from overlays and pkgs dir):
outputs.overlays.additions
outputs.overlays.modifications
#outputs.overlays.additions
#outputs.overlays.modifications
outputs.overlays.stable-packages
outputs.overlays.locked-packages
outputs.overlays.pinned-packages
outputs.overlays.master-packages
inputs.m3ta-nixpkgs.overlays.default
inputs.m3ta-nixpkgs.overlays.modifications
# You can also add overlays exported from other flakes:
# neovim-nightly-overlay.overlays.default

View File

@@ -1,26 +0,0 @@
{modulesPath, ...}: {
imports = [
"${modulesPath}/profiles/qemu-guest.nix"
];
system.stateVersion = "24.11";
services.cloud-init = {
enable = true;
};
users.users.root.initialPassword = "nixos";
services.openssh = {
enable = true;
};
networking = {
useNetworkd = true;
firewall.enable = true;
};
systemd.network.enable = true;
console.keyMap = "us";
}

View File

@@ -28,7 +28,6 @@
obs-vaapi
# obs-vertical-canvas
obs-vkcapture
obs-webkitgtk
wlrobs
];
};

View File

@@ -1,3 +1,3 @@
{
zellij-ps = import ./zellij-ps.nix;
#zellij-ps = import ./zellij-ps.nix;
}

View File

@@ -1,38 +1,30 @@
{inputs, ...}: {
# This one brings our custom packages from the 'pkgs' directory
additions = final: prev:
(import ../pkgs {pkgs = final;})
# // (inputs.hyprpanel.overlay final prev)
// {rose-pine-hyprcursor = inputs.rose-pine-hyprcursor.packages.${prev.system}.default;}
// {
crush = inputs.nix-ai-tools.packages.${prev.system}.crush;
};
# additions = final: prev:
# (import ../pkgs {pkgs = final;})
# // {rose-pine-hyprcursor = inputs.rose-pine-hyprcursor.packages.${prev.system}.default;};
# This one contains whatever you want to overlay
# You can change versions, add patches, set compilation flags, anything really.
# https://nixos.wiki/wiki/Overlays
modifications = final: prev: {
n8n = import ./mods/n8n.nix {inherit prev;};
brave = prev.brave.override {
commandLineArgs = "--password-store=gnome-libsecret";
};
# modifications = final: prev: {
# n8n = import ./mods/n8n.nix {inherit prev;};
# nodejs_24 = inputs.nixpkgs-stable.legacyPackages.${prev.system}.nodejs_24;
# paperless-ngx = inputs.nixpkgs-45570c2.legacyPackages.${prev.system}.paperless-ngx;
# anytype-heart = inputs.nixpkgs-9e58ed7.legacyPackages.${prev.system}.anytype-heart;
# trezord = inputs.nixpkgs-2744d98.legacyPackages.${prev.system}.trezord;
# mesa = inputs.nixpkgs-master.legacyPackages.${prev.system}.mesa;
# hyprpanel = inputs.hyprpanel.packages.${prev.system}.default.overrideAttrs (prev: {
# version = "latest"; # or whatever version you want
# src = final.fetchFromGitHub {
# owner = "Jas-SinghFSU";
# repo = "HyprPanel";
# rev = "master"; # or a specific commit hash
# hash = "sha256-l623fIVhVCU/ylbBmohAtQNbK0YrWlEny0sC/vBJ+dU=";
# };
# });
};
# brave = prev.brave.override {
# commandLineArgs = "--password-store=gnome-libsecret";
# };
# hyprpanel = inputs.hyprpanel.packages.${prev.system}.default.overrideAttrs (prev: {
# version = "latest"; # or whatever version you want
# src = final.fetchFromGitHub {
# owner = "Jas-SinghFSU";
# repo = "HyprPanel";
# rev = "master"; # or a specific commit hash
# hash = "sha256-l623fIVhVCU/ylbBmohAtQNbK0YrWlEny0sC/vBJ+dU=";
# };
# });
# };
temp-packages = final: _prev: {
temp = import inputs.nixpkgs-9e9486b {

View File

@@ -1,26 +0,0 @@
{prev}:
prev.n8n.overrideAttrs (oldAttrs: rec {
version = "1.112.6";
src = prev.fetchFromGitHub {
owner = "n8n-io";
repo = "n8n";
rev = "n8n@${version}";
hash = "";
};
pnpmDeps = prev.pnpm_10.fetchDeps {
pname = oldAttrs.pname;
inherit version src;
fetcherVersion = 1;
hash = "";
};
nativeBuildInputs =
builtins.map
(input:
if input == prev.pnpm_9.configHook
then prev.pnpm_10.configHook
else input)
oldAttrs.nativeBuildInputs;
})

View File

@@ -1,56 +0,0 @@
{
lib,
stdenv,
python3,
zlib,
libffi,
makeWrapper,
}: let
pythonEnv = python3.withPackages (ps:
with ps; [
pip
virtualenv
]);
in
stdenv.mkDerivation rec {
pname = "aider-chat-env";
version = "0.1.0";
src = ./.;
nativeBuildInputs = [makeWrapper];
buildInputs = [pythonEnv zlib libffi];
installPhase = ''
mkdir -p $out/bin
cat > $out/bin/aider-chat-env <<EOF
#!/bin/sh
VENV_DIR="\$HOME/.aider-chat-venv"
if [ ! -d "\$VENV_DIR" ]; then
echo "Creating new virtual environment in \$VENV_DIR..."
${pythonEnv}/bin/python -m venv "\$VENV_DIR"
source "\$VENV_DIR/bin/activate"
# Upgrade pip first
python -m pip install --no-cache-dir --upgrade pip
# Install aider-chat
python -m pip install --no-cache-dir aider-chat
else
source "\$VENV_DIR/bin/activate"
fi
exec "\$SHELL"
EOF
chmod +x $out/bin/aider-chat-env
'';
postFixup = ''
wrapProgram $out/bin/aider-chat-env \
--prefix PATH : ${lib.makeBinPath buildInputs} \
--prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath [stdenv.cc.cc.lib zlib libffi]}
'';
meta = with lib; {
description = "Python environment with aider-chat";
license = licenses.mit;
platforms = platforms.all;
};
}

View File

@@ -1,36 +0,0 @@
{
lib,
fetchFromGitHub,
rustPlatform,
pkg-config,
perl,
openssl,
}:
rustPlatform.buildRustPackage rec {
pname = "code2prompt";
version = "3.0.2";
src = fetchFromGitHub {
owner = "mufeedvh";
repo = "code2prompt";
rev = "v${version}";
hash = "sha256-9YbsrbExRFbsEz2GifklmUGp3YlsEUOi25+P5vPK8fs=";
};
cargoLock = {
lockFile = src + "/Cargo.lock";
};
buildAndTestSubdir = "crates/code2prompt";
nativeBuildInputs = [pkg-config perl];
buildInputs = [openssl];
meta = {
description = "A CLI tool that converts your codebase into a single LLM prompt with a source tree, prompt templating, and token counting";
homepage = "https://github.com/mufeedvh/code2prompt";
license = lib.licenses.mit;
mainProgram = "code2prompt";
};
}

View File

@@ -1,13 +0,0 @@
{pkgs, ...}: {
# Define your custom packages here
hyprpaper-random = pkgs.callPackage ./hyprpaper-random {};
launch-webapp = pkgs.callPackage ./launch-webapp/default.nix {};
msty = pkgs.callPackage ./msty {};
msty-sidecar = pkgs.callPackage ./msty-sidecar {};
msty-studio = pkgs.callPackage ./msty-studio {};
tuxedo-backlight = pkgs.callPackage ./tuxedo-backlight {};
zellij-ps = pkgs.callPackage ./zellij-ps {};
aider-chat-env = pkgs.callPackage ./aider-chat-env {};
code2prompt = pkgs.callPackage ./code2prompt {};
pomodoro-timer = pkgs.callPackage ./pomodoro-timer {};
}

View File

@@ -1,72 +0,0 @@
{
lib,
stdenv,
writeShellScriptBin,
fd,
hyprland,
coreutils,
gawk,
}: let
script = writeShellScriptBin "hyprpaper-random" ''
#!/usr/bin/env bash
set -euo pipefail
# Directory (override with WALLPAPER_DIR)
DIR="''${WALLPAPER_DIR:-''${XDG_CONFIG_HOME:-$HOME/.config}/hypr/wallpapers}"
HYPRCTL="${hyprland}/bin/hyprctl"
FD="${fd}/bin/fd"
SHUF="${coreutils}/bin/shuf"
TR="${coreutils}/bin/tr"
AWK="${gawk}/bin/awk"
# Pick one random image (null-safe)
WALLPAPER="$(
"$FD" . "$DIR" -t f -e jpg -e jpeg -e png -e webp -e avif -0 --follow --hidden \
| "$SHUF" -z -n1 \
| "$TR" -d '\0'
)"
if [[ -z "''${WALLPAPER:-}" ]]; then
echo "No wallpapers found in: $DIR" >&2
exit 1
fi
# Preload so hyprpaper can use it
"$HYPRCTL" hyprpaper preload "$WALLPAPER" >/dev/null 2>&1 || true
# Apply to all monitors
"$HYPRCTL" monitors \
| "$AWK" '/^Monitor /{print $2}' \
| while IFS= read -r mon; do
[ -n "$mon" ] && "$HYPRCTL" hyprpaper wallpaper "$mon,$WALLPAPER"
done
exit 0
'';
in
stdenv.mkDerivation {
pname = "hyprpaper-random";
version = "0.1.1";
dontUnpack = true;
buildInputs = [
fd
hyprland
coreutils
gawk
];
installPhase = ''
mkdir -p "$out/bin"
ln -s ${script}/bin/hyprpaper-random "$out/bin/hyprpaper-random"
'';
meta = with lib; {
description = "Minimal random wallpaper setter for Hyprpaper";
license = licenses.mit;
platforms = platforms.linux;
mainProgram = "hyprpaper-random";
};
}

View File

@@ -1,41 +0,0 @@
{
lib,
stdenv,
writeShellScriptBin,
}: let
launcher = writeShellScriptBin "launch-webapp" ''
#!/usr/bin/env bash
browser=$(xdg-settings get default-web-browser)
case "$browser" in
google-chrome*) browser_bin="google-chrome" ;;
brave-browser*) browser_bin="brave-browser" ;;
microsoft-edge*) browser_bin="microsoft-edge" ;;
opera*) browser_bin="opera" ;;
vivaldi*) browser_bin="vivaldi" ;;
*) browser_bin="chromium" ;;
esac
exec_cmd="/etc/profiles/per-user/$USER/bin/$browser_bin"
exec setsid uwsm app -- "$exec_cmd" --app="$1" ''${@:2}
'';
in
stdenv.mkDerivation {
pname = "launch-webapp";
version = "0.1.0";
dontUnpack = true;
installPhase = ''
mkdir -p $out/bin
ln -s ${launcher}/bin/launch-webapp $out/bin/launch-webapp
'';
meta = with lib; {
description = "Launches a web app using your default browser in app mode.";
license = licenses.mit;
platforms = platforms.linux;
maintainers = [];
};
}

View File

@@ -1,38 +0,0 @@
{
appimageTools,
fetchurl,
nodejs,
nodePackages,
uv,
python3,
makeWrapper,
}: let
pname = "msty-sidecar";
version = "0.4.0";
src = fetchurl {
url = "https://sidecar-assets.msty.studio/prod/latest/linux/amd64/MstySidecar_x86_64_amd64.AppImage";
sha256 = "sha256-UhsokCG0NPqn5nhn//AaIuY6sWlZkejNlqMEyN4Opqg=";
};
appimageContents = appimageTools.extractType2 {inherit pname version src;};
in
appimageTools.wrapType2 {
inherit pname version src;
nativeBuildInputs = [makeWrapper];
extraPkgs = pkgs: [
nodejs
nodePackages.npm
uv
python3
];
extraInstallCommands = ''
install -m 444 -D ${appimageContents}/mstysidecar.desktop -t $out/share/applications
substituteInPlace $out/share/applications/mstysidecar.desktop \
--replace 'Exec=AppRun' 'Exec=${pname}'
install -m 444 -D ${appimageContents}/mstysidecar.png \
$out/share/icons/hicolor/256x256/apps/mstysidecar.png
wrapProgram $out/bin/${pname} \
--prefix PATH : ${nodejs}/bin:${nodePackages.npm}/bin:${uv}/bin:${python3}/bin
'';
}

View File

@@ -1,38 +0,0 @@
{
appimageTools,
fetchurl,
nodejs,
nodePackages,
uv,
python3,
makeWrapper,
}: let
pname = "msty-studio";
version = "2.0.0-alpha.11";
src = fetchurl {
url = "https://next-assets.msty.studio/app/alpha/linux/MstyStudio_x86_64.AppImage";
sha256 = "sha256-jp0kMBB6ks6j++VvM1XG37spLEXU1SmVXRNJpr5SmOA=";
};
appimageContents = appimageTools.extractType2 {inherit pname version src;};
in
appimageTools.wrapType2 {
inherit pname version src;
nativeBuildInputs = [makeWrapper];
extraPkgs = pkgs: [
nodejs
nodePackages.npm
uv
python3
];
extraInstallCommands = ''
install -m 444 -D ${appimageContents}/MstyStudio.desktop -t $out/share/applications
substituteInPlace $out/share/applications/MstyStudio.desktop \
--replace 'Exec=AppRun' 'Exec=${pname}'
install -m 444 -D ${appimageContents}/MstyStudio.png \
$out/share/icons/hicolor/256x256/apps/MstyStudio.png
wrapProgram $out/bin/${pname} \
--prefix PATH : ${nodejs}/bin:${nodePackages.npm}/bin:${uv}/bin:${python3}/bin
'';
}

View File

@@ -1,28 +0,0 @@
{
appimageTools,
fetchurl,
makeWrapper,
}: let
pname = "msty";
version = "1.9.2";
src = fetchurl {
url = "https://assets.msty.app/prod/latest/linux/amd64/Msty_x86_64_amd64.AppImage";
sha256 = "sha256-Z4t0EcV9X4g5X0lBwipiMdP8lgPuBkhykAIKjHSUpnI=";
};
appimageContents = appimageTools.extractType2 {inherit pname version src;};
in
appimageTools.wrapType2 {
inherit pname version src;
nativeBuildInputs = [makeWrapper];
extraInstallCommands = ''
install -m 444 -D ${appimageContents}/msty.desktop -t $out/share/applications
substituteInPlace $out/share/applications/msty.desktop \
--replace 'Exec=AppRun' 'Exec=${pname}'
install -m 444 -D ${appimageContents}/msty.png \
$out/share/icons/hicolor/256x256/apps/msty.png
wrapProgram $out/bin/${pname} \
--set XDG_CURRENT_DESKTOP GNOME
'';
}

View File

@@ -1,92 +0,0 @@
{
lib,
stdenv,
writeShellScriptBin,
timer,
kitty,
rofi,
libnotify,
speechd,
}: let
launcher = writeShellScriptBin "launch-timer" ''
#!/bin/bash
validate_time() {
local input=$1
if [[ $input =~ ^[0-9]+[mhs]$ ]]; then
return 0
else
return 1
fi
}
notify_end() {
local session_name=$1
${libnotify}/bin/notify-send "Pomodoro" "$session_name session ended!"
${speechd}/bin/spd-say "$session_name session ended"
}
start_timer() {
local duration=$1
local session_name=$2
kitty \
--class="floating-pomodoro" \
--title="floating-pomodoro" \
${timer}/bin/timer $duration
notify_end "$session_name"
}
# Show rofi menu with options
selected=$(printf "work\nbreak\ncustom" | rofi -dmenu -p "Work Timer:" -l 3)
# Exit if no selection was made
[ -z "$selected" ] && exit
case $selected in
"work")
start_timer "45m" "work"
;;
"break")
start_timer "10m" "break"
;;
"custom")
# Show input dialog for custom time
custom_time=$(rofi -dmenu -p "Enter time (e.g., 25m, 1h, 30s):" -l 0)
# Validate input and start timer
if [ ! -z "$custom_time" ] && validate_time "$custom_time"; then
start_timer "$custom_time" "custom"
else
${libnotify}/bin/notify-send "Invalid time format" "Please use format: 30s, 25m, or 1h"
exit 1
fi
;;
esac
'';
in
stdenv.mkDerivation {
pname = "work-timer";
version = "0.1.0";
dontUnpack = true;
buildInputs = [
timer
kitty
rofi
libnotify
speechd
];
installPhase = ''
mkdir -p $out/bin
ln -s ${launcher}/bin/launch-timer $out/bin/launch-timer
'';
meta = with lib; {
description = "A Work timer.";
license = licenses.mit;
platforms = platforms.linux;
maintainers = [];
};
}

View File

@@ -1,26 +0,0 @@
{writeShellScriptBin}:
writeShellScriptBin "tuxedo-backlight" ''
# all keys
echo '0 150 255' | tee /sys/class/leds/rgb:kbd_backlight*/multi_intensity
# DEL key
echo '255 0 155' | tee /sys/class/leds/rgb:kbd_backlight_15/multi_intensity
# ESC key
echo '255 0 155' | tee /sys/class/leds/rgb:kbd_backlight/multi_intensity
# function and Fn keys
for i in {1..12} 102; do
echo '0 255 80' | tee /sys/class/leds/rgb:kbd_backlight_$i/multi_intensity
done
# complete numblock and keys above
for i in {16..19} {36..39} {56..59} {76..79} {96..99} {117..119}; do
echo '255 150 0' | tee /sys/class/leds/rgb:kbd_backlight_$i/multi_intensity
done
# arrow keys
for i in 95 {114..116}; do
echo '0 255 80' | tee /sys/class/leds/rgb:kbd_backlight_$i/multi_intensity
done
''

View File

@@ -1,41 +0,0 @@
{
lib,
stdenv,
fetchFromGitea,
fish,
fd,
fzf,
makeWrapper,
zellij,
}:
with lib;
stdenv.mkDerivation {
pname = "zellij-ps";
version = "0.1.0";
src = fetchFromGitea {
domain = "code.m3tam3re.com";
owner = "m3tam3re";
repo = "helper-scripts";
rev = "08a3217b83391c1110545c1ee3161eecd5dbe5e9";
sha256 = "1sc4i58mwcg3qsq0wwl5rvk08ykbxc497bq7mrxiirndsarskby7";
};
buildInputs = [];
nativeBuildInputs = [makeWrapper];
installPhase = ''
mkdir -p $out/bin
cp zellij-ps.fish $out/bin/zellij-ps
wrapProgram $out/bin/zellij-ps \
--prefix PATH : ${lib.makeBinPath [fish fd fzf zellij]}
'';
meta = with lib; {
description = "A small project script for zellij";
homepage = "https://code.m3tam3re.com/m3tam3re/helper-scripts";
license = licenses.mit;
maintainers = with maintainers; [m3tam3re];
platforms = platforms.unix;
};
}