Compare commits
5 commits
3469015c29
...
ff55cb1bb7
Author | SHA1 | Date | |
---|---|---|---|
Joseph DiGiovanni | ff55cb1bb7 | ||
Joseph DiGiovanni | 9065b857d3 | ||
Joseph DiGiovanni | 600bd4b546 | ||
Joseph DiGiovanni | 9b12aa1de3 | ||
Joseph DiGiovanni | 6d0070ace0 |
|
@ -31,6 +31,7 @@ import inputs.nixpkgs {
|
|||
inherit system;
|
||||
overlays = [
|
||||
customPkgs
|
||||
(import ./overlays/f3d-thumbnailer-fix.nix)
|
||||
inputs.nix-vscode-extensions.overlays.default
|
||||
unstableOverlay
|
||||
];
|
||||
|
|
23
custom-pkgs/overlays/f3d-thumbnailer-fix.nix
Normal file
23
custom-pkgs/overlays/f3d-thumbnailer-fix.nix
Normal file
|
@ -0,0 +1,23 @@
|
|||
final: prev: {
|
||||
# Add this F3D to `environment.systemPackages` and its mimetypes and
|
||||
# thumbnailers will be picked up if your system is set up for it, i.e. the
|
||||
# following configuration is present (desktop modules usually set it):
|
||||
# {
|
||||
# xdg.mime.enable = true;
|
||||
# environment.pathsToLink = [ "/share/thumbnailers" ];
|
||||
# }
|
||||
f3d = prev.f3d.overrideAttrs (oldAttrs: {
|
||||
cmakeFlags = (oldAttrs.cmakeFlags or [ ]) ++ [
|
||||
# This will set configuration directory to $out/share/f3d/configs
|
||||
# in F3D's configuration search path (see postInstall).
|
||||
"-DF3D_LINUX_INSTALL_DEFAULT_CONFIGURATION_FILE_IN_PREFIX=ON"
|
||||
];
|
||||
|
||||
# By default, configuration (including thumbnailer config) files and
|
||||
# mimetypes are not installed.
|
||||
postInstall = ''
|
||||
cmake --install . --prefix "$out" --component configuration
|
||||
cmake --install . --prefix "$out" --component mimetypes
|
||||
'';
|
||||
});
|
||||
}
|
18
flake.lock
18
flake.lock
|
@ -232,11 +232,11 @@
|
|||
"nixpkgs": "nixpkgs_2"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1721698116,
|
||||
"narHash": "sha256-JdgX4TIroHxE4lBzZSyxxSvWGi8zveV34KfHuS9by2w=",
|
||||
"lastModified": 1722043670,
|
||||
"narHash": "sha256-MiPeYwr+BjSlQqAhEWvZQGBCZFcKrPBaaobTTcEGMfU=",
|
||||
"owner": "nix-community",
|
||||
"repo": "nix-vscode-extensions",
|
||||
"rev": "7beca30ffc495e5e3980495e1179939abf0ab8a6",
|
||||
"rev": "b435250a94728e8b07828570cb29fc5fc79b604f",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -279,11 +279,11 @@
|
|||
},
|
||||
"nixpkgs-unstable": {
|
||||
"locked": {
|
||||
"lastModified": 1721562059,
|
||||
"narHash": "sha256-Tybxt65eyOARf285hMHIJ2uul8SULjFZbT9ZaEeUnP8=",
|
||||
"lastModified": 1721924956,
|
||||
"narHash": "sha256-Sb1jlyRO+N8jBXEX9Pg9Z1Qb8Bw9QyOgLDNMEpmjZ2M=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "68c9ed8bbed9dfce253cc91560bf9043297ef2fe",
|
||||
"rev": "5ad6a14c6bf098e98800b091668718c336effc95",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -311,11 +311,11 @@
|
|||
},
|
||||
"nixpkgs_3": {
|
||||
"locked": {
|
||||
"lastModified": 1721548954,
|
||||
"narHash": "sha256-7cCC8+Tdq1+3OPyc3+gVo9dzUNkNIQfwSDJ2HSi2u3o=",
|
||||
"lastModified": 1721949857,
|
||||
"narHash": "sha256-DID446r8KsmJhbCzx4el8d9SnPiE8qa6+eEQOJ40vR0=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "63d37ccd2d178d54e7fb691d7ec76000740ea24a",
|
||||
"rev": "a1cc729dcbc31d9b0d11d86dc7436163548a9665",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
|
|
@ -2,15 +2,14 @@
|
|||
|
||||
{
|
||||
imports = [
|
||||
./outline-theme
|
||||
./extensions
|
||||
./gnome-console.nix
|
||||
./firefox-gnome-theme.nix
|
||||
./outline-theme
|
||||
./steam-adwaita-theme.nix
|
||||
];
|
||||
|
||||
dconf.settings = {
|
||||
"org/gnome/Console".theme = "auto";
|
||||
|
||||
"org/gnome/desktop/background" = {
|
||||
picture-uri = "file:///home/${config.home.username}/Pictures/Wallpapers/Light.jpg";
|
||||
picture-uri-dark = "file:///home/${config.home.username}/Pictures/Wallpapers/Dark.jpg";
|
||||
|
|
38
home/common/gnome/gnome-console.nix
Normal file
38
home/common/gnome/gnome-console.nix
Normal file
|
@ -0,0 +1,38 @@
|
|||
{ lib, ... }:
|
||||
|
||||
{
|
||||
dconf.settings = {
|
||||
"org/gnome/Console" =
|
||||
let
|
||||
fontSize = 10;
|
||||
fontWidth = fontSize * 0.8;
|
||||
lineSpacing = fontSize * 0.4 * 2; # Each line has a space of 0.4em above and below it
|
||||
|
||||
terminalMode = {
|
||||
# Based on VT100 video modes
|
||||
standard = [ 80 24 ];
|
||||
standardTall = [ 80 43 ];
|
||||
extendedWide = [ 132 24 ];
|
||||
extended = [ 132 43 ];
|
||||
};
|
||||
|
||||
terminalSize = terminalMode.extended;
|
||||
in
|
||||
{
|
||||
custom-font = "Source Code Pro " + toString fontSize;
|
||||
|
||||
last-window-size = with builtins; lib.hm.gvariant.mkTuple [
|
||||
(ceil ((elemAt terminalSize 0 * fontWidth) + 12))
|
||||
(ceil ((elemAt terminalSize 1 * (fontSize + lineSpacing)) + 48))
|
||||
];
|
||||
|
||||
theme = "night";
|
||||
use-system-font = false;
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
@ -2,9 +2,15 @@
|
|||
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
f3d # 3D model thumbnailer and viewer
|
||||
# TODO: Packages marked with ! do not seem to work
|
||||
f3d #! 3D model thumbnailer and viewer
|
||||
ffmpegthumbnailer #! Video thumbnailer
|
||||
freetype # Font thumbnailer
|
||||
libgsf #! odf thumbnailer
|
||||
localsend
|
||||
poppler #! pdf thumbnailer
|
||||
nufraw-thumbnailer # RAW image thumbnailer
|
||||
icoextract # Windows executable thumbnailer
|
||||
webp-pixbuf-loader # webp thumbnailer
|
||||
];
|
||||
}
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
home.packages = with pkgs; [
|
||||
blender
|
||||
btrfs-assistant
|
||||
bottles
|
||||
darktable
|
||||
discord
|
||||
element-desktop
|
||||
|
@ -13,9 +14,11 @@
|
|||
openspades
|
||||
steam
|
||||
transmission-gtk
|
||||
ttyper
|
||||
github-desktop
|
||||
unstable.godot_4
|
||||
youtube-music
|
||||
via
|
||||
neovim
|
||||
];
|
||||
}
|
||||
|
|
|
@ -13,11 +13,15 @@ let
|
|||
fi
|
||||
'';
|
||||
|
||||
gsr-start-replay = pkgs.writeShellScriptBin "gsr-start-replay" ''
|
||||
gsr-record = pkgs.writeShellScriptBin "gsr-start-recording" ''
|
||||
systemctl --user start gpu-screen-recorder.service
|
||||
'';
|
||||
|
||||
gsr-replay = pkgs.writeShellScriptBin "gsr-start-replay" ''
|
||||
systemctl --user start gsr-replay.service
|
||||
'';
|
||||
|
||||
gsr-stop-replay = pkgs.writeShellScriptBin "gsr-stop-replay" ''
|
||||
gsr-stop = pkgs.writeShellScriptBin "gsr-stop-replay" ''
|
||||
systemctl --user stop gsr-replay.service
|
||||
'';
|
||||
|
||||
|
@ -26,8 +30,9 @@ in
|
|||
{
|
||||
environment.systemPackages = [
|
||||
gsr-save-replay
|
||||
gsr-start-replay
|
||||
gsr-stop-replay
|
||||
gsr-replay
|
||||
gsr-record
|
||||
gsr-stop
|
||||
];
|
||||
|
||||
security.wrappers."gsr-kms-server" = {
|
||||
|
@ -53,47 +58,61 @@ in
|
|||
extraGSettingsOverridePackages = with pkgs; [ gnome.gnome-settings-daemon ];
|
||||
};
|
||||
|
||||
systemd.user.services."gsr-replay" = {
|
||||
after = [ "graphical-session.target" ];
|
||||
description = "GPU Screen Recorder replay service";
|
||||
enable = false; # Disabled by default to save resources
|
||||
serviceConfig = {
|
||||
Environment = [
|
||||
"AUDIO_CODEC=opus"
|
||||
"CODEC=auto"
|
||||
"CONTAINER=mkv"
|
||||
"FRAMERATE=60"
|
||||
"MAKEFOLDERS=no"
|
||||
"QUALITY=very_high"
|
||||
"REPLAYDURATION=300"
|
||||
"WINDOW=screen"
|
||||
];
|
||||
ExecStart = pkgs.writeShellScript "start-gpu-screen-recorder-replay" ''
|
||||
${pkgs.gpu-screen-recorder}/bin/gpu-screen-recorder -a "$(${pkgs.pulseaudio}/bin/pactl get-default-sink).monitor" -a "$(${pkgs.pulseaudio}/bin/pactl get-default-source)" -ac "$AUDIO_CODEC" -c "$CONTAINER" -f "$FRAMERATE" -k "$CODEC" -mf "$MAKEFOLDERS" -o "${outputDir}" -q "$QUALITY" -r "$REPLAYDURATION" -v no -w "$WINDOW" $ADDITIONAL_ARGS
|
||||
'';
|
||||
Restart = "on-failure";
|
||||
RestartSec = "5s";
|
||||
Type = "simple";
|
||||
};
|
||||
wantedBy = [ "graphical-session.target" ];
|
||||
};
|
||||
systemd.user.services = rec {
|
||||
"gpu-screen-recorder" = {
|
||||
after = [ "graphical-session.target" ];
|
||||
description = "GPU Screen Recorder service";
|
||||
serviceConfig = {
|
||||
Environment = [
|
||||
"AUDIO_CODEC=opus"
|
||||
"CODEC=auto"
|
||||
"CONTAINER=mkv"
|
||||
"FRAMERATE=60"
|
||||
"MAKEFOLDERS=no"
|
||||
"QUALITY=very_high"
|
||||
"WINDOW=screen"
|
||||
];
|
||||
ExecStart = pkgs.writeShellScript "start-gpu-screen-recorder-replay" ''
|
||||
#${pkgs.killall}/bin/killall gpu-screen-recorder
|
||||
|
||||
systemd.user.services."gsr-audio-device-changer" = {
|
||||
after = [ "gsr-replay.service" ];
|
||||
description = "Restart GPU Screen Recorder replay service on audio device change";
|
||||
requires = [ "gsr-replay.service" ];
|
||||
serviceConfig = {
|
||||
ExecStart = pkgs.writeShellScript "gsr-restart-on-audio-device-change" ''
|
||||
${pkgs.pulseaudio}/bin/pactl subscribe | while read -r event; do
|
||||
if [[ $event == *"Event 'change' on server"* ]]; then
|
||||
systemctl --user restart gsr-replay.service
|
||||
if [ -n "$REPLAYDURATION" ]; then
|
||||
REPLAYARG="-r $REPLAYDURATION"
|
||||
else
|
||||
REPLAYARG=""
|
||||
fi
|
||||
done
|
||||
'';
|
||||
Restart = "always";
|
||||
RestartSec = "5s";
|
||||
Type = "simple";
|
||||
|
||||
${pkgs.gpu-screen-recorder}/bin/gpu-screen-recorder $REPLAYARG -a "$(${pkgs.pulseaudio}/bin/pactl get-default-sink).monitor" -a "$(${pkgs.pulseaudio}/bin/pactl get-default-source)" -ac "$AUDIO_CODEC" -c "$CONTAINER" -f "$FRAMERATE" -k "$CODEC" -mf "$MAKEFOLDERS" -o "${outputDir}" -q "$QUALITY" -v no -w "$WINDOW" $ADDITIONAL_ARGS
|
||||
'';
|
||||
Restart = "on-failure";
|
||||
RestartSec = "5s";
|
||||
Type = "simple";
|
||||
};
|
||||
};
|
||||
|
||||
"gsr-replay" = gpu-screen-recorder // {
|
||||
description = "GPU Screen Recorder replay service";
|
||||
serviceConfig = gpu-screen-recorder.serviceConfig // {
|
||||
Environment = gpu-screen-recorder.serviceConfig.Environment ++ [ "REPLAYDURATION=300" ];
|
||||
};
|
||||
};
|
||||
|
||||
"gsr-replay-change-audio" = {
|
||||
after = [ "gsr-replay.service" ];
|
||||
description = "Restart GPU Screen Recorder replay service on audio device change";
|
||||
requires = [ "gsr-replay.service" ];
|
||||
serviceConfig = {
|
||||
ExecStart = pkgs.writeShellScript "gsr-restart-on-audio-device-change" ''
|
||||
${pkgs.pulseaudio}/bin/pactl subscribe | while read -r event; do
|
||||
if [[ $event == *"Event 'change' on server"* ]]; then
|
||||
systemctl --user restart gsr-replay.service
|
||||
fi
|
||||
done
|
||||
'';
|
||||
Restart = "on-failure";
|
||||
RestartSec = "5s";
|
||||
Type = "simple";
|
||||
};
|
||||
wantedBy = [ "gsr-replay.service" ];
|
||||
};
|
||||
wantedBy = [ "gsr-replay.service" ];
|
||||
};
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue