Compare commits

...

51 Commits

Author SHA1 Message Date
2f7142135f updated hyprland to 0.55 because i need something to do 2026-05-12 10:14:21 +01:00
38f6ec8305 removed kier starmer again (added unbound resolver) 2026-05-08 20:58:19 +01:00
3dadc29a37 updated nvim 2026-05-04 14:28:53 +01:00
48535bb6d4 added shortcut for flakes and updated nvim 2026-05-03 20:14:15 +01:00
087a924e5a updated flake 2026-05-02 11:10:46 +01:00
2e7541e5c3 removed some useless stuff 2026-05-01 15:00:50 +01:00
0c2d3329cb tried to fix something and added bluetui 2026-04-27 16:46:19 +01:00
80f5b4a8f2 removed useless wivrn stuff 2026-04-18 18:16:19 +01:00
4f14a61b6b updated flake 2026-04-17 23:34:28 +01:00
ae3dbafe8b tried to fix davinci but failed :( 2026-04-17 20:23:09 +01:00
63862ae5d9 added opencode (coolest shit ever) 2026-04-17 19:41:11 +01:00
fea8fde271 added any nix shell 2026-04-16 17:29:40 +01:00
cba857e830 stopped nvim following stable 2026-04-07 12:51:31 +01:00
2e7fa85c5a updated flake.lock 2026-04-06 12:17:16 +01:00
deb946154f added steam to laptop so i can play ultrakil 2026-04-02 22:41:50 +01:00
27285a33e2 updated flake 2026-04-02 10:49:59 +01:00
454977900e added dysk that im never gonna use 2026-04-01 14:40:59 +01:00
8ca322be98 updated norgolith 2026-03-29 13:16:17 +01:00
96452d4a90 cleaned up common config and replaced swaync with dunst 2026-03-28 12:16:24 +00:00
74fe377b0c added omnisearch because fuck google 2026-03-24 20:09:21 +00:00
8118984fac updated flake and increased download buffer to 500mb 2026-03-22 12:03:30 +00:00
911930bcc3 re-organised flake inputs and common config 2026-03-22 12:00:27 +00:00
f3d247f8ca updated slsteam and added norgolith 2026-03-20 21:50:21 +00:00
2dff283566 removed some packages i dont use 2026-03-16 18:13:32 +00:00
5d02f49c43 fixed input remapper 2026-03-16 18:04:25 +00:00
3be9cbe622 added mumble as audio server, wleave and iron bar. config tbd 2026-03-15 19:49:55 +00:00
94f0e793d7 moved hyprland back to nixpkgs unstable 2026-03-13 17:38:16 +00:00
72221d9157 Merge branch 'changes' 2026-03-12 21:49:08 +00:00
f117c77624 chataigne works again!!!! (updated flake) 2026-03-12 21:48:54 +00:00
8553a02ca6 fixed chataigne flake 2026-03-12 19:02:00 +00:00
e3650d5adb chataingne nonsensenes 2026-03-12 18:00:53 +00:00
cd9716a7f2 some nonsense 2026-03-12 09:45:46 +00:00
37e89dbe28 added wl clipboard 2026-03-07 11:53:36 +00:00
f9adbedd20 nvim now running on flake from config repo 2026-03-05 15:57:45 +00:00
d4624bd695 added input function and changed nvim stuff 2026-03-05 11:11:31 +00:00
da43fd90fd moved jellyfin-tui to common 2026-03-01 22:03:46 +00:00
be4f4c26a2 removed useless xremap 2026-02-28 22:42:12 +00:00
435929b431 changed launcher and hyprland version 2026-02-28 17:01:32 +00:00
7edfa1ebfa added new launcher for testing 2026-02-27 15:24:33 +00:00
0100678032 moved nvim-flake.nix to nvim repo 2026-02-26 22:19:21 +00:00
75362d2319 changed wivrn again 2026-02-26 12:21:29 +00:00
7f7fd3669c Add nvim-flake.nix 2026-02-24 11:51:37 +00:00
caf1d5cd60 fixed wivrn and added inline latex rendering for nvim 2026-02-20 15:12:54 +00:00
0243cb0b18 cracked steam and restructured flake so that its readable 2026-02-19 12:20:24 +00:00
6c4b9c5433 updated flake, steam works again after deleting all of my stuff 2026-02-17 17:16:16 +00:00
251762f5dd stuff for nvim 2026-02-16 09:35:38 +00:00
3867276cfc changed nix garbage behaviour 2026-02-14 14:20:07 +00:00
voidarclabs
0d687f9d4c fixed davinci nonsense 2026-02-13 17:38:12 +00:00
8315741521 cleaned up nvim 2026-02-13 15:26:21 +00:00
voidarclabs
930916e3e2 added nvim treesitter stuff 2026-02-12 22:25:25 +00:00
voidarclabs
cca97491c9 steam broken 2026-02-12 17:33:18 +00:00
11 changed files with 1248 additions and 489 deletions

1
.gitignore vendored
View File

@@ -1 +1,2 @@
.session .session
modules/chataigne/squashfs-root

View File

@@ -9,16 +9,34 @@
{ {
imports = [ imports = [
/etc/nixos/hardware-configuration.nix /etc/nixos/hardware-configuration.nix
inputs.walker.nixosModules.default
]; ];
# Allow Nix command and flakes (ofc) # Nix settings
nix.settings.experimental-features = [ ## Limit Cores on rebuild and enable Flakes
"nix-command" nix = {
"flakes" registry = {
]; voidarc = {
from = {
id = "voidarc";
type = "indirect";
};
to = {
type = "git";
url = "https://git.voidarc.co.uk/voidarc/flakes.git";
};
};
};
settings = {
cores = 6;
download-buffer-size = 524288000;
experimental-features = [
"nix-command"
"flakes"
];
};
};
# Allow unfree packages ## Allow unfree packages and add pkgs.unstable
nixpkgs = { nixpkgs = {
config = { config = {
allowUnfree = true; allowUnfree = true;
@@ -32,7 +50,15 @@
}; };
}; };
# Boot ## Optimise Nix store on rebuild and collect garbage as a service
nix.optimise.automatic = true;
nix.gc = {
automatic = true;
dates = "daily";
options = "--delete-older-than 5d";
};
# Bootloader theming and plymouth
boot = { boot = {
loader = { loader = {
timeout = 2; timeout = 2;
@@ -57,9 +83,13 @@
}; };
}; };
# Use latest kernel. ## Use latest kernel
boot.kernelPackages = pkgs.linuxPackages_latest; boot.kernelPackages = pkgs.linuxPackages_latest;
# Bluetooth and Networking
hardware.bluetooth.enable = true;
hardware.xpadneo.enable = true;
networking.networkmanager.enable = true; networking.networkmanager.enable = true;
networking.networkmanager.dns = "none"; networking.networkmanager.dns = "none";
networking.nameservers = [ networking.nameservers = [
@@ -67,14 +97,8 @@
"8.8.8.8" "8.8.8.8"
]; ];
# Enable bluetooth
hardware.bluetooth.enable = true;
hardware.xpadneo.enable = true;
# Set your time zone.
time.timeZone = "Europe/London";
# Locale # Locale
time.timeZone = "Europe/London";
i18n.defaultLocale = "en_GB.UTF-8"; i18n.defaultLocale = "en_GB.UTF-8";
i18n.extraLocaleSettings = { i18n.extraLocaleSettings = {
LC_ADDRESS = "en_GB.UTF-8"; LC_ADDRESS = "en_GB.UTF-8";
@@ -88,23 +112,23 @@
LC_TIME = "en_GB.UTF-8"; LC_TIME = "en_GB.UTF-8";
}; };
# Windowing Systems # Userspace Stuff
services.xserver.enable = true; ## Keymap
programs.hyprland = {
enable = true;
package = pkgs.unstable.hyprland;
};
security.polkit.enable = true;
# Keymap
services.xserver.xkb = { services.xserver.xkb = {
layout = "gb"; layout = "gb";
variant = ""; variant = "";
}; };
console.keyMap = "uk"; console.keyMap = "uk";
# Pipewire ## Desktop
services.xserver.enable = true;
programs.hyprland = {
enable = true;
package = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.default;
};
security.polkit.enable = true;
## Audio Server
services.pulseaudio.enable = false; services.pulseaudio.enable = false;
security.rtkit.enable = true; security.rtkit.enable = true;
services.pipewire = { services.pipewire = {
@@ -115,6 +139,7 @@
}; };
# Local User # Local User
## User config
users.users.user01 = { users.users.user01 = {
isNormalUser = true; isNormalUser = true;
shell = pkgs.zsh; shell = pkgs.zsh;
@@ -128,67 +153,118 @@
"docker" "docker"
"wheel" "wheel"
]; ];
packages = with pkgs; [ packages =
# Ricing with pkgs;
bibata-cursors let
catppuccin-gtk input =
waybar {
hyprlock package,
cava output ? "default",
cmatrix }:
swaynotificationcenter inputs.${package}.packages.${pkgs.stdenv.hostPlatform.system}.${output};
inputs.chataigne.packages.${stdenv.hostPlatform.system}.chataigne wrap =
wlogout {
wpaperd name,
kando pkg,
oh-my-posh modules,
grimblast }:
pkgs.symlinkJoin {
inherit name;
paths = [ pkg ];
nativeBuildInputs = [ pkgs.makeWrapper ];
postBuild = ''
wrapProgram $out/bin/${name} \
--prefix PATH : ${pkgs.lib.makeBinPath modules}
'';
};
in
[
# Ricing
## Desktop
bibata-cursors
catppuccin-gtk
waybar
hyprlock
dunst
wlogout
wpaperd
# Terminal ## Desktop Utilities
carapace grimblast
kitty gsettings-desktop-schemas
github-cli wl-clipboard
p7zip (wrap {
bluetuith name = "otter-launcher";
wget pkg = (
playerctl input {
git package = "otter-launcher";
fastfetch }
lsd );
inputs.doot.packages.${stdenv.hostPlatform.system}.default modules = [
stow chafa
fzf jq
ripgrep ];
zsh-autocomplete })
nodejs (input { package = "fsel"; })
lazygit
tailscale
# Thunar stuff # Terminal
xfce.thunar ## Styling / Functionality
xfce.thunar-volman oh-my-posh
xfce.thunar-vcs-plugin carapace
xfce.thunar-archive-plugin zsh-autocomplete
bat
# Apps ## Tools
pavucontrol lazygit
firefox p7zip-rar
htop any-nix-shell
input-remapper dysk
tor-browser bluetui
gotify-desktop fzf
techmino ripgrep
mpv wget
prismlauncher htop
delfin playerctl
libreoffice-qt6 git
syncthing lsd
xremap (input {
blueman package = "doot";
]; })
## Other CLI Apps
nodejs
fastfetch
zellij
cava
cmatrix
opencode
tailscale
syncthing
(input { package = "norgolith"; })
jellyfin-tui
# Apps
## Actual Useful Stuff
nemo
kitty
firefox
gotify-desktop
pavucontrol
mpv
input-remapper
## Other Nonsense
tor-browser
techmino
prismlauncher
delfin
(input {
package = "chataigne";
})
];
}; };
# Zsh ## Zsh
programs.zsh = { programs.zsh = {
enable = true; enable = true;
enableCompletion = true; enableCompletion = true;
@@ -205,88 +281,54 @@
]; ];
}; };
}; };
users.defaultUserShell = pkgs.zsh;
# User programs ## User programs
programs.steam.enable = true; programs = {
programs.walker.enable = true; dconf.enable = true;
programs.dconf.enable = true; xfconf.enable = true;
programs.xfconf.enable = true; gdk-pixbuf.modulePackages = [ pkgs.librsvg ]; # For wlogout svgs
};
# User Services ## User Services
services.gvfs.enable = true; services = {
services.tailscale.enable = true; gvfs.enable = true;
services.printing.enable = true; input-remapper.enable = true;
services.upower.enable = true; tailscale.enable = true;
services.openssh.enable = true; printing.enable = true;
services.elephant.enable = true; upower.enable = true;
services.avahi.enable = true; openssh.enable = true;
avahi.enable = true;
};
# Fonts ## Fonts
fonts.packages = with pkgs; [ fonts.packages = with pkgs; [
nerd-fonts.fira-mono nerd-fonts.fira-mono
]; ];
fonts.fontconfig.defaultFonts.serif = [ "Fira Mono Nerd Font" ]; fonts.fontconfig.defaultFonts.serif = [ "Fira Mono Nerd Font" ];
# System Packages
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
(pkgs.symlinkJoin { # Utilities
name = "nvim-with-lsp"; inputs.nvim-wrapped.packages.${stdenv.hostPlatform.system}.default
paths = [ pkgs.neovim ];
buildInputs = [ pkgs.makeWrapper ];
postBuild = ''
wrapProgram $out/bin/nvim \
--prefix PATH : ${
pkgs.lib.makeBinPath [
pkgs.lua-language-server
pkgs.vscode-langservers-extracted
(vimPlugins.nvim-treesitter.withPlugins (p: [
p.norg
p.norg-meta
p.lua
p.vim
]))
pkgs.emmet-ls
pkgs.lua5_1
pkgs.tree-sitter
pkgs.tree-sitter-grammars.tree-sitter-norg
pkgs.prettier
pkgs.luarocks
pkgs.black
pkgs.nixfmt
pkgs.ripgrep
pkgs.nil
pkgs.nixd
pkgs.gcc
pkgs.gnumake
pkgs.typescript-language-server
pkgs.tailwindcss-language-server
pkgs.stylua
]
}
'';
})
vim vim
unzip unzip
python310 # Its python like come on python310
usbutils usbutils
curlWithGnuTls
# Graphics Drivers # System
mesa mesa
vulkan-tools vulkan-tools
# FileSystem Dependancies
gvfs gvfs
# C copmpiler
clang clang
# XDG Desktop Portal Etc
xdg-desktop-portal xdg-desktop-portal
xdg-desktop-portal-hyprland xdg-desktop-portal-hyprland
# Other things (from gnome)
glib glib
gnutls gnutls
liblzf
librsvg
appimage-run appimage-run
libnotify libnotify
gsettings-desktop-schemas gsettings-desktop-schemas

View File

@@ -40,7 +40,6 @@
packages = with pkgs; [ packages = with pkgs; [
# Ricing # Ricing
inputs.way-edges.packages.${stdenv.hostPlatform.system}.way-edges inputs.way-edges.packages.${stdenv.hostPlatform.system}.way-edges
inputs.chataigne.packages.${stdenv.hostPlatform.system}.chataigne
# Terminal # Terminal
light light
@@ -48,4 +47,6 @@
]; ];
}; };
programs.steam.enable = true;
} }

View File

@@ -27,6 +27,10 @@
# Opengl and vulkan # Opengl and vulkan
hardware.graphics = { hardware.graphics = {
enable = true; enable = true;
extraPackages = with pkgs; [
libva-vdpau-driver
libvdpau-va-gl
];
enable32Bit = true; enable32Bit = true;
}; };
@@ -50,6 +54,61 @@
}; };
}; };
# Pipewire stuff
services.pipewire.extraConfig.pipewire."97-null-sink" = {
"context.objects" = [
{
factory = "adapter";
args = {
"factory.name" = "support.null-audio-sink";
"node.name" = "Null-Sink";
"node.description" = "Null Sink";
"media.class" = "Audio/Sink";
"audio.position" = "FL,FR";
};
}
{
factory = "adapter";
args = {
"factory.name" = "support.null-audio-sink";
"node.name" = "Null-Source";
"node.description" = "Null Source";
"media.class" = "Audio/Source";
"audio.position" = "FL,FR";
};
}
];
};
services.pipewire.extraConfig.pipewire."98-virtual-mic" = {
"context.modules" = [
{
name = "libpipewire-module-loopback";
args = {
"audio.position" = "FL,FR";
"node.description" = "Mumble as Microphone";
"capture.props" = {
# Mumble's output node name.
"node.target" = "Mumble";
"node.passive" = true;
};
"playback.props" = {
"node.name" = "Virtual-Mumble-Microphone";
"media.class" = "Audio/Source";
};
};
}
];
};
# Mumble server
services.murmur = {
enable = true;
bandwidth = 540000;
bonjour = true;
password = "mumblepass";
autobanTime = 0;
};
# Local User # Local User
users.users.user01 = { users.users.user01 = {
extraGroups = [ extraGroups = [
@@ -58,22 +117,45 @@
]; ];
packages = with pkgs; [ packages = with pkgs; [
bottles bottles
mumble
ferdium ferdium
android-tools android-tools
anki
vesktop vesktop
wine64 wine64
delfin delfin
docker docker
jellyfin-tui
orca-slicer orca-slicer
exiftool
ffmpeg
]; ];
}; };
environment.systemPackages = [
inputs.sls-steam.packages.${pkgs.stdenv.hostPlatform.system}.wrapped
];
programs.steam = {
enable = true;
package = pkgs.steam.override {
extraEnv = {
LD_AUDIT = "${
inputs.sls-steam.packages.${pkgs.stdenv.hostPlatform.system}.sls-steam
}/library-inject.so:${
inputs.sls-steam.packages.${pkgs.stdenv.hostPlatform.system}.sls-steam
}/SLSsteam.so";
};
};
};
services.unbound = {
enable = true;
};
services.wivrn = { services.wivrn = {
enable = true; enable = true;
package = pkgs.unstable.wivrn; package = pkgs.unstable.wivrn;
openFirewall = true; openFirewall = true;
defaultRuntime = true;
}; };
virtualisation.docker = { virtualisation.docker = {

903
flake.lock generated

File diff suppressed because it is too large Load Diff

View File

@@ -2,22 +2,34 @@
description = "Master flake for Voidarc nix config"; description = "Master flake for Voidarc nix config";
inputs = { inputs = {
# System
nixpkgs.url = "github:nixos/nixpkgs/nixos-25.11"; nixpkgs.url = "github:nixos/nixpkgs/nixos-25.11";
elephant.url = "github:abenz1267/elephant"; nvim-wrapped = {
url = "git+file:///home/user01/.dotfiles/.config/nvim";
};
hyprland.url = "github:hyprwm/Hyprland";
# Apps
sls-steam.url = "github:AceSLS/SLSsteam";
chataigne.url = "./modules/chataigne"; chataigne.url = "./modules/chataigne";
doot.url = "github:voidarclabs/nixos.doot"; norgolith = {
way-edges.url = "github:way-edges/way-edges"; url = "github:NTBBloodbath/norgolith";
hyprfloat = {
url = "github:nevimmu/hyprfloat";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
walker = { # Utils
url = "github:abenz1267/walker"; doot.url = "github:voidarclabs/nixos.doot";
inputs.elephant.follows = "elephant"; way-edges.url = "github:way-edges/way-edges";
}; otter-launcher.url = "github:kuokuo123/otter-launcher";
fsel.url = "github:Mjoyufull/fsel";
# Davinci-resolve
mesa-davinci.url = "github:nixos/nixpkgs?ref=599ddd2b79331c1e6153e1659bdaab65d62c4c82"; mesa-davinci.url = "github:nixos/nixpkgs?ref=599ddd2b79331c1e6153e1659bdaab65d62c4c82";
omnisearch = {
url = "git+https://git.voidarc.co.uk/voidarc/omnisearch";
inputs.nixpkgs.follows = "nixpkgs";
};
}; };
outputs = outputs =
@@ -28,34 +40,32 @@
}@inputs: }@inputs:
let let
system = "x86_64-linux"; system = "x86_64-linux";
hardwareConfig = import /etc/nixos/hardware-configuration.nix; hardwareConfig = import /etc/nixos/hardware-configuration.nix;
common = import ./configs/common.nix;
mkSystem =
extraModules:
nixpkgs.lib.nixosSystem {
inherit system;
specialArgs = { inherit inputs; };
modules = [
common
hardwareConfig
]
++ extraModules;
};
in in
{ {
nixosConfigurations.mobile02 = nixpkgs.lib.nixosSystem { nixosConfigurations = {
inherit system; mobile02 = mkSystem [ ./configs/configuration-laptop.nix ];
specialArgs = { inherit inputs; }; hackstation = mkSystem [
modules = [
./configs/configuration-laptop.nix
./configs/common.nix
hardwareConfig
{
nixpkgs.config.allowUnfree = true;
}
];
};
nixosConfigurations.hackstation = nixpkgs.lib.nixosSystem {
inherit system;
specialArgs = { inherit inputs; };
modules = [
./configs/configuration-pc.nix ./configs/configuration-pc.nix
./configs/common.nix
./modules/davinci/davinci.nix ./modules/davinci/davinci.nix
./modules/i3/i3.nix ./modules/i3/i3.nix
hardwareConfig inputs.omnisearch.nixosModules.default
{ {
nixpkgs.config.allowUnfree = true; services.omnisearch.enable = true;
} }
]; ];
}; };

View File

@@ -1,131 +0,0 @@
{ pkgs, pinnedPkgs, ... }:
let
# 1. Define the AppImage source.
appImageSrc = ./Chataigne-linux-x64-bleedingedge.AppImage;
# 2a. Libraries pulled from the modern, current Nixpkgs (for small size).
modernLibs = with pkgs; [
alsa-lib
freetype
avahi
libglvnd
curl
SDL2
hidapi
xorg.libXrandr
];
# 2b. Libraries pulled from the older, pinned package set (ONLY the ones that failed).
pinnedCurlLibs = with pinnedPkgs; [
curlWithGnuTls # This is the critical component for the CURL_GNUTLS_3 symbol.
gnutls
];
# 3. Combine the modern runtime dependencies with the pinned compatibility libraries.
appImageDeps = [
pkgs.steam-run
pkgs.stdenv.cc.cc.lib # Ensures the modern C++ runtime is available
]
++ modernLibs
++ pinnedCurlLibs;
chataigneDesktopItem = {
desktopName = "Chataigne";
name = "chataigne";
exec = "chataigne"; # The name of the wrapper script in $out/bin
icon = "chataigne"; # The name of the icon file (without extension)
genericName = "Creative Control Software";
comment = "Control and experiment with creative applications, hardware, and media.";
categories = [
"AudioVideo"
"Development"
];
};
in
# 4. Create the final runnable derivation
pkgs.stdenv.mkDerivation {
pname = "chataigne-runner";
version = "1.0";
# --- Attributes needed for AppImage running (not compiling) ---
src = ./.;
dontUnpack = true;
dontBuild = true;
# --------------------------------------------------
# Inject the combined dependencies into the environment
buildInputs = appImageDeps;
# The install phase creates an executable wrapper script, extracts the AppImage,
# and now handles the desktop file and icon.
installPhase = ''
mkdir -p $out/bin
# --- STRATEGY: Extract AppImage contents to bypass FUSE, then fix LD_LIBRARY_PATH ---
echo "Extracting AppImage contents to bypass FUSE requirement..."
# Use the absolute Nix Store path of the AppImage
${appImageSrc} --appimage-extract
echo "appimage extracted"
# 2. Check if extraction worked and move the content to $out
if [ ! -d "squashfs-root" ]; then
echo "Extraction failed. The AppImage may not support --appimage-extract."
exit 1
fi
# 2. CRITICAL FIX: Manually create and install the .desktop file
mkdir -p $out/share/applications
# pkgs.lib.makeDesktopItem takes the metadata and creates a small derivation
# We copy the resulting .desktop file from that derivation's output path ($desktop_file_path)
local desktop_file_path="${pkgs.makeDesktopItem chataigneDesktopItem}"
# The file is typically named $name.desktop inside the share/applications folder of the new derivation
cp $desktop_file_path/share/applications/chataigne.desktop $out/share/applications/
# Copy the extracted contents into the output directory
cp -r squashfs-root $out/
# --- DESKTOP ENTRY & ICON (NEW) ---
echo "Processing icon and desktop file..."
# AppImages usually place the icon in squashfs-root/.DirIcon or similar
# We will assume it's in the root of the extracted content.
local icon_source="$out/squashfs-root/.DirIcon"
local icon_target="$out/share/icons/hicolor/128x128/apps/chataigne.png" # Standard location
# Use the icon if it exists (AppImages often use a .png or .svg)
if [ -f "$icon_source" ]; then
mkdir -p "$(dirname "$icon_target")"
cp "$icon_source" "$icon_target"
else
echo "Warning: Could not find icon at $icon_source. Using default/no icon."
fi
# ----------------------------------
# 3. Create the 'chataigne' executable wrapper
cat > $out/bin/chataigne << EOF
#!${pkgs.stdenv.shell}
# The LD_LIBRARY_PATH is created using all dependencies (excluding the wrapper 'steam-run').
# This ensures the AppImage finds the pinned CURL library.
export LD_LIBRARY_PATH="${pkgs.lib.makeLibraryPath (pkgs.lib.remove pkgs.steam-run appImageDeps)}:$LD_LIBRARY_PATH"
# Use steam-run to launch the main execution script inside the extracted folder.
exec ${pkgs.steam-run}/bin/steam-run "$out/squashfs-root/AppRun" "\$@"
EOF
chmod +x $out/bin/chataigne
'';
meta = {
description = "Declarative runner for the Chataigne AppImage, providing necessary dependencies.";
homepage = "https://chataigne.io/"; # Example: Add the actual homepage
license = pkgs.lib.licenses.unfree; # AppImages are often proprietary/unfree
platforms = [ "x86_64-linux" ];
};
}

27
modules/chataigne/flake.lock generated Normal file
View File

@@ -0,0 +1,27 @@
{
"nodes": {
"nixpkgs": {
"locked": {
"lastModified": 1773222311,
"narHash": "sha256-BHoB/XpbqoZkVYZCfXJXfkR+GXFqwb/4zbWnOr2cRcU=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "0590cd39f728e129122770c029970378a79d076a",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixos-25.11",
"repo": "nixpkgs",
"type": "github"
}
},
"root": {
"inputs": {
"nixpkgs": "nixpkgs"
}
}
},
"root": "root",
"version": 7
}

View File

@@ -1,51 +1,82 @@
{ {
description = "A flake for running the Chataigne AppImage with necessary patched dependencies."; description = "Local wrapper for Chataigne AppImage";
inputs = { inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; # Modern Nixpkgs nixpkgs.url = "github:nixos/nixpkgs/nixos-25.11";
# Pinned Nixpkgs for compatibility (the commit that fixes the CURL_GNUTLS_3 issue)
pinned-nixpkgs = {
url = "github:NixOS/nixpkgs/5171d7b0a9fbaaf216c873622eb5115b6db97957";
flake = false; # Treat as a tarball input, not a flake
};
}; };
outputs = outputs =
{ { self, nixpkgs }:
self,
nixpkgs,
pinned-nixpkgs,
...
}:
let let
# Supported systems system = "x86_64-linux";
supportedSystems = [ "x86_64-linux" ]; pkgs = import nixpkgs { inherit system; };
# The main package definition logic is imported as a function # The libraries you requested
chataigne-appimage-runner = import ./chataigne.nix; deps = with pkgs; [
curlFull
gnutls
libxrandr
alsa-lib
freetype
avahi
libglvnd
curl
SDL2
hidapi
libpulseaudio
lz4
openssl
libcap
libxcrypt
libgcrypt
libbsd
zlib
glib
];
# Function to generate the package set for each system # Wrap the local AppImage file
forAllSystems = f: nixpkgs.lib.genAttrs supportedSystems (system: f system); chataigne-bin = pkgs.appimageTools.wrapType2 {
pname = "chataigne";
version = "1.10.3";
# This points to the file in the same directory as flake.nix
src = ./Chataigne-linux-x64-1.10.3.AppImage;
extraPkgs = pkgs: deps;
};
# Create the Desktop Entry
chataigne-desktop = pkgs.makeDesktopItem {
name = "chataigne";
exec = "chataigne";
icon = "chataigne";
comment = "Modular machine for art and technology";
desktopName = "Chataigne";
categories = [
"AudioVideo"
"Development"
];
};
in in
{ {
packages = forAllSystems ( # packages.${system}.default = chataigne-bin;
system:
let
pkgs = import nixpkgs {
inherit system;
config.allowUnfree = true;
};
pinnedPkgs = import pinned-nixpkgs { inherit system; };
in
{
chataigne = chataigne-appimage-runner {
inherit pkgs pinnedPkgs;
};
# Also expose the default package for convenience devShells.${system}.default = pkgs.mkShell {
default = self.packages.${system}.chataigne; # Packages you want available in your shell
} buildInputs = [
); chataigne-bin
];
# Environmental variables or shell hooks
shellHook = ''
echo "something"
'';
};
# This allows you to run 'nix run' or install it via system config
packages.${system}.default = pkgs.symlinkJoin {
name = "chataigne";
paths = [
chataigne-bin
chataigne-desktop
];
};
}; };
} }

View File

@@ -6,7 +6,7 @@
let let
mesa-good-pkg = inputs.mesa-davinci.legacyPackages.x86_64-linux.mesa; mesa-good-pkg = inputs.mesa-davinci.legacyPackages.x86_64-linux.mesa;
pkgs = import (builtins.fetchTarball { pkgs = import (builtins.fetchTarball {
url = "https://github.com/NixOS/nixpkgs/archive/nixos-unstable.tar.gz"; url = "https://github.com/NixOS/nixpkgs/archive/ec7c70d12ce2fc37cb92aff673dcdca89d187bae.tar.gz";
}) { config.allowUnfree = true; }; }) { config.allowUnfree = true; };
pkgs-pinned = pkgs-pinned =
import import
@@ -18,6 +18,7 @@ let
allowUnfree = true; allowUnfree = true;
}; };
}; };
ffmpeg-encoder-plugin = pkgs.stdenv.mkDerivation (finalAttrs: { ffmpeg-encoder-plugin = pkgs.stdenv.mkDerivation (finalAttrs: {
pname = "ffmpeg-encoder-plugin"; pname = "ffmpeg-encoder-plugin";
version = "1.2.1"; version = "1.2.1";
@@ -25,24 +26,16 @@ let
src = pkgs.fetchFromGitHub { src = pkgs.fetchFromGitHub {
owner = "EdvinNilsson"; owner = "EdvinNilsson";
repo = "ffmpeg_encoder_plugin"; repo = "ffmpeg_encoder_plugin";
tag = "v${finalAttrs.version}"; rev = "v${finalAttrs.version}";
hash = "sha256-F4Q8YCXD5UldTwLbWK4nHacNPQ/B+4yLL96sq7xZurM="; hash = "sha256-F4Q8YCXD5UldTwLbWK4nHacNPQ/B+4yLL96sq7xZurM=";
}; };
nativeBuildInputs = with pkgs; [ nativeBuildInputs = [ pkgs.cmake ];
cmake buildInputs = [ pkgs.ffmpeg-full ];
ffmpeg-full
];
buildInputs = with pkgs; [ ffmpeg ];
installPhase = '' installPhase = ''
runHook preInstall
mkdir -p $out mkdir -p $out
cp ffmpeg_encoder_plugin.dvcp $out/ cp ffmpeg_encoder_plugin.dvcp $out/
runHook postInstall
''; '';
}); });
@@ -56,17 +49,17 @@ let
# #
# Note: $out IS /opt/resolve # Note: $out IS /opt/resolve
postInstall = '' postInstall = ''
${old.postInstall or ""} ${old.postInstall or ""}
${lib.getExe pkgs.perl} -pi -e 's/\x74\x11\xe8\x21\x23\x00\x00/\xeb\x11\xe8\x21\x23\x00\x00/g' $out/bin/resolve ${lib.getExe pkgs.perl} -pi -e 's/\x74\x11\xe8\x21\x23\x00\x00/\xeb\x11\xe8\x21\x23\x00\x00/g' $out/bin/resolve
${lib.getExe pkgs.perl} -pi -e 's/\x03\x00\x89\x45\xFC\x83\x7D\xFC\x00\x74\x11\x48\x8B\x45\xC8\x8B/\x03\x00\x89\x45\xFC\x83\x7D\xFC\x00\xEB\x11\x48\x8B\x45\xC8\x8B/' $out/bin/resolve ${lib.getExe pkgs.perl} -pi -e 's/\x03\x00\x89\x45\xFC\x83\x7D\xFC\x00\x74\x11\x48\x8B\x45\xC8\x8B/\x03\x00\x89\x45\xFC\x83\x7D\xFC\x00\xEB\x11\x48\x8B\x45\xC8\x8B/' $out/bin/resolve
${lib.getExe pkgs.perl} -pi -e 's/\x74\x11\x48\x8B\x45\xC8\x8B\x55\xFC\x89\x50\x58\xB8\x00\x00\x00/\xEB\x11\x48\x8B\x45\xC8\x8B\x55\xFC\x89\x50\x58\xB8\x00\x00\x00/' $out/bin/resolve ${lib.getExe pkgs.perl} -pi -e 's/\x74\x11\x48\x8B\x45\xC8\x8B\x55\xFC\x89\x50\x58\xB8\x00\x00\x00/\xEB\x11\x48\x8B\x45\xC8\x8B\x55\xFC\x89\x50\x58\xB8\x00\x00\x00/' $out/bin/resolve
${lib.getExe pkgs.perl} -pi -e 's/\x41\xb6\x01\x84\xc0\x0f\x84\xb0\x00\x00\x00\x48\x85\xdb\x74\x08\x45\x31\xf6\xe9\xa3\x00\x00\x00/\x41\xb6\x00\x84\xc0\x0f\x84\xb0\x00\x00\x00\x48\x85\xdb\x74\x08\x45\x31\xf6\xe9\xa3\x00\x00\x00/' $out/bin/resolve ${lib.getExe pkgs.perl} -pi -e 's/\x41\xb6\x01\x84\xc0\x0f\x84\xb0\x00\x00\x00\x48\x85\xdb\x74\x08\x45\x31\xf6\xe9\xa3\x00\x00\x00/\x41\xb6\x00\x84\xc0\x0f\x84\xb0\x00\x00\x00\x48\x85\xdb\x74\x08\x45\x31\xf6\xe9\xa3\x00\x00\x00/' $out/bin/resolve
touch $out/.license/blackmagic.lic touch $out/.license/blackmagic.lic
echo -e "LICENSE blackmagic davinciresolvestudio 999999 permanent uncounted\n hostid=ANY issuer=CGP customer=CGP issued=28-dec-2023\n akey=0000-0000-0000-0000 _ck=00 sig=\"00\"" > $out/.license/blackmagic.lic echo -e "LICENSE blackmagic davinciresolvestudio 999999 permanent uncounted\n hostid=ANY issuer=CGP customer=CGP issued=28-dec-2023\n akey=0000-0000-0000-0000 _ck=00 sig=\"00\"" > $out/.license/blackmagic.lic
mkdir -p $out/IOPlugins/ffmpeg_encoder_plugin.dvcp.bundle/Contents/Linux-x86-64/ mkdir -p $out/IOPlugins/ffmpeg_encoder_plugin.dvcp.bundle/Contents/Linux-x86-64
cp ${ffmpeg-encoder-plugin}/ffmpeg_encoder_plugin.dvcp $out/IOPlugins/ffmpeg_encoder_plugin.dvcp.bundle/Contents/Linux-x86-64/ cp ${ffmpeg-encoder-plugin}/ffmpeg_encoder_plugin.dvcp $out/IOPlugins/ffmpeg_encoder_plugin.dvcp.bundle/Contents/Linux-x86-64/
''; '';
}); });
in in
@@ -104,28 +97,28 @@ let
python3.pkgs.numpy python3.pkgs.numpy
udev udev
xdg-utils # xdg-open needed to open URLs xdg-utils # xdg-open needed to open URLs
xorg.libICE libICE
xorg.libSM libSM
xorg.libX11 libX11
xorg.libXcomposite libXcomposite
xorg.libXcursor libXcursor
xorg.libXdamage libXdamage
xorg.libXext libXext
xorg.libXfixes libXfixes
xorg.libXi libXi
xorg.libXinerama libXinerama
xorg.libXrandr libXrandr
xorg.libXrender libXrender
xorg.libXt libXt
xorg.libXtst libXtst
xorg.libXxf86vm libXxf86vm
xorg.libxcb libxcb
xorg.xcbutil xcbutil
xorg.xcbutilimage xcbutilimage
xorg.xcbutilkeysyms xcbutilkeysyms
xorg.xcbutilrenderutil xcbutilrenderutil
xorg.xcbutilwm xcbutilwm
xorg.xkeyboardconfig xkeyboardconfig
zlib zlib
ocl-icd ocl-icd
rocmPackages.clr.icd rocmPackages.clr.icd