diff --git a/flake.lock b/flake.lock index 97110be..f82dbfb 100644 --- a/flake.lock +++ b/flake.lock @@ -18,11 +18,11 @@ "treefmt-nix": "treefmt-nix" }, "locked": { - "lastModified": 1776678252, - "narHash": "sha256-kRvF2710eJtYs9NWkfNjxOz4bHzXVqN6RDmEyXHDXdw=", + "lastModified": 1776949098, + "narHash": "sha256-rqp4XGkcirU3dlcvJiFhxmQuwV1E6UzDpElB8/2qqZ0=", "owner": "mrshmllow", "repo": "affinity-nix", - "rev": "8371b47a54d1611a689973fa28bd1a145cd813da", + "rev": "9989df33b2aa6ad66441a2c83b817652754d8705", "type": "github" }, "original": { @@ -117,11 +117,11 @@ }, "crane": { "locked": { - "lastModified": 1775839657, - "narHash": "sha256-SPm9ck7jh3Un9nwPuMGbRU04UroFmOHjLP56T10MOeM=", + "lastModified": 1776635034, + "narHash": "sha256-OEOJrT3ZfwbChzODfIH4GzlNTtOFuZFWPtW7jIeR8xU=", "owner": "ipetkov", "repo": "crane", - "rev": "7cf72d978629469c4bd4206b95c402514c1f6000", + "rev": "dc7496d8ea6e526b1254b55d09b966e94673750f", "type": "github" }, "original": { @@ -158,11 +158,11 @@ "rust-analyzer-src": "rust-analyzer-src" }, "locked": { - "lastModified": 1776153734, - "narHash": "sha256-QvkVX4Go+BnNgQQLc5Ma3WNBZOG5Jpdqsy8Ri0/CbSQ=", + "lastModified": 1776845169, + "narHash": "sha256-Ya6Ba5oC0+PK1TSU4Rkjpoca73mUp6FoHQV5QGnqbx0=", "owner": "nix-community", "repo": "fenix", - "rev": "a8b0e62fb39299fbeb1aa365f4b57e2c258a178e", + "rev": "f0b5be1fa2891221ba8b48784f8fded5ef15301f", "type": "github" }, "original": { @@ -201,11 +201,11 @@ }, "locked": { "dir": "pkgs/firefox-addons", - "lastModified": 1776657773, - "narHash": "sha256-GgExKCDspgASVM6sRH0VcVyixQznxuR4tjiAA7MfKxs=", + "lastModified": 1776916994, + "narHash": "sha256-FgqUwRZ2bwbE5w1bCUv9MB3gvwqZ4oEyCgZ6z/6jdTY=", "owner": "rycee", "repo": "nur-expressions", - "rev": "986236cd6fad0979233ae5e73456a365f79ff198", + "rev": "a2236006e5c70e2fc06e9acb016b1ac9c0fd5935", "type": "gitlab" }, "original": { @@ -346,11 +346,11 @@ ] }, "locked": { - "lastModified": 1775585728, - "narHash": "sha256-8Psjt+TWvE4thRKktJsXfR6PA/fWWsZ04DVaY6PUhr4=", + "lastModified": 1776796298, + "narHash": "sha256-PcRvlWayisPSjd0UcRQbhG8Oqw78AcPE6x872cPRHN8=", "owner": "cachix", "repo": "git-hooks.nix", - "rev": "580633fa3fe5fc0379905986543fd7495481913d", + "rev": "3cfd774b0a530725a077e17354fbdb87ea1c4aad", "type": "github" }, "original": { @@ -403,11 +403,11 @@ ] }, "locked": { - "lastModified": 1776695811, - "narHash": "sha256-UPO3SFTbmxTOiioO7j1d1Unus63+jO/6mNNS+lsgjBQ=", + "lastModified": 1776964438, + "narHash": "sha256-AF0cby9Xuijr5qaFpYKbm1mExV956Hk233bel6QxpFw=", "owner": "nix-community", "repo": "home-manager", - "rev": "0a8d50edf28d537ce7538fbbf207fa7939d41abc", + "rev": "e09259dd2e147d35ef889784b51e89b0a10ffe15", "type": "github" }, "original": { @@ -476,11 +476,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1776169885, - "narHash": "sha256-l/iNYDZ4bGOAFQY2q8y5OAfBBtrDAaPuRQqWaFHVRXM=", + "lastModified": 1776548001, + "narHash": "sha256-ZSK0NL4a1BwVbbTBoSnWgbJy9HeZFXLYQizjb2DPF24=", "owner": "nixos", "repo": "nixpkgs", - "rev": "4bd9165a9165d7b5e33ae57f3eecbcb28fb231c9", + "rev": "b12141ef619e0a9c1c84dc8c684040326f27cdcc", "type": "github" }, "original": { @@ -529,11 +529,11 @@ "noctalia-qs": "noctalia-qs" }, "locked": { - "lastModified": 1776666525, - "narHash": "sha256-H5M/eoxQ0ilgxEqGRH2Ptq/ViS72Xu16IjWweO/OdLg=", + "lastModified": 1776888984, + "narHash": "sha256-Up2F/eoMuPUsZnPVYdH5TMHe1TBP2Ue1QuWd0vWZoxY=", "owner": "noctalia-dev", "repo": "noctalia-shell", - "rev": "ed1fff6260470d6f5cbe1951a8cceccb5265d61b", + "rev": "2c1808f9f8937fc0b82c54af513f7620fec56d71", "type": "github" }, "original": { @@ -630,11 +630,11 @@ ] }, "locked": { - "lastModified": 1776386905, - "narHash": "sha256-m6H7IIn7RjZ9C42/x6v/p/TvOl0TDEpqz4fEa6+wFow=", + "lastModified": 1776795718, + "narHash": "sha256-YrqHeE9ZEnmxJiXE+IBAxbmNRFPE7mn9KbxZ3Mpu388=", "owner": "Diegiwg", "repo": "PrismLauncher-Cracked", - "rev": "9d2de362503d5a7f9ff37c435b3dc4c38223d57e", + "rev": "0c20d448a3c89cbff85ef5dc7420bf60dc1e65ff", "type": "github" }, "original": { @@ -659,11 +659,11 @@ "rust-analyzer-src": { "flake": false, "locked": { - "lastModified": 1776115521, - "narHash": "sha256-N/R1//Xd8vr84LtyTy8CVz7V2n9NJXXlJEODSunLE9c=", + "lastModified": 1776800521, + "narHash": "sha256-f8YJfwAOsLFpIoqZuX3yF69UvMLrkx7iVzMH1pJU7cM=", "owner": "rust-lang", "repo": "rust-analyzer", - "rev": "5205b52ea60dd49c7e33dd2ad1a3e7ef55bb30ec", + "rev": "8954b66d43225e62c92e8bbcc8500191b5cceb1e", "type": "github" }, "original": { @@ -710,11 +710,11 @@ "tinted-zed": "tinted-zed" }, "locked": { - "lastModified": 1776170745, - "narHash": "sha256-Tl1aZVP5EIlT+k0+iAKH018GLHJpLz3hhJ0LNQOWxCc=", + "lastModified": 1776893932, + "narHash": "sha256-AFD5cf9eNqXq1brHS63xeZy2xKZMgG9J86XJ9I2eLn8=", "owner": "danth", "repo": "stylix", - "rev": "e3861617645a43c9bbefde1aa6ac54dd0a44bfa9", + "rev": "84971726c7ef0bb3669a5443e151cc226e65c518", "type": "github" }, "original": { diff --git a/hosts/Garand-Desktop/system-modules.nix b/hosts/Garand-Desktop/system-modules.nix index 8690f06..b79dbde 100644 --- a/hosts/Garand-Desktop/system-modules.nix +++ b/hosts/Garand-Desktop/system-modules.nix @@ -30,6 +30,11 @@ _: { gamescope.enable = false; # Gamescope: micro‑compositor for games steam.enable = true; # Steam: platform for buying and playing games + /* + Media & Graphics + */ + affinity.enable = true; # Affinity: professional graphics suite + packages = { /* Container & Packaging @@ -76,7 +81,6 @@ _: { /* Media & Graphics */ - affinity.enable = true; # Affinity: professional graphics suite eyeOfGnome.enable = true; # Eye of GNOME: image viewer freetube.enable = false; # FreeTube: privacy‑friendly YouTube client gimp.enable = false; # GIMP: GNU Image Manipulation Program diff --git a/hosts/Garand-Laptop/system-modules.nix b/hosts/Garand-Laptop/system-modules.nix index 8690f06..b79dbde 100644 --- a/hosts/Garand-Laptop/system-modules.nix +++ b/hosts/Garand-Laptop/system-modules.nix @@ -30,6 +30,11 @@ _: { gamescope.enable = false; # Gamescope: micro‑compositor for games steam.enable = true; # Steam: platform for buying and playing games + /* + Media & Graphics + */ + affinity.enable = true; # Affinity: professional graphics suite + packages = { /* Container & Packaging @@ -76,7 +81,6 @@ _: { /* Media & Graphics */ - affinity.enable = true; # Affinity: professional graphics suite eyeOfGnome.enable = true; # Eye of GNOME: image viewer freetube.enable = false; # FreeTube: privacy‑friendly YouTube client gimp.enable = false; # GIMP: GNU Image Manipulation Program diff --git a/hosts/default/system-modules.nix b/hosts/default/system-modules.nix index 58f0f79..3d53757 100644 --- a/hosts/default/system-modules.nix +++ b/hosts/default/system-modules.nix @@ -30,6 +30,11 @@ _: { gamescope.enable = false; # Gamescope: micro‑compositor for games steam.enable = true; # Steam: platform for buying and playing games + /* + Media & Graphics + */ + affinity.enable = false; # Affinity: professional graphics suite + packages = { /* Container & Packaging @@ -76,7 +81,6 @@ _: { /* Media & Graphics */ - affinity.enable = false; # Affinity: professional graphics suite eyeOfGnome.enable = true; # Eye of GNOME: image viewer freetube.enable = false; # FreeTube: privacy‑friendly YouTube client gimp.enable = false; # GIMP: GNU Image Manipulation Program diff --git a/modules/core/affinity.nix b/modules/core/affinity.nix new file mode 100644 index 0000000..f5990a3 --- /dev/null +++ b/modules/core/affinity.nix @@ -0,0 +1,14 @@ +{ + pkgs, + lib, + config, + inputs, + ... +}: { + options.affinity.enable = lib.mkEnableOption "Steam"; + + config = lib.mkIf config.affinity.enable { + nixpkgs.overlays = [inputs.affinity-nix.overlays.default]; + environment.systemPackages = with pkgs; [affinity-v3]; + }; +} diff --git a/modules/core/default.nix b/modules/core/default.nix index ce782b5..4f04bfc 100644 --- a/modules/core/default.nix +++ b/modules/core/default.nix @@ -1,6 +1,7 @@ {inputs, ...}: { imports = [ ./packages + ./affinity.nix ./boot.nix ./calendar.nix ./docker.nix diff --git a/modules/core/packages/packages.nix b/modules/core/packages/packages.nix index 60494e2..484b176 100644 --- a/modules/core/packages/packages.nix +++ b/modules/core/packages/packages.nix @@ -31,7 +31,6 @@ spaceCadetPinball = space-cadet-pinball; ttySolitaire = tty-solitaire; gimp = gimp; - affinity = inputs.affinity-nix.packages.${system}.v3; eyeOfGnome = eog; kdenlive = kdePackages.kdenlive; plex = [ diff --git a/modules/home/hyprland/binds.nix b/modules/home/hyprland/binds.nix index 3b0bc02..123a8b8 100644 --- a/modules/home/hyprland/binds.nix +++ b/modules/home/hyprland/binds.nix @@ -21,6 +21,7 @@ "SUPER, N, exec, dex ${desktopEntriesPath}/garandcloud.desktop #\"GarandCloud client\"" "SUPER, O, exec, onlyoffice-desktopeditors #\"Office suite\"" "SUPER, P, exec, plex-desktop #\"Plex media player\"" + "SUPER, R, exec, noctalia-shell ipc call plugin:screen-recorder saveReplay #\"Save Replay\"" "SUPER, Return, exec, kitty #\"Kitty terminal\"" "SUPER, S, exec, steam #\"Steam Game launcher\"" "SUPER, T, exec, thunar #\"File manager\"" @@ -51,6 +52,7 @@ "SUPER ALT, G, exec, dex ${desktopEntriesPath}/glance.desktop #\"Glance server panel\"" "SUPER ALT, M, exec, dex ${desktopEntriesPath}/mastodon.desktop #\"Mastodon social network client\"" "SUPER ALT, P, exec, noctalia-shell ipc call settings toggle #\"Open settings panel\"" + "SUPER ALT, R, exec, noctalia-shell ipc call plugin:screen-recorder toggleReplay #\"Toggle Replay\"" "SUPER ALT, S, exec, slack #\"Slack team communication tool\"" "SUPER ALT, T, exec, gedit #\"GNOME text editor\"" "SUPER ALT, W, exec, noctalia-shell ipc call wallpaper toggle #\"Toggle wallpaper\"" diff --git a/modules/home/hyprland/exec-once.nix b/modules/home/hyprland/exec-once.nix index 1990280..8fdbc88 100644 --- a/modules/home/hyprland/exec-once.nix +++ b/modules/home/hyprland/exec-once.nix @@ -1,10 +1,10 @@ _: { wayland.windowManager.hyprland.settings.exec-once = [ - "wl-paste --type text --watch cliphist store" # Saves text - "wl-paste --type image --watch cliphist store" # Saves images "dbus-update-activation-environment --all --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP" "systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP" "systemctl --user start hyprpolkitagent" "noctalia-shell" + "wl-paste --type text --watch cliphist store" # Saves text + "wl-paste --type image --watch cliphist store" # Saves images ]; } diff --git a/modules/home/noctalia/plugins.nix b/modules/home/noctalia/plugins.nix index 41dc4bf..7636392 100644 --- a/modules/home/noctalia/plugins.nix +++ b/modules/home/noctalia/plugins.nix @@ -27,6 +27,10 @@ in { enabled = true; sourceUrl = sourceUrl; }; + screen-recorder = { + enabled = true; + sourceUrl = sourceUrl; + }; }; version = 2; }; @@ -45,6 +49,28 @@ in { kde-connect = { hideIfNoDeviceConnected = true; }; + screen-recorder = { + hideInactive = true; + iconColor = "none"; + directory = ""; + filenamePattern = "recording_yyyyMMdd_HHmmss"; + frameRate = 60; + audioCodec = "aac"; + videoCodec = "hevc"; + quality = "ultra"; + colorRange = "full"; + showCursor = true; + copyToClipboard = false; + audioSource = "default_output"; + videoSource = "portal"; + resolution = "1920x1080"; + replayEnabled = true; + replayDuration = 60; + customReplayDuration = 30; + replayStorage = "disk"; + restorePortalSession = true; + customFrameRate = 6; + }; }; }; } diff --git a/modules/home/noctalia/settings/bar/widgets/right.nix b/modules/home/noctalia/settings/bar/widgets/right.nix index 562ed6b..4d5d06d 100644 --- a/modules/home/noctalia/settings/bar/widgets/right.nix +++ b/modules/home/noctalia/settings/bar/widgets/right.nix @@ -44,6 +44,31 @@ showPowerProfiles = true; warningThreshold = 30; } + { + id = "plugin:screen-recorder"; + defaultSettings = { + hideInactive = true; + iconColor = "none"; + directory = ""; + filenamePattern = "recording_yyyyMMdd_HHmmss"; + frameRate = 60; + audioCodec = "aac"; + videoCodec = "hevc"; + quality = "ultra"; + colorRange = "full"; + showCursor = true; + copyToClipboard = false; + audioSource = "default_output"; + videoSource = "portal"; + resolution = "1920x1080"; + replayEnabled = true; + replayDuration = 60; + customReplayDuration = 30; + replayStorage = "disk"; + restorePortalSession = true; + customFrameRate = 6; + }; + } { id = "Volume"; displayMode = "alwaysShow";