diff --git a/fixtures/wallpapers/cat-vibes.webp b/fixtures/wallpapers/cat-vibes.webp new file mode 100644 index 0000000..1151cce Binary files /dev/null and b/fixtures/wallpapers/cat-vibes.webp differ diff --git a/fixtures/wallpapers/chill-room.webp b/fixtures/wallpapers/chill-room.webp new file mode 100644 index 0000000..4e2c84d Binary files /dev/null and b/fixtures/wallpapers/chill-room.webp differ diff --git a/fixtures/wallpapers/evening-ambience-cafe.webp b/fixtures/wallpapers/evening-ambience-cafe.webp new file mode 100644 index 0000000..7f583ad Binary files /dev/null and b/fixtures/wallpapers/evening-ambience-cafe.webp differ diff --git a/fixtures/wallpapers/sources.md b/fixtures/wallpapers/sources.md new file mode 100644 index 0000000..b9fd3d9 --- /dev/null +++ b/fixtures/wallpapers/sources.md @@ -0,0 +1,5 @@ +- cat-vibes: https://wall.alphacoders.com/big.php?i=1384032 +- yellow-bedroom: https://wall.alphacoders.com/big.php?i=1395930 +- sunny-cityscape: https://wall.alphacoders.com/big.php?i=1395929 +- chill-room: https://wall.alphacoders.com/big.php?i=1350899 +- evening-ambience-cafe: https://wall.alphacoders.com/big.php?i=1349198 diff --git a/fixtures/wallpapers/sunny-cityscape.webp b/fixtures/wallpapers/sunny-cityscape.webp new file mode 100644 index 0000000..f6580e9 Binary files /dev/null and b/fixtures/wallpapers/sunny-cityscape.webp differ diff --git a/fixtures/wallpapers/yellow-bedroom.webp b/fixtures/wallpapers/yellow-bedroom.webp new file mode 100644 index 0000000..d9255a8 Binary files /dev/null and b/fixtures/wallpapers/yellow-bedroom.webp differ diff --git a/flake.lock b/flake.lock index 68ce45f..1a439d9 100644 --- a/flake.lock +++ b/flake.lock @@ -73,6 +73,26 @@ "type": "github" } }, + "awww": { + "inputs": { + "flake-compat": "flake-compat_4", + "nixpkgs": "nixpkgs_4", + "rust-overlay": "rust-overlay" + }, + "locked": { + "lastModified": 1765147877, + "narHash": "sha256-SoSUY44s2nmg/SGriAIvXGSuVJBUvXlox5jhH1IeB9k=", + "ref": "refs/heads/main", + "rev": "45f9ad2ba04f2bb5656053bc1f285e060d571d79", + "revCount": 1322, + "type": "git", + "url": "https://codeberg.org/LGFae/awww" + }, + "original": { + "type": "git", + "url": "https://codeberg.org/LGFae/awww" + } + }, "darwin": { "inputs": { "nixpkgs": [ @@ -221,6 +241,22 @@ } }, "flake-compat_4": { + "flake": false, + "locked": { + "lastModified": 1761588595, + "narHash": "sha256-XKUZz9zewJNUj46b4AJdiRZJAvSZ0Dqj2BNfXvFlJC4=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "f387cd2afec9419c8ee37694406ca490c3f34ee5", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_5": { "flake": false, "locked": { "lastModified": 1650374568, @@ -419,7 +455,7 @@ }, "musnix": { "inputs": { - "nixpkgs": "nixpkgs_4" + "nixpkgs": "nixpkgs_5" }, "locked": { "lastModified": 1756852730, @@ -435,6 +471,63 @@ "type": "github" } }, + "niri": { + "inputs": { + "niri-stable": "niri-stable", + "niri-unstable": "niri-unstable", + "nixpkgs": "nixpkgs_6", + "nixpkgs-stable": "nixpkgs-stable", + "xwayland-satellite-stable": "xwayland-satellite-stable", + "xwayland-satellite-unstable": "xwayland-satellite-unstable" + }, + "locked": { + "lastModified": 1764969102, + "narHash": "sha256-b9AEnfuNHbykNw/X4Vqz8uzPg/4S8ZfWE9ggkkz+KR8=", + "owner": "sodiboo", + "repo": "niri-flake", + "rev": "9e59ee80bf92a02423e7ca7b301f969fe230c8d8", + "type": "github" + }, + "original": { + "owner": "sodiboo", + "ref": "9e59ee8", + "repo": "niri-flake", + "type": "github" + } + }, + "niri-stable": { + "flake": false, + "locked": { + "lastModified": 1756556321, + "narHash": "sha256-RLD89dfjN0RVO86C/Mot0T7aduCygPGaYbog566F0Qo=", + "owner": "YaLTeR", + "repo": "niri", + "rev": "01be0e65f4eb91a9cd624ac0b76aaeab765c7294", + "type": "github" + }, + "original": { + "owner": "YaLTeR", + "ref": "v25.08", + "repo": "niri", + "type": "github" + } + }, + "niri-unstable": { + "flake": false, + "locked": { + "lastModified": 1764678181, + "narHash": "sha256-TMs2Px19UAG06zITXAH7efl7X8G7BDyMCy1ilX/8wy0=", + "owner": "YaLTeR", + "repo": "niri", + "rev": "f874b2fce50e0f7ba21e270c86cfa168a1506b82", + "type": "github" + }, + "original": { + "owner": "YaLTeR", + "repo": "niri", + "type": "github" + } + }, "nixpkgs": { "locked": { "lastModified": 1759070547, @@ -466,6 +559,22 @@ "type": "github" } }, + "nixpkgs-stable": { + "locked": { + "lastModified": 1764831616, + "narHash": "sha256-OtzF5wBvO0jgW1WW1rQU9cMGx7zuvkF7CAVJ1ypzkxA=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "c97c47f2bac4fa59e2cbdeba289686ae615f8ed4", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-25.11", + "repo": "nixpkgs", + "type": "github" + } + }, "nixpkgs-wine": { "locked": { "lastModified": 1735834308, @@ -515,6 +624,22 @@ } }, "nixpkgs_4": { + "locked": { + "lastModified": 1763934636, + "narHash": "sha256-9glbI7f1uU+yzQCq5LwLgdZqx6svOhZWkd4JRY265fc=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "ee09932cedcef15aaf476f9343d1dea2cb77e261", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_5": { "locked": { "lastModified": 1756542300, "narHash": "sha256-tlOn88coG5fzdyqz6R93SQL5Gpq+m/DsWpekNFhqPQk=", @@ -530,18 +655,34 @@ "type": "github" } }, - "nixpkgs_5": { + "nixpkgs_6": { "locked": { - "lastModified": 1763334038, - "narHash": "sha256-LBVOyaH6NFzQ3X/c6vfMZ9k4SV2ofhpxeL9YnhHNJQQ=", + "lastModified": 1764667669, + "narHash": "sha256-7WUCZfmqLAssbDqwg9cUDAXrSoXN79eEEq17qhTNM/Y=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "4c8cdd5b1a630e8f72c9dd9bf582b1afb3127d2c", + "rev": "418468ac9527e799809c900eda37cbff999199b6", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixos-25.05", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_7": { + "locked": { + "lastModified": 1764983851, + "narHash": "sha256-y7RPKl/jJ/KAP/VKLMghMgXTlvNIJMHKskl8/Uuar7o=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "d9bc5c7dceb30d8d6fafa10aeb6aa8a48c218454", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-25.11", "repo": "nixpkgs", "type": "github" } @@ -617,19 +758,42 @@ "affinity-nix": "affinity-nix", "agenix": "agenix", "agenix-rekey": "agenix-rekey", + "awww": "awww", "darwin": "darwin_2", "disko": "disko", "home-manager": "home-manager_2", "musnix": "musnix", - "nixpkgs": "nixpkgs_5", + "niri": "niri", + "nixpkgs": "nixpkgs_7", "quadlet": "quadlet", "snowfall": "snowfall", "unstable": "unstable" } }, + "rust-overlay": { + "inputs": { + "nixpkgs": [ + "awww", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1764038373, + "narHash": "sha256-M6w2wNBRelcavoDAyFL2iO4NeWknD40ASkH1S3C0YGM=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "ab3536fe850211a96673c6ffb2cb88aab8071cc9", + "type": "github" + }, + "original": { + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" + } + }, "snowfall": { "inputs": { - "flake-compat": "flake-compat_4", + "flake-compat": "flake-compat_5", "flake-utils-plus": "flake-utils-plus", "nixpkgs": [ "nixpkgs" @@ -733,6 +897,39 @@ "repo": "nixpkgs", "type": "github" } + }, + "xwayland-satellite-stable": { + "flake": false, + "locked": { + "lastModified": 1755491097, + "narHash": "sha256-m+9tUfsmBeF2Gn4HWa6vSITZ4Gz1eA1F5Kh62B0N4oE=", + "owner": "Supreeeme", + "repo": "xwayland-satellite", + "rev": "388d291e82ffbc73be18169d39470f340707edaa", + "type": "github" + }, + "original": { + "owner": "Supreeeme", + "ref": "v0.7", + "repo": "xwayland-satellite", + "type": "github" + } + }, + "xwayland-satellite-unstable": { + "flake": false, + "locked": { + "lastModified": 1764721075, + "narHash": "sha256-ChH4nq0cMEEkzkHqKlQt5Z7wxrk8ybcEHuA1YKAYmV0=", + "owner": "Supreeeme", + "repo": "xwayland-satellite", + "rev": "1b918e29b419e89910014054e8b71d54c9235ea5", + "type": "github" + }, + "original": { + "owner": "Supreeeme", + "repo": "xwayland-satellite", + "type": "github" + } } }, "root": "root", diff --git a/flake.nix b/flake.nix index e2fb2ce..e933131 100644 --- a/flake.nix +++ b/flake.nix @@ -52,7 +52,7 @@ permittedInsecurePackages = []; }; - overlays = with inputs; []; + overlays = with inputs; [niri.overlays.niri]; outputs-builder = channels: { formatter = channels.nixpkgs.alejandra; @@ -68,7 +68,7 @@ inputs = { # nixpkgs.url = "git+file:///home/christopher/code/opensource/nixpkgs"; - nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.05"; + nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.11"; unstable.url = "github:NixOS/nixpkgs/nixos-unstable"; # Opinionated flake library for better organization without much boilerplate @@ -100,5 +100,7 @@ affinity-nix.url = "github:mrshmllow/affinity-nix"; quadlet.url = "github:SEIAROTg/quadlet-nix"; musnix.url = "github:musnix/musnix"; + niri.url = "github:sodiboo/niri-flake/9e59ee8"; + awww.url = "git+https://codeberg.org/LGFae/awww"; }; } diff --git a/homes/x86_64-linux/christopher@cobalt/config/dev.nix b/homes/x86_64-linux/christopher@cobalt/config/dev.nix index 17d3e48..2396b52 100644 --- a/homes/x86_64-linux/christopher@cobalt/config/dev.nix +++ b/homes/x86_64-linux/christopher@cobalt/config/dev.nix @@ -15,6 +15,7 @@ zx # Tool for writing better scripts # trurl # Parsing and manipulating URLs via CLI + ripgrep # Grep file search dig # DNS onefetch # Git information tool tokei # Like cloc diff --git a/homes/x86_64-linux/christopher@cobalt/default.nix b/homes/x86_64-linux/christopher@cobalt/default.nix index f20f93f..1495927 100644 --- a/homes/x86_64-linux/christopher@cobalt/default.nix +++ b/homes/x86_64-linux/christopher@cobalt/default.nix @@ -7,10 +7,13 @@ [ ./ssh.nix ./gpg + ./niri ./misc/launcher.nix ./misc/browser.nix ./misc/gaming.nix ./misc/onedrive.nix + ./misc/creativity.nix + ./misc/recording.nix ./misc/everything.nix # TODO: Determine if we really always want all these programs or they should be composable ./global/current-packages.nix ] diff --git a/homes/x86_64-linux/christopher@cobalt/misc/creativity.nix b/homes/x86_64-linux/christopher@cobalt/misc/creativity.nix new file mode 100644 index 0000000..4be11ca --- /dev/null +++ b/homes/x86_64-linux/christopher@cobalt/misc/creativity.nix @@ -0,0 +1,18 @@ +{ + pkgs, + system, + inputs, + ... +}: { + home.packages = with pkgs; [ + # 3D printing and engineering + orca-slicer + + # Drawing + krita + inputs.affinity-nix.packages.${system}.v3 + + # Audio + vcv-rack + ]; +} diff --git a/homes/x86_64-linux/christopher@cobalt/misc/everything.nix b/homes/x86_64-linux/christopher@cobalt/misc/everything.nix index 56f1010..95f76d6 100644 --- a/homes/x86_64-linux/christopher@cobalt/misc/everything.nix +++ b/homes/x86_64-linux/christopher@cobalt/misc/everything.nix @@ -16,28 +16,23 @@ grim # Screenshots slurp # Region selection - # GUI - slack # Work chat - vesktop # Discord client - vlc # Video player + # Productivity obsidian # Note taking - calibre # eBook Manager - onlyoffice-desktopeditors # libreoffice alternative - filezilla # FTP Client - orca-slicer # Bambu Lab Slicer + Control - krita # Drawing software - inputs.affinity-nix.packages.${pkgs.system}.v3 # Affinity - mochi # SRS flashcards - thunderbird # Email client - speedcrunch # GUI calculator app - naps2 # Scanning - vcv-rack # Eurorack simulator - davinci-resolve # Video editor - cider-2 # Apple music player todoist-electron # To-Do List app + thunderbird # Email client + onlyoffice-desktopeditors # libreoffice alternative + speedcrunch # GUI calculator app + calibre # eBook Manager + # Viewers + cider-2 # Apple music player + vlc # Video player xarchiver # Archive viewer/extractor zathura # Document viewer evince # Document viewer + + vesktop # Discord client + filezilla # FTP Client + mochi # SRS flashcards ]; } diff --git a/homes/x86_64-linux/christopher@cobalt/misc/gaming.nix b/homes/x86_64-linux/christopher@cobalt/misc/gaming.nix index 3888d55..b1a0c23 100644 --- a/homes/x86_64-linux/christopher@cobalt/misc/gaming.nix +++ b/homes/x86_64-linux/christopher@cobalt/misc/gaming.nix @@ -2,6 +2,8 @@ home.packages = with pkgs; [ prismlauncher # minecraft launcher heroic # gog/epic launcher + protonup-qt + opentrack # game manager (lutris.override { @@ -17,5 +19,7 @@ gamemode # performance mode mangohud # performance overlays alvr + + input-remapper ]; } diff --git a/homes/x86_64-linux/christopher@cobalt/misc/recording.nix b/homes/x86_64-linux/christopher@cobalt/misc/recording.nix new file mode 100644 index 0000000..41bbfc8 --- /dev/null +++ b/homes/x86_64-linux/christopher@cobalt/misc/recording.nix @@ -0,0 +1,11 @@ +{ + pkgs, + config, + ... +}: { + home.packages = with pkgs; [ + droidcam + davinci-resolve + ffmpeg + ]; +} diff --git a/homes/x86_64-linux/christopher@cobalt/niri/autostart.nix b/homes/x86_64-linux/christopher@cobalt/niri/autostart.nix new file mode 100644 index 0000000..e0eaa11 --- /dev/null +++ b/homes/x86_64-linux/christopher@cobalt/niri/autostart.nix @@ -0,0 +1,11 @@ +{ + lib, + pkgs, + ... +}: { + programs.niri.settings.spawn-at-startup = with lib._elements; [ + {argv = ["kitty"];} + {argv = ["awww-daemon"];} + {argv = ["awww" "img" "${fixture "wallpapers/cat-vibes.webp"}"];} + ]; +} diff --git a/homes/x86_64-linux/christopher@cobalt/niri/default.nix b/homes/x86_64-linux/christopher@cobalt/niri/default.nix new file mode 100644 index 0000000..75c4a86 --- /dev/null +++ b/homes/x86_64-linux/christopher@cobalt/niri/default.nix @@ -0,0 +1,19 @@ +{ + inputs, + pkgs, + ... +}: { + imports = [ + inputs.niri.homeModules.niri + ./settings.nix + ./keybinds.nix + ./autostart.nix + ]; + + programs.niri.package = pkgs.niri; + + home.packages = with pkgs; [ + fuzzel + inputs.awww.packages.${pkgs.stdenv.hostPlatform.system}.awww + ]; +} diff --git a/homes/x86_64-linux/christopher@cobalt/niri/keybinds.nix b/homes/x86_64-linux/christopher@cobalt/niri/keybinds.nix new file mode 100644 index 0000000..515978a --- /dev/null +++ b/homes/x86_64-linux/christopher@cobalt/niri/keybinds.nix @@ -0,0 +1,12 @@ +{ + lib, + config, + pkgs, + ... +}: let +in { + programs.niri.settings.binds = with config.lib.niri.actions; let + in { + "Mod+f".action = fullscreen-window; + }; +} diff --git a/homes/x86_64-linux/christopher@cobalt/niri/settings.nix b/homes/x86_64-linux/christopher@cobalt/niri/settings.nix new file mode 100644 index 0000000..ac41ede --- /dev/null +++ b/homes/x86_64-linux/christopher@cobalt/niri/settings.nix @@ -0,0 +1,62 @@ +{ + config, + pkgs, + ... +}: { + programs.niri = { + enable = true; + + settings = { + prefer-no-csd = true; + + layout = { + background-color = "#ac8887"; + focus-ring.enable = true; + + gaps = 24; + shadow = { + enable = true; + }; + }; + + window-rules = [ + { + clip-to-geometry = true; + geometry-corner-radius = { + bottom-left = 12.0; + bottom-right = 0.0; + top-left = 0.0; + top-right = 12.0; + }; + } + { + matches = [{is-focused = true;}]; + focus-ring = { + width = 2; + }; + } + ]; + + input = { + keyboard.xkb.layout = "en"; + }; + + cursor = { + size = 0; + theme = "Adwaita"; + }; + + environment = { + CLUTTER_BACKEND = "wayland"; + GDK_BACKEND = "wayland.x11"; + MOZ_ENABLE_WAYLAND = "1"; + QT_QPA_PLATFORM = "wayland"; + QT_WAYLAND_DISABLE_WINDOWDECORATION = "1"; + ELECTRON_OZONE_PLATFORM_HINT = "auto"; + XDG_SESSION_TYPE = "wayland"; + XDG_CURRENT_DESKTOP = "niri"; + DISPLAY = ":0"; + }; + }; + }; +} diff --git a/lib/default.nix b/lib/default.nix index 2094aaa..c4dd343 100644 --- a/lib/default.nix +++ b/lib/default.nix @@ -3,6 +3,7 @@ secret = name: ./../secrets/${name}; commonHomeModule = module: ./../homes/common + "/${module}"; + fixture = path: ./../fixtures + "/${path}"; writeNushellApplication = import ./writeNushellApplication.nix {inherit lib;}; # Determines the file location of the passed in attr set (e.g. `{ sep = "#"; }) diff --git a/modules/common/nix.nix b/modules/common/nix.nix index 82fc9d8..4ab54f9 100644 --- a/modules/common/nix.nix +++ b/modules/common/nix.nix @@ -28,6 +28,7 @@ config.permittedInsecurePackages = [ "nixos-config" "electron-27.3.11" + "electron-36.9.5" "dotnet-sdk-6.0.428" ]; }; diff --git a/modules/home/common/helix/default.nix b/modules/home/common/helix/default.nix index 75d087b..05953ed 100644 --- a/modules/home/common/helix/default.nix +++ b/modules/home/common/helix/default.nix @@ -22,7 +22,7 @@ in { defaultEditor = true; settings = { - theme = "catppuccin"; + theme = "rose_pine_dawn"; editor = { rulers = [80]; diff --git a/modules/home/common/terminal/programs/cli.nix b/modules/home/common/terminal/programs/cli.nix index d46ad95..363767a 100644 --- a/modules/home/common/terminal/programs/cli.nix +++ b/modules/home/common/terminal/programs/cli.nix @@ -31,6 +31,7 @@ enable = true; enableNushellIntegration = config.programs.nushell.enable; enableFishIntegration = config.programs.fish.enable; + options = ["--cmd cd"]; }; carapace = { diff --git a/modules/home/gui/kitty.nix b/modules/home/gui/kitty.nix index c87a53f..872a993 100644 --- a/modules/home/gui/kitty.nix +++ b/modules/home/gui/kitty.nix @@ -14,6 +14,7 @@ in { }; config = mkIf cfg.kitty.enable { + programs.fish.enable = true; programs.kitty = { enable = true; @@ -28,11 +29,11 @@ in { }; extraConfig = '' - shell ${pkgs.nushell}/bin/nu + shell ${pkgs.fish}/bin/fish modify_font cell_height 7px ''; - themeFile = "Catppuccin-Frappe"; + themeFile = "Rosé Pine Dawn"; }; xdg.configFile."kitty/open-actions.conf".text = '' diff --git a/modules/home/hausgold/default.nix b/modules/home/hausgold/default.nix new file mode 100644 index 0000000..92dd631 --- /dev/null +++ b/modules/home/hausgold/default.nix @@ -0,0 +1,5 @@ +{pkgs, ...}: { + home.packages = with pkgs; [ + slack + ]; +} diff --git a/modules/nixos/common/core/users.nix b/modules/nixos/common/core/users.nix index affa1d2..8180b92 100644 --- a/modules/nixos/common/core/users.nix +++ b/modules/nixos/common/core/users.nix @@ -24,11 +24,12 @@ in in { # age.secrets.christopher-password = secretFor "christopher" "christopher-password.age"; + programs.fish.enable = true; users = { users.christopher = mkIfUser "christopher" { isNormalUser = true; # passwordFile = config.age.secrets.christopher-password.path; - shell = pkgs.nushell; + shell = pkgs.fish; extraGroups = [ "wheel" "docker" diff --git a/modules/nixos/wm/default.nix b/modules/nixos/wm/default.nix index 886be9f..7974e65 100644 --- a/modules/nixos/wm/default.nix +++ b/modules/nixos/wm/default.nix @@ -28,18 +28,18 @@ in { services.xserver = { enable = true; - - # SDDM is broken - displayManager.gdm = { - enable = true; - wayland = true; - }; }; services.desktopManager.plasma6.enable = true; services.displayManager = { defaultSession = "plasma"; + # SDDM is broken + gdm = { + enable = true; + wayland = true; + }; + # sddm = { # enable = true; # wayland.enable = true; diff --git a/overlays/unstable/default.nix b/overlays/unstable/default.nix index 7e10b74..eec1969 100644 --- a/overlays/unstable/default.nix +++ b/overlays/unstable/default.nix @@ -1,4 +1,52 @@ {channels, ...}: final: prev: { # Pull the following packages from unstable instead - inherit (channels.unstable) kitty nu fish cider-2 _1password-gui; + inherit + (channels.unstable) + kitty + nu + cider-2 + _1password-gui + orca-slicer + claude-code + lutris + ; + + bambu-studio = channels.unstable.bambu-studio.overrideAttrs (old: let + newVersion = "02.03.00.70"; + in { + version = newVersion; + src = prev.fetchFromGitHub { + owner = "bambulab"; + repo = "BambuStudio"; + rev = "v${newVersion}"; + hash = "sha256-2duNeSBi2WvsAUxkzTbKH+SiliNovc7LVICTzgQkrN8="; + }; + + nativeBuildInputs = (old.nativeBuildInputs or []) ++ [prev.cmake prev.pkg-config]; + + postPatch = + (old.postPatch or "") + + '' + # Remove cereal-Links (link does not work, havent seen anything breaking from this change). + # Disclaimera; This patch is AI generated + grep -RIl "target_link_libraries" . | while read -r f; do + sed -i \ + -e 's/\bcereal::cereal\b//g' \ + -e 's/[[:space:]]\bcereal\b//g' \ + "$f" + done + ''; + + postInstall = + (old.postInstall or "") + + '' + wrapProgram $out/bin/bambu-studio --set GBM_BACKEND dri + ''; + + cmakeFlags = + (old.cmakeFlags or []) + ++ [ + "-DCMAKE_POLICY_VERSION_MINIMUM=3.5" + ]; + }); } diff --git a/systems/x86_64-linux/cobalt/default.nix b/systems/x86_64-linux/cobalt/default.nix index 68305e5..d1447e3 100644 --- a/systems/x86_64-linux/cobalt/default.nix +++ b/systems/x86_64-linux/cobalt/default.nix @@ -90,6 +90,12 @@ with lib._elements; { # Bluetooth manager blueman.enable = true; + udev.extraRules = '' + # SpaceMouse Enterprise + SUBSYSTEM=="hidraw", ATTRS{idVendor}=="256f", MODE="0666" + # Thrustmaster T.Flight Rudder Pedals + SUBSYSTEM=="input", ATTRS{idProduct}=="b679", ATTRS{idVendor}=="044f", MODE="0666", ENV{ID_INPUT_JOYSTICK}="1" + ''; udev.packages = [pkgs.platformio-core.udev]; # Linux link via MQTT @@ -152,9 +158,10 @@ with lib._elements; { gtk3 openrgb-with-all-plugins - lact # GPU tuning + # lact # GPU tuning libimobiledevice ifuse + naps2 # Scanning # Oxidized coreutils uutils-coreutils-noprefix @@ -173,8 +180,9 @@ with lib._elements; { users.groups.pico = {}; - systemd.packages = [pkgs.lact]; - systemd.services.lactd.wantedBy = ["multi-user.target"]; + # AMD GPU tooling + # systemd.packages = [pkgs.lact]; + # systemd.services.lactd.wantedBy = ["multi-user.target"]; hardware = { amdgpu = { @@ -190,6 +198,9 @@ with lib._elements; { graphics = { enable = true; enable32Bit = true; + extraPackages = with pkgs; [ + mesa.opencl + ]; }; # SANE scanner support @@ -219,4 +230,26 @@ with lib._elements; { efiSupport = true; }; }; + + programs.obs-studio = { + enable = true; + enableVirtualCamera = true; + + plugins = with pkgs.obs-studio-plugins; [ + wlrobs + obs-vaapi + obs-pipewire-audio-capture + obs-backgroundremoval + droidcam-obs + ]; + }; + + boot.extraModulePackages = with config.boot.kernelPackages; [ + v4l2loopback + ]; + boot.kernelModules = ["v4l2loopback"]; + boot.extraModprobeConfig = '' + options v4l2loopback devices=1 video_nr=1 card_label="OBS Cam" exclusive_caps=1 + ''; + security.polkit.enable = true; }