This commit is contained in:
2025-03-12 12:47:00 +02:00
parent 026206518d
commit 28f3ed9089
6 changed files with 23 additions and 344 deletions

View File

@@ -1,213 +0,0 @@
# https://github.com/NixOS/nixpkgs/issues/209545
{
lib,
stdenv,
fetchurl,
dpkg,
autoPatchelfHook,
makeWrapper,
pkgs,
wrapGAppsHook,
gobject-introspection,
glibc_multi,
gsettings-desktop-schemas,
}:
let
gds = gsettings-desktop-schemas;
# Create LSB Release File
lsbRelease = pkgs.writeText "lsb-release" ''
DISTRIB_ID=nixos
DISTRIB_RELEASE=${pkgs.lib.version}
DISTRIB_CODENAME=nixos
DISTRIB_DESCRIPTION="NixOS"
'';
# Remove Python Ads
pythonSetup = pkgs.writeText "crossover-python-setup.py" ''
import warnings
import locale
import os
# Skip Ads
warnings.filterwarnings("ignore", category=DeprecationWarning, module="fileupdate")
warnings.filterwarnings("ignore", category=DeprecationWarning, module="distversion")
warnings.filterwarnings("ignore", category=DeprecationWarning, module="multiprocessing.popen_fork")
# Local
try:
locale.setlocale(locale.LC_ALL, "")
except:
locale.setlocale(locale.LC_ALL, "C")
'';
# Script for install crossover
setupScript = pkgs.writeScript "setup-crossover.sh" ''
#!${pkgs.bash}/bin/bash
set -e
mkdir -p "$HOME/.cxoffice"
mkdir -p "$HOME/.local/share/cxoffice"
mkdir -p "$HOME/.local/share/applications/cxoffice"
mkdir -p "$HOME/.local/share/icons"
mkdir -p "$HOME/.cache/cxoffice"
if [ ! -f "$HOME/.local/share/cxoffice/crossover.conf" ]; then
echo "Create crossover.conf..."
cat > "$HOME/.local/share/cxoffice/crossover.conf" << EOF
[CrossOver]
autoinstall=true
check_for_updates=false
EOF
fi
chmod -R u+rw "$HOME/.cxoffice"
chmod -R u+rw "$HOME/.local/share/cxoffice"
chmod -R u+rw "$HOME/.local/share/applications/cxoffice"
chmod -R u+rw "$HOME/.cache/cxoffice"
'';
in
stdenv.mkDerivation rec {
pname = "crossover";
version = "22.0.1-1";
src = fetchurl {
url = "https://media.codeweavers.com/pub/crossover/cxlinux/demo/crossover_${version}.deb";
sha256 = "sha256-0wpM/4LCfjeZLgt0ECGdRuL3YPE0gQ/2otzUkJ9B/dY=";
};
nativeBuildInputs = [
dpkg
autoPatchelfHook
wrapGAppsHook
gobject-introspection
makeWrapper
pkgs.unzip
];
buildInputs = [
# graphics
pkgs.gtk3
pkgs.gtkdialog
pkgs.vte
pkgs.libnotify
pkgs.shared-mime-info
# System
glibc_multi
pkgs.glibc.dev
pkgs.libxcrypt-legacy
# Audio
pkgs.alsa-lib
pkgs.alsa-plugins
pkgs.pulseaudio
pkgs.openal
# Multimedia
pkgs.gst_all_1.gstreamer
pkgs.gst_all_1.gst-plugins-base
pkgs.gst_all_1.gst-plugins-good
pkgs.gst_all_1.gst-plugins-ugly
# Network
pkgs.gnutls
pkgs.libgpg-error
pkgs.openldap
pkgs.openssl
pkgs.openssl.dev
pkgs.libpcap
pkgs.cacert
# Image
pkgs.libgphoto2
pkgs.sane-backends
pkgs.cups
# Other
pkgs.gmp
pkgs.libunwind
pkgs.ocl-icd
pkgs.vulkan-loader
pkgs.sqlite
pkgs.desktop-file-utils
# Python
(pkgs.python3.withPackages (
p: with p; [
pygobject3
gst-python
dbus-python
pycairo
requests
urllib3
]
))
];
runtimeDependencies = [
pkgs.vulkan-loader
pkgs.cups.lib
pkgs.openssl
];
unpackCmd = "dpkg -x $src source";
autoPatchelfIgnoreMissingDeps = [
"libcapi20.so.3"
"libpcap.so.0.8"
];
preFixup = ''
gappsWrapperArgs+=(
--prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath buildInputs}
--prefix GST_PLUGIN_PATH : "$GST_PLUGIN_SYSTEM_PATH_1_0"
--prefix VK_LAYER_PATH : ${pkgs.vulkan-validation-layers}/share/vulkan/explicit_layer.d
--set OPENSSL_CONF "${pkgs.openssl.out}/etc/ssl/openssl.cnf"
--set SSL_CERT_FILE "${pkgs.cacert}/etc/ssl/certs/ca-bundle.crt"
--prefix PATH : ${
lib.makeBinPath [
pkgs.openssl
pkgs.desktop-file-utils
]
}
--set PYTHONWARNINGS "ignore"
--set PYTHONSTARTUP "${pythonSetup}"
--set GSETTINGS_SCHEMA_DIR "${gds}/share/gsettings-schemas/${gds.pname}-${gds.version}/glib-2.0/schemas"
--set CXOFFICE_HOME "$HOME/.cxoffice"
--set XDG_DATA_HOME "$HOME/.local/share"
--set XDG_CACHE_HOME "$HOME/.cache"
)
'';
installPhase = ''
runHook preInstall
mkdir -p $out/{bin,opt,usr,etc,libexec}
cp -r opt/* $out/opt/
cp -r usr/* $out/usr/
cp ${lsbRelease} $out/etc/lsb-release
install -Dm755 ${setupScript} $out/libexec/setup-crossover.sh
makeWrapper $out/opt/cxoffice/bin/crossover $out/bin/crossover \
--run "$out/libexec/setup-crossover.sh" \
--set LSB_RELEASE "$out/etc/lsb-release" \
"''${gappsWrapperArgs[@]}"
chmod +x $out/opt/cxoffice/bin/*
runHook postInstall
'';
meta = with lib; {
description = "Run your Windows® apps on Linux";
homepage = "https://www.codeweavers.com/crossover";
license = licenses.unfree;
maintainers = with maintainers; [ ];
platforms = [ "x86_64-linux" ];
};
}

View File

@@ -1,80 +0,0 @@
import fs from "fs";
import path from "path";
import { exec } from "child_process";
const stateFilePath = path.join(
process.env.HOME || "~",
".regretevator-challenge-state"
);
const regretevatorStateFile = path.join(
process.env.HOME || "~",
".regretevator_state"
);
if (fs.existsSync(regretevatorStateFile)) process.exit(0);
function sendReminderNotification() {
exec(
`notify-send -a "tuxstrap" -u low "OCbwoy3's Dotfiles" "It's time for Regretevator!"`
);
}
function sendReminderNotificationPlayed(floors: number) {
exec(
`notify-send -a "tuxstrap" -u low "OCbwoy3's Dotfiles" "Man... Only ${floors} floors, really? You can do better than that."`
);
}
function sendSpamNotifications() {
for (let i = 0; i < 2; i++) {
exec(
`notify-send -a "tuxstrap" -u low "OCbwoy3's Dotfiles" "HURRY UP!!!!!"`
);
}
}
function writeState(floorsSurvived: number) {
const state = {
date: new Date().toLocaleString("en-CA", { timeZoneName: "short" }).split(",")[0],
floors: floorsSurvived,
};
fs.writeFileSync(stateFilePath, JSON.stringify(state, null, 2));
}
function checkChallengeState() {
if (fs.existsSync(stateFilePath)) {
const state = JSON.parse(fs.readFileSync(stateFilePath, "utf-8"));
const today = new Date().toLocaleString("en-CA", { timeZoneName: "short" }).split(",")[0];
const stateDate = state.date;
const floorsSurvived = state.floors;
const now = new Date();
const hoursLeft = 24 - now.getHours();
if (stateDate === today) {
if (floorsSurvived < 25) {
/*
if (floorsSurvived === 0) {
sendReminderNotification();
} else {
sendReminderNotificationPlayed(floorsSurvived);
}
if (hoursLeft <= 4) {
sendSpamNotifications();
}
*/
sendReminderNotification();
}
} else {
sendReminderNotification();
writeState(0);
}
} else {
sendReminderNotification();
writeState(0);
}
}
// Run the check
checkChallengeState();

View File

@@ -1,23 +0,0 @@
{ pkgs ? import <nixpkgs> { } }:
pkgs.stdenv.mkDerivation {
name = "tuxstrap-cron-executable";
src = ./files/crontab-executable.ts;
unpackPhase = ''
mkdir -p $out
'';
buildPhase = ''
mkdir -p $out
mkdir -p $out/lib
cp $src $out/lib/crontab-executable.ts
'';
installPhase = ''
mkdir -p $out/bin
echo "#!/bin/bash" > $out/bin/tuxstrap-crontab
echo '${pkgs.bun}/bin/bun run $(dirname "$(realpath "$0")")/../lib/crontab-executable.ts' >> $out/bin/tuxstrap-crontab
chmod +x $out/bin/tuxstrap-crontab
'';
}

View File

@@ -1,28 +0,0 @@
{ lib, stdenv, fetchgit, pkg-config, wayland, wayland-protocols, wlr-protocols, wayland-scanner, libspng }:
stdenv.mkDerivation rec {
pname = "wl_shimeji";
version = "1.0.0"; # Change to the appropriate version
src = fetchgit {
url = "https://github.com/CluelessCatBurger/wl_shimeji.git";
rev = "392a83d5658f283ace77b0c839d5a201cebc8784"; # Change to the appropriate commit
sha256 = "sha256-T7sWuKOsc0vEfkcGbRXLHit24db97crEhYadOMq4MDM="; # Put the correct sha256 hash
fetchSubmodules = true;
};
nativeBuildInputs = [ pkg-config wayland wayland-protocols wlr-protocols libspng wayland-scanner ];
buildInputs = [ ];
installPhase = ''
make install PREFIX=$out
'';
meta = with lib; {
description = "Shimeji reimplementation for Wayland in C";
homepage = "https://github.com/CluelessCatBurger/wl_shimeji";
license = licenses.gpl2;
maintainers = with maintainers; [ ];
};
}

View File

@@ -0,0 +1,16 @@
{ config, pkgs, ... }:
{
programs.fastfetch = {
enable = true;
settings = {
# Example: Change colors and add custom options
logo = "nixos";
color = "blue";
keyColor = "cyan";
separator = " => ";
};
};
}

View File

@@ -0,0 +1,7 @@
{ config, pkgs, ... }:
{
imports = [
./fastfetch.nix
];
}