From 465d2bfd3a48185901e032399d655cdfde287140 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Wed, 5 Nov 2025 13:26:16 -0500 Subject: [PATCH 001/282] updates --- .gitignore | 1 - configuration.nix | 2 +- flake.nix | 3 +++ hardware/alien.nix | 53 ++++++++++++++++++++++++++++++++++++++++++++++ hosts/alien.nix | 5 +++-- 5 files changed, 60 insertions(+), 4 deletions(-) create mode 100755 hardware/alien.nix diff --git a/.gitignore b/.gitignore index 2bf06b8..2b8800b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1 @@ firmware -hardware-configuration.nix diff --git a/configuration.nix b/configuration.nix index 3ac1a30..b6d755b 100755 --- a/configuration.nix +++ b/configuration.nix @@ -7,7 +7,7 @@ { imports = [ # Include the results of the hardware scan. - ./hardware-configuration.nix + # ./hardware-configuration.nix #./apple-silicon-support ]; diff --git a/flake.nix b/flake.nix index 70d4d69..69be60a 100644 --- a/flake.nix +++ b/flake.nix @@ -59,6 +59,9 @@ name = "alien"; system = "x86_64-linux"; hostModule = ./hosts/alien.nix; + extraModules = [ + ./hardware/alien.nix + ]; }; }; diff --git a/hardware/alien.nix b/hardware/alien.nix new file mode 100755 index 0000000..7bcb7de --- /dev/null +++ b/hardware/alien.nix @@ -0,0 +1,53 @@ +# Do not modify this file! It was generated by ‘nixos-generate-config’ +# and may be overwritten by future invocations. Please make changes +# to /etc/nixos/configuration.nix instead. +{ config, lib, pkgs, modulesPath, ... }: + +{ + imports = + [ (modulesPath + "/installer/scan/not-detected.nix") + ]; + + boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "nvme" "usbhid" "sd_mod" ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ "kvm-intel" ]; + boot.extraModulePackages = [ ]; + + fileSystems."/" = + { device = "/dev/disk/by-uuid/d83ec136-df01-4b9e-a523-6d75726fb904"; + fsType = "btrfs"; + options = [ "subvol=@" ]; + }; + + fileSystems."/nix" = + { device = "/dev/disk/by-uuid/e369d905-a82b-45c5-838a-323169233583"; + fsType = "btrfs"; + }; + + fileSystems."/boot" = + { device = "/dev/disk/by-uuid/6444-169A"; + fsType = "vfat"; + options = [ "fmask=0077" "dmask=0077" ]; + }; + + fileSystems."/home" = + { device = "/dev/disk/by-uuid/881bdf55-1e43-4bfc-a1bf-3b2f72dbc122"; + fsType = "btrfs"; + }; + + swapDevices = + [ { device = "/dev/disk/by-uuid/056af100-9382-4cbd-b3d5-90df7da69585"; } + ]; + + # Enables DHCP on each ethernet and wireless interface. In case of scripted networking + # (the default) this is the recommended approach. When using systemd-networkd it's + # still possible to use this option, but it's recommended to use it in conjunction + # with explicit per-interface declarations with `networking.interfaces..useDHCP`. + networking.useDHCP = lib.mkDefault true; + # networking.interfaces.enp4s0.useDHCP = lib.mkDefault true; + # networking.interfaces.tailscale0.useDHCP = lib.mkDefault true; + # networking.interfaces.wlo1.useDHCP = lib.mkDefault true; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; +} diff --git a/hosts/alien.nix b/hosts/alien.nix index 2c80d0c..c55a473 100644 --- a/hosts/alien.nix +++ b/hosts/alien.nix @@ -31,8 +31,9 @@ hardware.nvidia = { modesetting.enable = true; powerManagement.enable = false; - nvidiaSettings = true; - package = pkgs.linuxPackages.nvidiaPackages.stable; + nvidiaSettings = false; + open = true; + # package = pkgs.linuxPackages.nvidiaPackages.stable; }; } From bd70f7b95a7809f1e91ac3202eca737ed60a1bbc Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Wed, 5 Nov 2025 13:40:27 -0500 Subject: [PATCH 002/282] spin off all.nix --- flake.nix | 5 ++- hardware/peach.nix | 30 +++++++++++++ home.nix => home/all.nix | 0 configuration.nix => hosts/all.nix | 67 ++---------------------------- hosts/peach.nix | 5 +++ 5 files changed, 41 insertions(+), 66 deletions(-) create mode 100644 hardware/peach.nix rename home.nix => home/all.nix (100%) rename configuration.nix => hosts/all.nix (66%) diff --git a/flake.nix b/flake.nix index 69be60a..2fc145a 100644 --- a/flake.nix +++ b/flake.nix @@ -27,7 +27,7 @@ inherit system; specialArgs = { inherit catppuccin; }; modules = [ - ./configuration.nix + ./hosts/all.nix hostModule catppuccin.nixosModules.catppuccin home-manager.nixosModules.home-manager @@ -38,7 +38,7 @@ home-manager.lib.homeManagerConfiguration { pkgs = import nixpkgs { inherit system; }; modules = [ - ./home.nix + ./home/all.nix catppuccin.homeModules.catppuccin ]; }; @@ -50,6 +50,7 @@ system = "aarch64-linux"; hostModule = ./hosts/peach.nix; extraModules = [ + ./hardware/peach.nix apple-silicon.nixosModules.default { nixpkgs.overlays = [ apple-silicon.overlays.apple-silicon-overlay ]; } ]; diff --git a/hardware/peach.nix b/hardware/peach.nix new file mode 100644 index 0000000..efd0ae4 --- /dev/null +++ b/hardware/peach.nix @@ -0,0 +1,30 @@ +# Do not modify this file! It was generated by ‘nixos-generate-config’ +# and may be overwritten by future invocations. Please make changes +# to /etc/nixos/configuration.nix instead. +{ config, lib, pkgs, modulesPath, ... }: + +{ + imports = + [ (modulesPath + "/installer/scan/not-detected.nix") + ]; + + boot.initrd.availableKernelModules = [ "sdhci_pci" ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ ]; + boot.extraModulePackages = [ ]; + + fileSystems."/" = + { device = "/dev/disk/by-uuid/8a3cb91f-2e3f-498d-8613-230976dff36e"; + fsType = "ext4"; + }; + + fileSystems."/boot" = + { device = "/dev/disk/by-uuid/FA86-1704"; + fsType = "vfat"; + options = [ "fmask=0022" "dmask=0022" ]; + }; + + swapDevices = [ ]; + + nixpkgs.hostPlatform = lib.mkDefault "aarch64-linux"; +} diff --git a/home.nix b/home/all.nix similarity index 100% rename from home.nix rename to home/all.nix diff --git a/configuration.nix b/hosts/all.nix similarity index 66% rename from configuration.nix rename to hosts/all.nix index b6d755b..13087e5 100755 --- a/configuration.nix +++ b/hosts/all.nix @@ -5,25 +5,13 @@ { config, lib, pkgs, ... }: { - imports = - [ # Include the results of the hardware scan. - # ./hardware-configuration.nix - #./apple-silicon-support - ]; - - # Bootloader. - # boot.loader.systemd-boot = { - # enable = true; - # # configurationLimit = null; - # }; - # boot.loader.efi.canTouchEfiVariables = false; - + nix.settings.experimental-features = [ "nix-command" "flakes" ]; + home-manager.useGlobalPkgs = true; home-manager.useUserPackages = true; - home-manager.users.sckova = { imports = [ - ./home.nix + ../home/all.nix ]; }; @@ -33,14 +21,11 @@ systemd-boot = { enable = true; configurationLimit = null; - # consoleMode = "max"; }; efi = { canTouchEfiVariables = false; }; }; - # Silent Boot - # https://wiki.archlinux.org/title/Silent_boot kernelParams = [ "quiet" "splash" @@ -52,31 +37,12 @@ "apple_dcp.show_notch=1" ]; consoleLogLevel = 0; - # https://github.com/NixOS/nixpkgs/pull/108294 initrd.verbose = false; }; - swapDevices = [{ - device = "/swapfile"; - size = 32000; # 32GB - }]; - - # networking.hostName = "peach"; # Define your hostname. - # networking.wireless.enable = true; # Enables wireless support via wpa_supplicant. - - # Configure network proxy if necessary - # networking.proxy.default = "http://user:password@proxy:port/"; - # networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain"; - - # Enable networking networking.networkmanager.enable = true; - - # Set your time zone. time.timeZone = "America/New_York"; - - # Select internationalisation properties. i18n.defaultLocale = "en_US.UTF-8"; - i18n.extraLocaleSettings = { LC_ADDRESS = "en_US.UTF-8"; LC_IDENTIFICATION = "en_US.UTF-8"; @@ -89,8 +55,6 @@ LC_TIME = "en_US.UTF-8"; }; - nix.settings.experimental-features = [ "nix-command" "flakes" ]; - # Enable OpenGL hardware.graphics = { enable = true; @@ -110,10 +74,8 @@ }; }; - # Enable CUPS to print documents. services.printing.enable = true; - # Enable sound with pipewire. services.pulseaudio.enable = false; security.rtkit.enable = true; services.pipewire = { @@ -123,7 +85,6 @@ pulse.enable = true; }; - # Define a user account. Don't forget to set a password with ‘passwd’. users.users.sckova = { isNormalUser = true; description = "Sean Kovacs"; @@ -143,14 +104,10 @@ ''; }; - # Install firefox. programs.firefox.enable = true; - # Allow unfree packages nixpkgs.config.allowUnfree = true; - # List packages installed in system profile. To search, run: - # $ nix search wget environment = { systemPackages = with pkgs; [ rclone @@ -170,30 +127,12 @@ ]; }; - - # programs.nix-ld.enable = true; - # programs.nix-ld.libraries = with pkgs; [ - # # Add any missing dynamic libraries for unpackaged programs - # # here, NOT in environment.systemPackages - # ]; - - # Some programs need SUID wrappers, can be configured further or are - # started in user sessions. - # programs.mtr.enable = true; programs.gnupg.agent = { enable = true; enableSSHSupport = true; }; - # List services that you want to enable: - - # Enable the OpenSSH daemon. services.openssh.enable = true; - - # Open ports in the firewall. - # networking.firewall.allowedTCPPorts = [ ... ]; - # networking.firewall.allowedUDPPorts = [ ... ]; - # Or disable the firewall altogether. networking.firewall.enable = false; # This value determines the NixOS release from which the default diff --git a/hosts/peach.nix b/hosts/peach.nix index 126700e..bf6c36e 100644 --- a/hosts/peach.nix +++ b/hosts/peach.nix @@ -13,5 +13,10 @@ extractPeripheralFirmware = true; peripheralFirmwareDirectory = ../firmware; }; + + swapDevices = [{ + device = "/swapfile"; + size = 32000; # 32GB + }]; } From 1549542e5084da4e6502d5c8c43fcc3d2439ac31 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Wed, 5 Nov 2025 15:03:47 -0500 Subject: [PATCH 003/282] fix asahi audio --- hosts/all.nix | 2 -- hosts/peach.nix | 2 ++ 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/hosts/all.nix b/hosts/all.nix index 13087e5..0099305 100755 --- a/hosts/all.nix +++ b/hosts/all.nix @@ -76,8 +76,6 @@ services.printing.enable = true; - services.pulseaudio.enable = false; - security.rtkit.enable = true; services.pipewire = { enable = true; alsa.enable = true; diff --git a/hosts/peach.nix b/hosts/peach.nix index bf6c36e..4916d0a 100644 --- a/hosts/peach.nix +++ b/hosts/peach.nix @@ -10,6 +10,8 @@ }; hardware.asahi = { + enable = true; + setupAsahiSound = true; extractPeripheralFirmware = true; peripheralFirmwareDirectory = ../firmware; }; From 4ffd450700d82e30ca99c1d5b3a7a882bf4923a1 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Wed, 5 Nov 2025 15:28:43 -0500 Subject: [PATCH 004/282] add openmw --- home/all.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/home/all.nix b/home/all.nix index 9fca78e..e1fbfdd 100755 --- a/home/all.nix +++ b/home/all.nix @@ -23,6 +23,7 @@ ncdu fzf wl-clipboard + openmw kde-rounded-corners kdePackages.partitionmanager From e0cbd257c420e4da092358c33deae7b5e0c206de Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Thu, 6 Nov 2025 12:33:16 -0500 Subject: [PATCH 005/282] plasma-manager and other changes --- flake.lock | 26 +++++++++- flake.nix | 67 +++++++++++++++++++------- home/alien.nix | 23 +++++++++ home/all.nix | 125 +++++++++++++++++++++++++++++++++++++++++++++--- home/peach.nix | 98 +++++++++++++++++++++++++++++++++++++ hosts/alien.nix | 9 ++-- hosts/all.nix | 52 ++++++++++++++------ hosts/peach.nix | 4 +- 8 files changed, 358 insertions(+), 46 deletions(-) create mode 100644 home/alien.nix create mode 100644 home/peach.nix diff --git a/flake.lock b/flake.lock index 9e5e604..63a625a 100644 --- a/flake.lock +++ b/flake.lock @@ -92,12 +92,36 @@ "type": "github" } }, + "plasma-manager": { + "inputs": { + "home-manager": [ + "home-manager" + ], + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1762274591, + "narHash": "sha256-Vbhluvk15qwiyNDyPd9tjJh9gxIfUjbKVT79c05Pd3I=", + "owner": "nix-community", + "repo": "plasma-manager", + "rev": "6296d7100cc84b2ff732b7c103a50c2856974cf6", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "plasma-manager", + "type": "github" + } + }, "root": { "inputs": { "apple-silicon": "apple-silicon", "catppuccin": "catppuccin", "home-manager": "home-manager", - "nixpkgs": "nixpkgs" + "nixpkgs": "nixpkgs", + "plasma-manager": "plasma-manager" } } }, diff --git a/flake.nix b/flake.nix index 2fc145a..09b6feb 100644 --- a/flake.nix +++ b/flake.nix @@ -14,62 +14,97 @@ inputs.nixpkgs.follows = "nixpkgs"; }; + plasma-manager = { + url = "github:nix-community/plasma-manager"; + inputs.nixpkgs.follows = "nixpkgs"; + inputs.home-manager.follows = "home-manager"; + }; + apple-silicon = { url = "github:nix-community/nixos-apple-silicon"; inputs.nixpkgs.follows = "nixpkgs"; }; }; - outputs = { nixpkgs, catppuccin, home-manager, apple-silicon, ... }: + outputs = + { + nixpkgs, + catppuccin, + home-manager, + plasma-manager, + apple-silicon, + ... + }: let - mkNixosSystem = { name, system, hostModule, extraModules ? [] }: + mkNixosSystem = + { + hostname, + system, + extraModules ? [ ], + }: nixpkgs.lib.nixosSystem { inherit system; specialArgs = { inherit catppuccin; }; modules = [ ./hosts/all.nix - hostModule + ./hosts/${hostname}.nix + ./hardware/${hostname}.nix catppuccin.nixosModules.catppuccin home-manager.nixosModules.home-manager - ] ++ extraModules; + { + home-manager.sharedModules = [ plasma-manager.homeModules.plasma-manager ]; + } + ] + ++ extraModules; }; - mkHomeConfig = { user, system }: + mkHomeConfig = + { + user, + hostname, + system, + }: home-manager.lib.homeManagerConfiguration { pkgs = import nixpkgs { inherit system; }; + home.username = user; + home.homeDirectory = "/home/${user}"; modules = [ ./home/all.nix + ./home/${hostname}.nix catppuccin.homeModules.catppuccin + home-manager.homeModules.home-manager + plasma-manager.homeModules.plasma-manager ]; }; in { nixosConfigurations = { peach = mkNixosSystem { - name = "peach"; + hostname = "peach"; system = "aarch64-linux"; - hostModule = ./hosts/peach.nix; extraModules = [ - ./hardware/peach.nix apple-silicon.nixosModules.default { nixpkgs.overlays = [ apple-silicon.overlays.apple-silicon-overlay ]; } ]; }; alien = mkNixosSystem { - name = "alien"; + hostname = "alien"; system = "x86_64-linux"; - hostModule = ./hosts/alien.nix; - extraModules = [ - ./hardware/alien.nix - ]; }; }; homeConfigurations = { - peach = mkHomeConfig { user = "sckova"; system = "aarch64-linux"; }; - alien = mkHomeConfig { user = "sckova"; system = "x86_64-linux"; }; + peach = mkHomeConfig { + user = "sckova"; + hostname = "peach"; + system = "aarch64-linux"; + }; + alien = mkHomeConfig { + user = "sckova"; + hostname = "alien"; + system = "x86_64-linux"; + }; }; }; } - diff --git a/home/alien.nix b/home/alien.nix new file mode 100644 index 0000000..b0cd9b4 --- /dev/null +++ b/home/alien.nix @@ -0,0 +1,23 @@ +{ config, pkgs, ... }: + +{ + catppuccin = { + accent = "mocha"; + flavor = "blue"; + }; + + programs.plasma = { + workspace = { + # lookAndFeel = "Catppuccin-Mocha-Blue"; + colorScheme = "CatppuccinMochaBlue"; + cursor.theme = "catppuccin-mocha-blue-cursors"; + splashScreen.theme = "Catpppuccin-Mocha-Blue"; + }; + + configFile = { + kdeglobals.KDE = { + DefaultDarkLookAndFeel = "Catppuccin-Mocha-Blue"; + DefaultLightLookAndFeel = "Catppuccin-Latte-Blue"; + }; + }; +} diff --git a/home/all.nix b/home/all.nix index e1fbfdd..13eb9c9 100755 --- a/home/all.nix +++ b/home/all.nix @@ -1,11 +1,6 @@ { config, pkgs, ... }: { - # Home Manager needs a bit of information about you and the - # paths it should manage. - home.username = "sckova"; - home.homeDirectory = "/home/sckova"; - home.packages = with pkgs; [ vesktop fish @@ -24,19 +19,137 @@ fzf wl-clipboard openmw + nixfmt-rfc-style kde-rounded-corners kdePackages.partitionmanager + + colloid-icon-theme + (catppuccin-kde.override { + flavour = [ + "latte" + "mocha" + ]; + accents = [ + "peach" + "blue" + ]; + }) ]; catppuccin = { enable = true; - flavor = "mocha"; + cursors = { + enable = true; + accent = "dark"; + }; firefox = { force = true; }; }; + programs.plasma = { + enable = true; + overrideConfig = true; + + session = { + sessionRestore.restoreOpenApplicationsOnLogin = "startWithEmptySession"; + }; + + workspace = { + iconTheme = "Colloid-Dark"; + windowDecorations = { + library = "org.kde.breeze"; + theme = "Breeze"; + }; + cursor.size = 24; + }; + + configFile = { + kwinrc.Desktops.Number = 3; + # kdeglobals.KDE.AutomaticLookAndFeel = true; + kwinrc.Round-Corners.ActiveOutlinePalette = 3; + kwinrc.Round-Corners.ActiveOutlineUseCustom = false; + kwinrc.Round-Corners.ActiveOutlineUsePalette = true; + kwinrc.Round-Corners.ActiveSecondOutlinePalette = 3; + kwinrc.Round-Corners.ActiveSecondOutlineUseCustom = false; + kwinrc.Round-Corners.ActiveSecondOutlineUsePalette = true; + kwinrc.Round-Corners.InactiveOutlinePalette = 2; + kwinrc.Round-Corners.InactiveOutlineUseCustom = false; + kwinrc.Round-Corners.InactiveOutlineUsePalette = true; + kwinrc.Round-Corners.InactiveSecondOutlinePalette = 2; + kwinrc.Round-Corners.InactiveSecondOutlineUseCustom = false; + kwinrc.Round-Corners.InactiveSecondOutlineUsePalette = true; + }; + + panels = [ + # Windows-like panel at the bottom + { + location = "bottom"; + height = 40; + hiding = "dodgewindows"; + lengthMode = "fit"; + floating = true; + alignment = "left"; + widgets = [ + # Or you can configure the widgets by adding the widget-specific options for it. + # See modules/widgets for supported widgets and options for these widgets. + # For example: + { + kickoff = { + sortAlphabetically = true; + # icon = "nix-snowflake-white"; + }; + } + # Adding configuration to the widgets can also for example be used to + # pin apps to the task-manager, which this example illustrates by + # pinning dolphin and konsole to the task-manager by default with widget-specific options. + { + iconTasks = { + launchers = [ + "applications:firefox.desktop" + "applications:org.kde.dolphin.desktop" + "applications:org.kde.konsole.desktop" + ]; + }; + } + # If no configuration is needed, specifying only the name of the + # widget will add them with the default configuration. + "org.kde.plasma.activitypager" + "org.kde.plasma.marginsseparator" + # If you need configuration for your widget, instead of specifying the + # the keys and values directly using the config attribute as shown + # above, plasma-manager also provides some higher-level interfaces for + # configuring the widgets. See modules/widgets for supported widgets + # and options for these widgets. The widgets below shows two examples + # of usage, one where we add a digital clock, setting 12h time and + # first day of the week to Sunday and another adding a systray with + # some modifications in which entries to show. + { + systemTray.items = { + # We explicitly show bluetooth and battery + shown = [ + "org.kde.plasma.battery" + "org.kde.plasma.bluetooth" + ]; + # And explicitly hide networkmanagement and volume + hidden = [ + "org.kde.plasma.networkmanagement" + "org.kde.plasma.volume" + ]; + }; + } + { + digitalClock = { + calendar.firstDayOfWeek = "sunday"; + time.format = "12h"; + }; + } + ]; + } + ]; + }; + # This value determines the Home Manager release that your # configuration is compatible with. This helps avoid breakage # when a new Home Manager release introduces backwards diff --git a/home/peach.nix b/home/peach.nix new file mode 100644 index 0000000..7538dcc --- /dev/null +++ b/home/peach.nix @@ -0,0 +1,98 @@ +{ config, pkgs, ... }: + +{ + catppuccin = { + accent = "peach"; + flavor = "mocha"; + }; + + programs.plasma = { + workspace = { + # lookAndFeel = "Catppuccin-Mocha-Peach"; + colorScheme = "CatppuccinMochaPeach"; + cursor.theme = "catppuccin-mocha-peach-cursors"; + splashScreen.theme = "Catpppuccin-Mocha-Peach"; + }; + + configFile = { + kdeglobals.KDE = { + DefaultDarkLookAndFeel = "Catppuccin-Mocha-Peach"; + DefaultLightLookAndFeel = "Catppuccin-Latte-Peach"; + }; + }; + + panels = [ + # Application name, Global menu and Song information and playback controls at the top + { + location = "top"; + height = 37; + widgets = [ + { + applicationTitleBar = { + behavior = { + activeTaskSource = "activeTask"; + }; + layout = { + elements = [ "windowTitle" ]; + horizontalAlignment = "left"; + showDisabledElements = "deactivated"; + verticalAlignment = "center"; + }; + overrideForMaximized.enable = false; + titleReplacements = [ + { + type = "regexp"; + originalTitle = "^Brave Web Browser$"; + newTitle = "Brave"; + } + { + type = "regexp"; + originalTitle = ''\\bDolphin\\b''; + newTitle = "File manager"; + } + ]; + windowTitle = { + font = { + bold = false; + fit = "fixedSize"; + size = 12; + }; + hideEmptyTitle = true; + margins = { + bottom = 0; + left = 10; + right = 5; + top = 0; + }; + source = "appName"; + }; + }; + } + "org.kde.plasma.appmenu" + "org.kde.plasma.panelspacer" + { + plasmusicToolbar = { + panelIcon = { + albumCover = { + useAsIcon = false; + radius = 8; + }; + icon = "view-media-track"; + }; + playbackSource = "auto"; + musicControls.showPlaybackControls = true; + songText = { + displayInSeparateLines = true; + maximumWidth = 640; + scrolling = { + behavior = "alwaysScroll"; + speed = 3; + }; + }; + }; + } + ]; + } + ]; + }; +} diff --git a/hosts/alien.nix b/hosts/alien.nix index c55a473..fea340c 100644 --- a/hosts/alien.nix +++ b/hosts/alien.nix @@ -1,15 +1,14 @@ { config, pkgs, lib, catppuccin, ... }: { networking.hostName = "alien"; - catppuccin = { - accent = "lavender"; - }; + catppuccin.accent = "blue"; home-manager.users.sckova = { imports = [ catppuccin.homeModules.catppuccin ]; }; boot.kernelPackages = pkgs.linuxPackages; + boot.loader.systemd-boot.consoleMode = "max"; programs = { gamescope = { @@ -32,8 +31,8 @@ modesetting.enable = true; powerManagement.enable = false; nvidiaSettings = false; - open = true; - # package = pkgs.linuxPackages.nvidiaPackages.stable; + open = false; + package = pkgs.linuxPackages.nvidiaPackages.stable; }; } diff --git a/hosts/all.nix b/hosts/all.nix index 0099305..ba1d73e 100755 --- a/hosts/all.nix +++ b/hosts/all.nix @@ -2,20 +2,34 @@ # your system. Help is available in the configuration.nix(5) man page # and in the NixOS manual (accessible by running ‘nixos-help’). -{ config, lib, pkgs, ... }: +{ + config, + lib, + pkgs, + ... +}: { - nix.settings.experimental-features = [ "nix-command" "flakes" ]; - + nix.settings.experimental-features = [ + "nix-command" + "flakes" + ]; + home-manager.useGlobalPkgs = true; home-manager.useUserPackages = true; home-manager.users.sckova = { imports = [ ../home/all.nix + ../home/${config.networking.hostName}.nix ]; }; - + boot = { + + plymouth = { + enable = true; + }; + loader = { timeout = 3; systemd-boot = { @@ -40,6 +54,11 @@ initrd.verbose = false; }; + catppuccin = { + enable = true; + flavor = "mocha"; + }; + networking.networkmanager.enable = true; time.timeZone = "America/New_York"; i18n.defaultLocale = "en_US.UTF-8"; @@ -72,7 +91,7 @@ enable = true; useRoutingFeatures = "client"; }; - }; + }; services.printing.enable = true; @@ -86,20 +105,24 @@ users.users.sckova = { isNormalUser = true; description = "Sean Kovacs"; - extraGroups = [ "networkmanager" "wheel" ]; - packages = with pkgs; []; + extraGroups = [ + "networkmanager" + "wheel" + ]; + packages = with pkgs; [ ]; hashedPassword = "$6$bvwRUFaJNMpH8rm3$FGDWFN6tBScJ/2DynAjnlZE8JRfyADN78d6c4GawxpAjyNLNE/AjQzMA09tLRqpKX7WnN5PIUZLAm2bT9/RbG0"; }; + security.sudo.wheelNeedsPassword = false; programs.bash = { - interactiveShellInit = '' - if [[ $(${pkgs.procps}/bin/ps --no-header --pid=$PPID --format=comm) != "fish" && -z ''${BASH_EXECUTION_STRING} ]] - then - shopt -q login_shell && LOGIN_OPTION='--login' || LOGIN_OPTION="" - exec ${pkgs.fish}/bin/fish $LOGIN_OPTION - fi - ''; + interactiveShellInit = '' + if [[ $(${pkgs.procps}/bin/ps --no-header --pid=$PPID --format=comm) != "fish" && -z ''${BASH_EXECUTION_STRING} ]] + then + shopt -q login_shell && LOGIN_OPTION='--login' || LOGIN_OPTION="" + exec ${pkgs.fish}/bin/fish $LOGIN_OPTION + fi + ''; }; programs.firefox.enable = true; @@ -142,4 +165,3 @@ system.stateVersion = "25.05"; # Did you read the comment? } - diff --git a/hosts/peach.nix b/hosts/peach.nix index 4916d0a..8ed8ec8 100644 --- a/hosts/peach.nix +++ b/hosts/peach.nix @@ -1,9 +1,7 @@ { config, pkgs, lib, catppuccin, ... }: { networking.hostName = "peach"; - catppuccin = { - accent = "peach"; - }; + catppuccin.accent = "peach"; home-manager.users.sckova = { imports = [ catppuccin.homeModules.catppuccin ]; From 95ffc61f3e1ac87bc1fb4fd0f00d2b240a88ea8a Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Fri, 7 Nov 2025 15:44:57 -0500 Subject: [PATCH 006/282] add nixvim config --- flake.lock | 144 ++++++++++++++++++++++++++++++++++++ flake.nix | 12 ++- home/alien.nix | 1 - home/all.nix | 197 +++++++++++++++++++++++++++++++++++++++++++++++-- home/peach.nix | 15 +++- hosts/all.nix | 64 +++++++++++++++- 6 files changed, 421 insertions(+), 12 deletions(-) diff --git a/flake.lock b/flake.lock index 63a625a..f86b74f 100644 --- a/flake.lock +++ b/flake.lock @@ -56,6 +56,45 @@ "type": "github" } }, + "flake-parts": { + "inputs": { + "nixpkgs-lib": [ + "nixvim", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1762440070, + "narHash": "sha256-xxdepIcb39UJ94+YydGP221rjnpkDZUlykKuF54PsqI=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "26d05891e14c88eb4a5d5bee659c0db5afb609d8", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-utils": { + "inputs": { + "systems": "systems" + }, + "locked": { + "lastModified": 1731533236, + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, "home-manager": { "inputs": { "nixpkgs": [ @@ -76,6 +115,34 @@ "type": "github" } }, + "ixx": { + "inputs": { + "flake-utils": [ + "nixvim", + "nuschtosSearch", + "flake-utils" + ], + "nixpkgs": [ + "nixvim", + "nuschtosSearch", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1754860581, + "narHash": "sha256-EM0IE63OHxXCOpDHXaTyHIOk2cNvMCGPqLt/IdtVxgk=", + "owner": "NuschtOS", + "repo": "ixx", + "rev": "babfe85a876162c4acc9ab6fb4483df88fa1f281", + "type": "github" + }, + "original": { + "owner": "NuschtOS", + "ref": "v0.1.1", + "repo": "ixx", + "type": "github" + } + }, "nixpkgs": { "locked": { "lastModified": 1762111121, @@ -92,6 +159,52 @@ "type": "github" } }, + "nixvim": { + "inputs": { + "flake-parts": "flake-parts", + "nixpkgs": [ + "nixpkgs" + ], + "nuschtosSearch": "nuschtosSearch", + "systems": "systems_2" + }, + "locked": { + "lastModified": 1762523528, + "narHash": "sha256-VH4+fAB85irWuzxfWPfEEwDOE+eQsB/pljNApM0onuU=", + "owner": "nix-community", + "repo": "nixvim", + "rev": "3031d4ab616323f6d41704dfb46f2b801f29973d", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixvim", + "type": "github" + } + }, + "nuschtosSearch": { + "inputs": { + "flake-utils": "flake-utils", + "ixx": "ixx", + "nixpkgs": [ + "nixvim", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1761730856, + "narHash": "sha256-t1i5p/vSWwueZSC0Z2BImxx3BjoUDNKyC2mk24krcMY=", + "owner": "NuschtOS", + "repo": "search", + "rev": "e29de6db0cb3182e9aee75a3b1fd1919d995d85b", + "type": "github" + }, + "original": { + "owner": "NuschtOS", + "repo": "search", + "type": "github" + } + }, "plasma-manager": { "inputs": { "home-manager": [ @@ -121,8 +234,39 @@ "catppuccin": "catppuccin", "home-manager": "home-manager", "nixpkgs": "nixpkgs", + "nixvim": "nixvim", "plasma-manager": "plasma-manager" } + }, + "systems": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_2": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } } }, "root": "root", diff --git a/flake.nix b/flake.nix index 09b6feb..2b8966d 100644 --- a/flake.nix +++ b/flake.nix @@ -20,6 +20,11 @@ inputs.home-manager.follows = "home-manager"; }; + nixvim = { + url = "github:nix-community/nixvim"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + apple-silicon = { url = "github:nix-community/nixos-apple-silicon"; inputs.nixpkgs.follows = "nixpkgs"; @@ -32,6 +37,7 @@ catppuccin, home-manager, plasma-manager, + nixvim, apple-silicon, ... }: @@ -52,7 +58,10 @@ catppuccin.nixosModules.catppuccin home-manager.nixosModules.home-manager { - home-manager.sharedModules = [ plasma-manager.homeModules.plasma-manager ]; + home-manager.sharedModules = [ + plasma-manager.homeModules.plasma-manager + nixvim.homeModules.nixvim + ]; } ] ++ extraModules; @@ -74,6 +83,7 @@ catppuccin.homeModules.catppuccin home-manager.homeModules.home-manager plasma-manager.homeModules.plasma-manager + nixvim.homeModules.nixvim ]; }; in diff --git a/home/alien.nix b/home/alien.nix index b0cd9b4..441ea22 100644 --- a/home/alien.nix +++ b/home/alien.nix @@ -8,7 +8,6 @@ programs.plasma = { workspace = { - # lookAndFeel = "Catppuccin-Mocha-Blue"; colorScheme = "CatppuccinMochaBlue"; cursor.theme = "catppuccin-mocha-blue-cursors"; splashScreen.theme = "Catpppuccin-Mocha-Blue"; diff --git a/home/all.nix b/home/all.nix index 13eb9c9..46a108f 100755 --- a/home/all.nix +++ b/home/all.nix @@ -3,18 +3,16 @@ { home.packages = with pkgs; [ vesktop - fish gh adwsteamgtk prismlauncher tmux fastfetch btop - neovim + # neovim killall wget ripgrep - kitty ncdu fzf wl-clipboard @@ -48,6 +46,172 @@ }; }; + programs.kitty = { + enable = true; + enableGitIntegration = true; + themeFile = "Catppuccin-Mocha"; + font = { + name = "Noto Sans Mono"; + size = 10; + }; + shellIntegration.enableFishIntegration = true; + extraConfig = "\nwheel_scroll_multiplier 5.0"; + }; + + programs.fish = { + enable = true; + interactiveShellInit = '' + set fish_greeting # Disable greeting + ''; + }; + + programs.nixvim = { + enable = true; + defaultEditor = true; + waylandSupport = true; + viAlias = true; + vimAlias = true; + clipboard = { + register = "unnamedplus"; + providers.wl-copy.enable = true; + }; + opts = { + tabstop = 2; + softtabstop = 2; + shiftwidth = 2; + expandtab = true; + number = true; + }; + colorschemes.catppuccin = { + enable = true; + settings = { + flavour = "mocha"; + }; + }; + keymaps = [ + # --- Normal mode mappings --- + { + mode = "n"; + key = ""; + action = "\"+y"; + options = { + noremap = true; + silent = true; + }; + } + { + mode = "n"; + key = ""; + action = "\"+p"; + options = { + noremap = true; + silent = true; + }; + } + + # --- Visual mode mappings --- + { + mode = "v"; + key = ""; + action = "\"+y"; + options = { + noremap = true; + silent = true; + }; + } + { + mode = "v"; + key = ""; + action = "\"+p"; + options = { + noremap = true; + silent = true; + }; + } + ]; + plugins = { + nvim-autopairs = { + enable = true; + # autoLoad = true; + }; + cmp = { + autoEnableSources = true; + enable = true; + # autoLoad = true; + }; + copilot-lua = { + enable = true; + # autoLoad = true; + }; + conform-nvim = { + enable = true; + # autoLoad = true; + settings = { + formatters_by_ft = { + lua = [ "stylua" ]; + python = [ + "isort" + "black" + ]; + nix = [ "nixfmt" ]; + javascript = [ + "deno fmt" + "prettier" + ]; + css = [ + "deno fmt" + "prettier" + ]; + json = [ + "deno fmt" + "prettier" + ]; + jsonc = [ + "deno fmt" + "prettier" + ]; + }; + + # Default formatting options + default_format_opts = { + lsp_format = "fallback"; + }; + + # Format-on-save behavior + format_on_save = { + timeout_ms = 500; + }; + + # Custom formatter settings + formatters = { + shfmt = { + append_args = [ + "-i" + "2" + ]; + }; + }; + }; + }; + fzf-lua = { + enable = true; + # autoLoad = true; + }; + kitty-scrollback = { + enable = true; + # autoLoad = true; + }; + lsp = { + enable = true; + # autoLoad = true; + }; + lualine = { + enable = true; + # autoLoad = true; + }; + }; + }; + programs.plasma = { enable = true; overrideConfig = true; @@ -65,6 +229,22 @@ cursor.size = 24; }; + kwin = { + titlebarButtons = { + left = [ + "application-menu" + "on-all-desktops" + "keep-below-windows" + "keep-above-windows" + ]; + right = [ + "minimize" + "maximize" + "close" + ]; + }; + }; + configFile = { kwinrc.Desktops.Number = 3; # kdeglobals.KDE.AutomaticLookAndFeel = true; @@ -109,7 +289,8 @@ launchers = [ "applications:firefox.desktop" "applications:org.kde.dolphin.desktop" - "applications:org.kde.konsole.desktop" + "applications:vesktop.desktop" + "applications:kitty.desktop" ]; }; } @@ -131,12 +312,14 @@ shown = [ "org.kde.plasma.battery" "org.kde.plasma.bluetooth" - ]; - # And explicitly hide networkmanagement and volume - hidden = [ "org.kde.plasma.networkmanagement" "org.kde.plasma.volume" ]; + # And explicitly hide networkmanagement and volume + # hidden = [ + # "org.kde.plasma.networkmanagement" + # "org.kde.plasma.volume" + # ]; }; } { diff --git a/home/peach.nix b/home/peach.nix index 7538dcc..26be939 100644 --- a/home/peach.nix +++ b/home/peach.nix @@ -7,8 +7,21 @@ }; programs.plasma = { + + input.touchpads = [ + { + name = "Apple MTP multi-touch"; + vendorId = "05ac"; + productId = "0352"; + disableWhileTyping = false; + enable = true; + tapToClick = false; + naturalScroll = true; + accelerationProfile = "default"; + } + ]; + workspace = { - # lookAndFeel = "Catppuccin-Mocha-Peach"; colorScheme = "CatppuccinMochaPeach"; cursor.theme = "catppuccin-mocha-peach-cursors"; splashScreen.theme = "Catpppuccin-Mocha-Peach"; diff --git a/hosts/all.nix b/hosts/all.nix index ba1d73e..a77456a 100755 --- a/hosts/all.nix +++ b/hosts/all.nix @@ -115,6 +115,68 @@ security.sudo.wheelNeedsPassword = false; + programs.firefox = { + enable = true; + preferences = { + "widget.use-xdg-desktop-portal.file-picker" = 1; + "widget.gtk.global-menu.enabled" = true; + "widget.gtk.global-menu.wayland.enabled" = true; + "browser.tabs.inTitlebar" = 0; + "extensions.pocket.enabled" = false; + "extensions.screenshots.disabled" = true; + "browser.topsites.contile.enabled" = false; + "browser.formfill.enable" = false; + "browser.search.suggest.enabled" = false; + "browser.search.suggest.enabled.private" = false; + "browser.urlbar.suggest.searches" = false; + "browser.urlbar.showSearchSuggestionsFirst" = false; + "browser.newtabpage.activity-stream.feeds.section.topstories" = false; + "browser.newtabpage.activity-stream.feeds.snippets" = false; + "browser.newtabpage.activity-stream.section.highlights.includePocket" = false; + "browser.newtabpage.activity-stream.section.highlights.includeBookmarks" = false; + "browser.newtabpage.activity-stream.section.highlights.includeDownloads" = false; + "browser.newtabpage.activity-stream.section.highlights.includeVisited" = false; + "browser.newtabpage.activity-stream.showSponsored" = false; + "browser.newtabpage.activity-stream.system.showSponsored" = false; + "browser.newtabpage.activity-stream.showSponsoredTopSites" = false; + }; + policies = { + DisableTelemetry = true; + DisableFirefoxStudies = true; + EnableTrackingProtection = { + Value = true; + Locked = true; + Cryptomining = true; + Fingerprinting = true; + }; + DisablePocket = true; + DisableFirefoxScreenshots = true; + OverrideFirstRunPage = ""; + OverridePostUpdatePage = ""; + DontCheckDefaultBrowser = true; + DisplayBookmarksToolbar = "newtab"; # alternatives: "always" or "newtab" + DisplayMenuBar = "default-off"; # alternatives: "always", "never" or "default-on" + SearchBar = "unified"; # alternative: "separate" + + # ---- EXTENSIONS ---- + # Check about:support for extension/add-on ID strings. + # Valid strings for installation_mode are "allowed", "blocked", + # "force_installed" and "normal_installed". + # ExtensionSettings = { + # # blocks all addons except the ones specified below + # "*".installation_mode = "blocked"; + # "uBlock0@raymondhill.net" = { + # install_url = "https://addons.mozilla.org/firefox/downloads/latest/ublock-origin/latest.xpi"; + # installation_mode = "force_installed"; + # }; + # "plasma-browser-integration@kde.org" = { + # install_url = "https://addons.mozilla.org/firefox/downloads/latest/plasma-integration/latest.xpi"; + # installation_mode = "force_installed"; + # }; + # }; + }; + }; + programs.bash = { interactiveShellInit = '' if [[ $(${pkgs.procps}/bin/ps --no-header --pid=$PPID --format=comm) != "fish" && -z ''${BASH_EXECUTION_STRING} ]] @@ -125,8 +187,6 @@ ''; }; - programs.firefox.enable = true; - nixpkgs.config.allowUnfree = true; environment = { From eee2ceecbe181175ba161101c6824d50468ecee6 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Fri, 7 Nov 2025 17:44:38 -0500 Subject: [PATCH 007/282] fix rclone --- home/all.nix | 1 + hosts/all.nix | 15 ++++++++------- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/home/all.nix b/home/all.nix index 46a108f..9b9ece2 100755 --- a/home/all.nix +++ b/home/all.nix @@ -18,6 +18,7 @@ wl-clipboard openmw nixfmt-rfc-style + rclone kde-rounded-corners kdePackages.partitionmanager diff --git a/hosts/all.nix b/hosts/all.nix index a77456a..515a26f 100755 --- a/hosts/all.nix +++ b/hosts/all.nix @@ -196,7 +196,12 @@ ]; }; - fileSystems."/mnt/nas" = { + programs.gnupg.agent = { + enable = true; + enableSSHSupport = true; + }; + + fileSystems."/home/sckova/Synology" = { device = "synology:/home"; fsType = "rclone"; options = [ @@ -204,15 +209,11 @@ "nofail" "allow_other" "args2env" - "config=/etc/nixos/configs/rclone.conf" + "config=/home/sckova/.config/rclone/rclone.conf" + "vfs-cache-mode=full" ]; }; - programs.gnupg.agent = { - enable = true; - enableSSHSupport = true; - }; - services.openssh.enable = true; networking.firewall.enable = false; From a354c7f277a9c0905a4c962064b4af20fd775bda Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Fri, 7 Nov 2025 17:48:05 -0500 Subject: [PATCH 008/282] fix alien formatting --- home/alien.nix | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/home/alien.nix b/home/alien.nix index 441ea22..9943276 100644 --- a/home/alien.nix +++ b/home/alien.nix @@ -2,8 +2,8 @@ { catppuccin = { - accent = "mocha"; - flavor = "blue"; + accent = "blue"; + flavor = "mocha"; }; programs.plasma = { @@ -13,10 +13,11 @@ splashScreen.theme = "Catpppuccin-Mocha-Blue"; }; - configFile = { - kdeglobals.KDE = { - DefaultDarkLookAndFeel = "Catppuccin-Mocha-Blue"; - DefaultLightLookAndFeel = "Catppuccin-Latte-Blue"; + configFile = { + kdeglobals.KDE = { + DefaultDarkLookAndFeel = "Catppuccin-Mocha-Blue"; + DefaultLightLookAndFeel = "Catppuccin-Latte-Blue"; + }; }; }; } From b1c83f4227015c35918306c7c753063467220cbe Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Fri, 7 Nov 2025 18:42:22 -0500 Subject: [PATCH 009/282] add kate and alien global menu --- home/alien.nix | 35 +++++++++++++++++++++++++++++++++++ home/all.nix | 10 ++++++++++ 2 files changed, 45 insertions(+) diff --git a/home/alien.nix b/home/alien.nix index 9943276..91186dd 100644 --- a/home/alien.nix +++ b/home/alien.nix @@ -19,5 +19,40 @@ DefaultLightLookAndFeel = "Catppuccin-Latte-Blue"; }; }; + panels = [ + # Alternative global menu to fit the modified taskbar + { + location = "bottom"; + height = 40; + hiding = "dodgewindows"; + lengthMode = "fit"; + floating = true; + alignment = "right"; + widgets = [ + "org.kde.plasma.appmenu" + { + plasmusicToolbar = { + panelIcon = { + albumCover = { + useAsIcon = false; + radius = 8; + }; + icon = "view-media-track"; + }; + playbackSource = "auto"; + musicControls.showPlaybackControls = true; + songText = { + displayInSeparateLines = true; + maximumWidth = 640; + scrolling = { + behavior = "alwaysScroll"; + speed = 3; + }; + }; + }; + } + ]; + } + ]; }; } diff --git a/home/all.nix b/home/all.nix index 9b9ece2..7837e76 100755 --- a/home/all.nix +++ b/home/all.nix @@ -213,6 +213,16 @@ }; }; + programs.kate = { + enable = true; + editor = { + font = { + family = "Noto Sans Mono"; + pointSize = 10; + }; + }; + }; + programs.plasma = { enable = true; overrideConfig = true; From 90b3451c662d2092d662f55147c03ff9d24437b7 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Fri, 7 Nov 2025 18:55:52 -0500 Subject: [PATCH 010/282] add wallpaper --- home/all.nix | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/home/all.nix b/home/all.nix index 7837e76..69fbf1c 100755 --- a/home/all.nix +++ b/home/all.nix @@ -238,6 +238,12 @@ theme = "Breeze"; }; cursor.size = 24; + wallpaperPictureOfTheDay.provider = "bing"; + wallpaperFillMode = "preserveAspectCrop"; + }; + + kscreenlocker = { + wallpaperPictureOfTheDay.provider = "bing"; }; kwin = { From 8161549add58ab92689fb389899ce931bc4be309 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Fri, 7 Nov 2025 19:09:37 -0500 Subject: [PATCH 011/282] split off systray into 2 areas --- home/alien.nix | 19 +++++++++++++++++++ home/all.nix | 40 ---------------------------------------- home/peach.nix | 34 ++++++++++++++++++++++++++-------- 3 files changed, 45 insertions(+), 48 deletions(-) diff --git a/home/alien.nix b/home/alien.nix index 91186dd..f74784e 100644 --- a/home/alien.nix +++ b/home/alien.nix @@ -51,6 +51,25 @@ }; }; } + "org.kde.plasma.panelspacer" + "org.kde.plasma.activitypager" + "org.kde.plasma.marginsseparator" + { + systemTray.items = { + shown = [ + "org.kde.plasma.battery" + "org.kde.plasma.bluetooth" + "org.kde.plasma.networkmanagement" + "org.kde.plasma.volume" + ]; + }; + } + { + digitalClock = { + calendar.firstDayOfWeek = "sunday"; + time.format = "12h"; + }; + } ]; } ]; diff --git a/home/all.nix b/home/all.nix index 69fbf1c..2ae340f 100755 --- a/home/all.nix +++ b/home/all.nix @@ -289,18 +289,12 @@ floating = true; alignment = "left"; widgets = [ - # Or you can configure the widgets by adding the widget-specific options for it. - # See modules/widgets for supported widgets and options for these widgets. - # For example: { kickoff = { sortAlphabetically = true; # icon = "nix-snowflake-white"; }; } - # Adding configuration to the widgets can also for example be used to - # pin apps to the task-manager, which this example illustrates by - # pinning dolphin and konsole to the task-manager by default with widget-specific options. { iconTasks = { launchers = [ @@ -311,40 +305,6 @@ ]; }; } - # If no configuration is needed, specifying only the name of the - # widget will add them with the default configuration. - "org.kde.plasma.activitypager" - "org.kde.plasma.marginsseparator" - # If you need configuration for your widget, instead of specifying the - # the keys and values directly using the config attribute as shown - # above, plasma-manager also provides some higher-level interfaces for - # configuring the widgets. See modules/widgets for supported widgets - # and options for these widgets. The widgets below shows two examples - # of usage, one where we add a digital clock, setting 12h time and - # first day of the week to Sunday and another adding a systray with - # some modifications in which entries to show. - { - systemTray.items = { - # We explicitly show bluetooth and battery - shown = [ - "org.kde.plasma.battery" - "org.kde.plasma.bluetooth" - "org.kde.plasma.networkmanagement" - "org.kde.plasma.volume" - ]; - # And explicitly hide networkmanagement and volume - # hidden = [ - # "org.kde.plasma.networkmanagement" - # "org.kde.plasma.volume" - # ]; - }; - } - { - digitalClock = { - calendar.firstDayOfWeek = "sunday"; - time.format = "12h"; - }; - } ]; } ]; diff --git a/home/peach.nix b/home/peach.nix index 26be939..a70f07c 100644 --- a/home/peach.nix +++ b/home/peach.nix @@ -10,14 +10,14 @@ input.touchpads = [ { - name = "Apple MTP multi-touch"; - vendorId = "05ac"; - productId = "0352"; - disableWhileTyping = false; - enable = true; - tapToClick = false; - naturalScroll = true; - accelerationProfile = "default"; + name = "Apple MTP multi-touch"; + vendorId = "05ac"; + productId = "0352"; + disableWhileTyping = false; + enable = true; + tapToClick = false; + naturalScroll = true; + accelerationProfile = "default"; } ]; @@ -83,6 +83,7 @@ } "org.kde.plasma.appmenu" "org.kde.plasma.panelspacer" + "org.kde.plasma.activitypager" { plasmusicToolbar = { panelIcon = { @@ -104,6 +105,23 @@ }; }; } + "org.kde.plasma.marginsseparator" + { + systemTray.items = { + shown = [ + "org.kde.plasma.battery" + "org.kde.plasma.bluetooth" + "org.kde.plasma.networkmanagement" + "org.kde.plasma.volume" + ]; + }; + } + { + digitalClock = { + calendar.firstDayOfWeek = "sunday"; + time.format = "12h"; + }; + } ]; } ]; From 653dc54d978b26a76e8bf6304fc4eece8dcbfbe3 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Fri, 7 Nov 2025 19:14:22 -0500 Subject: [PATCH 012/282] add workaround for broken key --- home/peach.nix | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/home/peach.nix b/home/peach.nix index a70f07c..01f66dd 100644 --- a/home/peach.nix +++ b/home/peach.nix @@ -34,6 +34,16 @@ }; }; + shortcuts = { + # my volume down key broke as hell boy + kmix.decrease_volume = "Volume Mute"; + kmix.decrease_volume_small = "Shift+Volume Mute"; + kmix.increase_volume = "Volume Up"; + kmix.increase_volume_small = "Shift+Volume Up"; + kmix.mute = "Sleep"; + org_kde_powerdevil.Sleep = [ ]; + }; + panels = [ # Application name, Global menu and Song information and playback controls at the top { From 084ec9772fe4051e6676f01f19264c320e9329b0 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Fri, 7 Nov 2025 19:31:14 -0500 Subject: [PATCH 013/282] minor changes --- home/all.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/home/all.nix b/home/all.nix index 2ae340f..4b41e9e 100755 --- a/home/all.nix +++ b/home/all.nix @@ -9,7 +9,6 @@ tmux fastfetch btop - # neovim killall wget ripgrep @@ -243,7 +242,7 @@ }; kscreenlocker = { - wallpaperPictureOfTheDay.provider = "bing"; + appearance.wallpaperPictureOfTheDay.provider = "bing"; }; kwin = { @@ -277,6 +276,7 @@ kwinrc.Round-Corners.InactiveSecondOutlinePalette = 2; kwinrc.Round-Corners.InactiveSecondOutlineUseCustom = false; kwinrc.Round-Corners.InactiveSecondOutlineUsePalette = true; + kdeglobals.Sounds.Enable = false; }; panels = [ From 9de16f1132ee37e1c11af3a40a1c18d1437f7f6d Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Fri, 7 Nov 2025 19:58:11 -0500 Subject: [PATCH 014/282] changes to both panel alts --- home/alien.nix | 13 +++++++++++++ home/all.nix | 15 +++++++++++++-- home/peach.nix | 38 +++++++++++++++++++------------------- 3 files changed, 45 insertions(+), 21 deletions(-) diff --git a/home/alien.nix b/home/alien.nix index f74784e..e520fcd 100644 --- a/home/alien.nix +++ b/home/alien.nix @@ -60,8 +60,21 @@ "org.kde.plasma.battery" "org.kde.plasma.bluetooth" "org.kde.plasma.networkmanagement" + "org.kde.plasma.brightness" "org.kde.plasma.volume" ]; + hidden = [ + "org.kde.plasma.clipboard" + "org.kde.plasma.manage-inputmethod" + "org.kde.plasma.cameraindicator" + "org.kde.plasma.keyboardlayout" + "org.kde.plasma.devicenotifier" + "org.kde.plasma.notifications" + "org.kde.plasma.weather" + "org.kde.plasma.printmanager" + "org.kde.plasma.keyboardindicator" + "org.kde.plasma.mediacontroller" + ]; }; } { diff --git a/home/all.nix b/home/all.nix index 4b41e9e..4a57ec9 100755 --- a/home/all.nix +++ b/home/all.nix @@ -259,10 +259,20 @@ "close" ]; }; + nightLight = { + enable = true; + mode = "location"; + # Atlanta + location.latitude = "33.7501"; + location.longitude = "-84.3885"; + temperature.day = 6000; + temperature.night = 3500; + transitionTime = 60; + }; }; configFile = { - kwinrc.Desktops.Number = 3; + kwinrc.Desktops.Number = 4; # kdeglobals.KDE.AutomaticLookAndFeel = true; kwinrc.Round-Corners.ActiveOutlinePalette = 3; kwinrc.Round-Corners.ActiveOutlineUseCustom = false; @@ -280,7 +290,7 @@ }; panels = [ - # Windows-like panel at the bottom + # Small dock at the bottom right { location = "bottom"; height = 40; @@ -305,6 +315,7 @@ ]; }; } + "org.kde.plasma.pager" ]; } ]; diff --git a/home/peach.nix b/home/peach.nix index 01f66dd..cacc3bd 100644 --- a/home/peach.nix +++ b/home/peach.nix @@ -57,35 +57,23 @@ }; layout = { elements = [ "windowTitle" ]; - horizontalAlignment = "left"; + horizontalAlignment = "right"; showDisabledElements = "deactivated"; verticalAlignment = "center"; }; overrideForMaximized.enable = false; - titleReplacements = [ - { - type = "regexp"; - originalTitle = "^Brave Web Browser$"; - newTitle = "Brave"; - } - { - type = "regexp"; - originalTitle = ''\\bDolphin\\b''; - newTitle = "File manager"; - } - ]; windowTitle = { font = { bold = false; fit = "fixedSize"; - size = 12; + size = 10; }; hideEmptyTitle = true; margins = { - bottom = 0; + bottom = 5; left = 10; - right = 5; - top = 0; + right = 0; + top = 5; }; source = "appName"; }; @@ -93,7 +81,6 @@ } "org.kde.plasma.appmenu" "org.kde.plasma.panelspacer" - "org.kde.plasma.activitypager" { plasmusicToolbar = { panelIcon = { @@ -107,7 +94,7 @@ musicControls.showPlaybackControls = true; songText = { displayInSeparateLines = true; - maximumWidth = 640; + maximumWidth = 300; scrolling = { behavior = "alwaysScroll"; speed = 3; @@ -122,8 +109,21 @@ "org.kde.plasma.battery" "org.kde.plasma.bluetooth" "org.kde.plasma.networkmanagement" + "org.kde.plasma.brightness" "org.kde.plasma.volume" ]; + hidden = [ + "org.kde.plasma.clipboard" + "org.kde.plasma.manage-inputmethod" + "org.kde.plasma.cameraindicator" + "org.kde.plasma.keyboardlayout" + "org.kde.plasma.devicenotifier" + "org.kde.plasma.notifications" + "org.kde.plasma.weather" + "org.kde.plasma.printmanager" + "org.kde.plasma.keyboardindicator" + "org.kde.plasma.mediacontroller" + ]; }; } { From 8ffeaab1f22a07037a43955dfeead59fed8a5018 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Fri, 7 Nov 2025 20:53:35 -0500 Subject: [PATCH 015/282] flake update --- flake.lock | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/flake.lock b/flake.lock index f86b74f..499cc62 100644 --- a/flake.lock +++ b/flake.lock @@ -8,11 +8,11 @@ ] }, "locked": { - "lastModified": 1761514810, - "narHash": "sha256-rOEir3x37RRWO+lFia8C9HAThARg+pubRF2hrWQeeEE=", + "lastModified": 1762421567, + "narHash": "sha256-i5GIUYgnlNozrsxDKZtRiCyJGbbAI6Queiu3OGcuf4Y=", "owner": "nix-community", "repo": "nixos-apple-silicon", - "rev": "e01011ebc0aa7a0ae6444a8429e91196addd45f4", + "rev": "43db10b6bdc6f80097ddc3acf833ec828af50d40", "type": "github" }, "original": { @@ -28,11 +28,11 @@ ] }, "locked": { - "lastModified": 1762198582, - "narHash": "sha256-P9giW/1Crn7ekQt4YIbONJ/hKFaHkTwyhz82FCjh+OM=", + "lastModified": 1762510976, + "narHash": "sha256-KGoSj8qMOOPaNE48RTtuNBbqOvKLTeklnRHWWvE/TXo=", "owner": "catppuccin", "repo": "nix", - "rev": "08716214674ca27914daa52e6fa809cc022b581e", + "rev": "728cb0a667ce37bb0c68557dba819c7fb54ff1c8", "type": "github" }, "original": { @@ -102,11 +102,11 @@ ] }, "locked": { - "lastModified": 1762351818, - "narHash": "sha256-0ptUDbYwxv1kk/uzEX4+NJjY2e16MaAhtzAOJ6K0TG0=", + "lastModified": 1762463325, + "narHash": "sha256-33YUsWpPyeBZEWrKQ2a1gkRZ7i0XCC/2MYpU6BVeQSU=", "owner": "nix-community", "repo": "home-manager", - "rev": "b959c67241cae17fc9e4ee7eaf13dfa8512477ea", + "rev": "0562fef070a1027325dd4ea10813d64d2c967b39", "type": "github" }, "original": { @@ -145,11 +145,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1762111121, - "narHash": "sha256-4vhDuZ7OZaZmKKrnDpxLZZpGIJvAeMtK6FKLJYUtAdw=", + "lastModified": 1762363567, + "narHash": "sha256-YRqMDEtSMbitIMj+JLpheSz0pwEr0Rmy5mC7myl17xs=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "b3d51a0365f6695e7dd5cdf3e180604530ed33b4", + "rev": "ae814fd3904b621d8ab97418f1d0f2eb0d3716f4", "type": "github" }, "original": { From 5a41d6453238bd7ceaf7c7ff193fdcf9bedda6b1 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Fri, 7 Nov 2025 20:55:01 -0500 Subject: [PATCH 016/282] remove asahi firmware extraction --- hosts/peach.nix | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/hosts/peach.nix b/hosts/peach.nix index 8ed8ec8..02de9d1 100644 --- a/hosts/peach.nix +++ b/hosts/peach.nix @@ -1,4 +1,11 @@ -{ config, pkgs, lib, catppuccin, ... }: { +{ + config, + pkgs, + lib, + catppuccin, + ... +}: +{ networking.hostName = "peach"; catppuccin.accent = "peach"; @@ -10,13 +17,16 @@ hardware.asahi = { enable = true; setupAsahiSound = true; - extractPeripheralFirmware = true; - peripheralFirmwareDirectory = ../firmware; + extractPeripheralFirmware = false; + # This is broken because of flake git tracking. + # I can't figure out how to make it work. + # peripheralFirmwareDirectory = ../firmware; }; - swapDevices = [{ - device = "/swapfile"; - size = 32000; # 32GB - }]; + swapDevices = [ + { + device = "/swapfile"; + size = 32000; # 32GB + } + ]; } - From 375ec3ab681f20130619c91c544d3a214e32f4a8 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Fri, 7 Nov 2025 20:56:01 -0500 Subject: [PATCH 017/282] remove rclone --- home/all.nix | 1 - hosts/all.nix | 14 -------------- 2 files changed, 15 deletions(-) diff --git a/home/all.nix b/home/all.nix index 4a57ec9..3af86ff 100755 --- a/home/all.nix +++ b/home/all.nix @@ -17,7 +17,6 @@ wl-clipboard openmw nixfmt-rfc-style - rclone kde-rounded-corners kdePackages.partitionmanager diff --git a/hosts/all.nix b/hosts/all.nix index 515a26f..7aab53b 100755 --- a/hosts/all.nix +++ b/hosts/all.nix @@ -191,7 +191,6 @@ environment = { systemPackages = with pkgs; [ - rclone git ]; }; @@ -201,19 +200,6 @@ enableSSHSupport = true; }; - fileSystems."/home/sckova/Synology" = { - device = "synology:/home"; - fsType = "rclone"; - options = [ - "nodev" - "nofail" - "allow_other" - "args2env" - "config=/home/sckova/.config/rclone/rclone.conf" - "vfs-cache-mode=full" - ]; - }; - services.openssh.enable = true; networking.firewall.enable = false; From e11135c398d5f3add296afb2b2b6f275c6fbeedd Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Fri, 7 Nov 2025 22:31:10 -0500 Subject: [PATCH 018/282] broken: add firmware to tracking --- .gitignore | 2 +- hosts/peach.nix | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index 2b8800b..0b19abb 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1 @@ -firmware +#firmware diff --git a/hosts/peach.nix b/hosts/peach.nix index 02de9d1..5b817cb 100644 --- a/hosts/peach.nix +++ b/hosts/peach.nix @@ -17,10 +17,10 @@ hardware.asahi = { enable = true; setupAsahiSound = true; - extractPeripheralFirmware = false; + # extractPeripheralFirmware = false; # This is broken because of flake git tracking. # I can't figure out how to make it work. - # peripheralFirmwareDirectory = ../firmware; + peripheralFirmwareDirectory = ../firmware; }; swapDevices = [ From cf86c22c23f96ffc3913324c2519ae7cce851a3b Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Fri, 7 Nov 2025 22:41:58 -0500 Subject: [PATCH 019/282] more panel changes --- home/all.nix | 64 +++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 63 insertions(+), 1 deletion(-) diff --git a/home/all.nix b/home/all.nix index 3af86ff..8731ae4 100755 --- a/home/all.nix +++ b/home/all.nix @@ -244,6 +244,60 @@ appearance.wallpaperPictureOfTheDay.provider = "bing"; }; + window-rules = [ + { + description = "OpenMW"; + match = { + window-class = { + value = "openmw"; + type = "substring"; + }; + window-types = [ "normal" ]; + }; + apply = { + noborder = { + value = true; + apply = "force"; + }; + maximizehoriz = { + value = true; + apply = "force"; + }; + maximizevert = { + value = true; + apply = "force"; + }; + desktops = { + value = "Desktop_4"; + apply = "force"; + }; + }; + } + { + description = "Firefox Picture-in-Picture"; + match = { + window-class = { + value = "firefox"; + type = "exact"; + }; + title = { + value = "Picture-in-Picture"; + type = "exact"; + }; + }; + apply = { + above = { + value = true; + apply = "force"; + }; + desktops = { + value = "\\0"; + apply = "force"; + }; + }; + } + ]; + kwin = { titlebarButtons = { left = [ @@ -268,10 +322,18 @@ temperature.night = 3500; transitionTime = 60; }; + virtualDesktops = { + names = [ + "1" + "2" + "3" + "4" + ]; + rows = 1; + }; }; configFile = { - kwinrc.Desktops.Number = 4; # kdeglobals.KDE.AutomaticLookAndFeel = true; kwinrc.Round-Corners.ActiveOutlinePalette = 3; kwinrc.Round-Corners.ActiveOutlineUseCustom = false; From b83c589220aa2f0692b14389479549c361e83079 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Sat, 8 Nov 2025 08:04:09 -0500 Subject: [PATCH 020/282] add asahi packages --- home/peach.nix | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/home/peach.nix b/home/peach.nix index cacc3bd..a144de6 100644 --- a/home/peach.nix +++ b/home/peach.nix @@ -1,6 +1,13 @@ { config, pkgs, ... }: { + home.packages = with pkgs; [ + asahi-nvram + asahi-bless + asahi-btsync + asahi-wifisync + ]; + catppuccin = { accent = "peach"; flavor = "mocha"; From bfd99886d685f58855c4e09d4035e304b2722c11 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Sat, 8 Nov 2025 09:13:00 -0500 Subject: [PATCH 021/282] add chromium --- home/all.nix | 2 ++ hosts/all.nix | 8 ++++++++ 2 files changed, 10 insertions(+) diff --git a/home/all.nix b/home/all.nix index 8731ae4..8acf934 100755 --- a/home/all.nix +++ b/home/all.nix @@ -17,6 +17,8 @@ wl-clipboard openmw nixfmt-rfc-style + chromium + widevine-cdm kde-rounded-corners kdePackages.partitionmanager diff --git a/hosts/all.nix b/hosts/all.nix index 7aab53b..4e1fa68 100755 --- a/hosts/all.nix +++ b/hosts/all.nix @@ -15,6 +15,11 @@ "flakes" ]; + nix.settings.trusted-users = [ + "root" + "sckova" + ]; + home-manager.useGlobalPkgs = true; home-manager.useUserPackages = true; home-manager.users.sckova = { @@ -193,6 +198,9 @@ systemPackages = with pkgs; [ git ]; + sessionVariables = { + NIXOS_OZONE_WL = "1"; + }; }; programs.gnupg.agent = { From 27cd3afd8074ec00e2860eac50d591eb8ca9f372 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Sat, 8 Nov 2025 09:52:26 -0500 Subject: [PATCH 022/282] add strawberry from git --- flake.nix | 9 ++- home/all.nix | 5 +- hosts/all.nix | 4 + packages/strawberry/overlay.nix | 3 + packages/strawberry/package.nix | 133 ++++++++++++++++++++++++++++++++ 5 files changed, 152 insertions(+), 2 deletions(-) create mode 100644 packages/strawberry/overlay.nix create mode 100644 packages/strawberry/package.nix diff --git a/flake.nix b/flake.nix index 2b8966d..c5bec36 100644 --- a/flake.nix +++ b/flake.nix @@ -52,6 +52,11 @@ inherit system; specialArgs = { inherit catppuccin; }; modules = [ + { + nixpkgs.overlays = [ + (import ./packages/strawberry/overlay.nix) + ]; + } ./hosts/all.nix ./hosts/${hostname}.nix ./hardware/${hostname}.nix @@ -74,7 +79,9 @@ system, }: home-manager.lib.homeManagerConfiguration { - pkgs = import nixpkgs { inherit system; }; + pkgs = import nixpkgs { + inherit system; + }; home.username = user; home.homeDirectory = "/home/${user}"; modules = [ diff --git a/home/all.nix b/home/all.nix index 8acf934..94349fd 100755 --- a/home/all.nix +++ b/home/all.nix @@ -19,6 +19,8 @@ nixfmt-rfc-style chromium widevine-cdm + strawberry-master + spotify-player kde-rounded-corners kdePackages.partitionmanager @@ -303,7 +305,7 @@ kwin = { titlebarButtons = { left = [ - "application-menu" + "more-window-actions" "on-all-desktops" "keep-below-windows" "keep-above-windows" @@ -375,6 +377,7 @@ "applications:org.kde.dolphin.desktop" "applications:vesktop.desktop" "applications:kitty.desktop" + "applications:org.strawberrymusicplayer.strawberry.desktop" ]; }; } diff --git a/hosts/all.nix b/hosts/all.nix index 4e1fa68..01acf11 100755 --- a/hosts/all.nix +++ b/hosts/all.nix @@ -211,6 +211,10 @@ services.openssh.enable = true; networking.firewall.enable = false; + networking.extraHosts = '' + 0.0.0.0 apresolve.spotify.com + ''; + # This value determines the NixOS release from which the default # settings for stateful data, like file locations and database versions # on your system were taken. It‘s perfectly fine and recommended to leave diff --git a/packages/strawberry/overlay.nix b/packages/strawberry/overlay.nix new file mode 100644 index 0000000..086d41b --- /dev/null +++ b/packages/strawberry/overlay.nix @@ -0,0 +1,3 @@ +final: prev: { + strawberry-master = prev.callPackage (builtins.path { path = ./package.nix; }) { }; +} diff --git a/packages/strawberry/package.nix b/packages/strawberry/package.nix new file mode 100644 index 0000000..affb712 --- /dev/null +++ b/packages/strawberry/package.nix @@ -0,0 +1,133 @@ +{ + alsa-lib, + boost, + chromaprint, + cmake, + fetchFromGitHub, + fftw, + glib-networking, + gnutls, + gst_all_1, + kdsingleapplication, + lib, + libXdmcp, + libcdio, + libebur128, + libidn2, + libmtp, + libpthreadstubs, + libpulseaudio, + libselinux, + libsepol, + libtasn1, + ninja, + nix-update-script, + p11-kit, + pkg-config, + qt6, + sqlite, + stdenv, + taglib, + util-linux, + sparsehash, + rapidjson, + + # tests + gtest, +}: + +stdenv.mkDerivation (finalAttrs: { + pname = "strawberry-master"; + version = "git-master"; + + src = fetchFromGitHub { + owner = "jonaski"; + repo = "strawberry"; + rev = "master"; + hash = "sha256-A5eEXpRKZDwfmmXs+6V1qUerEma4AdncuVXohgh3z4E="; + }; + + # the big strawberry shown in the context menu is *very* much in your face, so use the grey version instead + postPatch = '' + substituteInPlace src/context/contextalbum.cpp \ + --replace-fail pictures/strawberry.png pictures/strawberry-grey.png + ''; + + buildInputs = [ + alsa-lib + boost + chromaprint + fftw + gnutls + kdsingleapplication + libXdmcp + libcdio + libebur128 + libidn2 + libmtp + libpthreadstubs + libtasn1 + qt6.qtbase + sqlite + taglib + sparsehash + rapidjson + ] + ++ lib.optionals stdenv.hostPlatform.isLinux [ + libpulseaudio + libselinux + libsepol + p11-kit + ] + ++ (with gst_all_1; [ + glib-networking + gst-libav + gst-plugins-bad + gst-plugins-base + gst-plugins-good + gst-plugins-ugly + gst-plugins-rs + gstreamer + ]); + + nativeBuildInputs = [ + cmake + ninja + pkg-config + qt6.qttools + qt6.wrapQtAppsHook + ] + ++ lib.optionals stdenv.hostPlatform.isLinux [ + util-linux + ]; + + cmakeFlags = with lib; [ (cmakeBool "ENABLE_GPOD" false) ]; + + checkInputs = [ gtest ]; + checkTarget = "strawberry_tests"; + preCheck = '' + # defaults to "xcb" otherwise, which requires a display + export QT_QPA_PLATFORM=offscreen + ''; + doCheck = true; + + postInstall = '' + qtWrapperArgs+=( + --prefix GST_PLUGIN_SYSTEM_PATH_1_0 : "$GST_PLUGIN_SYSTEM_PATH_1_0" + --prefix GIO_EXTRA_MODULES : "${glib-networking.out}/lib/gio/modules" + ) + ''; + + passthru.updateScript = nix-update-script { }; + + meta = { + description = "Music player and music collection organizer"; + homepage = "https://www.strawberrymusicplayer.org/"; + changelog = "https://raw.githubusercontent.com/jonaski/strawberry/${finalAttrs.finalPackage.version}/Changelog"; + license = lib.licenses.gpl3Only; + maintainers = with lib.maintainers; [ peterhoeg ]; + # upstream says darwin should work but they lack maintainers as of 0.6.6 + platforms = lib.platforms.linux; + mainProgram = "strawberry"; + }; +}) From 3b05e0fd72f3b04972326abd34f48ceb1e608e58 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Sat, 8 Nov 2025 11:31:05 -0500 Subject: [PATCH 023/282] more plasma changes --- home/all.nix | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/home/all.nix b/home/all.nix index 94349fd..cb629b6 100755 --- a/home/all.nix +++ b/home/all.nix @@ -316,6 +316,7 @@ "close" ]; }; + nightLight = { enable = true; mode = "location"; @@ -335,6 +336,22 @@ ]; rows = 1; }; + effects = { + desktopSwitching = { + animation = "slide"; + navigationWrapping = true; + }; + dimAdminMode.enable = true; + dimInactive.enable = true; + minimization = { + animation = "magiclamp"; + duration = 50; + }; + shakeCursor.enable = true; + snapHelper.enable = true; + translucency.enable = true; + windowOpenClose.animation = "fade"; + }; }; configFile = { From f71c63473d892c5176e7523a58c2e3a23aa90748 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Sat, 8 Nov 2025 12:59:18 -0500 Subject: [PATCH 024/282] more plasma changes --- flake.lock | 59 ++++++++++++++++++++- flake.nix | 11 +++- home/alien.nix | 2 - home/all.nix | 137 +++++++++++++++++++++++++++++++++++++++++++++++-- home/peach.nix | 7 +-- hosts/all.nix | 4 ++ 6 files changed, 209 insertions(+), 11 deletions(-) diff --git a/flake.lock b/flake.lock index 499cc62..286a271 100644 --- a/flake.lock +++ b/flake.lock @@ -79,7 +79,7 @@ }, "flake-utils": { "inputs": { - "systems": "systems" + "systems": "systems_2" }, "locked": { "lastModified": 1731533236, @@ -143,6 +143,27 @@ "type": "github" } }, + "kwin-effects-forceblur": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ], + "utils": "utils" + }, + "locked": { + "lastModified": 1755098995, + "narHash": "sha256-6FN7XEf27DenQHDIKjrjOW3tGIaJlyqRlXarmt1v+M0=", + "owner": "taj-ny", + "repo": "kwin-effects-forceblur", + "rev": "51a1d49d7fd7df3ce40ccf6ba4c4410cf6f510e1", + "type": "github" + }, + "original": { + "owner": "taj-ny", + "repo": "kwin-effects-forceblur", + "type": "github" + } + }, "nixpkgs": { "locked": { "lastModified": 1762363567, @@ -166,7 +187,7 @@ "nixpkgs" ], "nuschtosSearch": "nuschtosSearch", - "systems": "systems_2" + "systems": "systems_3" }, "locked": { "lastModified": 1762523528, @@ -233,6 +254,7 @@ "apple-silicon": "apple-silicon", "catppuccin": "catppuccin", "home-manager": "home-manager", + "kwin-effects-forceblur": "kwin-effects-forceblur", "nixpkgs": "nixpkgs", "nixvim": "nixvim", "plasma-manager": "plasma-manager" @@ -267,6 +289,39 @@ "repo": "default", "type": "github" } + }, + "systems_3": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "utils": { + "inputs": { + "systems": "systems" + }, + "locked": { + "lastModified": 1726560853, + "narHash": "sha256-X6rJYSESBVr3hBoH0WbKE5KvhPU5bloyZ2L4K60/fPQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "c1dfcf08411b08f6b8615f7d8971a2bfa81d5e8a", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } } }, "root": "root", diff --git a/flake.nix b/flake.nix index c5bec36..b9cea53 100644 --- a/flake.nix +++ b/flake.nix @@ -25,6 +25,11 @@ inputs.nixpkgs.follows = "nixpkgs"; }; + kwin-effects-forceblur = { + url = "github:taj-ny/kwin-effects-forceblur"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + apple-silicon = { url = "github:nix-community/nixos-apple-silicon"; inputs.nixpkgs.follows = "nixpkgs"; @@ -38,6 +43,7 @@ home-manager, plasma-manager, nixvim, + kwin-effects-forceblur, apple-silicon, ... }: @@ -50,7 +56,10 @@ }: nixpkgs.lib.nixosSystem { inherit system; - specialArgs = { inherit catppuccin; }; + specialArgs = { + inherit catppuccin; + inputs = { inherit kwin-effects-forceblur; }; + }; modules = [ { nixpkgs.overlays = [ diff --git a/home/alien.nix b/home/alien.nix index e520fcd..91b0430 100644 --- a/home/alien.nix +++ b/home/alien.nix @@ -51,8 +51,6 @@ }; }; } - "org.kde.plasma.panelspacer" - "org.kde.plasma.activitypager" "org.kde.plasma.marginsseparator" { systemTray.items = { diff --git a/home/all.nix b/home/all.nix index cb629b6..efaf83e 100755 --- a/home/all.nix +++ b/home/all.nix @@ -21,6 +21,7 @@ widevine-cdm strawberry-master spotify-player + input-leap kde-rounded-corners kdePackages.partitionmanager @@ -210,6 +211,103 @@ }; lualine = { enable = true; + settings = { + options = { + theme = { + normal = { + a = { + fg = "#1e1e2e"; + bg = "#cba6f7"; + }; + b = { + fg = "#cdd6f4"; + bg = "#313244"; + }; + c = { + fg = "#cdd6f4"; + }; + }; + insert = { + a = { + fg = "#1e1e2e"; + bg = "#89b4fa"; + }; + }; + visual = { + a = { + fg = "#1e1e2e"; + bg = "#94e2d5"; + }; + }; + replace = { + a = { + fg = "#1e1e2e"; + bg = "#f38ba8"; + }; + }; + inactive = { + a = { + fg = "#cdd6f4"; + bg = "#1e1e2e"; + }; + b = { + fg = "#cdd6f4"; + bg = "#1e1e2e"; + }; + c = { + fg = "#cdd6f4"; + }; + }; + }; + component_separators = ""; + section_separators = { + left = ""; + right = ""; + }; + }; + + sections = { + lualine_a = [ + { + __unkeyed-1 = "mode"; + separator = { + left = " "; + }; + right_padding = 2; + } + ]; + lualine_b = [ + "filename" + "branch" + ]; + lualine_c = [ "%=" ]; + lualine_x = [ ]; + lualine_y = [ + "filetype" + "progress" + ]; + lualine_z = [ + { + __unkeyed-1 = "location"; + separator = { + right = " "; + }; + left_padding = 2; + } + ]; + }; + + inactive_sections = { + lualine_a = [ "filename" ]; + lualine_b = [ ]; + lualine_c = [ ]; + lualine_x = [ ]; + lualine_y = [ ]; + lualine_z = [ "location" ]; + }; + tabline = { }; + extensions = [ ]; + }; # autoLoad = true; }; }; @@ -249,6 +347,26 @@ }; window-rules = [ + { + description = "Global Changes"; + match = { + window-class = { + value = ""; + type = "substring"; + }; + window-types = [ "normal" ]; + }; + apply = { + opacityactive = { + value = 100; + apply = "force"; + }; + opacityinactive = { + value = 95; + apply = "force"; + }; + }; + } { description = "OpenMW"; match = { @@ -305,7 +423,6 @@ kwin = { titlebarButtons = { left = [ - "more-window-actions" "on-all-desktops" "keep-below-windows" "keep-above-windows" @@ -342,15 +459,20 @@ navigationWrapping = true; }; dimAdminMode.enable = true; - dimInactive.enable = true; + # dimInactive.enable = true; minimization = { animation = "magiclamp"; - duration = 50; + duration = 500; }; shakeCursor.enable = true; snapHelper.enable = true; translucency.enable = true; windowOpenClose.animation = "fade"; + blur = { + enable = false; + noiseStrength = 8; + strength = 5; + }; }; }; @@ -369,6 +491,15 @@ kwinrc.Round-Corners.InactiveSecondOutlineUseCustom = false; kwinrc.Round-Corners.InactiveSecondOutlineUsePalette = true; kdeglobals.Sounds.Enable = false; + kwinrc.Plugins.forceblurEnabled = true; + kwinrc.Effect-blurplus.BlurDecorations = true; + kwinrc.Effect-blurplus.BlurMatching = false; + kwinrc.Effect-blurplus.BlurMenus = true; + kwinrc.Effect-blurplus.BlurNonMatching = true; + kwinrc.Effect-blurplus.TopCornerRadius = 10; + kwinrc.Effect-blurplus.BottomCornerRadius = 10; + kwinrc.Effect-blurplus.NoiseStrength = 6; + kwinrc.Effect-blurplus.RefractionStrength = 10; }; panels = [ diff --git a/home/peach.nix b/home/peach.nix index a144de6..b8c7fba 100644 --- a/home/peach.nix +++ b/home/peach.nix @@ -56,6 +56,7 @@ { location = "top"; height = 37; + floating = false; widgets = [ { applicationTitleBar = { @@ -95,13 +96,13 @@ useAsIcon = false; radius = 8; }; - icon = "view-media-track"; + icon = ""; }; playbackSource = "auto"; - musicControls.showPlaybackControls = true; + musicControls.showPlaybackControls = false; songText = { displayInSeparateLines = true; - maximumWidth = 300; + maximumWidth = 360; scrolling = { behavior = "alwaysScroll"; speed = 3; diff --git a/hosts/all.nix b/hosts/all.nix index 01acf11..95d5fe5 100755 --- a/hosts/all.nix +++ b/hosts/all.nix @@ -6,6 +6,7 @@ config, lib, pkgs, + inputs, ... }: @@ -65,6 +66,8 @@ }; networking.networkmanager.enable = true; + hardware.bluetooth.enable = true; + time.timeZone = "America/New_York"; i18n.defaultLocale = "en_US.UTF-8"; i18n.extraLocaleSettings = { @@ -197,6 +200,7 @@ environment = { systemPackages = with pkgs; [ git + inputs.kwin-effects-forceblur.packages.${pkgs.stdenv.hostPlatform.system}.default ]; sessionVariables = { NIXOS_OZONE_WL = "1"; From b3ecffd4b6096a17788da10562c19690f224896f Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Sat, 8 Nov 2025 19:40:55 -0500 Subject: [PATCH 025/282] add extensions --- home/all.nix | 6 +++-- home/peach.nix | 2 +- hosts/all.nix | 71 +++++++++++++++++++++++++++++++++++++++++--------- 3 files changed, 63 insertions(+), 16 deletions(-) diff --git a/home/all.nix b/home/all.nix index efaf83e..65c5b2d 100755 --- a/home/all.nix +++ b/home/all.nix @@ -22,6 +22,7 @@ strawberry-master spotify-player input-leap + libreoffice-qt-fresh kde-rounded-corners kdePackages.partitionmanager @@ -399,8 +400,8 @@ description = "Firefox Picture-in-Picture"; match = { window-class = { - value = "firefox"; - type = "exact"; + value = ""; + type = "substring"; }; title = { value = "Picture-in-Picture"; @@ -526,6 +527,7 @@ "applications:vesktop.desktop" "applications:kitty.desktop" "applications:org.strawberrymusicplayer.strawberry.desktop" + "applications:writer.desktop" ]; }; } diff --git a/home/peach.nix b/home/peach.nix index b8c7fba..a333085 100644 --- a/home/peach.nix +++ b/home/peach.nix @@ -102,7 +102,7 @@ musicControls.showPlaybackControls = false; songText = { displayInSeparateLines = true; - maximumWidth = 360; + maximumWidth = 320; scrolling = { behavior = "alwaysScroll"; speed = 3; diff --git a/hosts/all.nix b/hosts/all.nix index 95d5fe5..0c9b776 100755 --- a/hosts/all.nix +++ b/hosts/all.nix @@ -10,6 +10,16 @@ ... }: +let + lock-false = { + Value = false; + Status = "locked"; + }; + lock-true = { + Value = true; + Status = "locked"; + }; +in { nix.settings.experimental-features = [ "nix-command" @@ -158,30 +168,64 @@ Fingerprinting = true; }; DisablePocket = true; + DisableFirefoxAccounts = true; + DisableAccounts = true; DisableFirefoxScreenshots = true; OverrideFirstRunPage = ""; OverridePostUpdatePage = ""; DontCheckDefaultBrowser = true; DisplayBookmarksToolbar = "newtab"; # alternatives: "always" or "newtab" - DisplayMenuBar = "default-off"; # alternatives: "always", "never" or "default-on" + DisplayMenuBar = "always"; # alternatives: "always", "never" or "default-on" SearchBar = "unified"; # alternative: "separate" # ---- EXTENSIONS ---- # Check about:support for extension/add-on ID strings. # Valid strings for installation_mode are "allowed", "blocked", # "force_installed" and "normal_installed". - # ExtensionSettings = { - # # blocks all addons except the ones specified below - # "*".installation_mode = "blocked"; - # "uBlock0@raymondhill.net" = { - # install_url = "https://addons.mozilla.org/firefox/downloads/latest/ublock-origin/latest.xpi"; - # installation_mode = "force_installed"; - # }; - # "plasma-browser-integration@kde.org" = { - # install_url = "https://addons.mozilla.org/firefox/downloads/latest/plasma-integration/latest.xpi"; - # installation_mode = "force_installed"; - # }; - # }; + ExtensionSettings = { + # blocks all addons except the ones specified below + "*".installation_mode = "blocked"; + "uBlock0@raymondhill.net" = { + install_url = "https://addons.mozilla.org/firefox/downloads/latest/ublock-origin/latest.xpi"; + installation_mode = "force_installed"; + }; + "plasma-browser-integration@kde.org" = { + install_url = "https://addons.mozilla.org/firefox/downloads/latest/plasma-integration/latest.xpi"; + installation_mode = "force_installed"; + }; + "{7a7a4a92-a2a0-41d1-9fd7-1e92480d612d}" = { + install_url = "https://addons.mozilla.org/firefox/downloads/latest/styl-us/latest.xpi"; + installation_mode = "force_installed"; + }; + "{aecec67f-0d10-4fa7-b7c7-609a2db280cf}" = { + install_url = "https://addons.mozilla.org/firefox/downloads/latest/violentmonkey/latest.xpi"; + installation_mode = "force_installed"; + }; + "gdpr@cavi.au.dk" = { + install_url = "https://addons.mozilla.org/firefox/downloads/latest/consent-o-matic/latest.xpi"; + installation_mode = "force_installed"; + }; + "dont-track-me-google@robwu.nl" = { + install_url = "https://addons.mozilla.org/firefox/downloads/latest/dont-track-me-google1/latest.xpi"; + installation_mode = "force_installed"; + }; + "jid1-MnnxcxisBPnSXQ@jetpack" = { + install_url = "https://addons.mozilla.org/firefox/downloads/latest/privacy-badger17/latest.xpi"; + installation_mode = "force_installed"; + }; + "FirefoxColor@mozilla.com" = { + install_url = "https://addons.mozilla.org/firefox/downloads/latest/firefox-color/latest.xpi"; + installation_mode = "force_installed"; + }; + "sponsorBlocker@ajay.app" = { + install_url = "https://addons.mozilla.org/firefox/downloads/latest/sponsorblock/latest.xpi"; + installation_mode = "force_installed"; + }; + # "" = { + # install_url = "https://addons.mozilla.org/firefox/downloads/latest/_/latest.xpi"; + # installation_mode = "force_installed"; + # }; + }; }; }; @@ -201,6 +245,7 @@ systemPackages = with pkgs; [ git inputs.kwin-effects-forceblur.packages.${pkgs.stdenv.hostPlatform.system}.default + firefoxpwa ]; sessionVariables = { NIXOS_OZONE_WL = "1"; From 18c3d21675096b6ad2ba406dcbc52a21283765de Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Mon, 10 Nov 2025 15:01:55 -0500 Subject: [PATCH 026/282] enable widevine for chromium and firefox --- flake.nix | 1 + home/all.nix | 5 ++++- hosts/all.nix | 12 ++++++++++++ packages/widevine-firefox/overlay.nix | 3 +++ packages/widevine-firefox/package.nix | 19 +++++++++++++++++++ 5 files changed, 39 insertions(+), 1 deletion(-) create mode 100644 packages/widevine-firefox/overlay.nix create mode 100644 packages/widevine-firefox/package.nix diff --git a/flake.nix b/flake.nix index b9cea53..8899e4a 100644 --- a/flake.nix +++ b/flake.nix @@ -63,6 +63,7 @@ modules = [ { nixpkgs.overlays = [ + (import ./packages/widevine-firefox/overlay.nix) (import ./packages/strawberry/overlay.nix) ]; } diff --git a/home/all.nix b/home/all.nix index 65c5b2d..9f55132 100755 --- a/home/all.nix +++ b/home/all.nix @@ -17,12 +17,15 @@ wl-clipboard openmw nixfmt-rfc-style - chromium + (chromium.override { + enableWideVine = true; + }) widevine-cdm strawberry-master spotify-player input-leap libreoffice-qt-fresh + spotdl kde-rounded-corners kdePackages.partitionmanager diff --git a/hosts/all.nix b/hosts/all.nix index 0c9b776..7235503 100755 --- a/hosts/all.nix +++ b/hosts/all.nix @@ -133,6 +133,10 @@ in security.sudo.wheelNeedsPassword = false; + environment.sessionVariables = rec { + MOZ_GMP_PATH = "${pkgs.widevine-firefox}/gmp-widevinecdm/system-installed"; + }; + programs.firefox = { enable = true; preferences = { @@ -157,6 +161,14 @@ in "browser.newtabpage.activity-stream.showSponsored" = false; "browser.newtabpage.activity-stream.system.showSponsored" = false; "browser.newtabpage.activity-stream.showSponsoredTopSites" = false; + + "media.gmp-widevinecdm.version" = "system-installed"; + "media.gmp-widevinecdm.visible" = true; + "media.gmp-widevinecdm.enabled" = true; + "media.gmp-widevinecdm.autoupdate" = false; + + "media.eme.enabled" = true; + "media.eme.encrypted-media-encryption-scheme.enabled" = true; }; policies = { DisableTelemetry = true; diff --git a/packages/widevine-firefox/overlay.nix b/packages/widevine-firefox/overlay.nix new file mode 100644 index 0000000..2e7feb0 --- /dev/null +++ b/packages/widevine-firefox/overlay.nix @@ -0,0 +1,3 @@ +final: prev: { + widevine-firefox = prev.callPackage (builtins.path { path = ./package.nix; }) { }; +} diff --git a/packages/widevine-firefox/package.nix b/packages/widevine-firefox/package.nix new file mode 100644 index 0000000..9e780ec --- /dev/null +++ b/packages/widevine-firefox/package.nix @@ -0,0 +1,19 @@ +{ + stdenv, + widevine-cdm, +}: + +stdenv.mkDerivation { + name = "widevine-firefox"; + version = widevine-cdm.version; + + buildCommand = '' + mkdir -p $out/gmp-widevinecdm/system-installed + ln -s "${widevine-cdm}/share/google/chrome/WidevineCdm/manifest.json" $out/gmp-widevinecdm/system-installed/manifest.json + ln -s "${widevine-cdm}/share/google/chrome/WidevineCdm/_platform_specific/linux_arm64/libwidevinecdm.so" $out/gmp-widevinecdm/system-installed/libwidevinecdm.so + ''; + + meta = widevine-cdm.meta // { + platforms = [ "aarch64-linux" ]; + }; +} From 93406254ef6df331e1e080d98a237102ace61af6 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Tue, 11 Nov 2025 11:16:21 -0500 Subject: [PATCH 027/282] update plasma config --- home/all.nix | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/home/all.nix b/home/all.nix index 9f55132..aad911f 100755 --- a/home/all.nix +++ b/home/all.nix @@ -54,6 +54,8 @@ }; }; + programs.konsole.enable = false; + programs.kitty = { enable = true; enableGitIntegration = true; @@ -317,6 +319,14 @@ }; }; + programs.ghostwriter = { + enable = true; + font = { + family = "Noto Sans"; + pointSize = 12; + }; + }; + programs.kate = { enable = true; editor = { @@ -470,8 +480,8 @@ }; shakeCursor.enable = true; snapHelper.enable = true; - translucency.enable = true; - windowOpenClose.animation = "fade"; + # translucency.enable = true; + # windowOpenClose.animation = "fade"; blur = { enable = false; noiseStrength = 8; From a27ed71dbc308ac20d0d50915f25acea93eb51cd Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Tue, 11 Nov 2025 21:20:43 -0500 Subject: [PATCH 028/282] aaa --- home/all.nix | 1 - packages/widevine-firefox/package.nix | 5 ++++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/home/all.nix b/home/all.nix index aad911f..936ff9b 100755 --- a/home/all.nix +++ b/home/all.nix @@ -20,7 +20,6 @@ (chromium.override { enableWideVine = true; }) - widevine-cdm strawberry-master spotify-player input-leap diff --git a/packages/widevine-firefox/package.nix b/packages/widevine-firefox/package.nix index 9e780ec..4b5453b 100644 --- a/packages/widevine-firefox/package.nix +++ b/packages/widevine-firefox/package.nix @@ -14,6 +14,9 @@ stdenv.mkDerivation { ''; meta = widevine-cdm.meta // { - platforms = [ "aarch64-linux" ]; + platforms = [ + "aarch64-linux" + "x86_64-linux" + ]; }; } From c8e4343f49863422a20d2e53fa5c14ec2a88119a Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Wed, 12 Nov 2025 10:54:17 -0500 Subject: [PATCH 029/282] add autologin for alien --- hosts/alien.nix | 16 ++++++++++++++-- hosts/all.nix | 2 -- hosts/peach.nix | 2 ++ 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/hosts/alien.nix b/hosts/alien.nix index fea340c..6080b28 100644 --- a/hosts/alien.nix +++ b/hosts/alien.nix @@ -1,4 +1,11 @@ -{ config, pkgs, lib, catppuccin, ... }: { +{ + config, + pkgs, + lib, + catppuccin, + ... +}: +{ networking.hostName = "alien"; catppuccin.accent = "blue"; @@ -27,6 +34,12 @@ "nvidia" ]; + services.displayManager.autoLogin = { + enable = true; + user = "sckova"; + }; + security.sudo.wheelNeedsPassword = true; + hardware.nvidia = { modesetting.enable = true; powerManagement.enable = false; @@ -35,4 +48,3 @@ package = pkgs.linuxPackages.nvidiaPackages.stable; }; } - diff --git a/hosts/all.nix b/hosts/all.nix index 7235503..8b5b629 100755 --- a/hosts/all.nix +++ b/hosts/all.nix @@ -131,8 +131,6 @@ in hashedPassword = "$6$bvwRUFaJNMpH8rm3$FGDWFN6tBScJ/2DynAjnlZE8JRfyADN78d6c4GawxpAjyNLNE/AjQzMA09tLRqpKX7WnN5PIUZLAm2bT9/RbG0"; }; - security.sudo.wheelNeedsPassword = false; - environment.sessionVariables = rec { MOZ_GMP_PATH = "${pkgs.widevine-firefox}/gmp-widevinecdm/system-installed"; }; diff --git a/hosts/peach.nix b/hosts/peach.nix index 5b817cb..116976d 100644 --- a/hosts/peach.nix +++ b/hosts/peach.nix @@ -29,4 +29,6 @@ size = 32000; # 32GB } ]; + + security.sudo.wheelNeedsPassword = false; } From 24b273b4b0f43d07021df236f835020c76d21330 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Wed, 12 Nov 2025 11:09:56 -0500 Subject: [PATCH 030/282] autostart input-leap --- home/all.nix | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/home/all.nix b/home/all.nix index 936ff9b..db3b31d 100755 --- a/home/all.nix +++ b/home/all.nix @@ -53,6 +53,27 @@ }; }; + systemd.user.services.input-leap = { + Unit = { + Description = "Autostart Input Leap"; + After = [ "graphical-session.target" ]; + }; + + Service = { + Type = "oneshot"; + RemainAfterExit = true; + PassEnvironment = "DISPLAY"; + ExecStart = "${pkgs.writeShellScript "input-leap-start" '' + sleep 5 + ${pkgs.input-leap}/bin/input-leap + ''}"; + }; + + Install = { + WantedBy = [ "graphical-session.target" ]; + }; + }; + programs.konsole.enable = false; programs.kitty = { From c734f0fc5836d3db746ef6f8bd37671c367d89a7 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Wed, 12 Nov 2025 13:30:49 -0500 Subject: [PATCH 031/282] add synology mount --- home/all.nix | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/home/all.nix b/home/all.nix index db3b31d..1d28ef9 100755 --- a/home/all.nix +++ b/home/all.nix @@ -25,6 +25,7 @@ input-leap libreoffice-qt-fresh spotdl + rclone kde-rounded-corners kdePackages.partitionmanager @@ -53,6 +54,32 @@ }; }; + xdg.configFile."rclone/synology.conf".text = '' + [synology] + type = sftp + user = sckova + host = nas.taila30609.ts.net + key_file = ~/.ssh/key + ''; + + systemd.user.services.synology-mount = { + Unit = { + Description = "Mount Synology NAS with Rclone and Home Manager."; + After = [ "network-online.target" ]; + }; + + Service = { + Type = "notify"; + ExecStartPre = "${pkgs.coreutils}/bin/mkdir -p %h/Synology"; + ExecStart = "${pkgs.rclone}/bin/rclone --config=%h/.config/rclone/synology.conf --vfs-cache-mode full --ignore-checksum mount \"synology:\" \"%h/Synology\""; + ExecStop = "/run/wrappers/bin/fusermount -u %h/Synology/%i"; + }; + + Install = { + WantedBy = [ "default.target" ]; + }; + }; + systemd.user.services.input-leap = { Unit = { Description = "Autostart Input Leap"; From 39c0c370d2b90ec56a4d2172124bd3b7bd6f73bc Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Wed, 12 Nov 2025 16:36:45 -0500 Subject: [PATCH 032/282] changes --- home/all.nix | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/home/all.nix b/home/all.nix index 1d28ef9..8d0e538 100755 --- a/home/all.nix +++ b/home/all.nix @@ -423,7 +423,7 @@ apply = "force"; }; opacityinactive = { - value = 95; + value = 100; apply = "force"; }; }; @@ -539,18 +539,19 @@ configFile = { # kdeglobals.KDE.AutomaticLookAndFeel = true; - kwinrc.Round-Corners.ActiveOutlinePalette = 3; + kwinrc.Round-Corners.ActiveOutlinePalette = 2; kwinrc.Round-Corners.ActiveOutlineUseCustom = false; kwinrc.Round-Corners.ActiveOutlineUsePalette = true; - kwinrc.Round-Corners.ActiveSecondOutlinePalette = 3; + kwinrc.Round-Corners.ActiveSecondOutlinePalette = 2; kwinrc.Round-Corners.ActiveSecondOutlineUseCustom = false; kwinrc.Round-Corners.ActiveSecondOutlineUsePalette = true; - kwinrc.Round-Corners.InactiveOutlinePalette = 2; + kwinrc.Round-Corners.InactiveOutlinePalette = 3; kwinrc.Round-Corners.InactiveOutlineUseCustom = false; kwinrc.Round-Corners.InactiveOutlineUsePalette = true; - kwinrc.Round-Corners.InactiveSecondOutlinePalette = 2; + kwinrc.Round-Corners.InactiveSecondOutlinePalette = 3; kwinrc.Round-Corners.InactiveSecondOutlineUseCustom = false; kwinrc.Round-Corners.InactiveSecondOutlineUsePalette = true; + plasmaparc.General.AudioFeedback = false; kdeglobals.Sounds.Enable = false; kwinrc.Plugins.forceblurEnabled = true; kwinrc.Effect-blurplus.BlurDecorations = true; From 69484fe4943e0e7014f65b2e82e0138c7dbe53b3 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Thu, 13 Nov 2025 10:04:30 -0500 Subject: [PATCH 033/282] add helium browser --- flake.nix | 1 + home/all.nix | 1 + packages/helium-browser/overlay.nix | 3 ++ packages/helium-browser/package.nix | 54 +++++++++++++++++++++++++++++ 4 files changed, 59 insertions(+) create mode 100644 packages/helium-browser/overlay.nix create mode 100644 packages/helium-browser/package.nix diff --git a/flake.nix b/flake.nix index 8899e4a..721d8b8 100644 --- a/flake.nix +++ b/flake.nix @@ -65,6 +65,7 @@ nixpkgs.overlays = [ (import ./packages/widevine-firefox/overlay.nix) (import ./packages/strawberry/overlay.nix) + (import ./packages/helium-browser/overlay.nix) ]; } ./hosts/all.nix diff --git a/home/all.nix b/home/all.nix index 8d0e538..beb9238 100755 --- a/home/all.nix +++ b/home/all.nix @@ -26,6 +26,7 @@ libreoffice-qt-fresh spotdl rclone + helium-browser kde-rounded-corners kdePackages.partitionmanager diff --git a/packages/helium-browser/overlay.nix b/packages/helium-browser/overlay.nix new file mode 100644 index 0000000..fbc3dc6 --- /dev/null +++ b/packages/helium-browser/overlay.nix @@ -0,0 +1,3 @@ +final: prev: { + helium-browser = prev.callPackage (builtins.path { path = ./package.nix; }) { }; +} diff --git a/packages/helium-browser/package.nix b/packages/helium-browser/package.nix new file mode 100644 index 0000000..ef8f7df --- /dev/null +++ b/packages/helium-browser/package.nix @@ -0,0 +1,54 @@ +{ + stdenv, + lib, + appimageTools, + fetchurl, + makeDesktopItem, + copyDesktopItems, +}: +let + pname = "helium-browser"; + version = "0.6.4.1"; + + architectures = { + "x86_64-linux" = { + arch = "x86_64"; + hash = lib.fakeHash; + }; + "aarch64-linux" = { + arch = "arm64"; + hash = "sha256-B63tvOtSRlMRJozvzC7lqG2LM0ZgLIq2G/AHABl+Qqg="; + }; + }; + + src = + let + inherit (architectures.${stdenv.hostPlatform.system}) arch hash; + in + fetchurl { + url = "https://github.com/imputnet/helium-linux/releases/download/${version}/helium-${version}-${arch}.AppImage"; + inherit hash; + }; + + appimageContents = appimageTools.extractType2 { + inherit pname version src; + }; +in +appimageTools.wrapType2 { + inherit pname version src; + extraInstallCommands = '' + install -Dm444 ${appimageContents}/helium.desktop -t $out/share/applications + install -Dm444 ${appimageContents}/helium.png -t $out/share/pixmaps + + substituteInPlace $out/share/applications/helium.desktop \ + --replace-fail 'Exec=AppRun' 'Exec=${pname}' + ''; + meta = { + description = "A private, respectful browser"; + homepage = "https://github.com/imputnet/helium-linux"; + downloadPage = "https://github.com/imputnet/helium-linux/releases"; + license = lib.licenses.gpl3Only; + sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ]; + platforms = lib.attrNames architectures; + }; +} From e96b3658eb34f759eab0dba264b11cb16f583900 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Thu, 13 Nov 2025 11:29:01 -0500 Subject: [PATCH 034/282] wip: refactor structure --- flake.nix | 5 +- system/all.nix | 167 +++++++++++++++++ hosts/all.nix => system/browsers/firefox.nix | 168 +----------------- .../hosts/alien/default.nix | 0 .../hosts/peach/default.nix | 2 +- 5 files changed, 173 insertions(+), 169 deletions(-) create mode 100755 system/all.nix rename hosts/all.nix => system/browsers/firefox.nix (56%) mode change 100755 => 100644 rename hosts/alien.nix => system/hosts/alien/default.nix (100%) rename hosts/peach.nix => system/hosts/peach/default.nix (92%) diff --git a/flake.nix b/flake.nix index 721d8b8..a16aa88 100644 --- a/flake.nix +++ b/flake.nix @@ -68,8 +68,9 @@ (import ./packages/helium-browser/overlay.nix) ]; } - ./hosts/all.nix - ./hosts/${hostname}.nix + ./system/all.nix + ./system/browsers/firefox.nix + ./system/hosts/${hostname}/default.nix ./hardware/${hostname}.nix catppuccin.nixosModules.catppuccin home-manager.nixosModules.home-manager diff --git a/system/all.nix b/system/all.nix new file mode 100755 index 0000000..f94830c --- /dev/null +++ b/system/all.nix @@ -0,0 +1,167 @@ +# Edit this configuration file to define what should be installed on +# your system. Help is available in the configuration.nix(5) man page +# and in the NixOS manual (accessible by running ‘nixos-help’). + +{ + config, + lib, + pkgs, + inputs, + ... +}: + +{ + nix.settings.experimental-features = [ + "nix-command" + "flakes" + ]; + + nix.settings.trusted-users = [ + "root" + "sckova" + ]; + + home-manager.useGlobalPkgs = true; + home-manager.useUserPackages = true; + home-manager.users.sckova = { + imports = [ + ../home/all.nix + ../home/${config.networking.hostName}.nix + ]; + }; + + boot = { + + plymouth = { + enable = true; + }; + + loader = { + timeout = 3; + systemd-boot = { + enable = true; + configurationLimit = null; + }; + efi = { + canTouchEfiVariables = false; + }; + }; + kernelParams = [ + "quiet" + "splash" + "vga=current" + "rd.systemd.show_status=false" + "rd.udev.log_level=3" + "udev.log_priority=3" + "boot.shell_on_fail" + "apple_dcp.show_notch=1" + ]; + consoleLogLevel = 0; + initrd.verbose = false; + }; + + catppuccin = { + enable = true; + flavor = "mocha"; + }; + + networking.networkmanager.enable = true; + hardware.bluetooth.enable = true; + + time.timeZone = "America/New_York"; + i18n.defaultLocale = "en_US.UTF-8"; + i18n.extraLocaleSettings = { + LC_ADDRESS = "en_US.UTF-8"; + LC_IDENTIFICATION = "en_US.UTF-8"; + LC_MEASUREMENT = "en_US.UTF-8"; + LC_MONETARY = "en_US.UTF-8"; + LC_NAME = "en_US.UTF-8"; + LC_NUMERIC = "en_US.UTF-8"; + LC_PAPER = "en_US.UTF-8"; + LC_TELEPHONE = "en_US.UTF-8"; + LC_TIME = "en_US.UTF-8"; + }; + + # Enable OpenGL + hardware.graphics = { + enable = true; + }; + + services = { + desktopManager.plasma6.enable = true; + displayManager.sddm = { + enable = true; + wayland.enable = true; + enableHidpi = true; + }; + libinput.enable = true; + tailscale = { + enable = true; + useRoutingFeatures = "client"; + }; + }; + + services.printing.enable = true; + + services.pipewire = { + enable = true; + alsa.enable = true; + alsa.support32Bit = true; + pulse.enable = true; + }; + + users.users.sckova = { + isNormalUser = true; + description = "Sean Kovacs"; + extraGroups = [ + "networkmanager" + "wheel" + ]; + packages = with pkgs; [ ]; + hashedPassword = "$6$bvwRUFaJNMpH8rm3$FGDWFN6tBScJ/2DynAjnlZE8JRfyADN78d6c4GawxpAjyNLNE/AjQzMA09tLRqpKX7WnN5PIUZLAm2bT9/RbG0"; + }; + + programs.bash = { + interactiveShellInit = '' + if [[ $(${pkgs.procps}/bin/ps --no-header --pid=$PPID --format=comm) != "fish" && -z ''${BASH_EXECUTION_STRING} ]] + then + shopt -q login_shell && LOGIN_OPTION='--login' || LOGIN_OPTION="" + exec ${pkgs.fish}/bin/fish $LOGIN_OPTION + fi + ''; + }; + + nixpkgs.config.allowUnfree = true; + + environment = { + systemPackages = with pkgs; [ + git + inputs.kwin-effects-forceblur.packages.${pkgs.stdenv.hostPlatform.system}.default + firefoxpwa + ]; + sessionVariables = { + NIXOS_OZONE_WL = "1"; + }; + }; + + programs.gnupg.agent = { + enable = true; + enableSSHSupport = true; + }; + + services.openssh.enable = true; + networking.firewall.enable = false; + + networking.extraHosts = '' + 0.0.0.0 apresolve.spotify.com + ''; + + # This value determines the NixOS release from which the default + # settings for stateful data, like file locations and database versions + # on your system were taken. It‘s perfectly fine and recommended to leave + # this value at the release version of the first install of this system. + # Before changing this value read the documentation for this option + # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html). + system.stateVersion = "25.05"; # Did you read the comment? + +} diff --git a/hosts/all.nix b/system/browsers/firefox.nix old mode 100755 new mode 100644 similarity index 56% rename from hosts/all.nix rename to system/browsers/firefox.nix index 8b5b629..b24c03b --- a/hosts/all.nix +++ b/system/browsers/firefox.nix @@ -1,14 +1,4 @@ -# Edit this configuration file to define what should be installed on -# your system. Help is available in the configuration.nix(5) man page -# and in the NixOS manual (accessible by running ‘nixos-help’). - -{ - config, - lib, - pkgs, - inputs, - ... -}: +{ pkgs, ... }: let lock-false = { @@ -21,117 +11,7 @@ let }; in { - nix.settings.experimental-features = [ - "nix-command" - "flakes" - ]; - - nix.settings.trusted-users = [ - "root" - "sckova" - ]; - - home-manager.useGlobalPkgs = true; - home-manager.useUserPackages = true; - home-manager.users.sckova = { - imports = [ - ../home/all.nix - ../home/${config.networking.hostName}.nix - ]; - }; - - boot = { - - plymouth = { - enable = true; - }; - - loader = { - timeout = 3; - systemd-boot = { - enable = true; - configurationLimit = null; - }; - efi = { - canTouchEfiVariables = false; - }; - }; - kernelParams = [ - "quiet" - "splash" - "vga=current" - "rd.systemd.show_status=false" - "rd.udev.log_level=3" - "udev.log_priority=3" - "boot.shell_on_fail" - "apple_dcp.show_notch=1" - ]; - consoleLogLevel = 0; - initrd.verbose = false; - }; - - catppuccin = { - enable = true; - flavor = "mocha"; - }; - - networking.networkmanager.enable = true; - hardware.bluetooth.enable = true; - - time.timeZone = "America/New_York"; - i18n.defaultLocale = "en_US.UTF-8"; - i18n.extraLocaleSettings = { - LC_ADDRESS = "en_US.UTF-8"; - LC_IDENTIFICATION = "en_US.UTF-8"; - LC_MEASUREMENT = "en_US.UTF-8"; - LC_MONETARY = "en_US.UTF-8"; - LC_NAME = "en_US.UTF-8"; - LC_NUMERIC = "en_US.UTF-8"; - LC_PAPER = "en_US.UTF-8"; - LC_TELEPHONE = "en_US.UTF-8"; - LC_TIME = "en_US.UTF-8"; - }; - - # Enable OpenGL - hardware.graphics = { - enable = true; - }; - - services = { - desktopManager.plasma6.enable = true; - displayManager.sddm = { - enable = true; - wayland.enable = true; - enableHidpi = true; - }; - libinput.enable = true; - tailscale = { - enable = true; - useRoutingFeatures = "client"; - }; - }; - - services.printing.enable = true; - - services.pipewire = { - enable = true; - alsa.enable = true; - alsa.support32Bit = true; - pulse.enable = true; - }; - - users.users.sckova = { - isNormalUser = true; - description = "Sean Kovacs"; - extraGroups = [ - "networkmanager" - "wheel" - ]; - packages = with pkgs; [ ]; - hashedPassword = "$6$bvwRUFaJNMpH8rm3$FGDWFN6tBScJ/2DynAjnlZE8JRfyADN78d6c4GawxpAjyNLNE/AjQzMA09tLRqpKX7WnN5PIUZLAm2bT9/RbG0"; - }; - - environment.sessionVariables = rec { + environment.variables = rec { MOZ_GMP_PATH = "${pkgs.widevine-firefox}/gmp-widevinecdm/system-installed"; }; @@ -238,48 +118,4 @@ in }; }; }; - - programs.bash = { - interactiveShellInit = '' - if [[ $(${pkgs.procps}/bin/ps --no-header --pid=$PPID --format=comm) != "fish" && -z ''${BASH_EXECUTION_STRING} ]] - then - shopt -q login_shell && LOGIN_OPTION='--login' || LOGIN_OPTION="" - exec ${pkgs.fish}/bin/fish $LOGIN_OPTION - fi - ''; - }; - - nixpkgs.config.allowUnfree = true; - - environment = { - systemPackages = with pkgs; [ - git - inputs.kwin-effects-forceblur.packages.${pkgs.stdenv.hostPlatform.system}.default - firefoxpwa - ]; - sessionVariables = { - NIXOS_OZONE_WL = "1"; - }; - }; - - programs.gnupg.agent = { - enable = true; - enableSSHSupport = true; - }; - - services.openssh.enable = true; - networking.firewall.enable = false; - - networking.extraHosts = '' - 0.0.0.0 apresolve.spotify.com - ''; - - # This value determines the NixOS release from which the default - # settings for stateful data, like file locations and database versions - # on your system were taken. It‘s perfectly fine and recommended to leave - # this value at the release version of the first install of this system. - # Before changing this value read the documentation for this option - # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html). - system.stateVersion = "25.05"; # Did you read the comment? - } diff --git a/hosts/alien.nix b/system/hosts/alien/default.nix similarity index 100% rename from hosts/alien.nix rename to system/hosts/alien/default.nix diff --git a/hosts/peach.nix b/system/hosts/peach/default.nix similarity index 92% rename from hosts/peach.nix rename to system/hosts/peach/default.nix index 116976d..b653d1f 100644 --- a/hosts/peach.nix +++ b/system/hosts/peach/default.nix @@ -20,7 +20,7 @@ # extractPeripheralFirmware = false; # This is broken because of flake git tracking. # I can't figure out how to make it work. - peripheralFirmwareDirectory = ../firmware; + peripheralFirmwareDirectory = ./firmware; }; swapDevices = [ From 258c9682cc150e269525b59fed9947f71c601a32 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Thu, 13 Nov 2025 13:41:00 -0500 Subject: [PATCH 035/282] firefox refactor --- flake.lock | 43 ++++++ flake.nix | 7 + home/all.nix | 3 + home/browsers/firefox/default.nix | 75 +++++++++ home/browsers/firefox/userChrome.css | 223 +++++++++++++++++++++++++++ system/all.nix | 1 + system/browsers/firefox.nix | 168 +++++++++----------- 7 files changed, 423 insertions(+), 97 deletions(-) create mode 100644 home/browsers/firefox/default.nix create mode 100644 home/browsers/firefox/userChrome.css diff --git a/flake.lock b/flake.lock index 286a271..13ee505 100644 --- a/flake.lock +++ b/flake.lock @@ -77,6 +77,27 @@ "type": "github" } }, + "flake-parts_2": { + "inputs": { + "nixpkgs-lib": [ + "nur", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1733312601, + "narHash": "sha256-4pDvzqnegAfRkPwO3wmwBhVi/Sye1mzps0zHWYnP88c=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "205b12d8b7cd4802fbcb8e8ef6a0f1408781a4f9", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, "flake-utils": { "inputs": { "systems": "systems_2" @@ -203,6 +224,27 @@ "type": "github" } }, + "nur": { + "inputs": { + "flake-parts": "flake-parts_2", + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1763052046, + "narHash": "sha256-SHdav1soeHzFZFgAiRJORaSyB/D7FEd0ZH3JZLAcLy4=", + "owner": "nix-community", + "repo": "NUR", + "rev": "2712fb70b786a703e39fddf77414469d16654e94", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "NUR", + "type": "github" + } + }, "nuschtosSearch": { "inputs": { "flake-utils": "flake-utils", @@ -257,6 +299,7 @@ "kwin-effects-forceblur": "kwin-effects-forceblur", "nixpkgs": "nixpkgs", "nixvim": "nixvim", + "nur": "nur", "plasma-manager": "plasma-manager" } }, diff --git a/flake.nix b/flake.nix index a16aa88..9459ff1 100644 --- a/flake.nix +++ b/flake.nix @@ -20,6 +20,11 @@ inputs.home-manager.follows = "home-manager"; }; + nur = { + url = "github:nix-community/NUR"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + nixvim = { url = "github:nix-community/nixvim"; inputs.nixpkgs.follows = "nixpkgs"; @@ -42,6 +47,7 @@ catppuccin, home-manager, plasma-manager, + nur, nixvim, kwin-effects-forceblur, apple-silicon, @@ -63,6 +69,7 @@ modules = [ { nixpkgs.overlays = [ + nur.overlays.default (import ./packages/widevine-firefox/overlay.nix) (import ./packages/strawberry/overlay.nix) (import ./packages/helium-browser/overlay.nix) diff --git a/home/all.nix b/home/all.nix index beb9238..a5fb926 100755 --- a/home/all.nix +++ b/home/all.nix @@ -27,6 +27,9 @@ spotdl rclone helium-browser + deno + prettier + prettierd kde-rounded-corners kdePackages.partitionmanager diff --git a/home/browsers/firefox/default.nix b/home/browsers/firefox/default.nix new file mode 100644 index 0000000..eb311bb --- /dev/null +++ b/home/browsers/firefox/default.nix @@ -0,0 +1,75 @@ +# https://discourse.nixos.org/t/combining-best-of-system-firefox-and-home-manager-firefox-settings/37721 +{ pkgs, ... }: + +{ + programs.firefox = { + enable = true; + profiles = { + default = { + id = 0; + name = "default"; + isDefault = true; + userChrome = ./userChrome.css; + extensions = { + force = true; + packages = with pkgs.nur.repos.rycee.firefox-addons; [ + ublock-origin + plasma-integration + stylus + violentmonkey + consent-o-matic + privacy-badger + sponsorblock + ]; + settings = { + "uBlock0@raymondhill.net".settings = { + selectedFilterLists = [ + "ublock-filters" + "ublock-badware" + "ublock-privacy" + "ublock-unbreak" + "ublock-quick-fixes" + ]; + }; + + "{7a7a4a92-a2a0-41d1-9fd7-1e92480d612d}".settings = { + dbInChromeStorage = true; # required for Stylus + }; + }; + }; + settings = { + "extensions.autoDisableScopes" = 0; # enables all extensions automatically + "xpinstall.signatures.required" = false; + "extensions.update.autoUpdateDefault" = false; + "extensions.update.enabled" = false; + "browser.search.defaultenginename" = "google"; + "browser.search.order.1" = "google"; + + "signon.rememberSignons" = false; + "widget.use-xdg-desktop-portal.file-picker" = 1; + "browser.aboutConfig.showWarning" = false; + "browser.compactmode.show" = true; + "browser.cache.disk.enable" = true; # Set to false if you have a HDD + "browser.warnOnQuitShortcut" = false; + "toolkit.legacyUserProfileCustomizations.stylesheets" = true; + + # "mousewheel.default.delta_multiplier_x" = 100; + # "mousewheel.default.delta_multiplier_y" = 100; + # "mousewheel.default.delta_multiplier_z" = 100; + + # Firefox 75+ remembers the last workspace it was opened on as part of its session management. + # This is annoying, because I can have a blank workspace, click Firefox from the launcher, and + # then have Firefox open on some other workspace. + "widget.disable-workspace-management" = true; + }; + search = { + force = true; + default = "google"; + order = [ + "google" + ]; + }; + }; + }; + }; +} diff --git a/home/browsers/firefox/userChrome.css b/home/browsers/firefox/userChrome.css new file mode 100644 index 0000000..ac60443 --- /dev/null +++ b/home/browsers/firefox/userChrome.css @@ -0,0 +1,223 @@ +@media (prefers-color-scheme: light) { + :root { + /* bookmark_text */ + --toolbar-color: #eff1f5ff !important; + + /* button_background_active */ + --toolbarbutton-active-background: rgba(156, 160, 176, 1) !important; + + /* button_background_hover */ + --toolbarbutton-hover-background: rgba(204, 208, 218, 1) !important; + + /* icons */ + --toolbarbutton-icon-fill: #4c4f69ff !important; + + /* icons_attention */ + --toolbarbutton-icon-fill-attention: #4c4f69ff !important; + + /* frame */ + --toolbox-non-lwt-bgcolor: #dce0e8ff !important; + + /* frame_inactive */ + &:where([tabsintitlebar]) { + --toolbox-non-lwt-bgcolor-inactive: #dce0e8ff !important; + } + + /* popup */ + --arrowpanel-background: #eff1f5ff !important; + + /* popup_border */ + --arrowpanel-border-color: #9ca0b0ff !important; + + /* popup_highlight */ + --urlbarView-highlight-background: #9ca0b0ff !important; + + /* popup_highlight_text */ + --urlbarView-highlight-color: #4c4f69ff !important; + + /* popup_text */ + --arrowpanel-color: #4c4f69ff !important; + + /* tab_background_text */ + --toolbox-non-lwt-textcolor: #4c4f69ff !important; + + /* tab_line */ + .tab-background[selected]:not([multiselected]) { + outline: 1px solid #9ca0b0ff; + outline-offset: -1px; + } + + .tab-background[multiselected] { + --focus-outline-color: #9ca0b0ff; + } + + /* tab_loading */ + #tabbrowser-tabs { + --tab-loading-fill: #9ca0b0ff !important; + } + + /* tab_selected */ + --tab-selected-bgcolor: #eff1f5ff !important; + + /* tab_text */ + --tab-selected-textcolor: #4c4f69ff !important; + + /* toolbar */ + --toolbar-bgcolor: #eff1f5ff !important; + + /* toolbar_bottom_separator */ + --chrome-content-separator-color: #eff1f5ff !important; + + /* toolbar_field */ + --input-bgcolor: #e6e9efff !important; + --toolbar-field-background-color: var(--input-bgcolor) !important; + + /* toolbar_field_border */ + --input-border-color: #eff1f5ff !important; + --toolbar-field-border-color: var(--input-border-color) !important; + + /* toolbar_field_border_focus */ + --toolbar-field-focus-border-color: #6c7086ff !important; + + /* toolbar_field_focus */ + --toolbar-field-focus-background-color: #eff1f5ff !important; + + /* toolbar_field_highlight */ + #urlbar-input, + .searchbar-textbox { + &:focus::selection { + background-color: #6c7086ff; + } + } + + /* toolbar_field_highlight_text */ + #urlbar-input, + .searchbar-textbox { + &:focus::selection { + color: #eff1f5ff; + } + } + + /* toolbar_field_text */ + --input-color: #4c4f69ff !important; + --toolbar-field-color: var(--input-color) !important; + + /* toolbar_field_text_focus */ + --toolbar-field-focus-color: #4c4f69ff !important; + + /* toolbar_vertical_separator */ + --toolbarseparator-color: #6c7086ff !important; + } +} + +@media (prefers-color-scheme: dark) { + :root { + /* bookmark_text */ + --toolbar-color: #1e1e2eff !important; + + /* button_background_active */ + --toolbarbutton-active-background: rgba(108, 112, 134, 1) !important; + + /* button_background_hover */ + --toolbarbutton-hover-background: rgba(49, 50, 68, 1) !important; + + /* icons */ + --toolbarbutton-icon-fill: #cdd6f4ff !important; + + /* icons_attention */ + --toolbarbutton-icon-fill-attention: #cdd6f4ff !important; + + /* frame */ + --toolbox-non-lwt-bgcolor: #11111bff !important; + + /* frame_inactive */ + &:where([tabsintitlebar]) { + --toolbox-non-lwt-bgcolor-inactive: #11111bff !important; + } + + /* popup */ + --arrowpanel-background: #1e1e2eff !important; + + /* popup_border */ + --arrowpanel-border-color: #6c7086ff !important; + + /* popup_highlight */ + --urlbarView-highlight-background: #6c7086ff !important; + + /* popup_highlight_text */ + --urlbarView-highlight-color: #cdd6f4ff !important; + + /* popup_text */ + --arrowpanel-color: #cdd6f4ff !important; + + /* tab_background_text */ + --toolbox-non-lwt-textcolor: #cdd6f4ff !important; + + /* tab_line */ + .tab-background[selected]:not([multiselected]) { + outline: 1px solid #6c7086ff; + outline-offset: -1px; + } + + .tab-background[multiselected] { + --focus-outline-color: #6c7086ff; + } + + /* tab_loading */ + #tabbrowser-tabs { + --tab-loading-fill: #6c7086ff !important; + } + + /* tab_selected */ + --tab-selected-bgcolor: #1e1e2eff !important; + + /* tab_text */ + --tab-selected-textcolor: #cdd6f4ff !important; + + /* toolbar */ + --toolbar-bgcolor: #1e1e2eff !important; + + /* toolbar_bottom_separator */ + --chrome-content-separator-color: #1e1e2eff !important; + + /* toolbar_field */ + --input-bgcolor: #181825ff !important; + --toolbar-field-background-color: var(--input-bgcolor) !important; + + /* toolbar_field_border */ + --input-border-color: #1e1e2eff !important; + --toolbar-field-border-color: var(--input-border-color) !important; + + /* toolbar_field_border_focus */ + --toolbar-field-focus-border-color: #6c7086ff !important; + + /* toolbar_field_focus */ + --toolbar-field-focus-background-color: #1e1e2eff !important; + + /* toolbar_field_highlight */ + #urlbar-input, + .searchbar-textbox { + &:focus::selection { + background-color: #6c7086ff; + } + } + + /* toolbar_field_highlight_text */ + #urlbar-input, + .searchbar-textbox { + &:focus::selection { + color: #1e1e2eff; + } + } + + /* toolbar_field_text */ + --input-color: #cdd6f4ff !important; + --toolbar-field-color: var(--input-color) !important; + + /* toolbar_field_text_focus */ + --toolbar-field-focus-color: #cdd6f4ff !important; + + /* toolbar_vertical_separator */ + --toolbarseparator-color: #6c7086ff !important; + } +} diff --git a/system/all.nix b/system/all.nix index f94830c..68f6321 100755 --- a/system/all.nix +++ b/system/all.nix @@ -26,6 +26,7 @@ home-manager.users.sckova = { imports = [ ../home/all.nix + ../home/browsers/firefox/default.nix ../home/${config.networking.hostName}.nix ]; }; diff --git a/system/browsers/firefox.nix b/system/browsers/firefox.nix index b24c03b..f795cf4 100644 --- a/system/browsers/firefox.nix +++ b/system/browsers/firefox.nix @@ -1,3 +1,4 @@ +# https://discourse.nixos.org/t/declare-firefox-extensions-and-settings/36265 { pkgs, ... }: let @@ -15,106 +16,79 @@ in MOZ_GMP_PATH = "${pkgs.widevine-firefox}/gmp-widevinecdm/system-installed"; }; - programs.firefox = { - enable = true; - preferences = { - "widget.use-xdg-desktop-portal.file-picker" = 1; - "widget.gtk.global-menu.enabled" = true; - "widget.gtk.global-menu.wayland.enabled" = true; - "browser.tabs.inTitlebar" = 0; - "extensions.pocket.enabled" = false; - "extensions.screenshots.disabled" = true; - "browser.topsites.contile.enabled" = false; - "browser.formfill.enable" = false; - "browser.search.suggest.enabled" = false; - "browser.search.suggest.enabled.private" = false; - "browser.urlbar.suggest.searches" = false; - "browser.urlbar.showSearchSuggestionsFirst" = false; - "browser.newtabpage.activity-stream.feeds.section.topstories" = false; - "browser.newtabpage.activity-stream.feeds.snippets" = false; - "browser.newtabpage.activity-stream.section.highlights.includePocket" = false; - "browser.newtabpage.activity-stream.section.highlights.includeBookmarks" = false; - "browser.newtabpage.activity-stream.section.highlights.includeDownloads" = false; - "browser.newtabpage.activity-stream.section.highlights.includeVisited" = false; - "browser.newtabpage.activity-stream.showSponsored" = false; - "browser.newtabpage.activity-stream.system.showSponsored" = false; - "browser.newtabpage.activity-stream.showSponsoredTopSites" = false; + programs = { + firefox = { + enable = true; + languagePacks = [ "en-US" ]; - "media.gmp-widevinecdm.version" = "system-installed"; - "media.gmp-widevinecdm.visible" = true; - "media.gmp-widevinecdm.enabled" = true; - "media.gmp-widevinecdm.autoupdate" = false; + # ---- POLICIES ---- + # Check about:policies#documentation for options. + policies = { + DisableTelemetry = true; + DisableFirefoxStudies = true; + EnableTrackingProtection = { + Value = true; + Locked = true; + Cryptomining = true; + Fingerprinting = true; + }; + DisablePocket = true; + DisableFirefoxAccounts = true; + DisableAccounts = true; + DisableFirefoxScreenshots = true; + OverrideFirstRunPage = ""; + OverridePostUpdatePage = ""; + DontCheckDefaultBrowser = true; + DisplayBookmarksToolbar = "newtab"; # alternatives: "always" or "newtab" + DisplayMenuBar = "always"; # alternatives: "always", "never" or "default-on" + SearchBar = "unified"; # alternative: "separate" - "media.eme.enabled" = true; - "media.eme.encrypted-media-encryption-scheme.enabled" = true; - }; - policies = { - DisableTelemetry = true; - DisableFirefoxStudies = true; - EnableTrackingProtection = { - Value = true; - Locked = true; - Cryptomining = true; - Fingerprinting = true; - }; - DisablePocket = true; - DisableFirefoxAccounts = true; - DisableAccounts = true; - DisableFirefoxScreenshots = true; - OverrideFirstRunPage = ""; - OverridePostUpdatePage = ""; - DontCheckDefaultBrowser = true; - DisplayBookmarksToolbar = "newtab"; # alternatives: "always" or "newtab" - DisplayMenuBar = "always"; # alternatives: "always", "never" or "default-on" - SearchBar = "unified"; # alternative: "separate" - - # ---- EXTENSIONS ---- - # Check about:support for extension/add-on ID strings. - # Valid strings for installation_mode are "allowed", "blocked", - # "force_installed" and "normal_installed". - ExtensionSettings = { - # blocks all addons except the ones specified below - "*".installation_mode = "blocked"; - "uBlock0@raymondhill.net" = { - install_url = "https://addons.mozilla.org/firefox/downloads/latest/ublock-origin/latest.xpi"; - installation_mode = "force_installed"; - }; - "plasma-browser-integration@kde.org" = { - install_url = "https://addons.mozilla.org/firefox/downloads/latest/plasma-integration/latest.xpi"; - installation_mode = "force_installed"; - }; - "{7a7a4a92-a2a0-41d1-9fd7-1e92480d612d}" = { - install_url = "https://addons.mozilla.org/firefox/downloads/latest/styl-us/latest.xpi"; - installation_mode = "force_installed"; - }; - "{aecec67f-0d10-4fa7-b7c7-609a2db280cf}" = { - install_url = "https://addons.mozilla.org/firefox/downloads/latest/violentmonkey/latest.xpi"; - installation_mode = "force_installed"; - }; - "gdpr@cavi.au.dk" = { - install_url = "https://addons.mozilla.org/firefox/downloads/latest/consent-o-matic/latest.xpi"; - installation_mode = "force_installed"; - }; - "dont-track-me-google@robwu.nl" = { - install_url = "https://addons.mozilla.org/firefox/downloads/latest/dont-track-me-google1/latest.xpi"; - installation_mode = "force_installed"; - }; - "jid1-MnnxcxisBPnSXQ@jetpack" = { - install_url = "https://addons.mozilla.org/firefox/downloads/latest/privacy-badger17/latest.xpi"; - installation_mode = "force_installed"; - }; - "FirefoxColor@mozilla.com" = { - install_url = "https://addons.mozilla.org/firefox/downloads/latest/firefox-color/latest.xpi"; - installation_mode = "force_installed"; - }; - "sponsorBlocker@ajay.app" = { - install_url = "https://addons.mozilla.org/firefox/downloads/latest/sponsorblock/latest.xpi"; - installation_mode = "force_installed"; - }; - # "" = { - # install_url = "https://addons.mozilla.org/firefox/downloads/latest/_/latest.xpi"; - # installation_mode = "force_installed"; + # ---- EXTENSIONS ---- + # Check about:support for extension/add-on ID strings. + # Valid strings for installation_mode are "allowed", "blocked", + # "force_installed" and "normal_installed". + # ExtensionSettings = { + # # blocks all addons except the ones specified below + # "*".installation_mode = "blocked"; # }; + + # ---- PREFERENCES ---- + # Check about:config for options. + Preferences = { + "browser.contentblocking.category" = { + Value = "strict"; + Status = "locked"; + }; + "widget.use-xdg-desktop-portal.file-picker" = 1; + "widget.gtk.global-menu.enabled" = lock-true; + "widget.gtk.global-menu.wayland.enabled" = lock-true; + "browser.tabs.inTitlebar" = 0; + "extensions.pocket.enabled" = lock-false; + "extensions.screenshots.disabled" = lock-true; + "browser.topsites.contile.enabled" = lock-false; + "browser.formfill.enable" = lock-false; + "browser.search.suggest.enabled" = lock-false; + "browser.search.suggest.enabled.private" = lock-false; + "browser.urlbar.suggest.searches" = lock-false; + "browser.urlbar.showSearchSuggestionsFirst" = lock-false; + "browser.newtabpage.activity-stream.feeds.section.topstories" = lock-false; + "browser.newtabpage.activity-stream.feeds.snippets" = lock-false; + "browser.newtabpage.activity-stream.section.highlights.includePocket" = lock-false; + "browser.newtabpage.activity-stream.section.highlights.includeBookmarks" = lock-false; + "browser.newtabpage.activity-stream.section.highlights.includeDownloads" = lock-false; + "browser.newtabpage.activity-stream.section.highlights.includeVisited" = lock-false; + "browser.newtabpage.activity-stream.showSponsored" = lock-false; + "browser.newtabpage.activity-stream.system.showSponsored" = lock-false; + "browser.newtabpage.activity-stream.showSponsoredTopSites" = lock-false; + + "media.gmp-widevinecdm.version" = "system-installed"; + "media.gmp-widevinecdm.visible" = lock-true; + "media.gmp-widevinecdm.enabled" = lock-true; + "media.gmp-widevinecdm.autoupdate" = lock-false; + + "media.eme.enabled" = lock-true; + "media.eme.encrypted-media-encryption-scheme.enabled" = lock-true; + }; }; }; }; From ae7ab152a46f75c1733e320a3a9de956a903e8ba Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Thu, 13 Nov 2025 14:50:12 -0500 Subject: [PATCH 036/282] finish current refactor --- flake.nix | 3 +- home/all.nix | 544 -------------------------------- home/{ => hosts}/alien.nix | 0 home/{ => hosts}/peach.nix | 0 home/kde/other.nix | 19 ++ home/kde/plasma.nix | 215 +++++++++++++ home/systemd/default.nix | 50 +++ home/terminal/kitty/default.nix | 15 + home/terminal/nvim/default.nix | 245 ++++++++++++++ system/all.nix | 21 +- system/shell/fish.nix | 20 ++ 11 files changed, 572 insertions(+), 560 deletions(-) rename home/{ => hosts}/alien.nix (100%) rename home/{ => hosts}/peach.nix (100%) create mode 100644 home/kde/other.nix create mode 100644 home/kde/plasma.nix create mode 100644 home/systemd/default.nix create mode 100644 home/terminal/kitty/default.nix create mode 100644 home/terminal/nvim/default.nix create mode 100644 system/shell/fish.nix diff --git a/flake.nix b/flake.nix index 9459ff1..e98b462 100644 --- a/flake.nix +++ b/flake.nix @@ -77,6 +77,7 @@ } ./system/all.nix ./system/browsers/firefox.nix + ./system/shell/fish.nix ./system/hosts/${hostname}/default.nix ./hardware/${hostname}.nix catppuccin.nixosModules.catppuccin @@ -105,7 +106,7 @@ home.homeDirectory = "/home/${user}"; modules = [ ./home/all.nix - ./home/${hostname}.nix + ./home/hosts/${hostname}.nix catppuccin.homeModules.catppuccin home-manager.homeModules.home-manager plasma-manager.homeModules.plasma-manager diff --git a/home/all.nix b/home/all.nix index a5fb926..fe89968 100755 --- a/home/all.nix +++ b/home/all.nix @@ -58,550 +58,6 @@ }; }; - xdg.configFile."rclone/synology.conf".text = '' - [synology] - type = sftp - user = sckova - host = nas.taila30609.ts.net - key_file = ~/.ssh/key - ''; - - systemd.user.services.synology-mount = { - Unit = { - Description = "Mount Synology NAS with Rclone and Home Manager."; - After = [ "network-online.target" ]; - }; - - Service = { - Type = "notify"; - ExecStartPre = "${pkgs.coreutils}/bin/mkdir -p %h/Synology"; - ExecStart = "${pkgs.rclone}/bin/rclone --config=%h/.config/rclone/synology.conf --vfs-cache-mode full --ignore-checksum mount \"synology:\" \"%h/Synology\""; - ExecStop = "/run/wrappers/bin/fusermount -u %h/Synology/%i"; - }; - - Install = { - WantedBy = [ "default.target" ]; - }; - }; - - systemd.user.services.input-leap = { - Unit = { - Description = "Autostart Input Leap"; - After = [ "graphical-session.target" ]; - }; - - Service = { - Type = "oneshot"; - RemainAfterExit = true; - PassEnvironment = "DISPLAY"; - ExecStart = "${pkgs.writeShellScript "input-leap-start" '' - sleep 5 - ${pkgs.input-leap}/bin/input-leap - ''}"; - }; - - Install = { - WantedBy = [ "graphical-session.target" ]; - }; - }; - - programs.konsole.enable = false; - - programs.kitty = { - enable = true; - enableGitIntegration = true; - themeFile = "Catppuccin-Mocha"; - font = { - name = "Noto Sans Mono"; - size = 10; - }; - shellIntegration.enableFishIntegration = true; - extraConfig = "\nwheel_scroll_multiplier 5.0"; - }; - - programs.fish = { - enable = true; - interactiveShellInit = '' - set fish_greeting # Disable greeting - ''; - }; - - programs.nixvim = { - enable = true; - defaultEditor = true; - waylandSupport = true; - viAlias = true; - vimAlias = true; - clipboard = { - register = "unnamedplus"; - providers.wl-copy.enable = true; - }; - opts = { - tabstop = 2; - softtabstop = 2; - shiftwidth = 2; - expandtab = true; - number = true; - }; - colorschemes.catppuccin = { - enable = true; - settings = { - flavour = "mocha"; - }; - }; - keymaps = [ - # --- Normal mode mappings --- - { - mode = "n"; - key = ""; - action = "\"+y"; - options = { - noremap = true; - silent = true; - }; - } - { - mode = "n"; - key = ""; - action = "\"+p"; - options = { - noremap = true; - silent = true; - }; - } - - # --- Visual mode mappings --- - { - mode = "v"; - key = ""; - action = "\"+y"; - options = { - noremap = true; - silent = true; - }; - } - { - mode = "v"; - key = ""; - action = "\"+p"; - options = { - noremap = true; - silent = true; - }; - } - ]; - plugins = { - nvim-autopairs = { - enable = true; - # autoLoad = true; - }; - cmp = { - autoEnableSources = true; - enable = true; - # autoLoad = true; - }; - copilot-lua = { - enable = true; - # autoLoad = true; - }; - conform-nvim = { - enable = true; - # autoLoad = true; - settings = { - formatters_by_ft = { - lua = [ "stylua" ]; - python = [ - "isort" - "black" - ]; - nix = [ "nixfmt" ]; - javascript = [ - "deno fmt" - "prettier" - ]; - css = [ - "deno fmt" - "prettier" - ]; - json = [ - "deno fmt" - "prettier" - ]; - jsonc = [ - "deno fmt" - "prettier" - ]; - }; - - # Default formatting options - default_format_opts = { - lsp_format = "fallback"; - }; - - # Format-on-save behavior - format_on_save = { - timeout_ms = 500; - }; - - # Custom formatter settings - formatters = { - shfmt = { - append_args = [ - "-i" - "2" - ]; - }; - }; - }; - }; - fzf-lua = { - enable = true; - # autoLoad = true; - }; - kitty-scrollback = { - enable = true; - # autoLoad = true; - }; - lsp = { - enable = true; - # autoLoad = true; - }; - lualine = { - enable = true; - settings = { - options = { - theme = { - normal = { - a = { - fg = "#1e1e2e"; - bg = "#cba6f7"; - }; - b = { - fg = "#cdd6f4"; - bg = "#313244"; - }; - c = { - fg = "#cdd6f4"; - }; - }; - insert = { - a = { - fg = "#1e1e2e"; - bg = "#89b4fa"; - }; - }; - visual = { - a = { - fg = "#1e1e2e"; - bg = "#94e2d5"; - }; - }; - replace = { - a = { - fg = "#1e1e2e"; - bg = "#f38ba8"; - }; - }; - inactive = { - a = { - fg = "#cdd6f4"; - bg = "#1e1e2e"; - }; - b = { - fg = "#cdd6f4"; - bg = "#1e1e2e"; - }; - c = { - fg = "#cdd6f4"; - }; - }; - }; - component_separators = ""; - section_separators = { - left = ""; - right = ""; - }; - }; - - sections = { - lualine_a = [ - { - __unkeyed-1 = "mode"; - separator = { - left = " "; - }; - right_padding = 2; - } - ]; - lualine_b = [ - "filename" - "branch" - ]; - lualine_c = [ "%=" ]; - lualine_x = [ ]; - lualine_y = [ - "filetype" - "progress" - ]; - lualine_z = [ - { - __unkeyed-1 = "location"; - separator = { - right = " "; - }; - left_padding = 2; - } - ]; - }; - - inactive_sections = { - lualine_a = [ "filename" ]; - lualine_b = [ ]; - lualine_c = [ ]; - lualine_x = [ ]; - lualine_y = [ ]; - lualine_z = [ "location" ]; - }; - tabline = { }; - extensions = [ ]; - }; - # autoLoad = true; - }; - }; - }; - - programs.ghostwriter = { - enable = true; - font = { - family = "Noto Sans"; - pointSize = 12; - }; - }; - - programs.kate = { - enable = true; - editor = { - font = { - family = "Noto Sans Mono"; - pointSize = 10; - }; - }; - }; - - programs.plasma = { - enable = true; - overrideConfig = true; - - session = { - sessionRestore.restoreOpenApplicationsOnLogin = "startWithEmptySession"; - }; - - workspace = { - iconTheme = "Colloid-Dark"; - windowDecorations = { - library = "org.kde.breeze"; - theme = "Breeze"; - }; - cursor.size = 24; - wallpaperPictureOfTheDay.provider = "bing"; - wallpaperFillMode = "preserveAspectCrop"; - }; - - kscreenlocker = { - appearance.wallpaperPictureOfTheDay.provider = "bing"; - }; - - window-rules = [ - { - description = "Global Changes"; - match = { - window-class = { - value = ""; - type = "substring"; - }; - window-types = [ "normal" ]; - }; - apply = { - opacityactive = { - value = 100; - apply = "force"; - }; - opacityinactive = { - value = 100; - apply = "force"; - }; - }; - } - { - description = "OpenMW"; - match = { - window-class = { - value = "openmw"; - type = "substring"; - }; - window-types = [ "normal" ]; - }; - apply = { - noborder = { - value = true; - apply = "force"; - }; - maximizehoriz = { - value = true; - apply = "force"; - }; - maximizevert = { - value = true; - apply = "force"; - }; - desktops = { - value = "Desktop_4"; - apply = "force"; - }; - }; - } - { - description = "Firefox Picture-in-Picture"; - match = { - window-class = { - value = ""; - type = "substring"; - }; - title = { - value = "Picture-in-Picture"; - type = "exact"; - }; - }; - apply = { - above = { - value = true; - apply = "force"; - }; - desktops = { - value = "\\0"; - apply = "force"; - }; - }; - } - ]; - - kwin = { - titlebarButtons = { - left = [ - "on-all-desktops" - "keep-below-windows" - "keep-above-windows" - ]; - right = [ - "minimize" - "maximize" - "close" - ]; - }; - - nightLight = { - enable = true; - mode = "location"; - # Atlanta - location.latitude = "33.7501"; - location.longitude = "-84.3885"; - temperature.day = 6000; - temperature.night = 3500; - transitionTime = 60; - }; - virtualDesktops = { - names = [ - "1" - "2" - "3" - "4" - ]; - rows = 1; - }; - effects = { - desktopSwitching = { - animation = "slide"; - navigationWrapping = true; - }; - dimAdminMode.enable = true; - # dimInactive.enable = true; - minimization = { - animation = "magiclamp"; - duration = 500; - }; - shakeCursor.enable = true; - snapHelper.enable = true; - # translucency.enable = true; - # windowOpenClose.animation = "fade"; - blur = { - enable = false; - noiseStrength = 8; - strength = 5; - }; - }; - }; - - configFile = { - # kdeglobals.KDE.AutomaticLookAndFeel = true; - kwinrc.Round-Corners.ActiveOutlinePalette = 2; - kwinrc.Round-Corners.ActiveOutlineUseCustom = false; - kwinrc.Round-Corners.ActiveOutlineUsePalette = true; - kwinrc.Round-Corners.ActiveSecondOutlinePalette = 2; - kwinrc.Round-Corners.ActiveSecondOutlineUseCustom = false; - kwinrc.Round-Corners.ActiveSecondOutlineUsePalette = true; - kwinrc.Round-Corners.InactiveOutlinePalette = 3; - kwinrc.Round-Corners.InactiveOutlineUseCustom = false; - kwinrc.Round-Corners.InactiveOutlineUsePalette = true; - kwinrc.Round-Corners.InactiveSecondOutlinePalette = 3; - kwinrc.Round-Corners.InactiveSecondOutlineUseCustom = false; - kwinrc.Round-Corners.InactiveSecondOutlineUsePalette = true; - plasmaparc.General.AudioFeedback = false; - kdeglobals.Sounds.Enable = false; - kwinrc.Plugins.forceblurEnabled = true; - kwinrc.Effect-blurplus.BlurDecorations = true; - kwinrc.Effect-blurplus.BlurMatching = false; - kwinrc.Effect-blurplus.BlurMenus = true; - kwinrc.Effect-blurplus.BlurNonMatching = true; - kwinrc.Effect-blurplus.TopCornerRadius = 10; - kwinrc.Effect-blurplus.BottomCornerRadius = 10; - kwinrc.Effect-blurplus.NoiseStrength = 6; - kwinrc.Effect-blurplus.RefractionStrength = 10; - }; - - panels = [ - # Small dock at the bottom right - { - location = "bottom"; - height = 40; - hiding = "dodgewindows"; - lengthMode = "fit"; - floating = true; - alignment = "left"; - widgets = [ - { - kickoff = { - sortAlphabetically = true; - # icon = "nix-snowflake-white"; - }; - } - { - iconTasks = { - launchers = [ - "applications:firefox.desktop" - "applications:org.kde.dolphin.desktop" - "applications:vesktop.desktop" - "applications:kitty.desktop" - "applications:org.strawberrymusicplayer.strawberry.desktop" - "applications:writer.desktop" - ]; - }; - } - "org.kde.plasma.pager" - ]; - } - ]; - }; - # This value determines the Home Manager release that your # configuration is compatible with. This helps avoid breakage # when a new Home Manager release introduces backwards diff --git a/home/alien.nix b/home/hosts/alien.nix similarity index 100% rename from home/alien.nix rename to home/hosts/alien.nix diff --git a/home/peach.nix b/home/hosts/peach.nix similarity index 100% rename from home/peach.nix rename to home/hosts/peach.nix diff --git a/home/kde/other.nix b/home/kde/other.nix new file mode 100644 index 0000000..32243dc --- /dev/null +++ b/home/kde/other.nix @@ -0,0 +1,19 @@ +{ + programs.ghostwriter = { + enable = true; + font = { + family = "Noto Sans"; + pointSize = 12; + }; + }; + + programs.kate = { + enable = true; + editor = { + font = { + family = "Noto Sans Mono"; + pointSize = 10; + }; + }; + }; +} diff --git a/home/kde/plasma.nix b/home/kde/plasma.nix new file mode 100644 index 0000000..713a535 --- /dev/null +++ b/home/kde/plasma.nix @@ -0,0 +1,215 @@ +{ + programs.plasma = { + enable = true; + overrideConfig = true; + + session = { + sessionRestore.restoreOpenApplicationsOnLogin = "startWithEmptySession"; + }; + + workspace = { + iconTheme = "Colloid-Dark"; + windowDecorations = { + library = "org.kde.breeze"; + theme = "Breeze"; + }; + cursor.size = 24; + wallpaperPictureOfTheDay.provider = "bing"; + wallpaperFillMode = "preserveAspectCrop"; + }; + + kscreenlocker = { + appearance.wallpaperPictureOfTheDay.provider = "bing"; + }; + + window-rules = [ + { + description = "Global Changes"; + match = { + window-class = { + value = ""; + type = "substring"; + }; + window-types = [ "normal" ]; + }; + apply = { + opacityactive = { + value = 100; + apply = "force"; + }; + opacityinactive = { + value = 100; + apply = "force"; + }; + }; + } + { + description = "OpenMW"; + match = { + window-class = { + value = "openmw"; + type = "substring"; + }; + window-types = [ "normal" ]; + }; + apply = { + noborder = { + value = true; + apply = "force"; + }; + maximizehoriz = { + value = true; + apply = "force"; + }; + maximizevert = { + value = true; + apply = "force"; + }; + desktops = { + value = "Desktop_4"; + apply = "force"; + }; + }; + } + { + description = "Firefox Picture-in-Picture"; + match = { + window-class = { + value = ""; + type = "substring"; + }; + title = { + value = "Picture-in-Picture"; + type = "exact"; + }; + }; + apply = { + above = { + value = true; + apply = "force"; + }; + desktops = { + value = "\\0"; + apply = "force"; + }; + }; + } + ]; + + kwin = { + titlebarButtons = { + left = [ + "on-all-desktops" + "keep-below-windows" + "keep-above-windows" + ]; + right = [ + "minimize" + "maximize" + "close" + ]; + }; + + nightLight = { + enable = true; + mode = "location"; + # Atlanta + location.latitude = "33.7501"; + location.longitude = "-84.3885"; + temperature.day = 6000; + temperature.night = 3500; + transitionTime = 60; + }; + virtualDesktops = { + names = [ + "1" + "2" + "3" + "4" + ]; + rows = 1; + }; + effects = { + desktopSwitching = { + animation = "slide"; + navigationWrapping = true; + }; + dimAdminMode.enable = true; + # dimInactive.enable = true; + minimization = { + animation = "magiclamp"; + duration = 500; + }; + shakeCursor.enable = true; + snapHelper.enable = true; + # translucency.enable = true; + # windowOpenClose.animation = "fade"; + blur = { + enable = false; + noiseStrength = 8; + strength = 5; + }; + }; + }; + + configFile = { + # kdeglobals.KDE.AutomaticLookAndFeel = true; + kwinrc.Round-Corners.ActiveOutlinePalette = 2; + kwinrc.Round-Corners.ActiveOutlineUseCustom = false; + kwinrc.Round-Corners.ActiveOutlineUsePalette = true; + kwinrc.Round-Corners.ActiveSecondOutlinePalette = 2; + kwinrc.Round-Corners.ActiveSecondOutlineUseCustom = false; + kwinrc.Round-Corners.ActiveSecondOutlineUsePalette = true; + kwinrc.Round-Corners.InactiveOutlinePalette = 3; + kwinrc.Round-Corners.InactiveOutlineUseCustom = false; + kwinrc.Round-Corners.InactiveOutlineUsePalette = true; + kwinrc.Round-Corners.InactiveSecondOutlinePalette = 3; + kwinrc.Round-Corners.InactiveSecondOutlineUseCustom = false; + kwinrc.Round-Corners.InactiveSecondOutlineUsePalette = true; + plasmaparc.General.AudioFeedback = false; + kdeglobals.Sounds.Enable = false; + kwinrc.Plugins.forceblurEnabled = true; + kwinrc.Effect-blurplus.BlurDecorations = true; + kwinrc.Effect-blurplus.BlurMatching = false; + kwinrc.Effect-blurplus.BlurMenus = true; + kwinrc.Effect-blurplus.BlurNonMatching = true; + kwinrc.Effect-blurplus.TopCornerRadius = 10; + kwinrc.Effect-blurplus.BottomCornerRadius = 10; + kwinrc.Effect-blurplus.NoiseStrength = 6; + kwinrc.Effect-blurplus.RefractionStrength = 10; + }; + + panels = [ + # Small dock at the bottom right + { + location = "bottom"; + height = 40; + hiding = "dodgewindows"; + lengthMode = "fit"; + floating = true; + alignment = "left"; + widgets = [ + { + kickoff = { + sortAlphabetically = true; + # icon = "nix-snowflake-white"; + }; + } + { + iconTasks = { + launchers = [ + "applications:firefox.desktop" + "applications:org.kde.dolphin.desktop" + "applications:vesktop.desktop" + "applications:kitty.desktop" + "applications:org.strawberrymusicplayer.strawberry.desktop" + "applications:writer.desktop" + ]; + }; + } + "org.kde.plasma.pager" + ]; + } + ]; + }; +} diff --git a/home/systemd/default.nix b/home/systemd/default.nix new file mode 100644 index 0000000..a45c001 --- /dev/null +++ b/home/systemd/default.nix @@ -0,0 +1,50 @@ +{ pkgs, ... }: + +{ + xdg.configFile."rclone/synology.conf".text = '' + [synology] + type = sftp + user = sckova + host = nas.taila30609.ts.net + key_file = ~/.ssh/key + ''; + + systemd.user.services.synology-mount = { + Unit = { + Description = "Mount Synology NAS with Rclone and Home Manager."; + After = [ "network-online.target" ]; + }; + + Service = { + Type = "notify"; + ExecStartPre = "${pkgs.coreutils}/bin/mkdir -p %h/Synology"; + ExecStart = "${pkgs.rclone}/bin/rclone --config=%h/.config/rclone/synology.conf --vfs-cache-mode full --ignore-checksum mount \"synology:\" \"%h/Synology\""; + ExecStop = "/run/wrappers/bin/fusermount -u %h/Synology/%i"; + }; + + Install = { + WantedBy = [ "default.target" ]; + }; + }; + + systemd.user.services.input-leap = { + Unit = { + Description = "Autostart Input Leap"; + After = [ "graphical-session.target" ]; + }; + + Service = { + Type = "oneshot"; + RemainAfterExit = true; + PassEnvironment = "DISPLAY"; + ExecStart = "${pkgs.writeShellScript "input-leap-start" '' + sleep 5 + ${pkgs.input-leap}/bin/input-leap + ''}"; + }; + + Install = { + WantedBy = [ "graphical-session.target" ]; + }; + }; +} diff --git a/home/terminal/kitty/default.nix b/home/terminal/kitty/default.nix new file mode 100644 index 0000000..0b54eb3 --- /dev/null +++ b/home/terminal/kitty/default.nix @@ -0,0 +1,15 @@ +{ + programs.kitty = { + enable = true; + enableGitIntegration = true; + themeFile = "Catppuccin-Mocha"; + font = { + name = "Noto Sans Mono"; + size = 10; + }; + shellIntegration = { + enableFishIntegration = true; + }; + extraConfig = "\nwheel_scroll_multiplier 5.0"; + }; +} diff --git a/home/terminal/nvim/default.nix b/home/terminal/nvim/default.nix new file mode 100644 index 0000000..515110e --- /dev/null +++ b/home/terminal/nvim/default.nix @@ -0,0 +1,245 @@ +{ + programs.nixvim = { + enable = true; + defaultEditor = true; + waylandSupport = true; + viAlias = true; + vimAlias = true; + clipboard = { + register = "unnamedplus"; + providers.wl-copy.enable = true; + }; + opts = { + tabstop = 2; + softtabstop = 2; + shiftwidth = 2; + expandtab = true; + number = true; + }; + colorschemes.catppuccin = { + enable = true; + settings = { + flavour = "mocha"; + }; + }; + keymaps = [ + # --- Normal mode mappings --- + { + mode = "n"; + key = ""; + action = "\"+y"; + options = { + noremap = true; + silent = true; + }; + } + { + mode = "n"; + key = ""; + action = "\"+p"; + options = { + noremap = true; + silent = true; + }; + } + + # --- Visual mode mappings --- + { + mode = "v"; + key = ""; + action = "\"+y"; + options = { + noremap = true; + silent = true; + }; + } + { + mode = "v"; + key = ""; + action = "\"+p"; + options = { + noremap = true; + silent = true; + }; + } + ]; + plugins = { + nvim-autopairs = { + enable = true; + # autoLoad = true; + }; + cmp = { + autoEnableSources = true; + enable = true; + # autoLoad = true; + }; + copilot-lua = { + enable = true; + # autoLoad = true; + }; + conform-nvim = { + enable = true; + # autoLoad = true; + settings = { + formatters_by_ft = { + lua = [ "stylua" ]; + python = [ + "isort" + "black" + ]; + nix = [ "nixfmt" ]; + javascript = [ + "deno fmt" + "prettier" + ]; + css = [ + "deno fmt" + "prettier" + ]; + json = [ + "deno fmt" + "prettier" + ]; + jsonc = [ + "deno fmt" + "prettier" + ]; + }; + + # Default formatting options + default_format_opts = { + lsp_format = "fallback"; + }; + + # Format-on-save behavior + format_on_save = { + timeout_ms = 500; + }; + + # Custom formatter settings + formatters = { + shfmt = { + append_args = [ + "-i" + "2" + ]; + }; + }; + }; + }; + fzf-lua = { + enable = true; + # autoLoad = true; + }; + kitty-scrollback = { + enable = true; + # autoLoad = true; + }; + lsp = { + enable = true; + # autoLoad = true; + }; + lualine = { + enable = true; + settings = { + options = { + theme = { + normal = { + a = { + fg = "#1e1e2e"; + bg = "#cba6f7"; + }; + b = { + fg = "#cdd6f4"; + bg = "#313244"; + }; + c = { + fg = "#cdd6f4"; + }; + }; + insert = { + a = { + fg = "#1e1e2e"; + bg = "#89b4fa"; + }; + }; + visual = { + a = { + fg = "#1e1e2e"; + bg = "#94e2d5"; + }; + }; + replace = { + a = { + fg = "#1e1e2e"; + bg = "#f38ba8"; + }; + }; + inactive = { + a = { + fg = "#cdd6f4"; + bg = "#1e1e2e"; + }; + b = { + fg = "#cdd6f4"; + bg = "#1e1e2e"; + }; + c = { + fg = "#cdd6f4"; + }; + }; + }; + component_separators = ""; + section_separators = { + left = ""; + right = ""; + }; + }; + + sections = { + lualine_a = [ + { + __unkeyed-1 = "mode"; + separator = { + left = " "; + }; + right_padding = 2; + } + ]; + lualine_b = [ + "filename" + "branch" + ]; + lualine_c = [ "%=" ]; + lualine_x = [ ]; + lualine_y = [ + "filetype" + "progress" + ]; + lualine_z = [ + { + __unkeyed-1 = "location"; + separator = { + right = " "; + }; + left_padding = 2; + } + ]; + }; + + inactive_sections = { + lualine_a = [ "filename" ]; + lualine_b = [ ]; + lualine_c = [ ]; + lualine_x = [ ]; + lualine_y = [ ]; + lualine_z = [ "location" ]; + }; + tabline = { }; + extensions = [ ]; + }; + # autoLoad = true; + }; + }; + }; +} diff --git a/system/all.nix b/system/all.nix index 68f6321..7fe8dba 100755 --- a/system/all.nix +++ b/system/all.nix @@ -27,7 +27,12 @@ imports = [ ../home/all.nix ../home/browsers/firefox/default.nix - ../home/${config.networking.hostName}.nix + ../home/systemd/default.nix + ../home/terminal/nvim/default.nix + ../home/terminal/kitty/default.nix + ../home/kde/plasma.nix + ../home/kde/other.nix + ../home/hosts/${config.networking.hostName}.nix ]; }; @@ -122,16 +127,6 @@ hashedPassword = "$6$bvwRUFaJNMpH8rm3$FGDWFN6tBScJ/2DynAjnlZE8JRfyADN78d6c4GawxpAjyNLNE/AjQzMA09tLRqpKX7WnN5PIUZLAm2bT9/RbG0"; }; - programs.bash = { - interactiveShellInit = '' - if [[ $(${pkgs.procps}/bin/ps --no-header --pid=$PPID --format=comm) != "fish" && -z ''${BASH_EXECUTION_STRING} ]] - then - shopt -q login_shell && LOGIN_OPTION='--login' || LOGIN_OPTION="" - exec ${pkgs.fish}/bin/fish $LOGIN_OPTION - fi - ''; - }; - nixpkgs.config.allowUnfree = true; environment = { @@ -153,10 +148,6 @@ services.openssh.enable = true; networking.firewall.enable = false; - networking.extraHosts = '' - 0.0.0.0 apresolve.spotify.com - ''; - # This value determines the NixOS release from which the default # settings for stateful data, like file locations and database versions # on your system were taken. It‘s perfectly fine and recommended to leave diff --git a/system/shell/fish.nix b/system/shell/fish.nix new file mode 100644 index 0000000..5cb36f2 --- /dev/null +++ b/system/shell/fish.nix @@ -0,0 +1,20 @@ +{ pkgs, ... }: + +{ + programs.bash = { + interactiveShellInit = '' + if [[ $(${pkgs.procps}/bin/ps --no-header --pid=$PPID --format=comm) != "fish" && -z ''${BASH_EXECUTION_STRING} ]] + then + shopt -q login_shell && LOGIN_OPTION='--login' || LOGIN_OPTION="" + exec ${pkgs.fish}/bin/fish $LOGIN_OPTION + fi + ''; + }; + + programs.fish = { + enable = true; + interactiveShellInit = '' + set fish_greeting # Disable greeting + ''; + }; +} From 1a9d24242b4661f7e1ac3dce6df60d9c1c08bbae Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Thu, 13 Nov 2025 14:54:14 -0500 Subject: [PATCH 037/282] update flake.lock --- flake.lock | 42 +++++++++++++++---------------- home/browsers/firefox/default.nix | 10 -------- 2 files changed, 21 insertions(+), 31 deletions(-) diff --git a/flake.lock b/flake.lock index 13ee505..67ce214 100644 --- a/flake.lock +++ b/flake.lock @@ -8,11 +8,11 @@ ] }, "locked": { - "lastModified": 1762421567, - "narHash": "sha256-i5GIUYgnlNozrsxDKZtRiCyJGbbAI6Queiu3OGcuf4Y=", + "lastModified": 1762706659, + "narHash": "sha256-i7w+rZ6r03BxhxotAuyXBHpngZNEhf+s0CpDRaz/qCo=", "owner": "nix-community", "repo": "nixos-apple-silicon", - "rev": "43db10b6bdc6f80097ddc3acf833ec828af50d40", + "rev": "58083d06711fb6c15bee6cc9468ffc341763bfdc", "type": "github" }, "original": { @@ -64,11 +64,11 @@ ] }, "locked": { - "lastModified": 1762440070, - "narHash": "sha256-xxdepIcb39UJ94+YydGP221rjnpkDZUlykKuF54PsqI=", + "lastModified": 1762810396, + "narHash": "sha256-dxFVgQPG+R72dkhXTtqUm7KpxElw3u6E+YlQ2WaDgt8=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "26d05891e14c88eb4a5d5bee659c0db5afb609d8", + "rev": "0bdadb1b265fb4143a75bd1ec7d8c915898a9923", "type": "github" }, "original": { @@ -123,11 +123,11 @@ ] }, "locked": { - "lastModified": 1762463325, - "narHash": "sha256-33YUsWpPyeBZEWrKQ2a1gkRZ7i0XCC/2MYpU6BVeQSU=", + "lastModified": 1762964643, + "narHash": "sha256-RYHN8O/Aja59XDji6WSJZPkJpYVUfpSkyH+PEupBJqM=", "owner": "nix-community", "repo": "home-manager", - "rev": "0562fef070a1027325dd4ea10813d64d2c967b39", + "rev": "827f2a23373a774a8805f84ca5344654c31f354b", "type": "github" }, "original": { @@ -187,11 +187,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1762363567, - "narHash": "sha256-YRqMDEtSMbitIMj+JLpheSz0pwEr0Rmy5mC7myl17xs=", + "lastModified": 1762844143, + "narHash": "sha256-SlybxLZ1/e4T2lb1czEtWVzDCVSTvk9WLwGhmxFmBxI=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "ae814fd3904b621d8ab97418f1d0f2eb0d3716f4", + "rev": "9da7f1cf7f8a6e2a7cb3001b048546c92a8258b4", "type": "github" }, "original": { @@ -211,11 +211,11 @@ "systems": "systems_3" }, "locked": { - "lastModified": 1762523528, - "narHash": "sha256-VH4+fAB85irWuzxfWPfEEwDOE+eQsB/pljNApM0onuU=", + "lastModified": 1762904125, + "narHash": "sha256-+T9oUulnXOQmy37GGOivHSvEyViA4gQ41mFZEPEDuOA=", "owner": "nix-community", "repo": "nixvim", - "rev": "3031d4ab616323f6d41704dfb46f2b801f29973d", + "rev": "84902b354fd0f122c40880b90dc8ac89d4d0daea", "type": "github" }, "original": { @@ -232,11 +232,11 @@ ] }, "locked": { - "lastModified": 1763052046, - "narHash": "sha256-SHdav1soeHzFZFgAiRJORaSyB/D7FEd0ZH3JZLAcLy4=", + "lastModified": 1763063076, + "narHash": "sha256-LaYplAhvEbviMKleNGnQ7h39J9DnZWmsV6tbXQkT+Ms=", "owner": "nix-community", "repo": "NUR", - "rev": "2712fb70b786a703e39fddf77414469d16654e94", + "rev": "303141f1256871301cb9809d68d21e8f86022511", "type": "github" }, "original": { @@ -278,11 +278,11 @@ ] }, "locked": { - "lastModified": 1762274591, - "narHash": "sha256-Vbhluvk15qwiyNDyPd9tjJh9gxIfUjbKVT79c05Pd3I=", + "lastModified": 1762784320, + "narHash": "sha256-odsk96Erywk5hs0dhArF38zb7Oe0q6LZ70gXbxAPKno=", "owner": "nix-community", "repo": "plasma-manager", - "rev": "6296d7100cc84b2ff732b7c103a50c2856974cf6", + "rev": "7911a0f8a44c7e8b29d031be3149ee8943144321", "type": "github" }, "original": { diff --git a/home/browsers/firefox/default.nix b/home/browsers/firefox/default.nix index eb311bb..c48cd63 100644 --- a/home/browsers/firefox/default.nix +++ b/home/browsers/firefox/default.nix @@ -22,16 +22,6 @@ sponsorblock ]; settings = { - "uBlock0@raymondhill.net".settings = { - selectedFilterLists = [ - "ublock-filters" - "ublock-badware" - "ublock-privacy" - "ublock-unbreak" - "ublock-quick-fixes" - ]; - }; - "{7a7a4a92-a2a0-41d1-9fd7-1e92480d612d}".settings = { dbInChromeStorage = true; # required for Stylus }; From 14bda31f078866c18bd81976e1733833ba6b3b77 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Thu, 13 Nov 2025 15:09:03 -0500 Subject: [PATCH 038/282] fix rclone --- home/systemd/default.nix | 3 +++ 1 file changed, 3 insertions(+) diff --git a/home/systemd/default.nix b/home/systemd/default.nix index a45c001..7d3da44 100644 --- a/home/systemd/default.nix +++ b/home/systemd/default.nix @@ -13,6 +13,8 @@ Unit = { Description = "Mount Synology NAS with Rclone and Home Manager."; After = [ "network-online.target" ]; + StartLimitIntervalSec = 30; + StartLimitBurst = 3; }; Service = { @@ -20,6 +22,7 @@ ExecStartPre = "${pkgs.coreutils}/bin/mkdir -p %h/Synology"; ExecStart = "${pkgs.rclone}/bin/rclone --config=%h/.config/rclone/synology.conf --vfs-cache-mode full --ignore-checksum mount \"synology:\" \"%h/Synology\""; ExecStop = "/run/wrappers/bin/fusermount -u %h/Synology/%i"; + Restart = "on-failure"; }; Install = { From a89f9e7ac1a2e8883a7831ae76e0e8fa312026a9 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Thu, 13 Nov 2025 15:50:09 -0500 Subject: [PATCH 039/282] fix firefox text --- home/browsers/firefox/userChrome.css | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/home/browsers/firefox/userChrome.css b/home/browsers/firefox/userChrome.css index ac60443..76b6b55 100644 --- a/home/browsers/firefox/userChrome.css +++ b/home/browsers/firefox/userChrome.css @@ -1,7 +1,7 @@ @media (prefers-color-scheme: light) { :root { /* bookmark_text */ - --toolbar-color: #eff1f5ff !important; + --toolbar-color: #4c4f69ff !important; /* button_background_active */ --toolbarbutton-active-background: rgba(156, 160, 176, 1) !important; @@ -94,7 +94,7 @@ #urlbar-input, .searchbar-textbox { &:focus::selection { - color: #eff1f5ff; + color: #4c4f69ff; } } @@ -113,7 +113,7 @@ @media (prefers-color-scheme: dark) { :root { /* bookmark_text */ - --toolbar-color: #1e1e2eff !important; + --toolbar-color: #cdd6f4ff !important; /* button_background_active */ --toolbarbutton-active-background: rgba(108, 112, 134, 1) !important; @@ -206,7 +206,7 @@ #urlbar-input, .searchbar-textbox { &:focus::selection { - color: #1e1e2eff; + color: #cdd6f4ff; } } From ed9a4ad56cdcf027457ee5b3a5e04f29ff146d0d Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Thu, 13 Nov 2025 16:01:41 -0500 Subject: [PATCH 040/282] edit helium package --- home/kde/plasma.nix | 1 + packages/helium-browser/package.nix | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/home/kde/plasma.nix b/home/kde/plasma.nix index 713a535..8775d4a 100644 --- a/home/kde/plasma.nix +++ b/home/kde/plasma.nix @@ -199,6 +199,7 @@ iconTasks = { launchers = [ "applications:firefox.desktop" + "applications:helium.desktop" "applications:org.kde.dolphin.desktop" "applications:vesktop.desktop" "applications:kitty.desktop" diff --git a/packages/helium-browser/package.nix b/packages/helium-browser/package.nix index ef8f7df..2dd7f6b 100644 --- a/packages/helium-browser/package.nix +++ b/packages/helium-browser/package.nix @@ -41,7 +41,8 @@ appimageTools.wrapType2 { install -Dm444 ${appimageContents}/helium.png -t $out/share/pixmaps substituteInPlace $out/share/applications/helium.desktop \ - --replace-fail 'Exec=AppRun' 'Exec=${pname}' + --replace-fail 'Exec=AppRun' 'Exec=${pname}' \ + --replace-fail 'Icon=helium' 'Icon=web-browser' ''; meta = { description = "A private, respectful browser"; From 90ef3cfa94e019bef0acd0810ea8c58d41d00c90 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Thu, 13 Nov 2025 16:04:54 -0500 Subject: [PATCH 041/282] fix pwas for firefox --- home/browsers/firefox/default.nix | 1 + system/browsers/firefox.nix | 1 + 2 files changed, 2 insertions(+) diff --git a/home/browsers/firefox/default.nix b/home/browsers/firefox/default.nix index c48cd63..c4870d7 100644 --- a/home/browsers/firefox/default.nix +++ b/home/browsers/firefox/default.nix @@ -20,6 +20,7 @@ consent-o-matic privacy-badger sponsorblock + pwas-for-firefox ]; settings = { "{7a7a4a92-a2a0-41d1-9fd7-1e92480d612d}".settings = { diff --git a/system/browsers/firefox.nix b/system/browsers/firefox.nix index f795cf4..c76789b 100644 --- a/system/browsers/firefox.nix +++ b/system/browsers/firefox.nix @@ -19,6 +19,7 @@ in programs = { firefox = { enable = true; + nativeMessagingHosts.packages = [ pkgs.firefoxpwa ]; languagePacks = [ "en-US" ]; # ---- POLICIES ---- From ae47403ed8b9f34e4532e5f3f234fbc88b165c10 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Thu, 13 Nov 2025 17:00:09 -0500 Subject: [PATCH 042/282] wip: aarch64 widevine for helium --- flake.nix | 4 +- packages/helium-browser/overlay.nix | 3 -- packages/helium-browser/package.nix | 28 +++++++---- .../helium-browser/widevine-aarch64-linux.nix | 49 +++++++++++++++++++ packages/helium-browser/widevine-meta.nix | 15 ++++++ packages/overlay.nix | 15 ++++++ packages/strawberry/overlay.nix | 3 -- packages/widevine-firefox/overlay.nix | 3 -- 8 files changed, 99 insertions(+), 21 deletions(-) delete mode 100644 packages/helium-browser/overlay.nix create mode 100644 packages/helium-browser/widevine-aarch64-linux.nix create mode 100644 packages/helium-browser/widevine-meta.nix create mode 100644 packages/overlay.nix delete mode 100644 packages/strawberry/overlay.nix delete mode 100644 packages/widevine-firefox/overlay.nix diff --git a/flake.nix b/flake.nix index e98b462..67bc88b 100644 --- a/flake.nix +++ b/flake.nix @@ -70,9 +70,7 @@ { nixpkgs.overlays = [ nur.overlays.default - (import ./packages/widevine-firefox/overlay.nix) - (import ./packages/strawberry/overlay.nix) - (import ./packages/helium-browser/overlay.nix) + (import ./packages/overlay.nix) ]; } ./system/all.nix diff --git a/packages/helium-browser/overlay.nix b/packages/helium-browser/overlay.nix deleted file mode 100644 index fbc3dc6..0000000 --- a/packages/helium-browser/overlay.nix +++ /dev/null @@ -1,3 +0,0 @@ -final: prev: { - helium-browser = prev.callPackage (builtins.path { path = ./package.nix; }) { }; -} diff --git a/packages/helium-browser/package.nix b/packages/helium-browser/package.nix index 2dd7f6b..21dac62 100644 --- a/packages/helium-browser/package.nix +++ b/packages/helium-browser/package.nix @@ -1,3 +1,7 @@ +# taken (stolen?) from two places: +# https://github.com/fpletz/flake/blob/main/pkgs/by-name/helium-browser.nix +# https://github.com/nix-community/nur-combined/blob/main/repos/Ev357/pkgs/helium/default.nix +# so shoutout those guys { stdenv, lib, @@ -5,6 +9,7 @@ fetchurl, makeDesktopItem, copyDesktopItems, + widevine-helium ? null, }: let pname = "helium-browser"; @@ -13,7 +18,7 @@ let architectures = { "x86_64-linux" = { arch = "x86_64"; - hash = lib.fakeHash; + hash = "sha256-DlEFuFwx2Qjr9eb6uiSYzM/F3r2hdtkMW5drJyJt/YE="; }; "aarch64-linux" = { arch = "arm64"; @@ -30,19 +35,24 @@ let inherit hash; }; - appimageContents = appimageTools.extractType2 { - inherit pname version src; - }; + appImageContents = appimageTools.extractType2 { inherit pname version src; }; + in appimageTools.wrapType2 { inherit pname version src; extraInstallCommands = '' - install -Dm444 ${appimageContents}/helium.desktop -t $out/share/applications - install -Dm444 ${appimageContents}/helium.png -t $out/share/pixmaps - + mkdir -p "$out/share/applications" + mkdir -p "$out/share/lib/helium" + cp -r ${appImageContents}/opt/helium/locales "$out/share/lib/helium" + cp -r ${appImageContents}/usr/share/* "$out/share" + cp "${appImageContents}/helium.desktop" "$out/share/applications/" substituteInPlace $out/share/applications/helium.desktop \ - --replace-fail 'Exec=AppRun' 'Exec=${pname}' \ - --replace-fail 'Icon=helium' 'Icon=web-browser' + --replace-fail 'Exec=AppRun' 'Exec=${pname} \ + --replace-fail 'Icon=helium' 'Icon=web-browser + + ${lib.optionalString (stdenv.hostPlatform.system == "aarch64-linux") '' + cp -r ${widevine-helium}/share/helium/WidevineCdm "$out/share/lib/helium/" + ''} ''; meta = { description = "A private, respectful browser"; diff --git a/packages/helium-browser/widevine-aarch64-linux.nix b/packages/helium-browser/widevine-aarch64-linux.nix new file mode 100644 index 0000000..94173c0 --- /dev/null +++ b/packages/helium-browser/widevine-aarch64-linux.nix @@ -0,0 +1,49 @@ +{ + lib, + stdenv, + fetchurl, + fetchFromGitHub, + squashfsTools, + python3, +}: + +stdenv.mkDerivation (finalAttrs: { + pname = "widevine-helium"; + version = "${finalAttrs.lacrosVersion}-${builtins.substring 0 7 finalAttrs.widevineInstaller.rev}"; + lacrosVersion = "120.0.6098.0"; + + widevineInstaller = fetchFromGitHub { + owner = "AsahiLinux"; + repo = "widevine-installer"; + rev = "7a3928fe1342fb07d96f61c2b094e3287588958b"; + sha256 = "sha256-XI1y4pVNpXS+jqFs0KyVMrxcULOJ5rADsgvwfLF6e0Y="; + }; + + src = fetchurl { + url = "https://commondatastorage.googleapis.com/chromeos-localmirror/distfiles/chromeos-lacros-arm64-squash-zstd-${finalAttrs.lacrosVersion}"; + hash = "sha256-OKV8w5da9oZ1oSGbADVPCIkP9Y0MVLaQ3PXS3ZBLFXY="; + }; + + nativeBuildInputs = [ + squashfsTools + python3 + ]; + + unpackPhase = '' + unsquashfs -q $src 'WidevineCdm/*' + python3 $widevineInstaller/widevine_fixup.py squashfs-root/WidevineCdm/_platform_specific/cros_arm64/libwidevinecdm.so libwidevinecdm.so + cp squashfs-root/WidevineCdm/manifest.json . + cp squashfs-root/WidevineCdm/LICENSE LICENSE.txt + ''; + + # Accoring to widevine-installer: "Hack because Chromium hardcodes a check for this right now..." + postInstall = '' + install -vD manifest.json "$out/share/helium/WidevineCdm/manifest.json" + install -vD LICENSE.txt "$out/share/helium/WidevineCdm/License.txt" + install -vD libwidevinecdm.so "$out/share/helium/WidevineCdm/_platform_specific/linux_arm64/libwidevinecdm.so" + mkdir -p "$out/share/helium/WidevineCdm/_platform_specific/linux_x64" + touch "$out/share/helium/WidevineCdm/_platform_specific/linux_x64/libwidevinecdm.so" + ''; + + meta = import ./widevine-meta.nix lib; +}) diff --git a/packages/helium-browser/widevine-meta.nix b/packages/helium-browser/widevine-meta.nix new file mode 100644 index 0000000..0bd7ee6 --- /dev/null +++ b/packages/helium-browser/widevine-meta.nix @@ -0,0 +1,15 @@ +lib: { + description = "Widevine CDM"; + homepage = "https://www.widevine.com"; + sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ]; + license = lib.licenses.unfree; + maintainers = with lib.maintainers; [ + jlamur + bearfm + ]; + platforms = lib.map (name: lib.removeSuffix ".nix" (lib.removePrefix "widevine-" name)) ( + lib.filter (name: name != "meta.nix" && name != "package.nix") ( + builtins.attrNames (builtins.readDir ./.) + ) + ); +} diff --git a/packages/overlay.nix b/packages/overlay.nix new file mode 100644 index 0000000..b6d6ceb --- /dev/null +++ b/packages/overlay.nix @@ -0,0 +1,15 @@ +final: prev: { + widevine-helium = + if prev.stdenv.hostPlatform.system == "aarch64-linux" then + prev.callPackage ./helium-browser/widevine-aarch64-linux.nix { } + else + null; + + helium-browser = prev.callPackage (builtins.path { path = ./helium-browser/package.nix; }) { }; + + strawberry-master = prev.callPackage (builtins.path { + path = ./strawberry/package.nix; + }) { }; + + widevine-firefox = prev.callPackage (builtins.path { path = ./widevine-firefox/package.nix; }) { }; +} diff --git a/packages/strawberry/overlay.nix b/packages/strawberry/overlay.nix deleted file mode 100644 index 086d41b..0000000 --- a/packages/strawberry/overlay.nix +++ /dev/null @@ -1,3 +0,0 @@ -final: prev: { - strawberry-master = prev.callPackage (builtins.path { path = ./package.nix; }) { }; -} diff --git a/packages/widevine-firefox/overlay.nix b/packages/widevine-firefox/overlay.nix deleted file mode 100644 index 2e7feb0..0000000 --- a/packages/widevine-firefox/overlay.nix +++ /dev/null @@ -1,3 +0,0 @@ -final: prev: { - widevine-firefox = prev.callPackage (builtins.path { path = ./package.nix; }) { }; -} From 99bd42cab91a37f81de69663701a71965fee2f15 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Thu, 13 Nov 2025 17:54:50 -0500 Subject: [PATCH 043/282] switch helium-browser to non-appimage --- packages/helium-browser/package.nix | 145 ++++++++++++++++++++-------- 1 file changed, 103 insertions(+), 42 deletions(-) diff --git a/packages/helium-browser/package.nix b/packages/helium-browser/package.nix index 21dac62..5ab33b6 100644 --- a/packages/helium-browser/package.nix +++ b/packages/helium-browser/package.nix @@ -1,65 +1,126 @@ -# taken (stolen?) from two places: -# https://github.com/fpletz/flake/blob/main/pkgs/by-name/helium-browser.nix -# https://github.com/nix-community/nur-combined/blob/main/repos/Ev357/pkgs/helium/default.nix -# so shoutout those guys { stdenv, lib, - appimageTools, fetchurl, makeDesktopItem, copyDesktopItems, - widevine-helium ? null, + autoPatchelfHook, + makeWrapper, + + # runtime dependencies + xorg, + libGL, + mesa, + cairo, + pango, + systemd, + alsa-lib, + gcc-unwrapped, + qt5, + qt6, + glib, + nspr, + nss, + at-spi2-atk, + at-spi2-core, + cups, }: let - pname = "helium-browser"; - version = "0.6.4.1"; - architectures = { "x86_64-linux" = { arch = "x86_64"; - hash = "sha256-DlEFuFwx2Qjr9eb6uiSYzM/F3r2hdtkMW5drJyJt/YE="; + hash = "sha256-9xEVnGym579rR6RunS4HWYV3nLk1ODEIGfg8PtNDSUk="; }; "aarch64-linux" = { arch = "arm64"; - hash = "sha256-B63tvOtSRlMRJozvzC7lqG2LM0ZgLIq2G/AHABl+Qqg="; + hash = "sha256-S5kF+K2Kwhqa0GG691NvnU/2frUCWL9BKrVK7y3bzSE="; }; }; - src = - let - inherit (architectures.${stdenv.hostPlatform.system}) arch hash; - in - fetchurl { - url = "https://github.com/imputnet/helium-linux/releases/download/${version}/helium-${version}-${arch}.AppImage"; - inherit hash; - }; - - appImageContents = appimageTools.extractType2 { inherit pname version src; }; + platformInfo = + architectures.${stdenv.hostPlatform.system} + or (throw "Unsupported system: ${stdenv.hostPlatform.system}"); in -appimageTools.wrapType2 { - inherit pname version src; - extraInstallCommands = '' - mkdir -p "$out/share/applications" - mkdir -p "$out/share/lib/helium" - cp -r ${appImageContents}/opt/helium/locales "$out/share/lib/helium" - cp -r ${appImageContents}/usr/share/* "$out/share" - cp "${appImageContents}/helium.desktop" "$out/share/applications/" - substituteInPlace $out/share/applications/helium.desktop \ - --replace-fail 'Exec=AppRun' 'Exec=${pname} \ - --replace-fail 'Icon=helium' 'Icon=web-browser +stdenv.mkDerivation rec { + pname = "helium-browser"; + version = "0.6.4.1"; + xzName = "helium-${version}-${platformInfo.arch}_linux"; - ${lib.optionalString (stdenv.hostPlatform.system == "aarch64-linux") '' - cp -r ${widevine-helium}/share/helium/WidevineCdm "$out/share/lib/helium/" - ''} + src = fetchurl { + url = "https://github.com/imputnet/helium-linux/releases/download/${version}/${xzName}.tar.xz"; + hash = platformInfo.hash; + }; + + sourceRoot = "."; + + nativeBuildInputs = [ + autoPatchelfHook + makeWrapper + copyDesktopItems + ]; + + buildInputs = [ + xorg.libXext + xorg.libXfixes + xorg.libXrandr + xorg.libxcb + xorg.libXdamage + xorg.libXcomposite + mesa + cairo + pango + systemd + alsa-lib + gcc-unwrapped.lib + qt5.qtbase.out + qt6.qtbase.out + glib + nspr + nss + at-spi2-atk + at-spi2-core + cups + ]; + + dontWrapQtApps = true; + + unpackPhase = '' + runHook preUnpack + tar xf $src + runHook postUnpack ''; - meta = { - description = "A private, respectful browser"; - homepage = "https://github.com/imputnet/helium-linux"; - downloadPage = "https://github.com/imputnet/helium-linux/releases"; - license = lib.licenses.gpl3Only; - sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ]; - platforms = lib.attrNames architectures; + + installPhase = '' + runHook preInstall + + mkdir -p $out/opt/helium + mv ${xzName}/helium.desktop . + mv ${xzName}/product_logo_256.png . + cp -r ${xzName}/* $out/opt/helium/ + chmod +x $out/opt/helium/chrome-wrapper $out/opt/helium/chrome + + makeWrapper $out/opt/helium/chrome-wrapper $out/bin/helium-browser \ + --chdir $out/opt/helium \ + --prefix LD_LIBRARY_PATH : "${ + lib.makeLibraryPath [ + libGL + mesa + ] + }" + + install -Dm644 product_logo_256.png $out/share/icons/hicolor/256x256/apps/helium.png + install -Dm644 helium.desktop $out/share/applications/helium.desktop + substituteInPlace $out/share/applications/helium.desktop \ + --replace-fail 'Exec=chromium' "Exec=$out/bin/helium-browser" \ + + runHook postInstall + ''; + + meta = with lib; { + homepage = "https://helium.computer"; + description = "Helium web browser"; + platforms = platforms.linux; + mainProgram = "helium"; }; } From 33fb9bfb7e8e760496cf5cbdeccc31e4c999ceae Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Thu, 13 Nov 2025 19:10:30 -0500 Subject: [PATCH 044/282] fix pip rule for chromium browsers --- home/kde/plasma.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/home/kde/plasma.nix b/home/kde/plasma.nix index 8775d4a..6cabbf6 100644 --- a/home/kde/plasma.nix +++ b/home/kde/plasma.nix @@ -72,15 +72,15 @@ }; } { - description = "Firefox Picture-in-Picture"; + description = "Picture-in-Picture"; match = { window-class = { value = ""; type = "substring"; }; title = { - value = "Picture-in-Picture"; - type = "exact"; + value = "(?i)picture[- ]in[- ]picture"; + type = "regex"; }; }; apply = { From 609beb2089c5b6b1e866111459a7a698197ff70b Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Thu, 13 Nov 2025 19:47:27 -0500 Subject: [PATCH 045/282] remove firefox from taskbar --- home/kde/plasma.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/home/kde/plasma.nix b/home/kde/plasma.nix index 6cabbf6..4e73723 100644 --- a/home/kde/plasma.nix +++ b/home/kde/plasma.nix @@ -198,7 +198,7 @@ { iconTasks = { launchers = [ - "applications:firefox.desktop" + # "applications:firefox.desktop" "applications:helium.desktop" "applications:org.kde.dolphin.desktop" "applications:vesktop.desktop" From 9c30e3de4dce9d7978b5807b60fc62f95fb5f57c Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Thu, 13 Nov 2025 20:18:07 -0500 Subject: [PATCH 046/282] fix helium gsettings warning --- packages/helium-browser/package.nix | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/packages/helium-browser/package.nix b/packages/helium-browser/package.nix index 5ab33b6..bccdab5 100644 --- a/packages/helium-browser/package.nix +++ b/packages/helium-browser/package.nix @@ -24,6 +24,8 @@ at-spi2-atk, at-spi2-core, cups, + gsettings-desktop-schemas, + gtk3, }: let architectures = { @@ -81,6 +83,8 @@ stdenv.mkDerivation rec { at-spi2-atk at-spi2-core cups + gsettings-desktop-schemas + gtk3 ]; dontWrapQtApps = true; @@ -102,6 +106,7 @@ stdenv.mkDerivation rec { makeWrapper $out/opt/helium/chrome-wrapper $out/bin/helium-browser \ --chdir $out/opt/helium \ + --prefix XDG_DATA_DIRS : "$GSETTINGS_SCHEMAS_PATH:${gsettings-desktop-schemas}/share/gsettings-schemas/${gsettings-desktop-schemas.name}" \ --prefix LD_LIBRARY_PATH : "${ lib.makeLibraryPath [ libGL From 16fa21313dc3e9dfb826c965ff6a6853b8e6d30b Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Thu, 13 Nov 2025 21:36:37 -0500 Subject: [PATCH 047/282] add btop and update kitty --- home/all.nix | 9 +- home/terminal/btop/btop.conf | 257 ++++++++++++++++++++++++++++++++ home/terminal/btop/default.nix | 25 ++++ home/terminal/kitty/default.nix | 9 +- system/all.nix | 2 + 5 files changed, 294 insertions(+), 8 deletions(-) create mode 100644 home/terminal/btop/btop.conf create mode 100644 home/terminal/btop/default.nix diff --git a/home/all.nix b/home/all.nix index fe89968..6a68576 100755 --- a/home/all.nix +++ b/home/all.nix @@ -49,13 +49,8 @@ catppuccin = { enable = true; - cursors = { - enable = true; - accent = "dark"; - }; - firefox = { - force = true; - }; + cursors.enable = true; + cache.enable = true; }; # This value determines the Home Manager release that your diff --git a/home/terminal/btop/btop.conf b/home/terminal/btop/btop.conf new file mode 100644 index 0000000..690f68e --- /dev/null +++ b/home/terminal/btop/btop.conf @@ -0,0 +1,257 @@ +#? Config file for btop v. 1.4.5 + +#* Name of a btop++/bpytop/bashtop formatted ".theme" file, "Default" and "TTY" for builtin themes. +#* Themes should be placed in "../share/btop/themes" relative to binary or "$HOME/.config/btop/themes" +color_theme = "catppuccin_mocha.theme" + +#* If the theme set background should be shown, set to False if you want terminal background transparency. +theme_background = True + +#* Sets if 24-bit truecolor should be used, will convert 24-bit colors to 256 color (6x6x6 color cube) if false. +truecolor = True + +#* Set to true to force tty mode regardless if a real tty has been detected or not. +#* Will force 16-color mode and TTY theme, set all graph symbols to "tty" and swap out other non tty friendly symbols. +force_tty = False + +#* Define presets for the layout of the boxes. Preset 0 is always all boxes shown with default settings. Max 9 presets. +#* Format: "box_name:P:G,box_name:P:G" P=(0 or 1) for alternate positions, G=graph symbol to use for box. +#* Use whitespace " " as separator between different presets. +#* Example: "cpu:0:default,mem:0:tty,proc:1:default cpu:0:braille,proc:0:tty" +presets = "cpu:1:default,proc:0:default cpu:0:default,mem:0:default,net:0:default cpu:0:block,net:0:tty" + +#* Set to True to enable "h,j,k,l,g,G" keys for directional control in lists. +#* Conflicting keys for h:"help" and k:"kill" is accessible while holding shift. +vim_keys = False + +#* Rounded corners on boxes, is ignored if TTY mode is ON. +rounded_corners = True + +#* Default symbols to use for graph creation, "braille", "block" or "tty". +#* "braille" offers the highest resolution but might not be included in all fonts. +#* "block" has half the resolution of braille but uses more common characters. +#* "tty" uses only 3 different symbols but will work with most fonts and should work in a real TTY. +#* Note that "tty" only has half the horizontal resolution of the other two, so will show a shorter historical view. +graph_symbol = "braille" + +# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty". +graph_symbol_cpu = "default" + +# Graph symbol to use for graphs in gpu box, "default", "braille", "block" or "tty". +graph_symbol_gpu = "default" + +# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty". +graph_symbol_mem = "default" + +# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty". +graph_symbol_net = "default" + +# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty". +graph_symbol_proc = "default" + +#* Manually set which boxes to show. Available values are "cpu mem net proc" and "gpu0" through "gpu5", separate values with whitespace. +shown_boxes = "cpu mem net proc" + +#* Update time in milliseconds, recommended 2000 ms or above for better sample times for graphs. +update_ms = 2000 + +#* Processes sorting, "pid" "program" "arguments" "threads" "user" "memory" "cpu lazy" "cpu direct", +#* "cpu lazy" sorts top process over time (easier to follow), "cpu direct" updates top process directly. +proc_sorting = "cpu lazy" + +#* Reverse sorting order, True or False. +proc_reversed = False + +#* Show processes as a tree. +proc_tree = False + +#* Use the cpu graph colors in the process list. +proc_colors = True + +#* Use a darkening gradient in the process list. +proc_gradient = True + +#* If process cpu usage should be of the core it's running on or usage of the total available cpu power. +proc_per_core = False + +#* Show process memory as bytes instead of percent. +proc_mem_bytes = True + +#* Show cpu graph for each process. +proc_cpu_graphs = True + +#* Use /proc/[pid]/smaps for memory information in the process info box (very slow but more accurate) +proc_info_smaps = False + +#* Show proc box on left side of screen instead of right. +proc_left = False + +#* (Linux) Filter processes tied to the Linux kernel(similar behavior to htop). +proc_filter_kernel = False + +#* In tree-view, always accumulate child process resources in the parent process. +proc_aggregate = False + +#* Sets the CPU stat shown in upper half of the CPU graph, "total" is always available. +#* Select from a list of detected attributes from the options menu. +cpu_graph_upper = "Auto" + +#* Sets the CPU stat shown in lower half of the CPU graph, "total" is always available. +#* Select from a list of detected attributes from the options menu. +cpu_graph_lower = "Auto" + +#* If gpu info should be shown in the cpu box. Available values = "Auto", "On" and "Off". +show_gpu_info = "Auto" + +#* Toggles if the lower CPU graph should be inverted. +cpu_invert_lower = True + +#* Set to True to completely disable the lower CPU graph. +cpu_single_graph = False + +#* Show cpu box at bottom of screen instead of top. +cpu_bottom = False + +#* Shows the system uptime in the CPU box. +show_uptime = True + +#* Shows the CPU package current power consumption in watts. Requires running `make setcap` or `make setuid` or running with sudo. +show_cpu_watts = True + +#* Show cpu temperature. +check_temp = True + +#* Which sensor to use for cpu temperature, use options menu to select from list of available sensors. +cpu_sensor = "Auto" + +#* Show temperatures for cpu cores also if check_temp is True and sensors has been found. +show_coretemp = True + +#* Set a custom mapping between core and coretemp, can be needed on certain cpus to get correct temperature for correct core. +#* Use lm-sensors or similar to see which cores are reporting temperatures on your machine. +#* Format "x:y" x=core with wrong temp, y=core with correct temp, use space as separator between multiple entries. +#* Example: "4:0 5:1 6:3" +cpu_core_map = "" + +#* Which temperature scale to use, available values: "celsius", "fahrenheit", "kelvin" and "rankine". +temp_scale = "celsius" + +#* Use base 10 for bits/bytes sizes, KB = 1000 instead of KiB = 1024. +base_10_sizes = True + +#* Show CPU frequency. +show_cpu_freq = True + +#* Draw a clock at top of screen, formatting according to strftime, empty string to disable. +#* Special formatting: /host = hostname | /user = username | /uptime = system uptime +clock_format = "%X" + +#* Update main ui in background when menus are showing, set this to false if the menus is flickering too much for comfort. +background_update = True + +#* Custom cpu model name, empty string to disable. +custom_cpu_name = "" + +#* Optional filter for shown disks, should be full path of a mountpoint, separate multiple values with whitespace " ". +#* Only disks matching the filter will be shown. Prepend exclude= to only show disks not matching the filter. Examples: disk_filter="/boot /home/user", disks_filter="exclude=/boot /home/user" +disks_filter = "" + +#* Show graphs instead of meters for memory values. +mem_graphs = True + +#* Show mem box below net box instead of above. +mem_below_net = False + +#* Count ZFS ARC in cached and available memory. +zfs_arc_cached = True + +#* If swap memory should be shown in memory box. +show_swap = True + +#* Show swap as a disk, ignores show_swap value above, inserts itself after first disk. +swap_disk = True + +#* If mem box should be split to also show disks info. +show_disks = True + +#* Filter out non physical disks. Set this to False to include network disks, RAM disks and similar. +only_physical = True + +#* Read disks list from /etc/fstab. This also disables only_physical. +use_fstab = True + +#* Setting this to True will hide all datasets, and only show ZFS pools. (IO stats will be calculated per-pool) +zfs_hide_datasets = False + +#* Set to true to show available disk space for privileged users. +disk_free_priv = False + +#* Toggles if io activity % (disk busy time) should be shown in regular disk usage view. +show_io_stat = True + +#* Toggles io mode for disks, showing big graphs for disk read/write speeds. +io_mode = False + +#* Set to True to show combined read/write io graphs in io mode. +io_graph_combined = False + +#* Set the top speed for the io graphs in MiB/s (100 by default), use format "mountpoint:speed" separate disks with whitespace " ". +#* Example: "/mnt/media:100 /:20 /boot:1". +io_graph_speeds = "" + +#* Set fixed values for network graphs in Mebibits. Is only used if net_auto is also set to False. +net_download = 100 + +net_upload = 100 + +#* Use network graphs auto rescaling mode, ignores any values set above and rescales down to 10 Kibibytes at the lowest. +net_auto = True + +#* Sync the auto scaling for download and upload to whichever currently has the highest scale. +net_sync = True + +#* Starts with the Network Interface specified here. +net_iface = "" + +#* "True" shows bitrates in base 10 (Kbps, Mbps). "False" shows bitrates in binary sizes (Kibps, Mibps, etc.). "Auto" uses base_10_sizes. +base_10_bitrate = "Auto" + +#* Show battery stats in top right if battery is present. +show_battery = True + +#* Which battery to use if multiple are present. "Auto" for auto detection. +selected_battery = "Auto" + +#* Show power stats of battery next to charge indicator. +show_battery_watts = True + +#* Set loglevel for "~/.config/btop/btop.log" levels are: "ERROR" "WARNING" "INFO" "DEBUG". +#* The level set includes all lower levels, i.e. "DEBUG" will show all logging info. +log_level = "WARNING" + +#* Measure PCIe throughput on NVIDIA cards, may impact performance on certain cards. +nvml_measure_pcie_speeds = True + +#* Measure PCIe throughput on AMD cards, may impact performance on certain cards. +rsmi_measure_pcie_speeds = True + +#* Horizontally mirror the GPU graph. +gpu_mirror_graph = True + +#* Custom gpu0 model name, empty string to disable. +custom_gpu_name0 = "" + +#* Custom gpu1 model name, empty string to disable. +custom_gpu_name1 = "" + +#* Custom gpu2 model name, empty string to disable. +custom_gpu_name2 = "" + +#* Custom gpu3 model name, empty string to disable. +custom_gpu_name3 = "" + +#* Custom gpu4 model name, empty string to disable. +custom_gpu_name4 = "" + +#* Custom gpu5 model name, empty string to disable. +custom_gpu_name5 = "" diff --git a/home/terminal/btop/default.nix b/home/terminal/btop/default.nix new file mode 100644 index 0000000..edd50f9 --- /dev/null +++ b/home/terminal/btop/default.nix @@ -0,0 +1,25 @@ +{ config, pkgs, ... }: + +let + catppuccin-btop = pkgs.fetchFromGitHub { + owner = "catppuccin"; + repo = "btop"; + rev = "f437574b600f1c6d932627050b15ff5153b58fa3"; + sha256 = "sha256-mEGZwScVPWGu+Vbtddc/sJ+mNdD2kKienGZVUcTSl+c="; + }; + + mergedConfig = pkgs.runCommand "mergedConfig" { } '' + mkdir -p $out/themes + cp ${./btop.conf} $out/btop.conf + cp ${catppuccin-btop}/themes/catppuccin_latte.theme $out/themes/ + cp ${catppuccin-btop}/themes/catppuccin_frappe.theme $out/themes/ + cp ${catppuccin-btop}/themes/catppuccin_macchiato.theme $out/themes/ + cp ${catppuccin-btop}/themes/catppuccin_mocha.theme $out/themes/ + ''; +in +{ + home.file.".config/btop" = { + source = mergedConfig; + recursive = true; + }; +} diff --git a/home/terminal/kitty/default.nix b/home/terminal/kitty/default.nix index 0b54eb3..af85caa 100644 --- a/home/terminal/kitty/default.nix +++ b/home/terminal/kitty/default.nix @@ -10,6 +10,13 @@ shellIntegration = { enableFishIntegration = true; }; - extraConfig = "\nwheel_scroll_multiplier 5.0"; + # extraConfig = "\nwheel_scroll_multiplier 5.0\nconfirm_os_window_close 0"; + settings = { + scrollback_lines = 10000; + enable_audio_bell = false; + update_check_interval = 0; + wheel_scroll_multiplier = 5.0; + confirm_os_window_close = 0; + }; }; } diff --git a/system/all.nix b/system/all.nix index 7fe8dba..0b65f49 100755 --- a/system/all.nix +++ b/system/all.nix @@ -28,6 +28,7 @@ ../home/all.nix ../home/browsers/firefox/default.nix ../home/systemd/default.nix + ../home/terminal/btop/default.nix ../home/terminal/nvim/default.nix ../home/terminal/kitty/default.nix ../home/kde/plasma.nix @@ -69,6 +70,7 @@ catppuccin = { enable = true; flavor = "mocha"; + cache.enable = true; }; networking.networkmanager.enable = true; From 8b3d7c36534974ce6160d63b0f073a8054c9e8f7 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Thu, 13 Nov 2025 22:32:16 -0500 Subject: [PATCH 048/282] update kitty --- home/terminal/kitty/default.nix | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/home/terminal/kitty/default.nix b/home/terminal/kitty/default.nix index af85caa..10e05d8 100644 --- a/home/terminal/kitty/default.nix +++ b/home/terminal/kitty/default.nix @@ -17,6 +17,10 @@ update_check_interval = 0; wheel_scroll_multiplier = 5.0; confirm_os_window_close = 0; + tab_bar_min_tabs = 2; + tab_bar_edge = "top"; + tab_bar_style = "powerline"; + tab_powerline_style = "slanted"; }; }; } From a3667f6f66da0a7a2bbec13a30baa2314a16e94d Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Thu, 13 Nov 2025 22:28:35 -0500 Subject: [PATCH 049/282] fix and update rclone --- flake.nix | 1 + home/systemd/default.nix | 37 ++++++++++++++++++++++++++++-------- system/tailscale/default.nix | 30 +++++++++++++++++++++++++++++ 3 files changed, 60 insertions(+), 8 deletions(-) create mode 100644 system/tailscale/default.nix diff --git a/flake.nix b/flake.nix index 67bc88b..0f82102 100644 --- a/flake.nix +++ b/flake.nix @@ -76,6 +76,7 @@ ./system/all.nix ./system/browsers/firefox.nix ./system/shell/fish.nix + ./system/tailscale/default.nix ./system/hosts/${hostname}/default.nix ./hardware/${hostname}.nix catppuccin.nixosModules.catppuccin diff --git a/home/systemd/default.nix b/home/systemd/default.nix index 7d3da44..9ea39e4 100644 --- a/home/systemd/default.nix +++ b/home/systemd/default.nix @@ -1,4 +1,4 @@ -{ pkgs, ... }: +{ pkgs, lib, ... }: { xdg.configFile."rclone/synology.conf".text = '' @@ -7,22 +7,43 @@ user = sckova host = nas.taila30609.ts.net key_file = ~/.ssh/key + shell_type = unix + root = home + md5sum_command = "${pkgs.coreutils}/bin/md5sum"; + sha1sum_command = "${pkgs.coreutils}/bin/sha1sum"; ''; systemd.user.services.synology-mount = { Unit = { Description = "Mount Synology NAS with Rclone and Home Manager."; - After = [ "network-online.target" ]; - StartLimitIntervalSec = 30; - StartLimitBurst = 3; + After = [ "tailscaled.service" ]; }; Service = { Type = "notify"; - ExecStartPre = "${pkgs.coreutils}/bin/mkdir -p %h/Synology"; - ExecStart = "${pkgs.rclone}/bin/rclone --config=%h/.config/rclone/synology.conf --vfs-cache-mode full --ignore-checksum mount \"synology:\" \"%h/Synology\""; - ExecStop = "/run/wrappers/bin/fusermount -u %h/Synology/%i"; - Restart = "on-failure"; + ExecStartPre = '' + if mountpoint -q %h/Synology; then + /run/wrappers/bin/fusermount -uz %h/Synology + fi + ${pkgs.coreutils}/bin/mkdir -p %h/Synology + ''; + ExecStart = '' + ${pkgs.rclone}/bin/rclone \ + --config=%h/.config/rclone/synology.conf \ + --vfs-cache-mode full \ + --vfs-cache-max-size 10G \ + --vfs-cache-max-age 12h \ + --vfs-read-chunk-size 128M \ + --vfs-read-chunk-size-limit 2G \ + --buffer-size 64M \ + --dir-cache-time 72h \ + --ignore-checksum \ + --log-level INFO \ + mount "synology:" "%h/Synology" + ''; + ExecStop = "/run/wrappers/bin/fusermount -uz %h/Synology/%i"; + StandardOutput = "journal"; + StandardError = "journal"; }; Install = { diff --git a/system/tailscale/default.nix b/system/tailscale/default.nix new file mode 100644 index 0000000..19011a7 --- /dev/null +++ b/system/tailscale/default.nix @@ -0,0 +1,30 @@ +# https://github.com/tailscale/tailscale/issues/11504#issuecomment-2113331262 +{ + config, + pkgs, + lib, + ... +}: + +let + tailscaleWaitScript = pkgs.writeShellScript "tailscale-wait-for-ip" '' + echo "Waiting for tailscale0 to get an IP address..." + for i in {1..15}; do + if ${lib.getExe' pkgs.iproute2 "ip"} addr show dev tailscale0 2>/dev/null | ${lib.getExe' pkgs.gnugrep "grep"} -q 'inet '; then + echo "tailscale0 has IP address" + exit 0 + fi + echo "Attempt $i" + sleep 1 + done + echo "Warning: tailscale0 did not get IP address within 15 seconds" + exit 0 + ''; +in +{ + systemd.services.tailscaled = { + serviceConfig = { + ExecStartPost = tailscaleWaitScript; + }; + }; +} From 58ca11e242d143849b84a9dac1cb5b49612aa645 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Thu, 13 Nov 2025 23:27:02 -0500 Subject: [PATCH 050/282] add rc and caching for rclone --- home/systemd/default.nix | 76 +++++++++++++++++++++++++++++----------- 1 file changed, 56 insertions(+), 20 deletions(-) diff --git a/home/systemd/default.nix b/home/systemd/default.nix index 9ea39e4..4c12a74 100644 --- a/home/systemd/default.nix +++ b/home/systemd/default.nix @@ -17,30 +17,42 @@ Unit = { Description = "Mount Synology NAS with Rclone and Home Manager."; After = [ "tailscaled.service" ]; + Wants = [ "tailscaled.service" ]; }; Service = { - Type = "notify"; - ExecStartPre = '' - if mountpoint -q %h/Synology; then - /run/wrappers/bin/fusermount -uz %h/Synology - fi - ${pkgs.coreutils}/bin/mkdir -p %h/Synology - ''; - ExecStart = '' + Type = "simple"; + # ExecStartPre = "${pkgs.writeShellScript "synology-prep" '' + # if mountpoint -q %h/Synology; then + # /run/wrappers/bin/fusermount -uz %h/Synology + # fi + # ${pkgs.coreutils}/bin/mkdir -p %h/Synology + # ''}"; + ExecStart = "${pkgs.writeShellScript "synology-mount" '' + #!/usr/bin/env bash + set -euo pipefail + + # Ensure mount point exists + mkdir -p $HOME/Synology || true + + # Unmount stale mount if present + /run/wrappers/bin/umount "$HOME/Synology" || true + + # Mount rclone in foreground ${pkgs.rclone}/bin/rclone \ - --config=%h/.config/rclone/synology.conf \ - --vfs-cache-mode full \ - --vfs-cache-max-size 10G \ - --vfs-cache-max-age 12h \ - --vfs-read-chunk-size 128M \ - --vfs-read-chunk-size-limit 2G \ - --buffer-size 64M \ - --dir-cache-time 72h \ - --ignore-checksum \ - --log-level INFO \ - mount "synology:" "%h/Synology" - ''; + --config=$HOME/.config/rclone/synology.conf \ + --vfs-cache-mode full \ + --vfs-cache-max-size 10G \ + --vfs-cache-max-age 12h \ + --vfs-read-chunk-size 128M \ + --vfs-read-chunk-size-limit 2G \ + --buffer-size 64M \ + --dir-cache-time 72h \ + --ignore-checksum \ + --log-level INFO \ + --rc --rc-serve \ + mount "synology:" "$HOME/Synology" + ''}"; ExecStop = "/run/wrappers/bin/fusermount -uz %h/Synology/%i"; StandardOutput = "journal"; StandardError = "journal"; @@ -51,6 +63,30 @@ }; }; + systemd.user.services.synology-prefill = { + Unit = { + Description = "Prefill Synology NAS rclone cache"; + After = [ "synology-mount.service" ]; + Wants = [ "synology-mount.service" ]; + }; + + Service = { + Type = "simple"; + ExecStart = "${pkgs.writeShellScript "synology-prefill" '' + #!/usr/bin/env bash + set -euo pipefail + ${pkgs.rclone}/bin/rclone rc vfs/refresh -v --fast-list recursive=true >/dev/null + ''}"; + StandardOutput = "journal"; + StandardError = "journal"; + Restart = "on-failure"; + }; + + Install = { + WantedBy = [ "default.target" ]; + }; + }; + systemd.user.services.input-leap = { Unit = { Description = "Autostart Input Leap"; From 9d26ff59ef0bed4aef830577f24f75c6b1b48122 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Fri, 14 Nov 2025 08:53:43 -0500 Subject: [PATCH 051/282] fix firmware directory --- .gitignore | 2 +- system/hosts/peach/default.nix | 9 ++++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 0b19abb..ee69262 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1 @@ -#firmware +system/hosts/peach/firmware/* diff --git a/system/hosts/peach/default.nix b/system/hosts/peach/default.nix index b653d1f..069c05e 100644 --- a/system/hosts/peach/default.nix +++ b/system/hosts/peach/default.nix @@ -20,7 +20,14 @@ # extractPeripheralFirmware = false; # This is broken because of flake git tracking. # I can't figure out how to make it work. - peripheralFirmwareDirectory = ./firmware; + peripheralFirmwareDirectory = pkgs.requireFile { + name = "firmware"; + hashMode = "recursive"; + hash = "sha256-lw8tJHRUSBwqu82ys4rZIYH0sEb+dDjQkXg1wt1afZI="; + message = '' + nix-store --add-fixed sha256 --recursive ./firmware + ''; + }; }; swapDevices = [ From 11737ce55e60987ee359cb297b9c38c9112a6f79 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Fri, 14 Nov 2025 09:47:05 -0500 Subject: [PATCH 052/282] add virtualization --- system/all.nix | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/system/all.nix b/system/all.nix index 0b65f49..e9830ba 100755 --- a/system/all.nix +++ b/system/all.nix @@ -118,12 +118,22 @@ pulse.enable = true; }; + virtualisation = { + containers.enable = true; + podman = { + enable = true; + dockerCompat = true; + defaultNetwork.settings.dns_enabled = true; # Required for containers under podman-compose to be able to talk to each other. + }; + }; + users.users.sckova = { isNormalUser = true; description = "Sean Kovacs"; extraGroups = [ - "networkmanager" "wheel" + "networkmanager" + "podman" ]; packages = with pkgs; [ ]; hashedPassword = "$6$bvwRUFaJNMpH8rm3$FGDWFN6tBScJ/2DynAjnlZE8JRfyADN78d6c4GawxpAjyNLNE/AjQzMA09tLRqpKX7WnN5PIUZLAm2bT9/RbG0"; @@ -136,6 +146,7 @@ git inputs.kwin-effects-forceblur.packages.${pkgs.stdenv.hostPlatform.system}.default firefoxpwa + distrobox ]; sessionVariables = { NIXOS_OZONE_WL = "1"; From a6ba6d56af1f7e170ad8e147926c7544420eebe8 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Mon, 17 Nov 2025 10:09:56 -0500 Subject: [PATCH 053/282] update helium --- home/kde/plasma.nix | 16 ++++++++++++++++ packages/helium-browser/package.nix | 6 +++--- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/home/kde/plasma.nix b/home/kde/plasma.nix index 4e73723..14cbcef 100644 --- a/home/kde/plasma.nix +++ b/home/kde/plasma.nix @@ -94,6 +94,22 @@ }; }; } + { + description = "Steam (Distrobox)"; + match = { + window-class = { + value = "steamwebhelper"; + type = "substring"; + }; + window-types = [ "normal" ]; + }; + apply = { + desktopfile = { + value = "distrobox-steam"; + apply = "force"; + }; + }; + } ]; kwin = { diff --git a/packages/helium-browser/package.nix b/packages/helium-browser/package.nix index bccdab5..663fe20 100644 --- a/packages/helium-browser/package.nix +++ b/packages/helium-browser/package.nix @@ -31,11 +31,11 @@ let architectures = { "x86_64-linux" = { arch = "x86_64"; - hash = "sha256-9xEVnGym579rR6RunS4HWYV3nLk1ODEIGfg8PtNDSUk="; + hash = "sha256-hpb1mXaMJ2XTNxr49tGzmTopwuBUut1OldJsQkU8+1k="; }; "aarch64-linux" = { arch = "arm64"; - hash = "sha256-S5kF+K2Kwhqa0GG691NvnU/2frUCWL9BKrVK7y3bzSE="; + hash = "sha256-xR4Zy7O2srLwAu+E7gcwK/dPlL3VC2ptYn1/FVGQw2c="; }; }; @@ -46,7 +46,7 @@ let in stdenv.mkDerivation rec { pname = "helium-browser"; - version = "0.6.4.1"; + version = "0.6.5.1"; xzName = "helium-${version}-${platformInfo.arch}_linux"; src = fetchurl { From 0c3f0a7c71739d0ca6f1cc57731825665c88a727 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Tue, 18 Nov 2025 11:03:56 -0500 Subject: [PATCH 054/282] wip: add vscode --- home/all.nix | 1 + home/vscode/default.nix | 27 +++++++++++++++++++++++++++ system/all.nix | 1 + 3 files changed, 29 insertions(+) create mode 100644 home/vscode/default.nix diff --git a/home/all.nix b/home/all.nix index 6a68576..9ddcaeb 100755 --- a/home/all.nix +++ b/home/all.nix @@ -51,6 +51,7 @@ enable = true; cursors.enable = true; cache.enable = true; + vscode.enable = false; }; # This value determines the Home Manager release that your diff --git a/home/vscode/default.nix b/home/vscode/default.nix new file mode 100644 index 0000000..1ae62ae --- /dev/null +++ b/home/vscode/default.nix @@ -0,0 +1,27 @@ +{ pkgs, ... }: +{ + programs.vscode = { + enable = true; + profiles.default = { + enableExtensionUpdateCheck = true; + enableMcpIntegration = true; + enableUpdateCheck = true; + extensions = with pkgs.vscode-extensions; [ + ]; + userSettings = { + "workbench.colorTheme" = "Catppuccin Alt Mocha"; + "window.menuBarVisibility" = "compact"; + "workbench.navigationControl.enabled" = false; + "window.commandCenter" = false; + "chat.commandCenter.enabled" = false; + "workbench.layoutControl.enabled" = false; + "window.titleBarStyle" = "native"; + "editor.minimap.enabled" = false; + "chat.mcp.gallery.enabled" = true; + + "editor.semanticHighlighting.enabled" = true; + "workbench.iconTheme" = "catppuccin-mocha"; + }; + }; + }; +} diff --git a/system/all.nix b/system/all.nix index e9830ba..380c749 100755 --- a/system/all.nix +++ b/system/all.nix @@ -33,6 +33,7 @@ ../home/terminal/kitty/default.nix ../home/kde/plasma.nix ../home/kde/other.nix + ../home/vscode/default.nix ../home/hosts/${config.networking.hostName}.nix ]; }; From d6fad0278cd1971084679877e1e6eb7f7b3c87b8 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Tue, 18 Nov 2025 11:16:01 -0500 Subject: [PATCH 055/282] update flake.lock --- flake.lock | 42 +++++++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/flake.lock b/flake.lock index 67ce214..1eba38a 100644 --- a/flake.lock +++ b/flake.lock @@ -8,11 +8,11 @@ ] }, "locked": { - "lastModified": 1762706659, - "narHash": "sha256-i7w+rZ6r03BxhxotAuyXBHpngZNEhf+s0CpDRaz/qCo=", + "lastModified": 1763329080, + "narHash": "sha256-S6eZaiRZPvSWv9d2kZO+HrYTelWqn++vsC/bUwOSQ7I=", "owner": "nix-community", "repo": "nixos-apple-silicon", - "rev": "58083d06711fb6c15bee6cc9468ffc341763bfdc", + "rev": "bc52b0623f4367447347cbcc88522ec64486d710", "type": "github" }, "original": { @@ -28,11 +28,11 @@ ] }, "locked": { - "lastModified": 1762510976, - "narHash": "sha256-KGoSj8qMOOPaNE48RTtuNBbqOvKLTeklnRHWWvE/TXo=", + "lastModified": 1763110997, + "narHash": "sha256-S2vF+3D/9vna3/vBV7LHiGUbp+ltPsQhvccIyim6VQg=", "owner": "catppuccin", "repo": "nix", - "rev": "728cb0a667ce37bb0c68557dba819c7fb54ff1c8", + "rev": "e6928cdd3dd20636326c2756d2bc8fd1cd825768", "type": "github" }, "original": { @@ -64,11 +64,11 @@ ] }, "locked": { - "lastModified": 1762810396, - "narHash": "sha256-dxFVgQPG+R72dkhXTtqUm7KpxElw3u6E+YlQ2WaDgt8=", + "lastModified": 1762980239, + "narHash": "sha256-8oNVE8TrD19ulHinjaqONf9QWCKK+w4url56cdStMpM=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "0bdadb1b265fb4143a75bd1ec7d8c915898a9923", + "rev": "52a2caecc898d0b46b2b905f058ccc5081f842da", "type": "github" }, "original": { @@ -123,11 +123,11 @@ ] }, "locked": { - "lastModified": 1762964643, - "narHash": "sha256-RYHN8O/Aja59XDji6WSJZPkJpYVUfpSkyH+PEupBJqM=", + "lastModified": 1763416652, + "narHash": "sha256-8EBEEvtzQ11LCxpQHMNEBQAGtQiCu/pqP9zSovDSbNM=", "owner": "nix-community", "repo": "home-manager", - "rev": "827f2a23373a774a8805f84ca5344654c31f354b", + "rev": "ea164b7c9ccdc2321379c2ff78fd4317b4c41312", "type": "github" }, "original": { @@ -187,11 +187,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1762844143, - "narHash": "sha256-SlybxLZ1/e4T2lb1czEtWVzDCVSTvk9WLwGhmxFmBxI=", + "lastModified": 1763283776, + "narHash": "sha256-Y7TDFPK4GlqrKrivOcsHG8xSGqQx3A6c+i7novT85Uk=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "9da7f1cf7f8a6e2a7cb3001b048546c92a8258b4", + "rev": "50a96edd8d0db6cc8db57dab6bb6d6ee1f3dc49a", "type": "github" }, "original": { @@ -211,11 +211,11 @@ "systems": "systems_3" }, "locked": { - "lastModified": 1762904125, - "narHash": "sha256-+T9oUulnXOQmy37GGOivHSvEyViA4gQ41mFZEPEDuOA=", + "lastModified": 1763393971, + "narHash": "sha256-FhgZD8pk3VE2SL0g4nCYKF0L6IO3uL110tfrBaZkdG0=", "owner": "nix-community", "repo": "nixvim", - "rev": "84902b354fd0f122c40880b90dc8ac89d4d0daea", + "rev": "7a30e6cf259d8db84aefc626058c074bd995d482", "type": "github" }, "original": { @@ -232,11 +232,11 @@ ] }, "locked": { - "lastModified": 1763063076, - "narHash": "sha256-LaYplAhvEbviMKleNGnQ7h39J9DnZWmsV6tbXQkT+Ms=", + "lastModified": 1763481078, + "narHash": "sha256-AKAi5WqJRVD6Z9OD4kG6XB/+iIvmcC4L9Y/aFUKLTxc=", "owner": "nix-community", "repo": "NUR", - "rev": "303141f1256871301cb9809d68d21e8f86022511", + "rev": "7760ec7593699c7bd59cc04932b83457918fb5bb", "type": "github" }, "original": { From d3cb9bccc6aca9cd9fca451dd95f1ceaed14dd30 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Tue, 18 Nov 2025 11:43:15 -0500 Subject: [PATCH 056/282] update strawberry and lock its commit --- packages/strawberry/package.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/strawberry/package.nix b/packages/strawberry/package.nix index affb712..ec1b476 100644 --- a/packages/strawberry/package.nix +++ b/packages/strawberry/package.nix @@ -43,8 +43,8 @@ stdenv.mkDerivation (finalAttrs: { src = fetchFromGitHub { owner = "jonaski"; repo = "strawberry"; - rev = "master"; - hash = "sha256-A5eEXpRKZDwfmmXs+6V1qUerEma4AdncuVXohgh3z4E="; + rev = "02d76f17f7f4a862019c360d4f8f61dbb0978208"; + hash = "sha256-/3dQbxwR09hriHZzrwUd0d4VYRBGMOtNDUyOWNmmKGk="; }; # the big strawberry shown in the context menu is *very* much in your face, so use the grey version instead From 5cae12f76f0b019095c7952aefd124154f8d5a0c Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Tue, 18 Nov 2025 16:53:32 -0500 Subject: [PATCH 057/282] add binfmt emulation --- system/hosts/alien/default.nix | 5 +++++ system/hosts/peach/default.nix | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/system/hosts/alien/default.nix b/system/hosts/alien/default.nix index 6080b28..3254649 100644 --- a/system/hosts/alien/default.nix +++ b/system/hosts/alien/default.nix @@ -8,6 +8,11 @@ { networking.hostName = "alien"; + boot.binfmt.emulatedSystems = [ + "aarch64-linux" + "riscv64-linux" + ]; + catppuccin.accent = "blue"; home-manager.users.sckova = { diff --git a/system/hosts/peach/default.nix b/system/hosts/peach/default.nix index 069c05e..806d871 100644 --- a/system/hosts/peach/default.nix +++ b/system/hosts/peach/default.nix @@ -8,6 +8,11 @@ { networking.hostName = "peach"; + boot.binfmt.emulatedSystems = [ + "x86_64-linux" + "riscv64-linux" + ]; + catppuccin.accent = "peach"; home-manager.users.sckova = { From 8240479389a4699a96bcc8656c752e9a95383825 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Wed, 19 Nov 2025 13:51:39 -0500 Subject: [PATCH 058/282] wip: aarch64 widevine for helium --- packages/helium-browser/package.nix | 5 +++++ .../helium-browser/widevine-aarch64-linux.nix | 10 +++++----- packages/overlay.nix | 19 ++++++++++++++++++- 3 files changed, 28 insertions(+), 6 deletions(-) diff --git a/packages/helium-browser/package.nix b/packages/helium-browser/package.nix index 663fe20..3053a6a 100644 --- a/packages/helium-browser/package.nix +++ b/packages/helium-browser/package.nix @@ -7,6 +7,8 @@ autoPatchelfHook, makeWrapper, + helium-widevine, + # runtime dependencies xorg, libGL, @@ -104,6 +106,9 @@ stdenv.mkDerivation rec { cp -r ${xzName}/* $out/opt/helium/ chmod +x $out/opt/helium/chrome-wrapper $out/opt/helium/chrome + + cp -r ${helium-widevine}/share/helium/WidevineCdm $out/opt/helium/ + makeWrapper $out/opt/helium/chrome-wrapper $out/bin/helium-browser \ --chdir $out/opt/helium \ --prefix XDG_DATA_DIRS : "$GSETTINGS_SCHEMAS_PATH:${gsettings-desktop-schemas}/share/gsettings-schemas/${gsettings-desktop-schemas.name}" \ diff --git a/packages/helium-browser/widevine-aarch64-linux.nix b/packages/helium-browser/widevine-aarch64-linux.nix index 94173c0..1ac999b 100644 --- a/packages/helium-browser/widevine-aarch64-linux.nix +++ b/packages/helium-browser/widevine-aarch64-linux.nix @@ -8,7 +8,7 @@ }: stdenv.mkDerivation (finalAttrs: { - pname = "widevine-helium"; + pname = "helium-widevine"; version = "${finalAttrs.lacrosVersion}-${builtins.substring 0 7 finalAttrs.widevineInstaller.rev}"; lacrosVersion = "120.0.6098.0"; @@ -38,11 +38,11 @@ stdenv.mkDerivation (finalAttrs: { # Accoring to widevine-installer: "Hack because Chromium hardcodes a check for this right now..." postInstall = '' - install -vD manifest.json "$out/share/helium/WidevineCdm/manifest.json" - install -vD LICENSE.txt "$out/share/helium/WidevineCdm/License.txt" + mkdir -p "$out/share/helium/WidevineCdm/_platform_specific/linux_x64" + touch "$out/share/helium/WidevineCdm/_platform_specific/linux_x64/libwidevinecdm.so" + install -vD manifest.json "$out/share/helium/WidevineCdm/manifest.json" + install -vD LICENSE.txt "$out/share/helium/WidevineCdm/License.txt" install -vD libwidevinecdm.so "$out/share/helium/WidevineCdm/_platform_specific/linux_arm64/libwidevinecdm.so" - mkdir -p "$out/share/helium/WidevineCdm/_platform_specific/linux_x64" - touch "$out/share/helium/WidevineCdm/_platform_specific/linux_x64/libwidevinecdm.so" ''; meta = import ./widevine-meta.nix lib; diff --git a/packages/overlay.nix b/packages/overlay.nix index b6d6ceb..9dbb74b 100644 --- a/packages/overlay.nix +++ b/packages/overlay.nix @@ -5,7 +5,24 @@ final: prev: { else null; - helium-browser = prev.callPackage (builtins.path { path = ./helium-browser/package.nix; }) { }; + # helium-browser = + # prev.callPackage + # (builtins.path { + # path = ./helium-browser/package.nix; + # }) + # { + # helium-widevine = prev.callPackage (builtins.path { + # path = ./helium-browser/widevine-aarch64-linux.nix; + # }) { }; + # }; + + helium-browser = + let + helium-widevine = prev.callPackage ./helium-browser/widevine-aarch64-linux.nix { }; + in + prev.callPackage ./helium-browser/package.nix { + inherit helium-widevine; + }; strawberry-master = prev.callPackage (builtins.path { path = ./strawberry/package.nix; From 2fd35967386f780ea7bce9093ee07ba60aac59f7 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Wed, 19 Nov 2025 14:36:10 -0500 Subject: [PATCH 059/282] update vscode --- home/all.nix | 5 ++++- home/terminal/nvim/default.nix | 2 +- home/vscode/default.nix | 36 ++++++++++++++++++++++++++++------ 3 files changed, 35 insertions(+), 8 deletions(-) diff --git a/home/all.nix b/home/all.nix index 9ddcaeb..c01177f 100755 --- a/home/all.nix +++ b/home/all.nix @@ -51,7 +51,10 @@ enable = true; cursors.enable = true; cache.enable = true; - vscode.enable = false; + }; + + home.sessionVariables = { + EDITOR = "code"; }; # This value determines the Home Manager release that your diff --git a/home/terminal/nvim/default.nix b/home/terminal/nvim/default.nix index 515110e..2bdee4e 100644 --- a/home/terminal/nvim/default.nix +++ b/home/terminal/nvim/default.nix @@ -1,7 +1,7 @@ { programs.nixvim = { enable = true; - defaultEditor = true; + # defaultEditor = true; waylandSupport = true; viAlias = true; vimAlias = true; diff --git a/home/vscode/default.nix b/home/vscode/default.nix index 1ae62ae..25a88f7 100644 --- a/home/vscode/default.nix +++ b/home/vscode/default.nix @@ -1,26 +1,50 @@ -{ pkgs, ... }: { + config, + pkgs, + lib, + ... +}: + +let + capitalize = + str: + (lib.toUpper (builtins.substring 0 1 str)) + (builtins.substring 1 (builtins.stringLength str) str); +in +{ + catppuccin.vscode.profiles.default = { + enable = true; + settings = { + workbenchMode = "minimal"; + }; + }; + programs.vscode = { enable = true; profiles.default = { enableExtensionUpdateCheck = true; enableMcpIntegration = true; enableUpdateCheck = true; + # https://search.nixos.org/packages?query=vscode-extensions extensions = with pkgs.vscode-extensions; [ + yzhang.markdown-all-in-one + jnoortheen.nix-ide + esbenp.prettier-vscode ]; userSettings = { - "workbench.colorTheme" = "Catppuccin Alt Mocha"; "window.menuBarVisibility" = "compact"; "workbench.navigationControl.enabled" = false; "window.commandCenter" = false; - "chat.commandCenter.enabled" = false; "workbench.layoutControl.enabled" = false; "window.titleBarStyle" = "native"; "editor.minimap.enabled" = false; - "chat.mcp.gallery.enabled" = true; - "editor.semanticHighlighting.enabled" = true; - "workbench.iconTheme" = "catppuccin-mocha"; + + # Disable AI "features" + ## Chat features + "chat.agent.enabled" = false; + "chat.commandCenter.enabled" = false; + "inlineChat.accessibleDiffView" = "off"; + "terminal.integrated.initialHint" = false; }; }; }; From 2d8c73c33f475d81058369f4079fdaef0157c9ba Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Wed, 19 Nov 2025 20:54:57 -0500 Subject: [PATCH 060/282] update helium --- packages/helium-browser/package.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/helium-browser/package.nix b/packages/helium-browser/package.nix index 3053a6a..14ee7a3 100644 --- a/packages/helium-browser/package.nix +++ b/packages/helium-browser/package.nix @@ -33,11 +33,11 @@ let architectures = { "x86_64-linux" = { arch = "x86_64"; - hash = "sha256-hpb1mXaMJ2XTNxr49tGzmTopwuBUut1OldJsQkU8+1k="; + hash = lib.fakeHash; }; "aarch64-linux" = { arch = "arm64"; - hash = "sha256-xR4Zy7O2srLwAu+E7gcwK/dPlL3VC2ptYn1/FVGQw2c="; + hash = "sha256-SApc3CSrYm6MSRgqtJS7IckUVJuoWeUMUgGxqgKakBg="; }; }; @@ -48,7 +48,7 @@ let in stdenv.mkDerivation rec { pname = "helium-browser"; - version = "0.6.5.1"; + version = "0.6.7.1"; xzName = "helium-${version}-${platformInfo.arch}_linux"; src = fetchurl { From 813def4ac392522d21dec2d9f4028060a96d519a Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Fri, 21 Nov 2025 09:48:07 -0500 Subject: [PATCH 061/282] update systemd --- home/systemd/default.nix | 49 +++++++++++++++++----------------------- 1 file changed, 21 insertions(+), 28 deletions(-) diff --git a/home/systemd/default.nix b/home/systemd/default.nix index 4c12a74..cd14fbf 100644 --- a/home/systemd/default.nix +++ b/home/systemd/default.nix @@ -41,13 +41,6 @@ # Mount rclone in foreground ${pkgs.rclone}/bin/rclone \ --config=$HOME/.config/rclone/synology.conf \ - --vfs-cache-mode full \ - --vfs-cache-max-size 10G \ - --vfs-cache-max-age 12h \ - --vfs-read-chunk-size 128M \ - --vfs-read-chunk-size-limit 2G \ - --buffer-size 64M \ - --dir-cache-time 72h \ --ignore-checksum \ --log-level INFO \ --rc --rc-serve \ @@ -63,29 +56,29 @@ }; }; - systemd.user.services.synology-prefill = { - Unit = { - Description = "Prefill Synology NAS rclone cache"; - After = [ "synology-mount.service" ]; - Wants = [ "synology-mount.service" ]; - }; + # systemd.user.services.synology-prefill = { + # Unit = { + # Description = "Prefill Synology NAS rclone cache"; + # After = [ "synology-mount.service" ]; + # Wants = [ "synology-mount.service" ]; + # }; - Service = { - Type = "simple"; - ExecStart = "${pkgs.writeShellScript "synology-prefill" '' - #!/usr/bin/env bash - set -euo pipefail - ${pkgs.rclone}/bin/rclone rc vfs/refresh -v --fast-list recursive=true >/dev/null - ''}"; - StandardOutput = "journal"; - StandardError = "journal"; - Restart = "on-failure"; - }; + # Service = { + # Type = "simple"; + # ExecStart = "${pkgs.writeShellScript "synology-prefill" '' + # #!/usr/bin/env bash + # set -euo pipefail + # ${pkgs.rclone}/bin/rclone rc vfs/refresh -v --fast-list recursive=true >/dev/null + # ''}"; + # StandardOutput = "journal"; + # StandardError = "journal"; + # Restart = "on-failure"; + # }; - Install = { - WantedBy = [ "default.target" ]; - }; - }; + # Install = { + # WantedBy = [ "default.target" ]; + # }; + # }; systemd.user.services.input-leap = { Unit = { From 4fecda7850f9a7e4cd978f292a37d6e290ee0783 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Fri, 21 Nov 2025 09:49:32 -0500 Subject: [PATCH 062/282] changes --- home/all.nix | 6 ++---- home/vscode/default.nix | 4 ++++ system/all.nix | 8 +++++--- system/shell/fish.nix | 1 + 4 files changed, 12 insertions(+), 7 deletions(-) diff --git a/home/all.nix b/home/all.nix index c01177f..96a0ab6 100755 --- a/home/all.nix +++ b/home/all.nix @@ -30,6 +30,8 @@ deno prettier prettierd + musescore + mpv kde-rounded-corners kdePackages.partitionmanager @@ -53,10 +55,6 @@ cache.enable = true; }; - home.sessionVariables = { - EDITOR = "code"; - }; - # This value determines the Home Manager release that your # configuration is compatible with. This helps avoid breakage # when a new Home Manager release introduces backwards diff --git a/home/vscode/default.nix b/home/vscode/default.nix index 25a88f7..129d86a 100644 --- a/home/vscode/default.nix +++ b/home/vscode/default.nix @@ -11,6 +11,10 @@ let (lib.toUpper (builtins.substring 0 1 str)) + (builtins.substring 1 (builtins.stringLength str) str); in { + home.sessionVariables = { + EDITOR = "code"; + }; + catppuccin.vscode.profiles.default = { enable = true; settings = { diff --git a/system/all.nix b/system/all.nix index 380c749..49ed377 100755 --- a/system/all.nix +++ b/system/all.nix @@ -38,6 +38,11 @@ ]; }; + environment.sessionVariables = rec { + NIXOS_OZONE_WL = "1"; + EDITOR = "nvim"; + }; + boot = { plymouth = { @@ -149,9 +154,6 @@ firefoxpwa distrobox ]; - sessionVariables = { - NIXOS_OZONE_WL = "1"; - }; }; programs.gnupg.agent = { diff --git a/system/shell/fish.nix b/system/shell/fish.nix index 5cb36f2..53b4d74 100644 --- a/system/shell/fish.nix +++ b/system/shell/fish.nix @@ -15,6 +15,7 @@ enable = true; interactiveShellInit = '' set fish_greeting # Disable greeting + alias edit "nvim" ''; }; } From 45e7ac9ea7aa4fec2d26168c8fd9125efbb4a832 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Fri, 21 Nov 2025 10:36:34 -0500 Subject: [PATCH 063/282] update flake.lock --- flake.lock | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/flake.lock b/flake.lock index 1eba38a..35bf6e9 100644 --- a/flake.lock +++ b/flake.lock @@ -8,11 +8,11 @@ ] }, "locked": { - "lastModified": 1763329080, - "narHash": "sha256-S6eZaiRZPvSWv9d2kZO+HrYTelWqn++vsC/bUwOSQ7I=", + "lastModified": 1763596466, + "narHash": "sha256-CTSUc4Fk1lHMQZMJ5LczPDYGLq5UjXDFKLSpuA3mKmI=", "owner": "nix-community", "repo": "nixos-apple-silicon", - "rev": "bc52b0623f4367447347cbcc88522ec64486d710", + "rev": "73b7103c4e3996e3e20868d510b0e8797f279323", "type": "github" }, "original": { @@ -28,11 +28,11 @@ ] }, "locked": { - "lastModified": 1763110997, - "narHash": "sha256-S2vF+3D/9vna3/vBV7LHiGUbp+ltPsQhvccIyim6VQg=", + "lastModified": 1763724081, + "narHash": "sha256-hCgZsbaw21R9uL3iJwG8WT3VCMXVa7xjmxGRf0nwvL4=", "owner": "catppuccin", "repo": "nix", - "rev": "e6928cdd3dd20636326c2756d2bc8fd1cd825768", + "rev": "e4676e1fd9b09131feadd3df556fd1d3f31fdd2d", "type": "github" }, "original": { @@ -187,11 +187,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1763283776, - "narHash": "sha256-Y7TDFPK4GlqrKrivOcsHG8xSGqQx3A6c+i7novT85Uk=", + "lastModified": 1763421233, + "narHash": "sha256-Stk9ZYRkGrnnpyJ4eqt9eQtdFWRRIvMxpNRf4sIegnw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "50a96edd8d0db6cc8db57dab6bb6d6ee1f3dc49a", + "rev": "89c2b2330e733d6cdb5eae7b899326930c2c0648", "type": "github" }, "original": { @@ -211,11 +211,11 @@ "systems": "systems_3" }, "locked": { - "lastModified": 1763393971, - "narHash": "sha256-FhgZD8pk3VE2SL0g4nCYKF0L6IO3uL110tfrBaZkdG0=", + "lastModified": 1763729894, + "narHash": "sha256-hTWn0Z/BM5wzrnzY3RVNyXbguJBFGksatRtQvjCOqM8=", "owner": "nix-community", "repo": "nixvim", - "rev": "7a30e6cf259d8db84aefc626058c074bd995d482", + "rev": "e13ceae64fbdf1475ee71d4170dcd2869e17cfff", "type": "github" }, "original": { @@ -232,11 +232,11 @@ ] }, "locked": { - "lastModified": 1763481078, - "narHash": "sha256-AKAi5WqJRVD6Z9OD4kG6XB/+iIvmcC4L9Y/aFUKLTxc=", + "lastModified": 1763738846, + "narHash": "sha256-euYELaPbITsxiKwa8u+q+G/c33uDG92ZWtuDJn52KsU=", "owner": "nix-community", "repo": "NUR", - "rev": "7760ec7593699c7bd59cc04932b83457918fb5bb", + "rev": "ff590e7dd7b9eec2413f3485a5f6456e5e3b91e9", "type": "github" }, "original": { From e39f74e639987a856320973daa6d07ce65c2aec0 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Fri, 21 Nov 2025 10:39:04 -0500 Subject: [PATCH 064/282] mitigate mesa 25.3 issue --- flake.lock | 9 +++++---- flake.nix | 4 ++-- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/flake.lock b/flake.lock index 35bf6e9..114392d 100644 --- a/flake.lock +++ b/flake.lock @@ -17,6 +17,7 @@ }, "original": { "owner": "nix-community", + "ref": "release-2025-11-18", "repo": "nixos-apple-silicon", "type": "github" } @@ -187,16 +188,16 @@ }, "nixpkgs": { "locked": { - "lastModified": 1763421233, - "narHash": "sha256-Stk9ZYRkGrnnpyJ4eqt9eQtdFWRRIvMxpNRf4sIegnw=", + "lastModified": 1762977756, + "narHash": "sha256-4PqRErxfe+2toFJFgcRKZ0UI9NSIOJa+7RXVtBhy4KE=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "89c2b2330e733d6cdb5eae7b899326930c2c0648", + "rev": "c5ae371f1a6a7fd27823bc500d9390b38c05fa55", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixos-unstable", + "ref": "c5ae371f1a6a7fd27823", "repo": "nixpkgs", "type": "github" } diff --git a/flake.nix b/flake.nix index 0f82102..2f81732 100644 --- a/flake.nix +++ b/flake.nix @@ -2,7 +2,7 @@ description = "My NixOS Configuration"; inputs = { - nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; + nixpkgs.url = "github:NixOS/nixpkgs/c5ae371f1a6a7fd27823"; catppuccin = { url = "github:catppuccin/nix"; @@ -36,7 +36,7 @@ }; apple-silicon = { - url = "github:nix-community/nixos-apple-silicon"; + url = "github:nix-community/nixos-apple-silicon/release-2025-11-18"; inputs.nixpkgs.follows = "nixpkgs"; }; }; From a56d72e589c340e91786113387da17cd0a6b855c Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Sat, 22 Nov 2025 13:16:23 -0500 Subject: [PATCH 065/282] update fish --- home/terminal/fish/default.nix | 40 ++++++++++++++++++++++++++++++++++ system/all.nix | 3 ++- 2 files changed, 42 insertions(+), 1 deletion(-) create mode 100644 home/terminal/fish/default.nix diff --git a/home/terminal/fish/default.nix b/home/terminal/fish/default.nix new file mode 100644 index 0000000..b5a93b5 --- /dev/null +++ b/home/terminal/fish/default.nix @@ -0,0 +1,40 @@ +{ config, pkgs, ... }: + +{ + programs.fish = { + enable = true; + + functions = { + fish_prompt = { + description = "Write out the prompt"; + body = '' + set -l last_status $status + + set -l nix_shell_info ( + if test -n "$IN_NIX_SHELL" + echo -n " " + end + ) + + set -l user_host (set_color $fish_color_user)"$USER"(set_color normal)"@"(set_color $fish_color_host)(prompt_hostname)(set_color normal) + + set -l cwd (set_color $fish_color_cwd)(prompt_pwd)(set_color normal) + + set -l git_info (fish_git_prompt) + + echo -n -s "$user_host" " " "$nix_shell_info" "$cwd" "$git_info" "> " + ''; + }; + nix-shell = { + description = "Wrapper for nix-shell that runs fish by default"; + body = '' + if test (count $argv) -eq 0 + command nix-shell --run fish + else + command nix-shell --run fish $argv + end + ''; + }; + }; + }; +} diff --git a/system/all.nix b/system/all.nix index 49ed377..3e4ff53 100755 --- a/system/all.nix +++ b/system/all.nix @@ -29,8 +29,9 @@ ../home/browsers/firefox/default.nix ../home/systemd/default.nix ../home/terminal/btop/default.nix - ../home/terminal/nvim/default.nix + ../home/terminal/fish/default.nix ../home/terminal/kitty/default.nix + ../home/terminal/nvim/default.nix ../home/kde/plasma.nix ../home/kde/other.nix ../home/vscode/default.nix From 4d5765574482143d79aea08876d291b0b84fd2be Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Sat, 22 Nov 2025 15:22:12 -0500 Subject: [PATCH 066/282] improve home-manager catppuccin --- home/all.nix | 12 +----------- home/hosts/alien.nix | 20 ++++++++++++++++++++ home/hosts/peach.nix | 32 +++++++++++++++++++++++++------- home/kde/plasma.nix | 7 ++++++- 4 files changed, 52 insertions(+), 19 deletions(-) diff --git a/home/all.nix b/home/all.nix index 96a0ab6..5bcd72f 100755 --- a/home/all.nix +++ b/home/all.nix @@ -37,21 +37,11 @@ kdePackages.partitionmanager colloid-icon-theme - (catppuccin-kde.override { - flavour = [ - "latte" - "mocha" - ]; - accents = [ - "peach" - "blue" - ]; - }) ]; catppuccin = { enable = true; - cursors.enable = true; + cursors.enable = false; cache.enable = true; }; diff --git a/home/hosts/alien.nix b/home/hosts/alien.nix index 91b0430..41b94c3 100644 --- a/home/hosts/alien.nix +++ b/home/hosts/alien.nix @@ -6,6 +6,26 @@ flavor = "mocha"; }; + home.packages = with pkgs; [ + + catppuccin-cursors.latteDark + catppuccin-cursors.latteLight + catppuccin-cursors.latteBlue + catppuccin-cursors.mochaDark + catppuccin-cursors.mochaLight + catppuccin-cursors.mochaBlue + + (catppuccin-kde.override { + flavour = [ + "latte" + "mocha" + ]; + accents = [ + "blue" + ]; + }) + ]; + programs.plasma = { workspace = { colorScheme = "CatppuccinMochaBlue"; diff --git a/home/hosts/peach.nix b/home/hosts/peach.nix index a333085..2851ccb 100644 --- a/home/hosts/peach.nix +++ b/home/hosts/peach.nix @@ -1,18 +1,36 @@ { config, pkgs, ... }: { - home.packages = with pkgs; [ - asahi-nvram - asahi-bless - asahi-btsync - asahi-wifisync - ]; - catppuccin = { accent = "peach"; flavor = "mocha"; }; + home.packages = with pkgs; [ + + asahi-nvram + asahi-bless + asahi-btsync + asahi-wifisync + + catppuccin-cursors.latteDark + catppuccin-cursors.latteLight + catppuccin-cursors.lattePeach + catppuccin-cursors.mochaDark + catppuccin-cursors.mochaLight + catppuccin-cursors.mochaPeach + + (catppuccin-kde.override { + flavour = [ + "latte" + "mocha" + ]; + accents = [ + "peach" + ]; + }) + ]; + programs.plasma = { input.touchpads = [ diff --git a/home/kde/plasma.nix b/home/kde/plasma.nix index 14cbcef..4c83322 100644 --- a/home/kde/plasma.nix +++ b/home/kde/plasma.nix @@ -169,7 +169,11 @@ }; configFile = { + # KDE has an automatic light-dark that CURRENTLY + # isn't supported by plasma-manager. # kdeglobals.KDE.AutomaticLookAndFeel = true; + # DefaultDarkLookAndFeel = "Catppuccin-Flavor-Accent"; + # DefaultLightLookAndFeel = "Catppuccin-Flavor-Accent"; kwinrc.Round-Corners.ActiveOutlinePalette = 2; kwinrc.Round-Corners.ActiveOutlineUseCustom = false; kwinrc.Round-Corners.ActiveOutlineUsePalette = true; @@ -184,7 +188,7 @@ kwinrc.Round-Corners.InactiveSecondOutlineUsePalette = true; plasmaparc.General.AudioFeedback = false; kdeglobals.Sounds.Enable = false; - kwinrc.Plugins.forceblurEnabled = true; + kwinrc.Plugins.forceblurEnabled = false; kwinrc.Effect-blurplus.BlurDecorations = true; kwinrc.Effect-blurplus.BlurMatching = false; kwinrc.Effect-blurplus.BlurMenus = true; @@ -193,6 +197,7 @@ kwinrc.Effect-blurplus.BottomCornerRadius = 10; kwinrc.Effect-blurplus.NoiseStrength = 6; kwinrc.Effect-blurplus.RefractionStrength = 10; + ksplashrc.KSplash.Engine = "KSplashQML"; }; panels = [ From 2685b61d083cb4fa944724303503f31e2d78b6d4 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Sun, 23 Nov 2025 10:02:55 -0500 Subject: [PATCH 067/282] update plasma --- home/hosts/peach.nix | 10 ++++++++-- home/kde/plasma.nix | 2 +- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/home/hosts/peach.nix b/home/hosts/peach.nix index 2851ccb..5ddb64f 100644 --- a/home/hosts/peach.nix +++ b/home/hosts/peach.nix @@ -61,8 +61,14 @@ shortcuts = { # my volume down key broke as hell boy - kmix.decrease_volume = "Volume Mute"; - kmix.decrease_volume_small = "Shift+Volume Mute"; + kmix.decrease_volume = [ + "Volume Mute" + "Volume Down" + ]; + kmix.decrease_volume_small = [ + "Shift+Volume Mute" + "Shift+Volume Down" + ]; kmix.increase_volume = "Volume Up"; kmix.increase_volume_small = "Shift+Volume Up"; kmix.mute = "Sleep"; diff --git a/home/kde/plasma.nix b/home/kde/plasma.nix index 4c83322..9c4af40 100644 --- a/home/kde/plasma.nix +++ b/home/kde/plasma.nix @@ -161,7 +161,7 @@ # translucency.enable = true; # windowOpenClose.animation = "fade"; blur = { - enable = false; + enable = true; noiseStrength = 8; strength = 5; }; From 6cae5bcf258f4ed9ea04b8e49b45fa6c653b593e Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Sun, 23 Nov 2025 10:24:35 -0500 Subject: [PATCH 068/282] use newer tag for prism-launcher --- home/all.nix | 2 +- packages/overlay.nix | 8 ++ packages/prismlauncher-master/package.nix | 133 ++++++++++++++++++ .../package.nix | 114 +++++++++++++++ 4 files changed, 256 insertions(+), 1 deletion(-) create mode 100644 packages/prismlauncher-master/package.nix create mode 100644 packages/prismlauncher-unwrapped-master/package.nix diff --git a/home/all.nix b/home/all.nix index 5bcd72f..b03e602 100755 --- a/home/all.nix +++ b/home/all.nix @@ -5,7 +5,7 @@ vesktop gh adwsteamgtk - prismlauncher + prismlauncher-master tmux fastfetch btop diff --git a/packages/overlay.nix b/packages/overlay.nix index 9dbb74b..6467831 100644 --- a/packages/overlay.nix +++ b/packages/overlay.nix @@ -24,6 +24,14 @@ final: prev: { inherit helium-widevine; }; + prismlauncher-unwrapped-master = prev.callPackage (builtins.path { + path = ./prismlauncher-unwrapped-master/package.nix; + }) { }; + + prismlauncher-master = prev.callPackage (builtins.path { + path = ./prismlauncher-master/package.nix; + }) { }; + strawberry-master = prev.callPackage (builtins.path { path = ./strawberry/package.nix; }) { }; diff --git a/packages/prismlauncher-master/package.nix b/packages/prismlauncher-master/package.nix new file mode 100644 index 0000000..8088c4f --- /dev/null +++ b/packages/prismlauncher-master/package.nix @@ -0,0 +1,133 @@ +{ + addDriverRunpath, + alsa-lib, + flite, + gamemode, + glfw3-minecraft, + jdk17, + jdk21, + jdk8, + kdePackages, + lib, + libGL, + libX11, + libXcursor, + libXext, + libXrandr, + libXxf86vm, + libjack2, + libpulseaudio, + libusb1, + mesa-demos, + openal, + pciutils, + pipewire, + prismlauncher-unwrapped-master, + stdenv, + symlinkJoin, + udev, + vulkan-loader, + xrandr, + + additionalLibs ? [ ], + additionalPrograms ? [ ], + controllerSupport ? stdenv.hostPlatform.isLinux, + gamemodeSupport ? stdenv.hostPlatform.isLinux, + jdks ? [ + jdk21 + jdk17 + jdk8 + ], + msaClientID ? null, + textToSpeechSupport ? stdenv.hostPlatform.isLinux, +}: + +assert lib.assertMsg ( + controllerSupport -> stdenv.hostPlatform.isLinux +) "controllerSupport only has an effect on Linux."; + +assert lib.assertMsg ( + textToSpeechSupport -> stdenv.hostPlatform.isLinux +) "textToSpeechSupport only has an effect on Linux."; + +let + prismlauncher' = prismlauncher-unwrapped-master.override { inherit msaClientID gamemodeSupport; }; +in + +symlinkJoin { + name = "prismlauncher-${prismlauncher'.version}"; + + paths = [ prismlauncher' ]; + + nativeBuildInputs = [ kdePackages.wrapQtAppsHook ]; + + buildInputs = [ + kdePackages.qtbase + kdePackages.qtsvg + ] + ++ lib.optional ( + lib.versionAtLeast kdePackages.qtbase.version "6" && stdenv.hostPlatform.isLinux + ) kdePackages.qtwayland; + + postBuild = '' + wrapQtAppsHook + ''; + + qtWrapperArgs = + let + runtimeLibs = [ + (lib.getLib stdenv.cc.cc) + ## native versions + glfw3-minecraft + openal + + ## openal + alsa-lib + libjack2 + libpulseaudio + pipewire + + ## glfw + libGL + libX11 + libXcursor + libXext + libXrandr + libXxf86vm + + udev # oshi + + vulkan-loader # VulkanMod's lwjgl + ] + ++ lib.optional textToSpeechSupport flite + ++ lib.optional gamemodeSupport gamemode.lib + ++ lib.optional controllerSupport libusb1 + ++ additionalLibs; + + runtimePrograms = [ + mesa-demos + pciutils # need lspci + xrandr # needed for LWJGL [2.9.2, 3) https://github.com/LWJGL/lwjgl/issues/128 + ] + ++ additionalPrograms; + + in + [ "--prefix PRISMLAUNCHER_JAVA_PATHS : ${lib.makeSearchPath "bin/java" jdks}" ] + ++ lib.optionals stdenv.hostPlatform.isLinux [ + "--set LD_LIBRARY_PATH ${addDriverRunpath.driverLink}/lib:${lib.makeLibraryPath runtimeLibs}" + "--prefix PATH : ${lib.makeBinPath runtimePrograms}" + ]; + + meta = { + inherit (prismlauncher'.meta) + description + longDescription + homepage + changelog + license + maintainers + mainProgram + platforms + ; + }; +} diff --git a/packages/prismlauncher-unwrapped-master/package.nix b/packages/prismlauncher-unwrapped-master/package.nix new file mode 100644 index 0000000..af8e791 --- /dev/null +++ b/packages/prismlauncher-unwrapped-master/package.nix @@ -0,0 +1,114 @@ +{ + lib, + stdenv, + fetchFromGitHub, + cmake, + cmark, + extra-cmake-modules, + gamemode, + ghc_filesystem, + jdk17, + kdePackages, + ninja, + nix-update-script, + stripJavaArchivesHook, + tomlplusplus, + zlib, + qrencode, + msaClientID ? null, + gamemodeSupport ? stdenv.hostPlatform.isLinux, +}: +let + libnbtplusplus = fetchFromGitHub { + owner = "PrismLauncher"; + repo = "libnbtplusplus"; + rev = "23b955121b8217c1c348a9ed2483167a6f3ff4ad"; + hash = "sha256-yy0q+bky80LtK1GWzz7qpM+aAGrOqLuewbid8WT1ilk="; + }; +in +assert lib.assertMsg ( + gamemodeSupport -> stdenv.hostPlatform.isLinux +) "gamemodeSupport is only available on Linux."; +stdenv.mkDerivation (finalAttrs: { + pname = "prismlauncher-unwrapped-master"; + version = "git-master"; + + src = fetchFromGitHub { + owner = "PrismLauncher"; + repo = "PrismLauncher"; + rev = "8abf5ed7b1f31a89fad1b8d7fb1703639ca08426"; + hash = "sha256-URkD8zzvQ0g//9SQSP+gm9D8ypiiRpUGY2nMdJjjEr8="; + }; + + postUnpack = '' + rm -rf source/libraries/libnbtplusplus + ln -s ${libnbtplusplus} source/libraries/libnbtplusplus + ''; + + nativeBuildInputs = [ + cmake + ninja + extra-cmake-modules + jdk17 + stripJavaArchivesHook + ]; + + buildInputs = [ + cmark + ghc_filesystem + kdePackages.qtbase + kdePackages.qtnetworkauth + kdePackages.quazip + tomlplusplus + zlib + qrencode + ] + ++ lib.optional gamemodeSupport gamemode; + + # hardeningEnable = lib.optionals stdenv.hostPlatform.isLinux [ "pie" ]; + + cmakeFlags = [ + # downstream branding + (lib.cmakeFeature "Launcher_BUILD_PLATFORM" "nixpkgs") + ] + ++ lib.optionals (msaClientID != null) [ + (lib.cmakeFeature "Launcher_MSA_CLIENT_ID" (toString msaClientID)) + ] + ++ lib.optionals (lib.versionOlder kdePackages.qtbase.version "6") [ + (lib.cmakeFeature "Launcher_QT_VERSION_MAJOR" "5") + ] + ++ lib.optionals stdenv.hostPlatform.isDarwin [ + # we wrap our binary manually + (lib.cmakeFeature "INSTALL_BUNDLE" "nodeps") + # disable built-in updater + (lib.cmakeFeature "MACOSX_SPARKLE_UPDATE_FEED_URL" "''") + (lib.cmakeFeature "CMAKE_INSTALL_PREFIX" "${placeholder "out"}/Applications/") + ]; + + doCheck = true; + + dontWrapQtApps = true; + + passthru = { + updateScript = nix-update-script { }; + }; + + meta = { + description = "Free, open source launcher for Minecraft"; + longDescription = '' + Allows you to have multiple, separate instances of Minecraft (each with + their own mods, texture packs, saves, etc) and helps you manage them and + their associated options with a simple interface. + ''; + homepage = "https://prismlauncher.org/"; + changelog = "https://github.com/PrismLauncher/PrismLauncher/releases/tag/${finalAttrs.version}"; + license = lib.licenses.gpl3Only; + maintainers = with lib.maintainers; [ + minion3665 + Scrumplex + getchoo + ]; + mainProgram = "prismlauncher"; + platforms = lib.platforms.linux ++ lib.platforms.darwin; + }; +}) From eb4600f07cbb4323198314fdd2f1c84fcc1ae913 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Sun, 23 Nov 2025 13:13:32 -0500 Subject: [PATCH 069/282] wip: add niri wm --- home/tiling/niri/config/config.kdl | 625 +++++++++++++++++++++++++ home/tiling/niri/default.nix | 15 + home/tiling/waybar/config/config.jsonc | 86 ++++ home/tiling/waybar/config/mocha.css | 26 + home/tiling/waybar/config/style.css | 92 ++++ home/tiling/waybar/default.nix | 13 + system/all.nix | 4 + 7 files changed, 861 insertions(+) create mode 100644 home/tiling/niri/config/config.kdl create mode 100644 home/tiling/niri/default.nix create mode 100644 home/tiling/waybar/config/config.jsonc create mode 100644 home/tiling/waybar/config/mocha.css create mode 100644 home/tiling/waybar/config/style.css create mode 100644 home/tiling/waybar/default.nix diff --git a/home/tiling/niri/config/config.kdl b/home/tiling/niri/config/config.kdl new file mode 100644 index 0000000..a459c28 --- /dev/null +++ b/home/tiling/niri/config/config.kdl @@ -0,0 +1,625 @@ +// This config is in the KDL format: https://kdl.dev +// "/-" comments out the following node. +// Check the wiki for a full description of the configuration: +// https://yalter.github.io/niri/Configuration:-Introduction + +// Input device configuration. +// Find the full list of options on the wiki: +// https://yalter.github.io/niri/Configuration:-Input +input { + keyboard { + xkb { + // You can set rules, model, layout, variant and options. + // For more information, see xkeyboard-config(7). + + // For example: + // layout "us,ru" + // options "grp:win_space_toggle,compose:ralt,ctrl:nocaps" + + // If this section is empty, niri will fetch xkb settings + // from org.freedesktop.locale1. You can control these using + // localectl set-x11-keymap. + } + + // Enable numlock on startup, omitting this setting disables it. + numlock + } + + // Next sections include libinput settings. + // Omitting settings disables them, or leaves them at their default values. + // All commented-out settings here are examples, not defaults. + touchpad { + // off + // tap + // dwt + // dwtp + // drag false + // drag-lock + natural-scroll + // accel-speed 0.2 + // accel-profile "flat" + // scroll-method "two-finger" + // disabled-on-external-mouse + } + + mouse { + // off + // natural-scroll + // accel-speed 0.2 + // accel-profile "flat" + // scroll-method "no-scroll" + } + + trackpoint { + // off + // natural-scroll + // accel-speed 0.2 + // accel-profile "flat" + // scroll-method "on-button-down" + // scroll-button 273 + // scroll-button-lock + // middle-emulation + } + + // Uncomment this to make the mouse warp to the center of newly focused windows. + // warp-mouse-to-focus + + // Focus windows and outputs automatically when moving the mouse into them. + // Setting max-scroll-amount="0%" makes it work only on windows already fully on screen. + focus-follows-mouse max-scroll-amount="0%" +} + +overview { + backdrop-color "#181825" +} + +// Disable the hot corners. +gestures { + hot-corners { + off + } +} + +// You can configure outputs by their name, which you can find +// by running `niri msg outputs` while inside a niri instance. +// The built-in laptop monitor is usually called "eDP-1". +// Find more information on the wiki: +// https://yalter.github.io/niri/Configuration:-Outputs +// Remember to uncomment the node by removing "/-"! +/-output "eDP-1" { + // Uncomment this line to disable this output. + // off + + // Resolution and, optionally, refresh rate of the output. + // The format is "x" or "x@". + // If the refresh rate is omitted, niri will pick the highest refresh rate + // for the resolution. + // If the mode is omitted altogether or is invalid, niri will pick one automatically. + // Run `niri msg outputs` while inside a niri instance to list all outputs and their modes. + mode "1920x1080@120.030" + + // You can use integer or fractional scale, for example use 1.5 for 150% scale. + scale 2 + + // Transform allows to rotate the output counter-clockwise, valid values are: + // normal, 90, 180, 270, flipped, flipped-90, flipped-180 and flipped-270. + transform "normal" + + // Position of the output in the global coordinate space. + // This affects directional monitor actions like "focus-monitor-left", and cursor movement. + // The cursor can only move between directly adjacent outputs. + // Output scale and rotation has to be taken into account for positioning: + // outputs are sized in logical, or scaled, pixels. + // For example, a 3840×2160 output with scale 2.0 will have a logical size of 1920×1080, + // so to put another output directly adjacent to it on the right, set its x to 1920. + // If the position is unset or results in an overlap, the output is instead placed + // automatically. + position x=1280 y=0 +} + +// Settings that influence how windows are positioned and sized. +// Find more information on the wiki: +// https://yalter.github.io/niri/Configuration:-Layout +layout { + // Set gaps around windows in logical pixels. + gaps 4 + + // When to center a column when changing focus, options are: + // - "never", default behavior, focusing an off-screen column will keep at the left + // or right edge of the screen. + // - "always", the focused column will always be centered. + // - "on-overflow", focusing a column will center it if it doesn't fit + // together with the previously focused column. + center-focused-column "never" + + // You can customize the widths that "switch-preset-column-width" (Mod+R) toggles between. + preset-column-widths { + // Proportion sets the width as a fraction of the output width, taking gaps into account. + // For example, you can perfectly fit four windows sized "proportion 0.25" on an output. + // The default preset widths are 1/3, 1/2 and 2/3 of the output. + proportion 0.33333 + proportion 0.5 + proportion 0.66667 + + // Fixed sets the width in logical pixels exactly. + // fixed 1920 + } + + // You can also customize the heights that "switch-preset-window-height" (Mod+Shift+R) toggles between. + // preset-window-heights { } + + // You can change the default width of the new windows. + default-column-width { proportion 0.5; } + // If you leave the brackets empty, the windows themselves will decide their initial width. + // default-column-width {} + + // By default focus ring and border are rendered as a solid background rectangle + // behind windows. That is, they will show up through semitransparent windows. + // This is because windows using client-side decorations can have an arbitrary shape. + // + // If you don't like that, you should uncomment `prefer-no-csd` below. + // Niri will draw focus ring and border *around* windows that agree to omit their + // client-side decorations. + // + // Alternatively, you can override it with a window rule called + // `draw-border-with-background`. + + // You can change how the focus ring looks. + focus-ring { + // Uncomment this line to disable the focus ring. + off + + // How many logical pixels the ring extends out from the windows. + width 1 + + // Colors can be set in a variety of ways: + // - CSS named colors: "red" + // - RGB hex: "#rgb", "#rgba", "#rrggbb", "#rrggbbaa" + // - CSS-like notation: "rgb(255, 127, 0)", rgba(), hsl() and a few others. + + // Color of the ring on the active monitor. + active-color "#a6e3a1" + + // Color of the ring on inactive monitors. + // + // The focus ring only draws around the active window, so the only place + // where you can see its inactive-color is on other monitors. + inactive-color "#313244" + + // You can also use gradients. They take precedence over solid colors. + // Gradients are rendered the same as CSS linear-gradient(angle, from, to). + // The angle is the same as in linear-gradient, and is optional, + // defaulting to 180 (top-to-bottom gradient). + // You can use any CSS linear-gradient tool on the web to set these up. + // Changing the color space is also supported, check the wiki for more info. + // + // active-gradient from="#80c8ff" to="#c7ff7f" angle=45 + + // You can also color the gradient relative to the entire view + // of the workspace, rather than relative to just the window itself. + // To do that, set relative-to="workspace-view". + // + // inactive-gradient from="#505050" to="#808080" angle=45 relative-to="workspace-view" + } + + // You can also add a border. It's similar to the focus ring, but always visible. + border { + // The settings are the same as for the focus ring. + // If you enable the border, you probably want to disable the focus ring. + // off + + width 1 + active-color "#a6e3a1" + inactive-color "#313244" + // Color of the border around windows that request your attention. + urgent-color "#eba0ac" + + // Gradients can use a few different interpolation color spaces. + // For example, this is a pastel rainbow gradient via in="oklch longer hue". + // + // active-gradient from="#e5989b" to="#ffb4a2" angle=45 relative-to="workspace-view" in="oklch longer hue" + + // inactive-gradient from="#505050" to="#808080" angle=45 relative-to="workspace-view" + } + + // You can enable drop shadows for windows. + shadow { + // Uncomment the next line to enable shadows. + // on + + // By default, the shadow draws only around its window, and not behind it. + // Uncomment this setting to make the shadow draw behind its window. + // + // Note that niri has no way of knowing about the CSD window corner + // radius. It has to assume that windows have square corners, leading to + // shadow artifacts inside the CSD rounded corners. This setting fixes + // those artifacts. + // + // However, instead you may want to set prefer-no-csd and/or + // geometry-corner-radius. Then, niri will know the corner radius and + // draw the shadow correctly, without having to draw it behind the + // window. These will also remove client-side shadows if the window + // draws any. + // + // draw-behind-window true + + // You can change how shadows look. The values below are in logical + // pixels and match the CSS box-shadow properties. + + // Softness controls the shadow blur radius. + softness 30 + + // Spread expands the shadow. + spread 5 + + // Offset moves the shadow relative to the window. + offset x=0 y=5 + + // You can also change the shadow color and opacity. + color "#11111b77" + } + + // Struts shrink the area occupied by windows, similarly to layer-shell panels. + // You can think of them as a kind of outer gaps. They are set in logical pixels. + // Left and right struts will cause the next window to the side to always be visible. + // Top and bottom struts will simply add outer gaps in addition to the area occupied by + // layer-shell panels and regular gaps. + struts { + // left 64 + // right 64 + // top 64 + // bottom 64 + } +} + +// Add lines like this to spawn processes at startup. +// Note that running niri as a session supports xdg-desktop-autostart, +// which may be more convenient to use. +// See the binds section below for more spawn examples. + +// This line starts waybar, a commonly used bar for Wayland compositors. +spawn-at-startup "waybar" + +// To run a shell command (with variables, pipes, etc.), use spawn-sh-at-startup: +// spawn-sh-at-startup "qs -c ~/source/qs/MyAwesomeShell" + +hotkey-overlay { + // Uncomment this line to disable the "Important Hotkeys" pop-up at startup. + // skip-at-startup +} + +// Uncomment this line to ask the clients to omit their client-side decorations if possible. +// If the client will specifically ask for CSD, the request will be honored. +// Additionally, clients will be informed that they are tiled, removing some client-side rounded corners. +// This option will also fix border/focus ring drawing behind some semitransparent windows. +// After enabling or disabling this, you need to restart the apps for this to take effect. +// prefer-no-csd + +// You can change the path where screenshots are saved. +// A ~ at the front will be expanded to the home directory. +// The path is formatted with strftime(3) to give you the screenshot date and time. +screenshot-path "~/Pictures/Screenshots/Screenshot from %Y-%m-%d %H-%M-%S.png" + +// You can also set this to null to disable saving screenshots to disk. +// screenshot-path null + +// Animation settings. +// The wiki explains how to configure individual animations: +// https://yalter.github.io/niri/Configuration:-Animations +animations { + // Uncomment to turn off all animations. + // off + + // Slow down all animations by this factor. Values below 1 speed them up instead. + // slowdown 3.0 +} + +// Window rules let you adjust behavior for individual windows. +// Find more information on the wiki: +// https://yalter.github.io/niri/Configuration:-Window-Rules + +// Work around WezTerm's initial configure bug +// by setting an empty default-column-width. +window-rule { + // This regular expression is intentionally made as specific as possible, + // since this is the default config, and we want no false positives. + // You can get away with just app-id="wezterm" if you want. + match app-id=r#"^org\.wezfurlong\.wezterm$"# + default-column-width {} +} + +// Open the Firefox picture-in-picture player as floating by default. +window-rule { + // This app-id regular expression will work for both: + // - host Firefox (app-id is "firefox") + // - Flatpak Firefox (app-id is "org.mozilla.firefox") + match app-id=r#"firefox$"# title="^Picture-in-Picture$" + open-floating true +} + +// Example: block out two password managers from screen capture. +// (This example rule is commented out with a "/-" in front.) +/-window-rule { + match app-id=r#"^org\.keepassxc\.KeePassXC$"# + match app-id=r#"^org\.gnome\.World\.Secrets$"# + + block-out-from "screen-capture" + + // Use this instead if you want them visible on third-party screenshot tools. + // block-out-from "screencast" +} + +// Example: enable rounded corners for all windows. +// (This example rule is commented out with a "/-" in front.) +window-rule { + geometry-corner-radius 12 + clip-to-geometry true +} + +binds { + // Keys consist of modifiers separated by + signs, followed by an XKB key name + // in the end. To find an XKB name for a particular key, you may use a program + // like wev. + // + // "Mod" is a special modifier equal to Super when running on a TTY, and to Alt + // when running as a winit window. + // + // Most actions that you can bind here can also be invoked programmatically with + // `niri msg action do-something`. + + // Mod-Shift-/, which is usually the same as Mod-?, + // shows a list of important hotkeys. + Mod+Shift+Slash { show-hotkey-overlay; } + + // Suggested binds for running programs: terminal, app launcher, screen locker. + Mod+T hotkey-overlay-title="Open a Terminal: kitty" { spawn "kitty"; } + Mod+D hotkey-overlay-title="Run an Application: fuzzel" { spawn "fuzzel"; } + Super+Alt+L hotkey-overlay-title="Lock the Screen: swaylock" { spawn "swaylock"; } + + // Use spawn-sh to run a shell command. Do this if you need pipes, multiple commands, etc. + // Note: the entire command goes as a single argument. It's passed verbatim to `sh -c`. + // For example, this is a standard bind to toggle the screen reader (orca). + Super+Alt+S allow-when-locked=true hotkey-overlay-title=null { spawn-sh "pkill orca || exec orca"; } + + // Example volume keys mappings for PipeWire & WirePlumber. + // The allow-when-locked=true property makes them work even when the session is locked. + // Using spawn-sh allows to pass multiple arguments together with the command. + XF86AudioRaiseVolume allow-when-locked=true { spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.1+"; } + XF86AudioLowerVolume allow-when-locked=true { spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.1-"; } + XF86AudioMute allow-when-locked=true { spawn-sh "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"; } + XF86AudioMicMute allow-when-locked=true { spawn-sh "wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"; } + + // Example brightness key mappings for brightnessctl. + // You can use regular spawn with multiple arguments too (to avoid going through "sh"), + // but you need to manually put each argument in separate "" quotes. + XF86MonBrightnessUp allow-when-locked=true { spawn "brightnessctl" "--class=backlight" "set" "+10%"; } + XF86MonBrightnessDown allow-when-locked=true { spawn "brightnessctl" "--class=backlight" "set" "10%-"; } + + // Open/close the Overview: a zoomed-out view of workspaces and windows. + // You can also move the mouse into the top-left hot corner, + // or do a four-finger swipe up on a touchpad. + Mod+O repeat=false { toggle-overview; } + + Mod+Q repeat=false { close-window; } + + Mod+Left { focus-column-left; } + Mod+Down { focus-window-down; } + Mod+Up { focus-window-up; } + Mod+Right { focus-column-right; } + Mod+H { focus-column-left; } + Mod+J { focus-window-down; } + Mod+K { focus-window-up; } + Mod+L { focus-column-right; } + + Mod+Ctrl+Left { move-column-left; } + Mod+Ctrl+Down { move-window-down; } + Mod+Ctrl+Up { move-window-up; } + Mod+Ctrl+Right { move-column-right; } + Mod+Ctrl+H { move-column-left; } + Mod+Ctrl+J { move-window-down; } + Mod+Ctrl+K { move-window-up; } + Mod+Ctrl+L { move-column-right; } + + // Alternative commands that move across workspaces when reaching + // the first or last window in a column. + // Mod+J { focus-window-or-workspace-down; } + // Mod+K { focus-window-or-workspace-up; } + // Mod+Ctrl+J { move-window-down-or-to-workspace-down; } + // Mod+Ctrl+K { move-window-up-or-to-workspace-up; } + + Mod+Home { focus-column-first; } + Mod+End { focus-column-last; } + Mod+Ctrl+Home { move-column-to-first; } + Mod+Ctrl+End { move-column-to-last; } + + Mod+Shift+Left { focus-monitor-left; } + Mod+Shift+Down { focus-monitor-down; } + Mod+Shift+Up { focus-monitor-up; } + Mod+Shift+Right { focus-monitor-right; } + Mod+Shift+H { focus-monitor-left; } + Mod+Shift+J { focus-monitor-down; } + Mod+Shift+K { focus-monitor-up; } + Mod+Shift+L { focus-monitor-right; } + + Mod+Shift+Ctrl+Left { move-column-to-monitor-left; } + Mod+Shift+Ctrl+Down { move-column-to-monitor-down; } + Mod+Shift+Ctrl+Up { move-column-to-monitor-up; } + Mod+Shift+Ctrl+Right { move-column-to-monitor-right; } + Mod+Shift+Ctrl+H { move-column-to-monitor-left; } + Mod+Shift+Ctrl+J { move-column-to-monitor-down; } + Mod+Shift+Ctrl+K { move-column-to-monitor-up; } + Mod+Shift+Ctrl+L { move-column-to-monitor-right; } + + // Alternatively, there are commands to move just a single window: + // Mod+Shift+Ctrl+Left { move-window-to-monitor-left; } + // ... + + // And you can also move a whole workspace to another monitor: + // Mod+Shift+Ctrl+Left { move-workspace-to-monitor-left; } + // ... + + Mod+Page_Down { focus-workspace-down; } + Mod+Page_Up { focus-workspace-up; } + Mod+U { focus-workspace-down; } + Mod+I { focus-workspace-up; } + Mod+Ctrl+Page_Down { move-column-to-workspace-down; } + Mod+Ctrl+Page_Up { move-column-to-workspace-up; } + Mod+Ctrl+U { move-column-to-workspace-down; } + Mod+Ctrl+I { move-column-to-workspace-up; } + + // Alternatively, there are commands to move just a single window: + // Mod+Ctrl+Page_Down { move-window-to-workspace-down; } + // ... + + Mod+Shift+Page_Down { move-workspace-down; } + Mod+Shift+Page_Up { move-workspace-up; } + Mod+Shift+U { move-workspace-down; } + Mod+Shift+I { move-workspace-up; } + + // You can bind mouse wheel scroll ticks using the following syntax. + // These binds will change direction based on the natural-scroll setting. + // + // To avoid scrolling through workspaces really fast, you can use + // the cooldown-ms property. The bind will be rate-limited to this value. + // You can set a cooldown on any bind, but it's most useful for the wheel. + Mod+WheelScrollDown cooldown-ms=150 { focus-workspace-down; } + Mod+WheelScrollUp cooldown-ms=150 { focus-workspace-up; } + Mod+Ctrl+WheelScrollDown cooldown-ms=150 { move-column-to-workspace-down; } + Mod+Ctrl+WheelScrollUp cooldown-ms=150 { move-column-to-workspace-up; } + + Mod+WheelScrollRight { focus-column-right; } + Mod+WheelScrollLeft { focus-column-left; } + Mod+Ctrl+WheelScrollRight { move-column-right; } + Mod+Ctrl+WheelScrollLeft { move-column-left; } + + // Usually scrolling up and down with Shift in applications results in + // horizontal scrolling; these binds replicate that. + Mod+Shift+WheelScrollDown { focus-column-right; } + Mod+Shift+WheelScrollUp { focus-column-left; } + Mod+Ctrl+Shift+WheelScrollDown { move-column-right; } + Mod+Ctrl+Shift+WheelScrollUp { move-column-left; } + + // Similarly, you can bind touchpad scroll "ticks". + // Touchpad scrolling is continuous, so for these binds it is split into + // discrete intervals. + // These binds are also affected by touchpad's natural-scroll, so these + // example binds are "inverted", since we have natural-scroll enabled for + // touchpads by default. + // Mod+TouchpadScrollDown { spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.02+"; } + // Mod+TouchpadScrollUp { spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.02-"; } + + // You can refer to workspaces by index. However, keep in mind that + // niri is a dynamic workspace system, so these commands are kind of + // "best effort". Trying to refer to a workspace index bigger than + // the current workspace count will instead refer to the bottommost + // (empty) workspace. + // + // For example, with 2 workspaces + 1 empty, indices 3, 4, 5 and so on + // will all refer to the 3rd workspace. + Mod+1 { focus-workspace 1; } + Mod+2 { focus-workspace 2; } + Mod+3 { focus-workspace 3; } + Mod+4 { focus-workspace 4; } + Mod+5 { focus-workspace 5; } + Mod+6 { focus-workspace 6; } + Mod+7 { focus-workspace 7; } + Mod+8 { focus-workspace 8; } + Mod+9 { focus-workspace 9; } + Mod+Ctrl+1 { move-column-to-workspace 1; } + Mod+Ctrl+2 { move-column-to-workspace 2; } + Mod+Ctrl+3 { move-column-to-workspace 3; } + Mod+Ctrl+4 { move-column-to-workspace 4; } + Mod+Ctrl+5 { move-column-to-workspace 5; } + Mod+Ctrl+6 { move-column-to-workspace 6; } + Mod+Ctrl+7 { move-column-to-workspace 7; } + Mod+Ctrl+8 { move-column-to-workspace 8; } + Mod+Ctrl+9 { move-column-to-workspace 9; } + + // Alternatively, there are commands to move just a single window: + // Mod+Ctrl+1 { move-window-to-workspace 1; } + + // Switches focus between the current and the previous workspace. + // Mod+Tab { focus-workspace-previous; } + + // The following binds move the focused window in and out of a column. + // If the window is alone, they will consume it into the nearby column to the side. + // If the window is already in a column, they will expel it out. + Mod+BracketLeft { consume-or-expel-window-left; } + Mod+BracketRight { consume-or-expel-window-right; } + + // Consume one window from the right to the bottom of the focused column. + Mod+Comma { consume-window-into-column; } + // Expel the bottom window from the focused column to the right. + Mod+Period { expel-window-from-column; } + + Mod+R { switch-preset-column-width; } + // Cycling through the presets in reverse order is also possible. + // Mod+R { switch-preset-column-width-back; } + Mod+Shift+R { switch-preset-window-height; } + Mod+Ctrl+R { reset-window-height; } + Mod+F { maximize-column; } + Mod+Shift+F { fullscreen-window; } + + // Expand the focused column to space not taken up by other fully visible columns. + // Makes the column "fill the rest of the space". + Mod+Ctrl+F { expand-column-to-available-width; } + + Mod+C { center-column; } + + // Center all fully visible columns on screen. + Mod+Ctrl+C { center-visible-columns; } + + // Finer width adjustments. + // This command can also: + // * set width in pixels: "1000" + // * adjust width in pixels: "-5" or "+5" + // * set width as a percentage of screen width: "25%" + // * adjust width as a percentage of screen width: "-10%" or "+10%" + // Pixel sizes use logical, or scaled, pixels. I.e. on an output with scale 2.0, + // set-column-width "100" will make the column occupy 200 physical screen pixels. + Mod+Minus { set-column-width "-10%"; } + Mod+Equal { set-column-width "+10%"; } + + // Finer height adjustments when in column with other windows. + Mod+Shift+Minus { set-window-height "-10%"; } + Mod+Shift+Equal { set-window-height "+10%"; } + + // Move the focused window between the floating and the tiling layout. + Mod+V { toggle-window-floating; } + Mod+Shift+V { switch-focus-between-floating-and-tiling; } + + // Toggle tabbed column display mode. + // Windows in this column will appear as vertical tabs, + // rather than stacked on top of each other. + Mod+W { toggle-column-tabbed-display; } + + // Actions to switch layouts. + // Note: if you uncomment these, make sure you do NOT have + // a matching layout switch hotkey configured in xkb options above. + // Having both at once on the same hotkey will break the switching, + // since it will switch twice upon pressing the hotkey (once by xkb, once by niri). + // Mod+Space { switch-layout "next"; } + // Mod+Shift+Space { switch-layout "prev"; } + + Print { screenshot; } + Ctrl+Print { screenshot-screen; } + Alt+Print { screenshot-window; } + + // Applications such as remote-desktop clients and software KVM switches may + // request that niri stops processing the keyboard shortcuts defined here + // so they may, for example, forward the key presses as-is to a remote machine. + // It's a good idea to bind an escape hatch to toggle the inhibitor, + // so a buggy application can't hold your session hostage. + // + // The allow-inhibiting=false property can be applied to other binds as well, + // which ensures niri always processes them, even when an inhibitor is active. + Mod+Escape allow-inhibiting=false { toggle-keyboard-shortcuts-inhibit; } + + // The quit action will show a confirmation dialog to avoid accidental exits. + Mod+Shift+E { quit; } + Ctrl+Alt+Delete { quit; } + + // Powers off the monitors. To turn them back on, do any input like + // moving the mouse or pressing any other key. + Mod+Shift+P { power-off-monitors; } +} diff --git a/home/tiling/niri/default.nix b/home/tiling/niri/default.nix new file mode 100644 index 0000000..ce18911 --- /dev/null +++ b/home/tiling/niri/default.nix @@ -0,0 +1,15 @@ +{ config, pkgs, ... }: + +{ + home.packages = with pkgs; [ + swaylock + fuzzel + xdg-desktop-portal + ]; + + home.file.".config/niri" = { + source = ./config; + recursive = true; + force = true; + }; +} diff --git a/home/tiling/waybar/config/config.jsonc b/home/tiling/waybar/config/config.jsonc new file mode 100644 index 0000000..89989eb --- /dev/null +++ b/home/tiling/waybar/config/config.jsonc @@ -0,0 +1,86 @@ +{ + "layer": "top", + "spacing": 0, + "height": 0, + + "margin-top": 0, + "margin-right": 0, + "margin-bottom": 0, + "margin-left": 0, + + "modules-left": ["sway/workspaces"], + + "modules-center": [], + + "modules-right": [ + "tray", + "cpu_text", + "cpu", + "memory", + "battery", + "network", + "pulseaudio", + "clock", + ], + + "sway/workspaces": { + "disable-scroll": true, + "all-outputs": true, + "tooltip": false, + }, + + "tray": { + "spacing": 10, + "tooltip": false, + }, + + "clock": { + "format": "{:%a %d, %I:%M %p}", + "tooltip": false, + }, + + "cpu": { + "format": "cpu {usage}%", + "interval": 2, + + "states": { + "critical": 90, + }, + }, + + "memory": { + "format": "mem {percentage}%", + "interval": 2, + + "states": { + "critical": 80, + }, + }, + + "battery": { + "format": "bat {capacity}%", + "interval": 5, + "states": { + "warning": 20, + "critical": 10, + }, + "tooltip": false, + }, + + "network": { + "format-wifi": "wifi up", + "format-ethernet": "enth up", + "format-disconnected": "no network", + "tooltip": false, + }, + + "pulseaudio": { + "scroll-step": 5, + "max-volume": 150, + "format": "vol {volume}%", + "format-bluetooth": "vol {volume}%", + "nospacing": 1, + "on-click": "pavucontrol", + "tooltip": false, + }, +} diff --git a/home/tiling/waybar/config/mocha.css b/home/tiling/waybar/config/mocha.css new file mode 100644 index 0000000..0eb6a82 --- /dev/null +++ b/home/tiling/waybar/config/mocha.css @@ -0,0 +1,26 @@ +@define-color rosewater #f5e0dc; +@define-color flamingo #f2cdcd; +@define-color pink #f5c2e7; +@define-color mauve #cba6f7; +@define-color red #f38ba8; +@define-color maroon #eba0ac; +@define-color peach #fab387; +@define-color yellow #f9e2af; +@define-color green #a6e3a1; +@define-color teal #94e2d5; +@define-color sky #89dceb; +@define-color sapphire #74c7ec; +@define-color blue #89b4fa; +@define-color lavender #b4befe; +@define-color text #cdd6f4; +@define-color subtext1 #bac2de; +@define-color subtext0 #a6adc8; +@define-color overlay2 #9399b2; +@define-color overlay1 #7f849c; +@define-color overlay0 #6c7086; +@define-color surface2 #585b70; +@define-color surface1 #45475a; +@define-color surface0 #313244; +@define-color base #1e1e2e; +@define-color mantle #181825; +@define-color crust #11111b; diff --git a/home/tiling/waybar/config/style.css b/home/tiling/waybar/config/style.css new file mode 100644 index 0000000..b1b60c3 --- /dev/null +++ b/home/tiling/waybar/config/style.css @@ -0,0 +1,92 @@ +@import "./mocha.css"; +* { + border: none; + border-radius: 0; + min-height: 0; + font-family: "Noto Sans"; + /*font-weight: bold;*/ + font-size: 12px; + padding: 0; +} + +window#waybar { + background: @crust; + border-bottom: 2px solid @mantle; +} + +tooltip { + background-color: @crust; + border: 2px solid @peach; +} + +#clock, +#tray, +#cpu, +#memory, +#battery, +#network, +#pulseaudio { + margin: 6px 6px 6px 0px; + padding: 2px 8px; + border-radius: 12px; +} + +#workspaces { + background-color: #322d28; + margin: 6px 0px 6px 6px; + border: 2px solid #625343; +} + +#workspaces button { + all: initial; + min-width: 0; + box-shadow: inset 0 -3px transparent; + padding: 2px 4px; + color: #917a53; +} + +#workspaces button.focused { + color: #ddc7a1; +} + +#workspaces button.urgent { + background-color: #e78a4e; + color: #1d2021; +} + +#clock { + background-color: @base; + border: 2px solid @blue; + color: @subtext0; +} + +#battery { + background-color: @base; + border: 2px solid @green; + color: @subtext0; +} + +#tray, +#cpu, +#memory, +#network, +#pulseaudio { + background-color: @base; + border: 2px solid @blue; + color: @subtext0; +} + +#cpu.critical, +#memory.critical { + background-color: @base; + border: 2px solid @red; + color: @subtext0; +} + +#battery.warning, +#battery.critical, +#battery.urgent { + background-color: #c9af82; + border: 2px solid #917a53; + color: #ae6330; +} diff --git a/home/tiling/waybar/default.nix b/home/tiling/waybar/default.nix new file mode 100644 index 0000000..51a5665 --- /dev/null +++ b/home/tiling/waybar/default.nix @@ -0,0 +1,13 @@ +{ config, pkgs, ... }: + +{ + programs.waybar = { + enable = true; + }; + + home.file.".config/waybar" = { + source = ./config; + recursive = true; + force = true; + }; +} diff --git a/system/all.nix b/system/all.nix index 3e4ff53..d2538ca 100755 --- a/system/all.nix +++ b/system/all.nix @@ -27,6 +27,8 @@ imports = [ ../home/all.nix ../home/browsers/firefox/default.nix + ../home/tiling/niri/default.nix + ../home/tiling/waybar/default.nix ../home/systemd/default.nix ../home/terminal/btop/default.nix ../home/terminal/fish/default.nix @@ -165,6 +167,8 @@ services.openssh.enable = true; networking.firewall.enable = false; + programs.niri.enable = true; + # This value determines the NixOS release from which the default # settings for stateful data, like file locations and database versions # on your system were taken. It‘s perfectly fine and recommended to leave From 002d8733d49da5c0aff353b78966c64aa0adf0f5 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Sun, 23 Nov 2025 13:25:59 -0500 Subject: [PATCH 070/282] changes to nvim and kde --- home/kde/plasma.nix | 32 +++++++++++++++++++++++++++++++- home/terminal/nvim/default.nix | 3 +++ system/all.nix | 7 +++++++ 3 files changed, 41 insertions(+), 1 deletion(-) diff --git a/home/kde/plasma.nix b/home/kde/plasma.nix index 9c4af40..0925359 100644 --- a/home/kde/plasma.nix +++ b/home/kde/plasma.nix @@ -1,3 +1,5 @@ +{ pkgs, ... }: + { programs.plasma = { enable = true; @@ -71,6 +73,34 @@ }; }; } + { + description = "Minecraft"; + match = { + window-class = { + value = "Minecraft*"; + type = "substring"; + }; + window-types = [ "normal" ]; + }; + apply = { + noborder = { + value = true; + apply = "force"; + }; + maximizehoriz = { + value = true; + apply = "force"; + }; + maximizevert = { + value = true; + apply = "force"; + }; + desktops = { + value = "Desktop_4"; + apply = "force"; + }; + }; + } { description = "Picture-in-Picture"; match = { @@ -219,7 +249,7 @@ { iconTasks = { launchers = [ - # "applications:firefox.desktop" + "applications:firefox.desktop" "applications:helium.desktop" "applications:org.kde.dolphin.desktop" "applications:vesktop.desktop" diff --git a/home/terminal/nvim/default.nix b/home/terminal/nvim/default.nix index 2bdee4e..9a5ad17 100644 --- a/home/terminal/nvim/default.nix +++ b/home/terminal/nvim/default.nix @@ -1,6 +1,9 @@ +{ pkgs, ... }: + { programs.nixvim = { enable = true; + enablePrintInit = true; # defaultEditor = true; waylandSupport = true; viAlias = true; diff --git a/system/all.nix b/system/all.nix index d2538ca..5994990 100755 --- a/system/all.nix +++ b/system/all.nix @@ -44,6 +44,7 @@ environment.sessionVariables = rec { NIXOS_OZONE_WL = "1"; EDITOR = "nvim"; + TERMINAL = "kitty"; }; boot = { @@ -157,6 +158,12 @@ firefoxpwa distrobox ]; + + plasma6.excludePackages = with pkgs.kdePackages; [ + elisa + konsole + khelpcenter + ]; }; programs.gnupg.agent = { From f5fcea00d7eae95986bfef205f3026d3cd141823 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Sun, 23 Nov 2025 16:39:19 -0500 Subject: [PATCH 071/282] switch noto to nerd font variant --- home/kde/other.nix | 2 +- home/terminal/kitty/default.nix | 2 +- home/tiling/waybar/config/style.css | 2 +- system/all.nix | 1 + 4 files changed, 4 insertions(+), 3 deletions(-) diff --git a/home/kde/other.nix b/home/kde/other.nix index 32243dc..1fbea89 100644 --- a/home/kde/other.nix +++ b/home/kde/other.nix @@ -11,7 +11,7 @@ enable = true; editor = { font = { - family = "Noto Sans Mono"; + family = "NotoSansM Nerd Font Mono"; pointSize = 10; }; }; diff --git a/home/terminal/kitty/default.nix b/home/terminal/kitty/default.nix index 10e05d8..e550e3e 100644 --- a/home/terminal/kitty/default.nix +++ b/home/terminal/kitty/default.nix @@ -4,7 +4,7 @@ enableGitIntegration = true; themeFile = "Catppuccin-Mocha"; font = { - name = "Noto Sans Mono"; + name = "NotoSansM Nerd Font Mono"; size = 10; }; shellIntegration = { diff --git a/home/tiling/waybar/config/style.css b/home/tiling/waybar/config/style.css index b1b60c3..ac840b1 100644 --- a/home/tiling/waybar/config/style.css +++ b/home/tiling/waybar/config/style.css @@ -3,7 +3,7 @@ border: none; border-radius: 0; min-height: 0; - font-family: "Noto Sans"; + font-family: "NotoSansM Nerd Font Mono"; /*font-weight: bold;*/ font-size: 12px; padding: 0; diff --git a/system/all.nix b/system/all.nix index 5994990..24d79f6 100755 --- a/system/all.nix +++ b/system/all.nix @@ -157,6 +157,7 @@ inputs.kwin-effects-forceblur.packages.${pkgs.stdenv.hostPlatform.system}.default firefoxpwa distrobox + nerd-fonts.noto ]; plasma6.excludePackages = with pkgs.kdePackages; [ From 4fb814dedc05d9b15f622d3e5e5d26a1a9001509 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Mon, 24 Nov 2025 09:32:57 -0500 Subject: [PATCH 072/282] fix helium widevine x86_64 --- .../helium-browser/widevine-x86_64-linux.nix | 44 +++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 packages/helium-browser/widevine-x86_64-linux.nix diff --git a/packages/helium-browser/widevine-x86_64-linux.nix b/packages/helium-browser/widevine-x86_64-linux.nix new file mode 100644 index 0000000..3dce29a --- /dev/null +++ b/packages/helium-browser/widevine-x86_64-linux.nix @@ -0,0 +1,44 @@ +{ + lib, + stdenv, + fetchurl, + go-crx3, +}: + +let + manifest = builtins.fromJSON (builtins.readFile ./x86_64-manifest.json); +in + +stdenv.mkDerivation (finalAttrs: { + pname = "widevine-cdm"; + version = manifest.version; + + src = fetchurl { + url = manifest.url; + hash = manifest.sri; + }; + + nativeBuildInputs = [ go-crx3 ]; + + unpackPhase = '' + unpackDir="src" + cp "$src" "$unpackDir".crx # go-crx3 doesn't like .crx3 extensions + crx3 unpack "$unpackDir".crx + + cd "$unpackDir" + ''; + + installPhase = '' + runHook preInstall + + install -vD manifest.json $out/share/helium/WidevineCdm/manifest.json + install -vD LICENSE $out/share/helium/WidevineCdm/LICENSE.txt + install -vD _platform_specific/linux_x64/libwidevinecdm.so $out/share/helium/WidevineCdm/_platform_specific/linux_x64/libwidevinecdm.so + + runHook postInstall + ''; + + passthru.updateScript = ./update-x86_64.py; + + meta = import ./meta.nix lib; +}) From 65b22fe33c7817ffbac4af0974441fdcf6482b27 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Mon, 24 Nov 2025 09:36:32 -0500 Subject: [PATCH 073/282] add compose2nix to alien --- flake.lock | 84 +++++++++++++++++++++++++++++++++- flake.nix | 8 +++- system/hosts/alien/default.nix | 6 +++ 3 files changed, 96 insertions(+), 2 deletions(-) diff --git a/flake.lock b/flake.lock index 114392d..37a135b 100644 --- a/flake.lock +++ b/flake.lock @@ -42,6 +42,27 @@ "type": "github" } }, + "compose2nix": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ], + "onchg": "onchg" + }, + "locked": { + "lastModified": 1762390855, + "narHash": "sha256-IUNXoHzTdpR+hRgcLB7imqmmA6bB7gUwWb5OfVAteJo=", + "owner": "aksiksi", + "repo": "compose2nix", + "rev": "d87652be197855d568b093cbacecdcd26cde0d91", + "type": "github" + }, + "original": { + "owner": "aksiksi", + "repo": "compose2nix", + "type": "github" + } + }, "flake-compat": { "locked": { "lastModified": 1746162366, @@ -100,6 +121,21 @@ } }, "flake-utils": { + "locked": { + "lastModified": 1652776076, + "narHash": "sha256-gzTw/v1vj4dOVbpBSJX4J0DwUR6LIyXo7/SuuTJp1kM=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "04c1b180862888302ddfb2e3ad9eaa63afc60cf8", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_2": { "inputs": { "systems": "systems_2" }, @@ -186,6 +222,29 @@ "type": "github" } }, + "nix-pre-commit": { + "inputs": { + "flake-utils": "flake-utils", + "nixpkgs": [ + "compose2nix", + "onchg", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1653259102, + "narHash": "sha256-XfCEu4zur/N2Dk4v8wFiQAgJ7bgNqPqwWp1vBXkeczM=", + "owner": "jmgilman", + "repo": "nix-pre-commit", + "rev": "6a99b2711c7eac9960939d8eb91e84322b22d50c", + "type": "github" + }, + "original": { + "owner": "jmgilman", + "repo": "nix-pre-commit", + "type": "github" + } + }, "nixpkgs": { "locked": { "lastModified": 1762977756, @@ -248,7 +307,7 @@ }, "nuschtosSearch": { "inputs": { - "flake-utils": "flake-utils", + "flake-utils": "flake-utils_2", "ixx": "ixx", "nixpkgs": [ "nixvim", @@ -269,6 +328,28 @@ "type": "github" } }, + "onchg": { + "inputs": { + "nix-pre-commit": "nix-pre-commit", + "nixpkgs": [ + "compose2nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1720368454, + "narHash": "sha256-NUSw3G2gsQX8/G64/pDBb1oitM+x13m7nFRvpiI4a+s=", + "owner": "aksiksi", + "repo": "onchg-rs", + "rev": "c42b693d10920874b3644ef1502e33318409d69c", + "type": "github" + }, + "original": { + "owner": "aksiksi", + "repo": "onchg-rs", + "type": "github" + } + }, "plasma-manager": { "inputs": { "home-manager": [ @@ -296,6 +377,7 @@ "inputs": { "apple-silicon": "apple-silicon", "catppuccin": "catppuccin", + "compose2nix": "compose2nix", "home-manager": "home-manager", "kwin-effects-forceblur": "kwin-effects-forceblur", "nixpkgs": "nixpkgs", diff --git a/flake.nix b/flake.nix index 2f81732..851245a 100644 --- a/flake.nix +++ b/flake.nix @@ -35,6 +35,11 @@ inputs.nixpkgs.follows = "nixpkgs"; }; + compose2nix = { + url = "github:aksiksi/compose2nix"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + apple-silicon = { url = "github:nix-community/nixos-apple-silicon/release-2025-11-18"; inputs.nixpkgs.follows = "nixpkgs"; @@ -50,6 +55,7 @@ nur, nixvim, kwin-effects-forceblur, + compose2nix, apple-silicon, ... }: @@ -64,7 +70,7 @@ inherit system; specialArgs = { inherit catppuccin; - inputs = { inherit kwin-effects-forceblur; }; + inputs = { inherit kwin-effects-forceblur compose2nix; }; }; modules = [ { diff --git a/system/hosts/alien/default.nix b/system/hosts/alien/default.nix index 3254649..6e76692 100644 --- a/system/hosts/alien/default.nix +++ b/system/hosts/alien/default.nix @@ -2,6 +2,7 @@ config, pkgs, lib, + inputs, catppuccin, ... }: @@ -13,6 +14,11 @@ "riscv64-linux" ]; + environment.systemPackages = [ + pkgs.compose2nix + inputs.compose2nix.packages.x86_64-linux.default + ]; + catppuccin.accent = "blue"; home-manager.users.sckova = { From a50a17c17c689afdac05e47901be60bfc916435c Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Mon, 24 Nov 2025 09:38:05 -0500 Subject: [PATCH 074/282] add hash for new helium --- packages/helium-browser/package.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/helium-browser/package.nix b/packages/helium-browser/package.nix index 14ee7a3..6d21239 100644 --- a/packages/helium-browser/package.nix +++ b/packages/helium-browser/package.nix @@ -33,7 +33,7 @@ let architectures = { "x86_64-linux" = { arch = "x86_64"; - hash = lib.fakeHash; + hash = "sha256-VB218vOY/9tI97Yhx2MNlNPb46jJHv/FqY96tJaokBE="; }; "aarch64-linux" = { arch = "arm64"; From b3644abda3def27aac2553ea4ac7e0f6ec5269be Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Sat, 29 Nov 2025 12:25:01 -0500 Subject: [PATCH 075/282] add daggerfall and zelda --- home/hosts/alien.nix | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/home/hosts/alien.nix b/home/hosts/alien.nix index 41b94c3..86deec7 100644 --- a/home/hosts/alien.nix +++ b/home/hosts/alien.nix @@ -24,6 +24,10 @@ "blue" ]; }) + + daggerfall-unity + shipwright + _2ship2harkinian ]; programs.plasma = { From 772a3b8e176167e8ebc4773310678fcf728f46d0 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Sun, 30 Nov 2025 15:27:45 -0500 Subject: [PATCH 076/282] changes --- home/all.nix | 1 + home/hosts/peach.nix | 24 ++++++++++++------------ home/kde/plasma.nix | 8 ++++---- 3 files changed, 17 insertions(+), 16 deletions(-) diff --git a/home/all.nix b/home/all.nix index b03e602..4802a2b 100755 --- a/home/all.nix +++ b/home/all.nix @@ -32,6 +32,7 @@ prettierd musescore mpv + gimp kde-rounded-corners kdePackages.partitionmanager diff --git a/home/hosts/peach.nix b/home/hosts/peach.nix index 5ddb64f..09130d1 100644 --- a/home/hosts/peach.nix +++ b/home/hosts/peach.nix @@ -60,18 +60,18 @@ }; shortcuts = { - # my volume down key broke as hell boy - kmix.decrease_volume = [ - "Volume Mute" - "Volume Down" - ]; - kmix.decrease_volume_small = [ - "Shift+Volume Mute" - "Shift+Volume Down" - ]; - kmix.increase_volume = "Volume Up"; - kmix.increase_volume_small = "Shift+Volume Up"; - kmix.mute = "Sleep"; + # # my volume down key broke as hell boy + # kmix.decrease_volume = [ + # "Volume Mute" + # "Volume Down" + # ]; + # kmix.decrease_volume_small = [ + # "Shift+Volume Mute" + # "Shift+Volume Down" + # ]; + # kmix.increase_volume = "Volume Up"; + # kmix.increase_volume_small = "Shift+Volume Up"; + # kmix.mute = "Sleep"; org_kde_powerdevil.Sleep = [ ]; }; diff --git a/home/kde/plasma.nix b/home/kde/plasma.nix index 0925359..04e3307 100644 --- a/home/kde/plasma.nix +++ b/home/kde/plasma.nix @@ -85,19 +85,19 @@ apply = { noborder = { value = true; - apply = "force"; + apply = "initially"; }; maximizehoriz = { value = true; - apply = "force"; + apply = "initially"; }; maximizevert = { value = true; - apply = "force"; + apply = "initially"; }; desktops = { value = "Desktop_4"; - apply = "force"; + apply = "initially"; }; }; } From 88119a3e279e9833a6aaeb81a9c87856227cade9 Mon Sep 17 00:00:00 2001 From: sckova Date: Mon, 1 Dec 2025 12:23:07 -0500 Subject: [PATCH 077/282] add aarch64 vm --- flake.nix | 10 ++ hardware/vm-aarch64.nix | 32 ++++++ home/hosts/vm-aarch64.nix | 166 ++++++++++++++++++++++++++++ system/hosts/vm-aarch64/default.nix | 32 ++++++ 4 files changed, 240 insertions(+) create mode 100644 hardware/vm-aarch64.nix create mode 100644 home/hosts/vm-aarch64.nix create mode 100644 system/hosts/vm-aarch64/default.nix diff --git a/flake.nix b/flake.nix index 851245a..21fc482 100644 --- a/flake.nix +++ b/flake.nix @@ -134,6 +134,11 @@ hostname = "alien"; system = "x86_64-linux"; }; + + vm-aarch64 = mkNixosSystem { + hostname = "vm-aarch64"; + system = "aarch64-linux"; + }; }; homeConfigurations = { @@ -147,6 +152,11 @@ hostname = "alien"; system = "x86_64-linux"; }; + vm-aarch64 = mkHomeConfig { + user = "sckova"; + hostname = "vm-aarch64"; + system = "aarch64-linux"; + }; }; }; } diff --git a/hardware/vm-aarch64.nix b/hardware/vm-aarch64.nix new file mode 100644 index 0000000..e8b5fd9 --- /dev/null +++ b/hardware/vm-aarch64.nix @@ -0,0 +1,32 @@ +# Do not modify this file! It was generated by ‘nixos-generate-config’ +# and may be overwritten by future invocations. Please make changes +# to /etc/nixos/configuration.nix instead. +{ config, lib, pkgs, modulesPath, ... }: + +{ + imports = + [ (modulesPath + "/profiles/qemu-guest.nix") + ]; + + boot.initrd.availableKernelModules = [ "xhci_pci" "virtio_pci" "usbhid" "usb_storage" "sr_mod" ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ ]; + boot.extraModulePackages = [ ]; + + fileSystems."/" = + { device = "/dev/disk/by-uuid/1f30a8f4-8d6d-47eb-a2c1-82c311b69695"; + fsType = "ext4"; + }; + + fileSystems."/boot" = + { device = "/dev/disk/by-uuid/2438-C64A"; + fsType = "vfat"; + options = [ "fmask=0077" "dmask=0077" ]; + }; + + swapDevices = + [ { device = "/dev/disk/by-uuid/5a1e7296-e7d2-4e66-9e1f-505b80f5ff3b"; } + ]; + + nixpkgs.hostPlatform = lib.mkDefault "aarch64-linux"; +} diff --git a/home/hosts/vm-aarch64.nix b/home/hosts/vm-aarch64.nix new file mode 100644 index 0000000..f339162 --- /dev/null +++ b/home/hosts/vm-aarch64.nix @@ -0,0 +1,166 @@ +{ config, pkgs, ... }: + +{ + catppuccin = { + accent = "green"; + flavor = "mocha"; + }; + + home.packages = with pkgs; [ + + catppuccin-cursors.latteDark + catppuccin-cursors.latteLight + catppuccin-cursors.latteGreen + catppuccin-cursors.mochaDark + catppuccin-cursors.mochaLight + catppuccin-cursors.mochaGreen + + (catppuccin-kde.override { + flavour = [ + "latte" + "mocha" + ]; + accents = [ + "green" + ]; + }) + ]; + + programs.plasma = { + + input.touchpads = [ + { + name = "Apple MTP multi-touch"; + vendorId = "05ac"; + productId = "0352"; + disableWhileTyping = false; + enable = true; + tapToClick = false; + naturalScroll = true; + accelerationProfile = "default"; + } + ]; + + workspace = { + colorScheme = "CatppuccinMochaGreen"; + cursor.theme = "catppuccin-mocha-green-cursors"; + splashScreen.theme = "Catpppuccin-Mocha-Green"; + }; + + configFile = { + kdeglobals.KDE = { + DefaultDarkLookAndFeel = "Catppuccin-Mocha-Green"; + DefaultLightLookAndFeel = "Catppuccin-Latte-Green"; + }; + }; + + shortcuts = { + # # my volume down key broke as hell boy + # kmix.decrease_volume = [ + # "Volume Mute" + # "Volume Down" + # ]; + # kmix.decrease_volume_small = [ + # "Shift+Volume Mute" + # "Shift+Volume Down" + # ]; + # kmix.increase_volume = "Volume Up"; + # kmix.increase_volume_small = "Shift+Volume Up"; + # kmix.mute = "Sleep"; + org_kde_powerdevil.Sleep = [ ]; + }; + + panels = [ + # Application name, Global menu and Song information and playback controls at the top + { + location = "top"; + height = 37; + floating = false; + widgets = [ + { + applicationTitleBar = { + behavior = { + activeTaskSource = "activeTask"; + }; + layout = { + elements = [ "windowTitle" ]; + horizontalAlignment = "right"; + showDisabledElements = "deactivated"; + verticalAlignment = "center"; + }; + overrideForMaximized.enable = false; + windowTitle = { + font = { + bold = false; + fit = "fixedSize"; + size = 10; + }; + hideEmptyTitle = true; + margins = { + bottom = 5; + left = 10; + right = 0; + top = 5; + }; + source = "appName"; + }; + }; + } + "org.kde.plasma.appmenu" + "org.kde.plasma.panelspacer" + { + plasmusicToolbar = { + panelIcon = { + albumCover = { + useAsIcon = false; + radius = 8; + }; + icon = ""; + }; + playbackSource = "auto"; + musicControls.showPlaybackControls = false; + songText = { + displayInSeparateLines = true; + maximumWidth = 320; + scrolling = { + behavior = "alwaysScroll"; + speed = 3; + }; + }; + }; + } + "org.kde.plasma.marginsseparator" + { + systemTray.items = { + shown = [ + "org.kde.plasma.battery" + "org.kde.plasma.bluetooth" + "org.kde.plasma.networkmanagement" + "org.kde.plasma.brightness" + "org.kde.plasma.volume" + ]; + hidden = [ + "org.kde.plasma.clipboard" + "org.kde.plasma.manage-inputmethod" + "org.kde.plasma.cameraindicator" + "org.kde.plasma.keyboardlayout" + "org.kde.plasma.devicenotifier" + "org.kde.plasma.notifications" + "org.kde.plasma.weather" + "org.kde.plasma.printmanager" + "org.kde.plasma.keyboardindicator" + "org.kde.plasma.mediacontroller" + ]; + }; + } + { + digitalClock = { + calendar.firstDayOfWeek = "sunday"; + time.format = "12h"; + }; + } + ]; + } + ]; + }; +} diff --git a/system/hosts/vm-aarch64/default.nix b/system/hosts/vm-aarch64/default.nix new file mode 100644 index 0000000..6bd230b --- /dev/null +++ b/system/hosts/vm-aarch64/default.nix @@ -0,0 +1,32 @@ +{ + config, + pkgs, + lib, + catppuccin, + ... +}: +{ + networking.hostName = "vm-aarch64"; + + boot.binfmt.emulatedSystems = [ + "x86_64-linux" + "riscv64-linux" + ]; + + catppuccin.accent = "green"; + + home-manager.users.sckova = { + imports = [ catppuccin.homeModules.catppuccin ]; + }; + + services.spice-vdagentd.enable = true; + + virtualisation.vmVariant = { + virtualisation = { + memorySize = 8192; + cores = 6; + }; + }; + + security.sudo.wheelNeedsPassword = false; +} From 06fd3b140730b798d1b5f93f99bc3773ba30a947 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Mon, 1 Dec 2025 12:47:12 -0500 Subject: [PATCH 078/282] switch back to rolling --- flake.lock | 44 ++++++++++++++++------------------ flake.nix | 4 ++-- system/hosts/peach/default.nix | 4 +--- 3 files changed, 24 insertions(+), 28 deletions(-) diff --git a/flake.lock b/flake.lock index 37a135b..b9b4e5c 100644 --- a/flake.lock +++ b/flake.lock @@ -17,7 +17,6 @@ }, "original": { "owner": "nix-community", - "ref": "release-2025-11-18", "repo": "nixos-apple-silicon", "type": "github" } @@ -29,11 +28,11 @@ ] }, "locked": { - "lastModified": 1763724081, - "narHash": "sha256-hCgZsbaw21R9uL3iJwG8WT3VCMXVa7xjmxGRf0nwvL4=", + "lastModified": 1764325801, + "narHash": "sha256-LQ7tsrXs1wuB6KBwUctL3JlUsG/FWI2pCI6NkoO52dk=", "owner": "catppuccin", "repo": "nix", - "rev": "e4676e1fd9b09131feadd3df556fd1d3f31fdd2d", + "rev": "a696fed6b9b6aa89ef495842cdca3fc2a7cef0de", "type": "github" }, "original": { @@ -86,11 +85,11 @@ ] }, "locked": { - "lastModified": 1762980239, - "narHash": "sha256-8oNVE8TrD19ulHinjaqONf9QWCKK+w4url56cdStMpM=", + "lastModified": 1763759067, + "narHash": "sha256-LlLt2Jo/gMNYAwOgdRQBrsRoOz7BPRkzvNaI/fzXi2Q=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "52a2caecc898d0b46b2b905f058ccc5081f842da", + "rev": "2cccadc7357c0ba201788ae99c4dfa90728ef5e0", "type": "github" }, "original": { @@ -160,11 +159,11 @@ ] }, "locked": { - "lastModified": 1763416652, - "narHash": "sha256-8EBEEvtzQ11LCxpQHMNEBQAGtQiCu/pqP9zSovDSbNM=", + "lastModified": 1764603455, + "narHash": "sha256-Q70rxlbrxPcTtqWIb9+71rkJESxIOou5isZBvyOieXw=", "owner": "nix-community", "repo": "home-manager", - "rev": "ea164b7c9ccdc2321379c2ff78fd4317b4c41312", + "rev": "effe4c007d6243d9e69ce2242d76a2471c1b8d5c", "type": "github" }, "original": { @@ -247,16 +246,15 @@ }, "nixpkgs": { "locked": { - "lastModified": 1762977756, - "narHash": "sha256-4PqRErxfe+2toFJFgcRKZ0UI9NSIOJa+7RXVtBhy4KE=", + "lastModified": 1764610429, + "narHash": "sha256-QeDC9PAPD1uqAutwniHeqMcX444khkCzl4eE5VRjEFc=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "c5ae371f1a6a7fd27823bc500d9390b38c05fa55", + "rev": "974707f1feda852cd7554e1f4a50d3a572791860", "type": "github" }, "original": { "owner": "NixOS", - "ref": "c5ae371f1a6a7fd27823", "repo": "nixpkgs", "type": "github" } @@ -271,11 +269,11 @@ "systems": "systems_3" }, "locked": { - "lastModified": 1763729894, - "narHash": "sha256-hTWn0Z/BM5wzrnzY3RVNyXbguJBFGksatRtQvjCOqM8=", + "lastModified": 1764581424, + "narHash": "sha256-ij6QCIm8EeXGG1F2Aj/mTwVF4U80MtxsJ4krW0I0U2E=", "owner": "nix-community", "repo": "nixvim", - "rev": "e13ceae64fbdf1475ee71d4170dcd2869e17cfff", + "rev": "027c96a16116588dd28728b757a24e2d43d19187", "type": "github" }, "original": { @@ -292,11 +290,11 @@ ] }, "locked": { - "lastModified": 1763738846, - "narHash": "sha256-euYELaPbITsxiKwa8u+q+G/c33uDG92ZWtuDJn52KsU=", + "lastModified": 1764608289, + "narHash": "sha256-4sOEuCB3XSzoohbY4u4MawTzHbqfOZrQdHtbfbolsIg=", "owner": "nix-community", "repo": "NUR", - "rev": "ff590e7dd7b9eec2413f3485a5f6456e5e3b91e9", + "rev": "f4afdbb4007eedb9ba7d2251da1f3f1321798087", "type": "github" }, "original": { @@ -360,11 +358,11 @@ ] }, "locked": { - "lastModified": 1762784320, - "narHash": "sha256-odsk96Erywk5hs0dhArF38zb7Oe0q6LZ70gXbxAPKno=", + "lastModified": 1763909441, + "narHash": "sha256-56LwV51TX/FhgX+5LCG6akQ5KrOWuKgcJa+eUsRMxsc=", "owner": "nix-community", "repo": "plasma-manager", - "rev": "7911a0f8a44c7e8b29d031be3149ee8943144321", + "rev": "b24ed4b272256dfc1cc2291f89a9821d5f9e14b4", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index 21fc482..901c840 100644 --- a/flake.nix +++ b/flake.nix @@ -2,7 +2,7 @@ description = "My NixOS Configuration"; inputs = { - nixpkgs.url = "github:NixOS/nixpkgs/c5ae371f1a6a7fd27823"; + nixpkgs.url = "github:NixOS/nixpkgs"; catppuccin = { url = "github:catppuccin/nix"; @@ -41,7 +41,7 @@ }; apple-silicon = { - url = "github:nix-community/nixos-apple-silicon/release-2025-11-18"; + url = "github:nix-community/nixos-apple-silicon"; inputs.nixpkgs.follows = "nixpkgs"; }; }; diff --git a/system/hosts/peach/default.nix b/system/hosts/peach/default.nix index 806d871..e4c8d27 100644 --- a/system/hosts/peach/default.nix +++ b/system/hosts/peach/default.nix @@ -22,9 +22,7 @@ hardware.asahi = { enable = true; setupAsahiSound = true; - # extractPeripheralFirmware = false; - # This is broken because of flake git tracking. - # I can't figure out how to make it work. + # https://github.com/nix-community/nixos-apple-silicon/issues/299#issuecomment-2901508921 peripheralFirmwareDirectory = pkgs.requireFile { name = "firmware"; hashMode = "recursive"; From 1161b2bf26a3caa0b88531a37b8ab7a89a924c54 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Mon, 1 Dec 2025 13:08:45 -0500 Subject: [PATCH 079/282] switch back to upstream strawberry --- home/all.nix | 2 +- packages/overlay.nix | 4 - packages/strawberry/package.nix | 133 -------------------------------- 3 files changed, 1 insertion(+), 138 deletions(-) delete mode 100644 packages/strawberry/package.nix diff --git a/home/all.nix b/home/all.nix index 4802a2b..4d69308 100755 --- a/home/all.nix +++ b/home/all.nix @@ -20,7 +20,7 @@ (chromium.override { enableWideVine = true; }) - strawberry-master + strawberry spotify-player input-leap libreoffice-qt-fresh diff --git a/packages/overlay.nix b/packages/overlay.nix index 6467831..8557988 100644 --- a/packages/overlay.nix +++ b/packages/overlay.nix @@ -32,9 +32,5 @@ final: prev: { path = ./prismlauncher-master/package.nix; }) { }; - strawberry-master = prev.callPackage (builtins.path { - path = ./strawberry/package.nix; - }) { }; - widevine-firefox = prev.callPackage (builtins.path { path = ./widevine-firefox/package.nix; }) { }; } diff --git a/packages/strawberry/package.nix b/packages/strawberry/package.nix deleted file mode 100644 index ec1b476..0000000 --- a/packages/strawberry/package.nix +++ /dev/null @@ -1,133 +0,0 @@ -{ - alsa-lib, - boost, - chromaprint, - cmake, - fetchFromGitHub, - fftw, - glib-networking, - gnutls, - gst_all_1, - kdsingleapplication, - lib, - libXdmcp, - libcdio, - libebur128, - libidn2, - libmtp, - libpthreadstubs, - libpulseaudio, - libselinux, - libsepol, - libtasn1, - ninja, - nix-update-script, - p11-kit, - pkg-config, - qt6, - sqlite, - stdenv, - taglib, - util-linux, - sparsehash, - rapidjson, - - # tests - gtest, -}: - -stdenv.mkDerivation (finalAttrs: { - pname = "strawberry-master"; - version = "git-master"; - - src = fetchFromGitHub { - owner = "jonaski"; - repo = "strawberry"; - rev = "02d76f17f7f4a862019c360d4f8f61dbb0978208"; - hash = "sha256-/3dQbxwR09hriHZzrwUd0d4VYRBGMOtNDUyOWNmmKGk="; - }; - - # the big strawberry shown in the context menu is *very* much in your face, so use the grey version instead - postPatch = '' - substituteInPlace src/context/contextalbum.cpp \ - --replace-fail pictures/strawberry.png pictures/strawberry-grey.png - ''; - - buildInputs = [ - alsa-lib - boost - chromaprint - fftw - gnutls - kdsingleapplication - libXdmcp - libcdio - libebur128 - libidn2 - libmtp - libpthreadstubs - libtasn1 - qt6.qtbase - sqlite - taglib - sparsehash - rapidjson - ] - ++ lib.optionals stdenv.hostPlatform.isLinux [ - libpulseaudio - libselinux - libsepol - p11-kit - ] - ++ (with gst_all_1; [ - glib-networking - gst-libav - gst-plugins-bad - gst-plugins-base - gst-plugins-good - gst-plugins-ugly - gst-plugins-rs - gstreamer - ]); - - nativeBuildInputs = [ - cmake - ninja - pkg-config - qt6.qttools - qt6.wrapQtAppsHook - ] - ++ lib.optionals stdenv.hostPlatform.isLinux [ - util-linux - ]; - - cmakeFlags = with lib; [ (cmakeBool "ENABLE_GPOD" false) ]; - - checkInputs = [ gtest ]; - checkTarget = "strawberry_tests"; - preCheck = '' - # defaults to "xcb" otherwise, which requires a display - export QT_QPA_PLATFORM=offscreen - ''; - doCheck = true; - - postInstall = '' - qtWrapperArgs+=( - --prefix GST_PLUGIN_SYSTEM_PATH_1_0 : "$GST_PLUGIN_SYSTEM_PATH_1_0" - --prefix GIO_EXTRA_MODULES : "${glib-networking.out}/lib/gio/modules" - ) - ''; - - passthru.updateScript = nix-update-script { }; - - meta = { - description = "Music player and music collection organizer"; - homepage = "https://www.strawberrymusicplayer.org/"; - changelog = "https://raw.githubusercontent.com/jonaski/strawberry/${finalAttrs.finalPackage.version}/Changelog"; - license = lib.licenses.gpl3Only; - maintainers = with lib.maintainers; [ peterhoeg ]; - # upstream says darwin should work but they lack maintainers as of 0.6.6 - platforms = lib.platforms.linux; - mainProgram = "strawberry"; - }; -}) From 55642adb2f7379dcc1af6ec4a786ecb7a4234213 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Mon, 1 Dec 2025 13:09:44 -0500 Subject: [PATCH 080/282] switch back to upstream prismlauncher --- home/all.nix | 2 +- packages/overlay.nix | 8 -- packages/prismlauncher-master/package.nix | 133 ------------------ .../package.nix | 114 --------------- 4 files changed, 1 insertion(+), 256 deletions(-) delete mode 100644 packages/prismlauncher-master/package.nix delete mode 100644 packages/prismlauncher-unwrapped-master/package.nix diff --git a/home/all.nix b/home/all.nix index 4d69308..86a9a89 100755 --- a/home/all.nix +++ b/home/all.nix @@ -5,7 +5,7 @@ vesktop gh adwsteamgtk - prismlauncher-master + prismlauncher tmux fastfetch btop diff --git a/packages/overlay.nix b/packages/overlay.nix index 8557988..29ca5e0 100644 --- a/packages/overlay.nix +++ b/packages/overlay.nix @@ -24,13 +24,5 @@ final: prev: { inherit helium-widevine; }; - prismlauncher-unwrapped-master = prev.callPackage (builtins.path { - path = ./prismlauncher-unwrapped-master/package.nix; - }) { }; - - prismlauncher-master = prev.callPackage (builtins.path { - path = ./prismlauncher-master/package.nix; - }) { }; - widevine-firefox = prev.callPackage (builtins.path { path = ./widevine-firefox/package.nix; }) { }; } diff --git a/packages/prismlauncher-master/package.nix b/packages/prismlauncher-master/package.nix deleted file mode 100644 index 8088c4f..0000000 --- a/packages/prismlauncher-master/package.nix +++ /dev/null @@ -1,133 +0,0 @@ -{ - addDriverRunpath, - alsa-lib, - flite, - gamemode, - glfw3-minecraft, - jdk17, - jdk21, - jdk8, - kdePackages, - lib, - libGL, - libX11, - libXcursor, - libXext, - libXrandr, - libXxf86vm, - libjack2, - libpulseaudio, - libusb1, - mesa-demos, - openal, - pciutils, - pipewire, - prismlauncher-unwrapped-master, - stdenv, - symlinkJoin, - udev, - vulkan-loader, - xrandr, - - additionalLibs ? [ ], - additionalPrograms ? [ ], - controllerSupport ? stdenv.hostPlatform.isLinux, - gamemodeSupport ? stdenv.hostPlatform.isLinux, - jdks ? [ - jdk21 - jdk17 - jdk8 - ], - msaClientID ? null, - textToSpeechSupport ? stdenv.hostPlatform.isLinux, -}: - -assert lib.assertMsg ( - controllerSupport -> stdenv.hostPlatform.isLinux -) "controllerSupport only has an effect on Linux."; - -assert lib.assertMsg ( - textToSpeechSupport -> stdenv.hostPlatform.isLinux -) "textToSpeechSupport only has an effect on Linux."; - -let - prismlauncher' = prismlauncher-unwrapped-master.override { inherit msaClientID gamemodeSupport; }; -in - -symlinkJoin { - name = "prismlauncher-${prismlauncher'.version}"; - - paths = [ prismlauncher' ]; - - nativeBuildInputs = [ kdePackages.wrapQtAppsHook ]; - - buildInputs = [ - kdePackages.qtbase - kdePackages.qtsvg - ] - ++ lib.optional ( - lib.versionAtLeast kdePackages.qtbase.version "6" && stdenv.hostPlatform.isLinux - ) kdePackages.qtwayland; - - postBuild = '' - wrapQtAppsHook - ''; - - qtWrapperArgs = - let - runtimeLibs = [ - (lib.getLib stdenv.cc.cc) - ## native versions - glfw3-minecraft - openal - - ## openal - alsa-lib - libjack2 - libpulseaudio - pipewire - - ## glfw - libGL - libX11 - libXcursor - libXext - libXrandr - libXxf86vm - - udev # oshi - - vulkan-loader # VulkanMod's lwjgl - ] - ++ lib.optional textToSpeechSupport flite - ++ lib.optional gamemodeSupport gamemode.lib - ++ lib.optional controllerSupport libusb1 - ++ additionalLibs; - - runtimePrograms = [ - mesa-demos - pciutils # need lspci - xrandr # needed for LWJGL [2.9.2, 3) https://github.com/LWJGL/lwjgl/issues/128 - ] - ++ additionalPrograms; - - in - [ "--prefix PRISMLAUNCHER_JAVA_PATHS : ${lib.makeSearchPath "bin/java" jdks}" ] - ++ lib.optionals stdenv.hostPlatform.isLinux [ - "--set LD_LIBRARY_PATH ${addDriverRunpath.driverLink}/lib:${lib.makeLibraryPath runtimeLibs}" - "--prefix PATH : ${lib.makeBinPath runtimePrograms}" - ]; - - meta = { - inherit (prismlauncher'.meta) - description - longDescription - homepage - changelog - license - maintainers - mainProgram - platforms - ; - }; -} diff --git a/packages/prismlauncher-unwrapped-master/package.nix b/packages/prismlauncher-unwrapped-master/package.nix deleted file mode 100644 index af8e791..0000000 --- a/packages/prismlauncher-unwrapped-master/package.nix +++ /dev/null @@ -1,114 +0,0 @@ -{ - lib, - stdenv, - fetchFromGitHub, - cmake, - cmark, - extra-cmake-modules, - gamemode, - ghc_filesystem, - jdk17, - kdePackages, - ninja, - nix-update-script, - stripJavaArchivesHook, - tomlplusplus, - zlib, - qrencode, - msaClientID ? null, - gamemodeSupport ? stdenv.hostPlatform.isLinux, -}: -let - libnbtplusplus = fetchFromGitHub { - owner = "PrismLauncher"; - repo = "libnbtplusplus"; - rev = "23b955121b8217c1c348a9ed2483167a6f3ff4ad"; - hash = "sha256-yy0q+bky80LtK1GWzz7qpM+aAGrOqLuewbid8WT1ilk="; - }; -in -assert lib.assertMsg ( - gamemodeSupport -> stdenv.hostPlatform.isLinux -) "gamemodeSupport is only available on Linux."; -stdenv.mkDerivation (finalAttrs: { - pname = "prismlauncher-unwrapped-master"; - version = "git-master"; - - src = fetchFromGitHub { - owner = "PrismLauncher"; - repo = "PrismLauncher"; - rev = "8abf5ed7b1f31a89fad1b8d7fb1703639ca08426"; - hash = "sha256-URkD8zzvQ0g//9SQSP+gm9D8ypiiRpUGY2nMdJjjEr8="; - }; - - postUnpack = '' - rm -rf source/libraries/libnbtplusplus - ln -s ${libnbtplusplus} source/libraries/libnbtplusplus - ''; - - nativeBuildInputs = [ - cmake - ninja - extra-cmake-modules - jdk17 - stripJavaArchivesHook - ]; - - buildInputs = [ - cmark - ghc_filesystem - kdePackages.qtbase - kdePackages.qtnetworkauth - kdePackages.quazip - tomlplusplus - zlib - qrencode - ] - ++ lib.optional gamemodeSupport gamemode; - - # hardeningEnable = lib.optionals stdenv.hostPlatform.isLinux [ "pie" ]; - - cmakeFlags = [ - # downstream branding - (lib.cmakeFeature "Launcher_BUILD_PLATFORM" "nixpkgs") - ] - ++ lib.optionals (msaClientID != null) [ - (lib.cmakeFeature "Launcher_MSA_CLIENT_ID" (toString msaClientID)) - ] - ++ lib.optionals (lib.versionOlder kdePackages.qtbase.version "6") [ - (lib.cmakeFeature "Launcher_QT_VERSION_MAJOR" "5") - ] - ++ lib.optionals stdenv.hostPlatform.isDarwin [ - # we wrap our binary manually - (lib.cmakeFeature "INSTALL_BUNDLE" "nodeps") - # disable built-in updater - (lib.cmakeFeature "MACOSX_SPARKLE_UPDATE_FEED_URL" "''") - (lib.cmakeFeature "CMAKE_INSTALL_PREFIX" "${placeholder "out"}/Applications/") - ]; - - doCheck = true; - - dontWrapQtApps = true; - - passthru = { - updateScript = nix-update-script { }; - }; - - meta = { - description = "Free, open source launcher for Minecraft"; - longDescription = '' - Allows you to have multiple, separate instances of Minecraft (each with - their own mods, texture packs, saves, etc) and helps you manage them and - their associated options with a simple interface. - ''; - homepage = "https://prismlauncher.org/"; - changelog = "https://github.com/PrismLauncher/PrismLauncher/releases/tag/${finalAttrs.version}"; - license = lib.licenses.gpl3Only; - maintainers = with lib.maintainers; [ - minion3665 - Scrumplex - getchoo - ]; - mainProgram = "prismlauncher"; - platforms = lib.platforms.linux ++ lib.platforms.darwin; - }; -}) From ba3333287c0d5448211810b261325f821f61e3de Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Mon, 1 Dec 2025 13:23:20 -0500 Subject: [PATCH 081/282] update fish prompt --- home/terminal/fish/default.nix | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/home/terminal/fish/default.nix b/home/terminal/fish/default.nix index b5a93b5..3d88818 100644 --- a/home/terminal/fish/default.nix +++ b/home/terminal/fish/default.nix @@ -16,6 +16,17 @@ end ) + set -g fish_color_user 89dceb + + # Set host color based on hostname + if test (hostname) = "peach" + set -g fish_color_host fab387 + else if test (hostname) = "alien" + set -g fish_color_host 89b4fa + else if test (hostname) = "vm-aarch64" + set -g fish_color_host a6e3a1 + end + set -l user_host (set_color $fish_color_user)"$USER"(set_color normal)"@"(set_color $fish_color_host)(prompt_hostname)(set_color normal) set -l cwd (set_color $fish_color_cwd)(prompt_pwd)(set_color normal) From a4d9af6374559334fa498f21814875408f02b81f Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Mon, 1 Dec 2025 14:36:31 -0500 Subject: [PATCH 082/282] add java again --- home/all.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/home/all.nix b/home/all.nix index 86a9a89..a54d557 100755 --- a/home/all.nix +++ b/home/all.nix @@ -34,6 +34,8 @@ mpv gimp + jdk21_headless + kde-rounded-corners kdePackages.partitionmanager From 570b2d334afeaf25b4cf5c5a2a272a6842b1b3e5 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Mon, 1 Dec 2025 14:36:31 -0500 Subject: [PATCH 083/282] fix mesa 25.3 regression --- system/hosts/peach/default.nix | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/system/hosts/peach/default.nix b/system/hosts/peach/default.nix index e4c8d27..b5729b9 100644 --- a/system/hosts/peach/default.nix +++ b/system/hosts/peach/default.nix @@ -33,6 +33,15 @@ }; }; + hardware.graphics.package = + # Workaround for Mesa 25.3.0 regression + # https://github.com/nix-community/nixos-apple-silicon/issues/380 + assert pkgs.mesa.version == "25.3.0"; + (import (fetchTarball { + url = "https://github.com/NixOS/nixpkgs/archive/c5ae371f1a6a7fd27823bc500d9390b38c05fa55.tar.gz"; + sha256 = "sha256-4PqRErxfe+2toFJFgcRKZ0UI9NSIOJa+7RXVtBhy4KE="; + }) { localSystem = pkgs.stdenv.hostPlatform; }).mesa; + swapDevices = [ { device = "/swapfile"; From 1cc7f07dbe2df406b044a7e6af491165574c35de Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Mon, 1 Dec 2025 15:59:05 -0500 Subject: [PATCH 084/282] add spotifyd --- home/all.nix | 18 +++++++ packages/overlay.nix | 2 + packages/spotifyd/package.nix | 88 +++++++++++++++++++++++++++++++++++ 3 files changed, 108 insertions(+) create mode 100644 packages/spotifyd/package.nix diff --git a/home/all.nix b/home/all.nix index a54d557..b9a767f 100755 --- a/home/all.nix +++ b/home/all.nix @@ -42,6 +42,24 @@ colloid-icon-theme ]; + services = { + spotifyd = { + enable = true; + settings = { + global = { + device_type = "computer"; + dbus_type = "session"; + disable_discovery = true; + use_mpris = true; + bitrate = 320; + initial_volume = 100; + volume_normalisation = true; + normalisation_pregain = -10; + }; + }; + }; + }; + catppuccin = { enable = true; cursors.enable = false; diff --git a/packages/overlay.nix b/packages/overlay.nix index 29ca5e0..71bf926 100644 --- a/packages/overlay.nix +++ b/packages/overlay.nix @@ -24,5 +24,7 @@ final: prev: { inherit helium-widevine; }; + spotifyd = prev.callPackage (builtins.path { path = ./spotifyd/package.nix; }) { }; + widevine-firefox = prev.callPackage (builtins.path { path = ./widevine-firefox/package.nix; }) { }; } diff --git a/packages/spotifyd/package.nix b/packages/spotifyd/package.nix new file mode 100644 index 0000000..1966d28 --- /dev/null +++ b/packages/spotifyd/package.nix @@ -0,0 +1,88 @@ +{ + lib, + stdenv, + config, + alsa-lib, + cmake, + dbus, + fetchFromGitHub, + libjack2, + libpulseaudio, + nix-update-script, + openssl, + pkg-config, + portaudio, + rustPlatform, + testers, + withALSA ? stdenv.hostPlatform.isLinux, + withJack ? stdenv.hostPlatform.isLinux, + withMpris ? stdenv.hostPlatform.isLinux, + withPortAudio ? stdenv.hostPlatform.isDarwin, + withPulseAudio ? config.pulseaudio or stdenv.hostPlatform.isLinux, +}: + +rustPlatform.buildRustPackage (finalAttrs: { + pname = "spotifyd"; + version = "0.4.2"; + + src = fetchFromGitHub { + owner = "Spotifyd"; + repo = "spotifyd"; + tag = "v${finalAttrs.version}"; + hash = "sha256-+t6z2cenw0fU5onl5F5vtk7Hr24IzTCAee+Lcnd7aT4="; + }; + + cargoHash = "sha256-rv4FWyciv6vDKtD7moJppY3tOJb0B3ezE9HgCLNhIo8="; + + nativeBuildInputs = [ + cmake + pkg-config + rustPlatform.bindgenHook + ]; + + buildInputs = + lib.optionals stdenv.hostPlatform.isLinux [ openssl ] + # The `dbus_mpris` feature works on other platforms, but only requires `dbus` on Linux + ++ lib.optional (withMpris && stdenv.hostPlatform.isLinux) dbus + ++ lib.optional (withALSA || withJack) alsa-lib + ++ lib.optional withJack libjack2 + ++ lib.optional withPulseAudio libpulseaudio + ++ lib.optional withPortAudio portaudio; + + # `aws-lc-sys` fails with this enabled + hardeningDisable = [ "strictoverflow" ]; + + buildNoDefaultFeatures = true; + buildFeatures = + lib.optional withALSA "alsa_backend" + ++ lib.optional withJack "rodiojack_backend" + ++ lib.optional withMpris "dbus_mpris" + ++ lib.optional withPortAudio "portaudio_backend" + ++ lib.optional withPulseAudio "pulseaudio_backend"; + + checkFlags = lib.optionals stdenv.hostPlatform.isDarwin [ + # `assertion failed: shell.is_some()` + # Internally it's trying to query the user's shell through `dscl`. This is bad + # https://github.com/Spotifyd/spotifyd/blob/8777c67988508d3623d3f6b81c9379fb071ac7dd/src/utils.rs#L45-L47 + "--skip=utils::tests::test_ffi_discovery" + ]; + + passthru = { + tests.version = testers.testVersion { package = finalAttrs.finalPackage; }; + updateScript = nix-update-script { }; + }; + + meta = { + description = "Open source Spotify client running as a UNIX daemon"; + homepage = "https://spotifyd.rs/"; + changelog = "https://github.com/Spotifyd/spotifyd/releases/tag/${toString finalAttrs.src.tag}"; + license = lib.licenses.gpl3Plus; + maintainers = with lib.maintainers; [ + anderslundstedt + Br1ght0ne + getchoo + ]; + platforms = lib.platforms.unix; + mainProgram = "spotifyd"; + }; +}) From 7c1b4af5e2e8fa9551df333b5972872a8b199559 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Mon, 1 Dec 2025 19:34:30 -0500 Subject: [PATCH 085/282] add calibre --- home/all.nix | 1 + system/all.nix | 17 ++++++++--------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/home/all.nix b/home/all.nix index b9a767f..b00056b 100755 --- a/home/all.nix +++ b/home/all.nix @@ -33,6 +33,7 @@ musescore mpv gimp + calibre jdk21_headless diff --git a/system/all.nix b/system/all.nix index 24d79f6..1547ac7 100755 --- a/system/all.nix +++ b/system/all.nix @@ -117,15 +117,14 @@ enable = true; useRoutingFeatures = "client"; }; - }; - - services.printing.enable = true; - - services.pipewire = { - enable = true; - alsa.enable = true; - alsa.support32Bit = true; - pulse.enable = true; + printing.enable = true; + pipewire = { + enable = true; + alsa.enable = true; + alsa.support32Bit = true; + pulse.enable = true; + }; + udisks2.enable = true; }; virtualisation = { From eaa38c00eea062641821171d5894ae23c892ee99 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Mon, 1 Dec 2025 20:27:42 -0500 Subject: [PATCH 086/282] switch vm to parallels --- hardware/vm-aarch64.nix | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/hardware/vm-aarch64.nix b/hardware/vm-aarch64.nix index e8b5fd9..4328981 100644 --- a/hardware/vm-aarch64.nix +++ b/hardware/vm-aarch64.nix @@ -4,29 +4,29 @@ { config, lib, pkgs, modulesPath, ... }: { - imports = - [ (modulesPath + "/profiles/qemu-guest.nix") - ]; + imports = [ ]; - boot.initrd.availableKernelModules = [ "xhci_pci" "virtio_pci" "usbhid" "usb_storage" "sr_mod" ]; + boot.initrd.availableKernelModules = [ "ehci_pci" "xhci_pci" "usbhid" "sr_mod" ]; boot.initrd.kernelModules = [ ]; boot.kernelModules = [ ]; boot.extraModulePackages = [ ]; fileSystems."/" = - { device = "/dev/disk/by-uuid/1f30a8f4-8d6d-47eb-a2c1-82c311b69695"; + { device = "/dev/disk/by-uuid/48e34f6b-322d-4f45-9eae-b42eabe5c6e7"; fsType = "ext4"; }; fileSystems."/boot" = - { device = "/dev/disk/by-uuid/2438-C64A"; + { device = "/dev/disk/by-uuid/A1D8-5A25"; fsType = "vfat"; options = [ "fmask=0077" "dmask=0077" ]; }; swapDevices = - [ { device = "/dev/disk/by-uuid/5a1e7296-e7d2-4e66-9e1f-505b80f5ff3b"; } + [ { device = "/dev/disk/by-uuid/82d788c1-f166-4c78-9dbc-b3fd7d731307"; } ]; nixpkgs.hostPlatform = lib.mkDefault "aarch64-linux"; + hardware.parallels.enable = true; + nixpkgs.config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [ "prl-tools" ]; } From 3d8e938960b32c1d159f3da0082344e6af952280 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Tue, 2 Dec 2025 09:53:47 -0500 Subject: [PATCH 087/282] update fish prompt --- home/terminal/fish/default.nix | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/home/terminal/fish/default.nix b/home/terminal/fish/default.nix index 3d88818..8a8334a 100644 --- a/home/terminal/fish/default.nix +++ b/home/terminal/fish/default.nix @@ -25,6 +25,8 @@ set -g fish_color_host 89b4fa else if test (hostname) = "vm-aarch64" set -g fish_color_host a6e3a1 + else if test (uname) = "Darwin" + set -g fish_color_host f9e2af end set -l user_host (set_color $fish_color_user)"$USER"(set_color normal)"@"(set_color $fish_color_host)(prompt_hostname)(set_color normal) @@ -33,8 +35,10 @@ set -l git_info (fish_git_prompt) - echo -n -s "$user_host" " " "$nix_shell_info" "$cwd" "$git_info" "> " + echo -s "$user_host" " " "$cwd" "$git_info $nix_shell_info" + echo -n -s "> " ''; + # echo -n -s "$user_host" " " "$nix_shell_info" "$cwd" "$git_info" "> " }; nix-shell = { description = "Wrapper for nix-shell that runs fish by default"; From 353d8760a6071c42d4240843ca8073bfeee102b1 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Tue, 2 Dec 2025 12:09:46 -0500 Subject: [PATCH 088/282] various updates to firefox --- flake.nix | 1 - home/browsers/firefox/default.nix | 96 ++++++++- home/browsers/firefox/userChrome.css | 298 ++++++++------------------- system/browsers/firefox.nix | 96 --------- 4 files changed, 177 insertions(+), 314 deletions(-) delete mode 100644 system/browsers/firefox.nix diff --git a/flake.nix b/flake.nix index 901c840..fbacf41 100644 --- a/flake.nix +++ b/flake.nix @@ -80,7 +80,6 @@ ]; } ./system/all.nix - ./system/browsers/firefox.nix ./system/shell/fish.nix ./system/tailscale/default.nix ./system/hosts/${hostname}/default.nix diff --git a/home/browsers/firefox/default.nix b/home/browsers/firefox/default.nix index c4870d7..9da1d6b 100644 --- a/home/browsers/firefox/default.nix +++ b/home/browsers/firefox/default.nix @@ -2,8 +2,17 @@ { pkgs, ... }: { + home.sessionVariables = rec { + MOZ_GMP_PATH = "${pkgs.widevine-firefox}/gmp-widevinecdm/system-installed"; + }; + programs.firefox = { enable = true; + package = pkgs.firefox.override { + nativeMessagingHosts = [ + pkgs.firefoxpwa + ]; + }; profiles = { default = { id = 0; @@ -21,10 +30,14 @@ privacy-badger sponsorblock pwas-for-firefox + control-panel-for-twitter ]; settings = { "{7a7a4a92-a2a0-41d1-9fd7-1e92480d612d}".settings = { - dbInChromeStorage = true; # required for Stylus + force = true; + settings = { + dbInChromeStorage = true; + }; }; }; }; @@ -35,6 +48,7 @@ "extensions.update.enabled" = false; "browser.search.defaultenginename" = "google"; "browser.search.order.1" = "google"; + "browser.toolbars.bookmarks.visibility" = "newtab"; "signon.rememberSignons" = false; "widget.use-xdg-desktop-portal.file-picker" = 1; @@ -43,15 +57,79 @@ "browser.cache.disk.enable" = true; # Set to false if you have a HDD "browser.warnOnQuitShortcut" = false; "toolkit.legacyUserProfileCustomizations.stylesheets" = true; - - # "mousewheel.default.delta_multiplier_x" = 100; - # "mousewheel.default.delta_multiplier_y" = 100; - # "mousewheel.default.delta_multiplier_z" = 100; - - # Firefox 75+ remembers the last workspace it was opened on as part of its session management. - # This is annoying, because I can have a blank workspace, click Firefox from the launcher, and - # then have Firefox open on some other workspace. "widget.disable-workspace-management" = true; + "browser.contentblocking.category" = { + Value = "strict"; + Status = "locked"; + }; + "widget.gtk.global-menu.enabled" = true; + "widget.gtk.global-menu.wayland.enabled" = true; + "browser.tabs.inTitlebar" = 0; + "extensions.pocket.enabled" = false; + "extensions.screenshots.disabled" = true; + "browser.topsites.contile.enabled" = false; + "browser.formfill.enable" = false; + "browser.search.suggest.enabled" = false; + "browser.search.suggest.enabled.private" = false; + "browser.urlbar.suggest.searches" = false; + "browser.urlbar.showSearchSuggestionsFirst" = false; + "browser.newtabpage.activity-stream.feeds.section.topstories" = false; + "browser.newtabpage.activity-stream.feeds.snippets" = false; + "browser.newtabpage.activity-stream.feeds.topsites" = false; + "browser.newtabpage.activity-stream.section.highlights.includePocket" = false; + "browser.newtabpage.activity-stream.section.highlights.includeBookmarks" = false; + "browser.newtabpage.activity-stream.section.highlights.includeDownloads" = false; + "browser.newtabpage.activity-stream.section.highlights.includeVisited" = false; + "browser.newtabpage.activity-stream.showSponsored" = false; + "browser.newtabpage.activity-stream.system.showSponsored" = false; + "browser.newtabpage.activity-stream.showSponsoredTopSites" = false; + "browser.newtabpage.activity-stream.showWeather" = false; + + "media.gmp-widevinecdm.version" = "system-installed"; + "media.gmp-widevinecdm.visible" = true; + "media.gmp-widevinecdm.enabled" = true; + "media.gmp-widevinecdm.autoupdate" = false; + + "media.eme.enabled" = true; + "media.eme.encrypted-media-encryption-scheme.enabled" = true; + + # Vertical tabs + "sidebar.verticalTabs" = true; + "sidebar.verticalTabs.dragToPinPromo.dismissed" = true; + "browser.uiCustomization.navBarWhenVerticalTabs" = [ + "back-button" + "forward-button" + "stop-reload-button" + "urlbar-container" + "downloads-button" + "fxa-toolbar-menu-button" + "unified-extensions-button" + ]; + }; + bookmarks = { + force = true; + settings = [ + { + name = "Nix sites"; + toolbar = true; + bookmarks = [ + { + name = "NixOS"; + url = "https://nixos.org/"; + } + ]; + } + { + name = "ovips.us.to"; + toolbar = true; + bookmarks = [ + { + name = "ovips.us.to"; + url = "https://ovips.us.to/"; + } + ]; + } + ]; }; search = { force = true; diff --git a/home/browsers/firefox/userChrome.css b/home/browsers/firefox/userChrome.css index 76b6b55..277cfa6 100644 --- a/home/browsers/firefox/userChrome.css +++ b/home/browsers/firefox/userChrome.css @@ -1,223 +1,105 @@ -@media (prefers-color-scheme: light) { - :root { - /* bookmark_text */ - --toolbar-color: #4c4f69ff !important; - - /* button_background_active */ - --toolbarbutton-active-background: rgba(156, 160, 176, 1) !important; - - /* button_background_hover */ - --toolbarbutton-hover-background: rgba(204, 208, 218, 1) !important; - - /* icons */ - --toolbarbutton-icon-fill: #4c4f69ff !important; - - /* icons_attention */ - --toolbarbutton-icon-fill-attention: #4c4f69ff !important; - - /* frame */ - --toolbox-non-lwt-bgcolor: #dce0e8ff !important; - - /* frame_inactive */ - &:where([tabsintitlebar]) { - --toolbox-non-lwt-bgcolor-inactive: #dce0e8ff !important; - } - - /* popup */ - --arrowpanel-background: #eff1f5ff !important; - - /* popup_border */ - --arrowpanel-border-color: #9ca0b0ff !important; - - /* popup_highlight */ - --urlbarView-highlight-background: #9ca0b0ff !important; - - /* popup_highlight_text */ - --urlbarView-highlight-color: #4c4f69ff !important; - - /* popup_text */ - --arrowpanel-color: #4c4f69ff !important; - - /* tab_background_text */ - --toolbox-non-lwt-textcolor: #4c4f69ff !important; - - /* tab_line */ - .tab-background[selected]:not([multiselected]) { - outline: 1px solid #9ca0b0ff; - outline-offset: -1px; - } - - .tab-background[multiselected] { - --focus-outline-color: #9ca0b0ff; - } - - /* tab_loading */ - #tabbrowser-tabs { - --tab-loading-fill: #9ca0b0ff !important; - } - - /* tab_selected */ - --tab-selected-bgcolor: #eff1f5ff !important; - - /* tab_text */ - --tab-selected-textcolor: #4c4f69ff !important; - - /* toolbar */ - --toolbar-bgcolor: #eff1f5ff !important; - - /* toolbar_bottom_separator */ - --chrome-content-separator-color: #eff1f5ff !important; - - /* toolbar_field */ - --input-bgcolor: #e6e9efff !important; - --toolbar-field-background-color: var(--input-bgcolor) !important; - - /* toolbar_field_border */ - --input-border-color: #eff1f5ff !important; - --toolbar-field-border-color: var(--input-border-color) !important; - - /* toolbar_field_border_focus */ - --toolbar-field-focus-border-color: #6c7086ff !important; - - /* toolbar_field_focus */ - --toolbar-field-focus-background-color: #eff1f5ff !important; - - /* toolbar_field_highlight */ - #urlbar-input, - .searchbar-textbox { - &:focus::selection { - background-color: #6c7086ff; - } - } - - /* toolbar_field_highlight_text */ - #urlbar-input, - .searchbar-textbox { - &:focus::selection { - color: #4c4f69ff; - } - } - - /* toolbar_field_text */ - --input-color: #4c4f69ff !important; - --toolbar-field-color: var(--input-color) !important; - - /* toolbar_field_text_focus */ - --toolbar-field-focus-color: #4c4f69ff !important; - - /* toolbar_vertical_separator */ - --toolbarseparator-color: #6c7086ff !important; - } -} - +/* Dark theme */ @media (prefers-color-scheme: dark) { :root { - /* bookmark_text */ - --toolbar-color: #cdd6f4ff !important; - - /* button_background_active */ - --toolbarbutton-active-background: rgba(108, 112, 134, 1) !important; - - /* button_background_hover */ - --toolbarbutton-hover-background: rgba(49, 50, 68, 1) !important; - - /* icons */ - --toolbarbutton-icon-fill: #cdd6f4ff !important; - - /* icons_attention */ - --toolbarbutton-icon-fill-attention: #cdd6f4ff !important; - - /* frame */ - --toolbox-non-lwt-bgcolor: #11111bff !important; - - /* frame_inactive */ - &:where([tabsintitlebar]) { - --toolbox-non-lwt-bgcolor-inactive: #11111bff !important; + .tabbrowser-tab[selected="true"] .tab-background { + border: 1px solid #313244 !important; } - - /* popup */ - --arrowpanel-background: #1e1e2eff !important; - - /* popup_border */ - --arrowpanel-border-color: #6c7086ff !important; - - /* popup_highlight */ - --urlbarView-highlight-background: #6c7086ff !important; - - /* popup_highlight_text */ - --urlbarView-highlight-color: #cdd6f4ff !important; - - /* popup_text */ - --arrowpanel-color: #cdd6f4ff !important; - - /* tab_background_text */ - --toolbox-non-lwt-textcolor: #cdd6f4ff !important; - - /* tab_line */ + --toolbar-bgcolor: rgb(30, 30, 46) !important; + --toolbox-non-lwt-bgcolor: rgb(17, 17, 27) !important; + --toolbox-non-lwt-textcolor: rgb(205, 214, 244) !important; + --input-bgcolor: rgb(24, 24, 37) !important; + --toolbar-field-background-color: var(--input-bgcolor) !important; + --input-color: rgb(205, 214, 244) !important; + --toolbar-field-color: var(--input-color) !important; .tab-background[selected]:not([multiselected]) { - outline: 1px solid #6c7086ff; + outline: 1px solid rgb(49, 50, 68); outline-offset: -1px; } - .tab-background[multiselected] { - --focus-outline-color: #6c7086ff; + --focus-outline-color: rgb(49, 50, 68); } - - /* tab_loading */ + --arrowpanel-background: rgb(30, 30, 46) !important; + --arrowpanel-color: rgb(205, 214, 244) !important; + --toolbarbutton-active-background: rgb(108, 112, 134) !important; + &:where([tabsintitlebar]) { + --toolbox-non-lwt-bgcolor-inactive: rgb(17, 17, 27) !important; + } + --toolbarbutton-icon-fill-attention: rgb(249, 226, 175) !important; + --toolbarbutton-icon-fill: rgb(205, 214, 244) !important; + --arrowpanel-border-color: rgb(49, 50, 68) !important; + --urlbarView-highlight-color: rgb(205, 214, 244) !important; + --urlbarView-highlight-background: rgb(108, 112, 134) !important; #tabbrowser-tabs { - --tab-loading-fill: #6c7086ff !important; + --tab-loading-fill: rgb(249, 226, 175) !important; } - - /* tab_selected */ - --tab-selected-bgcolor: #1e1e2eff !important; - - /* tab_text */ - --tab-selected-textcolor: #cdd6f4ff !important; - - /* toolbar */ - --toolbar-bgcolor: #1e1e2eff !important; - - /* toolbar_bottom_separator */ - --chrome-content-separator-color: #1e1e2eff !important; - - /* toolbar_field */ - --input-bgcolor: #181825ff !important; - --toolbar-field-background-color: var(--input-bgcolor) !important; - - /* toolbar_field_border */ - --input-border-color: #1e1e2eff !important; + --tab-selected-bgcolor: rgb(30, 30, 46) !important; + --tab-selected-textcolor: rgb(205, 214, 244) !important; + --chrome-content-separator-color: rgb(30, 30, 46) !important; + --toolbar-field-focus-border-color: rgb(49, 50, 68) !important; + --input-border-color: rgb(49, 50, 68) !important; --toolbar-field-border-color: var(--input-border-color) !important; - - /* toolbar_field_border_focus */ - --toolbar-field-focus-border-color: #6c7086ff !important; - - /* toolbar_field_focus */ - --toolbar-field-focus-background-color: #1e1e2eff !important; - - /* toolbar_field_highlight */ - #urlbar-input, - .searchbar-textbox { - &:focus::selection { - background-color: #6c7086ff; - } + --toolbar-field-focus-background-color: rgb(30, 30, 46) !important; + #urlbar-input:focus::selection, + .searchbar-textbox:focus::selection { + color: rgb(30, 30, 46); } - - /* toolbar_field_highlight_text */ - #urlbar-input, - .searchbar-textbox { - &:focus::selection { - color: #cdd6f4ff; - } + #urlbar-input:focus::selection, + .searchbar-textbox:focus::selection { + background-color: rgb(249, 226, 175); } - - /* toolbar_field_text */ - --input-color: #cdd6f4ff !important; - --toolbar-field-color: var(--input-color) !important; - - /* toolbar_field_text_focus */ - --toolbar-field-focus-color: #cdd6f4ff !important; - - /* toolbar_vertical_separator */ - --toolbarseparator-color: #6c7086ff !important; + --toolbarseparator-color: rgb(249, 226, 175) !important; + } +} + +/* Light theme */ +@media (prefers-color-scheme: light) { + :root { + .tabbrowser-tab[selected="true"] .tab-background { + border: 1px solid #ccd0da !important; + } + --toolbar-bgcolor: rgb(239, 241, 245) !important; + --toolbox-non-lwt-bgcolor: rgb(220, 224, 232) !important; + --toolbox-non-lwt-textcolor: rgb(76, 79, 105) !important; + --input-bgcolor: rgb(230, 233, 239) !important; + --toolbar-field-background-color: var(--input-bgcolor) !important; + --input-color: rgb(76, 79, 105) !important; + --toolbar-field-color: var(--input-color) !important; + .tab-background[selected]:not([multiselected]) { + outline: 1px solid rgb(223, 142, 29); + outline-offset: -1px; + } + .tab-background[multiselected] { + --focus-outline-color: rgb(223, 142, 29); + } + --arrowpanel-background: rgb(239, 241, 245) !important; + --arrowpanel-color: rgb(76, 79, 105) !important; + --toolbarbutton-active-background: rgb(156, 160, 176) !important; + &:where([tabsintitlebar]) { + --toolbox-non-lwt-bgcolor-inactive: rgb(220, 224, 232) !important; + } + --toolbarbutton-icon-fill-attention: rgb(223, 142, 29) !important; + --toolbarbutton-icon-fill: rgb(76, 79, 105) !important; + --arrowpanel-border-color: rgb(223, 142, 29) !important; + --urlbarView-highlight-color: rgb(76, 79, 105) !important; + --urlbarView-highlight-background: rgb(156, 160, 176) !important; + #tabbrowser-tabs { + --tab-loading-fill: rgb(223, 142, 29) !important; + } + --tab-selected-bgcolor: rgb(239, 241, 245) !important; + --tab-selected-textcolor: rgb(76, 79, 105) !important; + --chrome-content-separator-color: rgb(239, 241, 245) !important; + --toolbar-field-focus-border-color: rgb(223, 142, 29) !important; + --input-border-color: rgb(239, 241, 245) !important; + --toolbar-field-border-color: var(--input-border-color) !important; + --toolbar-field-focus-background-color: rgb(239, 241, 245) !important; + #urlbar-input:focus::selection, + .searchbar-textbox:focus::selection { + color: rgb(239, 241, 245); + } + #urlbar-input:focus::selection, + .searchbar-textbox:focus::selection { + background-color: rgb(223, 142, 29); + } + --toolbarseparator-color: rgb(223, 142, 29) !important; } } diff --git a/system/browsers/firefox.nix b/system/browsers/firefox.nix deleted file mode 100644 index c76789b..0000000 --- a/system/browsers/firefox.nix +++ /dev/null @@ -1,96 +0,0 @@ -# https://discourse.nixos.org/t/declare-firefox-extensions-and-settings/36265 -{ pkgs, ... }: - -let - lock-false = { - Value = false; - Status = "locked"; - }; - lock-true = { - Value = true; - Status = "locked"; - }; -in -{ - environment.variables = rec { - MOZ_GMP_PATH = "${pkgs.widevine-firefox}/gmp-widevinecdm/system-installed"; - }; - - programs = { - firefox = { - enable = true; - nativeMessagingHosts.packages = [ pkgs.firefoxpwa ]; - languagePacks = [ "en-US" ]; - - # ---- POLICIES ---- - # Check about:policies#documentation for options. - policies = { - DisableTelemetry = true; - DisableFirefoxStudies = true; - EnableTrackingProtection = { - Value = true; - Locked = true; - Cryptomining = true; - Fingerprinting = true; - }; - DisablePocket = true; - DisableFirefoxAccounts = true; - DisableAccounts = true; - DisableFirefoxScreenshots = true; - OverrideFirstRunPage = ""; - OverridePostUpdatePage = ""; - DontCheckDefaultBrowser = true; - DisplayBookmarksToolbar = "newtab"; # alternatives: "always" or "newtab" - DisplayMenuBar = "always"; # alternatives: "always", "never" or "default-on" - SearchBar = "unified"; # alternative: "separate" - - # ---- EXTENSIONS ---- - # Check about:support for extension/add-on ID strings. - # Valid strings for installation_mode are "allowed", "blocked", - # "force_installed" and "normal_installed". - # ExtensionSettings = { - # # blocks all addons except the ones specified below - # "*".installation_mode = "blocked"; - # }; - - # ---- PREFERENCES ---- - # Check about:config for options. - Preferences = { - "browser.contentblocking.category" = { - Value = "strict"; - Status = "locked"; - }; - "widget.use-xdg-desktop-portal.file-picker" = 1; - "widget.gtk.global-menu.enabled" = lock-true; - "widget.gtk.global-menu.wayland.enabled" = lock-true; - "browser.tabs.inTitlebar" = 0; - "extensions.pocket.enabled" = lock-false; - "extensions.screenshots.disabled" = lock-true; - "browser.topsites.contile.enabled" = lock-false; - "browser.formfill.enable" = lock-false; - "browser.search.suggest.enabled" = lock-false; - "browser.search.suggest.enabled.private" = lock-false; - "browser.urlbar.suggest.searches" = lock-false; - "browser.urlbar.showSearchSuggestionsFirst" = lock-false; - "browser.newtabpage.activity-stream.feeds.section.topstories" = lock-false; - "browser.newtabpage.activity-stream.feeds.snippets" = lock-false; - "browser.newtabpage.activity-stream.section.highlights.includePocket" = lock-false; - "browser.newtabpage.activity-stream.section.highlights.includeBookmarks" = lock-false; - "browser.newtabpage.activity-stream.section.highlights.includeDownloads" = lock-false; - "browser.newtabpage.activity-stream.section.highlights.includeVisited" = lock-false; - "browser.newtabpage.activity-stream.showSponsored" = lock-false; - "browser.newtabpage.activity-stream.system.showSponsored" = lock-false; - "browser.newtabpage.activity-stream.showSponsoredTopSites" = lock-false; - - "media.gmp-widevinecdm.version" = "system-installed"; - "media.gmp-widevinecdm.visible" = lock-true; - "media.gmp-widevinecdm.enabled" = lock-true; - "media.gmp-widevinecdm.autoupdate" = lock-false; - - "media.eme.enabled" = lock-true; - "media.eme.encrypted-media-encryption-scheme.enabled" = lock-true; - }; - }; - }; - }; -} From 3df13bf8c9af5dd497095dcae2dd6f5dedc3a8db Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Tue, 2 Dec 2025 14:07:10 -0500 Subject: [PATCH 089/282] update helium --- packages/helium-browser/package.nix | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/packages/helium-browser/package.nix b/packages/helium-browser/package.nix index 6d21239..6950eed 100644 --- a/packages/helium-browser/package.nix +++ b/packages/helium-browser/package.nix @@ -33,11 +33,11 @@ let architectures = { "x86_64-linux" = { arch = "x86_64"; - hash = "sha256-VB218vOY/9tI97Yhx2MNlNPb46jJHv/FqY96tJaokBE="; + hash = "sha256-DLcJCECE5yWcwZuRwNJs3q+sqrZbTbouGF5bDTIFYWM="; }; "aarch64-linux" = { arch = "arm64"; - hash = "sha256-SApc3CSrYm6MSRgqtJS7IckUVJuoWeUMUgGxqgKakBg="; + hash = "sha256-c4XHvq6H60RfoChyrdADGeazZ0hxt72GoZE4A0bwzNU="; }; }; @@ -48,7 +48,7 @@ let in stdenv.mkDerivation rec { pname = "helium-browser"; - version = "0.6.7.1"; + version = "0.6.9.1"; xzName = "helium-${version}-${platformInfo.arch}_linux"; src = fetchurl { @@ -122,7 +122,9 @@ stdenv.mkDerivation rec { install -Dm644 product_logo_256.png $out/share/icons/hicolor/256x256/apps/helium.png install -Dm644 helium.desktop $out/share/applications/helium.desktop substituteInPlace $out/share/applications/helium.desktop \ - --replace-fail 'Exec=chromium' "Exec=$out/bin/helium-browser" \ + --replace-fail 'Exec=chromium' "Exec=$out/bin/helium-browser" + substituteInPlace $out/share/applications/helium.desktop \ + --replace-fail 'Icon=helium' 'Icon=web-browser' runHook postInstall ''; From 7e9ff827f8b6596b9ec9f0f7dab35d30ae54d83a Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Tue, 2 Dec 2025 16:03:32 -0500 Subject: [PATCH 090/282] more firefox changes --- .../theme/colors.css} | 36 +++++----- home/browsers/firefox/chrome/theme/hide.css | 7 ++ home/browsers/firefox/chrome/userChrome.css | 2 + home/browsers/firefox/default.nix | 66 ++++++++++++++++++- 4 files changed, 91 insertions(+), 20 deletions(-) rename home/browsers/firefox/{userChrome.css => chrome/theme/colors.css} (78%) create mode 100644 home/browsers/firefox/chrome/theme/hide.css create mode 100644 home/browsers/firefox/chrome/userChrome.css diff --git a/home/browsers/firefox/userChrome.css b/home/browsers/firefox/chrome/theme/colors.css similarity index 78% rename from home/browsers/firefox/userChrome.css rename to home/browsers/firefox/chrome/theme/colors.css index 277cfa6..065ef5c 100644 --- a/home/browsers/firefox/userChrome.css +++ b/home/browsers/firefox/chrome/theme/colors.css @@ -4,7 +4,7 @@ .tabbrowser-tab[selected="true"] .tab-background { border: 1px solid #313244 !important; } - --toolbar-bgcolor: rgb(30, 30, 46) !important; + --toolbar-bgcolor: rgb(24, 24, 37) !important; --toolbox-non-lwt-bgcolor: rgb(17, 17, 27) !important; --toolbox-non-lwt-textcolor: rgb(205, 214, 244) !important; --input-bgcolor: rgb(24, 24, 37) !important; @@ -18,36 +18,36 @@ .tab-background[multiselected] { --focus-outline-color: rgb(49, 50, 68); } - --arrowpanel-background: rgb(30, 30, 46) !important; + --arrowpanel-background: rgb(49, 50, 68) !important; --arrowpanel-color: rgb(205, 214, 244) !important; --toolbarbutton-active-background: rgb(108, 112, 134) !important; &:where([tabsintitlebar]) { --toolbox-non-lwt-bgcolor-inactive: rgb(17, 17, 27) !important; } - --toolbarbutton-icon-fill-attention: rgb(249, 226, 175) !important; + --toolbarbutton-icon-fill-attention: rgb(205, 214, 244) !important; --toolbarbutton-icon-fill: rgb(205, 214, 244) !important; --arrowpanel-border-color: rgb(49, 50, 68) !important; --urlbarView-highlight-color: rgb(205, 214, 244) !important; --urlbarView-highlight-background: rgb(108, 112, 134) !important; #tabbrowser-tabs { - --tab-loading-fill: rgb(249, 226, 175) !important; + --tab-loading-fill: rgb(205, 214, 244) !important; } --tab-selected-bgcolor: rgb(30, 30, 46) !important; --tab-selected-textcolor: rgb(205, 214, 244) !important; - --chrome-content-separator-color: rgb(30, 30, 46) !important; + --chrome-content-separator-color: rgb(49, 50, 68) !important; --toolbar-field-focus-border-color: rgb(49, 50, 68) !important; --input-border-color: rgb(49, 50, 68) !important; --toolbar-field-border-color: var(--input-border-color) !important; --toolbar-field-focus-background-color: rgb(30, 30, 46) !important; #urlbar-input:focus::selection, .searchbar-textbox:focus::selection { - color: rgb(30, 30, 46); + color: rgb(49, 50, 68); } #urlbar-input:focus::selection, .searchbar-textbox:focus::selection { - background-color: rgb(249, 226, 175); + background-color: rgb(205, 214, 244); } - --toolbarseparator-color: rgb(249, 226, 175) !important; + --toolbarseparator-color: rgb(205, 214, 244) !important; } } @@ -57,7 +57,7 @@ .tabbrowser-tab[selected="true"] .tab-background { border: 1px solid #ccd0da !important; } - --toolbar-bgcolor: rgb(239, 241, 245) !important; + --toolbar-bgcolor: rgb(230, 233, 239) !important; --toolbox-non-lwt-bgcolor: rgb(220, 224, 232) !important; --toolbox-non-lwt-textcolor: rgb(76, 79, 105) !important; --input-bgcolor: rgb(230, 233, 239) !important; @@ -65,11 +65,11 @@ --input-color: rgb(76, 79, 105) !important; --toolbar-field-color: var(--input-color) !important; .tab-background[selected]:not([multiselected]) { - outline: 1px solid rgb(223, 142, 29); + outline: 1px solid rgb(76, 79, 105); outline-offset: -1px; } .tab-background[multiselected] { - --focus-outline-color: rgb(223, 142, 29); + --focus-outline-color: rgb(76, 79, 105); } --arrowpanel-background: rgb(239, 241, 245) !important; --arrowpanel-color: rgb(76, 79, 105) !important; @@ -77,29 +77,29 @@ &:where([tabsintitlebar]) { --toolbox-non-lwt-bgcolor-inactive: rgb(220, 224, 232) !important; } - --toolbarbutton-icon-fill-attention: rgb(223, 142, 29) !important; + --toolbarbutton-icon-fill-attention: rgb(76, 79, 105) !important; --toolbarbutton-icon-fill: rgb(76, 79, 105) !important; - --arrowpanel-border-color: rgb(223, 142, 29) !important; + --arrowpanel-border-color: rgb(76, 79, 105) !important; --urlbarView-highlight-color: rgb(76, 79, 105) !important; --urlbarView-highlight-background: rgb(156, 160, 176) !important; #tabbrowser-tabs { - --tab-loading-fill: rgb(223, 142, 29) !important; + --tab-loading-fill: rgb(76, 79, 105) !important; } --tab-selected-bgcolor: rgb(239, 241, 245) !important; --tab-selected-textcolor: rgb(76, 79, 105) !important; --chrome-content-separator-color: rgb(239, 241, 245) !important; - --toolbar-field-focus-border-color: rgb(223, 142, 29) !important; + --toolbar-field-focus-border-color: rgb(76, 79, 105) !important; --input-border-color: rgb(239, 241, 245) !important; --toolbar-field-border-color: var(--input-border-color) !important; --toolbar-field-focus-background-color: rgb(239, 241, 245) !important; #urlbar-input:focus::selection, .searchbar-textbox:focus::selection { - color: rgb(239, 241, 245); + color: rgb(204, 208, 218); } #urlbar-input:focus::selection, .searchbar-textbox:focus::selection { - background-color: rgb(223, 142, 29); + background-color: rgb(76, 79, 105); } - --toolbarseparator-color: rgb(223, 142, 29) !important; + --toolbarseparator-color: rgb(76, 79, 105) !important; } } diff --git a/home/browsers/firefox/chrome/theme/hide.css b/home/browsers/firefox/chrome/theme/hide.css new file mode 100644 index 0000000..938830c --- /dev/null +++ b/home/browsers/firefox/chrome/theme/hide.css @@ -0,0 +1,7 @@ +#tracking-protection-icon-container { + display: none; +} + +.bookmark-item[container] { + list-style-image: url("chrome://global/skin/dirListing/folder.png") !important; +} diff --git a/home/browsers/firefox/chrome/userChrome.css b/home/browsers/firefox/chrome/userChrome.css new file mode 100644 index 0000000..46cf3bf --- /dev/null +++ b/home/browsers/firefox/chrome/userChrome.css @@ -0,0 +1,2 @@ +@import "./theme/colors.css"; +@import "./theme/hide.css"; diff --git a/home/browsers/firefox/default.nix b/home/browsers/firefox/default.nix index 9da1d6b..34752d9 100644 --- a/home/browsers/firefox/default.nix +++ b/home/browsers/firefox/default.nix @@ -1,11 +1,17 @@ # https://discourse.nixos.org/t/combining-best-of-system-firefox-and-home-manager-firefox-settings/37721 -{ pkgs, ... }: +# https://discourse.nixos.org/t/declare-firefox-extensions-and-settings/36265 +{ pkgs, config, ... }: { home.sessionVariables = rec { MOZ_GMP_PATH = "${pkgs.widevine-firefox}/gmp-widevinecdm/system-installed"; }; + home.file.".mozilla/firefox/default/chrome" = { + source = ./chrome; + force = true; + }; + programs.firefox = { enable = true; package = pkgs.firefox.override { @@ -13,12 +19,68 @@ pkgs.firefoxpwa ]; }; + policies = { + BlockAboutConfig = true; + DefaultDownloadDirectory = "\${home}/Downloads"; + # Check about:support for extension/add-on ID strings. + # Valid strings for installation_mode are "allowed", "blocked", + # "force_installed" and "normal_installed". + ExtensionSettings = { + "*" = { + "installation_mode" = "blocked"; + }; + "uBlock0@raymondhill.net" = { + installation_mode = "allowed"; + }; + "gdpr@cavi.au.dk" = { + installation_mode = "allowed"; + }; + "{5cce4ab5-3d47-41b9-af5e-8203eea05245}" = { + installation_mode = "allowed"; + }; + "plasma-browser-integration@kde.org" = { + installation_mode = "allowed"; + }; + "jid1-MnnxcxisBPnSXQ@jetpack" = { + installation_mode = "allowed"; + }; + "firefoxpwa@filips.si" = { + installation_mode = "allowed"; + }; + "sponsorBlocker@ajay.app" = { + installation_mode = "allowed"; + }; + "{7a7a4a92-a2a0-41d1-9fd7-1e92480d612d}" = { + installation_mode = "allowed"; + }; + "{aecec67f-0d10-4fa7-b7c7-609a2db280cf}" = { + installation_mode = "allowed"; + }; + }; + DisableTelemetry = true; + DisableFirefoxStudies = true; + EnableTrackingProtection = { + Value = true; + Locked = true; + Cryptomining = true; + Fingerprinting = true; + }; + DisablePocket = true; + DisableFirefoxAccounts = false; + DisableAccounts = false; + DisableFirefoxScreenshots = true; + OverrideFirstRunPage = ""; + OverridePostUpdatePage = ""; + DontCheckDefaultBrowser = true; + DisplayBookmarksToolbar = "newtab"; # alternatives: "always" or "newtab" + DisplayMenuBar = "always"; # alternatives: "always", "never" or "default-on" + SearchBar = "unified"; # alternative: "separate" + }; profiles = { default = { id = 0; name = "default"; isDefault = true; - userChrome = ./userChrome.css; extensions = { force = true; packages = with pkgs.nur.repos.rycee.firefox-addons; [ From 0d11025ab6fb5cd94ef762859b0a5a1d615c3452 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Tue, 2 Dec 2025 18:21:51 -0500 Subject: [PATCH 091/282] pin flake to unstable --- .gitignore | 1 + flake.lock | 168 ++++----------------------------- flake.nix | 15 +-- home/hosts/peach.nix | 2 +- system/all.nix | 1 - system/hosts/alien/default.nix | 5 - system/hosts/peach/default.nix | 2 +- 7 files changed, 20 insertions(+), 174 deletions(-) diff --git a/.gitignore b/.gitignore index ee69262..a414925 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ system/hosts/peach/firmware/* +result diff --git a/flake.lock b/flake.lock index b9b4e5c..adc4a66 100644 --- a/flake.lock +++ b/flake.lock @@ -41,27 +41,6 @@ "type": "github" } }, - "compose2nix": { - "inputs": { - "nixpkgs": [ - "nixpkgs" - ], - "onchg": "onchg" - }, - "locked": { - "lastModified": 1762390855, - "narHash": "sha256-IUNXoHzTdpR+hRgcLB7imqmmA6bB7gUwWb5OfVAteJo=", - "owner": "aksiksi", - "repo": "compose2nix", - "rev": "d87652be197855d568b093cbacecdcd26cde0d91", - "type": "github" - }, - "original": { - "owner": "aksiksi", - "repo": "compose2nix", - "type": "github" - } - }, "flake-compat": { "locked": { "lastModified": 1746162366, @@ -120,23 +99,8 @@ } }, "flake-utils": { - "locked": { - "lastModified": 1652776076, - "narHash": "sha256-gzTw/v1vj4dOVbpBSJX4J0DwUR6LIyXo7/SuuTJp1kM=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "04c1b180862888302ddfb2e3ad9eaa63afc60cf8", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_2": { "inputs": { - "systems": "systems_2" + "systems": "systems" }, "locked": { "lastModified": 1731533236, @@ -159,11 +123,11 @@ ] }, "locked": { - "lastModified": 1764603455, - "narHash": "sha256-Q70rxlbrxPcTtqWIb9+71rkJESxIOou5isZBvyOieXw=", + "lastModified": 1764636297, + "narHash": "sha256-S41K55kw+hWgDfgKmZ9/fMZ3F0BQDMvqFfE120fMHeE=", "owner": "nix-community", "repo": "home-manager", - "rev": "effe4c007d6243d9e69ce2242d76a2471c1b8d5c", + "rev": "ff067cfc619fdf6f82d50344e7d19ff2323f0827", "type": "github" }, "original": { @@ -200,61 +164,18 @@ "type": "github" } }, - "kwin-effects-forceblur": { - "inputs": { - "nixpkgs": [ - "nixpkgs" - ], - "utils": "utils" - }, - "locked": { - "lastModified": 1755098995, - "narHash": "sha256-6FN7XEf27DenQHDIKjrjOW3tGIaJlyqRlXarmt1v+M0=", - "owner": "taj-ny", - "repo": "kwin-effects-forceblur", - "rev": "51a1d49d7fd7df3ce40ccf6ba4c4410cf6f510e1", - "type": "github" - }, - "original": { - "owner": "taj-ny", - "repo": "kwin-effects-forceblur", - "type": "github" - } - }, - "nix-pre-commit": { - "inputs": { - "flake-utils": "flake-utils", - "nixpkgs": [ - "compose2nix", - "onchg", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1653259102, - "narHash": "sha256-XfCEu4zur/N2Dk4v8wFiQAgJ7bgNqPqwWp1vBXkeczM=", - "owner": "jmgilman", - "repo": "nix-pre-commit", - "rev": "6a99b2711c7eac9960939d8eb91e84322b22d50c", - "type": "github" - }, - "original": { - "owner": "jmgilman", - "repo": "nix-pre-commit", - "type": "github" - } - }, "nixpkgs": { "locked": { - "lastModified": 1764610429, - "narHash": "sha256-QeDC9PAPD1uqAutwniHeqMcX444khkCzl4eE5VRjEFc=", + "lastModified": 1764517877, + "narHash": "sha256-pp3uT4hHijIC8JUK5MEqeAWmParJrgBVzHLNfJDZxg4=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "974707f1feda852cd7554e1f4a50d3a572791860", + "rev": "2d293cbfa5a793b4c50d17c05ef9e385b90edf6c", "type": "github" }, "original": { "owner": "NixOS", + "ref": "nixos-unstable", "repo": "nixpkgs", "type": "github" } @@ -266,14 +187,14 @@ "nixpkgs" ], "nuschtosSearch": "nuschtosSearch", - "systems": "systems_3" + "systems": "systems_2" }, "locked": { - "lastModified": 1764581424, - "narHash": "sha256-ij6QCIm8EeXGG1F2Aj/mTwVF4U80MtxsJ4krW0I0U2E=", + "lastModified": 1764663787, + "narHash": "sha256-nlW6BI2CiP6wlhjwpxOc8W6lMU9eaojAyVZFWlbQ/fg=", "owner": "nix-community", "repo": "nixvim", - "rev": "027c96a16116588dd28728b757a24e2d43d19187", + "rev": "2d8db68a8fd4a21e2017df167c6535499adc02d1", "type": "github" }, "original": { @@ -290,11 +211,11 @@ ] }, "locked": { - "lastModified": 1764608289, - "narHash": "sha256-4sOEuCB3XSzoohbY4u4MawTzHbqfOZrQdHtbfbolsIg=", + "lastModified": 1764709261, + "narHash": "sha256-d6+4Y54c4EpCOzheViK8PIE+3wnvRzXXFt5C7kIDF6c=", "owner": "nix-community", "repo": "NUR", - "rev": "f4afdbb4007eedb9ba7d2251da1f3f1321798087", + "rev": "8acc5e762d63ba1c79707d517f6174278da03784", "type": "github" }, "original": { @@ -305,7 +226,7 @@ }, "nuschtosSearch": { "inputs": { - "flake-utils": "flake-utils_2", + "flake-utils": "flake-utils", "ixx": "ixx", "nixpkgs": [ "nixvim", @@ -326,28 +247,6 @@ "type": "github" } }, - "onchg": { - "inputs": { - "nix-pre-commit": "nix-pre-commit", - "nixpkgs": [ - "compose2nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1720368454, - "narHash": "sha256-NUSw3G2gsQX8/G64/pDBb1oitM+x13m7nFRvpiI4a+s=", - "owner": "aksiksi", - "repo": "onchg-rs", - "rev": "c42b693d10920874b3644ef1502e33318409d69c", - "type": "github" - }, - "original": { - "owner": "aksiksi", - "repo": "onchg-rs", - "type": "github" - } - }, "plasma-manager": { "inputs": { "home-manager": [ @@ -375,9 +274,7 @@ "inputs": { "apple-silicon": "apple-silicon", "catppuccin": "catppuccin", - "compose2nix": "compose2nix", "home-manager": "home-manager", - "kwin-effects-forceblur": "kwin-effects-forceblur", "nixpkgs": "nixpkgs", "nixvim": "nixvim", "nur": "nur", @@ -413,39 +310,6 @@ "repo": "default", "type": "github" } - }, - "systems_3": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" - } - }, - "utils": { - "inputs": { - "systems": "systems" - }, - "locked": { - "lastModified": 1726560853, - "narHash": "sha256-X6rJYSESBVr3hBoH0WbKE5KvhPU5bloyZ2L4K60/fPQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "c1dfcf08411b08f6b8615f7d8971a2bfa81d5e8a", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } } }, "root": "root", diff --git a/flake.nix b/flake.nix index fbacf41..c242ce0 100644 --- a/flake.nix +++ b/flake.nix @@ -2,7 +2,7 @@ description = "My NixOS Configuration"; inputs = { - nixpkgs.url = "github:NixOS/nixpkgs"; + nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; catppuccin = { url = "github:catppuccin/nix"; @@ -30,16 +30,6 @@ inputs.nixpkgs.follows = "nixpkgs"; }; - kwin-effects-forceblur = { - url = "github:taj-ny/kwin-effects-forceblur"; - inputs.nixpkgs.follows = "nixpkgs"; - }; - - compose2nix = { - url = "github:aksiksi/compose2nix"; - inputs.nixpkgs.follows = "nixpkgs"; - }; - apple-silicon = { url = "github:nix-community/nixos-apple-silicon"; inputs.nixpkgs.follows = "nixpkgs"; @@ -54,8 +44,6 @@ plasma-manager, nur, nixvim, - kwin-effects-forceblur, - compose2nix, apple-silicon, ... }: @@ -70,7 +58,6 @@ inherit system; specialArgs = { inherit catppuccin; - inputs = { inherit kwin-effects-forceblur compose2nix; }; }; modules = [ { diff --git a/home/hosts/peach.nix b/home/hosts/peach.nix index 09130d1..dbaccaa 100644 --- a/home/hosts/peach.nix +++ b/home/hosts/peach.nix @@ -79,7 +79,7 @@ # Application name, Global menu and Song information and playback controls at the top { location = "top"; - height = 37; + height = 42; # 37 for 200%, 42 for 175% floating = false; widgets = [ { diff --git a/system/all.nix b/system/all.nix index 1547ac7..e38403f 100755 --- a/system/all.nix +++ b/system/all.nix @@ -153,7 +153,6 @@ environment = { systemPackages = with pkgs; [ git - inputs.kwin-effects-forceblur.packages.${pkgs.stdenv.hostPlatform.system}.default firefoxpwa distrobox nerd-fonts.noto diff --git a/system/hosts/alien/default.nix b/system/hosts/alien/default.nix index 6e76692..1909144 100644 --- a/system/hosts/alien/default.nix +++ b/system/hosts/alien/default.nix @@ -14,11 +14,6 @@ "riscv64-linux" ]; - environment.systemPackages = [ - pkgs.compose2nix - inputs.compose2nix.packages.x86_64-linux.default - ]; - catppuccin.accent = "blue"; home-manager.users.sckova = { diff --git a/system/hosts/peach/default.nix b/system/hosts/peach/default.nix index b5729b9..ae3f0ab 100644 --- a/system/hosts/peach/default.nix +++ b/system/hosts/peach/default.nix @@ -45,7 +45,7 @@ swapDevices = [ { device = "/swapfile"; - size = 32000; # 32GB + size = 16000; # 16GB } ]; From 951f5e5c0e73ead06b4299e3a7cb36d63296b612 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Wed, 3 Dec 2025 11:04:34 -0500 Subject: [PATCH 092/282] changes --- home/all.nix | 48 +++++++++++++++++-------------- home/browsers/firefox/default.nix | 33 ++++++++++++++------- home/hosts/alien.nix | 3 ++ 3 files changed, 52 insertions(+), 32 deletions(-) diff --git a/home/all.nix b/home/all.nix index b00056b..9f18e7e 100755 --- a/home/all.nix +++ b/home/all.nix @@ -2,10 +2,7 @@ { home.packages = with pkgs; [ - vesktop - gh - adwsteamgtk - prismlauncher + # cli utilities tmux fastfetch btop @@ -15,32 +12,41 @@ ncdu fzf wl-clipboard - openmw - nixfmt-rfc-style - (chromium.override { - enableWideVine = true; - }) - strawberry - spotify-player - input-leap - libreoffice-qt-fresh - spotdl rclone - helium-browser + waypipe + + # development & tooling + gh deno prettier prettierd + nixfmt-rfc-style + jdk21_headless + + # kde and kde theming + kde-rounded-corners + kdePackages.partitionmanager + colloid-icon-theme + + # gui applications + vesktop + prismlauncher + strawberry + input-leap + libreoffice-qt-fresh + spotify-player + spotdl + openmw musescore mpv gimp calibre + helium-browser - jdk21_headless - - kde-rounded-corners - kdePackages.partitionmanager - - colloid-icon-theme + # browsers + # (chromium.override { + # enableWideVine = true; + # }) ]; services = { diff --git a/home/browsers/firefox/default.nix b/home/browsers/firefox/default.nix index 34752d9..77da089 100644 --- a/home/browsers/firefox/default.nix +++ b/home/browsers/firefox/default.nix @@ -27,7 +27,7 @@ # "force_installed" and "normal_installed". ExtensionSettings = { "*" = { - "installation_mode" = "blocked"; + "installation_mode" = "allowed"; }; "uBlock0@raymondhill.net" = { installation_mode = "allowed"; @@ -167,6 +167,27 @@ "fxa-toolbar-menu-button" "unified-extensions-button" ]; + + # Undo a bunch of stuff that LibreWolf does + # "browser.safebrowsing.malware.enabled" = true; + # "browser.safebrowsing.phishing.enabled" = true; + # "browser.safebrowsing.blockedURIs.enabled" = true; + # "browser.safebrowsing.provider.google4.gethashURL" = + # "https://safebrowsing.googleapis.com/v4/fullHashes:find?$ct=application/x-protobuf&key=%GOOGLE_SAFEBROWSING_API_KEY%&$httpMethod=POST"; + # "browser.safebrowsing.provider.google4.updateURL" = + # "https://safebrowsing.googleapis.com/v4/threatListUpdates:fetch?$ct=application/x-protobuf&key=%GOOGLE_SAFEBROWSING_API_KEY%&$httpMethod=POST"; + # "browser.safebrowsing.provider.google.gethashURL" = + # "https://safebrowsing.google.com/safebrowsing/gethash?client=SAFEBROWSING_ID&appver=%MAJOR_VERSION%&pver=2.2"; + # "browser.safebrowsing.provider.google.updateURL" = + # "https://safebrowsing.google.com/safebrowsing/downloads?client=SAFEBROWSING_ID&appver=%MAJOR_VERSION%&pver=2.2&key=%GOOGLE_SAFEBROWSING_API_KEY%"; + # "browser.safebrowsing.downloads.enabled" = true; + # "privacy.resistFingerprinting.letterboxing" = false; + # "webgl.disabled" = false; + # "identity.fxaccounts.enabled" = true; + # "privacy.clearOnShutdown.history" = false; + # "privacy.clearOnShutdown.downloads" = false; + # "privacy.fingerprintingProtection" = false; + # "network.cookie.lifetimePolicy" = 0; }; bookmarks = { force = true; @@ -181,16 +202,6 @@ } ]; } - { - name = "ovips.us.to"; - toolbar = true; - bookmarks = [ - { - name = "ovips.us.to"; - url = "https://ovips.us.to/"; - } - ]; - } ]; }; search = { diff --git a/home/hosts/alien.nix b/home/hosts/alien.nix index 86deec7..c885919 100644 --- a/home/hosts/alien.nix +++ b/home/hosts/alien.nix @@ -25,6 +25,9 @@ ]; }) + # steam gtk theming + adwsteamgtk + daggerfall-unity shipwright _2ship2harkinian From e9d14e8a28cabf4cc5346684e1c5294a6c5d181d Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Wed, 3 Dec 2025 13:28:11 -0500 Subject: [PATCH 093/282] add bitwarden --- home/all.nix | 1 + home/browsers/firefox/chrome/theme/colors.css | 8 ++++---- home/browsers/firefox/default.nix | 10 +++++++--- 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/home/all.nix b/home/all.nix index 9f18e7e..6d9d0a3 100755 --- a/home/all.nix +++ b/home/all.nix @@ -42,6 +42,7 @@ gimp calibre helium-browser + bitwarden-desktop # browsers # (chromium.override { diff --git a/home/browsers/firefox/chrome/theme/colors.css b/home/browsers/firefox/chrome/theme/colors.css index 065ef5c..a2221f1 100644 --- a/home/browsers/firefox/chrome/theme/colors.css +++ b/home/browsers/firefox/chrome/theme/colors.css @@ -7,7 +7,7 @@ --toolbar-bgcolor: rgb(24, 24, 37) !important; --toolbox-non-lwt-bgcolor: rgb(17, 17, 27) !important; --toolbox-non-lwt-textcolor: rgb(205, 214, 244) !important; - --input-bgcolor: rgb(24, 24, 37) !important; + --input-bgcolor: rgb(17, 17, 27) !important; --toolbar-field-background-color: var(--input-bgcolor) !important; --input-color: rgb(205, 214, 244) !important; --toolbar-field-color: var(--input-color) !important; @@ -36,7 +36,7 @@ --tab-selected-textcolor: rgb(205, 214, 244) !important; --chrome-content-separator-color: rgb(49, 50, 68) !important; --toolbar-field-focus-border-color: rgb(49, 50, 68) !important; - --input-border-color: rgb(49, 50, 68) !important; + --input-border-color: rgb(24, 24, 37) !important; --toolbar-field-border-color: var(--input-border-color) !important; --toolbar-field-focus-background-color: rgb(30, 30, 46) !important; #urlbar-input:focus::selection, @@ -60,7 +60,7 @@ --toolbar-bgcolor: rgb(230, 233, 239) !important; --toolbox-non-lwt-bgcolor: rgb(220, 224, 232) !important; --toolbox-non-lwt-textcolor: rgb(76, 79, 105) !important; - --input-bgcolor: rgb(230, 233, 239) !important; + --input-bgcolor: rgb(220, 224, 232) !important; --toolbar-field-background-color: var(--input-bgcolor) !important; --input-color: rgb(76, 79, 105) !important; --toolbar-field-color: var(--input-color) !important; @@ -89,7 +89,7 @@ --tab-selected-textcolor: rgb(76, 79, 105) !important; --chrome-content-separator-color: rgb(239, 241, 245) !important; --toolbar-field-focus-border-color: rgb(76, 79, 105) !important; - --input-border-color: rgb(239, 241, 245) !important; + --input-border-color: rgb(230, 233, 239) !important; --toolbar-field-border-color: var(--input-border-color) !important; --toolbar-field-focus-background-color: rgb(239, 241, 245) !important; #urlbar-input:focus::selection, diff --git a/home/browsers/firefox/default.nix b/home/browsers/firefox/default.nix index 77da089..19f76b6 100644 --- a/home/browsers/firefox/default.nix +++ b/home/browsers/firefox/default.nix @@ -15,8 +15,8 @@ programs.firefox = { enable = true; package = pkgs.firefox.override { - nativeMessagingHosts = [ - pkgs.firefoxpwa + nativeMessagingHosts = with pkgs; [ + firefoxpwa ]; }; policies = { @@ -27,7 +27,7 @@ # "force_installed" and "normal_installed". ExtensionSettings = { "*" = { - "installation_mode" = "allowed"; + "installation_mode" = "blocked"; }; "uBlock0@raymondhill.net" = { installation_mode = "allowed"; @@ -56,6 +56,9 @@ "{aecec67f-0d10-4fa7-b7c7-609a2db280cf}" = { installation_mode = "allowed"; }; + "{446900e4-71c2-419f-a6a7-df9c091e268b}" = { + installation_mode = "allowed"; + }; }; DisableTelemetry = true; DisableFirefoxStudies = true; @@ -93,6 +96,7 @@ sponsorblock pwas-for-firefox control-panel-for-twitter + bitwarden ]; settings = { "{7a7a4a92-a2a0-41d1-9fd7-1e92480d612d}".settings = { From 2cb2d44e30b862b744f2b368b3fd2aed20c7e3ca Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Wed, 3 Dec 2025 16:19:39 -0500 Subject: [PATCH 094/282] changes --- home/all.nix | 18 ++++++++++++------ home/hosts/peach.nix | 7 +++---- 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/home/all.nix b/home/all.nix index 6d9d0a3..e652dca 100755 --- a/home/all.nix +++ b/home/all.nix @@ -14,6 +14,7 @@ wl-clipboard rclone waypipe + spotdl # development & tooling gh @@ -30,19 +31,24 @@ # gui applications vesktop - prismlauncher - strawberry input-leap libreoffice-qt-fresh - spotify-player - spotdl + helium-browser + bitwarden-desktop + qbittorrent + + # gui applications ( games ) openmw + prismlauncher + + # gui applications ( multimedia ) + audacity + strawberry musescore mpv gimp calibre - helium-browser - bitwarden-desktop + spotify-player # browsers # (chromium.override { diff --git a/home/hosts/peach.nix b/home/hosts/peach.nix index dbaccaa..a131d9f 100644 --- a/home/hosts/peach.nix +++ b/home/hosts/peach.nix @@ -117,16 +117,15 @@ plasmusicToolbar = { panelIcon = { albumCover = { - useAsIcon = false; - radius = 8; + useAsIcon = true; + radius = 4; }; - icon = ""; }; playbackSource = "auto"; musicControls.showPlaybackControls = false; songText = { displayInSeparateLines = true; - maximumWidth = 320; + maximumWidth = 280; scrolling = { behavior = "alwaysScroll"; speed = 3; From 8ad731c7ca0379c5f3d126c577d2e0c185a2415b Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Wed, 3 Dec 2025 16:28:25 -0500 Subject: [PATCH 095/282] make sure widevine-firefox is only applied to aarch64 --- home/browsers/firefox/default.nix | 9 +++++++-- packages/widevine-firefox/package.nix | 1 - 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/home/browsers/firefox/default.nix b/home/browsers/firefox/default.nix index 19f76b6..6221196 100644 --- a/home/browsers/firefox/default.nix +++ b/home/browsers/firefox/default.nix @@ -1,9 +1,14 @@ # https://discourse.nixos.org/t/combining-best-of-system-firefox-and-home-manager-firefox-settings/37721 # https://discourse.nixos.org/t/declare-firefox-extensions-and-settings/36265 -{ pkgs, config, ... }: +{ + pkgs, + config, + lib, + ... +}: { - home.sessionVariables = rec { + home.sessionVariables = lib.mkIf pkgs.stdenv.hostPlatform.isAarch64 { MOZ_GMP_PATH = "${pkgs.widevine-firefox}/gmp-widevinecdm/system-installed"; }; diff --git a/packages/widevine-firefox/package.nix b/packages/widevine-firefox/package.nix index 4b5453b..9fc0d22 100644 --- a/packages/widevine-firefox/package.nix +++ b/packages/widevine-firefox/package.nix @@ -16,7 +16,6 @@ stdenv.mkDerivation { meta = widevine-cdm.meta // { platforms = [ "aarch64-linux" - "x86_64-linux" ]; }; } From bfbcc59e36d3685b372a65e8b7e05730424c759d Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Wed, 3 Dec 2025 16:46:55 -0500 Subject: [PATCH 096/282] remove catppuccin window decorations --- home/hosts/alien.nix | 25 ++++++++++++++++--------- home/hosts/peach.nix | 25 ++++++++++++++++--------- home/hosts/vm-aarch64.nix | 26 +++++++++++++++++--------- 3 files changed, 49 insertions(+), 27 deletions(-) diff --git a/home/hosts/alien.nix b/home/hosts/alien.nix index c885919..6c0114b 100644 --- a/home/hosts/alien.nix +++ b/home/hosts/alien.nix @@ -15,15 +15,22 @@ catppuccin-cursors.mochaLight catppuccin-cursors.mochaBlue - (catppuccin-kde.override { - flavour = [ - "latte" - "mocha" - ]; - accents = [ - "blue" - ]; - }) + ( + (catppuccin-kde.override { + flavour = [ + "latte" + "mocha" + ]; + accents = [ + "blue" + ]; + }).overrideAttrs + (oldAttrs: { + postInstall = '' + rm -rf $out/share/aurorae + ''; + }) + ) # steam gtk theming adwsteamgtk diff --git a/home/hosts/peach.nix b/home/hosts/peach.nix index a131d9f..47c2be8 100644 --- a/home/hosts/peach.nix +++ b/home/hosts/peach.nix @@ -20,15 +20,22 @@ catppuccin-cursors.mochaLight catppuccin-cursors.mochaPeach - (catppuccin-kde.override { - flavour = [ - "latte" - "mocha" - ]; - accents = [ - "peach" - ]; - }) + ( + (catppuccin-kde.override { + flavour = [ + "latte" + "mocha" + ]; + accents = [ + "peach" + ]; + }).overrideAttrs + (oldAttrs: { + postInstall = '' + rm -rf $out/share/aurorae + ''; + }) + ) ]; programs.plasma = { diff --git a/home/hosts/vm-aarch64.nix b/home/hosts/vm-aarch64.nix index f339162..14fc25b 100644 --- a/home/hosts/vm-aarch64.nix +++ b/home/hosts/vm-aarch64.nix @@ -15,15 +15,23 @@ catppuccin-cursors.mochaLight catppuccin-cursors.mochaGreen - (catppuccin-kde.override { - flavour = [ - "latte" - "mocha" - ]; - accents = [ - "green" - ]; - }) + ( + (catppuccin-kde.override { + flavour = [ + "latte" + "mocha" + ]; + accents = [ + "green" + ]; + }).overrideAttrs + (oldAttrs: { + postInstall = '' + rm -rf $out/share/aurorae + ''; + }) + ) + ]; programs.plasma = { From 52481b0687c711024cc5b09a4e1e6d9aa54b0735 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Wed, 3 Dec 2025 16:49:54 -0500 Subject: [PATCH 097/282] pin flake to stable 25.11 --- flake.lock | 28 +++++++++++++++------------- flake.nix | 6 +++--- system/hosts/peach/default.nix | 16 ++++++++-------- 3 files changed, 26 insertions(+), 24 deletions(-) diff --git a/flake.lock b/flake.lock index adc4a66..e86a238 100644 --- a/flake.lock +++ b/flake.lock @@ -123,15 +123,16 @@ ] }, "locked": { - "lastModified": 1764636297, - "narHash": "sha256-S41K55kw+hWgDfgKmZ9/fMZ3F0BQDMvqFfE120fMHeE=", + "lastModified": 1764776959, + "narHash": "sha256-d+5CGloq7Lo1u2SkzhF8oiOdUc6Z5emh22nTXUB9CFA=", "owner": "nix-community", "repo": "home-manager", - "rev": "ff067cfc619fdf6f82d50344e7d19ff2323f0827", + "rev": "e1680d594a9281651cbf7d126941a8c8e2396183", "type": "github" }, "original": { "owner": "nix-community", + "ref": "release-25.11", "repo": "home-manager", "type": "github" } @@ -166,16 +167,16 @@ }, "nixpkgs": { "locked": { - "lastModified": 1764517877, - "narHash": "sha256-pp3uT4hHijIC8JUK5MEqeAWmParJrgBVzHLNfJDZxg4=", + "lastModified": 1764522689, + "narHash": "sha256-SqUuBFjhl/kpDiVaKLQBoD8TLD+/cTUzzgVFoaHrkqY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "2d293cbfa5a793b4c50d17c05ef9e385b90edf6c", + "rev": "8bb5646e0bed5dbd3ab08c7a7cc15b75ab4e1d0f", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixos-unstable", + "ref": "nixos-25.11", "repo": "nixpkgs", "type": "github" } @@ -190,15 +191,16 @@ "systems": "systems_2" }, "locked": { - "lastModified": 1764663787, - "narHash": "sha256-nlW6BI2CiP6wlhjwpxOc8W6lMU9eaojAyVZFWlbQ/fg=", + "lastModified": 1764755396, + "narHash": "sha256-f6UrlGdwg+TIxxyDjeq1M7WGNZH/vpbOm0yzPgkMy9c=", "owner": "nix-community", "repo": "nixvim", - "rev": "2d8db68a8fd4a21e2017df167c6535499adc02d1", + "rev": "64d9e2616f4ee2acee380d61ccf1f3d610e7e969", "type": "github" }, "original": { "owner": "nix-community", + "ref": "nixos-25.11", "repo": "nixvim", "type": "github" } @@ -211,11 +213,11 @@ ] }, "locked": { - "lastModified": 1764709261, - "narHash": "sha256-d6+4Y54c4EpCOzheViK8PIE+3wnvRzXXFt5C7kIDF6c=", + "lastModified": 1764795584, + "narHash": "sha256-Sq6SWFDCftLrnZ8GXO39b2HxH2NE8jtDeU2ud37F9qs=", "owner": "nix-community", "repo": "NUR", - "rev": "8acc5e762d63ba1c79707d517f6174278da03784", + "rev": "156e6d0e026c1a7687a74c908ee0ccf0df796f72", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index c242ce0..26d2b87 100644 --- a/flake.nix +++ b/flake.nix @@ -2,7 +2,7 @@ description = "My NixOS Configuration"; inputs = { - nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; + nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.11"; catppuccin = { url = "github:catppuccin/nix"; @@ -10,7 +10,7 @@ }; home-manager = { - url = "github:nix-community/home-manager"; + url = "github:nix-community/home-manager/release-25.11"; inputs.nixpkgs.follows = "nixpkgs"; }; @@ -26,7 +26,7 @@ }; nixvim = { - url = "github:nix-community/nixvim"; + url = "github:nix-community/nixvim/nixos-25.11"; inputs.nixpkgs.follows = "nixpkgs"; }; diff --git a/system/hosts/peach/default.nix b/system/hosts/peach/default.nix index ae3f0ab..506e6dc 100644 --- a/system/hosts/peach/default.nix +++ b/system/hosts/peach/default.nix @@ -33,14 +33,14 @@ }; }; - hardware.graphics.package = - # Workaround for Mesa 25.3.0 regression - # https://github.com/nix-community/nixos-apple-silicon/issues/380 - assert pkgs.mesa.version == "25.3.0"; - (import (fetchTarball { - url = "https://github.com/NixOS/nixpkgs/archive/c5ae371f1a6a7fd27823bc500d9390b38c05fa55.tar.gz"; - sha256 = "sha256-4PqRErxfe+2toFJFgcRKZ0UI9NSIOJa+7RXVtBhy4KE="; - }) { localSystem = pkgs.stdenv.hostPlatform; }).mesa; + # hardware.graphics.package = + # # Workaround for Mesa 25.3.0 regression + # # https://github.com/nix-community/nixos-apple-silicon/issues/380 + # assert pkgs.mesa.version == "25.3.0"; + # (import (fetchTarball { + # url = "https://github.com/NixOS/nixpkgs/archive/c5ae371f1a6a7fd27823bc500d9390b38c05fa55.tar.gz"; + # sha256 = "sha256-4PqRErxfe+2toFJFgcRKZ0UI9NSIOJa+7RXVtBhy4KE="; + # }) { localSystem = pkgs.stdenv.hostPlatform; }).mesa; swapDevices = [ { From 3ab9500787ca69f2dea3353ea1da15dcea9515ca Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Thu, 4 Dec 2025 12:40:08 -0500 Subject: [PATCH 098/282] modify fish, kitty and neovim --- home/terminal/fish/default.nix | 56 +++++-------------- home/terminal/fish/functions/fish-prompt.fish | 24 ++++++++ home/terminal/fish/functions/kitty-ssh.fish | 5 ++ home/terminal/fish/functions/logout.fish | 5 ++ home/terminal/fish/functions/nix-shell.fish | 5 ++ home/terminal/kitty/default.nix | 1 + home/terminal/nvim/default.nix | 6 +- home/vscode/default.nix | 6 +- 8 files changed, 63 insertions(+), 45 deletions(-) create mode 100644 home/terminal/fish/functions/fish-prompt.fish create mode 100644 home/terminal/fish/functions/kitty-ssh.fish create mode 100644 home/terminal/fish/functions/logout.fish create mode 100644 home/terminal/fish/functions/nix-shell.fish diff --git a/home/terminal/fish/default.nix b/home/terminal/fish/default.nix index 8a8334a..e58af9d 100644 --- a/home/terminal/fish/default.nix +++ b/home/terminal/fish/default.nix @@ -1,54 +1,28 @@ { config, pkgs, ... }: - { + home.packages = with pkgs; [ kdePackages.qttools ]; + programs.fish = { enable = true; - + shellAliases = { + ssh = "kitty-ssh"; + }; functions = { fish_prompt = { description = "Write out the prompt"; - body = '' - set -l last_status $status - - set -l nix_shell_info ( - if test -n "$IN_NIX_SHELL" - echo -n " " - end - ) - - set -g fish_color_user 89dceb - - # Set host color based on hostname - if test (hostname) = "peach" - set -g fish_color_host fab387 - else if test (hostname) = "alien" - set -g fish_color_host 89b4fa - else if test (hostname) = "vm-aarch64" - set -g fish_color_host a6e3a1 - else if test (uname) = "Darwin" - set -g fish_color_host f9e2af - end - - set -l user_host (set_color $fish_color_user)"$USER"(set_color normal)"@"(set_color $fish_color_host)(prompt_hostname)(set_color normal) - - set -l cwd (set_color $fish_color_cwd)(prompt_pwd)(set_color normal) - - set -l git_info (fish_git_prompt) - - echo -s "$user_host" " " "$cwd" "$git_info $nix_shell_info" - echo -n -s "> " - ''; - # echo -n -s "$user_host" " " "$nix_shell_info" "$cwd" "$git_info" "> " + body = builtins.readFile ./functions/fish-prompt.fish; + }; + kitty-ssh = { + description = "Integrate Kitten SSH with Fish"; + body = builtins.readFile ./functions/kitty-ssh.fish; }; nix-shell = { description = "Wrapper for nix-shell that runs fish by default"; - body = '' - if test (count $argv) -eq 0 - command nix-shell --run fish - else - command nix-shell --run fish $argv - end - ''; + body = builtins.readFile ./functions/nix-shell.fish; + }; + logout = { + description = "Log out of KDE Plasma"; + body = builtins.readFile ./functions/logout.fish; }; }; }; diff --git a/home/terminal/fish/functions/fish-prompt.fish b/home/terminal/fish/functions/fish-prompt.fish new file mode 100644 index 0000000..f38e382 --- /dev/null +++ b/home/terminal/fish/functions/fish-prompt.fish @@ -0,0 +1,24 @@ +set -l last_status $status +set -l nix_shell_info ( + if test -n "$IN_NIX_SHELL" + echo -n " " + end +) +set -g fish_color_user 89dceb + +# Set host color based on hostname +if test (hostname) = "peach" + set -g fish_color_host fab387 +else if test (hostname) = "alien" + set -g fish_color_host 89b4fa +else if test (hostname) = "vm-aarch64" + set -g fish_color_host a6e3a1 +else if test (uname) = "Darwin" + set -g fish_color_host f9e2af +end + +set -l user_host (set_color $fish_color_user)"$USER"(set_color normal)"@"(set_color $fish_color_host)(prompt_hostname)(set_color normal) +set -l cwd (set_color $fish_color_cwd)(prompt_pwd)(set_color normal) +set -l git_info (fish_git_prompt) +echo -s "$user_host" " " "$cwd" "$git_info $nix_shell_info" +echo -n -s "> " diff --git a/home/terminal/fish/functions/kitty-ssh.fish b/home/terminal/fish/functions/kitty-ssh.fish new file mode 100644 index 0000000..bfb1e77 --- /dev/null +++ b/home/terminal/fish/functions/kitty-ssh.fish @@ -0,0 +1,5 @@ +if set -q KITTY_WINDOW_ID + kitty +kitten ssh $argv +else + command ssh $argv +end diff --git a/home/terminal/fish/functions/logout.fish b/home/terminal/fish/functions/logout.fish new file mode 100644 index 0000000..9dcc3e0 --- /dev/null +++ b/home/terminal/fish/functions/logout.fish @@ -0,0 +1,5 @@ +if status is-login + builtin exit +else + /run/current-system/sw/bin/qdbus org.kde.Shutdown /Shutdown org.kde.Shutdown.logout +end diff --git a/home/terminal/fish/functions/nix-shell.fish b/home/terminal/fish/functions/nix-shell.fish new file mode 100644 index 0000000..588e4a1 --- /dev/null +++ b/home/terminal/fish/functions/nix-shell.fish @@ -0,0 +1,5 @@ +if test (count $argv) -eq 0 + command nix-shell --run fish +else + command nix-shell --run fish $argv +end diff --git a/home/terminal/kitty/default.nix b/home/terminal/kitty/default.nix index e550e3e..b06c2df 100644 --- a/home/terminal/kitty/default.nix +++ b/home/terminal/kitty/default.nix @@ -21,6 +21,7 @@ tab_bar_edge = "top"; tab_bar_style = "powerline"; tab_powerline_style = "slanted"; + mouse_hide_wait = "-1.0"; }; }; } diff --git a/home/terminal/nvim/default.nix b/home/terminal/nvim/default.nix index 9a5ad17..fc2024c 100644 --- a/home/terminal/nvim/default.nix +++ b/home/terminal/nvim/default.nix @@ -1,10 +1,14 @@ { pkgs, ... }: { + home.sessionVariables = { + EDITOR = "nvim"; + }; + programs.nixvim = { enable = true; enablePrintInit = true; - # defaultEditor = true; + defaultEditor = true; waylandSupport = true; viAlias = true; vimAlias = true; diff --git a/home/vscode/default.nix b/home/vscode/default.nix index 129d86a..0191599 100644 --- a/home/vscode/default.nix +++ b/home/vscode/default.nix @@ -11,9 +11,9 @@ let (lib.toUpper (builtins.substring 0 1 str)) + (builtins.substring 1 (builtins.stringLength str) str); in { - home.sessionVariables = { - EDITOR = "code"; - }; + # home.sessionVariables = { + # EDITOR = "code"; + # }; catppuccin.vscode.profiles.default = { enable = true; From ffc801d3990849982e297c4a0c570d495c3ba5f3 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Thu, 4 Dec 2025 12:57:22 -0500 Subject: [PATCH 099/282] changes --- home/all.nix | 4 +++- home/hosts/peach.nix | 4 ++-- home/kde/plasma.nix | 5 ++++- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/home/all.nix b/home/all.nix index e652dca..cc9e80c 100755 --- a/home/all.nix +++ b/home/all.nix @@ -15,6 +15,8 @@ rclone waypipe spotdl + browsh + mosh # development & tooling gh @@ -33,7 +35,7 @@ vesktop input-leap libreoffice-qt-fresh - helium-browser + # helium-browser bitwarden-desktop qbittorrent diff --git a/home/hosts/peach.nix b/home/hosts/peach.nix index 47c2be8..9518fed 100644 --- a/home/hosts/peach.nix +++ b/home/hosts/peach.nix @@ -125,14 +125,14 @@ panelIcon = { albumCover = { useAsIcon = true; - radius = 4; + radius = 2; }; }; playbackSource = "auto"; musicControls.showPlaybackControls = false; songText = { displayInSeparateLines = true; - maximumWidth = 280; + maximumWidth = 250; scrolling = { behavior = "alwaysScroll"; speed = 3; diff --git a/home/kde/plasma.nix b/home/kde/plasma.nix index 04e3307..d8bf39a 100644 --- a/home/kde/plasma.nix +++ b/home/kde/plasma.nix @@ -1,6 +1,9 @@ { pkgs, ... }: { + + gtk.theme.name = "Breeze"; + programs.plasma = { enable = true; overrideConfig = true; @@ -250,7 +253,7 @@ iconTasks = { launchers = [ "applications:firefox.desktop" - "applications:helium.desktop" + # "applications:helium.desktop" "applications:org.kde.dolphin.desktop" "applications:vesktop.desktop" "applications:kitty.desktop" From 422c416f715d15155808106b0668da070039019f Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Thu, 4 Dec 2025 13:39:41 -0500 Subject: [PATCH 100/282] add sunshine/moonlight streaming --- home/hosts/peach.nix | 2 ++ system/hosts/alien/default.nix | 7 +++++++ 2 files changed, 9 insertions(+) diff --git a/home/hosts/peach.nix b/home/hosts/peach.nix index 9518fed..c348460 100644 --- a/home/hosts/peach.nix +++ b/home/hosts/peach.nix @@ -36,6 +36,8 @@ ''; }) ) + + moonlight-qt ]; programs.plasma = { diff --git a/system/hosts/alien/default.nix b/system/hosts/alien/default.nix index 1909144..6e0d222 100644 --- a/system/hosts/alien/default.nix +++ b/system/hosts/alien/default.nix @@ -53,4 +53,11 @@ open = false; package = pkgs.linuxPackages.nvidiaPackages.stable; }; + + services.sunshine = { + enable = true; + autoStart = true; + capSysAdmin = true; + openFirewall = true; + }; } From 1d0d9a040d868ac3715292e82f9f9b57c77ef355 Mon Sep 17 00:00:00 2001 From: sckova Date: Thu, 4 Dec 2025 15:03:03 -0500 Subject: [PATCH 101/282] switch vm to by-label --- hardware/vm-aarch64.nix | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/hardware/vm-aarch64.nix b/hardware/vm-aarch64.nix index 4328981..524729a 100644 --- a/hardware/vm-aarch64.nix +++ b/hardware/vm-aarch64.nix @@ -11,20 +11,20 @@ boot.kernelModules = [ ]; boot.extraModulePackages = [ ]; - fileSystems."/" = - { device = "/dev/disk/by-uuid/48e34f6b-322d-4f45-9eae-b42eabe5c6e7"; - fsType = "ext4"; - }; + fileSystems."/" = { + device = "/dev/disk/by-label/nixos"; + fsType = "ext4"; + }; - fileSystems."/boot" = - { device = "/dev/disk/by-uuid/A1D8-5A25"; - fsType = "vfat"; - options = [ "fmask=0077" "dmask=0077" ]; - }; + fileSystems."/boot" = { + device = "/dev/disk/by-label/boot"; + fsType = "vfat"; + options = [ "fmask=0077" "dmask=0077" ]; + }; - swapDevices = - [ { device = "/dev/disk/by-uuid/82d788c1-f166-4c78-9dbc-b3fd7d731307"; } - ]; + swapDevices = [ + { device = "/dev/disk/by-label/swap"; } + ]; nixpkgs.hostPlatform = lib.mkDefault "aarch64-linux"; hardware.parallels.enable = true; From c4915bae208d7164c5e5de3481b713bdcad45e08 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Mon, 8 Dec 2025 12:18:05 -0500 Subject: [PATCH 102/282] updates --- hardware/alien.nix | 83 ++++++++++++++++++++----------- hardware/peach.nix | 48 ++++++++++++------ home/all.nix | 1 + home/browsers/firefox/default.nix | 2 +- home/hosts/alien.nix | 25 ++++------ home/hosts/peach.nix | 25 ++++------ home/hosts/vm-aarch64.nix | 25 ++++------ system/all.nix | 3 ++ 8 files changed, 119 insertions(+), 93 deletions(-) diff --git a/hardware/alien.nix b/hardware/alien.nix index 7bcb7de..38c4775 100755 --- a/hardware/alien.nix +++ b/hardware/alien.nix @@ -1,43 +1,68 @@ # Do not modify this file! It was generated by ‘nixos-generate-config’ # and may be overwritten by future invocations. Please make changes # to /etc/nixos/configuration.nix instead. -{ config, lib, pkgs, modulesPath, ... }: +{ + config, + lib, + pkgs, + modulesPath, + ... +}: { - imports = - [ (modulesPath + "/installer/scan/not-detected.nix") - ]; + imports = [ + (modulesPath + "/installer/scan/not-detected.nix") + ]; - boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "nvme" "usbhid" "sd_mod" ]; + boot.initrd.availableKernelModules = [ + "xhci_pci" + "ahci" + "nvme" + "usbhid" + "sd_mod" + ]; boot.initrd.kernelModules = [ ]; - boot.kernelModules = [ "kvm-intel" ]; - boot.extraModulePackages = [ ]; + boot.kernelModules = [ + "v4l2loopback" + "snd-aloop" + "kvm-intel" + ]; + boot.extraModulePackages = with config.boot.kernelPackages; [ v4l2loopback.out ]; + boot.extraModprobeConfig = '' + # exclusive_caps: Skype, Zoom, Teams etc. will only show device when actually streaming + # card_label: Name of virtual camera, how it'll show up in Skype, Zoom, Teams + # https://github.com/umlaeute/v4l2loopback + options v4l2loopback exclusive_caps=1 card_label="Virtual Camera" + ''; - fileSystems."/" = - { device = "/dev/disk/by-uuid/d83ec136-df01-4b9e-a523-6d75726fb904"; - fsType = "btrfs"; - options = [ "subvol=@" ]; - }; + fileSystems."/" = { + device = "/dev/disk/by-uuid/d83ec136-df01-4b9e-a523-6d75726fb904"; + fsType = "btrfs"; + options = [ "subvol=@" ]; + }; - fileSystems."/nix" = - { device = "/dev/disk/by-uuid/e369d905-a82b-45c5-838a-323169233583"; - fsType = "btrfs"; - }; + fileSystems."/nix" = { + device = "/dev/disk/by-uuid/e369d905-a82b-45c5-838a-323169233583"; + fsType = "btrfs"; + }; - fileSystems."/boot" = - { device = "/dev/disk/by-uuid/6444-169A"; - fsType = "vfat"; - options = [ "fmask=0077" "dmask=0077" ]; - }; - - fileSystems."/home" = - { device = "/dev/disk/by-uuid/881bdf55-1e43-4bfc-a1bf-3b2f72dbc122"; - fsType = "btrfs"; - }; - - swapDevices = - [ { device = "/dev/disk/by-uuid/056af100-9382-4cbd-b3d5-90df7da69585"; } + fileSystems."/boot" = { + device = "/dev/disk/by-uuid/6444-169A"; + fsType = "vfat"; + options = [ + "fmask=0077" + "dmask=0077" ]; + }; + + fileSystems."/home" = { + device = "/dev/disk/by-uuid/881bdf55-1e43-4bfc-a1bf-3b2f72dbc122"; + fsType = "btrfs"; + }; + + swapDevices = [ + { device = "/dev/disk/by-uuid/056af100-9382-4cbd-b3d5-90df7da69585"; } + ]; # Enables DHCP on each ethernet and wireless interface. In case of scripted networking # (the default) this is the recommended approach. When using systemd-networkd it's diff --git a/hardware/peach.nix b/hardware/peach.nix index efd0ae4..c83662b 100644 --- a/hardware/peach.nix +++ b/hardware/peach.nix @@ -1,28 +1,46 @@ # Do not modify this file! It was generated by ‘nixos-generate-config’ # and may be overwritten by future invocations. Please make changes # to /etc/nixos/configuration.nix instead. -{ config, lib, pkgs, modulesPath, ... }: +{ + config, + lib, + pkgs, + modulesPath, + ... +}: { - imports = - [ (modulesPath + "/installer/scan/not-detected.nix") - ]; + imports = [ + (modulesPath + "/installer/scan/not-detected.nix") + ]; boot.initrd.availableKernelModules = [ "sdhci_pci" ]; boot.initrd.kernelModules = [ ]; - boot.kernelModules = [ ]; - boot.extraModulePackages = [ ]; + boot.kernelModules = [ + "v4l2loopback" + "snd-aloop" + ]; + boot.extraModulePackages = with config.boot.kernelPackages; [ v4l2loopback.out ]; + boot.extraModprobeConfig = '' + # exclusive_caps: Skype, Zoom, Teams etc. will only show device when actually streaming + # card_label: Name of virtual camera, how it'll show up in Skype, Zoom, Teams + # https://github.com/umlaeute/v4l2loopback + options v4l2loopback exclusive_caps=1 card_label="Virtual Camera" + ''; - fileSystems."/" = - { device = "/dev/disk/by-uuid/8a3cb91f-2e3f-498d-8613-230976dff36e"; - fsType = "ext4"; - }; + fileSystems."/" = { + device = "/dev/disk/by-uuid/8a3cb91f-2e3f-498d-8613-230976dff36e"; + fsType = "ext4"; + }; - fileSystems."/boot" = - { device = "/dev/disk/by-uuid/FA86-1704"; - fsType = "vfat"; - options = [ "fmask=0022" "dmask=0022" ]; - }; + fileSystems."/boot" = { + device = "/dev/disk/by-uuid/FA86-1704"; + fsType = "vfat"; + options = [ + "fmask=0022" + "dmask=0022" + ]; + }; swapDevices = [ ]; diff --git a/home/all.nix b/home/all.nix index cc9e80c..036003c 100755 --- a/home/all.nix +++ b/home/all.nix @@ -51,6 +51,7 @@ gimp calibre spotify-player + obs-studio # browsers # (chromium.override { diff --git a/home/browsers/firefox/default.nix b/home/browsers/firefox/default.nix index 6221196..99a5455 100644 --- a/home/browsers/firefox/default.nix +++ b/home/browsers/firefox/default.nix @@ -25,7 +25,7 @@ ]; }; policies = { - BlockAboutConfig = true; + BlockAboutConfig = false; DefaultDownloadDirectory = "\${home}/Downloads"; # Check about:support for extension/add-on ID strings. # Valid strings for installation_mode are "allowed", "blocked", diff --git a/home/hosts/alien.nix b/home/hosts/alien.nix index 6c0114b..c885919 100644 --- a/home/hosts/alien.nix +++ b/home/hosts/alien.nix @@ -15,22 +15,15 @@ catppuccin-cursors.mochaLight catppuccin-cursors.mochaBlue - ( - (catppuccin-kde.override { - flavour = [ - "latte" - "mocha" - ]; - accents = [ - "blue" - ]; - }).overrideAttrs - (oldAttrs: { - postInstall = '' - rm -rf $out/share/aurorae - ''; - }) - ) + (catppuccin-kde.override { + flavour = [ + "latte" + "mocha" + ]; + accents = [ + "blue" + ]; + }) # steam gtk theming adwsteamgtk diff --git a/home/hosts/peach.nix b/home/hosts/peach.nix index c348460..91e5be9 100644 --- a/home/hosts/peach.nix +++ b/home/hosts/peach.nix @@ -20,22 +20,15 @@ catppuccin-cursors.mochaLight catppuccin-cursors.mochaPeach - ( - (catppuccin-kde.override { - flavour = [ - "latte" - "mocha" - ]; - accents = [ - "peach" - ]; - }).overrideAttrs - (oldAttrs: { - postInstall = '' - rm -rf $out/share/aurorae - ''; - }) - ) + (catppuccin-kde.override { + flavour = [ + "latte" + "mocha" + ]; + accents = [ + "peach" + ]; + }) moonlight-qt ]; diff --git a/home/hosts/vm-aarch64.nix b/home/hosts/vm-aarch64.nix index 14fc25b..566e7d5 100644 --- a/home/hosts/vm-aarch64.nix +++ b/home/hosts/vm-aarch64.nix @@ -15,22 +15,15 @@ catppuccin-cursors.mochaLight catppuccin-cursors.mochaGreen - ( - (catppuccin-kde.override { - flavour = [ - "latte" - "mocha" - ]; - accents = [ - "green" - ]; - }).overrideAttrs - (oldAttrs: { - postInstall = '' - rm -rf $out/share/aurorae - ''; - }) - ) + (catppuccin-kde.override { + flavour = [ + "latte" + "mocha" + ]; + accents = [ + "green" + ]; + }) ]; diff --git a/system/all.nix b/system/all.nix index e38403f..ba86733 100755 --- a/system/all.nix +++ b/system/all.nix @@ -83,6 +83,9 @@ cache.enable = true; }; + programs.nix-ld.enable = true; + programs.nix-ld.libraries = with pkgs; [ ]; + networking.networkmanager.enable = true; hardware.bluetooth.enable = true; From 5c441510227f576669dbe58a55e0dbbc7c1f6e2a Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Thu, 11 Dec 2025 22:26:19 -0500 Subject: [PATCH 103/282] updates to tiling and neovim --- home/terminal/nvim/default.nix | 27 +++++--- home/tiling/niri/config/config.kdl | 7 +- home/tiling/niri/default.nix | 34 +++++++-- home/tiling/niri/fuzzel.ini | 0 home/tiling/quickshell/config/shell.qml | 43 ++++++++++++ home/tiling/quickshell/default.nix | 14 ++++ home/tiling/waybar/config/config.jsonc | 86 ----------------------- home/tiling/waybar/config/mocha.css | 26 ------- home/tiling/waybar/config/style.css | 92 ------------------------- home/tiling/waybar/default.nix | 13 ---- system/all.nix | 2 +- 11 files changed, 112 insertions(+), 232 deletions(-) create mode 100644 home/tiling/niri/fuzzel.ini create mode 100644 home/tiling/quickshell/config/shell.qml create mode 100644 home/tiling/quickshell/default.nix delete mode 100644 home/tiling/waybar/config/config.jsonc delete mode 100644 home/tiling/waybar/config/mocha.css delete mode 100644 home/tiling/waybar/config/style.css delete mode 100644 home/tiling/waybar/default.nix diff --git a/home/terminal/nvim/default.nix b/home/terminal/nvim/default.nix index fc2024c..03ba2b8 100644 --- a/home/terminal/nvim/default.nix +++ b/home/terminal/nvim/default.nix @@ -5,6 +5,8 @@ EDITOR = "nvim"; }; + home.packages = with pkgs; [ kdePackages.qtdeclarative ]; + programs.nixvim = { enable = true; enablePrintInit = true; @@ -73,20 +75,20 @@ plugins = { nvim-autopairs = { enable = true; - # autoLoad = true; + autoLoad = true; }; cmp = { autoEnableSources = true; enable = true; - # autoLoad = true; + autoLoad = true; }; copilot-lua = { enable = true; - # autoLoad = true; + autoLoad = true; }; conform-nvim = { enable = true; - # autoLoad = true; + autoLoad = true; settings = { formatters_by_ft = { lua = [ "stylua" ]; @@ -136,15 +138,24 @@ }; fzf-lua = { enable = true; - # autoLoad = true; + autoLoad = true; }; kitty-scrollback = { enable = true; - # autoLoad = true; + autoLoad = true; }; lsp = { enable = true; - # autoLoad = true; + servers = { + qmlls = { + enable = true; + cmd = [ + "qmlls" + "-E" + ]; + }; + }; + autoLoad = true; }; lualine = { enable = true; @@ -245,7 +256,7 @@ tabline = { }; extensions = [ ]; }; - # autoLoad = true; + autoLoad = true; }; }; }; diff --git a/home/tiling/niri/config/config.kdl b/home/tiling/niri/config/config.kdl index a459c28..29add73 100644 --- a/home/tiling/niri/config/config.kdl +++ b/home/tiling/niri/config/config.kdl @@ -208,7 +208,7 @@ layout { // If you enable the border, you probably want to disable the focus ring. // off - width 1 + width 2 active-color "#a6e3a1" inactive-color "#313244" // Color of the border around windows that request your attention. @@ -278,7 +278,10 @@ layout { // See the binds section below for more spawn examples. // This line starts waybar, a commonly used bar for Wayland compositors. -spawn-at-startup "waybar" +// spawn-at-startup "waybar" + +// Instead let's start quickshell, which is similar but made with QT/QML +spawn-at-startup "quickshell" // To run a shell command (with variables, pipes, etc.), use spawn-sh-at-startup: // spawn-sh-at-startup "qs -c ~/source/qs/MyAwesomeShell" diff --git a/home/tiling/niri/default.nix b/home/tiling/niri/default.nix index ce18911..4066ac8 100644 --- a/home/tiling/niri/default.nix +++ b/home/tiling/niri/default.nix @@ -1,5 +1,13 @@ { config, pkgs, ... }: +let + catppuccin-fuzzel = pkgs.fetchFromGitHub { + owner = "catppuccin"; + repo = "fuzzel"; + rev = "0af0e26901b60ada4b20522df739f032797b07c3"; + sha256 = "sha256-XpItMGsYq4XvLT+7OJ9YRILfd/9RG1GMuO6J4hSGepg="; + }; +in { home.packages = with pkgs; [ swaylock @@ -7,9 +15,27 @@ xdg-desktop-portal ]; - home.file.".config/niri" = { - source = ./config; - recursive = true; - force = true; + home.file = { + ".config/niri" = { + source = ./config; + recursive = true; + force = true; + }; + ".config/fuzzel/colors.ini" = { + text = builtins.readFile ( + "${catppuccin-fuzzel}/themes/catppuccin-${config.catppuccin.flavor}/${config.catppuccin.accent}.ini" + ); + force = true; + }; + ".config/fuzzel/fuzzel.ini" = { + text = '' + include = ./colors.ini + font = "NotoSansM Nerd Font Mono:size=10" + terminal = "kitty" + icons-enabled = yes + layer = "overlay" + ''; + force = true; + }; }; } diff --git a/home/tiling/niri/fuzzel.ini b/home/tiling/niri/fuzzel.ini new file mode 100644 index 0000000..e69de29 diff --git a/home/tiling/quickshell/config/shell.qml b/home/tiling/quickshell/config/shell.qml new file mode 100644 index 0000000..d4c325e --- /dev/null +++ b/home/tiling/quickshell/config/shell.qml @@ -0,0 +1,43 @@ +import Quickshell // for PanelWindow +import Quickshell.Io // for Process +import QtQuick // for Text + +PanelWindow { + anchors { + top: false + left: true + right: true + bottom: true + } + + implicitHeight: 37 + + color: "transparent" + + Rectangle { + anchors.fill: parent + color: "#1e1e2e" + Text { + id: clock + // center the bar in its parent component (the window) + anchors.centerIn: parent + anchors.right: parent + color: "#cdd6f4" + + Process { + id: dateProc + command: ["date"] + running: true + stdout: StdioCollector { + onStreamFinished: clock.text = this.text + } + } + Timer { + interval: 1000 + running: true + repeat: true + onTriggered: dateProc.running = true + } + } + } +} diff --git a/home/tiling/quickshell/default.nix b/home/tiling/quickshell/default.nix new file mode 100644 index 0000000..1463fe2 --- /dev/null +++ b/home/tiling/quickshell/default.nix @@ -0,0 +1,14 @@ +{ config, pkgs, ... }: + +{ + home = { + # packages = with pkgs; [ quickshell ]; + file.".config/quickshell" = { + source = ./config; + recursive = true; + }; + }; + programs.quickshell = { + enable = true; + }; +} diff --git a/home/tiling/waybar/config/config.jsonc b/home/tiling/waybar/config/config.jsonc deleted file mode 100644 index 89989eb..0000000 --- a/home/tiling/waybar/config/config.jsonc +++ /dev/null @@ -1,86 +0,0 @@ -{ - "layer": "top", - "spacing": 0, - "height": 0, - - "margin-top": 0, - "margin-right": 0, - "margin-bottom": 0, - "margin-left": 0, - - "modules-left": ["sway/workspaces"], - - "modules-center": [], - - "modules-right": [ - "tray", - "cpu_text", - "cpu", - "memory", - "battery", - "network", - "pulseaudio", - "clock", - ], - - "sway/workspaces": { - "disable-scroll": true, - "all-outputs": true, - "tooltip": false, - }, - - "tray": { - "spacing": 10, - "tooltip": false, - }, - - "clock": { - "format": "{:%a %d, %I:%M %p}", - "tooltip": false, - }, - - "cpu": { - "format": "cpu {usage}%", - "interval": 2, - - "states": { - "critical": 90, - }, - }, - - "memory": { - "format": "mem {percentage}%", - "interval": 2, - - "states": { - "critical": 80, - }, - }, - - "battery": { - "format": "bat {capacity}%", - "interval": 5, - "states": { - "warning": 20, - "critical": 10, - }, - "tooltip": false, - }, - - "network": { - "format-wifi": "wifi up", - "format-ethernet": "enth up", - "format-disconnected": "no network", - "tooltip": false, - }, - - "pulseaudio": { - "scroll-step": 5, - "max-volume": 150, - "format": "vol {volume}%", - "format-bluetooth": "vol {volume}%", - "nospacing": 1, - "on-click": "pavucontrol", - "tooltip": false, - }, -} diff --git a/home/tiling/waybar/config/mocha.css b/home/tiling/waybar/config/mocha.css deleted file mode 100644 index 0eb6a82..0000000 --- a/home/tiling/waybar/config/mocha.css +++ /dev/null @@ -1,26 +0,0 @@ -@define-color rosewater #f5e0dc; -@define-color flamingo #f2cdcd; -@define-color pink #f5c2e7; -@define-color mauve #cba6f7; -@define-color red #f38ba8; -@define-color maroon #eba0ac; -@define-color peach #fab387; -@define-color yellow #f9e2af; -@define-color green #a6e3a1; -@define-color teal #94e2d5; -@define-color sky #89dceb; -@define-color sapphire #74c7ec; -@define-color blue #89b4fa; -@define-color lavender #b4befe; -@define-color text #cdd6f4; -@define-color subtext1 #bac2de; -@define-color subtext0 #a6adc8; -@define-color overlay2 #9399b2; -@define-color overlay1 #7f849c; -@define-color overlay0 #6c7086; -@define-color surface2 #585b70; -@define-color surface1 #45475a; -@define-color surface0 #313244; -@define-color base #1e1e2e; -@define-color mantle #181825; -@define-color crust #11111b; diff --git a/home/tiling/waybar/config/style.css b/home/tiling/waybar/config/style.css deleted file mode 100644 index ac840b1..0000000 --- a/home/tiling/waybar/config/style.css +++ /dev/null @@ -1,92 +0,0 @@ -@import "./mocha.css"; -* { - border: none; - border-radius: 0; - min-height: 0; - font-family: "NotoSansM Nerd Font Mono"; - /*font-weight: bold;*/ - font-size: 12px; - padding: 0; -} - -window#waybar { - background: @crust; - border-bottom: 2px solid @mantle; -} - -tooltip { - background-color: @crust; - border: 2px solid @peach; -} - -#clock, -#tray, -#cpu, -#memory, -#battery, -#network, -#pulseaudio { - margin: 6px 6px 6px 0px; - padding: 2px 8px; - border-radius: 12px; -} - -#workspaces { - background-color: #322d28; - margin: 6px 0px 6px 6px; - border: 2px solid #625343; -} - -#workspaces button { - all: initial; - min-width: 0; - box-shadow: inset 0 -3px transparent; - padding: 2px 4px; - color: #917a53; -} - -#workspaces button.focused { - color: #ddc7a1; -} - -#workspaces button.urgent { - background-color: #e78a4e; - color: #1d2021; -} - -#clock { - background-color: @base; - border: 2px solid @blue; - color: @subtext0; -} - -#battery { - background-color: @base; - border: 2px solid @green; - color: @subtext0; -} - -#tray, -#cpu, -#memory, -#network, -#pulseaudio { - background-color: @base; - border: 2px solid @blue; - color: @subtext0; -} - -#cpu.critical, -#memory.critical { - background-color: @base; - border: 2px solid @red; - color: @subtext0; -} - -#battery.warning, -#battery.critical, -#battery.urgent { - background-color: #c9af82; - border: 2px solid #917a53; - color: #ae6330; -} diff --git a/home/tiling/waybar/default.nix b/home/tiling/waybar/default.nix deleted file mode 100644 index 51a5665..0000000 --- a/home/tiling/waybar/default.nix +++ /dev/null @@ -1,13 +0,0 @@ -{ config, pkgs, ... }: - -{ - programs.waybar = { - enable = true; - }; - - home.file.".config/waybar" = { - source = ./config; - recursive = true; - force = true; - }; -} diff --git a/system/all.nix b/system/all.nix index ba86733..041b9e8 100755 --- a/system/all.nix +++ b/system/all.nix @@ -28,7 +28,7 @@ ../home/all.nix ../home/browsers/firefox/default.nix ../home/tiling/niri/default.nix - ../home/tiling/waybar/default.nix + ../home/tiling/quickshell/default.nix ../home/systemd/default.nix ../home/terminal/btop/default.nix ../home/terminal/fish/default.nix From 0680b63126fb2e3e0656aca105cf454c4e237a4b Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Fri, 12 Dec 2025 13:23:24 -0500 Subject: [PATCH 104/282] updates --- home/browsers/firefox/chrome/theme/hide.css | 8 + home/systemd/default.nix | 36 ++-- home/terminal/nvim/default.nix | 4 - home/tiling/niri/config/config.kdl | 191 +++++++++----------- home/tiling/niri/default.nix | 3 +- home/tiling/niri/fuzzel.ini | 0 home/tiling/quickshell/config/shell.qml | 13 +- home/tiling/waybar/config/config.jsonc | 87 +++++++++ home/tiling/waybar/config/mocha.css | 26 +++ home/tiling/waybar/config/scripts/clock.sh | 1 + home/tiling/waybar/config/style.css | 101 +++++++++++ home/tiling/waybar/default.nix | 13 ++ nohup.out | 6 + system/all.nix | 11 +- system/hosts/peach/default.nix | 2 + 15 files changed, 360 insertions(+), 142 deletions(-) delete mode 100644 home/tiling/niri/fuzzel.ini create mode 100644 home/tiling/waybar/config/config.jsonc create mode 100644 home/tiling/waybar/config/mocha.css create mode 100755 home/tiling/waybar/config/scripts/clock.sh create mode 100644 home/tiling/waybar/config/style.css create mode 100644 home/tiling/waybar/default.nix create mode 100644 nohup.out diff --git a/home/browsers/firefox/chrome/theme/hide.css b/home/browsers/firefox/chrome/theme/hide.css index 938830c..ba7e3ca 100644 --- a/home/browsers/firefox/chrome/theme/hide.css +++ b/home/browsers/firefox/chrome/theme/hide.css @@ -5,3 +5,11 @@ .bookmark-item[container] { list-style-image: url("chrome://global/skin/dirListing/folder.png") !important; } + +#toolbar-menubar { + display: none !important; +} + +#menubar-items { + visibility: hidden !important; +} diff --git a/home/systemd/default.nix b/home/systemd/default.nix index cd14fbf..2e39d7a 100644 --- a/home/systemd/default.nix +++ b/home/systemd/default.nix @@ -80,24 +80,24 @@ # }; # }; - systemd.user.services.input-leap = { - Unit = { - Description = "Autostart Input Leap"; - After = [ "graphical-session.target" ]; - }; + # systemd.user.services.input-leap = { + # Unit = { + # Description = "Autostart Input Leap"; + # After = [ "graphical-session.target" ]; + # }; - Service = { - Type = "oneshot"; - RemainAfterExit = true; - PassEnvironment = "DISPLAY"; - ExecStart = "${pkgs.writeShellScript "input-leap-start" '' - sleep 5 - ${pkgs.input-leap}/bin/input-leap - ''}"; - }; + # Service = { + # Type = "oneshot"; + # RemainAfterExit = true; + # PassEnvironment = "DISPLAY"; + # ExecStart = "${pkgs.writeShellScript "input-leap-start" '' + # sleep 5 + # ${pkgs.input-leap}/bin/input-leap + # ''}"; + # }; - Install = { - WantedBy = [ "graphical-session.target" ]; - }; - }; + # Install = { + # WantedBy = [ "graphical-session.target" ]; + # }; + # }; } diff --git a/home/terminal/nvim/default.nix b/home/terminal/nvim/default.nix index 03ba2b8..6afb56b 100644 --- a/home/terminal/nvim/default.nix +++ b/home/terminal/nvim/default.nix @@ -82,10 +82,6 @@ enable = true; autoLoad = true; }; - copilot-lua = { - enable = true; - autoLoad = true; - }; conform-nvim = { enable = true; autoLoad = true; diff --git a/home/tiling/niri/config/config.kdl b/home/tiling/niri/config/config.kdl index 29add73..82d0769 100644 --- a/home/tiling/niri/config/config.kdl +++ b/home/tiling/niri/config/config.kdl @@ -1,27 +1,5 @@ -// This config is in the KDL format: https://kdl.dev -// "/-" comments out the following node. -// Check the wiki for a full description of the configuration: -// https://yalter.github.io/niri/Configuration:-Introduction - -// Input device configuration. -// Find the full list of options on the wiki: -// https://yalter.github.io/niri/Configuration:-Input input { keyboard { - xkb { - // You can set rules, model, layout, variant and options. - // For more information, see xkeyboard-config(7). - - // For example: - // layout "us,ru" - // options "grp:win_space_toggle,compose:ralt,ctrl:nocaps" - - // If this section is empty, niri will fetch xkb settings - // from org.freedesktop.locale1. You can control these using - // localectl set-x11-keymap. - } - - // Enable numlock on startup, omitting this setting disables it. numlock } @@ -42,35 +20,16 @@ input { // disabled-on-external-mouse } - mouse { - // off - // natural-scroll - // accel-speed 0.2 - // accel-profile "flat" - // scroll-method "no-scroll" - } - - trackpoint { - // off - // natural-scroll - // accel-speed 0.2 - // accel-profile "flat" - // scroll-method "on-button-down" - // scroll-button 273 - // scroll-button-lock - // middle-emulation - } - - // Uncomment this to make the mouse warp to the center of newly focused windows. - // warp-mouse-to-focus - // Focus windows and outputs automatically when moving the mouse into them. // Setting max-scroll-amount="0%" makes it work only on windows already fully on screen. focus-follows-mouse max-scroll-amount="0%" } overview { - backdrop-color "#181825" + backdrop-color "#11111b" + workspace-shadow { + off + } } // Disable the hot corners. @@ -80,13 +39,26 @@ gestures { } } +environment { + QT_QPA_PLATFORM "wayland" + DISPLAY null +} + +cursor { + xcursor-theme "catppuccin-mocha-dark-cursors" + xcursor-size 24 + + hide-when-typing + hide-after-inactive-ms 1000 +} + // You can configure outputs by their name, which you can find // by running `niri msg outputs` while inside a niri instance. // The built-in laptop monitor is usually called "eDP-1". // Find more information on the wiki: // https://yalter.github.io/niri/Configuration:-Outputs // Remember to uncomment the node by removing "/-"! -/-output "eDP-1" { +output "eDP-1" { // Uncomment this line to disable this output. // off @@ -96,10 +68,10 @@ gestures { // for the resolution. // If the mode is omitted altogether or is invalid, niri will pick one automatically. // Run `niri msg outputs` while inside a niri instance to list all outputs and their modes. - mode "1920x1080@120.030" + // mode "1920x1080@120.030" // You can use integer or fractional scale, for example use 1.5 for 150% scale. - scale 2 + scale 1.75 // Transform allows to rotate the output counter-clockwise, valid values are: // normal, 90, 180, 270, flipped, flipped-90, flipped-180 and flipped-270. @@ -114,13 +86,45 @@ gestures { // so to put another output directly adjacent to it on the right, set its x to 1920. // If the position is unset or results in an overlap, the output is instead placed // automatically. - position x=1280 y=0 + // position x=1280 y=0 +} + +output "HDMI-A-1" { + // Uncomment this line to disable this output. + // off + + // Resolution and, optionally, refresh rate of the output. + // The format is "x" or "x@". + // If the refresh rate is omitted, niri will pick the highest refresh rate + // for the resolution. + // If the mode is omitted altogether or is invalid, niri will pick one automatically. + // Run `niri msg outputs` while inside a niri instance to list all outputs and their modes. + // mode "1920x1080@120.030" + + // You can use integer or fractional scale, for example use 1.5 for 150% scale. + scale 1.75 + + // Transform allows to rotate the output counter-clockwise, valid values are: + // normal, 90, 180, 270, flipped, flipped-90, flipped-180 and flipped-270. + transform "normal" + + // Position of the output in the global coordinate space. + // This affects directional monitor actions like "focus-monitor-left", and cursor movement. + // The cursor can only move between directly adjacent outputs. + // Output scale and rotation has to be taken into account for positioning: + // outputs are sized in logical, or scaled, pixels. + // For example, a 3840×2160 output with scale 2.0 will have a logical size of 1920×1080, + // so to put another output directly adjacent to it on the right, set its x to 1920. + // If the position is unset or results in an overlap, the output is instead placed + // automatically. + // position x=1280 y=0 } // Settings that influence how windows are positioned and sized. // Find more information on the wiki: // https://yalter.github.io/niri/Configuration:-Layout layout { + background-color "#181825" // Set gaps around windows in logical pixels. gaps 4 @@ -164,42 +168,8 @@ layout { // Alternatively, you can override it with a window rule called // `draw-border-with-background`. - // You can change how the focus ring looks. focus-ring { - // Uncomment this line to disable the focus ring. - off - - // How many logical pixels the ring extends out from the windows. - width 1 - - // Colors can be set in a variety of ways: - // - CSS named colors: "red" - // - RGB hex: "#rgb", "#rgba", "#rrggbb", "#rrggbbaa" - // - CSS-like notation: "rgb(255, 127, 0)", rgba(), hsl() and a few others. - - // Color of the ring on the active monitor. - active-color "#a6e3a1" - - // Color of the ring on inactive monitors. - // - // The focus ring only draws around the active window, so the only place - // where you can see its inactive-color is on other monitors. - inactive-color "#313244" - - // You can also use gradients. They take precedence over solid colors. - // Gradients are rendered the same as CSS linear-gradient(angle, from, to). - // The angle is the same as in linear-gradient, and is optional, - // defaulting to 180 (top-to-bottom gradient). - // You can use any CSS linear-gradient tool on the web to set these up. - // Changing the color space is also supported, check the wiki for more info. - // - // active-gradient from="#80c8ff" to="#c7ff7f" angle=45 - - // You can also color the gradient relative to the entire view - // of the workspace, rather than relative to just the window itself. - // To do that, set relative-to="workspace-view". - // - // inactive-gradient from="#505050" to="#808080" angle=45 relative-to="workspace-view" + off } // You can also add a border. It's similar to the focus ring, but always visible. @@ -208,9 +178,11 @@ layout { // If you enable the border, you probably want to disable the focus ring. // off - width 2 - active-color "#a6e3a1" + width 1 + active-color "#6c7086" + // active-gradient from="#fab387" to="#89b4fa" angle=90 inactive-color "#313244" + // inactive-gradient from="#313244" to="#6c7086" angle=90 // Color of the border around windows that request your attention. urgent-color "#eba0ac" @@ -225,7 +197,7 @@ layout { // You can enable drop shadows for windows. shadow { // Uncomment the next line to enable shadows. - // on + on // By default, the shadow draws only around its window, and not behind it. // Uncomment this setting to make the shadow draw behind its window. @@ -256,7 +228,7 @@ layout { offset x=0 y=5 // You can also change the shadow color and opacity. - color "#11111b77" + color "#1e1e2e77" } // Struts shrink the area occupied by windows, similarly to layer-shell panels. @@ -278,17 +250,17 @@ layout { // See the binds section below for more spawn examples. // This line starts waybar, a commonly used bar for Wayland compositors. -// spawn-at-startup "waybar" +spawn-at-startup "waybar" -// Instead let's start quickshell, which is similar but made with QT/QML -spawn-at-startup "quickshell" +// Instead let's start quickshell, which is similar but made with Qt/QML +// spawn-at-startup "quickshell" // To run a shell command (with variables, pipes, etc.), use spawn-sh-at-startup: // spawn-sh-at-startup "qs -c ~/source/qs/MyAwesomeShell" hotkey-overlay { // Uncomment this line to disable the "Important Hotkeys" pop-up at startup. - // skip-at-startup + skip-at-startup } // Uncomment this line to ask the clients to omit their client-side decorations if possible. @@ -296,7 +268,7 @@ hotkey-overlay { // Additionally, clients will be informed that they are tiled, removing some client-side rounded corners. // This option will also fix border/focus ring drawing behind some semitransparent windows. // After enabling or disabling this, you need to restart the apps for this to take effect. -// prefer-no-csd +prefer-no-csd // You can change the path where screenshots are saved. // A ~ at the front will be expanded to the home directory. @@ -321,16 +293,6 @@ animations { // Find more information on the wiki: // https://yalter.github.io/niri/Configuration:-Window-Rules -// Work around WezTerm's initial configure bug -// by setting an empty default-column-width. -window-rule { - // This regular expression is intentionally made as specific as possible, - // since this is the default config, and we want no false positives. - // You can get away with just app-id="wezterm" if you want. - match app-id=r#"^org\.wezfurlong\.wezterm$"# - default-column-width {} -} - // Open the Firefox picture-in-picture player as floating by default. window-rule { // This app-id regular expression will work for both: @@ -338,6 +300,7 @@ window-rule { // - Flatpak Firefox (app-id is "org.mozilla.firefox") match app-id=r#"firefox$"# title="^Picture-in-Picture$" open-floating true + default-floating-position x=32 y=32 relative-to="bottom-left" } // Example: block out two password managers from screen capture. @@ -355,10 +318,24 @@ window-rule { // Example: enable rounded corners for all windows. // (This example rule is commented out with a "/-" in front.) window-rule { - geometry-corner-radius 12 + geometry-corner-radius 8 clip-to-geometry true } +window-rule { + match app-id="openmw" title="OpenMW" + open-maximized true + focus-ring { + off + } + border { + off + } + shadow { + off + } +} + binds { // Keys consist of modifiers separated by + signs, followed by an XKB key name // in the end. To find an XKB name for a particular key, you may use a program @@ -387,8 +364,10 @@ binds { // Example volume keys mappings for PipeWire & WirePlumber. // The allow-when-locked=true property makes them work even when the session is locked. // Using spawn-sh allows to pass multiple arguments together with the command. - XF86AudioRaiseVolume allow-when-locked=true { spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.1+"; } - XF86AudioLowerVolume allow-when-locked=true { spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.1-"; } + XF86AudioRaiseVolume allow-when-locked=true { spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.05+"; } + XF86AudioLowerVolume allow-when-locked=true { spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.05-"; } + Shift+XF86AudioRaiseVolume allow-when-locked=true { spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.01+"; } + Shift+XF86AudioLowerVolume allow-when-locked=true { spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.01-"; } XF86AudioMute allow-when-locked=true { spawn-sh "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"; } XF86AudioMicMute allow-when-locked=true { spawn-sh "wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"; } diff --git a/home/tiling/niri/default.nix b/home/tiling/niri/default.nix index 4066ac8..3140e01 100644 --- a/home/tiling/niri/default.nix +++ b/home/tiling/niri/default.nix @@ -13,6 +13,7 @@ in swaylock fuzzel xdg-desktop-portal + brightnessctl ]; home.file = { @@ -29,7 +30,7 @@ in }; ".config/fuzzel/fuzzel.ini" = { text = '' - include = ./colors.ini + include = /home/sckova/.config/fuzzel/colors.ini font = "NotoSansM Nerd Font Mono:size=10" terminal = "kitty" icons-enabled = yes diff --git a/home/tiling/niri/fuzzel.ini b/home/tiling/niri/fuzzel.ini deleted file mode 100644 index e69de29..0000000 diff --git a/home/tiling/quickshell/config/shell.qml b/home/tiling/quickshell/config/shell.qml index d4c325e..d250648 100644 --- a/home/tiling/quickshell/config/shell.qml +++ b/home/tiling/quickshell/config/shell.qml @@ -4,10 +4,9 @@ import QtQuick // for Text PanelWindow { anchors { - top: false + top: true left: true right: true - bottom: true } implicitHeight: 37 @@ -16,17 +15,17 @@ PanelWindow { Rectangle { anchors.fill: parent - color: "#1e1e2e" + color: "#000000" Text { id: clock - // center the bar in its parent component (the window) - anchors.centerIn: parent - anchors.right: parent + anchors.verticalCenter: parent.verticalCenter + anchors.right: parent.right + anchors.rightMargin: 10 color: "#cdd6f4" Process { id: dateProc - command: ["date"] + command: ["date", "+%a, %b %d @ %I:%M%P"] running: true stdout: StdioCollector { onStreamFinished: clock.text = this.text diff --git a/home/tiling/waybar/config/config.jsonc b/home/tiling/waybar/config/config.jsonc new file mode 100644 index 0000000..1272ad6 --- /dev/null +++ b/home/tiling/waybar/config/config.jsonc @@ -0,0 +1,87 @@ +{ + "layer": "top", + "spacing": 0, + "height": 42, + + "margin-top": 0, + "margin-right": 0, + "margin-bottom": 0, + "margin-left": 0, + + "modules-left": ["sway/workspaces"], + + "modules-center": [], + + "modules-right": [ + "tray", + "cpu_text", + "cpu", + "memory", + "battery", + "network", + "pulseaudio", + "custom/clock", + ], + + "sway/workspaces": { + "disable-scroll": true, + "all-outputs": true, + "tooltip": false, + }, + + "tray": { + "spacing": 10, + "tooltip": false, + }, + + "custom/clock": { + "exec": "/home/sckova/.config/waybar/scripts/clock.sh", + "restart-interval": 1, + "tooltip": false, + }, + + "cpu": { + "format": "cpu {usage}%", + "interval": 2, + + "states": { + "critical": 90, + }, + }, + + "memory": { + "format": "mem {percentage}%", + "interval": 2, + + "states": { + "critical": 80, + }, + }, + + "battery": { + "format": "bat {capacity}%", + "interval": 5, + "states": { + "warning": 20, + "critical": 10, + }, + "tooltip": false, + }, + + "network": { + "format-wifi": "wifi up", + "format-ethernet": "enth up", + "format-disconnected": "no network", + "tooltip": false, + }, + + "pulseaudio": { + "scroll-step": 5, + "max-volume": 150, + "format": "vol {volume}%", + "format-bluetooth": "vol {volume}%", + "nospacing": 1, + "on-click": "pavucontrol", + "tooltip": false, + }, +} diff --git a/home/tiling/waybar/config/mocha.css b/home/tiling/waybar/config/mocha.css new file mode 100644 index 0000000..0eb6a82 --- /dev/null +++ b/home/tiling/waybar/config/mocha.css @@ -0,0 +1,26 @@ +@define-color rosewater #f5e0dc; +@define-color flamingo #f2cdcd; +@define-color pink #f5c2e7; +@define-color mauve #cba6f7; +@define-color red #f38ba8; +@define-color maroon #eba0ac; +@define-color peach #fab387; +@define-color yellow #f9e2af; +@define-color green #a6e3a1; +@define-color teal #94e2d5; +@define-color sky #89dceb; +@define-color sapphire #74c7ec; +@define-color blue #89b4fa; +@define-color lavender #b4befe; +@define-color text #cdd6f4; +@define-color subtext1 #bac2de; +@define-color subtext0 #a6adc8; +@define-color overlay2 #9399b2; +@define-color overlay1 #7f849c; +@define-color overlay0 #6c7086; +@define-color surface2 #585b70; +@define-color surface1 #45475a; +@define-color surface0 #313244; +@define-color base #1e1e2e; +@define-color mantle #181825; +@define-color crust #11111b; diff --git a/home/tiling/waybar/config/scripts/clock.sh b/home/tiling/waybar/config/scripts/clock.sh new file mode 100755 index 0000000..8185d57 --- /dev/null +++ b/home/tiling/waybar/config/scripts/clock.sh @@ -0,0 +1 @@ +date +"%a, %b %d @ %I:%M%P" diff --git a/home/tiling/waybar/config/style.css b/home/tiling/waybar/config/style.css new file mode 100644 index 0000000..6a31bac --- /dev/null +++ b/home/tiling/waybar/config/style.css @@ -0,0 +1,101 @@ +@import "./mocha.css"; +* { + border: none; + border-radius: 0; + min-height: 0; + font-family: "Noto Sans"; + /*font-weight: bold;*/ + font-size: 12px; + padding: 0; +} + +window#waybar { + background: transparent; + border-bottom-color: @mantle; +} + +tooltip { + background-color: @crust; + border-color: @peach; +} + +#custom-clock, +#tray, +#cpu, +#memory, +#battery, +#network, +#pulseaudio { + background-color: @base; + color: @text; + border: 2px solid @text; + margin: 8px 6px 8px 0px; + padding: 2px 8px; + border-radius: 8px; +} + +#workspaces { + margin: 6px 0px 6px 6px; + border-color: #625343; +} + +#workspaces button { + all: initial; + min-width: 0; + box-shadow: inset 0 -3px transparent; + padding: 2px 4px; + color: #917a53; +} + +#workspaces button.focused { + color: #ddc7a1; +} + +#workspaces button.urgent { + background-color: #e78a4e; + color: #1d2021; +} + +#cpu { + border-color: @maroon; +} + +#memory { + border-color: @peach; +} + +#battery { + border-color: @green; +} + +#network { + border-color: @teal; +} + +#pulseaudio { + border-color: @blue; +} + +#custom-clock { + border-color: @lavender; +} + +#tray { + border-color: @blue; + color: @subtext0; +} + +#cpu.critical, +#memory.critical { + background-color: @base; + border-color: @red; + color: @subtext0; +} + +#battery.warning, +#battery.critical, +#battery.urgent { + background-color: #c9af82; + border-color: #917a53; + color: #ae6330; +} diff --git a/home/tiling/waybar/default.nix b/home/tiling/waybar/default.nix new file mode 100644 index 0000000..51a5665 --- /dev/null +++ b/home/tiling/waybar/default.nix @@ -0,0 +1,13 @@ +{ config, pkgs, ... }: + +{ + programs.waybar = { + enable = true; + }; + + home.file.".config/waybar" = { + source = ./config; + recursive = true; + force = true; + }; +} diff --git a/nohup.out b/nohup.out new file mode 100644 index 0000000..a245621 --- /dev/null +++ b/nohup.out @@ -0,0 +1,6 @@ +[2025-12-12 15:14:41.470] [info] Using configuration file /home/sckova/.config/waybar/config.jsonc +[2025-12-12 15:14:41.471] [info] Discovered appearance 'dark' +[2025-12-12 15:14:41.483] [info] Using CSS file /home/sckova/.config/waybar/style.css +[2025-12-12 15:14:41.490] [warning] module sway/workspaces: Disabling module "sway/workspaces", Socket path is empty +[2025-12-12 15:14:41.490] [warning] module cpu_text: Unknown module: cpu_text +[2025-12-12 15:14:41.602] [info] Bar configured (width: 1728, height: 40) for output: eDP-1 diff --git a/system/all.nix b/system/all.nix index 041b9e8..fabe5d8 100755 --- a/system/all.nix +++ b/system/all.nix @@ -29,6 +29,7 @@ ../home/browsers/firefox/default.nix ../home/tiling/niri/default.nix ../home/tiling/quickshell/default.nix + ../home/tiling/waybar/default.nix ../home/systemd/default.nix ../home/terminal/btop/default.nix ../home/terminal/fish/default.nix @@ -71,7 +72,6 @@ "rd.udev.log_level=3" "udev.log_priority=3" "boot.shell_on_fail" - "apple_dcp.show_notch=1" ]; consoleLogLevel = 0; initrd.verbose = false; @@ -83,9 +83,6 @@ cache.enable = true; }; - programs.nix-ld.enable = true; - programs.nix-ld.libraries = with pkgs; [ ]; - networking.networkmanager.enable = true; hardware.bluetooth.enable = true; @@ -108,6 +105,10 @@ enable = true; }; + programs.niri.enable = true; + services.gnome.gnome-keyring.enable = true; + security.pam.services.niri.enableGnomeKeyring = true; + services = { desktopManager.plasma6.enable = true; displayManager.sddm = { @@ -176,8 +177,6 @@ services.openssh.enable = true; networking.firewall.enable = false; - programs.niri.enable = true; - # This value determines the NixOS release from which the default # settings for stateful data, like file locations and database versions # on your system were taken. It‘s perfectly fine and recommended to leave diff --git a/system/hosts/peach/default.nix b/system/hosts/peach/default.nix index 506e6dc..97b45af 100644 --- a/system/hosts/peach/default.nix +++ b/system/hosts/peach/default.nix @@ -13,6 +13,8 @@ "riscv64-linux" ]; + boot.kernelParams = [ "apple_dcp.show_notch=1" ]; + catppuccin.accent = "peach"; home-manager.users.sckova = { From 7c4101d06464da6759ed6a4bcc2d4a1600b64c76 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Sat, 13 Dec 2025 12:09:17 -0500 Subject: [PATCH 105/282] updates to tiling --- home/tiling/niri/config/config.kdl | 10 +++++-- home/tiling/niri/config/scripts/brightness.sh | 29 +++++++++++++++++++ home/tiling/waybar/config/config.jsonc | 17 +++++++---- .../waybar/config/scripts/brightness.sh | 16 ++++++++++ home/tiling/waybar/config/scripts/clock.sh | 14 ++++++++- .../waybar/config/scripts/niri-window.sh | 25 ++++++++++++++++ home/tiling/waybar/config/style.css | 19 ++++++++++-- system/all.nix | 5 +++- 8 files changed, 122 insertions(+), 13 deletions(-) create mode 100755 home/tiling/niri/config/scripts/brightness.sh create mode 100755 home/tiling/waybar/config/scripts/brightness.sh create mode 100755 home/tiling/waybar/config/scripts/niri-window.sh diff --git a/home/tiling/niri/config/config.kdl b/home/tiling/niri/config/config.kdl index 82d0769..bf874e8 100644 --- a/home/tiling/niri/config/config.kdl +++ b/home/tiling/niri/config/config.kdl @@ -179,7 +179,7 @@ layout { // off width 1 - active-color "#6c7086" + active-color "#fab387" // active-gradient from="#fab387" to="#89b4fa" angle=90 inactive-color "#313244" // inactive-gradient from="#313244" to="#6c7086" angle=90 @@ -252,6 +252,10 @@ layout { // This line starts waybar, a commonly used bar for Wayland compositors. spawn-at-startup "waybar" +// run tailscale system tray +spawn-at-startup "sudo tailscale set --operator=$USER" +spawn-at-startup "tailscale systray" + // Instead let's start quickshell, which is similar but made with Qt/QML // spawn-at-startup "quickshell" @@ -374,8 +378,8 @@ binds { // Example brightness key mappings for brightnessctl. // You can use regular spawn with multiple arguments too (to avoid going through "sh"), // but you need to manually put each argument in separate "" quotes. - XF86MonBrightnessUp allow-when-locked=true { spawn "brightnessctl" "--class=backlight" "set" "+10%"; } - XF86MonBrightnessDown allow-when-locked=true { spawn "brightnessctl" "--class=backlight" "set" "10%-"; } + XF86MonBrightnessUp allow-when-locked=true { spawn "/home/sckova/.config/niri/scripts/brightness.sh" "5"; } + XF86MonBrightnessDown allow-when-locked=true { spawn "/home/sckova/.config/niri/scripts/brightness.sh" "-5"; } // Open/close the Overview: a zoomed-out view of workspaces and windows. // You can also move the mouse into the top-left hot corner, diff --git a/home/tiling/niri/config/scripts/brightness.sh b/home/tiling/niri/config/scripts/brightness.sh new file mode 100755 index 0000000..73ed4a9 --- /dev/null +++ b/home/tiling/niri/config/scripts/brightness.sh @@ -0,0 +1,29 @@ +#!/usr/bin/env bash + +WAYBAR_SIGNAL=8 # SIGRTMIN+8 + +if [ "$#" -ne 1 ]; then + echo "Usage: $0 " >&2 + exit 1 +fi + +value="$1" + +# Validate integer range +if ! [[ "$value" =~ ^-?[0-9]+$ ]] || [ "$value" -lt -100 ] || [ "$value" -gt 100 ]; then + echo "Error: argument must be an integer between -100 and 100" >&2 + exit 1 +fi + +# Apply brightness change with correct syntax +if [ "$value" -gt 0 ]; then + brightnessctl s "+${value}%" >/dev/null +elif [ "$value" -lt 0 ]; then + brightnessctl s "${value#-}%-" >/dev/null +else + : # no-op for 0 +fi + +# Notify Waybar to refresh +pkill -RTMIN+"$WAYBAR_SIGNAL" waybar + diff --git a/home/tiling/waybar/config/config.jsonc b/home/tiling/waybar/config/config.jsonc index 1272ad6..de2e1e0 100644 --- a/home/tiling/waybar/config/config.jsonc +++ b/home/tiling/waybar/config/config.jsonc @@ -8,24 +8,24 @@ "margin-bottom": 0, "margin-left": 0, - "modules-left": ["sway/workspaces"], + "modules-left": ["custom/niri-window"], "modules-center": [], "modules-right": [ "tray", - "cpu_text", "cpu", "memory", "battery", "network", + "custom/brightness", "pulseaudio", "custom/clock", ], - "sway/workspaces": { - "disable-scroll": true, - "all-outputs": true, + "custom/niri-window": { + "exec": "/home/sckova/.config/waybar/scripts/niri-window.sh", + "restart-interval": 1, "tooltip": false, }, @@ -75,6 +75,13 @@ "tooltip": false, }, + "custom/brightness": { + "exec": "/home/sckova/.config/waybar/scripts/brightness.sh", + "restart-interval": 10, + "signal": 8, + "tooltip": false, + }, + "pulseaudio": { "scroll-step": 5, "max-volume": 150, diff --git a/home/tiling/waybar/config/scripts/brightness.sh b/home/tiling/waybar/config/scripts/brightness.sh new file mode 100755 index 0000000..d6a0ca9 --- /dev/null +++ b/home/tiling/waybar/config/scripts/brightness.sh @@ -0,0 +1,16 @@ +#!/usr/bin/env bash + +MAX=500 + +current=$(brightnessctl g) + +# Guard against empty or non-numeric output +if ! [[ "$current" =~ ^[0-9]+$ ]]; then + echo "brightnessctl returned invalid value" >&2 + exit 1 +fi + +percentage=$(( current * 100 / MAX )) + +echo "bright ${percentage}%" + diff --git a/home/tiling/waybar/config/scripts/clock.sh b/home/tiling/waybar/config/scripts/clock.sh index 8185d57..9876ef6 100755 --- a/home/tiling/waybar/config/scripts/clock.sh +++ b/home/tiling/waybar/config/scripts/clock.sh @@ -1 +1,13 @@ -date +"%a, %b %d @ %I:%M%P" +#!/usr/bin/env bash + +day=$(date +%-d) + +case "$day" in + 11|12|13) suffix="th" ;; + *1) suffix="st" ;; + *2) suffix="nd" ;; + *3) suffix="rd" ;; + *) suffix="th" ;; +esac + +date +"%a, %b $day$suffix %Y @ %I:%M%P" diff --git a/home/tiling/waybar/config/scripts/niri-window.sh b/home/tiling/waybar/config/scripts/niri-window.sh new file mode 100755 index 0000000..a27d14c --- /dev/null +++ b/home/tiling/waybar/config/scripts/niri-window.sh @@ -0,0 +1,25 @@ +#!/usr/bin/env bash + +last="" + +while :; do + current=$( + niri msg focused-window | awk -F'"' ' + /App ID:/ { app = $2 } + /Title:/ { title = $2 } + END { + if (app && title) { + print app " - " title + } + } + ' + ) + + if [[ -n "$current" && "$current" != "$last" ]]; then + printf '%s\n' "$current" + last="$current" + fi + + sleep 0.01 +done + diff --git a/home/tiling/waybar/config/style.css b/home/tiling/waybar/config/style.css index 6a31bac..7d9a78d 100644 --- a/home/tiling/waybar/config/style.css +++ b/home/tiling/waybar/config/style.css @@ -4,14 +4,16 @@ border-radius: 0; min-height: 0; font-family: "Noto Sans"; - /*font-weight: bold;*/ font-size: 12px; padding: 0; } window#waybar { - background: transparent; - border-bottom-color: @mantle; + background: black; + border: 2px solid @base; + border-top-width: 0px; + border-left-width: 0px; + border-right-width: 0px; } tooltip { @@ -19,12 +21,14 @@ tooltip { border-color: @peach; } +#custom-niri-window, #custom-clock, #tray, #cpu, #memory, #battery, #network, +#custom-brightness, #pulseaudio { background-color: @base; color: @text; @@ -56,6 +60,11 @@ tooltip { color: #1d2021; } +#custom-niri-window { + margin-left: 6px; + border-color: @yellow; +} + #cpu { border-color: @maroon; } @@ -72,6 +81,10 @@ tooltip { border-color: @teal; } +#custom-brightness { + border-color: @sky; +} + #pulseaudio { border-color: @blue; } diff --git a/system/all.nix b/system/all.nix index fabe5d8..17dfe77 100755 --- a/system/all.nix +++ b/system/all.nix @@ -105,7 +105,10 @@ enable = true; }; - programs.niri.enable = true; + programs.niri = { + enable = true; + useNautilus = false; + }; services.gnome.gnome-keyring.enable = true; security.pam.services.niri.enableGnomeKeyring = true; From a83a91421ccce0b0e188884feb577f82252504f8 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Sat, 13 Dec 2025 12:35:11 -0500 Subject: [PATCH 106/282] update flake and disable main catppuccin --- flake.lock | 42 +++++++++++++++++++++--------------------- home/all.nix | 3 +-- 2 files changed, 22 insertions(+), 23 deletions(-) diff --git a/flake.lock b/flake.lock index e86a238..af4ae64 100644 --- a/flake.lock +++ b/flake.lock @@ -8,11 +8,11 @@ ] }, "locked": { - "lastModified": 1763596466, - "narHash": "sha256-CTSUc4Fk1lHMQZMJ5LczPDYGLq5UjXDFKLSpuA3mKmI=", + "lastModified": 1765528634, + "narHash": "sha256-uIavvJkDwTZD1QY/oSkDtPN9xwkLwQayoZ5xOni4SBY=", "owner": "nix-community", "repo": "nixos-apple-silicon", - "rev": "73b7103c4e3996e3e20868d510b0e8797f279323", + "rev": "fc1440d6e6adb24d9b2650670744bae35654c867", "type": "github" }, "original": { @@ -28,11 +28,11 @@ ] }, "locked": { - "lastModified": 1764325801, - "narHash": "sha256-LQ7tsrXs1wuB6KBwUctL3JlUsG/FWI2pCI6NkoO52dk=", + "lastModified": 1765485905, + "narHash": "sha256-fk6zFzzcwz6su99K7UTxS2497+z/Cdk3FzNsacsmZKA=", "owner": "catppuccin", "repo": "nix", - "rev": "a696fed6b9b6aa89ef495842cdca3fc2a7cef0de", + "rev": "b49c675acd80931fc8b54290920a90189b461dcf", "type": "github" }, "original": { @@ -64,11 +64,11 @@ ] }, "locked": { - "lastModified": 1763759067, - "narHash": "sha256-LlLt2Jo/gMNYAwOgdRQBrsRoOz7BPRkzvNaI/fzXi2Q=", + "lastModified": 1765495779, + "narHash": "sha256-MhA7wmo/7uogLxiewwRRmIax70g6q1U/YemqTGoFHlM=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "2cccadc7357c0ba201788ae99c4dfa90728ef5e0", + "rev": "5635c32d666a59ec9a55cab87e898889869f7b71", "type": "github" }, "original": { @@ -123,11 +123,11 @@ ] }, "locked": { - "lastModified": 1764776959, - "narHash": "sha256-d+5CGloq7Lo1u2SkzhF8oiOdUc6Z5emh22nTXUB9CFA=", + "lastModified": 1765605144, + "narHash": "sha256-RM2xs+1HdHxesjOelxoA3eSvXShC8pmBvtyTke4Ango=", "owner": "nix-community", "repo": "home-manager", - "rev": "e1680d594a9281651cbf7d126941a8c8e2396183", + "rev": "90b62096f099b73043a747348c11dbfcfbdea949", "type": "github" }, "original": { @@ -167,11 +167,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1764522689, - "narHash": "sha256-SqUuBFjhl/kpDiVaKLQBoD8TLD+/cTUzzgVFoaHrkqY=", + "lastModified": 1765311797, + "narHash": "sha256-mSD5Ob7a+T2RNjvPvOA1dkJHGVrNVl8ZOrAwBjKBDQo=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "8bb5646e0bed5dbd3ab08c7a7cc15b75ab4e1d0f", + "rev": "09eb77e94fa25202af8f3e81ddc7353d9970ac1b", "type": "github" }, "original": { @@ -191,11 +191,11 @@ "systems": "systems_2" }, "locked": { - "lastModified": 1764755396, - "narHash": "sha256-f6UrlGdwg+TIxxyDjeq1M7WGNZH/vpbOm0yzPgkMy9c=", + "lastModified": 1765647805, + "narHash": "sha256-CdaiOfpBiS4kw/DR0Ut+02fpFnjM8hNZMZ53a1pavak=", "owner": "nix-community", "repo": "nixvim", - "rev": "64d9e2616f4ee2acee380d61ccf1f3d610e7e969", + "rev": "f0b0cc7cae2cf5d76608c9164ab8824a2387e146", "type": "github" }, "original": { @@ -213,11 +213,11 @@ ] }, "locked": { - "lastModified": 1764795584, - "narHash": "sha256-Sq6SWFDCftLrnZ8GXO39b2HxH2NE8jtDeU2ud37F9qs=", + "lastModified": 1765648472, + "narHash": "sha256-t3mz6UaVEk17L2jBoef6C0x+Hocp/VAKZkbNg31Qodw=", "owner": "nix-community", "repo": "NUR", - "rev": "156e6d0e026c1a7687a74c908ee0ccf0df796f72", + "rev": "80bbe1a8f5ebb4ff7f4045699152e3c6a85c0e7a", "type": "github" }, "original": { diff --git a/home/all.nix b/home/all.nix index 036003c..92403b5 100755 --- a/home/all.nix +++ b/home/all.nix @@ -51,7 +51,6 @@ gimp calibre spotify-player - obs-studio # browsers # (chromium.override { @@ -78,7 +77,7 @@ }; catppuccin = { - enable = true; + enable = false; cursors.enable = false; cache.enable = true; }; From eefae16222b4d8ca042bec88151142143b5b6a43 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Sat, 13 Dec 2025 12:54:44 -0500 Subject: [PATCH 107/282] redo tiling theming --- home/hosts/alien.nix | 19 +++++++++++----- home/hosts/peach.nix | 19 +++++++++++----- home/hosts/vm-aarch64.nix | 19 +++++++++++----- home/tiling/niri/default.nix | 42 ++++++++++++++++++++++++++++++++++++ system/all.nix | 1 + 5 files changed, 85 insertions(+), 15 deletions(-) diff --git a/home/hosts/alien.nix b/home/hosts/alien.nix index c885919..a499d9b 100644 --- a/home/hosts/alien.nix +++ b/home/hosts/alien.nix @@ -8,11 +8,11 @@ home.packages = with pkgs; [ - catppuccin-cursors.latteDark - catppuccin-cursors.latteLight - catppuccin-cursors.latteBlue - catppuccin-cursors.mochaDark - catppuccin-cursors.mochaLight + # catppuccin-cursors.latteDark + # catppuccin-cursors.latteLight + # catppuccin-cursors.latteBlue + # catppuccin-cursors.mochaDark + # catppuccin-cursors.mochaLight catppuccin-cursors.mochaBlue (catppuccin-kde.override { @@ -33,6 +33,15 @@ _2ship2harkinian ]; + home.sessionVariables = { + XCURSOR_THEME = "catppuccin-mocha-blue-cursors"; + }; + + gtk.cursorTheme = { + name = "catppuccin-mocha-blue-cursors"; + package = pkgs.catppuccin-cursors.mochaBlue; + }; + programs.plasma = { workspace = { colorScheme = "CatppuccinMochaBlue"; diff --git a/home/hosts/peach.nix b/home/hosts/peach.nix index 91e5be9..80d5717 100644 --- a/home/hosts/peach.nix +++ b/home/hosts/peach.nix @@ -13,11 +13,11 @@ asahi-btsync asahi-wifisync - catppuccin-cursors.latteDark - catppuccin-cursors.latteLight - catppuccin-cursors.lattePeach - catppuccin-cursors.mochaDark - catppuccin-cursors.mochaLight + # catppuccin-cursors.latteDark + # catppuccin-cursors.latteLight + # catppuccin-cursors.lattePeach + # catppuccin-cursors.mochaDark + # catppuccin-cursors.mochaLight catppuccin-cursors.mochaPeach (catppuccin-kde.override { @@ -33,6 +33,15 @@ moonlight-qt ]; + home.sessionVariables = { + XCURSOR_THEME = "catppuccin-mocha-peach-cursors"; + }; + + gtk.cursorTheme = { + name = "catppuccin-mocha-peach-cursors"; + package = pkgs.catppuccin-cursors.mochaPeach; + }; + programs.plasma = { input.touchpads = [ diff --git a/home/hosts/vm-aarch64.nix b/home/hosts/vm-aarch64.nix index 566e7d5..7178f22 100644 --- a/home/hosts/vm-aarch64.nix +++ b/home/hosts/vm-aarch64.nix @@ -8,11 +8,11 @@ home.packages = with pkgs; [ - catppuccin-cursors.latteDark - catppuccin-cursors.latteLight - catppuccin-cursors.latteGreen - catppuccin-cursors.mochaDark - catppuccin-cursors.mochaLight + # catppuccin-cursors.latteDark + # catppuccin-cursors.latteLight + # catppuccin-cursors.latteGreen + # catppuccin-cursors.mochaDark + # catppuccin-cursors.mochaLight catppuccin-cursors.mochaGreen (catppuccin-kde.override { @@ -27,6 +27,15 @@ ]; + home.sessionVariables = { + XCURSOR_THEME = "catppuccin-mocha-green-cursors"; + }; + + gtk.cursorTheme = { + name = "catppuccin-mocha-green-cursors"; + package = pkgs.catppuccin-cursors.mochaGreen; + }; + programs.plasma = { input.touchpads = [ diff --git a/home/tiling/niri/default.nix b/home/tiling/niri/default.nix index 3140e01..46ff216 100644 --- a/home/tiling/niri/default.nix +++ b/home/tiling/niri/default.nix @@ -14,6 +14,9 @@ in fuzzel xdg-desktop-portal brightnessctl + qt6Packages.qt6ct + libsForQt5.qt5ct + catppuccin-qt5ct ]; home.file = { @@ -39,4 +42,43 @@ in force = true; }; }; + + gtk = { + enable = true; + + # theme = { + # name = "adw-gtk3-dark"; + # package = pkgs.adw-gtk3; + # }; + + iconTheme = { + name = "Colloid-Dark"; + package = pkgs.colloid-icon-theme; + }; + + # cursor theme handled in home/hosts/host.nix + + gtk3.extraConfig = { + gtk-application-prefer-dark-theme = true; + }; + + gtk4.extraConfig = { + gtk-application-prefer-dark-theme = true; + }; + }; + + qt.enable = true; + + # Cursor / icon env vars for GTK and Qt apps + xsession = { + enable = true; # only needed for session variable injection + windowManager.command = "niri"; # launches niri directly + }; + + home.sessionVariables = { + XCURSOR_SIZE = "24"; + QT_QPA_PLATFORMTHEME = "qt6ct"; + QT_QPA_PLATFORMTHEME_5 = "qt5ct"; + }; + } diff --git a/system/all.nix b/system/all.nix index 17dfe77..e1a7f35 100755 --- a/system/all.nix +++ b/system/all.nix @@ -111,6 +111,7 @@ }; services.gnome.gnome-keyring.enable = true; security.pam.services.niri.enableGnomeKeyring = true; + programs.dconf.enable = true; services = { desktopManager.plasma6.enable = true; From c81b2c99b7d9de4a91b32d47d413d057b975d611 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Sat, 13 Dec 2025 13:09:33 -0500 Subject: [PATCH 108/282] if it ain't broke --- flake.lock | 52 ++++++++++++++++++++++++++++------------------------ flake.nix | 14 +++++++------- 2 files changed, 35 insertions(+), 31 deletions(-) diff --git a/flake.lock b/flake.lock index af4ae64..0f060cd 100644 --- a/flake.lock +++ b/flake.lock @@ -8,16 +8,17 @@ ] }, "locked": { - "lastModified": 1765528634, - "narHash": "sha256-uIavvJkDwTZD1QY/oSkDtPN9xwkLwQayoZ5xOni4SBY=", + "lastModified": 1763596466, + "narHash": "sha256-CTSUc4Fk1lHMQZMJ5LczPDYGLq5UjXDFKLSpuA3mKmI=", "owner": "nix-community", "repo": "nixos-apple-silicon", - "rev": "fc1440d6e6adb24d9b2650670744bae35654c867", + "rev": "73b7103c4e3996e3e20868d510b0e8797f279323", "type": "github" }, "original": { "owner": "nix-community", "repo": "nixos-apple-silicon", + "rev": "73b7103c4e3996e3e20868d510b0e8797f279323", "type": "github" } }, @@ -28,16 +29,17 @@ ] }, "locked": { - "lastModified": 1765485905, - "narHash": "sha256-fk6zFzzcwz6su99K7UTxS2497+z/Cdk3FzNsacsmZKA=", + "lastModified": 1764325801, + "narHash": "sha256-LQ7tsrXs1wuB6KBwUctL3JlUsG/FWI2pCI6NkoO52dk=", "owner": "catppuccin", "repo": "nix", - "rev": "b49c675acd80931fc8b54290920a90189b461dcf", + "rev": "a696fed6b9b6aa89ef495842cdca3fc2a7cef0de", "type": "github" }, "original": { "owner": "catppuccin", "repo": "nix", + "rev": "a696fed6b9b6aa89ef495842cdca3fc2a7cef0de", "type": "github" } }, @@ -64,11 +66,11 @@ ] }, "locked": { - "lastModified": 1765495779, - "narHash": "sha256-MhA7wmo/7uogLxiewwRRmIax70g6q1U/YemqTGoFHlM=", + "lastModified": 1763759067, + "narHash": "sha256-LlLt2Jo/gMNYAwOgdRQBrsRoOz7BPRkzvNaI/fzXi2Q=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "5635c32d666a59ec9a55cab87e898889869f7b71", + "rev": "2cccadc7357c0ba201788ae99c4dfa90728ef5e0", "type": "github" }, "original": { @@ -123,17 +125,17 @@ ] }, "locked": { - "lastModified": 1765605144, - "narHash": "sha256-RM2xs+1HdHxesjOelxoA3eSvXShC8pmBvtyTke4Ango=", + "lastModified": 1764776959, + "narHash": "sha256-d+5CGloq7Lo1u2SkzhF8oiOdUc6Z5emh22nTXUB9CFA=", "owner": "nix-community", "repo": "home-manager", - "rev": "90b62096f099b73043a747348c11dbfcfbdea949", + "rev": "e1680d594a9281651cbf7d126941a8c8e2396183", "type": "github" }, "original": { "owner": "nix-community", - "ref": "release-25.11", "repo": "home-manager", + "rev": "e1680d594a9281651cbf7d126941a8c8e2396183", "type": "github" } }, @@ -167,17 +169,17 @@ }, "nixpkgs": { "locked": { - "lastModified": 1765311797, - "narHash": "sha256-mSD5Ob7a+T2RNjvPvOA1dkJHGVrNVl8ZOrAwBjKBDQo=", + "lastModified": 1764522689, + "narHash": "sha256-SqUuBFjhl/kpDiVaKLQBoD8TLD+/cTUzzgVFoaHrkqY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "09eb77e94fa25202af8f3e81ddc7353d9970ac1b", + "rev": "8bb5646e0bed5dbd3ab08c7a7cc15b75ab4e1d0f", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixos-25.11", "repo": "nixpkgs", + "rev": "8bb5646e0bed5dbd3ab08c7a7cc15b75ab4e1d0f", "type": "github" } }, @@ -191,17 +193,17 @@ "systems": "systems_2" }, "locked": { - "lastModified": 1765647805, - "narHash": "sha256-CdaiOfpBiS4kw/DR0Ut+02fpFnjM8hNZMZ53a1pavak=", + "lastModified": 1764755396, + "narHash": "sha256-f6UrlGdwg+TIxxyDjeq1M7WGNZH/vpbOm0yzPgkMy9c=", "owner": "nix-community", "repo": "nixvim", - "rev": "f0b0cc7cae2cf5d76608c9164ab8824a2387e146", + "rev": "64d9e2616f4ee2acee380d61ccf1f3d610e7e969", "type": "github" }, "original": { "owner": "nix-community", - "ref": "nixos-25.11", "repo": "nixvim", + "rev": "64d9e2616f4ee2acee380d61ccf1f3d610e7e969", "type": "github" } }, @@ -213,16 +215,17 @@ ] }, "locked": { - "lastModified": 1765648472, - "narHash": "sha256-t3mz6UaVEk17L2jBoef6C0x+Hocp/VAKZkbNg31Qodw=", + "lastModified": 1764795584, + "narHash": "sha256-Sq6SWFDCftLrnZ8GXO39b2HxH2NE8jtDeU2ud37F9qs=", "owner": "nix-community", "repo": "NUR", - "rev": "80bbe1a8f5ebb4ff7f4045699152e3c6a85c0e7a", + "rev": "156e6d0e026c1a7687a74c908ee0ccf0df796f72", "type": "github" }, "original": { "owner": "nix-community", "repo": "NUR", + "rev": "156e6d0e026c1a7687a74c908ee0ccf0df796f72", "type": "github" } }, @@ -269,6 +272,7 @@ "original": { "owner": "nix-community", "repo": "plasma-manager", + "rev": "b24ed4b272256dfc1cc2291f89a9821d5f9e14b4", "type": "github" } }, diff --git a/flake.nix b/flake.nix index 26d2b87..9705a2e 100644 --- a/flake.nix +++ b/flake.nix @@ -2,36 +2,36 @@ description = "My NixOS Configuration"; inputs = { - nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.11"; + nixpkgs.url = "github:NixOS/nixpkgs/8bb5646e0bed5dbd3ab08c7a7cc15b75ab4e1d0f"; catppuccin = { - url = "github:catppuccin/nix"; + url = "github:catppuccin/nix/a696fed6b9b6aa89ef495842cdca3fc2a7cef0de"; inputs.nixpkgs.follows = "nixpkgs"; }; home-manager = { - url = "github:nix-community/home-manager/release-25.11"; + url = "github:nix-community/home-manager/e1680d594a9281651cbf7d126941a8c8e2396183"; inputs.nixpkgs.follows = "nixpkgs"; }; plasma-manager = { - url = "github:nix-community/plasma-manager"; + url = "github:nix-community/plasma-manager/b24ed4b272256dfc1cc2291f89a9821d5f9e14b4"; inputs.nixpkgs.follows = "nixpkgs"; inputs.home-manager.follows = "home-manager"; }; nur = { - url = "github:nix-community/NUR"; + url = "github:nix-community/NUR/156e6d0e026c1a7687a74c908ee0ccf0df796f72"; inputs.nixpkgs.follows = "nixpkgs"; }; nixvim = { - url = "github:nix-community/nixvim/nixos-25.11"; + url = "github:nix-community/nixvim/64d9e2616f4ee2acee380d61ccf1f3d610e7e969"; inputs.nixpkgs.follows = "nixpkgs"; }; apple-silicon = { - url = "github:nix-community/nixos-apple-silicon"; + url = "github:nix-community/nixos-apple-silicon/73b7103c4e3996e3e20868d510b0e8797f279323"; inputs.nixpkgs.follows = "nixpkgs"; }; }; From 2133060a755aa71934f168e64a380f878612ac60 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Sat, 13 Dec 2025 13:43:00 -0500 Subject: [PATCH 109/282] further changes to niri --- home/tiling/niri/config/config.kdl | 2 + home/tiling/niri/default.nix | 50 +++++++++++++++++---- home/tiling/niri/qt/qt5ct/qt5ct.conf | 32 +++++++++++++ home/tiling/niri/qt/qt5ct/style-colors.conf | 4 ++ home/tiling/niri/qt/qt6ct/qt6ct.conf | 32 +++++++++++++ home/tiling/niri/qt/qt6ct/style-colors.conf | 4 ++ system/all.nix | 2 +- 7 files changed, 116 insertions(+), 10 deletions(-) create mode 100644 home/tiling/niri/qt/qt5ct/qt5ct.conf create mode 100644 home/tiling/niri/qt/qt5ct/style-colors.conf create mode 100644 home/tiling/niri/qt/qt6ct/qt6ct.conf create mode 100644 home/tiling/niri/qt/qt6ct/style-colors.conf diff --git a/home/tiling/niri/config/config.kdl b/home/tiling/niri/config/config.kdl index bf874e8..d045ece 100644 --- a/home/tiling/niri/config/config.kdl +++ b/home/tiling/niri/config/config.kdl @@ -41,6 +41,8 @@ gestures { environment { QT_QPA_PLATFORM "wayland" + QT_QPA_PLATFORMTHEME_5 "qt5ct" + QT_QPA_PLATFORMTHEME "qt6ct" DISPLAY null } diff --git a/home/tiling/niri/default.nix b/home/tiling/niri/default.nix index 46ff216..8fa1ee5 100644 --- a/home/tiling/niri/default.nix +++ b/home/tiling/niri/default.nix @@ -34,13 +34,24 @@ in ".config/fuzzel/fuzzel.ini" = { text = '' include = /home/sckova/.config/fuzzel/colors.ini - font = "NotoSansM Nerd Font Mono:size=10" + font = "Noto Sans:size=12" terminal = "kitty" icons-enabled = yes + icon-theme = "${config.gtk.iconTheme.name}" layer = "overlay" ''; force = true; }; + ".config/qt5ct" = { + source = ./qt/qt5ct; + recursive = true; + force = true; + }; + ".config/qt6ct" = { + source = ./qt/qt6ct; + recursive = true; + force = true; + }; }; gtk = { @@ -56,7 +67,7 @@ in package = pkgs.colloid-icon-theme; }; - # cursor theme handled in home/hosts/host.nix + # cursor theme handled in home/hosts/host.nix and in config.kdl gtk3.extraConfig = { gtk-application-prefer-dark-theme = true; @@ -67,7 +78,34 @@ in }; }; - qt.enable = true; + qt = { + enable = true; + # the following will be possible in NixOS 26.05 + # https://github.com/nix-community/home-manager/commit/f9d45d664ed06a11861d0ba29e34f390c07bf62e + # until this flake is updated, it will use the configs as implemented above + # qt5ctSettings = { + # Appearance = { + # style = "Breeze"; + # icon_theme = config.gtk.iconTheme.name; + # standar_dialogs = "kde"; + # }; + # Fonts = { + # fixed = "\"NotoSansM Nerd Font Mono,12\""; + # general = "\"Noto Sans,12\""; + # }; + # }; + # qt6ctSettings = { + # Appearance = { + # style = "Breeze"; + # icon_theme = config.gtk.iconTheme.name; + # standar_dialogs = "kde"; + # }; + # Fonts = { + # fixed = "\"NotoSansM Nerd Font Mono,12\""; + # general = "\"Noto Sans,12\""; + # }; + # }; + }; # Cursor / icon env vars for GTK and Qt apps xsession = { @@ -75,10 +113,4 @@ in windowManager.command = "niri"; # launches niri directly }; - home.sessionVariables = { - XCURSOR_SIZE = "24"; - QT_QPA_PLATFORMTHEME = "qt6ct"; - QT_QPA_PLATFORMTHEME_5 = "qt5ct"; - }; - } diff --git a/home/tiling/niri/qt/qt5ct/qt5ct.conf b/home/tiling/niri/qt/qt5ct/qt5ct.conf new file mode 100644 index 0000000..92a501e --- /dev/null +++ b/home/tiling/niri/qt/qt5ct/qt5ct.conf @@ -0,0 +1,32 @@ +[Appearance] +color_scheme_path=/home/sckova/.config/qt5ct/style-colors.conf +custom_palette=true +icon_theme=Colloid-Dark +standard_dialogs=kde +style=Breeze + +[Fonts] +fixed="Noto Sans,12,-1,5,50,0,0,0,0,0" +general="Noto Sans,12,-1,5,50,0,0,0,0,0" + +[Interface] +activate_item_on_single_click=1 +buttonbox_layout=0 +cursor_flash_time=1000 +dialog_buttons_have_icons=1 +double_click_interval=400 +gui_effects=@Invalid() +keyboard_scheme=2 +menus_have_icons=true +show_shortcuts_in_context_menus=true +stylesheets=@Invalid() +toolbutton_style=4 +underline_shortcut=1 +wheel_scroll_lines=3 + +[SettingsWindow] +geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\0\0\0\0\0\0\0\0\x3V\0\0\x4W\0\0\0\0\0\0\0\0\0\0\x3V\0\0\x4W\0\0\0\0\0\0\0\0\x6\xc0\0\0\0\0\0\0\0\0\0\0\x3V\0\0\x4W) + +[Troubleshooting] +force_raster_widgets=1 +ignored_applications=@Invalid() diff --git a/home/tiling/niri/qt/qt5ct/style-colors.conf b/home/tiling/niri/qt/qt5ct/style-colors.conf new file mode 100644 index 0000000..4afdd7c --- /dev/null +++ b/home/tiling/niri/qt/qt5ct/style-colors.conf @@ -0,0 +1,4 @@ +[ColorScheme] +active_colors=#ffcdd6f4, #ff313244, #ff3d3d5e, #ff2f2f48, #ff0c0c12, #ff151520, #ffcdd6f4, #ffcdd6f4, #ffcdd6f4, #ff1e1e2e, #ff181825, #ff09090d, #fffab387, #ff11111b, #fffab387, #ffcba6f7, #ff181825, #ffffffff, #ff1e1e2e, #ffcdd6f4, #806c7086 +disabled_colors=#ff6c7086, #ff313244, #ff45475a, #ff313244, #ff11111b, #ff181825, #ff6c7086, #ffcdd6f4, #ff6c7086, #ff1e1e2e, #ff181825, #ff11111b, #ff181825, #ff6c7086, #ffa9bcdb, #ffc7cceb, #ff181825, #ffffffff, #ff1e1e2e, #ffcdd6f4, #806c7086 +inactive_colors=#ffcdd6f4, #ff313244, #ff3d3d5e, #ff2f2f48, #ff0c0c12, #ff151520, #ffcdd6f4, #ffcdd6f4, #ffcdd6f4, #ff1e1e2e, #ff181825, #ff09090d, #fffab387, #ff11111b, #fffab387, #ffcba6f7, #ff181825, #ffffffff, #ff1e1e2e, #ffcdd6f4, #806c7086 diff --git a/home/tiling/niri/qt/qt6ct/qt6ct.conf b/home/tiling/niri/qt/qt6ct/qt6ct.conf new file mode 100644 index 0000000..18453fb --- /dev/null +++ b/home/tiling/niri/qt/qt6ct/qt6ct.conf @@ -0,0 +1,32 @@ +[Appearance] +color_scheme_path=/home/sckova/.config/qt6ct/style-colors.conf +custom_palette=true +icon_theme=Colloid-Dark +standard_dialogs=kde +style=Breeze + +[Fonts] +fixed="Noto Sans,12,-1,5,400,0,0,0,0,0,0,0,0,0,0,1" +general="Noto Sans,12,-1,5,400,0,0,0,0,0,0,0,0,0,0,1" + +[Interface] +activate_item_on_single_click=1 +buttonbox_layout=0 +cursor_flash_time=1000 +dialog_buttons_have_icons=1 +double_click_interval=400 +gui_effects=@Invalid() +keyboard_scheme=2 +menus_have_icons=true +show_shortcuts_in_context_menus=true +stylesheets=@Invalid() +toolbutton_style=4 +underline_shortcut=1 +wheel_scroll_lines=3 + +[SettingsWindow] +geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\0\0\0\0\0\0\0\0\x3V\0\0\x4W\0\0\0\0\0\0\0\0\0\0\x3V\0\0\x4W\0\0\0\0\0\0\0\0\x6\xc0\0\0\0\0\0\0\0\0\0\0\x3V\0\0\x4W) + +[Troubleshooting] +force_raster_widgets=1 +ignored_applications=@Invalid() diff --git a/home/tiling/niri/qt/qt6ct/style-colors.conf b/home/tiling/niri/qt/qt6ct/style-colors.conf new file mode 100644 index 0000000..0af60d5 --- /dev/null +++ b/home/tiling/niri/qt/qt6ct/style-colors.conf @@ -0,0 +1,4 @@ +[ColorScheme] +active_colors=#ffcdd6f4, #ff313244, #ff3d3d5e, #ff2f2f48, #ff0c0c12, #ff151520, #ffcdd6f4, #ffffffff, #ffcdd6f4, #ff1e1e2e, #ff181825, #ff09090d, #fffab387, #ff11111b, #fffab387, #ffcba6f7, #ff181825, #ff000000, #ff1e1e2e, #ffcdd6f4, #ffa6adc8, #fffab387 +disabled_colors=#ffbebebe, #ffefefef, #ffffffff, #ffcacaca, #ffbebebe, #ffb8b8b8, #ffbebebe, #ffffffff, #ffbebebe, #ffefefef, #ffefefef, #ffb1b1b1, #ff919191, #ffffffff, #ff0000ff, #ffff00ff, #fff7f7f7, #ff000000, #ffffffdc, #ff000000, #80000000, #ff919191 +inactive_colors=#ffcdd6f4, #ff313244, #ff3d3d5e, #ff2f2f48, #ff0c0c12, #ff151520, #ffcdd6f4, #ffffffff, #ffcdd6f4, #ff1e1e2e, #ff181825, #ff09090d, #fffab387, #ff11111b, #fffab387, #ffcba6f7, #ff181825, #ff000000, #ff1e1e2e, #ffcdd6f4, #ffa6adc8, #fffab387 diff --git a/system/all.nix b/system/all.nix index e1a7f35..cd14cf8 100755 --- a/system/all.nix +++ b/system/all.nix @@ -107,7 +107,7 @@ programs.niri = { enable = true; - useNautilus = false; + useNautilus = true; }; services.gnome.gnome-keyring.enable = true; security.pam.services.niri.enableGnomeKeyring = true; From 19eaaa94935bc9859d619b3c8206c4296868ab82 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Sat, 13 Dec 2025 13:48:33 -0500 Subject: [PATCH 110/282] add noctalia --- flake.lock | 148 +++++++ flake.nix | 24 ++ home/tiling/niri/config/config.kdl | 14 +- home/tiling/niri/config/noctalia.kdl | 28 ++ home/tiling/niri/default.nix | 6 +- home/tiling/niri/qt/qt5ct/qt5ct.conf | 2 +- home/tiling/niri/qt/qt6ct/qt6ct.conf | 2 +- home/tiling/noctalia/default.nix | 463 +++++++++++++++++++++ packages/noctalia-shell-custom/package.nix | 69 +++ packages/overlay.nix | 4 + system/all.nix | 11 +- 11 files changed, 759 insertions(+), 12 deletions(-) create mode 100644 home/tiling/niri/config/noctalia.kdl create mode 100644 home/tiling/noctalia/default.nix create mode 100644 packages/noctalia-shell-custom/package.nix diff --git a/flake.lock b/flake.lock index 0f060cd..a318a28 100644 --- a/flake.lock +++ b/flake.lock @@ -43,6 +43,22 @@ "type": "github" } }, + "catppuccin-palette": { + "locked": { + "lastModified": 1760672867, + "narHash": "sha256-hbBM+5fS39YrDXdQKBLP33D0cu54FQ5hk/7XESTTRXY=", + "owner": "abhinandh-s", + "repo": "catppuccin-nix", + "rev": "b482f6e3ee1ae61c83e52f50653e54bf72900b13", + "type": "github" + }, + "original": { + "owner": "abhinandh-s", + "repo": "catppuccin-nix", + "rev": "b482f6e3ee1ae61c83e52f50653e54bf72900b13", + "type": "github" + } + }, "flake-compat": { "locked": { "lastModified": 1746162366, @@ -167,6 +183,65 @@ "type": "github" } }, + "niri": { + "inputs": { + "niri-stable": "niri-stable", + "niri-unstable": "niri-unstable", + "nixpkgs": [ + "nixpkgs" + ], + "nixpkgs-stable": "nixpkgs-stable", + "xwayland-satellite-stable": "xwayland-satellite-stable", + "xwayland-satellite-unstable": "xwayland-satellite-unstable" + }, + "locked": { + "lastModified": 1765629179, + "narHash": "sha256-yYQR3ZYXWEh8mAQOhj6ZOZ4VxZrpzhRz14bOXAMPtcQ=", + "owner": "sodiboo", + "repo": "niri-flake", + "rev": "46e723aa46565b67910187b4b7ad48b615d7f576", + "type": "github" + }, + "original": { + "owner": "sodiboo", + "repo": "niri-flake", + "rev": "46e723aa46565b67910187b4b7ad48b615d7f576", + "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": 1765625997, + "narHash": "sha256-d0/ugnBSrCJwwySMc5skOMbAfEdjWapc+EMFbcsnd5Q=", + "owner": "YaLTeR", + "repo": "niri", + "rev": "d1fc1ab731f7cc59923a16acce9a387782bfeb10", + "type": "github" + }, + "original": { + "owner": "YaLTeR", + "repo": "niri", + "type": "github" + } + }, "nixpkgs": { "locked": { "lastModified": 1764522689, @@ -183,6 +258,22 @@ "type": "github" } }, + "nixpkgs-stable": { + "locked": { + "lastModified": 1765311797, + "narHash": "sha256-mSD5Ob7a+T2RNjvPvOA1dkJHGVrNVl8ZOrAwBjKBDQo=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "09eb77e94fa25202af8f3e81ddc7353d9970ac1b", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-25.11", + "repo": "nixpkgs", + "type": "github" + } + }, "nixvim": { "inputs": { "flake-parts": "flake-parts", @@ -207,6 +298,27 @@ "type": "github" } }, + "noctalia": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1765651326, + "narHash": "sha256-HmAbejLwUPCZrdU81KP4+WOkWrgX1n74pi1TCVSOleQ=", + "owner": "noctalia-dev", + "repo": "noctalia-shell", + "rev": "6b2661e1d4d0e223d631be87931029929431de6f", + "type": "github" + }, + "original": { + "owner": "noctalia-dev", + "repo": "noctalia-shell", + "rev": "6b2661e1d4d0e223d631be87931029929431de6f", + "type": "github" + } + }, "nur": { "inputs": { "flake-parts": "flake-parts_2", @@ -280,9 +392,12 @@ "inputs": { "apple-silicon": "apple-silicon", "catppuccin": "catppuccin", + "catppuccin-palette": "catppuccin-palette", "home-manager": "home-manager", + "niri": "niri", "nixpkgs": "nixpkgs", "nixvim": "nixvim", + "noctalia": "noctalia", "nur": "nur", "plasma-manager": "plasma-manager" } @@ -316,6 +431,39 @@ "repo": "default", "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": 1765343581, + "narHash": "sha256-HtTPbV6z6AJPg2d0bHaJKFrnNha+SEbHvbJafKAQ614=", + "owner": "Supreeeme", + "repo": "xwayland-satellite", + "rev": "f0ad674b7009a6afd80cea59d4fbf975dd68ee95", + "type": "github" + }, + "original": { + "owner": "Supreeeme", + "repo": "xwayland-satellite", + "type": "github" + } } }, "root": "root", diff --git a/flake.nix b/flake.nix index 9705a2e..6d9814c 100644 --- a/flake.nix +++ b/flake.nix @@ -9,6 +9,10 @@ inputs.nixpkgs.follows = "nixpkgs"; }; + catppuccin-palette = { + url = "github:abhinandh-s/catppuccin-nix/b482f6e3ee1ae61c83e52f50653e54bf72900b13"; + }; + home-manager = { url = "github:nix-community/home-manager/e1680d594a9281651cbf7d126941a8c8e2396183"; inputs.nixpkgs.follows = "nixpkgs"; @@ -20,6 +24,16 @@ inputs.home-manager.follows = "home-manager"; }; + niri = { + url = "github:sodiboo/niri-flake/46e723aa46565b67910187b4b7ad48b615d7f576"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + + noctalia = { + url = "github:noctalia-dev/noctalia-shell/6b2661e1d4d0e223d631be87931029929431de6f"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + nur = { url = "github:nix-community/NUR/156e6d0e026c1a7687a74c908ee0ccf0df796f72"; inputs.nixpkgs.follows = "nixpkgs"; @@ -40,8 +54,11 @@ { nixpkgs, catppuccin, + catppuccin-palette, home-manager, plasma-manager, + niri, + noctalia, nur, nixvim, apple-silicon, @@ -62,6 +79,8 @@ modules = [ { nixpkgs.overlays = [ + catppuccin-palette.overlays.default + noctalia.overlays.default nur.overlays.default (import ./packages/overlay.nix) ]; @@ -73,9 +92,12 @@ ./hardware/${hostname}.nix catppuccin.nixosModules.catppuccin home-manager.nixosModules.home-manager + noctalia.nixosModules.default { home-manager.sharedModules = [ plasma-manager.homeModules.plasma-manager + niri.homeModules.niri + noctalia.homeModules.default nixvim.homeModules.nixvim ]; } @@ -101,6 +123,8 @@ catppuccin.homeModules.catppuccin home-manager.homeModules.home-manager plasma-manager.homeModules.plasma-manager + niri.homeModules.default + noctalia.homeModules.noctalia nixvim.homeModules.nixvim ]; }; diff --git a/home/tiling/niri/config/config.kdl b/home/tiling/niri/config/config.kdl index d045ece..340ce5f 100644 --- a/home/tiling/niri/config/config.kdl +++ b/home/tiling/niri/config/config.kdl @@ -1,3 +1,6 @@ +// https://github.com/YaLTeR/niri/issues/2330#issuecomment-3256864777 +//debug { render-drm-device "/dev/dri/card2"; } + input { keyboard { numlock @@ -43,7 +46,7 @@ environment { QT_QPA_PLATFORM "wayland" QT_QPA_PLATFORMTHEME_5 "qt5ct" QT_QPA_PLATFORMTHEME "qt6ct" - DISPLAY null + // DISPLAY null } cursor { @@ -51,7 +54,7 @@ cursor { xcursor-size 24 hide-when-typing - hide-after-inactive-ms 1000 + hide-after-inactive-ms 10000 } // You can configure outputs by their name, which you can find @@ -252,7 +255,7 @@ layout { // See the binds section below for more spawn examples. // This line starts waybar, a commonly used bar for Wayland compositors. -spawn-at-startup "waybar" +// spawn-at-startup "waybar" // run tailscale system tray spawn-at-startup "sudo tailscale set --operator=$USER" @@ -324,7 +327,7 @@ window-rule { // Example: enable rounded corners for all windows. // (This example rule is commented out with a "/-" in front.) window-rule { - geometry-corner-radius 8 + geometry-corner-radius 16 clip-to-geometry true } @@ -359,7 +362,8 @@ binds { // Suggested binds for running programs: terminal, app launcher, screen locker. Mod+T hotkey-overlay-title="Open a Terminal: kitty" { spawn "kitty"; } - Mod+D hotkey-overlay-title="Run an Application: fuzzel" { spawn "fuzzel"; } + // Mod+D hotkey-overlay-title="Run an Application: fuzzel" { spawn "fuzzel"; } + Mod+Space hotkey-overlay-title="Run an Application: Noctalia app launcher" { spawn-sh "noctalia-shell ipc call launcher toggle"; } Super+Alt+L hotkey-overlay-title="Lock the Screen: swaylock" { spawn "swaylock"; } // Use spawn-sh to run a shell command. Do this if you need pipes, multiple commands, etc. diff --git a/home/tiling/niri/config/noctalia.kdl b/home/tiling/niri/config/noctalia.kdl new file mode 100644 index 0000000..0ae564e --- /dev/null +++ b/home/tiling/niri/config/noctalia.kdl @@ -0,0 +1,28 @@ +layout { + + focus-ring { + active-color "#E6B450" + inactive-color "#0B0E14" + urgent-color "#D95757" + } + + border { + active-color "#E6B450" + inactive-color "#0B0E14" + urgent-color "#D95757" + } + + shadow { + color "#00000070" + } + + tab-indicator { + active-color "#E6B450" + inactive-color "#8e620b" + urgent-color "#D95757" + } + + insert-hint { + color "#E6B45080" + } +} diff --git a/home/tiling/niri/default.nix b/home/tiling/niri/default.nix index 8fa1ee5..e5396c5 100644 --- a/home/tiling/niri/default.nix +++ b/home/tiling/niri/default.nix @@ -19,6 +19,10 @@ in catppuccin-qt5ct ]; + programs.niri = { + # wip: put config in here + }; + home.file = { ".config/niri" = { source = ./config; @@ -37,7 +41,7 @@ in font = "Noto Sans:size=12" terminal = "kitty" icons-enabled = yes - icon-theme = "${config.gtk.iconTheme.name}" + icon-theme = "Colloid-Dark" layer = "overlay" ''; force = true; diff --git a/home/tiling/niri/qt/qt5ct/qt5ct.conf b/home/tiling/niri/qt/qt5ct/qt5ct.conf index 92a501e..89cf609 100644 --- a/home/tiling/niri/qt/qt5ct/qt5ct.conf +++ b/home/tiling/niri/qt/qt5ct/qt5ct.conf @@ -2,7 +2,7 @@ color_scheme_path=/home/sckova/.config/qt5ct/style-colors.conf custom_palette=true icon_theme=Colloid-Dark -standard_dialogs=kde +standard_dialogs=default style=Breeze [Fonts] diff --git a/home/tiling/niri/qt/qt6ct/qt6ct.conf b/home/tiling/niri/qt/qt6ct/qt6ct.conf index 18453fb..673d92f 100644 --- a/home/tiling/niri/qt/qt6ct/qt6ct.conf +++ b/home/tiling/niri/qt/qt6ct/qt6ct.conf @@ -2,7 +2,7 @@ color_scheme_path=/home/sckova/.config/qt6ct/style-colors.conf custom_palette=true icon_theme=Colloid-Dark -standard_dialogs=kde +standard_dialogs=default style=Breeze [Fonts] diff --git a/home/tiling/noctalia/default.nix b/home/tiling/noctalia/default.nix new file mode 100644 index 0000000..c4de022 --- /dev/null +++ b/home/tiling/noctalia/default.nix @@ -0,0 +1,463 @@ +{ + pkgs, + config, + lib, + ... +}: + +let + customPackage = pkgs.noctalia-shell-custom.override { + catppuccinFlavor = config.catppuccin.flavor; + catppuccinAccent = config.catppuccin.accent; + }; +in +{ + programs.noctalia-shell = { + enable = true; + package = customPackage; + settings = { + settingsVersion = 0; + bar = { + position = "top"; + backgroundOpacity = 1; + monitors = [ ]; + density = "comfortable"; + showCapsule = true; + capsuleOpacity = 1; + floating = false; + marginVertical = 0.25; + marginHorizontal = 0.25; + outerCorners = true; + exclusive = true; + widgets = { + left = [ + { + icon = "rocket"; + id = "CustomButton"; + leftClickExec = "noctalia-shell ipc call launcher toggle"; + } + { + id = "Workspace"; + } + { + diskPath = "/"; + id = "SystemMonitor"; + showCpuTemp = false; + showCpuUsage = true; + showDiskUsage = true; + showGpuTemp = false; + showMemoryAsPercent = true; + showMemoryUsage = true; + showNetworkStats = false; + usePrimaryColor = false; + } + { + colorizeIcons = false; + hideMode = "hidden"; + id = "ActiveWindow"; + maxWidth = 375; + scrollingMode = "hover"; + showIcon = true; + useFixedWidth = false; + } + { + id = "MediaMini"; + } + ]; + center = [ + ]; + right = [ + { + id = "ScreenRecorder"; + } + { + id = "Tray"; + } + { + id = "NotificationHistory"; + } + { + id = "Battery"; + } + { + id = "Volume"; + } + { + id = "Brightness"; + } + { + id = "ControlCenter"; + } + { + formatHorizontal = "ddd MMM dd yyyy @ h:mm AP"; + formatVertical = "HH mm - dd MM"; + id = "Clock"; + useCustomFont = false; + usePrimaryColor = false; + } + ]; + }; + }; + general = { + avatarImage = ""; + dimmerOpacity = 0.6; + showScreenCorners = true; + forceBlackScreenCorners = true; + scaleRatio = 1; + radiusRatio = 1; + iRadiusRatio = 1; + boxRadiusRatio = 1; + screenRadiusRatio = 1; + animationSpeed = 1; + animationDisabled = false; + compactLockScreen = false; + lockOnSuspend = true; + showSessionButtonsOnLockScreen = true; + showHibernateOnLockScreen = false; + enableShadows = false; + shadowDirection = "bottom_right"; + shadowOffsetX = 2; + shadowOffsetY = 3; + language = ""; + allowPanelsOnScreenWithoutBar = true; + }; + ui = { + fontDefault = "Noto Sans"; + fontFixed = "NotoSansM Nerd Font Mono"; + fontDefaultScale = 1; + fontFixedScale = 1; + tooltipsEnabled = true; + panelBackgroundOpacity = 1; + panelsAttachedToBar = true; + settingsPanelMode = "attached"; + }; + location = { + name = "Atlanta, US"; + weatherEnabled = true; + weatherShowEffects = true; + useFahrenheit = true; + use12hourFormat = true; + showWeekNumberInCalendar = true; + showCalendarEvents = true; + showCalendarWeather = true; + analogClockInCalendar = false; + firstDayOfWeek = -1; + }; + calendar = { + cards = [ + { + enabled = true; + id = "calendar-header-card"; + } + { + enabled = true; + id = "calendar-month-card"; + } + { + enabled = true; + id = "timer-card"; + } + { + enabled = true; + id = "weather-card"; + } + ]; + }; + screenRecorder = { + directory = ""; + frameRate = 60; + audioCodec = "opus"; + videoCodec = "h264"; + quality = "very_high"; + colorRange = "limited"; + showCursor = true; + audioSource = "default_output"; + videoSource = "portal"; + }; + wallpaper = { + enabled = false; + overviewEnabled = false; + directory = ""; + monitorDirectories = [ ]; + enableMultiMonitorDirectories = false; + recursiveSearch = false; + setWallpaperOnAllMonitors = true; + fillMode = "crop"; + fillColor = "#000000"; + randomEnabled = false; + randomIntervalSec = 300; + transitionDuration = 1500; + transitionType = "random"; + transitionEdgeSmoothness = 0.05; + panelPosition = "follow_bar"; + hideWallpaperFilenames = false; + useWallhaven = false; + wallhavenQuery = ""; + wallhavenSorting = "relevance"; + wallhavenOrder = "desc"; + wallhavenCategories = "111"; + wallhavenPurity = "100"; + wallhavenResolutionMode = "atleast"; + wallhavenResolutionWidth = ""; + wallhavenResolutionHeight = ""; + }; + appLauncher = { + enableClipboardHistory = false; + enableClipPreview = true; + position = "center"; + pinnedExecs = [ ]; + useApp2Unit = false; + sortByMostUsed = true; + terminalCommand = "xterm -e"; + customLaunchPrefixEnabled = false; + customLaunchPrefix = ""; + viewMode = "list"; + showCategories = true; + }; + controlCenter = { + position = "close_to_bar_button"; + shortcuts = { + left = [ + { + id = "WiFi"; + } + { + id = "Bluetooth"; + } + { + id = "ScreenRecorder"; + } + { + id = "WallpaperSelector"; + } + ]; + right = [ + { + id = "Notifications"; + } + { + id = "PowerProfile"; + } + { + id = "KeepAwake"; + } + { + id = "NightLight"; + } + ]; + }; + cards = [ + { + enabled = true; + id = "profile-card"; + } + { + enabled = true; + id = "shortcuts-card"; + } + { + enabled = true; + id = "audio-card"; + } + { + enabled = true; + id = "weather-card"; + } + { + enabled = true; + id = "media-sysmon-card"; + } + ]; + }; + systemMonitor = { + cpuWarningThreshold = 80; + cpuCriticalThreshold = 90; + tempWarningThreshold = 80; + tempCriticalThreshold = 90; + memWarningThreshold = 80; + memCriticalThreshold = 90; + diskWarningThreshold = 80; + diskCriticalThreshold = 90; + cpuPollingInterval = 3000; + tempPollingInterval = 3000; + memPollingInterval = 3000; + diskPollingInterval = 3000; + networkPollingInterval = 3000; + useCustomColors = false; + warningColor = ""; + criticalColor = ""; + }; + dock = { + enabled = false; + displayMode = "auto_hide"; + backgroundOpacity = 1; + floatingRatio = 1; + size = 1; + onlySameOutput = true; + monitors = [ ]; + pinnedApps = [ ]; + colorizeIcons = false; + pinnedStatic = false; + inactiveIndicators = false; + deadOpacity = 0.6; + }; + network = { + wifiEnabled = true; + }; + sessionMenu = { + enableCountdown = true; + countdownDuration = 10000; + position = "center"; + showHeader = true; + powerOptions = [ + { + action = "lock"; + enabled = true; + } + { + action = "suspend"; + enabled = true; + } + { + action = "hibernate"; + enabled = true; + } + { + action = "reboot"; + enabled = true; + } + { + action = "logout"; + enabled = true; + } + { + action = "shutdown"; + enabled = true; + } + ]; + }; + notifications = { + enabled = true; + monitors = [ ]; + location = "top_right"; + overlayLayer = true; + backgroundOpacity = 1; + respectExpireTimeout = false; + lowUrgencyDuration = 3; + normalUrgencyDuration = 8; + criticalUrgencyDuration = 15; + enableKeyboardLayoutToast = true; + sounds = { + enabled = false; + volume = 0.5; + separateSounds = false; + criticalSoundFile = ""; + normalSoundFile = ""; + lowSoundFile = ""; + excludedApps = "discord,firefox,chrome,chromium,edge"; + }; + }; + osd = { + enabled = true; + location = "top_right"; + autoHideMs = 2000; + overlayLayer = true; + backgroundOpacity = 1; + enabledTypes = [ + 0 + 1 + 2 + ]; + monitors = [ ]; + }; + audio = { + volumeStep = 5; + volumeOverdrive = false; + cavaFrameRate = 30; + visualizerType = "linear"; + visualizerQuality = "high"; + mprisBlacklist = [ ]; + preferredPlayer = ""; + externalMixer = "pwvucontrol || pavucontrol"; + }; + brightness = { + brightnessStep = 5; + enforceMinimum = true; + enableDdcSupport = true; + }; + colorSchemes = { + useWallpaperColors = false; + predefinedScheme = "Cat-Custom"; + darkMode = true; + schedulingMode = "on"; + manualSunrise = "06:30"; + manualSunset = "18:30"; + matugenSchemeType = "scheme-fruit-salad"; + generateTemplatesForPredefined = true; + }; + templates = { + gtk = false; + qt = false; + kcolorscheme = false; + alacritty = false; + kitty = false; + ghostty = false; + foot = false; + wezterm = false; + fuzzel = false; + discord = false; + pywalfox = false; + vicinae = false; + walker = false; + code = false; + spicetify = false; + telegram = false; + cava = false; + yazi = false; + emacs = false; + niri = false; + enableUserTemplates = false; + }; + nightLight = { + enabled = true; + forced = false; + autoSchedule = true; + nightTemp = "4000"; + dayTemp = "6500"; + manualSunrise = "06:30"; + manualSunset = "18:30"; + }; + hooks = { + enabled = false; + wallpaperChange = ""; + darkModeChange = ""; + }; + }; + }; + + systemd.user.services.noctalia-shell = { + Unit = { + After = [ "niri.service" ]; + PartOf = [ "niri.service" ]; + Description = "Noctalia Shell - Wayland desktop shell"; + Documentation = "https://docs.noctalia.dev/docs"; + }; + + Service = { + ExecStart = "${customPackage}/bin/noctalia-shell"; + Restart = "on-failure"; + Environment = [ + "LOCALE_ARCHIVE=${pkgs.glibcLocales}/lib/locale" + "TZDIR=${pkgs.tzdata}/share/zoneinfo" + "NOCTALIA_SETTINGS_FALLBACK=%h/.config/noctalia/gui-settings.json" + "QT_QPA_PLATFORM=wayland" + "QT_QPA_PLATFORMTHEME_5=qt5ct" + "QT_QPA_PLATFORMTHEME=qt6ct" + ]; + }; + + Install = { + WantedBy = [ "niri.service" ]; + }; + }; +} diff --git a/packages/noctalia-shell-custom/package.nix b/packages/noctalia-shell-custom/package.nix new file mode 100644 index 0000000..1eb1ba5 --- /dev/null +++ b/packages/noctalia-shell-custom/package.nix @@ -0,0 +1,69 @@ +{ + lib, + pkgs, + noctalia-shell, + catppuccinFlavor ? "mocha", + catppuccinAccent ? "mauve", +}: +let + + mkTheme = colors: { + mPrimary = colors.${catppuccinAccent}; + mOnPrimary = colors.crust; + mSecondary = colors.subtext0; + mOnSecondary = colors.crust; + mTertiary = colors.teal; + mOnTertiary = colors.crust; + mError = colors.red; + mOnError = colors.crust; + mSurface = colors.base; + mOnSurface = colors.text; + mSurfaceVariant = colors.surface0; + mOnSurfaceVariant = colors.lavender; + mOutline = colors.surface2; + mShadow = colors.crust; + mHover = colors.teal; + mOnHover = colors.crust; + }; + + customScheme = { + dark = mkTheme pkgs.catppuccin.${catppuccinFlavor}; + light = mkTheme pkgs.catppuccin.latte; + }; + + # Convert to JSON string for writing to file + customSchemeJson = builtins.toJSON customScheme; +in +noctalia-shell.overrideAttrs (oldAttrs: { + pname = "noctalia-shell-custom"; + nativeBuildInputs = (oldAttrs.nativeBuildInputs or [ ]) ++ [ pkgs.jq ]; + postPatch = (oldAttrs.postPatch or "") + '' + # Create the Cat-Custom color scheme + if [ -d Assets/ColorScheme/Catppuccin ]; then + # Create Cat-Custom directory + mkdir -p Assets/ColorScheme/Cat-Custom + + # Write the custom color scheme + echo '${customSchemeJson}' | ${pkgs.jq}/bin/jq '.' > Assets/ColorScheme/Cat-Custom/Cat-Custom.json + + echo "Created Cat-Custom color scheme with ${catppuccinAccent} accent" + echo " Dark theme: ${catppuccinFlavor}" + echo " Light theme: latte" + else + echo "Warning: ColorScheme directory not found at expected path" + fi + + # Add translations for Cat-Custom to all supported languages + for lang in en fr de es pt zh-CN; do + if [ -f "Assets/Translations/$lang.json" ]; then + ${pkgs.jq}/bin/jq '.["color-scheme"].predefined.schemes["Cat-Custom"] = "Cat-Custom"' \ + "Assets/Translations/$lang.json" > "Assets/Translations/$lang.json.tmp" + mv "Assets/Translations/$lang.json.tmp" "Assets/Translations/$lang.json" + echo "Added Cat-Custom translation to $lang.json" + fi + done + ''; + meta = oldAttrs.meta // { + description = oldAttrs.meta.description + " (with Cat-Custom Catppuccin theme)"; + }; +}) diff --git a/packages/overlay.nix b/packages/overlay.nix index 71bf926..ed31c11 100644 --- a/packages/overlay.nix +++ b/packages/overlay.nix @@ -24,6 +24,10 @@ final: prev: { inherit helium-widevine; }; + noctalia-shell-custom = prev.callPackage (builtins.path { + path = ./noctalia-shell-custom/package.nix; + }) { }; + spotifyd = prev.callPackage (builtins.path { path = ./spotifyd/package.nix; }) { }; widevine-firefox = prev.callPackage (builtins.path { path = ./widevine-firefox/package.nix; }) { }; diff --git a/system/all.nix b/system/all.nix index cd14cf8..3b1c6ee 100755 --- a/system/all.nix +++ b/system/all.nix @@ -30,6 +30,7 @@ ../home/tiling/niri/default.nix ../home/tiling/quickshell/default.nix ../home/tiling/waybar/default.nix + ../home/tiling/noctalia/default.nix ../home/systemd/default.nix ../home/terminal/btop/default.nix ../home/terminal/fish/default.nix @@ -105,10 +106,7 @@ enable = true; }; - programs.niri = { - enable = true; - useNautilus = true; - }; + programs.niri.enable = true; services.gnome.gnome-keyring.enable = true; security.pam.services.niri.enableGnomeKeyring = true; programs.dconf.enable = true; @@ -181,6 +179,11 @@ services.openssh.enable = true; networking.firewall.enable = false; + documentation.man = { + enable = true; + generateCaches = true; + }; + # This value determines the NixOS release from which the default # settings for stateful data, like file locations and database versions # on your system were taken. It‘s perfectly fine and recommended to leave From b22cabaa8d27199d88e74b92b5eac6c94c4ed4d2 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Sat, 13 Dec 2025 19:44:24 -0500 Subject: [PATCH 111/282] add bing wallpaper for niri --- home/tiling/niri/config/config.kdl | 6 +- home/tiling/niri/default.nix | 1 + home/tiling/wallpaper/bing-wallpaper.nix | 87 ++++++++++++++++++++++++ system/all.nix | 1 + 4 files changed, 93 insertions(+), 2 deletions(-) create mode 100644 home/tiling/wallpaper/bing-wallpaper.nix diff --git a/home/tiling/niri/config/config.kdl b/home/tiling/niri/config/config.kdl index 340ce5f..48391e6 100644 --- a/home/tiling/niri/config/config.kdl +++ b/home/tiling/niri/config/config.kdl @@ -257,6 +257,8 @@ layout { // This line starts waybar, a commonly used bar for Wayland compositors. // spawn-at-startup "waybar" +spawn-at-startup "swaybg" "-i" "/home/sckova/.local/share/dailywallpaper.jpg" + // run tailscale system tray spawn-at-startup "sudo tailscale set --operator=$USER" spawn-at-startup "tailscale systray" @@ -384,8 +386,8 @@ binds { // Example brightness key mappings for brightnessctl. // You can use regular spawn with multiple arguments too (to avoid going through "sh"), // but you need to manually put each argument in separate "" quotes. - XF86MonBrightnessUp allow-when-locked=true { spawn "/home/sckova/.config/niri/scripts/brightness.sh" "5"; } - XF86MonBrightnessDown allow-when-locked=true { spawn "/home/sckova/.config/niri/scripts/brightness.sh" "-5"; } + XF86MonBrightnessUp allow-when-locked=true { spawn "/home/sckova/.config/niri/scripts/brightness.sh" "1"; } + XF86MonBrightnessDown allow-when-locked=true { spawn "/home/sckova/.config/niri/scripts/brightness.sh" "-1"; } // Open/close the Overview: a zoomed-out view of workspaces and windows. // You can also move the mouse into the top-left hot corner, diff --git a/home/tiling/niri/default.nix b/home/tiling/niri/default.nix index e5396c5..4b28279 100644 --- a/home/tiling/niri/default.nix +++ b/home/tiling/niri/default.nix @@ -10,6 +10,7 @@ let in { home.packages = with pkgs; [ + swaybg swaylock fuzzel xdg-desktop-portal diff --git a/home/tiling/wallpaper/bing-wallpaper.nix b/home/tiling/wallpaper/bing-wallpaper.nix new file mode 100644 index 0000000..fcd67d8 --- /dev/null +++ b/home/tiling/wallpaper/bing-wallpaper.nix @@ -0,0 +1,87 @@ +{ pkgs, config, ... }: + +let + bingWallpaperScript = pkgs.writeShellScript "bing-wallpaper" '' + set -euo pipefail + + # Configuration + SIZE="1920x1080" + MARKET="en-US" + OUTPUT_PATH="''${XDG_DATA_HOME:-$HOME/.local/share}/dailywallpaper.jpg" + DAY="0" + + # API configuration + BING="https://www.bing.com" + API="/HPImageArchive.aspx" + REQ_IMG="$BING$API?format=js&idx=$DAY&mkt=$MARKET&n=1" + + echo "Pinging Bing API..." + + # Fetch API response + API_RESP=$(${pkgs.wget}/bin/wget --quiet --output-document=- "$REQ_IMG") + if (( $? > 0 )); then + echo "Ping failed!" + exit 1 + fi + + # Extract image URL base + URL_BASE=$(echo "$API_RESP" | ${pkgs.gnugrep}/bin/grep -oP 'urlbase":"[^"]*' | ${pkgs.coreutils}/bin/cut -d '"' -f 3) + REQ_IMG_URL="$BING$URL_BASE\_$SIZE.jpg" + + # Extract title + TITLE=$(echo "$API_RESP" | ${pkgs.gnugrep}/bin/grep -oP 'title":"[^"]*' | ${pkgs.coreutils}/bin/cut -d '"' -f 3) + + echo "Bing Image of the day: $TITLE" + + # Check if specific size exists, fallback to default + if ! ${pkgs.wget}/bin/wget --quiet --spider --max-redirect 0 "$REQ_IMG_URL"; then + REQ_IMG_URL="$BING$(echo "$API_RESP" | ${pkgs.gnugrep}/bin/grep -oP 'url":"[^"]*' | ${pkgs.coreutils}/bin/cut -d '"' -f 3)" + fi + + echo "$REQ_IMG_URL" + + # Extract filename + IMG_NAME="''${REQ_IMG_URL##*/}" + IMG_NAME="''${IMG_NAME#th?id=OHR.}" + IMG_NAME="''${IMG_NAME%&rf=*}" + + echo "$IMG_NAME" + + # Create parent directory + ${pkgs.coreutils}/bin/mkdir -p "$(${pkgs.coreutils}/bin/dirname "$OUTPUT_PATH")" + + # Download image, overwrite if exists + ${pkgs.wget}/bin/wget --quiet --output-document="$OUTPUT_PATH" "$REQ_IMG_URL" + + echo "Wallpaper saved to $OUTPUT_PATH" + + # Send notification + if command -v ${pkgs.libnotify}/bin/notify-send &> /dev/null; then + ${pkgs.libnotify}/bin/notify-send -u low -t 10 -i preferences-desktop-wallpaper \ + "Bing Wallpaper of the Day" "$TITLE" + fi + + echo "Wallpaper downloaded successfully." + ''; +in +{ + systemd.user.services.bing-wallpaper = { + Unit = { + Description = "Download and set Bing wallpaper of the day"; + After = [ + "network-online.target" + "niri.service" + ]; + Wants = [ "network-online.target" ]; + }; + + Service = { + Type = "oneshot"; + ExecStart = "${bingWallpaperScript}"; + }; + + Install = { + WantedBy = [ "niri.service" ]; + }; + }; +} diff --git a/system/all.nix b/system/all.nix index 3b1c6ee..9493c4c 100755 --- a/system/all.nix +++ b/system/all.nix @@ -29,6 +29,7 @@ ../home/browsers/firefox/default.nix ../home/tiling/niri/default.nix ../home/tiling/quickshell/default.nix + ../home/tiling/wallpaper/bing-wallpaper.nix ../home/tiling/waybar/default.nix ../home/tiling/noctalia/default.nix ../home/systemd/default.nix From d2f8dff81e1ac3db5212d5213000ac6d29ba20a7 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Sat, 13 Dec 2025 21:31:54 -0500 Subject: [PATCH 112/282] switch niri config to nix format --- home/hosts/alien.nix | 5 +- home/hosts/peach.nix | 5 +- home/hosts/vm-aarch64.nix | 5 +- home/tiling/niri/config/config.kdl | 619 ------------------ home/tiling/niri/config/noctalia.kdl | 28 - home/tiling/niri/default.nix | 395 ++++++++++- .../niri/{config => }/scripts/brightness.sh | 0 system/all.nix | 2 +- 8 files changed, 388 insertions(+), 671 deletions(-) delete mode 100644 home/tiling/niri/config/config.kdl delete mode 100644 home/tiling/niri/config/noctalia.kdl rename home/tiling/niri/{config => }/scripts/brightness.sh (100%) diff --git a/home/hosts/alien.nix b/home/hosts/alien.nix index a499d9b..cb971ce 100644 --- a/home/hosts/alien.nix +++ b/home/hosts/alien.nix @@ -33,13 +33,10 @@ _2ship2harkinian ]; - home.sessionVariables = { - XCURSOR_THEME = "catppuccin-mocha-blue-cursors"; - }; - gtk.cursorTheme = { name = "catppuccin-mocha-blue-cursors"; package = pkgs.catppuccin-cursors.mochaBlue; + size = 24; }; programs.plasma = { diff --git a/home/hosts/peach.nix b/home/hosts/peach.nix index 80d5717..61b213a 100644 --- a/home/hosts/peach.nix +++ b/home/hosts/peach.nix @@ -33,13 +33,10 @@ moonlight-qt ]; - home.sessionVariables = { - XCURSOR_THEME = "catppuccin-mocha-peach-cursors"; - }; - gtk.cursorTheme = { name = "catppuccin-mocha-peach-cursors"; package = pkgs.catppuccin-cursors.mochaPeach; + size = 24; }; programs.plasma = { diff --git a/home/hosts/vm-aarch64.nix b/home/hosts/vm-aarch64.nix index 7178f22..078950a 100644 --- a/home/hosts/vm-aarch64.nix +++ b/home/hosts/vm-aarch64.nix @@ -27,13 +27,10 @@ ]; - home.sessionVariables = { - XCURSOR_THEME = "catppuccin-mocha-green-cursors"; - }; - gtk.cursorTheme = { name = "catppuccin-mocha-green-cursors"; package = pkgs.catppuccin-cursors.mochaGreen; + size = 24; }; programs.plasma = { diff --git a/home/tiling/niri/config/config.kdl b/home/tiling/niri/config/config.kdl deleted file mode 100644 index 48391e6..0000000 --- a/home/tiling/niri/config/config.kdl +++ /dev/null @@ -1,619 +0,0 @@ -// https://github.com/YaLTeR/niri/issues/2330#issuecomment-3256864777 -//debug { render-drm-device "/dev/dri/card2"; } - -input { - keyboard { - numlock - } - - // Next sections include libinput settings. - // Omitting settings disables them, or leaves them at their default values. - // All commented-out settings here are examples, not defaults. - touchpad { - // off - // tap - // dwt - // dwtp - // drag false - // drag-lock - natural-scroll - // accel-speed 0.2 - // accel-profile "flat" - // scroll-method "two-finger" - // disabled-on-external-mouse - } - - // Focus windows and outputs automatically when moving the mouse into them. - // Setting max-scroll-amount="0%" makes it work only on windows already fully on screen. - focus-follows-mouse max-scroll-amount="0%" -} - -overview { - backdrop-color "#11111b" - workspace-shadow { - off - } -} - -// Disable the hot corners. -gestures { - hot-corners { - off - } -} - -environment { - QT_QPA_PLATFORM "wayland" - QT_QPA_PLATFORMTHEME_5 "qt5ct" - QT_QPA_PLATFORMTHEME "qt6ct" - // DISPLAY null -} - -cursor { - xcursor-theme "catppuccin-mocha-dark-cursors" - xcursor-size 24 - - hide-when-typing - hide-after-inactive-ms 10000 -} - -// You can configure outputs by their name, which you can find -// by running `niri msg outputs` while inside a niri instance. -// The built-in laptop monitor is usually called "eDP-1". -// Find more information on the wiki: -// https://yalter.github.io/niri/Configuration:-Outputs -// Remember to uncomment the node by removing "/-"! -output "eDP-1" { - // Uncomment this line to disable this output. - // off - - // Resolution and, optionally, refresh rate of the output. - // The format is "x" or "x@". - // If the refresh rate is omitted, niri will pick the highest refresh rate - // for the resolution. - // If the mode is omitted altogether or is invalid, niri will pick one automatically. - // Run `niri msg outputs` while inside a niri instance to list all outputs and their modes. - // mode "1920x1080@120.030" - - // You can use integer or fractional scale, for example use 1.5 for 150% scale. - scale 1.75 - - // Transform allows to rotate the output counter-clockwise, valid values are: - // normal, 90, 180, 270, flipped, flipped-90, flipped-180 and flipped-270. - transform "normal" - - // Position of the output in the global coordinate space. - // This affects directional monitor actions like "focus-monitor-left", and cursor movement. - // The cursor can only move between directly adjacent outputs. - // Output scale and rotation has to be taken into account for positioning: - // outputs are sized in logical, or scaled, pixels. - // For example, a 3840×2160 output with scale 2.0 will have a logical size of 1920×1080, - // so to put another output directly adjacent to it on the right, set its x to 1920. - // If the position is unset or results in an overlap, the output is instead placed - // automatically. - // position x=1280 y=0 -} - -output "HDMI-A-1" { - // Uncomment this line to disable this output. - // off - - // Resolution and, optionally, refresh rate of the output. - // The format is "x" or "x@". - // If the refresh rate is omitted, niri will pick the highest refresh rate - // for the resolution. - // If the mode is omitted altogether or is invalid, niri will pick one automatically. - // Run `niri msg outputs` while inside a niri instance to list all outputs and their modes. - // mode "1920x1080@120.030" - - // You can use integer or fractional scale, for example use 1.5 for 150% scale. - scale 1.75 - - // Transform allows to rotate the output counter-clockwise, valid values are: - // normal, 90, 180, 270, flipped, flipped-90, flipped-180 and flipped-270. - transform "normal" - - // Position of the output in the global coordinate space. - // This affects directional monitor actions like "focus-monitor-left", and cursor movement. - // The cursor can only move between directly adjacent outputs. - // Output scale and rotation has to be taken into account for positioning: - // outputs are sized in logical, or scaled, pixels. - // For example, a 3840×2160 output with scale 2.0 will have a logical size of 1920×1080, - // so to put another output directly adjacent to it on the right, set its x to 1920. - // If the position is unset or results in an overlap, the output is instead placed - // automatically. - // position x=1280 y=0 -} - -// Settings that influence how windows are positioned and sized. -// Find more information on the wiki: -// https://yalter.github.io/niri/Configuration:-Layout -layout { - background-color "#181825" - // Set gaps around windows in logical pixels. - gaps 4 - - // When to center a column when changing focus, options are: - // - "never", default behavior, focusing an off-screen column will keep at the left - // or right edge of the screen. - // - "always", the focused column will always be centered. - // - "on-overflow", focusing a column will center it if it doesn't fit - // together with the previously focused column. - center-focused-column "never" - - // You can customize the widths that "switch-preset-column-width" (Mod+R) toggles between. - preset-column-widths { - // Proportion sets the width as a fraction of the output width, taking gaps into account. - // For example, you can perfectly fit four windows sized "proportion 0.25" on an output. - // The default preset widths are 1/3, 1/2 and 2/3 of the output. - proportion 0.33333 - proportion 0.5 - proportion 0.66667 - - // Fixed sets the width in logical pixels exactly. - // fixed 1920 - } - - // You can also customize the heights that "switch-preset-window-height" (Mod+Shift+R) toggles between. - // preset-window-heights { } - - // You can change the default width of the new windows. - default-column-width { proportion 0.5; } - // If you leave the brackets empty, the windows themselves will decide their initial width. - // default-column-width {} - - // By default focus ring and border are rendered as a solid background rectangle - // behind windows. That is, they will show up through semitransparent windows. - // This is because windows using client-side decorations can have an arbitrary shape. - // - // If you don't like that, you should uncomment `prefer-no-csd` below. - // Niri will draw focus ring and border *around* windows that agree to omit their - // client-side decorations. - // - // Alternatively, you can override it with a window rule called - // `draw-border-with-background`. - - focus-ring { - off - } - - // You can also add a border. It's similar to the focus ring, but always visible. - border { - // The settings are the same as for the focus ring. - // If you enable the border, you probably want to disable the focus ring. - // off - - width 1 - active-color "#fab387" - // active-gradient from="#fab387" to="#89b4fa" angle=90 - inactive-color "#313244" - // inactive-gradient from="#313244" to="#6c7086" angle=90 - // Color of the border around windows that request your attention. - urgent-color "#eba0ac" - - // Gradients can use a few different interpolation color spaces. - // For example, this is a pastel rainbow gradient via in="oklch longer hue". - // - // active-gradient from="#e5989b" to="#ffb4a2" angle=45 relative-to="workspace-view" in="oklch longer hue" - - // inactive-gradient from="#505050" to="#808080" angle=45 relative-to="workspace-view" - } - - // You can enable drop shadows for windows. - shadow { - // Uncomment the next line to enable shadows. - on - - // By default, the shadow draws only around its window, and not behind it. - // Uncomment this setting to make the shadow draw behind its window. - // - // Note that niri has no way of knowing about the CSD window corner - // radius. It has to assume that windows have square corners, leading to - // shadow artifacts inside the CSD rounded corners. This setting fixes - // those artifacts. - // - // However, instead you may want to set prefer-no-csd and/or - // geometry-corner-radius. Then, niri will know the corner radius and - // draw the shadow correctly, without having to draw it behind the - // window. These will also remove client-side shadows if the window - // draws any. - // - // draw-behind-window true - - // You can change how shadows look. The values below are in logical - // pixels and match the CSS box-shadow properties. - - // Softness controls the shadow blur radius. - softness 30 - - // Spread expands the shadow. - spread 5 - - // Offset moves the shadow relative to the window. - offset x=0 y=5 - - // You can also change the shadow color and opacity. - color "#1e1e2e77" - } - - // Struts shrink the area occupied by windows, similarly to layer-shell panels. - // You can think of them as a kind of outer gaps. They are set in logical pixels. - // Left and right struts will cause the next window to the side to always be visible. - // Top and bottom struts will simply add outer gaps in addition to the area occupied by - // layer-shell panels and regular gaps. - struts { - // left 64 - // right 64 - // top 64 - // bottom 64 - } -} - -// Add lines like this to spawn processes at startup. -// Note that running niri as a session supports xdg-desktop-autostart, -// which may be more convenient to use. -// See the binds section below for more spawn examples. - -// This line starts waybar, a commonly used bar for Wayland compositors. -// spawn-at-startup "waybar" - -spawn-at-startup "swaybg" "-i" "/home/sckova/.local/share/dailywallpaper.jpg" - -// run tailscale system tray -spawn-at-startup "sudo tailscale set --operator=$USER" -spawn-at-startup "tailscale systray" - -// Instead let's start quickshell, which is similar but made with Qt/QML -// spawn-at-startup "quickshell" - -// To run a shell command (with variables, pipes, etc.), use spawn-sh-at-startup: -// spawn-sh-at-startup "qs -c ~/source/qs/MyAwesomeShell" - -hotkey-overlay { - // Uncomment this line to disable the "Important Hotkeys" pop-up at startup. - skip-at-startup -} - -// Uncomment this line to ask the clients to omit their client-side decorations if possible. -// If the client will specifically ask for CSD, the request will be honored. -// Additionally, clients will be informed that they are tiled, removing some client-side rounded corners. -// This option will also fix border/focus ring drawing behind some semitransparent windows. -// After enabling or disabling this, you need to restart the apps for this to take effect. -prefer-no-csd - -// You can change the path where screenshots are saved. -// A ~ at the front will be expanded to the home directory. -// The path is formatted with strftime(3) to give you the screenshot date and time. -screenshot-path "~/Pictures/Screenshots/Screenshot from %Y-%m-%d %H-%M-%S.png" - -// You can also set this to null to disable saving screenshots to disk. -// screenshot-path null - -// Animation settings. -// The wiki explains how to configure individual animations: -// https://yalter.github.io/niri/Configuration:-Animations -animations { - // Uncomment to turn off all animations. - // off - - // Slow down all animations by this factor. Values below 1 speed them up instead. - // slowdown 3.0 -} - -// Window rules let you adjust behavior for individual windows. -// Find more information on the wiki: -// https://yalter.github.io/niri/Configuration:-Window-Rules - -// Open the Firefox picture-in-picture player as floating by default. -window-rule { - // This app-id regular expression will work for both: - // - host Firefox (app-id is "firefox") - // - Flatpak Firefox (app-id is "org.mozilla.firefox") - match app-id=r#"firefox$"# title="^Picture-in-Picture$" - open-floating true - default-floating-position x=32 y=32 relative-to="bottom-left" -} - -// Example: block out two password managers from screen capture. -// (This example rule is commented out with a "/-" in front.) -/-window-rule { - match app-id=r#"^org\.keepassxc\.KeePassXC$"# - match app-id=r#"^org\.gnome\.World\.Secrets$"# - - block-out-from "screen-capture" - - // Use this instead if you want them visible on third-party screenshot tools. - // block-out-from "screencast" -} - -// Example: enable rounded corners for all windows. -// (This example rule is commented out with a "/-" in front.) -window-rule { - geometry-corner-radius 16 - clip-to-geometry true -} - -window-rule { - match app-id="openmw" title="OpenMW" - open-maximized true - focus-ring { - off - } - border { - off - } - shadow { - off - } -} - -binds { - // Keys consist of modifiers separated by + signs, followed by an XKB key name - // in the end. To find an XKB name for a particular key, you may use a program - // like wev. - // - // "Mod" is a special modifier equal to Super when running on a TTY, and to Alt - // when running as a winit window. - // - // Most actions that you can bind here can also be invoked programmatically with - // `niri msg action do-something`. - - // Mod-Shift-/, which is usually the same as Mod-?, - // shows a list of important hotkeys. - Mod+Shift+Slash { show-hotkey-overlay; } - - // Suggested binds for running programs: terminal, app launcher, screen locker. - Mod+T hotkey-overlay-title="Open a Terminal: kitty" { spawn "kitty"; } - // Mod+D hotkey-overlay-title="Run an Application: fuzzel" { spawn "fuzzel"; } - Mod+Space hotkey-overlay-title="Run an Application: Noctalia app launcher" { spawn-sh "noctalia-shell ipc call launcher toggle"; } - Super+Alt+L hotkey-overlay-title="Lock the Screen: swaylock" { spawn "swaylock"; } - - // Use spawn-sh to run a shell command. Do this if you need pipes, multiple commands, etc. - // Note: the entire command goes as a single argument. It's passed verbatim to `sh -c`. - // For example, this is a standard bind to toggle the screen reader (orca). - Super+Alt+S allow-when-locked=true hotkey-overlay-title=null { spawn-sh "pkill orca || exec orca"; } - - // Example volume keys mappings for PipeWire & WirePlumber. - // The allow-when-locked=true property makes them work even when the session is locked. - // Using spawn-sh allows to pass multiple arguments together with the command. - XF86AudioRaiseVolume allow-when-locked=true { spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.05+"; } - XF86AudioLowerVolume allow-when-locked=true { spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.05-"; } - Shift+XF86AudioRaiseVolume allow-when-locked=true { spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.01+"; } - Shift+XF86AudioLowerVolume allow-when-locked=true { spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.01-"; } - XF86AudioMute allow-when-locked=true { spawn-sh "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"; } - XF86AudioMicMute allow-when-locked=true { spawn-sh "wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"; } - - // Example brightness key mappings for brightnessctl. - // You can use regular spawn with multiple arguments too (to avoid going through "sh"), - // but you need to manually put each argument in separate "" quotes. - XF86MonBrightnessUp allow-when-locked=true { spawn "/home/sckova/.config/niri/scripts/brightness.sh" "1"; } - XF86MonBrightnessDown allow-when-locked=true { spawn "/home/sckova/.config/niri/scripts/brightness.sh" "-1"; } - - // Open/close the Overview: a zoomed-out view of workspaces and windows. - // You can also move the mouse into the top-left hot corner, - // or do a four-finger swipe up on a touchpad. - Mod+O repeat=false { toggle-overview; } - - Mod+Q repeat=false { close-window; } - - Mod+Left { focus-column-left; } - Mod+Down { focus-window-down; } - Mod+Up { focus-window-up; } - Mod+Right { focus-column-right; } - Mod+H { focus-column-left; } - Mod+J { focus-window-down; } - Mod+K { focus-window-up; } - Mod+L { focus-column-right; } - - Mod+Ctrl+Left { move-column-left; } - Mod+Ctrl+Down { move-window-down; } - Mod+Ctrl+Up { move-window-up; } - Mod+Ctrl+Right { move-column-right; } - Mod+Ctrl+H { move-column-left; } - Mod+Ctrl+J { move-window-down; } - Mod+Ctrl+K { move-window-up; } - Mod+Ctrl+L { move-column-right; } - - // Alternative commands that move across workspaces when reaching - // the first or last window in a column. - // Mod+J { focus-window-or-workspace-down; } - // Mod+K { focus-window-or-workspace-up; } - // Mod+Ctrl+J { move-window-down-or-to-workspace-down; } - // Mod+Ctrl+K { move-window-up-or-to-workspace-up; } - - Mod+Home { focus-column-first; } - Mod+End { focus-column-last; } - Mod+Ctrl+Home { move-column-to-first; } - Mod+Ctrl+End { move-column-to-last; } - - Mod+Shift+Left { focus-monitor-left; } - Mod+Shift+Down { focus-monitor-down; } - Mod+Shift+Up { focus-monitor-up; } - Mod+Shift+Right { focus-monitor-right; } - Mod+Shift+H { focus-monitor-left; } - Mod+Shift+J { focus-monitor-down; } - Mod+Shift+K { focus-monitor-up; } - Mod+Shift+L { focus-monitor-right; } - - Mod+Shift+Ctrl+Left { move-column-to-monitor-left; } - Mod+Shift+Ctrl+Down { move-column-to-monitor-down; } - Mod+Shift+Ctrl+Up { move-column-to-monitor-up; } - Mod+Shift+Ctrl+Right { move-column-to-monitor-right; } - Mod+Shift+Ctrl+H { move-column-to-monitor-left; } - Mod+Shift+Ctrl+J { move-column-to-monitor-down; } - Mod+Shift+Ctrl+K { move-column-to-monitor-up; } - Mod+Shift+Ctrl+L { move-column-to-monitor-right; } - - // Alternatively, there are commands to move just a single window: - // Mod+Shift+Ctrl+Left { move-window-to-monitor-left; } - // ... - - // And you can also move a whole workspace to another monitor: - // Mod+Shift+Ctrl+Left { move-workspace-to-monitor-left; } - // ... - - Mod+Page_Down { focus-workspace-down; } - Mod+Page_Up { focus-workspace-up; } - Mod+U { focus-workspace-down; } - Mod+I { focus-workspace-up; } - Mod+Ctrl+Page_Down { move-column-to-workspace-down; } - Mod+Ctrl+Page_Up { move-column-to-workspace-up; } - Mod+Ctrl+U { move-column-to-workspace-down; } - Mod+Ctrl+I { move-column-to-workspace-up; } - - // Alternatively, there are commands to move just a single window: - // Mod+Ctrl+Page_Down { move-window-to-workspace-down; } - // ... - - Mod+Shift+Page_Down { move-workspace-down; } - Mod+Shift+Page_Up { move-workspace-up; } - Mod+Shift+U { move-workspace-down; } - Mod+Shift+I { move-workspace-up; } - - // You can bind mouse wheel scroll ticks using the following syntax. - // These binds will change direction based on the natural-scroll setting. - // - // To avoid scrolling through workspaces really fast, you can use - // the cooldown-ms property. The bind will be rate-limited to this value. - // You can set a cooldown on any bind, but it's most useful for the wheel. - Mod+WheelScrollDown cooldown-ms=150 { focus-workspace-down; } - Mod+WheelScrollUp cooldown-ms=150 { focus-workspace-up; } - Mod+Ctrl+WheelScrollDown cooldown-ms=150 { move-column-to-workspace-down; } - Mod+Ctrl+WheelScrollUp cooldown-ms=150 { move-column-to-workspace-up; } - - Mod+WheelScrollRight { focus-column-right; } - Mod+WheelScrollLeft { focus-column-left; } - Mod+Ctrl+WheelScrollRight { move-column-right; } - Mod+Ctrl+WheelScrollLeft { move-column-left; } - - // Usually scrolling up and down with Shift in applications results in - // horizontal scrolling; these binds replicate that. - Mod+Shift+WheelScrollDown { focus-column-right; } - Mod+Shift+WheelScrollUp { focus-column-left; } - Mod+Ctrl+Shift+WheelScrollDown { move-column-right; } - Mod+Ctrl+Shift+WheelScrollUp { move-column-left; } - - // Similarly, you can bind touchpad scroll "ticks". - // Touchpad scrolling is continuous, so for these binds it is split into - // discrete intervals. - // These binds are also affected by touchpad's natural-scroll, so these - // example binds are "inverted", since we have natural-scroll enabled for - // touchpads by default. - // Mod+TouchpadScrollDown { spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.02+"; } - // Mod+TouchpadScrollUp { spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.02-"; } - - // You can refer to workspaces by index. However, keep in mind that - // niri is a dynamic workspace system, so these commands are kind of - // "best effort". Trying to refer to a workspace index bigger than - // the current workspace count will instead refer to the bottommost - // (empty) workspace. - // - // For example, with 2 workspaces + 1 empty, indices 3, 4, 5 and so on - // will all refer to the 3rd workspace. - Mod+1 { focus-workspace 1; } - Mod+2 { focus-workspace 2; } - Mod+3 { focus-workspace 3; } - Mod+4 { focus-workspace 4; } - Mod+5 { focus-workspace 5; } - Mod+6 { focus-workspace 6; } - Mod+7 { focus-workspace 7; } - Mod+8 { focus-workspace 8; } - Mod+9 { focus-workspace 9; } - Mod+Ctrl+1 { move-column-to-workspace 1; } - Mod+Ctrl+2 { move-column-to-workspace 2; } - Mod+Ctrl+3 { move-column-to-workspace 3; } - Mod+Ctrl+4 { move-column-to-workspace 4; } - Mod+Ctrl+5 { move-column-to-workspace 5; } - Mod+Ctrl+6 { move-column-to-workspace 6; } - Mod+Ctrl+7 { move-column-to-workspace 7; } - Mod+Ctrl+8 { move-column-to-workspace 8; } - Mod+Ctrl+9 { move-column-to-workspace 9; } - - // Alternatively, there are commands to move just a single window: - // Mod+Ctrl+1 { move-window-to-workspace 1; } - - // Switches focus between the current and the previous workspace. - // Mod+Tab { focus-workspace-previous; } - - // The following binds move the focused window in and out of a column. - // If the window is alone, they will consume it into the nearby column to the side. - // If the window is already in a column, they will expel it out. - Mod+BracketLeft { consume-or-expel-window-left; } - Mod+BracketRight { consume-or-expel-window-right; } - - // Consume one window from the right to the bottom of the focused column. - Mod+Comma { consume-window-into-column; } - // Expel the bottom window from the focused column to the right. - Mod+Period { expel-window-from-column; } - - Mod+R { switch-preset-column-width; } - // Cycling through the presets in reverse order is also possible. - // Mod+R { switch-preset-column-width-back; } - Mod+Shift+R { switch-preset-window-height; } - Mod+Ctrl+R { reset-window-height; } - Mod+F { maximize-column; } - Mod+Shift+F { fullscreen-window; } - - // Expand the focused column to space not taken up by other fully visible columns. - // Makes the column "fill the rest of the space". - Mod+Ctrl+F { expand-column-to-available-width; } - - Mod+C { center-column; } - - // Center all fully visible columns on screen. - Mod+Ctrl+C { center-visible-columns; } - - // Finer width adjustments. - // This command can also: - // * set width in pixels: "1000" - // * adjust width in pixels: "-5" or "+5" - // * set width as a percentage of screen width: "25%" - // * adjust width as a percentage of screen width: "-10%" or "+10%" - // Pixel sizes use logical, or scaled, pixels. I.e. on an output with scale 2.0, - // set-column-width "100" will make the column occupy 200 physical screen pixels. - Mod+Minus { set-column-width "-10%"; } - Mod+Equal { set-column-width "+10%"; } - - // Finer height adjustments when in column with other windows. - Mod+Shift+Minus { set-window-height "-10%"; } - Mod+Shift+Equal { set-window-height "+10%"; } - - // Move the focused window between the floating and the tiling layout. - Mod+V { toggle-window-floating; } - Mod+Shift+V { switch-focus-between-floating-and-tiling; } - - // Toggle tabbed column display mode. - // Windows in this column will appear as vertical tabs, - // rather than stacked on top of each other. - Mod+W { toggle-column-tabbed-display; } - - // Actions to switch layouts. - // Note: if you uncomment these, make sure you do NOT have - // a matching layout switch hotkey configured in xkb options above. - // Having both at once on the same hotkey will break the switching, - // since it will switch twice upon pressing the hotkey (once by xkb, once by niri). - // Mod+Space { switch-layout "next"; } - // Mod+Shift+Space { switch-layout "prev"; } - - Print { screenshot; } - Ctrl+Print { screenshot-screen; } - Alt+Print { screenshot-window; } - - // Applications such as remote-desktop clients and software KVM switches may - // request that niri stops processing the keyboard shortcuts defined here - // so they may, for example, forward the key presses as-is to a remote machine. - // It's a good idea to bind an escape hatch to toggle the inhibitor, - // so a buggy application can't hold your session hostage. - // - // The allow-inhibiting=false property can be applied to other binds as well, - // which ensures niri always processes them, even when an inhibitor is active. - Mod+Escape allow-inhibiting=false { toggle-keyboard-shortcuts-inhibit; } - - // The quit action will show a confirmation dialog to avoid accidental exits. - Mod+Shift+E { quit; } - Ctrl+Alt+Delete { quit; } - - // Powers off the monitors. To turn them back on, do any input like - // moving the mouse or pressing any other key. - Mod+Shift+P { power-off-monitors; } -} diff --git a/home/tiling/niri/config/noctalia.kdl b/home/tiling/niri/config/noctalia.kdl deleted file mode 100644 index 0ae564e..0000000 --- a/home/tiling/niri/config/noctalia.kdl +++ /dev/null @@ -1,28 +0,0 @@ -layout { - - focus-ring { - active-color "#E6B450" - inactive-color "#0B0E14" - urgent-color "#D95757" - } - - border { - active-color "#E6B450" - inactive-color "#0B0E14" - urgent-color "#D95757" - } - - shadow { - color "#00000070" - } - - tab-indicator { - active-color "#E6B450" - inactive-color "#8e620b" - urgent-color "#D95757" - } - - insert-hint { - color "#E6B45080" - } -} diff --git a/home/tiling/niri/default.nix b/home/tiling/niri/default.nix index 4b28279..7dd7abd 100644 --- a/home/tiling/niri/default.nix +++ b/home/tiling/niri/default.nix @@ -20,13 +20,9 @@ in catppuccin-qt5ct ]; - programs.niri = { - # wip: put config in here - }; - home.file = { - ".config/niri" = { - source = ./config; + ".config/niri/scripts" = { + source = ./scripts; recursive = true; force = true; }; @@ -62,11 +58,6 @@ in gtk = { enable = true; - # theme = { - # name = "adw-gtk3-dark"; - # package = pkgs.adw-gtk3; - # }; - iconTheme = { name = "Colloid-Dark"; package = pkgs.colloid-icon-theme; @@ -118,4 +109,386 @@ in windowManager.command = "niri"; # launches niri directly }; + # https://github.com/sodiboo/niri-flake/blob/main/docs.md + programs.niri.settings = { + screenshot-path = "~/Pictures/Screenshots/Screenshot from %Y-%m-%d %H-%M-%S.png"; + hotkey-overlay.skip-at-startup = true; + prefer-no-csd = true; + spawn-at-startup = [ + { + command = [ + "swaybg" + "-i" + "/home/sckova/.local/share/dailywallpaper.jpg" + ]; + } + ]; + overview = { + backdrop-color = pkgs.catppuccin.${config.catppuccin.flavor}.crust; + workspace-shadow.enable = false; + }; + input = { + focus-follows-mouse = { + enable = true; + max-scroll-amount = "0%"; + }; + keyboard = { + numlock = false; + repeat-delay = 600; + repeat-rate = 25; + }; + mouse = { + enable = true; + accel-profile = "adaptive"; + natural-scroll = true; + }; + touchpad = { + enable = true; + accel-profile = "adaptive"; + natural-scroll = true; + tap = false; + drag = false; + }; + }; + outputs = { + "eDP-1" = { + scale = 1.75; + }; + "HDMI-A-1" = { + scale = 2; + }; + }; + cursor = { + hide-when-typing = true; + hide-after-inactive-ms = 2000; + size = config.gtk.cursorTheme.size; + theme = config.gtk.cursorTheme.name; + }; + layout = { + gaps = 4; + background-color = pkgs.catppuccin.${config.catppuccin.flavor}.mantle; + default-column-width = { + proportion = 0.5; + }; + preset-column-widths = [ + { proportion = 1.0 / 3.0; } + { proportion = 1.0 / 2.0; } + { proportion = 2.0 / 3.0; } + ]; + border = { + enable = true; + width = 1; + active.color = pkgs.catppuccin.${config.catppuccin.flavor}.${config.catppuccin.accent}; + inactive.color = pkgs.catppuccin.${config.catppuccin.flavor}.surface0; + urgent.color = pkgs.catppuccin.${config.catppuccin.flavor}.maroon; + }; + focus-ring = { + enable = false; + width = 1; + active.color = pkgs.catppuccin.${config.catppuccin.flavor}.${config.catppuccin.accent}; + inactive.color = pkgs.catppuccin.${config.catppuccin.flavor}.surface0; + urgent.color = pkgs.catppuccin.${config.catppuccin.flavor}.maroon; + }; + shadow = { + enable = true; + spread = 5; + offset.x = 0; + offset.y = 5; + softness = 30; + color = pkgs.catppuccin.${config.catppuccin.flavor}.base + "77"; + }; + }; + window-rules = [ + { + matches = [ + { + app-id = "firefox$"; + title = "^Picture-in-Picture$"; + } + ]; + open-floating = true; + default-floating-position = { + x = 32; + y = 32; + relative-to = "bottom-left"; + }; + } + { + geometry-corner-radius = { + top-left = 16.0; + top-right = 16.0; + bottom-left = 16.0; + bottom-right = 16.0; + }; + clip-to-geometry = true; + } + { + matches = [ + { + app-id = "openmw"; + title = "OpenMW"; + } + ]; + open-maximized = true; + focus-ring.enable = false; + border.enable = false; + shadow.enable = false; + } + ]; + binds = { + "Mod+Shift+Slash".action.show-hotkey-overlay = { }; + + "Mod+T" = { + action.spawn = [ "kitty" ]; + hotkey-overlay.title = "Open a Terminal: kitty"; + }; + "Mod+Space" = { + action.spawn = [ + "sh" + "-c" + "noctalia-shell ipc call launcher toggle" + ]; + hotkey-overlay.title = "Run an Application: Noctalia app launcher"; + }; + "Super+Alt+L" = { + action.spawn = [ "swaylock" ]; + hotkey-overlay.title = "Lock the Screen: swaylock"; + }; + + "Super+Alt+S" = { + action.spawn = [ + "sh" + "-c" + "pkill orca || exec orca" + ]; + allow-when-locked = true; + hotkey-overlay.title = "Orca screen reader"; + }; + + "XF86AudioRaiseVolume" = { + action.spawn = [ + "wpctl" + "set-volume" + "@DEFAULT_AUDIO_SINK@" + "0.05+" + ]; + allow-when-locked = true; + }; + "XF86AudioLowerVolume" = { + action.spawn = [ + "wpctl" + "set-volume" + "@DEFAULT_AUDIO_SINK@" + "0.05-" + ]; + allow-when-locked = true; + }; + "Shift+XF86AudioRaiseVolume" = { + action.spawn = [ + "wpctl" + "set-volume" + "@DEFAULT_AUDIO_SINK@" + "0.01+" + ]; + allow-when-locked = true; + }; + "Shift+XF86AudioLowerVolume" = { + action.spawn = [ + "wpctl" + "set-volume" + "@DEFAULT_AUDIO_SINK@" + "0.01-" + ]; + allow-when-locked = true; + }; + "XF86AudioMute" = { + action.spawn = [ + "wpctl" + "set-mute" + "@DEFAULT_AUDIO_SINK@" + "toggle" + ]; + allow-when-locked = true; + }; + "XF86AudioMicMute" = { + action.spawn = [ + "wpctl" + "set-mute" + "@DEFAULT_AUDIO_SOURCE@" + "toggle" + ]; + allow-when-locked = true; + }; + + "XF86MonBrightnessUp" = { + action.spawn = [ + "/home/sckova/.config/niri/scripts/brightness.sh" + "1" + ]; + allow-when-locked = true; + }; + "XF86MonBrightnessDown" = { + action.spawn = [ + "/home/sckova/.config/niri/scripts/brightness.sh" + "-1" + ]; + allow-when-locked = true; + }; + + "Mod+O" = { + action.toggle-overview = { }; + repeat = false; + }; + + "Mod+Q" = { + action.close-window = { }; + repeat = false; + }; + + "Mod+Left".action.focus-column-left = { }; + "Mod+Down".action.focus-window-down = { }; + "Mod+Up".action.focus-window-up = { }; + "Mod+Right".action.focus-column-right = { }; + "Mod+H".action.focus-column-left = { }; + "Mod+J".action.focus-window-down = { }; + "Mod+K".action.focus-window-up = { }; + "Mod+L".action.focus-column-right = { }; + + "Mod+Ctrl+Left".action.move-column-left = { }; + "Mod+Ctrl+Down".action.move-window-down = { }; + "Mod+Ctrl+Up".action.move-window-up = { }; + "Mod+Ctrl+Right".action.move-column-right = { }; + "Mod+Ctrl+H".action.move-column-left = { }; + "Mod+Ctrl+J".action.move-window-down = { }; + "Mod+Ctrl+K".action.move-window-up = { }; + "Mod+Ctrl+L".action.move-column-right = { }; + + "Mod+Home".action.focus-column-first = { }; + "Mod+End".action.focus-column-last = { }; + "Mod+Ctrl+Home".action.move-column-to-first = { }; + "Mod+Ctrl+End".action.move-column-to-last = { }; + + "Mod+Shift+Left".action.focus-monitor-left = { }; + "Mod+Shift+Down".action.focus-monitor-down = { }; + "Mod+Shift+Up".action.focus-monitor-up = { }; + "Mod+Shift+Right".action.focus-monitor-right = { }; + "Mod+Shift+H".action.focus-monitor-left = { }; + "Mod+Shift+J".action.focus-monitor-down = { }; + "Mod+Shift+K".action.focus-monitor-up = { }; + "Mod+Shift+L".action.focus-monitor-right = { }; + + "Mod+Shift+Ctrl+Left".action.move-column-to-monitor-left = { }; + "Mod+Shift+Ctrl+Down".action.move-column-to-monitor-down = { }; + "Mod+Shift+Ctrl+Up".action.move-column-to-monitor-up = { }; + "Mod+Shift+Ctrl+Right".action.move-column-to-monitor-right = { }; + "Mod+Shift+Ctrl+H".action.move-column-to-monitor-left = { }; + "Mod+Shift+Ctrl+J".action.move-column-to-monitor-down = { }; + "Mod+Shift+Ctrl+K".action.move-column-to-monitor-up = { }; + "Mod+Shift+Ctrl+L".action.move-column-to-monitor-right = { }; + + "Mod+Page_Down".action.focus-workspace-down = { }; + "Mod+Page_Up".action.focus-workspace-up = { }; + "Mod+U".action.focus-workspace-down = { }; + "Mod+I".action.focus-workspace-up = { }; + "Mod+Ctrl+Page_Down".action.move-column-to-workspace-down = { }; + "Mod+Ctrl+Page_Up".action.move-column-to-workspace-up = { }; + "Mod+Ctrl+U".action.move-column-to-workspace-down = { }; + "Mod+Ctrl+I".action.move-column-to-workspace-up = { }; + + "Mod+Shift+Page_Down".action.move-workspace-down = { }; + "Mod+Shift+Page_Up".action.move-workspace-up = { }; + "Mod+Shift+U".action.move-workspace-down = { }; + "Mod+Shift+I".action.move-workspace-up = { }; + + "Mod+WheelScrollDown" = { + action.focus-workspace-down = { }; + cooldown-ms = 150; + }; + "Mod+WheelScrollUp" = { + action.focus-workspace-up = { }; + cooldown-ms = 150; + }; + "Mod+Ctrl+WheelScrollDown" = { + action.move-column-to-workspace-down = { }; + cooldown-ms = 150; + }; + "Mod+Ctrl+WheelScrollUp" = { + action.move-column-to-workspace-up = { }; + cooldown-ms = 150; + }; + + "Mod+WheelScrollRight".action.focus-column-right = { }; + "Mod+WheelScrollLeft".action.focus-column-left = { }; + "Mod+Ctrl+WheelScrollRight".action.move-column-right = { }; + "Mod+Ctrl+WheelScrollLeft".action.move-column-left = { }; + + "Mod+Shift+WheelScrollDown".action.focus-column-right = { }; + "Mod+Shift+WheelScrollUp".action.focus-column-left = { }; + "Mod+Ctrl+Shift+WheelScrollDown".action.move-column-right = { }; + "Mod+Ctrl+Shift+WheelScrollUp".action.move-column-left = { }; + + "Mod+1".action.focus-workspace = 1; + "Mod+2".action.focus-workspace = 2; + "Mod+3".action.focus-workspace = 3; + "Mod+4".action.focus-workspace = 4; + "Mod+5".action.focus-workspace = 5; + "Mod+6".action.focus-workspace = 6; + "Mod+7".action.focus-workspace = 7; + "Mod+8".action.focus-workspace = 8; + "Mod+9".action.focus-workspace = 9; + "Mod+Ctrl+1".action.move-column-to-workspace = 1; + "Mod+Ctrl+2".action.move-column-to-workspace = 2; + "Mod+Ctrl+3".action.move-column-to-workspace = 3; + "Mod+Ctrl+4".action.move-column-to-workspace = 4; + "Mod+Ctrl+5".action.move-column-to-workspace = 5; + "Mod+Ctrl+6".action.move-column-to-workspace = 6; + "Mod+Ctrl+7".action.move-column-to-workspace = 7; + "Mod+Ctrl+8".action.move-column-to-workspace = 8; + "Mod+Ctrl+9".action.move-column-to-workspace = 9; + + "Mod+BracketLeft".action.consume-or-expel-window-left = { }; + "Mod+BracketRight".action.consume-or-expel-window-right = { }; + + "Mod+Comma".action.consume-window-into-column = { }; + "Mod+Period".action.expel-window-from-column = { }; + + "Mod+R".action.switch-preset-column-width = { }; + "Mod+Shift+R".action.switch-preset-window-height = { }; + "Mod+Ctrl+R".action.reset-window-height = { }; + "Mod+F".action.maximize-column = { }; + "Mod+Shift+F".action.fullscreen-window = { }; + + "Mod+Ctrl+F".action.expand-column-to-available-width = { }; + + "Mod+C".action.center-column = { }; + + "Mod+Ctrl+C".action.center-visible-columns = { }; + + "Mod+Minus".action.set-column-width = "-10%"; + "Mod+Equal".action.set-column-width = "+10%"; + + "Mod+Shift+Minus".action.set-window-height = "-10%"; + "Mod+Shift+Equal".action.set-window-height = "+10%"; + + "Mod+V".action.toggle-window-floating = { }; + "Mod+Shift+V".action.switch-focus-between-floating-and-tiling = { }; + + "Mod+W".action.toggle-column-tabbed-display = { }; + + "Print".action.screenshot = { }; + "Ctrl+Print".action.screenshot-screen = { }; + "Alt+Print".action.screenshot-window = { }; + + "Mod+Escape" = { + action.toggle-keyboard-shortcuts-inhibit = { }; + allow-inhibiting = false; + }; + + "Mod+Shift+E".action.quit = { }; + "Ctrl+Alt+Delete".action.quit = { }; + + "Mod+Shift+P".action.power-off-monitors = { }; + }; + }; + } diff --git a/home/tiling/niri/config/scripts/brightness.sh b/home/tiling/niri/scripts/brightness.sh similarity index 100% rename from home/tiling/niri/config/scripts/brightness.sh rename to home/tiling/niri/scripts/brightness.sh diff --git a/system/all.nix b/system/all.nix index 9493c4c..e01fc59 100755 --- a/system/all.nix +++ b/system/all.nix @@ -182,7 +182,7 @@ documentation.man = { enable = true; - generateCaches = true; + generateCaches = false; }; # This value determines the NixOS release from which the default From 930b13700ac8b899479ecabda7996f2278e6e531 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Sat, 13 Dec 2025 21:39:18 -0500 Subject: [PATCH 113/282] rebase flake back to 25.11/rolling --- flake.lock | 61 ++++++++++++++++++++++++------------------------------ flake.nix | 20 +++++++++--------- 2 files changed, 37 insertions(+), 44 deletions(-) diff --git a/flake.lock b/flake.lock index a318a28..23776c9 100644 --- a/flake.lock +++ b/flake.lock @@ -8,17 +8,16 @@ ] }, "locked": { - "lastModified": 1763596466, - "narHash": "sha256-CTSUc4Fk1lHMQZMJ5LczPDYGLq5UjXDFKLSpuA3mKmI=", + "lastModified": 1765528634, + "narHash": "sha256-uIavvJkDwTZD1QY/oSkDtPN9xwkLwQayoZ5xOni4SBY=", "owner": "nix-community", "repo": "nixos-apple-silicon", - "rev": "73b7103c4e3996e3e20868d510b0e8797f279323", + "rev": "fc1440d6e6adb24d9b2650670744bae35654c867", "type": "github" }, "original": { "owner": "nix-community", "repo": "nixos-apple-silicon", - "rev": "73b7103c4e3996e3e20868d510b0e8797f279323", "type": "github" } }, @@ -29,17 +28,16 @@ ] }, "locked": { - "lastModified": 1764325801, - "narHash": "sha256-LQ7tsrXs1wuB6KBwUctL3JlUsG/FWI2pCI6NkoO52dk=", + "lastModified": 1765485905, + "narHash": "sha256-fk6zFzzcwz6su99K7UTxS2497+z/Cdk3FzNsacsmZKA=", "owner": "catppuccin", "repo": "nix", - "rev": "a696fed6b9b6aa89ef495842cdca3fc2a7cef0de", + "rev": "b49c675acd80931fc8b54290920a90189b461dcf", "type": "github" }, "original": { "owner": "catppuccin", "repo": "nix", - "rev": "a696fed6b9b6aa89ef495842cdca3fc2a7cef0de", "type": "github" } }, @@ -55,7 +53,6 @@ "original": { "owner": "abhinandh-s", "repo": "catppuccin-nix", - "rev": "b482f6e3ee1ae61c83e52f50653e54bf72900b13", "type": "github" } }, @@ -82,11 +79,11 @@ ] }, "locked": { - "lastModified": 1763759067, - "narHash": "sha256-LlLt2Jo/gMNYAwOgdRQBrsRoOz7BPRkzvNaI/fzXi2Q=", + "lastModified": 1765495779, + "narHash": "sha256-MhA7wmo/7uogLxiewwRRmIax70g6q1U/YemqTGoFHlM=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "2cccadc7357c0ba201788ae99c4dfa90728ef5e0", + "rev": "5635c32d666a59ec9a55cab87e898889869f7b71", "type": "github" }, "original": { @@ -141,17 +138,17 @@ ] }, "locked": { - "lastModified": 1764776959, - "narHash": "sha256-d+5CGloq7Lo1u2SkzhF8oiOdUc6Z5emh22nTXUB9CFA=", + "lastModified": 1765605144, + "narHash": "sha256-RM2xs+1HdHxesjOelxoA3eSvXShC8pmBvtyTke4Ango=", "owner": "nix-community", "repo": "home-manager", - "rev": "e1680d594a9281651cbf7d126941a8c8e2396183", + "rev": "90b62096f099b73043a747348c11dbfcfbdea949", "type": "github" }, "original": { "owner": "nix-community", + "ref": "release-25.11", "repo": "home-manager", - "rev": "e1680d594a9281651cbf7d126941a8c8e2396183", "type": "github" } }, @@ -205,7 +202,6 @@ "original": { "owner": "sodiboo", "repo": "niri-flake", - "rev": "46e723aa46565b67910187b4b7ad48b615d7f576", "type": "github" } }, @@ -244,17 +240,17 @@ }, "nixpkgs": { "locked": { - "lastModified": 1764522689, - "narHash": "sha256-SqUuBFjhl/kpDiVaKLQBoD8TLD+/cTUzzgVFoaHrkqY=", + "lastModified": 1765311797, + "narHash": "sha256-mSD5Ob7a+T2RNjvPvOA1dkJHGVrNVl8ZOrAwBjKBDQo=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "8bb5646e0bed5dbd3ab08c7a7cc15b75ab4e1d0f", + "rev": "09eb77e94fa25202af8f3e81ddc7353d9970ac1b", "type": "github" }, "original": { "owner": "NixOS", + "ref": "nixos-25.11", "repo": "nixpkgs", - "rev": "8bb5646e0bed5dbd3ab08c7a7cc15b75ab4e1d0f", "type": "github" } }, @@ -284,17 +280,17 @@ "systems": "systems_2" }, "locked": { - "lastModified": 1764755396, - "narHash": "sha256-f6UrlGdwg+TIxxyDjeq1M7WGNZH/vpbOm0yzPgkMy9c=", + "lastModified": 1765647805, + "narHash": "sha256-CdaiOfpBiS4kw/DR0Ut+02fpFnjM8hNZMZ53a1pavak=", "owner": "nix-community", "repo": "nixvim", - "rev": "64d9e2616f4ee2acee380d61ccf1f3d610e7e969", + "rev": "f0b0cc7cae2cf5d76608c9164ab8824a2387e146", "type": "github" }, "original": { "owner": "nix-community", + "ref": "nixos-25.11", "repo": "nixvim", - "rev": "64d9e2616f4ee2acee380d61ccf1f3d610e7e969", "type": "github" } }, @@ -305,17 +301,16 @@ ] }, "locked": { - "lastModified": 1765651326, - "narHash": "sha256-HmAbejLwUPCZrdU81KP4+WOkWrgX1n74pi1TCVSOleQ=", + "lastModified": 1765675278, + "narHash": "sha256-GSa/jaWld+WKxt39DDBPoX1j+kCdNmFF9stTWbeVhp8=", "owner": "noctalia-dev", "repo": "noctalia-shell", - "rev": "6b2661e1d4d0e223d631be87931029929431de6f", + "rev": "7d795256de6dbe7b4044161af2b6002421bdb188", "type": "github" }, "original": { "owner": "noctalia-dev", "repo": "noctalia-shell", - "rev": "6b2661e1d4d0e223d631be87931029929431de6f", "type": "github" } }, @@ -327,17 +322,16 @@ ] }, "locked": { - "lastModified": 1764795584, - "narHash": "sha256-Sq6SWFDCftLrnZ8GXO39b2HxH2NE8jtDeU2ud37F9qs=", + "lastModified": 1765679538, + "narHash": "sha256-y6PplijrOq2lI7QjHjcBbi/NT2R1PrpNnjkMgB/83r4=", "owner": "nix-community", "repo": "NUR", - "rev": "156e6d0e026c1a7687a74c908ee0ccf0df796f72", + "rev": "a23427eb9342c578becbe0179e2654e622c41cdb", "type": "github" }, "original": { "owner": "nix-community", "repo": "NUR", - "rev": "156e6d0e026c1a7687a74c908ee0ccf0df796f72", "type": "github" } }, @@ -384,7 +378,6 @@ "original": { "owner": "nix-community", "repo": "plasma-manager", - "rev": "b24ed4b272256dfc1cc2291f89a9821d5f9e14b4", "type": "github" } }, diff --git a/flake.nix b/flake.nix index 6d9814c..3f2a422 100644 --- a/flake.nix +++ b/flake.nix @@ -2,50 +2,50 @@ description = "My NixOS Configuration"; inputs = { - nixpkgs.url = "github:NixOS/nixpkgs/8bb5646e0bed5dbd3ab08c7a7cc15b75ab4e1d0f"; + nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.11"; catppuccin = { - url = "github:catppuccin/nix/a696fed6b9b6aa89ef495842cdca3fc2a7cef0de"; + url = "github:catppuccin/nix"; inputs.nixpkgs.follows = "nixpkgs"; }; catppuccin-palette = { - url = "github:abhinandh-s/catppuccin-nix/b482f6e3ee1ae61c83e52f50653e54bf72900b13"; + url = "github:abhinandh-s/catppuccin-nix"; }; home-manager = { - url = "github:nix-community/home-manager/e1680d594a9281651cbf7d126941a8c8e2396183"; + url = "github:nix-community/home-manager/release-25.11"; inputs.nixpkgs.follows = "nixpkgs"; }; plasma-manager = { - url = "github:nix-community/plasma-manager/b24ed4b272256dfc1cc2291f89a9821d5f9e14b4"; + url = "github:nix-community/plasma-manager"; inputs.nixpkgs.follows = "nixpkgs"; inputs.home-manager.follows = "home-manager"; }; niri = { - url = "github:sodiboo/niri-flake/46e723aa46565b67910187b4b7ad48b615d7f576"; + url = "github:sodiboo/niri-flake"; inputs.nixpkgs.follows = "nixpkgs"; }; noctalia = { - url = "github:noctalia-dev/noctalia-shell/6b2661e1d4d0e223d631be87931029929431de6f"; + url = "github:noctalia-dev/noctalia-shell"; inputs.nixpkgs.follows = "nixpkgs"; }; nur = { - url = "github:nix-community/NUR/156e6d0e026c1a7687a74c908ee0ccf0df796f72"; + url = "github:nix-community/NUR"; inputs.nixpkgs.follows = "nixpkgs"; }; nixvim = { - url = "github:nix-community/nixvim/64d9e2616f4ee2acee380d61ccf1f3d610e7e969"; + url = "github:nix-community/nixvim/nixos-25.11"; inputs.nixpkgs.follows = "nixpkgs"; }; apple-silicon = { - url = "github:nix-community/nixos-apple-silicon/73b7103c4e3996e3e20868d510b0e8797f279323"; + url = "github:nix-community/nixos-apple-silicon"; inputs.nixpkgs.follows = "nixpkgs"; }; }; From 4ca5cebbb6b0a23633c470cd508e184492873cb1 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Sat, 13 Dec 2025 22:49:47 -0500 Subject: [PATCH 114/282] fully remove flavor and accent-specific catppuccin configs --- home/all.nix | 237 +++++++++++++-------- home/hosts/alien.nix | 35 --- home/hosts/peach.nix | 52 +---- home/hosts/vm-aarch64.nix | 70 +----- home/terminal/btop/btop.conf | 2 +- home/terminal/btop/default.nix | 9 +- home/terminal/kitty/default.nix | 5 +- home/terminal/nvim/default.nix | 4 +- home/tiling/niri/default.nix | 12 +- home/tiling/noctalia/default.nix | 97 ++++++++- home/tiling/waybar/config/mocha.css | 26 --- home/tiling/waybar/config/style.css | 2 +- home/tiling/waybar/default.nix | 16 +- packages/noctalia-shell-custom/package.nix | 69 ------ packages/overlay.nix | 4 - 15 files changed, 276 insertions(+), 364 deletions(-) delete mode 100644 home/tiling/waybar/config/mocha.css delete mode 100644 packages/noctalia-shell-custom/package.nix diff --git a/home/all.nix b/home/all.nix index 92403b5..fc79368 100755 --- a/home/all.nix +++ b/home/all.nix @@ -1,97 +1,156 @@ -{ config, pkgs, ... }: +{ + config, + pkgs, + lib, + ... +}: { - home.packages = with pkgs; [ - # cli utilities - tmux - fastfetch - btop - killall - wget - ripgrep - ncdu - fzf - wl-clipboard - rclone - waypipe - spotdl - browsh - mosh - - # development & tooling - gh - deno - prettier - prettierd - nixfmt-rfc-style - jdk21_headless - - # kde and kde theming - kde-rounded-corners - kdePackages.partitionmanager - colloid-icon-theme - - # gui applications - vesktop - input-leap - libreoffice-qt-fresh - # helium-browser - bitwarden-desktop - qbittorrent - - # gui applications ( games ) - openmw - prismlauncher - - # gui applications ( multimedia ) - audacity - strawberry - musescore - mpv - gimp - calibre - spotify-player - - # browsers - # (chromium.override { - # enableWideVine = true; - # }) - ]; - - services = { - spotifyd = { - enable = true; - settings = { - global = { - device_type = "computer"; - dbus_type = "session"; - disable_discovery = true; - use_mpris = true; - bitrate = 320; - initial_volume = 100; - volume_normalisation = true; - normalisation_pregain = -10; - }; + options = { + catppuccinUpper = { + accent = lib.mkOption { + type = lib.types.str; + readOnly = true; + default = + builtins.substring 0 1 (lib.toUpper config.catppuccin.accent) + + builtins.substring 1 (-1) config.catppuccin.accent; + }; + flavor = lib.mkOption { + type = lib.types.str; + readOnly = true; + default = + builtins.substring 0 1 (lib.toUpper config.catppuccin.flavor) + + builtins.substring 1 (-1) config.catppuccin.flavor; }; }; }; - catppuccin = { - enable = false; - cursors.enable = false; - cache.enable = true; + config = { + home.packages = + (with pkgs; [ + # cli utilities + tmux + fastfetch + btop + killall + wget + ripgrep + ncdu + fzf + wl-clipboard + rclone + waypipe + spotdl + browsh + mosh + + # development & tooling + gh + deno + prettier + prettierd + nixfmt-rfc-style + jdk21_headless + + # kde and kde theming + kde-rounded-corners + kdePackages.partitionmanager + colloid-icon-theme + + # gui applications + vesktop + input-leap + libreoffice-qt-fresh + # helium-browser + bitwarden-desktop + qbittorrent + + # gui applications ( games ) + openmw + prismlauncher + + # gui applications ( multimedia ) + audacity + strawberry + musescore + mpv + gimp + calibre + spotify-player + + # overrides + # (chromium.override { + # enableWideVine = true; + # }) + (catppuccin-kde.override { + flavour = [ + "latte" + config.catppuccin.flavor + ]; + accents = [ + config.catppuccin.accent + ]; + }) + ]) + ++ [ + pkgs.catppuccin-cursors.latteDark + pkgs.catppuccin-cursors.latteLight + pkgs.catppuccin-cursors."latte${config.catppuccinUpper.accent}" + pkgs.catppuccin-cursors."${config.catppuccin.flavor}Dark" + pkgs.catppuccin-cursors."${config.catppuccin.flavor}Light" + pkgs.catppuccin-cursors."${config.catppuccin.flavor}${config.catppuccinUpper.accent}" + ]; + + services = { + spotifyd = { + enable = true; + settings = { + global = { + device_type = "computer"; + dbus_type = "session"; + disable_discovery = true; + use_mpris = true; + bitrate = 320; + initial_volume = 100; + volume_normalisation = true; + normalisation_pregain = -10; + }; + }; + }; + }; + + catppuccin = { + enable = false; + cursors.enable = false; + cache.enable = true; + }; + + programs.plasma = { + workspace = { + colorScheme = "Catppuccin${config.catppuccinUpper.flavor}${config.catppuccinUpper.accent}"; + cursor.theme = "catppuccin-${config.catppuccin.flavor}-${config.catppuccin.accent}-cursors"; + splashScreen.theme = "Catpppuccin-${config.catppuccinUpper.flavor}-${config.catppuccinUpper.accent}"; + }; + + configFile = { + kdeglobals.KDE = { + DefaultDarkLookAndFeel = "Catpppuccin-${config.catppuccinUpper.flavor}-${config.catppuccinUpper.accent}"; + DefaultLightLookAndFeel = "Catpppuccin-Latte-${config.catppuccinUpper.accent}"; + }; + }; + }; + + # This value determines the Home Manager release that your + # configuration is compatible with. This helps avoid breakage + # when a new Home Manager release introduces backwards + # incompatible changes. + # + # You can update Home Manager without changing this value. See + # the Home Manager release notes for a list of state version + # changes in each release. + home.stateVersion = "25.05"; + + # Let Home Manager install and manage itself. + programs.home-manager.enable = true; }; - - # This value determines the Home Manager release that your - # configuration is compatible with. This helps avoid breakage - # when a new Home Manager release introduces backwards - # incompatible changes. - # - # You can update Home Manager without changing this value. See - # the Home Manager release notes for a list of state version - # changes in each release. - home.stateVersion = "25.05"; - - # Let Home Manager install and manage itself. - programs.home-manager.enable = true; } diff --git a/home/hosts/alien.nix b/home/hosts/alien.nix index cb971ce..39b3b9c 100644 --- a/home/hosts/alien.nix +++ b/home/hosts/alien.nix @@ -8,23 +8,6 @@ home.packages = with pkgs; [ - # catppuccin-cursors.latteDark - # catppuccin-cursors.latteLight - # catppuccin-cursors.latteBlue - # catppuccin-cursors.mochaDark - # catppuccin-cursors.mochaLight - catppuccin-cursors.mochaBlue - - (catppuccin-kde.override { - flavour = [ - "latte" - "mocha" - ]; - accents = [ - "blue" - ]; - }) - # steam gtk theming adwsteamgtk @@ -33,25 +16,7 @@ _2ship2harkinian ]; - gtk.cursorTheme = { - name = "catppuccin-mocha-blue-cursors"; - package = pkgs.catppuccin-cursors.mochaBlue; - size = 24; - }; - programs.plasma = { - workspace = { - colorScheme = "CatppuccinMochaBlue"; - cursor.theme = "catppuccin-mocha-blue-cursors"; - splashScreen.theme = "Catpppuccin-Mocha-Blue"; - }; - - configFile = { - kdeglobals.KDE = { - DefaultDarkLookAndFeel = "Catppuccin-Mocha-Blue"; - DefaultLightLookAndFeel = "Catppuccin-Latte-Blue"; - }; - }; panels = [ # Alternative global menu to fit the modified taskbar { diff --git a/home/hosts/peach.nix b/home/hosts/peach.nix index 61b213a..6aa8e81 100644 --- a/home/hosts/peach.nix +++ b/home/hosts/peach.nix @@ -3,7 +3,7 @@ { catppuccin = { accent = "peach"; - flavor = "mocha"; + flavor = "macchiato"; }; home.packages = with pkgs; [ @@ -13,34 +13,10 @@ asahi-btsync asahi-wifisync - # catppuccin-cursors.latteDark - # catppuccin-cursors.latteLight - # catppuccin-cursors.lattePeach - # catppuccin-cursors.mochaDark - # catppuccin-cursors.mochaLight - catppuccin-cursors.mochaPeach - - (catppuccin-kde.override { - flavour = [ - "latte" - "mocha" - ]; - accents = [ - "peach" - ]; - }) - moonlight-qt ]; - gtk.cursorTheme = { - name = "catppuccin-mocha-peach-cursors"; - package = pkgs.catppuccin-cursors.mochaPeach; - size = 24; - }; - programs.plasma = { - input.touchpads = [ { name = "Apple MTP multi-touch"; @@ -54,32 +30,8 @@ } ]; - workspace = { - colorScheme = "CatppuccinMochaPeach"; - cursor.theme = "catppuccin-mocha-peach-cursors"; - splashScreen.theme = "Catpppuccin-Mocha-Peach"; - }; - - configFile = { - kdeglobals.KDE = { - DefaultDarkLookAndFeel = "Catppuccin-Mocha-Peach"; - DefaultLightLookAndFeel = "Catppuccin-Latte-Peach"; - }; - }; - shortcuts = { - # # my volume down key broke as hell boy - # kmix.decrease_volume = [ - # "Volume Mute" - # "Volume Down" - # ]; - # kmix.decrease_volume_small = [ - # "Shift+Volume Mute" - # "Shift+Volume Down" - # ]; - # kmix.increase_volume = "Volume Up"; - # kmix.increase_volume_small = "Shift+Volume Up"; - # kmix.mute = "Sleep"; + # this is really annoying on asahi laptops org_kde_powerdevil.Sleep = [ ]; }; diff --git a/home/hosts/vm-aarch64.nix b/home/hosts/vm-aarch64.nix index 078950a..929e11c 100644 --- a/home/hosts/vm-aarch64.nix +++ b/home/hosts/vm-aarch64.nix @@ -6,77 +6,9 @@ flavor = "mocha"; }; - home.packages = with pkgs; [ - - # catppuccin-cursors.latteDark - # catppuccin-cursors.latteLight - # catppuccin-cursors.latteGreen - # catppuccin-cursors.mochaDark - # catppuccin-cursors.mochaLight - catppuccin-cursors.mochaGreen - - (catppuccin-kde.override { - flavour = [ - "latte" - "mocha" - ]; - accents = [ - "green" - ]; - }) - - ]; - - gtk.cursorTheme = { - name = "catppuccin-mocha-green-cursors"; - package = pkgs.catppuccin-cursors.mochaGreen; - size = 24; - }; + home.packages = with pkgs; [ ]; programs.plasma = { - - input.touchpads = [ - { - name = "Apple MTP multi-touch"; - vendorId = "05ac"; - productId = "0352"; - disableWhileTyping = false; - enable = true; - tapToClick = false; - naturalScroll = true; - accelerationProfile = "default"; - } - ]; - - workspace = { - colorScheme = "CatppuccinMochaGreen"; - cursor.theme = "catppuccin-mocha-green-cursors"; - splashScreen.theme = "Catpppuccin-Mocha-Green"; - }; - - configFile = { - kdeglobals.KDE = { - DefaultDarkLookAndFeel = "Catppuccin-Mocha-Green"; - DefaultLightLookAndFeel = "Catppuccin-Latte-Green"; - }; - }; - - shortcuts = { - # # my volume down key broke as hell boy - # kmix.decrease_volume = [ - # "Volume Mute" - # "Volume Down" - # ]; - # kmix.decrease_volume_small = [ - # "Shift+Volume Mute" - # "Shift+Volume Down" - # ]; - # kmix.increase_volume = "Volume Up"; - # kmix.increase_volume_small = "Shift+Volume Up"; - # kmix.mute = "Sleep"; - org_kde_powerdevil.Sleep = [ ]; - }; - panels = [ # Application name, Global menu and Song information and playback controls at the top { diff --git a/home/terminal/btop/btop.conf b/home/terminal/btop/btop.conf index 690f68e..bcc77bc 100644 --- a/home/terminal/btop/btop.conf +++ b/home/terminal/btop/btop.conf @@ -2,7 +2,7 @@ #* Name of a btop++/bpytop/bashtop formatted ".theme" file, "Default" and "TTY" for builtin themes. #* Themes should be placed in "../share/btop/themes" relative to binary or "$HOME/.config/btop/themes" -color_theme = "catppuccin_mocha.theme" +color_theme = "catppuccin_blankFlavor.theme" #* If the theme set background should be shown, set to False if you want terminal background transparency. theme_background = True diff --git a/home/terminal/btop/default.nix b/home/terminal/btop/default.nix index edd50f9..04e58ee 100644 --- a/home/terminal/btop/default.nix +++ b/home/terminal/btop/default.nix @@ -10,11 +10,10 @@ let mergedConfig = pkgs.runCommand "mergedConfig" { } '' mkdir -p $out/themes - cp ${./btop.conf} $out/btop.conf - cp ${catppuccin-btop}/themes/catppuccin_latte.theme $out/themes/ - cp ${catppuccin-btop}/themes/catppuccin_frappe.theme $out/themes/ - cp ${catppuccin-btop}/themes/catppuccin_macchiato.theme $out/themes/ - cp ${catppuccin-btop}/themes/catppuccin_mocha.theme $out/themes/ + ${pkgs.gnused}/bin/sed 's/blankFlavor/${config.catppuccin.flavor}/g' \ + ${./btop.conf} > $out/btop.conf + cp ${catppuccin-btop}/themes/catppuccin_latte.theme $out/themes/ + cp ${catppuccin-btop}/themes/catppuccin_${config.catppuccin.flavor}.theme $out/themes/ ''; in { diff --git a/home/terminal/kitty/default.nix b/home/terminal/kitty/default.nix index b06c2df..eb41d78 100644 --- a/home/terminal/kitty/default.nix +++ b/home/terminal/kitty/default.nix @@ -1,8 +1,10 @@ +{ config, lib, ... }: + { programs.kitty = { enable = true; enableGitIntegration = true; - themeFile = "Catppuccin-Mocha"; + themeFile = "Catppuccin-${config.catppuccinUpper.flavor}"; font = { name = "NotoSansM Nerd Font Mono"; size = 10; @@ -10,7 +12,6 @@ shellIntegration = { enableFishIntegration = true; }; - # extraConfig = "\nwheel_scroll_multiplier 5.0\nconfirm_os_window_close 0"; settings = { scrollback_lines = 10000; enable_audio_bell = false; diff --git a/home/terminal/nvim/default.nix b/home/terminal/nvim/default.nix index 6afb56b..f2fa5ea 100644 --- a/home/terminal/nvim/default.nix +++ b/home/terminal/nvim/default.nix @@ -1,4 +1,4 @@ -{ pkgs, ... }: +{ pkgs, config, ... }: { home.sessionVariables = { @@ -28,7 +28,7 @@ colorschemes.catppuccin = { enable = true; settings = { - flavour = "mocha"; + flavour = config.catppuccin.flavor; }; }; keymaps = [ diff --git a/home/tiling/niri/default.nix b/home/tiling/niri/default.nix index 7dd7abd..6e735c8 100644 --- a/home/tiling/niri/default.nix +++ b/home/tiling/niri/default.nix @@ -63,7 +63,11 @@ in package = pkgs.colloid-icon-theme; }; - # cursor theme handled in home/hosts/host.nix and in config.kdl + cursorTheme = { + name = "catppuccin-${config.catppuccin.flavor}-${config.catppuccin.accent}-cursors"; + package = pkgs.catppuccin-cursors."${config.catppuccin.flavor}${config.catppuccinUpper.accent}"; + size = 24; + }; gtk3.extraConfig = { gtk-application-prefer-dark-theme = true; @@ -103,7 +107,6 @@ in # }; }; - # Cursor / icon env vars for GTK and Qt apps xsession = { enable = true; # only needed for session variable injection windowManager.command = "niri"; # launches niri directly @@ -114,6 +117,7 @@ in screenshot-path = "~/Pictures/Screenshots/Screenshot from %Y-%m-%d %H-%M-%S.png"; hotkey-overlay.skip-at-startup = true; prefer-no-csd = true; + gestures.hot-corners.enable = false; spawn-at-startup = [ { command = [ @@ -150,6 +154,10 @@ in drag = false; }; }; + environment = { + QT_QPA_PLATFORM = "wayland"; + DISPLAY = null; + }; outputs = { "eDP-1" = { scale = 1.75; diff --git a/home/tiling/noctalia/default.nix b/home/tiling/noctalia/default.nix index c4de022..bde5fd4 100644 --- a/home/tiling/noctalia/default.nix +++ b/home/tiling/noctalia/default.nix @@ -6,10 +6,81 @@ }: let - customPackage = pkgs.noctalia-shell-custom.override { - catppuccinFlavor = config.catppuccin.flavor; - catppuccinAccent = config.catppuccin.accent; + # Get the actual color palettes + darkPalette = pkgs.catppuccin.${config.catppuccin.flavor}; + lightPalette = pkgs.catppuccin.latte; + + # Create theme from palette + mkTheme = palette: accent: { + mPrimary = palette.${accent}; + mOnPrimary = palette.crust; + mSecondary = palette.subtext0; + mOnSecondary = palette.crust; + mTertiary = palette.teal; + mOnTertiary = palette.crust; + mError = palette.red; + mOnError = palette.crust; + mSurface = palette.base; + mOnSurface = palette.text; + mSurfaceVariant = palette.surface0; + mOnSurfaceVariant = palette.lavender; + mOutline = palette.surface2; + mShadow = palette.crust; + mHover = palette.teal; + mOnHover = palette.crust; }; + + # Build the complete color scheme + customScheme = { + dark = mkTheme darkPalette config.catppuccin.accent; + light = mkTheme lightPalette config.catppuccin.accent; + }; + + # Convert to JSON + schemeJson = builtins.toJSON customScheme; + + # Write to file - escape for shell + schemeJsonEscaped = lib.escapeShellArg schemeJson; + + customPackage = pkgs.noctalia-shell.overrideAttrs (oldAttrs: { + pname = "noctalia-shell-custom"; + nativeBuildInputs = (oldAttrs.nativeBuildInputs or [ ]) ++ [ pkgs.jq ]; + + postPatch = (oldAttrs.postPatch or "") + '' + echo "Patching noctalia-shell with Cat-Custom theme..." + echo " Dark: ${config.catppuccin.flavor} / Light: latte" + echo " Accent: ${config.catppuccin.accent}" + + if [ -d Assets/ColorScheme/Catppuccin ]; then + mkdir -p Assets/ColorScheme/Cat-Custom + + # Write the JSON directly + cat > Assets/ColorScheme/Cat-Custom/Cat-Custom.json << 'COLORSCHEME_EOF' + ${schemeJson} + COLORSCHEME_EOF + + echo "Created Cat-Custom color scheme:" + ${pkgs.jq}/bin/jq -C '.' Assets/ColorScheme/Cat-Custom/Cat-Custom.json || true + + # Add translation entries + for lang in en fr de es pt zh-CN; do + if [ -f "Assets/Translations/$lang.json" ]; then + ${pkgs.jq}/bin/jq \ + '.["color-scheme"].predefined.schemes["Cat-Custom"] = "Cat-Custom"' \ + "Assets/Translations/$lang.json" > "Assets/Translations/$lang.json.tmp" \ + && mv "Assets/Translations/$lang.json.tmp" "Assets/Translations/$lang.json" + fi + done + else + echo "ERROR: ColorScheme directory not found" + exit 1 + fi + ''; + + meta = oldAttrs.meta // { + description = "${oldAttrs.meta.description} (Cat-Custom: ${config.catppuccin.flavor}/${config.catppuccin.accent})"; + }; + }); in { programs.noctalia-shell = { @@ -56,17 +127,27 @@ in hideMode = "hidden"; id = "ActiveWindow"; maxWidth = 375; - scrollingMode = "hover"; + scrollingMode = "always"; showIcon = true; useFixedWidth = false; } - { - id = "MediaMini"; - } ]; center = [ ]; right = [ + { + hideMode = "hidden"; + hideWhenIdle = false; + id = "MediaMini"; + maxWidth = 350; + scrollingMode = "always"; + showAlbumArt = false; + showArtistFirst = true; + showProgressRing = true; + showVisualizer = false; + useFixedWidth = false; + visualizerType = "linear"; + } { id = "ScreenRecorder"; } @@ -389,7 +470,7 @@ in useWallpaperColors = false; predefinedScheme = "Cat-Custom"; darkMode = true; - schedulingMode = "on"; + schedulingMode = "off"; manualSunrise = "06:30"; manualSunset = "18:30"; matugenSchemeType = "scheme-fruit-salad"; diff --git a/home/tiling/waybar/config/mocha.css b/home/tiling/waybar/config/mocha.css deleted file mode 100644 index 0eb6a82..0000000 --- a/home/tiling/waybar/config/mocha.css +++ /dev/null @@ -1,26 +0,0 @@ -@define-color rosewater #f5e0dc; -@define-color flamingo #f2cdcd; -@define-color pink #f5c2e7; -@define-color mauve #cba6f7; -@define-color red #f38ba8; -@define-color maroon #eba0ac; -@define-color peach #fab387; -@define-color yellow #f9e2af; -@define-color green #a6e3a1; -@define-color teal #94e2d5; -@define-color sky #89dceb; -@define-color sapphire #74c7ec; -@define-color blue #89b4fa; -@define-color lavender #b4befe; -@define-color text #cdd6f4; -@define-color subtext1 #bac2de; -@define-color subtext0 #a6adc8; -@define-color overlay2 #9399b2; -@define-color overlay1 #7f849c; -@define-color overlay0 #6c7086; -@define-color surface2 #585b70; -@define-color surface1 #45475a; -@define-color surface0 #313244; -@define-color base #1e1e2e; -@define-color mantle #181825; -@define-color crust #11111b; diff --git a/home/tiling/waybar/config/style.css b/home/tiling/waybar/config/style.css index 7d9a78d..bca63ed 100644 --- a/home/tiling/waybar/config/style.css +++ b/home/tiling/waybar/config/style.css @@ -1,4 +1,4 @@ -@import "./mocha.css"; +@import "./colors.css"; * { border: none; border-radius: 0; diff --git a/home/tiling/waybar/default.nix b/home/tiling/waybar/default.nix index 51a5665..b9ea075 100644 --- a/home/tiling/waybar/default.nix +++ b/home/tiling/waybar/default.nix @@ -1,12 +1,26 @@ { config, pkgs, ... }: +let + catppuccin-waybar = pkgs.fetchFromGitHub { + owner = "catppuccin"; + repo = "waybar"; + rev = "ee8ed32b4f63e9c417249c109818dcc05a2e25da"; + sha256 = "sha256-za0y6hcN2rvN6Xjf31xLRe4PP0YyHu2i454ZPjr+lWA="; + }; + + mergedConfig = pkgs.runCommand "mergedConfig" { } '' + mkdir -p $out + cp -rv ${./config}/* $out/ + cp -v ${catppuccin-waybar}/themes/${config.catppuccin.flavor}.css $out/colors.css + ''; +in { programs.waybar = { enable = true; }; home.file.".config/waybar" = { - source = ./config; + source = mergedConfig; recursive = true; force = true; }; diff --git a/packages/noctalia-shell-custom/package.nix b/packages/noctalia-shell-custom/package.nix deleted file mode 100644 index 1eb1ba5..0000000 --- a/packages/noctalia-shell-custom/package.nix +++ /dev/null @@ -1,69 +0,0 @@ -{ - lib, - pkgs, - noctalia-shell, - catppuccinFlavor ? "mocha", - catppuccinAccent ? "mauve", -}: -let - - mkTheme = colors: { - mPrimary = colors.${catppuccinAccent}; - mOnPrimary = colors.crust; - mSecondary = colors.subtext0; - mOnSecondary = colors.crust; - mTertiary = colors.teal; - mOnTertiary = colors.crust; - mError = colors.red; - mOnError = colors.crust; - mSurface = colors.base; - mOnSurface = colors.text; - mSurfaceVariant = colors.surface0; - mOnSurfaceVariant = colors.lavender; - mOutline = colors.surface2; - mShadow = colors.crust; - mHover = colors.teal; - mOnHover = colors.crust; - }; - - customScheme = { - dark = mkTheme pkgs.catppuccin.${catppuccinFlavor}; - light = mkTheme pkgs.catppuccin.latte; - }; - - # Convert to JSON string for writing to file - customSchemeJson = builtins.toJSON customScheme; -in -noctalia-shell.overrideAttrs (oldAttrs: { - pname = "noctalia-shell-custom"; - nativeBuildInputs = (oldAttrs.nativeBuildInputs or [ ]) ++ [ pkgs.jq ]; - postPatch = (oldAttrs.postPatch or "") + '' - # Create the Cat-Custom color scheme - if [ -d Assets/ColorScheme/Catppuccin ]; then - # Create Cat-Custom directory - mkdir -p Assets/ColorScheme/Cat-Custom - - # Write the custom color scheme - echo '${customSchemeJson}' | ${pkgs.jq}/bin/jq '.' > Assets/ColorScheme/Cat-Custom/Cat-Custom.json - - echo "Created Cat-Custom color scheme with ${catppuccinAccent} accent" - echo " Dark theme: ${catppuccinFlavor}" - echo " Light theme: latte" - else - echo "Warning: ColorScheme directory not found at expected path" - fi - - # Add translations for Cat-Custom to all supported languages - for lang in en fr de es pt zh-CN; do - if [ -f "Assets/Translations/$lang.json" ]; then - ${pkgs.jq}/bin/jq '.["color-scheme"].predefined.schemes["Cat-Custom"] = "Cat-Custom"' \ - "Assets/Translations/$lang.json" > "Assets/Translations/$lang.json.tmp" - mv "Assets/Translations/$lang.json.tmp" "Assets/Translations/$lang.json" - echo "Added Cat-Custom translation to $lang.json" - fi - done - ''; - meta = oldAttrs.meta // { - description = oldAttrs.meta.description + " (with Cat-Custom Catppuccin theme)"; - }; -}) diff --git a/packages/overlay.nix b/packages/overlay.nix index ed31c11..71bf926 100644 --- a/packages/overlay.nix +++ b/packages/overlay.nix @@ -24,10 +24,6 @@ final: prev: { inherit helium-widevine; }; - noctalia-shell-custom = prev.callPackage (builtins.path { - path = ./noctalia-shell-custom/package.nix; - }) { }; - spotifyd = prev.callPackage (builtins.path { path = ./spotifyd/package.nix; }) { }; widevine-firefox = prev.callPackage (builtins.path { path = ./widevine-firefox/package.nix; }) { }; From a7a3eb68b959d2ad377946c497558116b89026c9 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Sat, 13 Dec 2025 23:56:38 -0500 Subject: [PATCH 115/282] limit amount of configurations --- system/all.nix | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/system/all.nix b/system/all.nix index e01fc59..537a1c1 100755 --- a/system/all.nix +++ b/system/all.nix @@ -21,6 +21,12 @@ "sckova" ]; + nix.gc = { + automatic = true; + dates = "weekly"; + options = "--delete-older-than 30d"; + }; + home-manager.useGlobalPkgs = true; home-manager.useUserPackages = true; home-manager.users.sckova = { @@ -60,7 +66,7 @@ timeout = 3; systemd-boot = { enable = true; - configurationLimit = null; + configurationLimit = 10; }; efi = { canTouchEfiVariables = false; From 9d0b408a7f2a02006f77dc0b664639aba53f48ee Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Sat, 13 Dec 2025 23:57:04 -0500 Subject: [PATCH 116/282] fix asahi niri bug --- home/hosts/peach.nix | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/home/hosts/peach.nix b/home/hosts/peach.nix index 6aa8e81..8bab873 100644 --- a/home/hosts/peach.nix +++ b/home/hosts/peach.nix @@ -16,6 +16,11 @@ moonlight-qt ]; + # https://github.com/YaLTeR/niri/issues/2330#issuecomment-3256864777 + programs.niri.settings.debug = { + render-drm-device = "/dev/dri/card2"; + }; + programs.plasma = { input.touchpads = [ { From 0a3b6eecb7d1789b038a808b506ad7f194b89907 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Sun, 14 Dec 2025 00:38:59 -0500 Subject: [PATCH 117/282] many changes --- home/all.nix | 119 ++++- home/hosts/peach.nix | 2 +- home/kde/other.nix | 10 +- home/kde/plasma.nix | 4 +- home/{tiling/niri => }/qt/qt5ct/qt5ct.conf | 0 .../niri => }/qt/qt5ct/style-colors.conf | 0 home/{tiling/niri => }/qt/qt6ct/qt6ct.conf | 0 .../niri => }/qt/qt6ct/style-colors.conf | 0 home/terminal/kitty/default.nix | 4 +- home/tiling/niri/default.nix | 474 +----------------- home/tiling/niri/niri.nix | 376 ++++++++++++++ .../default.nix => niri/noctalia.nix} | 29 +- home/tiling/wallpaper/bing-wallpaper.nix | 14 +- nohup.out | 6 - system/all.nix | 4 +- 15 files changed, 527 insertions(+), 515 deletions(-) rename home/{tiling/niri => }/qt/qt5ct/qt5ct.conf (100%) rename home/{tiling/niri => }/qt/qt5ct/style-colors.conf (100%) rename home/{tiling/niri => }/qt/qt6ct/qt6ct.conf (100%) rename home/{tiling/niri => }/qt/qt6ct/style-colors.conf (100%) create mode 100644 home/tiling/niri/niri.nix rename home/tiling/{noctalia/default.nix => niri/noctalia.nix} (96%) delete mode 100644 nohup.out diff --git a/home/all.nix b/home/all.nix index fc79368..4eedcc3 100755 --- a/home/all.nix +++ b/home/all.nix @@ -23,6 +23,56 @@ + builtins.substring 1 (-1) config.catppuccin.flavor; }; }; + userOptions = { + name = lib.mkOption { + type = lib.types.str; + readOnly = true; + default = "Sean Kovacs"; + }; + username = lib.mkOption { + type = lib.types.str; + readOnly = true; + default = "sckova"; + }; + hostname = lib.mkOption { + type = lib.types.str; + readOnly = true; + default = config.system.name; + }; + fontSans = { + name = lib.mkOption { + type = lib.types.str; + readOnly = true; + default = "Noto Sans"; + }; + size = lib.mkOption { + type = lib.types.int; + default = 12; + }; + }; + fontSerif = { + name = lib.mkOption { + type = lib.types.str; + readOnly = true; + default = "Noto Serif"; + }; + size = lib.mkOption { + type = lib.types.int; + default = 12; + }; + }; + fontMono = { + name = lib.mkOption { + type = lib.types.str; + readOnly = true; + default = "NotoSansM Nerd Font Mono"; + }; + size = lib.mkOption { + type = lib.types.int; + default = 10; + }; + }; + }; }; config = { @@ -51,11 +101,11 @@ prettierd nixfmt-rfc-style jdk21_headless + nerd-fonts.noto # kde and kde theming kde-rounded-corners kdePackages.partitionmanager - colloid-icon-theme # gui applications vesktop @@ -101,6 +151,73 @@ pkgs.catppuccin-cursors."${config.catppuccin.flavor}${config.catppuccinUpper.accent}" ]; + home.file = { + ".config/qt5ct" = { + source = ./qt/qt5ct; + recursive = true; + force = true; + }; + ".config/qt6ct" = { + source = ./qt/qt6ct; + recursive = true; + force = true; + }; + }; + + gtk = { + enable = true; + + iconTheme = { + name = "Colloid-Dark"; + package = pkgs.colloid-icon-theme; + }; + + cursorTheme = { + name = "catppuccin-${config.catppuccin.flavor}-${config.catppuccin.accent}-cursors"; + package = pkgs.catppuccin-cursors."${config.catppuccin.flavor}${config.catppuccinUpper.accent}"; + size = 24; + }; + + gtk3.extraConfig = { + gtk-application-prefer-dark-theme = true; + }; + + gtk4.extraConfig = { + gtk-application-prefer-dark-theme = true; + }; + }; + + # qt = { + # enable = true; + # # the following will be possible in NixOS 26.05 + # # https://github.com/nix-community/home-manager/commit/f9d45d664ed06a11861d0ba29e34f390c07bf62e + # # until this flake is updated, it will use the configs as implemented above + # qt5ctSettings = { + # Appearance = { + # style = "Breeze"; + # icon_theme = config.gtk.iconTheme.name; + # color_scheme = "catppuccin-${config.catppuccin.flavor}-${config.catppuccin.accent}"; + # standard_dialogs = "default"; + # }; + # Fonts = { + # fixed = "\"${config.userOptions.fontMono.name},${config.userOptions.fontMono.name}\""; + # general = "\"${config.userOptions.fontSans.name},${config.userOptions.fontSans.size}\""; + # }; + # }; + # qt6ctSettings = { + # Appearance = { + # style = "Breeze"; + # icon_theme = config.gtk.iconTheme.name; + # color_scheme = "catppuccin-${config.catppuccin.flavor}-${config.catppuccin.accent}"; + # standard_dialogs = "default"; + # }; + # Fonts = { + # fixed = "\"${config.userOptions.fontMono.name},${config.userOptions.fontMono.name}\""; + # general = "\"${config.userOptions.fontSans.name},${config.userOptions.fontSans.size}\""; + # }; + # }; + # }; + services = { spotifyd = { enable = true; diff --git a/home/hosts/peach.nix b/home/hosts/peach.nix index 8bab873..eb45c61 100644 --- a/home/hosts/peach.nix +++ b/home/hosts/peach.nix @@ -3,7 +3,7 @@ { catppuccin = { accent = "peach"; - flavor = "macchiato"; + flavor = "mocha"; }; home.packages = with pkgs; [ diff --git a/home/kde/other.nix b/home/kde/other.nix index 1fbea89..cb8646a 100644 --- a/home/kde/other.nix +++ b/home/kde/other.nix @@ -1,9 +1,11 @@ +{ config, ... }: + { programs.ghostwriter = { enable = true; font = { - family = "Noto Sans"; - pointSize = 12; + family = config.userOptions.fontSans.name; + pointSize = config.userOptions.fontSans.size; }; }; @@ -11,8 +13,8 @@ enable = true; editor = { font = { - family = "NotoSansM Nerd Font Mono"; - pointSize = 10; + family = config.userOptions.fontMono.name; + pointSize = config.userOptions.fontMono.size; }; }; }; diff --git a/home/kde/plasma.nix b/home/kde/plasma.nix index d8bf39a..286abc5 100644 --- a/home/kde/plasma.nix +++ b/home/kde/plasma.nix @@ -1,4 +1,4 @@ -{ pkgs, ... }: +{ config, pkgs, ... }: { @@ -13,7 +13,7 @@ }; workspace = { - iconTheme = "Colloid-Dark"; + iconTheme = config.gtk.iconTheme.name; windowDecorations = { library = "org.kde.breeze"; theme = "Breeze"; diff --git a/home/tiling/niri/qt/qt5ct/qt5ct.conf b/home/qt/qt5ct/qt5ct.conf similarity index 100% rename from home/tiling/niri/qt/qt5ct/qt5ct.conf rename to home/qt/qt5ct/qt5ct.conf diff --git a/home/tiling/niri/qt/qt5ct/style-colors.conf b/home/qt/qt5ct/style-colors.conf similarity index 100% rename from home/tiling/niri/qt/qt5ct/style-colors.conf rename to home/qt/qt5ct/style-colors.conf diff --git a/home/tiling/niri/qt/qt6ct/qt6ct.conf b/home/qt/qt6ct/qt6ct.conf similarity index 100% rename from home/tiling/niri/qt/qt6ct/qt6ct.conf rename to home/qt/qt6ct/qt6ct.conf diff --git a/home/tiling/niri/qt/qt6ct/style-colors.conf b/home/qt/qt6ct/style-colors.conf similarity index 100% rename from home/tiling/niri/qt/qt6ct/style-colors.conf rename to home/qt/qt6ct/style-colors.conf diff --git a/home/terminal/kitty/default.nix b/home/terminal/kitty/default.nix index eb41d78..1d8a6ba 100644 --- a/home/terminal/kitty/default.nix +++ b/home/terminal/kitty/default.nix @@ -6,8 +6,8 @@ enableGitIntegration = true; themeFile = "Catppuccin-${config.catppuccinUpper.flavor}"; font = { - name = "NotoSansM Nerd Font Mono"; - size = 10; + name = config.userOptions.fontMono.name; + size = config.userOptions.fontMono.size; }; shellIntegration = { enableFishIntegration = true; diff --git a/home/tiling/niri/default.nix b/home/tiling/niri/default.nix index 6e735c8..587bee9 100644 --- a/home/tiling/niri/default.nix +++ b/home/tiling/niri/default.nix @@ -10,9 +10,6 @@ let in { home.packages = with pkgs; [ - swaybg - swaylock - fuzzel xdg-desktop-portal brightnessctl qt6Packages.qt6ct @@ -26,477 +23,10 @@ in recursive = true; force = true; }; - ".config/fuzzel/colors.ini" = { - text = builtins.readFile ( - "${catppuccin-fuzzel}/themes/catppuccin-${config.catppuccin.flavor}/${config.catppuccin.accent}.ini" - ); - force = true; - }; - ".config/fuzzel/fuzzel.ini" = { - text = '' - include = /home/sckova/.config/fuzzel/colors.ini - font = "Noto Sans:size=12" - terminal = "kitty" - icons-enabled = yes - icon-theme = "Colloid-Dark" - layer = "overlay" - ''; - force = true; - }; - ".config/qt5ct" = { - source = ./qt/qt5ct; - recursive = true; - force = true; - }; - ".config/qt6ct" = { - source = ./qt/qt6ct; - recursive = true; - force = true; - }; - }; - - gtk = { - enable = true; - - iconTheme = { - name = "Colloid-Dark"; - package = pkgs.colloid-icon-theme; - }; - - cursorTheme = { - name = "catppuccin-${config.catppuccin.flavor}-${config.catppuccin.accent}-cursors"; - package = pkgs.catppuccin-cursors."${config.catppuccin.flavor}${config.catppuccinUpper.accent}"; - size = 24; - }; - - gtk3.extraConfig = { - gtk-application-prefer-dark-theme = true; - }; - - gtk4.extraConfig = { - gtk-application-prefer-dark-theme = true; - }; - }; - - qt = { - enable = true; - # the following will be possible in NixOS 26.05 - # https://github.com/nix-community/home-manager/commit/f9d45d664ed06a11861d0ba29e34f390c07bf62e - # until this flake is updated, it will use the configs as implemented above - # qt5ctSettings = { - # Appearance = { - # style = "Breeze"; - # icon_theme = config.gtk.iconTheme.name; - # standar_dialogs = "kde"; - # }; - # Fonts = { - # fixed = "\"NotoSansM Nerd Font Mono,12\""; - # general = "\"Noto Sans,12\""; - # }; - # }; - # qt6ctSettings = { - # Appearance = { - # style = "Breeze"; - # icon_theme = config.gtk.iconTheme.name; - # standar_dialogs = "kde"; - # }; - # Fonts = { - # fixed = "\"NotoSansM Nerd Font Mono,12\""; - # general = "\"Noto Sans,12\""; - # }; - # }; }; xsession = { - enable = true; # only needed for session variable injection - windowManager.command = "niri"; # launches niri directly + enable = true; + windowManager.command = "niri"; }; - - # https://github.com/sodiboo/niri-flake/blob/main/docs.md - programs.niri.settings = { - screenshot-path = "~/Pictures/Screenshots/Screenshot from %Y-%m-%d %H-%M-%S.png"; - hotkey-overlay.skip-at-startup = true; - prefer-no-csd = true; - gestures.hot-corners.enable = false; - spawn-at-startup = [ - { - command = [ - "swaybg" - "-i" - "/home/sckova/.local/share/dailywallpaper.jpg" - ]; - } - ]; - overview = { - backdrop-color = pkgs.catppuccin.${config.catppuccin.flavor}.crust; - workspace-shadow.enable = false; - }; - input = { - focus-follows-mouse = { - enable = true; - max-scroll-amount = "0%"; - }; - keyboard = { - numlock = false; - repeat-delay = 600; - repeat-rate = 25; - }; - mouse = { - enable = true; - accel-profile = "adaptive"; - natural-scroll = true; - }; - touchpad = { - enable = true; - accel-profile = "adaptive"; - natural-scroll = true; - tap = false; - drag = false; - }; - }; - environment = { - QT_QPA_PLATFORM = "wayland"; - DISPLAY = null; - }; - outputs = { - "eDP-1" = { - scale = 1.75; - }; - "HDMI-A-1" = { - scale = 2; - }; - }; - cursor = { - hide-when-typing = true; - hide-after-inactive-ms = 2000; - size = config.gtk.cursorTheme.size; - theme = config.gtk.cursorTheme.name; - }; - layout = { - gaps = 4; - background-color = pkgs.catppuccin.${config.catppuccin.flavor}.mantle; - default-column-width = { - proportion = 0.5; - }; - preset-column-widths = [ - { proportion = 1.0 / 3.0; } - { proportion = 1.0 / 2.0; } - { proportion = 2.0 / 3.0; } - ]; - border = { - enable = true; - width = 1; - active.color = pkgs.catppuccin.${config.catppuccin.flavor}.${config.catppuccin.accent}; - inactive.color = pkgs.catppuccin.${config.catppuccin.flavor}.surface0; - urgent.color = pkgs.catppuccin.${config.catppuccin.flavor}.maroon; - }; - focus-ring = { - enable = false; - width = 1; - active.color = pkgs.catppuccin.${config.catppuccin.flavor}.${config.catppuccin.accent}; - inactive.color = pkgs.catppuccin.${config.catppuccin.flavor}.surface0; - urgent.color = pkgs.catppuccin.${config.catppuccin.flavor}.maroon; - }; - shadow = { - enable = true; - spread = 5; - offset.x = 0; - offset.y = 5; - softness = 30; - color = pkgs.catppuccin.${config.catppuccin.flavor}.base + "77"; - }; - }; - window-rules = [ - { - matches = [ - { - app-id = "firefox$"; - title = "^Picture-in-Picture$"; - } - ]; - open-floating = true; - default-floating-position = { - x = 32; - y = 32; - relative-to = "bottom-left"; - }; - } - { - geometry-corner-radius = { - top-left = 16.0; - top-right = 16.0; - bottom-left = 16.0; - bottom-right = 16.0; - }; - clip-to-geometry = true; - } - { - matches = [ - { - app-id = "openmw"; - title = "OpenMW"; - } - ]; - open-maximized = true; - focus-ring.enable = false; - border.enable = false; - shadow.enable = false; - } - ]; - binds = { - "Mod+Shift+Slash".action.show-hotkey-overlay = { }; - - "Mod+T" = { - action.spawn = [ "kitty" ]; - hotkey-overlay.title = "Open a Terminal: kitty"; - }; - "Mod+Space" = { - action.spawn = [ - "sh" - "-c" - "noctalia-shell ipc call launcher toggle" - ]; - hotkey-overlay.title = "Run an Application: Noctalia app launcher"; - }; - "Super+Alt+L" = { - action.spawn = [ "swaylock" ]; - hotkey-overlay.title = "Lock the Screen: swaylock"; - }; - - "Super+Alt+S" = { - action.spawn = [ - "sh" - "-c" - "pkill orca || exec orca" - ]; - allow-when-locked = true; - hotkey-overlay.title = "Orca screen reader"; - }; - - "XF86AudioRaiseVolume" = { - action.spawn = [ - "wpctl" - "set-volume" - "@DEFAULT_AUDIO_SINK@" - "0.05+" - ]; - allow-when-locked = true; - }; - "XF86AudioLowerVolume" = { - action.spawn = [ - "wpctl" - "set-volume" - "@DEFAULT_AUDIO_SINK@" - "0.05-" - ]; - allow-when-locked = true; - }; - "Shift+XF86AudioRaiseVolume" = { - action.spawn = [ - "wpctl" - "set-volume" - "@DEFAULT_AUDIO_SINK@" - "0.01+" - ]; - allow-when-locked = true; - }; - "Shift+XF86AudioLowerVolume" = { - action.spawn = [ - "wpctl" - "set-volume" - "@DEFAULT_AUDIO_SINK@" - "0.01-" - ]; - allow-when-locked = true; - }; - "XF86AudioMute" = { - action.spawn = [ - "wpctl" - "set-mute" - "@DEFAULT_AUDIO_SINK@" - "toggle" - ]; - allow-when-locked = true; - }; - "XF86AudioMicMute" = { - action.spawn = [ - "wpctl" - "set-mute" - "@DEFAULT_AUDIO_SOURCE@" - "toggle" - ]; - allow-when-locked = true; - }; - - "XF86MonBrightnessUp" = { - action.spawn = [ - "/home/sckova/.config/niri/scripts/brightness.sh" - "1" - ]; - allow-when-locked = true; - }; - "XF86MonBrightnessDown" = { - action.spawn = [ - "/home/sckova/.config/niri/scripts/brightness.sh" - "-1" - ]; - allow-when-locked = true; - }; - - "Mod+O" = { - action.toggle-overview = { }; - repeat = false; - }; - - "Mod+Q" = { - action.close-window = { }; - repeat = false; - }; - - "Mod+Left".action.focus-column-left = { }; - "Mod+Down".action.focus-window-down = { }; - "Mod+Up".action.focus-window-up = { }; - "Mod+Right".action.focus-column-right = { }; - "Mod+H".action.focus-column-left = { }; - "Mod+J".action.focus-window-down = { }; - "Mod+K".action.focus-window-up = { }; - "Mod+L".action.focus-column-right = { }; - - "Mod+Ctrl+Left".action.move-column-left = { }; - "Mod+Ctrl+Down".action.move-window-down = { }; - "Mod+Ctrl+Up".action.move-window-up = { }; - "Mod+Ctrl+Right".action.move-column-right = { }; - "Mod+Ctrl+H".action.move-column-left = { }; - "Mod+Ctrl+J".action.move-window-down = { }; - "Mod+Ctrl+K".action.move-window-up = { }; - "Mod+Ctrl+L".action.move-column-right = { }; - - "Mod+Home".action.focus-column-first = { }; - "Mod+End".action.focus-column-last = { }; - "Mod+Ctrl+Home".action.move-column-to-first = { }; - "Mod+Ctrl+End".action.move-column-to-last = { }; - - "Mod+Shift+Left".action.focus-monitor-left = { }; - "Mod+Shift+Down".action.focus-monitor-down = { }; - "Mod+Shift+Up".action.focus-monitor-up = { }; - "Mod+Shift+Right".action.focus-monitor-right = { }; - "Mod+Shift+H".action.focus-monitor-left = { }; - "Mod+Shift+J".action.focus-monitor-down = { }; - "Mod+Shift+K".action.focus-monitor-up = { }; - "Mod+Shift+L".action.focus-monitor-right = { }; - - "Mod+Shift+Ctrl+Left".action.move-column-to-monitor-left = { }; - "Mod+Shift+Ctrl+Down".action.move-column-to-monitor-down = { }; - "Mod+Shift+Ctrl+Up".action.move-column-to-monitor-up = { }; - "Mod+Shift+Ctrl+Right".action.move-column-to-monitor-right = { }; - "Mod+Shift+Ctrl+H".action.move-column-to-monitor-left = { }; - "Mod+Shift+Ctrl+J".action.move-column-to-monitor-down = { }; - "Mod+Shift+Ctrl+K".action.move-column-to-monitor-up = { }; - "Mod+Shift+Ctrl+L".action.move-column-to-monitor-right = { }; - - "Mod+Page_Down".action.focus-workspace-down = { }; - "Mod+Page_Up".action.focus-workspace-up = { }; - "Mod+U".action.focus-workspace-down = { }; - "Mod+I".action.focus-workspace-up = { }; - "Mod+Ctrl+Page_Down".action.move-column-to-workspace-down = { }; - "Mod+Ctrl+Page_Up".action.move-column-to-workspace-up = { }; - "Mod+Ctrl+U".action.move-column-to-workspace-down = { }; - "Mod+Ctrl+I".action.move-column-to-workspace-up = { }; - - "Mod+Shift+Page_Down".action.move-workspace-down = { }; - "Mod+Shift+Page_Up".action.move-workspace-up = { }; - "Mod+Shift+U".action.move-workspace-down = { }; - "Mod+Shift+I".action.move-workspace-up = { }; - - "Mod+WheelScrollDown" = { - action.focus-workspace-down = { }; - cooldown-ms = 150; - }; - "Mod+WheelScrollUp" = { - action.focus-workspace-up = { }; - cooldown-ms = 150; - }; - "Mod+Ctrl+WheelScrollDown" = { - action.move-column-to-workspace-down = { }; - cooldown-ms = 150; - }; - "Mod+Ctrl+WheelScrollUp" = { - action.move-column-to-workspace-up = { }; - cooldown-ms = 150; - }; - - "Mod+WheelScrollRight".action.focus-column-right = { }; - "Mod+WheelScrollLeft".action.focus-column-left = { }; - "Mod+Ctrl+WheelScrollRight".action.move-column-right = { }; - "Mod+Ctrl+WheelScrollLeft".action.move-column-left = { }; - - "Mod+Shift+WheelScrollDown".action.focus-column-right = { }; - "Mod+Shift+WheelScrollUp".action.focus-column-left = { }; - "Mod+Ctrl+Shift+WheelScrollDown".action.move-column-right = { }; - "Mod+Ctrl+Shift+WheelScrollUp".action.move-column-left = { }; - - "Mod+1".action.focus-workspace = 1; - "Mod+2".action.focus-workspace = 2; - "Mod+3".action.focus-workspace = 3; - "Mod+4".action.focus-workspace = 4; - "Mod+5".action.focus-workspace = 5; - "Mod+6".action.focus-workspace = 6; - "Mod+7".action.focus-workspace = 7; - "Mod+8".action.focus-workspace = 8; - "Mod+9".action.focus-workspace = 9; - "Mod+Ctrl+1".action.move-column-to-workspace = 1; - "Mod+Ctrl+2".action.move-column-to-workspace = 2; - "Mod+Ctrl+3".action.move-column-to-workspace = 3; - "Mod+Ctrl+4".action.move-column-to-workspace = 4; - "Mod+Ctrl+5".action.move-column-to-workspace = 5; - "Mod+Ctrl+6".action.move-column-to-workspace = 6; - "Mod+Ctrl+7".action.move-column-to-workspace = 7; - "Mod+Ctrl+8".action.move-column-to-workspace = 8; - "Mod+Ctrl+9".action.move-column-to-workspace = 9; - - "Mod+BracketLeft".action.consume-or-expel-window-left = { }; - "Mod+BracketRight".action.consume-or-expel-window-right = { }; - - "Mod+Comma".action.consume-window-into-column = { }; - "Mod+Period".action.expel-window-from-column = { }; - - "Mod+R".action.switch-preset-column-width = { }; - "Mod+Shift+R".action.switch-preset-window-height = { }; - "Mod+Ctrl+R".action.reset-window-height = { }; - "Mod+F".action.maximize-column = { }; - "Mod+Shift+F".action.fullscreen-window = { }; - - "Mod+Ctrl+F".action.expand-column-to-available-width = { }; - - "Mod+C".action.center-column = { }; - - "Mod+Ctrl+C".action.center-visible-columns = { }; - - "Mod+Minus".action.set-column-width = "-10%"; - "Mod+Equal".action.set-column-width = "+10%"; - - "Mod+Shift+Minus".action.set-window-height = "-10%"; - "Mod+Shift+Equal".action.set-window-height = "+10%"; - - "Mod+V".action.toggle-window-floating = { }; - "Mod+Shift+V".action.switch-focus-between-floating-and-tiling = { }; - - "Mod+W".action.toggle-column-tabbed-display = { }; - - "Print".action.screenshot = { }; - "Ctrl+Print".action.screenshot-screen = { }; - "Alt+Print".action.screenshot-window = { }; - - "Mod+Escape" = { - action.toggle-keyboard-shortcuts-inhibit = { }; - allow-inhibiting = false; - }; - - "Mod+Shift+E".action.quit = { }; - "Ctrl+Alt+Delete".action.quit = { }; - - "Mod+Shift+P".action.power-off-monitors = { }; - }; - }; - } diff --git a/home/tiling/niri/niri.nix b/home/tiling/niri/niri.nix new file mode 100644 index 0000000..75418b8 --- /dev/null +++ b/home/tiling/niri/niri.nix @@ -0,0 +1,376 @@ +{ config, pkgs, ... }: + +{ + # https://github.com/sodiboo/niri-flake/blob/main/docs.md + programs.niri.settings = { + screenshot-path = "~/Pictures/Screenshots/Screenshot from %Y-%m-%d %H-%M-%S.png"; + hotkey-overlay.skip-at-startup = true; + prefer-no-csd = true; + gestures.hot-corners.enable = false; + spawn-at-startup = [ + { + command = [ + "${pkgs.swaybg}" + "-i" + "/home/${config.userOptions.username}/.local/share/dailywallpaper.jpg" + ]; + } + ]; + overview = { + backdrop-color = pkgs.catppuccin.${config.catppuccin.flavor}.crust; + workspace-shadow.enable = false; + }; + input = { + focus-follows-mouse = { + enable = true; + max-scroll-amount = "0%"; + }; + keyboard = { + numlock = false; + repeat-delay = 600; + repeat-rate = 25; + }; + mouse = { + enable = true; + accel-profile = "adaptive"; + natural-scroll = true; + }; + touchpad = { + enable = true; + accel-profile = "adaptive"; + natural-scroll = true; + tap = false; + drag = false; + }; + }; + environment = { + QT_QPA_PLATFORM = "wayland"; + DISPLAY = null; + }; + outputs = { + "eDP-1" = { + scale = 1.75; + }; + "HDMI-A-1" = { + scale = 2; + }; + }; + cursor = { + hide-when-typing = true; + hide-after-inactive-ms = 2000; + size = config.gtk.cursorTheme.size; + theme = config.gtk.cursorTheme.name; + }; + layout = { + gaps = 4; + background-color = pkgs.catppuccin.${config.catppuccin.flavor}.mantle; + default-column-width = { + proportion = 0.5; + }; + preset-column-widths = [ + { proportion = 1.0 / 3.0; } + { proportion = 1.0 / 2.0; } + { proportion = 2.0 / 3.0; } + ]; + border = { + enable = true; + width = 1; + active.color = pkgs.catppuccin.${config.catppuccin.flavor}.${config.catppuccin.accent}; + inactive.color = pkgs.catppuccin.${config.catppuccin.flavor}.surface0; + urgent.color = pkgs.catppuccin.${config.catppuccin.flavor}.maroon; + }; + focus-ring = { + enable = false; + width = 1; + active.color = pkgs.catppuccin.${config.catppuccin.flavor}.${config.catppuccin.accent}; + inactive.color = pkgs.catppuccin.${config.catppuccin.flavor}.surface0; + urgent.color = pkgs.catppuccin.${config.catppuccin.flavor}.maroon; + }; + shadow = { + enable = true; + spread = 5; + offset.x = 0; + offset.y = 5; + softness = 30; + color = pkgs.catppuccin.${config.catppuccin.flavor}.base + "77"; + }; + }; + window-rules = [ + { + matches = [ + { + app-id = "firefox$"; + title = "^Picture-in-Picture$"; + } + ]; + open-floating = true; + default-floating-position = { + x = 32; + y = 32; + relative-to = "bottom-left"; + }; + } + { + geometry-corner-radius = { + top-left = 16.0; + top-right = 16.0; + bottom-left = 16.0; + bottom-right = 16.0; + }; + clip-to-geometry = true; + } + { + matches = [ + { + app-id = "openmw"; + title = "OpenMW"; + } + ]; + open-maximized = true; + focus-ring.enable = false; + border.enable = false; + shadow.enable = false; + } + ]; + binds = { + "Mod+Shift+Slash".action.show-hotkey-overlay = { }; + + "Mod+T" = { + action.spawn = [ "kitty" ]; + hotkey-overlay.title = "Open a Terminal: kitty"; + }; + "Mod+Space" = { + action.spawn-sh = [ + "noctalia-shell ipc call launcher toggle" + ]; + hotkey-overlay.title = "Run an Application: Noctalia app launcher"; + }; + + "XF86AudioRaiseVolume" = { + action.spawn-sh = [ + "noctalia-shell ipc call volume increase" + ]; + allow-when-locked = true; + }; + "XF86AudioLowerVolume" = { + action.spawn-sh = [ + "noctalia-shell ipc call volume decrease" + ]; + allow-when-locked = true; + }; + "Shift+XF86AudioRaiseVolume" = { + action.spawn = [ + "wpctl" + "set-volume" + "@DEFAULT_AUDIO_SINK@" + "0.01+" + ]; + allow-when-locked = true; + }; + "Shift+XF86AudioLowerVolume" = { + action.spawn = [ + "wpctl" + "set-volume" + "@DEFAULT_AUDIO_SINK@" + "0.01-" + ]; + allow-when-locked = true; + }; + "XF86AudioMute" = { + action.spawn-sh = [ + "noctalia-shell ipc call volume muteOutput" + ]; + allow-when-locked = true; + }; + "XF86AudioMicMute" = { + action.spawn-sh = [ + "noctalia-shell ipc call volume muteInput" + ]; + allow-when-locked = true; + }; + + "XF86MonBrightnessUp" = { + action.spawn = [ + "/home/${config.userOptions.username}/.config/niri/scripts/brightness.sh" + "5" + ]; + allow-when-locked = true; + }; + "XF86MonBrightnessDown" = { + action.spawn = [ + "/home/${config.userOptions.username}/.config/niri/scripts/brightness.sh" + "-5" + ]; + allow-when-locked = true; + }; + "Shift+XF86MonBrightnessUp" = { + action.spawn = [ + "/home/${config.userOptions.username}/.config/niri/scripts/brightness.sh" + "1" + ]; + allow-when-locked = true; + }; + "Shift+XF86MonBrightnessDown" = { + action.spawn = [ + "/home/${config.userOptions.username}/.config/niri/scripts/brightness.sh" + "-1" + ]; + allow-when-locked = true; + }; + + "Mod+O" = { + action.toggle-overview = { }; + repeat = false; + }; + + "Mod+Q" = { + action.close-window = { }; + repeat = false; + }; + + "Mod+Left".action.focus-column-left = { }; + "Mod+Down".action.focus-window-down = { }; + "Mod+Up".action.focus-window-up = { }; + "Mod+Right".action.focus-column-right = { }; + "Mod+H".action.focus-column-left = { }; + "Mod+J".action.focus-window-down = { }; + "Mod+K".action.focus-window-up = { }; + "Mod+L".action.focus-column-right = { }; + + "Mod+Ctrl+Left".action.move-column-left = { }; + "Mod+Ctrl+Down".action.move-window-down = { }; + "Mod+Ctrl+Up".action.move-window-up = { }; + "Mod+Ctrl+Right".action.move-column-right = { }; + "Mod+Ctrl+H".action.move-column-left = { }; + "Mod+Ctrl+J".action.move-window-down = { }; + "Mod+Ctrl+K".action.move-window-up = { }; + "Mod+Ctrl+L".action.move-column-right = { }; + + "Mod+Home".action.focus-column-first = { }; + "Mod+End".action.focus-column-last = { }; + "Mod+Ctrl+Home".action.move-column-to-first = { }; + "Mod+Ctrl+End".action.move-column-to-last = { }; + + "Mod+Shift+Left".action.focus-monitor-left = { }; + "Mod+Shift+Down".action.focus-monitor-down = { }; + "Mod+Shift+Up".action.focus-monitor-up = { }; + "Mod+Shift+Right".action.focus-monitor-right = { }; + "Mod+Shift+H".action.focus-monitor-left = { }; + "Mod+Shift+J".action.focus-monitor-down = { }; + "Mod+Shift+K".action.focus-monitor-up = { }; + "Mod+Shift+L".action.focus-monitor-right = { }; + + "Mod+Shift+Ctrl+Left".action.move-column-to-monitor-left = { }; + "Mod+Shift+Ctrl+Down".action.move-column-to-monitor-down = { }; + "Mod+Shift+Ctrl+Up".action.move-column-to-monitor-up = { }; + "Mod+Shift+Ctrl+Right".action.move-column-to-monitor-right = { }; + "Mod+Shift+Ctrl+H".action.move-column-to-monitor-left = { }; + "Mod+Shift+Ctrl+J".action.move-column-to-monitor-down = { }; + "Mod+Shift+Ctrl+K".action.move-column-to-monitor-up = { }; + "Mod+Shift+Ctrl+L".action.move-column-to-monitor-right = { }; + + "Mod+Page_Down".action.focus-workspace-down = { }; + "Mod+Page_Up".action.focus-workspace-up = { }; + "Mod+U".action.focus-workspace-down = { }; + "Mod+I".action.focus-workspace-up = { }; + "Mod+Ctrl+Page_Down".action.move-column-to-workspace-down = { }; + "Mod+Ctrl+Page_Up".action.move-column-to-workspace-up = { }; + "Mod+Ctrl+U".action.move-column-to-workspace-down = { }; + "Mod+Ctrl+I".action.move-column-to-workspace-up = { }; + + "Mod+Shift+Page_Down".action.move-workspace-down = { }; + "Mod+Shift+Page_Up".action.move-workspace-up = { }; + "Mod+Shift+U".action.move-workspace-down = { }; + "Mod+Shift+I".action.move-workspace-up = { }; + + "Mod+WheelScrollDown" = { + action.focus-workspace-down = { }; + cooldown-ms = 150; + }; + "Mod+WheelScrollUp" = { + action.focus-workspace-up = { }; + cooldown-ms = 150; + }; + "Mod+Ctrl+WheelScrollDown" = { + action.move-column-to-workspace-down = { }; + cooldown-ms = 150; + }; + "Mod+Ctrl+WheelScrollUp" = { + action.move-column-to-workspace-up = { }; + cooldown-ms = 150; + }; + + "Mod+WheelScrollRight".action.focus-column-right = { }; + "Mod+WheelScrollLeft".action.focus-column-left = { }; + "Mod+Ctrl+WheelScrollRight".action.move-column-right = { }; + "Mod+Ctrl+WheelScrollLeft".action.move-column-left = { }; + + "Mod+Shift+WheelScrollDown".action.focus-column-right = { }; + "Mod+Shift+WheelScrollUp".action.focus-column-left = { }; + "Mod+Ctrl+Shift+WheelScrollDown".action.move-column-right = { }; + "Mod+Ctrl+Shift+WheelScrollUp".action.move-column-left = { }; + + "Mod+1".action.focus-workspace = 1; + "Mod+2".action.focus-workspace = 2; + "Mod+3".action.focus-workspace = 3; + "Mod+4".action.focus-workspace = 4; + "Mod+5".action.focus-workspace = 5; + "Mod+6".action.focus-workspace = 6; + "Mod+7".action.focus-workspace = 7; + "Mod+8".action.focus-workspace = 8; + "Mod+9".action.focus-workspace = 9; + "Mod+Ctrl+1".action.move-column-to-workspace = 1; + "Mod+Ctrl+2".action.move-column-to-workspace = 2; + "Mod+Ctrl+3".action.move-column-to-workspace = 3; + "Mod+Ctrl+4".action.move-column-to-workspace = 4; + "Mod+Ctrl+5".action.move-column-to-workspace = 5; + "Mod+Ctrl+6".action.move-column-to-workspace = 6; + "Mod+Ctrl+7".action.move-column-to-workspace = 7; + "Mod+Ctrl+8".action.move-column-to-workspace = 8; + "Mod+Ctrl+9".action.move-column-to-workspace = 9; + + "Mod+BracketLeft".action.consume-or-expel-window-left = { }; + "Mod+BracketRight".action.consume-or-expel-window-right = { }; + + "Mod+Comma".action.consume-window-into-column = { }; + "Mod+Period".action.expel-window-from-column = { }; + + "Mod+R".action.switch-preset-column-width = { }; + "Mod+Shift+R".action.switch-preset-window-height = { }; + "Mod+Ctrl+R".action.reset-window-height = { }; + "Mod+F".action.maximize-column = { }; + "Mod+Shift+F".action.fullscreen-window = { }; + + "Mod+Ctrl+F".action.expand-column-to-available-width = { }; + + "Mod+C".action.center-column = { }; + + "Mod+Ctrl+C".action.center-visible-columns = { }; + + "Mod+Minus".action.set-column-width = "-10%"; + "Mod+Equal".action.set-column-width = "+10%"; + + "Mod+Shift+Minus".action.set-window-height = "-10%"; + "Mod+Shift+Equal".action.set-window-height = "+10%"; + + "Mod+V".action.toggle-window-floating = { }; + "Mod+Shift+V".action.switch-focus-between-floating-and-tiling = { }; + + "Mod+W".action.toggle-column-tabbed-display = { }; + + "Print".action.screenshot = { }; + "Ctrl+Print".action.screenshot-screen = { }; + "Alt+Print".action.screenshot-window = { }; + + "Mod+Escape" = { + action.toggle-keyboard-shortcuts-inhibit = { }; + allow-inhibiting = false; + }; + + "Mod+Shift+E".action.quit = { }; + "Ctrl+Alt+Delete".action.quit = { }; + + "Mod+Shift+P".action.power-off-monitors = { }; + }; + }; +} diff --git a/home/tiling/noctalia/default.nix b/home/tiling/niri/noctalia.nix similarity index 96% rename from home/tiling/noctalia/default.nix rename to home/tiling/niri/noctalia.nix index bde5fd4..055030f 100644 --- a/home/tiling/noctalia/default.nix +++ b/home/tiling/niri/noctalia.nix @@ -139,18 +139,15 @@ in hideMode = "hidden"; hideWhenIdle = false; id = "MediaMini"; - maxWidth = 350; + maxWidth = 275; scrollingMode = "always"; showAlbumArt = false; showArtistFirst = true; showProgressRing = true; - showVisualizer = false; + showVisualizer = true; useFixedWidth = false; visualizerType = "linear"; } - { - id = "ScreenRecorder"; - } { id = "Tray"; } @@ -180,7 +177,7 @@ in }; }; general = { - avatarImage = ""; + avatarImage = "/home/${config.userOptions.username}/.face"; dimmerOpacity = 0.6; showScreenCorners = true; forceBlackScreenCorners = true; @@ -203,8 +200,8 @@ in allowPanelsOnScreenWithoutBar = true; }; ui = { - fontDefault = "Noto Sans"; - fontFixed = "NotoSansM Nerd Font Mono"; + fontDefault = config.userOptions.fontSans.name; + fontFixed = config.userOptions.fontMono.name; fontDefaultScale = 1; fontFixedScale = 1; tooltipsEnabled = true; @@ -236,11 +233,11 @@ in } { enabled = true; - id = "timer-card"; + id = "weather-card"; } { enabled = true; - id = "weather-card"; + id = "timer-card"; } ]; }; @@ -283,7 +280,7 @@ in wallhavenResolutionHeight = ""; }; appLauncher = { - enableClipboardHistory = false; + enableClipboardHistory = true; enableClipPreview = true; position = "center"; pinnedExecs = [ ]; @@ -340,10 +337,6 @@ in enabled = true; id = "audio-card"; } - { - enabled = true; - id = "weather-card"; - } { enabled = true; id = "media-sysmon-card"; @@ -387,7 +380,7 @@ in }; sessionMenu = { enableCountdown = true; - countdownDuration = 10000; + countdownDuration = 5000; position = "center"; showHeader = true; powerOptions = [ @@ -435,7 +428,7 @@ in criticalSoundFile = ""; normalSoundFile = ""; lowSoundFile = ""; - excludedApps = "discord,firefox,chrome,chromium,edge"; + excludedApps = ""; }; }; osd = { @@ -501,7 +494,7 @@ in }; nightLight = { enabled = true; - forced = false; + forced = true; autoSchedule = true; nightTemp = "4000"; dayTemp = "6500"; diff --git a/home/tiling/wallpaper/bing-wallpaper.nix b/home/tiling/wallpaper/bing-wallpaper.nix index fcd67d8..5247075 100644 --- a/home/tiling/wallpaper/bing-wallpaper.nix +++ b/home/tiling/wallpaper/bing-wallpaper.nix @@ -1,11 +1,10 @@ { pkgs, config, ... }: - let bingWallpaperScript = pkgs.writeShellScript "bing-wallpaper" '' set -euo pipefail # Configuration - SIZE="1920x1080" + SIZE="UHD" MARKET="en-US" OUTPUT_PATH="''${XDG_DATA_HOME:-$HOME/.local/share}/dailywallpaper.jpg" DAY="0" @@ -30,7 +29,6 @@ let # Extract title TITLE=$(echo "$API_RESP" | ${pkgs.gnugrep}/bin/grep -oP 'title":"[^"]*' | ${pkgs.coreutils}/bin/cut -d '"' -f 3) - echo "Bing Image of the day: $TITLE" # Check if specific size exists, fallback to default @@ -44,7 +42,6 @@ let IMG_NAME="''${REQ_IMG_URL##*/}" IMG_NAME="''${IMG_NAME#th?id=OHR.}" IMG_NAME="''${IMG_NAME%&rf=*}" - echo "$IMG_NAME" # Create parent directory @@ -52,16 +49,19 @@ let # Download image, overwrite if exists ${pkgs.wget}/bin/wget --quiet --output-document="$OUTPUT_PATH" "$REQ_IMG_URL" - echo "Wallpaper saved to $OUTPUT_PATH" # Send notification if command -v ${pkgs.libnotify}/bin/notify-send &> /dev/null; then - ${pkgs.libnotify}/bin/notify-send -u low -t 10 -i preferences-desktop-wallpaper \ + ${pkgs.libnotify}/bin/notify-send -u low -t 10000 -i preferences-desktop-wallpaper \ "Bing Wallpaper of the Day" "$TITLE" fi - echo "Wallpaper downloaded successfully." + # Kill existing swaybg instances and start new one + ${pkgs.procps}/bin/pkill swaybg || true + ${pkgs.swaybg}/bin/swaybg -i "/home/${config.userOptions.username}/.local/share/dailywallpaper.jpg" & + + echo "Wallpaper downloaded and applied successfully." ''; in { diff --git a/nohup.out b/nohup.out deleted file mode 100644 index a245621..0000000 --- a/nohup.out +++ /dev/null @@ -1,6 +0,0 @@ -[2025-12-12 15:14:41.470] [info] Using configuration file /home/sckova/.config/waybar/config.jsonc -[2025-12-12 15:14:41.471] [info] Discovered appearance 'dark' -[2025-12-12 15:14:41.483] [info] Using CSS file /home/sckova/.config/waybar/style.css -[2025-12-12 15:14:41.490] [warning] module sway/workspaces: Disabling module "sway/workspaces", Socket path is empty -[2025-12-12 15:14:41.490] [warning] module cpu_text: Unknown module: cpu_text -[2025-12-12 15:14:41.602] [info] Bar configured (width: 1728, height: 40) for output: eDP-1 diff --git a/system/all.nix b/system/all.nix index 537a1c1..7137232 100755 --- a/system/all.nix +++ b/system/all.nix @@ -34,10 +34,11 @@ ../home/all.nix ../home/browsers/firefox/default.nix ../home/tiling/niri/default.nix + ../home/tiling/niri/niri.nix + ../home/tiling/niri/noctalia.nix ../home/tiling/quickshell/default.nix ../home/tiling/wallpaper/bing-wallpaper.nix ../home/tiling/waybar/default.nix - ../home/tiling/noctalia/default.nix ../home/systemd/default.nix ../home/terminal/btop/default.nix ../home/terminal/fish/default.nix @@ -168,7 +169,6 @@ git firefoxpwa distrobox - nerd-fonts.noto ]; plasma6.excludePackages = with pkgs.kdePackages; [ From be9cc8e44b48936aaf450a0e0fc31051c45a667a Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Sun, 14 Dec 2025 02:01:59 -0500 Subject: [PATCH 118/282] fix niri overlay --- flake.nix | 1 + home/tiling/niri/niri.nix | 6 ++++++ system/all.nix | 29 ++++++++++++++++++++++++++++- system/hosts/alien/default.nix | 9 ++++++--- 4 files changed, 41 insertions(+), 4 deletions(-) diff --git a/flake.nix b/flake.nix index 3f2a422..b3811f9 100644 --- a/flake.nix +++ b/flake.nix @@ -80,6 +80,7 @@ { nixpkgs.overlays = [ catppuccin-palette.overlays.default + niri.overlays.niri noctalia.overlays.default nur.overlays.default (import ./packages/overlay.nix) diff --git a/home/tiling/niri/niri.nix b/home/tiling/niri/niri.nix index 75418b8..4cd820e 100644 --- a/home/tiling/niri/niri.nix +++ b/home/tiling/niri/niri.nix @@ -1,6 +1,9 @@ { config, pkgs, ... }: { + programs.niri.package = pkgs.niri-stable.overrideAttrs (old: { + doCheck = false; + }); # https://github.com/sodiboo/niri-flake/blob/main/docs.md programs.niri.settings = { screenshot-path = "~/Pictures/Screenshots/Screenshot from %Y-%m-%d %H-%M-%S.png"; @@ -54,6 +57,9 @@ "HDMI-A-1" = { scale = 2; }; + "DP-1" = { + scale = 2; + }; }; cursor = { hide-when-typing = true; diff --git a/system/all.nix b/system/all.nix index 7137232..b14f6cd 100755 --- a/system/all.nix +++ b/system/all.nix @@ -21,6 +21,28 @@ "sckova" ]; + nix.settings = { + # Increase file descriptor limit for builds + sandbox = "relaxed"; + extra-sandbox-paths = [ ]; + build-users-group = "nixbld"; + }; + + security.pam.loginLimits = [ + { + domain = "*"; + type = "soft"; + item = "nofile"; + value = "65536"; + } + { + domain = "*"; + type = "hard"; + item = "nofile"; + value = "65536"; + } + ]; + nix.gc = { automatic = true; dates = "weekly"; @@ -114,7 +136,12 @@ enable = true; }; - programs.niri.enable = true; + programs.niri = { + enable = true; + package = pkgs.niri-stable.overrideAttrs (old: { + doCheck = false; + }); + }; services.gnome.gnome-keyring.enable = true; security.pam.services.niri.enableGnomeKeyring = true; programs.dconf.enable = true; diff --git a/system/hosts/alien/default.nix b/system/hosts/alien/default.nix index 6e0d222..74bcbd8 100644 --- a/system/hosts/alien/default.nix +++ b/system/hosts/alien/default.nix @@ -40,9 +40,12 @@ "nvidia" ]; - services.displayManager.autoLogin = { - enable = true; - user = "sckova"; + services.displayManager = { + autoLogin = { + enable = true; + user = "sckova"; + }; + defaultSession = "niri"; }; security.sudo.wheelNeedsPassword = true; From aa16f6d4118f0c192f40c5e48ddba76730292907 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Sun, 14 Dec 2025 03:00:53 -0500 Subject: [PATCH 119/282] use noctalia for wallpaper --- home/tiling/niri/default.nix | 1 + home/tiling/niri/niri.nix | 13 +++---------- home/tiling/niri/noctalia.nix | 24 ++++++++---------------- home/tiling/wallpaper/bing-wallpaper.nix | 6 +----- 4 files changed, 13 insertions(+), 31 deletions(-) diff --git a/home/tiling/niri/default.nix b/home/tiling/niri/default.nix index 587bee9..750ee11 100644 --- a/home/tiling/niri/default.nix +++ b/home/tiling/niri/default.nix @@ -15,6 +15,7 @@ in qt6Packages.qt6ct libsForQt5.qt5ct catppuccin-qt5ct + xwayland-satellite ]; home.file = { diff --git a/home/tiling/niri/niri.nix b/home/tiling/niri/niri.nix index 4cd820e..3e3d86f 100644 --- a/home/tiling/niri/niri.nix +++ b/home/tiling/niri/niri.nix @@ -10,15 +10,7 @@ hotkey-overlay.skip-at-startup = true; prefer-no-csd = true; gestures.hot-corners.enable = false; - spawn-at-startup = [ - { - command = [ - "${pkgs.swaybg}" - "-i" - "/home/${config.userOptions.username}/.local/share/dailywallpaper.jpg" - ]; - } - ]; + spawn-at-startup = [ ]; overview = { backdrop-color = pkgs.catppuccin.${config.catppuccin.flavor}.crust; workspace-shadow.enable = false; @@ -36,7 +28,7 @@ mouse = { enable = true; accel-profile = "adaptive"; - natural-scroll = true; + natural-scroll = false; }; touchpad = { enable = true; @@ -365,6 +357,7 @@ "Mod+W".action.toggle-column-tabbed-display = { }; "Print".action.screenshot = { }; + "Mod+Shift+S".action.screenshot = { }; "Ctrl+Print".action.screenshot-screen = { }; "Alt+Print".action.screenshot-window = { }; diff --git a/home/tiling/niri/noctalia.nix b/home/tiling/niri/noctalia.nix index 055030f..74b753b 100644 --- a/home/tiling/niri/noctalia.nix +++ b/home/tiling/niri/noctalia.nix @@ -253,40 +253,32 @@ in videoSource = "portal"; }; wallpaper = { - enabled = false; + enabled = true; overviewEnabled = false; - directory = ""; + directory = "/home/sckova/.local/share/wallpaper"; monitorDirectories = [ ]; enableMultiMonitorDirectories = false; recursiveSearch = false; setWallpaperOnAllMonitors = true; + fillColor = "${pkgs.catppuccin.${config.catppuccin.flavor}.base}"; fillMode = "crop"; - fillColor = "#000000"; + hideWallpaperFilenames = true; + panelPosition = "follow_bar"; randomEnabled = false; randomIntervalSec = 300; transitionDuration = 1500; - transitionType = "random"; transitionEdgeSmoothness = 0.05; - panelPosition = "follow_bar"; - hideWallpaperFilenames = false; + transitionType = "random"; useWallhaven = false; - wallhavenQuery = ""; - wallhavenSorting = "relevance"; - wallhavenOrder = "desc"; - wallhavenCategories = "111"; - wallhavenPurity = "100"; - wallhavenResolutionMode = "atleast"; - wallhavenResolutionWidth = ""; - wallhavenResolutionHeight = ""; }; appLauncher = { enableClipboardHistory = true; enableClipPreview = true; - position = "center"; + position = "top_left"; pinnedExecs = [ ]; useApp2Unit = false; sortByMostUsed = true; - terminalCommand = "xterm -e"; + terminalCommand = "kitty"; customLaunchPrefixEnabled = false; customLaunchPrefix = ""; viewMode = "list"; diff --git a/home/tiling/wallpaper/bing-wallpaper.nix b/home/tiling/wallpaper/bing-wallpaper.nix index 5247075..c7187fb 100644 --- a/home/tiling/wallpaper/bing-wallpaper.nix +++ b/home/tiling/wallpaper/bing-wallpaper.nix @@ -6,7 +6,7 @@ let # Configuration SIZE="UHD" MARKET="en-US" - OUTPUT_PATH="''${XDG_DATA_HOME:-$HOME/.local/share}/dailywallpaper.jpg" + OUTPUT_PATH="''${XDG_DATA_HOME:-$HOME/.local/share}/wallpaper/daily.jpg" DAY="0" # API configuration @@ -57,10 +57,6 @@ let "Bing Wallpaper of the Day" "$TITLE" fi - # Kill existing swaybg instances and start new one - ${pkgs.procps}/bin/pkill swaybg || true - ${pkgs.swaybg}/bin/swaybg -i "/home/${config.userOptions.username}/.local/share/dailywallpaper.jpg" & - echo "Wallpaper downloaded and applied successfully." ''; in From 55d89a12d70c3bc0174bd4f331cc617cc2a344f0 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Sun, 14 Dec 2025 10:13:58 -0500 Subject: [PATCH 120/282] fix cursors --- home/all.nix | 49 ++++++++++++++++++++++++++++++++++++--- home/systemd/default.nix | 13 ++++++++++- home/tiling/niri/niri.nix | 6 +++-- 3 files changed, 62 insertions(+), 6 deletions(-) diff --git a/home/all.nix b/home/all.nix index 4eedcc3..9aa1f06 100755 --- a/home/all.nix +++ b/home/all.nix @@ -72,6 +72,32 @@ default = 10; }; }; + cursor = + let + attrName = config.catppuccin.flavor + config.catppuccinUpper.accent; + in + { + name = lib.mkOption { + type = lib.types.str; + readOnly = true; + default = "catppuccin-${config.catppuccin.flavor}-${config.catppuccin.accent}-cursors"; + }; + package = lib.mkOption { + type = lib.types.package; + readOnly = true; + default = pkgs.catppuccin-cursors.${attrName}; + }; + size = lib.mkOption { + type = lib.types.int; + readOnly = true; + default = 24; + }; + path = lib.mkOption { + type = lib.types.str; + readOnly = true; + default = "${pkgs.catppuccin-cursors.${attrName}}/share/icons"; + }; + }; }; }; @@ -102,6 +128,7 @@ nixfmt-rfc-style jdk21_headless nerd-fonts.noto + xorg.xcursorgen # kde and kde theming kde-rounded-corners @@ -162,6 +189,22 @@ recursive = true; force = true; }; + ".icons/default/index.theme" = { + text = '' + [Icon Theme] + Name=Default + Comment=Default Cursor Theme + Inherits=${config.userOptions.cursor.name} + ''; + force = true; + }; + }; + + home.pointerCursor = { + gtk.enable = true; + name = config.userOptions.cursor.name; + package = config.userOptions.cursor.package; + size = config.userOptions.cursor.size; }; gtk = { @@ -173,9 +216,9 @@ }; cursorTheme = { - name = "catppuccin-${config.catppuccin.flavor}-${config.catppuccin.accent}-cursors"; - package = pkgs.catppuccin-cursors."${config.catppuccin.flavor}${config.catppuccinUpper.accent}"; - size = 24; + name = config.home.pointerCursor.name; + package = config.home.pointerCursor.package; + size = config.home.pointerCursor.size; }; gtk3.extraConfig = { diff --git a/home/systemd/default.nix b/home/systemd/default.nix index 2e39d7a..32029bc 100644 --- a/home/systemd/default.nix +++ b/home/systemd/default.nix @@ -1,6 +1,17 @@ -{ pkgs, lib, ... }: +{ + config, + pkgs, + lib, + ... +}: { + systemd.user.sessionVariables = { + XCURSOR_THEME = config.userOptions.cursor.name; + XCURSOR_SIZE = toString config.userOptions.cursor.size; + XCURSOR_PATH = config.userOptions.cursor.path; + }; + xdg.configFile."rclone/synology.conf".text = '' [synology] type = sftp diff --git a/home/tiling/niri/niri.nix b/home/tiling/niri/niri.nix index 3e3d86f..294c831 100644 --- a/home/tiling/niri/niri.nix +++ b/home/tiling/niri/niri.nix @@ -41,6 +41,8 @@ environment = { QT_QPA_PLATFORM = "wayland"; DISPLAY = null; + XCURSOR_THEME = config.userOptions.cursor.name; + XCURSOR_SIZE = toString config.userOptions.cursor.size; }; outputs = { "eDP-1" = { @@ -56,8 +58,8 @@ cursor = { hide-when-typing = true; hide-after-inactive-ms = 2000; - size = config.gtk.cursorTheme.size; - theme = config.gtk.cursorTheme.name; + size = config.userOptions.cursor.size; + theme = config.userOptions.cursor.name; }; layout = { gaps = 4; From e464bbae20f4dcefdc9e3388f3598af8efada635 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Sun, 14 Dec 2025 10:36:02 -0500 Subject: [PATCH 121/282] changes to niri --- home/tiling/niri/niri.nix | 9 ++++++++- home/tiling/niri/noctalia.nix | 2 +- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/home/tiling/niri/niri.nix b/home/tiling/niri/niri.nix index 294c831..8b6cc76 100644 --- a/home/tiling/niri/niri.nix +++ b/home/tiling/niri/niri.nix @@ -125,6 +125,10 @@ app-id = "openmw"; title = "OpenMW"; } + { + app-id = "Minecraft"; + title = "Minecraft"; + } ]; open-maximized = true; focus-ring.enable = false; @@ -371,7 +375,10 @@ "Mod+Shift+E".action.quit = { }; "Ctrl+Alt+Delete".action.quit = { }; - "Mod+Shift+P".action.power-off-monitors = { }; + "Mod+Shift+P" = { + action.power-off-monitors = { }; + hotkey-overlay.title = "Turn off the display"; + }; }; }; } diff --git a/home/tiling/niri/noctalia.nix b/home/tiling/niri/noctalia.nix index 74b753b..07b6038 100644 --- a/home/tiling/niri/noctalia.nix +++ b/home/tiling/niri/noctalia.nix @@ -278,7 +278,7 @@ in pinnedExecs = [ ]; useApp2Unit = false; sortByMostUsed = true; - terminalCommand = "kitty"; + terminalCommand = "kitty -e"; customLaunchPrefixEnabled = false; customLaunchPrefix = ""; viewMode = "list"; From aad9076ac3a36e1e83a3bb1c9fbaa1c99fbfc9c9 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Sun, 14 Dec 2025 10:38:46 -0500 Subject: [PATCH 122/282] rebase to unstable update lock (12/15/2025) --- flake.lock | 139 ++++------------------ flake.nix | 6 +- home/all.nix | 67 +++++------ home/qt/qt5ct/qt5ct.conf | 32 ----- home/qt/qt5ct/style-colors.conf | 4 - home/qt/qt6ct/qt6ct.conf | 32 ----- home/qt/qt6ct/style-colors.conf | 4 - home/tiling/niri/niri.nix | 2 +- packages/linux-asahi-bleeding/package.nix | 63 ++++++++++ packages/overlay.nix | 2 + system/all.nix | 2 +- system/hosts/peach/default.nix | 27 +++-- 12 files changed, 141 insertions(+), 239 deletions(-) delete mode 100644 home/qt/qt5ct/qt5ct.conf delete mode 100644 home/qt/qt5ct/style-colors.conf delete mode 100644 home/qt/qt6ct/qt6ct.conf delete mode 100644 home/qt/qt6ct/style-colors.conf create mode 100644 packages/linux-asahi-bleeding/package.nix diff --git a/flake.lock b/flake.lock index 23776c9..7c046f4 100644 --- a/flake.lock +++ b/flake.lock @@ -113,24 +113,6 @@ "type": "github" } }, - "flake-utils": { - "inputs": { - "systems": "systems" - }, - "locked": { - "lastModified": 1731533236, - "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, "home-manager": { "inputs": { "nixpkgs": [ @@ -138,48 +120,19 @@ ] }, "locked": { - "lastModified": 1765605144, - "narHash": "sha256-RM2xs+1HdHxesjOelxoA3eSvXShC8pmBvtyTke4Ango=", + "lastModified": 1765682243, + "narHash": "sha256-yeCxFV/905Wr91yKt5zrVvK6O2CVXWRMSrxqlAZnLp0=", "owner": "nix-community", "repo": "home-manager", - "rev": "90b62096f099b73043a747348c11dbfcfbdea949", + "rev": "58bf3ecb2d0bba7bdf363fc8a6c4d49b4d509d03", "type": "github" }, "original": { "owner": "nix-community", - "ref": "release-25.11", "repo": "home-manager", "type": "github" } }, - "ixx": { - "inputs": { - "flake-utils": [ - "nixvim", - "nuschtosSearch", - "flake-utils" - ], - "nixpkgs": [ - "nixvim", - "nuschtosSearch", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1754860581, - "narHash": "sha256-EM0IE63OHxXCOpDHXaTyHIOk2cNvMCGPqLt/IdtVxgk=", - "owner": "NuschtOS", - "repo": "ixx", - "rev": "babfe85a876162c4acc9ab6fb4483df88fa1f281", - "type": "github" - }, - "original": { - "owner": "NuschtOS", - "ref": "v0.1.1", - "repo": "ixx", - "type": "github" - } - }, "niri": { "inputs": { "niri-stable": "niri-stable", @@ -192,11 +145,11 @@ "xwayland-satellite-unstable": "xwayland-satellite-unstable" }, "locked": { - "lastModified": 1765629179, - "narHash": "sha256-yYQR3ZYXWEh8mAQOhj6ZOZ4VxZrpzhRz14bOXAMPtcQ=", + "lastModified": 1765786620, + "narHash": "sha256-MPgXA3vfeUclJAt1r1LfH6TXmcqDEJm3HVDjr4Y1fIs=", "owner": "sodiboo", "repo": "niri-flake", - "rev": "46e723aa46565b67910187b4b7ad48b615d7f576", + "rev": "97440574d71b235b601013edf4749397b1ce99a6", "type": "github" }, "original": { @@ -225,11 +178,11 @@ "niri-unstable": { "flake": false, "locked": { - "lastModified": 1765625997, - "narHash": "sha256-d0/ugnBSrCJwwySMc5skOMbAfEdjWapc+EMFbcsnd5Q=", + "lastModified": 1765687800, + "narHash": "sha256-Erk+ypR8N+rCvjMdUB1N/v4jtm4QRH9k7r/9zh2HyC8=", "owner": "YaLTeR", "repo": "niri", - "rev": "d1fc1ab731f7cc59923a16acce9a387782bfeb10", + "rev": "7c0898570ca5bd3f10fbf4cf2f8a00edc48d787b", "type": "github" }, "original": { @@ -240,27 +193,27 @@ }, "nixpkgs": { "locked": { - "lastModified": 1765311797, - "narHash": "sha256-mSD5Ob7a+T2RNjvPvOA1dkJHGVrNVl8ZOrAwBjKBDQo=", + "lastModified": 1765472234, + "narHash": "sha256-9VvC20PJPsleGMewwcWYKGzDIyjckEz8uWmT0vCDYK0=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "09eb77e94fa25202af8f3e81ddc7353d9970ac1b", + "rev": "2fbfb1d73d239d2402a8fe03963e37aab15abe8b", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixos-25.11", + "ref": "nixos-unstable", "repo": "nixpkgs", "type": "github" } }, "nixpkgs-stable": { "locked": { - "lastModified": 1765311797, - "narHash": "sha256-mSD5Ob7a+T2RNjvPvOA1dkJHGVrNVl8ZOrAwBjKBDQo=", + "lastModified": 1765762245, + "narHash": "sha256-3iXM/zTqEskWtmZs3gqNiVtRTsEjYAedIaLL0mSBsrk=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "09eb77e94fa25202af8f3e81ddc7353d9970ac1b", + "rev": "c8cfcd6ccd422e41cc631a0b73ed4d5a925c393d", "type": "github" }, "original": { @@ -276,20 +229,18 @@ "nixpkgs": [ "nixpkgs" ], - "nuschtosSearch": "nuschtosSearch", - "systems": "systems_2" + "systems": "systems" }, "locked": { - "lastModified": 1765647805, - "narHash": "sha256-CdaiOfpBiS4kw/DR0Ut+02fpFnjM8hNZMZ53a1pavak=", + "lastModified": 1765796308, + "narHash": "sha256-szKgoF0JbDUvWkqjB2AyyFagmsF5ZFEjajZRUiUV9mU=", "owner": "nix-community", "repo": "nixvim", - "rev": "f0b0cc7cae2cf5d76608c9164ab8824a2387e146", + "rev": "12a76dd12beccd8d18249b05d10d6acda4e722e0", "type": "github" }, "original": { "owner": "nix-community", - "ref": "nixos-25.11", "repo": "nixvim", "type": "github" } @@ -301,11 +252,11 @@ ] }, "locked": { - "lastModified": 1765675278, - "narHash": "sha256-GSa/jaWld+WKxt39DDBPoX1j+kCdNmFF9stTWbeVhp8=", + "lastModified": 1765811783, + "narHash": "sha256-cON2s/eSCpqd+5ijOOt03+70UPEk7YoLwUw5ofWiV9g=", "owner": "noctalia-dev", "repo": "noctalia-shell", - "rev": "7d795256de6dbe7b4044161af2b6002421bdb188", + "rev": "50a014f1a61b64127755591a62cf8fab33d203e3", "type": "github" }, "original": { @@ -322,11 +273,11 @@ ] }, "locked": { - "lastModified": 1765679538, - "narHash": "sha256-y6PplijrOq2lI7QjHjcBbi/NT2R1PrpNnjkMgB/83r4=", + "lastModified": 1765815077, + "narHash": "sha256-o25WeGyDzOUDM0Ek5gbd6xSz31WMbHhZJN24uPGsmXE=", "owner": "nix-community", "repo": "NUR", - "rev": "a23427eb9342c578becbe0179e2654e622c41cdb", + "rev": "c5178bd6a61784f5d1e65dfe3c1e79b22a7cbcf2", "type": "github" }, "original": { @@ -335,29 +286,6 @@ "type": "github" } }, - "nuschtosSearch": { - "inputs": { - "flake-utils": "flake-utils", - "ixx": "ixx", - "nixpkgs": [ - "nixvim", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1761730856, - "narHash": "sha256-t1i5p/vSWwueZSC0Z2BImxx3BjoUDNKyC2mk24krcMY=", - "owner": "NuschtOS", - "repo": "search", - "rev": "e29de6db0cb3182e9aee75a3b1fd1919d995d85b", - "type": "github" - }, - "original": { - "owner": "NuschtOS", - "repo": "search", - "type": "github" - } - }, "plasma-manager": { "inputs": { "home-manager": [ @@ -410,21 +338,6 @@ "type": "github" } }, - "systems_2": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" - } - }, "xwayland-satellite-stable": { "flake": false, "locked": { diff --git a/flake.nix b/flake.nix index b3811f9..9bf8615 100644 --- a/flake.nix +++ b/flake.nix @@ -2,7 +2,7 @@ description = "My NixOS Configuration"; inputs = { - nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.11"; + nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; catppuccin = { url = "github:catppuccin/nix"; @@ -14,7 +14,7 @@ }; home-manager = { - url = "github:nix-community/home-manager/release-25.11"; + url = "github:nix-community/home-manager"; inputs.nixpkgs.follows = "nixpkgs"; }; @@ -40,7 +40,7 @@ }; nixvim = { - url = "github:nix-community/nixvim/nixos-25.11"; + url = "github:nix-community/nixvim"; inputs.nixpkgs.follows = "nixpkgs"; }; diff --git a/home/all.nix b/home/all.nix index 9aa1f06..f58f656 100755 --- a/home/all.nix +++ b/home/all.nix @@ -179,16 +179,6 @@ ]; home.file = { - ".config/qt5ct" = { - source = ./qt/qt5ct; - recursive = true; - force = true; - }; - ".config/qt6ct" = { - source = ./qt/qt6ct; - recursive = true; - force = true; - }; ".icons/default/index.theme" = { text = '' [Icon Theme] @@ -230,36 +220,33 @@ }; }; - # qt = { - # enable = true; - # # the following will be possible in NixOS 26.05 - # # https://github.com/nix-community/home-manager/commit/f9d45d664ed06a11861d0ba29e34f390c07bf62e - # # until this flake is updated, it will use the configs as implemented above - # qt5ctSettings = { - # Appearance = { - # style = "Breeze"; - # icon_theme = config.gtk.iconTheme.name; - # color_scheme = "catppuccin-${config.catppuccin.flavor}-${config.catppuccin.accent}"; - # standard_dialogs = "default"; - # }; - # Fonts = { - # fixed = "\"${config.userOptions.fontMono.name},${config.userOptions.fontMono.name}\""; - # general = "\"${config.userOptions.fontSans.name},${config.userOptions.fontSans.size}\""; - # }; - # }; - # qt6ctSettings = { - # Appearance = { - # style = "Breeze"; - # icon_theme = config.gtk.iconTheme.name; - # color_scheme = "catppuccin-${config.catppuccin.flavor}-${config.catppuccin.accent}"; - # standard_dialogs = "default"; - # }; - # Fonts = { - # fixed = "\"${config.userOptions.fontMono.name},${config.userOptions.fontMono.name}\""; - # general = "\"${config.userOptions.fontSans.name},${config.userOptions.fontSans.size}\""; - # }; - # }; - # }; + qt = { + enable = true; + qt5ctSettings = { + Appearance = { + style = "Breeze"; + icon_theme = config.gtk.iconTheme.name; + color_scheme = "catppuccin-${config.catppuccin.flavor}-${config.catppuccin.accent}"; + standard_dialogs = "default"; + }; + Fonts = { + fixed = "\"${config.userOptions.fontMono.name},${config.userOptions.fontMono.name}\""; + general = "\"${config.userOptions.fontSans.name},${toString config.userOptions.fontSans.size}\""; + }; + }; + qt6ctSettings = { + Appearance = { + style = "Breeze"; + icon_theme = config.gtk.iconTheme.name; + color_scheme = "catppuccin-${config.catppuccin.flavor}-${config.catppuccin.accent}"; + standard_dialogs = "default"; + }; + Fonts = { + fixed = "\"${config.userOptions.fontMono.name},${config.userOptions.fontMono.name}\""; + general = "\"${config.userOptions.fontSans.name},${toString config.userOptions.fontSans.size}\""; + }; + }; + }; services = { spotifyd = { diff --git a/home/qt/qt5ct/qt5ct.conf b/home/qt/qt5ct/qt5ct.conf deleted file mode 100644 index 89cf609..0000000 --- a/home/qt/qt5ct/qt5ct.conf +++ /dev/null @@ -1,32 +0,0 @@ -[Appearance] -color_scheme_path=/home/sckova/.config/qt5ct/style-colors.conf -custom_palette=true -icon_theme=Colloid-Dark -standard_dialogs=default -style=Breeze - -[Fonts] -fixed="Noto Sans,12,-1,5,50,0,0,0,0,0" -general="Noto Sans,12,-1,5,50,0,0,0,0,0" - -[Interface] -activate_item_on_single_click=1 -buttonbox_layout=0 -cursor_flash_time=1000 -dialog_buttons_have_icons=1 -double_click_interval=400 -gui_effects=@Invalid() -keyboard_scheme=2 -menus_have_icons=true -show_shortcuts_in_context_menus=true -stylesheets=@Invalid() -toolbutton_style=4 -underline_shortcut=1 -wheel_scroll_lines=3 - -[SettingsWindow] -geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\0\0\0\0\0\0\0\0\x3V\0\0\x4W\0\0\0\0\0\0\0\0\0\0\x3V\0\0\x4W\0\0\0\0\0\0\0\0\x6\xc0\0\0\0\0\0\0\0\0\0\0\x3V\0\0\x4W) - -[Troubleshooting] -force_raster_widgets=1 -ignored_applications=@Invalid() diff --git a/home/qt/qt5ct/style-colors.conf b/home/qt/qt5ct/style-colors.conf deleted file mode 100644 index 4afdd7c..0000000 --- a/home/qt/qt5ct/style-colors.conf +++ /dev/null @@ -1,4 +0,0 @@ -[ColorScheme] -active_colors=#ffcdd6f4, #ff313244, #ff3d3d5e, #ff2f2f48, #ff0c0c12, #ff151520, #ffcdd6f4, #ffcdd6f4, #ffcdd6f4, #ff1e1e2e, #ff181825, #ff09090d, #fffab387, #ff11111b, #fffab387, #ffcba6f7, #ff181825, #ffffffff, #ff1e1e2e, #ffcdd6f4, #806c7086 -disabled_colors=#ff6c7086, #ff313244, #ff45475a, #ff313244, #ff11111b, #ff181825, #ff6c7086, #ffcdd6f4, #ff6c7086, #ff1e1e2e, #ff181825, #ff11111b, #ff181825, #ff6c7086, #ffa9bcdb, #ffc7cceb, #ff181825, #ffffffff, #ff1e1e2e, #ffcdd6f4, #806c7086 -inactive_colors=#ffcdd6f4, #ff313244, #ff3d3d5e, #ff2f2f48, #ff0c0c12, #ff151520, #ffcdd6f4, #ffcdd6f4, #ffcdd6f4, #ff1e1e2e, #ff181825, #ff09090d, #fffab387, #ff11111b, #fffab387, #ffcba6f7, #ff181825, #ffffffff, #ff1e1e2e, #ffcdd6f4, #806c7086 diff --git a/home/qt/qt6ct/qt6ct.conf b/home/qt/qt6ct/qt6ct.conf deleted file mode 100644 index 673d92f..0000000 --- a/home/qt/qt6ct/qt6ct.conf +++ /dev/null @@ -1,32 +0,0 @@ -[Appearance] -color_scheme_path=/home/sckova/.config/qt6ct/style-colors.conf -custom_palette=true -icon_theme=Colloid-Dark -standard_dialogs=default -style=Breeze - -[Fonts] -fixed="Noto Sans,12,-1,5,400,0,0,0,0,0,0,0,0,0,0,1" -general="Noto Sans,12,-1,5,400,0,0,0,0,0,0,0,0,0,0,1" - -[Interface] -activate_item_on_single_click=1 -buttonbox_layout=0 -cursor_flash_time=1000 -dialog_buttons_have_icons=1 -double_click_interval=400 -gui_effects=@Invalid() -keyboard_scheme=2 -menus_have_icons=true -show_shortcuts_in_context_menus=true -stylesheets=@Invalid() -toolbutton_style=4 -underline_shortcut=1 -wheel_scroll_lines=3 - -[SettingsWindow] -geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\0\0\0\0\0\0\0\0\x3V\0\0\x4W\0\0\0\0\0\0\0\0\0\0\x3V\0\0\x4W\0\0\0\0\0\0\0\0\x6\xc0\0\0\0\0\0\0\0\0\0\0\x3V\0\0\x4W) - -[Troubleshooting] -force_raster_widgets=1 -ignored_applications=@Invalid() diff --git a/home/qt/qt6ct/style-colors.conf b/home/qt/qt6ct/style-colors.conf deleted file mode 100644 index 0af60d5..0000000 --- a/home/qt/qt6ct/style-colors.conf +++ /dev/null @@ -1,4 +0,0 @@ -[ColorScheme] -active_colors=#ffcdd6f4, #ff313244, #ff3d3d5e, #ff2f2f48, #ff0c0c12, #ff151520, #ffcdd6f4, #ffffffff, #ffcdd6f4, #ff1e1e2e, #ff181825, #ff09090d, #fffab387, #ff11111b, #fffab387, #ffcba6f7, #ff181825, #ff000000, #ff1e1e2e, #ffcdd6f4, #ffa6adc8, #fffab387 -disabled_colors=#ffbebebe, #ffefefef, #ffffffff, #ffcacaca, #ffbebebe, #ffb8b8b8, #ffbebebe, #ffffffff, #ffbebebe, #ffefefef, #ffefefef, #ffb1b1b1, #ff919191, #ffffffff, #ff0000ff, #ffff00ff, #fff7f7f7, #ff000000, #ffffffdc, #ff000000, #80000000, #ff919191 -inactive_colors=#ffcdd6f4, #ff313244, #ff3d3d5e, #ff2f2f48, #ff0c0c12, #ff151520, #ffcdd6f4, #ffffffff, #ffcdd6f4, #ff1e1e2e, #ff181825, #ff09090d, #fffab387, #ff11111b, #fffab387, #ffcba6f7, #ff181825, #ff000000, #ff1e1e2e, #ffcdd6f4, #ffa6adc8, #fffab387 diff --git a/home/tiling/niri/niri.nix b/home/tiling/niri/niri.nix index 8b6cc76..1518790 100644 --- a/home/tiling/niri/niri.nix +++ b/home/tiling/niri/niri.nix @@ -1,7 +1,7 @@ { config, pkgs, ... }: { - programs.niri.package = pkgs.niri-stable.overrideAttrs (old: { + programs.niri.package = pkgs.niri-unstable.overrideAttrs (old: { doCheck = false; }); # https://github.com/sodiboo/niri-flake/blob/main/docs.md diff --git a/packages/linux-asahi-bleeding/package.nix b/packages/linux-asahi-bleeding/package.nix new file mode 100644 index 0000000..f9610fb --- /dev/null +++ b/packages/linux-asahi-bleeding/package.nix @@ -0,0 +1,63 @@ +{ + lib, + callPackage, + linuxPackagesFor, + _kernelPatches ? [ ], +}: + +let + linux-asahi-pkg = + { + stdenv, + lib, + fetchFromGitHub, + buildLinux, + ... + }: + buildLinux rec { + inherit stdenv lib; + + pname = "linux-asahi"; + version = "6.17.11"; + modDirVersion = version; + extraMeta.branch = "6.17"; + + src = fetchFromGitHub { + owner = "AsahiLinux"; + repo = "linux"; + tag = "asahi-6.17.11-1"; + hash = "sha256-bTptFNR7ehMdW3M05c0S6GZ4H19GCYvplso8zOkEnmQ="; + }; + + kernelPatches = [ + { + name = "Asahi config"; + patch = null; + structuredExtraConfig = with lib.kernel; { + # Needed for GPU + ARM64_16K_PAGES = yes; + + ARM64_MEMORY_MODEL_CONTROL = yes; + ARM64_ACTLR_STATE = yes; + + # Might lead to the machine rebooting if not loaded soon enough + APPLE_WATCHDOG = yes; + + # Can not be built as a module, defaults to no + APPLE_M1_CPU_PMU = yes; + + # Defaults to 'y', but we want to allow the user to set options in modprobe.d + HID_APPLE = module; + + APPLE_PMGR_MISC = yes; + APPLE_PMGR_PWRSTATE = yes; + }; + features.rust = true; + } + ] + ++ _kernelPatches; + }; + + linux-asahi = callPackage linux-asahi-pkg { }; +in +lib.recurseIntoAttrs (linuxPackagesFor linux-asahi) diff --git a/packages/overlay.nix b/packages/overlay.nix index 71bf926..84be97b 100644 --- a/packages/overlay.nix +++ b/packages/overlay.nix @@ -24,6 +24,8 @@ final: prev: { inherit helium-widevine; }; + linux-asahi = prev.callPackage (builtins.path { path = ./linux-asahi-bleeding/package.nix; }) { }; + spotifyd = prev.callPackage (builtins.path { path = ./spotifyd/package.nix; }) { }; widevine-firefox = prev.callPackage (builtins.path { path = ./widevine-firefox/package.nix; }) { }; diff --git a/system/all.nix b/system/all.nix index b14f6cd..8eba616 100755 --- a/system/all.nix +++ b/system/all.nix @@ -138,7 +138,7 @@ programs.niri = { enable = true; - package = pkgs.niri-stable.overrideAttrs (old: { + package = pkgs.niri-unstable.overrideAttrs (old: { doCheck = false; }); }; diff --git a/system/hosts/peach/default.nix b/system/hosts/peach/default.nix index 97b45af..6ae0712 100644 --- a/system/hosts/peach/default.nix +++ b/system/hosts/peach/default.nix @@ -15,6 +15,24 @@ boot.kernelParams = [ "apple_dcp.show_notch=1" ]; + # fixes a regression that crashes firefox by upgrading + # from 25.3.1 to 25.3.2 (very unstable) + # https://github.com/nix-community/nixos-apple-silicon/issues/380 + nixpkgs.overlays = [ + (final: prev: { + mesa = prev.mesa.overrideAttrs (oldAttrs: { + version = "25.3.2"; + src = prev.fetchFromGitLab { + domain = "gitlab.freedesktop.org"; + owner = "mesa"; + repo = "mesa"; + rev = "11000ba6afe0f32cbeed45d4db3c65ff51487dec"; + hash = "sha256-YZg17uATScPwjUEEMEuY3NFNdpMdOOYbD6Zoh5psl6I="; + }; + }); + }) + ]; + catppuccin.accent = "peach"; home-manager.users.sckova = { @@ -35,15 +53,6 @@ }; }; - # hardware.graphics.package = - # # Workaround for Mesa 25.3.0 regression - # # https://github.com/nix-community/nixos-apple-silicon/issues/380 - # assert pkgs.mesa.version == "25.3.0"; - # (import (fetchTarball { - # url = "https://github.com/NixOS/nixpkgs/archive/c5ae371f1a6a7fd27823bc500d9390b38c05fa55.tar.gz"; - # sha256 = "sha256-4PqRErxfe+2toFJFgcRKZ0UI9NSIOJa+7RXVtBhy4KE="; - # }) { localSystem = pkgs.stdenv.hostPlatform; }).mesa; - swapDevices = [ { device = "/swapfile"; From ff6f0c9624019e7176e7ab5cbad8b8a92a5d1c41 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Sun, 14 Dec 2025 12:31:45 -0500 Subject: [PATCH 123/282] set up 26.05 home manager qt config --- home/all.nix | 99 ++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 92 insertions(+), 7 deletions(-) diff --git a/home/all.nix b/home/all.nix index f58f656..9151588 100755 --- a/home/all.nix +++ b/home/all.nix @@ -98,6 +98,11 @@ default = "${pkgs.catppuccin-cursors.${attrName}}/share/icons"; }; }; + isDark = lib.mkOption { + type = lib.types.bool; + readOnly = true; + default = config.catppuccin.flavor != "latte"; + }; }; }; @@ -201,7 +206,7 @@ enable = true; iconTheme = { - name = "Colloid-Dark"; + name = if config.userOptions.isDark then "Colloid-Dark" else "Colloid-Light"; package = pkgs.colloid-icon-theme; }; @@ -226,25 +231,105 @@ Appearance = { style = "Breeze"; icon_theme = config.gtk.iconTheme.name; - color_scheme = "catppuccin-${config.catppuccin.flavor}-${config.catppuccin.accent}"; + color_scheme_path = "/home/${config.userOptions.username}/.config/qt5ct/qt5ct.conf"; + custom_palette = true; standard_dialogs = "default"; }; - Fonts = { - fixed = "\"${config.userOptions.fontMono.name},${config.userOptions.fontMono.name}\""; - general = "\"${config.userOptions.fontSans.name},${toString config.userOptions.fontSans.size}\""; - }; + Fonts = config.qt.qt6ctSettings.Fonts; + ColorScheme = config.qt.qt6ctSettings.ColorScheme; }; qt6ctSettings = { Appearance = { style = "Breeze"; icon_theme = config.gtk.iconTheme.name; - color_scheme = "catppuccin-${config.catppuccin.flavor}-${config.catppuccin.accent}"; + color_scheme_path = "/home/${config.userOptions.username}/.config/qt6ct/qt6ct.conf"; + custom_palette = true; standard_dialogs = "default"; }; Fonts = { fixed = "\"${config.userOptions.fontMono.name},${config.userOptions.fontMono.name}\""; general = "\"${config.userOptions.fontSans.name},${toString config.userOptions.fontSans.size}\""; }; + ColorScheme = + let + c = pkgs.catppuccin.bare.${config.catppuccin.flavor}; + accent = c.${config.catppuccin.accent}; + mkColors = roles: builtins.concatStringsSep ", " (map (r: "#ff${r}") roles); + in + { + active_colors = mkColors [ + c.text + c.surface0 + c.surface1 + c.surface0 + c.base + c.mantle + c.text + c.text + c.text + c.base + c.mantle + c.crust + accent + c.base + accent + c.mauve + c.mantle + "000000" + c.base + c.text + c.overlay0 + accent + ]; + disabled_colors = mkColors [ + c.overlay0 + c.surface0 + c.surface1 + c.surface0 + c.overlay0 + c.mantle + c.overlay0 + c.text + c.overlay0 + c.surface0 + c.surface0 + c.mantle + c.overlay1 + c.text + "0000ff" + "ff00ff" + c.surface0 + "000000" + c.surface0 + c.base + "80000000" + c.overlay1 + ]; + inactive_colors = mkColors [ + c.text + c.surface0 + c.surface1 + c.surface0 + c.base + c.mantle + c.text + c.text + c.text + c.base + c.mantle + c.crust + accent + c.base + accent + c.mauve + c.mantle + "000000" + c.base + c.text + c.overlay0 + accent + ]; + }; }; }; From 39ed52b866bf6afd155000c5163a231c0c0d45cf Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Sun, 14 Dec 2025 12:31:53 -0500 Subject: [PATCH 124/282] other mesa fix didn't work --- system/hosts/peach/default.nix | 25 ++++++++----------------- 1 file changed, 8 insertions(+), 17 deletions(-) diff --git a/system/hosts/peach/default.nix b/system/hosts/peach/default.nix index 6ae0712..fd773ea 100644 --- a/system/hosts/peach/default.nix +++ b/system/hosts/peach/default.nix @@ -15,23 +15,14 @@ boot.kernelParams = [ "apple_dcp.show_notch=1" ]; - # fixes a regression that crashes firefox by upgrading - # from 25.3.1 to 25.3.2 (very unstable) - # https://github.com/nix-community/nixos-apple-silicon/issues/380 - nixpkgs.overlays = [ - (final: prev: { - mesa = prev.mesa.overrideAttrs (oldAttrs: { - version = "25.3.2"; - src = prev.fetchFromGitLab { - domain = "gitlab.freedesktop.org"; - owner = "mesa"; - repo = "mesa"; - rev = "11000ba6afe0f32cbeed45d4db3c65ff51487dec"; - hash = "sha256-YZg17uATScPwjUEEMEuY3NFNdpMdOOYbD6Zoh5psl6I="; - }; - }); - }) - ]; + hardware.graphics.package = + # Workaround for Mesa 25.3.0 regression + # https://github.com/nix-community/nixos-apple-silicon/issues/380 + assert pkgs.mesa.version == "25.3.1"; + (import (fetchTarball { + url = "https://github.com/NixOS/nixpkgs/archive/c5ae371f1a6a7fd27823bc500d9390b38c05fa55.tar.gz"; + sha256 = "sha256-4PqRErxfe+2toFJFgcRKZ0UI9NSIOJa+7RXVtBhy4KE="; + }) { localSystem = pkgs.stdenv.hostPlatform; }).mesa; catppuccin.accent = "peach"; From 4f2bbe077ca272faf3526610b260482d54f314c0 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Sun, 14 Dec 2025 13:09:27 -0500 Subject: [PATCH 125/282] updates to qt theming --- home/all.nix | 21 ++++++++++++++++----- home/tiling/niri/niri.nix | 1 + 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/home/all.nix b/home/all.nix index 9151588..d7c8dbf 100755 --- a/home/all.nix +++ b/home/all.nix @@ -47,7 +47,7 @@ }; size = lib.mkOption { type = lib.types.int; - default = 12; + default = 11; }; }; fontSerif = { @@ -58,7 +58,7 @@ }; size = lib.mkOption { type = lib.types.int; - default = 12; + default = 11; }; }; fontMono = { @@ -134,6 +134,11 @@ jdk21_headless nerd-fonts.noto xorg.xcursorgen + kdePackages.qtstyleplugin-kvantum + (catppuccin-kvantum.override { + variant = config.catppuccin.flavor; + accent = config.catppuccin.accent; + }) # kde and kde theming kde-rounded-corners @@ -193,6 +198,12 @@ ''; force = true; }; + ".config/Kvantum/kvantum.kvconfig" = { + text = lib.generators.toINI { } { + General.theme = "catppuccin-${config.catppuccin.flavor}-${config.catppuccin.accent}"; + }; + force = true; + }; }; home.pointerCursor = { @@ -229,7 +240,7 @@ enable = true; qt5ctSettings = { Appearance = { - style = "Breeze"; + style = "kvantum"; icon_theme = config.gtk.iconTheme.name; color_scheme_path = "/home/${config.userOptions.username}/.config/qt5ct/qt5ct.conf"; custom_palette = true; @@ -240,14 +251,14 @@ }; qt6ctSettings = { Appearance = { - style = "Breeze"; + style = "kvantum"; icon_theme = config.gtk.iconTheme.name; color_scheme_path = "/home/${config.userOptions.username}/.config/qt6ct/qt6ct.conf"; custom_palette = true; standard_dialogs = "default"; }; Fonts = { - fixed = "\"${config.userOptions.fontMono.name},${config.userOptions.fontMono.name}\""; + fixed = "\"${config.userOptions.fontMono.name},${toString config.userOptions.fontMono.size}\""; general = "\"${config.userOptions.fontSans.name},${toString config.userOptions.fontSans.size}\""; }; ColorScheme = diff --git a/home/tiling/niri/niri.nix b/home/tiling/niri/niri.nix index 1518790..cdadd24 100644 --- a/home/tiling/niri/niri.nix +++ b/home/tiling/niri/niri.nix @@ -40,6 +40,7 @@ }; environment = { QT_QPA_PLATFORM = "wayland"; + QT_QPA_PLATFORMTHEME = "qt6ct"; DISPLAY = null; XCURSOR_THEME = config.userOptions.cursor.name; XCURSOR_SIZE = toString config.userOptions.cursor.size; From 1f2e9434b8abb9686178b2eaa79e992835d925f0 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Sun, 14 Dec 2025 13:09:51 -0500 Subject: [PATCH 126/282] use upstream equivalent of linux-6.17-11 declaration --- flake.lock | 7 +-- flake.nix | 2 +- packages/linux-asahi-bleeding/package.nix | 63 ----------------------- packages/overlay.nix | 2 - 4 files changed, 5 insertions(+), 69 deletions(-) delete mode 100644 packages/linux-asahi-bleeding/package.nix diff --git a/flake.lock b/flake.lock index 7c046f4..18d7a57 100644 --- a/flake.lock +++ b/flake.lock @@ -8,15 +8,16 @@ ] }, "locked": { - "lastModified": 1765528634, - "narHash": "sha256-uIavvJkDwTZD1QY/oSkDtPN9xwkLwQayoZ5xOni4SBY=", + "lastModified": 1765530480, + "narHash": "sha256-JdEucq+zm6pAol40wB+7Cu464sn5SSKXjxBOe+XkWck=", "owner": "nix-community", "repo": "nixos-apple-silicon", - "rev": "fc1440d6e6adb24d9b2650670744bae35654c867", + "rev": "e7c623629d0c1d2556b57e34edcc18f6d5d123cb", "type": "github" }, "original": { "owner": "nix-community", + "ref": "linux-6-17-11", "repo": "nixos-apple-silicon", "type": "github" } diff --git a/flake.nix b/flake.nix index 9bf8615..e8e314f 100644 --- a/flake.nix +++ b/flake.nix @@ -45,7 +45,7 @@ }; apple-silicon = { - url = "github:nix-community/nixos-apple-silicon"; + url = "github:nix-community/nixos-apple-silicon/linux-6-17-11"; inputs.nixpkgs.follows = "nixpkgs"; }; }; diff --git a/packages/linux-asahi-bleeding/package.nix b/packages/linux-asahi-bleeding/package.nix deleted file mode 100644 index f9610fb..0000000 --- a/packages/linux-asahi-bleeding/package.nix +++ /dev/null @@ -1,63 +0,0 @@ -{ - lib, - callPackage, - linuxPackagesFor, - _kernelPatches ? [ ], -}: - -let - linux-asahi-pkg = - { - stdenv, - lib, - fetchFromGitHub, - buildLinux, - ... - }: - buildLinux rec { - inherit stdenv lib; - - pname = "linux-asahi"; - version = "6.17.11"; - modDirVersion = version; - extraMeta.branch = "6.17"; - - src = fetchFromGitHub { - owner = "AsahiLinux"; - repo = "linux"; - tag = "asahi-6.17.11-1"; - hash = "sha256-bTptFNR7ehMdW3M05c0S6GZ4H19GCYvplso8zOkEnmQ="; - }; - - kernelPatches = [ - { - name = "Asahi config"; - patch = null; - structuredExtraConfig = with lib.kernel; { - # Needed for GPU - ARM64_16K_PAGES = yes; - - ARM64_MEMORY_MODEL_CONTROL = yes; - ARM64_ACTLR_STATE = yes; - - # Might lead to the machine rebooting if not loaded soon enough - APPLE_WATCHDOG = yes; - - # Can not be built as a module, defaults to no - APPLE_M1_CPU_PMU = yes; - - # Defaults to 'y', but we want to allow the user to set options in modprobe.d - HID_APPLE = module; - - APPLE_PMGR_MISC = yes; - APPLE_PMGR_PWRSTATE = yes; - }; - features.rust = true; - } - ] - ++ _kernelPatches; - }; - - linux-asahi = callPackage linux-asahi-pkg { }; -in -lib.recurseIntoAttrs (linuxPackagesFor linux-asahi) diff --git a/packages/overlay.nix b/packages/overlay.nix index 84be97b..71bf926 100644 --- a/packages/overlay.nix +++ b/packages/overlay.nix @@ -24,8 +24,6 @@ final: prev: { inherit helium-widevine; }; - linux-asahi = prev.callPackage (builtins.path { path = ./linux-asahi-bleeding/package.nix; }) { }; - spotifyd = prev.callPackage (builtins.path { path = ./spotifyd/package.nix; }) { }; widevine-firefox = prev.callPackage (builtins.path { path = ./widevine-firefox/package.nix; }) { }; From d806ed0581854fc42541a78af294233185e2e0f1 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Sun, 14 Dec 2025 13:55:15 -0500 Subject: [PATCH 127/282] use colloid gtk theme --- home/all.nix | 42 ++++++++++++++++++++++++++++++++++++++++++ home/kde/plasma.nix | 3 --- 2 files changed, 42 insertions(+), 3 deletions(-) diff --git a/home/all.nix b/home/all.nix index d7c8dbf..30f98ee 100755 --- a/home/all.nix +++ b/home/all.nix @@ -2,6 +2,7 @@ config, pkgs, lib, + types, ... }: @@ -216,6 +217,47 @@ gtk = { enable = true; + theme = + let + mapping = { + maroon = "red"; + red = "red"; + peach = "orange"; + yellow = "yellow"; + green = "green"; + teal = "teal"; + sky = "teal"; + sapphire = "default"; + blue = "default"; + mauve = "purple"; + lavender = "purple"; + pink = "pink"; + flamingo = "pink"; + rosewater = "pink"; + }; + rawThemeVariant = lib.attrByPath [ config.catppuccin.accent ] "default" mapping; + rawColorVariant = if config.userOptions.isDark then "dark" else "light"; + capitalize = + s: + if s == "" then + "" + else + (lib.strings.toUpper (builtins.substring 0 1 s)) + + (builtins.substring 1 (builtins.stringLength s) s); + formattedThemeColor = if rawThemeVariant == "default" then "" else "-${capitalize rawThemeVariant}"; + in + { + name = "Colloid${formattedThemeColor}-${capitalize rawColorVariant}-Catppuccin"; + package = ( + pkgs.colloid-gtk-theme.override { + themeVariants = [ rawThemeVariant ]; + sizeVariants = [ "standard" ]; + colorVariants = [ rawColorVariant ]; + tweaks = [ "catppuccin" ]; + } + ); + }; + iconTheme = { name = if config.userOptions.isDark then "Colloid-Dark" else "Colloid-Light"; package = pkgs.colloid-icon-theme; diff --git a/home/kde/plasma.nix b/home/kde/plasma.nix index 286abc5..5412f48 100644 --- a/home/kde/plasma.nix +++ b/home/kde/plasma.nix @@ -1,9 +1,6 @@ { config, pkgs, ... }: { - - gtk.theme.name = "Breeze"; - programs.plasma = { enable = true; overrideConfig = true; From 498ffad0c420dd1f9ef9fb8313b06c6e0aa73faa Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Sun, 14 Dec 2025 15:23:45 -0500 Subject: [PATCH 128/282] fix firefox widevine --- flake.nix | 1 + home/browsers/firefox/default.nix | 4 --- packages/overlay.nix | 2 -- packages/widevine-firefox/package.nix | 21 ---------------- system/widevine/default.nix | 35 +++++++++++++++++++++++++++ 5 files changed, 36 insertions(+), 27 deletions(-) delete mode 100644 packages/widevine-firefox/package.nix create mode 100644 system/widevine/default.nix diff --git a/flake.nix b/flake.nix index e8e314f..4b8c044 100644 --- a/flake.nix +++ b/flake.nix @@ -87,6 +87,7 @@ ]; } ./system/all.nix + ./system/widevine/default.nix ./system/shell/fish.nix ./system/tailscale/default.nix ./system/hosts/${hostname}/default.nix diff --git a/home/browsers/firefox/default.nix b/home/browsers/firefox/default.nix index 99a5455..759d13f 100644 --- a/home/browsers/firefox/default.nix +++ b/home/browsers/firefox/default.nix @@ -8,10 +8,6 @@ }: { - home.sessionVariables = lib.mkIf pkgs.stdenv.hostPlatform.isAarch64 { - MOZ_GMP_PATH = "${pkgs.widevine-firefox}/gmp-widevinecdm/system-installed"; - }; - home.file.".mozilla/firefox/default/chrome" = { source = ./chrome; force = true; diff --git a/packages/overlay.nix b/packages/overlay.nix index 71bf926..7377b92 100644 --- a/packages/overlay.nix +++ b/packages/overlay.nix @@ -25,6 +25,4 @@ final: prev: { }; spotifyd = prev.callPackage (builtins.path { path = ./spotifyd/package.nix; }) { }; - - widevine-firefox = prev.callPackage (builtins.path { path = ./widevine-firefox/package.nix; }) { }; } diff --git a/packages/widevine-firefox/package.nix b/packages/widevine-firefox/package.nix deleted file mode 100644 index 9fc0d22..0000000 --- a/packages/widevine-firefox/package.nix +++ /dev/null @@ -1,21 +0,0 @@ -{ - stdenv, - widevine-cdm, -}: - -stdenv.mkDerivation { - name = "widevine-firefox"; - version = widevine-cdm.version; - - buildCommand = '' - mkdir -p $out/gmp-widevinecdm/system-installed - ln -s "${widevine-cdm}/share/google/chrome/WidevineCdm/manifest.json" $out/gmp-widevinecdm/system-installed/manifest.json - ln -s "${widevine-cdm}/share/google/chrome/WidevineCdm/_platform_specific/linux_arm64/libwidevinecdm.so" $out/gmp-widevinecdm/system-installed/libwidevinecdm.so - ''; - - meta = widevine-cdm.meta // { - platforms = [ - "aarch64-linux" - ]; - }; -} diff --git a/system/widevine/default.nix b/system/widevine/default.nix new file mode 100644 index 0000000..0d7aec6 --- /dev/null +++ b/system/widevine/default.nix @@ -0,0 +1,35 @@ +{ + config, + lib, + pkgs, + ... +}: + +{ + nixpkgs.overlays = lib.mkIf (config.nixpkgs.hostPlatform.isLinux) [ + (final: prev: { + wrapFirefox = + browser: opts: + let + extraPrefs = (opts.extraPrefs or "") + '' + lockPref("media.gmp-widevinecdm.version", "system-installed"); + lockPref("media.gmp-widevinecdm.visible", true); + lockPref("media.gmp-widevinecdm.enabled", true); + lockPref("media.gmp-widevinecdm.autoupdate", false); + lockPref("media.eme.enabled", true); + lockPref("media.eme.encrypted-media-encryption-scheme.enabled", true); + ''; + widevineCdmDir = "${final.widevine-cdm}/share/google/chrome/WidevineCdm"; + widevineOutDir = "$out/gmp-widevinecdm/system-installed"; + in + (prev.wrapFirefox browser (opts // { inherit extraPrefs; })).overrideAttrs (previousAttrs: { + buildCommand = previousAttrs.buildCommand + '' + mkdir -p "${widevineOutDir}" + ln -s "${widevineCdmDir}/_platform_specific/linux_arm64/libwidevinecdm.so" "${widevineOutDir}/libwidevinecdm.so" + ln -s "${widevineCdmDir}/manifest.json" "${widevineOutDir}/manifest.json" + wrapProgram "$oldExe" --set MOZ_GMP_PATH "${widevineOutDir}" + ''; + }); + }) + ]; +} From c85a19aafde45e1e3bb2c7189f0ba5cbb90edae1 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Sun, 14 Dec 2025 15:35:13 -0500 Subject: [PATCH 129/282] modify structure --- flake.nix | 8 ++--- hardware/{alien.nix => alien/default.nix} | 0 hardware/{peach.nix => peach/default.nix} | 0 .../default.nix} | 0 home/{all.nix => default.nix} | 0 home/hosts/{alien.nix => alien/default.nix} | 0 home/hosts/{peach.nix => peach/default.nix} | 0 .../default.nix} | 0 home/kde/{plasma.nix => default.nix} | 18 +++++++++++ home/kde/other.nix | 21 ------------- home/tiling/niri/default.nix | 4 +++ .../{bing-wallpaper.nix => default.nix} | 0 system/all.nix | 31 +++++++++---------- 13 files changed, 40 insertions(+), 42 deletions(-) rename hardware/{alien.nix => alien/default.nix} (100%) rename hardware/{peach.nix => peach/default.nix} (100%) rename hardware/{vm-aarch64.nix => vm-aarch64/default.nix} (100%) rename home/{all.nix => default.nix} (100%) rename home/hosts/{alien.nix => alien/default.nix} (100%) rename home/hosts/{peach.nix => peach/default.nix} (100%) rename home/hosts/{vm-aarch64.nix => vm-aarch64/default.nix} (100%) rename home/kde/{plasma.nix => default.nix} (94%) delete mode 100644 home/kde/other.nix rename home/tiling/wallpaper/{bing-wallpaper.nix => default.nix} (100%) diff --git a/flake.nix b/flake.nix index 4b8c044..84dacd9 100644 --- a/flake.nix +++ b/flake.nix @@ -87,11 +87,11 @@ ]; } ./system/all.nix - ./system/widevine/default.nix + ./system/widevine ./system/shell/fish.nix - ./system/tailscale/default.nix - ./system/hosts/${hostname}/default.nix - ./hardware/${hostname}.nix + ./system/tailscale + ./system/hosts/${hostname} + ./hardware/${hostname} catppuccin.nixosModules.catppuccin home-manager.nixosModules.home-manager noctalia.nixosModules.default diff --git a/hardware/alien.nix b/hardware/alien/default.nix similarity index 100% rename from hardware/alien.nix rename to hardware/alien/default.nix diff --git a/hardware/peach.nix b/hardware/peach/default.nix similarity index 100% rename from hardware/peach.nix rename to hardware/peach/default.nix diff --git a/hardware/vm-aarch64.nix b/hardware/vm-aarch64/default.nix similarity index 100% rename from hardware/vm-aarch64.nix rename to hardware/vm-aarch64/default.nix diff --git a/home/all.nix b/home/default.nix similarity index 100% rename from home/all.nix rename to home/default.nix diff --git a/home/hosts/alien.nix b/home/hosts/alien/default.nix similarity index 100% rename from home/hosts/alien.nix rename to home/hosts/alien/default.nix diff --git a/home/hosts/peach.nix b/home/hosts/peach/default.nix similarity index 100% rename from home/hosts/peach.nix rename to home/hosts/peach/default.nix diff --git a/home/hosts/vm-aarch64.nix b/home/hosts/vm-aarch64/default.nix similarity index 100% rename from home/hosts/vm-aarch64.nix rename to home/hosts/vm-aarch64/default.nix diff --git a/home/kde/plasma.nix b/home/kde/default.nix similarity index 94% rename from home/kde/plasma.nix rename to home/kde/default.nix index 5412f48..63328b9 100644 --- a/home/kde/plasma.nix +++ b/home/kde/default.nix @@ -1,6 +1,24 @@ { config, pkgs, ... }: { + programs.ghostwriter = { + enable = true; + font = { + family = config.userOptions.fontSans.name; + pointSize = config.userOptions.fontSans.size; + }; + }; + + programs.kate = { + enable = true; + editor = { + font = { + family = config.userOptions.fontMono.name; + pointSize = config.userOptions.fontMono.size; + }; + }; + }; + programs.plasma = { enable = true; overrideConfig = true; diff --git a/home/kde/other.nix b/home/kde/other.nix deleted file mode 100644 index cb8646a..0000000 --- a/home/kde/other.nix +++ /dev/null @@ -1,21 +0,0 @@ -{ config, ... }: - -{ - programs.ghostwriter = { - enable = true; - font = { - family = config.userOptions.fontSans.name; - pointSize = config.userOptions.fontSans.size; - }; - }; - - programs.kate = { - enable = true; - editor = { - font = { - family = config.userOptions.fontMono.name; - pointSize = config.userOptions.fontMono.size; - }; - }; - }; -} diff --git a/home/tiling/niri/default.nix b/home/tiling/niri/default.nix index 750ee11..fb92dc3 100644 --- a/home/tiling/niri/default.nix +++ b/home/tiling/niri/default.nix @@ -9,6 +9,10 @@ let }; in { + imports = [ + ./niri.nix + ./noctalia.nix + ]; home.packages = with pkgs; [ xdg-desktop-portal brightnessctl diff --git a/home/tiling/wallpaper/bing-wallpaper.nix b/home/tiling/wallpaper/default.nix similarity index 100% rename from home/tiling/wallpaper/bing-wallpaper.nix rename to home/tiling/wallpaper/default.nix diff --git a/system/all.nix b/system/all.nix index 8eba616..64c1c14 100755 --- a/system/all.nix +++ b/system/all.nix @@ -53,23 +53,20 @@ home-manager.useUserPackages = true; home-manager.users.sckova = { imports = [ - ../home/all.nix - ../home/browsers/firefox/default.nix - ../home/tiling/niri/default.nix - ../home/tiling/niri/niri.nix - ../home/tiling/niri/noctalia.nix - ../home/tiling/quickshell/default.nix - ../home/tiling/wallpaper/bing-wallpaper.nix - ../home/tiling/waybar/default.nix - ../home/systemd/default.nix - ../home/terminal/btop/default.nix - ../home/terminal/fish/default.nix - ../home/terminal/kitty/default.nix - ../home/terminal/nvim/default.nix - ../home/kde/plasma.nix - ../home/kde/other.nix - ../home/vscode/default.nix - ../home/hosts/${config.networking.hostName}.nix + ../home + ../home/browsers/firefox + ../home/tiling/niri + ../home/tiling/quickshell + ../home/tiling/wallpaper + ../home/tiling/waybar + ../home/systemd + ../home/terminal/btop + ../home/terminal/fish + ../home/terminal/kitty + ../home/terminal/nvim + ../home/kde + ../home/vscode + ../home/hosts/${config.networking.hostName} ]; }; From 00f0f4e8362b9c4b4fa4c432234097b38d5fa6fa Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Sun, 14 Dec 2025 15:38:43 -0500 Subject: [PATCH 130/282] go to by-label for peach --- hardware/peach/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/hardware/peach/default.nix b/hardware/peach/default.nix index c83662b..1bf0e8d 100644 --- a/hardware/peach/default.nix +++ b/hardware/peach/default.nix @@ -29,12 +29,12 @@ ''; fileSystems."/" = { - device = "/dev/disk/by-uuid/8a3cb91f-2e3f-498d-8613-230976dff36e"; + device = "/dev/disk/by-label/NixOS"; fsType = "ext4"; }; fileSystems."/boot" = { - device = "/dev/disk/by-uuid/FA86-1704"; + device = "/dev/disk/by-label/EFI"; fsType = "vfat"; options = [ "fmask=0022" From c0962d563964fd792a97bf7135c8ddfb693a9fbb Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Sun, 14 Dec 2025 17:53:34 -0500 Subject: [PATCH 131/282] changes, add mpv --- home/default.nix | 1 - .../firefox/chrome/theme/colors.css | 0 .../firefox/chrome/theme/hide.css | 0 .../firefox/chrome/userChrome.css | 0 .../firefox/default.nix | 0 home/graphical/mpv/default.nix | 33 +++++++++++++++++++ home/hosts/alien/default.nix | 6 ++++ home/hosts/peach/default.nix | 6 ++++ home/tiling/niri/niri.nix | 6 ++-- home/tiling/niri/noctalia.nix | 5 --- system/all.nix | 3 +- 11 files changed, 50 insertions(+), 10 deletions(-) rename home/{browsers => graphical}/firefox/chrome/theme/colors.css (100%) rename home/{browsers => graphical}/firefox/chrome/theme/hide.css (100%) rename home/{browsers => graphical}/firefox/chrome/userChrome.css (100%) rename home/{browsers => graphical}/firefox/default.nix (100%) create mode 100644 home/graphical/mpv/default.nix diff --git a/home/default.nix b/home/default.nix index 30f98ee..dc23998 100755 --- a/home/default.nix +++ b/home/default.nix @@ -161,7 +161,6 @@ audacity strawberry musescore - mpv gimp calibre spotify-player diff --git a/home/browsers/firefox/chrome/theme/colors.css b/home/graphical/firefox/chrome/theme/colors.css similarity index 100% rename from home/browsers/firefox/chrome/theme/colors.css rename to home/graphical/firefox/chrome/theme/colors.css diff --git a/home/browsers/firefox/chrome/theme/hide.css b/home/graphical/firefox/chrome/theme/hide.css similarity index 100% rename from home/browsers/firefox/chrome/theme/hide.css rename to home/graphical/firefox/chrome/theme/hide.css diff --git a/home/browsers/firefox/chrome/userChrome.css b/home/graphical/firefox/chrome/userChrome.css similarity index 100% rename from home/browsers/firefox/chrome/userChrome.css rename to home/graphical/firefox/chrome/userChrome.css diff --git a/home/browsers/firefox/default.nix b/home/graphical/firefox/default.nix similarity index 100% rename from home/browsers/firefox/default.nix rename to home/graphical/firefox/default.nix diff --git a/home/graphical/mpv/default.nix b/home/graphical/mpv/default.nix new file mode 100644 index 0000000..572a600 --- /dev/null +++ b/home/graphical/mpv/default.nix @@ -0,0 +1,33 @@ +{ config, pkgs, ... }: + +let + catppuccin-mpv = pkgs.fetchFromGitHub { + owner = "catppuccin"; + repo = "mpv"; + rev = "08e90daf511eee2c10c98f0031b51bb9de240d60"; + sha256 = "sha256-oUheJNWk2R6gNEmkK8H6PWX0iofx2KMGDoFWtnr420A="; + }; + + mergedConfig = pkgs.runCommand "mergedConfig" { } '' + mkdir -p $out + ${pkgs.gnused}/bin/sed 's/#1e1e2e/#000000/g' \ + ${catppuccin-mpv}/themes/${config.catppuccin.flavor}/${config.catppuccin.accent}.conf \ + > $out/mpv.conf + ''; +in +{ + home.packages = with pkgs; [ + (mpv.override { + scripts = with mpvScripts; [ + uosc + sponsorblock + mpris + ]; + }) + ]; + home.file.".config/mpv" = { + source = mergedConfig; + recursive = true; + force = true; + }; +} diff --git a/home/hosts/alien/default.nix b/home/hosts/alien/default.nix index 39b3b9c..a13858c 100644 --- a/home/hosts/alien/default.nix +++ b/home/hosts/alien/default.nix @@ -16,6 +16,12 @@ _2ship2harkinian ]; + programs.noctalia-shell.settings.brightness = { + brightnessStep = 5; + enforceMinimum = false; + enableDdcSupport = true; + }; + programs.plasma = { panels = [ # Alternative global menu to fit the modified taskbar diff --git a/home/hosts/peach/default.nix b/home/hosts/peach/default.nix index eb45c61..0c92f54 100644 --- a/home/hosts/peach/default.nix +++ b/home/hosts/peach/default.nix @@ -21,6 +21,12 @@ render-drm-device = "/dev/dri/card2"; }; + programs.noctalia-shell.settings.brightness = { + brightnessStep = 5; + enforceMinimum = false; + enableDdcSupport = false; + }; + programs.plasma = { input.touchpads = [ { diff --git a/home/tiling/niri/niri.nix b/home/tiling/niri/niri.nix index cdadd24..d07b570 100644 --- a/home/tiling/niri/niri.nix +++ b/home/tiling/niri/niri.nix @@ -10,7 +10,7 @@ hotkey-overlay.skip-at-startup = true; prefer-no-csd = true; gestures.hot-corners.enable = false; - spawn-at-startup = [ ]; + spawn-at-startup = [ ]; # systemd is based sorry overview = { backdrop-color = pkgs.catppuccin.${config.catppuccin.flavor}.crust; workspace-shadow.enable = false; @@ -75,14 +75,14 @@ ]; border = { enable = true; - width = 1; + width = 2; active.color = pkgs.catppuccin.${config.catppuccin.flavor}.${config.catppuccin.accent}; inactive.color = pkgs.catppuccin.${config.catppuccin.flavor}.surface0; urgent.color = pkgs.catppuccin.${config.catppuccin.flavor}.maroon; }; focus-ring = { enable = false; - width = 1; + width = 2; active.color = pkgs.catppuccin.${config.catppuccin.flavor}.${config.catppuccin.accent}; inactive.color = pkgs.catppuccin.${config.catppuccin.flavor}.surface0; urgent.color = pkgs.catppuccin.${config.catppuccin.flavor}.maroon; diff --git a/home/tiling/niri/noctalia.nix b/home/tiling/niri/noctalia.nix index 07b6038..cdfcd56 100644 --- a/home/tiling/niri/noctalia.nix +++ b/home/tiling/niri/noctalia.nix @@ -446,11 +446,6 @@ in preferredPlayer = ""; externalMixer = "pwvucontrol || pavucontrol"; }; - brightness = { - brightnessStep = 5; - enforceMinimum = true; - enableDdcSupport = true; - }; colorSchemes = { useWallpaperColors = false; predefinedScheme = "Cat-Custom"; diff --git a/system/all.nix b/system/all.nix index 64c1c14..2950aef 100755 --- a/system/all.nix +++ b/system/all.nix @@ -54,7 +54,8 @@ home-manager.users.sckova = { imports = [ ../home - ../home/browsers/firefox + ../home/graphical/firefox + ../home/graphical/mpv ../home/tiling/niri ../home/tiling/quickshell ../home/tiling/wallpaper From 76145f7df6e143a8bd437d25f8add3d1b570ad44 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Mon, 15 Dec 2025 12:55:38 -0500 Subject: [PATCH 132/282] alien: configure 4k dp monitor --- home/hosts/alien/default.nix | 9 +++++++++ home/tiling/niri/niri.nix | 3 --- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/home/hosts/alien/default.nix b/home/hosts/alien/default.nix index a13858c..e06487f 100644 --- a/home/hosts/alien/default.nix +++ b/home/hosts/alien/default.nix @@ -22,6 +22,15 @@ enableDdcSupport = true; }; + programs.niri.settings.outputs."DP-1" = { + mode = { + width = 3840; + height = 2160; + refresh = 143.999; + }; + scale = 1.75; + }; + programs.plasma = { panels = [ # Alternative global menu to fit the modified taskbar diff --git a/home/tiling/niri/niri.nix b/home/tiling/niri/niri.nix index d07b570..fa76028 100644 --- a/home/tiling/niri/niri.nix +++ b/home/tiling/niri/niri.nix @@ -52,9 +52,6 @@ "HDMI-A-1" = { scale = 2; }; - "DP-1" = { - scale = 2; - }; }; cursor = { hide-when-typing = true; From 41597eefd5ad0180c1af28d3b9557bba0e6da2c8 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Mon, 15 Dec 2025 14:36:26 -0500 Subject: [PATCH 133/282] alien: add gamescope --- system/hosts/alien/default.nix | 8 ++++++++ system/hosts/alien/gs.sh | 27 +++++++++++++++++++++++++++ 2 files changed, 35 insertions(+) create mode 100644 system/hosts/alien/gs.sh diff --git a/system/hosts/alien/default.nix b/system/hosts/alien/default.nix index 74bcbd8..b8d3d2a 100644 --- a/system/hosts/alien/default.nix +++ b/system/hosts/alien/default.nix @@ -47,6 +47,14 @@ }; defaultSession = "niri"; }; + + environment = { + systemPackages = [ pkgs.mangohud ]; + loginShellInit = '' + [[ "$(tty)" = "/dev/tty1" ]] && ./gs.sh + ''; + }; + security.sudo.wheelNeedsPassword = true; hardware.nvidia = { diff --git a/system/hosts/alien/gs.sh b/system/hosts/alien/gs.sh new file mode 100644 index 0000000..40cd18b --- /dev/null +++ b/system/hosts/alien/gs.sh @@ -0,0 +1,27 @@ +#!/usr/bin/env bash +set -xeuo pipefail + +gamescopeArgs=( + --adaptive-sync # VRR support + --hdr-enabled + --mangoapp # performance overlay + --rt + --steam +) +steamArgs=( + -pipewire-dmabuf + -tenfoot +) +mangoConfig=( + cpu_temp + gpu_temp + ram + vram +) +mangoVars=( + MANGOHUD=1 + MANGOHUD_CONFIG="$(IFS=,; echo "${mangoConfig[*]}")" +) + +export "${mangoVars[@]}" +exec gamescope "${gamescopeArgs[@]}" -- steam "${steamArgs[@]}" From 8862a7ea35bb2961ebd22741cfb195d9c7b3df33 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Mon, 15 Dec 2025 15:11:10 -0500 Subject: [PATCH 134/282] alien: use cachyos kernel --- flake.lock | 136 +++++++++++++++++++++++++++++++-- flake.nix | 10 ++- system/hosts/alien/default.nix | 17 ++++- 3 files changed, 152 insertions(+), 11 deletions(-) diff --git a/flake.lock b/flake.lock index 18d7a57..6aa10ce 100644 --- a/flake.lock +++ b/flake.lock @@ -22,6 +22,38 @@ "type": "github" } }, + "cachyos-kernel": { + "flake": false, + "locked": { + "lastModified": 1765803132, + "narHash": "sha256-HQRBJcnUvoSh5ZvYWB3/vhvozuXAiOr36BUghEoGK+E=", + "owner": "CachyOS", + "repo": "linux-cachyos", + "rev": "3c3ffceb2ab21e7a67a0565ae636d1471893e35b", + "type": "github" + }, + "original": { + "owner": "CachyOS", + "repo": "linux-cachyos", + "type": "github" + } + }, + "cachyos-kernel-patches": { + "flake": false, + "locked": { + "lastModified": 1765800897, + "narHash": "sha256-vtNHrRo6f4pk+9XUobPeL3t2RXtm6Dj9z+ngNGK6jN4=", + "owner": "CachyOS", + "repo": "kernel-patches", + "rev": "96d3efd823827b734074c0828c695d0c60d8a7d7", + "type": "github" + }, + "original": { + "owner": "CachyOS", + "repo": "kernel-patches", + "type": "github" + } + }, "catppuccin": { "inputs": { "nixpkgs": [ @@ -72,7 +104,41 @@ "type": "github" } }, + "flake-compat_2": { + "flake": false, + "locked": { + "lastModified": 1765121682, + "narHash": "sha256-4VBOP18BFeiPkyhy9o4ssBNQEvfvv1kXkasAYd0+rrA=", + "owner": "NixOS", + "repo": "flake-compat", + "rev": "65f23138d8d09a92e30f1e5c87611b23ef451bf3", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "flake-compat", + "type": "github" + } + }, "flake-parts": { + "inputs": { + "nixpkgs-lib": "nixpkgs-lib" + }, + "locked": { + "lastModified": 1765495779, + "narHash": "sha256-MhA7wmo/7uogLxiewwRRmIax70g6q1U/YemqTGoFHlM=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "5635c32d666a59ec9a55cab87e898889869f7b71", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_2": { "inputs": { "nixpkgs-lib": [ "nixvim", @@ -93,7 +159,7 @@ "type": "github" } }, - "flake-parts_2": { + "flake-parts_3": { "inputs": { "nixpkgs-lib": [ "nur", @@ -192,22 +258,59 @@ "type": "github" } }, + "nix-cachyos-kernel": { + "inputs": { + "cachyos-kernel": "cachyos-kernel", + "cachyos-kernel-patches": "cachyos-kernel-patches", + "flake-compat": "flake-compat_2", + "flake-parts": "flake-parts", + "nixpkgs": "nixpkgs" + }, + "locked": { + "lastModified": 1765821177, + "narHash": "sha256-QNkmB5GzjZc3KUI3YN6MCTNxbwsKH9wZcsAbn24yDqg=", + "owner": "xddxdd", + "repo": "nix-cachyos-kernel", + "rev": "495abf797d0ae70268c935620ee2ce5e0757ed40", + "type": "github" + }, + "original": { + "owner": "xddxdd", + "repo": "nix-cachyos-kernel", + "type": "github" + } + }, "nixpkgs": { "locked": { - "lastModified": 1765472234, - "narHash": "sha256-9VvC20PJPsleGMewwcWYKGzDIyjckEz8uWmT0vCDYK0=", + "lastModified": 1765777093, + "narHash": "sha256-ed6h+jNx/4F/xOUtKlkk6zwQc/+qNhXiC+W7XCz+P6U=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "2fbfb1d73d239d2402a8fe03963e37aab15abe8b", + "rev": "9792f74fef4620ad0aa5142e8973374c697f106a", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixos-unstable", + "ref": "nixos-unstable-small", "repo": "nixpkgs", "type": "github" } }, + "nixpkgs-lib": { + "locked": { + "lastModified": 1761765539, + "narHash": "sha256-b0yj6kfvO8ApcSE+QmA6mUfu8IYG6/uU28OFn4PaC8M=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "719359f4562934ae99f5443f20aa06c2ffff91fc", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixpkgs.lib", + "type": "github" + } + }, "nixpkgs-stable": { "locked": { "lastModified": 1765762245, @@ -224,9 +327,25 @@ "type": "github" } }, + "nixpkgs_2": { + "locked": { + "lastModified": 1765472234, + "narHash": "sha256-9VvC20PJPsleGMewwcWYKGzDIyjckEz8uWmT0vCDYK0=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "2fbfb1d73d239d2402a8fe03963e37aab15abe8b", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, "nixvim": { "inputs": { - "flake-parts": "flake-parts", + "flake-parts": "flake-parts_2", "nixpkgs": [ "nixpkgs" ], @@ -268,7 +387,7 @@ }, "nur": { "inputs": { - "flake-parts": "flake-parts_2", + "flake-parts": "flake-parts_3", "nixpkgs": [ "nixpkgs" ] @@ -317,7 +436,8 @@ "catppuccin-palette": "catppuccin-palette", "home-manager": "home-manager", "niri": "niri", - "nixpkgs": "nixpkgs", + "nix-cachyos-kernel": "nix-cachyos-kernel", + "nixpkgs": "nixpkgs_2", "nixvim": "nixvim", "noctalia": "noctalia", "nur": "nur", diff --git a/flake.nix b/flake.nix index 84dacd9..ccec926 100644 --- a/flake.nix +++ b/flake.nix @@ -4,6 +4,8 @@ inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; + nix-cachyos-kernel.url = "github:xddxdd/nix-cachyos-kernel"; + catppuccin = { url = "github:catppuccin/nix"; inputs.nixpkgs.follows = "nixpkgs"; @@ -53,6 +55,7 @@ outputs = { nixpkgs, + nix-cachyos-kernel, catppuccin, catppuccin-palette, home-manager, @@ -70,12 +73,14 @@ hostname, system, extraModules ? [ ], + extraSpecialArgs ? { }, }: nixpkgs.lib.nixosSystem { inherit system; specialArgs = { inherit catppuccin; - }; + } + // extraSpecialArgs; modules = [ { nixpkgs.overlays = [ @@ -145,6 +150,9 @@ alien = mkNixosSystem { hostname = "alien"; system = "x86_64-linux"; + extraSpecialArgs = { + inherit nix-cachyos-kernel; + }; }; vm-aarch64 = mkNixosSystem { diff --git a/system/hosts/alien/default.nix b/system/hosts/alien/default.nix index b8d3d2a..7172e5d 100644 --- a/system/hosts/alien/default.nix +++ b/system/hosts/alien/default.nix @@ -4,6 +4,7 @@ lib, inputs, catppuccin, + nix-cachyos-kernel, ... }: { @@ -20,8 +21,20 @@ imports = [ catppuccin.homeModules.catppuccin ]; }; - boot.kernelPackages = pkgs.linuxPackages; boot.loader.systemd-boot.consoleMode = "max"; + # boot.kernelPackages = pkgs.linuxPackages; + + # let's use the CachyOS kernel instead! + nixpkgs.overlays = [ nix-cachyos-kernel.overlays.default ]; + nix.settings.substituters = [ + "https://attic.xuyh0120.win/lantian" + "https://cache.garnix.io" + ]; + nix.settings.trusted-public-keys = [ + "lantian:EeAUQ+W+6r7EtwnmYjeVwx5kOGEBpjlBfPlzGlTNvHc=" + "cache.garnix.io:CTFPyKSLcx5RMJKfLo5EEPUObbA78b0YQ2DTCJXqr9g=" + ]; + boot.kernelPackages = pkgs.cachyosKernels.linuxPackages-cachyos-latest; programs = { gamescope = { @@ -62,7 +75,7 @@ powerManagement.enable = false; nvidiaSettings = false; open = false; - package = pkgs.linuxPackages.nvidiaPackages.stable; + package = config.boot.kernelPackages.nvidiaPackages.stable; }; services.sunshine = { From 8535435805bb735e584f7d9b8d4c8c7c8cf3cea9 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Mon, 15 Dec 2025 15:25:15 -0500 Subject: [PATCH 135/282] alien: enable and use i2c and ddcutil --- home/tiling/niri/scripts/brightness.sh | 33 +++++++++++++++++++------- system/hosts/alien/default.nix | 13 +++++++++- 2 files changed, 37 insertions(+), 9 deletions(-) diff --git a/home/tiling/niri/scripts/brightness.sh b/home/tiling/niri/scripts/brightness.sh index 73ed4a9..a321d8b 100755 --- a/home/tiling/niri/scripts/brightness.sh +++ b/home/tiling/niri/scripts/brightness.sh @@ -1,5 +1,4 @@ #!/usr/bin/env bash - WAYBAR_SIGNAL=8 # SIGRTMIN+8 if [ "$#" -ne 1 ]; then @@ -15,15 +14,33 @@ if ! [[ "$value" =~ ^-?[0-9]+$ ]] || [ "$value" -lt -100 ] || [ "$value" -gt 100 exit 1 fi -# Apply brightness change with correct syntax -if [ "$value" -gt 0 ]; then - brightnessctl s "+${value}%" >/dev/null -elif [ "$value" -lt 0 ]; then - brightnessctl s "${value#-}%-" >/dev/null +# Determine which brightness control tool to use +if command -v ddcutil >/dev/null 2>&1; then + # Get current brightness + current=$(ddcutil getvcp 10 | grep -oP 'current value =\s+\K\d+') + + if [ -z "$current" ]; then + echo "Error: failed to read current brightness from ddcutil" >&2 + exit 1 + fi + + # Calculate new brightness (ddcutil uses absolute 0-100 scale) + new=$((current + value)) + + # Clamp to valid range + [ "$new" -lt 0 ] && new=0 + [ "$new" -gt 100 ] && new=100 + + # Set new brightness + ddcutil setvcp 10 "$new" >/dev/null 2>&1 else - : # no-op for 0 + # Fallback to brightnessctl + if [ "$value" -gt 0 ]; then + brightnessctl s "+${value}%" >/dev/null + elif [ "$value" -lt 0 ]; then + brightnessctl s "${value#-}%-" >/dev/null + fi fi # Notify Waybar to refresh pkill -RTMIN+"$WAYBAR_SIGNAL" waybar - diff --git a/system/hosts/alien/default.nix b/system/hosts/alien/default.nix index 7172e5d..9588212 100644 --- a/system/hosts/alien/default.nix +++ b/system/hosts/alien/default.nix @@ -10,6 +10,18 @@ { networking.hostName = "alien"; + environment.systemPackages = with pkgs; [ + pkgs.ddcutil + pkgs.mangohud + ]; + + # enable ddcutil + users.users.sckova.extraGroups = [ "i2c" ]; + boot.initrd.kernelModules = [ "i2c-dev" ]; + services.udev.extraRules = '' + KERNEL=="i2c-[0-9]*", GROUP="i2c", MODE="0660" + ''; + boot.binfmt.emulatedSystems = [ "aarch64-linux" "riscv64-linux" @@ -62,7 +74,6 @@ }; environment = { - systemPackages = [ pkgs.mangohud ]; loginShellInit = '' [[ "$(tty)" = "/dev/tty1" ]] && ./gs.sh ''; From 5ed4c4189813c130566f59457f37f1748460200d Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Mon, 15 Dec 2025 16:15:20 -0500 Subject: [PATCH 136/282] update kitty --- home/terminal/kitty/default.nix | 36 +++++++++++++++++++++++++++------ 1 file changed, 30 insertions(+), 6 deletions(-) diff --git a/home/terminal/kitty/default.nix b/home/terminal/kitty/default.nix index 1d8a6ba..46f5da8 100644 --- a/home/terminal/kitty/default.nix +++ b/home/terminal/kitty/default.nix @@ -1,18 +1,42 @@ -{ config, lib, ... }: - { + config, + lib, + pkgs, + ... +}: + +let + catppuccin-kitty = pkgs.fetchFromGitHub { + owner = "catppuccin"; + repo = "kitty"; + rev = "b14e8385c827f2d41660b71c7fec1e92bdcf2676"; + sha256 = "sha256-59ON7CzVgfZUo7F81qQZQ1r6kpcjR3OPvTl99gzDP8E="; + }; + + mergedConfig = pkgs.runCommand "mergedConfig" { } '' + mkdir -p $out + ${pkgs.gnused}/bin/sed 's/#cba6f7/${ + pkgs.catppuccin.${config.catppuccin.flavor}.${config.catppuccin.accent} + }/g' ${catppuccin-kitty}/themes/${config.catppuccin.flavor}.conf > \ + $out/${config.catppuccinUpper.flavor}${config.catppuccinUpper.accent}.conf + ''; +in +{ + home.file.".config/kitty/themes" = { + source = mergedConfig; + recursive = true; + }; + programs.kitty = { enable = true; enableGitIntegration = true; - themeFile = "Catppuccin-${config.catppuccinUpper.flavor}"; font = { name = config.userOptions.fontMono.name; size = config.userOptions.fontMono.size; }; - shellIntegration = { - enableFishIntegration = true; - }; + shellIntegration.enableFishIntegration = true; settings = { + include = "/home/${config.userOptions.username}/.config/kitty/themes/${config.catppuccinUpper.flavor}${config.catppuccinUpper.accent}.conf"; scrollback_lines = 10000; enable_audio_bell = false; update_check_interval = 0; From 72006f56b1326bf76e935fb01bd64383b6609d9a Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Mon, 15 Dec 2025 21:22:46 -0500 Subject: [PATCH 137/282] add spotify webapp --- flake.lock | 39 +++++++++++++++++- flake.nix | 10 +++++ home/default.nix | 3 +- home/hosts/alien/default.nix | 32 ++++++++++++++- home/hosts/peach/default.nix | 1 + packages/overlay.nix | 2 + packages/spotify/package.nix | 74 ++++++++++++++++++++++++++++++++++ system/hosts/alien/default.nix | 2 +- 8 files changed, 159 insertions(+), 4 deletions(-) create mode 100644 packages/spotify/package.nix diff --git a/flake.lock b/flake.lock index 6aa10ce..80a5e73 100644 --- a/flake.lock +++ b/flake.lock @@ -441,7 +441,29 @@ "nixvim": "nixvim", "noctalia": "noctalia", "nur": "nur", - "plasma-manager": "plasma-manager" + "plasma-manager": "plasma-manager", + "spicetify-nix": "spicetify-nix" + } + }, + "spicetify-nix": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ], + "systems": "systems_2" + }, + "locked": { + "lastModified": 1765687197, + "narHash": "sha256-5aJgT+lEC7ypuAGE3DQLj3LzYDQ+kRG6MnkVr3ZF9RU=", + "owner": "Gerg-L", + "repo": "spicetify-nix", + "rev": "fa6a5dde9d95bf7b8f075ff5aceeb1d97fa9043a", + "type": "github" + }, + "original": { + "owner": "Gerg-L", + "repo": "spicetify-nix", + "type": "github" } }, "systems": { @@ -459,6 +481,21 @@ "type": "github" } }, + "systems_2": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, "xwayland-satellite-stable": { "flake": false, "locked": { diff --git a/flake.nix b/flake.nix index ccec926..4501bb3 100644 --- a/flake.nix +++ b/flake.nix @@ -36,6 +36,11 @@ inputs.nixpkgs.follows = "nixpkgs"; }; + spicetify-nix = { + url = "github:Gerg-L/spicetify-nix"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + nur = { url = "github:nix-community/NUR"; inputs.nixpkgs.follows = "nixpkgs"; @@ -62,6 +67,7 @@ plasma-manager, niri, noctalia, + spicetify-nix, nur, nixvim, apple-silicon, @@ -105,8 +111,12 @@ plasma-manager.homeModules.plasma-manager niri.homeModules.niri noctalia.homeModules.default + spicetify-nix.homeManagerModules.default nixvim.homeModules.nixvim ]; + home-manager.extraSpecialArgs = { + inherit spicetify-nix; + }; } ] ++ extraModules; diff --git a/home/default.nix b/home/default.nix index dc23998..76eaf3b 100755 --- a/home/default.nix +++ b/home/default.nix @@ -125,6 +125,7 @@ spotdl browsh mosh + spotify-player # development & tooling gh @@ -163,7 +164,7 @@ musescore gimp calibre - spotify-player + spotify-qt # overrides # (chromium.override { diff --git a/home/hosts/alien/default.nix b/home/hosts/alien/default.nix index e06487f..6580a5e 100644 --- a/home/hosts/alien/default.nix +++ b/home/hosts/alien/default.nix @@ -1,4 +1,9 @@ -{ config, pkgs, ... }: +{ + config, + pkgs, + spicetify-nix, + ... +}: { catppuccin = { @@ -31,6 +36,31 @@ scale = 1.75; }; + programs.spicetify = + let + spicePkgs = spicetify-nix.legacyPackages.${pkgs.stdenv.hostPlatform.system}; + in + { + enable = true; + + enabledExtensions = with spicePkgs.extensions; [ + adblock + hidePodcasts + shuffle # shuffle+ (special characters are sanitized out of extension names) + ]; + enabledCustomApps = with spicePkgs.apps; [ + newReleases + ncsVisualizer + ]; + enabledSnippets = with spicePkgs.snippets; [ + rotatingCoverart + pointer + ]; + + theme = spicePkgs.themes.catppuccin; + colorScheme = config.catppuccin.flavor; + }; + programs.plasma = { panels = [ # Alternative global menu to fit the modified taskbar diff --git a/home/hosts/peach/default.nix b/home/hosts/peach/default.nix index 0c92f54..1b6a7ab 100644 --- a/home/hosts/peach/default.nix +++ b/home/hosts/peach/default.nix @@ -14,6 +14,7 @@ asahi-wifisync moonlight-qt + spotify-webapp ]; # https://github.com/YaLTeR/niri/issues/2330#issuecomment-3256864777 diff --git a/packages/overlay.nix b/packages/overlay.nix index 7377b92..2764a0b 100644 --- a/packages/overlay.nix +++ b/packages/overlay.nix @@ -24,5 +24,7 @@ final: prev: { inherit helium-widevine; }; + spotify-webapp = prev.callPackage (builtins.path { path = ./spotify/package.nix; }) { }; + spotifyd = prev.callPackage (builtins.path { path = ./spotifyd/package.nix; }) { }; } diff --git a/packages/spotify/package.nix b/packages/spotify/package.nix new file mode 100644 index 0000000..940bc6e --- /dev/null +++ b/packages/spotify/package.nix @@ -0,0 +1,74 @@ +{ + lib, + stdenv, + makeDesktopItem, + copyDesktopItems, + chromium, + writeShellScriptBin, +}: + +let + pname = "spotify-webapp"; + version = "1.0.0"; + + chromiumWithWidevine = chromium.override { + enableWideVine = true; + }; + + launchScript = writeShellScriptBin "spotify-webapp" '' + exec ${chromiumWithWidevine}/bin/chromium \ + --app=https://open.spotify.com \ + --class=spotify-webapp \ + --name=spotify-webapp \ + --user-data-dir="$HOME/.config/spotify-webapp" \ + --enable-features=UseOzonePlatform \ + --ozone-platform=wayland \ + "$@" + ''; + +in +stdenv.mkDerivation { + inherit pname version; + + dontUnpack = true; + dontBuild = true; + + nativeBuildInputs = [ copyDesktopItems ]; + + desktopItems = [ + (makeDesktopItem { + name = "spotify-webapp"; + exec = "spotify-webapp %U"; + icon = "spotify"; + desktopName = "Spotify"; + genericName = "Music Streaming"; + comment = "Listen to music on Spotify"; + categories = [ + "Audio" + "Music" + "AudioVideo" + ]; + mimeTypes = [ "x-scheme-handler/spotify" ]; + startupWMClass = "spotify-webapp"; + startupNotify = true; + }) + ]; + + installPhase = '' + runHook preInstall + + mkdir -p $out/bin + ln -s ${launchScript}/bin/spotify-webapp $out/bin/spotify-webapp + + runHook postInstall + ''; + + meta = with lib; { + description = "Spotify web app running in Chromium"; + homepage = "https://open.spotify.com"; + license = licenses.free; + maintainers = [ ]; + platforms = platforms.linux; + mainProgram = "spotify-webapp"; + }; +} diff --git a/system/hosts/alien/default.nix b/system/hosts/alien/default.nix index 9588212..383f075 100644 --- a/system/hosts/alien/default.nix +++ b/system/hosts/alien/default.nix @@ -46,7 +46,7 @@ "lantian:EeAUQ+W+6r7EtwnmYjeVwx5kOGEBpjlBfPlzGlTNvHc=" "cache.garnix.io:CTFPyKSLcx5RMJKfLo5EEPUObbA78b0YQ2DTCJXqr9g=" ]; - boot.kernelPackages = pkgs.cachyosKernels.linuxPackages-cachyos-latest; + boot.kernelPackages = pkgs.cachyosKernels.linuxPackages-cachyos-lts; programs = { gamescope = { From af2a3b0f491fc121ac352d098091230c0bf36af6 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Tue, 16 Dec 2025 11:20:12 -0500 Subject: [PATCH 138/282] updates to firefox --- home/graphical/firefox/default.nix | 52 +++++++++++------------------- 1 file changed, 18 insertions(+), 34 deletions(-) diff --git a/home/graphical/firefox/default.nix b/home/graphical/firefox/default.nix index 759d13f..773c83b 100644 --- a/home/graphical/firefox/default.nix +++ b/home/graphical/firefox/default.nix @@ -60,6 +60,9 @@ "{446900e4-71c2-419f-a6a7-df9c091e268b}" = { installation_mode = "allowed"; }; + "{FirefoxColor@mozilla.com}" = { + installation_mode = "allowed"; + }; }; DisableTelemetry = true; DisableFirefoxStudies = true; @@ -98,6 +101,7 @@ pwas-for-firefox control-panel-for-twitter bitwarden + firefox-color ]; settings = { "{7a7a4a92-a2a0-41d1-9fd7-1e92480d612d}".settings = { @@ -152,47 +156,23 @@ "browser.newtabpage.activity-stream.showSponsoredTopSites" = false; "browser.newtabpage.activity-stream.showWeather" = false; - "media.gmp-widevinecdm.version" = "system-installed"; - "media.gmp-widevinecdm.visible" = true; - "media.gmp-widevinecdm.enabled" = true; - "media.gmp-widevinecdm.autoupdate" = false; - - "media.eme.enabled" = true; - "media.eme.encrypted-media-encryption-scheme.enabled" = true; + # For browser toolbox/live editing user CSS + "devtools.chrome.enabled" = true; + "devtools.debugger.remote-enabled" = true; # Vertical tabs "sidebar.verticalTabs" = true; "sidebar.verticalTabs.dragToPinPromo.dismissed" = true; + # these are ordered right to left for some fucking reason "browser.uiCustomization.navBarWhenVerticalTabs" = [ - "back-button" - "forward-button" - "stop-reload-button" - "urlbar-container" - "downloads-button" - "fxa-toolbar-menu-button" "unified-extensions-button" + "fxa-toolbar-menu-button" + "downloads-button" + "urlbar-container" + "stop-reload-button" + "forward-button" + "back-button" ]; - - # Undo a bunch of stuff that LibreWolf does - # "browser.safebrowsing.malware.enabled" = true; - # "browser.safebrowsing.phishing.enabled" = true; - # "browser.safebrowsing.blockedURIs.enabled" = true; - # "browser.safebrowsing.provider.google4.gethashURL" = - # "https://safebrowsing.googleapis.com/v4/fullHashes:find?$ct=application/x-protobuf&key=%GOOGLE_SAFEBROWSING_API_KEY%&$httpMethod=POST"; - # "browser.safebrowsing.provider.google4.updateURL" = - # "https://safebrowsing.googleapis.com/v4/threatListUpdates:fetch?$ct=application/x-protobuf&key=%GOOGLE_SAFEBROWSING_API_KEY%&$httpMethod=POST"; - # "browser.safebrowsing.provider.google.gethashURL" = - # "https://safebrowsing.google.com/safebrowsing/gethash?client=SAFEBROWSING_ID&appver=%MAJOR_VERSION%&pver=2.2"; - # "browser.safebrowsing.provider.google.updateURL" = - # "https://safebrowsing.google.com/safebrowsing/downloads?client=SAFEBROWSING_ID&appver=%MAJOR_VERSION%&pver=2.2&key=%GOOGLE_SAFEBROWSING_API_KEY%"; - # "browser.safebrowsing.downloads.enabled" = true; - # "privacy.resistFingerprinting.letterboxing" = false; - # "webgl.disabled" = false; - # "identity.fxaccounts.enabled" = true; - # "privacy.clearOnShutdown.history" = false; - # "privacy.clearOnShutdown.downloads" = false; - # "privacy.fingerprintingProtection" = false; - # "network.cookie.lifetimePolicy" = 0; }; bookmarks = { force = true; @@ -205,6 +185,10 @@ name = "NixOS"; url = "https://nixos.org/"; } + { + name = "Home Manager Appendix A"; + url = "https://nix-community.github.io/home-manager/options.xhtml"; + } ]; } ]; From 552e244563b345ddcdf7222f2649ff934e3de9d1 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Wed, 17 Dec 2025 10:55:13 -0500 Subject: [PATCH 139/282] nix-native config for discord/vesktop --- home/default.nix | 42 +--- home/graphical/discord/default.nix | 70 ++++++ home/graphical/discord/vencord.nix | 350 +++++++++++++++++++++++++++++ system/all.nix | 1 + 4 files changed, 422 insertions(+), 41 deletions(-) create mode 100644 home/graphical/discord/default.nix create mode 100644 home/graphical/discord/vencord.nix diff --git a/home/default.nix b/home/default.nix index 76eaf3b..fdea720 100755 --- a/home/default.nix +++ b/home/default.nix @@ -147,7 +147,6 @@ kdePackages.partitionmanager # gui applications - vesktop input-leap libreoffice-qt-fresh # helium-browser @@ -217,46 +216,7 @@ gtk = { enable = true; - theme = - let - mapping = { - maroon = "red"; - red = "red"; - peach = "orange"; - yellow = "yellow"; - green = "green"; - teal = "teal"; - sky = "teal"; - sapphire = "default"; - blue = "default"; - mauve = "purple"; - lavender = "purple"; - pink = "pink"; - flamingo = "pink"; - rosewater = "pink"; - }; - rawThemeVariant = lib.attrByPath [ config.catppuccin.accent ] "default" mapping; - rawColorVariant = if config.userOptions.isDark then "dark" else "light"; - capitalize = - s: - if s == "" then - "" - else - (lib.strings.toUpper (builtins.substring 0 1 s)) - + (builtins.substring 1 (builtins.stringLength s) s); - formattedThemeColor = if rawThemeVariant == "default" then "" else "-${capitalize rawThemeVariant}"; - in - { - name = "Colloid${formattedThemeColor}-${capitalize rawColorVariant}-Catppuccin"; - package = ( - pkgs.colloid-gtk-theme.override { - themeVariants = [ rawThemeVariant ]; - sizeVariants = [ "standard" ]; - colorVariants = [ rawColorVariant ]; - tweaks = [ "catppuccin" ]; - } - ); - }; + colorScheme = if config.userOptions.isDark then "dark" else "light"; iconTheme = { name = if config.userOptions.isDark then "Colloid-Dark" else "Colloid-Light"; diff --git a/home/graphical/discord/default.nix b/home/graphical/discord/default.nix new file mode 100644 index 0000000..fc3784b --- /dev/null +++ b/home/graphical/discord/default.nix @@ -0,0 +1,70 @@ +{ config, pkgs, ... }: + +let + catppuccin-discord = pkgs.fetchurl { + url = "https://catppuccin.github.io/discord/dist/catppuccin-${config.catppuccin.flavor}-${config.catppuccin.accent}.theme.css"; + sha256 = "sha256-bMxCPo7vg+iHXspsVnrboonlUvkShk5l+gqFIbAxd0o="; + }; + + mergedThemes = pkgs.runCommand "mergedConfig" { } '' + mkdir -p $out + cp ${catppuccin-discord} $out/catppuccin.css + ''; + + vesktopSettings = { + discordBranch = "stable"; + minimizeToTray = true; + arRPC = true; + splashColor = "${pkgs.catppuccin.rgb.${config.catppuccin.flavor}.text}"; + splashBackground = "${pkgs.catppuccin.rgb.${config.catppuccin.flavor}.base}"; + spellCheckLanguages = [ + "en-US" + "en" + ]; + disableMinSize = true; + }; + + stateConfig = { + firstLaunch = false; + windowBounds = { + x = 0; + y = 0; + width = 853; + height = 1071; + }; + }; +in +{ + home.packages = with pkgs; [ vesktop ]; + + home.file.".config/vesktop/settings.json" = { + text = builtins.toJSON vesktopSettings; + force = true; + }; + + home.file.".config/vesktop/settings/settings.json" = { + text = builtins.toJSON (import ./vencord.nix); + force = true; + }; + + home.file.".config/vesktop/settings/quickCss.css" = { + text = '' + * { + font-family: "${config.userOptions.fontSans.name}" !important; + font-size: ${toString config.userOptions.fontSans.size}px; + } + ''; + force = true; + }; + + home.file.".config/vesktop/state.json" = { + text = builtins.toJSON stateConfig; + force = true; + }; + + home.file.".config/vesktop/themes" = { + source = mergedThemes; + recursive = true; + force = true; + }; +} diff --git a/home/graphical/discord/vencord.nix b/home/graphical/discord/vencord.nix new file mode 100644 index 0000000..9442180 --- /dev/null +++ b/home/graphical/discord/vencord.nix @@ -0,0 +1,350 @@ +{ + autoUpdate = true; + autoUpdateNotification = true; + useQuickCss = true; + themeLinks = [ ]; + eagerPatches = false; + enabledThemes = [ "catppuccin.css" ]; + enableReactDevtools = false; + frameless = false; + transparent = true; + winCtrlQ = false; + disableMinSize = true; + winNativeTitleBar = false; + plugins = { + BadgeAPI.enabled = true; + CommandsAPI.enabled = true; + ContextMenuAPI.enabled = true; + MemberListDecoratorsAPI.enabled = false; + MessageAccessoriesAPI.enabled = true; + MessageDecorationsAPI.enabled = false; + MessageEventsAPI.enabled = true; + MessagePopoverAPI.enabled = true; + NoticesAPI.enabled = true; + ServerListAPI.enabled = false; + SettingsStoreAPI.enabled = false; + NoTrack = { + enabled = true; + disableAnalytics = true; + }; + Settings = { + enabled = true; + settingsLocation = "aboveActivity"; + }; + SupportHelper.enabled = true; + AlwaysAnimate.enabled = false; + AlwaysTrust = { + enabled = true; + domain = true; + file = true; + }; + AnonymiseFileNames = { + enabled = false; + method = 0; + randomisedLength = 7; + anonymiseByDefault = true; + }; + "WebRichPresence (arRPC)".enabled = false; + BANger = { + enabled = false; + source = "https://i.imgur.com/wp5q52C.mp4"; + }; + BetterFolders = { + enabled = false; + sidebar = true; + showFolderIcon = 1; + closeAllHomeButton = false; + keepIcons = false; + sidebarAnim = true; + closeAllFolders = false; + forceOpen = false; + closeOthers = false; + }; + BetterGifAltText.enabled = false; + BetterNotesBox = { + enabled = false; + hide = false; + noSpellCheck = false; + }; + BetterRoleDot = { + enabled = false; + bothStyles = false; + copyRoleColorInProfilePopout = false; + }; + BetterUploadButton.enabled = false; + BiggerStreamPreview.enabled = true; + BlurNSFW = { + enabled = false; + blurAmount = 10; + }; + CallTimer = { + enabled = true; + format = "stopwatch"; + }; + ClearURLs.enabled = true; + ClientTheme = { + enabled = false; + color = "31363b"; + }; + ColorSighted.enabled = false; + ConsoleShortcuts.enabled = false; + CopyUserURLs.enabled = false; + CrashHandler.enabled = true; + CustomRPC.enabled = false; + Dearrow = { + enabled = false; + hideButton = false; + replaceElements = 0; + dearrowByDefault = true; + }; + Experiments = { + enabled = true; + toolbarDevMenu = false; + }; + F8Break.enabled = false; + FakeNitro = { + enabled = true; + enableEmojiBypass = true; + enableStickerBypass = true; + enableStreamQualityBypass = true; + transformStickers = true; + transformEmojis = true; + transformCompoundSentence = false; + emojiSize = 48; + stickerSize = 160; + useHyperLinks = true; + hyperLinkText = "{{NAME}}"; + disableEmbedPermissionCheck = false; + }; + FakeProfileThemes.enabled = false; + FavoriteEmojiFirst.enabled = false; + FavoriteGifSearch.enabled = false; + FixImagesQuality.enabled = false; + ForceOwnerCrown.enabled = false; + FriendInvites.enabled = false; + GameActivityToggle.enabled = false; + GifPaste.enabled = false; + GreetStickerPicker = { + enabled = true; + greetMode = "Greet"; + }; + iLoveSpam.enabled = false; + IgnoreActivities.enabled = false; + ImageZoom.enabled = false; + KeepCurrentChannel.enabled = false; + LastFMRichPresence.enabled = false; + LoadingQuotes.enabled = false; + MemberCount.enabled = false; + MessageClickActions.enabled = false; + MessageLinkEmbeds.enabled = false; + MessageLogger = { + enabled = true; + deleteStyle = "text"; + ignoreBots = false; + ignoreSelf = false; + ignoreUsers = ""; + ignoreChannels = ""; + ignoreGuilds = ""; + logEdits = true; + logDeletes = true; + collapseDeleted = false; + inlineEdits = true; + }; + MessageTags.enabled = false; + MoreCommands.enabled = false; + MoreKaomoji.enabled = false; + MoreUserTags.enabled = false; + Moyai.enabled = false; + MutualGroupDMs.enabled = false; + NoBlockedMessages.enabled = false; + NoDevtoolsWarning.enabled = false; + NoF1.enabled = false; + NoMosaic.enabled = false; + NoPendingCount = { + enabled = true; + hideFriendRequestsCount = true; + hideMessageRequestsCount = true; + hidePremiumOffersCount = true; + }; + NoProfileThemes.enabled = true; + NoReplyMention.enabled = false; + NoScreensharePreview.enabled = false; + NoTypingAnimation.enabled = false; + NoUnblockToJump.enabled = false; + NormalizeMessageLinks.enabled = false; + NSFWGateBypass.enabled = false; + OnePingPerDM.enabled = false; + oneko.enabled = false; + OpenInApp.enabled = false; + PermissionFreeWill.enabled = false; + PermissionsViewer.enabled = false; + petpet.enabled = false; + PictureInPicture.enabled = true; + PinDMs.enabled = false; + PlainFolderIcon.enabled = false; + PlatformIndicators.enabled = false; + PreviewMessage.enabled = false; + QuickMention.enabled = false; + QuickReply.enabled = false; + ReactErrorDecoder.enabled = false; + ReadAllNotificationsButton.enabled = false; + RelationshipNotifier.enabled = false; + RevealAllSpoilers.enabled = false; + ReverseImageSearch.enabled = false; + RoleColorEverywhere.enabled = false; + SecretRingToneEnabler.enabled = false; + SendTimestamps.enabled = false; + ServerListIndicators.enabled = false; + ShowAllMessageButtons.enabled = false; + ShowConnections.enabled = false; + ShowHiddenChannels = { + enabled = false; + showMode = 0; + hideUnreads = true; + defaultAllowedUsersAndRolesDropdownState = true; + }; + ShowMeYourName.enabled = false; + SilentMessageToggle.enabled = false; + SilentTyping.enabled = false; + SortFriendRequests.enabled = false; + SpotifyControls.enabled = false; + SpotifyCrack.enabled = false; + SpotifyShareCommands.enabled = false; + StartupTimings.enabled = true; + SuperReactionTweaks.enabled = false; + TextReplace.enabled = false; + ThemeAttributes.enabled = false; + TimeBarAllActivities.enabled = false; + Translate.enabled = false; + TypingIndicator.enabled = false; + TypingTweaks.enabled = false; + Unindent.enabled = false; + UnsuppressEmbeds.enabled = false; + UrbanDictionary.enabled = false; + UserVoiceShow.enabled = false; + USRBG = { + enabled = false; + voiceBackground = true; + nitroFirst = true; + }; + ValidUser.enabled = false; + VoiceChatDoubleClick.enabled = true; + VcNarrator.enabled = false; + ViewIcons.enabled = false; + ViewRaw = { + enabled = true; + clickMethod = "Left"; + }; + VoiceMessages = { + enabled = false; + noiseSuppression = true; + echoCancellation = true; + }; + WebContextMenus = { + enabled = false; + addBack = true; + }; + WebKeybinds.enabled = true; + WhoReacted.enabled = true; + Wikisearch.enabled = true; + Decor.enabled = false; + NotificationVolume.enabled = false; + FixSpotifyEmbeds.enabled = false; + InvisibleChat.enabled = false; + ShikiCodeblocks.enabled = false; + XSOverlay.enabled = false; + BetterGifPicker.enabled = false; + FixCodeblockGap.enabled = false; + ReviewDB = { + enabled = true; + notifyReviews = true; + showWarning = true; + hideTimestamps = false; + hideBlockedUsers = true; + }; + FixYoutubeEmbeds.enabled = false; + ChatInputButtonAPI.enabled = false; + DisableCallIdle.enabled = false; + NewGuildSettings.enabled = false; + BetterRoleContext.enabled = false; + FriendsSince.enabled = false; + ResurrectHome.enabled = false; + BetterSettings.enabled = false; + OverrideForumDefaults.enabled = false; + UnlockedAvatarZoom.enabled = false; + ShowHiddenThings.enabled = false; + BetterSessions.enabled = false; + ImplicitRelationships.enabled = false; + StreamerModeOnStream.enabled = false; + ImageLink.enabled = false; + MessageLatency.enabled = false; + PauseInvitesForever.enabled = false; + ReplyTimestamp.enabled = false; + VoiceDownload.enabled = true; + WebScreenShareFixes.enabled = true; + PartyMode.enabled = false; + AutomodContext.enabled = false; + CtrlEnterSend.enabled = false; + CustomIdle.enabled = false; + NoDefaultHangStatus.enabled = false; + NoServerEmojis.enabled = false; + ReplaceGoogleSearch.enabled = false; + ShowTimeoutDuration.enabled = false; + ValidReply.enabled = false; + DontRoundMyTimestamps.enabled = false; + MaskedLinkPaste.enabled = false; + Summaries.enabled = false; + ServerInfo.enabled = false; + YoutubeAdblock.enabled = false; + MessageUpdaterAPI.enabled = true; + UserSettingsAPI.enabled = true; + AppleMusicRichPresence.enabled = false; + ConsoleJanitor.enabled = false; + CopyEmojiMarkdown.enabled = false; + MentionAvatars.enabled = false; + NoOnboardingDelay.enabled = false; + SuncordToolbox.enabled = true; + AlwaysExpandRoles.enabled = false; + NoMaskedUrlPaste.enabled = false; + VencordToolbox.enabled = false; + AccountPanelServerProfile.enabled = false; + CopyFileContents.enabled = false; + StickerPaste.enabled = false; + VolumeBooster.enabled = false; + FullSearchContext.enabled = false; + UserMessagesPronouns = { + enabled = false; + showInMessages = true; + showSelf = true; + pronounSource = 0; + showInProfile = true; + pronounsFormat = "LOWERCASE"; + }; + DynamicImageModalAPI.enabled = false; + FullUserInChatbox.enabled = false; + HideMedia.enabled = false; + IrcColors.enabled = false; + DisableDeepLinks.enabled = true; + ExpressionCloner.enabled = true; + CopyStickerLinks.enabled = false; + ImageFilename.enabled = false; + }; + uiElements = { + chatBarButtons = { }; + messagePopoverButtons = { }; + }; + notifications = { + timeout = 5000; + position = "bottom-right"; + useNative = "not-focused"; + logLimit = 50; + }; + cloud = { + authenticated = false; + url = "https://api.vencord.dev/"; + settingsSync = false; + settingsSyncVersion = 1765984819568; + }; + notifyAboutUpdates = false; + macosTranslucency = false; +} diff --git a/system/all.nix b/system/all.nix index 2950aef..cbe7845 100755 --- a/system/all.nix +++ b/system/all.nix @@ -54,6 +54,7 @@ home-manager.users.sckova = { imports = [ ../home + ../home/graphical/discord ../home/graphical/firefox ../home/graphical/mpv ../home/tiling/niri From 55ecc0aec3913978c39cf9026378f88e0e2ba49c Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Wed, 17 Dec 2025 11:03:34 -0500 Subject: [PATCH 140/282] fix nixvim formatters --- home/default.nix | 4 ---- home/terminal/nvim/default.nix | 34 +++++++++++++--------------------- 2 files changed, 13 insertions(+), 25 deletions(-) diff --git a/home/default.nix b/home/default.nix index fdea720..db6757f 100755 --- a/home/default.nix +++ b/home/default.nix @@ -129,10 +129,6 @@ # development & tooling gh - deno - prettier - prettierd - nixfmt-rfc-style jdk21_headless nerd-fonts.noto xorg.xcursorgen diff --git a/home/terminal/nvim/default.nix b/home/terminal/nvim/default.nix index f2fa5ea..848a002 100644 --- a/home/terminal/nvim/default.nix +++ b/home/terminal/nvim/default.nix @@ -5,7 +5,14 @@ EDITOR = "nvim"; }; - home.packages = with pkgs; [ kdePackages.qtdeclarative ]; + home.packages = with pkgs; [ + kdePackages.qtdeclarative + prettier + prettierd + nixfmt-rfc-style + stylua + black + ]; programs.nixvim = { enable = true; @@ -88,27 +95,12 @@ settings = { formatters_by_ft = { lua = [ "stylua" ]; - python = [ - "isort" - "black" - ]; + python = [ "black" ]; nix = [ "nixfmt" ]; - javascript = [ - "deno fmt" - "prettier" - ]; - css = [ - "deno fmt" - "prettier" - ]; - json = [ - "deno fmt" - "prettier" - ]; - jsonc = [ - "deno fmt" - "prettier" - ]; + javascript = [ "prettier" ]; + css = [ "prettier" ]; + json = [ "prettier" ]; + jsonc = [ "prettier" ]; }; # Default formatting options From af7ec92d643d73ff11ea622e63a3dec724af9657 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Wed, 17 Dec 2025 11:08:25 -0500 Subject: [PATCH 141/282] remove old tiling configs --- home/tiling/niri/niri.nix | 24 ++-- home/tiling/quickshell/config/shell.qml | 42 ------- home/tiling/quickshell/default.nix | 14 --- home/tiling/waybar/config/config.jsonc | 94 --------------- .../waybar/config/scripts/brightness.sh | 16 --- home/tiling/waybar/config/scripts/clock.sh | 13 -- .../waybar/config/scripts/niri-window.sh | 25 ---- home/tiling/waybar/config/style.css | 114 ------------------ home/tiling/waybar/default.nix | 27 ----- system/all.nix | 2 - 10 files changed, 16 insertions(+), 355 deletions(-) delete mode 100644 home/tiling/quickshell/config/shell.qml delete mode 100644 home/tiling/quickshell/default.nix delete mode 100644 home/tiling/waybar/config/config.jsonc delete mode 100755 home/tiling/waybar/config/scripts/brightness.sh delete mode 100755 home/tiling/waybar/config/scripts/clock.sh delete mode 100755 home/tiling/waybar/config/scripts/niri-window.sh delete mode 100644 home/tiling/waybar/config/style.css delete mode 100644 home/tiling/waybar/default.nix diff --git a/home/tiling/niri/niri.nix b/home/tiling/niri/niri.nix index fa76028..01faf21 100644 --- a/home/tiling/niri/niri.nix +++ b/home/tiling/niri/niri.nix @@ -193,29 +193,37 @@ "XF86MonBrightnessUp" = { action.spawn = [ - "/home/${config.userOptions.username}/.config/niri/scripts/brightness.sh" - "5" + "brightnessctl" + "--class=backlight" + "set" + "+5%" ]; allow-when-locked = true; }; "XF86MonBrightnessDown" = { action.spawn = [ - "/home/${config.userOptions.username}/.config/niri/scripts/brightness.sh" - "-5" + "brightnessctl" + "--class=backlight" + "set" + "5%-" ]; allow-when-locked = true; }; "Shift+XF86MonBrightnessUp" = { action.spawn = [ - "/home/${config.userOptions.username}/.config/niri/scripts/brightness.sh" - "1" + "brightnessctl" + "--class=backlight" + "set" + "+1%" ]; allow-when-locked = true; }; "Shift+XF86MonBrightnessDown" = { action.spawn = [ - "/home/${config.userOptions.username}/.config/niri/scripts/brightness.sh" - "-1" + "brightnessctl" + "--class=backlight" + "set" + "1%-" ]; allow-when-locked = true; }; diff --git a/home/tiling/quickshell/config/shell.qml b/home/tiling/quickshell/config/shell.qml deleted file mode 100644 index d250648..0000000 --- a/home/tiling/quickshell/config/shell.qml +++ /dev/null @@ -1,42 +0,0 @@ -import Quickshell // for PanelWindow -import Quickshell.Io // for Process -import QtQuick // for Text - -PanelWindow { - anchors { - top: true - left: true - right: true - } - - implicitHeight: 37 - - color: "transparent" - - Rectangle { - anchors.fill: parent - color: "#000000" - Text { - id: clock - anchors.verticalCenter: parent.verticalCenter - anchors.right: parent.right - anchors.rightMargin: 10 - color: "#cdd6f4" - - Process { - id: dateProc - command: ["date", "+%a, %b %d @ %I:%M%P"] - running: true - stdout: StdioCollector { - onStreamFinished: clock.text = this.text - } - } - Timer { - interval: 1000 - running: true - repeat: true - onTriggered: dateProc.running = true - } - } - } -} diff --git a/home/tiling/quickshell/default.nix b/home/tiling/quickshell/default.nix deleted file mode 100644 index 1463fe2..0000000 --- a/home/tiling/quickshell/default.nix +++ /dev/null @@ -1,14 +0,0 @@ -{ config, pkgs, ... }: - -{ - home = { - # packages = with pkgs; [ quickshell ]; - file.".config/quickshell" = { - source = ./config; - recursive = true; - }; - }; - programs.quickshell = { - enable = true; - }; -} diff --git a/home/tiling/waybar/config/config.jsonc b/home/tiling/waybar/config/config.jsonc deleted file mode 100644 index de2e1e0..0000000 --- a/home/tiling/waybar/config/config.jsonc +++ /dev/null @@ -1,94 +0,0 @@ -{ - "layer": "top", - "spacing": 0, - "height": 42, - - "margin-top": 0, - "margin-right": 0, - "margin-bottom": 0, - "margin-left": 0, - - "modules-left": ["custom/niri-window"], - - "modules-center": [], - - "modules-right": [ - "tray", - "cpu", - "memory", - "battery", - "network", - "custom/brightness", - "pulseaudio", - "custom/clock", - ], - - "custom/niri-window": { - "exec": "/home/sckova/.config/waybar/scripts/niri-window.sh", - "restart-interval": 1, - "tooltip": false, - }, - - "tray": { - "spacing": 10, - "tooltip": false, - }, - - "custom/clock": { - "exec": "/home/sckova/.config/waybar/scripts/clock.sh", - "restart-interval": 1, - "tooltip": false, - }, - - "cpu": { - "format": "cpu {usage}%", - "interval": 2, - - "states": { - "critical": 90, - }, - }, - - "memory": { - "format": "mem {percentage}%", - "interval": 2, - - "states": { - "critical": 80, - }, - }, - - "battery": { - "format": "bat {capacity}%", - "interval": 5, - "states": { - "warning": 20, - "critical": 10, - }, - "tooltip": false, - }, - - "network": { - "format-wifi": "wifi up", - "format-ethernet": "enth up", - "format-disconnected": "no network", - "tooltip": false, - }, - - "custom/brightness": { - "exec": "/home/sckova/.config/waybar/scripts/brightness.sh", - "restart-interval": 10, - "signal": 8, - "tooltip": false, - }, - - "pulseaudio": { - "scroll-step": 5, - "max-volume": 150, - "format": "vol {volume}%", - "format-bluetooth": "vol {volume}%", - "nospacing": 1, - "on-click": "pavucontrol", - "tooltip": false, - }, -} diff --git a/home/tiling/waybar/config/scripts/brightness.sh b/home/tiling/waybar/config/scripts/brightness.sh deleted file mode 100755 index d6a0ca9..0000000 --- a/home/tiling/waybar/config/scripts/brightness.sh +++ /dev/null @@ -1,16 +0,0 @@ -#!/usr/bin/env bash - -MAX=500 - -current=$(brightnessctl g) - -# Guard against empty or non-numeric output -if ! [[ "$current" =~ ^[0-9]+$ ]]; then - echo "brightnessctl returned invalid value" >&2 - exit 1 -fi - -percentage=$(( current * 100 / MAX )) - -echo "bright ${percentage}%" - diff --git a/home/tiling/waybar/config/scripts/clock.sh b/home/tiling/waybar/config/scripts/clock.sh deleted file mode 100755 index 9876ef6..0000000 --- a/home/tiling/waybar/config/scripts/clock.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/usr/bin/env bash - -day=$(date +%-d) - -case "$day" in - 11|12|13) suffix="th" ;; - *1) suffix="st" ;; - *2) suffix="nd" ;; - *3) suffix="rd" ;; - *) suffix="th" ;; -esac - -date +"%a, %b $day$suffix %Y @ %I:%M%P" diff --git a/home/tiling/waybar/config/scripts/niri-window.sh b/home/tiling/waybar/config/scripts/niri-window.sh deleted file mode 100755 index a27d14c..0000000 --- a/home/tiling/waybar/config/scripts/niri-window.sh +++ /dev/null @@ -1,25 +0,0 @@ -#!/usr/bin/env bash - -last="" - -while :; do - current=$( - niri msg focused-window | awk -F'"' ' - /App ID:/ { app = $2 } - /Title:/ { title = $2 } - END { - if (app && title) { - print app " - " title - } - } - ' - ) - - if [[ -n "$current" && "$current" != "$last" ]]; then - printf '%s\n' "$current" - last="$current" - fi - - sleep 0.01 -done - diff --git a/home/tiling/waybar/config/style.css b/home/tiling/waybar/config/style.css deleted file mode 100644 index bca63ed..0000000 --- a/home/tiling/waybar/config/style.css +++ /dev/null @@ -1,114 +0,0 @@ -@import "./colors.css"; -* { - border: none; - border-radius: 0; - min-height: 0; - font-family: "Noto Sans"; - font-size: 12px; - padding: 0; -} - -window#waybar { - background: black; - border: 2px solid @base; - border-top-width: 0px; - border-left-width: 0px; - border-right-width: 0px; -} - -tooltip { - background-color: @crust; - border-color: @peach; -} - -#custom-niri-window, -#custom-clock, -#tray, -#cpu, -#memory, -#battery, -#network, -#custom-brightness, -#pulseaudio { - background-color: @base; - color: @text; - border: 2px solid @text; - margin: 8px 6px 8px 0px; - padding: 2px 8px; - border-radius: 8px; -} - -#workspaces { - margin: 6px 0px 6px 6px; - border-color: #625343; -} - -#workspaces button { - all: initial; - min-width: 0; - box-shadow: inset 0 -3px transparent; - padding: 2px 4px; - color: #917a53; -} - -#workspaces button.focused { - color: #ddc7a1; -} - -#workspaces button.urgent { - background-color: #e78a4e; - color: #1d2021; -} - -#custom-niri-window { - margin-left: 6px; - border-color: @yellow; -} - -#cpu { - border-color: @maroon; -} - -#memory { - border-color: @peach; -} - -#battery { - border-color: @green; -} - -#network { - border-color: @teal; -} - -#custom-brightness { - border-color: @sky; -} - -#pulseaudio { - border-color: @blue; -} - -#custom-clock { - border-color: @lavender; -} - -#tray { - border-color: @blue; - color: @subtext0; -} - -#cpu.critical, -#memory.critical { - background-color: @base; - border-color: @red; - color: @subtext0; -} - -#battery.warning, -#battery.critical, -#battery.urgent { - background-color: #c9af82; - border-color: #917a53; - color: #ae6330; -} diff --git a/home/tiling/waybar/default.nix b/home/tiling/waybar/default.nix deleted file mode 100644 index b9ea075..0000000 --- a/home/tiling/waybar/default.nix +++ /dev/null @@ -1,27 +0,0 @@ -{ config, pkgs, ... }: - -let - catppuccin-waybar = pkgs.fetchFromGitHub { - owner = "catppuccin"; - repo = "waybar"; - rev = "ee8ed32b4f63e9c417249c109818dcc05a2e25da"; - sha256 = "sha256-za0y6hcN2rvN6Xjf31xLRe4PP0YyHu2i454ZPjr+lWA="; - }; - - mergedConfig = pkgs.runCommand "mergedConfig" { } '' - mkdir -p $out - cp -rv ${./config}/* $out/ - cp -v ${catppuccin-waybar}/themes/${config.catppuccin.flavor}.css $out/colors.css - ''; -in -{ - programs.waybar = { - enable = true; - }; - - home.file.".config/waybar" = { - source = mergedConfig; - recursive = true; - force = true; - }; -} diff --git a/system/all.nix b/system/all.nix index cbe7845..cf2e870 100755 --- a/system/all.nix +++ b/system/all.nix @@ -58,9 +58,7 @@ ../home/graphical/firefox ../home/graphical/mpv ../home/tiling/niri - ../home/tiling/quickshell ../home/tiling/wallpaper - ../home/tiling/waybar ../home/systemd ../home/terminal/btop ../home/terminal/fish From 84a8fa41f7cb1b9750fe7d65826f14b880b3969b Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Wed, 17 Dec 2025 11:38:30 -0500 Subject: [PATCH 142/282] remove teal button hover in noctalia --- home/tiling/niri/noctalia.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/home/tiling/niri/noctalia.nix b/home/tiling/niri/noctalia.nix index cdfcd56..e76774f 100644 --- a/home/tiling/niri/noctalia.nix +++ b/home/tiling/niri/noctalia.nix @@ -26,7 +26,7 @@ let mOnSurfaceVariant = palette.lavender; mOutline = palette.surface2; mShadow = palette.crust; - mHover = palette.teal; + mHover = palette.subtext1; mOnHover = palette.crust; }; From b45f2f673502a3cc749c94eeddb9a13143318abf Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Wed, 17 Dec 2025 12:20:17 -0500 Subject: [PATCH 143/282] fix discord catppuccin theme packaging --- home/graphical/discord/default.nix | 52 ++++++++++++++++++++++++++++-- 1 file changed, 49 insertions(+), 3 deletions(-) diff --git a/home/graphical/discord/default.nix b/home/graphical/discord/default.nix index fc3784b..05ce3a5 100644 --- a/home/graphical/discord/default.nix +++ b/home/graphical/discord/default.nix @@ -1,11 +1,57 @@ { config, pkgs, ... }: let - catppuccin-discord = pkgs.fetchurl { - url = "https://catppuccin.github.io/discord/dist/catppuccin-${config.catppuccin.flavor}-${config.catppuccin.accent}.theme.css"; - sha256 = "sha256-bMxCPo7vg+iHXspsVnrboonlUvkShk5l+gqFIbAxd0o="; + catppuccin-discord-src = pkgs.fetchFromGitHub { + owner = "catppuccin"; + repo = "discord"; + rev = "1b2dffbabf75a294a0fb9245f9f7244a853e7ada"; + hash = "sha256-LdUPnnbbSwgaw37FJD2s1vPiTaISaYbtOWRxQIekQkQ="; }; + yarnOfflineCache = pkgs.fetchYarnDeps { + yarnLock = "${catppuccin-discord-src}/yarn.lock"; + hash = "sha256-BhE3aKyA/LBErjWx+lbEVb/CIXhqHkXbV+9U2djIBhs="; + }; + + catppuccin-discord-pkg = pkgs.stdenv.mkDerivation { + pname = "catppuccin-discord"; + version = "unstable"; + + src = catppuccin-discord-src; + + nativeBuildInputs = with pkgs; [ + yarn + nodejs + fixup-yarn-lock + nodePackages.sass + ]; + + postPatch = '' + substituteInPlace package.json \ + --replace-fail "--no-charset --no-source-map" "" + ''; + + configurePhase = '' + export HOME=$TMPDIR + yarn config --offline set yarn-offline-mirror ${yarnOfflineCache} + fixup-yarn-lock yarn.lock + yarn install --offline --frozen-lockfile --ignore-scripts --ignore-platform + ''; + + buildPhase = '' + yarn --offline build + yarn --offline release + ''; + + installPhase = '' + mkdir -p $out + find . + cp -r dist/* $out + ''; + }; + + catppuccin-discord = "${catppuccin-discord-pkg}/dist/catppuccin-${config.catppuccin.flavor}-${config.catppuccin.accent}.theme.css"; + mergedThemes = pkgs.runCommand "mergedConfig" { } '' mkdir -p $out cp ${catppuccin-discord} $out/catppuccin.css From 03160b77ac6577933275d2fbb19ad2e00ebb554b Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Wed, 17 Dec 2025 15:08:14 -0500 Subject: [PATCH 144/282] alien: fix ddc again --- system/hosts/alien/default.nix | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/system/hosts/alien/default.nix b/system/hosts/alien/default.nix index 383f075..054d59e 100644 --- a/system/hosts/alien/default.nix +++ b/system/hosts/alien/default.nix @@ -17,10 +17,15 @@ # enable ddcutil users.users.sckova.extraGroups = [ "i2c" ]; - boot.initrd.kernelModules = [ "i2c-dev" ]; + boot.extraModulePackages = [ config.boot.kernelPackages.ddcci-driver ]; + boot.kernelModules = [ + "i2c-dev" + "ddcci_backlight" + ]; services.udev.extraRules = '' KERNEL=="i2c-[0-9]*", GROUP="i2c", MODE="0660" ''; + hardware.i2c.enable = true; boot.binfmt.emulatedSystems = [ "aarch64-linux" From 56eb7117ca84c148c05a608ff9cdb697d3bf622f Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Wed, 17 Dec 2025 15:33:57 -0500 Subject: [PATCH 145/282] update flake --- flake.lock | 103 ++++++++++++++++++++++++++--------------------------- flake.nix | 2 +- 2 files changed, 52 insertions(+), 53 deletions(-) diff --git a/flake.lock b/flake.lock index 80a5e73..6c91c9a 100644 --- a/flake.lock +++ b/flake.lock @@ -8,16 +8,15 @@ ] }, "locked": { - "lastModified": 1765530480, - "narHash": "sha256-JdEucq+zm6pAol40wB+7Cu464sn5SSKXjxBOe+XkWck=", + "lastModified": 1765901196, + "narHash": "sha256-rHUrYE/0DYLDZ0+TzHI/RA5GXS4CU55Fh9P7I/IODhg=", "owner": "nix-community", "repo": "nixos-apple-silicon", - "rev": "e7c623629d0c1d2556b57e34edcc18f6d5d123cb", + "rev": "aa6cb2eec178e43cefa244f18647be60d3d49378", "type": "github" }, "original": { "owner": "nix-community", - "ref": "linux-6-17-11", "repo": "nixos-apple-silicon", "type": "github" } @@ -41,11 +40,11 @@ "cachyos-kernel-patches": { "flake": false, "locked": { - "lastModified": 1765800897, - "narHash": "sha256-vtNHrRo6f4pk+9XUobPeL3t2RXtm6Dj9z+ngNGK6jN4=", + "lastModified": 1765893414, + "narHash": "sha256-gocqXiDzubfOpmbiLSmDtpE1CbKJe5N1f6bE9aocmlw=", "owner": "CachyOS", "repo": "kernel-patches", - "rev": "96d3efd823827b734074c0828c695d0c60d8a7d7", + "rev": "c89149f55d044df5734d7b1018bc015a56900868", "type": "github" }, "original": { @@ -61,11 +60,11 @@ ] }, "locked": { - "lastModified": 1765485905, - "narHash": "sha256-fk6zFzzcwz6su99K7UTxS2497+z/Cdk3FzNsacsmZKA=", + "lastModified": 1765990358, + "narHash": "sha256-l8x0gU8mnYaGMl+gWrsSHKBJlZWD8KXJfHTkRlFiPI0=", "owner": "catppuccin", "repo": "nix", - "rev": "b49c675acd80931fc8b54290920a90189b461dcf", + "rev": "de1b60ca45a578f59f7d84c8d338b346017b2161", "type": "github" }, "original": { @@ -125,11 +124,11 @@ "nixpkgs-lib": "nixpkgs-lib" }, "locked": { - "lastModified": 1765495779, - "narHash": "sha256-MhA7wmo/7uogLxiewwRRmIax70g6q1U/YemqTGoFHlM=", + "lastModified": 1765835352, + "narHash": "sha256-XswHlK/Qtjasvhd1nOa1e8MgZ8GS//jBoTqWtrS1Giw=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "5635c32d666a59ec9a55cab87e898889869f7b71", + "rev": "a34fae9c08a15ad73f295041fec82323541400a9", "type": "github" }, "original": { @@ -146,11 +145,11 @@ ] }, "locked": { - "lastModified": 1765495779, - "narHash": "sha256-MhA7wmo/7uogLxiewwRRmIax70g6q1U/YemqTGoFHlM=", + "lastModified": 1765835352, + "narHash": "sha256-XswHlK/Qtjasvhd1nOa1e8MgZ8GS//jBoTqWtrS1Giw=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "5635c32d666a59ec9a55cab87e898889869f7b71", + "rev": "a34fae9c08a15ad73f295041fec82323541400a9", "type": "github" }, "original": { @@ -187,11 +186,11 @@ ] }, "locked": { - "lastModified": 1765682243, - "narHash": "sha256-yeCxFV/905Wr91yKt5zrVvK6O2CVXWRMSrxqlAZnLp0=", + "lastModified": 1765980955, + "narHash": "sha256-rB45jv4uwC90vM9UZ70plfvY/2Kdygs+zlQ07dGQFk4=", "owner": "nix-community", "repo": "home-manager", - "rev": "58bf3ecb2d0bba7bdf363fc8a6c4d49b4d509d03", + "rev": "89c9508bbe9b40d36b3dc206c2483ef176f15173", "type": "github" }, "original": { @@ -212,11 +211,11 @@ "xwayland-satellite-unstable": "xwayland-satellite-unstable" }, "locked": { - "lastModified": 1765786620, - "narHash": "sha256-MPgXA3vfeUclJAt1r1LfH6TXmcqDEJm3HVDjr4Y1fIs=", + "lastModified": 1765961589, + "narHash": "sha256-F1JFGtVQl4s9eiVrdM8MuAgMcU13CgARZiVADIzEqto=", "owner": "sodiboo", "repo": "niri-flake", - "rev": "97440574d71b235b601013edf4749397b1ce99a6", + "rev": "bc56353a046ec01379f0bf971c99946a613b43b3", "type": "github" }, "original": { @@ -245,11 +244,11 @@ "niri-unstable": { "flake": false, "locked": { - "lastModified": 1765687800, - "narHash": "sha256-Erk+ypR8N+rCvjMdUB1N/v4jtm4QRH9k7r/9zh2HyC8=", + "lastModified": 1765861551, + "narHash": "sha256-1Bo86J/7nm8sndZz9gGW0agydYzLYimdz9aQEhnf1zY=", "owner": "YaLTeR", "repo": "niri", - "rev": "7c0898570ca5bd3f10fbf4cf2f8a00edc48d787b", + "rev": "2641356d41199a40ccc9a2e9f61bd34d7e7c8220", "type": "github" }, "original": { @@ -267,11 +266,11 @@ "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1765821177, - "narHash": "sha256-QNkmB5GzjZc3KUI3YN6MCTNxbwsKH9wZcsAbn24yDqg=", + "lastModified": 1765993893, + "narHash": "sha256-1nH2ej8lYNeWqa+N9GnQOgwdNeI+0O68PRstFNi+NK8=", "owner": "xddxdd", "repo": "nix-cachyos-kernel", - "rev": "495abf797d0ae70268c935620ee2ce5e0757ed40", + "rev": "52d03c7f4e6f78cbf9e1ec1d78101b2369ff8f7c", "type": "github" }, "original": { @@ -282,11 +281,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1765777093, - "narHash": "sha256-ed6h+jNx/4F/xOUtKlkk6zwQc/+qNhXiC+W7XCz+P6U=", + "lastModified": 1765949210, + "narHash": "sha256-DKHDrCurTyA7np6pvXd9JMwweAvmJeJ5vWBwRsx9Zi4=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "9792f74fef4620ad0aa5142e8973374c697f106a", + "rev": "c92a2155af41ff104cc97a805998eab8f8514ba9", "type": "github" }, "original": { @@ -298,11 +297,11 @@ }, "nixpkgs-lib": { "locked": { - "lastModified": 1761765539, - "narHash": "sha256-b0yj6kfvO8ApcSE+QmA6mUfu8IYG6/uU28OFn4PaC8M=", + "lastModified": 1765674936, + "narHash": "sha256-k00uTP4JNfmejrCLJOwdObYC9jHRrr/5M/a/8L2EIdo=", "owner": "nix-community", "repo": "nixpkgs.lib", - "rev": "719359f4562934ae99f5443f20aa06c2ffff91fc", + "rev": "2075416fcb47225d9b68ac469a5c4801a9c4dd85", "type": "github" }, "original": { @@ -313,11 +312,11 @@ }, "nixpkgs-stable": { "locked": { - "lastModified": 1765762245, - "narHash": "sha256-3iXM/zTqEskWtmZs3gqNiVtRTsEjYAedIaLL0mSBsrk=", + "lastModified": 1765838191, + "narHash": "sha256-m5KWt1nOm76ILk/JSCxBM4MfK3rYY7Wq9/TZIIeGnT8=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "c8cfcd6ccd422e41cc631a0b73ed4d5a925c393d", + "rev": "c6f52ebd45e5925c188d1a20119978aa4ffd5ef6", "type": "github" }, "original": { @@ -329,11 +328,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1765472234, - "narHash": "sha256-9VvC20PJPsleGMewwcWYKGzDIyjckEz8uWmT0vCDYK0=", + "lastModified": 1765779637, + "narHash": "sha256-KJ2wa/BLSrTqDjbfyNx70ov/HdgNBCBBSQP3BIzKnv4=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "2fbfb1d73d239d2402a8fe03963e37aab15abe8b", + "rev": "1306659b587dc277866c7b69eb97e5f07864d8c4", "type": "github" }, "original": { @@ -352,11 +351,11 @@ "systems": "systems" }, "locked": { - "lastModified": 1765796308, - "narHash": "sha256-szKgoF0JbDUvWkqjB2AyyFagmsF5ZFEjajZRUiUV9mU=", + "lastModified": 1766001744, + "narHash": "sha256-WvwyumXtxhfWlUERsaPUFQBrkXnW/WvaJpV3vQtwodQ=", "owner": "nix-community", "repo": "nixvim", - "rev": "12a76dd12beccd8d18249b05d10d6acda4e722e0", + "rev": "79ace278ec8d4c42883095512d15b32a0a5b7d65", "type": "github" }, "original": { @@ -372,11 +371,11 @@ ] }, "locked": { - "lastModified": 1765811783, - "narHash": "sha256-cON2s/eSCpqd+5ijOOt03+70UPEk7YoLwUw5ofWiV9g=", + "lastModified": 1766001225, + "narHash": "sha256-EJ62o0Zlw30sOypvrYe6miBJAB5pNHiF10C4jUqaw7U=", "owner": "noctalia-dev", "repo": "noctalia-shell", - "rev": "50a014f1a61b64127755591a62cf8fab33d203e3", + "rev": "8f3a37b126aa5873d41f571cff68152d488850e3", "type": "github" }, "original": { @@ -393,11 +392,11 @@ ] }, "locked": { - "lastModified": 1765815077, - "narHash": "sha256-o25WeGyDzOUDM0Ek5gbd6xSz31WMbHhZJN24uPGsmXE=", + "lastModified": 1766001898, + "narHash": "sha256-UelxPtXkA0a6FcuVrppQ64xzCkttUbsAl7EmrtbYJU4=", "owner": "nix-community", "repo": "NUR", - "rev": "c5178bd6a61784f5d1e65dfe3c1e79b22a7cbcf2", + "rev": "146ad167cf3dd7b83c0012158a5db110b0550022", "type": "github" }, "original": { @@ -516,11 +515,11 @@ "xwayland-satellite-unstable": { "flake": false, "locked": { - "lastModified": 1765343581, - "narHash": "sha256-HtTPbV6z6AJPg2d0bHaJKFrnNha+SEbHvbJafKAQ614=", + "lastModified": 1765935116, + "narHash": "sha256-lNyckAdrhNKXsi9pNOBYajntNFlWs+BITVoIZuNuwX0=", "owner": "Supreeeme", "repo": "xwayland-satellite", - "rev": "f0ad674b7009a6afd80cea59d4fbf975dd68ee95", + "rev": "979eab242e60cf481a31d9de508a1bdaf2dcf7d4", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index 4501bb3..7554a84 100644 --- a/flake.nix +++ b/flake.nix @@ -52,7 +52,7 @@ }; apple-silicon = { - url = "github:nix-community/nixos-apple-silicon/linux-6-17-11"; + url = "github:nix-community/nixos-apple-silicon"; inputs.nixpkgs.follows = "nixpkgs"; }; }; From 46d92c5e6f9a8c69525f8d2d69d6ff2d90ec58ca Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Wed, 17 Dec 2025 15:35:08 -0500 Subject: [PATCH 146/282] attempt to fix wallpaper applying with noctalia --- home/tiling/wallpaper/default.nix | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/home/tiling/wallpaper/default.nix b/home/tiling/wallpaper/default.nix index c7187fb..805c698 100644 --- a/home/tiling/wallpaper/default.nix +++ b/home/tiling/wallpaper/default.nix @@ -67,8 +67,12 @@ in After = [ "network-online.target" "niri.service" + "noctalia.service" + ]; + Wants = [ + "network-online.target" + "noctalia.service" ]; - Wants = [ "network-online.target" ]; }; Service = { From 29485ced8fe567bc637e3a913feb4f914688f826 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Wed, 17 Dec 2025 21:21:20 -0500 Subject: [PATCH 147/282] wip: fix gtk, qt themes --- home/default.nix | 13 +++++++++++-- home/tiling/niri/noctalia.nix | 1 - 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/home/default.nix b/home/default.nix index db6757f..df8acb3 100755 --- a/home/default.nix +++ b/home/default.nix @@ -209,11 +209,20 @@ size = config.userOptions.cursor.size; }; + home.sessionVariables = { + QT_QPA_PLATFORMTHEME = "qt6ct"; + }; + gtk = { enable = true; colorScheme = if config.userOptions.isDark then "dark" else "light"; + theme = { + package = pkgs.kdePackages.breeze-gtk; + name = if config.userOptions.isDark then "Breeze-Dark" else "Breeze"; + }; + iconTheme = { name = if config.userOptions.isDark then "Colloid-Dark" else "Colloid-Light"; package = pkgs.colloid-icon-theme; @@ -238,7 +247,7 @@ enable = true; qt5ctSettings = { Appearance = { - style = "kvantum"; + style = "Breeze"; icon_theme = config.gtk.iconTheme.name; color_scheme_path = "/home/${config.userOptions.username}/.config/qt5ct/qt5ct.conf"; custom_palette = true; @@ -249,7 +258,7 @@ }; qt6ctSettings = { Appearance = { - style = "kvantum"; + style = "Breeze"; icon_theme = config.gtk.iconTheme.name; color_scheme_path = "/home/${config.userOptions.username}/.config/qt6ct/qt6ct.conf"; custom_palette = true; diff --git a/home/tiling/niri/noctalia.nix b/home/tiling/niri/noctalia.nix index e76774f..ac6f6c2 100644 --- a/home/tiling/niri/noctalia.nix +++ b/home/tiling/niri/noctalia.nix @@ -512,7 +512,6 @@ in "TZDIR=${pkgs.tzdata}/share/zoneinfo" "NOCTALIA_SETTINGS_FALLBACK=%h/.config/noctalia/gui-settings.json" "QT_QPA_PLATFORM=wayland" - "QT_QPA_PLATFORMTHEME_5=qt5ct" "QT_QPA_PLATFORMTHEME=qt6ct" ]; }; From 2f6748deb789e08619ac95801b2ae7dfb21c5097 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Thu, 18 Dec 2025 10:49:20 -0500 Subject: [PATCH 148/282] wip: update firefox theme --- .../chrome/theme/{colors.css => theme.css} | 4 ++ home/graphical/firefox/chrome/userChrome.css | 3 +- home/graphical/firefox/default.nix | 45 ++++++++++++++++++- 3 files changed, 49 insertions(+), 3 deletions(-) rename home/graphical/firefox/chrome/theme/{colors.css => theme.css} (98%) diff --git a/home/graphical/firefox/chrome/theme/colors.css b/home/graphical/firefox/chrome/theme/theme.css similarity index 98% rename from home/graphical/firefox/chrome/theme/colors.css rename to home/graphical/firefox/chrome/theme/theme.css index a2221f1..20fb79d 100644 --- a/home/graphical/firefox/chrome/theme/colors.css +++ b/home/graphical/firefox/chrome/theme/theme.css @@ -1,5 +1,9 @@ /* Dark theme */ @media (prefers-color-scheme: dark) { + #nav-bar, + #PersonalToolbar { + background-color: rgb(24, 24, 37) !important; + } :root { .tabbrowser-tab[selected="true"] .tab-background { border: 1px solid #313244 !important; diff --git a/home/graphical/firefox/chrome/userChrome.css b/home/graphical/firefox/chrome/userChrome.css index 46cf3bf..a93785e 100644 --- a/home/graphical/firefox/chrome/userChrome.css +++ b/home/graphical/firefox/chrome/userChrome.css @@ -1,2 +1,3 @@ -@import "./theme/colors.css"; +@import "./colors.css"; +@import "./theme/theme.css"; @import "./theme/hide.css"; diff --git a/home/graphical/firefox/default.nix b/home/graphical/firefox/default.nix index 773c83b..6137f62 100644 --- a/home/graphical/firefox/default.nix +++ b/home/graphical/firefox/default.nix @@ -8,8 +8,49 @@ }: { - home.file.".mozilla/firefox/default/chrome" = { - source = ./chrome; + home.file.".mozilla/firefox/default/chrome/theme" = { + source = ./chrome/theme; + force = true; + recursive = true; + }; + + home.file.".mozilla/firefox/default/chrome/userChrome.css" = { + source = ./chrome/userChrome.css; + force = true; + }; + + home.file.".mozilla/firefox/default/chrome/colors.css" = { + text = '' + * { + --accent: ${pkgs.catppuccin.rgb.${config.catppuccin.flavor}.${config.catppuccin.accent}}; + --rosewater: ${pkgs.catppuccin.rgb.${config.catppuccin.flavor}.rosewater}; + --flamingo: ${pkgs.catppuccin.rgb.${config.catppuccin.flavor}.flamingo}; + --pink: ${pkgs.catppuccin.rgb.${config.catppuccin.flavor}.pink}; + --mauve: ${pkgs.catppuccin.rgb.${config.catppuccin.flavor}.mauve}; + --red: ${pkgs.catppuccin.rgb.${config.catppuccin.flavor}.red}; + --maroon: ${pkgs.catppuccin.rgb.${config.catppuccin.flavor}.maroon}; + --peach: ${pkgs.catppuccin.rgb.${config.catppuccin.flavor}.peach}; + --yellow: ${pkgs.catppuccin.rgb.${config.catppuccin.flavor}.yellow}; + --green: ${pkgs.catppuccin.rgb.${config.catppuccin.flavor}.green}; + --teal: ${pkgs.catppuccin.rgb.${config.catppuccin.flavor}.teal}; + --sky: ${pkgs.catppuccin.rgb.${config.catppuccin.flavor}.sky}; + --sapphire: ${pkgs.catppuccin.rgb.${config.catppuccin.flavor}.sapphire}; + --blue: ${pkgs.catppuccin.rgb.${config.catppuccin.flavor}.blue}; + --lavender: ${pkgs.catppuccin.rgb.${config.catppuccin.flavor}.lavender}; + --text: ${pkgs.catppuccin.rgb.${config.catppuccin.flavor}.text}; + --subtext1: ${pkgs.catppuccin.rgb.${config.catppuccin.flavor}.subtext1}; + --subtext0: ${pkgs.catppuccin.rgb.${config.catppuccin.flavor}.subtext0}; + --overlay2: ${pkgs.catppuccin.rgb.${config.catppuccin.flavor}.overlay2}; + --overlay1: ${pkgs.catppuccin.rgb.${config.catppuccin.flavor}.overlay1}; + --overlay0: ${pkgs.catppuccin.rgb.${config.catppuccin.flavor}.overlay0}; + --surface2: ${pkgs.catppuccin.rgb.${config.catppuccin.flavor}.surface2}; + --surface1: ${pkgs.catppuccin.rgb.${config.catppuccin.flavor}.surface1}; + --surface0: ${pkgs.catppuccin.rgb.${config.catppuccin.flavor}.surface0}; + --base: ${pkgs.catppuccin.rgb.${config.catppuccin.flavor}.base}; + --mantle: ${pkgs.catppuccin.rgb.${config.catppuccin.flavor}.mantle}; + --crust: ${pkgs.catppuccin.rgb.${config.catppuccin.flavor}.crust}; + } + ''; force = true; }; From 2f184aa383534615a3fa2301e3f71c19af502b28 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Thu, 18 Dec 2025 10:49:43 -0500 Subject: [PATCH 149/282] modify font vars and add emojis --- home/default.nix | 47 +++++++++++++++++++++++++++++++++++------------ 1 file changed, 35 insertions(+), 12 deletions(-) diff --git a/home/default.nix b/home/default.nix index df8acb3..22cf54a 100755 --- a/home/default.nix +++ b/home/default.nix @@ -48,8 +48,14 @@ }; size = lib.mkOption { type = lib.types.int; + readOnly = true; default = 11; }; + package = lib.mkOption { + type = lib.types.package; + readOnly = true; + default = pkgs.noto-fonts; + }; }; fontSerif = { name = lib.mkOption { @@ -59,8 +65,14 @@ }; size = lib.mkOption { type = lib.types.int; + readOnly = true; default = 11; }; + package = lib.mkOption { + type = lib.types.package; + readOnly = true; + default = pkgs.noto-fonts; + }; }; fontMono = { name = lib.mkOption { @@ -70,8 +82,31 @@ }; size = lib.mkOption { type = lib.types.int; + readOnly = true; default = 10; }; + package = lib.mkOption { + type = lib.types.package; + readOnly = true; + default = pkgs.nerd-fonts.noto; + }; + }; + fontEmoji = { + name = lib.mkOption { + type = lib.types.str; + readOnly = true; + default = "Noto Emoji"; + }; + size = lib.mkOption { + type = lib.types.int; + readOnly = true; + default = 10; + }; + package = lib.mkOption { + type = lib.types.package; + readOnly = true; + default = pkgs.noto-fonts-color-emoji; + }; }; cursor = let @@ -130,13 +165,7 @@ # development & tooling gh jdk21_headless - nerd-fonts.noto xorg.xcursorgen - kdePackages.qtstyleplugin-kvantum - (catppuccin-kvantum.override { - variant = config.catppuccin.flavor; - accent = config.catppuccin.accent; - }) # kde and kde theming kde-rounded-corners @@ -194,12 +223,6 @@ ''; force = true; }; - ".config/Kvantum/kvantum.kvconfig" = { - text = lib.generators.toINI { } { - General.theme = "catppuccin-${config.catppuccin.flavor}-${config.catppuccin.accent}"; - }; - force = true; - }; }; home.pointerCursor = { From 4eff0ed720aaf7a31ffe59bf4682a26eef1705ed Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Thu, 18 Dec 2025 10:50:27 -0500 Subject: [PATCH 150/282] alien: remove autologin --- system/hosts/alien/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/system/hosts/alien/default.nix b/system/hosts/alien/default.nix index 054d59e..f454a0c 100644 --- a/system/hosts/alien/default.nix +++ b/system/hosts/alien/default.nix @@ -72,7 +72,7 @@ services.displayManager = { autoLogin = { - enable = true; + enable = false; user = "sckova"; }; defaultSession = "niri"; @@ -84,7 +84,7 @@ ''; }; - security.sudo.wheelNeedsPassword = true; + security.sudo.wheelNeedsPassword = false; hardware.nvidia = { modesetting.enable = true; From d21521b64da9639cf459e20c97dca6cc62d46c86 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Thu, 18 Dec 2025 11:53:14 -0500 Subject: [PATCH 151/282] add ssh pubkey --- system/all.nix | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/system/all.nix b/system/all.nix index cf2e870..277d9be 100755 --- a/system/all.nix +++ b/system/all.nix @@ -206,8 +206,6 @@ enable = true; enableSSHSupport = true; }; - - services.openssh.enable = true; networking.firewall.enable = false; documentation.man = { @@ -215,6 +213,11 @@ generateCaches = false; }; + services.openssh.enable = true; + users.users."sckova".openssh.authorizedKeys.keys = [ + "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCn/eXMq04vcXNqGVzlZOw2C2dQYBqzWsoigdFW09XqC2WPaGljbAIayzaD7Q1tIlPGGy10+nipAXAk1CHAnrQ2KSg4v/SwFphF48V3joeQmideC4vo0EIQEQibbMtj3oFezqRcRZINl/1hr4t0myZ3zkoTjh3HCkqJEMGUdArDMEVPA5mwcKSLsyshW9LMG/3C9YKKPU1/lVsoeDkj8AVZA0srhkApuRKF0IVu8KoPd6ldvSWgpQ1iuQ+MEMSeOUJytieBkzeY9zEVePaQ86oIMDUzqq8OTN37RyShiJKPskKyj12rJI2eFtI/viGaj8P6/yvKqMp3F4kAsPAuvMLLAIYCNa+139rDpkkIKB6lVtgq0jnJGRywaYXGIRyExNcVAr8I9wrNnNN2M4whVeYBxfLMzKZ+VvfK39AaGvnzPuFDLqUC87sN4c/1KZQo+TCtlaxcYvqowWylw5JHUt8uwFcO/dUebQxxAv8EdyPZGJ/54y19PsTbu9KyxSc2gIU= sckova" + ]; + # This value determines the NixOS release from which the default # settings for stateful data, like file locations and database versions # on your system were taken. It‘s perfectly fine and recommended to leave From cb89a4b6b0adf27a43cf1573bc5a1b875b4014cc Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Fri, 19 Dec 2025 12:54:45 -0500 Subject: [PATCH 152/282] spin off games folder --- flake.nix | 4 ++-- home/default.nix | 7 +------ home/games/minecraft/default.nix | 14 ++++++++++++++ home/games/morrowind/default.nix | 5 +++++ system/{all.nix => default.nix} | 2 ++ 5 files changed, 24 insertions(+), 8 deletions(-) create mode 100644 home/games/minecraft/default.nix create mode 100644 home/games/morrowind/default.nix rename system/{all.nix => default.nix} (98%) diff --git a/flake.nix b/flake.nix index 7554a84..390b1e2 100644 --- a/flake.nix +++ b/flake.nix @@ -97,7 +97,7 @@ (import ./packages/overlay.nix) ]; } - ./system/all.nix + ./system ./system/widevine ./system/shell/fish.nix ./system/tailscale @@ -135,7 +135,7 @@ home.username = user; home.homeDirectory = "/home/${user}"; modules = [ - ./home/all.nix + ./home ./home/hosts/${hostname}.nix catppuccin.homeModules.catppuccin home-manager.homeModules.home-manager diff --git a/home/default.nix b/home/default.nix index 22cf54a..8f57be4 100755 --- a/home/default.nix +++ b/home/default.nix @@ -161,11 +161,10 @@ browsh mosh spotify-player + gh # development & tooling - gh jdk21_headless - xorg.xcursorgen # kde and kde theming kde-rounded-corners @@ -178,10 +177,6 @@ bitwarden-desktop qbittorrent - # gui applications ( games ) - openmw - prismlauncher - # gui applications ( multimedia ) audacity strawberry diff --git a/home/games/minecraft/default.nix b/home/games/minecraft/default.nix new file mode 100644 index 0000000..58b9808 --- /dev/null +++ b/home/games/minecraft/default.nix @@ -0,0 +1,14 @@ +{ config, pkgs, ... }: + +{ + home.packages = with pkgs; [ + (prismlauncher.override { + jdks = [ + jdk25 + jdk21 + jdk17 + jdk8 + ]; + }) + ]; +} diff --git a/home/games/morrowind/default.nix b/home/games/morrowind/default.nix new file mode 100644 index 0000000..052adab --- /dev/null +++ b/home/games/morrowind/default.nix @@ -0,0 +1,5 @@ +{ config, pkgs, ... }: + +{ + home.packages = with pkgs; [ openmw ]; +} diff --git a/system/all.nix b/system/default.nix similarity index 98% rename from system/all.nix rename to system/default.nix index 277d9be..ca518f5 100755 --- a/system/all.nix +++ b/system/default.nix @@ -54,6 +54,8 @@ home-manager.users.sckova = { imports = [ ../home + ../home/games/minecraft + ../home/games/morrowind ../home/graphical/discord ../home/graphical/firefox ../home/graphical/mpv From 4580a96435e1c563f56c616c89a96751e0dbcf79 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Fri, 19 Dec 2025 13:05:41 -0500 Subject: [PATCH 153/282] switch to helium from nur --- home/default.nix | 2 +- packages/helium-browser/package.nix | 138 ------------------ .../helium-browser/widevine-aarch64-linux.nix | 49 ------- packages/helium-browser/widevine-meta.nix | 15 -- .../helium-browser/widevine-x86_64-linux.nix | 44 ------ packages/overlay.nix | 8 - 6 files changed, 1 insertion(+), 255 deletions(-) delete mode 100644 packages/helium-browser/package.nix delete mode 100644 packages/helium-browser/widevine-aarch64-linux.nix delete mode 100644 packages/helium-browser/widevine-meta.nix delete mode 100644 packages/helium-browser/widevine-x86_64-linux.nix diff --git a/home/default.nix b/home/default.nix index 8f57be4..64171a9 100755 --- a/home/default.nix +++ b/home/default.nix @@ -173,7 +173,7 @@ # gui applications input-leap libreoffice-qt-fresh - # helium-browser + nur.repos.forkprince.helium-nightly bitwarden-desktop qbittorrent diff --git a/packages/helium-browser/package.nix b/packages/helium-browser/package.nix deleted file mode 100644 index 6950eed..0000000 --- a/packages/helium-browser/package.nix +++ /dev/null @@ -1,138 +0,0 @@ -{ - stdenv, - lib, - fetchurl, - makeDesktopItem, - copyDesktopItems, - autoPatchelfHook, - makeWrapper, - - helium-widevine, - - # runtime dependencies - xorg, - libGL, - mesa, - cairo, - pango, - systemd, - alsa-lib, - gcc-unwrapped, - qt5, - qt6, - glib, - nspr, - nss, - at-spi2-atk, - at-spi2-core, - cups, - gsettings-desktop-schemas, - gtk3, -}: -let - architectures = { - "x86_64-linux" = { - arch = "x86_64"; - hash = "sha256-DLcJCECE5yWcwZuRwNJs3q+sqrZbTbouGF5bDTIFYWM="; - }; - "aarch64-linux" = { - arch = "arm64"; - hash = "sha256-c4XHvq6H60RfoChyrdADGeazZ0hxt72GoZE4A0bwzNU="; - }; - }; - - platformInfo = - architectures.${stdenv.hostPlatform.system} - or (throw "Unsupported system: ${stdenv.hostPlatform.system}"); - -in -stdenv.mkDerivation rec { - pname = "helium-browser"; - version = "0.6.9.1"; - xzName = "helium-${version}-${platformInfo.arch}_linux"; - - src = fetchurl { - url = "https://github.com/imputnet/helium-linux/releases/download/${version}/${xzName}.tar.xz"; - hash = platformInfo.hash; - }; - - sourceRoot = "."; - - nativeBuildInputs = [ - autoPatchelfHook - makeWrapper - copyDesktopItems - ]; - - buildInputs = [ - xorg.libXext - xorg.libXfixes - xorg.libXrandr - xorg.libxcb - xorg.libXdamage - xorg.libXcomposite - mesa - cairo - pango - systemd - alsa-lib - gcc-unwrapped.lib - qt5.qtbase.out - qt6.qtbase.out - glib - nspr - nss - at-spi2-atk - at-spi2-core - cups - gsettings-desktop-schemas - gtk3 - ]; - - dontWrapQtApps = true; - - unpackPhase = '' - runHook preUnpack - tar xf $src - runHook postUnpack - ''; - - installPhase = '' - runHook preInstall - - mkdir -p $out/opt/helium - mv ${xzName}/helium.desktop . - mv ${xzName}/product_logo_256.png . - cp -r ${xzName}/* $out/opt/helium/ - chmod +x $out/opt/helium/chrome-wrapper $out/opt/helium/chrome - - - cp -r ${helium-widevine}/share/helium/WidevineCdm $out/opt/helium/ - - makeWrapper $out/opt/helium/chrome-wrapper $out/bin/helium-browser \ - --chdir $out/opt/helium \ - --prefix XDG_DATA_DIRS : "$GSETTINGS_SCHEMAS_PATH:${gsettings-desktop-schemas}/share/gsettings-schemas/${gsettings-desktop-schemas.name}" \ - --prefix LD_LIBRARY_PATH : "${ - lib.makeLibraryPath [ - libGL - mesa - ] - }" - - install -Dm644 product_logo_256.png $out/share/icons/hicolor/256x256/apps/helium.png - install -Dm644 helium.desktop $out/share/applications/helium.desktop - substituteInPlace $out/share/applications/helium.desktop \ - --replace-fail 'Exec=chromium' "Exec=$out/bin/helium-browser" - substituteInPlace $out/share/applications/helium.desktop \ - --replace-fail 'Icon=helium' 'Icon=web-browser' - - runHook postInstall - ''; - - meta = with lib; { - homepage = "https://helium.computer"; - description = "Helium web browser"; - platforms = platforms.linux; - mainProgram = "helium"; - }; -} diff --git a/packages/helium-browser/widevine-aarch64-linux.nix b/packages/helium-browser/widevine-aarch64-linux.nix deleted file mode 100644 index 1ac999b..0000000 --- a/packages/helium-browser/widevine-aarch64-linux.nix +++ /dev/null @@ -1,49 +0,0 @@ -{ - lib, - stdenv, - fetchurl, - fetchFromGitHub, - squashfsTools, - python3, -}: - -stdenv.mkDerivation (finalAttrs: { - pname = "helium-widevine"; - version = "${finalAttrs.lacrosVersion}-${builtins.substring 0 7 finalAttrs.widevineInstaller.rev}"; - lacrosVersion = "120.0.6098.0"; - - widevineInstaller = fetchFromGitHub { - owner = "AsahiLinux"; - repo = "widevine-installer"; - rev = "7a3928fe1342fb07d96f61c2b094e3287588958b"; - sha256 = "sha256-XI1y4pVNpXS+jqFs0KyVMrxcULOJ5rADsgvwfLF6e0Y="; - }; - - src = fetchurl { - url = "https://commondatastorage.googleapis.com/chromeos-localmirror/distfiles/chromeos-lacros-arm64-squash-zstd-${finalAttrs.lacrosVersion}"; - hash = "sha256-OKV8w5da9oZ1oSGbADVPCIkP9Y0MVLaQ3PXS3ZBLFXY="; - }; - - nativeBuildInputs = [ - squashfsTools - python3 - ]; - - unpackPhase = '' - unsquashfs -q $src 'WidevineCdm/*' - python3 $widevineInstaller/widevine_fixup.py squashfs-root/WidevineCdm/_platform_specific/cros_arm64/libwidevinecdm.so libwidevinecdm.so - cp squashfs-root/WidevineCdm/manifest.json . - cp squashfs-root/WidevineCdm/LICENSE LICENSE.txt - ''; - - # Accoring to widevine-installer: "Hack because Chromium hardcodes a check for this right now..." - postInstall = '' - mkdir -p "$out/share/helium/WidevineCdm/_platform_specific/linux_x64" - touch "$out/share/helium/WidevineCdm/_platform_specific/linux_x64/libwidevinecdm.so" - install -vD manifest.json "$out/share/helium/WidevineCdm/manifest.json" - install -vD LICENSE.txt "$out/share/helium/WidevineCdm/License.txt" - install -vD libwidevinecdm.so "$out/share/helium/WidevineCdm/_platform_specific/linux_arm64/libwidevinecdm.so" - ''; - - meta = import ./widevine-meta.nix lib; -}) diff --git a/packages/helium-browser/widevine-meta.nix b/packages/helium-browser/widevine-meta.nix deleted file mode 100644 index 0bd7ee6..0000000 --- a/packages/helium-browser/widevine-meta.nix +++ /dev/null @@ -1,15 +0,0 @@ -lib: { - description = "Widevine CDM"; - homepage = "https://www.widevine.com"; - sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ]; - license = lib.licenses.unfree; - maintainers = with lib.maintainers; [ - jlamur - bearfm - ]; - platforms = lib.map (name: lib.removeSuffix ".nix" (lib.removePrefix "widevine-" name)) ( - lib.filter (name: name != "meta.nix" && name != "package.nix") ( - builtins.attrNames (builtins.readDir ./.) - ) - ); -} diff --git a/packages/helium-browser/widevine-x86_64-linux.nix b/packages/helium-browser/widevine-x86_64-linux.nix deleted file mode 100644 index 3dce29a..0000000 --- a/packages/helium-browser/widevine-x86_64-linux.nix +++ /dev/null @@ -1,44 +0,0 @@ -{ - lib, - stdenv, - fetchurl, - go-crx3, -}: - -let - manifest = builtins.fromJSON (builtins.readFile ./x86_64-manifest.json); -in - -stdenv.mkDerivation (finalAttrs: { - pname = "widevine-cdm"; - version = manifest.version; - - src = fetchurl { - url = manifest.url; - hash = manifest.sri; - }; - - nativeBuildInputs = [ go-crx3 ]; - - unpackPhase = '' - unpackDir="src" - cp "$src" "$unpackDir".crx # go-crx3 doesn't like .crx3 extensions - crx3 unpack "$unpackDir".crx - - cd "$unpackDir" - ''; - - installPhase = '' - runHook preInstall - - install -vD manifest.json $out/share/helium/WidevineCdm/manifest.json - install -vD LICENSE $out/share/helium/WidevineCdm/LICENSE.txt - install -vD _platform_specific/linux_x64/libwidevinecdm.so $out/share/helium/WidevineCdm/_platform_specific/linux_x64/libwidevinecdm.so - - runHook postInstall - ''; - - passthru.updateScript = ./update-x86_64.py; - - meta = import ./meta.nix lib; -}) diff --git a/packages/overlay.nix b/packages/overlay.nix index 2764a0b..ef23042 100644 --- a/packages/overlay.nix +++ b/packages/overlay.nix @@ -16,14 +16,6 @@ final: prev: { # }) { }; # }; - helium-browser = - let - helium-widevine = prev.callPackage ./helium-browser/widevine-aarch64-linux.nix { }; - in - prev.callPackage ./helium-browser/package.nix { - inherit helium-widevine; - }; - spotify-webapp = prev.callPackage (builtins.path { path = ./spotify/package.nix; }) { }; spotifyd = prev.callPackage (builtins.path { path = ./spotifyd/package.nix; }) { }; From e89eeb8a7271d3b8273de258e9497c9dbb373ce1 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Fri, 19 Dec 2025 13:07:24 -0500 Subject: [PATCH 154/282] update flake --- flake.lock | 60 +++++++++++++++++++++++++++--------------------------- 1 file changed, 30 insertions(+), 30 deletions(-) diff --git a/flake.lock b/flake.lock index 6c91c9a..80fdf61 100644 --- a/flake.lock +++ b/flake.lock @@ -8,11 +8,11 @@ ] }, "locked": { - "lastModified": 1765901196, - "narHash": "sha256-rHUrYE/0DYLDZ0+TzHI/RA5GXS4CU55Fh9P7I/IODhg=", + "lastModified": 1766064315, + "narHash": "sha256-aMoYLYIj+yYGhDKuSromj+VZYnMyN3lRRAZ+dk1IOiE=", "owner": "nix-community", "repo": "nixos-apple-silicon", - "rev": "aa6cb2eec178e43cefa244f18647be60d3d49378", + "rev": "f94f4496775f9ca6e8a9e9e83f5aa4e4210fbb5d", "type": "github" }, "original": { @@ -24,11 +24,11 @@ "cachyos-kernel": { "flake": false, "locked": { - "lastModified": 1765803132, - "narHash": "sha256-HQRBJcnUvoSh5ZvYWB3/vhvozuXAiOr36BUghEoGK+E=", + "lastModified": 1766083376, + "narHash": "sha256-eh914fO4gYD8aCuUrMlPBRsxwwa2+qc9HCuAhrG6G9c=", "owner": "CachyOS", "repo": "linux-cachyos", - "rev": "3c3ffceb2ab21e7a67a0565ae636d1471893e35b", + "rev": "9d369789361623b8a3b842a71adccb19b24ba16f", "type": "github" }, "original": { @@ -40,11 +40,11 @@ "cachyos-kernel-patches": { "flake": false, "locked": { - "lastModified": 1765893414, - "narHash": "sha256-gocqXiDzubfOpmbiLSmDtpE1CbKJe5N1f6bE9aocmlw=", + "lastModified": 1766080842, + "narHash": "sha256-LezfhAfTdfhvjiHSWe258SMUIs+cP8SHT8BiPou0A4w=", "owner": "CachyOS", "repo": "kernel-patches", - "rev": "c89149f55d044df5734d7b1018bc015a56900868", + "rev": "e266fbc7f36273ebbc62a9bffda02e3882eb8f6c", "type": "github" }, "original": { @@ -211,11 +211,11 @@ "xwayland-satellite-unstable": "xwayland-satellite-unstable" }, "locked": { - "lastModified": 1765961589, - "narHash": "sha256-F1JFGtVQl4s9eiVrdM8MuAgMcU13CgARZiVADIzEqto=", + "lastModified": 1766090778, + "narHash": "sha256-e1SOJYHe5IbKFIOpWswB/4nIog1Zx5iXA4YB49XTFxE=", "owner": "sodiboo", "repo": "niri-flake", - "rev": "bc56353a046ec01379f0bf971c99946a613b43b3", + "rev": "d06ab0308d797dc4b2f9025d5952cca90afd11a7", "type": "github" }, "original": { @@ -244,11 +244,11 @@ "niri-unstable": { "flake": false, "locked": { - "lastModified": 1765861551, - "narHash": "sha256-1Bo86J/7nm8sndZz9gGW0agydYzLYimdz9aQEhnf1zY=", + "lastModified": 1766085543, + "narHash": "sha256-96X+37m2HH8IG3BzXEN3d4eHeUbiu9g1Q+KJQRX/Jpw=", "owner": "YaLTeR", "repo": "niri", - "rev": "2641356d41199a40ccc9a2e9f61bd34d7e7c8220", + "rev": "c4462d0c7fddfc11c9e98d43e3ef68a5b3c844ca", "type": "github" }, "original": { @@ -266,11 +266,11 @@ "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1765993893, - "narHash": "sha256-1nH2ej8lYNeWqa+N9GnQOgwdNeI+0O68PRstFNi+NK8=", + "lastModified": 1766166277, + "narHash": "sha256-+52snV2er4DRqd3avoyRplPM7fyB2ganoCsWWEF6l9c=", "owner": "xddxdd", "repo": "nix-cachyos-kernel", - "rev": "52d03c7f4e6f78cbf9e1ec1d78101b2369ff8f7c", + "rev": "8a368bfdfe9fb7fdff3063e79cedb69dd811ff4e", "type": "github" }, "original": { @@ -281,11 +281,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1765949210, - "narHash": "sha256-DKHDrCurTyA7np6pvXd9JMwweAvmJeJ5vWBwRsx9Zi4=", + "lastModified": 1766121155, + "narHash": "sha256-Vll702HVchvXuk2Ji+UnjYngYQLF/ClnxBMMUhnokwY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "c92a2155af41ff104cc97a805998eab8f8514ba9", + "rev": "7ca89e6f807ca2bd53eb5e7e6f88c733d5e66cbb", "type": "github" }, "original": { @@ -351,11 +351,11 @@ "systems": "systems" }, "locked": { - "lastModified": 1766001744, - "narHash": "sha256-WvwyumXtxhfWlUERsaPUFQBrkXnW/WvaJpV3vQtwodQ=", + "lastModified": 1766148816, + "narHash": "sha256-rcyaKzrFhkMHCQlC/dm5dR3vwIAGvUXOXoEZRIPGo0I=", "owner": "nix-community", "repo": "nixvim", - "rev": "79ace278ec8d4c42883095512d15b32a0a5b7d65", + "rev": "0ef5923c84d74ff03914940190a8ab167c2db724", "type": "github" }, "original": { @@ -371,11 +371,11 @@ ] }, "locked": { - "lastModified": 1766001225, - "narHash": "sha256-EJ62o0Zlw30sOypvrYe6miBJAB5pNHiF10C4jUqaw7U=", + "lastModified": 1766161753, + "narHash": "sha256-8IiZyT/Sldwm6BekJXChPQbEZzIxPoVP82a0A36rkjo=", "owner": "noctalia-dev", "repo": "noctalia-shell", - "rev": "8f3a37b126aa5873d41f571cff68152d488850e3", + "rev": "2d81050db006385fc92350d0a18e613a958bed17", "type": "github" }, "original": { @@ -392,11 +392,11 @@ ] }, "locked": { - "lastModified": 1766001898, - "narHash": "sha256-UelxPtXkA0a6FcuVrppQ64xzCkttUbsAl7EmrtbYJU4=", + "lastModified": 1766165995, + "narHash": "sha256-PIHoCq4Cs8OGEcXkbbPfOnFjZHj/HDdWMdALnxkk/4A=", "owner": "nix-community", "repo": "NUR", - "rev": "146ad167cf3dd7b83c0012158a5db110b0550022", + "rev": "3f46367637236524ef6bd99f4aa0157a5d01a128", "type": "github" }, "original": { From 110abe5c63d57bf5dc45b3c3a6855984f8325172 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Wed, 24 Dec 2025 10:38:14 -0500 Subject: [PATCH 155/282] update flake --- flake.lock | 84 +++++++++++++++--------------- home/graphical/firefox/default.nix | 3 ++ system/hosts/peach/default.nix | 9 ---- 3 files changed, 45 insertions(+), 51 deletions(-) diff --git a/flake.lock b/flake.lock index 80fdf61..13a0d76 100644 --- a/flake.lock +++ b/flake.lock @@ -24,11 +24,11 @@ "cachyos-kernel": { "flake": false, "locked": { - "lastModified": 1766083376, - "narHash": "sha256-eh914fO4gYD8aCuUrMlPBRsxwwa2+qc9HCuAhrG6G9c=", + "lastModified": 1766395826, + "narHash": "sha256-W/8JwebN9BF9vpMV9yZpaSFGGazQWyhGEpmNI1XEugM=", "owner": "CachyOS", "repo": "linux-cachyos", - "rev": "9d369789361623b8a3b842a71adccb19b24ba16f", + "rev": "b68aded713a580df028543faea77c4ca5ec1226b", "type": "github" }, "original": { @@ -40,11 +40,11 @@ "cachyos-kernel-patches": { "flake": false, "locked": { - "lastModified": 1766080842, - "narHash": "sha256-LezfhAfTdfhvjiHSWe258SMUIs+cP8SHT8BiPou0A4w=", + "lastModified": 1766372082, + "narHash": "sha256-kUCl6N3+e0CGn2tAci0WRr14L+01JYpcbN9HeCvWt3E=", "owner": "CachyOS", "repo": "kernel-patches", - "rev": "e266fbc7f36273ebbc62a9bffda02e3882eb8f6c", + "rev": "a0f67557573aa13c028aea2a84a7a68e0d5477e8", "type": "github" }, "original": { @@ -186,11 +186,11 @@ ] }, "locked": { - "lastModified": 1765980955, - "narHash": "sha256-rB45jv4uwC90vM9UZ70plfvY/2Kdygs+zlQ07dGQFk4=", + "lastModified": 1766553851, + "narHash": "sha256-hHKQhHkXxuPJwLkI8wdu826GLV5AcuW9/HVdc9eBnTU=", "owner": "nix-community", "repo": "home-manager", - "rev": "89c9508bbe9b40d36b3dc206c2483ef176f15173", + "rev": "7eca7f7081036a7b740090994c9ec543927f89a7", "type": "github" }, "original": { @@ -211,11 +211,11 @@ "xwayland-satellite-unstable": "xwayland-satellite-unstable" }, "locked": { - "lastModified": 1766090778, - "narHash": "sha256-e1SOJYHe5IbKFIOpWswB/4nIog1Zx5iXA4YB49XTFxE=", + "lastModified": 1766517173, + "narHash": "sha256-zhb16f8hDVw7rsVNEIZQJOw78VQ4Eu3sjzwznxSzVtk=", "owner": "sodiboo", "repo": "niri-flake", - "rev": "d06ab0308d797dc4b2f9025d5952cca90afd11a7", + "rev": "ff40739a8a6d1f2890e91b5bedbb8f09e6c43e4f", "type": "github" }, "original": { @@ -244,11 +244,11 @@ "niri-unstable": { "flake": false, "locked": { - "lastModified": 1766085543, - "narHash": "sha256-96X+37m2HH8IG3BzXEN3d4eHeUbiu9g1Q+KJQRX/Jpw=", + "lastModified": 1766483519, + "narHash": "sha256-LRSUhcm2erq/v/6EkwVP86kdVyRSsZ+AYQgwsKJMwCM=", "owner": "YaLTeR", "repo": "niri", - "rev": "c4462d0c7fddfc11c9e98d43e3ef68a5b3c844ca", + "rev": "4d295418ce8e8e110060396bb485c4f0c381d37e", "type": "github" }, "original": { @@ -266,11 +266,11 @@ "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1766166277, - "narHash": "sha256-+52snV2er4DRqd3avoyRplPM7fyB2ganoCsWWEF6l9c=", + "lastModified": 1766554203, + "narHash": "sha256-ZvZEycXdE7iS65D2jNWjnRoFboO9FoRI/OqnLRBH4Is=", "owner": "xddxdd", "repo": "nix-cachyos-kernel", - "rev": "8a368bfdfe9fb7fdff3063e79cedb69dd811ff4e", + "rev": "d91219fabf254fa6eb75330db19c306676ca337d", "type": "github" }, "original": { @@ -281,11 +281,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1766121155, - "narHash": "sha256-Vll702HVchvXuk2Ji+UnjYngYQLF/ClnxBMMUhnokwY=", + "lastModified": 1766427476, + "narHash": "sha256-KHgJHYGYuHUtJPBjczN0kFrWHmdfUXPa0Km6Yq/ELEE=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "7ca89e6f807ca2bd53eb5e7e6f88c733d5e66cbb", + "rev": "6dd5b55337d892a8a441aaad31bf1a4165b453bc", "type": "github" }, "original": { @@ -312,11 +312,11 @@ }, "nixpkgs-stable": { "locked": { - "lastModified": 1765838191, - "narHash": "sha256-m5KWt1nOm76ILk/JSCxBM4MfK3rYY7Wq9/TZIIeGnT8=", + "lastModified": 1766473571, + "narHash": "sha256-5G1NDO2PulBx1RoaA6U1YoUDX0qZslpPxv+n5GX6Qto=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "c6f52ebd45e5925c188d1a20119978aa4ffd5ef6", + "rev": "76701a179d3a98b07653e2b0409847499b2a07d3", "type": "github" }, "original": { @@ -328,11 +328,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1765779637, - "narHash": "sha256-KJ2wa/BLSrTqDjbfyNx70ov/HdgNBCBBSQP3BIzKnv4=", + "lastModified": 1766309749, + "narHash": "sha256-3xY8CZ4rSnQ0NqGhMKAy5vgC+2IVK0NoVEzDoOh4DA4=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "1306659b587dc277866c7b69eb97e5f07864d8c4", + "rev": "a6531044f6d0bef691ea18d4d4ce44d0daa6e816", "type": "github" }, "original": { @@ -351,11 +351,11 @@ "systems": "systems" }, "locked": { - "lastModified": 1766148816, - "narHash": "sha256-rcyaKzrFhkMHCQlC/dm5dR3vwIAGvUXOXoEZRIPGo0I=", + "lastModified": 1766443759, + "narHash": "sha256-iGDhUPOPyY9NOTNHkhNzZKoz3+OlBNGg451qtvPq/Ic=", "owner": "nix-community", "repo": "nixvim", - "rev": "0ef5923c84d74ff03914940190a8ab167c2db724", + "rev": "1787eeda5a2ce35bcd57dbb482718b0d897786ae", "type": "github" }, "original": { @@ -371,11 +371,11 @@ ] }, "locked": { - "lastModified": 1766161753, - "narHash": "sha256-8IiZyT/Sldwm6BekJXChPQbEZzIxPoVP82a0A36rkjo=", + "lastModified": 1766538131, + "narHash": "sha256-CAGs0LA27JL9EBLfH1sDb2ljs2hC2KBFCU9CnJfTmR0=", "owner": "noctalia-dev", "repo": "noctalia-shell", - "rev": "2d81050db006385fc92350d0a18e613a958bed17", + "rev": "6ff3debf15aef7c43be7cb43938f78c25d40b3d5", "type": "github" }, "original": { @@ -392,11 +392,11 @@ ] }, "locked": { - "lastModified": 1766165995, - "narHash": "sha256-PIHoCq4Cs8OGEcXkbbPfOnFjZHj/HDdWMdALnxkk/4A=", + "lastModified": 1766590087, + "narHash": "sha256-KYvXjaedY26jVK1CtDhQ+HmA+dVhAgPAbm0suYlsorI=", "owner": "nix-community", "repo": "NUR", - "rev": "3f46367637236524ef6bd99f4aa0157a5d01a128", + "rev": "edc9b9b68a8ceea31a50e8fed66badff3856e75b", "type": "github" }, "original": { @@ -452,11 +452,11 @@ "systems": "systems_2" }, "locked": { - "lastModified": 1765687197, - "narHash": "sha256-5aJgT+lEC7ypuAGE3DQLj3LzYDQ+kRG6MnkVr3ZF9RU=", + "lastModified": 1766292025, + "narHash": "sha256-dZ9SSqRXfb+WU9MLl5c/ktdRWYZ42uxBPB7rQYuDaJs=", "owner": "Gerg-L", "repo": "spicetify-nix", - "rev": "fa6a5dde9d95bf7b8f075ff5aceeb1d97fa9043a", + "rev": "73031a3c9359c6c0ab82098793573d0c0951e372", "type": "github" }, "original": { @@ -515,11 +515,11 @@ "xwayland-satellite-unstable": { "flake": false, "locked": { - "lastModified": 1765935116, - "narHash": "sha256-lNyckAdrhNKXsi9pNOBYajntNFlWs+BITVoIZuNuwX0=", + "lastModified": 1766429945, + "narHash": "sha256-9Kv4gWagx/u4RfZJzBMAoagW9ava5waxd+XoTkzqF7E=", "owner": "Supreeeme", "repo": "xwayland-satellite", - "rev": "979eab242e60cf481a31d9de508a1bdaf2dcf7d4", + "rev": "0dde7ca1d3a8e8c5082533d76084e2aa02bef70e", "type": "github" }, "original": { diff --git a/home/graphical/firefox/default.nix b/home/graphical/firefox/default.nix index 6137f62..19b2109 100644 --- a/home/graphical/firefox/default.nix +++ b/home/graphical/firefox/default.nix @@ -197,6 +197,9 @@ "browser.newtabpage.activity-stream.showSponsoredTopSites" = false; "browser.newtabpage.activity-stream.showWeather" = false; + # Disable Firefox's machine learning (AI) features + "browser.ml.enable" = false; + # For browser toolbox/live editing user CSS "devtools.chrome.enabled" = true; "devtools.debugger.remote-enabled" = true; diff --git a/system/hosts/peach/default.nix b/system/hosts/peach/default.nix index fd773ea..27b86a6 100644 --- a/system/hosts/peach/default.nix +++ b/system/hosts/peach/default.nix @@ -15,15 +15,6 @@ boot.kernelParams = [ "apple_dcp.show_notch=1" ]; - hardware.graphics.package = - # Workaround for Mesa 25.3.0 regression - # https://github.com/nix-community/nixos-apple-silicon/issues/380 - assert pkgs.mesa.version == "25.3.1"; - (import (fetchTarball { - url = "https://github.com/NixOS/nixpkgs/archive/c5ae371f1a6a7fd27823bc500d9390b38c05fa55.tar.gz"; - sha256 = "sha256-4PqRErxfe+2toFJFgcRKZ0UI9NSIOJa+7RXVtBhy4KE="; - }) { localSystem = pkgs.stdenv.hostPlatform; }).mesa; - catppuccin.accent = "peach"; home-manager.users.sckova = { From 71522c6b5dbce093e9dd4c761b66be514e6b7de9 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Wed, 24 Dec 2025 11:29:41 -0500 Subject: [PATCH 156/282] format with alejandra --- flake.nix | 173 +++++++++++---------- hardware/alien/default.nix | 12 +- hardware/peach/default.nix | 12 +- hardware/vm-aarch64/default.nix | 24 +-- home/default.nix | 227 ++++++++++++++-------------- home/games/minecraft/default.nix | 6 +- home/games/morrowind/default.nix | 8 +- home/graphical/discord/default.nix | 15 +- home/graphical/discord/vencord.nix | 8 +- home/graphical/firefox/default.nix | 4 +- home/graphical/mpv/default.nix | 13 +- home/hosts/alien/default.nix | 47 +++--- home/hosts/peach/default.nix | 11 +- home/hosts/vm-aarch64/default.nix | 10 +- home/kde/default.nix | 14 +- home/systemd/default.nix | 10 +- home/terminal/btop/default.nix | 13 +- home/terminal/fish/default.nix | 7 +- home/terminal/kitty/default.nix | 9 +- home/terminal/nvim/default.nix | 42 ++--- home/tiling/niri/default.nix | 11 +- home/tiling/niri/niri.nix | 188 +++++++++++------------ home/tiling/niri/noctalia.nix | 101 +++++++------ home/tiling/wallpaper/default.nix | 12 +- home/vscode/default.nix | 10 +- packages/overlay.nix | 11 +- packages/spotify/package.nix | 81 +++++----- packages/spotifyd/package.nix | 9 +- system/default.nix | 11 +- system/hosts/alien/default.nix | 11 +- system/hosts/peach/default.nix | 7 +- system/hosts/vm-aarch64/default.nix | 5 +- system/shell/fish.nix | 4 +- system/tailscale/default.nix | 7 +- system/widevine/default.nix | 34 ++--- 35 files changed, 578 insertions(+), 589 deletions(-) diff --git a/flake.nix b/flake.nix index 390b1e2..ea4451f 100644 --- a/flake.nix +++ b/flake.nix @@ -57,37 +57,36 @@ }; }; - outputs = - { - nixpkgs, - nix-cachyos-kernel, - catppuccin, - catppuccin-palette, - home-manager, - plasma-manager, - niri, - noctalia, - spicetify-nix, - nur, - nixvim, - apple-silicon, - ... + outputs = { + nixpkgs, + nix-cachyos-kernel, + catppuccin, + catppuccin-palette, + home-manager, + plasma-manager, + niri, + noctalia, + spicetify-nix, + nur, + nixvim, + apple-silicon, + ... + }: let + mkNixosSystem = { + hostname, + system, + extraModules ? [], + extraSpecialArgs ? {}, }: - let - mkNixosSystem = - { - hostname, - system, - extraModules ? [ ], - extraSpecialArgs ? { }, - }: - nixpkgs.lib.nixosSystem { - inherit system; - specialArgs = { + nixpkgs.lib.nixosSystem { + inherit system; + specialArgs = + { inherit catppuccin; } // extraSpecialArgs; - modules = [ + modules = + [ { nixpkgs.overlays = [ catppuccin-palette.overlays.default @@ -120,73 +119,71 @@ } ] ++ extraModules; - }; + }; - mkHomeConfig = - { - user, - hostname, - system, - }: - home-manager.lib.homeManagerConfiguration { - pkgs = import nixpkgs { - inherit system; - }; - home.username = user; - home.homeDirectory = "/home/${user}"; - modules = [ - ./home - ./home/hosts/${hostname}.nix - catppuccin.homeModules.catppuccin - home-manager.homeModules.home-manager - plasma-manager.homeModules.plasma-manager - niri.homeModules.default - noctalia.homeModules.noctalia - nixvim.homeModules.nixvim - ]; - }; - in - { - nixosConfigurations = { - peach = mkNixosSystem { - hostname = "peach"; - system = "aarch64-linux"; - extraModules = [ - apple-silicon.nixosModules.default - { nixpkgs.overlays = [ apple-silicon.overlays.apple-silicon-overlay ]; } - ]; + mkHomeConfig = { + user, + hostname, + system, + }: + home-manager.lib.homeManagerConfiguration { + pkgs = import nixpkgs { + inherit system; }; + home.username = user; + home.homeDirectory = "/home/${user}"; + modules = [ + ./home + ./home/hosts/${hostname}.nix + catppuccin.homeModules.catppuccin + home-manager.homeModules.home-manager + plasma-manager.homeModules.plasma-manager + niri.homeModules.default + noctalia.homeModules.noctalia + nixvim.homeModules.nixvim + ]; + }; + in { + nixosConfigurations = { + peach = mkNixosSystem { + hostname = "peach"; + system = "aarch64-linux"; + extraModules = [ + apple-silicon.nixosModules.default + {nixpkgs.overlays = [apple-silicon.overlays.apple-silicon-overlay];} + ]; + }; - alien = mkNixosSystem { - hostname = "alien"; - system = "x86_64-linux"; - extraSpecialArgs = { - inherit nix-cachyos-kernel; - }; - }; - - vm-aarch64 = mkNixosSystem { - hostname = "vm-aarch64"; - system = "aarch64-linux"; + alien = mkNixosSystem { + hostname = "alien"; + system = "x86_64-linux"; + extraSpecialArgs = { + inherit nix-cachyos-kernel; }; }; - homeConfigurations = { - peach = mkHomeConfig { - user = "sckova"; - hostname = "peach"; - system = "aarch64-linux"; - }; - alien = mkHomeConfig { - user = "sckova"; - hostname = "alien"; - system = "x86_64-linux"; - }; - vm-aarch64 = mkHomeConfig { - user = "sckova"; - hostname = "vm-aarch64"; - system = "aarch64-linux"; - }; + vm-aarch64 = mkNixosSystem { + hostname = "vm-aarch64"; + system = "aarch64-linux"; }; }; + + homeConfigurations = { + peach = mkHomeConfig { + user = "sckova"; + hostname = "peach"; + system = "aarch64-linux"; + }; + alien = mkHomeConfig { + user = "sckova"; + hostname = "alien"; + system = "x86_64-linux"; + }; + vm-aarch64 = mkHomeConfig { + user = "sckova"; + hostname = "vm-aarch64"; + system = "aarch64-linux"; + }; + }; + }; } diff --git a/hardware/alien/default.nix b/hardware/alien/default.nix index 38c4775..c1eca81 100755 --- a/hardware/alien/default.nix +++ b/hardware/alien/default.nix @@ -7,9 +7,7 @@ pkgs, modulesPath, ... -}: - -{ +}: { imports = [ (modulesPath + "/installer/scan/not-detected.nix") ]; @@ -21,13 +19,13 @@ "usbhid" "sd_mod" ]; - boot.initrd.kernelModules = [ ]; + boot.initrd.kernelModules = []; boot.kernelModules = [ "v4l2loopback" "snd-aloop" "kvm-intel" ]; - boot.extraModulePackages = with config.boot.kernelPackages; [ v4l2loopback.out ]; + boot.extraModulePackages = with config.boot.kernelPackages; [v4l2loopback.out]; boot.extraModprobeConfig = '' # exclusive_caps: Skype, Zoom, Teams etc. will only show device when actually streaming # card_label: Name of virtual camera, how it'll show up in Skype, Zoom, Teams @@ -38,7 +36,7 @@ fileSystems."/" = { device = "/dev/disk/by-uuid/d83ec136-df01-4b9e-a523-6d75726fb904"; fsType = "btrfs"; - options = [ "subvol=@" ]; + options = ["subvol=@"]; }; fileSystems."/nix" = { @@ -61,7 +59,7 @@ }; swapDevices = [ - { device = "/dev/disk/by-uuid/056af100-9382-4cbd-b3d5-90df7da69585"; } + {device = "/dev/disk/by-uuid/056af100-9382-4cbd-b3d5-90df7da69585";} ]; # Enables DHCP on each ethernet and wireless interface. In case of scripted networking diff --git a/hardware/peach/default.nix b/hardware/peach/default.nix index 1bf0e8d..5aaa82b 100644 --- a/hardware/peach/default.nix +++ b/hardware/peach/default.nix @@ -7,20 +7,18 @@ pkgs, modulesPath, ... -}: - -{ +}: { imports = [ (modulesPath + "/installer/scan/not-detected.nix") ]; - boot.initrd.availableKernelModules = [ "sdhci_pci" ]; - boot.initrd.kernelModules = [ ]; + boot.initrd.availableKernelModules = ["sdhci_pci"]; + boot.initrd.kernelModules = []; boot.kernelModules = [ "v4l2loopback" "snd-aloop" ]; - boot.extraModulePackages = with config.boot.kernelPackages; [ v4l2loopback.out ]; + boot.extraModulePackages = with config.boot.kernelPackages; [v4l2loopback.out]; boot.extraModprobeConfig = '' # exclusive_caps: Skype, Zoom, Teams etc. will only show device when actually streaming # card_label: Name of virtual camera, how it'll show up in Skype, Zoom, Teams @@ -42,7 +40,7 @@ ]; }; - swapDevices = [ ]; + swapDevices = []; nixpkgs.hostPlatform = lib.mkDefault "aarch64-linux"; } diff --git a/hardware/vm-aarch64/default.nix b/hardware/vm-aarch64/default.nix index 524729a..d333395 100644 --- a/hardware/vm-aarch64/default.nix +++ b/hardware/vm-aarch64/default.nix @@ -1,15 +1,19 @@ # Do not modify this file! It was generated by ‘nixos-generate-config’ # and may be overwritten by future invocations. Please make changes # to /etc/nixos/configuration.nix instead. -{ config, lib, pkgs, modulesPath, ... }: - { - imports = [ ]; + config, + lib, + pkgs, + modulesPath, + ... +}: { + imports = []; - boot.initrd.availableKernelModules = [ "ehci_pci" "xhci_pci" "usbhid" "sr_mod" ]; - boot.initrd.kernelModules = [ ]; - boot.kernelModules = [ ]; - boot.extraModulePackages = [ ]; + boot.initrd.availableKernelModules = ["ehci_pci" "xhci_pci" "usbhid" "sr_mod"]; + boot.initrd.kernelModules = []; + boot.kernelModules = []; + boot.extraModulePackages = []; fileSystems."/" = { device = "/dev/disk/by-label/nixos"; @@ -19,14 +23,14 @@ fileSystems."/boot" = { device = "/dev/disk/by-label/boot"; fsType = "vfat"; - options = [ "fmask=0077" "dmask=0077" ]; + options = ["fmask=0077" "dmask=0077"]; }; swapDevices = [ - { device = "/dev/disk/by-label/swap"; } + {device = "/dev/disk/by-label/swap";} ]; nixpkgs.hostPlatform = lib.mkDefault "aarch64-linux"; hardware.parallels.enable = true; - nixpkgs.config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [ "prl-tools" ]; + nixpkgs.config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) ["prl-tools"]; } diff --git a/home/default.nix b/home/default.nix index 64171a9..0fbd634 100755 --- a/home/default.nix +++ b/home/default.nix @@ -4,9 +4,7 @@ lib, types, ... -}: - -{ +}: { options = { catppuccinUpper = { accent = lib.mkOption { @@ -108,32 +106,30 @@ default = pkgs.noto-fonts-color-emoji; }; }; - cursor = - let - attrName = config.catppuccin.flavor + config.catppuccinUpper.accent; - in - { - name = lib.mkOption { - type = lib.types.str; - readOnly = true; - default = "catppuccin-${config.catppuccin.flavor}-${config.catppuccin.accent}-cursors"; - }; - package = lib.mkOption { - type = lib.types.package; - readOnly = true; - default = pkgs.catppuccin-cursors.${attrName}; - }; - size = lib.mkOption { - type = lib.types.int; - readOnly = true; - default = 24; - }; - path = lib.mkOption { - type = lib.types.str; - readOnly = true; - default = "${pkgs.catppuccin-cursors.${attrName}}/share/icons"; - }; + cursor = let + attrName = config.catppuccin.flavor + config.catppuccinUpper.accent; + in { + name = lib.mkOption { + type = lib.types.str; + readOnly = true; + default = "catppuccin-${config.catppuccin.flavor}-${config.catppuccin.accent}-cursors"; }; + package = lib.mkOption { + type = lib.types.package; + readOnly = true; + default = pkgs.catppuccin-cursors.${attrName}; + }; + size = lib.mkOption { + type = lib.types.int; + readOnly = true; + default = 24; + }; + path = lib.mkOption { + type = lib.types.str; + readOnly = true; + default = "${pkgs.catppuccin-cursors.${attrName}}/share/icons"; + }; + }; isDark = lib.mkOption { type = lib.types.bool; readOnly = true; @@ -173,7 +169,7 @@ # gui applications input-leap libreoffice-qt-fresh - nur.repos.forkprince.helium-nightly + # nur.repos.forkprince.helium-nightly bitwarden-desktop qbittorrent @@ -234,15 +230,24 @@ gtk = { enable = true; - colorScheme = if config.userOptions.isDark then "dark" else "light"; + colorScheme = + if config.userOptions.isDark + then "dark" + else "light"; theme = { package = pkgs.kdePackages.breeze-gtk; - name = if config.userOptions.isDark then "Breeze-Dark" else "Breeze"; + name = + if config.userOptions.isDark + then "Breeze-Dark" + else "Breeze"; }; iconTheme = { - name = if config.userOptions.isDark then "Colloid-Dark" else "Colloid-Light"; + name = + if config.userOptions.isDark + then "Colloid-Dark" + else "Colloid-Light"; package = pkgs.colloid-icon-theme; }; @@ -286,86 +291,84 @@ fixed = "\"${config.userOptions.fontMono.name},${toString config.userOptions.fontMono.size}\""; general = "\"${config.userOptions.fontSans.name},${toString config.userOptions.fontSans.size}\""; }; - ColorScheme = - let - c = pkgs.catppuccin.bare.${config.catppuccin.flavor}; - accent = c.${config.catppuccin.accent}; - mkColors = roles: builtins.concatStringsSep ", " (map (r: "#ff${r}") roles); - in - { - active_colors = mkColors [ - c.text - c.surface0 - c.surface1 - c.surface0 - c.base - c.mantle - c.text - c.text - c.text - c.base - c.mantle - c.crust - accent - c.base - accent - c.mauve - c.mantle - "000000" - c.base - c.text - c.overlay0 - accent - ]; - disabled_colors = mkColors [ - c.overlay0 - c.surface0 - c.surface1 - c.surface0 - c.overlay0 - c.mantle - c.overlay0 - c.text - c.overlay0 - c.surface0 - c.surface0 - c.mantle - c.overlay1 - c.text - "0000ff" - "ff00ff" - c.surface0 - "000000" - c.surface0 - c.base - "80000000" - c.overlay1 - ]; - inactive_colors = mkColors [ - c.text - c.surface0 - c.surface1 - c.surface0 - c.base - c.mantle - c.text - c.text - c.text - c.base - c.mantle - c.crust - accent - c.base - accent - c.mauve - c.mantle - "000000" - c.base - c.text - c.overlay0 - accent - ]; - }; + ColorScheme = let + c = pkgs.catppuccin.bare.${config.catppuccin.flavor}; + accent = c.${config.catppuccin.accent}; + mkColors = roles: builtins.concatStringsSep ", " (map (r: "#ff${r}") roles); + in { + active_colors = mkColors [ + c.text + c.surface0 + c.surface1 + c.surface0 + c.base + c.mantle + c.text + c.text + c.text + c.base + c.mantle + c.crust + accent + c.base + accent + c.mauve + c.mantle + "000000" + c.base + c.text + c.overlay0 + accent + ]; + disabled_colors = mkColors [ + c.overlay0 + c.surface0 + c.surface1 + c.surface0 + c.overlay0 + c.mantle + c.overlay0 + c.text + c.overlay0 + c.surface0 + c.surface0 + c.mantle + c.overlay1 + c.text + "0000ff" + "ff00ff" + c.surface0 + "000000" + c.surface0 + c.base + "80000000" + c.overlay1 + ]; + inactive_colors = mkColors [ + c.text + c.surface0 + c.surface1 + c.surface0 + c.base + c.mantle + c.text + c.text + c.text + c.base + c.mantle + c.crust + accent + c.base + accent + c.mauve + c.mantle + "000000" + c.base + c.text + c.overlay0 + accent + ]; + }; }; }; diff --git a/home/games/minecraft/default.nix b/home/games/minecraft/default.nix index 58b9808..4653e75 100644 --- a/home/games/minecraft/default.nix +++ b/home/games/minecraft/default.nix @@ -1,6 +1,8 @@ -{ config, pkgs, ... }: - { + config, + pkgs, + ... +}: { home.packages = with pkgs; [ (prismlauncher.override { jdks = [ diff --git a/home/games/morrowind/default.nix b/home/games/morrowind/default.nix index 052adab..a7df627 100644 --- a/home/games/morrowind/default.nix +++ b/home/games/morrowind/default.nix @@ -1,5 +1,7 @@ -{ config, pkgs, ... }: - { - home.packages = with pkgs; [ openmw ]; + config, + pkgs, + ... +}: { + home.packages = with pkgs; [openmw]; } diff --git a/home/graphical/discord/default.nix b/home/graphical/discord/default.nix index 05ce3a5..7073352 100644 --- a/home/graphical/discord/default.nix +++ b/home/graphical/discord/default.nix @@ -1,6 +1,8 @@ -{ config, pkgs, ... }: - -let +{ + config, + pkgs, + ... +}: let catppuccin-discord-src = pkgs.fetchFromGitHub { owner = "catppuccin"; repo = "discord"; @@ -52,7 +54,7 @@ let catppuccin-discord = "${catppuccin-discord-pkg}/dist/catppuccin-${config.catppuccin.flavor}-${config.catppuccin.accent}.theme.css"; - mergedThemes = pkgs.runCommand "mergedConfig" { } '' + mergedThemes = pkgs.runCommand "mergedConfig" {} '' mkdir -p $out cp ${catppuccin-discord} $out/catppuccin.css ''; @@ -79,9 +81,8 @@ let height = 1071; }; }; -in -{ - home.packages = with pkgs; [ vesktop ]; +in { + home.packages = with pkgs; [vesktop]; home.file.".config/vesktop/settings.json" = { text = builtins.toJSON vesktopSettings; diff --git a/home/graphical/discord/vencord.nix b/home/graphical/discord/vencord.nix index 9442180..e456a52 100644 --- a/home/graphical/discord/vencord.nix +++ b/home/graphical/discord/vencord.nix @@ -2,9 +2,9 @@ autoUpdate = true; autoUpdateNotification = true; useQuickCss = true; - themeLinks = [ ]; + themeLinks = []; eagerPatches = false; - enabledThemes = [ "catppuccin.css" ]; + enabledThemes = ["catppuccin.css"]; enableReactDevtools = false; frameless = false; transparent = true; @@ -330,8 +330,8 @@ ImageFilename.enabled = false; }; uiElements = { - chatBarButtons = { }; - messagePopoverButtons = { }; + chatBarButtons = {}; + messagePopoverButtons = {}; }; notifications = { timeout = 5000; diff --git a/home/graphical/firefox/default.nix b/home/graphical/firefox/default.nix index 19b2109..1ded408 100644 --- a/home/graphical/firefox/default.nix +++ b/home/graphical/firefox/default.nix @@ -5,9 +5,7 @@ config, lib, ... -}: - -{ +}: { home.file.".mozilla/firefox/default/chrome/theme" = { source = ./chrome/theme; force = true; diff --git a/home/graphical/mpv/default.nix b/home/graphical/mpv/default.nix index 572a600..ecbc028 100644 --- a/home/graphical/mpv/default.nix +++ b/home/graphical/mpv/default.nix @@ -1,6 +1,8 @@ -{ config, pkgs, ... }: - -let +{ + config, + pkgs, + ... +}: let catppuccin-mpv = pkgs.fetchFromGitHub { owner = "catppuccin"; repo = "mpv"; @@ -8,14 +10,13 @@ let sha256 = "sha256-oUheJNWk2R6gNEmkK8H6PWX0iofx2KMGDoFWtnr420A="; }; - mergedConfig = pkgs.runCommand "mergedConfig" { } '' + mergedConfig = pkgs.runCommand "mergedConfig" {} '' mkdir -p $out ${pkgs.gnused}/bin/sed 's/#1e1e2e/#000000/g' \ ${catppuccin-mpv}/themes/${config.catppuccin.flavor}/${config.catppuccin.accent}.conf \ > $out/mpv.conf ''; -in -{ +in { home.packages = with pkgs; [ (mpv.override { scripts = with mpvScripts; [ diff --git a/home/hosts/alien/default.nix b/home/hosts/alien/default.nix index 6580a5e..e6983cf 100644 --- a/home/hosts/alien/default.nix +++ b/home/hosts/alien/default.nix @@ -3,16 +3,13 @@ pkgs, spicetify-nix, ... -}: - -{ +}: { catppuccin = { accent = "blue"; flavor = "mocha"; }; home.packages = with pkgs; [ - # steam gtk theming adwsteamgtk @@ -36,30 +33,28 @@ scale = 1.75; }; - programs.spicetify = - let - spicePkgs = spicetify-nix.legacyPackages.${pkgs.stdenv.hostPlatform.system}; - in - { - enable = true; + programs.spicetify = let + spicePkgs = spicetify-nix.legacyPackages.${pkgs.stdenv.hostPlatform.system}; + in { + enable = true; - enabledExtensions = with spicePkgs.extensions; [ - adblock - hidePodcasts - shuffle # shuffle+ (special characters are sanitized out of extension names) - ]; - enabledCustomApps = with spicePkgs.apps; [ - newReleases - ncsVisualizer - ]; - enabledSnippets = with spicePkgs.snippets; [ - rotatingCoverart - pointer - ]; + enabledExtensions = with spicePkgs.extensions; [ + adblock + hidePodcasts + shuffle # shuffle+ (special characters are sanitized out of extension names) + ]; + enabledCustomApps = with spicePkgs.apps; [ + newReleases + ncsVisualizer + ]; + enabledSnippets = with spicePkgs.snippets; [ + rotatingCoverart + pointer + ]; - theme = spicePkgs.themes.catppuccin; - colorScheme = config.catppuccin.flavor; - }; + theme = spicePkgs.themes.catppuccin; + colorScheme = config.catppuccin.flavor; + }; programs.plasma = { panels = [ diff --git a/home/hosts/peach/default.nix b/home/hosts/peach/default.nix index 1b6a7ab..c411643 100644 --- a/home/hosts/peach/default.nix +++ b/home/hosts/peach/default.nix @@ -1,13 +1,14 @@ -{ config, pkgs, ... }: - { + config, + pkgs, + ... +}: { catppuccin = { accent = "peach"; flavor = "mocha"; }; home.packages = with pkgs; [ - asahi-nvram asahi-bless asahi-btsync @@ -44,7 +45,7 @@ shortcuts = { # this is really annoying on asahi laptops - org_kde_powerdevil.Sleep = [ ]; + org_kde_powerdevil.Sleep = []; }; panels = [ @@ -60,7 +61,7 @@ activeTaskSource = "activeTask"; }; layout = { - elements = [ "windowTitle" ]; + elements = ["windowTitle"]; horizontalAlignment = "right"; showDisabledElements = "deactivated"; verticalAlignment = "center"; diff --git a/home/hosts/vm-aarch64/default.nix b/home/hosts/vm-aarch64/default.nix index 929e11c..d50cbc8 100644 --- a/home/hosts/vm-aarch64/default.nix +++ b/home/hosts/vm-aarch64/default.nix @@ -1,12 +1,14 @@ -{ config, pkgs, ... }: - { + config, + pkgs, + ... +}: { catppuccin = { accent = "green"; flavor = "mocha"; }; - home.packages = with pkgs; [ ]; + home.packages = with pkgs; []; programs.plasma = { panels = [ @@ -22,7 +24,7 @@ activeTaskSource = "activeTask"; }; layout = { - elements = [ "windowTitle" ]; + elements = ["windowTitle"]; horizontalAlignment = "right"; showDisabledElements = "deactivated"; verticalAlignment = "center"; diff --git a/home/kde/default.nix b/home/kde/default.nix index 63328b9..5b4ff4a 100644 --- a/home/kde/default.nix +++ b/home/kde/default.nix @@ -1,6 +1,8 @@ -{ config, pkgs, ... }: - { + config, + pkgs, + ... +}: { programs.ghostwriter = { enable = true; font = { @@ -50,7 +52,7 @@ value = ""; type = "substring"; }; - window-types = [ "normal" ]; + window-types = ["normal"]; }; apply = { opacityactive = { @@ -70,7 +72,7 @@ value = "openmw"; type = "substring"; }; - window-types = [ "normal" ]; + window-types = ["normal"]; }; apply = { noborder = { @@ -98,7 +100,7 @@ value = "Minecraft*"; type = "substring"; }; - window-types = [ "normal" ]; + window-types = ["normal"]; }; apply = { noborder = { @@ -149,7 +151,7 @@ value = "steamwebhelper"; type = "substring"; }; - window-types = [ "normal" ]; + window-types = ["normal"]; }; apply = { desktopfile = { diff --git a/home/systemd/default.nix b/home/systemd/default.nix index 32029bc..9000d7e 100644 --- a/home/systemd/default.nix +++ b/home/systemd/default.nix @@ -3,9 +3,7 @@ pkgs, lib, ... -}: - -{ +}: { systemd.user.sessionVariables = { XCURSOR_THEME = config.userOptions.cursor.name; XCURSOR_SIZE = toString config.userOptions.cursor.size; @@ -27,8 +25,8 @@ systemd.user.services.synology-mount = { Unit = { Description = "Mount Synology NAS with Rclone and Home Manager."; - After = [ "tailscaled.service" ]; - Wants = [ "tailscaled.service" ]; + After = ["tailscaled.service"]; + Wants = ["tailscaled.service"]; }; Service = { @@ -63,7 +61,7 @@ }; Install = { - WantedBy = [ "default.target" ]; + WantedBy = ["default.target"]; }; }; diff --git a/home/terminal/btop/default.nix b/home/terminal/btop/default.nix index 04e58ee..27ada8a 100644 --- a/home/terminal/btop/default.nix +++ b/home/terminal/btop/default.nix @@ -1,6 +1,8 @@ -{ config, pkgs, ... }: - -let +{ + config, + pkgs, + ... +}: let catppuccin-btop = pkgs.fetchFromGitHub { owner = "catppuccin"; repo = "btop"; @@ -8,15 +10,14 @@ let sha256 = "sha256-mEGZwScVPWGu+Vbtddc/sJ+mNdD2kKienGZVUcTSl+c="; }; - mergedConfig = pkgs.runCommand "mergedConfig" { } '' + mergedConfig = pkgs.runCommand "mergedConfig" {} '' mkdir -p $out/themes ${pkgs.gnused}/bin/sed 's/blankFlavor/${config.catppuccin.flavor}/g' \ ${./btop.conf} > $out/btop.conf cp ${catppuccin-btop}/themes/catppuccin_latte.theme $out/themes/ cp ${catppuccin-btop}/themes/catppuccin_${config.catppuccin.flavor}.theme $out/themes/ ''; -in -{ +in { home.file.".config/btop" = { source = mergedConfig; recursive = true; diff --git a/home/terminal/fish/default.nix b/home/terminal/fish/default.nix index e58af9d..a5b233b 100644 --- a/home/terminal/fish/default.nix +++ b/home/terminal/fish/default.nix @@ -1,6 +1,9 @@ -{ config, pkgs, ... }: { - home.packages = with pkgs; [ kdePackages.qttools ]; + config, + pkgs, + ... +}: { + home.packages = with pkgs; [kdePackages.qttools]; programs.fish = { enable = true; diff --git a/home/terminal/kitty/default.nix b/home/terminal/kitty/default.nix index 46f5da8..3fdbd4a 100644 --- a/home/terminal/kitty/default.nix +++ b/home/terminal/kitty/default.nix @@ -3,9 +3,7 @@ lib, pkgs, ... -}: - -let +}: let catppuccin-kitty = pkgs.fetchFromGitHub { owner = "catppuccin"; repo = "kitty"; @@ -13,15 +11,14 @@ let sha256 = "sha256-59ON7CzVgfZUo7F81qQZQ1r6kpcjR3OPvTl99gzDP8E="; }; - mergedConfig = pkgs.runCommand "mergedConfig" { } '' + mergedConfig = pkgs.runCommand "mergedConfig" {} '' mkdir -p $out ${pkgs.gnused}/bin/sed 's/#cba6f7/${ pkgs.catppuccin.${config.catppuccin.flavor}.${config.catppuccin.accent} }/g' ${catppuccin-kitty}/themes/${config.catppuccin.flavor}.conf > \ $out/${config.catppuccinUpper.flavor}${config.catppuccinUpper.accent}.conf ''; -in -{ +in { home.file.".config/kitty/themes" = { source = mergedConfig; recursive = true; diff --git a/home/terminal/nvim/default.nix b/home/terminal/nvim/default.nix index 848a002..f62056e 100644 --- a/home/terminal/nvim/default.nix +++ b/home/terminal/nvim/default.nix @@ -1,6 +1,8 @@ -{ pkgs, config, ... }: - { + pkgs, + config, + ... +}: { home.sessionVariables = { EDITOR = "nvim"; }; @@ -9,7 +11,7 @@ kdePackages.qtdeclarative prettier prettierd - nixfmt-rfc-style + alejandra stylua black ]; @@ -94,13 +96,13 @@ autoLoad = true; settings = { formatters_by_ft = { - lua = [ "stylua" ]; - python = [ "black" ]; - nix = [ "nixfmt" ]; - javascript = [ "prettier" ]; - css = [ "prettier" ]; - json = [ "prettier" ]; - jsonc = [ "prettier" ]; + lua = ["stylua"]; + python = ["black"]; + nix = ["alejandra"]; + javascript = ["prettier"]; + css = ["prettier"]; + json = ["prettier"]; + jsonc = ["prettier"]; }; # Default formatting options @@ -216,8 +218,8 @@ "filename" "branch" ]; - lualine_c = [ "%=" ]; - lualine_x = [ ]; + lualine_c = ["%="]; + lualine_x = []; lualine_y = [ "filetype" "progress" @@ -234,15 +236,15 @@ }; inactive_sections = { - lualine_a = [ "filename" ]; - lualine_b = [ ]; - lualine_c = [ ]; - lualine_x = [ ]; - lualine_y = [ ]; - lualine_z = [ "location" ]; + lualine_a = ["filename"]; + lualine_b = []; + lualine_c = []; + lualine_x = []; + lualine_y = []; + lualine_z = ["location"]; }; - tabline = { }; - extensions = [ ]; + tabline = {}; + extensions = []; }; autoLoad = true; }; diff --git a/home/tiling/niri/default.nix b/home/tiling/niri/default.nix index fb92dc3..4d588dd 100644 --- a/home/tiling/niri/default.nix +++ b/home/tiling/niri/default.nix @@ -1,14 +1,15 @@ -{ config, pkgs, ... }: - -let +{ + config, + pkgs, + ... +}: let catppuccin-fuzzel = pkgs.fetchFromGitHub { owner = "catppuccin"; repo = "fuzzel"; rev = "0af0e26901b60ada4b20522df739f032797b07c3"; sha256 = "sha256-XpItMGsYq4XvLT+7OJ9YRILfd/9RG1GMuO6J4hSGepg="; }; -in -{ +in { imports = [ ./niri.nix ./noctalia.nix diff --git a/home/tiling/niri/niri.nix b/home/tiling/niri/niri.nix index 01faf21..9d65ad7 100644 --- a/home/tiling/niri/niri.nix +++ b/home/tiling/niri/niri.nix @@ -1,6 +1,8 @@ -{ config, pkgs, ... }: - { + config, + pkgs, + ... +}: { programs.niri.package = pkgs.niri-unstable.overrideAttrs (old: { doCheck = false; }); @@ -10,7 +12,7 @@ hotkey-overlay.skip-at-startup = true; prefer-no-csd = true; gestures.hot-corners.enable = false; - spawn-at-startup = [ ]; # systemd is based sorry + spawn-at-startup = []; # systemd is based sorry overview = { backdrop-color = pkgs.catppuccin.${config.catppuccin.flavor}.crust; workspace-shadow.enable = false; @@ -66,9 +68,9 @@ proportion = 0.5; }; preset-column-widths = [ - { proportion = 1.0 / 3.0; } - { proportion = 1.0 / 2.0; } - { proportion = 2.0 / 3.0; } + {proportion = 1.0 / 3.0;} + {proportion = 1.0 / 2.0;} + {proportion = 2.0 / 3.0;} ]; border = { enable = true; @@ -135,10 +137,10 @@ } ]; binds = { - "Mod+Shift+Slash".action.show-hotkey-overlay = { }; + "Mod+Shift+Slash".action.show-hotkey-overlay = {}; "Mod+T" = { - action.spawn = [ "kitty" ]; + action.spawn = ["kitty"]; hotkey-overlay.title = "Open a Terminal: kitty"; }; "Mod+Space" = { @@ -229,96 +231,96 @@ }; "Mod+O" = { - action.toggle-overview = { }; + action.toggle-overview = {}; repeat = false; }; "Mod+Q" = { - action.close-window = { }; + action.close-window = {}; repeat = false; }; - "Mod+Left".action.focus-column-left = { }; - "Mod+Down".action.focus-window-down = { }; - "Mod+Up".action.focus-window-up = { }; - "Mod+Right".action.focus-column-right = { }; - "Mod+H".action.focus-column-left = { }; - "Mod+J".action.focus-window-down = { }; - "Mod+K".action.focus-window-up = { }; - "Mod+L".action.focus-column-right = { }; + "Mod+Left".action.focus-column-left = {}; + "Mod+Down".action.focus-window-down = {}; + "Mod+Up".action.focus-window-up = {}; + "Mod+Right".action.focus-column-right = {}; + "Mod+H".action.focus-column-left = {}; + "Mod+J".action.focus-window-down = {}; + "Mod+K".action.focus-window-up = {}; + "Mod+L".action.focus-column-right = {}; - "Mod+Ctrl+Left".action.move-column-left = { }; - "Mod+Ctrl+Down".action.move-window-down = { }; - "Mod+Ctrl+Up".action.move-window-up = { }; - "Mod+Ctrl+Right".action.move-column-right = { }; - "Mod+Ctrl+H".action.move-column-left = { }; - "Mod+Ctrl+J".action.move-window-down = { }; - "Mod+Ctrl+K".action.move-window-up = { }; - "Mod+Ctrl+L".action.move-column-right = { }; + "Mod+Ctrl+Left".action.move-column-left = {}; + "Mod+Ctrl+Down".action.move-window-down = {}; + "Mod+Ctrl+Up".action.move-window-up = {}; + "Mod+Ctrl+Right".action.move-column-right = {}; + "Mod+Ctrl+H".action.move-column-left = {}; + "Mod+Ctrl+J".action.move-window-down = {}; + "Mod+Ctrl+K".action.move-window-up = {}; + "Mod+Ctrl+L".action.move-column-right = {}; - "Mod+Home".action.focus-column-first = { }; - "Mod+End".action.focus-column-last = { }; - "Mod+Ctrl+Home".action.move-column-to-first = { }; - "Mod+Ctrl+End".action.move-column-to-last = { }; + "Mod+Home".action.focus-column-first = {}; + "Mod+End".action.focus-column-last = {}; + "Mod+Ctrl+Home".action.move-column-to-first = {}; + "Mod+Ctrl+End".action.move-column-to-last = {}; - "Mod+Shift+Left".action.focus-monitor-left = { }; - "Mod+Shift+Down".action.focus-monitor-down = { }; - "Mod+Shift+Up".action.focus-monitor-up = { }; - "Mod+Shift+Right".action.focus-monitor-right = { }; - "Mod+Shift+H".action.focus-monitor-left = { }; - "Mod+Shift+J".action.focus-monitor-down = { }; - "Mod+Shift+K".action.focus-monitor-up = { }; - "Mod+Shift+L".action.focus-monitor-right = { }; + "Mod+Shift+Left".action.focus-monitor-left = {}; + "Mod+Shift+Down".action.focus-monitor-down = {}; + "Mod+Shift+Up".action.focus-monitor-up = {}; + "Mod+Shift+Right".action.focus-monitor-right = {}; + "Mod+Shift+H".action.focus-monitor-left = {}; + "Mod+Shift+J".action.focus-monitor-down = {}; + "Mod+Shift+K".action.focus-monitor-up = {}; + "Mod+Shift+L".action.focus-monitor-right = {}; - "Mod+Shift+Ctrl+Left".action.move-column-to-monitor-left = { }; - "Mod+Shift+Ctrl+Down".action.move-column-to-monitor-down = { }; - "Mod+Shift+Ctrl+Up".action.move-column-to-monitor-up = { }; - "Mod+Shift+Ctrl+Right".action.move-column-to-monitor-right = { }; - "Mod+Shift+Ctrl+H".action.move-column-to-monitor-left = { }; - "Mod+Shift+Ctrl+J".action.move-column-to-monitor-down = { }; - "Mod+Shift+Ctrl+K".action.move-column-to-monitor-up = { }; - "Mod+Shift+Ctrl+L".action.move-column-to-monitor-right = { }; + "Mod+Shift+Ctrl+Left".action.move-column-to-monitor-left = {}; + "Mod+Shift+Ctrl+Down".action.move-column-to-monitor-down = {}; + "Mod+Shift+Ctrl+Up".action.move-column-to-monitor-up = {}; + "Mod+Shift+Ctrl+Right".action.move-column-to-monitor-right = {}; + "Mod+Shift+Ctrl+H".action.move-column-to-monitor-left = {}; + "Mod+Shift+Ctrl+J".action.move-column-to-monitor-down = {}; + "Mod+Shift+Ctrl+K".action.move-column-to-monitor-up = {}; + "Mod+Shift+Ctrl+L".action.move-column-to-monitor-right = {}; - "Mod+Page_Down".action.focus-workspace-down = { }; - "Mod+Page_Up".action.focus-workspace-up = { }; - "Mod+U".action.focus-workspace-down = { }; - "Mod+I".action.focus-workspace-up = { }; - "Mod+Ctrl+Page_Down".action.move-column-to-workspace-down = { }; - "Mod+Ctrl+Page_Up".action.move-column-to-workspace-up = { }; - "Mod+Ctrl+U".action.move-column-to-workspace-down = { }; - "Mod+Ctrl+I".action.move-column-to-workspace-up = { }; + "Mod+Page_Down".action.focus-workspace-down = {}; + "Mod+Page_Up".action.focus-workspace-up = {}; + "Mod+U".action.focus-workspace-down = {}; + "Mod+I".action.focus-workspace-up = {}; + "Mod+Ctrl+Page_Down".action.move-column-to-workspace-down = {}; + "Mod+Ctrl+Page_Up".action.move-column-to-workspace-up = {}; + "Mod+Ctrl+U".action.move-column-to-workspace-down = {}; + "Mod+Ctrl+I".action.move-column-to-workspace-up = {}; - "Mod+Shift+Page_Down".action.move-workspace-down = { }; - "Mod+Shift+Page_Up".action.move-workspace-up = { }; - "Mod+Shift+U".action.move-workspace-down = { }; - "Mod+Shift+I".action.move-workspace-up = { }; + "Mod+Shift+Page_Down".action.move-workspace-down = {}; + "Mod+Shift+Page_Up".action.move-workspace-up = {}; + "Mod+Shift+U".action.move-workspace-down = {}; + "Mod+Shift+I".action.move-workspace-up = {}; "Mod+WheelScrollDown" = { - action.focus-workspace-down = { }; + action.focus-workspace-down = {}; cooldown-ms = 150; }; "Mod+WheelScrollUp" = { - action.focus-workspace-up = { }; + action.focus-workspace-up = {}; cooldown-ms = 150; }; "Mod+Ctrl+WheelScrollDown" = { - action.move-column-to-workspace-down = { }; + action.move-column-to-workspace-down = {}; cooldown-ms = 150; }; "Mod+Ctrl+WheelScrollUp" = { - action.move-column-to-workspace-up = { }; + action.move-column-to-workspace-up = {}; cooldown-ms = 150; }; - "Mod+WheelScrollRight".action.focus-column-right = { }; - "Mod+WheelScrollLeft".action.focus-column-left = { }; - "Mod+Ctrl+WheelScrollRight".action.move-column-right = { }; - "Mod+Ctrl+WheelScrollLeft".action.move-column-left = { }; + "Mod+WheelScrollRight".action.focus-column-right = {}; + "Mod+WheelScrollLeft".action.focus-column-left = {}; + "Mod+Ctrl+WheelScrollRight".action.move-column-right = {}; + "Mod+Ctrl+WheelScrollLeft".action.move-column-left = {}; - "Mod+Shift+WheelScrollDown".action.focus-column-right = { }; - "Mod+Shift+WheelScrollUp".action.focus-column-left = { }; - "Mod+Ctrl+Shift+WheelScrollDown".action.move-column-right = { }; - "Mod+Ctrl+Shift+WheelScrollUp".action.move-column-left = { }; + "Mod+Shift+WheelScrollDown".action.focus-column-right = {}; + "Mod+Shift+WheelScrollUp".action.focus-column-left = {}; + "Mod+Ctrl+Shift+WheelScrollDown".action.move-column-right = {}; + "Mod+Ctrl+Shift+WheelScrollUp".action.move-column-left = {}; "Mod+1".action.focus-workspace = 1; "Mod+2".action.focus-workspace = 2; @@ -339,23 +341,23 @@ "Mod+Ctrl+8".action.move-column-to-workspace = 8; "Mod+Ctrl+9".action.move-column-to-workspace = 9; - "Mod+BracketLeft".action.consume-or-expel-window-left = { }; - "Mod+BracketRight".action.consume-or-expel-window-right = { }; + "Mod+BracketLeft".action.consume-or-expel-window-left = {}; + "Mod+BracketRight".action.consume-or-expel-window-right = {}; - "Mod+Comma".action.consume-window-into-column = { }; - "Mod+Period".action.expel-window-from-column = { }; + "Mod+Comma".action.consume-window-into-column = {}; + "Mod+Period".action.expel-window-from-column = {}; - "Mod+R".action.switch-preset-column-width = { }; - "Mod+Shift+R".action.switch-preset-window-height = { }; - "Mod+Ctrl+R".action.reset-window-height = { }; - "Mod+F".action.maximize-column = { }; - "Mod+Shift+F".action.fullscreen-window = { }; + "Mod+R".action.switch-preset-column-width = {}; + "Mod+Shift+R".action.switch-preset-window-height = {}; + "Mod+Ctrl+R".action.reset-window-height = {}; + "Mod+F".action.maximize-column = {}; + "Mod+Shift+F".action.fullscreen-window = {}; - "Mod+Ctrl+F".action.expand-column-to-available-width = { }; + "Mod+Ctrl+F".action.expand-column-to-available-width = {}; - "Mod+C".action.center-column = { }; + "Mod+C".action.center-column = {}; - "Mod+Ctrl+C".action.center-visible-columns = { }; + "Mod+Ctrl+C".action.center-visible-columns = {}; "Mod+Minus".action.set-column-width = "-10%"; "Mod+Equal".action.set-column-width = "+10%"; @@ -363,26 +365,26 @@ "Mod+Shift+Minus".action.set-window-height = "-10%"; "Mod+Shift+Equal".action.set-window-height = "+10%"; - "Mod+V".action.toggle-window-floating = { }; - "Mod+Shift+V".action.switch-focus-between-floating-and-tiling = { }; + "Mod+V".action.toggle-window-floating = {}; + "Mod+Shift+V".action.switch-focus-between-floating-and-tiling = {}; - "Mod+W".action.toggle-column-tabbed-display = { }; + "Mod+W".action.toggle-column-tabbed-display = {}; - "Print".action.screenshot = { }; - "Mod+Shift+S".action.screenshot = { }; - "Ctrl+Print".action.screenshot-screen = { }; - "Alt+Print".action.screenshot-window = { }; + "Print".action.screenshot = {}; + "Mod+Shift+S".action.screenshot = {}; + "Ctrl+Print".action.screenshot-screen = {}; + "Alt+Print".action.screenshot-window = {}; "Mod+Escape" = { - action.toggle-keyboard-shortcuts-inhibit = { }; + action.toggle-keyboard-shortcuts-inhibit = {}; allow-inhibiting = false; }; - "Mod+Shift+E".action.quit = { }; - "Ctrl+Alt+Delete".action.quit = { }; + "Mod+Shift+E".action.quit = {}; + "Ctrl+Alt+Delete".action.quit = {}; "Mod+Shift+P" = { - action.power-off-monitors = { }; + action.power-off-monitors = {}; hotkey-overlay.title = "Turn off the display"; }; }; diff --git a/home/tiling/niri/noctalia.nix b/home/tiling/niri/noctalia.nix index ac6f6c2..204e8e5 100644 --- a/home/tiling/niri/noctalia.nix +++ b/home/tiling/niri/noctalia.nix @@ -3,9 +3,7 @@ config, lib, ... -}: - -let +}: let # Get the actual color palettes darkPalette = pkgs.catppuccin.${config.catppuccin.flavor}; lightPalette = pkgs.catppuccin.latte; @@ -44,45 +42,48 @@ let customPackage = pkgs.noctalia-shell.overrideAttrs (oldAttrs: { pname = "noctalia-shell-custom"; - nativeBuildInputs = (oldAttrs.nativeBuildInputs or [ ]) ++ [ pkgs.jq ]; + nativeBuildInputs = (oldAttrs.nativeBuildInputs or []) ++ [pkgs.jq]; - postPatch = (oldAttrs.postPatch or "") + '' - echo "Patching noctalia-shell with Cat-Custom theme..." - echo " Dark: ${config.catppuccin.flavor} / Light: latte" - echo " Accent: ${config.catppuccin.accent}" - - if [ -d Assets/ColorScheme/Catppuccin ]; then - mkdir -p Assets/ColorScheme/Cat-Custom - - # Write the JSON directly - cat > Assets/ColorScheme/Cat-Custom/Cat-Custom.json << 'COLORSCHEME_EOF' - ${schemeJson} - COLORSCHEME_EOF - - echo "Created Cat-Custom color scheme:" - ${pkgs.jq}/bin/jq -C '.' Assets/ColorScheme/Cat-Custom/Cat-Custom.json || true - - # Add translation entries - for lang in en fr de es pt zh-CN; do - if [ -f "Assets/Translations/$lang.json" ]; then - ${pkgs.jq}/bin/jq \ - '.["color-scheme"].predefined.schemes["Cat-Custom"] = "Cat-Custom"' \ - "Assets/Translations/$lang.json" > "Assets/Translations/$lang.json.tmp" \ - && mv "Assets/Translations/$lang.json.tmp" "Assets/Translations/$lang.json" - fi - done - else - echo "ERROR: ColorScheme directory not found" - exit 1 - fi - ''; + postPatch = + (oldAttrs.postPatch or "") + + '' + echo "Patching noctalia-shell with Cat-Custom theme..." + echo " Dark: ${config.catppuccin.flavor} / Light: latte" + echo " Accent: ${config.catppuccin.accent}" - meta = oldAttrs.meta // { - description = "${oldAttrs.meta.description} (Cat-Custom: ${config.catppuccin.flavor}/${config.catppuccin.accent})"; - }; + if [ -d Assets/ColorScheme/Catppuccin ]; then + mkdir -p Assets/ColorScheme/Cat-Custom + + # Write the JSON directly + cat > Assets/ColorScheme/Cat-Custom/Cat-Custom.json << 'COLORSCHEME_EOF' + ${schemeJson} + COLORSCHEME_EOF + + echo "Created Cat-Custom color scheme:" + ${pkgs.jq}/bin/jq -C '.' Assets/ColorScheme/Cat-Custom/Cat-Custom.json || true + + # Add translation entries + for lang in en fr de es pt zh-CN; do + if [ -f "Assets/Translations/$lang.json" ]; then + ${pkgs.jq}/bin/jq \ + '.["color-scheme"].predefined.schemes["Cat-Custom"] = "Cat-Custom"' \ + "Assets/Translations/$lang.json" > "Assets/Translations/$lang.json.tmp" \ + && mv "Assets/Translations/$lang.json.tmp" "Assets/Translations/$lang.json" + fi + done + else + echo "ERROR: ColorScheme directory not found" + exit 1 + fi + ''; + + meta = + oldAttrs.meta + // { + description = "${oldAttrs.meta.description} (Cat-Custom: ${config.catppuccin.flavor}/${config.catppuccin.accent})"; + }; }); -in -{ +in { programs.noctalia-shell = { enable = true; package = customPackage; @@ -91,7 +92,7 @@ in bar = { position = "top"; backgroundOpacity = 1; - monitors = [ ]; + monitors = []; density = "comfortable"; showCapsule = true; capsuleOpacity = 1; @@ -256,7 +257,7 @@ in enabled = true; overviewEnabled = false; directory = "/home/sckova/.local/share/wallpaper"; - monitorDirectories = [ ]; + monitorDirectories = []; enableMultiMonitorDirectories = false; recursiveSearch = false; setWallpaperOnAllMonitors = true; @@ -275,7 +276,7 @@ in enableClipboardHistory = true; enableClipPreview = true; position = "top_left"; - pinnedExecs = [ ]; + pinnedExecs = []; useApp2Unit = false; sortByMostUsed = true; terminalCommand = "kitty -e"; @@ -360,8 +361,8 @@ in floatingRatio = 1; size = 1; onlySameOutput = true; - monitors = [ ]; - pinnedApps = [ ]; + monitors = []; + pinnedApps = []; colorizeIcons = false; pinnedStatic = false; inactiveIndicators = false; @@ -404,7 +405,7 @@ in }; notifications = { enabled = true; - monitors = [ ]; + monitors = []; location = "top_right"; overlayLayer = true; backgroundOpacity = 1; @@ -434,7 +435,7 @@ in 1 2 ]; - monitors = [ ]; + monitors = []; }; audio = { volumeStep = 5; @@ -442,7 +443,7 @@ in cavaFrameRate = 30; visualizerType = "linear"; visualizerQuality = "high"; - mprisBlacklist = [ ]; + mprisBlacklist = []; preferredPlayer = ""; externalMixer = "pwvucontrol || pavucontrol"; }; @@ -498,8 +499,8 @@ in systemd.user.services.noctalia-shell = { Unit = { - After = [ "niri.service" ]; - PartOf = [ "niri.service" ]; + After = ["niri.service"]; + PartOf = ["niri.service"]; Description = "Noctalia Shell - Wayland desktop shell"; Documentation = "https://docs.noctalia.dev/docs"; }; @@ -517,7 +518,7 @@ in }; Install = { - WantedBy = [ "niri.service" ]; + WantedBy = ["niri.service"]; }; }; } diff --git a/home/tiling/wallpaper/default.nix b/home/tiling/wallpaper/default.nix index 805c698..830c6ec 100644 --- a/home/tiling/wallpaper/default.nix +++ b/home/tiling/wallpaper/default.nix @@ -1,5 +1,8 @@ -{ pkgs, config, ... }: -let +{ + pkgs, + config, + ... +}: let bingWallpaperScript = pkgs.writeShellScript "bing-wallpaper" '' set -euo pipefail @@ -59,8 +62,7 @@ let echo "Wallpaper downloaded and applied successfully." ''; -in -{ +in { systemd.user.services.bing-wallpaper = { Unit = { Description = "Download and set Bing wallpaper of the day"; @@ -81,7 +83,7 @@ in }; Install = { - WantedBy = [ "niri.service" ]; + WantedBy = ["niri.service"]; }; }; } diff --git a/home/vscode/default.nix b/home/vscode/default.nix index 0191599..c9e777a 100644 --- a/home/vscode/default.nix +++ b/home/vscode/default.nix @@ -3,14 +3,10 @@ pkgs, lib, ... -}: - -let - capitalize = - str: +}: let + capitalize = str: (lib.toUpper (builtins.substring 0 1 str)) + (builtins.substring 1 (builtins.stringLength str) str); -in -{ +in { # home.sessionVariables = { # EDITOR = "code"; # }; diff --git a/packages/overlay.nix b/packages/overlay.nix index ef23042..3dee279 100644 --- a/packages/overlay.nix +++ b/packages/overlay.nix @@ -1,9 +1,8 @@ final: prev: { widevine-helium = - if prev.stdenv.hostPlatform.system == "aarch64-linux" then - prev.callPackage ./helium-browser/widevine-aarch64-linux.nix { } - else - null; + if prev.stdenv.hostPlatform.system == "aarch64-linux" + then prev.callPackage ./helium-browser/widevine-aarch64-linux.nix {} + else null; # helium-browser = # prev.callPackage @@ -16,7 +15,7 @@ final: prev: { # }) { }; # }; - spotify-webapp = prev.callPackage (builtins.path { path = ./spotify/package.nix; }) { }; + spotify-webapp = prev.callPackage (builtins.path {path = ./spotify/package.nix;}) {}; - spotifyd = prev.callPackage (builtins.path { path = ./spotifyd/package.nix; }) { }; + spotifyd = prev.callPackage (builtins.path {path = ./spotifyd/package.nix;}) {}; } diff --git a/packages/spotify/package.nix b/packages/spotify/package.nix index 940bc6e..530869c 100644 --- a/packages/spotify/package.nix +++ b/packages/spotify/package.nix @@ -5,9 +5,7 @@ copyDesktopItems, chromium, writeShellScriptBin, -}: - -let +}: let pname = "spotify-webapp"; version = "1.0.0"; @@ -25,50 +23,49 @@ let --ozone-platform=wayland \ "$@" ''; - in -stdenv.mkDerivation { - inherit pname version; + stdenv.mkDerivation { + inherit pname version; - dontUnpack = true; - dontBuild = true; + dontUnpack = true; + dontBuild = true; - nativeBuildInputs = [ copyDesktopItems ]; + nativeBuildInputs = [copyDesktopItems]; - desktopItems = [ - (makeDesktopItem { - name = "spotify-webapp"; - exec = "spotify-webapp %U"; - icon = "spotify"; - desktopName = "Spotify"; - genericName = "Music Streaming"; - comment = "Listen to music on Spotify"; - categories = [ - "Audio" - "Music" - "AudioVideo" - ]; - mimeTypes = [ "x-scheme-handler/spotify" ]; - startupWMClass = "spotify-webapp"; - startupNotify = true; - }) - ]; + desktopItems = [ + (makeDesktopItem { + name = "spotify-webapp"; + exec = "spotify-webapp %U"; + icon = "spotify"; + desktopName = "Spotify"; + genericName = "Music Streaming"; + comment = "Listen to music on Spotify"; + categories = [ + "Audio" + "Music" + "AudioVideo" + ]; + mimeTypes = ["x-scheme-handler/spotify"]; + startupWMClass = "spotify-webapp"; + startupNotify = true; + }) + ]; - installPhase = '' - runHook preInstall + installPhase = '' + runHook preInstall - mkdir -p $out/bin - ln -s ${launchScript}/bin/spotify-webapp $out/bin/spotify-webapp + mkdir -p $out/bin + ln -s ${launchScript}/bin/spotify-webapp $out/bin/spotify-webapp - runHook postInstall - ''; + runHook postInstall + ''; - meta = with lib; { - description = "Spotify web app running in Chromium"; - homepage = "https://open.spotify.com"; - license = licenses.free; - maintainers = [ ]; - platforms = platforms.linux; - mainProgram = "spotify-webapp"; - }; -} + meta = with lib; { + description = "Spotify web app running in Chromium"; + homepage = "https://open.spotify.com"; + license = licenses.free; + maintainers = []; + platforms = platforms.linux; + mainProgram = "spotify-webapp"; + }; + } diff --git a/packages/spotifyd/package.nix b/packages/spotifyd/package.nix index 1966d28..88adf6a 100644 --- a/packages/spotifyd/package.nix +++ b/packages/spotifyd/package.nix @@ -20,7 +20,6 @@ withPortAudio ? stdenv.hostPlatform.isDarwin, withPulseAudio ? config.pulseaudio or stdenv.hostPlatform.isLinux, }: - rustPlatform.buildRustPackage (finalAttrs: { pname = "spotifyd"; version = "0.4.2"; @@ -41,7 +40,7 @@ rustPlatform.buildRustPackage (finalAttrs: { ]; buildInputs = - lib.optionals stdenv.hostPlatform.isLinux [ openssl ] + lib.optionals stdenv.hostPlatform.isLinux [openssl] # The `dbus_mpris` feature works on other platforms, but only requires `dbus` on Linux ++ lib.optional (withMpris && stdenv.hostPlatform.isLinux) dbus ++ lib.optional (withALSA || withJack) alsa-lib @@ -50,7 +49,7 @@ rustPlatform.buildRustPackage (finalAttrs: { ++ lib.optional withPortAudio portaudio; # `aws-lc-sys` fails with this enabled - hardeningDisable = [ "strictoverflow" ]; + hardeningDisable = ["strictoverflow"]; buildNoDefaultFeatures = true; buildFeatures = @@ -68,8 +67,8 @@ rustPlatform.buildRustPackage (finalAttrs: { ]; passthru = { - tests.version = testers.testVersion { package = finalAttrs.finalPackage; }; - updateScript = nix-update-script { }; + tests.version = testers.testVersion {package = finalAttrs.finalPackage;}; + updateScript = nix-update-script {}; }; meta = { diff --git a/system/default.nix b/system/default.nix index ca518f5..75fc54c 100755 --- a/system/default.nix +++ b/system/default.nix @@ -1,16 +1,13 @@ # Edit this configuration file to define what should be installed on # your system. Help is available in the configuration.nix(5) man page # and in the NixOS manual (accessible by running ‘nixos-help’). - { config, lib, pkgs, inputs, ... -}: - -{ +}: { nix.settings.experimental-features = [ "nix-command" "flakes" @@ -24,7 +21,7 @@ nix.settings = { # Increase file descriptor limit for builds sandbox = "relaxed"; - extra-sandbox-paths = [ ]; + extra-sandbox-paths = []; build-users-group = "nixbld"; }; @@ -79,7 +76,6 @@ }; boot = { - plymouth = { enable = true; }; @@ -184,7 +180,7 @@ "networkmanager" "podman" ]; - packages = with pkgs; [ ]; + packages = with pkgs; []; hashedPassword = "$6$bvwRUFaJNMpH8rm3$FGDWFN6tBScJ/2DynAjnlZE8JRfyADN78d6c4GawxpAjyNLNE/AjQzMA09tLRqpKX7WnN5PIUZLAm2bT9/RbG0"; }; @@ -227,5 +223,4 @@ # Before changing this value read the documentation for this option # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html). system.stateVersion = "25.05"; # Did you read the comment? - } diff --git a/system/hosts/alien/default.nix b/system/hosts/alien/default.nix index f454a0c..6cf9508 100644 --- a/system/hosts/alien/default.nix +++ b/system/hosts/alien/default.nix @@ -6,8 +6,7 @@ catppuccin, nix-cachyos-kernel, ... -}: -{ +}: { networking.hostName = "alien"; environment.systemPackages = with pkgs; [ @@ -16,8 +15,8 @@ ]; # enable ddcutil - users.users.sckova.extraGroups = [ "i2c" ]; - boot.extraModulePackages = [ config.boot.kernelPackages.ddcci-driver ]; + users.users.sckova.extraGroups = ["i2c"]; + boot.extraModulePackages = [config.boot.kernelPackages.ddcci-driver]; boot.kernelModules = [ "i2c-dev" "ddcci_backlight" @@ -35,14 +34,14 @@ catppuccin.accent = "blue"; home-manager.users.sckova = { - imports = [ catppuccin.homeModules.catppuccin ]; + imports = [catppuccin.homeModules.catppuccin]; }; boot.loader.systemd-boot.consoleMode = "max"; # boot.kernelPackages = pkgs.linuxPackages; # let's use the CachyOS kernel instead! - nixpkgs.overlays = [ nix-cachyos-kernel.overlays.default ]; + nixpkgs.overlays = [nix-cachyos-kernel.overlays.default]; nix.settings.substituters = [ "https://attic.xuyh0120.win/lantian" "https://cache.garnix.io" diff --git a/system/hosts/peach/default.nix b/system/hosts/peach/default.nix index 27b86a6..1fd6366 100644 --- a/system/hosts/peach/default.nix +++ b/system/hosts/peach/default.nix @@ -4,8 +4,7 @@ lib, catppuccin, ... -}: -{ +}: { networking.hostName = "peach"; boot.binfmt.emulatedSystems = [ @@ -13,12 +12,12 @@ "riscv64-linux" ]; - boot.kernelParams = [ "apple_dcp.show_notch=1" ]; + boot.kernelParams = ["apple_dcp.show_notch=1"]; catppuccin.accent = "peach"; home-manager.users.sckova = { - imports = [ catppuccin.homeModules.catppuccin ]; + imports = [catppuccin.homeModules.catppuccin]; }; hardware.asahi = { diff --git a/system/hosts/vm-aarch64/default.nix b/system/hosts/vm-aarch64/default.nix index 6bd230b..952afc5 100644 --- a/system/hosts/vm-aarch64/default.nix +++ b/system/hosts/vm-aarch64/default.nix @@ -4,8 +4,7 @@ lib, catppuccin, ... -}: -{ +}: { networking.hostName = "vm-aarch64"; boot.binfmt.emulatedSystems = [ @@ -16,7 +15,7 @@ catppuccin.accent = "green"; home-manager.users.sckova = { - imports = [ catppuccin.homeModules.catppuccin ]; + imports = [catppuccin.homeModules.catppuccin]; }; services.spice-vdagentd.enable = true; diff --git a/system/shell/fish.nix b/system/shell/fish.nix index 53b4d74..a6b0b92 100644 --- a/system/shell/fish.nix +++ b/system/shell/fish.nix @@ -1,6 +1,4 @@ -{ pkgs, ... }: - -{ +{pkgs, ...}: { programs.bash = { interactiveShellInit = '' if [[ $(${pkgs.procps}/bin/ps --no-header --pid=$PPID --format=comm) != "fish" && -z ''${BASH_EXECUTION_STRING} ]] diff --git a/system/tailscale/default.nix b/system/tailscale/default.nix index 19011a7..e4bb69b 100644 --- a/system/tailscale/default.nix +++ b/system/tailscale/default.nix @@ -4,9 +4,7 @@ pkgs, lib, ... -}: - -let +}: let tailscaleWaitScript = pkgs.writeShellScript "tailscale-wait-for-ip" '' echo "Waiting for tailscale0 to get an IP address..." for i in {1..15}; do @@ -20,8 +18,7 @@ let echo "Warning: tailscale0 did not get IP address within 15 seconds" exit 0 ''; -in -{ +in { systemd.services.tailscaled = { serviceConfig = { ExecStartPost = tailscaleWaitScript; diff --git a/system/widevine/default.nix b/system/widevine/default.nix index 0d7aec6..6d013fe 100644 --- a/system/widevine/default.nix +++ b/system/widevine/default.nix @@ -3,15 +3,13 @@ lib, pkgs, ... -}: - -{ +}: { nixpkgs.overlays = lib.mkIf (config.nixpkgs.hostPlatform.isLinux) [ (final: prev: { - wrapFirefox = - browser: opts: - let - extraPrefs = (opts.extraPrefs or "") + '' + wrapFirefox = browser: opts: let + extraPrefs = + (opts.extraPrefs or "") + + '' lockPref("media.gmp-widevinecdm.version", "system-installed"); lockPref("media.gmp-widevinecdm.visible", true); lockPref("media.gmp-widevinecdm.enabled", true); @@ -19,16 +17,18 @@ lockPref("media.eme.enabled", true); lockPref("media.eme.encrypted-media-encryption-scheme.enabled", true); ''; - widevineCdmDir = "${final.widevine-cdm}/share/google/chrome/WidevineCdm"; - widevineOutDir = "$out/gmp-widevinecdm/system-installed"; - in - (prev.wrapFirefox browser (opts // { inherit extraPrefs; })).overrideAttrs (previousAttrs: { - buildCommand = previousAttrs.buildCommand + '' - mkdir -p "${widevineOutDir}" - ln -s "${widevineCdmDir}/_platform_specific/linux_arm64/libwidevinecdm.so" "${widevineOutDir}/libwidevinecdm.so" - ln -s "${widevineCdmDir}/manifest.json" "${widevineOutDir}/manifest.json" - wrapProgram "$oldExe" --set MOZ_GMP_PATH "${widevineOutDir}" - ''; + widevineCdmDir = "${final.widevine-cdm}/share/google/chrome/WidevineCdm"; + widevineOutDir = "$out/gmp-widevinecdm/system-installed"; + in + (prev.wrapFirefox browser (opts // {inherit extraPrefs;})).overrideAttrs (previousAttrs: { + buildCommand = + previousAttrs.buildCommand + + '' + mkdir -p "${widevineOutDir}" + ln -s "${widevineCdmDir}/_platform_specific/linux_arm64/libwidevinecdm.so" "${widevineOutDir}/libwidevinecdm.so" + ln -s "${widevineCdmDir}/manifest.json" "${widevineOutDir}/manifest.json" + wrapProgram "$oldExe" --set MOZ_GMP_PATH "${widevineOutDir}" + ''; }); }) ]; From 0e10a740f0eeab0d6c3ed45f01f7637261b2c82e Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Sat, 27 Dec 2025 08:14:04 -0500 Subject: [PATCH 157/282] update niri and keybinds --- home/default.nix | 1 - home/tiling/niri/default.nix | 1 + home/tiling/niri/niri.nix | 66 ++++++++++++++++++++--------------- home/tiling/niri/noctalia.nix | 10 +++--- 4 files changed, 44 insertions(+), 34 deletions(-) diff --git a/home/default.nix b/home/default.nix index 0fbd634..afd66cd 100755 --- a/home/default.nix +++ b/home/default.nix @@ -145,7 +145,6 @@ tmux fastfetch btop - killall wget ripgrep ncdu diff --git a/home/tiling/niri/default.nix b/home/tiling/niri/default.nix index 4d588dd..1442f35 100644 --- a/home/tiling/niri/default.nix +++ b/home/tiling/niri/default.nix @@ -21,6 +21,7 @@ in { libsForQt5.qt5ct catppuccin-qt5ct xwayland-satellite + playerctl ]; home.file = { diff --git a/home/tiling/niri/niri.nix b/home/tiling/niri/niri.nix index 9d65ad7..0e838d2 100644 --- a/home/tiling/niri/niri.nix +++ b/home/tiling/niri/niri.nix @@ -131,9 +131,7 @@ } ]; open-maximized = true; - focus-ring.enable = false; - border.enable = false; - shadow.enable = false; + open-focused = true; } ]; binds = { @@ -194,39 +192,51 @@ }; "XF86MonBrightnessUp" = { - action.spawn = [ - "brightnessctl" - "--class=backlight" - "set" - "+5%" - ]; + action.spawn = ["brightnessctl" "--class=backlight" "set" "+5%"]; allow-when-locked = true; }; + "XF86MonBrightnessDown" = { - action.spawn = [ - "brightnessctl" - "--class=backlight" - "set" - "5%-" - ]; + action.spawn = ["brightnessctl" "--class=backlight" "set" "5%-"]; allow-when-locked = true; }; + "Shift+XF86MonBrightnessUp" = { - action.spawn = [ - "brightnessctl" - "--class=backlight" - "set" - "+1%" - ]; + action.spawn = ["brightnessctl" "--class=backlight" "set" "+1%"]; allow-when-locked = true; }; + "Shift+XF86MonBrightnessDown" = { - action.spawn = [ - "brightnessctl" - "--class=backlight" - "set" - "1%-" - ]; + action.spawn = ["brightnessctl" "--class=backlight" "set" "1%-"]; + allow-when-locked = true; + }; + + "XF86AudioPrev" = { + action.spawn = ["playerctl" "previous"]; + allow-when-locked = true; + }; + + "XF86AudioPlay" = { + action.spawn = ["playerctl" "play-pause"]; + allow-when-locked = true; + }; + + "XF86AudioNext" = { + action.spawn = ["playerctl" "next"]; + allow-when-locked = true; + }; + + "XF86Sleep" = { + action.power-off-monitors = {}; + }; + + "XF86Search" = { + action.spawn = ["noctalia-shell" "ipc" "call" "launcher" "toggle"]; + allow-when-locked = true; + }; + + "XF86LaunchA" = { + action.spawn = ["niri" "msg" "action" "toggle-overview"]; allow-when-locked = true; }; @@ -351,7 +361,7 @@ "Mod+Shift+R".action.switch-preset-window-height = {}; "Mod+Ctrl+R".action.reset-window-height = {}; "Mod+F".action.maximize-column = {}; - "Mod+Shift+F".action.fullscreen-window = {}; + "Mod+Shift+F".action.maximize-window-to-edges = {}; "Mod+Ctrl+F".action.expand-column-to-available-width = {}; diff --git a/home/tiling/niri/noctalia.nix b/home/tiling/niri/noctalia.nix index 204e8e5..35a3581 100644 --- a/home/tiling/niri/noctalia.nix +++ b/home/tiling/niri/noctalia.nix @@ -99,7 +99,7 @@ in { floating = false; marginVertical = 0.25; marginHorizontal = 0.25; - outerCorners = true; + outerCorners = false; exclusive = true; widgets = { left = [ @@ -141,11 +141,11 @@ in { hideWhenIdle = false; id = "MediaMini"; maxWidth = 275; - scrollingMode = "always"; + scrollingMode = "hover"; showAlbumArt = false; - showArtistFirst = true; + showArtistFirst = false; showProgressRing = true; - showVisualizer = true; + showVisualizer = false; useFixedWidth = false; visualizerType = "linear"; } @@ -254,7 +254,7 @@ in { videoSource = "portal"; }; wallpaper = { - enabled = true; + enabled = false; overviewEnabled = false; directory = "/home/sckova/.local/share/wallpaper"; monitorDirectories = []; From 432c42be6e0ffe596f3eadfdb87c114c3bd1f69d Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Sat, 27 Dec 2025 08:15:07 -0500 Subject: [PATCH 158/282] add nixd to neovim --- home/terminal/nvim/default.nix | 3 +++ 1 file changed, 3 insertions(+) diff --git a/home/terminal/nvim/default.nix b/home/terminal/nvim/default.nix index f62056e..99de89a 100644 --- a/home/terminal/nvim/default.nix +++ b/home/terminal/nvim/default.nix @@ -91,6 +91,8 @@ enable = true; autoLoad = true; }; + cmp-nvim-lsp.enable = true; + cmp-fish.enable = true; conform-nvim = { enable = true; autoLoad = true; @@ -144,6 +146,7 @@ "-E" ]; }; + nixd.enable = true; }; autoLoad = true; }; From cddf5ecc228d77831d9d5bcbbc328176c8f8a015 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Sat, 27 Dec 2025 08:25:33 -0500 Subject: [PATCH 159/282] alien: remove games --- home/hosts/alien/default.nix | 49 ++++++++++++++++++------------------ 1 file changed, 24 insertions(+), 25 deletions(-) diff --git a/home/hosts/alien/default.nix b/home/hosts/alien/default.nix index e6983cf..69c76c3 100644 --- a/home/hosts/alien/default.nix +++ b/home/hosts/alien/default.nix @@ -3,7 +3,8 @@ pkgs, spicetify-nix, ... -}: { +}: +{ catppuccin = { accent = "blue"; flavor = "mocha"; @@ -12,10 +13,6 @@ home.packages = with pkgs; [ # steam gtk theming adwsteamgtk - - daggerfall-unity - shipwright - _2ship2harkinian ]; programs.noctalia-shell.settings.brightness = { @@ -33,28 +30,30 @@ scale = 1.75; }; - programs.spicetify = let - spicePkgs = spicetify-nix.legacyPackages.${pkgs.stdenv.hostPlatform.system}; - in { - enable = true; + programs.spicetify = + let + spicePkgs = spicetify-nix.legacyPackages.${pkgs.stdenv.hostPlatform.system}; + in + { + enable = true; - enabledExtensions = with spicePkgs.extensions; [ - adblock - hidePodcasts - shuffle # shuffle+ (special characters are sanitized out of extension names) - ]; - enabledCustomApps = with spicePkgs.apps; [ - newReleases - ncsVisualizer - ]; - enabledSnippets = with spicePkgs.snippets; [ - rotatingCoverart - pointer - ]; + enabledExtensions = with spicePkgs.extensions; [ + adblock + hidePodcasts + shuffle # shuffle+ (special characters are sanitized out of extension names) + ]; + enabledCustomApps = with spicePkgs.apps; [ + newReleases + ncsVisualizer + ]; + enabledSnippets = with spicePkgs.snippets; [ + rotatingCoverart + pointer + ]; - theme = spicePkgs.themes.catppuccin; - colorScheme = config.catppuccin.flavor; - }; + theme = spicePkgs.themes.catppuccin; + colorScheme = config.catppuccin.flavor; + }; programs.plasma = { panels = [ From 8f2811df87bb1989fba9491c760ec44af110325d Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Sun, 28 Dec 2025 15:40:34 -0500 Subject: [PATCH 160/282] update neovim --- home/terminal/nvim/default.nix | 106 ++++++++++++++++++++++++--------- 1 file changed, 79 insertions(+), 27 deletions(-) diff --git a/home/terminal/nvim/default.nix b/home/terminal/nvim/default.nix index 99de89a..68649a4 100644 --- a/home/terminal/nvim/default.nix +++ b/home/terminal/nvim/default.nix @@ -84,18 +84,72 @@ plugins = { nvim-autopairs = { enable = true; - autoLoad = true; }; cmp = { - autoEnableSources = true; enable = true; - autoLoad = true; + settings = { + autoEnableSources = true; + performance = { + debounce = 60; + fetchingTimeout = 200; + maxViewEntries = 30; + }; + snippet = { + expand = "luasnip"; + }; + formatting = { + fields = [ + "kind" + "abbr" + "menu" + ]; + }; + sources = [ + {name = "git";} + {name = "nvim_lsp";} + {name = "path";} + {name = "buffer";} + {name = "fish";} + {name = "emoji";} + { + name = "buffer"; # text within current buffer + option.get_bufnrs.__raw = "vim.api.nvim_list_bufs"; + keywordLength = 3; + } + {name = "copilot";} + { + name = "path"; # file system paths + keywordLength = 3; + } + { + name = "luasnip"; # snippets + keywordLength = 3; + } + ]; + }; + window = { + completion = { + border = "solid"; + }; + documentation = { + border = "solid"; + }; + }; + + mapping = { + "" = "cmp.mapping(cmp.mapping.select_next_item(), {'i', 's'})"; + "" = "cmp.mapping.select_next_item()"; + "" = "cmp.mapping.select_prev_item()"; + "" = "cmp.mapping.abort()"; + "" = "cmp.mapping.scroll_docs(-4)"; + "" = "cmp.mapping.scroll_docs(4)"; + "" = "cmp.mapping.complete()"; + "" = "cmp.mapping.confirm({ select = true })"; + "" = "cmp.mapping.confirm({ behavior = cmp.ConfirmBehavior.Replace, select = true })"; + }; }; - cmp-nvim-lsp.enable = true; - cmp-fish.enable = true; conform-nvim = { enable = true; - autoLoad = true; settings = { formatters_by_ft = { lua = ["stylua"]; @@ -130,11 +184,9 @@ }; fzf-lua = { enable = true; - autoLoad = true; }; kitty-scrollback = { enable = true; - autoLoad = true; }; lsp = { enable = true; @@ -148,55 +200,56 @@ }; nixd.enable = true; }; - autoLoad = true; }; - lualine = { + lualine = let + palette = pkgs.catppuccin.${config.catppuccin.flavor}; + in { enable = true; settings = { options = { theme = { normal = { a = { - fg = "#1e1e2e"; - bg = "#cba6f7"; + fg = palette.base; + bg = palette.mauve; }; b = { - fg = "#cdd6f4"; - bg = "#313244"; + fg = palette.text; + bg = palette.surface0; }; c = { - fg = "#cdd6f4"; + fg = palette.text; }; }; insert = { a = { - fg = "#1e1e2e"; - bg = "#89b4fa"; + fg = palette.base; + bg = palette.blue; }; }; visual = { a = { - fg = "#1e1e2e"; - bg = "#94e2d5"; + fg = palette.base; + bg = palette.teal; }; }; replace = { a = { - fg = "#1e1e2e"; - bg = "#f38ba8"; + fg = palette.base; + bg = palette.red; }; }; inactive = { a = { - fg = "#cdd6f4"; - bg = "#1e1e2e"; + fg = palette.text; + bg = palette.base; }; b = { - fg = "#cdd6f4"; - bg = "#1e1e2e"; + fg = palette.text; + bg = palette.base; }; c = { - fg = "#cdd6f4"; + fg = palette.text; }; }; }; @@ -249,7 +302,6 @@ tabline = {}; extensions = []; }; - autoLoad = true; }; }; }; From 2981f261d2194b3626dffd0f568faf1469d8579f Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Mon, 29 Dec 2025 19:21:46 -0500 Subject: [PATCH 161/282] use noctalia ipc for brightness --- home/tiling/niri/niri.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/home/tiling/niri/niri.nix b/home/tiling/niri/niri.nix index 0e838d2..66f5a7b 100644 --- a/home/tiling/niri/niri.nix +++ b/home/tiling/niri/niri.nix @@ -192,12 +192,12 @@ }; "XF86MonBrightnessUp" = { - action.spawn = ["brightnessctl" "--class=backlight" "set" "+5%"]; + action.spawn = ["noctalia-shell" "ipc" "call" "brightness" "increase"]; allow-when-locked = true; }; "XF86MonBrightnessDown" = { - action.spawn = ["brightnessctl" "--class=backlight" "set" "5%-"]; + action.spawn = ["noctalia-shell" "ipc" "call" "brightness" "decrease"]; allow-when-locked = true; }; From fd34855839118bf38d5d73786e346e8db8f3b154 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Tue, 30 Dec 2025 20:48:59 -0500 Subject: [PATCH 162/282] update flake --- flake.lock | 84 +++++++++++++++++++++++++++--------------------------- 1 file changed, 42 insertions(+), 42 deletions(-) diff --git a/flake.lock b/flake.lock index 13a0d76..7654316 100644 --- a/flake.lock +++ b/flake.lock @@ -24,11 +24,11 @@ "cachyos-kernel": { "flake": false, "locked": { - "lastModified": 1766395826, - "narHash": "sha256-W/8JwebN9BF9vpMV9yZpaSFGGazQWyhGEpmNI1XEugM=", + "lastModified": 1767027640, + "narHash": "sha256-3WiDgNSE+77mVEAhlYFW3sRvS5fRTcIQAw9g76uUXIg=", "owner": "CachyOS", "repo": "linux-cachyos", - "rev": "b68aded713a580df028543faea77c4ca5ec1226b", + "rev": "f29baa3a13d3756dbd8836ed646622af803f79a3", "type": "github" }, "original": { @@ -40,11 +40,11 @@ "cachyos-kernel-patches": { "flake": false, "locked": { - "lastModified": 1766372082, - "narHash": "sha256-kUCl6N3+e0CGn2tAci0WRr14L+01JYpcbN9HeCvWt3E=", + "lastModified": 1767026526, + "narHash": "sha256-l3FEhseehO2On1FPlDbtFUc94LEc1ZvmUxQpLID119g=", "owner": "CachyOS", "repo": "kernel-patches", - "rev": "a0f67557573aa13c028aea2a84a7a68e0d5477e8", + "rev": "dd86f5f1e1c87b8bc3d8cabf2c655fe2b2c5e144", "type": "github" }, "original": { @@ -106,11 +106,11 @@ "flake-compat_2": { "flake": false, "locked": { - "lastModified": 1765121682, - "narHash": "sha256-4VBOP18BFeiPkyhy9o4ssBNQEvfvv1kXkasAYd0+rrA=", + "lastModified": 1767039857, + "narHash": "sha256-vNpUSpF5Nuw8xvDLj2KCwwksIbjua2LZCqhV1LNRDns=", "owner": "NixOS", "repo": "flake-compat", - "rev": "65f23138d8d09a92e30f1e5c87611b23ef451bf3", + "rev": "5edf11c44bc78a0d334f6334cdaf7d60d732daab", "type": "github" }, "original": { @@ -186,11 +186,11 @@ ] }, "locked": { - "lastModified": 1766553851, - "narHash": "sha256-hHKQhHkXxuPJwLkI8wdu826GLV5AcuW9/HVdc9eBnTU=", + "lastModified": 1767104570, + "narHash": "sha256-GKgwu5//R+cLdKysZjGqvUEEOGXXLdt93sNXeb2M/Lk=", "owner": "nix-community", "repo": "home-manager", - "rev": "7eca7f7081036a7b740090994c9ec543927f89a7", + "rev": "e4e78a2cbeaddd07ab7238971b16468cc1d14daf", "type": "github" }, "original": { @@ -211,11 +211,11 @@ "xwayland-satellite-unstable": "xwayland-satellite-unstable" }, "locked": { - "lastModified": 1766517173, - "narHash": "sha256-zhb16f8hDVw7rsVNEIZQJOw78VQ4Eu3sjzwznxSzVtk=", + "lastModified": 1767077227, + "narHash": "sha256-wdUitn3XbaC99X0ctfHf0q5lGQ/1ogUwzjqTD4bkrDg=", "owner": "sodiboo", "repo": "niri-flake", - "rev": "ff40739a8a6d1f2890e91b5bedbb8f09e6c43e4f", + "rev": "9c4cb4a2b1adf7a24064a8cf5c829f464622d520", "type": "github" }, "original": { @@ -244,11 +244,11 @@ "niri-unstable": { "flake": false, "locked": { - "lastModified": 1766483519, - "narHash": "sha256-LRSUhcm2erq/v/6EkwVP86kdVyRSsZ+AYQgwsKJMwCM=", + "lastModified": 1767072131, + "narHash": "sha256-JEpNneZyi8ydU0VVpxrHis2panjmeagFLGAiqigWMbE=", "owner": "YaLTeR", "repo": "niri", - "rev": "4d295418ce8e8e110060396bb485c4f0c381d37e", + "rev": "1ab1737653d8727c63252fb569e011c0903a9ace", "type": "github" }, "original": { @@ -266,11 +266,11 @@ "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1766554203, - "narHash": "sha256-ZvZEycXdE7iS65D2jNWjnRoFboO9FoRI/OqnLRBH4Is=", + "lastModified": 1767116963, + "narHash": "sha256-QXJGrhvxCFRjiBFoet2tPZeYVDMQP3uJ7U2rVNqksnk=", "owner": "xddxdd", "repo": "nix-cachyos-kernel", - "rev": "d91219fabf254fa6eb75330db19c306676ca337d", + "rev": "025497db5d60c1c4c37ba3094a498998543e29a3", "type": "github" }, "original": { @@ -281,11 +281,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1766427476, - "narHash": "sha256-KHgJHYGYuHUtJPBjczN0kFrWHmdfUXPa0Km6Yq/ELEE=", + "lastModified": 1767031366, + "narHash": "sha256-CGXYat7ldAoD3GBZ+ETInHmQUCpHVzYmaQCQ4oKM9Q4=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "6dd5b55337d892a8a441aaad31bf1a4165b453bc", + "rev": "d23fedd87fcd067b1d160323fae0d0e4f995527d", "type": "github" }, "original": { @@ -312,11 +312,11 @@ }, "nixpkgs-stable": { "locked": { - "lastModified": 1766473571, - "narHash": "sha256-5G1NDO2PulBx1RoaA6U1YoUDX0qZslpPxv+n5GX6Qto=", + "lastModified": 1766885793, + "narHash": "sha256-P6RVkrM9JLCW6xBjSwHfgTOQ1JwBUma5xe5LI8xAPC0=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "76701a179d3a98b07653e2b0409847499b2a07d3", + "rev": "9ef261221d1e72399f2036786498d78c38185c46", "type": "github" }, "original": { @@ -328,11 +328,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1766309749, - "narHash": "sha256-3xY8CZ4rSnQ0NqGhMKAy5vgC+2IVK0NoVEzDoOh4DA4=", + "lastModified": 1766902085, + "narHash": "sha256-coBu0ONtFzlwwVBzmjacUQwj3G+lybcZ1oeNSQkgC0M=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "a6531044f6d0bef691ea18d4d4ce44d0daa6e816", + "rev": "c0b0e0fddf73fd517c3471e546c0df87a42d53f4", "type": "github" }, "original": { @@ -351,11 +351,11 @@ "systems": "systems" }, "locked": { - "lastModified": 1766443759, - "narHash": "sha256-iGDhUPOPyY9NOTNHkhNzZKoz3+OlBNGg451qtvPq/Ic=", + "lastModified": 1767136206, + "narHash": "sha256-gid5LbLQRHuexlvSgH6ibeSBV0T/QjkuVRXPr+r/kTo=", "owner": "nix-community", "repo": "nixvim", - "rev": "1787eeda5a2ce35bcd57dbb482718b0d897786ae", + "rev": "33e1f1d4446472d9e3526ff21c47a95a9814cdfe", "type": "github" }, "original": { @@ -371,11 +371,11 @@ ] }, "locked": { - "lastModified": 1766538131, - "narHash": "sha256-CAGs0LA27JL9EBLfH1sDb2ljs2hC2KBFCU9CnJfTmR0=", + "lastModified": 1767140690, + "narHash": "sha256-FemE1tu5FgtlfDD9Vwgk7fA3qg1xsOZKNMapZcB+/LE=", "owner": "noctalia-dev", "repo": "noctalia-shell", - "rev": "6ff3debf15aef7c43be7cb43938f78c25d40b3d5", + "rev": "a3e277ce20dc3401afb7887c089395b0ad0d3108", "type": "github" }, "original": { @@ -392,11 +392,11 @@ ] }, "locked": { - "lastModified": 1766590087, - "narHash": "sha256-KYvXjaedY26jVK1CtDhQ+HmA+dVhAgPAbm0suYlsorI=", + "lastModified": 1767140277, + "narHash": "sha256-JmAOi+tyq7ADgBsR1UoS8KwHAY4qCLBZPcBRJvuYWFw=", "owner": "nix-community", "repo": "NUR", - "rev": "edc9b9b68a8ceea31a50e8fed66badff3856e75b", + "rev": "330ff8b4e11a889d0326d7ef6c302f9b907fcc92", "type": "github" }, "original": { @@ -452,11 +452,11 @@ "systems": "systems_2" }, "locked": { - "lastModified": 1766292025, - "narHash": "sha256-dZ9SSqRXfb+WU9MLl5c/ktdRWYZ42uxBPB7rQYuDaJs=", + "lastModified": 1767117828, + "narHash": "sha256-K9sL2WwDQOltBiT111uU5pmfFjB6VmApaaHgTdXZqpg=", "owner": "Gerg-L", "repo": "spicetify-nix", - "rev": "73031a3c9359c6c0ab82098793573d0c0951e372", + "rev": "b164eb4d18bed0f4be47c1033b477d3e81646752", "type": "github" }, "original": { From 964611881e285dd75a7037e9389bd85e38a8ab96 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Sat, 3 Jan 2026 14:55:42 -0500 Subject: [PATCH 163/282] update flake, changes --- flake.lock | 98 +++++++++++++++--------------- flake.nix | 3 +- home/default.nix | 1 + home/graphical/firefox/default.nix | 4 -- home/hosts/alien/default.nix | 47 +++++++------- home/tiling/niri/noctalia.nix | 2 +- system/hosts/alien/default.nix | 4 ++ 7 files changed, 79 insertions(+), 80 deletions(-) diff --git a/flake.lock b/flake.lock index 7654316..37501a6 100644 --- a/flake.lock +++ b/flake.lock @@ -8,11 +8,11 @@ ] }, "locked": { - "lastModified": 1766064315, - "narHash": "sha256-aMoYLYIj+yYGhDKuSromj+VZYnMyN3lRRAZ+dk1IOiE=", + "lastModified": 1767465220, + "narHash": "sha256-P5qVna7ptT0BPQI6EesszfK25znFNpR9xiEJpqheo0M=", "owner": "nix-community", "repo": "nixos-apple-silicon", - "rev": "f94f4496775f9ca6e8a9e9e83f5aa4e4210fbb5d", + "rev": "b6e97a42d409155bc70f2d211ab1029338a37523", "type": "github" }, "original": { @@ -24,11 +24,11 @@ "cachyos-kernel": { "flake": false, "locked": { - "lastModified": 1767027640, - "narHash": "sha256-3WiDgNSE+77mVEAhlYFW3sRvS5fRTcIQAw9g76uUXIg=", + "lastModified": 1767632716, + "narHash": "sha256-lTRVzn5JIP1+8572Sj/UqW/nlGG6QNFUNpLU6VCOznU=", "owner": "CachyOS", "repo": "linux-cachyos", - "rev": "f29baa3a13d3756dbd8836ed646622af803f79a3", + "rev": "2f380e2b35c4ad9acda98296f638f93af3742533", "type": "github" }, "original": { @@ -40,11 +40,11 @@ "cachyos-kernel-patches": { "flake": false, "locked": { - "lastModified": 1767026526, - "narHash": "sha256-l3FEhseehO2On1FPlDbtFUc94LEc1ZvmUxQpLID119g=", + "lastModified": 1767601194, + "narHash": "sha256-NWeMLjch/DHQQa9LdLClejvN8goGVGsEAQjkgrVPP+U=", "owner": "CachyOS", "repo": "kernel-patches", - "rev": "dd86f5f1e1c87b8bc3d8cabf2c655fe2b2c5e144", + "rev": "bd836f10a363f04ec755a7e39ffdc78b8043e336", "type": "github" }, "original": { @@ -60,11 +60,11 @@ ] }, "locked": { - "lastModified": 1765990358, - "narHash": "sha256-l8x0gU8mnYaGMl+gWrsSHKBJlZWD8KXJfHTkRlFiPI0=", + "lastModified": 1767517218, + "narHash": "sha256-Lqr37iyfrfAfCYPV21uyg+81qOJGu50ymIXT6gEtKO8=", "owner": "catppuccin", "repo": "nix", - "rev": "de1b60ca45a578f59f7d84c8d338b346017b2161", + "rev": "fc247adb17ffd0b76d67b2da12a9e3fe059ccd29", "type": "github" }, "original": { @@ -124,11 +124,11 @@ "nixpkgs-lib": "nixpkgs-lib" }, "locked": { - "lastModified": 1765835352, - "narHash": "sha256-XswHlK/Qtjasvhd1nOa1e8MgZ8GS//jBoTqWtrS1Giw=", + "lastModified": 1767609335, + "narHash": "sha256-feveD98mQpptwrAEggBQKJTYbvwwglSbOv53uCfH9PY=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "a34fae9c08a15ad73f295041fec82323541400a9", + "rev": "250481aafeb741edfe23d29195671c19b36b6dca", "type": "github" }, "original": { @@ -186,11 +186,11 @@ ] }, "locked": { - "lastModified": 1767104570, - "narHash": "sha256-GKgwu5//R+cLdKysZjGqvUEEOGXXLdt93sNXeb2M/Lk=", + "lastModified": 1767619743, + "narHash": "sha256-N0kK1JqxIjFl7hPAfhkW6C9AO7feYJUWLPyqJO2VuQQ=", "owner": "nix-community", "repo": "home-manager", - "rev": "e4e78a2cbeaddd07ab7238971b16468cc1d14daf", + "rev": "a65c04965c841eb01ba401f5162f12bc8d52014f", "type": "github" }, "original": { @@ -211,11 +211,11 @@ "xwayland-satellite-unstable": "xwayland-satellite-unstable" }, "locked": { - "lastModified": 1767077227, - "narHash": "sha256-wdUitn3XbaC99X0ctfHf0q5lGQ/1ogUwzjqTD4bkrDg=", + "lastModified": 1767624540, + "narHash": "sha256-A53/9fnu/40wo6T2MF3lm07zD7N+cC0E5QEYFfFLGwA=", "owner": "sodiboo", "repo": "niri-flake", - "rev": "9c4cb4a2b1adf7a24064a8cf5c829f464622d520", + "rev": "62e47d55c0f8bc9cd5413b94134867d970e5e296", "type": "github" }, "original": { @@ -244,11 +244,11 @@ "niri-unstable": { "flake": false, "locked": { - "lastModified": 1767072131, - "narHash": "sha256-JEpNneZyi8ydU0VVpxrHis2panjmeagFLGAiqigWMbE=", + "lastModified": 1767598098, + "narHash": "sha256-IyH3zaCT2JZ6fdY4vKlUz2RbDdxaryvSZWUVixKYrKM=", "owner": "YaLTeR", "repo": "niri", - "rev": "1ab1737653d8727c63252fb569e011c0903a9ace", + "rev": "b7eb8a635b7f75705808eaed85c016f02ae4fd2d", "type": "github" }, "original": { @@ -266,11 +266,11 @@ "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1767116963, - "narHash": "sha256-QXJGrhvxCFRjiBFoet2tPZeYVDMQP3uJ7U2rVNqksnk=", + "lastModified": 1767635460, + "narHash": "sha256-r2hPm5+gcsiQ9zVHQAAoyC2D73CWJSx9occ3AlInDuY=", "owner": "xddxdd", "repo": "nix-cachyos-kernel", - "rev": "025497db5d60c1c4c37ba3094a498998543e29a3", + "rev": "2da83b3ee8f80d8965fd82d468aeda512b337b24", "type": "github" }, "original": { @@ -281,11 +281,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1767031366, - "narHash": "sha256-CGXYat7ldAoD3GBZ+ETInHmQUCpHVzYmaQCQ4oKM9Q4=", + "lastModified": 1767593864, + "narHash": "sha256-AtzRYWSxsyvySDzfOek0lKQXoQrHtpFHbBPZ6rdQIEA=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "d23fedd87fcd067b1d160323fae0d0e4f995527d", + "rev": "1b717f421d250290b16de9a6033ea28258c46ae1", "type": "github" }, "original": { @@ -312,11 +312,11 @@ }, "nixpkgs-stable": { "locked": { - "lastModified": 1766885793, - "narHash": "sha256-P6RVkrM9JLCW6xBjSwHfgTOQ1JwBUma5xe5LI8xAPC0=", + "lastModified": 1767480499, + "narHash": "sha256-8IQQUorUGiSmFaPnLSo2+T+rjHtiNWc+OAzeHck7N48=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "9ef261221d1e72399f2036786498d78c38185c46", + "rev": "30a3c519afcf3f99e2c6df3b359aec5692054d92", "type": "github" }, "original": { @@ -328,16 +328,16 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1766902085, - "narHash": "sha256-coBu0ONtFzlwwVBzmjacUQwj3G+lybcZ1oeNSQkgC0M=", + "lastModified": 1767388185, + "narHash": "sha256-bmDUBlqgpIAXQ0QFn1fWpurlc+j2sI+B5941PWsic3M=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "c0b0e0fddf73fd517c3471e546c0df87a42d53f4", + "rev": "2e21f6c5797fcccfc1e8eced873aea8401a71135", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixos-unstable", + "ref": "pull/476347/head", "repo": "nixpkgs", "type": "github" } @@ -351,11 +351,11 @@ "systems": "systems" }, "locked": { - "lastModified": 1767136206, - "narHash": "sha256-gid5LbLQRHuexlvSgH6ibeSBV0T/QjkuVRXPr+r/kTo=", + "lastModified": 1767608728, + "narHash": "sha256-kmSJCTgrx+BxgqQOTPHAOkohvO+lbRsPWqu+PSPcz3I=", "owner": "nix-community", "repo": "nixvim", - "rev": "33e1f1d4446472d9e3526ff21c47a95a9814cdfe", + "rev": "851399eebd0fb383d2fd76269d859f16021dc7a8", "type": "github" }, "original": { @@ -371,11 +371,11 @@ ] }, "locked": { - "lastModified": 1767140690, - "narHash": "sha256-FemE1tu5FgtlfDD9Vwgk7fA3qg1xsOZKNMapZcB+/LE=", + "lastModified": 1767634566, + "narHash": "sha256-wJqLoHSWziILcNXVPcvVH6/vgXtnsRXJaVReWoOlR4o=", "owner": "noctalia-dev", "repo": "noctalia-shell", - "rev": "a3e277ce20dc3401afb7887c089395b0ad0d3108", + "rev": "e004128727739f8f40455e06a3d3719d53e09830", "type": "github" }, "original": { @@ -392,11 +392,11 @@ ] }, "locked": { - "lastModified": 1767140277, - "narHash": "sha256-JmAOi+tyq7ADgBsR1UoS8KwHAY4qCLBZPcBRJvuYWFw=", + "lastModified": 1767635057, + "narHash": "sha256-iXt6KFaN9jRqTvSvif8nQn47qeHII5rFTmt2V7eLiXc=", "owner": "nix-community", "repo": "NUR", - "rev": "330ff8b4e11a889d0326d7ef6c302f9b907fcc92", + "rev": "5d4701842f525a649bc1c5805c56b106f07d2cab", "type": "github" }, "original": { @@ -452,11 +452,11 @@ "systems": "systems_2" }, "locked": { - "lastModified": 1767117828, - "narHash": "sha256-K9sL2WwDQOltBiT111uU5pmfFjB6VmApaaHgTdXZqpg=", + "lastModified": 1767502559, + "narHash": "sha256-om0IPjW850vhhIrNZ5tiXjsYuqyoI44IdE+I9AwZ96I=", "owner": "Gerg-L", "repo": "spicetify-nix", - "rev": "b164eb4d18bed0f4be47c1033b477d3e81646752", + "rev": "806c1fdeb7af3e013215d14f5d9f06685fa6650f", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index ea4451f..cab78c5 100644 --- a/flake.nix +++ b/flake.nix @@ -2,7 +2,8 @@ description = "My NixOS Configuration"; inputs = { - nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; + # https://github.com/NixOS/nixpkgs/issues/476669 + nixpkgs.url = "github:NixOS/nixpkgs/pull/476347/head"; nix-cachyos-kernel.url = "github:xddxdd/nix-cachyos-kernel"; diff --git a/home/default.nix b/home/default.nix index afd66cd..967e57d 100755 --- a/home/default.nix +++ b/home/default.nix @@ -171,6 +171,7 @@ # nur.repos.forkprince.helium-nightly bitwarden-desktop qbittorrent + whatsapp-electron # gui applications ( multimedia ) audacity diff --git a/home/graphical/firefox/default.nix b/home/graphical/firefox/default.nix index 1ded408..45a1c12 100644 --- a/home/graphical/firefox/default.nix +++ b/home/graphical/firefox/default.nix @@ -99,9 +99,6 @@ "{446900e4-71c2-419f-a6a7-df9c091e268b}" = { installation_mode = "allowed"; }; - "{FirefoxColor@mozilla.com}" = { - installation_mode = "allowed"; - }; }; DisableTelemetry = true; DisableFirefoxStudies = true; @@ -140,7 +137,6 @@ pwas-for-firefox control-panel-for-twitter bitwarden - firefox-color ]; settings = { "{7a7a4a92-a2a0-41d1-9fd7-1e92480d612d}".settings = { diff --git a/home/hosts/alien/default.nix b/home/hosts/alien/default.nix index 69c76c3..2022182 100644 --- a/home/hosts/alien/default.nix +++ b/home/hosts/alien/default.nix @@ -3,8 +3,7 @@ pkgs, spicetify-nix, ... -}: -{ +}: { catppuccin = { accent = "blue"; flavor = "mocha"; @@ -27,33 +26,31 @@ height = 2160; refresh = 143.999; }; - scale = 1.75; + scale = 1.5; }; - programs.spicetify = - let - spicePkgs = spicetify-nix.legacyPackages.${pkgs.stdenv.hostPlatform.system}; - in - { - enable = true; + programs.spicetify = let + spicePkgs = spicetify-nix.legacyPackages.${pkgs.stdenv.hostPlatform.system}; + in { + enable = true; - enabledExtensions = with spicePkgs.extensions; [ - adblock - hidePodcasts - shuffle # shuffle+ (special characters are sanitized out of extension names) - ]; - enabledCustomApps = with spicePkgs.apps; [ - newReleases - ncsVisualizer - ]; - enabledSnippets = with spicePkgs.snippets; [ - rotatingCoverart - pointer - ]; + enabledExtensions = with spicePkgs.extensions; [ + adblock + hidePodcasts + shuffle # shuffle+ (special characters are sanitized out of extension names) + ]; + enabledCustomApps = with spicePkgs.apps; [ + newReleases + ncsVisualizer + ]; + enabledSnippets = with spicePkgs.snippets; [ + rotatingCoverart + pointer + ]; - theme = spicePkgs.themes.catppuccin; - colorScheme = config.catppuccin.flavor; - }; + theme = spicePkgs.themes.catppuccin; + colorScheme = config.catppuccin.flavor; + }; programs.plasma = { panels = [ diff --git a/home/tiling/niri/noctalia.nix b/home/tiling/niri/noctalia.nix index 35a3581..8cbe85d 100644 --- a/home/tiling/niri/noctalia.nix +++ b/home/tiling/niri/noctalia.nix @@ -93,7 +93,7 @@ in { position = "top"; backgroundOpacity = 1; monitors = []; - density = "comfortable"; + density = "spacious"; showCapsule = true; capsuleOpacity = 1; floating = false; diff --git a/system/hosts/alien/default.nix b/system/hosts/alien/default.nix index 6cf9508..3de14fb 100644 --- a/system/hosts/alien/default.nix +++ b/system/hosts/alien/default.nix @@ -52,6 +52,10 @@ ]; boot.kernelPackages = pkgs.cachyosKernels.linuxPackages-cachyos-lts; + # enable hyper-v for guests + virtualisation.hypervGuest.enable = true; + boot.blacklistedKernelModules = ["hyperv_fb"]; + programs = { gamescope = { enable = true; From 76eb3501b924f6c2ccd9ee9237ed0947b8a7343e Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Mon, 5 Jan 2026 17:48:23 -0500 Subject: [PATCH 164/282] move tailscale setting to its proper place --- system/default.nix | 4 ---- system/tailscale/default.nix | 5 +++++ 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/system/default.nix b/system/default.nix index 75fc54c..992e731 100755 --- a/system/default.nix +++ b/system/default.nix @@ -149,10 +149,6 @@ enableHidpi = true; }; libinput.enable = true; - tailscale = { - enable = true; - useRoutingFeatures = "client"; - }; printing.enable = true; pipewire = { enable = true; diff --git a/system/tailscale/default.nix b/system/tailscale/default.nix index e4bb69b..9ea4c31 100644 --- a/system/tailscale/default.nix +++ b/system/tailscale/default.nix @@ -24,4 +24,9 @@ in { ExecStartPost = tailscaleWaitScript; }; }; + + services.tailscale = { + enable = true; + useRoutingFeatures = "client"; + }; } From b5562ef662147cd6fd850b5af458a5b56b96cf62 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Tue, 6 Jan 2026 11:03:26 -0500 Subject: [PATCH 165/282] make vm architecture agnostic --- flake.nix | 93 +++++++++++-------- .../{vm-aarch64 => vm-generic}/default.nix | 14 ++- home/default.nix | 14 +-- home/hosts/{vm-aarch64 => vm}/default.nix | 0 system/hosts/alien/default.nix | 7 +- system/hosts/vm-aarch64/default.nix | 31 ------- system/hosts/vm-generic/default.nix | 32 +++++++ 7 files changed, 103 insertions(+), 88 deletions(-) rename hardware/{vm-aarch64 => vm-generic}/default.nix (65%) rename home/hosts/{vm-aarch64 => vm}/default.nix (100%) delete mode 100644 system/hosts/vm-aarch64/default.nix create mode 100644 system/hosts/vm-generic/default.nix diff --git a/flake.nix b/flake.nix index cab78c5..ab2e555 100644 --- a/flake.nix +++ b/flake.nix @@ -73,6 +73,10 @@ apple-silicon, ... }: let + # All systems we want to support for the generic VM + supportedSystems = ["x86_64-linux" "aarch64-linux"]; + # to run the vm: + # nixos-rebuild build-vm --flake ~/nix#$(nix eval --raw --impure --expr 'builtins.currentSystem') mkNixosSystem = { hostname, system, @@ -83,7 +87,7 @@ inherit system; specialArgs = { - inherit catppuccin; + inherit catppuccin system; } // extraSpecialArgs; modules = @@ -144,47 +148,54 @@ nixvim.homeModules.nixvim ]; }; - in { - nixosConfigurations = { - peach = mkNixosSystem { - hostname = "peach"; - system = "aarch64-linux"; - extraModules = [ - apple-silicon.nixosModules.default - {nixpkgs.overlays = [apple-silicon.overlays.apple-silicon-overlay];} - ]; - }; + in + { + nixosConfigurations = + { + peach = mkNixosSystem { + hostname = "peach"; + system = "aarch64-linux"; + extraModules = [ + apple-silicon.nixosModules.default + {nixpkgs.overlays = [apple-silicon.overlays.apple-silicon-overlay];} + ]; + }; - alien = mkNixosSystem { - hostname = "alien"; - system = "x86_64-linux"; - extraSpecialArgs = { - inherit nix-cachyos-kernel; + alien = mkNixosSystem { + hostname = "alien"; + system = "x86_64-linux"; + extraSpecialArgs = { + inherit nix-cachyos-kernel; + }; + }; + } + // nixpkgs.lib.genAttrs supportedSystems ( + system: + mkNixosSystem { + hostname = "vm-generic"; + inherit system; + } + ); + + homeConfigurations = { + peach = mkHomeConfig { + user = "sckova"; + hostname = "peach"; + system = "aarch64-linux"; + }; + alien = mkHomeConfig { + user = "sckova"; + hostname = "alien"; + system = "x86_64-linux"; }; }; - - vm-aarch64 = mkNixosSystem { - hostname = "vm-aarch64"; - system = "aarch64-linux"; - }; - }; - - homeConfigurations = { - peach = mkHomeConfig { - user = "sckova"; - hostname = "peach"; - system = "aarch64-linux"; - }; - alien = mkHomeConfig { - user = "sckova"; - hostname = "alien"; - system = "x86_64-linux"; - }; - vm-aarch64 = mkHomeConfig { - user = "sckova"; - hostname = "vm-aarch64"; - system = "aarch64-linux"; - }; - }; - }; + } + // nixpkgs.lib.genAttrs supportedSystems ( + system: + mkHomeConfig { + user = "sckova"; + hostname = "vm-generic"; + inherit system; + } + ); } diff --git a/hardware/vm-aarch64/default.nix b/hardware/vm-generic/default.nix similarity index 65% rename from hardware/vm-aarch64/default.nix rename to hardware/vm-generic/default.nix index d333395..21f3620 100644 --- a/hardware/vm-aarch64/default.nix +++ b/hardware/vm-generic/default.nix @@ -2,10 +2,9 @@ # and may be overwritten by future invocations. Please make changes # to /etc/nixos/configuration.nix instead. { - config, lib, pkgs, - modulesPath, + system, ... }: { imports = []; @@ -30,7 +29,12 @@ {device = "/dev/disk/by-label/swap";} ]; - nixpkgs.hostPlatform = lib.mkDefault "aarch64-linux"; - hardware.parallels.enable = true; - nixpkgs.config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) ["prl-tools"]; + # Set platform from the system argument passed by the flake + nixpkgs.hostPlatform = lib.mkDefault system; + + # Enable Parallels tools only on aarch64 + hardware.parallels.enable = lib.mkIf (system == "aarch64-linux") true; + nixpkgs.config.allowUnfreePredicate = + lib.mkIf (system == "aarch64-linux") + (pkg: builtins.elem (lib.getName pkg) ["prl-tools"]); } diff --git a/home/default.nix b/home/default.nix index 967e57d..b4583d7 100755 --- a/home/default.nix +++ b/home/default.nix @@ -235,13 +235,13 @@ then "dark" else "light"; - theme = { - package = pkgs.kdePackages.breeze-gtk; - name = - if config.userOptions.isDark - then "Breeze-Dark" - else "Breeze"; - }; + # theme = { + # package = pkgs.kdePackages.breeze-gtk; + # name = + # if config.userOptions.isDark + # then "Breeze-Dark" + # else "Breeze"; + # }; iconTheme = { name = diff --git a/home/hosts/vm-aarch64/default.nix b/home/hosts/vm/default.nix similarity index 100% rename from home/hosts/vm-aarch64/default.nix rename to home/hosts/vm/default.nix diff --git a/system/hosts/alien/default.nix b/system/hosts/alien/default.nix index 3de14fb..c83ae54 100644 --- a/system/hosts/alien/default.nix +++ b/system/hosts/alien/default.nix @@ -1,8 +1,6 @@ { config, pkgs, - lib, - inputs, catppuccin, nix-cachyos-kernel, ... @@ -10,8 +8,9 @@ networking.hostName = "alien"; environment.systemPackages = with pkgs; [ - pkgs.ddcutil - pkgs.mangohud + ddcutil + mangohud + (bottles.override {removeWarningPopup = true;}) ]; # enable ddcutil diff --git a/system/hosts/vm-aarch64/default.nix b/system/hosts/vm-aarch64/default.nix deleted file mode 100644 index 952afc5..0000000 --- a/system/hosts/vm-aarch64/default.nix +++ /dev/null @@ -1,31 +0,0 @@ -{ - config, - pkgs, - lib, - catppuccin, - ... -}: { - networking.hostName = "vm-aarch64"; - - boot.binfmt.emulatedSystems = [ - "x86_64-linux" - "riscv64-linux" - ]; - - catppuccin.accent = "green"; - - home-manager.users.sckova = { - imports = [catppuccin.homeModules.catppuccin]; - }; - - services.spice-vdagentd.enable = true; - - virtualisation.vmVariant = { - virtualisation = { - memorySize = 8192; - cores = 6; - }; - }; - - security.sudo.wheelNeedsPassword = false; -} diff --git a/system/hosts/vm-generic/default.nix b/system/hosts/vm-generic/default.nix new file mode 100644 index 0000000..e28763f --- /dev/null +++ b/system/hosts/vm-generic/default.nix @@ -0,0 +1,32 @@ +{ + config, + pkgs, + lib, + catppuccin, + ... +}: { + networking.hostName = "vm"; + + # Enable emulation for architectures we're not currently running + boot.binfmt.emulatedSystems = + lib.optional (pkgs.stdenv.hostPlatform.system != "x86_64-linux") "x86_64-linux" + ++ lib.optional (pkgs.stdenv.hostPlatform.system != "aarch64-linux") "aarch64-linux" + ++ lib.optional (pkgs.stdenv.hostPlatform.system != "riscv64-linux") "riscv64-linux"; + + catppuccin.accent = "green"; + + home-manager.users.sckova = { + imports = [catppuccin.homeModules.catppuccin]; + }; + + services.spice-vdagentd.enable = true; + + virtualisation.vmVariant = { + virtualisation = { + memorySize = 8192; + cores = 6; + }; + }; + + security.sudo.wheelNeedsPassword = false; +} From 466ea0e4146b646f7ff4209b33ebf18ac1a6159c Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Tue, 6 Jan 2026 12:26:05 -0500 Subject: [PATCH 166/282] add more VM configs --- home/default.nix | 1 + home/terminal/kitty/default.nix | 7 ++++++- system/default.nix | 2 ++ 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/home/default.nix b/home/default.nix index b4583d7..643a7cf 100755 --- a/home/default.nix +++ b/home/default.nix @@ -160,6 +160,7 @@ # development & tooling jdk21_headless + quickemu # kde and kde theming kde-rounded-corners diff --git a/home/terminal/kitty/default.nix b/home/terminal/kitty/default.nix index 3fdbd4a..4156705 100644 --- a/home/terminal/kitty/default.nix +++ b/home/terminal/kitty/default.nix @@ -1,6 +1,5 @@ { config, - lib, pkgs, ... }: let @@ -24,6 +23,12 @@ in { recursive = true; }; + home.file.".config/kitty/ssh.conf" = { + text = '' + shell_integration inherited + ''; + }; + programs.kitty = { enable = true; enableGitIntegration = true; diff --git a/system/default.nix b/system/default.nix index 992e731..a2c6374 100755 --- a/system/default.nix +++ b/system/default.nix @@ -168,6 +168,8 @@ }; }; + systemd.tmpfiles.rules = ["L+ /var/lib/qemu/firmware - - - - ${pkgs.qemu}/share/qemu/firmware"]; + users.users.sckova = { isNormalUser = true; description = "Sean Kovacs"; From a23aa285d9d1e96792e2340bb6636c991aac4d86 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Tue, 6 Jan 2026 12:50:26 -0500 Subject: [PATCH 167/282] update fish prompt --- home/terminal/fish/default.nix | 12 +++++++++ home/terminal/fish/functions/fish-prompt.fish | 26 +++++++++++-------- home/terminal/nvim/default.nix | 1 + 3 files changed, 28 insertions(+), 11 deletions(-) diff --git a/home/terminal/fish/default.nix b/home/terminal/fish/default.nix index a5b233b..c19b948 100644 --- a/home/terminal/fish/default.nix +++ b/home/terminal/fish/default.nix @@ -1,6 +1,7 @@ { config, pkgs, + lib, ... }: { home.packages = with pkgs; [kdePackages.qttools]; @@ -29,4 +30,15 @@ }; }; }; + + home.file.".config/fish/colors.fish" = { + text = let + flavor = config.catppuccin.flavor; + palette = pkgs.catppuccin.bare.${flavor}; + in + lib.concatStringsSep "\n" ( + lib.mapAttrsToList (name: value: "set -g color_${name} ${value}") palette + ); + force = true; + }; } diff --git a/home/terminal/fish/functions/fish-prompt.fish b/home/terminal/fish/functions/fish-prompt.fish index f38e382..09d3ae9 100644 --- a/home/terminal/fish/functions/fish-prompt.fish +++ b/home/terminal/fish/functions/fish-prompt.fish @@ -1,24 +1,28 @@ +source ~/.config/fish/colors.fish set -l last_status $status set -l nix_shell_info ( if test -n "$IN_NIX_SHELL" echo -n " " end ) -set -g fish_color_user 89dceb +set -g color_user $color_sky +set -g color_host $color_red +set -g color_cwd $color_green # Set host color based on hostname -if test (hostname) = "peach" - set -g fish_color_host fab387 -else if test (hostname) = "alien" - set -g fish_color_host 89b4fa -else if test (hostname) = "vm-aarch64" - set -g fish_color_host a6e3a1 -else if test (uname) = "Darwin" - set -g fish_color_host f9e2af +if test (hostname) = peach + set -g color_host $color_peach +else if test (hostname) = alien + set -g color_host $color_blue +else if test (hostname) = vm-aarch64 + set -g color_host $color_green + set -g color_cwd $color_red +else if test (uname) = Darwin + set -g color_host $color_yellow end -set -l user_host (set_color $fish_color_user)"$USER"(set_color normal)"@"(set_color $fish_color_host)(prompt_hostname)(set_color normal) -set -l cwd (set_color $fish_color_cwd)(prompt_pwd)(set_color normal) +set -l user_host (set_color $color_user)"$USER"(set_color normal)"@"(set_color $color_host)(prompt_hostname)(set_color normal) +set -l cwd (set_color $color_cwd)(prompt_pwd)(set_color normal) set -l git_info (fish_git_prompt) echo -s "$user_host" " " "$cwd" "$git_info $nix_shell_info" echo -n -s "> " diff --git a/home/terminal/nvim/default.nix b/home/terminal/nvim/default.nix index 68649a4..1843db3 100644 --- a/home/terminal/nvim/default.nix +++ b/home/terminal/nvim/default.nix @@ -159,6 +159,7 @@ css = ["prettier"]; json = ["prettier"]; jsonc = ["prettier"]; + fish = ["fish_indent"]; }; # Default formatting options From e5b415904c03551584be63fd8716cb0c4f70ec7a Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Tue, 6 Jan 2026 14:07:05 -0500 Subject: [PATCH 168/282] finally fix gtk3 theme and home-manager split from system --- flake.lock | 112 ++++++++++++++++-- flake.nix | 28 ++++- home/default.nix | 168 -------------------------- home/theming/default.nix | 247 +++++++++++++++++++++++++++++++++++++++ system/default.nix | 23 ---- 5 files changed, 375 insertions(+), 203 deletions(-) create mode 100644 home/theming/default.nix diff --git a/flake.lock b/flake.lock index 37501a6..3a21140 100644 --- a/flake.lock +++ b/flake.lock @@ -21,6 +21,27 @@ "type": "github" } }, + "banner": { + "inputs": { + "nixpkgs": [ + "gtk-nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1669224926, + "narHash": "sha256-UK19yx8jNqbPfBZNUeJr2Sms7BhbDAUyJBF5w2CT6Hc=", + "owner": "the-argus", + "repo": "banner.nix", + "rev": "253556f4068f5cb9728e49ac42d630cdc0ccfd58", + "type": "github" + }, + "original": { + "owner": "the-argus", + "repo": "banner.nix", + "type": "github" + } + }, "cachyos-kernel": { "flake": false, "locked": { @@ -179,6 +200,44 @@ "type": "github" } }, + "flake-utils": { + "inputs": { + "systems": "systems" + }, + "locked": { + "lastModified": 1689068808, + "narHash": "sha256-6ixXo3wt24N/melDWjq70UuHQLxGV8jZvooRanIHXw0=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "919d646de7be200f3bf08cb76ae1f09402b6f9b4", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "gtk-nix": { + "inputs": { + "banner": "banner", + "flake-utils": "flake-utils", + "nixpkgs": "nixpkgs" + }, + "locked": { + "lastModified": 1692384535, + "narHash": "sha256-lFOEsDLV7kuEAcHS7HfyGewTcdSkzTxM+l3XwGhzLgU=", + "owner": "the-argus", + "repo": "gtk-nix", + "rev": "e77b9e68aa818b87389c682b4fd018ad451a85d3", + "type": "github" + }, + "original": { + "owner": "the-argus", + "repo": "gtk-nix", + "type": "github" + } + }, "home-manager": { "inputs": { "nixpkgs": [ @@ -263,7 +322,7 @@ "cachyos-kernel-patches": "cachyos-kernel-patches", "flake-compat": "flake-compat_2", "flake-parts": "flake-parts", - "nixpkgs": "nixpkgs" + "nixpkgs": "nixpkgs_2" }, "locked": { "lastModified": 1767635460, @@ -281,18 +340,17 @@ }, "nixpkgs": { "locked": { - "lastModified": 1767593864, - "narHash": "sha256-AtzRYWSxsyvySDzfOek0lKQXoQrHtpFHbBPZ6rdQIEA=", + "lastModified": 1692264070, + "narHash": "sha256-WepAkIL2UcHOj7JJiaFS/vxrA9lklQHv8p+xGL+7oQ0=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "1b717f421d250290b16de9a6033ea28258c46ae1", + "rev": "42c25608aa2ad4e5d3716d8d63c606063513ba33", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixos-unstable-small", - "repo": "nixpkgs", - "type": "github" + "id": "nixpkgs", + "ref": "nixos-unstable", + "type": "indirect" } }, "nixpkgs-lib": { @@ -327,6 +385,22 @@ } }, "nixpkgs_2": { + "locked": { + "lastModified": 1767593864, + "narHash": "sha256-AtzRYWSxsyvySDzfOek0lKQXoQrHtpFHbBPZ6rdQIEA=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1b717f421d250290b16de9a6033ea28258c46ae1", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable-small", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_3": { "locked": { "lastModified": 1767388185, "narHash": "sha256-bmDUBlqgpIAXQ0QFn1fWpurlc+j2sI+B5941PWsic3M=", @@ -348,7 +422,7 @@ "nixpkgs": [ "nixpkgs" ], - "systems": "systems" + "systems": "systems_2" }, "locked": { "lastModified": 1767608728, @@ -433,10 +507,11 @@ "apple-silicon": "apple-silicon", "catppuccin": "catppuccin", "catppuccin-palette": "catppuccin-palette", + "gtk-nix": "gtk-nix", "home-manager": "home-manager", "niri": "niri", "nix-cachyos-kernel": "nix-cachyos-kernel", - "nixpkgs": "nixpkgs_2", + "nixpkgs": "nixpkgs_3", "nixvim": "nixvim", "noctalia": "noctalia", "nur": "nur", @@ -449,7 +524,7 @@ "nixpkgs": [ "nixpkgs" ], - "systems": "systems_2" + "systems": "systems_3" }, "locked": { "lastModified": 1767502559, @@ -495,6 +570,21 @@ "type": "github" } }, + "systems_3": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, "xwayland-satellite-stable": { "flake": false, "locked": { diff --git a/flake.nix b/flake.nix index ab2e555..f63a36b 100644 --- a/flake.nix +++ b/flake.nix @@ -16,6 +16,8 @@ url = "github:abhinandh-s/catppuccin-nix"; }; + gtk-nix.url = "github:the-argus/gtk-nix"; + home-manager = { url = "github:nix-community/home-manager"; inputs.nixpkgs.follows = "nixpkgs"; @@ -63,6 +65,7 @@ nix-cachyos-kernel, catppuccin, catppuccin-palette, + gtk-nix, home-manager, plasma-manager, niri, @@ -111,6 +114,29 @@ home-manager.nixosModules.home-manager noctalia.nixosModules.default { + home-manager.useGlobalPkgs = true; + home-manager.useUserPackages = true; + home-manager.users.sckova = { + imports = [ + ./home + ./home/games/minecraft + ./home/games/morrowind + ./home/graphical/discord + ./home/graphical/firefox + ./home/graphical/mpv + ./home/tiling/niri + ./home/tiling/wallpaper + ./home/systemd + ./home/terminal/btop + ./home/terminal/fish + ./home/terminal/kitty + ./home/terminal/nvim + ./home/kde + ./home/theming + ./home/vscode + ./home/hosts/${hostname} + ]; + }; home-manager.sharedModules = [ plasma-manager.homeModules.plasma-manager niri.homeModules.niri @@ -119,7 +145,7 @@ nixvim.homeModules.nixvim ]; home-manager.extraSpecialArgs = { - inherit spicetify-nix; + inherit gtk-nix spicetify-nix; }; } ] diff --git a/home/default.nix b/home/default.nix index 643a7cf..d63664e 100755 --- a/home/default.nix +++ b/home/default.nix @@ -205,174 +205,6 @@ pkgs.catppuccin-cursors."${config.catppuccin.flavor}${config.catppuccinUpper.accent}" ]; - home.file = { - ".icons/default/index.theme" = { - text = '' - [Icon Theme] - Name=Default - Comment=Default Cursor Theme - Inherits=${config.userOptions.cursor.name} - ''; - force = true; - }; - }; - - home.pointerCursor = { - gtk.enable = true; - name = config.userOptions.cursor.name; - package = config.userOptions.cursor.package; - size = config.userOptions.cursor.size; - }; - - home.sessionVariables = { - QT_QPA_PLATFORMTHEME = "qt6ct"; - }; - - gtk = { - enable = true; - - colorScheme = - if config.userOptions.isDark - then "dark" - else "light"; - - # theme = { - # package = pkgs.kdePackages.breeze-gtk; - # name = - # if config.userOptions.isDark - # then "Breeze-Dark" - # else "Breeze"; - # }; - - iconTheme = { - name = - if config.userOptions.isDark - then "Colloid-Dark" - else "Colloid-Light"; - package = pkgs.colloid-icon-theme; - }; - - cursorTheme = { - name = config.home.pointerCursor.name; - package = config.home.pointerCursor.package; - size = config.home.pointerCursor.size; - }; - - gtk3.extraConfig = { - gtk-application-prefer-dark-theme = true; - }; - - gtk4.extraConfig = { - gtk-application-prefer-dark-theme = true; - }; - }; - - qt = { - enable = true; - qt5ctSettings = { - Appearance = { - style = "Breeze"; - icon_theme = config.gtk.iconTheme.name; - color_scheme_path = "/home/${config.userOptions.username}/.config/qt5ct/qt5ct.conf"; - custom_palette = true; - standard_dialogs = "default"; - }; - Fonts = config.qt.qt6ctSettings.Fonts; - ColorScheme = config.qt.qt6ctSettings.ColorScheme; - }; - qt6ctSettings = { - Appearance = { - style = "Breeze"; - icon_theme = config.gtk.iconTheme.name; - color_scheme_path = "/home/${config.userOptions.username}/.config/qt6ct/qt6ct.conf"; - custom_palette = true; - standard_dialogs = "default"; - }; - Fonts = { - fixed = "\"${config.userOptions.fontMono.name},${toString config.userOptions.fontMono.size}\""; - general = "\"${config.userOptions.fontSans.name},${toString config.userOptions.fontSans.size}\""; - }; - ColorScheme = let - c = pkgs.catppuccin.bare.${config.catppuccin.flavor}; - accent = c.${config.catppuccin.accent}; - mkColors = roles: builtins.concatStringsSep ", " (map (r: "#ff${r}") roles); - in { - active_colors = mkColors [ - c.text - c.surface0 - c.surface1 - c.surface0 - c.base - c.mantle - c.text - c.text - c.text - c.base - c.mantle - c.crust - accent - c.base - accent - c.mauve - c.mantle - "000000" - c.base - c.text - c.overlay0 - accent - ]; - disabled_colors = mkColors [ - c.overlay0 - c.surface0 - c.surface1 - c.surface0 - c.overlay0 - c.mantle - c.overlay0 - c.text - c.overlay0 - c.surface0 - c.surface0 - c.mantle - c.overlay1 - c.text - "0000ff" - "ff00ff" - c.surface0 - "000000" - c.surface0 - c.base - "80000000" - c.overlay1 - ]; - inactive_colors = mkColors [ - c.text - c.surface0 - c.surface1 - c.surface0 - c.base - c.mantle - c.text - c.text - c.text - c.base - c.mantle - c.crust - accent - c.base - accent - c.mauve - c.mantle - "000000" - c.base - c.text - c.overlay0 - accent - ]; - }; - }; - }; - services = { spotifyd = { enable = true; diff --git a/home/theming/default.nix b/home/theming/default.nix new file mode 100644 index 0000000..a0829c3 --- /dev/null +++ b/home/theming/default.nix @@ -0,0 +1,247 @@ +{ + config, + pkgs, + gtk-nix, + ... +}: { + home.file = { + ".icons/default/index.theme" = { + text = '' + [Icon Theme] + Name=Default + Comment=Default Cursor Theme + Inherits=${config.userOptions.cursor.name} + ''; + force = true; + }; + }; + + home.pointerCursor = { + gtk.enable = true; + name = config.userOptions.cursor.name; + package = config.userOptions.cursor.package; + size = config.userOptions.cursor.size; + }; + + home.sessionVariables = { + QT_QPA_PLATFORMTHEME = "qt6ct"; + }; + + gtk = { + enable = true; + theme.name = "GtkNix"; + + colorScheme = + if config.userOptions.isDark + then "dark" + else "light"; + + # theme = { + # package = pkgs.kdePackages.breeze-gtk; + # name = + # if config.userOptions.isDark + # then "Breeze-Dark" + # else "Breeze"; + # }; + + iconTheme = { + name = + if config.userOptions.isDark + then "Colloid-Dark" + else "Colloid-Light"; + package = pkgs.colloid-icon-theme; + }; + + cursorTheme = { + name = config.home.pointerCursor.name; + package = config.home.pointerCursor.package; + size = config.home.pointerCursor.size; + }; + + gtk3.extraConfig = { + gtk-application-prefer-dark-theme = true; + }; + + gtk4.extraConfig = { + gtk-application-prefer-dark-theme = true; + }; + }; + + imports = [gtk-nix.homeManagerModule]; + + gtkNix = let + color = pkgs.catppuccin.bare.${config.catppuccin.flavor}; + in { + enable = true; + + configuration = { + spacing-small = "0.3em"; + spacing-medium = "0.6em"; + spacing-large = "0.9em"; + tint-weak = 0.3; + tint-medium = 0.6; + tint-strong = 0.9; + border-size = "0.2em"; + radius = "0.5em"; + disabled-opacity = 0.3; + }; + + defaultTransparency = 255; + + palette = rec { + base00 = color.base; + base01 = color.mantle; + base02 = color.surface0; + base03 = color.surface1; + base04 = color.surface2; + base05 = color.text; + base06 = color.rosewater; + base07 = color.lavender; + base08 = color.red; + base09 = color.peach; + base0A = color.yellow; + base0B = color.green; + base0C = color.teal; + base0D = color.blue; + base0E = color.mauve; + base0F = color.flamingo; + + highlight = color.${config.catppuccin.accent}; + hialt0 = color.${config.catppuccin.accent}; + hialt1 = base0E; + hialt2 = base0B; + urgent = base09; + warn = base0A; + confirm = base0D; + link = base0E; + + pfg-highlight = base00; + pfg-hialt0 = base00; + pfg-hialt1 = base00; + pfg-hialt2 = base05; + pfg-urgent = base00; + pfg-warn = base00; + pfg-confirm = base00; + pfg-link = base00; + + ansi00 = base03; + ansi01 = base09; + ansi02 = base0D; + ansi03 = base0A; + ansi04 = base0C; + ansi05 = base0E; + ansi06 = base0B; + ansi07 = base05; + }; + }; + + qt = { + enable = true; + + qt5ctSettings = { + Appearance = { + style = "Breeze"; + icon_theme = config.gtk.iconTheme.name; + color_scheme_path = "/home/${config.userOptions.username}/.config/qt5ct/qt5ct.conf"; + custom_palette = true; + standard_dialogs = "xdgdesktopportal"; + }; + Fonts = config.qt.qt6ctSettings.Fonts; + ColorScheme = config.qt.qt6ctSettings.ColorScheme; + }; + + qt6ctSettings = { + Appearance = { + style = "Breeze"; + icon_theme = config.gtk.iconTheme.name; + color_scheme_path = "/home/${config.userOptions.username}/.config/qt6ct/qt6ct.conf"; + custom_palette = true; + standard_dialogs = "xdgdesktopportal"; + }; + + Fonts = { + fixed = "\"${config.userOptions.fontMono.name},${toString config.userOptions.fontMono.size}\""; + general = "\"${config.userOptions.fontSans.name},${toString config.userOptions.fontSans.size}\""; + }; + + ColorScheme = let + c = pkgs.catppuccin.bare.${config.catppuccin.flavor}; + accent = c.${config.catppuccin.accent}; + mkColors = roles: builtins.concatStringsSep ", " (map (r: "#ff${r}") roles); + in { + active_colors = mkColors [ + c.text + c.surface0 + c.surface1 + c.surface0 + c.base + c.mantle + c.text + c.text + c.text + c.base + c.mantle + c.crust + accent + c.base + accent + c.mauve + c.mantle + "000000" + c.base + c.text + c.overlay0 + accent + ]; + disabled_colors = mkColors [ + c.overlay0 + c.surface0 + c.surface1 + c.surface0 + c.overlay0 + c.mantle + c.overlay0 + c.text + c.overlay0 + c.surface0 + c.surface0 + c.mantle + c.overlay1 + c.text + "0000ff" + "ff00ff" + c.surface0 + "000000" + c.surface0 + c.base + "80000000" + c.overlay1 + ]; + inactive_colors = mkColors [ + c.text + c.surface0 + c.surface1 + c.surface0 + c.base + c.mantle + c.text + c.text + c.text + c.base + c.mantle + c.crust + accent + c.base + accent + c.mauve + c.mantle + "000000" + c.base + c.text + c.overlay0 + accent + ]; + }; + }; + }; +} diff --git a/system/default.nix b/system/default.nix index a2c6374..f8be213 100755 --- a/system/default.nix +++ b/system/default.nix @@ -46,29 +46,6 @@ options = "--delete-older-than 30d"; }; - home-manager.useGlobalPkgs = true; - home-manager.useUserPackages = true; - home-manager.users.sckova = { - imports = [ - ../home - ../home/games/minecraft - ../home/games/morrowind - ../home/graphical/discord - ../home/graphical/firefox - ../home/graphical/mpv - ../home/tiling/niri - ../home/tiling/wallpaper - ../home/systemd - ../home/terminal/btop - ../home/terminal/fish - ../home/terminal/kitty - ../home/terminal/nvim - ../home/kde - ../home/vscode - ../home/hosts/${config.networking.hostName} - ]; - }; - environment.sessionVariables = rec { NIXOS_OZONE_WL = "1"; EDITOR = "nvim"; From 2c7bf35af079b6922cc403ea6ab0f26fc9bfd11e Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Wed, 7 Jan 2026 13:23:11 -0500 Subject: [PATCH 169/282] update terminal --- home/terminal/fish/default.nix | 8 +++++++- home/terminal/kitty/default.nix | 1 + home/terminal/nvim/default.nix | 3 +++ 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/home/terminal/fish/default.nix b/home/terminal/fish/default.nix index c19b948..8b258ae 100644 --- a/home/terminal/fish/default.nix +++ b/home/terminal/fish/default.nix @@ -4,12 +4,18 @@ lib, ... }: { - home.packages = with pkgs; [kdePackages.qttools]; + home.packages = with pkgs; [ + kdePackages.qttools + bat + eza + ]; programs.fish = { enable = true; shellAliases = { ssh = "kitty-ssh"; + cat = "bat"; + ls = "eza"; }; functions = { fish_prompt = { diff --git a/home/terminal/kitty/default.nix b/home/terminal/kitty/default.nix index 4156705..7b07b49 100644 --- a/home/terminal/kitty/default.nix +++ b/home/terminal/kitty/default.nix @@ -44,6 +44,7 @@ in { update_check_interval = 0; wheel_scroll_multiplier = 5.0; confirm_os_window_close = 0; + window_padding_width = 4; tab_bar_min_tabs = 2; tab_bar_edge = "top"; tab_bar_style = "powerline"; diff --git a/home/terminal/nvim/default.nix b/home/terminal/nvim/default.nix index 1843db3..d2183db 100644 --- a/home/terminal/nvim/default.nix +++ b/home/terminal/nvim/default.nix @@ -14,6 +14,7 @@ alejandra stylua black + clang-tools ]; programs.nixvim = { @@ -160,6 +161,8 @@ json = ["prettier"]; jsonc = ["prettier"]; fish = ["fish_indent"]; + c = ["clang-format"]; + cpp = ["clang-format"]; }; # Default formatting options From 54d66cffc16a6d5ade1d25bbf40a4465486b60f1 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Wed, 7 Jan 2026 13:44:43 -0500 Subject: [PATCH 170/282] ugh gtk --- flake.nix | 5 +- home/theming/default.nix | 190 ++++++++++++++++++++++++--------------- 2 files changed, 120 insertions(+), 75 deletions(-) diff --git a/flake.nix b/flake.nix index f63a36b..c390fa8 100644 --- a/flake.nix +++ b/flake.nix @@ -16,8 +16,6 @@ url = "github:abhinandh-s/catppuccin-nix"; }; - gtk-nix.url = "github:the-argus/gtk-nix"; - home-manager = { url = "github:nix-community/home-manager"; inputs.nixpkgs.follows = "nixpkgs"; @@ -65,7 +63,6 @@ nix-cachyos-kernel, catppuccin, catppuccin-palette, - gtk-nix, home-manager, plasma-manager, niri, @@ -145,7 +142,7 @@ nixvim.homeModules.nixvim ]; home-manager.extraSpecialArgs = { - inherit gtk-nix spicetify-nix; + inherit spicetify-nix; }; } ] diff --git a/home/theming/default.nix b/home/theming/default.nix index a0829c3..181f7ca 100644 --- a/home/theming/default.nix +++ b/home/theming/default.nix @@ -1,9 +1,122 @@ { config, pkgs, - gtk-nix, + lib, ... -}: { +}: let + colors = pkgs.catppuccin.hex.${config.catppuccin.flavor}; + + mkColorSection = name: value: "@define-color ${name} ${value};"; + + gtk4CSS = '' + /* Catppuccin ${lib.toUpper (builtins.substring 0 1 config.catppuccin.flavor)}${builtins.substring 1 (-1) config.catppuccin.flavor} ${lib.toUpper (builtins.substring 0 1 config.catppuccin.accent)}${builtins.substring 1 (-1) config.catppuccin.accent} Palette */ + + /* Base colors */ + ${mkColorSection "window_bg_color" colors.base} + ${mkColorSection "window_fg_color" colors.text} + + /* View styling */ + ${mkColorSection "view_bg_color" colors.base} + ${mkColorSection "view_fg_color" colors.text} + + /* Header bar */ + ${mkColorSection "headerbar_bg_color" colors.mantle} + ${mkColorSection "headerbar_backdrop_color" colors.mantle} + ${mkColorSection "headerbar_fg_color" colors.text} + + /* Popovers and dialogs */ + ${mkColorSection "popover_bg_color" colors.base} + ${mkColorSection "popover_fg_color" colors.text} + @define-color dialog_bg_color @popover_bg_color; + @define-color dialog_fg_color @popover_fg_color; + + /* Cards and sidebars */ + ${mkColorSection "card_bg_color" colors.mantle} + ${mkColorSection "card_fg_color" colors.text} + ${mkColorSection "sidebar_bg_color" colors.mantle} + ${mkColorSection "sidebar_fg_color" colors.text} + @define-color sidebar_backdrop_color @sidebar_bg_color; + ${mkColorSection "sidebar_border_color" colors.surface0} + @define-color secondary_sidebar_bg_color @sidebar_bg_color; + @define-color secondary_sidebar_fg_color @sidebar_fg_color; + @define-color secondary_sidebar_backdrop_color @sidebar_backdrop_color; + @define-color secondary_sidebar_border_color @sidebar_border_color; + + /* Catppuccin accent colors */ + ${mkColorSection "blue_1" colors.blue} + ${mkColorSection "blue_2" colors.sapphire} + ${mkColorSection "blue_3" colors.sky} + ${mkColorSection "blue_4" colors.teal} + ${mkColorSection "blue_5" colors.lavender} + + ${mkColorSection "green_1" colors.green} + ${mkColorSection "green_2" colors.teal} + ${mkColorSection "green_3" colors.sky} + ${mkColorSection "green_4" colors.sapphire} + ${mkColorSection "green_5" colors.blue} + + ${mkColorSection "yellow_1" colors.yellow} + ${mkColorSection "yellow_2" colors.peach} + ${mkColorSection "yellow_3" colors.yellow} + ${mkColorSection "yellow_4" colors.red} + ${mkColorSection "yellow_5" colors.maroon} + + ${mkColorSection "orange_1" colors.peach} + ${mkColorSection "orange_2" colors.red} + ${mkColorSection "orange_3" colors.maroon} + ${mkColorSection "orange_4" colors.yellow} + ${mkColorSection "orange_5" colors.green} + + ${mkColorSection "red_1" colors.red} + ${mkColorSection "red_2" colors.maroon} + ${mkColorSection "red_3" colors.pink} + ${mkColorSection "red_4" colors.flamingo} + ${mkColorSection "red_5" colors.rosewater} + + ${mkColorSection "purple_1" colors.mauve} + ${mkColorSection "purple_2" colors.lavender} + ${mkColorSection "purple_3" colors.pink} + ${mkColorSection "purple_4" colors.flamingo} + ${mkColorSection "purple_5" colors.rosewater} + + ${mkColorSection "brown_1" colors.surface2} + ${mkColorSection "brown_2" colors.overlay0} + ${mkColorSection "brown_3" colors.overlay1} + ${mkColorSection "brown_4" colors.overlay2} + ${mkColorSection "brown_5" colors.subtext1} + + ${mkColorSection "light_1" colors.text} + ${mkColorSection "light_2" colors.subtext0} + ${mkColorSection "light_3" colors.subtext1} + ${mkColorSection "light_4" colors.blue} + ${mkColorSection "light_5" colors.overlay0} + + ${mkColorSection "dark_1" colors.surface0} + ${mkColorSection "dark_2" colors.surface1} + ${mkColorSection "dark_3" colors.surface2} + ${mkColorSection "dark_4" colors.mantle} + ${mkColorSection "dark_5" colors.crust} + + /* Custom rules */ + toast { + background-color: @window_bg_color; + color: @window_fg_color; + } + + toggle:checked { + background-color: @card_bg_color; + color: @window_fg_color; + } + + .inline { + background-color: rgba(0, 0, 0, 0); + } + + /* Accent */ + ${mkColorSection "accent_bg_color" colors.${config.catppuccin.accent}} + @define-color accent_fg_color @window_bg_color; + ''; +in { home.file = { ".icons/default/index.theme" = { text = '' @@ -14,6 +127,10 @@ ''; force = true; }; + ".config/gtk-4.0/gtk.css" = { + text = gtk4CSS; + force = true; + }; }; home.pointerCursor = { @@ -29,7 +146,6 @@ gtk = { enable = true; - theme.name = "GtkNix"; colorScheme = if config.userOptions.isDark @@ -67,74 +183,6 @@ }; }; - imports = [gtk-nix.homeManagerModule]; - - gtkNix = let - color = pkgs.catppuccin.bare.${config.catppuccin.flavor}; - in { - enable = true; - - configuration = { - spacing-small = "0.3em"; - spacing-medium = "0.6em"; - spacing-large = "0.9em"; - tint-weak = 0.3; - tint-medium = 0.6; - tint-strong = 0.9; - border-size = "0.2em"; - radius = "0.5em"; - disabled-opacity = 0.3; - }; - - defaultTransparency = 255; - - palette = rec { - base00 = color.base; - base01 = color.mantle; - base02 = color.surface0; - base03 = color.surface1; - base04 = color.surface2; - base05 = color.text; - base06 = color.rosewater; - base07 = color.lavender; - base08 = color.red; - base09 = color.peach; - base0A = color.yellow; - base0B = color.green; - base0C = color.teal; - base0D = color.blue; - base0E = color.mauve; - base0F = color.flamingo; - - highlight = color.${config.catppuccin.accent}; - hialt0 = color.${config.catppuccin.accent}; - hialt1 = base0E; - hialt2 = base0B; - urgent = base09; - warn = base0A; - confirm = base0D; - link = base0E; - - pfg-highlight = base00; - pfg-hialt0 = base00; - pfg-hialt1 = base00; - pfg-hialt2 = base05; - pfg-urgent = base00; - pfg-warn = base00; - pfg-confirm = base00; - pfg-link = base00; - - ansi00 = base03; - ansi01 = base09; - ansi02 = base0D; - ansi03 = base0A; - ansi04 = base0C; - ansi05 = base0E; - ansi06 = base0B; - ansi07 = base05; - }; - }; - qt = { enable = true; From 14e786684c172a7ac0d1ee7cc04e16500389da6b Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Wed, 7 Jan 2026 14:04:41 -0500 Subject: [PATCH 171/282] refactor gtk and qt themes --- flake.lock | 112 ++----------------- home/theming/default.nix | 230 +-------------------------------------- home/theming/gtk.nix | 130 ++++++++++++++++++++++ home/theming/qt.nix | 115 ++++++++++++++++++++ 4 files changed, 258 insertions(+), 329 deletions(-) create mode 100644 home/theming/gtk.nix create mode 100644 home/theming/qt.nix diff --git a/flake.lock b/flake.lock index 3a21140..37501a6 100644 --- a/flake.lock +++ b/flake.lock @@ -21,27 +21,6 @@ "type": "github" } }, - "banner": { - "inputs": { - "nixpkgs": [ - "gtk-nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1669224926, - "narHash": "sha256-UK19yx8jNqbPfBZNUeJr2Sms7BhbDAUyJBF5w2CT6Hc=", - "owner": "the-argus", - "repo": "banner.nix", - "rev": "253556f4068f5cb9728e49ac42d630cdc0ccfd58", - "type": "github" - }, - "original": { - "owner": "the-argus", - "repo": "banner.nix", - "type": "github" - } - }, "cachyos-kernel": { "flake": false, "locked": { @@ -200,44 +179,6 @@ "type": "github" } }, - "flake-utils": { - "inputs": { - "systems": "systems" - }, - "locked": { - "lastModified": 1689068808, - "narHash": "sha256-6ixXo3wt24N/melDWjq70UuHQLxGV8jZvooRanIHXw0=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "919d646de7be200f3bf08cb76ae1f09402b6f9b4", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "gtk-nix": { - "inputs": { - "banner": "banner", - "flake-utils": "flake-utils", - "nixpkgs": "nixpkgs" - }, - "locked": { - "lastModified": 1692384535, - "narHash": "sha256-lFOEsDLV7kuEAcHS7HfyGewTcdSkzTxM+l3XwGhzLgU=", - "owner": "the-argus", - "repo": "gtk-nix", - "rev": "e77b9e68aa818b87389c682b4fd018ad451a85d3", - "type": "github" - }, - "original": { - "owner": "the-argus", - "repo": "gtk-nix", - "type": "github" - } - }, "home-manager": { "inputs": { "nixpkgs": [ @@ -322,7 +263,7 @@ "cachyos-kernel-patches": "cachyos-kernel-patches", "flake-compat": "flake-compat_2", "flake-parts": "flake-parts", - "nixpkgs": "nixpkgs_2" + "nixpkgs": "nixpkgs" }, "locked": { "lastModified": 1767635460, @@ -340,17 +281,18 @@ }, "nixpkgs": { "locked": { - "lastModified": 1692264070, - "narHash": "sha256-WepAkIL2UcHOj7JJiaFS/vxrA9lklQHv8p+xGL+7oQ0=", + "lastModified": 1767593864, + "narHash": "sha256-AtzRYWSxsyvySDzfOek0lKQXoQrHtpFHbBPZ6rdQIEA=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "42c25608aa2ad4e5d3716d8d63c606063513ba33", + "rev": "1b717f421d250290b16de9a6033ea28258c46ae1", "type": "github" }, "original": { - "id": "nixpkgs", - "ref": "nixos-unstable", - "type": "indirect" + "owner": "NixOS", + "ref": "nixos-unstable-small", + "repo": "nixpkgs", + "type": "github" } }, "nixpkgs-lib": { @@ -385,22 +327,6 @@ } }, "nixpkgs_2": { - "locked": { - "lastModified": 1767593864, - "narHash": "sha256-AtzRYWSxsyvySDzfOek0lKQXoQrHtpFHbBPZ6rdQIEA=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1b717f421d250290b16de9a6033ea28258c46ae1", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable-small", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_3": { "locked": { "lastModified": 1767388185, "narHash": "sha256-bmDUBlqgpIAXQ0QFn1fWpurlc+j2sI+B5941PWsic3M=", @@ -422,7 +348,7 @@ "nixpkgs": [ "nixpkgs" ], - "systems": "systems_2" + "systems": "systems" }, "locked": { "lastModified": 1767608728, @@ -507,11 +433,10 @@ "apple-silicon": "apple-silicon", "catppuccin": "catppuccin", "catppuccin-palette": "catppuccin-palette", - "gtk-nix": "gtk-nix", "home-manager": "home-manager", "niri": "niri", "nix-cachyos-kernel": "nix-cachyos-kernel", - "nixpkgs": "nixpkgs_3", + "nixpkgs": "nixpkgs_2", "nixvim": "nixvim", "noctalia": "noctalia", "nur": "nur", @@ -524,7 +449,7 @@ "nixpkgs": [ "nixpkgs" ], - "systems": "systems_3" + "systems": "systems_2" }, "locked": { "lastModified": 1767502559, @@ -570,21 +495,6 @@ "type": "github" } }, - "systems_3": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" - } - }, "xwayland-satellite-stable": { "flake": false, "locked": { diff --git a/home/theming/default.nix b/home/theming/default.nix index 181f7ca..84949bd 100644 --- a/home/theming/default.nix +++ b/home/theming/default.nix @@ -1,122 +1,10 @@ { config, pkgs, - lib, ... -}: let - colors = pkgs.catppuccin.hex.${config.catppuccin.flavor}; +}: { + imports = [./gtk.nix ./qt.nix]; - mkColorSection = name: value: "@define-color ${name} ${value};"; - - gtk4CSS = '' - /* Catppuccin ${lib.toUpper (builtins.substring 0 1 config.catppuccin.flavor)}${builtins.substring 1 (-1) config.catppuccin.flavor} ${lib.toUpper (builtins.substring 0 1 config.catppuccin.accent)}${builtins.substring 1 (-1) config.catppuccin.accent} Palette */ - - /* Base colors */ - ${mkColorSection "window_bg_color" colors.base} - ${mkColorSection "window_fg_color" colors.text} - - /* View styling */ - ${mkColorSection "view_bg_color" colors.base} - ${mkColorSection "view_fg_color" colors.text} - - /* Header bar */ - ${mkColorSection "headerbar_bg_color" colors.mantle} - ${mkColorSection "headerbar_backdrop_color" colors.mantle} - ${mkColorSection "headerbar_fg_color" colors.text} - - /* Popovers and dialogs */ - ${mkColorSection "popover_bg_color" colors.base} - ${mkColorSection "popover_fg_color" colors.text} - @define-color dialog_bg_color @popover_bg_color; - @define-color dialog_fg_color @popover_fg_color; - - /* Cards and sidebars */ - ${mkColorSection "card_bg_color" colors.mantle} - ${mkColorSection "card_fg_color" colors.text} - ${mkColorSection "sidebar_bg_color" colors.mantle} - ${mkColorSection "sidebar_fg_color" colors.text} - @define-color sidebar_backdrop_color @sidebar_bg_color; - ${mkColorSection "sidebar_border_color" colors.surface0} - @define-color secondary_sidebar_bg_color @sidebar_bg_color; - @define-color secondary_sidebar_fg_color @sidebar_fg_color; - @define-color secondary_sidebar_backdrop_color @sidebar_backdrop_color; - @define-color secondary_sidebar_border_color @sidebar_border_color; - - /* Catppuccin accent colors */ - ${mkColorSection "blue_1" colors.blue} - ${mkColorSection "blue_2" colors.sapphire} - ${mkColorSection "blue_3" colors.sky} - ${mkColorSection "blue_4" colors.teal} - ${mkColorSection "blue_5" colors.lavender} - - ${mkColorSection "green_1" colors.green} - ${mkColorSection "green_2" colors.teal} - ${mkColorSection "green_3" colors.sky} - ${mkColorSection "green_4" colors.sapphire} - ${mkColorSection "green_5" colors.blue} - - ${mkColorSection "yellow_1" colors.yellow} - ${mkColorSection "yellow_2" colors.peach} - ${mkColorSection "yellow_3" colors.yellow} - ${mkColorSection "yellow_4" colors.red} - ${mkColorSection "yellow_5" colors.maroon} - - ${mkColorSection "orange_1" colors.peach} - ${mkColorSection "orange_2" colors.red} - ${mkColorSection "orange_3" colors.maroon} - ${mkColorSection "orange_4" colors.yellow} - ${mkColorSection "orange_5" colors.green} - - ${mkColorSection "red_1" colors.red} - ${mkColorSection "red_2" colors.maroon} - ${mkColorSection "red_3" colors.pink} - ${mkColorSection "red_4" colors.flamingo} - ${mkColorSection "red_5" colors.rosewater} - - ${mkColorSection "purple_1" colors.mauve} - ${mkColorSection "purple_2" colors.lavender} - ${mkColorSection "purple_3" colors.pink} - ${mkColorSection "purple_4" colors.flamingo} - ${mkColorSection "purple_5" colors.rosewater} - - ${mkColorSection "brown_1" colors.surface2} - ${mkColorSection "brown_2" colors.overlay0} - ${mkColorSection "brown_3" colors.overlay1} - ${mkColorSection "brown_4" colors.overlay2} - ${mkColorSection "brown_5" colors.subtext1} - - ${mkColorSection "light_1" colors.text} - ${mkColorSection "light_2" colors.subtext0} - ${mkColorSection "light_3" colors.subtext1} - ${mkColorSection "light_4" colors.blue} - ${mkColorSection "light_5" colors.overlay0} - - ${mkColorSection "dark_1" colors.surface0} - ${mkColorSection "dark_2" colors.surface1} - ${mkColorSection "dark_3" colors.surface2} - ${mkColorSection "dark_4" colors.mantle} - ${mkColorSection "dark_5" colors.crust} - - /* Custom rules */ - toast { - background-color: @window_bg_color; - color: @window_fg_color; - } - - toggle:checked { - background-color: @card_bg_color; - color: @window_fg_color; - } - - .inline { - background-color: rgba(0, 0, 0, 0); - } - - /* Accent */ - ${mkColorSection "accent_bg_color" colors.${config.catppuccin.accent}} - @define-color accent_fg_color @window_bg_color; - ''; -in { home.file = { ".icons/default/index.theme" = { text = '' @@ -127,10 +15,6 @@ in { ''; force = true; }; - ".config/gtk-4.0/gtk.css" = { - text = gtk4CSS; - force = true; - }; }; home.pointerCursor = { @@ -182,114 +66,4 @@ in { gtk-application-prefer-dark-theme = true; }; }; - - qt = { - enable = true; - - qt5ctSettings = { - Appearance = { - style = "Breeze"; - icon_theme = config.gtk.iconTheme.name; - color_scheme_path = "/home/${config.userOptions.username}/.config/qt5ct/qt5ct.conf"; - custom_palette = true; - standard_dialogs = "xdgdesktopportal"; - }; - Fonts = config.qt.qt6ctSettings.Fonts; - ColorScheme = config.qt.qt6ctSettings.ColorScheme; - }; - - qt6ctSettings = { - Appearance = { - style = "Breeze"; - icon_theme = config.gtk.iconTheme.name; - color_scheme_path = "/home/${config.userOptions.username}/.config/qt6ct/qt6ct.conf"; - custom_palette = true; - standard_dialogs = "xdgdesktopportal"; - }; - - Fonts = { - fixed = "\"${config.userOptions.fontMono.name},${toString config.userOptions.fontMono.size}\""; - general = "\"${config.userOptions.fontSans.name},${toString config.userOptions.fontSans.size}\""; - }; - - ColorScheme = let - c = pkgs.catppuccin.bare.${config.catppuccin.flavor}; - accent = c.${config.catppuccin.accent}; - mkColors = roles: builtins.concatStringsSep ", " (map (r: "#ff${r}") roles); - in { - active_colors = mkColors [ - c.text - c.surface0 - c.surface1 - c.surface0 - c.base - c.mantle - c.text - c.text - c.text - c.base - c.mantle - c.crust - accent - c.base - accent - c.mauve - c.mantle - "000000" - c.base - c.text - c.overlay0 - accent - ]; - disabled_colors = mkColors [ - c.overlay0 - c.surface0 - c.surface1 - c.surface0 - c.overlay0 - c.mantle - c.overlay0 - c.text - c.overlay0 - c.surface0 - c.surface0 - c.mantle - c.overlay1 - c.text - "0000ff" - "ff00ff" - c.surface0 - "000000" - c.surface0 - c.base - "80000000" - c.overlay1 - ]; - inactive_colors = mkColors [ - c.text - c.surface0 - c.surface1 - c.surface0 - c.base - c.mantle - c.text - c.text - c.text - c.base - c.mantle - c.crust - accent - c.base - accent - c.mauve - c.mantle - "000000" - c.base - c.text - c.overlay0 - accent - ]; - }; - }; - }; } diff --git a/home/theming/gtk.nix b/home/theming/gtk.nix new file mode 100644 index 0000000..7979844 --- /dev/null +++ b/home/theming/gtk.nix @@ -0,0 +1,130 @@ +{ + config, + pkgs, + lib, + ... +}: let + colors = pkgs.catppuccin.hex.${config.catppuccin.flavor}; + + mkColorSection = name: value: "@define-color ${name} ${value};"; + + generateCSS = '' + /* Catppuccin ${lib.toUpper (builtins.substring 0 1 config.catppuccin.flavor)}${builtins.substring 1 (-1) config.catppuccin.flavor} ${lib.toUpper (builtins.substring 0 1 config.catppuccin.accent)}${builtins.substring 1 (-1) config.catppuccin.accent} Palette */ + + /* Base colors */ + ${mkColorSection "window_bg_color" colors.base} + ${mkColorSection "window_fg_color" colors.text} + + /* View styling */ + ${mkColorSection "view_bg_color" colors.base} + ${mkColorSection "view_fg_color" colors.text} + + /* Header bar */ + ${mkColorSection "headerbar_bg_color" colors.mantle} + ${mkColorSection "headerbar_backdrop_color" colors.mantle} + ${mkColorSection "headerbar_fg_color" colors.text} + + /* Popovers and dialogs */ + ${mkColorSection "popover_bg_color" colors.base} + ${mkColorSection "popover_fg_color" colors.text} + @define-color dialog_bg_color @popover_bg_color; + @define-color dialog_fg_color @popover_fg_color; + + /* Cards and sidebars */ + ${mkColorSection "card_bg_color" colors.mantle} + ${mkColorSection "card_fg_color" colors.text} + ${mkColorSection "sidebar_bg_color" colors.mantle} + ${mkColorSection "sidebar_fg_color" colors.text} + @define-color sidebar_backdrop_color @sidebar_bg_color; + ${mkColorSection "sidebar_border_color" colors.surface0} + @define-color secondary_sidebar_bg_color @sidebar_bg_color; + @define-color secondary_sidebar_fg_color @sidebar_fg_color; + @define-color secondary_sidebar_backdrop_color @sidebar_backdrop_color; + @define-color secondary_sidebar_border_color @sidebar_border_color; + + /* Catppuccin accent colors */ + ${mkColorSection "blue_1" colors.blue} + ${mkColorSection "blue_2" colors.sapphire} + ${mkColorSection "blue_3" colors.sky} + ${mkColorSection "blue_4" colors.teal} + ${mkColorSection "blue_5" colors.lavender} + + ${mkColorSection "green_1" colors.green} + ${mkColorSection "green_2" colors.teal} + ${mkColorSection "green_3" colors.sky} + ${mkColorSection "green_4" colors.sapphire} + ${mkColorSection "green_5" colors.blue} + + ${mkColorSection "yellow_1" colors.yellow} + ${mkColorSection "yellow_2" colors.peach} + ${mkColorSection "yellow_3" colors.yellow} + ${mkColorSection "yellow_4" colors.red} + ${mkColorSection "yellow_5" colors.maroon} + + ${mkColorSection "orange_1" colors.peach} + ${mkColorSection "orange_2" colors.red} + ${mkColorSection "orange_3" colors.maroon} + ${mkColorSection "orange_4" colors.yellow} + ${mkColorSection "orange_5" colors.green} + + ${mkColorSection "red_1" colors.red} + ${mkColorSection "red_2" colors.maroon} + ${mkColorSection "red_3" colors.pink} + ${mkColorSection "red_4" colors.flamingo} + ${mkColorSection "red_5" colors.rosewater} + + ${mkColorSection "purple_1" colors.mauve} + ${mkColorSection "purple_2" colors.lavender} + ${mkColorSection "purple_3" colors.pink} + ${mkColorSection "purple_4" colors.flamingo} + ${mkColorSection "purple_5" colors.rosewater} + + ${mkColorSection "brown_1" colors.surface2} + ${mkColorSection "brown_2" colors.overlay0} + ${mkColorSection "brown_3" colors.overlay1} + ${mkColorSection "brown_4" colors.overlay2} + ${mkColorSection "brown_5" colors.subtext1} + + ${mkColorSection "light_1" colors.text} + ${mkColorSection "light_2" colors.subtext0} + ${mkColorSection "light_3" colors.subtext1} + ${mkColorSection "light_4" colors.blue} + ${mkColorSection "light_5" colors.overlay0} + + ${mkColorSection "dark_1" colors.surface0} + ${mkColorSection "dark_2" colors.surface1} + ${mkColorSection "dark_3" colors.surface2} + ${mkColorSection "dark_4" colors.mantle} + ${mkColorSection "dark_5" colors.crust} + + /* Custom rules */ + toast { + background-color: @window_bg_color; + color: @window_fg_color; + } + + toggle:checked { + background-color: @card_bg_color; + color: @window_fg_color; + } + + .inline { + background-color: rgba(0, 0, 0, 0); + } + + /* Accent */ + ${mkColorSection "accent_bg_color" colors.${config.catppuccin.accent}} + @define-color accent_fg_color @window_bg_color; + ''; +in { + home.file = { + ".config/gtk-4.0/gtk.css" = { + text = generateCSS; + force = true; + }; + ".config/gtk-3.0/gtk.css" = { + text = generateCSS; + force = true; + }; + }; +} diff --git a/home/theming/qt.nix b/home/theming/qt.nix new file mode 100644 index 0000000..b5626a2 --- /dev/null +++ b/home/theming/qt.nix @@ -0,0 +1,115 @@ +{ + config, + pkgs, + ... +}: { + qt = { + enable = true; + + qt5ctSettings = { + Appearance = { + style = "Breeze"; + icon_theme = config.gtk.iconTheme.name; + color_scheme_path = "/home/${config.userOptions.username}/.config/qt5ct/qt5ct.conf"; + custom_palette = true; + standard_dialogs = "xdgdesktopportal"; + }; + Fonts = config.qt.qt6ctSettings.Fonts; + ColorScheme = config.qt.qt6ctSettings.ColorScheme; + }; + + qt6ctSettings = { + Appearance = { + style = "Breeze"; + icon_theme = config.gtk.iconTheme.name; + color_scheme_path = "/home/${config.userOptions.username}/.config/qt6ct/qt6ct.conf"; + custom_palette = true; + standard_dialogs = "xdgdesktopportal"; + }; + + Fonts = { + fixed = "\"${config.userOptions.fontMono.name},${toString config.userOptions.fontMono.size}\""; + general = "\"${config.userOptions.fontSans.name},${toString config.userOptions.fontSans.size}\""; + }; + + ColorScheme = let + c = pkgs.catppuccin.bare.${config.catppuccin.flavor}; + accent = c.${config.catppuccin.accent}; + mkColors = roles: builtins.concatStringsSep ", " (map (r: "#ff${r}") roles); + in { + active_colors = mkColors [ + c.text + c.surface0 + c.surface1 + c.surface0 + c.base + c.mantle + c.text + c.text + c.text + c.base + c.mantle + c.crust + accent + c.base + accent + c.mauve + c.mantle + "000000" + c.base + c.text + c.overlay0 + accent + ]; + disabled_colors = mkColors [ + c.overlay0 + c.surface0 + c.surface1 + c.surface0 + c.overlay0 + c.mantle + c.overlay0 + c.text + c.overlay0 + c.surface0 + c.surface0 + c.mantle + c.overlay1 + c.text + "0000ff" + "ff00ff" + c.surface0 + "000000" + c.surface0 + c.base + "80000000" + c.overlay1 + ]; + inactive_colors = mkColors [ + c.text + c.surface0 + c.surface1 + c.surface0 + c.base + c.mantle + c.text + c.text + c.text + c.base + c.mantle + c.crust + accent + c.base + accent + c.mauve + c.mantle + "000000" + c.base + c.text + c.overlay0 + accent + ]; + }; + }; + }; +} From c2c17b115e179808a1c00bc9370cba3a2fb53a7e Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Wed, 7 Jan 2026 19:41:09 -0500 Subject: [PATCH 172/282] changes --- home/default.nix | 1 + home/tiling/niri/niri.nix | 11 +++++++++++ 2 files changed, 12 insertions(+) diff --git a/home/default.nix b/home/default.nix index d63664e..a53fc0a 100755 --- a/home/default.nix +++ b/home/default.nix @@ -173,6 +173,7 @@ bitwarden-desktop qbittorrent whatsapp-electron + nautilus # gui applications ( multimedia ) audacity diff --git a/home/tiling/niri/niri.nix b/home/tiling/niri/niri.nix index 66f5a7b..8ebc1c1 100644 --- a/home/tiling/niri/niri.nix +++ b/home/tiling/niri/niri.nix @@ -133,6 +133,16 @@ open-maximized = true; open-focused = true; } + { + matches = [ + { + app-id = "mpv"; + } + ]; + border.enable = false; + border.width = 0; + shadow.enable = false; + } ]; binds = { "Mod+Shift+Slash".action.show-hotkey-overlay = {}; @@ -362,6 +372,7 @@ "Mod+Ctrl+R".action.reset-window-height = {}; "Mod+F".action.maximize-column = {}; "Mod+Shift+F".action.maximize-window-to-edges = {}; + "Mod+Ctrl+Shift+F".action.fullscreen-window = {}; "Mod+Ctrl+F".action.expand-column-to-available-width = {}; From 31ad5c61edd4dd654bc00c2fdc41497bb2608d1f Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Wed, 7 Jan 2026 20:37:02 -0500 Subject: [PATCH 173/282] update flake --- flake.lock | 80 +++++++++++++++++++++++++++--------------------------- flake.nix | 3 +- 2 files changed, 41 insertions(+), 42 deletions(-) diff --git a/flake.lock b/flake.lock index 37501a6..2c5578b 100644 --- a/flake.lock +++ b/flake.lock @@ -8,11 +8,11 @@ ] }, "locked": { - "lastModified": 1767465220, - "narHash": "sha256-P5qVna7ptT0BPQI6EesszfK25znFNpR9xiEJpqheo0M=", + "lastModified": 1767637567, + "narHash": "sha256-njwPfL5gM/KRGLJ29CbQ4nLBoEkNPMvEHBAAPOP8BZc=", "owner": "nix-community", "repo": "nixos-apple-silicon", - "rev": "b6e97a42d409155bc70f2d211ab1029338a37523", + "rev": "530aa73aa9a21a078ff861b84767ae1d469715fa", "type": "github" }, "original": { @@ -60,11 +60,11 @@ ] }, "locked": { - "lastModified": 1767517218, - "narHash": "sha256-Lqr37iyfrfAfCYPV21uyg+81qOJGu50ymIXT6gEtKO8=", + "lastModified": 1767750947, + "narHash": "sha256-zqe9esphlAFu19TGL/nAyOHyOiR+Vu8M2IWWLg9cm4U=", "owner": "catppuccin", "repo": "nix", - "rev": "fc247adb17ffd0b76d67b2da12a9e3fe059ccd29", + "rev": "e7135074fe2a3d17bee3c229b5a7d3da26f76ce8", "type": "github" }, "original": { @@ -186,11 +186,11 @@ ] }, "locked": { - "lastModified": 1767619743, - "narHash": "sha256-N0kK1JqxIjFl7hPAfhkW6C9AO7feYJUWLPyqJO2VuQQ=", + "lastModified": 1767898632, + "narHash": "sha256-ZpkiMJahNh5Xo1Lqxy2e2SEwyhWDwxrlv4zUO99OIrc=", "owner": "nix-community", "repo": "home-manager", - "rev": "a65c04965c841eb01ba401f5162f12bc8d52014f", + "rev": "40deed4ffe019874309b3eef429e4830346b0aa9", "type": "github" }, "original": { @@ -211,11 +211,11 @@ "xwayland-satellite-unstable": "xwayland-satellite-unstable" }, "locked": { - "lastModified": 1767624540, - "narHash": "sha256-A53/9fnu/40wo6T2MF3lm07zD7N+cC0E5QEYFfFLGwA=", + "lastModified": 1767833217, + "narHash": "sha256-HLr9k8g1Geq40PLsNw7I5N8TZkBYtQVjkgDPV/Kehxk=", "owner": "sodiboo", "repo": "niri-flake", - "rev": "62e47d55c0f8bc9cd5413b94134867d970e5e296", + "rev": "a789aa1512a9157d5d3392b27e60621fd0d83438", "type": "github" }, "original": { @@ -244,11 +244,11 @@ "niri-unstable": { "flake": false, "locked": { - "lastModified": 1767598098, - "narHash": "sha256-IyH3zaCT2JZ6fdY4vKlUz2RbDdxaryvSZWUVixKYrKM=", + "lastModified": 1767792726, + "narHash": "sha256-qS4tdG2iUQwSld9dTH1gk8GcIOrRi9umMgPv8MGDIA0=", "owner": "YaLTeR", "repo": "niri", - "rev": "b7eb8a635b7f75705808eaed85c016f02ae4fd2d", + "rev": "10df9f4717cbd4efd20ae796eb6b0aa400127bdc", "type": "github" }, "original": { @@ -266,11 +266,11 @@ "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1767635460, - "narHash": "sha256-r2hPm5+gcsiQ9zVHQAAoyC2D73CWJSx9occ3AlInDuY=", + "lastModified": 1767894902, + "narHash": "sha256-vY1fChRR3ed/nYCV2F8fgFP3yvohMhDWFtBU1YDc0m0=", "owner": "xddxdd", "repo": "nix-cachyos-kernel", - "rev": "2da83b3ee8f80d8965fd82d468aeda512b337b24", + "rev": "800ee8ae8d7e16e1801b56dda5e0cc90f4136882", "type": "github" }, "original": { @@ -281,11 +281,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1767593864, - "narHash": "sha256-AtzRYWSxsyvySDzfOek0lKQXoQrHtpFHbBPZ6rdQIEA=", + "lastModified": 1767870855, + "narHash": "sha256-3nwdl4qmXUBn0S44dzTbNKp4uaRUwtZ2MGE70o09Z8w=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "1b717f421d250290b16de9a6033ea28258c46ae1", + "rev": "719f19e8e447a52152aee8061c7a2951f9254f14", "type": "github" }, "original": { @@ -312,11 +312,11 @@ }, "nixpkgs-stable": { "locked": { - "lastModified": 1767480499, - "narHash": "sha256-8IQQUorUGiSmFaPnLSo2+T+rjHtiNWc+OAzeHck7N48=", + "lastModified": 1767799921, + "narHash": "sha256-r4GVX+FToWVE2My8VVZH4V0pTIpnu2ZE8/Z4uxGEMBE=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "30a3c519afcf3f99e2c6df3b359aec5692054d92", + "rev": "d351d0653aeb7877273920cd3e823994e7579b0b", "type": "github" }, "original": { @@ -328,16 +328,16 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1767388185, - "narHash": "sha256-bmDUBlqgpIAXQ0QFn1fWpurlc+j2sI+B5941PWsic3M=", + "lastModified": 1767767207, + "narHash": "sha256-Mj3d3PfwltLmukFal5i3fFt27L6NiKXdBezC1EBuZs4=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "2e21f6c5797fcccfc1e8eced873aea8401a71135", + "rev": "5912c1772a44e31bf1c63c0390b90501e5026886", "type": "github" }, "original": { "owner": "NixOS", - "ref": "pull/476347/head", + "ref": "nixos-unstable", "repo": "nixpkgs", "type": "github" } @@ -371,11 +371,11 @@ ] }, "locked": { - "lastModified": 1767634566, - "narHash": "sha256-wJqLoHSWziILcNXVPcvVH6/vgXtnsRXJaVReWoOlR4o=", + "lastModified": 1767896666, + "narHash": "sha256-JJO/jmdOs1v5YSbNrxBUAdDKmNioFcK5BLV1XBM3EFA=", "owner": "noctalia-dev", "repo": "noctalia-shell", - "rev": "e004128727739f8f40455e06a3d3719d53e09830", + "rev": "300cc38cff3538c70776e62de16107ffcd01bdf4", "type": "github" }, "original": { @@ -392,11 +392,11 @@ ] }, "locked": { - "lastModified": 1767635057, - "narHash": "sha256-iXt6KFaN9jRqTvSvif8nQn47qeHII5rFTmt2V7eLiXc=", + "lastModified": 1767895966, + "narHash": "sha256-TCwEuNAuZMcF1b36yikn37mzXE6ef+FtAhZ8DSOJO8U=", "owner": "nix-community", "repo": "NUR", - "rev": "5d4701842f525a649bc1c5805c56b106f07d2cab", + "rev": "927ccd5313844ba2b0fdb1c6e1de889ea175c3b0", "type": "github" }, "original": { @@ -415,11 +415,11 @@ ] }, "locked": { - "lastModified": 1763909441, - "narHash": "sha256-56LwV51TX/FhgX+5LCG6akQ5KrOWuKgcJa+eUsRMxsc=", + "lastModified": 1767662275, + "narHash": "sha256-d5Q1GmQ+sW1Bt8cgDE0vOihzLaswsm8cSdg8124EqXE=", "owner": "nix-community", "repo": "plasma-manager", - "rev": "b24ed4b272256dfc1cc2291f89a9821d5f9e14b4", + "rev": "51816be33a1ff0d4b22427de83222d5bfa96d30e", "type": "github" }, "original": { @@ -515,11 +515,11 @@ "xwayland-satellite-unstable": { "flake": false, "locked": { - "lastModified": 1766429945, - "narHash": "sha256-9Kv4gWagx/u4RfZJzBMAoagW9ava5waxd+XoTkzqF7E=", + "lastModified": 1767830382, + "narHash": "sha256-0PgS7M1SV6JCN3MugFZPaP8J+Mr2o7lSDFTPVYZSIAY=", "owner": "Supreeeme", "repo": "xwayland-satellite", - "rev": "0dde7ca1d3a8e8c5082533d76084e2aa02bef70e", + "rev": "74cf1a95a35fd7aec76432bc2cd9b310e0d908c5", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index c390fa8..cc4733f 100644 --- a/flake.nix +++ b/flake.nix @@ -2,8 +2,7 @@ description = "My NixOS Configuration"; inputs = { - # https://github.com/NixOS/nixpkgs/issues/476669 - nixpkgs.url = "github:NixOS/nixpkgs/pull/476347/head"; + nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; nix-cachyos-kernel.url = "github:xddxdd/nix-cachyos-kernel"; From fbafd8241f1092d200e8bb2408d1a5c5c8493fb2 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Thu, 8 Jan 2026 14:59:26 -0500 Subject: [PATCH 174/282] pin to 25.11 --- flake.lock | 111 +++++++++++++++++++++++++++++---- flake.nix | 6 +- home/terminal/nvim/default.nix | 20 ------ 3 files changed, 102 insertions(+), 35 deletions(-) diff --git a/flake.lock b/flake.lock index 2c5578b..09248a8 100644 --- a/flake.lock +++ b/flake.lock @@ -179,6 +179,24 @@ "type": "github" } }, + "flake-utils": { + "inputs": { + "systems": "systems" + }, + "locked": { + "lastModified": 1731533236, + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, "home-manager": { "inputs": { "nixpkgs": [ @@ -186,19 +204,48 @@ ] }, "locked": { - "lastModified": 1767898632, - "narHash": "sha256-ZpkiMJahNh5Xo1Lqxy2e2SEwyhWDwxrlv4zUO99OIrc=", + "lastModified": 1767850628, + "narHash": "sha256-D3QzdIT11J66I4mzwmIpAGLzPAcbCS2VaKN8fmOe6+E=", "owner": "nix-community", "repo": "home-manager", - "rev": "40deed4ffe019874309b3eef429e4830346b0aa9", + "rev": "8c8a16d41353a174767c38b962359b51a56ca02e", "type": "github" }, "original": { "owner": "nix-community", + "ref": "release-25.11", "repo": "home-manager", "type": "github" } }, + "ixx": { + "inputs": { + "flake-utils": [ + "nixvim", + "nuschtosSearch", + "flake-utils" + ], + "nixpkgs": [ + "nixvim", + "nuschtosSearch", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1754860581, + "narHash": "sha256-EM0IE63OHxXCOpDHXaTyHIOk2cNvMCGPqLt/IdtVxgk=", + "owner": "NuschtOS", + "repo": "ixx", + "rev": "babfe85a876162c4acc9ab6fb4483df88fa1f281", + "type": "github" + }, + "original": { + "owner": "NuschtOS", + "ref": "v0.1.1", + "repo": "ixx", + "type": "github" + } + }, "niri": { "inputs": { "niri-stable": "niri-stable", @@ -328,16 +375,16 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1767767207, - "narHash": "sha256-Mj3d3PfwltLmukFal5i3fFt27L6NiKXdBezC1EBuZs4=", + "lastModified": 1767799921, + "narHash": "sha256-r4GVX+FToWVE2My8VVZH4V0pTIpnu2ZE8/Z4uxGEMBE=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "5912c1772a44e31bf1c63c0390b90501e5026886", + "rev": "d351d0653aeb7877273920cd3e823994e7579b0b", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixos-unstable", + "ref": "nixos-25.11", "repo": "nixpkgs", "type": "github" } @@ -348,18 +395,20 @@ "nixpkgs": [ "nixpkgs" ], - "systems": "systems" + "nuschtosSearch": "nuschtosSearch", + "systems": "systems_2" }, "locked": { - "lastModified": 1767608728, - "narHash": "sha256-kmSJCTgrx+BxgqQOTPHAOkohvO+lbRsPWqu+PSPcz3I=", + "lastModified": 1767448089, + "narHash": "sha256-U1fHsZBnFrUil731NHD9Sg5HoiG+eSHau8OFuClhwW0=", "owner": "nix-community", "repo": "nixvim", - "rev": "851399eebd0fb383d2fd76269d859f16021dc7a8", + "rev": "983751b66f255bbea1adc185364e9e7b73f82358", "type": "github" }, "original": { "owner": "nix-community", + "ref": "nixos-25.11", "repo": "nixvim", "type": "github" } @@ -405,6 +454,29 @@ "type": "github" } }, + "nuschtosSearch": { + "inputs": { + "flake-utils": "flake-utils", + "ixx": "ixx", + "nixpkgs": [ + "nixvim", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1761730856, + "narHash": "sha256-t1i5p/vSWwueZSC0Z2BImxx3BjoUDNKyC2mk24krcMY=", + "owner": "NuschtOS", + "repo": "search", + "rev": "e29de6db0cb3182e9aee75a3b1fd1919d995d85b", + "type": "github" + }, + "original": { + "owner": "NuschtOS", + "repo": "search", + "type": "github" + } + }, "plasma-manager": { "inputs": { "home-manager": [ @@ -449,7 +521,7 @@ "nixpkgs": [ "nixpkgs" ], - "systems": "systems_2" + "systems": "systems_3" }, "locked": { "lastModified": 1767502559, @@ -495,6 +567,21 @@ "type": "github" } }, + "systems_3": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, "xwayland-satellite-stable": { "flake": false, "locked": { diff --git a/flake.nix b/flake.nix index cc4733f..7884e0e 100644 --- a/flake.nix +++ b/flake.nix @@ -2,7 +2,7 @@ description = "My NixOS Configuration"; inputs = { - nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; + nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.11"; nix-cachyos-kernel.url = "github:xddxdd/nix-cachyos-kernel"; @@ -16,7 +16,7 @@ }; home-manager = { - url = "github:nix-community/home-manager"; + url = "github:nix-community/home-manager/release-25.11"; inputs.nixpkgs.follows = "nixpkgs"; }; @@ -47,7 +47,7 @@ }; nixvim = { - url = "github:nix-community/nixvim"; + url = "github:nix-community/nixvim/nixos-25.11"; inputs.nixpkgs.follows = "nixpkgs"; }; diff --git a/home/terminal/nvim/default.nix b/home/terminal/nvim/default.nix index d2183db..0022906 100644 --- a/home/terminal/nvim/default.nix +++ b/home/terminal/nvim/default.nix @@ -128,26 +128,6 @@ } ]; }; - window = { - completion = { - border = "solid"; - }; - documentation = { - border = "solid"; - }; - }; - - mapping = { - "" = "cmp.mapping(cmp.mapping.select_next_item(), {'i', 's'})"; - "" = "cmp.mapping.select_next_item()"; - "" = "cmp.mapping.select_prev_item()"; - "" = "cmp.mapping.abort()"; - "" = "cmp.mapping.scroll_docs(-4)"; - "" = "cmp.mapping.scroll_docs(4)"; - "" = "cmp.mapping.complete()"; - "" = "cmp.mapping.confirm({ select = true })"; - "" = "cmp.mapping.confirm({ behavior = cmp.ConfirmBehavior.Replace, select = true })"; - }; }; conform-nvim = { enable = true; From 5f6a7276b59c35e9083c1de1cb17ceb89ec90659 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Fri, 9 Jan 2026 15:04:51 -0500 Subject: [PATCH 175/282] changes --- home/hosts/{vm => vm-generic}/default.nix | 0 home/tiling/niri/niri.nix | 4 +--- home/tiling/niri/noctalia.nix | 2 +- 3 files changed, 2 insertions(+), 4 deletions(-) rename home/hosts/{vm => vm-generic}/default.nix (100%) diff --git a/home/hosts/vm/default.nix b/home/hosts/vm-generic/default.nix similarity index 100% rename from home/hosts/vm/default.nix rename to home/hosts/vm-generic/default.nix diff --git a/home/tiling/niri/niri.nix b/home/tiling/niri/niri.nix index 8ebc1c1..282ac9a 100644 --- a/home/tiling/niri/niri.nix +++ b/home/tiling/niri/niri.nix @@ -139,9 +139,7 @@ app-id = "mpv"; } ]; - border.enable = false; - border.width = 0; - shadow.enable = false; + border.active.color = pkgs.catppuccin.${config.catppuccin.flavor}.surface1; } ]; binds = { diff --git a/home/tiling/niri/noctalia.nix b/home/tiling/niri/noctalia.nix index 8cbe85d..35a3581 100644 --- a/home/tiling/niri/noctalia.nix +++ b/home/tiling/niri/noctalia.nix @@ -93,7 +93,7 @@ in { position = "top"; backgroundOpacity = 1; monitors = []; - density = "spacious"; + density = "comfortable"; showCapsule = true; capsuleOpacity = 1; floating = false; From bdc3d0522756a02f087e9257b39a081dcd3dc62d Mon Sep 17 00:00:00 2001 From: sckova Date: Sun, 11 Jan 2026 15:15:41 -0500 Subject: [PATCH 176/282] remove spotifyd overlay --- packages/overlay.nix | 18 -------- packages/spotifyd/package.nix | 87 ----------------------------------- 2 files changed, 105 deletions(-) delete mode 100644 packages/spotifyd/package.nix diff --git a/packages/overlay.nix b/packages/overlay.nix index 3dee279..3c96b06 100644 --- a/packages/overlay.nix +++ b/packages/overlay.nix @@ -1,21 +1,3 @@ final: prev: { - widevine-helium = - if prev.stdenv.hostPlatform.system == "aarch64-linux" - then prev.callPackage ./helium-browser/widevine-aarch64-linux.nix {} - else null; - - # helium-browser = - # prev.callPackage - # (builtins.path { - # path = ./helium-browser/package.nix; - # }) - # { - # helium-widevine = prev.callPackage (builtins.path { - # path = ./helium-browser/widevine-aarch64-linux.nix; - # }) { }; - # }; - spotify-webapp = prev.callPackage (builtins.path {path = ./spotify/package.nix;}) {}; - - spotifyd = prev.callPackage (builtins.path {path = ./spotifyd/package.nix;}) {}; } diff --git a/packages/spotifyd/package.nix b/packages/spotifyd/package.nix deleted file mode 100644 index 88adf6a..0000000 --- a/packages/spotifyd/package.nix +++ /dev/null @@ -1,87 +0,0 @@ -{ - lib, - stdenv, - config, - alsa-lib, - cmake, - dbus, - fetchFromGitHub, - libjack2, - libpulseaudio, - nix-update-script, - openssl, - pkg-config, - portaudio, - rustPlatform, - testers, - withALSA ? stdenv.hostPlatform.isLinux, - withJack ? stdenv.hostPlatform.isLinux, - withMpris ? stdenv.hostPlatform.isLinux, - withPortAudio ? stdenv.hostPlatform.isDarwin, - withPulseAudio ? config.pulseaudio or stdenv.hostPlatform.isLinux, -}: -rustPlatform.buildRustPackage (finalAttrs: { - pname = "spotifyd"; - version = "0.4.2"; - - src = fetchFromGitHub { - owner = "Spotifyd"; - repo = "spotifyd"; - tag = "v${finalAttrs.version}"; - hash = "sha256-+t6z2cenw0fU5onl5F5vtk7Hr24IzTCAee+Lcnd7aT4="; - }; - - cargoHash = "sha256-rv4FWyciv6vDKtD7moJppY3tOJb0B3ezE9HgCLNhIo8="; - - nativeBuildInputs = [ - cmake - pkg-config - rustPlatform.bindgenHook - ]; - - buildInputs = - lib.optionals stdenv.hostPlatform.isLinux [openssl] - # The `dbus_mpris` feature works on other platforms, but only requires `dbus` on Linux - ++ lib.optional (withMpris && stdenv.hostPlatform.isLinux) dbus - ++ lib.optional (withALSA || withJack) alsa-lib - ++ lib.optional withJack libjack2 - ++ lib.optional withPulseAudio libpulseaudio - ++ lib.optional withPortAudio portaudio; - - # `aws-lc-sys` fails with this enabled - hardeningDisable = ["strictoverflow"]; - - buildNoDefaultFeatures = true; - buildFeatures = - lib.optional withALSA "alsa_backend" - ++ lib.optional withJack "rodiojack_backend" - ++ lib.optional withMpris "dbus_mpris" - ++ lib.optional withPortAudio "portaudio_backend" - ++ lib.optional withPulseAudio "pulseaudio_backend"; - - checkFlags = lib.optionals stdenv.hostPlatform.isDarwin [ - # `assertion failed: shell.is_some()` - # Internally it's trying to query the user's shell through `dscl`. This is bad - # https://github.com/Spotifyd/spotifyd/blob/8777c67988508d3623d3f6b81c9379fb071ac7dd/src/utils.rs#L45-L47 - "--skip=utils::tests::test_ffi_discovery" - ]; - - passthru = { - tests.version = testers.testVersion {package = finalAttrs.finalPackage;}; - updateScript = nix-update-script {}; - }; - - meta = { - description = "Open source Spotify client running as a UNIX daemon"; - homepage = "https://spotifyd.rs/"; - changelog = "https://github.com/Spotifyd/spotifyd/releases/tag/${toString finalAttrs.src.tag}"; - license = lib.licenses.gpl3Plus; - maintainers = with lib.maintainers; [ - anderslundstedt - Br1ght0ne - getchoo - ]; - platforms = lib.platforms.unix; - mainProgram = "spotifyd"; - }; -}) From 6f2f3c19fb1684a466308014694fac90e414de6c Mon Sep 17 00:00:00 2001 From: sckova Date: Sun, 11 Jan 2026 15:23:27 -0500 Subject: [PATCH 177/282] changes --- home/terminal/fish/functions/fish-prompt.fish | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/home/terminal/fish/functions/fish-prompt.fish b/home/terminal/fish/functions/fish-prompt.fish index 09d3ae9..e41395a 100644 --- a/home/terminal/fish/functions/fish-prompt.fish +++ b/home/terminal/fish/functions/fish-prompt.fish @@ -14,9 +14,9 @@ if test (hostname) = peach set -g color_host $color_peach else if test (hostname) = alien set -g color_host $color_blue -else if test (hostname) = vm-aarch64 +else if test (hostname) = vm set -g color_host $color_green - set -g color_cwd $color_red + set -g color_cwd normal else if test (uname) = Darwin set -g color_host $color_yellow end From 3fd51428c3933da5fa300f22a8c2dfc064693015 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Tue, 13 Jan 2026 13:11:31 -0500 Subject: [PATCH 178/282] add unstable nixpkgs --- flake.lock | 17 +++++++++++++++++ flake.nix | 26 +++++++++++++++++++++++++- home/hosts/alien/default.nix | 7 +++++-- system/default.nix | 2 -- 4 files changed, 47 insertions(+), 5 deletions(-) diff --git a/flake.lock b/flake.lock index 09248a8..b8a15fd 100644 --- a/flake.lock +++ b/flake.lock @@ -373,6 +373,22 @@ "type": "github" } }, + "nixpkgs-unstable": { + "locked": { + "lastModified": 1768127708, + "narHash": "sha256-1Sm77VfZh3mU0F5OqKABNLWxOuDeHIlcFjsXeeiPazs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ffbc9f8cbaacfb331b6017d5a5abb21a492c9a38", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, "nixpkgs_2": { "locked": { "lastModified": 1767799921, @@ -509,6 +525,7 @@ "niri": "niri", "nix-cachyos-kernel": "nix-cachyos-kernel", "nixpkgs": "nixpkgs_2", + "nixpkgs-unstable": "nixpkgs-unstable", "nixvim": "nixvim", "noctalia": "noctalia", "nur": "nur", diff --git a/flake.nix b/flake.nix index 7884e0e..8f09afe 100644 --- a/flake.nix +++ b/flake.nix @@ -3,6 +3,7 @@ inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.11"; + nixpkgs-unstable.url = "github:NixOS/nixpkgs/nixos-unstable"; nix-cachyos-kernel.url = "github:xddxdd/nix-cachyos-kernel"; @@ -59,6 +60,7 @@ outputs = { nixpkgs, + nixpkgs-unstable, nix-cachyos-kernel, catppuccin, catppuccin-palette, @@ -73,9 +75,15 @@ ... }: let # All systems we want to support for the generic VM - supportedSystems = ["x86_64-linux" "aarch64-linux"]; # to run the vm: # nixos-rebuild build-vm --flake ~/nix#$(nix eval --raw --impure --expr 'builtins.currentSystem') + supportedSystems = ["x86_64-linux" "aarch64-linux"]; + + # Shared config for all package sets + pkgConfig = { + allowUnfree = true; + }; + mkNixosSystem = { hostname, system, @@ -87,11 +95,16 @@ specialArgs = { inherit catppuccin system; + pkgs-unstable = import nixpkgs-unstable { + inherit system; + config = pkgConfig; + }; } // extraSpecialArgs; modules = [ { + nixpkgs.config = pkgConfig; nixpkgs.overlays = [ catppuccin-palette.overlays.default niri.overlays.niri @@ -142,6 +155,10 @@ ]; home-manager.extraSpecialArgs = { inherit spicetify-nix; + pkgs-unstable = import nixpkgs-unstable { + inherit system; + config = pkgConfig; + }; }; } ] @@ -156,6 +173,7 @@ home-manager.lib.homeManagerConfiguration { pkgs = import nixpkgs { inherit system; + config = pkgConfig; }; home.username = user; home.homeDirectory = "/home/${user}"; @@ -169,6 +187,12 @@ noctalia.homeModules.noctalia nixvim.homeModules.nixvim ]; + extraSpecialArgs = { + pkgs-unstable = import nixpkgs-unstable { + inherit system; + config = pkgConfig; + }; + }; }; in { diff --git a/home/hosts/alien/default.nix b/home/hosts/alien/default.nix index 2022182..7d17545 100644 --- a/home/hosts/alien/default.nix +++ b/home/hosts/alien/default.nix @@ -1,6 +1,7 @@ { config, pkgs, + pkgs-unstable, spicetify-nix, ... }: { @@ -9,9 +10,11 @@ flavor = "mocha"; }; - home.packages = with pkgs; [ + home.packages = [ # steam gtk theming - adwsteamgtk + pkgs.adwsteamgtk + + pkgs-unstable.ckan ]; programs.noctalia-shell.settings.brightness = { diff --git a/system/default.nix b/system/default.nix index f8be213..95c2342 100755 --- a/system/default.nix +++ b/system/default.nix @@ -159,8 +159,6 @@ hashedPassword = "$6$bvwRUFaJNMpH8rm3$FGDWFN6tBScJ/2DynAjnlZE8JRfyADN78d6c4GawxpAjyNLNE/AjQzMA09tLRqpKX7WnN5PIUZLAm2bT9/RbG0"; }; - nixpkgs.config.allowUnfree = true; - environment = { systemPackages = with pkgs; [ git From 0133a53f414f8702764d9fb5669dd81a7e7ec3a3 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Tue, 13 Jan 2026 14:46:30 -0500 Subject: [PATCH 179/282] massive structural changes --- flake.nix | 207 +++++--- home/hosts/alien/default.nix | 1 + home/tiling/niri/niri.nix | 711 ++++++++++++++-------------- system/default.nix | 84 +--- system/hosts/alien/default.nix | 48 +- system/hosts/peach/default.nix | 19 +- system/hosts/vm-generic/default.nix | 14 +- system/shell/fish.nix | 2 + system/tailscale/default.nix | 4 +- system/widevine/default.nix | 3 +- 10 files changed, 532 insertions(+), 561 deletions(-) diff --git a/flake.nix b/flake.nix index 8f09afe..3b0474b 100644 --- a/flake.nix +++ b/flake.nix @@ -104,14 +104,64 @@ modules = [ { - nixpkgs.config = pkgConfig; - nixpkgs.overlays = [ - catppuccin-palette.overlays.default - niri.overlays.niri - noctalia.overlays.default - nur.overlays.default - (import ./packages/overlay.nix) - ]; + nixpkgs = { + config = pkgConfig; + overlays = [ + catppuccin-palette.overlays.default + niri.overlays.niri + noctalia.overlays.default + nur.overlays.default + (import ./packages/overlay.nix) + ]; + }; + nix = { + settings = { + experimental-features = [ + "nix-command" + "flakes" + ]; + + substituters = [ + "https://attic.xuyh0120.win/lantian" + "https://cache.garnix.io" + ]; + + trusted-public-keys = [ + "lantian:EeAUQ+W+6r7EtwnmYjeVwx5kOGEBpjlBfPlzGlTNvHc=" + "cache.garnix.io:CTFPyKSLcx5RMJKfLo5EEPUObbA78b0YQ2DTCJXqr9g=" + ]; + + trusted-users = [ + "root" + "sckova" + ]; + + # Increase file descriptor limit for builds + sandbox = "relaxed"; + extra-sandbox-paths = []; + build-users-group = "nixbld"; + }; + + gc = { + automatic = true; + dates = "weekly"; + options = "--delete-older-than 30d"; + }; + }; + + users.users.sckova = { + isNormalUser = true; + description = "Sean Kovacs"; + extraGroups = [ + "wheel" + "networkmanager" + "podman" + ]; + hashedPassword = "$6$bvwRUFaJNMpH8rm3$FGDWFN6tBScJ/2DynAjnlZE8JRfyADN78d6c4GawxpAjyNLNE/AjQzMA09tLRqpKX7WnN5PIUZLAm2bT9/RbG0"; + openssh.authorizedKeys.keys = [ + "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCn/eXMq04vcXNqGVzlZOw2C2dQYBqzWsoigdFW09XqC2WPaGljbAIayzaD7Q1tIlPGGy10+nipAXAk1CHAnrQ2KSg4v/SwFphF48V3joeQmideC4vo0EIQEQibbMtj3oFezqRcRZINl/1hr4t0myZ3zkoTjh3HCkqJEMGUdArDMEVPA5mwcKSLsyshW9LMG/3C9YKKPU1/lVsoeDkj8AVZA0srhkApuRKF0IVu8KoPd6ldvSWgpQ1iuQ+MEMSeOUJytieBkzeY9zEVePaQ86oIMDUzqq8OTN37RyShiJKPskKyj12rJI2eFtI/viGaj8P6/yvKqMp3F4kAsPAuvMLLAIYCNa+139rDpkkIKB6lVtgq0jnJGRywaYXGIRyExNcVAr8I9wrNnNN2M4whVeYBxfLMzKZ+VvfK39AaGvnzPuFDLqUC87sN4c/1KZQo+TCtlaxcYvqowWylw5JHUt8uwFcO/dUebQxxAv8EdyPZGJ/54y19PsTbu9KyxSc2gIU= sckova" + ]; + }; } ./system ./system/widevine @@ -120,44 +170,47 @@ ./system/hosts/${hostname} ./hardware/${hostname} catppuccin.nixosModules.catppuccin + niri.nixosModules.niri home-manager.nixosModules.home-manager noctalia.nixosModules.default { - home-manager.useGlobalPkgs = true; - home-manager.useUserPackages = true; - home-manager.users.sckova = { - imports = [ - ./home - ./home/games/minecraft - ./home/games/morrowind - ./home/graphical/discord - ./home/graphical/firefox - ./home/graphical/mpv - ./home/tiling/niri - ./home/tiling/wallpaper - ./home/systemd - ./home/terminal/btop - ./home/terminal/fish - ./home/terminal/kitty - ./home/terminal/nvim - ./home/kde - ./home/theming - ./home/vscode - ./home/hosts/${hostname} + home-manager = { + useGlobalPkgs = true; + useUserPackages = true; + users.sckova = { + imports = [ + ./home + ./home/games/minecraft + ./home/games/morrowind + ./home/graphical/discord + ./home/graphical/firefox + ./home/graphical/mpv + ./home/tiling/niri + ./home/tiling/wallpaper + ./home/systemd + ./home/terminal/btop + ./home/terminal/fish + ./home/terminal/kitty + ./home/terminal/nvim + ./home/kde + ./home/theming + ./home/vscode + ./home/hosts/${hostname} + ]; + }; + sharedModules = [ + catppuccin.homeModules.catppuccin + plasma-manager.homeModules.plasma-manager + noctalia.homeModules.default + spicetify-nix.homeManagerModules.default + nixvim.homeModules.nixvim ]; - }; - home-manager.sharedModules = [ - plasma-manager.homeModules.plasma-manager - niri.homeModules.niri - noctalia.homeModules.default - spicetify-nix.homeManagerModules.default - nixvim.homeModules.nixvim - ]; - home-manager.extraSpecialArgs = { - inherit spicetify-nix; - pkgs-unstable = import nixpkgs-unstable { - inherit system; - config = pkgConfig; + extraSpecialArgs = { + inherit spicetify-nix; + pkgs-unstable = import nixpkgs-unstable { + inherit system; + config = pkgConfig; + }; }; }; } @@ -175,6 +228,10 @@ inherit system; config = pkgConfig; }; + pkgs-unstable = import nixpkgs-unstable { + inherit system; + config = pkgConfig; + }; home.username = user; home.homeDirectory = "/home/${user}"; modules = [ @@ -187,33 +244,25 @@ noctalia.homeModules.noctalia nixvim.homeModules.nixvim ]; - extraSpecialArgs = { - pkgs-unstable = import nixpkgs-unstable { - inherit system; - config = pkgConfig; - }; - }; }; - in - { - nixosConfigurations = - { - peach = mkNixosSystem { - hostname = "peach"; - system = "aarch64-linux"; - extraModules = [ - apple-silicon.nixosModules.default - {nixpkgs.overlays = [apple-silicon.overlays.apple-silicon-overlay];} - ]; - }; + in { + nixosConfigurations = { + peach = mkNixosSystem { + hostname = "peach"; + system = "aarch64-linux"; + extraModules = [ + apple-silicon.nixosModules.default + {nixpkgs.overlays = [apple-silicon.overlays.apple-silicon-overlay];} + ]; + }; - alien = mkNixosSystem { - hostname = "alien"; - system = "x86_64-linux"; - extraSpecialArgs = { - inherit nix-cachyos-kernel; - }; - }; + alien = + mkNixosSystem { + hostname = "alien"; + system = "x86_64-linux"; + extraModules = [ + {nixpkgs.overlays = [nix-cachyos-kernel.overlays.default];} + ]; } // nixpkgs.lib.genAttrs supportedSystems ( system: @@ -222,8 +271,10 @@ inherit system; } ); + }; - homeConfigurations = { + homeConfigurations = + { peach = mkHomeConfig { user = "sckova"; hostname = "peach"; @@ -234,14 +285,14 @@ hostname = "alien"; system = "x86_64-linux"; }; - }; - } - // nixpkgs.lib.genAttrs supportedSystems ( - system: - mkHomeConfig { - user = "sckova"; - hostname = "vm-generic"; - inherit system; - } - ); + } + // nixpkgs.lib.genAttrs supportedSystems ( + system: + mkHomeConfig { + user = "sckova"; + hostname = "vm-generic"; + inherit system; + } + ); + }; } diff --git a/home/hosts/alien/default.nix b/home/hosts/alien/default.nix index 7d17545..6c956c3 100644 --- a/home/hosts/alien/default.nix +++ b/home/hosts/alien/default.nix @@ -15,6 +15,7 @@ pkgs.adwsteamgtk pkgs-unstable.ckan + pkgs.daggerfall-unity ]; programs.noctalia-shell.settings.brightness = { diff --git a/home/tiling/niri/niri.nix b/home/tiling/niri/niri.nix index 282ac9a..5b82df5 100644 --- a/home/tiling/niri/niri.nix +++ b/home/tiling/niri/niri.nix @@ -3,408 +3,411 @@ pkgs, ... }: { - programs.niri.package = pkgs.niri-unstable.overrideAttrs (old: { - doCheck = false; - }); # https://github.com/sodiboo/niri-flake/blob/main/docs.md - programs.niri.settings = { - screenshot-path = "~/Pictures/Screenshots/Screenshot from %Y-%m-%d %H-%M-%S.png"; - hotkey-overlay.skip-at-startup = true; - prefer-no-csd = true; - gestures.hot-corners.enable = false; - spawn-at-startup = []; # systemd is based sorry - overview = { - backdrop-color = pkgs.catppuccin.${config.catppuccin.flavor}.crust; - workspace-shadow.enable = false; - }; - input = { - focus-follows-mouse = { - enable = true; - max-scroll-amount = "0%"; + programs.niri = { + package = pkgs.niri-unstable.overrideAttrs (old: { + doCheck = false; + }); + + settings = { + screenshot-path = "~/Pictures/Screenshots/Screenshot from %Y-%m-%d %H-%M-%S.png"; + hotkey-overlay.skip-at-startup = true; + prefer-no-csd = true; + gestures.hot-corners.enable = false; + spawn-at-startup = []; # systemd is based sorry + overview = { + backdrop-color = pkgs.catppuccin.${config.catppuccin.flavor}.crust; + workspace-shadow.enable = false; }; - keyboard = { - numlock = false; - repeat-delay = 600; - repeat-rate = 25; + input = { + focus-follows-mouse = { + enable = true; + max-scroll-amount = "0%"; + }; + keyboard = { + numlock = false; + repeat-delay = 600; + repeat-rate = 25; + }; + mouse = { + enable = true; + accel-profile = "adaptive"; + natural-scroll = false; + }; + touchpad = { + enable = true; + accel-profile = "adaptive"; + natural-scroll = true; + tap = false; + drag = false; + }; }; - mouse = { - enable = true; - accel-profile = "adaptive"; - natural-scroll = false; + environment = { + QT_QPA_PLATFORM = "wayland"; + QT_QPA_PLATFORMTHEME = "qt6ct"; + DISPLAY = null; + XCURSOR_THEME = config.userOptions.cursor.name; + XCURSOR_SIZE = toString config.userOptions.cursor.size; }; - touchpad = { - enable = true; - accel-profile = "adaptive"; - natural-scroll = true; - tap = false; - drag = false; + outputs = { + "eDP-1" = { + scale = 1.75; + }; + "HDMI-A-1" = { + scale = 2; + }; }; - }; - environment = { - QT_QPA_PLATFORM = "wayland"; - QT_QPA_PLATFORMTHEME = "qt6ct"; - DISPLAY = null; - XCURSOR_THEME = config.userOptions.cursor.name; - XCURSOR_SIZE = toString config.userOptions.cursor.size; - }; - outputs = { - "eDP-1" = { - scale = 1.75; + cursor = { + hide-when-typing = true; + hide-after-inactive-ms = 5000; + size = config.userOptions.cursor.size; + theme = config.userOptions.cursor.name; }; - "HDMI-A-1" = { - scale = 2; + layout = { + gaps = 4; + background-color = pkgs.catppuccin.${config.catppuccin.flavor}.mantle; + default-column-width = { + proportion = 0.5; + }; + preset-column-widths = [ + {proportion = 1.0 / 3.0;} + {proportion = 1.0 / 2.0;} + {proportion = 2.0 / 3.0;} + ]; + border = { + enable = true; + width = 2; + active.color = pkgs.catppuccin.${config.catppuccin.flavor}.${config.catppuccin.accent}; + inactive.color = pkgs.catppuccin.${config.catppuccin.flavor}.surface0; + urgent.color = pkgs.catppuccin.${config.catppuccin.flavor}.maroon; + }; + focus-ring = { + enable = false; + width = 2; + active.color = pkgs.catppuccin.${config.catppuccin.flavor}.${config.catppuccin.accent}; + inactive.color = pkgs.catppuccin.${config.catppuccin.flavor}.surface0; + urgent.color = pkgs.catppuccin.${config.catppuccin.flavor}.maroon; + }; + shadow = { + enable = true; + spread = 5; + offset.x = 0; + offset.y = 5; + softness = 30; + color = pkgs.catppuccin.${config.catppuccin.flavor}.base + "77"; + }; }; - }; - cursor = { - hide-when-typing = true; - hide-after-inactive-ms = 2000; - size = config.userOptions.cursor.size; - theme = config.userOptions.cursor.name; - }; - layout = { - gaps = 4; - background-color = pkgs.catppuccin.${config.catppuccin.flavor}.mantle; - default-column-width = { - proportion = 0.5; - }; - preset-column-widths = [ - {proportion = 1.0 / 3.0;} - {proportion = 1.0 / 2.0;} - {proportion = 2.0 / 3.0;} + window-rules = [ + { + matches = [ + { + app-id = "firefox$"; + title = "^Picture-in-Picture$"; + } + ]; + open-floating = true; + default-floating-position = { + x = 32; + y = 32; + relative-to = "bottom-left"; + }; + } + { + geometry-corner-radius = { + top-left = 16.0; + top-right = 16.0; + bottom-left = 16.0; + bottom-right = 16.0; + }; + clip-to-geometry = true; + } + { + matches = [ + { + app-id = "openmw"; + title = "OpenMW"; + } + { + app-id = "Minecraft"; + title = "Minecraft"; + } + ]; + open-maximized = true; + open-focused = true; + } + { + matches = [ + { + app-id = "mpv"; + } + ]; + border.active.color = pkgs.catppuccin.${config.catppuccin.flavor}.surface1; + } ]; - border = { - enable = true; - width = 2; - active.color = pkgs.catppuccin.${config.catppuccin.flavor}.${config.catppuccin.accent}; - inactive.color = pkgs.catppuccin.${config.catppuccin.flavor}.surface0; - urgent.color = pkgs.catppuccin.${config.catppuccin.flavor}.maroon; - }; - focus-ring = { - enable = false; - width = 2; - active.color = pkgs.catppuccin.${config.catppuccin.flavor}.${config.catppuccin.accent}; - inactive.color = pkgs.catppuccin.${config.catppuccin.flavor}.surface0; - urgent.color = pkgs.catppuccin.${config.catppuccin.flavor}.maroon; - }; - shadow = { - enable = true; - spread = 5; - offset.x = 0; - offset.y = 5; - softness = 30; - color = pkgs.catppuccin.${config.catppuccin.flavor}.base + "77"; - }; - }; - window-rules = [ - { - matches = [ - { - app-id = "firefox$"; - title = "^Picture-in-Picture$"; - } - ]; - open-floating = true; - default-floating-position = { - x = 32; - y = 32; - relative-to = "bottom-left"; + binds = { + "Mod+Shift+Slash".action.show-hotkey-overlay = {}; + + "Mod+T" = { + action.spawn = ["kitty"]; + hotkey-overlay.title = "Open a Terminal: kitty"; }; - } - { - geometry-corner-radius = { - top-left = 16.0; - top-right = 16.0; - bottom-left = 16.0; - bottom-right = 16.0; + "Mod+Space" = { + action.spawn-sh = [ + "noctalia-shell ipc call launcher toggle" + ]; + hotkey-overlay.title = "Run an Application: Noctalia app launcher"; }; - clip-to-geometry = true; - } - { - matches = [ - { - app-id = "openmw"; - title = "OpenMW"; - } - { - app-id = "Minecraft"; - title = "Minecraft"; - } - ]; - open-maximized = true; - open-focused = true; - } - { - matches = [ - { - app-id = "mpv"; - } - ]; - border.active.color = pkgs.catppuccin.${config.catppuccin.flavor}.surface1; - } - ]; - binds = { - "Mod+Shift+Slash".action.show-hotkey-overlay = {}; - "Mod+T" = { - action.spawn = ["kitty"]; - hotkey-overlay.title = "Open a Terminal: kitty"; - }; - "Mod+Space" = { - action.spawn-sh = [ - "noctalia-shell ipc call launcher toggle" - ]; - hotkey-overlay.title = "Run an Application: Noctalia app launcher"; - }; + "XF86AudioRaiseVolume" = { + action.spawn-sh = [ + "noctalia-shell ipc call volume increase" + ]; + allow-when-locked = true; + }; + "XF86AudioLowerVolume" = { + action.spawn-sh = [ + "noctalia-shell ipc call volume decrease" + ]; + allow-when-locked = true; + }; + "Shift+XF86AudioRaiseVolume" = { + action.spawn = [ + "wpctl" + "set-volume" + "@DEFAULT_AUDIO_SINK@" + "0.01+" + ]; + allow-when-locked = true; + }; + "Shift+XF86AudioLowerVolume" = { + action.spawn = [ + "wpctl" + "set-volume" + "@DEFAULT_AUDIO_SINK@" + "0.01-" + ]; + allow-when-locked = true; + }; + "XF86AudioMute" = { + action.spawn-sh = [ + "noctalia-shell ipc call volume muteOutput" + ]; + allow-when-locked = true; + }; + "XF86AudioMicMute" = { + action.spawn-sh = [ + "noctalia-shell ipc call volume muteInput" + ]; + allow-when-locked = true; + }; - "XF86AudioRaiseVolume" = { - action.spawn-sh = [ - "noctalia-shell ipc call volume increase" - ]; - allow-when-locked = true; - }; - "XF86AudioLowerVolume" = { - action.spawn-sh = [ - "noctalia-shell ipc call volume decrease" - ]; - allow-when-locked = true; - }; - "Shift+XF86AudioRaiseVolume" = { - action.spawn = [ - "wpctl" - "set-volume" - "@DEFAULT_AUDIO_SINK@" - "0.01+" - ]; - allow-when-locked = true; - }; - "Shift+XF86AudioLowerVolume" = { - action.spawn = [ - "wpctl" - "set-volume" - "@DEFAULT_AUDIO_SINK@" - "0.01-" - ]; - allow-when-locked = true; - }; - "XF86AudioMute" = { - action.spawn-sh = [ - "noctalia-shell ipc call volume muteOutput" - ]; - allow-when-locked = true; - }; - "XF86AudioMicMute" = { - action.spawn-sh = [ - "noctalia-shell ipc call volume muteInput" - ]; - allow-when-locked = true; - }; + "XF86MonBrightnessUp" = { + action.spawn = ["noctalia-shell" "ipc" "call" "brightness" "increase"]; + allow-when-locked = true; + }; - "XF86MonBrightnessUp" = { - action.spawn = ["noctalia-shell" "ipc" "call" "brightness" "increase"]; - allow-when-locked = true; - }; + "XF86MonBrightnessDown" = { + action.spawn = ["noctalia-shell" "ipc" "call" "brightness" "decrease"]; + allow-when-locked = true; + }; - "XF86MonBrightnessDown" = { - action.spawn = ["noctalia-shell" "ipc" "call" "brightness" "decrease"]; - allow-when-locked = true; - }; + "Shift+XF86MonBrightnessUp" = { + action.spawn = ["brightnessctl" "--class=backlight" "set" "+1%"]; + allow-when-locked = true; + }; - "Shift+XF86MonBrightnessUp" = { - action.spawn = ["brightnessctl" "--class=backlight" "set" "+1%"]; - allow-when-locked = true; - }; + "Shift+XF86MonBrightnessDown" = { + action.spawn = ["brightnessctl" "--class=backlight" "set" "1%-"]; + allow-when-locked = true; + }; - "Shift+XF86MonBrightnessDown" = { - action.spawn = ["brightnessctl" "--class=backlight" "set" "1%-"]; - allow-when-locked = true; - }; + "XF86AudioPrev" = { + action.spawn = ["playerctl" "previous"]; + allow-when-locked = true; + }; - "XF86AudioPrev" = { - action.spawn = ["playerctl" "previous"]; - allow-when-locked = true; - }; + "XF86AudioPlay" = { + action.spawn = ["playerctl" "play-pause"]; + allow-when-locked = true; + }; - "XF86AudioPlay" = { - action.spawn = ["playerctl" "play-pause"]; - allow-when-locked = true; - }; + "XF86AudioNext" = { + action.spawn = ["playerctl" "next"]; + allow-when-locked = true; + }; - "XF86AudioNext" = { - action.spawn = ["playerctl" "next"]; - allow-when-locked = true; - }; + "XF86Sleep" = { + action.power-off-monitors = {}; + }; - "XF86Sleep" = { - action.power-off-monitors = {}; - }; + "XF86Search" = { + action.spawn = ["noctalia-shell" "ipc" "call" "launcher" "toggle"]; + allow-when-locked = true; + }; - "XF86Search" = { - action.spawn = ["noctalia-shell" "ipc" "call" "launcher" "toggle"]; - allow-when-locked = true; - }; + "XF86LaunchA" = { + action.spawn = ["niri" "msg" "action" "toggle-overview"]; + allow-when-locked = true; + }; - "XF86LaunchA" = { - action.spawn = ["niri" "msg" "action" "toggle-overview"]; - allow-when-locked = true; - }; + "Mod+O" = { + action.toggle-overview = {}; + repeat = false; + }; - "Mod+O" = { - action.toggle-overview = {}; - repeat = false; - }; + "Mod+Q" = { + action.close-window = {}; + repeat = false; + }; - "Mod+Q" = { - action.close-window = {}; - repeat = false; - }; + "Mod+Left".action.focus-column-left = {}; + "Mod+Down".action.focus-window-down = {}; + "Mod+Up".action.focus-window-up = {}; + "Mod+Right".action.focus-column-right = {}; + "Mod+H".action.focus-column-left = {}; + "Mod+J".action.focus-window-down = {}; + "Mod+K".action.focus-window-up = {}; + "Mod+L".action.focus-column-right = {}; - "Mod+Left".action.focus-column-left = {}; - "Mod+Down".action.focus-window-down = {}; - "Mod+Up".action.focus-window-up = {}; - "Mod+Right".action.focus-column-right = {}; - "Mod+H".action.focus-column-left = {}; - "Mod+J".action.focus-window-down = {}; - "Mod+K".action.focus-window-up = {}; - "Mod+L".action.focus-column-right = {}; + "Mod+Ctrl+Left".action.move-column-left = {}; + "Mod+Ctrl+Down".action.move-window-down = {}; + "Mod+Ctrl+Up".action.move-window-up = {}; + "Mod+Ctrl+Right".action.move-column-right = {}; + "Mod+Ctrl+H".action.move-column-left = {}; + "Mod+Ctrl+J".action.move-window-down = {}; + "Mod+Ctrl+K".action.move-window-up = {}; + "Mod+Ctrl+L".action.move-column-right = {}; - "Mod+Ctrl+Left".action.move-column-left = {}; - "Mod+Ctrl+Down".action.move-window-down = {}; - "Mod+Ctrl+Up".action.move-window-up = {}; - "Mod+Ctrl+Right".action.move-column-right = {}; - "Mod+Ctrl+H".action.move-column-left = {}; - "Mod+Ctrl+J".action.move-window-down = {}; - "Mod+Ctrl+K".action.move-window-up = {}; - "Mod+Ctrl+L".action.move-column-right = {}; + "Mod+Home".action.focus-column-first = {}; + "Mod+End".action.focus-column-last = {}; + "Mod+Ctrl+Home".action.move-column-to-first = {}; + "Mod+Ctrl+End".action.move-column-to-last = {}; - "Mod+Home".action.focus-column-first = {}; - "Mod+End".action.focus-column-last = {}; - "Mod+Ctrl+Home".action.move-column-to-first = {}; - "Mod+Ctrl+End".action.move-column-to-last = {}; + "Mod+Shift+Left".action.focus-monitor-left = {}; + "Mod+Shift+Down".action.focus-monitor-down = {}; + "Mod+Shift+Up".action.focus-monitor-up = {}; + "Mod+Shift+Right".action.focus-monitor-right = {}; + "Mod+Shift+H".action.focus-monitor-left = {}; + "Mod+Shift+J".action.focus-monitor-down = {}; + "Mod+Shift+K".action.focus-monitor-up = {}; + "Mod+Shift+L".action.focus-monitor-right = {}; - "Mod+Shift+Left".action.focus-monitor-left = {}; - "Mod+Shift+Down".action.focus-monitor-down = {}; - "Mod+Shift+Up".action.focus-monitor-up = {}; - "Mod+Shift+Right".action.focus-monitor-right = {}; - "Mod+Shift+H".action.focus-monitor-left = {}; - "Mod+Shift+J".action.focus-monitor-down = {}; - "Mod+Shift+K".action.focus-monitor-up = {}; - "Mod+Shift+L".action.focus-monitor-right = {}; + "Mod+Shift+Ctrl+Left".action.move-column-to-monitor-left = {}; + "Mod+Shift+Ctrl+Down".action.move-column-to-monitor-down = {}; + "Mod+Shift+Ctrl+Up".action.move-column-to-monitor-up = {}; + "Mod+Shift+Ctrl+Right".action.move-column-to-monitor-right = {}; + "Mod+Shift+Ctrl+H".action.move-column-to-monitor-left = {}; + "Mod+Shift+Ctrl+J".action.move-column-to-monitor-down = {}; + "Mod+Shift+Ctrl+K".action.move-column-to-monitor-up = {}; + "Mod+Shift+Ctrl+L".action.move-column-to-monitor-right = {}; - "Mod+Shift+Ctrl+Left".action.move-column-to-monitor-left = {}; - "Mod+Shift+Ctrl+Down".action.move-column-to-monitor-down = {}; - "Mod+Shift+Ctrl+Up".action.move-column-to-monitor-up = {}; - "Mod+Shift+Ctrl+Right".action.move-column-to-monitor-right = {}; - "Mod+Shift+Ctrl+H".action.move-column-to-monitor-left = {}; - "Mod+Shift+Ctrl+J".action.move-column-to-monitor-down = {}; - "Mod+Shift+Ctrl+K".action.move-column-to-monitor-up = {}; - "Mod+Shift+Ctrl+L".action.move-column-to-monitor-right = {}; + "Mod+Page_Down".action.focus-workspace-down = {}; + "Mod+Page_Up".action.focus-workspace-up = {}; + "Mod+U".action.focus-workspace-down = {}; + "Mod+I".action.focus-workspace-up = {}; + "Mod+Ctrl+Page_Down".action.move-column-to-workspace-down = {}; + "Mod+Ctrl+Page_Up".action.move-column-to-workspace-up = {}; + "Mod+Ctrl+U".action.move-column-to-workspace-down = {}; + "Mod+Ctrl+I".action.move-column-to-workspace-up = {}; - "Mod+Page_Down".action.focus-workspace-down = {}; - "Mod+Page_Up".action.focus-workspace-up = {}; - "Mod+U".action.focus-workspace-down = {}; - "Mod+I".action.focus-workspace-up = {}; - "Mod+Ctrl+Page_Down".action.move-column-to-workspace-down = {}; - "Mod+Ctrl+Page_Up".action.move-column-to-workspace-up = {}; - "Mod+Ctrl+U".action.move-column-to-workspace-down = {}; - "Mod+Ctrl+I".action.move-column-to-workspace-up = {}; + "Mod+Shift+Page_Down".action.move-workspace-down = {}; + "Mod+Shift+Page_Up".action.move-workspace-up = {}; + "Mod+Shift+U".action.move-workspace-down = {}; + "Mod+Shift+I".action.move-workspace-up = {}; - "Mod+Shift+Page_Down".action.move-workspace-down = {}; - "Mod+Shift+Page_Up".action.move-workspace-up = {}; - "Mod+Shift+U".action.move-workspace-down = {}; - "Mod+Shift+I".action.move-workspace-up = {}; + "Mod+WheelScrollDown" = { + action.focus-workspace-down = {}; + cooldown-ms = 150; + }; + "Mod+WheelScrollUp" = { + action.focus-workspace-up = {}; + cooldown-ms = 150; + }; + "Mod+Ctrl+WheelScrollDown" = { + action.move-column-to-workspace-down = {}; + cooldown-ms = 150; + }; + "Mod+Ctrl+WheelScrollUp" = { + action.move-column-to-workspace-up = {}; + cooldown-ms = 150; + }; - "Mod+WheelScrollDown" = { - action.focus-workspace-down = {}; - cooldown-ms = 150; - }; - "Mod+WheelScrollUp" = { - action.focus-workspace-up = {}; - cooldown-ms = 150; - }; - "Mod+Ctrl+WheelScrollDown" = { - action.move-column-to-workspace-down = {}; - cooldown-ms = 150; - }; - "Mod+Ctrl+WheelScrollUp" = { - action.move-column-to-workspace-up = {}; - cooldown-ms = 150; - }; + "Mod+WheelScrollRight".action.focus-column-right = {}; + "Mod+WheelScrollLeft".action.focus-column-left = {}; + "Mod+Ctrl+WheelScrollRight".action.move-column-right = {}; + "Mod+Ctrl+WheelScrollLeft".action.move-column-left = {}; - "Mod+WheelScrollRight".action.focus-column-right = {}; - "Mod+WheelScrollLeft".action.focus-column-left = {}; - "Mod+Ctrl+WheelScrollRight".action.move-column-right = {}; - "Mod+Ctrl+WheelScrollLeft".action.move-column-left = {}; + "Mod+Shift+WheelScrollDown".action.focus-column-right = {}; + "Mod+Shift+WheelScrollUp".action.focus-column-left = {}; + "Mod+Ctrl+Shift+WheelScrollDown".action.move-column-right = {}; + "Mod+Ctrl+Shift+WheelScrollUp".action.move-column-left = {}; - "Mod+Shift+WheelScrollDown".action.focus-column-right = {}; - "Mod+Shift+WheelScrollUp".action.focus-column-left = {}; - "Mod+Ctrl+Shift+WheelScrollDown".action.move-column-right = {}; - "Mod+Ctrl+Shift+WheelScrollUp".action.move-column-left = {}; + "Mod+1".action.focus-workspace = 1; + "Mod+2".action.focus-workspace = 2; + "Mod+3".action.focus-workspace = 3; + "Mod+4".action.focus-workspace = 4; + "Mod+5".action.focus-workspace = 5; + "Mod+6".action.focus-workspace = 6; + "Mod+7".action.focus-workspace = 7; + "Mod+8".action.focus-workspace = 8; + "Mod+9".action.focus-workspace = 9; + "Mod+Ctrl+1".action.move-column-to-workspace = 1; + "Mod+Ctrl+2".action.move-column-to-workspace = 2; + "Mod+Ctrl+3".action.move-column-to-workspace = 3; + "Mod+Ctrl+4".action.move-column-to-workspace = 4; + "Mod+Ctrl+5".action.move-column-to-workspace = 5; + "Mod+Ctrl+6".action.move-column-to-workspace = 6; + "Mod+Ctrl+7".action.move-column-to-workspace = 7; + "Mod+Ctrl+8".action.move-column-to-workspace = 8; + "Mod+Ctrl+9".action.move-column-to-workspace = 9; - "Mod+1".action.focus-workspace = 1; - "Mod+2".action.focus-workspace = 2; - "Mod+3".action.focus-workspace = 3; - "Mod+4".action.focus-workspace = 4; - "Mod+5".action.focus-workspace = 5; - "Mod+6".action.focus-workspace = 6; - "Mod+7".action.focus-workspace = 7; - "Mod+8".action.focus-workspace = 8; - "Mod+9".action.focus-workspace = 9; - "Mod+Ctrl+1".action.move-column-to-workspace = 1; - "Mod+Ctrl+2".action.move-column-to-workspace = 2; - "Mod+Ctrl+3".action.move-column-to-workspace = 3; - "Mod+Ctrl+4".action.move-column-to-workspace = 4; - "Mod+Ctrl+5".action.move-column-to-workspace = 5; - "Mod+Ctrl+6".action.move-column-to-workspace = 6; - "Mod+Ctrl+7".action.move-column-to-workspace = 7; - "Mod+Ctrl+8".action.move-column-to-workspace = 8; - "Mod+Ctrl+9".action.move-column-to-workspace = 9; + "Mod+BracketLeft".action.consume-or-expel-window-left = {}; + "Mod+BracketRight".action.consume-or-expel-window-right = {}; - "Mod+BracketLeft".action.consume-or-expel-window-left = {}; - "Mod+BracketRight".action.consume-or-expel-window-right = {}; + "Mod+Comma".action.consume-window-into-column = {}; + "Mod+Period".action.expel-window-from-column = {}; - "Mod+Comma".action.consume-window-into-column = {}; - "Mod+Period".action.expel-window-from-column = {}; + "Mod+R".action.switch-preset-column-width = {}; + "Mod+Shift+R".action.switch-preset-window-height = {}; + "Mod+Ctrl+R".action.reset-window-height = {}; + "Mod+F".action.maximize-column = {}; + "Mod+Shift+F".action.maximize-window-to-edges = {}; + "Mod+Ctrl+Shift+F".action.fullscreen-window = {}; - "Mod+R".action.switch-preset-column-width = {}; - "Mod+Shift+R".action.switch-preset-window-height = {}; - "Mod+Ctrl+R".action.reset-window-height = {}; - "Mod+F".action.maximize-column = {}; - "Mod+Shift+F".action.maximize-window-to-edges = {}; - "Mod+Ctrl+Shift+F".action.fullscreen-window = {}; + "Mod+Ctrl+F".action.expand-column-to-available-width = {}; - "Mod+Ctrl+F".action.expand-column-to-available-width = {}; + "Mod+C".action.center-column = {}; - "Mod+C".action.center-column = {}; + "Mod+Ctrl+C".action.center-visible-columns = {}; - "Mod+Ctrl+C".action.center-visible-columns = {}; + "Mod+Minus".action.set-column-width = "-10%"; + "Mod+Equal".action.set-column-width = "+10%"; - "Mod+Minus".action.set-column-width = "-10%"; - "Mod+Equal".action.set-column-width = "+10%"; + "Mod+Shift+Minus".action.set-window-height = "-10%"; + "Mod+Shift+Equal".action.set-window-height = "+10%"; - "Mod+Shift+Minus".action.set-window-height = "-10%"; - "Mod+Shift+Equal".action.set-window-height = "+10%"; + "Mod+V".action.toggle-window-floating = {}; + "Mod+Shift+V".action.switch-focus-between-floating-and-tiling = {}; - "Mod+V".action.toggle-window-floating = {}; - "Mod+Shift+V".action.switch-focus-between-floating-and-tiling = {}; + "Mod+W".action.toggle-column-tabbed-display = {}; - "Mod+W".action.toggle-column-tabbed-display = {}; + "Print".action.screenshot = {}; + "Mod+Shift+S".action.screenshot = {}; + "Ctrl+Print".action.screenshot-screen = {}; + "Alt+Print".action.screenshot-window = {}; - "Print".action.screenshot = {}; - "Mod+Shift+S".action.screenshot = {}; - "Ctrl+Print".action.screenshot-screen = {}; - "Alt+Print".action.screenshot-window = {}; + "Mod+Escape" = { + action.toggle-keyboard-shortcuts-inhibit = {}; + allow-inhibiting = false; + }; - "Mod+Escape" = { - action.toggle-keyboard-shortcuts-inhibit = {}; - allow-inhibiting = false; - }; + "Mod+Shift+E".action.quit = {}; + "Ctrl+Alt+Delete".action.quit = {}; - "Mod+Shift+E".action.quit = {}; - "Ctrl+Alt+Delete".action.quit = {}; - - "Mod+Shift+P" = { - action.power-off-monitors = {}; - hotkey-overlay.title = "Turn off the display"; + "Mod+Shift+P" = { + action.power-off-monitors = {}; + hotkey-overlay.title = "Turn off the display"; + }; }; }; }; diff --git a/system/default.nix b/system/default.nix index 95c2342..19797db 100755 --- a/system/default.nix +++ b/system/default.nix @@ -1,5 +1,5 @@ # Edit this configuration file to define what should be installed on -# your system. Help is available in the configuration.nix(5) man page +# your system. Help is available in the configuration.nix(5) man page # and in the NixOS manual (accessible by running ‘nixos-help’). { config, @@ -8,48 +8,9 @@ inputs, ... }: { - nix.settings.experimental-features = [ - "nix-command" - "flakes" - ]; - - nix.settings.trusted-users = [ - "root" - "sckova" - ]; - - nix.settings = { - # Increase file descriptor limit for builds - sandbox = "relaxed"; - extra-sandbox-paths = []; - build-users-group = "nixbld"; - }; - - security.pam.loginLimits = [ - { - domain = "*"; - type = "soft"; - item = "nofile"; - value = "65536"; - } - { - domain = "*"; - type = "hard"; - item = "nofile"; - value = "65536"; - } - ]; - - nix.gc = { - automatic = true; - dates = "weekly"; - options = "--delete-older-than 30d"; - }; - - environment.sessionVariables = rec { + environment.sessionVariables = { + # this makes electron apps work per the wiki NIXOS_OZONE_WL = "1"; - EDITOR = "nvim"; - TERMINAL = "kitty"; }; boot = { @@ -120,11 +81,16 @@ services = { desktopManager.plasma6.enable = true; - displayManager.sddm = { - enable = true; - wayland.enable = true; - enableHidpi = true; + displayManager = { + sddm = { + enable = true; + wayland.enable = true; + enableHidpi = true; + }; + + defaultSession = "niri"; }; + libinput.enable = true; printing.enable = true; pipewire = { @@ -136,29 +102,6 @@ udisks2.enable = true; }; - virtualisation = { - containers.enable = true; - podman = { - enable = true; - dockerCompat = true; - defaultNetwork.settings.dns_enabled = true; # Required for containers under podman-compose to be able to talk to each other. - }; - }; - - systemd.tmpfiles.rules = ["L+ /var/lib/qemu/firmware - - - - ${pkgs.qemu}/share/qemu/firmware"]; - - users.users.sckova = { - isNormalUser = true; - description = "Sean Kovacs"; - extraGroups = [ - "wheel" - "networkmanager" - "podman" - ]; - packages = with pkgs; []; - hashedPassword = "$6$bvwRUFaJNMpH8rm3$FGDWFN6tBScJ/2DynAjnlZE8JRfyADN78d6c4GawxpAjyNLNE/AjQzMA09tLRqpKX7WnN5PIUZLAm2bT9/RbG0"; - }; - environment = { systemPackages = with pkgs; [ git @@ -185,9 +128,6 @@ }; services.openssh.enable = true; - users.users."sckova".openssh.authorizedKeys.keys = [ - "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCn/eXMq04vcXNqGVzlZOw2C2dQYBqzWsoigdFW09XqC2WPaGljbAIayzaD7Q1tIlPGGy10+nipAXAk1CHAnrQ2KSg4v/SwFphF48V3joeQmideC4vo0EIQEQibbMtj3oFezqRcRZINl/1hr4t0myZ3zkoTjh3HCkqJEMGUdArDMEVPA5mwcKSLsyshW9LMG/3C9YKKPU1/lVsoeDkj8AVZA0srhkApuRKF0IVu8KoPd6ldvSWgpQ1iuQ+MEMSeOUJytieBkzeY9zEVePaQ86oIMDUzqq8OTN37RyShiJKPskKyj12rJI2eFtI/viGaj8P6/yvKqMp3F4kAsPAuvMLLAIYCNa+139rDpkkIKB6lVtgq0jnJGRywaYXGIRyExNcVAr8I9wrNnNN2M4whVeYBxfLMzKZ+VvfK39AaGvnzPuFDLqUC87sN4c/1KZQo+TCtlaxcYvqowWylw5JHUt8uwFcO/dUebQxxAv8EdyPZGJ/54y19PsTbu9KyxSc2gIU= sckova" - ]; # This value determines the NixOS release from which the default # settings for stateful data, like file locations and database versions diff --git a/system/hosts/alien/default.nix b/system/hosts/alien/default.nix index c83ae54..a6d1a10 100644 --- a/system/hosts/alien/default.nix +++ b/system/hosts/alien/default.nix @@ -1,8 +1,6 @@ { config, pkgs, - catppuccin, - nix-cachyos-kernel, ... }: { networking.hostName = "alien"; @@ -25,36 +23,14 @@ ''; hardware.i2c.enable = true; - boot.binfmt.emulatedSystems = [ - "aarch64-linux" - "riscv64-linux" - ]; - catppuccin.accent = "blue"; - home-manager.users.sckova = { - imports = [catppuccin.homeModules.catppuccin]; - }; - boot.loader.systemd-boot.consoleMode = "max"; # boot.kernelPackages = pkgs.linuxPackages; # let's use the CachyOS kernel instead! - nixpkgs.overlays = [nix-cachyos-kernel.overlays.default]; - nix.settings.substituters = [ - "https://attic.xuyh0120.win/lantian" - "https://cache.garnix.io" - ]; - nix.settings.trusted-public-keys = [ - "lantian:EeAUQ+W+6r7EtwnmYjeVwx5kOGEBpjlBfPlzGlTNvHc=" - "cache.garnix.io:CTFPyKSLcx5RMJKfLo5EEPUObbA78b0YQ2DTCJXqr9g=" - ]; boot.kernelPackages = pkgs.cachyosKernels.linuxPackages-cachyos-lts; - # enable hyper-v for guests - virtualisation.hypervGuest.enable = true; - boot.blacklistedKernelModules = ["hyperv_fb"]; - programs = { gamescope = { enable = true; @@ -77,7 +53,6 @@ enable = false; user = "sckova"; }; - defaultSession = "niri"; }; environment = { @@ -102,4 +77,27 @@ capSysAdmin = true; openFirewall = true; }; + + # virtualization settings + + virtualisation = { + containers.enable = true; + podman = { + enable = true; + dockerCompat = true; + defaultNetwork.settings.dns_enabled = true; # Required for containers under podman-compose to be able to talk to each other. + }; + }; + + # enable hyper-v for guests + virtualisation.hypervGuest.enable = true; + boot.blacklistedKernelModules = ["hyperv_fb"]; + + boot.binfmt.emulatedSystems = [ + "aarch64-linux" + "riscv64-linux" + ]; + + # i don't even remember what this does or why i added it + systemd.tmpfiles.rules = ["L+ /var/lib/qemu/firmware - - - - ${pkgs.qemu}/share/qemu/firmware"]; } diff --git a/system/hosts/peach/default.nix b/system/hosts/peach/default.nix index 1fd6366..b241715 100644 --- a/system/hosts/peach/default.nix +++ b/system/hosts/peach/default.nix @@ -1,25 +1,10 @@ -{ - config, - pkgs, - lib, - catppuccin, - ... -}: { +{pkgs, ...}: { networking.hostName = "peach"; - boot.binfmt.emulatedSystems = [ - "x86_64-linux" - "riscv64-linux" - ]; - boot.kernelParams = ["apple_dcp.show_notch=1"]; catppuccin.accent = "peach"; - home-manager.users.sckova = { - imports = [catppuccin.homeModules.catppuccin]; - }; - hardware.asahi = { enable = true; setupAsahiSound = true; @@ -37,7 +22,7 @@ swapDevices = [ { device = "/swapfile"; - size = 16000; # 16GB + size = 8000; # 8GB } ]; diff --git a/system/hosts/vm-generic/default.nix b/system/hosts/vm-generic/default.nix index e28763f..0979703 100644 --- a/system/hosts/vm-generic/default.nix +++ b/system/hosts/vm-generic/default.nix @@ -1,18 +1,6 @@ -{ - config, - pkgs, - lib, - catppuccin, - ... -}: { +{catppuccin, ...}: { networking.hostName = "vm"; - # Enable emulation for architectures we're not currently running - boot.binfmt.emulatedSystems = - lib.optional (pkgs.stdenv.hostPlatform.system != "x86_64-linux") "x86_64-linux" - ++ lib.optional (pkgs.stdenv.hostPlatform.system != "aarch64-linux") "aarch64-linux" - ++ lib.optional (pkgs.stdenv.hostPlatform.system != "riscv64-linux") "riscv64-linux"; - catppuccin.accent = "green"; home-manager.users.sckova = { diff --git a/system/shell/fish.nix b/system/shell/fish.nix index a6b0b92..d65d384 100644 --- a/system/shell/fish.nix +++ b/system/shell/fish.nix @@ -1,4 +1,6 @@ {pkgs, ...}: { + # This following block taken from the wiki: + # https://nixos.wiki/wiki/Fish#Setting_fish_as_your_shell programs.bash = { interactiveShellInit = '' if [[ $(${pkgs.procps}/bin/ps --no-header --pid=$PPID --format=comm) != "fish" && -z ''${BASH_EXECUTION_STRING} ]] diff --git a/system/tailscale/default.nix b/system/tailscale/default.nix index 9ea4c31..3c99319 100644 --- a/system/tailscale/default.nix +++ b/system/tailscale/default.nix @@ -1,6 +1,8 @@ +# The goal of this configuration is to make it so you can write systemd units that +# can wait until tailscale is up and connected, by putting After=tailscaled.service +# in their unit file. # https://github.com/tailscale/tailscale/issues/11504#issuecomment-2113331262 { - config, pkgs, lib, ... diff --git a/system/widevine/default.nix b/system/widevine/default.nix index 6d013fe..127667e 100644 --- a/system/widevine/default.nix +++ b/system/widevine/default.nix @@ -1,7 +1,8 @@ +# https://github.com/nix-community/nixos-apple-silicon/issues/145 +# This should work with both x86_64 and aarch64. (hopefully) { config, lib, - pkgs, ... }: { nixpkgs.overlays = lib.mkIf (config.nixpkgs.hostPlatform.isLinux) [ From 4e31739fa8fb58688b7ce37d3acb0d4d5ce9c29f Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Tue, 13 Jan 2026 20:04:40 -0500 Subject: [PATCH 180/282] remove v4l2loopback --- hardware/alien/default.nix | 13 ------------- hardware/peach/default.nix | 14 -------------- hardware/vm-generic/default.nix | 4 ---- 3 files changed, 31 deletions(-) diff --git a/hardware/alien/default.nix b/hardware/alien/default.nix index c1eca81..996d2bb 100755 --- a/hardware/alien/default.nix +++ b/hardware/alien/default.nix @@ -19,19 +19,6 @@ "usbhid" "sd_mod" ]; - boot.initrd.kernelModules = []; - boot.kernelModules = [ - "v4l2loopback" - "snd-aloop" - "kvm-intel" - ]; - boot.extraModulePackages = with config.boot.kernelPackages; [v4l2loopback.out]; - boot.extraModprobeConfig = '' - # exclusive_caps: Skype, Zoom, Teams etc. will only show device when actually streaming - # card_label: Name of virtual camera, how it'll show up in Skype, Zoom, Teams - # https://github.com/umlaeute/v4l2loopback - options v4l2loopback exclusive_caps=1 card_label="Virtual Camera" - ''; fileSystems."/" = { device = "/dev/disk/by-uuid/d83ec136-df01-4b9e-a523-6d75726fb904"; diff --git a/hardware/peach/default.nix b/hardware/peach/default.nix index 5aaa82b..bd17956 100644 --- a/hardware/peach/default.nix +++ b/hardware/peach/default.nix @@ -2,9 +2,7 @@ # and may be overwritten by future invocations. Please make changes # to /etc/nixos/configuration.nix instead. { - config, lib, - pkgs, modulesPath, ... }: { @@ -13,18 +11,6 @@ ]; boot.initrd.availableKernelModules = ["sdhci_pci"]; - boot.initrd.kernelModules = []; - boot.kernelModules = [ - "v4l2loopback" - "snd-aloop" - ]; - boot.extraModulePackages = with config.boot.kernelPackages; [v4l2loopback.out]; - boot.extraModprobeConfig = '' - # exclusive_caps: Skype, Zoom, Teams etc. will only show device when actually streaming - # card_label: Name of virtual camera, how it'll show up in Skype, Zoom, Teams - # https://github.com/umlaeute/v4l2loopback - options v4l2loopback exclusive_caps=1 card_label="Virtual Camera" - ''; fileSystems."/" = { device = "/dev/disk/by-label/NixOS"; diff --git a/hardware/vm-generic/default.nix b/hardware/vm-generic/default.nix index 21f3620..658f680 100644 --- a/hardware/vm-generic/default.nix +++ b/hardware/vm-generic/default.nix @@ -3,16 +3,12 @@ # to /etc/nixos/configuration.nix instead. { lib, - pkgs, system, ... }: { imports = []; boot.initrd.availableKernelModules = ["ehci_pci" "xhci_pci" "usbhid" "sr_mod"]; - boot.initrd.kernelModules = []; - boot.kernelModules = []; - boot.extraModulePackages = []; fileSystems."/" = { device = "/dev/disk/by-label/nixos"; From 9248f86afdd4b56bb557e6e48d9c48b0ec5dd15c Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Wed, 14 Jan 2026 11:50:02 -0500 Subject: [PATCH 181/282] asahi: switch to fairydust kernel, alien: switch to vanilla kernel --- .gitignore | 1 + packages/linux-fairydust/package.nix | 68 ++++++++++++++++++++++++++++ packages/overlay.nix | 1 + system/default.nix | 11 +++-- system/hosts/alien/default.nix | 6 +-- 5 files changed, 79 insertions(+), 8 deletions(-) create mode 100644 packages/linux-fairydust/package.nix diff --git a/.gitignore b/.gitignore index a414925..871886a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ system/hosts/peach/firmware/* result +*.qcow2 diff --git a/packages/linux-fairydust/package.nix b/packages/linux-fairydust/package.nix new file mode 100644 index 0000000..7b8a420 --- /dev/null +++ b/packages/linux-fairydust/package.nix @@ -0,0 +1,68 @@ +{ + lib, + callPackage, + linuxPackagesFor, + _kernelPatches ? [], +}: let + linux-asahi-pkg = { + stdenv, + lib, + fetchFromGitHub, + buildLinux, + ... + }: + buildLinux rec { + inherit stdenv lib; + + pname = "linux-asahi-fairydust"; + version = "6.18.2"; + modDirVersion = version; + extraMeta.branch = "6.18"; + + src = fetchFromGitHub { + owner = "AsahiLinux"; + repo = "linux"; + rev = "21a493172ce13c95df12b42faddfca515388d80c"; + hash = "sha256-UCQs+VYIWZMYiizkLWdPjSipBuOB1ahZx2oy5VuEjPI="; + }; + + kernelPatches = + [ + { + name = "Asahi config"; + patch = null; + structuredExtraConfig = with lib.kernel; { + # Needed for GPU + ARM64_16K_PAGES = yes; + + ARM64_MEMORY_MODEL_CONTROL = yes; + ARM64_ACTLR_STATE = yes; + + # Might lead to the machine rebooting if not loaded soon enough + APPLE_WATCHDOG = yes; + + APPLE_MAILBOX = yes; + + APPLE_RTKIT = yes; + APPLE_RTKIT_HELPER = yes; + RUST_APPLE_RTKIT = yes; + RUST_FW_LOADER_ABSTRACTIONS = yes; + + # Can not be built as a module, defaults to no + APPLE_M1_CPU_PMU = yes; + + # Defaults to 'y', but we want to allow the user to set options in modprobe.d + HID_APPLE = module; + + APPLE_PMGR_MISC = yes; + APPLE_PMGR_PWRSTATE = yes; + }; + features.rust = true; + } + ] + ++ _kernelPatches; + }; + + linux-asahi = callPackage linux-asahi-pkg {}; +in + lib.recurseIntoAttrs (linuxPackagesFor linux-asahi) diff --git a/packages/overlay.nix b/packages/overlay.nix index 3c96b06..ac79f84 100644 --- a/packages/overlay.nix +++ b/packages/overlay.nix @@ -1,3 +1,4 @@ final: prev: { spotify-webapp = prev.callPackage (builtins.path {path = ./spotify/package.nix;}) {}; + linux-asahi = prev.callPackage (builtins.path {path = ./linux-fairydust/package.nix;}) {}; } diff --git a/system/default.nix b/system/default.nix index 19797db..519b78d 100755 --- a/system/default.nix +++ b/system/default.nix @@ -82,11 +82,12 @@ services = { desktopManager.plasma6.enable = true; displayManager = { - sddm = { - enable = true; - wayland.enable = true; - enableHidpi = true; - }; + # sddm = { + # enable = true; + # wayland.enable = true; + # enableHidpi = true; + # }; + gdm.enable = true; defaultSession = "niri"; }; diff --git a/system/hosts/alien/default.nix b/system/hosts/alien/default.nix index a6d1a10..c07b808 100644 --- a/system/hosts/alien/default.nix +++ b/system/hosts/alien/default.nix @@ -26,10 +26,11 @@ catppuccin.accent = "blue"; boot.loader.systemd-boot.consoleMode = "max"; - # boot.kernelPackages = pkgs.linuxPackages; + boot.kernelPackages = pkgs.linuxPackages; # let's use the CachyOS kernel instead! - boot.kernelPackages = pkgs.cachyosKernels.linuxPackages-cachyos-lts; + # boot.kernelPackages = pkgs.cachyosKernels.linuxPackages-cachyos-lts; + # hardware.nvidia.package = config.boot.kernelPackages.nvidiaPackages.stable; programs = { gamescope = { @@ -68,7 +69,6 @@ powerManagement.enable = false; nvidiaSettings = false; open = false; - package = config.boot.kernelPackages.nvidiaPackages.stable; }; services.sunshine = { From 8c3995a9ae3fe844c6b8b07d60db2d62b77b9edc Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Wed, 14 Jan 2026 11:58:34 -0500 Subject: [PATCH 182/282] use sddm for alien and gdm for peach (fairydust problem) --- system/default.nix | 2 -- system/hosts/alien/default.nix | 5 +++++ system/hosts/peach/default.nix | 1 + 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/system/default.nix b/system/default.nix index 519b78d..767ec8e 100755 --- a/system/default.nix +++ b/system/default.nix @@ -87,8 +87,6 @@ # wayland.enable = true; # enableHidpi = true; # }; - gdm.enable = true; - defaultSession = "niri"; }; diff --git a/system/hosts/alien/default.nix b/system/hosts/alien/default.nix index c07b808..2de8a80 100644 --- a/system/hosts/alien/default.nix +++ b/system/hosts/alien/default.nix @@ -54,6 +54,11 @@ enable = false; user = "sckova"; }; + sddm = { + enable = true; + wayland.enable = true; + enableHidpi = true; + }; }; environment = { diff --git a/system/hosts/peach/default.nix b/system/hosts/peach/default.nix index b241715..c1eecbe 100644 --- a/system/hosts/peach/default.nix +++ b/system/hosts/peach/default.nix @@ -4,6 +4,7 @@ boot.kernelParams = ["apple_dcp.show_notch=1"]; catppuccin.accent = "peach"; + services.displayManager.gdm.enable = true; hardware.asahi = { enable = true; From 0ac2d4813482b812e547dc3b8b954a96b5a0f198 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Wed, 14 Jan 2026 12:11:45 -0500 Subject: [PATCH 183/282] peach: update fairydust to 6.18.4 --- home/hosts/alien/default.nix | 9 --------- home/tiling/niri/niri.nix | 15 ++++++++++++++- packages/linux-fairydust/package.nix | 6 +++--- system/default.nix | 2 +- 4 files changed, 18 insertions(+), 14 deletions(-) diff --git a/home/hosts/alien/default.nix b/home/hosts/alien/default.nix index 6c956c3..3b78219 100644 --- a/home/hosts/alien/default.nix +++ b/home/hosts/alien/default.nix @@ -24,15 +24,6 @@ enableDdcSupport = true; }; - programs.niri.settings.outputs."DP-1" = { - mode = { - width = 3840; - height = 2160; - refresh = 143.999; - }; - scale = 1.5; - }; - programs.spicetify = let spicePkgs = spicetify-nix.legacyPackages.${pkgs.stdenv.hostPlatform.system}; in { diff --git a/home/tiling/niri/niri.nix b/home/tiling/niri/niri.nix index 5b82df5..afa3f72 100644 --- a/home/tiling/niri/niri.nix +++ b/home/tiling/niri/niri.nix @@ -54,7 +54,20 @@ scale = 1.75; }; "HDMI-A-1" = { - scale = 2; + mode = { + width = 3840; + height = 2160; + refresh = 144.000; + }; + scale = 1.5; + }; + "DP-1" = { + mode = { + width = 3840; + height = 2160; + refresh = 143.999; + }; + scale = 1.5; }; }; cursor = { diff --git a/packages/linux-fairydust/package.nix b/packages/linux-fairydust/package.nix index 7b8a420..0838fe0 100644 --- a/packages/linux-fairydust/package.nix +++ b/packages/linux-fairydust/package.nix @@ -15,15 +15,15 @@ inherit stdenv lib; pname = "linux-asahi-fairydust"; - version = "6.18.2"; + version = "6.18.4"; modDirVersion = version; extraMeta.branch = "6.18"; src = fetchFromGitHub { owner = "AsahiLinux"; repo = "linux"; - rev = "21a493172ce13c95df12b42faddfca515388d80c"; - hash = "sha256-UCQs+VYIWZMYiizkLWdPjSipBuOB1ahZx2oy5VuEjPI="; + rev = "19a39556851eb80470b760452f946b8cac046363"; + hash = "sha256-86TT1VcBAYB66My5QqMI5xsa3IMzNKrL/zkhEGtRvnI="; }; kernelPatches = diff --git a/system/default.nix b/system/default.nix index 767ec8e..647ead5 100755 --- a/system/default.nix +++ b/system/default.nix @@ -22,7 +22,7 @@ timeout = 3; systemd-boot = { enable = true; - configurationLimit = 10; + configurationLimit = 3; }; efi = { canTouchEfiVariables = false; From 5fd13d5945d53a9c88fa97c5da64095be5f13e4f Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Wed, 14 Jan 2026 12:38:57 -0500 Subject: [PATCH 184/282] write kitty's color theme ourselves --- home/terminal/kitty/default.nix | 103 +++++++++++++++++++++++++++----- 1 file changed, 89 insertions(+), 14 deletions(-) diff --git a/home/terminal/kitty/default.nix b/home/terminal/kitty/default.nix index 7b07b49..3e5ecb6 100644 --- a/home/terminal/kitty/default.nix +++ b/home/terminal/kitty/default.nix @@ -3,23 +3,93 @@ pkgs, ... }: let - catppuccin-kitty = pkgs.fetchFromGitHub { - owner = "catppuccin"; - repo = "kitty"; - rev = "b14e8385c827f2d41660b71c7fec1e92bdcf2676"; - sha256 = "sha256-59ON7CzVgfZUo7F81qQZQ1r6kpcjR3OPvTl99gzDP8E="; - }; + colors = pkgs.catppuccin.hex.${config.catppuccin.flavor}; + accent = colors.${config.catppuccin.accent}; - mergedConfig = pkgs.runCommand "mergedConfig" {} '' - mkdir -p $out - ${pkgs.gnused}/bin/sed 's/#cba6f7/${ - pkgs.catppuccin.${config.catppuccin.flavor}.${config.catppuccin.accent} - }/g' ${catppuccin-kitty}/themes/${config.catppuccin.flavor}.conf > \ - $out/${config.catppuccinUpper.flavor}${config.catppuccinUpper.accent}.conf + # Map Catppuccin colors to Kitty theme structure + kitty-colors = '' + # vim:ft=kitty + ## name: Kova's Nixified Kitty + ## author: Catppuccin Org & sckova + ## license: MIT + ## upstream: https://github.com/catppuccin/kitty + ## blurb: The theme generated from the NixOS configuration! + + # The basic colors + foreground ${colors.text} + background ${colors.base} + selection_foreground ${colors.base} + selection_background ${colors.rosewater} + + # Cursor colors + cursor ${colors.rosewater} + cursor_text_color ${colors.base} + + # URL underline color when hovering with mouse + url_color ${colors.rosewater} + + # Kitty window border colors + active_border_color ${accent} + inactive_border_color ${colors.overlay0} + bell_border_color ${colors.yellow} + + # Tab bar colors + active_tab_foreground ${colors.crust} + active_tab_background ${accent} + inactive_tab_foreground ${colors.text} + inactive_tab_background ${colors.mantle} + tab_bar_background ${colors.crust} + + # Colors for marks (marked text in the terminal) + mark1_foreground ${colors.base} + mark1_background ${accent} + mark2_foreground ${colors.base} + mark2_background ${colors.blue} + mark3_foreground ${colors.base} + mark3_background ${colors.sky} + + # The 16 terminal colors + # black + color0 ${colors.surface1} + color8 ${colors.surface2} + + # red + color1 ${colors.red} + color9 ${colors.red} + + # green + color2 ${colors.green} + color10 ${colors.green} + + # yellow + color3 ${colors.yellow} + color11 ${colors.yellow} + + # blue + color4 ${colors.blue} + color12 ${colors.blue} + + # magenta + color5 ${colors.pink} + color13 ${colors.pink} + + # cyan + color6 ${colors.teal} + color14 ${colors.teal} + + # white + color7 ${colors.subtext1} + color15 ${colors.subtext0} ''; + + kitty-colors-file = pkgs.writeTextFile { + name = "kitty-colors"; + text = kitty-colors; + destination = "/kitty-colors.conf"; + }; in { home.file.".config/kitty/themes" = { - source = mergedConfig; + source = kitty-colors-file; recursive = true; }; @@ -37,8 +107,11 @@ in { size = config.userOptions.fontMono.size; }; shellIntegration.enableFishIntegration = true; + keybindings = { + "ctrl+k" = ''combine : clear_terminal scroll active : clear_terminal scrollback active''; + }; settings = { - include = "/home/${config.userOptions.username}/.config/kitty/themes/${config.catppuccinUpper.flavor}${config.catppuccinUpper.accent}.conf"; + include = "/home/${config.userOptions.username}/.config/kitty/themes/kitty-colors.conf"; scrollback_lines = 10000; enable_audio_bell = false; update_check_interval = 0; @@ -50,6 +123,8 @@ in { tab_bar_style = "powerline"; tab_powerline_style = "slanted"; mouse_hide_wait = "-1.0"; + wayland_titlebar_color = "system"; + macos_titlebar_color = "system"; }; }; } From 0690080aea224553d205d859cf76c90025784b61 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Wed, 14 Jan 2026 14:50:25 -0500 Subject: [PATCH 185/282] configure firefoxpwa --- home/default.nix | 2 - home/graphical/firefox/default.nix | 394 ++++++++++++++++------------- 2 files changed, 217 insertions(+), 179 deletions(-) diff --git a/home/default.nix b/home/default.nix index a53fc0a..4802517 100755 --- a/home/default.nix +++ b/home/default.nix @@ -170,9 +170,7 @@ input-leap libreoffice-qt-fresh # nur.repos.forkprince.helium-nightly - bitwarden-desktop qbittorrent - whatsapp-electron nautilus # gui applications ( multimedia ) diff --git a/home/graphical/firefox/default.nix b/home/graphical/firefox/default.nix index 45a1c12..2225bf3 100644 --- a/home/graphical/firefox/default.nix +++ b/home/graphical/firefox/default.nix @@ -52,191 +52,231 @@ force = true; }; - programs.firefox = { - enable = true; - package = pkgs.firefox.override { - nativeMessagingHosts = with pkgs; [ - firefoxpwa - ]; - }; - policies = { - BlockAboutConfig = false; - DefaultDownloadDirectory = "\${home}/Downloads"; - # Check about:support for extension/add-on ID strings. - # Valid strings for installation_mode are "allowed", "blocked", - # "force_installed" and "normal_installed". - ExtensionSettings = { - "*" = { - "installation_mode" = "blocked"; - }; - "uBlock0@raymondhill.net" = { - installation_mode = "allowed"; - }; - "gdpr@cavi.au.dk" = { - installation_mode = "allowed"; - }; - "{5cce4ab5-3d47-41b9-af5e-8203eea05245}" = { - installation_mode = "allowed"; - }; - "plasma-browser-integration@kde.org" = { - installation_mode = "allowed"; - }; - "jid1-MnnxcxisBPnSXQ@jetpack" = { - installation_mode = "allowed"; - }; - "firefoxpwa@filips.si" = { - installation_mode = "allowed"; - }; - "sponsorBlocker@ajay.app" = { - installation_mode = "allowed"; - }; - "{7a7a4a92-a2a0-41d1-9fd7-1e92480d612d}" = { - installation_mode = "allowed"; - }; - "{aecec67f-0d10-4fa7-b7c7-609a2db280cf}" = { - installation_mode = "allowed"; - }; - "{446900e4-71c2-419f-a6a7-df9c091e268b}" = { - installation_mode = "allowed"; + home.file.".local/share/firefoxpwa/profiles/01KEYXH9TC4B54J5CTPNE75JP0/prefs.js" = { + text = '' + user_pref("firefoxpwa.alwaysUseNativeWindowControls", true); + user_pref("firefoxpwa.displayUrlBar", 1); + user_pref("firefoxpwa.enableHidingIconBar", true); + user_pref("firefoxpwa.dynamicWindowTitle", true); + user_pref("ui.key.menuAccessKeyFocuses", false); + user_pref("browser.aboutConfig.showWarning", false); + user_pref("browser.ml.enable", false); + ''; + force = true; + }; + + programs = { + firefoxpwa = { + enable = true; + settings.config = { + always_patch = false; + runtime_enable_wayland = true; + runtime_use_xinput2 = true; + runtime_use_portals = true; + use_linked_runtime = false; + }; + profiles = { + "01KEYXH9TC4B54J5CTPNE75JP0".sites."01KEYXHK7XQQJ0M3J7SX4VD9PG" = { + name = "WhatsApp"; + url = "https://web.whatsapp.com/"; + manifestUrl = "https://web.whatsapp.com/data/manifest.json"; + desktopEntry = { + icon = "${pkgs.colloid-icon-theme}/share/icons/Colloid/apps/scalable/whatsapp.svg"; + categories = [ + "Network" + "Chat" + "Telephony" + ]; + }; }; }; - DisableTelemetry = true; - DisableFirefoxStudies = true; - EnableTrackingProtection = { - Value = true; - Locked = true; - Cryptomining = true; - Fingerprinting = true; - }; - DisablePocket = true; - DisableFirefoxAccounts = false; - DisableAccounts = false; - DisableFirefoxScreenshots = true; - OverrideFirstRunPage = ""; - OverridePostUpdatePage = ""; - DontCheckDefaultBrowser = true; - DisplayBookmarksToolbar = "newtab"; # alternatives: "always" or "newtab" - DisplayMenuBar = "always"; # alternatives: "always", "never" or "default-on" - SearchBar = "unified"; # alternative: "separate" }; - profiles = { - default = { - id = 0; - name = "default"; - isDefault = true; - extensions = { - force = true; - packages = with pkgs.nur.repos.rycee.firefox-addons; [ - ublock-origin - plasma-integration - stylus - violentmonkey - consent-o-matic - privacy-badger - sponsorblock - pwas-for-firefox - control-panel-for-twitter - bitwarden - ]; - settings = { - "{7a7a4a92-a2a0-41d1-9fd7-1e92480d612d}".settings = { - force = true; - settings = { - dbInChromeStorage = true; + firefox = { + enable = true; + package = pkgs.firefox.override { + nativeMessagingHosts = with pkgs; [ + firefoxpwa + ]; + }; + policies = { + BlockAboutConfig = false; + DefaultDownloadDirectory = "\${home}/Downloads"; + # Check about:support for extension/add-on ID strings. + # Valid strings for installation_mode are "allowed", "blocked", + # "force_installed" and "normal_installed". + ExtensionSettings = { + "*" = { + "installation_mode" = "blocked"; + }; + "uBlock0@raymondhill.net" = { + installation_mode = "allowed"; + }; + "gdpr@cavi.au.dk" = { + installation_mode = "allowed"; + }; + "{5cce4ab5-3d47-41b9-af5e-8203eea05245}" = { + installation_mode = "allowed"; + }; + "plasma-browser-integration@kde.org" = { + installation_mode = "allowed"; + }; + "jid1-MnnxcxisBPnSXQ@jetpack" = { + installation_mode = "allowed"; + }; + "firefoxpwa@filips.si" = { + installation_mode = "allowed"; + }; + "sponsorBlocker@ajay.app" = { + installation_mode = "allowed"; + }; + "{7a7a4a92-a2a0-41d1-9fd7-1e92480d612d}" = { + installation_mode = "allowed"; + }; + "{aecec67f-0d10-4fa7-b7c7-609a2db280cf}" = { + installation_mode = "allowed"; + }; + "{446900e4-71c2-419f-a6a7-df9c091e268b}" = { + installation_mode = "allowed"; + }; + }; + DisableTelemetry = true; + DisableFirefoxStudies = true; + EnableTrackingProtection = { + Value = true; + Locked = true; + Cryptomining = true; + Fingerprinting = true; + }; + DisablePocket = true; + DisableFirefoxAccounts = false; + DisableAccounts = false; + DisableFirefoxScreenshots = true; + OverrideFirstRunPage = ""; + OverridePostUpdatePage = ""; + DontCheckDefaultBrowser = true; + DisplayBookmarksToolbar = "newtab"; # alternatives: "always" or "newtab" + DisplayMenuBar = "always"; # alternatives: "always", "never" or "default-on" + SearchBar = "unified"; # alternative: "separate" + }; + profiles = { + default = { + id = 0; + name = "default"; + isDefault = true; + extensions = { + force = true; + packages = with pkgs.nur.repos.rycee.firefox-addons; [ + ublock-origin + plasma-integration + stylus + violentmonkey + consent-o-matic + privacy-badger + sponsorblock + pwas-for-firefox + control-panel-for-twitter + bitwarden + ]; + settings = { + "{7a7a4a92-a2a0-41d1-9fd7-1e92480d612d}".settings = { + force = true; + settings = { + dbInChromeStorage = true; + }; }; }; }; - }; - settings = { - "extensions.autoDisableScopes" = 0; # enables all extensions automatically - "xpinstall.signatures.required" = false; - "extensions.update.autoUpdateDefault" = false; - "extensions.update.enabled" = false; - "browser.search.defaultenginename" = "google"; - "browser.search.order.1" = "google"; - "browser.toolbars.bookmarks.visibility" = "newtab"; + settings = { + "extensions.autoDisableScopes" = 0; # enables all extensions automatically + "xpinstall.signatures.required" = false; + "extensions.update.autoUpdateDefault" = false; + "extensions.update.enabled" = false; + "browser.search.defaultenginename" = "google"; + "browser.search.order.1" = "google"; + "browser.toolbars.bookmarks.visibility" = "newtab"; - "signon.rememberSignons" = false; - "widget.use-xdg-desktop-portal.file-picker" = 1; - "browser.aboutConfig.showWarning" = false; - "browser.compactmode.show" = true; - "browser.cache.disk.enable" = true; # Set to false if you have a HDD - "browser.warnOnQuitShortcut" = false; - "toolkit.legacyUserProfileCustomizations.stylesheets" = true; - "widget.disable-workspace-management" = true; - "browser.contentblocking.category" = { - Value = "strict"; - Status = "locked"; + "signon.rememberSignons" = false; + "widget.use-xdg-desktop-portal.file-picker" = 1; + "browser.aboutConfig.showWarning" = false; + "browser.compactmode.show" = true; + "browser.cache.disk.enable" = true; # Set to false if you have a HDD + "browser.warnOnQuitShortcut" = false; + "toolkit.legacyUserProfileCustomizations.stylesheets" = true; + "widget.disable-workspace-management" = true; + "browser.contentblocking.category" = { + Value = "strict"; + Status = "locked"; + }; + "widget.gtk.global-menu.enabled" = true; + "widget.gtk.global-menu.wayland.enabled" = true; + "browser.tabs.inTitlebar" = 0; + "extensions.pocket.enabled" = false; + "extensions.screenshots.disabled" = true; + "browser.topsites.contile.enabled" = false; + "browser.formfill.enable" = false; + "browser.search.suggest.enabled" = false; + "browser.search.suggest.enabled.private" = false; + "browser.urlbar.suggest.searches" = false; + "browser.urlbar.showSearchSuggestionsFirst" = false; + "browser.newtabpage.activity-stream.feeds.section.topstories" = false; + "browser.newtabpage.activity-stream.feeds.snippets" = false; + "browser.newtabpage.activity-stream.feeds.topsites" = false; + "browser.newtabpage.activity-stream.section.highlights.includePocket" = false; + "browser.newtabpage.activity-stream.section.highlights.includeBookmarks" = false; + "browser.newtabpage.activity-stream.section.highlights.includeDownloads" = false; + "browser.newtabpage.activity-stream.section.highlights.includeVisited" = false; + "browser.newtabpage.activity-stream.showSponsored" = false; + "browser.newtabpage.activity-stream.system.showSponsored" = false; + "browser.newtabpage.activity-stream.showSponsoredTopSites" = false; + "browser.newtabpage.activity-stream.showWeather" = false; + + # Disable Firefox's machine learning (AI) features + "browser.ml.enable" = false; + + # For browser toolbox/live editing user CSS + "devtools.chrome.enabled" = true; + "devtools.debugger.remote-enabled" = true; + + # Vertical tabs + "sidebar.verticalTabs" = true; + "sidebar.verticalTabs.dragToPinPromo.dismissed" = true; + # these are ordered right to left for some fucking reason + "browser.uiCustomization.navBarWhenVerticalTabs" = [ + "unified-extensions-button" + "fxa-toolbar-menu-button" + "downloads-button" + "urlbar-container" + "stop-reload-button" + "forward-button" + "back-button" + ]; + }; + bookmarks = { + force = true; + settings = [ + { + name = "Nix sites"; + toolbar = true; + bookmarks = [ + { + name = "NixOS"; + url = "https://nixos.org/"; + } + { + name = "Home Manager Appendix A"; + url = "https://nix-community.github.io/home-manager/options.xhtml"; + } + ]; + } + ]; + }; + search = { + force = true; + default = "google"; + order = [ + "google" + ]; }; - "widget.gtk.global-menu.enabled" = true; - "widget.gtk.global-menu.wayland.enabled" = true; - "browser.tabs.inTitlebar" = 0; - "extensions.pocket.enabled" = false; - "extensions.screenshots.disabled" = true; - "browser.topsites.contile.enabled" = false; - "browser.formfill.enable" = false; - "browser.search.suggest.enabled" = false; - "browser.search.suggest.enabled.private" = false; - "browser.urlbar.suggest.searches" = false; - "browser.urlbar.showSearchSuggestionsFirst" = false; - "browser.newtabpage.activity-stream.feeds.section.topstories" = false; - "browser.newtabpage.activity-stream.feeds.snippets" = false; - "browser.newtabpage.activity-stream.feeds.topsites" = false; - "browser.newtabpage.activity-stream.section.highlights.includePocket" = false; - "browser.newtabpage.activity-stream.section.highlights.includeBookmarks" = false; - "browser.newtabpage.activity-stream.section.highlights.includeDownloads" = false; - "browser.newtabpage.activity-stream.section.highlights.includeVisited" = false; - "browser.newtabpage.activity-stream.showSponsored" = false; - "browser.newtabpage.activity-stream.system.showSponsored" = false; - "browser.newtabpage.activity-stream.showSponsoredTopSites" = false; - "browser.newtabpage.activity-stream.showWeather" = false; - - # Disable Firefox's machine learning (AI) features - "browser.ml.enable" = false; - - # For browser toolbox/live editing user CSS - "devtools.chrome.enabled" = true; - "devtools.debugger.remote-enabled" = true; - - # Vertical tabs - "sidebar.verticalTabs" = true; - "sidebar.verticalTabs.dragToPinPromo.dismissed" = true; - # these are ordered right to left for some fucking reason - "browser.uiCustomization.navBarWhenVerticalTabs" = [ - "unified-extensions-button" - "fxa-toolbar-menu-button" - "downloads-button" - "urlbar-container" - "stop-reload-button" - "forward-button" - "back-button" - ]; - }; - bookmarks = { - force = true; - settings = [ - { - name = "Nix sites"; - toolbar = true; - bookmarks = [ - { - name = "NixOS"; - url = "https://nixos.org/"; - } - { - name = "Home Manager Appendix A"; - url = "https://nix-community.github.io/home-manager/options.xhtml"; - } - ]; - } - ]; - }; - search = { - force = true; - default = "google"; - order = [ - "google" - ]; }; }; }; From f7d7dfba5c7084f91432fb79eb407572a5a3d1c0 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Wed, 14 Jan 2026 15:48:07 -0500 Subject: [PATCH 186/282] misc changes --- flake.nix | 2 ++ home/hosts/peach/default.nix | 2 +- home/tiling/niri/noctalia.nix | 4 ++-- .../{linux-fairydust/package.nix => linux-asahi/default.nix} | 0 packages/overlay.nix | 4 ++-- packages/{spotify/package.nix => spotify-webapp/default.nix} | 0 6 files changed, 7 insertions(+), 5 deletions(-) rename packages/{linux-fairydust/package.nix => linux-asahi/default.nix} (100%) rename packages/{spotify/package.nix => spotify-webapp/default.nix} (100%) diff --git a/flake.nix b/flake.nix index 3b0474b..e10b2df 100644 --- a/flake.nix +++ b/flake.nix @@ -124,11 +124,13 @@ substituters = [ "https://attic.xuyh0120.win/lantian" "https://cache.garnix.io" + "https://nixos-apple-silicon.cachix.org" ]; trusted-public-keys = [ "lantian:EeAUQ+W+6r7EtwnmYjeVwx5kOGEBpjlBfPlzGlTNvHc=" "cache.garnix.io:CTFPyKSLcx5RMJKfLo5EEPUObbA78b0YQ2DTCJXqr9g=" + "nixos-apple-silicon.cachix.org-1:8psDu5SA5dAD7qA0zMy5UT292TxeEPzIz8VVEr2Js20=" ]; trusted-users = [ diff --git a/home/hosts/peach/default.nix b/home/hosts/peach/default.nix index c411643..eb1b6ce 100644 --- a/home/hosts/peach/default.nix +++ b/home/hosts/peach/default.nix @@ -15,7 +15,7 @@ asahi-wifisync moonlight-qt - spotify-webapp + # spotify-webapp ]; # https://github.com/YaLTeR/niri/issues/2330#issuecomment-3256864777 diff --git a/home/tiling/niri/noctalia.nix b/home/tiling/niri/noctalia.nix index 35a3581..bcf213f 100644 --- a/home/tiling/niri/noctalia.nix +++ b/home/tiling/niri/noctalia.nix @@ -127,7 +127,7 @@ in { colorizeIcons = false; hideMode = "hidden"; id = "ActiveWindow"; - maxWidth = 375; + maxWidth = 500; scrollingMode = "always"; showIcon = true; useFixedWidth = false; @@ -140,7 +140,7 @@ in { hideMode = "hidden"; hideWhenIdle = false; id = "MediaMini"; - maxWidth = 275; + maxWidth = 300; scrollingMode = "hover"; showAlbumArt = false; showArtistFirst = false; diff --git a/packages/linux-fairydust/package.nix b/packages/linux-asahi/default.nix similarity index 100% rename from packages/linux-fairydust/package.nix rename to packages/linux-asahi/default.nix diff --git a/packages/overlay.nix b/packages/overlay.nix index ac79f84..4a52683 100644 --- a/packages/overlay.nix +++ b/packages/overlay.nix @@ -1,4 +1,4 @@ final: prev: { - spotify-webapp = prev.callPackage (builtins.path {path = ./spotify/package.nix;}) {}; - linux-asahi = prev.callPackage (builtins.path {path = ./linux-fairydust/package.nix;}) {}; + spotify-webapp = final.callPackage ./spotify-webapp {}; + linux-asahi = final.callPackage ./linux-asahi {}; } diff --git a/packages/spotify/package.nix b/packages/spotify-webapp/default.nix similarity index 100% rename from packages/spotify/package.nix rename to packages/spotify-webapp/default.nix From feed61a54fd2034df635ad3a7590f7119e5f6b5e Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Wed, 14 Jan 2026 16:54:50 -0500 Subject: [PATCH 187/282] various catppuccin changes --- home/hosts/peach/default.nix | 13 ++++--------- home/terminal/fish/default.nix | 4 +++- home/terminal/fish/functions/fish-prompt.fish | 6 +++--- system/default.nix | 1 - system/hosts/alien/default.nix | 5 ++++- system/hosts/peach/default.nix | 6 +++++- system/hosts/vm-generic/default.nix | 5 ++++- 7 files changed, 23 insertions(+), 17 deletions(-) diff --git a/home/hosts/peach/default.nix b/home/hosts/peach/default.nix index eb1b6ce..ded2bd7 100644 --- a/home/hosts/peach/default.nix +++ b/home/hosts/peach/default.nix @@ -1,11 +1,7 @@ -{ - config, - pkgs, - ... -}: { +{pkgs, ...}: { catppuccin = { - accent = "peach"; - flavor = "mocha"; + accent = "lavender"; + flavor = "macchiato"; }; home.packages = with pkgs; [ @@ -15,7 +11,6 @@ asahi-wifisync moonlight-qt - # spotify-webapp ]; # https://github.com/YaLTeR/niri/issues/2330#issuecomment-3256864777 @@ -44,7 +39,7 @@ ]; shortcuts = { - # this is really annoying on asahi laptops + # this is really annoying on apple laptops org_kde_powerdevil.Sleep = []; }; diff --git a/home/terminal/fish/default.nix b/home/terminal/fish/default.nix index 8b258ae..6884cd9 100644 --- a/home/terminal/fish/default.nix +++ b/home/terminal/fish/default.nix @@ -41,9 +41,11 @@ text = let flavor = config.catppuccin.flavor; palette = pkgs.catppuccin.bare.${flavor}; + accent = config.catppuccin.accent; in lib.concatStringsSep "\n" ( - lib.mapAttrsToList (name: value: "set -g color_${name} ${value}") palette + (lib.mapAttrsToList (name: value: "set -g color_${name} ${value}") palette) + ++ ["set -g color_accent ${palette.${accent}}"] ); force = true; }; diff --git a/home/terminal/fish/functions/fish-prompt.fish b/home/terminal/fish/functions/fish-prompt.fish index e41395a..568a206 100644 --- a/home/terminal/fish/functions/fish-prompt.fish +++ b/home/terminal/fish/functions/fish-prompt.fish @@ -11,11 +11,11 @@ set -g color_cwd $color_green # Set host color based on hostname if test (hostname) = peach - set -g color_host $color_peach + set -g color_host $color_accent else if test (hostname) = alien - set -g color_host $color_blue + set -g color_host $color_accent else if test (hostname) = vm - set -g color_host $color_green + set -g color_host $color_accent set -g color_cwd normal else if test (uname) = Darwin set -g color_host $color_yellow diff --git a/system/default.nix b/system/default.nix index 647ead5..ee04498 100755 --- a/system/default.nix +++ b/system/default.nix @@ -43,7 +43,6 @@ catppuccin = { enable = true; - flavor = "mocha"; cache.enable = true; }; diff --git a/system/hosts/alien/default.nix b/system/hosts/alien/default.nix index 2de8a80..08cab93 100644 --- a/system/hosts/alien/default.nix +++ b/system/hosts/alien/default.nix @@ -23,7 +23,10 @@ ''; hardware.i2c.enable = true; - catppuccin.accent = "blue"; + catppuccin = { + accent = "blue"; + flavor = "mocha"; + }; boot.loader.systemd-boot.consoleMode = "max"; boot.kernelPackages = pkgs.linuxPackages; diff --git a/system/hosts/peach/default.nix b/system/hosts/peach/default.nix index c1eecbe..59b7c0c 100644 --- a/system/hosts/peach/default.nix +++ b/system/hosts/peach/default.nix @@ -3,7 +3,11 @@ boot.kernelParams = ["apple_dcp.show_notch=1"]; - catppuccin.accent = "peach"; + catppuccin = { + accent = "lavender"; + flavor = "macchiato"; + }; + services.displayManager.gdm.enable = true; hardware.asahi = { diff --git a/system/hosts/vm-generic/default.nix b/system/hosts/vm-generic/default.nix index 0979703..7a6728c 100644 --- a/system/hosts/vm-generic/default.nix +++ b/system/hosts/vm-generic/default.nix @@ -1,7 +1,10 @@ {catppuccin, ...}: { networking.hostName = "vm"; - catppuccin.accent = "green"; + catppuccin = { + accent = "green"; + flavor = "mocha"; + }; home-manager.users.sckova = { imports = [catppuccin.homeModules.catppuccin]; From 51dab1b320ea317bbc649ae356d42e58a7752b29 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Thu, 15 Jan 2026 09:21:06 -0500 Subject: [PATCH 188/282] switch to librewolf & finish its theme --- home/graphical/firefox/chrome/theme/theme.css | 113 +++-------- home/graphical/firefox/default.nix | 188 ++++++++++-------- home/kde/default.nix | 3 +- system/widevine/default.nix | 4 +- 4 files changed, 143 insertions(+), 165 deletions(-) diff --git a/home/graphical/firefox/chrome/theme/theme.css b/home/graphical/firefox/chrome/theme/theme.css index 20fb79d..488676e 100644 --- a/home/graphical/firefox/chrome/theme/theme.css +++ b/home/graphical/firefox/chrome/theme/theme.css @@ -1,109 +1,56 @@ -/* Dark theme */ -@media (prefers-color-scheme: dark) { +@import "../colors.css"; +@media { #nav-bar, #PersonalToolbar { - background-color: rgb(24, 24, 37) !important; + background-color: var(--mantle) !important; } :root { .tabbrowser-tab[selected="true"] .tab-background { - border: 1px solid #313244 !important; + border: 1px solid var(--surface0) !important; } - --toolbar-bgcolor: rgb(24, 24, 37) !important; - --toolbox-non-lwt-bgcolor: rgb(17, 17, 27) !important; - --toolbox-non-lwt-textcolor: rgb(205, 214, 244) !important; - --input-bgcolor: rgb(17, 17, 27) !important; + --toolbar-bgcolor: var(--mantle) !important; + --toolbox-non-lwt-bgcolor: var(--crust) !important; + --toolbox-non-lwt-textcolor: var(--text) !important; + --input-bgcolor: var(--crust) !important; --toolbar-field-background-color: var(--input-bgcolor) !important; - --input-color: rgb(205, 214, 244) !important; + --input-color: var(--text) !important; --toolbar-field-color: var(--input-color) !important; .tab-background[selected]:not([multiselected]) { - outline: 1px solid rgb(49, 50, 68); + outline: 1px solid var(--surface0); outline-offset: -1px; } .tab-background[multiselected] { - --focus-outline-color: rgb(49, 50, 68); + --focus-outline-color: var(--surface0); } - --arrowpanel-background: rgb(49, 50, 68) !important; - --arrowpanel-color: rgb(205, 214, 244) !important; - --toolbarbutton-active-background: rgb(108, 112, 134) !important; + --arrowpanel-background: var(--surface0) !important; + --arrowpanel-color: var(--text) !important; + --toolbarbutton-active-background: var(--overlay0) !important; &:where([tabsintitlebar]) { - --toolbox-non-lwt-bgcolor-inactive: rgb(17, 17, 27) !important; + --toolbox-non-lwt-bgcolor-inactive: var(--crust) !important; } - --toolbarbutton-icon-fill-attention: rgb(205, 214, 244) !important; - --toolbarbutton-icon-fill: rgb(205, 214, 244) !important; - --arrowpanel-border-color: rgb(49, 50, 68) !important; - --urlbarView-highlight-color: rgb(205, 214, 244) !important; - --urlbarView-highlight-background: rgb(108, 112, 134) !important; + --toolbarbutton-icon-fill-attention: var(--text) !important; + --toolbarbutton-icon-fill: var(--text) !important; + --arrowpanel-border-color: var(--surface0) !important; + --urlbarView-highlight-color: var(--text) !important; + --urlbarView-highlight-background: var(--overlay0) !important; #tabbrowser-tabs { - --tab-loading-fill: rgb(205, 214, 244) !important; + --tab-loading-fill: var(--text) !important; } - --tab-selected-bgcolor: rgb(30, 30, 46) !important; - --tab-selected-textcolor: rgb(205, 214, 244) !important; - --chrome-content-separator-color: rgb(49, 50, 68) !important; - --toolbar-field-focus-border-color: rgb(49, 50, 68) !important; - --input-border-color: rgb(24, 24, 37) !important; + --tab-selected-bgcolor: var(--base) !important; + --tab-selected-textcolor: var(--text) !important; + --chrome-content-separator-color: var(--surface0) !important; + --toolbar-field-focus-border-color: var(--surface0) !important; + --input-border-color: var(--mantle) !important; --toolbar-field-border-color: var(--input-border-color) !important; - --toolbar-field-focus-background-color: rgb(30, 30, 46) !important; + --toolbar-field-focus-background-color: var(--base) !important; #urlbar-input:focus::selection, .searchbar-textbox:focus::selection { - color: rgb(49, 50, 68); + color: var(--surface0); } #urlbar-input:focus::selection, .searchbar-textbox:focus::selection { - background-color: rgb(205, 214, 244); + background-color: var(--text); } - --toolbarseparator-color: rgb(205, 214, 244) !important; - } -} - -/* Light theme */ -@media (prefers-color-scheme: light) { - :root { - .tabbrowser-tab[selected="true"] .tab-background { - border: 1px solid #ccd0da !important; - } - --toolbar-bgcolor: rgb(230, 233, 239) !important; - --toolbox-non-lwt-bgcolor: rgb(220, 224, 232) !important; - --toolbox-non-lwt-textcolor: rgb(76, 79, 105) !important; - --input-bgcolor: rgb(220, 224, 232) !important; - --toolbar-field-background-color: var(--input-bgcolor) !important; - --input-color: rgb(76, 79, 105) !important; - --toolbar-field-color: var(--input-color) !important; - .tab-background[selected]:not([multiselected]) { - outline: 1px solid rgb(76, 79, 105); - outline-offset: -1px; - } - .tab-background[multiselected] { - --focus-outline-color: rgb(76, 79, 105); - } - --arrowpanel-background: rgb(239, 241, 245) !important; - --arrowpanel-color: rgb(76, 79, 105) !important; - --toolbarbutton-active-background: rgb(156, 160, 176) !important; - &:where([tabsintitlebar]) { - --toolbox-non-lwt-bgcolor-inactive: rgb(220, 224, 232) !important; - } - --toolbarbutton-icon-fill-attention: rgb(76, 79, 105) !important; - --toolbarbutton-icon-fill: rgb(76, 79, 105) !important; - --arrowpanel-border-color: rgb(76, 79, 105) !important; - --urlbarView-highlight-color: rgb(76, 79, 105) !important; - --urlbarView-highlight-background: rgb(156, 160, 176) !important; - #tabbrowser-tabs { - --tab-loading-fill: rgb(76, 79, 105) !important; - } - --tab-selected-bgcolor: rgb(239, 241, 245) !important; - --tab-selected-textcolor: rgb(76, 79, 105) !important; - --chrome-content-separator-color: rgb(239, 241, 245) !important; - --toolbar-field-focus-border-color: rgb(76, 79, 105) !important; - --input-border-color: rgb(230, 233, 239) !important; - --toolbar-field-border-color: var(--input-border-color) !important; - --toolbar-field-focus-background-color: rgb(239, 241, 245) !important; - #urlbar-input:focus::selection, - .searchbar-textbox:focus::selection { - color: rgb(204, 208, 218); - } - #urlbar-input:focus::selection, - .searchbar-textbox:focus::selection { - background-color: rgb(76, 79, 105); - } - --toolbarseparator-color: rgb(76, 79, 105) !important; + --toolbarseparator-color: var(--text) !important; } } diff --git a/home/graphical/firefox/default.nix b/home/graphical/firefox/default.nix index 2225bf3..cf91304 100644 --- a/home/graphical/firefox/default.nix +++ b/home/graphical/firefox/default.nix @@ -3,50 +3,47 @@ { pkgs, config, - lib, ... }: { - home.file.".mozilla/firefox/default/chrome/theme" = { - source = ./chrome/theme; + home.file.".librewolf/default/chrome/" = { + source = ./chrome; force = true; recursive = true; }; - home.file.".mozilla/firefox/default/chrome/userChrome.css" = { - source = ./chrome/userChrome.css; - force = true; - }; - - home.file.".mozilla/firefox/default/chrome/colors.css" = { + home.file.".librewolf/default/chrome/colors.css" = let + color = pkgs.catppuccin.rgb.${config.catppuccin.flavor}; + accent = color.${config.catppuccin.accent}; + in { text = '' * { - --accent: ${pkgs.catppuccin.rgb.${config.catppuccin.flavor}.${config.catppuccin.accent}}; - --rosewater: ${pkgs.catppuccin.rgb.${config.catppuccin.flavor}.rosewater}; - --flamingo: ${pkgs.catppuccin.rgb.${config.catppuccin.flavor}.flamingo}; - --pink: ${pkgs.catppuccin.rgb.${config.catppuccin.flavor}.pink}; - --mauve: ${pkgs.catppuccin.rgb.${config.catppuccin.flavor}.mauve}; - --red: ${pkgs.catppuccin.rgb.${config.catppuccin.flavor}.red}; - --maroon: ${pkgs.catppuccin.rgb.${config.catppuccin.flavor}.maroon}; - --peach: ${pkgs.catppuccin.rgb.${config.catppuccin.flavor}.peach}; - --yellow: ${pkgs.catppuccin.rgb.${config.catppuccin.flavor}.yellow}; - --green: ${pkgs.catppuccin.rgb.${config.catppuccin.flavor}.green}; - --teal: ${pkgs.catppuccin.rgb.${config.catppuccin.flavor}.teal}; - --sky: ${pkgs.catppuccin.rgb.${config.catppuccin.flavor}.sky}; - --sapphire: ${pkgs.catppuccin.rgb.${config.catppuccin.flavor}.sapphire}; - --blue: ${pkgs.catppuccin.rgb.${config.catppuccin.flavor}.blue}; - --lavender: ${pkgs.catppuccin.rgb.${config.catppuccin.flavor}.lavender}; - --text: ${pkgs.catppuccin.rgb.${config.catppuccin.flavor}.text}; - --subtext1: ${pkgs.catppuccin.rgb.${config.catppuccin.flavor}.subtext1}; - --subtext0: ${pkgs.catppuccin.rgb.${config.catppuccin.flavor}.subtext0}; - --overlay2: ${pkgs.catppuccin.rgb.${config.catppuccin.flavor}.overlay2}; - --overlay1: ${pkgs.catppuccin.rgb.${config.catppuccin.flavor}.overlay1}; - --overlay0: ${pkgs.catppuccin.rgb.${config.catppuccin.flavor}.overlay0}; - --surface2: ${pkgs.catppuccin.rgb.${config.catppuccin.flavor}.surface2}; - --surface1: ${pkgs.catppuccin.rgb.${config.catppuccin.flavor}.surface1}; - --surface0: ${pkgs.catppuccin.rgb.${config.catppuccin.flavor}.surface0}; - --base: ${pkgs.catppuccin.rgb.${config.catppuccin.flavor}.base}; - --mantle: ${pkgs.catppuccin.rgb.${config.catppuccin.flavor}.mantle}; - --crust: ${pkgs.catppuccin.rgb.${config.catppuccin.flavor}.crust}; + --accent: ${accent}; + --rosewater: ${color.rosewater}; + --flamingo: ${color.flamingo}; + --pink: ${color.pink}; + --mauve: ${color.mauve}; + --red: ${color.red}; + --maroon: ${color.maroon}; + --peach: ${color.peach}; + --yellow: ${color.yellow}; + --green: ${color.green}; + --teal: ${color.teal}; + --sky: ${color.sky}; + --sapphire: ${color.sapphire}; + --blue: ${color.blue}; + --lavender: ${color.lavender}; + --text: ${color.text}; + --subtext1: ${color.subtext1}; + --subtext0: ${color.subtext0}; + --overlay2: ${color.overlay2}; + --overlay1: ${color.overlay1}; + --overlay0: ${color.overlay0}; + --surface2: ${color.surface2}; + --surface1: ${color.surface1}; + --surface0: ${color.surface0}; + --base: ${color.base}; + --mantle: ${color.mantle}; + --crust: ${color.crust}; } ''; force = true; @@ -91,9 +88,9 @@ }; }; }; - firefox = { + librewolf = { enable = true; - package = pkgs.firefox.override { + package = pkgs.librewolf.override { nativeMessagingHosts = with pkgs; [ firefoxpwa ]; @@ -105,39 +102,20 @@ # Valid strings for installation_mode are "allowed", "blocked", # "force_installed" and "normal_installed". ExtensionSettings = { - "*" = { - "installation_mode" = "blocked"; - }; - "uBlock0@raymondhill.net" = { - installation_mode = "allowed"; - }; - "gdpr@cavi.au.dk" = { - installation_mode = "allowed"; - }; - "{5cce4ab5-3d47-41b9-af5e-8203eea05245}" = { - installation_mode = "allowed"; - }; - "plasma-browser-integration@kde.org" = { - installation_mode = "allowed"; - }; - "jid1-MnnxcxisBPnSXQ@jetpack" = { - installation_mode = "allowed"; - }; - "firefoxpwa@filips.si" = { - installation_mode = "allowed"; - }; - "sponsorBlocker@ajay.app" = { - installation_mode = "allowed"; - }; - "{7a7a4a92-a2a0-41d1-9fd7-1e92480d612d}" = { - installation_mode = "allowed"; - }; - "{aecec67f-0d10-4fa7-b7c7-609a2db280cf}" = { - installation_mode = "allowed"; - }; - "{446900e4-71c2-419f-a6a7-df9c091e268b}" = { - installation_mode = "allowed"; - }; + "*".installation_mode = "blocked"; + "uBlock0@raymondhill.net".installation_mode = "allowed"; + "gdpr@cavi.au.dk".installation_mode = "allowed"; + "{5cce4ab5-3d47-41b9-af5e-8203eea05245}".installation_mode = "allowed"; + "plasma-browser-integration@kde.org".installation_mode = "allowed"; + "jid1-MnnxcxisBPnSXQ@jetpack".installation_mode = "allowed"; + "firefoxpwa@filips.si".installation_mode = "allowed"; + "sponsorBlocker@ajay.app".installation_mode = "allowed"; + "{7a7a4a92-a2a0-41d1-9fd7-1e92480d612d}".installation_mode = "allowed"; + "{aecec67f-0d10-4fa7-b7c7-609a2db280cf}".installation_mode = "allowed"; + "{446900e4-71c2-419f-a6a7-df9c091e268b}".installation_mode = "allowed"; + "CanvasBlocker@kkapsner.de".installation_mode = "allowed"; + "shinigamieyes@shinigamieyes".installation_mode = "allowed"; + # "".installation_mode = "allowed"; }; DisableTelemetry = true; DisableFirefoxStudies = true; @@ -176,6 +154,8 @@ pwas-for-firefox control-panel-for-twitter bitwarden + canvasblocker + shinigami-eyes ]; settings = { "{7a7a4a92-a2a0-41d1-9fd7-1e92480d612d}".settings = { @@ -240,16 +220,22 @@ # Vertical tabs "sidebar.verticalTabs" = true; "sidebar.verticalTabs.dragToPinPromo.dismissed" = true; - # these are ordered right to left for some fucking reason "browser.uiCustomization.navBarWhenVerticalTabs" = [ + "back-button" + "forward-button" + "stop-reload-button" + "reload-button" + "urlbar-container" + "downloads-button" "unified-extensions-button" "fxa-toolbar-menu-button" - "downloads-button" - "urlbar-container" - "stop-reload-button" - "forward-button" - "back-button" ]; + + "privacy.resistFingerprinting" = false; + "privacy.clearOnShutdown.history" = false; + "privacy.clearOnShutdown.downloads" = false; + "webgl.disabled" = false; + "privacy.clearOnShutdown_v2.cookiesAndStorage" = false; }; bookmarks = { force = true; @@ -270,12 +256,58 @@ } ]; }; - search = { + search = let + nixIcon = "${pkgs.colloid-icon-theme}/share/icons/Colloid/apps/scalable/nix-snowflake.svg"; + googleIcon = "${pkgs.colloid-icon-theme}/share/icons/Colloid/apps/scalable/google.svg"; + in { force = true; default = "google"; order = [ "google" ]; + engines = { + nix-packages = { + name = "Nix Packages"; + urls = [ + { + template = "https://search.nixos.org/packages"; + params = [ + { + name = "type"; + value = "packages"; + } + { + name = "query"; + value = "{searchTerms}"; + } + ]; + } + ]; + + icon = nixIcon; + definedAliases = ["@np"]; + }; + + nixos-wiki = { + name = "NixOS Wiki"; + urls = [{template = "https://wiki.nixos.org/w/index.php?search={searchTerms}";}]; + icon = nixIcon; + definedAliases = ["@nw"]; + }; + + google = { + name = "Google"; + urls = [{template = "https://google.com/search?q={searchTerms}";}]; + icon = googleIcon; + definedAliases = ["@go"]; + }; + + wikipedia = { + name = "Wikipedia"; + urls = [{template = "https://en.wikipedia.org/w/index.php?search={searchTerms}";}]; + definedAliases = ["@wi"]; + }; + }; }; }; }; diff --git a/home/kde/default.nix b/home/kde/default.nix index 5b4ff4a..2a0d138 100644 --- a/home/kde/default.nix +++ b/home/kde/default.nix @@ -269,8 +269,7 @@ { iconTasks = { launchers = [ - "applications:firefox.desktop" - # "applications:helium.desktop" + "applications:librewolf.desktop" "applications:org.kde.dolphin.desktop" "applications:vesktop.desktop" "applications:kitty.desktop" diff --git a/system/widevine/default.nix b/system/widevine/default.nix index 127667e..23a6898 100644 --- a/system/widevine/default.nix +++ b/system/widevine/default.nix @@ -7,7 +7,7 @@ }: { nixpkgs.overlays = lib.mkIf (config.nixpkgs.hostPlatform.isLinux) [ (final: prev: { - wrapFirefox = browser: opts: let + wrapLibrewolf = browser: opts: let extraPrefs = (opts.extraPrefs or "") + '' @@ -21,7 +21,7 @@ widevineCdmDir = "${final.widevine-cdm}/share/google/chrome/WidevineCdm"; widevineOutDir = "$out/gmp-widevinecdm/system-installed"; in - (prev.wrapFirefox browser (opts // {inherit extraPrefs;})).overrideAttrs (previousAttrs: { + (prev.wrapLibrewolf browser (opts // {inherit extraPrefs;})).overrideAttrs (previousAttrs: { buildCommand = previousAttrs.buildCommand + '' From cb29d532c30949833fc22c18a0d565c1883c30c1 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Thu, 15 Jan 2026 11:31:50 -0500 Subject: [PATCH 189/282] move hostname dec to flake --- flake.nix | 2 ++ system/hosts/alien/default.nix | 2 -- system/hosts/peach/default.nix | 2 -- system/hosts/vm-generic/default.nix | 2 -- 4 files changed, 2 insertions(+), 6 deletions(-) diff --git a/flake.nix b/flake.nix index e10b2df..10c6f24 100644 --- a/flake.nix +++ b/flake.nix @@ -151,6 +151,8 @@ }; }; + networking.hostName = hostname; + users.users.sckova = { isNormalUser = true; description = "Sean Kovacs"; diff --git a/system/hosts/alien/default.nix b/system/hosts/alien/default.nix index 08cab93..71472e2 100644 --- a/system/hosts/alien/default.nix +++ b/system/hosts/alien/default.nix @@ -3,8 +3,6 @@ pkgs, ... }: { - networking.hostName = "alien"; - environment.systemPackages = with pkgs; [ ddcutil mangohud diff --git a/system/hosts/peach/default.nix b/system/hosts/peach/default.nix index 59b7c0c..d976465 100644 --- a/system/hosts/peach/default.nix +++ b/system/hosts/peach/default.nix @@ -1,6 +1,4 @@ {pkgs, ...}: { - networking.hostName = "peach"; - boot.kernelParams = ["apple_dcp.show_notch=1"]; catppuccin = { diff --git a/system/hosts/vm-generic/default.nix b/system/hosts/vm-generic/default.nix index 7a6728c..314961d 100644 --- a/system/hosts/vm-generic/default.nix +++ b/system/hosts/vm-generic/default.nix @@ -1,6 +1,4 @@ {catppuccin, ...}: { - networking.hostName = "vm"; - catppuccin = { accent = "green"; flavor = "mocha"; From e2163698e4aa55c19317e21c7570eabb729c2724 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Thu, 15 Jan 2026 11:32:24 -0500 Subject: [PATCH 190/282] fix spotifyd volume & remove unecessary catppuccin cursors --- home/default.nix | 19 +++++-------------- 1 file changed, 5 insertions(+), 14 deletions(-) diff --git a/home/default.nix b/home/default.nix index 4802517..81fdb6b 100755 --- a/home/default.nix +++ b/home/default.nix @@ -1,8 +1,8 @@ { config, pkgs, + pkgs-unstable, lib, - types, ... }: { options = { @@ -186,27 +186,18 @@ # enableWideVine = true; # }) (catppuccin-kde.override { - flavour = [ - "latte" - config.catppuccin.flavor - ]; - accents = [ - config.catppuccin.accent - ]; + flavour = [config.catppuccin.flavor]; + accents = [config.catppuccin.accent]; }) ]) ++ [ - pkgs.catppuccin-cursors.latteDark - pkgs.catppuccin-cursors.latteLight - pkgs.catppuccin-cursors."latte${config.catppuccinUpper.accent}" - pkgs.catppuccin-cursors."${config.catppuccin.flavor}Dark" - pkgs.catppuccin-cursors."${config.catppuccin.flavor}Light" pkgs.catppuccin-cursors."${config.catppuccin.flavor}${config.catppuccinUpper.accent}" ]; services = { spotifyd = { enable = true; + package = pkgs-unstable.spotifyd; settings = { global = { device_type = "computer"; @@ -216,7 +207,7 @@ bitrate = 320; initial_volume = 100; volume_normalisation = true; - normalisation_pregain = -10; + normalisation_pregain = 0; }; }; }; From a8dfda28dd9c84662ae5b5d14bc778af311cc907 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Thu, 15 Jan 2026 11:33:14 -0500 Subject: [PATCH 191/282] changes to niri --- home/tiling/niri/niri.nix | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/home/tiling/niri/niri.nix b/home/tiling/niri/niri.nix index afa3f72..dea3bd7 100644 --- a/home/tiling/niri/niri.nix +++ b/home/tiling/niri/niri.nix @@ -5,9 +5,8 @@ }: { # https://github.com/sodiboo/niri-flake/blob/main/docs.md programs.niri = { - package = pkgs.niri-unstable.overrideAttrs (old: { - doCheck = false; - }); + # handle package systemwide + package = null; settings = { screenshot-path = "~/Pictures/Screenshots/Screenshot from %Y-%m-%d %H-%M-%S.png"; @@ -51,7 +50,7 @@ }; outputs = { "eDP-1" = { - scale = 1.75; + scale = 1.66666; }; "HDMI-A-1" = { mode = { @@ -114,7 +113,7 @@ { matches = [ { - app-id = "firefox$"; + app-id = "librewolf$"; title = "^Picture-in-Picture$"; } ]; @@ -387,8 +386,6 @@ "Mod+Shift+F".action.maximize-window-to-edges = {}; "Mod+Ctrl+Shift+F".action.fullscreen-window = {}; - "Mod+Ctrl+F".action.expand-column-to-available-width = {}; - "Mod+C".action.center-column = {}; "Mod+Ctrl+C".action.center-visible-columns = {}; From 34955e382179a04f9afa5d8f2cf4bef9e873ad56 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Thu, 15 Jan 2026 11:33:33 -0500 Subject: [PATCH 192/282] configure bat --- home/terminal/fish/default.nix | 1 - home/terminal/kitty/default.nix | 56 ++++++++++++++++++--------------- 2 files changed, 31 insertions(+), 26 deletions(-) diff --git a/home/terminal/fish/default.nix b/home/terminal/fish/default.nix index 6884cd9..85fb258 100644 --- a/home/terminal/fish/default.nix +++ b/home/terminal/fish/default.nix @@ -6,7 +6,6 @@ }: { home.packages = with pkgs; [ kdePackages.qttools - bat eza ]; diff --git a/home/terminal/kitty/default.nix b/home/terminal/kitty/default.nix index 3e5ecb6..4fd13de 100644 --- a/home/terminal/kitty/default.nix +++ b/home/terminal/kitty/default.nix @@ -99,32 +99,38 @@ in { ''; }; - programs.kitty = { - enable = true; - enableGitIntegration = true; - font = { - name = config.userOptions.fontMono.name; - size = config.userOptions.fontMono.size; + programs = { + kitty = { + enable = true; + enableGitIntegration = true; + font = { + name = config.userOptions.fontMono.name; + size = config.userOptions.fontMono.size; + }; + shellIntegration.enableFishIntegration = true; + keybindings = { + "ctrl+k" = ''combine : clear_terminal scroll active : clear_terminal scrollback active''; + }; + settings = { + include = "/home/${config.userOptions.username}/.config/kitty/themes/kitty-colors.conf"; + scrollback_lines = 10000; + enable_audio_bell = false; + update_check_interval = 0; + wheel_scroll_multiplier = 5.0; + confirm_os_window_close = 0; + window_padding_width = 4; + tab_bar_min_tabs = 2; + tab_bar_edge = "top"; + tab_bar_style = "powerline"; + tab_powerline_style = "slanted"; + mouse_hide_wait = "-1.0"; + wayland_titlebar_color = "system"; + macos_titlebar_color = "system"; + }; }; - shellIntegration.enableFishIntegration = true; - keybindings = { - "ctrl+k" = ''combine : clear_terminal scroll active : clear_terminal scrollback active''; - }; - settings = { - include = "/home/${config.userOptions.username}/.config/kitty/themes/kitty-colors.conf"; - scrollback_lines = 10000; - enable_audio_bell = false; - update_check_interval = 0; - wheel_scroll_multiplier = 5.0; - confirm_os_window_close = 0; - window_padding_width = 4; - tab_bar_min_tabs = 2; - tab_bar_edge = "top"; - tab_bar_style = "powerline"; - tab_powerline_style = "slanted"; - mouse_hide_wait = "-1.0"; - wayland_titlebar_color = "system"; - macos_titlebar_color = "system"; + bat = { + enable = true; + config.theme = "Catppuccin ${config.catppuccinUpper.flavor}"; }; }; } From 0a8a22b8b259bb585c4cbf951efec997c272f9b7 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Thu, 15 Jan 2026 11:42:28 -0500 Subject: [PATCH 193/282] avoid regenerating man cache for every rebuild --- home/terminal/btop/btop.conf | 2 +- home/terminal/btop/default.nix | 2 +- home/terminal/fish/default.nix | 1 + system/shell/fish.nix | 1 + 4 files changed, 4 insertions(+), 2 deletions(-) diff --git a/home/terminal/btop/btop.conf b/home/terminal/btop/btop.conf index bcc77bc..822f615 100644 --- a/home/terminal/btop/btop.conf +++ b/home/terminal/btop/btop.conf @@ -2,7 +2,7 @@ #* Name of a btop++/bpytop/bashtop formatted ".theme" file, "Default" and "TTY" for builtin themes. #* Themes should be placed in "../share/btop/themes" relative to binary or "$HOME/.config/btop/themes" -color_theme = "catppuccin_blankFlavor.theme" +color_theme = "nixos.theme" #* If the theme set background should be shown, set to False if you want terminal background transparency. theme_background = True diff --git a/home/terminal/btop/default.nix b/home/terminal/btop/default.nix index 27ada8a..4d7c5fc 100644 --- a/home/terminal/btop/default.nix +++ b/home/terminal/btop/default.nix @@ -15,7 +15,7 @@ ${pkgs.gnused}/bin/sed 's/blankFlavor/${config.catppuccin.flavor}/g' \ ${./btop.conf} > $out/btop.conf cp ${catppuccin-btop}/themes/catppuccin_latte.theme $out/themes/ - cp ${catppuccin-btop}/themes/catppuccin_${config.catppuccin.flavor}.theme $out/themes/ + cp ${catppuccin-btop}/themes/catppuccin_${config.catppuccin.flavor}.theme $out/themes/nixos.theme ''; in { home.file.".config/btop" = { diff --git a/home/terminal/fish/default.nix b/home/terminal/fish/default.nix index 85fb258..2d237cb 100644 --- a/home/terminal/fish/default.nix +++ b/home/terminal/fish/default.nix @@ -35,6 +35,7 @@ }; }; }; + programs.man.generateCaches = false; home.file.".config/fish/colors.fish" = { text = let diff --git a/system/shell/fish.nix b/system/shell/fish.nix index d65d384..ab81676 100644 --- a/system/shell/fish.nix +++ b/system/shell/fish.nix @@ -18,4 +18,5 @@ alias edit "nvim" ''; }; + documentation.man.generateCaches = false; } From 14401309b8ed8650de7e730017631b13c4198cfb Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Thu, 15 Jan 2026 12:46:01 -0500 Subject: [PATCH 194/282] add custom altserver package --- home/default.nix | 5 ++++ packages/altserver/default.nix | 55 ++++++++++++++++++++++++++++++++++ packages/overlay.nix | 1 + 3 files changed, 61 insertions(+) create mode 100644 packages/altserver/default.nix diff --git a/home/default.nix b/home/default.nix index 81fdb6b..9bdd2c0 100755 --- a/home/default.nix +++ b/home/default.nix @@ -157,10 +157,15 @@ mosh spotify-player gh + altserver-linux # development & tooling jdk21_headless quickemu + nerd-fonts.noto + noto-fonts + noto-fonts-color-emoji + nix-prefetch # kde and kde theming kde-rounded-corners diff --git a/packages/altserver/default.nix b/packages/altserver/default.nix new file mode 100644 index 0000000..c0ba973 --- /dev/null +++ b/packages/altserver/default.nix @@ -0,0 +1,55 @@ +{ + stdenv, + fetchurl, + lib, +}: let + sources = { + x86_64-linux = { + arch = "x86_64"; + hash = "sha256-C+fDrcaewRd6FQMrO443xdDk/vtHycQ5zWLCOLPqF/s="; + }; + i686-linux = { + arch = "i586"; + hash = "sha256-xxucxefmFOiZn6fgAnKZ6yzxcG+mSpXvLzxlli493EI="; + }; + aarch64-linux = { + arch = "aarch64"; + hash = "sha256-iGAgqkS1DTgiUgUZZ9bsSsNfWggjSIem+Mluc6Xz3ik="; + }; + armv7l-linux = { + arch = "armv7"; + hash = "sha256-99olJlOMEMbZtFILpSRumZUj146IcyD3HrM5AimZPbg="; + }; + }; + + source = sources.${stdenv.hostPlatform.system}; +in + stdenv.mkDerivation (finalAttrs: { + pname = "altserver-linux"; + version = "0.0.5"; + + src = fetchurl { + url = "https://github.com/NyaMisty/AltServer-Linux/releases/download/v${finalAttrs.version}/AltServer-${source.arch}"; + hash = source.hash; + }; + + dontUnpack = true; + + installPhase = '' + runHook preInstall + mkdir -p $out/bin + cp $src $out/bin/alt-server + chmod u+x $out/bin/alt-server + runHook postInstall + ''; + + meta = { + homepage = "https://github.com/NyaMisty/AltServer-Linux"; + description = "AltServer for AltStore, but on-device. Requires root privileges as well as running a custom anisette server currently"; + license = lib.licenses.agpl3Only; + mainProgram = "alt-server"; + sourceProvenance = with lib.sourceTypes; [binaryNativeCode]; + platforms = ["x86_64-linux" "i686-linux" "aarch64-linux" "armv7l-linux"]; + maintainers = with lib.maintainers; [max-amb]; + }; + }) diff --git a/packages/overlay.nix b/packages/overlay.nix index 4a52683..4b0244a 100644 --- a/packages/overlay.nix +++ b/packages/overlay.nix @@ -1,4 +1,5 @@ final: prev: { spotify-webapp = final.callPackage ./spotify-webapp {}; linux-asahi = final.callPackage ./linux-asahi {}; + altserver-linux = final.callPackage ./altserver {}; } From 6486eb7eb721d9e45a77528a285922936a933278 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Thu, 15 Jan 2026 16:27:18 -0500 Subject: [PATCH 195/282] wip: altserver from source --- home/default.nix | 1 - packages/altserver/default.nix | 134 +++++++++++++++++++++++---------- 2 files changed, 95 insertions(+), 40 deletions(-) diff --git a/home/default.nix b/home/default.nix index 9bdd2c0..1a8e2e0 100755 --- a/home/default.nix +++ b/home/default.nix @@ -157,7 +157,6 @@ mosh spotify-player gh - altserver-linux # development & tooling jdk21_headless diff --git a/packages/altserver/default.nix b/packages/altserver/default.nix index c0ba973..c09b792 100644 --- a/packages/altserver/default.nix +++ b/packages/altserver/default.nix @@ -1,55 +1,111 @@ { - stdenv, - fetchurl, lib, + clangStdenv, + fetchFromGitHub, + fetchgit, + requireFile, + cmake, + ninja, + pkg-config, + boost179, + openssl, + avahi, + zlib, + libuuid, + python3, + git, + libimobiledevice, + libplist, + libimobiledevice-glue, + libusbmuxd, + minizip, + websocketpp, + unzip, }: let - sources = { - x86_64-linux = { - arch = "x86_64"; - hash = "sha256-C+fDrcaewRd6FQMrO443xdDk/vtHycQ5zWLCOLPqF/s="; - }; - i686-linux = { - arch = "i586"; - hash = "sha256-xxucxefmFOiZn6fgAnKZ6yzxcG+mSpXvLzxlli493EI="; - }; - aarch64-linux = { - arch = "aarch64"; - hash = "sha256-iGAgqkS1DTgiUgUZZ9bsSsNfWggjSIem+Mluc6Xz3ik="; - }; - armv7l-linux = { - arch = "armv7"; - hash = "sha256-99olJlOMEMbZtFILpSRumZUj146IcyD3HrM5AimZPbg="; - }; + cpprestsdk = fetchFromGitHub { + owner = "microsoft"; + repo = "cpprestsdk"; + rev = "v2.10.18"; + sha256 = "sha256-RCt6BIFxRDTGiIjo5jhIxBeCOQsttWViQcib7M0wZ5Y="; + fetchSubmodules = true; }; - - source = sources.${stdenv.hostPlatform.system}; in - stdenv.mkDerivation (finalAttrs: { - pname = "altserver-linux"; - version = "0.0.5"; + clangStdenv.mkDerivation { + pname = "altserver"; + version = "unstable"; - src = fetchurl { - url = "https://github.com/NyaMisty/AltServer-Linux/releases/download/v${finalAttrs.version}/AltServer-${source.arch}"; - hash = source.hash; + src = fetchgit { + url = "https://github.com/sckova/AltServer-Linux"; + rev = "f9173b0805b64517a856fc133955753fde361c63"; + hash = "sha256-ts2YnGTdI5/Ze+7900Wvyxm2YJyQQ0qBlyLMRCAN20c="; + fetchSubmodules = true; + deepClone = true; }; - dontUnpack = true; + nativeBuildInputs = [ + cmake + ninja + pkg-config + git + unzip + ]; + + buildInputs = [ + boost179 + openssl + avahi + zlib + libuuid + python3 + libimobiledevice + libplist + libimobiledevice-glue + libusbmuxd + minizip + websocketpp + ]; + + NIX_CFLAGS_COMPILE = toString [ + "-D_GNU_SOURCE" + "-Wno-error=implicit-function-declaration" + "-Wno-error=incompatible-pointer-types" + "-Wno-error=int-conversion" + ]; + + cmakeFlags = [ + "-DCMAKE_POLICY_VERSION_MINIMUM=3.5" + "-DCMAKE_C_FLAGS=-Wno-error=incompatible-pointer-types -Wno-implicit-function-declaration" + "-DCMAKE_CXX_FLAGS=-Wno-error=incompatible-pointer-types -Wno-implicit-function-declaration" + "-Wno-dev" + + "-D_XOPEN_SOURCE=700" + + "-DFETCHCONTENT_FULLY_DISCONNECTED=ON" + "-DFETCHCONTENT_SOURCE_DIR_CPPRESTSDK=${cpprestsdk}" + ]; + + postPatch = '' + # The build system tries to link a non-existent static library 'corecrypto_static'. + # We remove this dependency so it relies on the OpenSSL shims/libraries instead. + substituteInPlace cmake/CoreCrypto/CMakeLists.txt \ + --replace-fail "corecrypto_static" "" + ''; installPhase = '' runHook preInstall + mkdir -p $out/bin - cp $src $out/bin/alt-server - chmod u+x $out/bin/alt-server + # Copy the resulting binary (name may vary slightly by fork, finding executable) + find . -maxdepth 2 -type f -executable -name "AltServer" -exec cp {} $out/bin/ \; + runHook postInstall ''; - meta = { - homepage = "https://github.com/NyaMisty/AltServer-Linux"; - description = "AltServer for AltStore, but on-device. Requires root privileges as well as running a custom anisette server currently"; - license = lib.licenses.agpl3Only; - mainProgram = "alt-server"; - sourceProvenance = with lib.sourceTypes; [binaryNativeCode]; - platforms = ["x86_64-linux" "i686-linux" "aarch64-linux" "armv7l-linux"]; - maintainers = with lib.maintainers; [max-amb]; + meta = with lib; { + description = "AltServer for Linux (fork)"; + homepage = "https://github.com/sckova/AltServer-Linux"; + license = licenses.unfree; + platforms = platforms.linux; + maintainers = with maintainers; []; }; - }) + } From ac2c321e1c78366f34ed9fc353bdededcbfdbf05 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Thu, 15 Jan 2026 17:06:17 -0500 Subject: [PATCH 196/282] changes to niri --- home/tiling/niri/default.nix | 22 ++---------- home/tiling/niri/niri.nix | 2 +- home/tiling/niri/scripts/brightness.sh | 46 -------------------------- 3 files changed, 3 insertions(+), 67 deletions(-) delete mode 100755 home/tiling/niri/scripts/brightness.sh diff --git a/home/tiling/niri/default.nix b/home/tiling/niri/default.nix index 1442f35..638c80e 100644 --- a/home/tiling/niri/default.nix +++ b/home/tiling/niri/default.nix @@ -1,19 +1,9 @@ -{ - config, - pkgs, - ... -}: let - catppuccin-fuzzel = pkgs.fetchFromGitHub { - owner = "catppuccin"; - repo = "fuzzel"; - rev = "0af0e26901b60ada4b20522df739f032797b07c3"; - sha256 = "sha256-XpItMGsYq4XvLT+7OJ9YRILfd/9RG1GMuO6J4hSGepg="; - }; -in { +{pkgs, ...}: { imports = [ ./niri.nix ./noctalia.nix ]; + home.packages = with pkgs; [ xdg-desktop-portal brightnessctl @@ -24,14 +14,6 @@ in { playerctl ]; - home.file = { - ".config/niri/scripts" = { - source = ./scripts; - recursive = true; - force = true; - }; - }; - xsession = { enable = true; windowManager.command = "niri"; diff --git a/home/tiling/niri/niri.nix b/home/tiling/niri/niri.nix index dea3bd7..ab01990 100644 --- a/home/tiling/niri/niri.nix +++ b/home/tiling/niri/niri.nix @@ -50,7 +50,7 @@ }; outputs = { "eDP-1" = { - scale = 1.66666; + scale = 1.5; }; "HDMI-A-1" = { mode = { diff --git a/home/tiling/niri/scripts/brightness.sh b/home/tiling/niri/scripts/brightness.sh deleted file mode 100755 index a321d8b..0000000 --- a/home/tiling/niri/scripts/brightness.sh +++ /dev/null @@ -1,46 +0,0 @@ -#!/usr/bin/env bash -WAYBAR_SIGNAL=8 # SIGRTMIN+8 - -if [ "$#" -ne 1 ]; then - echo "Usage: $0 " >&2 - exit 1 -fi - -value="$1" - -# Validate integer range -if ! [[ "$value" =~ ^-?[0-9]+$ ]] || [ "$value" -lt -100 ] || [ "$value" -gt 100 ]; then - echo "Error: argument must be an integer between -100 and 100" >&2 - exit 1 -fi - -# Determine which brightness control tool to use -if command -v ddcutil >/dev/null 2>&1; then - # Get current brightness - current=$(ddcutil getvcp 10 | grep -oP 'current value =\s+\K\d+') - - if [ -z "$current" ]; then - echo "Error: failed to read current brightness from ddcutil" >&2 - exit 1 - fi - - # Calculate new brightness (ddcutil uses absolute 0-100 scale) - new=$((current + value)) - - # Clamp to valid range - [ "$new" -lt 0 ] && new=0 - [ "$new" -gt 100 ] && new=100 - - # Set new brightness - ddcutil setvcp 10 "$new" >/dev/null 2>&1 -else - # Fallback to brightnessctl - if [ "$value" -gt 0 ]; then - brightnessctl s "+${value}%" >/dev/null - elif [ "$value" -lt 0 ]; then - brightnessctl s "${value#-}%-" >/dev/null - fi -fi - -# Notify Waybar to refresh -pkill -RTMIN+"$WAYBAR_SIGNAL" waybar From 93268092e6922ff68ec3459504f9b3615767e287 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Thu, 15 Jan 2026 17:16:55 -0500 Subject: [PATCH 197/282] switch to asahi kernel overlay --- packages/linux-asahi/default.nix | 68 -------------------------------- packages/overlay.nix | 17 +++++++- system/hosts/peach/default.nix | 2 +- 3 files changed, 17 insertions(+), 70 deletions(-) delete mode 100644 packages/linux-asahi/default.nix diff --git a/packages/linux-asahi/default.nix b/packages/linux-asahi/default.nix deleted file mode 100644 index 0838fe0..0000000 --- a/packages/linux-asahi/default.nix +++ /dev/null @@ -1,68 +0,0 @@ -{ - lib, - callPackage, - linuxPackagesFor, - _kernelPatches ? [], -}: let - linux-asahi-pkg = { - stdenv, - lib, - fetchFromGitHub, - buildLinux, - ... - }: - buildLinux rec { - inherit stdenv lib; - - pname = "linux-asahi-fairydust"; - version = "6.18.4"; - modDirVersion = version; - extraMeta.branch = "6.18"; - - src = fetchFromGitHub { - owner = "AsahiLinux"; - repo = "linux"; - rev = "19a39556851eb80470b760452f946b8cac046363"; - hash = "sha256-86TT1VcBAYB66My5QqMI5xsa3IMzNKrL/zkhEGtRvnI="; - }; - - kernelPatches = - [ - { - name = "Asahi config"; - patch = null; - structuredExtraConfig = with lib.kernel; { - # Needed for GPU - ARM64_16K_PAGES = yes; - - ARM64_MEMORY_MODEL_CONTROL = yes; - ARM64_ACTLR_STATE = yes; - - # Might lead to the machine rebooting if not loaded soon enough - APPLE_WATCHDOG = yes; - - APPLE_MAILBOX = yes; - - APPLE_RTKIT = yes; - APPLE_RTKIT_HELPER = yes; - RUST_APPLE_RTKIT = yes; - RUST_FW_LOADER_ABSTRACTIONS = yes; - - # Can not be built as a module, defaults to no - APPLE_M1_CPU_PMU = yes; - - # Defaults to 'y', but we want to allow the user to set options in modprobe.d - HID_APPLE = module; - - APPLE_PMGR_MISC = yes; - APPLE_PMGR_PWRSTATE = yes; - }; - features.rust = true; - } - ] - ++ _kernelPatches; - }; - - linux-asahi = callPackage linux-asahi-pkg {}; -in - lib.recurseIntoAttrs (linuxPackagesFor linux-asahi) diff --git a/packages/overlay.nix b/packages/overlay.nix index 4b0244a..dbabd5f 100644 --- a/packages/overlay.nix +++ b/packages/overlay.nix @@ -1,5 +1,20 @@ final: prev: { spotify-webapp = final.callPackage ./spotify-webapp {}; - linux-asahi = final.callPackage ./linux-asahi {}; altserver-linux = final.callPackage ./altserver {}; + + linuxPackages_asahi = prev.linuxPackages_asahi.override { + _kernelPatches = [ + { + name = "Mailbox and RTKIT support"; + patch = null; + structuredExtraConfig = with prev.lib.kernel; { + APPLE_MAILBOX = yes; + APPLE_RTKIT = yes; + APPLE_RTKIT_HELPER = yes; + RUST_APPLE_RTKIT = yes; + RUST_FW_LOADER_ABSTRACTIONS = yes; + }; + } + ]; + }; } diff --git a/system/hosts/peach/default.nix b/system/hosts/peach/default.nix index d976465..eb127f2 100644 --- a/system/hosts/peach/default.nix +++ b/system/hosts/peach/default.nix @@ -1,5 +1,5 @@ {pkgs, ...}: { - boot.kernelParams = ["apple_dcp.show_notch=1"]; + boot.kernelParams = ["appledrm.show_notch=1"]; catppuccin = { accent = "lavender"; From dc850b011e1cfa4966977162486a47111fd504cc Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Thu, 15 Jan 2026 17:18:19 -0500 Subject: [PATCH 198/282] update flake --- flake.lock | 114 +++++++++++++++++----------------- home/tiling/niri/niri.nix | 2 +- home/tiling/niri/noctalia.nix | 2 +- 3 files changed, 59 insertions(+), 59 deletions(-) diff --git a/flake.lock b/flake.lock index b8a15fd..fbe14cb 100644 --- a/flake.lock +++ b/flake.lock @@ -8,11 +8,11 @@ ] }, "locked": { - "lastModified": 1767637567, - "narHash": "sha256-njwPfL5gM/KRGLJ29CbQ4nLBoEkNPMvEHBAAPOP8BZc=", + "lastModified": 1768504916, + "narHash": "sha256-YlRaFqneUIwi6PPzrwEUtO0UZIxGFS3D8fSaqnPTKzE=", "owner": "nix-community", "repo": "nixos-apple-silicon", - "rev": "530aa73aa9a21a078ff861b84767ae1d469715fa", + "rev": "233bb4e048ca11efb9b7297079213dbe1dcfb5e8", "type": "github" }, "original": { @@ -24,11 +24,11 @@ "cachyos-kernel": { "flake": false, "locked": { - "lastModified": 1767632716, - "narHash": "sha256-lTRVzn5JIP1+8572Sj/UqW/nlGG6QNFUNpLU6VCOznU=", + "lastModified": 1768206129, + "narHash": "sha256-BpTer/+8ZSHq4hXbfN/DZh1rru3LVCapp6ks1nyuWj0=", "owner": "CachyOS", "repo": "linux-cachyos", - "rev": "2f380e2b35c4ad9acda98296f638f93af3742533", + "rev": "8e4d77a4aeef28c8e93fd9b724d61a84b11b384f", "type": "github" }, "original": { @@ -40,11 +40,11 @@ "cachyos-kernel-patches": { "flake": false, "locked": { - "lastModified": 1767601194, - "narHash": "sha256-NWeMLjch/DHQQa9LdLClejvN8goGVGsEAQjkgrVPP+U=", + "lastModified": 1768412116, + "narHash": "sha256-XDKI0POpjvQsTitsFyhn9LB2ufOGGYzrTTPY7z8lESk=", "owner": "CachyOS", "repo": "kernel-patches", - "rev": "bd836f10a363f04ec755a7e39ffdc78b8043e336", + "rev": "af948449e6e97afbac82dc9887e2b2b95d1a6519", "type": "github" }, "original": { @@ -60,11 +60,11 @@ ] }, "locked": { - "lastModified": 1767750947, - "narHash": "sha256-zqe9esphlAFu19TGL/nAyOHyOiR+Vu8M2IWWLg9cm4U=", + "lastModified": 1767967164, + "narHash": "sha256-Cx4VETh9dGoQYDtWhre7g66d7SAr+h1h6f+SSHxVrck=", "owner": "catppuccin", "repo": "nix", - "rev": "e7135074fe2a3d17bee3c229b5a7d3da26f76ce8", + "rev": "e973584280e3b0e1d5b5a1a5e9948dc222c54af7", "type": "github" }, "original": { @@ -90,11 +90,11 @@ }, "flake-compat": { "locked": { - "lastModified": 1746162366, - "narHash": "sha256-5SSSZ/oQkwfcAz/o/6TlejlVGqeK08wyREBQ5qFFPhM=", + "lastModified": 1761640442, + "narHash": "sha256-AtrEP6Jmdvrqiv4x2xa5mrtaIp3OEe8uBYCDZDS+hu8=", "owner": "nix-community", "repo": "flake-compat", - "rev": "0f158086a2ecdbb138cd0429410e44994f1b7e4b", + "rev": "4a56054d8ffc173222d09dad23adf4ba946c8884", "type": "github" }, "original": { @@ -124,11 +124,11 @@ "nixpkgs-lib": "nixpkgs-lib" }, "locked": { - "lastModified": 1767609335, - "narHash": "sha256-feveD98mQpptwrAEggBQKJTYbvwwglSbOv53uCfH9PY=", + "lastModified": 1768135262, + "narHash": "sha256-PVvu7OqHBGWN16zSi6tEmPwwHQ4rLPU9Plvs8/1TUBY=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "250481aafeb741edfe23d29195671c19b36b6dca", + "rev": "80daad04eddbbf5a4d883996a73f3f542fa437ac", "type": "github" }, "original": { @@ -204,11 +204,11 @@ ] }, "locked": { - "lastModified": 1767850628, - "narHash": "sha256-D3QzdIT11J66I4mzwmIpAGLzPAcbCS2VaKN8fmOe6+E=", + "lastModified": 1767910483, + "narHash": "sha256-MOU5YdVu4DVwuT5ztXgQpPuRRBjSjUGIdUzOQr9iQOY=", "owner": "nix-community", "repo": "home-manager", - "rev": "8c8a16d41353a174767c38b962359b51a56ca02e", + "rev": "82fb7dedaad83e5e279127a38ef410bcfac6d77c", "type": "github" }, "original": { @@ -258,11 +258,11 @@ "xwayland-satellite-unstable": "xwayland-satellite-unstable" }, "locked": { - "lastModified": 1767833217, - "narHash": "sha256-HLr9k8g1Geq40PLsNw7I5N8TZkBYtQVjkgDPV/Kehxk=", + "lastModified": 1768492302, + "narHash": "sha256-MJ5zfUO7UZYARxy9EOpSooE961eH3K75CGOn84thbQM=", "owner": "sodiboo", "repo": "niri-flake", - "rev": "a789aa1512a9157d5d3392b27e60621fd0d83438", + "rev": "cbf53d0b9c9531d654e7dbcf1f9117a221ad5c58", "type": "github" }, "original": { @@ -291,11 +291,11 @@ "niri-unstable": { "flake": false, "locked": { - "lastModified": 1767792726, - "narHash": "sha256-qS4tdG2iUQwSld9dTH1gk8GcIOrRi9umMgPv8MGDIA0=", + "lastModified": 1768487377, + "narHash": "sha256-+WOpoDSvYJds8zCMlwDHKBivxSViM5n1J1Jo9Lcf19Y=", "owner": "YaLTeR", "repo": "niri", - "rev": "10df9f4717cbd4efd20ae796eb6b0aa400127bdc", + "rev": "87e2dd0361172a48cb3ac8e5b3f6f701c758700d", "type": "github" }, "original": { @@ -313,11 +313,11 @@ "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1767894902, - "narHash": "sha256-vY1fChRR3ed/nYCV2F8fgFP3yvohMhDWFtBU1YDc0m0=", + "lastModified": 1768500095, + "narHash": "sha256-SnUkJLuf4H50+saKJIHd5kF+qnCoFlJ2KsXf5YS2AIA=", "owner": "xddxdd", "repo": "nix-cachyos-kernel", - "rev": "800ee8ae8d7e16e1801b56dda5e0cc90f4136882", + "rev": "6a41243b23a38d83d3f022715f3add4029184e4b", "type": "github" }, "original": { @@ -328,11 +328,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1767870855, - "narHash": "sha256-3nwdl4qmXUBn0S44dzTbNKp4uaRUwtZ2MGE70o09Z8w=", + "lastModified": 1768467226, + "narHash": "sha256-Y/Q3pFk5htWkitAXIKGSVYzdt7fNn74YXSJS5GjSPZ4=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "719f19e8e447a52152aee8061c7a2951f9254f14", + "rev": "0827ca4b685736d2de7f7b1f80f3be996514ef59", "type": "github" }, "original": { @@ -359,11 +359,11 @@ }, "nixpkgs-stable": { "locked": { - "lastModified": 1767799921, - "narHash": "sha256-r4GVX+FToWVE2My8VVZH4V0pTIpnu2ZE8/Z4uxGEMBE=", + "lastModified": 1768323494, + "narHash": "sha256-yBXJLE6WCtrGo7LKiB6NOt6nisBEEkguC/lq/rP3zRQ=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "d351d0653aeb7877273920cd3e823994e7579b0b", + "rev": "2c3e5ec5df46d3aeee2a1da0bfedd74e21f4bf3a", "type": "github" }, "original": { @@ -375,11 +375,11 @@ }, "nixpkgs-unstable": { "locked": { - "lastModified": 1768127708, - "narHash": "sha256-1Sm77VfZh3mU0F5OqKABNLWxOuDeHIlcFjsXeeiPazs=", + "lastModified": 1768305791, + "narHash": "sha256-AIdl6WAn9aymeaH/NvBj0H9qM+XuAuYbGMZaP0zcXAQ=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "ffbc9f8cbaacfb331b6017d5a5abb21a492c9a38", + "rev": "1412caf7bf9e660f2f962917c14b1ea1c3bc695e", "type": "github" }, "original": { @@ -391,11 +391,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1767799921, - "narHash": "sha256-r4GVX+FToWVE2My8VVZH4V0pTIpnu2ZE8/Z4uxGEMBE=", + "lastModified": 1768323494, + "narHash": "sha256-yBXJLE6WCtrGo7LKiB6NOt6nisBEEkguC/lq/rP3zRQ=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "d351d0653aeb7877273920cd3e823994e7579b0b", + "rev": "2c3e5ec5df46d3aeee2a1da0bfedd74e21f4bf3a", "type": "github" }, "original": { @@ -415,11 +415,11 @@ "systems": "systems_2" }, "locked": { - "lastModified": 1767448089, - "narHash": "sha256-U1fHsZBnFrUil731NHD9Sg5HoiG+eSHau8OFuClhwW0=", + "lastModified": 1768486829, + "narHash": "sha256-G621Q9cB1roQxK0C6guNjmWX0CmPA5xN46VD2kTdDEk=", "owner": "nix-community", "repo": "nixvim", - "rev": "983751b66f255bbea1adc185364e9e7b73f82358", + "rev": "503259b749971f431cb4aca7099cd60eadd7a613", "type": "github" }, "original": { @@ -436,11 +436,11 @@ ] }, "locked": { - "lastModified": 1767896666, - "narHash": "sha256-JJO/jmdOs1v5YSbNrxBUAdDKmNioFcK5BLV1XBM3EFA=", + "lastModified": 1768515139, + "narHash": "sha256-9Os2E1HATAeEFiiNveXNzziCOxSXW7Tbyn+Wv8nPvYE=", "owner": "noctalia-dev", "repo": "noctalia-shell", - "rev": "300cc38cff3538c70776e62de16107ffcd01bdf4", + "rev": "548007724dd64cc4d7285b6d7abe9cac123e00ce", "type": "github" }, "original": { @@ -457,11 +457,11 @@ ] }, "locked": { - "lastModified": 1767895966, - "narHash": "sha256-TCwEuNAuZMcF1b36yikn37mzXE6ef+FtAhZ8DSOJO8U=", + "lastModified": 1768513652, + "narHash": "sha256-gumQwI3+cmzXJNZQpL8NfjNoi+E+8yv8t0t30I2PQ7U=", "owner": "nix-community", "repo": "NUR", - "rev": "927ccd5313844ba2b0fdb1c6e1de889ea175c3b0", + "rev": "321a80b638edab9533f254070e8cf3acc37c0b8a", "type": "github" }, "original": { @@ -541,11 +541,11 @@ "systems": "systems_3" }, "locked": { - "lastModified": 1767502559, - "narHash": "sha256-om0IPjW850vhhIrNZ5tiXjsYuqyoI44IdE+I9AwZ96I=", + "lastModified": 1768107098, + "narHash": "sha256-mSthw4k7jkB5S8+NYZwrQFItLj+17Se7Wn0pIfdASbc=", "owner": "Gerg-L", "repo": "spicetify-nix", - "rev": "806c1fdeb7af3e013215d14f5d9f06685fa6650f", + "rev": "2e40e07527f9d724b1578f0af590ab345e836ec3", "type": "github" }, "original": { @@ -619,11 +619,11 @@ "xwayland-satellite-unstable": { "flake": false, "locked": { - "lastModified": 1767830382, - "narHash": "sha256-0PgS7M1SV6JCN3MugFZPaP8J+Mr2o7lSDFTPVYZSIAY=", + "lastModified": 1768106915, + "narHash": "sha256-HlLo9zH4ULRXlmlIK948cHmdVhxyHgTHxGaoCRlW4k8=", "owner": "Supreeeme", "repo": "xwayland-satellite", - "rev": "74cf1a95a35fd7aec76432bc2cd9b310e0d908c5", + "rev": "72245e108f3b03c3c4474d2de9de2d1830849603", "type": "github" }, "original": { diff --git a/home/tiling/niri/niri.nix b/home/tiling/niri/niri.nix index ab01990..e0c87a0 100644 --- a/home/tiling/niri/niri.nix +++ b/home/tiling/niri/niri.nix @@ -50,7 +50,7 @@ }; outputs = { "eDP-1" = { - scale = 1.5; + scale = 1.75; }; "HDMI-A-1" = { mode = { diff --git a/home/tiling/niri/noctalia.nix b/home/tiling/niri/noctalia.nix index bcf213f..7604e57 100644 --- a/home/tiling/niri/noctalia.nix +++ b/home/tiling/niri/noctalia.nix @@ -290,7 +290,7 @@ in { shortcuts = { left = [ { - id = "WiFi"; + id = "Network"; } { id = "Bluetooth"; From 5b04a4b85e77abcbb33d926d184e1b43630a34d1 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Thu, 15 Jan 2026 18:08:10 -0500 Subject: [PATCH 199/282] add custom openmw --- flake.lock | 17 +++++++++++++++++ flake.nix | 13 +++++++++++++ packages/openmw/default.nix | 8 ++++++++ packages/overlay.nix | 4 ++++ 4 files changed, 42 insertions(+) create mode 100644 packages/openmw/default.nix diff --git a/flake.lock b/flake.lock index fbe14cb..de6548e 100644 --- a/flake.lock +++ b/flake.lock @@ -493,6 +493,22 @@ "type": "github" } }, + "openmw": { + "flake": false, + "locked": { + "lastModified": 1768342692, + "narHash": "sha256-XLlg+JKE7mvbytjPq4iue9JTVA/Uv2bn1mYS1OEIWFY=", + "owner": "OpenMW", + "repo": "openmw", + "rev": "3ac8eb07876e1d0a5fe52baca70d0b972cf1e33c", + "type": "gitlab" + }, + "original": { + "owner": "OpenMW", + "repo": "openmw", + "type": "gitlab" + } + }, "plasma-manager": { "inputs": { "home-manager": [ @@ -529,6 +545,7 @@ "nixvim": "nixvim", "noctalia": "noctalia", "nur": "nur", + "openmw": "openmw", "plasma-manager": "plasma-manager", "spicetify-nix": "spicetify-nix" } diff --git a/flake.nix b/flake.nix index 10c6f24..3dd2550 100644 --- a/flake.nix +++ b/flake.nix @@ -56,6 +56,11 @@ url = "github:nix-community/nixos-apple-silicon"; inputs.nixpkgs.follows = "nixpkgs"; }; + + openmw = { + url = "gitlab:OpenMW/openmw"; + flake = false; + }; }; outputs = { @@ -72,6 +77,7 @@ nur, nixvim, apple-silicon, + openmw, ... }: let # All systems we want to support for the generic VM @@ -112,6 +118,13 @@ noctalia.overlays.default nur.overlays.default (import ./packages/overlay.nix) + (final: prev: { + openmw-git = { + src = openmw; + version = openmw.shortRev or openmw.rev or "unknown"; + date = openmw.lastModifiedDate or "unknown"; + }; + }) ]; }; nix = { diff --git a/packages/openmw/default.nix b/packages/openmw/default.nix new file mode 100644 index 0000000..13e5da9 --- /dev/null +++ b/packages/openmw/default.nix @@ -0,0 +1,8 @@ +{ + openmw, + openmw-git, +}: +openmw.overrideAttrs (oldAttrs: { + version = "unstable-${openmw-git.date}-${openmw-git.version}"; + src = openmw-git.src; +}) diff --git a/packages/overlay.nix b/packages/overlay.nix index dbabd5f..8d9df30 100644 --- a/packages/overlay.nix +++ b/packages/overlay.nix @@ -1,6 +1,10 @@ final: prev: { spotify-webapp = final.callPackage ./spotify-webapp {}; altserver-linux = final.callPackage ./altserver {}; + openmw = final.callPackage ./openmw { + openmw = prev.openmw; + inherit (final) openmw-git; + }; linuxPackages_asahi = prev.linuxPackages_asahi.override { _kernelPatches = [ From 5b3d113982de14c50e6b9c38940af546a9596457 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Thu, 15 Jan 2026 18:32:50 -0500 Subject: [PATCH 200/282] changes --- home/tiling/niri/niri.nix | 14 +++++++++++++- home/tiling/niri/noctalia.nix | 7 ++----- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/home/tiling/niri/niri.nix b/home/tiling/niri/niri.nix index e0c87a0..8fce4f5 100644 --- a/home/tiling/niri/niri.nix +++ b/home/tiling/niri/niri.nix @@ -50,7 +50,11 @@ }; outputs = { "eDP-1" = { - scale = 1.75; + scale = 1.5; + position = { + x = 272; + y = 1440; + }; }; "HDMI-A-1" = { mode = { @@ -59,6 +63,10 @@ refresh = 144.000; }; scale = 1.5; + position = { + x = 0; + y = 0; + }; }; "DP-1" = { mode = { @@ -67,6 +75,10 @@ refresh = 143.999; }; scale = 1.5; + position = { + x = 0; + y = 0; + }; }; }; cursor = { diff --git a/home/tiling/niri/noctalia.nix b/home/tiling/niri/noctalia.nix index 7604e57..ee59765 100644 --- a/home/tiling/niri/noctalia.nix +++ b/home/tiling/niri/noctalia.nix @@ -18,7 +18,7 @@ mOnTertiary = palette.crust; mError = palette.red; mOnError = palette.crust; - mSurface = palette.base; + mSurface = palette.mantle; mOnSurface = palette.text; mSurfaceVariant = palette.surface0; mOnSurfaceVariant = palette.lavender; @@ -37,9 +37,6 @@ # Convert to JSON schemeJson = builtins.toJSON customScheme; - # Write to file - escape for shell - schemeJsonEscaped = lib.escapeShellArg schemeJson; - customPackage = pkgs.noctalia-shell.overrideAttrs (oldAttrs: { pname = "noctalia-shell-custom"; nativeBuildInputs = (oldAttrs.nativeBuildInputs or []) ++ [pkgs.jq]; @@ -93,7 +90,7 @@ in { position = "top"; backgroundOpacity = 1; monitors = []; - density = "comfortable"; + density = "spacious"; showCapsule = true; capsuleOpacity = 1; floating = false; From 98c98dc365b81d8e679ffee8f5e41d2f18bc237d Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Thu, 15 Jan 2026 22:21:08 -0500 Subject: [PATCH 201/282] remove altserver --- packages/altserver/default.nix | 111 --------------------------------- packages/overlay.nix | 1 - 2 files changed, 112 deletions(-) delete mode 100644 packages/altserver/default.nix diff --git a/packages/altserver/default.nix b/packages/altserver/default.nix deleted file mode 100644 index c09b792..0000000 --- a/packages/altserver/default.nix +++ /dev/null @@ -1,111 +0,0 @@ -{ - lib, - clangStdenv, - fetchFromGitHub, - fetchgit, - requireFile, - cmake, - ninja, - pkg-config, - boost179, - openssl, - avahi, - zlib, - libuuid, - python3, - git, - libimobiledevice, - libplist, - libimobiledevice-glue, - libusbmuxd, - minizip, - websocketpp, - unzip, -}: let - cpprestsdk = fetchFromGitHub { - owner = "microsoft"; - repo = "cpprestsdk"; - rev = "v2.10.18"; - sha256 = "sha256-RCt6BIFxRDTGiIjo5jhIxBeCOQsttWViQcib7M0wZ5Y="; - fetchSubmodules = true; - }; -in - clangStdenv.mkDerivation { - pname = "altserver"; - version = "unstable"; - - src = fetchgit { - url = "https://github.com/sckova/AltServer-Linux"; - rev = "f9173b0805b64517a856fc133955753fde361c63"; - hash = "sha256-ts2YnGTdI5/Ze+7900Wvyxm2YJyQQ0qBlyLMRCAN20c="; - fetchSubmodules = true; - deepClone = true; - }; - - nativeBuildInputs = [ - cmake - ninja - pkg-config - git - unzip - ]; - - buildInputs = [ - boost179 - openssl - avahi - zlib - libuuid - python3 - libimobiledevice - libplist - libimobiledevice-glue - libusbmuxd - minizip - websocketpp - ]; - - NIX_CFLAGS_COMPILE = toString [ - "-D_GNU_SOURCE" - "-Wno-error=implicit-function-declaration" - "-Wno-error=incompatible-pointer-types" - "-Wno-error=int-conversion" - ]; - - cmakeFlags = [ - "-DCMAKE_POLICY_VERSION_MINIMUM=3.5" - "-DCMAKE_C_FLAGS=-Wno-error=incompatible-pointer-types -Wno-implicit-function-declaration" - "-DCMAKE_CXX_FLAGS=-Wno-error=incompatible-pointer-types -Wno-implicit-function-declaration" - "-Wno-dev" - - "-D_XOPEN_SOURCE=700" - - "-DFETCHCONTENT_FULLY_DISCONNECTED=ON" - "-DFETCHCONTENT_SOURCE_DIR_CPPRESTSDK=${cpprestsdk}" - ]; - - postPatch = '' - # The build system tries to link a non-existent static library 'corecrypto_static'. - # We remove this dependency so it relies on the OpenSSL shims/libraries instead. - substituteInPlace cmake/CoreCrypto/CMakeLists.txt \ - --replace-fail "corecrypto_static" "" - ''; - - installPhase = '' - runHook preInstall - - mkdir -p $out/bin - # Copy the resulting binary (name may vary slightly by fork, finding executable) - find . -maxdepth 2 -type f -executable -name "AltServer" -exec cp {} $out/bin/ \; - - runHook postInstall - ''; - - meta = with lib; { - description = "AltServer for Linux (fork)"; - homepage = "https://github.com/sckova/AltServer-Linux"; - license = licenses.unfree; - platforms = platforms.linux; - maintainers = with maintainers; []; - }; - } diff --git a/packages/overlay.nix b/packages/overlay.nix index 8d9df30..e4cbd75 100644 --- a/packages/overlay.nix +++ b/packages/overlay.nix @@ -1,6 +1,5 @@ final: prev: { spotify-webapp = final.callPackage ./spotify-webapp {}; - altserver-linux = final.callPackage ./altserver {}; openmw = final.callPackage ./openmw { openmw = prev.openmw; inherit (final) openmw-git; From 431ff322405e139994a70fa9e7d594782b2e2e7a Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Thu, 15 Jan 2026 22:39:47 -0500 Subject: [PATCH 202/282] move all url fetches into main flake --- flake.lock | 51 ++++++++++++++++++++++ flake.nix | 34 ++++++++++++--- home/graphical/discord/default.nix | 51 +--------------------- home/graphical/mpv/default.nix | 9 +--- home/terminal/btop/default.nix | 11 +---- packages/catppuccin-discord/default.nix | 57 +++++++++++++++++++++++++ packages/overlay.nix | 3 ++ 7 files changed, 144 insertions(+), 72 deletions(-) create mode 100644 packages/catppuccin-discord/default.nix diff --git a/flake.lock b/flake.lock index de6548e..8bb6059 100644 --- a/flake.lock +++ b/flake.lock @@ -73,6 +73,54 @@ "type": "github" } }, + "catppuccin-btop": { + "flake": false, + "locked": { + "lastModified": 1727050041, + "narHash": "sha256-mEGZwScVPWGu+Vbtddc/sJ+mNdD2kKienGZVUcTSl+c=", + "owner": "catppuccin", + "repo": "btop", + "rev": "f437574b600f1c6d932627050b15ff5153b58fa3", + "type": "github" + }, + "original": { + "owner": "catppuccin", + "repo": "btop", + "type": "github" + } + }, + "catppuccin-discord": { + "flake": false, + "locked": { + "lastModified": 1768037813, + "narHash": "sha256-ExRNnxvG2PSGmpuaPxzCKL6GK6ETs7Gq4Roa74HXp+s=", + "owner": "catppuccin", + "repo": "discord", + "rev": "0fcfe2e15ed91f8c5f1f3c6855f3b2024f78d86c", + "type": "github" + }, + "original": { + "owner": "catppuccin", + "repo": "discord", + "type": "github" + } + }, + "catppuccin-mpv": { + "flake": false, + "locked": { + "lastModified": 1754544320, + "narHash": "sha256-oUheJNWk2R6gNEmkK8H6PWX0iofx2KMGDoFWtnr420A=", + "owner": "catppuccin", + "repo": "mpv", + "rev": "08e90daf511eee2c10c98f0031b51bb9de240d60", + "type": "github" + }, + "original": { + "owner": "catppuccin", + "repo": "mpv", + "type": "github" + } + }, "catppuccin-palette": { "locked": { "lastModified": 1760672867, @@ -536,6 +584,9 @@ "inputs": { "apple-silicon": "apple-silicon", "catppuccin": "catppuccin", + "catppuccin-btop": "catppuccin-btop", + "catppuccin-discord": "catppuccin-discord", + "catppuccin-mpv": "catppuccin-mpv", "catppuccin-palette": "catppuccin-palette", "home-manager": "home-manager", "niri": "niri", diff --git a/flake.nix b/flake.nix index 3dd2550..f7a60dd 100644 --- a/flake.nix +++ b/flake.nix @@ -61,6 +61,21 @@ url = "gitlab:OpenMW/openmw"; flake = false; }; + + catppuccin-discord = { + url = "github:catppuccin/discord"; + flake = false; + }; + + catppuccin-btop = { + url = "github:catppuccin/btop"; + flake = false; + }; + + catppuccin-mpv = { + url = "github:catppuccin/mpv"; + flake = false; + }; }; outputs = { @@ -78,6 +93,9 @@ nixvim, apple-silicon, openmw, + catppuccin-discord, + catppuccin-btop, + catppuccin-mpv, ... }: let # All systems we want to support for the generic VM @@ -90,6 +108,13 @@ allowUnfree = true; }; + # Helper to create source metadata + mkSource = src: { + inherit src; + version = src.shortRev or src.rev or "unknown"; + date = src.lastModifiedDate or "unknown"; + }; + mkNixosSystem = { hostname, system, @@ -119,11 +144,10 @@ nur.overlays.default (import ./packages/overlay.nix) (final: prev: { - openmw-git = { - src = openmw; - version = openmw.shortRev or openmw.rev or "unknown"; - date = openmw.lastModifiedDate or "unknown"; - }; + openmw-git = mkSource openmw; + catppuccin-discord-git = mkSource catppuccin-discord; + catppuccin-btop-git = mkSource catppuccin-btop; + catppuccin-mpv-git = mkSource catppuccin-mpv; }) ]; }; diff --git a/home/graphical/discord/default.nix b/home/graphical/discord/default.nix index 7073352..58bcf9f 100644 --- a/home/graphical/discord/default.nix +++ b/home/graphical/discord/default.nix @@ -3,56 +3,7 @@ pkgs, ... }: let - catppuccin-discord-src = pkgs.fetchFromGitHub { - owner = "catppuccin"; - repo = "discord"; - rev = "1b2dffbabf75a294a0fb9245f9f7244a853e7ada"; - hash = "sha256-LdUPnnbbSwgaw37FJD2s1vPiTaISaYbtOWRxQIekQkQ="; - }; - - yarnOfflineCache = pkgs.fetchYarnDeps { - yarnLock = "${catppuccin-discord-src}/yarn.lock"; - hash = "sha256-BhE3aKyA/LBErjWx+lbEVb/CIXhqHkXbV+9U2djIBhs="; - }; - - catppuccin-discord-pkg = pkgs.stdenv.mkDerivation { - pname = "catppuccin-discord"; - version = "unstable"; - - src = catppuccin-discord-src; - - nativeBuildInputs = with pkgs; [ - yarn - nodejs - fixup-yarn-lock - nodePackages.sass - ]; - - postPatch = '' - substituteInPlace package.json \ - --replace-fail "--no-charset --no-source-map" "" - ''; - - configurePhase = '' - export HOME=$TMPDIR - yarn config --offline set yarn-offline-mirror ${yarnOfflineCache} - fixup-yarn-lock yarn.lock - yarn install --offline --frozen-lockfile --ignore-scripts --ignore-platform - ''; - - buildPhase = '' - yarn --offline build - yarn --offline release - ''; - - installPhase = '' - mkdir -p $out - find . - cp -r dist/* $out - ''; - }; - - catppuccin-discord = "${catppuccin-discord-pkg}/dist/catppuccin-${config.catppuccin.flavor}-${config.catppuccin.accent}.theme.css"; + catppuccin-discord = "${pkgs.catppuccin-discord}/share/catppuccin-discord/catppuccin-${config.catppuccin.flavor}-${config.catppuccin.accent}.theme.css"; mergedThemes = pkgs.runCommand "mergedConfig" {} '' mkdir -p $out diff --git a/home/graphical/mpv/default.nix b/home/graphical/mpv/default.nix index ecbc028..3a3a1d6 100644 --- a/home/graphical/mpv/default.nix +++ b/home/graphical/mpv/default.nix @@ -3,17 +3,10 @@ pkgs, ... }: let - catppuccin-mpv = pkgs.fetchFromGitHub { - owner = "catppuccin"; - repo = "mpv"; - rev = "08e90daf511eee2c10c98f0031b51bb9de240d60"; - sha256 = "sha256-oUheJNWk2R6gNEmkK8H6PWX0iofx2KMGDoFWtnr420A="; - }; - mergedConfig = pkgs.runCommand "mergedConfig" {} '' mkdir -p $out ${pkgs.gnused}/bin/sed 's/#1e1e2e/#000000/g' \ - ${catppuccin-mpv}/themes/${config.catppuccin.flavor}/${config.catppuccin.accent}.conf \ + ${pkgs.catppuccin-mpv-git.src}/themes/${config.catppuccin.flavor}/${config.catppuccin.accent}.conf \ > $out/mpv.conf ''; in { diff --git a/home/terminal/btop/default.nix b/home/terminal/btop/default.nix index 4d7c5fc..a8f337a 100644 --- a/home/terminal/btop/default.nix +++ b/home/terminal/btop/default.nix @@ -3,19 +3,12 @@ pkgs, ... }: let - catppuccin-btop = pkgs.fetchFromGitHub { - owner = "catppuccin"; - repo = "btop"; - rev = "f437574b600f1c6d932627050b15ff5153b58fa3"; - sha256 = "sha256-mEGZwScVPWGu+Vbtddc/sJ+mNdD2kKienGZVUcTSl+c="; - }; - mergedConfig = pkgs.runCommand "mergedConfig" {} '' mkdir -p $out/themes ${pkgs.gnused}/bin/sed 's/blankFlavor/${config.catppuccin.flavor}/g' \ ${./btop.conf} > $out/btop.conf - cp ${catppuccin-btop}/themes/catppuccin_latte.theme $out/themes/ - cp ${catppuccin-btop}/themes/catppuccin_${config.catppuccin.flavor}.theme $out/themes/nixos.theme + cp ${pkgs.catppuccin-btop-git.src}/themes/catppuccin_latte.theme $out/themes/ + cp ${pkgs.catppuccin-btop-git.src}/themes/catppuccin_${config.catppuccin.flavor}.theme $out/themes/nixos.theme ''; in { home.file.".config/btop" = { diff --git a/packages/catppuccin-discord/default.nix b/packages/catppuccin-discord/default.nix new file mode 100644 index 0000000..c672ab1 --- /dev/null +++ b/packages/catppuccin-discord/default.nix @@ -0,0 +1,57 @@ +{ + lib, + stdenv, + fetchYarnDeps, + yarn, + nodejs, + fixup-yarn-lock, + nodePackages, + catppuccin-discord-git, +}: +stdenv.mkDerivation rec { + pname = "catppuccin-discord"; + version = "unstable-${catppuccin-discord-git.date}-${catppuccin-discord-git.version}"; + + src = catppuccin-discord-git.src; + + yarnOfflineCache = fetchYarnDeps { + yarnLock = "${src}/yarn.lock"; + hash = "sha256-BhE3aKyA/LBErjWx+lbEVb/CIXhqHkXbV+9U2djIBhs="; + }; + + nativeBuildInputs = [ + yarn + nodejs + fixup-yarn-lock + nodePackages.sass + ]; + + postPatch = '' + substituteInPlace package.json \ + --replace-fail "--no-charset --no-source-map" "" + ''; + + configurePhase = '' + export HOME=$TMPDIR + yarn config --offline set yarn-offline-mirror ${yarnOfflineCache} + fixup-yarn-lock yarn.lock + yarn install --offline --frozen-lockfile --ignore-scripts --ignore-platform + ''; + + buildPhase = '' + yarn --offline build + yarn --offline release + ''; + + installPhase = '' + mkdir -p $out/share/catppuccin-discord + cp -r dist/dist/* $out/share/catppuccin-discord/ + ''; + + meta = { + description = "Soothing pastel theme for Discord"; + homepage = "https://github.com/catppuccin/discord"; + license = lib.licenses.mit; + platforms = lib.platforms.all; + }; +} diff --git a/packages/overlay.nix b/packages/overlay.nix index e4cbd75..7db842d 100644 --- a/packages/overlay.nix +++ b/packages/overlay.nix @@ -1,5 +1,8 @@ final: prev: { spotify-webapp = final.callPackage ./spotify-webapp {}; + catppuccin-discord = final.callPackage ./catppuccin-discord { + inherit (final) catppuccin-discord-git; + }; openmw = final.callPackage ./openmw { openmw = prev.openmw; inherit (final) openmw-git; From dce7838b86efe0a0ef7729cb15f8f37180ba463f Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Fri, 16 Jan 2026 10:00:31 -0500 Subject: [PATCH 203/282] get rid of mkSource --- flake.nix | 17 +++++------------ home/graphical/mpv/default.nix | 2 +- home/terminal/btop/default.nix | 4 ++-- packages/catppuccin-discord/default.nix | 4 ++-- packages/openmw/default.nix | 5 +++-- 5 files changed, 13 insertions(+), 19 deletions(-) diff --git a/flake.nix b/flake.nix index f7a60dd..5fd83f6 100644 --- a/flake.nix +++ b/flake.nix @@ -108,13 +108,6 @@ allowUnfree = true; }; - # Helper to create source metadata - mkSource = src: { - inherit src; - version = src.shortRev or src.rev or "unknown"; - date = src.lastModifiedDate or "unknown"; - }; - mkNixosSystem = { hostname, system, @@ -142,13 +135,13 @@ niri.overlays.niri noctalia.overlays.default nur.overlays.default - (import ./packages/overlay.nix) (final: prev: { - openmw-git = mkSource openmw; - catppuccin-discord-git = mkSource catppuccin-discord; - catppuccin-btop-git = mkSource catppuccin-btop; - catppuccin-mpv-git = mkSource catppuccin-mpv; + openmw-git = openmw; + catppuccin-discord-git = catppuccin-discord; + catppuccin-btop-git = catppuccin-btop; + catppuccin-mpv-git = catppuccin-mpv; }) + (import ./packages/overlay.nix) ]; }; nix = { diff --git a/home/graphical/mpv/default.nix b/home/graphical/mpv/default.nix index 3a3a1d6..1ba31d4 100644 --- a/home/graphical/mpv/default.nix +++ b/home/graphical/mpv/default.nix @@ -6,7 +6,7 @@ mergedConfig = pkgs.runCommand "mergedConfig" {} '' mkdir -p $out ${pkgs.gnused}/bin/sed 's/#1e1e2e/#000000/g' \ - ${pkgs.catppuccin-mpv-git.src}/themes/${config.catppuccin.flavor}/${config.catppuccin.accent}.conf \ + ${pkgs.catppuccin-mpv-git}/themes/${config.catppuccin.flavor}/${config.catppuccin.accent}.conf \ > $out/mpv.conf ''; in { diff --git a/home/terminal/btop/default.nix b/home/terminal/btop/default.nix index a8f337a..52f8e03 100644 --- a/home/terminal/btop/default.nix +++ b/home/terminal/btop/default.nix @@ -7,8 +7,8 @@ mkdir -p $out/themes ${pkgs.gnused}/bin/sed 's/blankFlavor/${config.catppuccin.flavor}/g' \ ${./btop.conf} > $out/btop.conf - cp ${pkgs.catppuccin-btop-git.src}/themes/catppuccin_latte.theme $out/themes/ - cp ${pkgs.catppuccin-btop-git.src}/themes/catppuccin_${config.catppuccin.flavor}.theme $out/themes/nixos.theme + cp ${pkgs.catppuccin-btop-git}/themes/catppuccin_latte.theme $out/themes/ + cp ${pkgs.catppuccin-btop-git}/themes/catppuccin_${config.catppuccin.flavor}.theme $out/themes/nixos.theme ''; in { home.file.".config/btop" = { diff --git a/packages/catppuccin-discord/default.nix b/packages/catppuccin-discord/default.nix index c672ab1..556cd53 100644 --- a/packages/catppuccin-discord/default.nix +++ b/packages/catppuccin-discord/default.nix @@ -10,9 +10,9 @@ }: stdenv.mkDerivation rec { pname = "catppuccin-discord"; - version = "unstable-${catppuccin-discord-git.date}-${catppuccin-discord-git.version}"; + version = "unstable-${catppuccin-discord-git.rev}"; - src = catppuccin-discord-git.src; + src = catppuccin-discord-git; yarnOfflineCache = fetchYarnDeps { yarnLock = "${src}/yarn.lock"; diff --git a/packages/openmw/default.nix b/packages/openmw/default.nix index 13e5da9..850c9bc 100644 --- a/packages/openmw/default.nix +++ b/packages/openmw/default.nix @@ -3,6 +3,7 @@ openmw-git, }: openmw.overrideAttrs (oldAttrs: { - version = "unstable-${openmw-git.date}-${openmw-git.version}"; - src = openmw-git.src; + pname = "openmw-unstable"; + version = "unstable-${openmw-git.rev}"; + src = openmw-git; }) From 96a0745a6d2b6eebd986a3a794569263c41d8b15 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Fri, 16 Jan 2026 11:03:50 -0500 Subject: [PATCH 204/282] revert to pure sddm & peach: add ddc support --- home/hosts/alien/default.nix | 6 ------ home/hosts/peach/default.nix | 6 ------ home/tiling/niri/noctalia.nix | 5 +++++ system/default.nix | 10 +++++----- system/hosts/alien/default.nix | 5 ----- system/hosts/peach/default.nix | 20 ++++++++++++++++++-- 6 files changed, 28 insertions(+), 24 deletions(-) diff --git a/home/hosts/alien/default.nix b/home/hosts/alien/default.nix index 3b78219..310972a 100644 --- a/home/hosts/alien/default.nix +++ b/home/hosts/alien/default.nix @@ -18,12 +18,6 @@ pkgs.daggerfall-unity ]; - programs.noctalia-shell.settings.brightness = { - brightnessStep = 5; - enforceMinimum = false; - enableDdcSupport = true; - }; - programs.spicetify = let spicePkgs = spicetify-nix.legacyPackages.${pkgs.stdenv.hostPlatform.system}; in { diff --git a/home/hosts/peach/default.nix b/home/hosts/peach/default.nix index ded2bd7..71560a5 100644 --- a/home/hosts/peach/default.nix +++ b/home/hosts/peach/default.nix @@ -18,12 +18,6 @@ render-drm-device = "/dev/dri/card2"; }; - programs.noctalia-shell.settings.brightness = { - brightnessStep = 5; - enforceMinimum = false; - enableDdcSupport = false; - }; - programs.plasma = { input.touchpads = [ { diff --git a/home/tiling/niri/noctalia.nix b/home/tiling/niri/noctalia.nix index ee59765..4bc249f 100644 --- a/home/tiling/niri/noctalia.nix +++ b/home/tiling/niri/noctalia.nix @@ -86,6 +86,11 @@ in { package = customPackage; settings = { settingsVersion = 0; + brightness = { + brightnessStep = 5; + enforceMinimum = false; + enableDdcSupport = true; + }; bar = { position = "top"; backgroundOpacity = 1; diff --git a/system/default.nix b/system/default.nix index ee04498..b73ec82 100755 --- a/system/default.nix +++ b/system/default.nix @@ -81,11 +81,11 @@ services = { desktopManager.plasma6.enable = true; displayManager = { - # sddm = { - # enable = true; - # wayland.enable = true; - # enableHidpi = true; - # }; + sddm = { + enable = true; + wayland.enable = true; + enableHidpi = true; + }; defaultSession = "niri"; }; diff --git a/system/hosts/alien/default.nix b/system/hosts/alien/default.nix index 71472e2..2f27f25 100644 --- a/system/hosts/alien/default.nix +++ b/system/hosts/alien/default.nix @@ -55,11 +55,6 @@ enable = false; user = "sckova"; }; - sddm = { - enable = true; - wayland.enable = true; - enableHidpi = true; - }; }; environment = { diff --git a/system/hosts/peach/default.nix b/system/hosts/peach/default.nix index eb127f2..c3fa403 100644 --- a/system/hosts/peach/default.nix +++ b/system/hosts/peach/default.nix @@ -1,4 +1,8 @@ -{pkgs, ...}: { +{ + pkgs, + config, + ... +}: { boot.kernelParams = ["appledrm.show_notch=1"]; catppuccin = { @@ -6,7 +10,19 @@ flavor = "macchiato"; }; - services.displayManager.gdm.enable = true; + environment.systemPackages = with pkgs; [ + ddcutil + ]; + + boot.extraModulePackages = [config.boot.kernelPackages.ddcci-driver]; + boot.kernelModules = [ + "i2c-dev" + "ddcci_backlight" + ]; + services.udev.extraRules = '' + KERNEL=="i2c-[0-9]*", GROUP="i2c", MODE="0660" + ''; + hardware.i2c.enable = true; hardware.asahi = { enable = true; From 99e8b1ae6765b0f8772ff6b9746ae1cd148a5e9b Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Fri, 16 Jan 2026 11:18:25 -0500 Subject: [PATCH 205/282] move custom noctalia shell to packages/ --- home/tiling/niri/noctalia.nix | 79 ++------------------------- packages/noctalia-shell/default.nix | 82 +++++++++++++++++++++++++++++ packages/overlay.nix | 13 +++++ 3 files changed, 98 insertions(+), 76 deletions(-) create mode 100644 packages/noctalia-shell/default.nix diff --git a/home/tiling/niri/noctalia.nix b/home/tiling/niri/noctalia.nix index 4bc249f..e5f92db 100644 --- a/home/tiling/niri/noctalia.nix +++ b/home/tiling/niri/noctalia.nix @@ -1,85 +1,12 @@ { pkgs, config, - lib, ... }: let - # Get the actual color palettes - darkPalette = pkgs.catppuccin.${config.catppuccin.flavor}; - lightPalette = pkgs.catppuccin.latte; - - # Create theme from palette - mkTheme = palette: accent: { - mPrimary = palette.${accent}; - mOnPrimary = palette.crust; - mSecondary = palette.subtext0; - mOnSecondary = palette.crust; - mTertiary = palette.teal; - mOnTertiary = palette.crust; - mError = palette.red; - mOnError = palette.crust; - mSurface = palette.mantle; - mOnSurface = palette.text; - mSurfaceVariant = palette.surface0; - mOnSurfaceVariant = palette.lavender; - mOutline = palette.surface2; - mShadow = palette.crust; - mHover = palette.subtext1; - mOnHover = palette.crust; + customPackage = pkgs.mkNoctaliaShellCustom { + catppuccin-flavor = config.catppuccin.flavor; + catppuccin-accent = config.catppuccin.accent; }; - - # Build the complete color scheme - customScheme = { - dark = mkTheme darkPalette config.catppuccin.accent; - light = mkTheme lightPalette config.catppuccin.accent; - }; - - # Convert to JSON - schemeJson = builtins.toJSON customScheme; - - customPackage = pkgs.noctalia-shell.overrideAttrs (oldAttrs: { - pname = "noctalia-shell-custom"; - nativeBuildInputs = (oldAttrs.nativeBuildInputs or []) ++ [pkgs.jq]; - - postPatch = - (oldAttrs.postPatch or "") - + '' - echo "Patching noctalia-shell with Cat-Custom theme..." - echo " Dark: ${config.catppuccin.flavor} / Light: latte" - echo " Accent: ${config.catppuccin.accent}" - - if [ -d Assets/ColorScheme/Catppuccin ]; then - mkdir -p Assets/ColorScheme/Cat-Custom - - # Write the JSON directly - cat > Assets/ColorScheme/Cat-Custom/Cat-Custom.json << 'COLORSCHEME_EOF' - ${schemeJson} - COLORSCHEME_EOF - - echo "Created Cat-Custom color scheme:" - ${pkgs.jq}/bin/jq -C '.' Assets/ColorScheme/Cat-Custom/Cat-Custom.json || true - - # Add translation entries - for lang in en fr de es pt zh-CN; do - if [ -f "Assets/Translations/$lang.json" ]; then - ${pkgs.jq}/bin/jq \ - '.["color-scheme"].predefined.schemes["Cat-Custom"] = "Cat-Custom"' \ - "Assets/Translations/$lang.json" > "Assets/Translations/$lang.json.tmp" \ - && mv "Assets/Translations/$lang.json.tmp" "Assets/Translations/$lang.json" - fi - done - else - echo "ERROR: ColorScheme directory not found" - exit 1 - fi - ''; - - meta = - oldAttrs.meta - // { - description = "${oldAttrs.meta.description} (Cat-Custom: ${config.catppuccin.flavor}/${config.catppuccin.accent})"; - }; - }); in { programs.noctalia-shell = { enable = true; diff --git a/packages/noctalia-shell/default.nix b/packages/noctalia-shell/default.nix new file mode 100644 index 0000000..0235735 --- /dev/null +++ b/packages/noctalia-shell/default.nix @@ -0,0 +1,82 @@ +{ + pkgs, + noctalia-shell, + catppuccin-flavor, + catppuccin-accent, +}: let + # Get the actual color palettes + darkPalette = pkgs.catppuccin.${catppuccin-flavor}; + lightPalette = pkgs.catppuccin.latte; + + # Create theme from palette + mkTheme = palette: accent: { + mPrimary = palette.${accent}; + mOnPrimary = palette.crust; + mSecondary = palette.subtext0; + mOnSecondary = palette.crust; + mTertiary = palette.teal; + mOnTertiary = palette.crust; + mError = palette.red; + mOnError = palette.crust; + mSurface = palette.mantle; + mOnSurface = palette.text; + mSurfaceVariant = palette.surface0; + mOnSurfaceVariant = palette.lavender; + mOutline = palette.surface2; + mShadow = palette.crust; + mHover = palette.subtext1; + mOnHover = palette.crust; + }; + + # Build the complete color scheme + customScheme = { + dark = mkTheme darkPalette catppuccin-accent; + light = mkTheme lightPalette catppuccin-accent; + }; + + # Convert to JSON + schemeJson = builtins.toJSON customScheme; +in + noctalia-shell.overrideAttrs (oldAttrs: { + pname = "noctalia-shell-custom"; + nativeBuildInputs = (oldAttrs.nativeBuildInputs or []) ++ [pkgs.jq]; + + postPatch = + (oldAttrs.postPatch or "") + + '' + echo "Patching noctalia-shell with Cat-Custom theme..." + echo " Dark: ${catppuccin-flavor} / Light: latte" + echo " Accent: ${catppuccin-accent}" + + if [ -d Assets/ColorScheme/Catppuccin ]; then + mkdir -p Assets/ColorScheme/Cat-Custom + + # Write the JSON directly + cat > Assets/ColorScheme/Cat-Custom/Cat-Custom.json << 'COLORSCHEME_EOF' + ${schemeJson} + COLORSCHEME_EOF + + echo "Created Cat-Custom color scheme:" + ${pkgs.jq}/bin/jq -C '.' Assets/ColorScheme/Cat-Custom/Cat-Custom.json || true + + # Add translation entries + for lang in en fr de es pt zh-CN; do + if [ -f "Assets/Translations/$lang.json" ]; then + ${pkgs.jq}/bin/jq \ + '.["color-scheme"].predefined.schemes["Cat-Custom"] = "Cat-Custom"' \ + "Assets/Translations/$lang.json" > "Assets/Translations/$lang.json.tmp" \ + && mv "Assets/Translations/$lang.json.tmp" "Assets/Translations/$lang.json" + fi + done + else + echo "ERROR: ColorScheme directory not found" + exit 1 + fi + ''; + + meta = + oldAttrs.meta + // { + description = "${oldAttrs.meta.description} (Cat-Custom: ${catppuccin-flavor}/${catppuccin-accent})"; + }; + }) diff --git a/packages/overlay.nix b/packages/overlay.nix index 7db842d..1b84633 100644 --- a/packages/overlay.nix +++ b/packages/overlay.nix @@ -1,13 +1,26 @@ final: prev: { spotify-webapp = final.callPackage ./spotify-webapp {}; + catppuccin-discord = final.callPackage ./catppuccin-discord { inherit (final) catppuccin-discord-git; }; + openmw = final.callPackage ./openmw { openmw = prev.openmw; inherit (final) openmw-git; }; + # Noctalia shell is parameterized by catppuccin theme, so we create a function + # that home-manager configs can call with their specific theme settings + mkNoctaliaShellCustom = { + catppuccin-flavor, + catppuccin-accent, + }: + final.callPackage ./noctalia-shell { + noctalia-shell = final.noctalia-shell; + inherit catppuccin-flavor catppuccin-accent; + }; + linuxPackages_asahi = prev.linuxPackages_asahi.override { _kernelPatches = [ { From b3a1a9fb42ea48b502fea672816cacbc6636322b Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Fri, 16 Jan 2026 12:03:35 -0500 Subject: [PATCH 206/282] add git aliases, remove redundant line in catppuccin-discord --- home/graphical/mpv/default.nix | 2 +- home/terminal/fish/default.nix | 6 ++++++ packages/catppuccin-discord/default.nix | 1 - 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/home/graphical/mpv/default.nix b/home/graphical/mpv/default.nix index 1ba31d4..4618f06 100644 --- a/home/graphical/mpv/default.nix +++ b/home/graphical/mpv/default.nix @@ -5,7 +5,7 @@ }: let mergedConfig = pkgs.runCommand "mergedConfig" {} '' mkdir -p $out - ${pkgs.gnused}/bin/sed 's/#1e1e2e/#000000/g' \ + ${pkgs.gnused}/bin/sed 's/${pkgs.catppuccin.${config.catppuccin.flavor}.base}/#000000/g' \ ${pkgs.catppuccin-mpv-git}/themes/${config.catppuccin.flavor}/${config.catppuccin.accent}.conf \ > $out/mpv.conf ''; diff --git a/home/terminal/fish/default.nix b/home/terminal/fish/default.nix index 2d237cb..2792c57 100644 --- a/home/terminal/fish/default.nix +++ b/home/terminal/fish/default.nix @@ -15,6 +15,12 @@ ssh = "kitty-ssh"; cat = "bat"; ls = "eza"; + gl = "git log"; + ga = "git add -v ."; + gac = "git add -v . && git commit"; + gaca = "git add -v . && git commit --amend --no-edit"; + gp = "git push"; + gpf = "git push --force"; }; functions = { fish_prompt = { diff --git a/packages/catppuccin-discord/default.nix b/packages/catppuccin-discord/default.nix index 556cd53..ec4105e 100644 --- a/packages/catppuccin-discord/default.nix +++ b/packages/catppuccin-discord/default.nix @@ -39,7 +39,6 @@ stdenv.mkDerivation rec { ''; buildPhase = '' - yarn --offline build yarn --offline release ''; From a9214714227ce0c9956364e89dd59c69afa00487 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Sat, 17 Jan 2026 15:10:11 -0500 Subject: [PATCH 207/282] update flake --- flake.lock | 96 +++++++++++++++++++++++++++--------------------------- 1 file changed, 48 insertions(+), 48 deletions(-) diff --git a/flake.lock b/flake.lock index 8bb6059..4da3f6d 100644 --- a/flake.lock +++ b/flake.lock @@ -8,11 +8,11 @@ ] }, "locked": { - "lastModified": 1768504916, - "narHash": "sha256-YlRaFqneUIwi6PPzrwEUtO0UZIxGFS3D8fSaqnPTKzE=", + "lastModified": 1768564560, + "narHash": "sha256-YyIzhZoFVE4C5P9e0wZGjx4P9IT/OTUMFF3r6iKd3UY=", "owner": "nix-community", "repo": "nixos-apple-silicon", - "rev": "233bb4e048ca11efb9b7297079213dbe1dcfb5e8", + "rev": "83a2bb509972148aa6d3f75c65103b6bfb7898af", "type": "github" }, "original": { @@ -24,11 +24,11 @@ "cachyos-kernel": { "flake": false, "locked": { - "lastModified": 1768206129, - "narHash": "sha256-BpTer/+8ZSHq4hXbfN/DZh1rru3LVCapp6ks1nyuWj0=", + "lastModified": 1768669154, + "narHash": "sha256-n9peTL7TAv1FIsboTEE1nWvuY2HYB67Jhh8o4O/JGfY=", "owner": "CachyOS", "repo": "linux-cachyos", - "rev": "8e4d77a4aeef28c8e93fd9b724d61a84b11b384f", + "rev": "4d7506c820f0d18fc0bbc36ecfec8ed126aee682", "type": "github" }, "original": { @@ -40,11 +40,11 @@ "cachyos-kernel-patches": { "flake": false, "locked": { - "lastModified": 1768412116, - "narHash": "sha256-XDKI0POpjvQsTitsFyhn9LB2ufOGGYzrTTPY7z8lESk=", + "lastModified": 1768668945, + "narHash": "sha256-XKQ3DHUnaa/00BfIaY6K8xCZgx0Sy2wXQbNYE/AmWSk=", "owner": "CachyOS", "repo": "kernel-patches", - "rev": "af948449e6e97afbac82dc9887e2b2b95d1a6519", + "rev": "cba022ec33a81d60a1e2c9fe4622196e3fef2b54", "type": "github" }, "original": { @@ -60,11 +60,11 @@ ] }, "locked": { - "lastModified": 1767967164, - "narHash": "sha256-Cx4VETh9dGoQYDtWhre7g66d7SAr+h1h6f+SSHxVrck=", + "lastModified": 1768575137, + "narHash": "sha256-e0SsKnkSnq+UwZNS9ZyPJjTjabzq9TRc1hqeDnvOF1Q=", "owner": "catppuccin", "repo": "nix", - "rev": "e973584280e3b0e1d5b5a1a5e9948dc222c54af7", + "rev": "48e67b4ad22072f1ae30b0ed8e1cb020cf06c611", "type": "github" }, "original": { @@ -252,11 +252,11 @@ ] }, "locked": { - "lastModified": 1767910483, - "narHash": "sha256-MOU5YdVu4DVwuT5ztXgQpPuRRBjSjUGIdUzOQr9iQOY=", + "lastModified": 1768603898, + "narHash": "sha256-vRV1dWJOCpCal3PRr86wE2WTOMfAhTu6G7bSvOsryUo=", "owner": "nix-community", "repo": "home-manager", - "rev": "82fb7dedaad83e5e279127a38ef410bcfac6d77c", + "rev": "2a63d0e9d2c72ac4d4150ebb242cf8d86f488c8c", "type": "github" }, "original": { @@ -306,11 +306,11 @@ "xwayland-satellite-unstable": "xwayland-satellite-unstable" }, "locked": { - "lastModified": 1768492302, - "narHash": "sha256-MJ5zfUO7UZYARxy9EOpSooE961eH3K75CGOn84thbQM=", + "lastModified": 1768669983, + "narHash": "sha256-OGl180QZ1QIirJ7Cy9Tqrgn/XEglaKGBeb5pys/sS7Y=", "owner": "sodiboo", "repo": "niri-flake", - "rev": "cbf53d0b9c9531d654e7dbcf1f9117a221ad5c58", + "rev": "b90da048a6ae94b49ff489bacac4a49206670c18", "type": "github" }, "original": { @@ -339,11 +339,11 @@ "niri-unstable": { "flake": false, "locked": { - "lastModified": 1768487377, - "narHash": "sha256-+WOpoDSvYJds8zCMlwDHKBivxSViM5n1J1Jo9Lcf19Y=", + "lastModified": 1768653140, + "narHash": "sha256-8/u6/KHghsTHb3zmw8hYbwRQIp7UgMyQyqn4zVFN1S0=", "owner": "YaLTeR", "repo": "niri", - "rev": "87e2dd0361172a48cb3ac8e5b3f6f701c758700d", + "rev": "3ccb06f5644c4bcdf74ad2e4d388a13ac65207af", "type": "github" }, "original": { @@ -361,11 +361,11 @@ "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1768500095, - "narHash": "sha256-SnUkJLuf4H50+saKJIHd5kF+qnCoFlJ2KsXf5YS2AIA=", + "lastModified": 1768671945, + "narHash": "sha256-c+eJggWzQKYze1S/fQtW4xD+MD5FvCwyiLq4Ig1hIrA=", "owner": "xddxdd", "repo": "nix-cachyos-kernel", - "rev": "6a41243b23a38d83d3f022715f3add4029184e4b", + "rev": "0deadd1965740f6c9eb51254156af2914e1c0d50", "type": "github" }, "original": { @@ -376,11 +376,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1768467226, - "narHash": "sha256-Y/Q3pFk5htWkitAXIKGSVYzdt7fNn74YXSJS5GjSPZ4=", + "lastModified": 1768640357, + "narHash": "sha256-NRmPViu76stpOUahRWuR3zMKfY2dKr/qAxRlcqfyps4=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "0827ca4b685736d2de7f7b1f80f3be996514ef59", + "rev": "d157866bc6cc1a986f88f6e78a6884efeeec6187", "type": "github" }, "original": { @@ -407,11 +407,11 @@ }, "nixpkgs-stable": { "locked": { - "lastModified": 1768323494, - "narHash": "sha256-yBXJLE6WCtrGo7LKiB6NOt6nisBEEkguC/lq/rP3zRQ=", + "lastModified": 1768484090, + "narHash": "sha256-HBIfbB9MF9oqQTxs/W5440mzVaYDBWU9tuX95aZ8h64=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "2c3e5ec5df46d3aeee2a1da0bfedd74e21f4bf3a", + "rev": "d4fa45dc2d4d32c10cb7c6b530a6b4b7d2429442", "type": "github" }, "original": { @@ -423,11 +423,11 @@ }, "nixpkgs-unstable": { "locked": { - "lastModified": 1768305791, - "narHash": "sha256-AIdl6WAn9aymeaH/NvBj0H9qM+XuAuYbGMZaP0zcXAQ=", + "lastModified": 1768564909, + "narHash": "sha256-Kell/SpJYVkHWMvnhqJz/8DqQg2b6PguxVWOuadbHCc=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "1412caf7bf9e660f2f962917c14b1ea1c3bc695e", + "rev": "e4bae1bd10c9c57b2cf517953ab70060a828ee6f", "type": "github" }, "original": { @@ -439,11 +439,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1768323494, - "narHash": "sha256-yBXJLE6WCtrGo7LKiB6NOt6nisBEEkguC/lq/rP3zRQ=", + "lastModified": 1768484090, + "narHash": "sha256-HBIfbB9MF9oqQTxs/W5440mzVaYDBWU9tuX95aZ8h64=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "2c3e5ec5df46d3aeee2a1da0bfedd74e21f4bf3a", + "rev": "d4fa45dc2d4d32c10cb7c6b530a6b4b7d2429442", "type": "github" }, "original": { @@ -484,11 +484,11 @@ ] }, "locked": { - "lastModified": 1768515139, - "narHash": "sha256-9Os2E1HATAeEFiiNveXNzziCOxSXW7Tbyn+Wv8nPvYE=", + "lastModified": 1768675584, + "narHash": "sha256-YcQRhf1AQv0jHey5DMek5UQvkqSs+Q/yktXEm8ymaRA=", "owner": "noctalia-dev", "repo": "noctalia-shell", - "rev": "548007724dd64cc4d7285b6d7abe9cac123e00ce", + "rev": "1d792b01b4cf2160000f7ef6e9388843cf5106d3", "type": "github" }, "original": { @@ -505,11 +505,11 @@ ] }, "locked": { - "lastModified": 1768513652, - "narHash": "sha256-gumQwI3+cmzXJNZQpL8NfjNoi+E+8yv8t0t30I2PQ7U=", + "lastModified": 1768678623, + "narHash": "sha256-MyrKCHIZp64SBXOKBpn2SpR/xXtXnmd+aEneLC8jzA0=", "owner": "nix-community", "repo": "NUR", - "rev": "321a80b638edab9533f254070e8cf3acc37c0b8a", + "rev": "82551fa3d3324211956ce513c4ca50f9beea20af", "type": "github" }, "original": { @@ -544,11 +544,11 @@ "openmw": { "flake": false, "locked": { - "lastModified": 1768342692, - "narHash": "sha256-XLlg+JKE7mvbytjPq4iue9JTVA/Uv2bn1mYS1OEIWFY=", + "lastModified": 1768594407, + "narHash": "sha256-jACd+r0ZULYrnFCjHg+I4uXmlXNB4lPNrvQt5UpSuIc=", "owner": "OpenMW", "repo": "openmw", - "rev": "3ac8eb07876e1d0a5fe52baca70d0b972cf1e33c", + "rev": "74387b469455348449454fdf913af478f13bab67", "type": "gitlab" }, "original": { @@ -609,11 +609,11 @@ "systems": "systems_3" }, "locked": { - "lastModified": 1768107098, - "narHash": "sha256-mSthw4k7jkB5S8+NYZwrQFItLj+17Se7Wn0pIfdASbc=", + "lastModified": 1768656845, + "narHash": "sha256-xNlXMyn7yc3Z/NOsz4NchO7gWFwsoCvtJ26pys4s2/M=", "owner": "Gerg-L", "repo": "spicetify-nix", - "rev": "2e40e07527f9d724b1578f0af590ab345e836ec3", + "rev": "8bd7e49d5ac62756bee6e4b02221fb96bfc3c99a", "type": "github" }, "original": { From 8c43814c4efda31453545fca5936c600ca539d66 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Mon, 19 Jan 2026 12:35:29 -0500 Subject: [PATCH 208/282] update niri config --- home/tiling/niri/niri.nix | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/home/tiling/niri/niri.nix b/home/tiling/niri/niri.nix index 8fce4f5..2335ff7 100644 --- a/home/tiling/niri/niri.nix +++ b/home/tiling/niri/niri.nix @@ -138,10 +138,10 @@ } { geometry-corner-radius = { - top-left = 16.0; - top-right = 16.0; - bottom-left = 16.0; - bottom-right = 16.0; + top-left = 0.0; + top-right = 0.0; + bottom-left = 0.0; + bottom-right = 0.0; }; clip-to-geometry = true; } @@ -159,14 +159,6 @@ open-maximized = true; open-focused = true; } - { - matches = [ - { - app-id = "mpv"; - } - ]; - border.active.color = pkgs.catppuccin.${config.catppuccin.flavor}.surface1; - } ]; binds = { "Mod+Shift+Slash".action.show-hotkey-overlay = {}; From 52f48ab9788b7883f6437c89c1402bb8f53b7695 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Mon, 19 Jan 2026 12:40:30 -0500 Subject: [PATCH 209/282] refactor home/tiling refactor home/terminal refactor home/apps refactor home/services refactor home/games --- flake.nix | 21 ++++++------------- home/apps/default.nix | 8 +++++++ .../discord/default.nix => apps/discord.nix} | 0 .../default.nix => apps/librewolf.nix} | 2 +- .../librewolf_css}/theme/hide.css | 0 .../librewolf_css}/theme/theme.css | 0 .../librewolf_css}/userChrome.css | 0 .../mpv/default.nix => apps/mpv.nix} | 0 home/{graphical/discord => apps}/vencord.nix | 0 home/{vscode/default.nix => apps/vscode.nix} | 0 home/games/default.nix | 6 ++++++ .../{minecraft/default.nix => minecraft.nix} | 0 .../{morrowind/default.nix => morrowind.nix} | 0 home/{theming => services}/default.nix | 6 +++++- home/{theming => services}/gtk.nix | 0 home/{theming => services}/qt.nix | 0 .../default.nix => services/systemd.nix} | 0 home/terminal/{btop => }/btop.conf | 0 home/terminal/{btop/default.nix => btop.nix} | 0 home/terminal/default.nix | 8 +++++++ home/terminal/{fish/default.nix => fish.nix} | 8 +++---- .../fish-prompt.fish | 0 .../kitty-ssh.fish | 0 .../functions => fish_functions}/logout.fish | 0 .../nix-shell.fish | 0 .../terminal/{kitty/default.nix => kitty.nix} | 0 .../terminal/{nvim/default.nix => neovim.nix} | 0 home/tiling/{niri => }/default.nix | 1 + home/tiling/{niri => }/niri.nix | 0 home/tiling/{niri => }/noctalia.nix | 0 .../{wallpaper/default.nix => wallpaper.nix} | 0 31 files changed, 39 insertions(+), 21 deletions(-) create mode 100644 home/apps/default.nix rename home/{graphical/discord/default.nix => apps/discord.nix} (100%) rename home/{graphical/firefox/default.nix => apps/librewolf.nix} (99%) rename home/{graphical/firefox/chrome => apps/librewolf_css}/theme/hide.css (100%) rename home/{graphical/firefox/chrome => apps/librewolf_css}/theme/theme.css (100%) rename home/{graphical/firefox/chrome => apps/librewolf_css}/userChrome.css (100%) rename home/{graphical/mpv/default.nix => apps/mpv.nix} (100%) rename home/{graphical/discord => apps}/vencord.nix (100%) rename home/{vscode/default.nix => apps/vscode.nix} (100%) create mode 100644 home/games/default.nix rename home/games/{minecraft/default.nix => minecraft.nix} (100%) rename home/games/{morrowind/default.nix => morrowind.nix} (100%) rename home/{theming => services}/default.nix (95%) rename home/{theming => services}/gtk.nix (100%) rename home/{theming => services}/qt.nix (100%) rename home/{systemd/default.nix => services/systemd.nix} (100%) rename home/terminal/{btop => }/btop.conf (100%) rename home/terminal/{btop/default.nix => btop.nix} (100%) create mode 100644 home/terminal/default.nix rename home/terminal/{fish/default.nix => fish.nix} (82%) rename home/terminal/{fish/functions => fish_functions}/fish-prompt.fish (100%) rename home/terminal/{fish/functions => fish_functions}/kitty-ssh.fish (100%) rename home/terminal/{fish/functions => fish_functions}/logout.fish (100%) rename home/terminal/{fish/functions => fish_functions}/nix-shell.fish (100%) rename home/terminal/{kitty/default.nix => kitty.nix} (100%) rename home/terminal/{nvim/default.nix => neovim.nix} (100%) rename home/tiling/{niri => }/default.nix (94%) rename home/tiling/{niri => }/niri.nix (100%) rename home/tiling/{niri => }/noctalia.nix (100%) rename home/tiling/{wallpaper/default.nix => wallpaper.nix} (100%) diff --git a/flake.nix b/flake.nix index 5fd83f6..97e14ae 100644 --- a/flake.nix +++ b/flake.nix @@ -214,22 +214,13 @@ users.sckova = { imports = [ ./home - ./home/games/minecraft - ./home/games/morrowind - ./home/graphical/discord - ./home/graphical/firefox - ./home/graphical/mpv - ./home/tiling/niri - ./home/tiling/wallpaper - ./home/systemd - ./home/terminal/btop - ./home/terminal/fish - ./home/terminal/kitty - ./home/terminal/nvim - ./home/kde - ./home/theming - ./home/vscode + ./home/apps + ./home/games ./home/hosts/${hostname} + ./home/kde + ./home/services + ./home/terminal + ./home/tiling ]; }; sharedModules = [ diff --git a/home/apps/default.nix b/home/apps/default.nix new file mode 100644 index 0000000..863e312 --- /dev/null +++ b/home/apps/default.nix @@ -0,0 +1,8 @@ +{ + imports = [ + ./discord.nix + ./librewolf.nix + ./mpv.nix + ./vscode.nix + ]; +} diff --git a/home/graphical/discord/default.nix b/home/apps/discord.nix similarity index 100% rename from home/graphical/discord/default.nix rename to home/apps/discord.nix diff --git a/home/graphical/firefox/default.nix b/home/apps/librewolf.nix similarity index 99% rename from home/graphical/firefox/default.nix rename to home/apps/librewolf.nix index cf91304..c159216 100644 --- a/home/graphical/firefox/default.nix +++ b/home/apps/librewolf.nix @@ -6,7 +6,7 @@ ... }: { home.file.".librewolf/default/chrome/" = { - source = ./chrome; + source = ./librewolf_css; force = true; recursive = true; }; diff --git a/home/graphical/firefox/chrome/theme/hide.css b/home/apps/librewolf_css/theme/hide.css similarity index 100% rename from home/graphical/firefox/chrome/theme/hide.css rename to home/apps/librewolf_css/theme/hide.css diff --git a/home/graphical/firefox/chrome/theme/theme.css b/home/apps/librewolf_css/theme/theme.css similarity index 100% rename from home/graphical/firefox/chrome/theme/theme.css rename to home/apps/librewolf_css/theme/theme.css diff --git a/home/graphical/firefox/chrome/userChrome.css b/home/apps/librewolf_css/userChrome.css similarity index 100% rename from home/graphical/firefox/chrome/userChrome.css rename to home/apps/librewolf_css/userChrome.css diff --git a/home/graphical/mpv/default.nix b/home/apps/mpv.nix similarity index 100% rename from home/graphical/mpv/default.nix rename to home/apps/mpv.nix diff --git a/home/graphical/discord/vencord.nix b/home/apps/vencord.nix similarity index 100% rename from home/graphical/discord/vencord.nix rename to home/apps/vencord.nix diff --git a/home/vscode/default.nix b/home/apps/vscode.nix similarity index 100% rename from home/vscode/default.nix rename to home/apps/vscode.nix diff --git a/home/games/default.nix b/home/games/default.nix new file mode 100644 index 0000000..c7da03f --- /dev/null +++ b/home/games/default.nix @@ -0,0 +1,6 @@ +{ + imports = [ + ./minecraft.nix + ./morrowind.nix + ]; +} diff --git a/home/games/minecraft/default.nix b/home/games/minecraft.nix similarity index 100% rename from home/games/minecraft/default.nix rename to home/games/minecraft.nix diff --git a/home/games/morrowind/default.nix b/home/games/morrowind.nix similarity index 100% rename from home/games/morrowind/default.nix rename to home/games/morrowind.nix diff --git a/home/theming/default.nix b/home/services/default.nix similarity index 95% rename from home/theming/default.nix rename to home/services/default.nix index 84949bd..4562f44 100644 --- a/home/theming/default.nix +++ b/home/services/default.nix @@ -3,7 +3,11 @@ pkgs, ... }: { - imports = [./gtk.nix ./qt.nix]; + imports = [ + ./gtk.nix + ./qt.nix + ./systemd.nix + ]; home.file = { ".icons/default/index.theme" = { diff --git a/home/theming/gtk.nix b/home/services/gtk.nix similarity index 100% rename from home/theming/gtk.nix rename to home/services/gtk.nix diff --git a/home/theming/qt.nix b/home/services/qt.nix similarity index 100% rename from home/theming/qt.nix rename to home/services/qt.nix diff --git a/home/systemd/default.nix b/home/services/systemd.nix similarity index 100% rename from home/systemd/default.nix rename to home/services/systemd.nix diff --git a/home/terminal/btop/btop.conf b/home/terminal/btop.conf similarity index 100% rename from home/terminal/btop/btop.conf rename to home/terminal/btop.conf diff --git a/home/terminal/btop/default.nix b/home/terminal/btop.nix similarity index 100% rename from home/terminal/btop/default.nix rename to home/terminal/btop.nix diff --git a/home/terminal/default.nix b/home/terminal/default.nix new file mode 100644 index 0000000..379f1df --- /dev/null +++ b/home/terminal/default.nix @@ -0,0 +1,8 @@ +{ + imports = [ + ./btop.nix + ./fish.nix + ./kitty.nix + ./neovim.nix + ]; +} diff --git a/home/terminal/fish/default.nix b/home/terminal/fish.nix similarity index 82% rename from home/terminal/fish/default.nix rename to home/terminal/fish.nix index 2792c57..a8d1944 100644 --- a/home/terminal/fish/default.nix +++ b/home/terminal/fish.nix @@ -25,19 +25,19 @@ functions = { fish_prompt = { description = "Write out the prompt"; - body = builtins.readFile ./functions/fish-prompt.fish; + body = builtins.readFile ./fish_functions/fish-prompt.fish; }; kitty-ssh = { description = "Integrate Kitten SSH with Fish"; - body = builtins.readFile ./functions/kitty-ssh.fish; + body = builtins.readFile ./fish_functions/kitty-ssh.fish; }; nix-shell = { description = "Wrapper for nix-shell that runs fish by default"; - body = builtins.readFile ./functions/nix-shell.fish; + body = builtins.readFile ./fish_functions/nix-shell.fish; }; logout = { description = "Log out of KDE Plasma"; - body = builtins.readFile ./functions/logout.fish; + body = builtins.readFile ./fish_functions/logout.fish; }; }; }; diff --git a/home/terminal/fish/functions/fish-prompt.fish b/home/terminal/fish_functions/fish-prompt.fish similarity index 100% rename from home/terminal/fish/functions/fish-prompt.fish rename to home/terminal/fish_functions/fish-prompt.fish diff --git a/home/terminal/fish/functions/kitty-ssh.fish b/home/terminal/fish_functions/kitty-ssh.fish similarity index 100% rename from home/terminal/fish/functions/kitty-ssh.fish rename to home/terminal/fish_functions/kitty-ssh.fish diff --git a/home/terminal/fish/functions/logout.fish b/home/terminal/fish_functions/logout.fish similarity index 100% rename from home/terminal/fish/functions/logout.fish rename to home/terminal/fish_functions/logout.fish diff --git a/home/terminal/fish/functions/nix-shell.fish b/home/terminal/fish_functions/nix-shell.fish similarity index 100% rename from home/terminal/fish/functions/nix-shell.fish rename to home/terminal/fish_functions/nix-shell.fish diff --git a/home/terminal/kitty/default.nix b/home/terminal/kitty.nix similarity index 100% rename from home/terminal/kitty/default.nix rename to home/terminal/kitty.nix diff --git a/home/terminal/nvim/default.nix b/home/terminal/neovim.nix similarity index 100% rename from home/terminal/nvim/default.nix rename to home/terminal/neovim.nix diff --git a/home/tiling/niri/default.nix b/home/tiling/default.nix similarity index 94% rename from home/tiling/niri/default.nix rename to home/tiling/default.nix index 638c80e..5a0601c 100644 --- a/home/tiling/niri/default.nix +++ b/home/tiling/default.nix @@ -2,6 +2,7 @@ imports = [ ./niri.nix ./noctalia.nix + ./wallpaper.nix ]; home.packages = with pkgs; [ diff --git a/home/tiling/niri/niri.nix b/home/tiling/niri.nix similarity index 100% rename from home/tiling/niri/niri.nix rename to home/tiling/niri.nix diff --git a/home/tiling/niri/noctalia.nix b/home/tiling/noctalia.nix similarity index 100% rename from home/tiling/niri/noctalia.nix rename to home/tiling/noctalia.nix diff --git a/home/tiling/wallpaper/default.nix b/home/tiling/wallpaper.nix similarity index 100% rename from home/tiling/wallpaper/default.nix rename to home/tiling/wallpaper.nix From f973c7bb0caab8dc8869cea2ccce04882bdc76a8 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Mon, 19 Jan 2026 13:30:34 -0500 Subject: [PATCH 210/282] use upstream noctalia-shell theming --- home/tiling/noctalia.nix | 29 ++++++---- packages/noctalia-shell/default.nix | 82 ----------------------------- packages/overlay.nix | 11 ---- 3 files changed, 20 insertions(+), 102 deletions(-) delete mode 100644 packages/noctalia-shell/default.nix diff --git a/home/tiling/noctalia.nix b/home/tiling/noctalia.nix index e5f92db..6606dca 100644 --- a/home/tiling/noctalia.nix +++ b/home/tiling/noctalia.nix @@ -2,15 +2,27 @@ pkgs, config, ... -}: let - customPackage = pkgs.mkNoctaliaShellCustom { - catppuccin-flavor = config.catppuccin.flavor; - catppuccin-accent = config.catppuccin.accent; - }; -in { +}: { programs.noctalia-shell = { enable = true; - package = customPackage; + colors = { + mPrimary = pkgs.catppuccin.${config.catppuccin.flavor}.${config.catppuccin.accent}; + mOnPrimary = pkgs.catppuccin.${config.catppuccin.flavor}.crust; + mSecondary = pkgs.catppuccin.${config.catppuccin.flavor}.subtext0; + mOnSecondary = pkgs.catppuccin.${config.catppuccin.flavor}.crust; + mTertiary = pkgs.catppuccin.${config.catppuccin.flavor}.teal; + mOnTertiary = pkgs.catppuccin.${config.catppuccin.flavor}.crust; + mError = pkgs.catppuccin.${config.catppuccin.flavor}.red; + mOnError = pkgs.catppuccin.${config.catppuccin.flavor}.crust; + mSurface = pkgs.catppuccin.${config.catppuccin.flavor}.mantle; + mOnSurface = pkgs.catppuccin.${config.catppuccin.flavor}.text; + mSurfaceVariant = pkgs.catppuccin.${config.catppuccin.flavor}.surface0; + mOnSurfaceVariant = pkgs.catppuccin.${config.catppuccin.flavor}.lavender; + mOutline = pkgs.catppuccin.${config.catppuccin.flavor}.surface2; + mShadow = pkgs.catppuccin.${config.catppuccin.flavor}.crust; + mHover = pkgs.catppuccin.${config.catppuccin.flavor}.subtext1; + mOnHover = pkgs.catppuccin.${config.catppuccin.flavor}.crust; + }; settings = { settingsVersion = 0; brightness = { @@ -378,7 +390,6 @@ in { }; colorSchemes = { useWallpaperColors = false; - predefinedScheme = "Cat-Custom"; darkMode = true; schedulingMode = "off"; manualSunrise = "06:30"; @@ -435,7 +446,7 @@ in { }; Service = { - ExecStart = "${customPackage}/bin/noctalia-shell"; + ExecStart = "${pkgs.noctalia-shell}/bin/noctalia-shell"; Restart = "on-failure"; Environment = [ "LOCALE_ARCHIVE=${pkgs.glibcLocales}/lib/locale" diff --git a/packages/noctalia-shell/default.nix b/packages/noctalia-shell/default.nix deleted file mode 100644 index 0235735..0000000 --- a/packages/noctalia-shell/default.nix +++ /dev/null @@ -1,82 +0,0 @@ -{ - pkgs, - noctalia-shell, - catppuccin-flavor, - catppuccin-accent, -}: let - # Get the actual color palettes - darkPalette = pkgs.catppuccin.${catppuccin-flavor}; - lightPalette = pkgs.catppuccin.latte; - - # Create theme from palette - mkTheme = palette: accent: { - mPrimary = palette.${accent}; - mOnPrimary = palette.crust; - mSecondary = palette.subtext0; - mOnSecondary = palette.crust; - mTertiary = palette.teal; - mOnTertiary = palette.crust; - mError = palette.red; - mOnError = palette.crust; - mSurface = palette.mantle; - mOnSurface = palette.text; - mSurfaceVariant = palette.surface0; - mOnSurfaceVariant = palette.lavender; - mOutline = palette.surface2; - mShadow = palette.crust; - mHover = palette.subtext1; - mOnHover = palette.crust; - }; - - # Build the complete color scheme - customScheme = { - dark = mkTheme darkPalette catppuccin-accent; - light = mkTheme lightPalette catppuccin-accent; - }; - - # Convert to JSON - schemeJson = builtins.toJSON customScheme; -in - noctalia-shell.overrideAttrs (oldAttrs: { - pname = "noctalia-shell-custom"; - nativeBuildInputs = (oldAttrs.nativeBuildInputs or []) ++ [pkgs.jq]; - - postPatch = - (oldAttrs.postPatch or "") - + '' - echo "Patching noctalia-shell with Cat-Custom theme..." - echo " Dark: ${catppuccin-flavor} / Light: latte" - echo " Accent: ${catppuccin-accent}" - - if [ -d Assets/ColorScheme/Catppuccin ]; then - mkdir -p Assets/ColorScheme/Cat-Custom - - # Write the JSON directly - cat > Assets/ColorScheme/Cat-Custom/Cat-Custom.json << 'COLORSCHEME_EOF' - ${schemeJson} - COLORSCHEME_EOF - - echo "Created Cat-Custom color scheme:" - ${pkgs.jq}/bin/jq -C '.' Assets/ColorScheme/Cat-Custom/Cat-Custom.json || true - - # Add translation entries - for lang in en fr de es pt zh-CN; do - if [ -f "Assets/Translations/$lang.json" ]; then - ${pkgs.jq}/bin/jq \ - '.["color-scheme"].predefined.schemes["Cat-Custom"] = "Cat-Custom"' \ - "Assets/Translations/$lang.json" > "Assets/Translations/$lang.json.tmp" \ - && mv "Assets/Translations/$lang.json.tmp" "Assets/Translations/$lang.json" - fi - done - else - echo "ERROR: ColorScheme directory not found" - exit 1 - fi - ''; - - meta = - oldAttrs.meta - // { - description = "${oldAttrs.meta.description} (Cat-Custom: ${catppuccin-flavor}/${catppuccin-accent})"; - }; - }) diff --git a/packages/overlay.nix b/packages/overlay.nix index 1b84633..bafa80b 100644 --- a/packages/overlay.nix +++ b/packages/overlay.nix @@ -10,17 +10,6 @@ final: prev: { inherit (final) openmw-git; }; - # Noctalia shell is parameterized by catppuccin theme, so we create a function - # that home-manager configs can call with their specific theme settings - mkNoctaliaShellCustom = { - catppuccin-flavor, - catppuccin-accent, - }: - final.callPackage ./noctalia-shell { - noctalia-shell = final.noctalia-shell; - inherit catppuccin-flavor catppuccin-accent; - }; - linuxPackages_asahi = prev.linuxPackages_asahi.override { _kernelPatches = [ { From 5b59daa8b312ecfc24fdddfb6029eee054888d2f Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Mon, 19 Jan 2026 13:47:24 -0500 Subject: [PATCH 211/282] disable kde for now --- system/default.nix | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/system/default.nix b/system/default.nix index b73ec82..36b6f55 100755 --- a/system/default.nix +++ b/system/default.nix @@ -79,7 +79,7 @@ programs.dconf.enable = true; services = { - desktopManager.plasma6.enable = true; + desktopManager.plasma6.enable = false; displayManager = { sddm = { enable = true; @@ -107,11 +107,11 @@ distrobox ]; - plasma6.excludePackages = with pkgs.kdePackages; [ - elisa - konsole - khelpcenter - ]; + # plasma6.excludePackages = with pkgs.kdePackages; [ + # elisa + # konsole + # khelpcenter + # ]; }; programs.gnupg.agent = { From fa2c7501c1c11853168bce85a6fb9b96c3f47c1f Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Mon, 19 Jan 2026 14:34:26 -0500 Subject: [PATCH 212/282] wallpaper: use wpaperd --- home/tiling/niri.nix | 7 +++-- home/tiling/noctalia.nix | 10 +++---- home/tiling/wallpaper.nix | 57 ++++++++++++++++++++++++++++++++++----- 3 files changed, 57 insertions(+), 17 deletions(-) diff --git a/home/tiling/niri.nix b/home/tiling/niri.nix index 2335ff7..1d1d07f 100644 --- a/home/tiling/niri.nix +++ b/home/tiling/niri.nix @@ -88,14 +88,13 @@ theme = config.userOptions.cursor.name; }; layout = { - gaps = 4; + gaps = 2; background-color = pkgs.catppuccin.${config.catppuccin.flavor}.mantle; default-column-width = { proportion = 0.5; }; preset-column-widths = [ {proportion = 1.0 / 3.0;} - {proportion = 1.0 / 2.0;} {proportion = 2.0 / 3.0;} ]; border = { @@ -131,8 +130,8 @@ ]; open-floating = true; default-floating-position = { - x = 32; - y = 32; + x = 16; + y = 16; relative-to = "bottom-left"; }; } diff --git a/home/tiling/noctalia.nix b/home/tiling/noctalia.nix index 6606dca..e24257c 100644 --- a/home/tiling/noctalia.nix +++ b/home/tiling/noctalia.nix @@ -121,8 +121,8 @@ general = { avatarImage = "/home/${config.userOptions.username}/.face"; dimmerOpacity = 0.6; - showScreenCorners = true; - forceBlackScreenCorners = true; + showScreenCorners = false; + forceBlackScreenCorners = false; scaleRatio = 1; radiusRatio = 1; iRadiusRatio = 1; @@ -356,13 +356,9 @@ criticalUrgencyDuration = 15; enableKeyboardLayoutToast = true; sounds = { - enabled = false; + enabled = true; volume = 0.5; separateSounds = false; - criticalSoundFile = ""; - normalSoundFile = ""; - lowSoundFile = ""; - excludedApps = ""; }; }; osd = { diff --git a/home/tiling/wallpaper.nix b/home/tiling/wallpaper.nix index 830c6ec..c65d6a2 100644 --- a/home/tiling/wallpaper.nix +++ b/home/tiling/wallpaper.nix @@ -3,7 +3,7 @@ config, ... }: let - bingWallpaperScript = pkgs.writeShellScript "bing-wallpaper" '' + script = pkgs.writeShellScript "bing-wallpaper" '' set -euo pipefail # Configuration @@ -63,27 +63,72 @@ echo "Wallpaper downloaded and applied successfully." ''; in { + home.packages = with pkgs; [ + wpaperd + ]; + + home.file.".config/wpaperd/config.toml" = { + text = '' + [default] + mode = "center" + + [any] + path = "/home/${config.userOptions.username}/.local/share/wallpaper/daily.jpg" + ''; + force = true; + }; + + systemd.user.services.wpaperd = { + Unit = { + Description = "Modern wallpaper daemon for Wayland"; + PartOf = ["niri.service"]; + Requires = ["niri.service"]; + After = ["niri.service"]; + }; + Service = { + ExecStart = "${pkgs.wpaperd}/bin/wpaperd"; + }; + Install = { + WantedBy = [ + "niri.service" + ]; + }; + }; + systemd.user.services.bing-wallpaper = { Unit = { Description = "Download and set Bing wallpaper of the day"; After = [ "network-online.target" - "niri.service" - "noctalia.service" ]; Wants = [ "network-online.target" - "noctalia.service" ]; }; Service = { Type = "oneshot"; - ExecStart = "${bingWallpaperScript}"; + ExecStart = "${script}"; + ExecStartPost = "${pkgs.systemd}/bin/systemctl --user restart wpaperd.service"; }; Install = { - WantedBy = ["niri.service"]; + WantedBy = [ + "niri.service" + ]; + }; + }; + + systemd.user.timers.bing-wallpaper = { + Unit = { + Description = "Run bing wallpaper retrieval daily"; + }; + Timer = { + OnCalendar = "*-*-* 10:00:00 GMT"; + Persistent = true; + }; + Install = { + WantedBy = ["timers.target"]; }; }; } From 4e2d3f4d2a4a15e18bd4d9df9eed1ab95451f570 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Mon, 19 Jan 2026 21:57:56 -0500 Subject: [PATCH 213/282] move openmw to overlay.nix --- packages/openmw/default.nix | 9 --------- packages/overlay.nix | 9 +++++---- 2 files changed, 5 insertions(+), 13 deletions(-) delete mode 100644 packages/openmw/default.nix diff --git a/packages/openmw/default.nix b/packages/openmw/default.nix deleted file mode 100644 index 850c9bc..0000000 --- a/packages/openmw/default.nix +++ /dev/null @@ -1,9 +0,0 @@ -{ - openmw, - openmw-git, -}: -openmw.overrideAttrs (oldAttrs: { - pname = "openmw-unstable"; - version = "unstable-${openmw-git.rev}"; - src = openmw-git; -}) diff --git a/packages/overlay.nix b/packages/overlay.nix index bafa80b..6d48de8 100644 --- a/packages/overlay.nix +++ b/packages/overlay.nix @@ -5,10 +5,11 @@ final: prev: { inherit (final) catppuccin-discord-git; }; - openmw = final.callPackage ./openmw { - openmw = prev.openmw; - inherit (final) openmw-git; - }; + openmw = prev.openmw.overrideAttrs (oldAttrs: { + pname = "openmw"; + src = final.openmw-git; + version = "${final.openmw-git.rev}"; + }); linuxPackages_asahi = prev.linuxPackages_asahi.override { _kernelPatches = [ From a7f0e767d35ff5d33adcab930f31fb85f90e47e8 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Mon, 19 Jan 2026 22:27:28 -0500 Subject: [PATCH 214/282] switch back to nixfmt --- flake.nix | 203 +++++++++++----------- hardware/alien/default.nix | 7 +- hardware/peach/default.nix | 7 +- hardware/vm-generic/default.nix | 25 ++- home/apps/discord.nix | 10 +- home/apps/librewolf.nix | 175 ++++++++++--------- home/apps/mpv.nix | 8 +- home/apps/vencord.nix | 8 +- home/apps/vscode.nix | 9 +- home/default.nix | 55 +++--- home/games/minecraft.nix | 3 +- home/games/morrowind.nix | 5 +- home/hosts/alien/default.nix | 45 ++--- home/hosts/peach/default.nix | 7 +- home/hosts/vm-generic/default.nix | 7 +- home/kde/default.nix | 11 +- home/services/default.nix | 13 +- home/services/gtk.nix | 12 +- home/services/qt.nix | 161 ++++++++--------- home/services/systemd.nix | 9 +- home/terminal/btop.nix | 8 +- home/terminal/fish.nix | 16 +- home/terminal/kitty.nix | 8 +- home/terminal/neovim.nix | 225 ++++++++++++------------ home/tiling/default.nix | 3 +- home/tiling/niri.nix | 256 ++++++++++++++++------------ home/tiling/noctalia.nix | 25 +-- home/tiling/wallpaper.nix | 14 +- packages/overlay.nix | 2 +- packages/spotify-webapp/default.nix | 79 ++++----- system/default.nix | 3 +- system/hosts/alien/default.nix | 13 +- system/hosts/peach/default.nix | 7 +- system/hosts/vm-generic/default.nix | 5 +- system/shell/fish.nix | 3 +- system/tailscale/default.nix | 6 +- system/widevine/default.nix | 33 ++-- 37 files changed, 797 insertions(+), 689 deletions(-) diff --git a/flake.nix b/flake.nix index 97e14ae..0ae60ec 100644 --- a/flake.nix +++ b/flake.nix @@ -78,46 +78,51 @@ }; }; - outputs = { - nixpkgs, - nixpkgs-unstable, - nix-cachyos-kernel, - catppuccin, - catppuccin-palette, - home-manager, - plasma-manager, - niri, - noctalia, - spicetify-nix, - nur, - nixvim, - apple-silicon, - openmw, - catppuccin-discord, - catppuccin-btop, - catppuccin-mpv, - ... - }: let - # All systems we want to support for the generic VM - # to run the vm: - # nixos-rebuild build-vm --flake ~/nix#$(nix eval --raw --impure --expr 'builtins.currentSystem') - supportedSystems = ["x86_64-linux" "aarch64-linux"]; - - # Shared config for all package sets - pkgConfig = { - allowUnfree = true; - }; - - mkNixosSystem = { - hostname, - system, - extraModules ? [], - extraSpecialArgs ? {}, + outputs = + { + nixpkgs, + nixpkgs-unstable, + nix-cachyos-kernel, + catppuccin, + catppuccin-palette, + home-manager, + plasma-manager, + niri, + noctalia, + spicetify-nix, + nur, + nixvim, + apple-silicon, + openmw, + catppuccin-discord, + catppuccin-btop, + catppuccin-mpv, + ... }: - nixpkgs.lib.nixosSystem { - inherit system; - specialArgs = - { + let + # All systems we want to support for the generic VM + # to run the vm: + # nixos-rebuild build-vm --flake ~/nix#$(nix eval --raw --impure --expr 'builtins.currentSystem') + supportedSystems = [ + "x86_64-linux" + "aarch64-linux" + ]; + + # Shared config for all package sets + pkgConfig = { + allowUnfree = true; + }; + + mkNixosSystem = + { + hostname, + system, + extraModules ? [ ], + extraSpecialArgs ? { }, + }: + nixpkgs.lib.nixosSystem { + inherit system; + specialArgs = { inherit catppuccin system; pkgs-unstable = import nixpkgs-unstable { inherit system; @@ -125,8 +130,7 @@ }; } // extraSpecialArgs; - modules = - [ + modules = [ { nixpkgs = { config = pkgConfig; @@ -170,7 +174,7 @@ # Increase file descriptor limit for builds sandbox = "relaxed"; - extra-sandbox-paths = []; + extra-sandbox-paths = [ ]; build-users-group = "nixbld"; }; @@ -241,65 +245,66 @@ } ] ++ extraModules; - }; - - mkHomeConfig = { - user, - hostname, - system, - }: - home-manager.lib.homeManagerConfiguration { - pkgs = import nixpkgs { - inherit system; - config = pkgConfig; }; - pkgs-unstable = import nixpkgs-unstable { - inherit system; - config = pkgConfig; - }; - home.username = user; - home.homeDirectory = "/home/${user}"; - modules = [ - ./home - ./home/hosts/${hostname}.nix - catppuccin.homeModules.catppuccin - home-manager.homeModules.home-manager - plasma-manager.homeModules.plasma-manager - niri.homeModules.default - noctalia.homeModules.noctalia - nixvim.homeModules.nixvim - ]; - }; - in { - nixosConfigurations = { - peach = mkNixosSystem { - hostname = "peach"; - system = "aarch64-linux"; - extraModules = [ - apple-silicon.nixosModules.default - {nixpkgs.overlays = [apple-silicon.overlays.apple-silicon-overlay];} - ]; - }; - alien = - mkNixosSystem { - hostname = "alien"; - system = "x86_64-linux"; - extraModules = [ - {nixpkgs.overlays = [nix-cachyos-kernel.overlays.default];} + mkHomeConfig = + { + user, + hostname, + system, + }: + home-manager.lib.homeManagerConfiguration { + pkgs = import nixpkgs { + inherit system; + config = pkgConfig; + }; + pkgs-unstable = import nixpkgs-unstable { + inherit system; + config = pkgConfig; + }; + home.username = user; + home.homeDirectory = "/home/${user}"; + modules = [ + ./home + ./home/hosts/${hostname}.nix + catppuccin.homeModules.catppuccin + home-manager.homeModules.home-manager + plasma-manager.homeModules.plasma-manager + niri.homeModules.default + noctalia.homeModules.noctalia + nixvim.homeModules.nixvim ]; - } - // nixpkgs.lib.genAttrs supportedSystems ( - system: + }; + in + { + nixosConfigurations = { + peach = mkNixosSystem { + hostname = "peach"; + system = "aarch64-linux"; + extraModules = [ + apple-silicon.nixosModules.default + { nixpkgs.overlays = [ apple-silicon.overlays.apple-silicon-overlay ]; } + ]; + }; + + alien = + mkNixosSystem { + hostname = "alien"; + system = "x86_64-linux"; + extraModules = [ + { nixpkgs.overlays = [ nix-cachyos-kernel.overlays.default ]; } + ]; + } + // nixpkgs.lib.genAttrs supportedSystems ( + system: mkNixosSystem { hostname = "vm-generic"; inherit system; } - ); - }; + ); + }; - homeConfigurations = - { + homeConfigurations = { peach = mkHomeConfig { user = "sckova"; hostname = "peach"; @@ -313,11 +318,11 @@ } // nixpkgs.lib.genAttrs supportedSystems ( system: - mkHomeConfig { - user = "sckova"; - hostname = "vm-generic"; - inherit system; - } + mkHomeConfig { + user = "sckova"; + hostname = "vm-generic"; + inherit system; + } ); - }; + }; } diff --git a/hardware/alien/default.nix b/hardware/alien/default.nix index 996d2bb..42146eb 100755 --- a/hardware/alien/default.nix +++ b/hardware/alien/default.nix @@ -7,7 +7,8 @@ pkgs, modulesPath, ... -}: { +}: +{ imports = [ (modulesPath + "/installer/scan/not-detected.nix") ]; @@ -23,7 +24,7 @@ fileSystems."/" = { device = "/dev/disk/by-uuid/d83ec136-df01-4b9e-a523-6d75726fb904"; fsType = "btrfs"; - options = ["subvol=@"]; + options = [ "subvol=@" ]; }; fileSystems."/nix" = { @@ -46,7 +47,7 @@ }; swapDevices = [ - {device = "/dev/disk/by-uuid/056af100-9382-4cbd-b3d5-90df7da69585";} + { device = "/dev/disk/by-uuid/056af100-9382-4cbd-b3d5-90df7da69585"; } ]; # Enables DHCP on each ethernet and wireless interface. In case of scripted networking diff --git a/hardware/peach/default.nix b/hardware/peach/default.nix index bd17956..5b49211 100644 --- a/hardware/peach/default.nix +++ b/hardware/peach/default.nix @@ -5,12 +5,13 @@ lib, modulesPath, ... -}: { +}: +{ imports = [ (modulesPath + "/installer/scan/not-detected.nix") ]; - boot.initrd.availableKernelModules = ["sdhci_pci"]; + boot.initrd.availableKernelModules = [ "sdhci_pci" ]; fileSystems."/" = { device = "/dev/disk/by-label/NixOS"; @@ -26,7 +27,7 @@ ]; }; - swapDevices = []; + swapDevices = [ ]; nixpkgs.hostPlatform = lib.mkDefault "aarch64-linux"; } diff --git a/hardware/vm-generic/default.nix b/hardware/vm-generic/default.nix index 658f680..2273e45 100644 --- a/hardware/vm-generic/default.nix +++ b/hardware/vm-generic/default.nix @@ -5,10 +5,16 @@ lib, system, ... -}: { - imports = []; +}: +{ + imports = [ ]; - boot.initrd.availableKernelModules = ["ehci_pci" "xhci_pci" "usbhid" "sr_mod"]; + boot.initrd.availableKernelModules = [ + "ehci_pci" + "xhci_pci" + "usbhid" + "sr_mod" + ]; fileSystems."/" = { device = "/dev/disk/by-label/nixos"; @@ -18,11 +24,14 @@ fileSystems."/boot" = { device = "/dev/disk/by-label/boot"; fsType = "vfat"; - options = ["fmask=0077" "dmask=0077"]; + options = [ + "fmask=0077" + "dmask=0077" + ]; }; swapDevices = [ - {device = "/dev/disk/by-label/swap";} + { device = "/dev/disk/by-label/swap"; } ]; # Set platform from the system argument passed by the flake @@ -30,7 +39,7 @@ # Enable Parallels tools only on aarch64 hardware.parallels.enable = lib.mkIf (system == "aarch64-linux") true; - nixpkgs.config.allowUnfreePredicate = - lib.mkIf (system == "aarch64-linux") - (pkg: builtins.elem (lib.getName pkg) ["prl-tools"]); + nixpkgs.config.allowUnfreePredicate = lib.mkIf (system == "aarch64-linux") ( + pkg: builtins.elem (lib.getName pkg) [ "prl-tools" ] + ); } diff --git a/home/apps/discord.nix b/home/apps/discord.nix index 58bcf9f..a42a41e 100644 --- a/home/apps/discord.nix +++ b/home/apps/discord.nix @@ -2,10 +2,11 @@ config, pkgs, ... -}: let +}: +let catppuccin-discord = "${pkgs.catppuccin-discord}/share/catppuccin-discord/catppuccin-${config.catppuccin.flavor}-${config.catppuccin.accent}.theme.css"; - mergedThemes = pkgs.runCommand "mergedConfig" {} '' + mergedThemes = pkgs.runCommand "mergedConfig" { } '' mkdir -p $out cp ${catppuccin-discord} $out/catppuccin.css ''; @@ -32,8 +33,9 @@ height = 1071; }; }; -in { - home.packages = with pkgs; [vesktop]; +in +{ + home.packages = with pkgs; [ vesktop ]; home.file.".config/vesktop/settings.json" = { text = builtins.toJSON vesktopSettings; diff --git a/home/apps/librewolf.nix b/home/apps/librewolf.nix index c159216..1e7ede3 100644 --- a/home/apps/librewolf.nix +++ b/home/apps/librewolf.nix @@ -4,50 +4,53 @@ pkgs, config, ... -}: { +}: +{ home.file.".librewolf/default/chrome/" = { source = ./librewolf_css; force = true; recursive = true; }; - home.file.".librewolf/default/chrome/colors.css" = let - color = pkgs.catppuccin.rgb.${config.catppuccin.flavor}; - accent = color.${config.catppuccin.accent}; - in { - text = '' - * { - --accent: ${accent}; - --rosewater: ${color.rosewater}; - --flamingo: ${color.flamingo}; - --pink: ${color.pink}; - --mauve: ${color.mauve}; - --red: ${color.red}; - --maroon: ${color.maroon}; - --peach: ${color.peach}; - --yellow: ${color.yellow}; - --green: ${color.green}; - --teal: ${color.teal}; - --sky: ${color.sky}; - --sapphire: ${color.sapphire}; - --blue: ${color.blue}; - --lavender: ${color.lavender}; - --text: ${color.text}; - --subtext1: ${color.subtext1}; - --subtext0: ${color.subtext0}; - --overlay2: ${color.overlay2}; - --overlay1: ${color.overlay1}; - --overlay0: ${color.overlay0}; - --surface2: ${color.surface2}; - --surface1: ${color.surface1}; - --surface0: ${color.surface0}; - --base: ${color.base}; - --mantle: ${color.mantle}; - --crust: ${color.crust}; - } - ''; - force = true; - }; + home.file.".librewolf/default/chrome/colors.css" = + let + color = pkgs.catppuccin.rgb.${config.catppuccin.flavor}; + accent = color.${config.catppuccin.accent}; + in + { + text = '' + * { + --accent: ${accent}; + --rosewater: ${color.rosewater}; + --flamingo: ${color.flamingo}; + --pink: ${color.pink}; + --mauve: ${color.mauve}; + --red: ${color.red}; + --maroon: ${color.maroon}; + --peach: ${color.peach}; + --yellow: ${color.yellow}; + --green: ${color.green}; + --teal: ${color.teal}; + --sky: ${color.sky}; + --sapphire: ${color.sapphire}; + --blue: ${color.blue}; + --lavender: ${color.lavender}; + --text: ${color.text}; + --subtext1: ${color.subtext1}; + --subtext0: ${color.subtext0}; + --overlay2: ${color.overlay2}; + --overlay1: ${color.overlay1}; + --overlay0: ${color.overlay0}; + --surface2: ${color.surface2}; + --surface1: ${color.surface1}; + --surface0: ${color.surface0}; + --base: ${color.base}; + --mantle: ${color.mantle}; + --crust: ${color.crust}; + } + ''; + force = true; + }; home.file.".local/share/firefoxpwa/profiles/01KEYXH9TC4B54J5CTPNE75JP0/prefs.js" = { text = '' @@ -256,59 +259,61 @@ } ]; }; - search = let - nixIcon = "${pkgs.colloid-icon-theme}/share/icons/Colloid/apps/scalable/nix-snowflake.svg"; - googleIcon = "${pkgs.colloid-icon-theme}/share/icons/Colloid/apps/scalable/google.svg"; - in { - force = true; - default = "google"; - order = [ - "google" - ]; - engines = { - nix-packages = { - name = "Nix Packages"; - urls = [ - { - template = "https://search.nixos.org/packages"; - params = [ - { - name = "type"; - value = "packages"; - } - { - name = "query"; - value = "{searchTerms}"; - } - ]; - } - ]; + search = + let + nixIcon = "${pkgs.colloid-icon-theme}/share/icons/Colloid/apps/scalable/nix-snowflake.svg"; + googleIcon = "${pkgs.colloid-icon-theme}/share/icons/Colloid/apps/scalable/google.svg"; + in + { + force = true; + default = "google"; + order = [ + "google" + ]; + engines = { + nix-packages = { + name = "Nix Packages"; + urls = [ + { + template = "https://search.nixos.org/packages"; + params = [ + { + name = "type"; + value = "packages"; + } + { + name = "query"; + value = "{searchTerms}"; + } + ]; + } + ]; - icon = nixIcon; - definedAliases = ["@np"]; - }; + icon = nixIcon; + definedAliases = [ "@np" ]; + }; - nixos-wiki = { - name = "NixOS Wiki"; - urls = [{template = "https://wiki.nixos.org/w/index.php?search={searchTerms}";}]; - icon = nixIcon; - definedAliases = ["@nw"]; - }; + nixos-wiki = { + name = "NixOS Wiki"; + urls = [ { template = "https://wiki.nixos.org/w/index.php?search={searchTerms}"; } ]; + icon = nixIcon; + definedAliases = [ "@nw" ]; + }; - google = { - name = "Google"; - urls = [{template = "https://google.com/search?q={searchTerms}";}]; - icon = googleIcon; - definedAliases = ["@go"]; - }; + google = { + name = "Google"; + urls = [ { template = "https://google.com/search?q={searchTerms}"; } ]; + icon = googleIcon; + definedAliases = [ "@go" ]; + }; - wikipedia = { - name = "Wikipedia"; - urls = [{template = "https://en.wikipedia.org/w/index.php?search={searchTerms}";}]; - definedAliases = ["@wi"]; + wikipedia = { + name = "Wikipedia"; + urls = [ { template = "https://en.wikipedia.org/w/index.php?search={searchTerms}"; } ]; + definedAliases = [ "@wi" ]; + }; }; }; - }; }; }; }; diff --git a/home/apps/mpv.nix b/home/apps/mpv.nix index 4618f06..960d73b 100644 --- a/home/apps/mpv.nix +++ b/home/apps/mpv.nix @@ -2,14 +2,16 @@ config, pkgs, ... -}: let - mergedConfig = pkgs.runCommand "mergedConfig" {} '' +}: +let + mergedConfig = pkgs.runCommand "mergedConfig" { } '' mkdir -p $out ${pkgs.gnused}/bin/sed 's/${pkgs.catppuccin.${config.catppuccin.flavor}.base}/#000000/g' \ ${pkgs.catppuccin-mpv-git}/themes/${config.catppuccin.flavor}/${config.catppuccin.accent}.conf \ > $out/mpv.conf ''; -in { +in +{ home.packages = with pkgs; [ (mpv.override { scripts = with mpvScripts; [ diff --git a/home/apps/vencord.nix b/home/apps/vencord.nix index e456a52..9442180 100644 --- a/home/apps/vencord.nix +++ b/home/apps/vencord.nix @@ -2,9 +2,9 @@ autoUpdate = true; autoUpdateNotification = true; useQuickCss = true; - themeLinks = []; + themeLinks = [ ]; eagerPatches = false; - enabledThemes = ["catppuccin.css"]; + enabledThemes = [ "catppuccin.css" ]; enableReactDevtools = false; frameless = false; transparent = true; @@ -330,8 +330,8 @@ ImageFilename.enabled = false; }; uiElements = { - chatBarButtons = {}; - messagePopoverButtons = {}; + chatBarButtons = { }; + messagePopoverButtons = { }; }; notifications = { timeout = 5000; diff --git a/home/apps/vscode.nix b/home/apps/vscode.nix index c9e777a..3d35311 100644 --- a/home/apps/vscode.nix +++ b/home/apps/vscode.nix @@ -3,10 +3,13 @@ pkgs, lib, ... -}: let - capitalize = str: +}: +let + capitalize = + str: (lib.toUpper (builtins.substring 0 1 str)) + (builtins.substring 1 (builtins.stringLength str) str); -in { +in +{ # home.sessionVariables = { # EDITOR = "code"; # }; diff --git a/home/default.nix b/home/default.nix index 1a8e2e0..8a7964e 100755 --- a/home/default.nix +++ b/home/default.nix @@ -4,7 +4,8 @@ pkgs-unstable, lib, ... -}: { +}: +{ options = { catppuccinUpper = { accent = lib.mkOption { @@ -106,30 +107,32 @@ default = pkgs.noto-fonts-color-emoji; }; }; - cursor = let - attrName = config.catppuccin.flavor + config.catppuccinUpper.accent; - in { - name = lib.mkOption { - type = lib.types.str; - readOnly = true; - default = "catppuccin-${config.catppuccin.flavor}-${config.catppuccin.accent}-cursors"; + cursor = + let + attrName = config.catppuccin.flavor + config.catppuccinUpper.accent; + in + { + name = lib.mkOption { + type = lib.types.str; + readOnly = true; + default = "catppuccin-${config.catppuccin.flavor}-${config.catppuccin.accent}-cursors"; + }; + package = lib.mkOption { + type = lib.types.package; + readOnly = true; + default = pkgs.catppuccin-cursors.${attrName}; + }; + size = lib.mkOption { + type = lib.types.int; + readOnly = true; + default = 24; + }; + path = lib.mkOption { + type = lib.types.str; + readOnly = true; + default = "${pkgs.catppuccin-cursors.${attrName}}/share/icons"; + }; }; - package = lib.mkOption { - type = lib.types.package; - readOnly = true; - default = pkgs.catppuccin-cursors.${attrName}; - }; - size = lib.mkOption { - type = lib.types.int; - readOnly = true; - default = 24; - }; - path = lib.mkOption { - type = lib.types.str; - readOnly = true; - default = "${pkgs.catppuccin-cursors.${attrName}}/share/icons"; - }; - }; isDark = lib.mkOption { type = lib.types.bool; readOnly = true; @@ -190,8 +193,8 @@ # enableWideVine = true; # }) (catppuccin-kde.override { - flavour = [config.catppuccin.flavor]; - accents = [config.catppuccin.accent]; + flavour = [ config.catppuccin.flavor ]; + accents = [ config.catppuccin.accent ]; }) ]) ++ [ diff --git a/home/games/minecraft.nix b/home/games/minecraft.nix index 4653e75..cfc1ffa 100644 --- a/home/games/minecraft.nix +++ b/home/games/minecraft.nix @@ -2,7 +2,8 @@ config, pkgs, ... -}: { +}: +{ home.packages = with pkgs; [ (prismlauncher.override { jdks = [ diff --git a/home/games/morrowind.nix b/home/games/morrowind.nix index a7df627..663b43d 100644 --- a/home/games/morrowind.nix +++ b/home/games/morrowind.nix @@ -2,6 +2,7 @@ config, pkgs, ... -}: { - home.packages = with pkgs; [openmw]; +}: +{ + home.packages = with pkgs; [ openmw ]; } diff --git a/home/hosts/alien/default.nix b/home/hosts/alien/default.nix index 310972a..ba9f7c9 100644 --- a/home/hosts/alien/default.nix +++ b/home/hosts/alien/default.nix @@ -4,7 +4,8 @@ pkgs-unstable, spicetify-nix, ... -}: { +}: +{ catppuccin = { accent = "blue"; flavor = "mocha"; @@ -18,28 +19,30 @@ pkgs.daggerfall-unity ]; - programs.spicetify = let - spicePkgs = spicetify-nix.legacyPackages.${pkgs.stdenv.hostPlatform.system}; - in { - enable = true; + programs.spicetify = + let + spicePkgs = spicetify-nix.legacyPackages.${pkgs.stdenv.hostPlatform.system}; + in + { + enable = true; - enabledExtensions = with spicePkgs.extensions; [ - adblock - hidePodcasts - shuffle # shuffle+ (special characters are sanitized out of extension names) - ]; - enabledCustomApps = with spicePkgs.apps; [ - newReleases - ncsVisualizer - ]; - enabledSnippets = with spicePkgs.snippets; [ - rotatingCoverart - pointer - ]; + enabledExtensions = with spicePkgs.extensions; [ + adblock + hidePodcasts + shuffle # shuffle+ (special characters are sanitized out of extension names) + ]; + enabledCustomApps = with spicePkgs.apps; [ + newReleases + ncsVisualizer + ]; + enabledSnippets = with spicePkgs.snippets; [ + rotatingCoverart + pointer + ]; - theme = spicePkgs.themes.catppuccin; - colorScheme = config.catppuccin.flavor; - }; + theme = spicePkgs.themes.catppuccin; + colorScheme = config.catppuccin.flavor; + }; programs.plasma = { panels = [ diff --git a/home/hosts/peach/default.nix b/home/hosts/peach/default.nix index 71560a5..95e0ef3 100644 --- a/home/hosts/peach/default.nix +++ b/home/hosts/peach/default.nix @@ -1,4 +1,5 @@ -{pkgs, ...}: { +{ pkgs, ... }: +{ catppuccin = { accent = "lavender"; flavor = "macchiato"; @@ -34,7 +35,7 @@ shortcuts = { # this is really annoying on apple laptops - org_kde_powerdevil.Sleep = []; + org_kde_powerdevil.Sleep = [ ]; }; panels = [ @@ -50,7 +51,7 @@ activeTaskSource = "activeTask"; }; layout = { - elements = ["windowTitle"]; + elements = [ "windowTitle" ]; horizontalAlignment = "right"; showDisabledElements = "deactivated"; verticalAlignment = "center"; diff --git a/home/hosts/vm-generic/default.nix b/home/hosts/vm-generic/default.nix index d50cbc8..ca5ec38 100644 --- a/home/hosts/vm-generic/default.nix +++ b/home/hosts/vm-generic/default.nix @@ -2,13 +2,14 @@ config, pkgs, ... -}: { +}: +{ catppuccin = { accent = "green"; flavor = "mocha"; }; - home.packages = with pkgs; []; + home.packages = with pkgs; [ ]; programs.plasma = { panels = [ @@ -24,7 +25,7 @@ activeTaskSource = "activeTask"; }; layout = { - elements = ["windowTitle"]; + elements = [ "windowTitle" ]; horizontalAlignment = "right"; showDisabledElements = "deactivated"; verticalAlignment = "center"; diff --git a/home/kde/default.nix b/home/kde/default.nix index 2a0d138..5adabe3 100644 --- a/home/kde/default.nix +++ b/home/kde/default.nix @@ -2,7 +2,8 @@ config, pkgs, ... -}: { +}: +{ programs.ghostwriter = { enable = true; font = { @@ -52,7 +53,7 @@ value = ""; type = "substring"; }; - window-types = ["normal"]; + window-types = [ "normal" ]; }; apply = { opacityactive = { @@ -72,7 +73,7 @@ value = "openmw"; type = "substring"; }; - window-types = ["normal"]; + window-types = [ "normal" ]; }; apply = { noborder = { @@ -100,7 +101,7 @@ value = "Minecraft*"; type = "substring"; }; - window-types = ["normal"]; + window-types = [ "normal" ]; }; apply = { noborder = { @@ -151,7 +152,7 @@ value = "steamwebhelper"; type = "substring"; }; - window-types = ["normal"]; + window-types = [ "normal" ]; }; apply = { desktopfile = { diff --git a/home/services/default.nix b/home/services/default.nix index 4562f44..e4939d9 100644 --- a/home/services/default.nix +++ b/home/services/default.nix @@ -2,7 +2,8 @@ config, pkgs, ... -}: { +}: +{ imports = [ ./gtk.nix ./qt.nix @@ -35,10 +36,7 @@ gtk = { enable = true; - colorScheme = - if config.userOptions.isDark - then "dark" - else "light"; + colorScheme = if config.userOptions.isDark then "dark" else "light"; # theme = { # package = pkgs.kdePackages.breeze-gtk; @@ -49,10 +47,7 @@ # }; iconTheme = { - name = - if config.userOptions.isDark - then "Colloid-Dark" - else "Colloid-Light"; + name = if config.userOptions.isDark then "Colloid-Dark" else "Colloid-Light"; package = pkgs.colloid-icon-theme; }; diff --git a/home/services/gtk.nix b/home/services/gtk.nix index 7979844..7ae6a72 100644 --- a/home/services/gtk.nix +++ b/home/services/gtk.nix @@ -3,13 +3,18 @@ pkgs, lib, ... -}: let +}: +let colors = pkgs.catppuccin.hex.${config.catppuccin.flavor}; mkColorSection = name: value: "@define-color ${name} ${value};"; generateCSS = '' - /* Catppuccin ${lib.toUpper (builtins.substring 0 1 config.catppuccin.flavor)}${builtins.substring 1 (-1) config.catppuccin.flavor} ${lib.toUpper (builtins.substring 0 1 config.catppuccin.accent)}${builtins.substring 1 (-1) config.catppuccin.accent} Palette */ + /* Catppuccin ${lib.toUpper (builtins.substring 0 1 config.catppuccin.flavor)}${ + builtins.substring 1 (-1) config.catppuccin.flavor + } ${lib.toUpper (builtins.substring 0 1 config.catppuccin.accent)}${ + builtins.substring 1 (-1) config.catppuccin.accent + } Palette */ /* Base colors */ ${mkColorSection "window_bg_color" colors.base} @@ -116,7 +121,8 @@ ${mkColorSection "accent_bg_color" colors.${config.catppuccin.accent}} @define-color accent_fg_color @window_bg_color; ''; -in { +in +{ home.file = { ".config/gtk-4.0/gtk.css" = { text = generateCSS; diff --git a/home/services/qt.nix b/home/services/qt.nix index b5626a2..ba388a5 100644 --- a/home/services/qt.nix +++ b/home/services/qt.nix @@ -2,7 +2,8 @@ config, pkgs, ... -}: { +}: +{ qt = { enable = true; @@ -32,84 +33,86 @@ general = "\"${config.userOptions.fontSans.name},${toString config.userOptions.fontSans.size}\""; }; - ColorScheme = let - c = pkgs.catppuccin.bare.${config.catppuccin.flavor}; - accent = c.${config.catppuccin.accent}; - mkColors = roles: builtins.concatStringsSep ", " (map (r: "#ff${r}") roles); - in { - active_colors = mkColors [ - c.text - c.surface0 - c.surface1 - c.surface0 - c.base - c.mantle - c.text - c.text - c.text - c.base - c.mantle - c.crust - accent - c.base - accent - c.mauve - c.mantle - "000000" - c.base - c.text - c.overlay0 - accent - ]; - disabled_colors = mkColors [ - c.overlay0 - c.surface0 - c.surface1 - c.surface0 - c.overlay0 - c.mantle - c.overlay0 - c.text - c.overlay0 - c.surface0 - c.surface0 - c.mantle - c.overlay1 - c.text - "0000ff" - "ff00ff" - c.surface0 - "000000" - c.surface0 - c.base - "80000000" - c.overlay1 - ]; - inactive_colors = mkColors [ - c.text - c.surface0 - c.surface1 - c.surface0 - c.base - c.mantle - c.text - c.text - c.text - c.base - c.mantle - c.crust - accent - c.base - accent - c.mauve - c.mantle - "000000" - c.base - c.text - c.overlay0 - accent - ]; - }; + ColorScheme = + let + c = pkgs.catppuccin.bare.${config.catppuccin.flavor}; + accent = c.${config.catppuccin.accent}; + mkColors = roles: builtins.concatStringsSep ", " (map (r: "#ff${r}") roles); + in + { + active_colors = mkColors [ + c.text + c.surface0 + c.surface1 + c.surface0 + c.base + c.mantle + c.text + c.text + c.text + c.base + c.mantle + c.crust + accent + c.base + accent + c.mauve + c.mantle + "000000" + c.base + c.text + c.overlay0 + accent + ]; + disabled_colors = mkColors [ + c.overlay0 + c.surface0 + c.surface1 + c.surface0 + c.overlay0 + c.mantle + c.overlay0 + c.text + c.overlay0 + c.surface0 + c.surface0 + c.mantle + c.overlay1 + c.text + "0000ff" + "ff00ff" + c.surface0 + "000000" + c.surface0 + c.base + "80000000" + c.overlay1 + ]; + inactive_colors = mkColors [ + c.text + c.surface0 + c.surface1 + c.surface0 + c.base + c.mantle + c.text + c.text + c.text + c.base + c.mantle + c.crust + accent + c.base + accent + c.mauve + c.mantle + "000000" + c.base + c.text + c.overlay0 + accent + ]; + }; }; }; } diff --git a/home/services/systemd.nix b/home/services/systemd.nix index 9000d7e..5dd3a94 100644 --- a/home/services/systemd.nix +++ b/home/services/systemd.nix @@ -3,7 +3,8 @@ pkgs, lib, ... -}: { +}: +{ systemd.user.sessionVariables = { XCURSOR_THEME = config.userOptions.cursor.name; XCURSOR_SIZE = toString config.userOptions.cursor.size; @@ -25,8 +26,8 @@ systemd.user.services.synology-mount = { Unit = { Description = "Mount Synology NAS with Rclone and Home Manager."; - After = ["tailscaled.service"]; - Wants = ["tailscaled.service"]; + After = [ "tailscaled.service" ]; + Wants = [ "tailscaled.service" ]; }; Service = { @@ -61,7 +62,7 @@ }; Install = { - WantedBy = ["default.target"]; + WantedBy = [ "default.target" ]; }; }; diff --git a/home/terminal/btop.nix b/home/terminal/btop.nix index 52f8e03..0f0d406 100644 --- a/home/terminal/btop.nix +++ b/home/terminal/btop.nix @@ -2,15 +2,17 @@ config, pkgs, ... -}: let - mergedConfig = pkgs.runCommand "mergedConfig" {} '' +}: +let + mergedConfig = pkgs.runCommand "mergedConfig" { } '' mkdir -p $out/themes ${pkgs.gnused}/bin/sed 's/blankFlavor/${config.catppuccin.flavor}/g' \ ${./btop.conf} > $out/btop.conf cp ${pkgs.catppuccin-btop-git}/themes/catppuccin_latte.theme $out/themes/ cp ${pkgs.catppuccin-btop-git}/themes/catppuccin_${config.catppuccin.flavor}.theme $out/themes/nixos.theme ''; -in { +in +{ home.file.".config/btop" = { source = mergedConfig; recursive = true; diff --git a/home/terminal/fish.nix b/home/terminal/fish.nix index a8d1944..4f32021 100644 --- a/home/terminal/fish.nix +++ b/home/terminal/fish.nix @@ -3,7 +3,8 @@ pkgs, lib, ... -}: { +}: +{ home.packages = with pkgs; [ kdePackages.qttools eza @@ -44,14 +45,15 @@ programs.man.generateCaches = false; home.file.".config/fish/colors.fish" = { - text = let - flavor = config.catppuccin.flavor; - palette = pkgs.catppuccin.bare.${flavor}; - accent = config.catppuccin.accent; - in + text = + let + flavor = config.catppuccin.flavor; + palette = pkgs.catppuccin.bare.${flavor}; + accent = config.catppuccin.accent; + in lib.concatStringsSep "\n" ( (lib.mapAttrsToList (name: value: "set -g color_${name} ${value}") palette) - ++ ["set -g color_accent ${palette.${accent}}"] + ++ [ "set -g color_accent ${palette.${accent}}" ] ); force = true; }; diff --git a/home/terminal/kitty.nix b/home/terminal/kitty.nix index 4fd13de..6d7fd44 100644 --- a/home/terminal/kitty.nix +++ b/home/terminal/kitty.nix @@ -2,7 +2,8 @@ config, pkgs, ... -}: let +}: +let colors = pkgs.catppuccin.hex.${config.catppuccin.flavor}; accent = colors.${config.catppuccin.accent}; @@ -87,7 +88,8 @@ text = kitty-colors; destination = "/kitty-colors.conf"; }; -in { +in +{ home.file.".config/kitty/themes" = { source = kitty-colors-file; recursive = true; @@ -109,7 +111,7 @@ in { }; shellIntegration.enableFishIntegration = true; keybindings = { - "ctrl+k" = ''combine : clear_terminal scroll active : clear_terminal scrollback active''; + "ctrl+k" = "combine : clear_terminal scroll active : clear_terminal scrollback active"; }; settings = { include = "/home/${config.userOptions.username}/.config/kitty/themes/kitty-colors.conf"; diff --git a/home/terminal/neovim.nix b/home/terminal/neovim.nix index 0022906..901b1d4 100644 --- a/home/terminal/neovim.nix +++ b/home/terminal/neovim.nix @@ -2,7 +2,8 @@ pkgs, config, ... -}: { +}: +{ home.sessionVariables = { EDITOR = "nvim"; }; @@ -11,7 +12,7 @@ kdePackages.qtdeclarative prettier prettierd - alejandra + nixfmt stylua black clang-tools @@ -106,18 +107,18 @@ ]; }; sources = [ - {name = "git";} - {name = "nvim_lsp";} - {name = "path";} - {name = "buffer";} - {name = "fish";} - {name = "emoji";} + { name = "git"; } + { name = "nvim_lsp"; } + { name = "path"; } + { name = "buffer"; } + { name = "fish"; } + { name = "emoji"; } { name = "buffer"; # text within current buffer option.get_bufnrs.__raw = "vim.api.nvim_list_bufs"; keywordLength = 3; } - {name = "copilot";} + { name = "copilot"; } { name = "path"; # file system paths keywordLength = 3; @@ -133,16 +134,16 @@ enable = true; settings = { formatters_by_ft = { - lua = ["stylua"]; - python = ["black"]; - nix = ["alejandra"]; - javascript = ["prettier"]; - css = ["prettier"]; - json = ["prettier"]; - jsonc = ["prettier"]; - fish = ["fish_indent"]; - c = ["clang-format"]; - cpp = ["clang-format"]; + lua = [ "stylua" ]; + python = [ "black" ]; + nix = [ "nixfmt" ]; + javascript = [ "prettier" ]; + css = [ "prettier" ]; + json = [ "prettier" ]; + jsonc = [ "prettier" ]; + fish = [ "fish_indent" ]; + c = [ "clang-format" ]; + cpp = [ "clang-format" ]; }; # Default formatting options @@ -185,108 +186,110 @@ nixd.enable = true; }; }; - lualine = let - palette = pkgs.catppuccin.${config.catppuccin.flavor}; - in { - enable = true; - settings = { - options = { - theme = { - normal = { - a = { - fg = palette.base; - bg = palette.mauve; + lualine = + let + palette = pkgs.catppuccin.${config.catppuccin.flavor}; + in + { + enable = true; + settings = { + options = { + theme = { + normal = { + a = { + fg = palette.base; + bg = palette.mauve; + }; + b = { + fg = palette.text; + bg = palette.surface0; + }; + c = { + fg = palette.text; + }; }; - b = { - fg = palette.text; - bg = palette.surface0; + insert = { + a = { + fg = palette.base; + bg = palette.blue; + }; }; - c = { - fg = palette.text; + visual = { + a = { + fg = palette.base; + bg = palette.teal; + }; + }; + replace = { + a = { + fg = palette.base; + bg = palette.red; + }; + }; + inactive = { + a = { + fg = palette.text; + bg = palette.base; + }; + b = { + fg = palette.text; + bg = palette.base; + }; + c = { + fg = palette.text; + }; }; }; - insert = { - a = { - fg = palette.base; - bg = palette.blue; - }; - }; - visual = { - a = { - fg = palette.base; - bg = palette.teal; - }; - }; - replace = { - a = { - fg = palette.base; - bg = palette.red; - }; - }; - inactive = { - a = { - fg = palette.text; - bg = palette.base; - }; - b = { - fg = palette.text; - bg = palette.base; - }; - c = { - fg = palette.text; - }; + component_separators = ""; + section_separators = { + left = ""; + right = ""; }; }; - component_separators = ""; - section_separators = { - left = ""; - right = ""; + + sections = { + lualine_a = [ + { + __unkeyed-1 = "mode"; + separator = { + left = " "; + }; + right_padding = 2; + } + ]; + lualine_b = [ + "filename" + "branch" + ]; + lualine_c = [ "%=" ]; + lualine_x = [ ]; + lualine_y = [ + "filetype" + "progress" + ]; + lualine_z = [ + { + __unkeyed-1 = "location"; + separator = { + right = " "; + }; + left_padding = 2; + } + ]; }; - }; - sections = { - lualine_a = [ - { - __unkeyed-1 = "mode"; - separator = { - left = " "; - }; - right_padding = 2; - } - ]; - lualine_b = [ - "filename" - "branch" - ]; - lualine_c = ["%="]; - lualine_x = []; - lualine_y = [ - "filetype" - "progress" - ]; - lualine_z = [ - { - __unkeyed-1 = "location"; - separator = { - right = " "; - }; - left_padding = 2; - } - ]; + inactive_sections = { + lualine_a = [ "filename" ]; + lualine_b = [ ]; + lualine_c = [ ]; + lualine_x = [ ]; + lualine_y = [ ]; + lualine_z = [ "location" ]; + }; + tabline = { }; + extensions = [ ]; }; - - inactive_sections = { - lualine_a = ["filename"]; - lualine_b = []; - lualine_c = []; - lualine_x = []; - lualine_y = []; - lualine_z = ["location"]; - }; - tabline = {}; - extensions = []; }; - }; }; }; } diff --git a/home/tiling/default.nix b/home/tiling/default.nix index 5a0601c..ae1fc3b 100644 --- a/home/tiling/default.nix +++ b/home/tiling/default.nix @@ -1,4 +1,5 @@ -{pkgs, ...}: { +{ pkgs, ... }: +{ imports = [ ./niri.nix ./noctalia.nix diff --git a/home/tiling/niri.nix b/home/tiling/niri.nix index 1d1d07f..2dc109f 100644 --- a/home/tiling/niri.nix +++ b/home/tiling/niri.nix @@ -2,7 +2,8 @@ config, pkgs, ... -}: { +}: +{ # https://github.com/sodiboo/niri-flake/blob/main/docs.md programs.niri = { # handle package systemwide @@ -13,7 +14,7 @@ hotkey-overlay.skip-at-startup = true; prefer-no-csd = true; gestures.hot-corners.enable = false; - spawn-at-startup = []; # systemd is based sorry + spawn-at-startup = [ ]; # systemd is based sorry overview = { backdrop-color = pkgs.catppuccin.${config.catppuccin.flavor}.crust; workspace-shadow.enable = false; @@ -88,14 +89,15 @@ theme = config.userOptions.cursor.name; }; layout = { - gaps = 2; + gaps = 4; background-color = pkgs.catppuccin.${config.catppuccin.flavor}.mantle; default-column-width = { proportion = 0.5; }; preset-column-widths = [ - {proportion = 1.0 / 3.0;} - {proportion = 2.0 / 3.0;} + { proportion = 4.0 / 12.0; } + { proportion = 6.0 / 12.0; } + { proportion = 8.0 / 12.0; } ]; border = { enable = true; @@ -137,10 +139,10 @@ } { geometry-corner-radius = { - top-left = 0.0; - top-right = 0.0; - bottom-left = 0.0; - bottom-right = 0.0; + top-left = 16.0; + top-right = 16.0; + bottom-left = 16.0; + bottom-right = 16.0; }; clip-to-geometry = true; } @@ -160,10 +162,10 @@ } ]; binds = { - "Mod+Shift+Slash".action.show-hotkey-overlay = {}; + "Mod+Shift+Slash".action.show-hotkey-overlay = { }; "Mod+T" = { - action.spawn = ["kitty"]; + action.spawn = [ "kitty" ]; hotkey-overlay.title = "Open a Terminal: kitty"; }; "Mod+Space" = { @@ -217,145 +219,187 @@ }; "XF86MonBrightnessUp" = { - action.spawn = ["noctalia-shell" "ipc" "call" "brightness" "increase"]; + action.spawn = [ + "noctalia-shell" + "ipc" + "call" + "brightness" + "increase" + ]; allow-when-locked = true; }; "XF86MonBrightnessDown" = { - action.spawn = ["noctalia-shell" "ipc" "call" "brightness" "decrease"]; + action.spawn = [ + "noctalia-shell" + "ipc" + "call" + "brightness" + "decrease" + ]; allow-when-locked = true; }; "Shift+XF86MonBrightnessUp" = { - action.spawn = ["brightnessctl" "--class=backlight" "set" "+1%"]; + action.spawn = [ + "brightnessctl" + "--class=backlight" + "set" + "+1%" + ]; allow-when-locked = true; }; "Shift+XF86MonBrightnessDown" = { - action.spawn = ["brightnessctl" "--class=backlight" "set" "1%-"]; + action.spawn = [ + "brightnessctl" + "--class=backlight" + "set" + "1%-" + ]; allow-when-locked = true; }; "XF86AudioPrev" = { - action.spawn = ["playerctl" "previous"]; + action.spawn = [ + "playerctl" + "previous" + ]; allow-when-locked = true; }; "XF86AudioPlay" = { - action.spawn = ["playerctl" "play-pause"]; + action.spawn = [ + "playerctl" + "play-pause" + ]; allow-when-locked = true; }; "XF86AudioNext" = { - action.spawn = ["playerctl" "next"]; + action.spawn = [ + "playerctl" + "next" + ]; allow-when-locked = true; }; "XF86Sleep" = { - action.power-off-monitors = {}; + action.power-off-monitors = { }; }; "XF86Search" = { - action.spawn = ["noctalia-shell" "ipc" "call" "launcher" "toggle"]; + action.spawn = [ + "noctalia-shell" + "ipc" + "call" + "launcher" + "toggle" + ]; allow-when-locked = true; }; "XF86LaunchA" = { - action.spawn = ["niri" "msg" "action" "toggle-overview"]; + action.spawn = [ + "niri" + "msg" + "action" + "toggle-overview" + ]; allow-when-locked = true; }; "Mod+O" = { - action.toggle-overview = {}; + action.toggle-overview = { }; repeat = false; }; "Mod+Q" = { - action.close-window = {}; + action.close-window = { }; repeat = false; }; - "Mod+Left".action.focus-column-left = {}; - "Mod+Down".action.focus-window-down = {}; - "Mod+Up".action.focus-window-up = {}; - "Mod+Right".action.focus-column-right = {}; - "Mod+H".action.focus-column-left = {}; - "Mod+J".action.focus-window-down = {}; - "Mod+K".action.focus-window-up = {}; - "Mod+L".action.focus-column-right = {}; + "Mod+Left".action.focus-column-left = { }; + "Mod+Down".action.focus-window-down = { }; + "Mod+Up".action.focus-window-up = { }; + "Mod+Right".action.focus-column-right = { }; + "Mod+H".action.focus-column-left = { }; + "Mod+J".action.focus-window-down = { }; + "Mod+K".action.focus-window-up = { }; + "Mod+L".action.focus-column-right = { }; - "Mod+Ctrl+Left".action.move-column-left = {}; - "Mod+Ctrl+Down".action.move-window-down = {}; - "Mod+Ctrl+Up".action.move-window-up = {}; - "Mod+Ctrl+Right".action.move-column-right = {}; - "Mod+Ctrl+H".action.move-column-left = {}; - "Mod+Ctrl+J".action.move-window-down = {}; - "Mod+Ctrl+K".action.move-window-up = {}; - "Mod+Ctrl+L".action.move-column-right = {}; + "Mod+Ctrl+Left".action.move-column-left = { }; + "Mod+Ctrl+Down".action.move-window-down = { }; + "Mod+Ctrl+Up".action.move-window-up = { }; + "Mod+Ctrl+Right".action.move-column-right = { }; + "Mod+Ctrl+H".action.move-column-left = { }; + "Mod+Ctrl+J".action.move-window-down = { }; + "Mod+Ctrl+K".action.move-window-up = { }; + "Mod+Ctrl+L".action.move-column-right = { }; - "Mod+Home".action.focus-column-first = {}; - "Mod+End".action.focus-column-last = {}; - "Mod+Ctrl+Home".action.move-column-to-first = {}; - "Mod+Ctrl+End".action.move-column-to-last = {}; + "Mod+Home".action.focus-column-first = { }; + "Mod+End".action.focus-column-last = { }; + "Mod+Ctrl+Home".action.move-column-to-first = { }; + "Mod+Ctrl+End".action.move-column-to-last = { }; - "Mod+Shift+Left".action.focus-monitor-left = {}; - "Mod+Shift+Down".action.focus-monitor-down = {}; - "Mod+Shift+Up".action.focus-monitor-up = {}; - "Mod+Shift+Right".action.focus-monitor-right = {}; - "Mod+Shift+H".action.focus-monitor-left = {}; - "Mod+Shift+J".action.focus-monitor-down = {}; - "Mod+Shift+K".action.focus-monitor-up = {}; - "Mod+Shift+L".action.focus-monitor-right = {}; + "Mod+Shift+Left".action.focus-monitor-left = { }; + "Mod+Shift+Down".action.focus-monitor-down = { }; + "Mod+Shift+Up".action.focus-monitor-up = { }; + "Mod+Shift+Right".action.focus-monitor-right = { }; + "Mod+Shift+H".action.focus-monitor-left = { }; + "Mod+Shift+J".action.focus-monitor-down = { }; + "Mod+Shift+K".action.focus-monitor-up = { }; + "Mod+Shift+L".action.focus-monitor-right = { }; - "Mod+Shift+Ctrl+Left".action.move-column-to-monitor-left = {}; - "Mod+Shift+Ctrl+Down".action.move-column-to-monitor-down = {}; - "Mod+Shift+Ctrl+Up".action.move-column-to-monitor-up = {}; - "Mod+Shift+Ctrl+Right".action.move-column-to-monitor-right = {}; - "Mod+Shift+Ctrl+H".action.move-column-to-monitor-left = {}; - "Mod+Shift+Ctrl+J".action.move-column-to-monitor-down = {}; - "Mod+Shift+Ctrl+K".action.move-column-to-monitor-up = {}; - "Mod+Shift+Ctrl+L".action.move-column-to-monitor-right = {}; + "Mod+Shift+Ctrl+Left".action.move-column-to-monitor-left = { }; + "Mod+Shift+Ctrl+Down".action.move-column-to-monitor-down = { }; + "Mod+Shift+Ctrl+Up".action.move-column-to-monitor-up = { }; + "Mod+Shift+Ctrl+Right".action.move-column-to-monitor-right = { }; + "Mod+Shift+Ctrl+H".action.move-column-to-monitor-left = { }; + "Mod+Shift+Ctrl+J".action.move-column-to-monitor-down = { }; + "Mod+Shift+Ctrl+K".action.move-column-to-monitor-up = { }; + "Mod+Shift+Ctrl+L".action.move-column-to-monitor-right = { }; - "Mod+Page_Down".action.focus-workspace-down = {}; - "Mod+Page_Up".action.focus-workspace-up = {}; - "Mod+U".action.focus-workspace-down = {}; - "Mod+I".action.focus-workspace-up = {}; - "Mod+Ctrl+Page_Down".action.move-column-to-workspace-down = {}; - "Mod+Ctrl+Page_Up".action.move-column-to-workspace-up = {}; - "Mod+Ctrl+U".action.move-column-to-workspace-down = {}; - "Mod+Ctrl+I".action.move-column-to-workspace-up = {}; + "Mod+Page_Down".action.focus-workspace-down = { }; + "Mod+Page_Up".action.focus-workspace-up = { }; + "Mod+U".action.focus-workspace-down = { }; + "Mod+I".action.focus-workspace-up = { }; + "Mod+Ctrl+Page_Down".action.move-column-to-workspace-down = { }; + "Mod+Ctrl+Page_Up".action.move-column-to-workspace-up = { }; + "Mod+Ctrl+U".action.move-column-to-workspace-down = { }; + "Mod+Ctrl+I".action.move-column-to-workspace-up = { }; - "Mod+Shift+Page_Down".action.move-workspace-down = {}; - "Mod+Shift+Page_Up".action.move-workspace-up = {}; - "Mod+Shift+U".action.move-workspace-down = {}; - "Mod+Shift+I".action.move-workspace-up = {}; + "Mod+Shift+Page_Down".action.move-workspace-down = { }; + "Mod+Shift+Page_Up".action.move-workspace-up = { }; + "Mod+Shift+U".action.move-workspace-down = { }; + "Mod+Shift+I".action.move-workspace-up = { }; "Mod+WheelScrollDown" = { - action.focus-workspace-down = {}; + action.focus-workspace-down = { }; cooldown-ms = 150; }; "Mod+WheelScrollUp" = { - action.focus-workspace-up = {}; + action.focus-workspace-up = { }; cooldown-ms = 150; }; "Mod+Ctrl+WheelScrollDown" = { - action.move-column-to-workspace-down = {}; + action.move-column-to-workspace-down = { }; cooldown-ms = 150; }; "Mod+Ctrl+WheelScrollUp" = { - action.move-column-to-workspace-up = {}; + action.move-column-to-workspace-up = { }; cooldown-ms = 150; }; - "Mod+WheelScrollRight".action.focus-column-right = {}; - "Mod+WheelScrollLeft".action.focus-column-left = {}; - "Mod+Ctrl+WheelScrollRight".action.move-column-right = {}; - "Mod+Ctrl+WheelScrollLeft".action.move-column-left = {}; + "Mod+WheelScrollRight".action.focus-column-right = { }; + "Mod+WheelScrollLeft".action.focus-column-left = { }; + "Mod+Ctrl+WheelScrollRight".action.move-column-right = { }; + "Mod+Ctrl+WheelScrollLeft".action.move-column-left = { }; - "Mod+Shift+WheelScrollDown".action.focus-column-right = {}; - "Mod+Shift+WheelScrollUp".action.focus-column-left = {}; - "Mod+Ctrl+Shift+WheelScrollDown".action.move-column-right = {}; - "Mod+Ctrl+Shift+WheelScrollUp".action.move-column-left = {}; + "Mod+Shift+WheelScrollDown".action.focus-column-right = { }; + "Mod+Shift+WheelScrollUp".action.focus-column-left = { }; + "Mod+Ctrl+Shift+WheelScrollDown".action.move-column-right = { }; + "Mod+Ctrl+Shift+WheelScrollUp".action.move-column-left = { }; "Mod+1".action.focus-workspace = 1; "Mod+2".action.focus-workspace = 2; @@ -376,22 +420,22 @@ "Mod+Ctrl+8".action.move-column-to-workspace = 8; "Mod+Ctrl+9".action.move-column-to-workspace = 9; - "Mod+BracketLeft".action.consume-or-expel-window-left = {}; - "Mod+BracketRight".action.consume-or-expel-window-right = {}; + "Mod+BracketLeft".action.consume-or-expel-window-left = { }; + "Mod+BracketRight".action.consume-or-expel-window-right = { }; - "Mod+Comma".action.consume-window-into-column = {}; - "Mod+Period".action.expel-window-from-column = {}; + "Mod+Comma".action.consume-window-into-column = { }; + "Mod+Period".action.expel-window-from-column = { }; - "Mod+R".action.switch-preset-column-width = {}; - "Mod+Shift+R".action.switch-preset-window-height = {}; - "Mod+Ctrl+R".action.reset-window-height = {}; - "Mod+F".action.maximize-column = {}; - "Mod+Shift+F".action.maximize-window-to-edges = {}; - "Mod+Ctrl+Shift+F".action.fullscreen-window = {}; + "Mod+R".action.switch-preset-column-width = { }; + "Mod+Shift+R".action.switch-preset-window-height = { }; + "Mod+Ctrl+R".action.reset-window-height = { }; + "Mod+F".action.maximize-column = { }; + "Mod+Shift+F".action.maximize-window-to-edges = { }; + "Mod+Ctrl+Shift+F".action.fullscreen-window = { }; - "Mod+C".action.center-column = {}; + "Mod+C".action.center-column = { }; - "Mod+Ctrl+C".action.center-visible-columns = {}; + "Mod+Ctrl+C".action.center-visible-columns = { }; "Mod+Minus".action.set-column-width = "-10%"; "Mod+Equal".action.set-column-width = "+10%"; @@ -399,26 +443,26 @@ "Mod+Shift+Minus".action.set-window-height = "-10%"; "Mod+Shift+Equal".action.set-window-height = "+10%"; - "Mod+V".action.toggle-window-floating = {}; - "Mod+Shift+V".action.switch-focus-between-floating-and-tiling = {}; + "Mod+V".action.toggle-window-floating = { }; + "Mod+Shift+V".action.switch-focus-between-floating-and-tiling = { }; - "Mod+W".action.toggle-column-tabbed-display = {}; + "Mod+W".action.toggle-column-tabbed-display = { }; - "Print".action.screenshot = {}; - "Mod+Shift+S".action.screenshot = {}; - "Ctrl+Print".action.screenshot-screen = {}; - "Alt+Print".action.screenshot-window = {}; + "Print".action.screenshot = { }; + "Mod+Shift+S".action.screenshot = { }; + "Ctrl+Print".action.screenshot-screen = { }; + "Alt+Print".action.screenshot-window = { }; "Mod+Escape" = { - action.toggle-keyboard-shortcuts-inhibit = {}; + action.toggle-keyboard-shortcuts-inhibit = { }; allow-inhibiting = false; }; - "Mod+Shift+E".action.quit = {}; - "Ctrl+Alt+Delete".action.quit = {}; + "Mod+Shift+E".action.quit = { }; + "Ctrl+Alt+Delete".action.quit = { }; "Mod+Shift+P" = { - action.power-off-monitors = {}; + action.power-off-monitors = { }; hotkey-overlay.title = "Turn off the display"; }; }; diff --git a/home/tiling/noctalia.nix b/home/tiling/noctalia.nix index e24257c..bcf9167 100644 --- a/home/tiling/noctalia.nix +++ b/home/tiling/noctalia.nix @@ -2,7 +2,8 @@ pkgs, config, ... -}: { +}: +{ programs.noctalia-shell = { enable = true; colors = { @@ -33,7 +34,7 @@ bar = { position = "top"; backgroundOpacity = 1; - monitors = []; + monitors = [ ]; density = "spacious"; showCapsule = true; capsuleOpacity = 1; @@ -198,7 +199,7 @@ enabled = false; overviewEnabled = false; directory = "/home/sckova/.local/share/wallpaper"; - monitorDirectories = []; + monitorDirectories = [ ]; enableMultiMonitorDirectories = false; recursiveSearch = false; setWallpaperOnAllMonitors = true; @@ -217,7 +218,7 @@ enableClipboardHistory = true; enableClipPreview = true; position = "top_left"; - pinnedExecs = []; + pinnedExecs = [ ]; useApp2Unit = false; sortByMostUsed = true; terminalCommand = "kitty -e"; @@ -302,8 +303,8 @@ floatingRatio = 1; size = 1; onlySameOutput = true; - monitors = []; - pinnedApps = []; + monitors = [ ]; + pinnedApps = [ ]; colorizeIcons = false; pinnedStatic = false; inactiveIndicators = false; @@ -346,7 +347,7 @@ }; notifications = { enabled = true; - monitors = []; + monitors = [ ]; location = "top_right"; overlayLayer = true; backgroundOpacity = 1; @@ -372,7 +373,7 @@ 1 2 ]; - monitors = []; + monitors = [ ]; }; audio = { volumeStep = 5; @@ -380,7 +381,7 @@ cavaFrameRate = 30; visualizerType = "linear"; visualizerQuality = "high"; - mprisBlacklist = []; + mprisBlacklist = [ ]; preferredPlayer = ""; externalMixer = "pwvucontrol || pavucontrol"; }; @@ -435,8 +436,8 @@ systemd.user.services.noctalia-shell = { Unit = { - After = ["niri.service"]; - PartOf = ["niri.service"]; + After = [ "niri.service" ]; + PartOf = [ "niri.service" ]; Description = "Noctalia Shell - Wayland desktop shell"; Documentation = "https://docs.noctalia.dev/docs"; }; @@ -454,7 +455,7 @@ }; Install = { - WantedBy = ["niri.service"]; + WantedBy = [ "niri.service" ]; }; }; } diff --git a/home/tiling/wallpaper.nix b/home/tiling/wallpaper.nix index c65d6a2..2655054 100644 --- a/home/tiling/wallpaper.nix +++ b/home/tiling/wallpaper.nix @@ -2,7 +2,8 @@ pkgs, config, ... -}: let +}: +let script = pkgs.writeShellScript "bing-wallpaper" '' set -euo pipefail @@ -62,7 +63,8 @@ echo "Wallpaper downloaded and applied successfully." ''; -in { +in +{ home.packages = with pkgs; [ wpaperd ]; @@ -81,9 +83,9 @@ in { systemd.user.services.wpaperd = { Unit = { Description = "Modern wallpaper daemon for Wayland"; - PartOf = ["niri.service"]; - Requires = ["niri.service"]; - After = ["niri.service"]; + PartOf = [ "niri.service" ]; + Requires = [ "niri.service" ]; + After = [ "niri.service" ]; }; Service = { ExecStart = "${pkgs.wpaperd}/bin/wpaperd"; @@ -128,7 +130,7 @@ in { Persistent = true; }; Install = { - WantedBy = ["timers.target"]; + WantedBy = [ "timers.target" ]; }; }; } diff --git a/packages/overlay.nix b/packages/overlay.nix index 6d48de8..d6357ea 100644 --- a/packages/overlay.nix +++ b/packages/overlay.nix @@ -1,5 +1,5 @@ final: prev: { - spotify-webapp = final.callPackage ./spotify-webapp {}; + spotify-webapp = final.callPackage ./spotify-webapp { }; catppuccin-discord = final.callPackage ./catppuccin-discord { inherit (final) catppuccin-discord-git; diff --git a/packages/spotify-webapp/default.nix b/packages/spotify-webapp/default.nix index 530869c..85304b5 100644 --- a/packages/spotify-webapp/default.nix +++ b/packages/spotify-webapp/default.nix @@ -5,7 +5,8 @@ copyDesktopItems, chromium, writeShellScriptBin, -}: let +}: +let pname = "spotify-webapp"; version = "1.0.0"; @@ -24,48 +25,48 @@ "$@" ''; in - stdenv.mkDerivation { - inherit pname version; +stdenv.mkDerivation { + inherit pname version; - dontUnpack = true; - dontBuild = true; + dontUnpack = true; + dontBuild = true; - nativeBuildInputs = [copyDesktopItems]; + nativeBuildInputs = [ copyDesktopItems ]; - desktopItems = [ - (makeDesktopItem { - name = "spotify-webapp"; - exec = "spotify-webapp %U"; - icon = "spotify"; - desktopName = "Spotify"; - genericName = "Music Streaming"; - comment = "Listen to music on Spotify"; - categories = [ - "Audio" - "Music" - "AudioVideo" - ]; - mimeTypes = ["x-scheme-handler/spotify"]; - startupWMClass = "spotify-webapp"; - startupNotify = true; - }) - ]; + desktopItems = [ + (makeDesktopItem { + name = "spotify-webapp"; + exec = "spotify-webapp %U"; + icon = "spotify"; + desktopName = "Spotify"; + genericName = "Music Streaming"; + comment = "Listen to music on Spotify"; + categories = [ + "Audio" + "Music" + "AudioVideo" + ]; + mimeTypes = [ "x-scheme-handler/spotify" ]; + startupWMClass = "spotify-webapp"; + startupNotify = true; + }) + ]; - installPhase = '' - runHook preInstall + installPhase = '' + runHook preInstall - mkdir -p $out/bin - ln -s ${launchScript}/bin/spotify-webapp $out/bin/spotify-webapp + mkdir -p $out/bin + ln -s ${launchScript}/bin/spotify-webapp $out/bin/spotify-webapp - runHook postInstall - ''; + runHook postInstall + ''; - meta = with lib; { - description = "Spotify web app running in Chromium"; - homepage = "https://open.spotify.com"; - license = licenses.free; - maintainers = []; - platforms = platforms.linux; - mainProgram = "spotify-webapp"; - }; - } + meta = with lib; { + description = "Spotify web app running in Chromium"; + homepage = "https://open.spotify.com"; + license = licenses.free; + maintainers = [ ]; + platforms = platforms.linux; + mainProgram = "spotify-webapp"; + }; +} diff --git a/system/default.nix b/system/default.nix index 36b6f55..167138d 100755 --- a/system/default.nix +++ b/system/default.nix @@ -7,7 +7,8 @@ pkgs, inputs, ... -}: { +}: +{ environment.sessionVariables = { # this makes electron apps work per the wiki NIXOS_OZONE_WL = "1"; diff --git a/system/hosts/alien/default.nix b/system/hosts/alien/default.nix index 2f27f25..69579b1 100644 --- a/system/hosts/alien/default.nix +++ b/system/hosts/alien/default.nix @@ -2,16 +2,17 @@ config, pkgs, ... -}: { +}: +{ environment.systemPackages = with pkgs; [ ddcutil mangohud - (bottles.override {removeWarningPopup = true;}) + (bottles.override { removeWarningPopup = true; }) ]; # enable ddcutil - users.users.sckova.extraGroups = ["i2c"]; - boot.extraModulePackages = [config.boot.kernelPackages.ddcci-driver]; + users.users.sckova.extraGroups = [ "i2c" ]; + boot.extraModulePackages = [ config.boot.kernelPackages.ddcci-driver ]; boot.kernelModules = [ "i2c-dev" "ddcci_backlight" @@ -92,7 +93,7 @@ # enable hyper-v for guests virtualisation.hypervGuest.enable = true; - boot.blacklistedKernelModules = ["hyperv_fb"]; + boot.blacklistedKernelModules = [ "hyperv_fb" ]; boot.binfmt.emulatedSystems = [ "aarch64-linux" @@ -100,5 +101,5 @@ ]; # i don't even remember what this does or why i added it - systemd.tmpfiles.rules = ["L+ /var/lib/qemu/firmware - - - - ${pkgs.qemu}/share/qemu/firmware"]; + systemd.tmpfiles.rules = [ "L+ /var/lib/qemu/firmware - - - - ${pkgs.qemu}/share/qemu/firmware" ]; } diff --git a/system/hosts/peach/default.nix b/system/hosts/peach/default.nix index c3fa403..5fff781 100644 --- a/system/hosts/peach/default.nix +++ b/system/hosts/peach/default.nix @@ -2,8 +2,9 @@ pkgs, config, ... -}: { - boot.kernelParams = ["appledrm.show_notch=1"]; +}: +{ + boot.kernelParams = [ "appledrm.show_notch=1" ]; catppuccin = { accent = "lavender"; @@ -14,7 +15,7 @@ ddcutil ]; - boot.extraModulePackages = [config.boot.kernelPackages.ddcci-driver]; + boot.extraModulePackages = [ config.boot.kernelPackages.ddcci-driver ]; boot.kernelModules = [ "i2c-dev" "ddcci_backlight" diff --git a/system/hosts/vm-generic/default.nix b/system/hosts/vm-generic/default.nix index 314961d..25a4278 100644 --- a/system/hosts/vm-generic/default.nix +++ b/system/hosts/vm-generic/default.nix @@ -1,11 +1,12 @@ -{catppuccin, ...}: { +{ catppuccin, ... }: +{ catppuccin = { accent = "green"; flavor = "mocha"; }; home-manager.users.sckova = { - imports = [catppuccin.homeModules.catppuccin]; + imports = [ catppuccin.homeModules.catppuccin ]; }; services.spice-vdagentd.enable = true; diff --git a/system/shell/fish.nix b/system/shell/fish.nix index ab81676..229692a 100644 --- a/system/shell/fish.nix +++ b/system/shell/fish.nix @@ -1,4 +1,5 @@ -{pkgs, ...}: { +{ pkgs, ... }: +{ # This following block taken from the wiki: # https://nixos.wiki/wiki/Fish#Setting_fish_as_your_shell programs.bash = { diff --git a/system/tailscale/default.nix b/system/tailscale/default.nix index 3c99319..90e21a8 100644 --- a/system/tailscale/default.nix +++ b/system/tailscale/default.nix @@ -6,7 +6,8 @@ pkgs, lib, ... -}: let +}: +let tailscaleWaitScript = pkgs.writeShellScript "tailscale-wait-for-ip" '' echo "Waiting for tailscale0 to get an IP address..." for i in {1..15}; do @@ -20,7 +21,8 @@ echo "Warning: tailscale0 did not get IP address within 15 seconds" exit 0 ''; -in { +in +{ systemd.services.tailscaled = { serviceConfig = { ExecStartPost = tailscaleWaitScript; diff --git a/system/widevine/default.nix b/system/widevine/default.nix index 23a6898..44ac343 100644 --- a/system/widevine/default.nix +++ b/system/widevine/default.nix @@ -4,13 +4,14 @@ config, lib, ... -}: { +}: +{ nixpkgs.overlays = lib.mkIf (config.nixpkgs.hostPlatform.isLinux) [ (final: prev: { - wrapLibrewolf = browser: opts: let - extraPrefs = - (opts.extraPrefs or "") - + '' + wrapLibrewolf = + browser: opts: + let + extraPrefs = (opts.extraPrefs or "") + '' lockPref("media.gmp-widevinecdm.version", "system-installed"); lockPref("media.gmp-widevinecdm.visible", true); lockPref("media.gmp-widevinecdm.enabled", true); @@ -18,18 +19,16 @@ lockPref("media.eme.enabled", true); lockPref("media.eme.encrypted-media-encryption-scheme.enabled", true); ''; - widevineCdmDir = "${final.widevine-cdm}/share/google/chrome/WidevineCdm"; - widevineOutDir = "$out/gmp-widevinecdm/system-installed"; - in - (prev.wrapLibrewolf browser (opts // {inherit extraPrefs;})).overrideAttrs (previousAttrs: { - buildCommand = - previousAttrs.buildCommand - + '' - mkdir -p "${widevineOutDir}" - ln -s "${widevineCdmDir}/_platform_specific/linux_arm64/libwidevinecdm.so" "${widevineOutDir}/libwidevinecdm.so" - ln -s "${widevineCdmDir}/manifest.json" "${widevineOutDir}/manifest.json" - wrapProgram "$oldExe" --set MOZ_GMP_PATH "${widevineOutDir}" - ''; + widevineCdmDir = "${final.widevine-cdm}/share/google/chrome/WidevineCdm"; + widevineOutDir = "$out/gmp-widevinecdm/system-installed"; + in + (prev.wrapLibrewolf browser (opts // { inherit extraPrefs; })).overrideAttrs (previousAttrs: { + buildCommand = previousAttrs.buildCommand + '' + mkdir -p "${widevineOutDir}" + ln -s "${widevineCdmDir}/_platform_specific/linux_arm64/libwidevinecdm.so" "${widevineOutDir}/libwidevinecdm.so" + ln -s "${widevineCdmDir}/manifest.json" "${widevineOutDir}/manifest.json" + wrapProgram "$oldExe" --set MOZ_GMP_PATH "${widevineOutDir}" + ''; }); }) ]; From 3ad198e57b57596e3a505f8112bfe636e8d0b469 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Tue, 20 Jan 2026 19:57:02 -0500 Subject: [PATCH 215/282] update niri config --- home/tiling/niri.nix | 32 ++++++++++++++++++++++---------- 1 file changed, 22 insertions(+), 10 deletions(-) diff --git a/home/tiling/niri.nix b/home/tiling/niri.nix index 2dc109f..f2870f9 100644 --- a/home/tiling/niri.nix +++ b/home/tiling/niri.nix @@ -90,7 +90,8 @@ }; layout = { gaps = 4; - background-color = pkgs.catppuccin.${config.catppuccin.flavor}.mantle; + # background-color = pkgs.catppuccin.${config.catppuccin.flavor}.mantle; + background-color = "transparent"; default-column-width = { proportion = 0.5; }; @@ -123,6 +124,16 @@ }; }; window-rules = [ + { + geometry-corner-radius = { + top-left = 16.0; + top-right = 16.0; + bottom-left = 16.0; + bottom-right = 16.0; + }; + clip-to-geometry = true; + opacity = 1.0; + } { matches = [ { @@ -137,15 +148,6 @@ relative-to = "bottom-left"; }; } - { - geometry-corner-radius = { - top-left = 16.0; - top-right = 16.0; - bottom-left = 16.0; - bottom-right = 16.0; - }; - clip-to-geometry = true; - } { matches = [ { @@ -161,6 +163,16 @@ open-focused = true; } ]; + layer-rules = [ + { + matches = [ + { + namespace = "^wpaperd.*"; + } + ]; + place-within-backdrop = true; + } + ]; binds = { "Mod+Shift+Slash".action.show-hotkey-overlay = { }; From 9e68decf3b877553fb89eb8281c94ece32846516 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Tue, 20 Jan 2026 19:57:21 -0500 Subject: [PATCH 216/282] switch peach back to mocha/peach --- home/hosts/peach/default.nix | 4 ++-- system/hosts/peach/default.nix | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/home/hosts/peach/default.nix b/home/hosts/peach/default.nix index 95e0ef3..d1298bc 100644 --- a/home/hosts/peach/default.nix +++ b/home/hosts/peach/default.nix @@ -1,8 +1,8 @@ { pkgs, ... }: { catppuccin = { - accent = "lavender"; - flavor = "macchiato"; + accent = "peach"; + flavor = "mocha"; }; home.packages = with pkgs; [ diff --git a/system/hosts/peach/default.nix b/system/hosts/peach/default.nix index 5fff781..2a0112d 100644 --- a/system/hosts/peach/default.nix +++ b/system/hosts/peach/default.nix @@ -7,8 +7,8 @@ boot.kernelParams = [ "appledrm.show_notch=1" ]; catppuccin = { - accent = "lavender"; - flavor = "macchiato"; + accent = "peach"; + flavor = "mocha"; }; environment.systemPackages = with pkgs; [ From a6f03e1db7a1b2e02c66d5bb84fca2a07c4a5a50 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Tue, 20 Jan 2026 19:57:32 -0500 Subject: [PATCH 217/282] add prowlarr stack --- home/default.nix | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/home/default.nix b/home/default.nix index 8a7964e..346b53d 100755 --- a/home/default.nix +++ b/home/default.nix @@ -168,6 +168,10 @@ noto-fonts noto-fonts-color-emoji nix-prefetch + prowlarr + radarr + sonarr + flaresolverr # kde and kde theming kde-rounded-corners From 909f8a98f445317e0ca7a4e6b414f516dd5c7293 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Tue, 20 Jan 2026 22:50:30 -0500 Subject: [PATCH 218/282] add spotify: riff --- home/default.nix | 6 ++- packages/overlay.nix | 2 + packages/riff/default.nix | 96 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 102 insertions(+), 2 deletions(-) create mode 100644 packages/riff/default.nix diff --git a/home/default.nix b/home/default.nix index 346b53d..394c519 100755 --- a/home/default.nix +++ b/home/default.nix @@ -158,7 +158,6 @@ spotdl browsh mosh - spotify-player gh # development & tooling @@ -183,6 +182,8 @@ # nur.repos.forkprince.helium-nightly qbittorrent nautilus + fractal + tuba # gui applications ( multimedia ) audacity @@ -190,7 +191,8 @@ musescore gimp calibre - spotify-qt + riff + dissent # overrides # (chromium.override { diff --git a/packages/overlay.nix b/packages/overlay.nix index d6357ea..c1fad61 100644 --- a/packages/overlay.nix +++ b/packages/overlay.nix @@ -11,6 +11,8 @@ final: prev: { version = "${final.openmw-git.rev}"; }); + riff = final.callPackage ./riff { }; + linuxPackages_asahi = prev.linuxPackages_asahi.override { _kernelPatches = [ { diff --git a/packages/riff/default.nix b/packages/riff/default.nix new file mode 100644 index 0000000..f25f2db --- /dev/null +++ b/packages/riff/default.nix @@ -0,0 +1,96 @@ +{ + lib, + stdenv, + alsa-lib, + appstream-glib, + blueprint-compiler, + cargo, + desktop-file-utils, + fetchFromGitHub, + gettext, + glib, + gst_all_1, + gtk4, + libadwaita, + libhandy, + libpulseaudio, + meson, + ninja, + nix-update-script, + openssl, + pkg-config, + rustPlatform, + rustc, + wrapGAppsHook4, +}: + +stdenv.mkDerivation rec { + pname = "riff"; + version = "v25.11"; + + src = fetchFromGitHub { + owner = "Diegovsky"; + repo = "riff"; + rev = "refs/tags/${version}"; + hash = "sha256-j5PZXXGInA03V3Lfu+QUgeHw8583XvJZyW67VcDe980="; + }; + + cargoDeps = rustPlatform.fetchCargoVendor { + inherit pname version src; + hash = "sha256-8gJILK9A97PAb/Q1z+IvW54WuwoZZSKxlJJUt7dwQWE="; + }; + + postPatch = '' + substituteInPlace src/meson.build --replace-fail \ + "cargo_output = 'src' / rust_target / meson.project_name()" \ + "cargo_output = 'src' / '${stdenv.hostPlatform.rust.cargoShortTarget}' / rust_target / meson.project_name()" + ''; + + nativeBuildInputs = [ + appstream-glib + blueprint-compiler + cargo + desktop-file-utils + gettext + glib # for glib-compile-schemas + gtk4 # for gtk-update-icon-cache + meson + ninja + pkg-config + rustPlatform.cargoSetupHook + rustc + wrapGAppsHook4 + ]; + + buildInputs = [ + alsa-lib + glib + gst_all_1.gst-plugins-base + gst_all_1.gstreamer + gtk4 + libadwaita + libhandy + libpulseaudio + openssl + ]; + + # https://github.com/xou816/spot/issues/313 + mesonBuildType = "release"; + + # For https://github.com/xou816/spot/blob/21ee601f655caa4ca9cae1033a27459fe6289318/src/meson.build#L122 + env.CARGO_BUILD_TARGET = stdenv.hostPlatform.rust.rustcTargetSpec; + + passthru = { + updateScript = nix-update-script { }; + }; + + meta = { + description = "Native Spotify client for the GNOME desktop"; + homepage = "https://github.com/Diegovsky/riff"; + changelog = "https://github.com/Diegovsky/riff/releases/tag/${src.rev}"; + license = lib.licenses.mit; + maintainers = with lib.maintainers; [ getchoo ]; + mainProgram = "riff"; + platforms = lib.platforms.linux; + }; +} From d3100b7d7f9132d45868dc8331043883279fd5e4 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Wed, 21 Jan 2026 10:07:43 -0500 Subject: [PATCH 219/282] changes --- home/services/default.nix | 2 ++ system/default.nix | 8 +------- 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/home/services/default.nix b/home/services/default.nix index e4939d9..29bd72e 100644 --- a/home/services/default.nix +++ b/home/services/default.nix @@ -59,10 +59,12 @@ gtk3.extraConfig = { gtk-application-prefer-dark-theme = true; + gtk-decoration-layout = ":"; }; gtk4.extraConfig = { gtk-application-prefer-dark-theme = true; + gtk-decoration-layout = ":"; }; }; } diff --git a/system/default.nix b/system/default.nix index 167138d..bb96e22 100755 --- a/system/default.nix +++ b/system/default.nix @@ -80,7 +80,6 @@ programs.dconf.enable = true; services = { - desktopManager.plasma6.enable = false; displayManager = { sddm = { enable = true; @@ -99,6 +98,7 @@ pulse.enable = true; }; udisks2.enable = true; + gvfs.enable = true; }; environment = { @@ -107,12 +107,6 @@ firefoxpwa distrobox ]; - - # plasma6.excludePackages = with pkgs.kdePackages; [ - # elisa - # konsole - # khelpcenter - # ]; }; programs.gnupg.agent = { From e1c716ef8c6198dbe66ea22600bcca346635bdbc Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Wed, 21 Jan 2026 14:04:21 -0500 Subject: [PATCH 220/282] switch to base16 project-wide --- flake.lock | 159 +++++----- flake.nix | 56 ++-- home/apps/default.nix | 2 +- home/apps/discord.nix | 29 +- home/apps/librewolf.nix | 73 +++-- home/apps/mpv.nix | 36 ++- home/apps/vencord.nix | 2 +- home/default.nix | 278 ++++-------------- home/hosts/alien/default.nix | 8 +- home/hosts/peach/default.nix | 8 +- home/hosts/vm-generic/default.nix | 6 +- home/services/default.nix | 10 +- home/services/gtk.nix | 132 ++++----- home/services/qt.nix | 112 +++---- home/terminal/btop.nix | 98 +++++- home/terminal/fish.nix | 14 - home/terminal/fish_functions/fish-prompt.fish | 16 +- home/terminal/kitty.nix | 81 +++-- home/terminal/neovim.nix | 227 ++++++++------ home/tiling/niri.nix | 20 +- home/tiling/noctalia.nix | 52 ++-- options.nix | 152 ++++++++++ packages/catppuccin-discord/default.nix | 56 ---- packages/overlay.nix | 4 - system/default.nix | 11 +- system/hosts/alien/default.nix | 5 - system/hosts/peach/default.nix | 5 - system/hosts/vm-generic/default.nix | 5 - 28 files changed, 847 insertions(+), 810 deletions(-) create mode 100644 options.nix delete mode 100644 packages/catppuccin-discord/default.nix diff --git a/flake.lock b/flake.lock index 4da3f6d..9b37ad7 100644 --- a/flake.lock +++ b/flake.lock @@ -21,6 +21,40 @@ "type": "github" } }, + "base16": { + "inputs": { + "fromYaml": "fromYaml" + }, + "locked": { + "lastModified": 1755819240, + "narHash": "sha256-qcMhnL7aGAuFuutH4rq9fvAhCpJWVHLcHVZLtPctPlo=", + "owner": "SenchoPens", + "repo": "base16.nix", + "rev": "75ed5e5e3fce37df22e49125181fa37899c3ccd6", + "type": "github" + }, + "original": { + "owner": "SenchoPens", + "repo": "base16.nix", + "type": "github" + } + }, + "base16-discord": { + "flake": false, + "locked": { + "lastModified": 1768273180, + "narHash": "sha256-uw7lz53YHxvPEyXZiS+NJFhKMb6AMUvVpCLH81NjM7U=", + "owner": "imbypass", + "repo": "base16-discord", + "rev": "d4df17db31276d94cc1a8988f34e813aae1f3fb4", + "type": "github" + }, + "original": { + "owner": "imbypass", + "repo": "base16-discord", + "type": "github" + } + }, "cachyos-kernel": { "flake": false, "locked": { @@ -53,89 +87,6 @@ "type": "github" } }, - "catppuccin": { - "inputs": { - "nixpkgs": [ - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1768575137, - "narHash": "sha256-e0SsKnkSnq+UwZNS9ZyPJjTjabzq9TRc1hqeDnvOF1Q=", - "owner": "catppuccin", - "repo": "nix", - "rev": "48e67b4ad22072f1ae30b0ed8e1cb020cf06c611", - "type": "github" - }, - "original": { - "owner": "catppuccin", - "repo": "nix", - "type": "github" - } - }, - "catppuccin-btop": { - "flake": false, - "locked": { - "lastModified": 1727050041, - "narHash": "sha256-mEGZwScVPWGu+Vbtddc/sJ+mNdD2kKienGZVUcTSl+c=", - "owner": "catppuccin", - "repo": "btop", - "rev": "f437574b600f1c6d932627050b15ff5153b58fa3", - "type": "github" - }, - "original": { - "owner": "catppuccin", - "repo": "btop", - "type": "github" - } - }, - "catppuccin-discord": { - "flake": false, - "locked": { - "lastModified": 1768037813, - "narHash": "sha256-ExRNnxvG2PSGmpuaPxzCKL6GK6ETs7Gq4Roa74HXp+s=", - "owner": "catppuccin", - "repo": "discord", - "rev": "0fcfe2e15ed91f8c5f1f3c6855f3b2024f78d86c", - "type": "github" - }, - "original": { - "owner": "catppuccin", - "repo": "discord", - "type": "github" - } - }, - "catppuccin-mpv": { - "flake": false, - "locked": { - "lastModified": 1754544320, - "narHash": "sha256-oUheJNWk2R6gNEmkK8H6PWX0iofx2KMGDoFWtnr420A=", - "owner": "catppuccin", - "repo": "mpv", - "rev": "08e90daf511eee2c10c98f0031b51bb9de240d60", - "type": "github" - }, - "original": { - "owner": "catppuccin", - "repo": "mpv", - "type": "github" - } - }, - "catppuccin-palette": { - "locked": { - "lastModified": 1760672867, - "narHash": "sha256-hbBM+5fS39YrDXdQKBLP33D0cu54FQ5hk/7XESTTRXY=", - "owner": "abhinandh-s", - "repo": "catppuccin-nix", - "rev": "b482f6e3ee1ae61c83e52f50653e54bf72900b13", - "type": "github" - }, - "original": { - "owner": "abhinandh-s", - "repo": "catppuccin-nix", - "type": "github" - } - }, "flake-compat": { "locked": { "lastModified": 1761640442, @@ -245,6 +196,22 @@ "type": "github" } }, + "fromYaml": { + "flake": false, + "locked": { + "lastModified": 1731966426, + "narHash": "sha256-lq95WydhbUTWig/JpqiB7oViTcHFP8Lv41IGtayokA8=", + "owner": "SenchoPens", + "repo": "fromYaml", + "rev": "106af9e2f715e2d828df706c386a685698f3223b", + "type": "github" + }, + "original": { + "owner": "SenchoPens", + "repo": "fromYaml", + "type": "github" + } + }, "home-manager": { "inputs": { "nixpkgs": [ @@ -583,11 +550,8 @@ "root": { "inputs": { "apple-silicon": "apple-silicon", - "catppuccin": "catppuccin", - "catppuccin-btop": "catppuccin-btop", - "catppuccin-discord": "catppuccin-discord", - "catppuccin-mpv": "catppuccin-mpv", - "catppuccin-palette": "catppuccin-palette", + "base16": "base16", + "base16-discord": "base16-discord", "home-manager": "home-manager", "niri": "niri", "nix-cachyos-kernel": "nix-cachyos-kernel", @@ -598,7 +562,8 @@ "nur": "nur", "openmw": "openmw", "plasma-manager": "plasma-manager", - "spicetify-nix": "spicetify-nix" + "spicetify-nix": "spicetify-nix", + "tt-schemes": "tt-schemes" } }, "spicetify-nix": { @@ -667,6 +632,22 @@ "type": "github" } }, + "tt-schemes": { + "flake": false, + "locked": { + "lastModified": 1768516483, + "narHash": "sha256-AWTIYZ1tZab0YwAQwgt5yO4ucqZoc4iXX002Byy7pRY=", + "owner": "tinted-theming", + "repo": "schemes", + "rev": "43dd14f6466a782bd57419fdfb5f398c74d6ac53", + "type": "github" + }, + "original": { + "owner": "tinted-theming", + "repo": "schemes", + "type": "github" + } + }, "xwayland-satellite-stable": { "flake": false, "locked": { diff --git a/flake.nix b/flake.nix index 0ae60ec..545461c 100644 --- a/flake.nix +++ b/flake.nix @@ -7,13 +7,18 @@ nix-cachyos-kernel.url = "github:xddxdd/nix-cachyos-kernel"; - catppuccin = { - url = "github:catppuccin/nix"; - inputs.nixpkgs.follows = "nixpkgs"; + base16 = { + url = "github:SenchoPens/base16.nix"; }; - catppuccin-palette = { - url = "github:abhinandh-s/catppuccin-nix"; + tt-schemes = { + url = "github:tinted-theming/schemes"; + flake = false; + }; + + base16-discord = { + url = "github:imbypass/base16-discord"; + flake = false; }; home-manager = { @@ -61,21 +66,6 @@ url = "gitlab:OpenMW/openmw"; flake = false; }; - - catppuccin-discord = { - url = "github:catppuccin/discord"; - flake = false; - }; - - catppuccin-btop = { - url = "github:catppuccin/btop"; - flake = false; - }; - - catppuccin-mpv = { - url = "github:catppuccin/mpv"; - flake = false; - }; }; outputs = @@ -83,8 +73,9 @@ nixpkgs, nixpkgs-unstable, nix-cachyos-kernel, - catppuccin, - catppuccin-palette, + base16, + tt-schemes, + base16-discord, home-manager, plasma-manager, niri, @@ -94,9 +85,6 @@ nixvim, apple-silicon, openmw, - catppuccin-discord, - catppuccin-btop, - catppuccin-mpv, ... }: let @@ -123,7 +111,7 @@ nixpkgs.lib.nixosSystem { inherit system; specialArgs = { - inherit catppuccin system; + inherit system; pkgs-unstable = import nixpkgs-unstable { inherit system; config = pkgConfig; @@ -135,15 +123,12 @@ nixpkgs = { config = pkgConfig; overlays = [ - catppuccin-palette.overlays.default niri.overlays.niri noctalia.overlays.default nur.overlays.default (final: prev: { openmw-git = openmw; - catppuccin-discord-git = catppuccin-discord; - catppuccin-btop-git = catppuccin-btop; - catppuccin-mpv-git = catppuccin-mpv; + base16-discord-git = base16-discord; }) (import ./packages/overlay.nix) ]; @@ -207,7 +192,6 @@ ./system/tailscale ./system/hosts/${hostname} ./hardware/${hostname} - catppuccin.nixosModules.catppuccin niri.nixosModules.niri home-manager.nixosModules.home-manager noctalia.nixosModules.default @@ -218,6 +202,7 @@ users.sckova = { imports = [ ./home + ./options.nix ./home/apps ./home/games ./home/hosts/${hostname} @@ -228,7 +213,13 @@ ]; }; sharedModules = [ - catppuccin.homeModules.catppuccin + base16.nixosModule + ( + { config, ... }: + { + scheme = "${tt-schemes}/base24/${config.colors.scheme}.yaml"; + } + ) plasma-manager.homeModules.plasma-manager noctalia.homeModules.default spicetify-nix.homeManagerModules.default @@ -267,7 +258,6 @@ modules = [ ./home ./home/hosts/${hostname}.nix - catppuccin.homeModules.catppuccin home-manager.homeModules.home-manager plasma-manager.homeModules.plasma-manager niri.homeModules.default diff --git a/home/apps/default.nix b/home/apps/default.nix index 863e312..280bc95 100644 --- a/home/apps/default.nix +++ b/home/apps/default.nix @@ -3,6 +3,6 @@ ./discord.nix ./librewolf.nix ./mpv.nix - ./vscode.nix + # ./vscode.nix ]; } diff --git a/home/apps/discord.nix b/home/apps/discord.nix index a42a41e..f8e3fde 100644 --- a/home/apps/discord.nix +++ b/home/apps/discord.nix @@ -4,19 +4,17 @@ ... }: let - catppuccin-discord = "${pkgs.catppuccin-discord}/share/catppuccin-discord/catppuccin-${config.catppuccin.flavor}-${config.catppuccin.accent}.theme.css"; - mergedThemes = pkgs.runCommand "mergedConfig" { } '' mkdir -p $out - cp ${catppuccin-discord} $out/catppuccin.css + cp ${pkgs.base16-discord-git}/base16.css $out/theme.css ''; vesktopSettings = { discordBranch = "stable"; minimizeToTray = true; arRPC = true; - splashColor = "${pkgs.catppuccin.rgb.${config.catppuccin.flavor}.text}"; - splashBackground = "${pkgs.catppuccin.rgb.${config.catppuccin.flavor}.base}"; + splashColor = config.scheme.withHashtag.base05; + splashBackground = config.scheme.withHashtag.base00; spellCheckLanguages = [ "en-US" "en" @@ -47,12 +45,31 @@ in force = true; }; - home.file.".config/vesktop/settings/quickCss.css" = { + home.file.".config/vesktop/settings/quickCss.css" = with config.scheme.withHashtag; { text = '' * { font-family: "${config.userOptions.fontSans.name}" !important; font-size: ${toString config.userOptions.fontSans.size}px; } + + :root { + --base00: ${base00}; + --base01: ${base01}; + --base02: ${base02}; + --base03: ${base03}; + --base04: ${base04}; + --base05: ${base05}; + --base06: ${base06}; + --base07: ${base07}; + --base08: ${base08}; + --base09: ${base09}; + --base0A: ${base0A}; + --base0B: ${base0B}; + --base0C: ${base0C}; + --base0D: ${base0D}; + --base0E: ${base0E}; + --base0F: ${base0F}; + } ''; force = true; }; diff --git a/home/apps/librewolf.nix b/home/apps/librewolf.nix index 1e7ede3..19b8f89 100644 --- a/home/apps/librewolf.nix +++ b/home/apps/librewolf.nix @@ -12,45 +12,40 @@ recursive = true; }; - home.file.".librewolf/default/chrome/colors.css" = - let - color = pkgs.catppuccin.rgb.${config.catppuccin.flavor}; - accent = color.${config.catppuccin.accent}; - in - { - text = '' - * { - --accent: ${accent}; - --rosewater: ${color.rosewater}; - --flamingo: ${color.flamingo}; - --pink: ${color.pink}; - --mauve: ${color.mauve}; - --red: ${color.red}; - --maroon: ${color.maroon}; - --peach: ${color.peach}; - --yellow: ${color.yellow}; - --green: ${color.green}; - --teal: ${color.teal}; - --sky: ${color.sky}; - --sapphire: ${color.sapphire}; - --blue: ${color.blue}; - --lavender: ${color.lavender}; - --text: ${color.text}; - --subtext1: ${color.subtext1}; - --subtext0: ${color.subtext0}; - --overlay2: ${color.overlay2}; - --overlay1: ${color.overlay1}; - --overlay0: ${color.overlay0}; - --surface2: ${color.surface2}; - --surface1: ${color.surface1}; - --surface0: ${color.surface0}; - --base: ${color.base}; - --mantle: ${color.mantle}; - --crust: ${color.crust}; - } - ''; - force = true; - }; + home.file.".librewolf/default/chrome/colors.css" = with config.scheme.withHashtag; { + text = '' + * { + --accent: ${base09}; + --rosewater: ${base06}; + --flamingo: ${base0F}; + --pink: ${base17}; + --mauve: ${base0E}; + --red: ${base08}; + --maroon: ${base12}; + --peach: ${base09}; + --yellow: ${base0A}; + --green: ${base0B}; + --teal: ${base0C}; + --sky: ${base15}; + --sapphire: ${base16}; + --blue: ${base0D}; + --lavender: ${base07}; + --text: ${base05}; + --subtext1: ${base04}; + --subtext0: ${base04}; + --overlay2: ${base03}; + --overlay1: ${base03}; + --overlay0: ${base03}; + --surface2: ${base02}; + --surface1: ${base01}; + --surface0: ${base01}; + --base: ${base00}; + --mantle: ${base10}; + --crust: ${base11}; + } + ''; + force = true; + }; home.file.".local/share/firefoxpwa/profiles/01KEYXH9TC4B54J5CTPNE75JP0/prefs.js" = { text = '' diff --git a/home/apps/mpv.nix b/home/apps/mpv.nix index 960d73b..af437ef 100644 --- a/home/apps/mpv.nix +++ b/home/apps/mpv.nix @@ -3,14 +3,6 @@ pkgs, ... }: -let - mergedConfig = pkgs.runCommand "mergedConfig" { } '' - mkdir -p $out - ${pkgs.gnused}/bin/sed 's/${pkgs.catppuccin.${config.catppuccin.flavor}.base}/#000000/g' \ - ${pkgs.catppuccin-mpv-git}/themes/${config.catppuccin.flavor}/${config.catppuccin.accent}.conf \ - > $out/mpv.conf - ''; -in { home.packages = with pkgs; [ (mpv.override { @@ -21,9 +13,31 @@ in ]; }) ]; - home.file.".config/mpv" = { - source = mergedConfig; - recursive = true; + home.file.".config/mpv/mpv.conf" = { + text = with config.scheme; '' + # Credit to https://github.com/catppuccin/mpv + # Main mpv options + background-color='#000000' + osd-back-color='${config.scheme.withHashtag.base11}' + osd-border-color='${config.scheme.withHashtag.base11}' + osd-color='${config.scheme.withHashtag.base05}' + osd-shadow-color='${config.scheme.withHashtag.base00}' + + # Stats script options + # Options are on separate lines for clarity + # Colors are in #BBGGRR format + script-opts-append=stats-border_color=${base08} + script-opts-append=stats-font_color=${base06} + script-opts-append=stats-plot_bg_border_color=${base16} + script-opts-append=stats-plot_bg_color=${base08} + script-opts-append=stats-plot_color=${base16} + + # External script options + # It is fine to leave these here even if one does not use these scripts because they are just ignored unless a script uses them + + # UOSC options + script-opts-append=uosc-color=foreground=${base09},foreground_text=${base01},background=${base00},background_text=${base05},curtain=${base10},success=${base0B},error=${base08} + ''; force = true; }; } diff --git a/home/apps/vencord.nix b/home/apps/vencord.nix index 9442180..d34c001 100644 --- a/home/apps/vencord.nix +++ b/home/apps/vencord.nix @@ -4,7 +4,7 @@ useQuickCss = true; themeLinks = [ ]; eagerPatches = false; - enabledThemes = [ "catppuccin.css" ]; + enabledThemes = [ "theme.css" ]; enableReactDevtools = false; frameless = false; transparent = true; diff --git a/home/default.nix b/home/default.nix index 394c519..5c0e851 100755 --- a/home/default.nix +++ b/home/default.nix @@ -2,210 +2,68 @@ config, pkgs, pkgs-unstable, - lib, ... }: { - options = { - catppuccinUpper = { - accent = lib.mkOption { - type = lib.types.str; - readOnly = true; - default = - builtins.substring 0 1 (lib.toUpper config.catppuccin.accent) - + builtins.substring 1 (-1) config.catppuccin.accent; - }; - flavor = lib.mkOption { - type = lib.types.str; - readOnly = true; - default = - builtins.substring 0 1 (lib.toUpper config.catppuccin.flavor) - + builtins.substring 1 (-1) config.catppuccin.flavor; - }; - }; - userOptions = { - name = lib.mkOption { - type = lib.types.str; - readOnly = true; - default = "Sean Kovacs"; - }; - username = lib.mkOption { - type = lib.types.str; - readOnly = true; - default = "sckova"; - }; - hostname = lib.mkOption { - type = lib.types.str; - readOnly = true; - default = config.system.name; - }; - fontSans = { - name = lib.mkOption { - type = lib.types.str; - readOnly = true; - default = "Noto Sans"; - }; - size = lib.mkOption { - type = lib.types.int; - readOnly = true; - default = 11; - }; - package = lib.mkOption { - type = lib.types.package; - readOnly = true; - default = pkgs.noto-fonts; - }; - }; - fontSerif = { - name = lib.mkOption { - type = lib.types.str; - readOnly = true; - default = "Noto Serif"; - }; - size = lib.mkOption { - type = lib.types.int; - readOnly = true; - default = 11; - }; - package = lib.mkOption { - type = lib.types.package; - readOnly = true; - default = pkgs.noto-fonts; - }; - }; - fontMono = { - name = lib.mkOption { - type = lib.types.str; - readOnly = true; - default = "NotoSansM Nerd Font Mono"; - }; - size = lib.mkOption { - type = lib.types.int; - readOnly = true; - default = 10; - }; - package = lib.mkOption { - type = lib.types.package; - readOnly = true; - default = pkgs.nerd-fonts.noto; - }; - }; - fontEmoji = { - name = lib.mkOption { - type = lib.types.str; - readOnly = true; - default = "Noto Emoji"; - }; - size = lib.mkOption { - type = lib.types.int; - readOnly = true; - default = 10; - }; - package = lib.mkOption { - type = lib.types.package; - readOnly = true; - default = pkgs.noto-fonts-color-emoji; - }; - }; - cursor = - let - attrName = config.catppuccin.flavor + config.catppuccinUpper.accent; - in - { - name = lib.mkOption { - type = lib.types.str; - readOnly = true; - default = "catppuccin-${config.catppuccin.flavor}-${config.catppuccin.accent}-cursors"; - }; - package = lib.mkOption { - type = lib.types.package; - readOnly = true; - default = pkgs.catppuccin-cursors.${attrName}; - }; - size = lib.mkOption { - type = lib.types.int; - readOnly = true; - default = 24; - }; - path = lib.mkOption { - type = lib.types.str; - readOnly = true; - default = "${pkgs.catppuccin-cursors.${attrName}}/share/icons"; - }; - }; - isDark = lib.mkOption { - type = lib.types.bool; - readOnly = true; - default = config.catppuccin.flavor != "latte"; - }; - }; - }; config = { - home.packages = - (with pkgs; [ - # cli utilities - tmux - fastfetch - btop - wget - ripgrep - ncdu - fzf - wl-clipboard - rclone - waypipe - spotdl - browsh - mosh - gh + home.packages = with pkgs; [ + # cli utilities + tmux + fastfetch + btop + wget + ripgrep + ncdu + fzf + wl-clipboard + rclone + waypipe + spotdl + browsh + mosh + gh - # development & tooling - jdk21_headless - quickemu - nerd-fonts.noto - noto-fonts - noto-fonts-color-emoji - nix-prefetch - prowlarr - radarr - sonarr - flaresolverr + # development & tooling + jdk21_headless + quickemu + nerd-fonts.noto + noto-fonts + noto-fonts-color-emoji + nix-prefetch + prowlarr + radarr + sonarr + flaresolverr - # kde and kde theming - kde-rounded-corners - kdePackages.partitionmanager + # kde and kde theming + kde-rounded-corners + kdePackages.partitionmanager + pkgs.catppuccin-cursors.mochaPeach - # gui applications - input-leap - libreoffice-qt-fresh - # nur.repos.forkprince.helium-nightly - qbittorrent - nautilus - fractal - tuba + # gui applications + input-leap + libreoffice-qt-fresh + # nur.repos.forkprince.helium-nightly + qbittorrent + nautilus + fractal + tuba - # gui applications ( multimedia ) - audacity - strawberry - musescore - gimp - calibre - riff - dissent + # gui applications ( multimedia ) + audacity + strawberry + musescore + gimp + calibre + riff + dissent - # overrides - # (chromium.override { - # enableWideVine = true; - # }) - (catppuccin-kde.override { - flavour = [ config.catppuccin.flavor ]; - accents = [ config.catppuccin.accent ]; - }) - ]) - ++ [ - pkgs.catppuccin-cursors."${config.catppuccin.flavor}${config.catppuccinUpper.accent}" - ]; + # overrides + # (chromium.override { + # enableWideVine = true; + # }) + ]; services = { spotifyd = { @@ -226,26 +84,20 @@ }; }; - catppuccin = { - enable = false; - cursors.enable = false; - cache.enable = true; - }; + # programs.plasma = { + # workspace = { + # colorScheme = "Catppuccin${config.catppuccinUpper.flavor}${config.catppuccinUpper.accent}"; + # cursor.theme = "catppuccin-${config.catppuccin.flavor}-${config.catppuccin.accent}-cursors"; + # splashScreen.theme = "Catpppuccin-${config.catppuccinUpper.flavor}-${config.catppuccinUpper.accent}"; + # }; - programs.plasma = { - workspace = { - colorScheme = "Catppuccin${config.catppuccinUpper.flavor}${config.catppuccinUpper.accent}"; - cursor.theme = "catppuccin-${config.catppuccin.flavor}-${config.catppuccin.accent}-cursors"; - splashScreen.theme = "Catpppuccin-${config.catppuccinUpper.flavor}-${config.catppuccinUpper.accent}"; - }; - - configFile = { - kdeglobals.KDE = { - DefaultDarkLookAndFeel = "Catpppuccin-${config.catppuccinUpper.flavor}-${config.catppuccinUpper.accent}"; - DefaultLightLookAndFeel = "Catpppuccin-Latte-${config.catppuccinUpper.accent}"; - }; - }; - }; + # configFile = { + # kdeglobals.KDE = { + # DefaultDarkLookAndFeel = "Catpppuccin-${config.catppuccinUpper.flavor}-${config.catppuccinUpper.accent}"; + # DefaultLightLookAndFeel = "Catpppuccin-Latte-${config.catppuccinUpper.accent}"; + # }; + # }; + # }; # This value determines the Home Manager release that your # configuration is compatible with. This helps avoid breakage diff --git a/home/hosts/alien/default.nix b/home/hosts/alien/default.nix index ba9f7c9..991ea4e 100644 --- a/home/hosts/alien/default.nix +++ b/home/hosts/alien/default.nix @@ -6,9 +6,9 @@ ... }: { - catppuccin = { - accent = "blue"; - flavor = "mocha"; + colors = { + scheme = "catppuccin-mocha"; + accent = "base0D"; }; home.packages = [ @@ -41,7 +41,7 @@ ]; theme = spicePkgs.themes.catppuccin; - colorScheme = config.catppuccin.flavor; + colorScheme = "mocha"; }; programs.plasma = { diff --git a/home/hosts/peach/default.nix b/home/hosts/peach/default.nix index d1298bc..7e1ee13 100644 --- a/home/hosts/peach/default.nix +++ b/home/hosts/peach/default.nix @@ -1,8 +1,8 @@ -{ pkgs, ... }: +{ pkgs, config, ... }: { - catppuccin = { - accent = "peach"; - flavor = "mocha"; + colors = { + scheme = "catppuccin-mocha"; + accent = "base09"; }; home.packages = with pkgs; [ diff --git a/home/hosts/vm-generic/default.nix b/home/hosts/vm-generic/default.nix index ca5ec38..e5488aa 100644 --- a/home/hosts/vm-generic/default.nix +++ b/home/hosts/vm-generic/default.nix @@ -4,9 +4,9 @@ ... }: { - catppuccin = { - accent = "green"; - flavor = "mocha"; + colors = { + scheme = "catppuccin-mocha"; + accent = "base0B"; }; home.packages = with pkgs; [ ]; diff --git a/home/services/default.nix b/home/services/default.nix index 29bd72e..d38c136 100644 --- a/home/services/default.nix +++ b/home/services/default.nix @@ -36,7 +36,7 @@ gtk = { enable = true; - colorScheme = if config.userOptions.isDark then "dark" else "light"; + # colorScheme = if config.userOptions.isDark then "dark" else "light"; # theme = { # package = pkgs.kdePackages.breeze-gtk; @@ -46,8 +46,14 @@ # else "Breeze"; # }; + # iconTheme = { + # name = if config.userOptions.isDark then "Colloid-Dark" else "Colloid-Light"; + # package = pkgs.colloid-icon-theme; + # }; + + colorScheme = "dark"; iconTheme = { - name = if config.userOptions.isDark then "Colloid-Dark" else "Colloid-Light"; + name = "Colloid-Dark"; package = pkgs.colloid-icon-theme; }; diff --git a/home/services/gtk.nix b/home/services/gtk.nix index 7ae6a72..f851508 100644 --- a/home/services/gtk.nix +++ b/home/services/gtk.nix @@ -1,106 +1,98 @@ { config, - pkgs, - lib, ... }: let - colors = pkgs.catppuccin.hex.${config.catppuccin.flavor}; - mkColorSection = name: value: "@define-color ${name} ${value};"; - generateCSS = '' - /* Catppuccin ${lib.toUpper (builtins.substring 0 1 config.catppuccin.flavor)}${ - builtins.substring 1 (-1) config.catppuccin.flavor - } ${lib.toUpper (builtins.substring 0 1 config.catppuccin.accent)}${ - builtins.substring 1 (-1) config.catppuccin.accent - } Palette */ + generateCSS = with config.scheme.withHashtag; '' + /* Kova's Nixified GTK */ /* Base colors */ - ${mkColorSection "window_bg_color" colors.base} - ${mkColorSection "window_fg_color" colors.text} + ${mkColorSection "window_bg_color" base00} + ${mkColorSection "window_fg_color" base05} /* View styling */ - ${mkColorSection "view_bg_color" colors.base} - ${mkColorSection "view_fg_color" colors.text} + ${mkColorSection "view_bg_color" base00} + ${mkColorSection "view_fg_color" base05} /* Header bar */ - ${mkColorSection "headerbar_bg_color" colors.mantle} - ${mkColorSection "headerbar_backdrop_color" colors.mantle} - ${mkColorSection "headerbar_fg_color" colors.text} + ${mkColorSection "headerbar_bg_color" base10} + ${mkColorSection "headerbar_backdrop_color" base10} + ${mkColorSection "headerbar_fg_color" base05} /* Popovers and dialogs */ - ${mkColorSection "popover_bg_color" colors.base} - ${mkColorSection "popover_fg_color" colors.text} + ${mkColorSection "popover_bg_color" base00} + ${mkColorSection "popover_fg_color" base05} @define-color dialog_bg_color @popover_bg_color; @define-color dialog_fg_color @popover_fg_color; /* Cards and sidebars */ - ${mkColorSection "card_bg_color" colors.mantle} - ${mkColorSection "card_fg_color" colors.text} - ${mkColorSection "sidebar_bg_color" colors.mantle} - ${mkColorSection "sidebar_fg_color" colors.text} + ${mkColorSection "card_bg_color" base10} + ${mkColorSection "card_fg_color" base05} + ${mkColorSection "sidebar_bg_color" base10} + ${mkColorSection "sidebar_fg_color" base05} @define-color sidebar_backdrop_color @sidebar_bg_color; - ${mkColorSection "sidebar_border_color" colors.surface0} + ${mkColorSection "sidebar_border_color" base01} @define-color secondary_sidebar_bg_color @sidebar_bg_color; @define-color secondary_sidebar_fg_color @sidebar_fg_color; @define-color secondary_sidebar_backdrop_color @sidebar_backdrop_color; @define-color secondary_sidebar_border_color @sidebar_border_color; /* Catppuccin accent colors */ - ${mkColorSection "blue_1" colors.blue} - ${mkColorSection "blue_2" colors.sapphire} - ${mkColorSection "blue_3" colors.sky} - ${mkColorSection "blue_4" colors.teal} - ${mkColorSection "blue_5" colors.lavender} + ${mkColorSection "blue_1" base0D} + ${mkColorSection "blue_2" base16} + ${mkColorSection "blue_3" base15} + ${mkColorSection "blue_4" base0C} + ${mkColorSection "blue_5" base07} - ${mkColorSection "green_1" colors.green} - ${mkColorSection "green_2" colors.teal} - ${mkColorSection "green_3" colors.sky} - ${mkColorSection "green_4" colors.sapphire} - ${mkColorSection "green_5" colors.blue} + ${mkColorSection "green_1" base0B} + ${mkColorSection "green_2" base0C} + ${mkColorSection "green_3" base15} + ${mkColorSection "green_4" base16} + ${mkColorSection "green_5" base0D} - ${mkColorSection "yellow_1" colors.yellow} - ${mkColorSection "yellow_2" colors.peach} - ${mkColorSection "yellow_3" colors.yellow} - ${mkColorSection "yellow_4" colors.red} - ${mkColorSection "yellow_5" colors.maroon} + ${mkColorSection "yellow_1" base0A} + ${mkColorSection "yellow_2" base09} + ${mkColorSection "yellow_3" base0A} + ${mkColorSection "yellow_4" base08} + ${mkColorSection "yellow_5" base12} - ${mkColorSection "orange_1" colors.peach} - ${mkColorSection "orange_2" colors.red} - ${mkColorSection "orange_3" colors.maroon} - ${mkColorSection "orange_4" colors.yellow} - ${mkColorSection "orange_5" colors.green} + ${mkColorSection "orange_1" base09} + ${mkColorSection "orange_2" base08} + ${mkColorSection "orange_3" base12} + ${mkColorSection "orange_4" base0A} + ${mkColorSection "orange_5" base0B} - ${mkColorSection "red_1" colors.red} - ${mkColorSection "red_2" colors.maroon} - ${mkColorSection "red_3" colors.pink} - ${mkColorSection "red_4" colors.flamingo} - ${mkColorSection "red_5" colors.rosewater} + ${mkColorSection "red_1" base08} + ${mkColorSection "red_2" base12} + ${mkColorSection "red_3" base17} + ${mkColorSection "red_4" base0F} + ${mkColorSection "red_5" base13} - ${mkColorSection "purple_1" colors.mauve} - ${mkColorSection "purple_2" colors.lavender} - ${mkColorSection "purple_3" colors.pink} - ${mkColorSection "purple_4" colors.flamingo} - ${mkColorSection "purple_5" colors.rosewater} + ${mkColorSection "purple_1" base0E} + ${mkColorSection "purple_2" base07} + ${mkColorSection "purple_3" base17} + ${mkColorSection "purple_4" base0F} + ${mkColorSection "purple_5" base13} - ${mkColorSection "brown_1" colors.surface2} - ${mkColorSection "brown_2" colors.overlay0} - ${mkColorSection "brown_3" colors.overlay1} - ${mkColorSection "brown_4" colors.overlay2} - ${mkColorSection "brown_5" colors.subtext1} + ${mkColorSection "brown_1" base02} + ${mkColorSection "brown_2" base03} + ${mkColorSection "brown_3" base03} + ${mkColorSection "brown_4" base03} + ${mkColorSection "brown_5" base04} - ${mkColorSection "light_1" colors.text} - ${mkColorSection "light_2" colors.subtext0} - ${mkColorSection "light_3" colors.subtext1} - ${mkColorSection "light_4" colors.blue} - ${mkColorSection "light_5" colors.overlay0} + ${mkColorSection "light_1" base05} + ${mkColorSection "light_2" base04} + ${mkColorSection "light_3" base04} + ${mkColorSection "light_4" base0D} + ${mkColorSection "light_5" base03} - ${mkColorSection "dark_1" colors.surface0} - ${mkColorSection "dark_2" colors.surface1} - ${mkColorSection "dark_3" colors.surface2} - ${mkColorSection "dark_4" colors.mantle} - ${mkColorSection "dark_5" colors.crust} + ${mkColorSection "dark_1" base01} + ${mkColorSection "dark_2" base02} + ${mkColorSection "dark_3" base02} + ${mkColorSection "dark_4" base10} + ${mkColorSection "dark_5" base11} /* Custom rules */ toast { @@ -118,7 +110,7 @@ let } /* Accent */ - ${mkColorSection "accent_bg_color" colors.${config.catppuccin.accent}} + ${mkColorSection "accent_bg_color" base09} @define-color accent_fg_color @window_bg_color; ''; in diff --git a/home/services/qt.nix b/home/services/qt.nix index ba388a5..0740046 100644 --- a/home/services/qt.nix +++ b/home/services/qt.nix @@ -34,82 +34,82 @@ }; ColorScheme = + with config.scheme; let - c = pkgs.catppuccin.bare.${config.catppuccin.flavor}; - accent = c.${config.catppuccin.accent}; + accent = base09; mkColors = roles: builtins.concatStringsSep ", " (map (r: "#ff${r}") roles); in { active_colors = mkColors [ - c.text - c.surface0 - c.surface1 - c.surface0 - c.base - c.mantle - c.text - c.text - c.text - c.base - c.mantle - c.crust + base05 + base01 + base02 + base01 + base00 + base10 + base05 + base05 + base05 + base00 + base10 + base11 accent - c.base + base00 accent - c.mauve - c.mantle + base0E + base10 "000000" - c.base - c.text - c.overlay0 + base00 + base05 + base03 accent ]; disabled_colors = mkColors [ - c.overlay0 - c.surface0 - c.surface1 - c.surface0 - c.overlay0 - c.mantle - c.overlay0 - c.text - c.overlay0 - c.surface0 - c.surface0 - c.mantle - c.overlay1 - c.text + base03 + base01 + base02 + base01 + base03 + base10 + base03 + base05 + base03 + base01 + base01 + base10 + base03 + base05 "0000ff" "ff00ff" - c.surface0 + base01 "000000" - c.surface0 - c.base + base01 + base00 "80000000" - c.overlay1 + base03 ]; inactive_colors = mkColors [ - c.text - c.surface0 - c.surface1 - c.surface0 - c.base - c.mantle - c.text - c.text - c.text - c.base - c.mantle - c.crust + base05 + base01 + base02 + base01 + base00 + base10 + base05 + base05 + base05 + base00 + base10 + base11 accent - c.base + base00 accent - c.mauve - c.mantle + base0E + base10 "000000" - c.base - c.text - c.overlay0 + base00 + base05 + base03 accent ]; }; diff --git a/home/terminal/btop.nix b/home/terminal/btop.nix index 0f0d406..64d5fe1 100644 --- a/home/terminal/btop.nix +++ b/home/terminal/btop.nix @@ -4,12 +4,102 @@ ... }: let + btop-colors = with config.scheme.withHashtag; '' + # Credit to https://github.com/catppuccin/btop + # Main background, empty for terminal default, need to be empty if you want transparent background + theme[main_bg]="${base00}" + + # Main text color + theme[main_fg]="${base05}" + + # Title color for boxes + theme[title]="${base05}" + + # Highlight color for keyboard shortcuts + theme[hi_fg]="${base0D}" + + # Background color of selected item in processes box + theme[selected_bg]="${base02}" + + # Foreground color of selected item in processes box + theme[selected_fg]="${base0D}" + + # Color of inactive/disabled text + theme[inactive_fg]="${base03}" + + # Color of text appearing on top of graphs, i.e uptime and current network graph scaling + theme[graph_text]="${base06}" + + # Background color of the percentage meters + theme[meter_bg]="${base02}" + + # Misc colors for processes box including mini cpu graphs, details memory graph and details status text + theme[proc_misc]="${base06}" + + # CPU, Memory, Network, Proc box outline colors + theme[cpu_box]="${base0E}" #Mauve + theme[mem_box]="${base0B}" #Green + theme[net_box]="${base12}" #Maroon + theme[proc_box]="${base0D}" #Blue + + # Box divider line and small boxes line color + theme[div_line]="${base03}" + + # Temperature graph color (Green -> Yellow -> Red) + theme[temp_start]="${base0B}" + theme[temp_mid]="${base0A}" + theme[temp_end]="${base08}" + + # CPU graph colors (Teal -> Lavender) + theme[cpu_start]="${base0C}" + theme[cpu_mid]="${base16}" + theme[cpu_end]="${base07}" + + # Mem/Disk free meter (Mauve -> Lavender -> Blue) + theme[free_start]="${base0E}" + theme[free_mid]="${base07}" + theme[free_end]="${base0D}" + + # Mem/Disk cached meter (Sapphire -> Lavender) + theme[cached_start]="${base16}" + theme[cached_mid]="${base0D}" + theme[cached_end]="${base07}" + + # Mem/Disk available meter (Peach -> Red) + theme[available_start]="${base09}" + theme[available_mid]="${base12}" + theme[available_end]="${base08}" + + # Mem/Disk used meter (Green -> Sky) + theme[used_start]="${base0B}" + theme[used_mid]="${base0C}" + theme[used_end]="${base15}" + + # Download graph colors (Peach -> Red) + theme[download_start]="${base09}" + theme[download_mid]="${base12}" + theme[download_end]="${base08}" + + # Upload graph colors (Green -> Sky) + theme[upload_start]="${base0B}" + theme[upload_mid]="${base0C}" + theme[upload_end]="${base15}" + + # Process box color gradient for threads, mem and cpu usage (Sapphire -> Mauve) + theme[process_start]="${base16}" + theme[process_mid]="${base07}" + theme[process_end]="${base0E}" + ''; + + btop-colors-file = pkgs.writeTextFile { + name = "btop-colors"; + text = btop-colors; + destination = "/nixos.theme"; + }; + mergedConfig = pkgs.runCommand "mergedConfig" { } '' mkdir -p $out/themes - ${pkgs.gnused}/bin/sed 's/blankFlavor/${config.catppuccin.flavor}/g' \ - ${./btop.conf} > $out/btop.conf - cp ${pkgs.catppuccin-btop-git}/themes/catppuccin_latte.theme $out/themes/ - cp ${pkgs.catppuccin-btop-git}/themes/catppuccin_${config.catppuccin.flavor}.theme $out/themes/nixos.theme + cp -r ${btop-colors-file}/nixos.theme $out/themes/nixos.theme ''; in { diff --git a/home/terminal/fish.nix b/home/terminal/fish.nix index 4f32021..0639fa0 100644 --- a/home/terminal/fish.nix +++ b/home/terminal/fish.nix @@ -43,18 +43,4 @@ }; }; programs.man.generateCaches = false; - - home.file.".config/fish/colors.fish" = { - text = - let - flavor = config.catppuccin.flavor; - palette = pkgs.catppuccin.bare.${flavor}; - accent = config.catppuccin.accent; - in - lib.concatStringsSep "\n" ( - (lib.mapAttrsToList (name: value: "set -g color_${name} ${value}") palette) - ++ [ "set -g color_accent ${palette.${accent}}" ] - ); - force = true; - }; } diff --git a/home/terminal/fish_functions/fish-prompt.fish b/home/terminal/fish_functions/fish-prompt.fish index 568a206..e13d31d 100644 --- a/home/terminal/fish_functions/fish-prompt.fish +++ b/home/terminal/fish_functions/fish-prompt.fish @@ -1,24 +1,24 @@ -source ~/.config/fish/colors.fish +# source ~/.config/fish/colors.fish set -l last_status $status set -l nix_shell_info ( if test -n "$IN_NIX_SHELL" echo -n " " end ) -set -g color_user $color_sky -set -g color_host $color_red -set -g color_cwd $color_green +set -g color_user cyan +set -g color_host red +set -g color_cwd green # Set host color based on hostname if test (hostname) = peach - set -g color_host $color_accent + set -g color_host yellow else if test (hostname) = alien - set -g color_host $color_accent + set -g color_host yellow else if test (hostname) = vm - set -g color_host $color_accent + set -g color_host yellow set -g color_cwd normal else if test (uname) = Darwin - set -g color_host $color_yellow + set -g color_host yellow end set -l user_host (set_color $color_user)"$USER"(set_color normal)"@"(set_color $color_host)(prompt_hostname)(set_color normal) diff --git a/home/terminal/kitty.nix b/home/terminal/kitty.nix index 6d7fd44..22c8354 100644 --- a/home/terminal/kitty.nix +++ b/home/terminal/kitty.nix @@ -4,11 +4,8 @@ ... }: let - colors = pkgs.catppuccin.hex.${config.catppuccin.flavor}; - accent = colors.${config.catppuccin.accent}; - # Map Catppuccin colors to Kitty theme structure - kitty-colors = '' + kitty-colors = with config.scheme.withHashtag; '' # vim:ft=kitty ## name: Kova's Nixified Kitty ## author: Catppuccin Org & sckova @@ -17,70 +14,70 @@ let ## blurb: The theme generated from the NixOS configuration! # The basic colors - foreground ${colors.text} - background ${colors.base} - selection_foreground ${colors.base} - selection_background ${colors.rosewater} + foreground ${base05} + background ${base00} + selection_foreground ${base00} + selection_background ${base06} # Cursor colors - cursor ${colors.rosewater} - cursor_text_color ${colors.base} + cursor ${base06} + cursor_text_color ${base00} # URL underline color when hovering with mouse - url_color ${colors.rosewater} + url_color ${base06} # Kitty window border colors - active_border_color ${accent} - inactive_border_color ${colors.overlay0} - bell_border_color ${colors.yellow} + active_border_color ${base09} + inactive_border_color ${base03} + bell_border_color ${base0A} # Tab bar colors - active_tab_foreground ${colors.crust} - active_tab_background ${accent} - inactive_tab_foreground ${colors.text} - inactive_tab_background ${colors.mantle} - tab_bar_background ${colors.crust} + active_tab_foreground ${base11} + active_tab_background ${base09} + inactive_tab_foreground ${base05} + inactive_tab_background ${base10} + tab_bar_background ${base11} # Colors for marks (marked text in the terminal) - mark1_foreground ${colors.base} - mark1_background ${accent} - mark2_foreground ${colors.base} - mark2_background ${colors.blue} - mark3_foreground ${colors.base} - mark3_background ${colors.sky} + mark1_foreground ${base00} + mark1_background ${base09} + mark2_foreground ${base00} + mark2_background ${base0D} + mark3_foreground ${base00} + mark3_background ${base15} # The 16 terminal colors # black - color0 ${colors.surface1} - color8 ${colors.surface2} + color0 ${base02} + color8 ${base02} # red - color1 ${colors.red} - color9 ${colors.red} + color1 ${base08} + color9 ${base08} # green - color2 ${colors.green} - color10 ${colors.green} + color2 ${base0B} + color10 ${base0B} # yellow - color3 ${colors.yellow} - color11 ${colors.yellow} + color3 ${base0A} + color11 ${base0A} # blue - color4 ${colors.blue} - color12 ${colors.blue} + color4 ${base0D} + color12 ${base0D} # magenta - color5 ${colors.pink} - color13 ${colors.pink} + color5 ${base17} + color13 ${base17} # cyan - color6 ${colors.teal} - color14 ${colors.teal} + color6 ${base0C} + color14 ${base0C} # white - color7 ${colors.subtext1} - color15 ${colors.subtext0} + color7 ${base04} + color15 ${base04} ''; kitty-colors-file = pkgs.writeTextFile { @@ -132,7 +129,7 @@ in }; bat = { enable = true; - config.theme = "Catppuccin ${config.catppuccinUpper.flavor}"; + # config.theme = "Catppuccin ${config.catppuccinUpper.flavor}"; }; }; } diff --git a/home/terminal/neovim.nix b/home/terminal/neovim.nix index 901b1d4..aa88118 100644 --- a/home/terminal/neovim.nix +++ b/home/terminal/neovim.nix @@ -36,12 +36,49 @@ expandtab = true; number = true; }; - colorschemes.catppuccin = { + colorschemes.palette = { enable = true; settings = { - flavour = config.catppuccin.flavor; + palettes = { + main = "base16_custom"; + accent = "base16_custom"; + state = "base16_custom"; + }; + + custom_palettes = with config.scheme.withHashtag; { + main.base16_custom = { + color0 = base00; # background + color1 = base01; # lighter background + color2 = base02; # selection background + color3 = base03; # comments + color4 = base04; # dark foreground + color5 = base05; # default foreground + color6 = base06; # light foreground + color7 = base07; # lightest foreground + color8 = base05; # variables/tags + }; + + accent.base16_custom = { + accent0 = base09; # integers/constants + accent1 = base0A; # classes/search + accent2 = base0B; # strings/inherited + accent3 = base0C; # support/regex + accent4 = base0D; # functions/headings + accent5 = base0E; # keywords/bold + accent6 = base0F; # deprecated/embedded + }; + + state.base16_custom = { + error = base08; # red + warning = base0A; # yellow + hint = base0C; # cyan + ok = base0B; # green + info = base0D; # blue + }; + }; }; }; + keymaps = [ # --- Normal mode mappings --- { @@ -186,110 +223,106 @@ nixd.enable = true; }; }; - lualine = - let - palette = pkgs.catppuccin.${config.catppuccin.flavor}; - in - { - enable = true; - settings = { - options = { - theme = { - normal = { - a = { - fg = palette.base; - bg = palette.mauve; - }; - b = { - fg = palette.text; - bg = palette.surface0; - }; - c = { - fg = palette.text; - }; + lualine = with config.scheme.withHashtag; { + enable = true; + settings = { + options = { + theme = { + normal = { + a = { + fg = base00; + bg = base0E; }; - insert = { - a = { - fg = palette.base; - bg = palette.blue; - }; + b = { + fg = base05; + bg = base01; }; - visual = { - a = { - fg = palette.base; - bg = palette.teal; - }; - }; - replace = { - a = { - fg = palette.base; - bg = palette.red; - }; - }; - inactive = { - a = { - fg = palette.text; - bg = palette.base; - }; - b = { - fg = palette.text; - bg = palette.base; - }; - c = { - fg = palette.text; - }; + c = { + fg = base05; }; }; - component_separators = ""; - section_separators = { - left = ""; - right = ""; + insert = { + a = { + fg = base00; + bg = base0D; + }; + }; + visual = { + a = { + fg = base00; + bg = base0C; + }; + }; + replace = { + a = { + fg = base00; + bg = base08; + }; + }; + inactive = { + a = { + fg = base05; + bg = base00; + }; + b = { + fg = base05; + bg = base00; + }; + c = { + fg = base05; + }; }; }; - - sections = { - lualine_a = [ - { - __unkeyed-1 = "mode"; - separator = { - left = " "; - }; - right_padding = 2; - } - ]; - lualine_b = [ - "filename" - "branch" - ]; - lualine_c = [ "%=" ]; - lualine_x = [ ]; - lualine_y = [ - "filetype" - "progress" - ]; - lualine_z = [ - { - __unkeyed-1 = "location"; - separator = { - right = " "; - }; - left_padding = 2; - } - ]; + component_separators = ""; + section_separators = { + left = ""; + right = ""; }; - - inactive_sections = { - lualine_a = [ "filename" ]; - lualine_b = [ ]; - lualine_c = [ ]; - lualine_x = [ ]; - lualine_y = [ ]; - lualine_z = [ "location" ]; - }; - tabline = { }; - extensions = [ ]; }; + + sections = { + lualine_a = [ + { + __unkeyed-1 = "mode"; + separator = { + left = " "; + }; + right_padding = 2; + } + ]; + lualine_b = [ + "filename" + "branch" + ]; + lualine_c = [ "%=" ]; + lualine_x = [ ]; + lualine_y = [ + "filetype" + "progress" + ]; + lualine_z = [ + { + __unkeyed-1 = "location"; + separator = { + right = " "; + }; + left_padding = 2; + } + ]; + }; + + inactive_sections = { + lualine_a = [ "filename" ]; + lualine_b = [ ]; + lualine_c = [ ]; + lualine_x = [ ]; + lualine_y = [ ]; + lualine_z = [ "location" ]; + }; + tabline = { }; + extensions = [ ]; }; + }; }; }; } diff --git a/home/tiling/niri.nix b/home/tiling/niri.nix index f2870f9..2e8080f 100644 --- a/home/tiling/niri.nix +++ b/home/tiling/niri.nix @@ -5,7 +5,7 @@ }: { # https://github.com/sodiboo/niri-flake/blob/main/docs.md - programs.niri = { + programs.niri = with config.scheme.withHashtag; { # handle package systemwide package = null; @@ -16,7 +16,7 @@ gestures.hot-corners.enable = false; spawn-at-startup = [ ]; # systemd is based sorry overview = { - backdrop-color = pkgs.catppuccin.${config.catppuccin.flavor}.crust; + backdrop-color = base11; workspace-shadow.enable = false; }; input = { @@ -90,7 +90,7 @@ }; layout = { gaps = 4; - # background-color = pkgs.catppuccin.${config.catppuccin.flavor}.mantle; + # background-color = base10; background-color = "transparent"; default-column-width = { proportion = 0.5; @@ -103,16 +103,16 @@ border = { enable = true; width = 2; - active.color = pkgs.catppuccin.${config.catppuccin.flavor}.${config.catppuccin.accent}; - inactive.color = pkgs.catppuccin.${config.catppuccin.flavor}.surface0; - urgent.color = pkgs.catppuccin.${config.catppuccin.flavor}.maroon; + active.color = base09; + inactive.color = base01; + urgent.color = base12; }; focus-ring = { enable = false; width = 2; - active.color = pkgs.catppuccin.${config.catppuccin.flavor}.${config.catppuccin.accent}; - inactive.color = pkgs.catppuccin.${config.catppuccin.flavor}.surface0; - urgent.color = pkgs.catppuccin.${config.catppuccin.flavor}.maroon; + active.color = base09; + inactive.color = base01; + urgent.color = base12; }; shadow = { enable = true; @@ -120,7 +120,7 @@ offset.x = 0; offset.y = 5; softness = 30; - color = pkgs.catppuccin.${config.catppuccin.flavor}.base + "77"; + color = base00 + "77"; }; }; window-rules = [ diff --git a/home/tiling/noctalia.nix b/home/tiling/noctalia.nix index bcf9167..05f6f15 100644 --- a/home/tiling/noctalia.nix +++ b/home/tiling/noctalia.nix @@ -6,23 +6,39 @@ { programs.noctalia-shell = { enable = true; - colors = { - mPrimary = pkgs.catppuccin.${config.catppuccin.flavor}.${config.catppuccin.accent}; - mOnPrimary = pkgs.catppuccin.${config.catppuccin.flavor}.crust; - mSecondary = pkgs.catppuccin.${config.catppuccin.flavor}.subtext0; - mOnSecondary = pkgs.catppuccin.${config.catppuccin.flavor}.crust; - mTertiary = pkgs.catppuccin.${config.catppuccin.flavor}.teal; - mOnTertiary = pkgs.catppuccin.${config.catppuccin.flavor}.crust; - mError = pkgs.catppuccin.${config.catppuccin.flavor}.red; - mOnError = pkgs.catppuccin.${config.catppuccin.flavor}.crust; - mSurface = pkgs.catppuccin.${config.catppuccin.flavor}.mantle; - mOnSurface = pkgs.catppuccin.${config.catppuccin.flavor}.text; - mSurfaceVariant = pkgs.catppuccin.${config.catppuccin.flavor}.surface0; - mOnSurfaceVariant = pkgs.catppuccin.${config.catppuccin.flavor}.lavender; - mOutline = pkgs.catppuccin.${config.catppuccin.flavor}.surface2; - mShadow = pkgs.catppuccin.${config.catppuccin.flavor}.crust; - mHover = pkgs.catppuccin.${config.catppuccin.flavor}.subtext1; - mOnHover = pkgs.catppuccin.${config.catppuccin.flavor}.crust; + colors = with config.scheme.withHashtag; { + # mPrimary = base09; + # mOnPrimary = base11; + # mSecondary = base04; + # mOnSecondary = base09; + # mTertiary = base0C; + # mOnTertiary = base11; + # mError = base08; + # mOnError = base11; + # mSurface = base10; + # mOnSurface = base05; + # mSurfaceVariant = base04; + # mOnSurfaceVariant = base07; + # mOutline = base02; + # mShadow = base11; + # mHover = base04; + # mOnHover = base11; + mPrimary = base09; + mOnPrimary = base00; + mSecondary = base13; + mOnSecondary = base00; + mTertiary = base04; + mOnTertiary = base00; + mError = base12; + mOnError = base00; + mSurface = base00; + mOnSurface = base06; + mSurfaceVariant = base01; + mOnSurfaceVariant = base05; + mOutline = base02; + mShadow = base00; + mHover = base04; + mOnHover = base00; }; settings = { settingsVersion = 0; @@ -203,7 +219,7 @@ enableMultiMonitorDirectories = false; recursiveSearch = false; setWallpaperOnAllMonitors = true; - fillColor = "${pkgs.catppuccin.${config.catppuccin.flavor}.base}"; + fillColor = config.scheme.withHashtag.base00; fillMode = "crop"; hideWallpaperFilenames = true; panelPosition = "follow_bar"; diff --git a/options.nix b/options.nix new file mode 100644 index 0000000..bad751d --- /dev/null +++ b/options.nix @@ -0,0 +1,152 @@ +{ + lib, + config, + pkgs, + ... +}: +{ + options = { + colors = { + scheme = lib.mkOption { + type = lib.types.str; + default = "catppuccin-mocha"; + }; + accent = lib.mkOption { + type = lib.types.str; + default = "base09"; + }; + }; + # catppuccinUpper = { + # accent = lib.mkOption { + # type = lib.types.str; + # readOnly = true; + # default = + # builtins.substring 0 1 (lib.toUpper config.catppuccin.accent) + # + builtins.substring 1 (-1) config.catppuccin.accent; + # }; + # flavor = lib.mkOption { + # type = lib.types.str; + # readOnly = true; + # default = + # builtins.substring 0 1 (lib.toUpper config.catppuccin.flavor) + # + builtins.substring 1 (-1) config.catppuccin.flavor; + # }; + # }; + userOptions = { + name = lib.mkOption { + type = lib.types.str; + readOnly = true; + default = "Sean Kovacs"; + }; + username = lib.mkOption { + type = lib.types.str; + readOnly = true; + default = "sckova"; + }; + hostname = lib.mkOption { + type = lib.types.str; + readOnly = true; + default = config.system.name; + }; + fontSans = { + name = lib.mkOption { + type = lib.types.str; + readOnly = true; + default = "Noto Sans"; + }; + size = lib.mkOption { + type = lib.types.int; + readOnly = true; + default = 11; + }; + package = lib.mkOption { + type = lib.types.package; + readOnly = true; + default = pkgs.noto-fonts; + }; + }; + fontSerif = { + name = lib.mkOption { + type = lib.types.str; + readOnly = true; + default = "Noto Serif"; + }; + size = lib.mkOption { + type = lib.types.int; + readOnly = true; + default = 11; + }; + package = lib.mkOption { + type = lib.types.package; + readOnly = true; + default = pkgs.noto-fonts; + }; + }; + fontMono = { + name = lib.mkOption { + type = lib.types.str; + readOnly = true; + default = "NotoSansM Nerd Font Mono"; + }; + size = lib.mkOption { + type = lib.types.int; + readOnly = true; + default = 10; + }; + package = lib.mkOption { + type = lib.types.package; + readOnly = true; + default = pkgs.nerd-fonts.noto; + }; + }; + fontEmoji = { + name = lib.mkOption { + type = lib.types.str; + readOnly = true; + default = "Noto Emoji"; + }; + size = lib.mkOption { + type = lib.types.int; + readOnly = true; + default = 10; + }; + package = lib.mkOption { + type = lib.types.package; + readOnly = true; + default = pkgs.noto-fonts-color-emoji; + }; + }; + cursor = + let + attrName = "mocha" + "Peach"; + in + { + name = lib.mkOption { + type = lib.types.str; + readOnly = true; + default = "catppuccin-mocha-peach-cursors"; + }; + package = lib.mkOption { + type = lib.types.package; + readOnly = true; + default = pkgs.catppuccin-cursors.${attrName}; + }; + size = lib.mkOption { + type = lib.types.int; + readOnly = true; + default = 24; + }; + path = lib.mkOption { + type = lib.types.str; + readOnly = true; + default = "${pkgs.catppuccin-cursors.${attrName}}/share/icons"; + }; + }; + # isDark = lib.mkOption { + # type = lib.types.bool; + # readOnly = true; + # default = config.catppuccin.flavor != "latte"; + # }; + }; + }; +} diff --git a/packages/catppuccin-discord/default.nix b/packages/catppuccin-discord/default.nix deleted file mode 100644 index ec4105e..0000000 --- a/packages/catppuccin-discord/default.nix +++ /dev/null @@ -1,56 +0,0 @@ -{ - lib, - stdenv, - fetchYarnDeps, - yarn, - nodejs, - fixup-yarn-lock, - nodePackages, - catppuccin-discord-git, -}: -stdenv.mkDerivation rec { - pname = "catppuccin-discord"; - version = "unstable-${catppuccin-discord-git.rev}"; - - src = catppuccin-discord-git; - - yarnOfflineCache = fetchYarnDeps { - yarnLock = "${src}/yarn.lock"; - hash = "sha256-BhE3aKyA/LBErjWx+lbEVb/CIXhqHkXbV+9U2djIBhs="; - }; - - nativeBuildInputs = [ - yarn - nodejs - fixup-yarn-lock - nodePackages.sass - ]; - - postPatch = '' - substituteInPlace package.json \ - --replace-fail "--no-charset --no-source-map" "" - ''; - - configurePhase = '' - export HOME=$TMPDIR - yarn config --offline set yarn-offline-mirror ${yarnOfflineCache} - fixup-yarn-lock yarn.lock - yarn install --offline --frozen-lockfile --ignore-scripts --ignore-platform - ''; - - buildPhase = '' - yarn --offline release - ''; - - installPhase = '' - mkdir -p $out/share/catppuccin-discord - cp -r dist/dist/* $out/share/catppuccin-discord/ - ''; - - meta = { - description = "Soothing pastel theme for Discord"; - homepage = "https://github.com/catppuccin/discord"; - license = lib.licenses.mit; - platforms = lib.platforms.all; - }; -} diff --git a/packages/overlay.nix b/packages/overlay.nix index c1fad61..6cb0e4b 100644 --- a/packages/overlay.nix +++ b/packages/overlay.nix @@ -1,10 +1,6 @@ final: prev: { spotify-webapp = final.callPackage ./spotify-webapp { }; - catppuccin-discord = final.callPackage ./catppuccin-discord { - inherit (final) catppuccin-discord-git; - }; - openmw = prev.openmw.overrideAttrs (oldAttrs: { pname = "openmw"; src = final.openmw-git; diff --git a/system/default.nix b/system/default.nix index bb96e22..dc4e748 100755 --- a/system/default.nix +++ b/system/default.nix @@ -42,11 +42,6 @@ initrd.verbose = false; }; - catppuccin = { - enable = true; - cache.enable = true; - }; - networking.networkmanager.enable = true; hardware.bluetooth.enable = true; @@ -81,11 +76,7 @@ services = { displayManager = { - sddm = { - enable = true; - wayland.enable = true; - enableHidpi = true; - }; + cosmic-greeter.enable = true; defaultSession = "niri"; }; diff --git a/system/hosts/alien/default.nix b/system/hosts/alien/default.nix index 69579b1..49fa567 100644 --- a/system/hosts/alien/default.nix +++ b/system/hosts/alien/default.nix @@ -22,11 +22,6 @@ ''; hardware.i2c.enable = true; - catppuccin = { - accent = "blue"; - flavor = "mocha"; - }; - boot.loader.systemd-boot.consoleMode = "max"; boot.kernelPackages = pkgs.linuxPackages; diff --git a/system/hosts/peach/default.nix b/system/hosts/peach/default.nix index 2a0112d..70c24ae 100644 --- a/system/hosts/peach/default.nix +++ b/system/hosts/peach/default.nix @@ -6,11 +6,6 @@ { boot.kernelParams = [ "appledrm.show_notch=1" ]; - catppuccin = { - accent = "peach"; - flavor = "mocha"; - }; - environment.systemPackages = with pkgs; [ ddcutil ]; diff --git a/system/hosts/vm-generic/default.nix b/system/hosts/vm-generic/default.nix index 25a4278..b2183eb 100644 --- a/system/hosts/vm-generic/default.nix +++ b/system/hosts/vm-generic/default.nix @@ -1,10 +1,5 @@ { catppuccin, ... }: { - catppuccin = { - accent = "green"; - flavor = "mocha"; - }; - home-manager.users.sckova = { imports = [ catppuccin.homeModules.catppuccin ]; }; From 2e04c479c311436e2000853f69b21d752f1ad5e4 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Thu, 22 Jan 2026 12:40:17 -0500 Subject: [PATCH 221/282] switch to unstable --- flake.lock | 220 ++++++++++------------------------- flake.nix | 6 +- home/hosts/peach/default.nix | 2 +- home/tiling/niri.nix | 34 ++++++ home/tiling/noctalia.nix | 1 - system/default.nix | 2 +- 6 files changed, 100 insertions(+), 165 deletions(-) diff --git a/flake.lock b/flake.lock index 9b37ad7..accac18 100644 --- a/flake.lock +++ b/flake.lock @@ -58,11 +58,11 @@ "cachyos-kernel": { "flake": false, "locked": { - "lastModified": 1768669154, - "narHash": "sha256-n9peTL7TAv1FIsboTEE1nWvuY2HYB67Jhh8o4O/JGfY=", + "lastModified": 1768843787, + "narHash": "sha256-z5WdKQAV/P2QzGrtDfM9k6qpAZGnP5nN9rBtKjl0bHY=", "owner": "CachyOS", "repo": "linux-cachyos", - "rev": "4d7506c820f0d18fc0bbc36ecfec8ed126aee682", + "rev": "c2a381ae3d7dc148bb78d42677ec08974f3511fb", "type": "github" }, "original": { @@ -74,11 +74,11 @@ "cachyos-kernel-patches": { "flake": false, "locked": { - "lastModified": 1768668945, - "narHash": "sha256-XKQ3DHUnaa/00BfIaY6K8xCZgx0Sy2wXQbNYE/AmWSk=", + "lastModified": 1768803975, + "narHash": "sha256-VV0AMYlSIVYbJNzKymnGGSlBcPoahMxeASbVi+fTtHo=", "owner": "CachyOS", "repo": "kernel-patches", - "rev": "cba022ec33a81d60a1e2c9fe4622196e3fef2b54", + "rev": "cec2d1841baae411313742083ef2bc0b29855b4d", "type": "github" }, "original": { @@ -178,24 +178,6 @@ "type": "github" } }, - "flake-utils": { - "inputs": { - "systems": "systems" - }, - "locked": { - "lastModified": 1731533236, - "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, "fromYaml": { "flake": false, "locked": { @@ -219,52 +201,27 @@ ] }, "locked": { - "lastModified": 1768603898, - "narHash": "sha256-vRV1dWJOCpCal3PRr86wE2WTOMfAhTu6G7bSvOsryUo=", + "lastModified": 1769102673, + "narHash": "sha256-/qvRFjn1s3bIJdSKG6IpaE6ML3j9anQKUqGhmt4Qe+E=", "owner": "nix-community", "repo": "home-manager", - "rev": "2a63d0e9d2c72ac4d4150ebb242cf8d86f488c8c", + "rev": "b0491fe55680bd19be8e74847969dad9d7784658", "type": "github" }, "original": { "owner": "nix-community", - "ref": "release-25.11", "repo": "home-manager", "type": "github" } }, - "ixx": { - "inputs": { - "flake-utils": [ - "nixvim", - "nuschtosSearch", - "flake-utils" - ], - "nixpkgs": [ - "nixvim", - "nuschtosSearch", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1754860581, - "narHash": "sha256-EM0IE63OHxXCOpDHXaTyHIOk2cNvMCGPqLt/IdtVxgk=", - "owner": "NuschtOS", - "repo": "ixx", - "rev": "babfe85a876162c4acc9ab6fb4483df88fa1f281", - "type": "github" - }, - "original": { - "owner": "NuschtOS", - "ref": "v0.1.1", - "repo": "ixx", - "type": "github" - } - }, "niri": { "inputs": { - "niri-stable": "niri-stable", - "niri-unstable": "niri-unstable", + "niri-stable": [ + "niri-blur" + ], + "niri-unstable": [ + "niri-blur" + ], "nixpkgs": [ "nixpkgs" ], @@ -273,48 +230,32 @@ "xwayland-satellite-unstable": "xwayland-satellite-unstable" }, "locked": { - "lastModified": 1768669983, - "narHash": "sha256-OGl180QZ1QIirJ7Cy9Tqrgn/XEglaKGBeb5pys/sS7Y=", - "owner": "sodiboo", + "lastModified": 1769235082, + "narHash": "sha256-d+J0aA6ENaLyqbbaf9LNSKWQnX5at5NBIiFVTUoKGhc=", + "owner": "sckova", "repo": "niri-flake", - "rev": "b90da048a6ae94b49ff489bacac4a49206670c18", + "rev": "aab759b017937226563131da036392b26a7fe75c", "type": "github" }, "original": { - "owner": "sodiboo", + "owner": "sckova", "repo": "niri-flake", "type": "github" } }, - "niri-stable": { + "niri-blur": { "flake": false, "locked": { - "lastModified": 1756556321, - "narHash": "sha256-RLD89dfjN0RVO86C/Mot0T7aduCygPGaYbog566F0Qo=", - "owner": "YaLTeR", + "lastModified": 1769119684, + "narHash": "sha256-e+0PeGvsQNz8o/lhOEe6dHdaap2AMOQUC/buH91QAtI=", + "owner": "visualglitch91", "repo": "niri", - "rev": "01be0e65f4eb91a9cd624ac0b76aaeab765c7294", + "rev": "8756d0aff313617fc2af014d9bc43561532278ae", "type": "github" }, "original": { - "owner": "YaLTeR", - "ref": "v25.08", - "repo": "niri", - "type": "github" - } - }, - "niri-unstable": { - "flake": false, - "locked": { - "lastModified": 1768653140, - "narHash": "sha256-8/u6/KHghsTHb3zmw8hYbwRQIp7UgMyQyqn4zVFN1S0=", - "owner": "YaLTeR", - "repo": "niri", - "rev": "3ccb06f5644c4bcdf74ad2e4d388a13ac65207af", - "type": "github" - }, - "original": { - "owner": "YaLTeR", + "owner": "visualglitch91", + "ref": "feat/blur", "repo": "niri", "type": "github" } @@ -328,11 +269,11 @@ "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1768671945, - "narHash": "sha256-c+eJggWzQKYze1S/fQtW4xD+MD5FvCwyiLq4Ig1hIrA=", + "lastModified": 1769019098, + "narHash": "sha256-UpIgzUjr60Doko7FnJFRrvurXA2t9N4dwLW4w+I+Gek=", "owner": "xddxdd", "repo": "nix-cachyos-kernel", - "rev": "0deadd1965740f6c9eb51254156af2914e1c0d50", + "rev": "e050edf2588a62d16462af7a23f4eaaf2c9c413d", "type": "github" }, "original": { @@ -343,11 +284,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1768640357, - "narHash": "sha256-NRmPViu76stpOUahRWuR3zMKfY2dKr/qAxRlcqfyps4=", + "lastModified": 1768975286, + "narHash": "sha256-Q7rQct5wdjRX7KtKD9vccmHVXdCZuBmdj6GraFemWYY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "d157866bc6cc1a986f88f6e78a6884efeeec6187", + "rev": "203f2ddbe3a48ede1b20b3b86bc8664b311b512d", "type": "github" }, "original": { @@ -374,11 +315,11 @@ }, "nixpkgs-stable": { "locked": { - "lastModified": 1768484090, - "narHash": "sha256-HBIfbB9MF9oqQTxs/W5440mzVaYDBWU9tuX95aZ8h64=", + "lastModified": 1769089682, + "narHash": "sha256-9yA/LIuAVQq0lXelrZPjLuLVuZdm03p8tfmHhnDIkms=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "d4fa45dc2d4d32c10cb7c6b530a6b4b7d2429442", + "rev": "078d69f03934859a181e81ba987c2bb033eebfc5", "type": "github" }, "original": { @@ -390,11 +331,11 @@ }, "nixpkgs-unstable": { "locked": { - "lastModified": 1768564909, - "narHash": "sha256-Kell/SpJYVkHWMvnhqJz/8DqQg2b6PguxVWOuadbHCc=", + "lastModified": 1769018530, + "narHash": "sha256-MJ27Cy2NtBEV5tsK+YraYr2g851f3Fl1LpNHDzDX15c=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "e4bae1bd10c9c57b2cf517953ab70060a828ee6f", + "rev": "88d3861acdd3d2f0e361767018218e51810df8a1", "type": "github" }, "original": { @@ -406,16 +347,16 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1768484090, - "narHash": "sha256-HBIfbB9MF9oqQTxs/W5440mzVaYDBWU9tuX95aZ8h64=", + "lastModified": 1769018530, + "narHash": "sha256-MJ27Cy2NtBEV5tsK+YraYr2g851f3Fl1LpNHDzDX15c=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "d4fa45dc2d4d32c10cb7c6b530a6b4b7d2429442", + "rev": "88d3861acdd3d2f0e361767018218e51810df8a1", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixos-25.11", + "ref": "nixos-unstable", "repo": "nixpkgs", "type": "github" } @@ -426,20 +367,18 @@ "nixpkgs": [ "nixpkgs" ], - "nuschtosSearch": "nuschtosSearch", - "systems": "systems_2" + "systems": "systems" }, "locked": { - "lastModified": 1768486829, - "narHash": "sha256-G621Q9cB1roQxK0C6guNjmWX0CmPA5xN46VD2kTdDEk=", + "lastModified": 1768910181, + "narHash": "sha256-YRU0IHMzXluZxr0JDfq9jtblb4DV7MIB5wj2jYMFKQc=", "owner": "nix-community", "repo": "nixvim", - "rev": "503259b749971f431cb4aca7099cd60eadd7a613", + "rev": "5b138edcb2f1c3ed4b29eca3658f04f0639b98b3", "type": "github" }, "original": { "owner": "nix-community", - "ref": "nixos-25.11", "repo": "nixvim", "type": "github" } @@ -451,11 +390,11 @@ ] }, "locked": { - "lastModified": 1768675584, - "narHash": "sha256-YcQRhf1AQv0jHey5DMek5UQvkqSs+Q/yktXEm8ymaRA=", + "lastModified": 1769099505, + "narHash": "sha256-b8TRdxE4JU6zoN+e1pZoskikGSRVY9Nn/BUzZSPfDHM=", "owner": "noctalia-dev", "repo": "noctalia-shell", - "rev": "1d792b01b4cf2160000f7ef6e9388843cf5106d3", + "rev": "2cb1daf9ac9a8d8516dec2a98a1b6a0f71d5f3da", "type": "github" }, "original": { @@ -472,11 +411,11 @@ ] }, "locked": { - "lastModified": 1768678623, - "narHash": "sha256-MyrKCHIZp64SBXOKBpn2SpR/xXtXnmd+aEneLC8jzA0=", + "lastModified": 1769095486, + "narHash": "sha256-VvZZTIlojW3aybUIwzSLsztcaCl0GkYiTOql9ywmS+w=", "owner": "nix-community", "repo": "NUR", - "rev": "82551fa3d3324211956ce513c4ca50f9beea20af", + "rev": "0d452746b8efbbb4400a6e91addd4e2468dd2eba", "type": "github" }, "original": { @@ -485,37 +424,14 @@ "type": "github" } }, - "nuschtosSearch": { - "inputs": { - "flake-utils": "flake-utils", - "ixx": "ixx", - "nixpkgs": [ - "nixvim", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1761730856, - "narHash": "sha256-t1i5p/vSWwueZSC0Z2BImxx3BjoUDNKyC2mk24krcMY=", - "owner": "NuschtOS", - "repo": "search", - "rev": "e29de6db0cb3182e9aee75a3b1fd1919d995d85b", - "type": "github" - }, - "original": { - "owner": "NuschtOS", - "repo": "search", - "type": "github" - } - }, "openmw": { "flake": false, "locked": { - "lastModified": 1768594407, - "narHash": "sha256-jACd+r0ZULYrnFCjHg+I4uXmlXNB4lPNrvQt5UpSuIc=", + "lastModified": 1769032922, + "narHash": "sha256-u2oGQji+7hmvwREL+cUNRiwzl4Nlkdlz2TqigmLy2Ck=", "owner": "OpenMW", "repo": "openmw", - "rev": "74387b469455348449454fdf913af478f13bab67", + "rev": "851f69609f9e10d66c478d23ff608b42f66f7bc7", "type": "gitlab" }, "original": { @@ -554,6 +470,7 @@ "base16-discord": "base16-discord", "home-manager": "home-manager", "niri": "niri", + "niri-blur": "niri-blur", "nix-cachyos-kernel": "nix-cachyos-kernel", "nixpkgs": "nixpkgs_2", "nixpkgs-unstable": "nixpkgs-unstable", @@ -571,7 +488,7 @@ "nixpkgs": [ "nixpkgs" ], - "systems": "systems_3" + "systems": "systems_2" }, "locked": { "lastModified": 1768656845, @@ -617,21 +534,6 @@ "type": "github" } }, - "systems_3": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" - } - }, "tt-schemes": { "flake": false, "locked": { @@ -668,11 +570,11 @@ "xwayland-satellite-unstable": { "flake": false, "locked": { - "lastModified": 1768106915, - "narHash": "sha256-HlLo9zH4ULRXlmlIK948cHmdVhxyHgTHxGaoCRlW4k8=", + "lastModified": 1768765571, + "narHash": "sha256-C1JbyJ3ftogmN3vmLNfyPtnJw2wY64TiUTIhFtk1Leg=", "owner": "Supreeeme", "repo": "xwayland-satellite", - "rev": "72245e108f3b03c3c4474d2de9de2d1830849603", + "rev": "ed1cef792b4def3321ff9ab5479df09609f17a69", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index 545461c..c84bac7 100644 --- a/flake.nix +++ b/flake.nix @@ -2,7 +2,7 @@ description = "My NixOS Configuration"; inputs = { - nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.11"; + nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; nixpkgs-unstable.url = "github:NixOS/nixpkgs/nixos-unstable"; nix-cachyos-kernel.url = "github:xddxdd/nix-cachyos-kernel"; @@ -22,7 +22,7 @@ }; home-manager = { - url = "github:nix-community/home-manager/release-25.11"; + url = "github:nix-community/home-manager"; inputs.nixpkgs.follows = "nixpkgs"; }; @@ -53,7 +53,7 @@ }; nixvim = { - url = "github:nix-community/nixvim/nixos-25.11"; + url = "github:nix-community/nixvim"; inputs.nixpkgs.follows = "nixpkgs"; }; diff --git a/home/hosts/peach/default.nix b/home/hosts/peach/default.nix index 7e1ee13..1028171 100644 --- a/home/hosts/peach/default.nix +++ b/home/hosts/peach/default.nix @@ -1,7 +1,7 @@ { pkgs, config, ... }: { colors = { - scheme = "catppuccin-mocha"; + scheme = "espresso"; accent = "base09"; }; diff --git a/home/tiling/niri.nix b/home/tiling/niri.nix index 2e8080f..437dc41 100644 --- a/home/tiling/niri.nix +++ b/home/tiling/niri.nix @@ -199,6 +199,7 @@ ]; allow-when-locked = true; }; + "Shift+XF86AudioRaiseVolume" = { action.spawn = [ "wpctl" @@ -217,6 +218,39 @@ ]; allow-when-locked = true; }; + + "MouseForward" = { + action.spawn-sh = [ + "noctalia-shell ipc call volume increase" + ]; + allow-when-locked = true; + }; + "MouseBack" = { + action.spawn-sh = [ + "noctalia-shell ipc call volume decrease" + ]; + allow-when-locked = true; + }; + + "Shift+MouseForward" = { + action.spawn = [ + "wpctl" + "set-volume" + "@DEFAULT_AUDIO_SINK@" + "0.01+" + ]; + allow-when-locked = true; + }; + "Shift+MouseBack" = { + action.spawn = [ + "wpctl" + "set-volume" + "@DEFAULT_AUDIO_SINK@" + "0.01-" + ]; + allow-when-locked = true; + }; + "XF86AudioMute" = { action.spawn-sh = [ "noctalia-shell ipc call volume muteOutput" diff --git a/home/tiling/noctalia.nix b/home/tiling/noctalia.nix index 05f6f15..e68fdc6 100644 --- a/home/tiling/noctalia.nix +++ b/home/tiling/noctalia.nix @@ -45,7 +45,6 @@ brightness = { brightnessStep = 5; enforceMinimum = false; - enableDdcSupport = true; }; bar = { position = "top"; diff --git a/system/default.nix b/system/default.nix index dc4e748..a39cb19 100755 --- a/system/default.nix +++ b/system/default.nix @@ -76,7 +76,7 @@ services = { displayManager = { - cosmic-greeter.enable = true; + gdm.enable = true; defaultSession = "niri"; }; From 532b715466c0f97a408ea97f62e2c0ec5855fc18 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Sat, 24 Jan 2026 01:43:03 -0500 Subject: [PATCH 222/282] add niri blur --- flake.lock | 12 ++++++------ flake.nix | 9 ++++++++- home/tiling/niri.nix | 8 +++++++- 3 files changed, 21 insertions(+), 8 deletions(-) diff --git a/flake.lock b/flake.lock index accac18..f1e123b 100644 --- a/flake.lock +++ b/flake.lock @@ -230,11 +230,11 @@ "xwayland-satellite-unstable": "xwayland-satellite-unstable" }, "locked": { - "lastModified": 1769235082, - "narHash": "sha256-d+J0aA6ENaLyqbbaf9LNSKWQnX5at5NBIiFVTUoKGhc=", + "lastModified": 1769237340, + "narHash": "sha256-cwgQEMkroNOTY2AtYqMuHeLc5BKZQWwYc0Voiv4d7Uo=", "owner": "sckova", "repo": "niri-flake", - "rev": "aab759b017937226563131da036392b26a7fe75c", + "rev": "6711fb7ee71eb965abd4c61349f4a6d680502679", "type": "github" }, "original": { @@ -570,11 +570,11 @@ "xwayland-satellite-unstable": { "flake": false, "locked": { - "lastModified": 1768765571, - "narHash": "sha256-C1JbyJ3ftogmN3vmLNfyPtnJw2wY64TiUTIhFtk1Leg=", + "lastModified": 1769233250, + "narHash": "sha256-PIcvKgmr69UTPXuT/t3YnsxNxY5joxOGYQb0KG0Ws3E=", "owner": "Supreeeme", "repo": "xwayland-satellite", - "rev": "ed1cef792b4def3321ff9ab5479df09609f17a69", + "rev": "7af39ce41986feee45a91acbe4d417482c9b6458", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index c84bac7..6678b60 100644 --- a/flake.nix +++ b/flake.nix @@ -33,8 +33,15 @@ }; niri = { - url = "github:sodiboo/niri-flake"; + url = "github:sckova/niri-flake"; inputs.nixpkgs.follows = "nixpkgs"; + inputs.niri-stable.follows = "niri-blur"; + inputs.niri-unstable.follows = "niri-blur"; + }; + + niri-blur = { + url = "github:visualglitch91/niri/feat/blur"; + flake = false; }; noctalia = { diff --git a/home/tiling/niri.nix b/home/tiling/niri.nix index 437dc41..724e2cb 100644 --- a/home/tiling/niri.nix +++ b/home/tiling/niri.nix @@ -122,6 +122,12 @@ softness = 30; color = base00 + "77"; }; + blur = { + enable = true; + passes = 2; + radius = 4; + noise = 0.1; + }; }; window-rules = [ { @@ -132,7 +138,7 @@ bottom-right = 16.0; }; clip-to-geometry = true; - opacity = 1.0; + opacity = 0.95; } { matches = [ From 1e1f9053672e9fc54db07cd0ac3cfb31c6b57a09 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Sat, 24 Jan 2026 01:43:15 -0500 Subject: [PATCH 223/282] refactor wallpaper --- home/tiling/wallpaper.nix | 99 +++++++++------------------------------ 1 file changed, 22 insertions(+), 77 deletions(-) diff --git a/home/tiling/wallpaper.nix b/home/tiling/wallpaper.nix index 2655054..47377f7 100644 --- a/home/tiling/wallpaper.nix +++ b/home/tiling/wallpaper.nix @@ -3,67 +3,6 @@ config, ... }: -let - script = pkgs.writeShellScript "bing-wallpaper" '' - set -euo pipefail - - # Configuration - SIZE="UHD" - MARKET="en-US" - OUTPUT_PATH="''${XDG_DATA_HOME:-$HOME/.local/share}/wallpaper/daily.jpg" - DAY="0" - - # API configuration - BING="https://www.bing.com" - API="/HPImageArchive.aspx" - REQ_IMG="$BING$API?format=js&idx=$DAY&mkt=$MARKET&n=1" - - echo "Pinging Bing API..." - - # Fetch API response - API_RESP=$(${pkgs.wget}/bin/wget --quiet --output-document=- "$REQ_IMG") - if (( $? > 0 )); then - echo "Ping failed!" - exit 1 - fi - - # Extract image URL base - URL_BASE=$(echo "$API_RESP" | ${pkgs.gnugrep}/bin/grep -oP 'urlbase":"[^"]*' | ${pkgs.coreutils}/bin/cut -d '"' -f 3) - REQ_IMG_URL="$BING$URL_BASE\_$SIZE.jpg" - - # Extract title - TITLE=$(echo "$API_RESP" | ${pkgs.gnugrep}/bin/grep -oP 'title":"[^"]*' | ${pkgs.coreutils}/bin/cut -d '"' -f 3) - echo "Bing Image of the day: $TITLE" - - # Check if specific size exists, fallback to default - if ! ${pkgs.wget}/bin/wget --quiet --spider --max-redirect 0 "$REQ_IMG_URL"; then - REQ_IMG_URL="$BING$(echo "$API_RESP" | ${pkgs.gnugrep}/bin/grep -oP 'url":"[^"]*' | ${pkgs.coreutils}/bin/cut -d '"' -f 3)" - fi - - echo "$REQ_IMG_URL" - - # Extract filename - IMG_NAME="''${REQ_IMG_URL##*/}" - IMG_NAME="''${IMG_NAME#th?id=OHR.}" - IMG_NAME="''${IMG_NAME%&rf=*}" - echo "$IMG_NAME" - - # Create parent directory - ${pkgs.coreutils}/bin/mkdir -p "$(${pkgs.coreutils}/bin/dirname "$OUTPUT_PATH")" - - # Download image, overwrite if exists - ${pkgs.wget}/bin/wget --quiet --output-document="$OUTPUT_PATH" "$REQ_IMG_URL" - echo "Wallpaper saved to $OUTPUT_PATH" - - # Send notification - if command -v ${pkgs.libnotify}/bin/notify-send &> /dev/null; then - ${pkgs.libnotify}/bin/notify-send -u low -t 10000 -i preferences-desktop-wallpaper \ - "Bing Wallpaper of the Day" "$TITLE" - fi - - echo "Wallpaper downloaded and applied successfully." - ''; -in { home.packages = with pkgs; [ wpaperd @@ -73,7 +12,6 @@ in text = '' [default] mode = "center" - [any] path = "/home/${config.userOptions.username}/.local/share/wallpaper/daily.jpg" ''; @@ -91,33 +29,40 @@ in ExecStart = "${pkgs.wpaperd}/bin/wpaperd"; }; Install = { - WantedBy = [ - "niri.service" - ]; + WantedBy = [ "niri.service" ]; }; }; systemd.user.services.bing-wallpaper = { Unit = { Description = "Download and set Bing wallpaper of the day"; - After = [ - "network-online.target" - ]; - Wants = [ - "network-online.target" - ]; + After = [ "network-online.target" ]; + Wants = [ "network-online.target" ]; }; - Service = { Type = "oneshot"; - ExecStart = "${script}"; + ExecStart = pkgs.writeShellScript "bing-wallpaper" '' + OUT="''${XDG_DATA_HOME:-$HOME/.local/share}/wallpaper/daily.jpg" + + API_RESP=$(${pkgs.wget}/bin/wget -qO- "https://www.bing.com/HPImageArchive.aspx?format=js&idx=0&mkt=en-US&n=1") || exit 1 + + URL_BASE=$(echo "$API_RESP" | ${pkgs.gnugrep}/bin/grep -oP 'urlbase":"[^"]*' | cut -d '"' -f 3) + TITLE=$(echo "$API_RESP" | ${pkgs.gnugrep}/bin/grep -oP 'title":"[^"]*' | cut -d '"' -f 3) + + ${pkgs.coreutils}/bin/mkdir -p "$(dirname "$OUT")" + ${pkgs.wget}/bin/wget -qO "$OUT" "https://www.bing.com$URL_BASE\_UHD.jpg" || \ + ${pkgs.wget}/bin/wget -qO "$OUT" "https://www.bing.com$(echo "$API_RESP" | ${pkgs.gnugrep}/bin/grep -oP 'url":"[^"]*' | cut -d '"' -f 3)" + + ${pkgs.libnotify}/bin/notify-send \ + -a "Bing Wallpaper Service" \ + -u low \ + -i preferences-desktop-wallpaper \ + "$TITLE" + ''; ExecStartPost = "${pkgs.systemd}/bin/systemctl --user restart wpaperd.service"; }; - Install = { - WantedBy = [ - "niri.service" - ]; + WantedBy = [ "niri.service" ]; }; }; From 94672cc1afc32bfc95e39d56a67f185bc0d95b25 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Sat, 24 Jan 2026 12:32:53 -0500 Subject: [PATCH 224/282] changes --- home/hosts/peach/default.nix | 2 +- home/tiling/niri.nix | 4 ++-- system/default.nix | 4 +--- 3 files changed, 4 insertions(+), 6 deletions(-) diff --git a/home/hosts/peach/default.nix b/home/hosts/peach/default.nix index 1028171..7e1ee13 100644 --- a/home/hosts/peach/default.nix +++ b/home/hosts/peach/default.nix @@ -1,7 +1,7 @@ { pkgs, config, ... }: { colors = { - scheme = "espresso"; + scheme = "catppuccin-mocha"; accent = "base09"; }; diff --git a/home/tiling/niri.nix b/home/tiling/niri.nix index 724e2cb..a5c826a 100644 --- a/home/tiling/niri.nix +++ b/home/tiling/niri.nix @@ -124,7 +124,7 @@ }; blur = { enable = true; - passes = 2; + passes = 4; radius = 4; noise = 0.1; }; @@ -138,7 +138,7 @@ bottom-right = 16.0; }; clip-to-geometry = true; - opacity = 0.95; + opacity = 0.975; } { matches = [ diff --git a/system/default.nix b/system/default.nix index a39cb19..2386cb2 100755 --- a/system/default.nix +++ b/system/default.nix @@ -66,9 +66,7 @@ programs.niri = { enable = true; - package = pkgs.niri-unstable.overrideAttrs (old: { - doCheck = false; - }); + package = pkgs.niri-unstable; }; services.gnome.gnome-keyring.enable = true; security.pam.services.niri.enableGnomeKeyring = true; From 7b9bbc95a087b10b98285dcb1f56ad216f08a1e1 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Sun, 25 Jan 2026 13:41:23 -0500 Subject: [PATCH 225/282] re-add catppuccin discord --- flake.lock | 17 ++++++++ flake.nix | 7 ++++ home/apps/discord.nix | 5 ++- home/apps/vencord.nix | 2 +- packages/catppuccin-discord/default.nix | 56 +++++++++++++++++++++++++ packages/overlay.nix | 4 ++ 6 files changed, 89 insertions(+), 2 deletions(-) create mode 100644 packages/catppuccin-discord/default.nix diff --git a/flake.lock b/flake.lock index f1e123b..cd3e4db 100644 --- a/flake.lock +++ b/flake.lock @@ -87,6 +87,22 @@ "type": "github" } }, + "catppuccin-discord": { + "flake": false, + "locked": { + "lastModified": 1768037813, + "narHash": "sha256-ExRNnxvG2PSGmpuaPxzCKL6GK6ETs7Gq4Roa74HXp+s=", + "owner": "catppuccin", + "repo": "discord", + "rev": "0fcfe2e15ed91f8c5f1f3c6855f3b2024f78d86c", + "type": "github" + }, + "original": { + "owner": "catppuccin", + "repo": "discord", + "type": "github" + } + }, "flake-compat": { "locked": { "lastModified": 1761640442, @@ -468,6 +484,7 @@ "apple-silicon": "apple-silicon", "base16": "base16", "base16-discord": "base16-discord", + "catppuccin-discord": "catppuccin-discord", "home-manager": "home-manager", "niri": "niri", "niri-blur": "niri-blur", diff --git a/flake.nix b/flake.nix index 6678b60..6d0e6b4 100644 --- a/flake.nix +++ b/flake.nix @@ -73,6 +73,11 @@ url = "gitlab:OpenMW/openmw"; flake = false; }; + + catppuccin-discord = { + url = "github:catppuccin/discord"; + flake = false; + }; }; outputs = @@ -92,6 +97,7 @@ nixvim, apple-silicon, openmw, + catppuccin-discord, ... }: let @@ -135,6 +141,7 @@ nur.overlays.default (final: prev: { openmw-git = openmw; + catppuccin-discord-git = catppuccin-discord; base16-discord-git = base16-discord; }) (import ./packages/overlay.nix) diff --git a/home/apps/discord.nix b/home/apps/discord.nix index f8e3fde..c0c6683 100644 --- a/home/apps/discord.nix +++ b/home/apps/discord.nix @@ -4,9 +4,12 @@ ... }: let + catppuccin-discord = "${pkgs.catppuccin-discord}/share/catppuccin-discord/catppuccin-mocha-*.theme.css"; + mergedThemes = pkgs.runCommand "mergedConfig" { } '' mkdir -p $out - cp ${pkgs.base16-discord-git}/base16.css $out/theme.css + cp -rvf ${pkgs.base16-discord-git}/base16.css $out/base16.css + cp -rvf ${catppuccin-discord} $out ''; vesktopSettings = { diff --git a/home/apps/vencord.nix b/home/apps/vencord.nix index d34c001..eb19434 100644 --- a/home/apps/vencord.nix +++ b/home/apps/vencord.nix @@ -4,7 +4,7 @@ useQuickCss = true; themeLinks = [ ]; eagerPatches = false; - enabledThemes = [ "theme.css" ]; + enabledThemes = [ "base16.css" ]; enableReactDevtools = false; frameless = false; transparent = true; diff --git a/packages/catppuccin-discord/default.nix b/packages/catppuccin-discord/default.nix new file mode 100644 index 0000000..ec4105e --- /dev/null +++ b/packages/catppuccin-discord/default.nix @@ -0,0 +1,56 @@ +{ + lib, + stdenv, + fetchYarnDeps, + yarn, + nodejs, + fixup-yarn-lock, + nodePackages, + catppuccin-discord-git, +}: +stdenv.mkDerivation rec { + pname = "catppuccin-discord"; + version = "unstable-${catppuccin-discord-git.rev}"; + + src = catppuccin-discord-git; + + yarnOfflineCache = fetchYarnDeps { + yarnLock = "${src}/yarn.lock"; + hash = "sha256-BhE3aKyA/LBErjWx+lbEVb/CIXhqHkXbV+9U2djIBhs="; + }; + + nativeBuildInputs = [ + yarn + nodejs + fixup-yarn-lock + nodePackages.sass + ]; + + postPatch = '' + substituteInPlace package.json \ + --replace-fail "--no-charset --no-source-map" "" + ''; + + configurePhase = '' + export HOME=$TMPDIR + yarn config --offline set yarn-offline-mirror ${yarnOfflineCache} + fixup-yarn-lock yarn.lock + yarn install --offline --frozen-lockfile --ignore-scripts --ignore-platform + ''; + + buildPhase = '' + yarn --offline release + ''; + + installPhase = '' + mkdir -p $out/share/catppuccin-discord + cp -r dist/dist/* $out/share/catppuccin-discord/ + ''; + + meta = { + description = "Soothing pastel theme for Discord"; + homepage = "https://github.com/catppuccin/discord"; + license = lib.licenses.mit; + platforms = lib.platforms.all; + }; +} diff --git a/packages/overlay.nix b/packages/overlay.nix index 6cb0e4b..c1fad61 100644 --- a/packages/overlay.nix +++ b/packages/overlay.nix @@ -1,6 +1,10 @@ final: prev: { spotify-webapp = final.callPackage ./spotify-webapp { }; + catppuccin-discord = final.callPackage ./catppuccin-discord { + inherit (final) catppuccin-discord-git; + }; + openmw = prev.openmw.overrideAttrs (oldAttrs: { pname = "openmw"; src = final.openmw-git; From e31dcb28c06bfd5121178e9ae4d8f59d78bedfb9 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Sun, 25 Jan 2026 13:42:22 -0500 Subject: [PATCH 226/282] switch to limine boot --- system/default.nix | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/system/default.nix b/system/default.nix index 2386cb2..d7361c9 100755 --- a/system/default.nix +++ b/system/default.nix @@ -21,9 +21,20 @@ loader = { timeout = 3; - systemd-boot = { + limine = { enable = true; - configurationLimit = 3; + maxGenerations = 3; + extraConfig = '' + timeout: 3 + ''; + style = { + wallpapers = [ ]; + backdrop = "#1e1e2e"; + interface = { + branding = "kova's nixos!"; + brandingColor = 5; + }; + }; }; efi = { canTouchEfiVariables = false; From 6ddd24804ddf0b01922b82762f200b75968f0e59 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Mon, 26 Jan 2026 15:41:31 -0500 Subject: [PATCH 227/282] update flake --- flake.lock | 157 ++++++++++++++++++--------------- flake.nix | 18 ++-- home/tiling/niri.nix | 14 +-- system/default.nix | 2 + system/hosts/peach/default.nix | 10 +++ 5 files changed, 112 insertions(+), 89 deletions(-) diff --git a/flake.lock b/flake.lock index cd3e4db..f2fa1de 100644 --- a/flake.lock +++ b/flake.lock @@ -8,15 +8,15 @@ ] }, "locked": { - "lastModified": 1768564560, - "narHash": "sha256-YyIzhZoFVE4C5P9e0wZGjx4P9IT/OTUMFF3r6iKd3UY=", - "owner": "nix-community", + "lastModified": 1769531604, + "narHash": "sha256-/3Hk9YEI+9vA2+4AFErByc1V3LcCDNThmXYhFWlkQiU=", + "owner": "sckova", "repo": "nixos-apple-silicon", - "rev": "83a2bb509972148aa6d3f75c65103b6bfb7898af", + "rev": "acb98b0ef8b622079f2a5e4f8de9344fa7da516b", "type": "github" }, "original": { - "owner": "nix-community", + "owner": "sckova", "repo": "nixos-apple-silicon", "type": "github" } @@ -58,11 +58,11 @@ "cachyos-kernel": { "flake": false, "locked": { - "lastModified": 1768843787, - "narHash": "sha256-z5WdKQAV/P2QzGrtDfM9k6qpAZGnP5nN9rBtKjl0bHY=", + "lastModified": 1769435645, + "narHash": "sha256-xxIqw5x8U+13ya2BUcwmAW6BdpCpMhrMTn6Pd0bzocE=", "owner": "CachyOS", "repo": "linux-cachyos", - "rev": "c2a381ae3d7dc148bb78d42677ec08974f3511fb", + "rev": "e8675eeb9b48a23167b3e43f84e3be76e321935e", "type": "github" }, "original": { @@ -74,11 +74,11 @@ "cachyos-kernel-patches": { "flake": false, "locked": { - "lastModified": 1768803975, - "narHash": "sha256-VV0AMYlSIVYbJNzKymnGGSlBcPoahMxeASbVi+fTtHo=", + "lastModified": 1769420040, + "narHash": "sha256-OsO2Pi2oDE2hZoxCJ40mx9/wag9XXQ5FkcwIUcJN4Go=", "owner": "CachyOS", "repo": "kernel-patches", - "rev": "cec2d1841baae411313742083ef2bc0b29855b4d", + "rev": "d2f1d070c0303b3b2bcb71df73c623a274258e22", "type": "github" }, "original": { @@ -90,11 +90,11 @@ "catppuccin-discord": { "flake": false, "locked": { - "lastModified": 1768037813, - "narHash": "sha256-ExRNnxvG2PSGmpuaPxzCKL6GK6ETs7Gq4Roa74HXp+s=", + "lastModified": 1769446491, + "narHash": "sha256-7v1Hu6QofOyFOGnHeqHFK0JsxUxdJ9uTjI7nM7mdTsg=", "owner": "catppuccin", "repo": "discord", - "rev": "0fcfe2e15ed91f8c5f1f3c6855f3b2024f78d86c", + "rev": "f235754322320211a8646d963466fac402e5c297", "type": "github" }, "original": { @@ -160,11 +160,11 @@ ] }, "locked": { - "lastModified": 1765835352, - "narHash": "sha256-XswHlK/Qtjasvhd1nOa1e8MgZ8GS//jBoTqWtrS1Giw=", + "lastModified": 1768135262, + "narHash": "sha256-PVvu7OqHBGWN16zSi6tEmPwwHQ4rLPU9Plvs8/1TUBY=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "a34fae9c08a15ad73f295041fec82323541400a9", + "rev": "80daad04eddbbf5a4d883996a73f3f542fa437ac", "type": "github" }, "original": { @@ -217,11 +217,11 @@ ] }, "locked": { - "lastModified": 1769102673, - "narHash": "sha256-/qvRFjn1s3bIJdSKG6IpaE6ML3j9anQKUqGhmt4Qe+E=", + "lastModified": 1769450270, + "narHash": "sha256-pdVm/zJazDUAasTyHFX/Pbrlk9Upjxi0yzgn7GjGe4g=", "owner": "nix-community", "repo": "home-manager", - "rev": "b0491fe55680bd19be8e74847969dad9d7784658", + "rev": "a10c1e8f5ad2589414407f4851c221cb66270257", "type": "github" }, "original": { @@ -232,12 +232,8 @@ }, "niri": { "inputs": { - "niri-stable": [ - "niri-blur" - ], - "niri-unstable": [ - "niri-blur" - ], + "niri-stable": "niri-stable", + "niri-unstable": "niri-unstable", "nixpkgs": [ "nixpkgs" ], @@ -246,32 +242,48 @@ "xwayland-satellite-unstable": "xwayland-satellite-unstable" }, "locked": { - "lastModified": 1769237340, - "narHash": "sha256-cwgQEMkroNOTY2AtYqMuHeLc5BKZQWwYc0Voiv4d7Uo=", - "owner": "sckova", + "lastModified": 1769500166, + "narHash": "sha256-ycYlPMg7WIWAh+Ni9+g4ZGdWGIFmBjCz+hFUVQMmBS8=", + "owner": "sodiboo", "repo": "niri-flake", - "rev": "6711fb7ee71eb965abd4c61349f4a6d680502679", + "rev": "f23ab93b35dbc90e666327310767edeed622e431", "type": "github" }, "original": { - "owner": "sckova", + "owner": "sodiboo", "repo": "niri-flake", "type": "github" } }, - "niri-blur": { + "niri-stable": { "flake": false, "locked": { - "lastModified": 1769119684, - "narHash": "sha256-e+0PeGvsQNz8o/lhOEe6dHdaap2AMOQUC/buH91QAtI=", - "owner": "visualglitch91", + "lastModified": 1756556321, + "narHash": "sha256-RLD89dfjN0RVO86C/Mot0T7aduCygPGaYbog566F0Qo=", + "owner": "YaLTeR", "repo": "niri", - "rev": "8756d0aff313617fc2af014d9bc43561532278ae", + "rev": "01be0e65f4eb91a9cd624ac0b76aaeab765c7294", "type": "github" }, "original": { - "owner": "visualglitch91", - "ref": "feat/blur", + "owner": "YaLTeR", + "ref": "v25.08", + "repo": "niri", + "type": "github" + } + }, + "niri-unstable": { + "flake": false, + "locked": { + "lastModified": 1769494881, + "narHash": "sha256-tWgA1QwSbabVaBAT7eU6qmiYH19jIn5D9pQb/uUFs0c=", + "owner": "YaLTeR", + "repo": "niri", + "rev": "e1015ac92f07dba4d030358642d1920a324a8629", + "type": "github" + }, + "original": { + "owner": "YaLTeR", "repo": "niri", "type": "github" } @@ -285,11 +297,11 @@ "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1769019098, - "narHash": "sha256-UpIgzUjr60Doko7FnJFRrvurXA2t9N4dwLW4w+I+Gek=", + "lastModified": 1769501793, + "narHash": "sha256-+2S8eESJcN8N/GhsPGJ3qirU0Wi4TcnnsddduIxncRs=", "owner": "xddxdd", "repo": "nix-cachyos-kernel", - "rev": "e050edf2588a62d16462af7a23f4eaaf2c9c413d", + "rev": "0cce43fce4fc95cceb94ba1da9f1609022411cd1", "type": "github" }, "original": { @@ -300,11 +312,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1768975286, - "narHash": "sha256-Q7rQct5wdjRX7KtKD9vccmHVXdCZuBmdj6GraFemWYY=", + "lastModified": 1769434638, + "narHash": "sha256-4NVXUmdbTTZa13qX1MFCVbPxiMT1nzF7OnuRbPMk0lI=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "203f2ddbe3a48ede1b20b3b86bc8664b311b512d", + "rev": "9c2822d7024c032e66000a8b8a47e91b4e63ffc8", "type": "github" }, "original": { @@ -331,11 +343,11 @@ }, "nixpkgs-stable": { "locked": { - "lastModified": 1769089682, - "narHash": "sha256-9yA/LIuAVQq0lXelrZPjLuLVuZdm03p8tfmHhnDIkms=", + "lastModified": 1769318308, + "narHash": "sha256-Mjx6p96Pkefks3+aA+72lu1xVehb6mv2yTUUqmSet6Q=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "078d69f03934859a181e81ba987c2bb033eebfc5", + "rev": "1cd347bf3355fce6c64ab37d3967b4a2cb4b878c", "type": "github" }, "original": { @@ -347,27 +359,27 @@ }, "nixpkgs-unstable": { "locked": { - "lastModified": 1769018530, - "narHash": "sha256-MJ27Cy2NtBEV5tsK+YraYr2g851f3Fl1LpNHDzDX15c=", + "lastModified": 1769529101, + "narHash": "sha256-D9kq6f/Pk8fBX3i/pf8LjgaK935XpBmr/5NZD0Hb7eQ=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "88d3861acdd3d2f0e361767018218e51810df8a1", + "rev": "c066ab53a57f471734a532c64b9f1259a6bb953c", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixos-unstable", + "ref": "master", "repo": "nixpkgs", "type": "github" } }, "nixpkgs_2": { "locked": { - "lastModified": 1769018530, - "narHash": "sha256-MJ27Cy2NtBEV5tsK+YraYr2g851f3Fl1LpNHDzDX15c=", + "lastModified": 1769170682, + "narHash": "sha256-oMmN1lVQU0F0W2k6OI3bgdzp2YOHWYUAw79qzDSjenU=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "88d3861acdd3d2f0e361767018218e51810df8a1", + "rev": "c5296fdd05cfa2c187990dd909864da9658df755", "type": "github" }, "original": { @@ -386,11 +398,11 @@ "systems": "systems" }, "locked": { - "lastModified": 1768910181, - "narHash": "sha256-YRU0IHMzXluZxr0JDfq9jtblb4DV7MIB5wj2jYMFKQc=", + "lastModified": 1769418848, + "narHash": "sha256-jLSg9IkglcIw64kU1utXxsxXhiVdD45dkh9ZJKaFQ7U=", "owner": "nix-community", "repo": "nixvim", - "rev": "5b138edcb2f1c3ed4b29eca3658f04f0639b98b3", + "rev": "c19a0517ddeed4c1548611e42e187048fc2e5dcf", "type": "github" }, "original": { @@ -406,11 +418,11 @@ ] }, "locked": { - "lastModified": 1769099505, - "narHash": "sha256-b8TRdxE4JU6zoN+e1pZoskikGSRVY9Nn/BUzZSPfDHM=", + "lastModified": 1769526114, + "narHash": "sha256-Snq5+73FxHeCtx78unS7g/921tDhRjiPkAIuiJgLe5s=", "owner": "noctalia-dev", "repo": "noctalia-shell", - "rev": "2cb1daf9ac9a8d8516dec2a98a1b6a0f71d5f3da", + "rev": "0b983e2a94db2ef0cc3c0b6926ffde7742cfbdc4", "type": "github" }, "original": { @@ -427,11 +439,11 @@ ] }, "locked": { - "lastModified": 1769095486, - "narHash": "sha256-VvZZTIlojW3aybUIwzSLsztcaCl0GkYiTOql9ywmS+w=", + "lastModified": 1769527653, + "narHash": "sha256-d/i6dRAmrKex+i8dBcrWRcn2ca+vmmHyESDD40eOAQA=", "owner": "nix-community", "repo": "NUR", - "rev": "0d452746b8efbbb4400a6e91addd4e2468dd2eba", + "rev": "a93fa977b8cecb4280b444d63d30abab82e61fa3", "type": "github" }, "original": { @@ -443,11 +455,11 @@ "openmw": { "flake": false, "locked": { - "lastModified": 1769032922, - "narHash": "sha256-u2oGQji+7hmvwREL+cUNRiwzl4Nlkdlz2TqigmLy2Ck=", + "lastModified": 1769529403, + "narHash": "sha256-ZOQlIFEH2Qm8SanQj1ip4jUBijf6lkgBmCIA5vLLxbw=", "owner": "OpenMW", "repo": "openmw", - "rev": "851f69609f9e10d66c478d23ff608b42f66f7bc7", + "rev": "74ed52411439008723343ba8b090888965a074fb", "type": "gitlab" }, "original": { @@ -487,7 +499,6 @@ "catppuccin-discord": "catppuccin-discord", "home-manager": "home-manager", "niri": "niri", - "niri-blur": "niri-blur", "nix-cachyos-kernel": "nix-cachyos-kernel", "nixpkgs": "nixpkgs_2", "nixpkgs-unstable": "nixpkgs-unstable", @@ -508,11 +519,11 @@ "systems": "systems_2" }, "locked": { - "lastModified": 1768656845, - "narHash": "sha256-xNlXMyn7yc3Z/NOsz4NchO7gWFwsoCvtJ26pys4s2/M=", + "lastModified": 1769316930, + "narHash": "sha256-4EOGHYLpIscwr+6drHE28Qj7NDjjowp2Vd8QkXjdBBE=", "owner": "Gerg-L", "repo": "spicetify-nix", - "rev": "8bd7e49d5ac62756bee6e4b02221fb96bfc3c99a", + "rev": "b2ce438f386943ef611e196a178af2d79042903b", "type": "github" }, "original": { @@ -587,11 +598,11 @@ "xwayland-satellite-unstable": { "flake": false, "locked": { - "lastModified": 1769233250, - "narHash": "sha256-PIcvKgmr69UTPXuT/t3YnsxNxY5joxOGYQb0KG0Ws3E=", + "lastModified": 1769356222, + "narHash": "sha256-Q0BVubV9ZnmLs506EhBSPglM+YJK56wsQNbeecvWPUo=", "owner": "Supreeeme", "repo": "xwayland-satellite", - "rev": "7af39ce41986feee45a91acbe4d417482c9b6458", + "rev": "cf14278b92b0a91d01587f09b4b00ea655ae24e6", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index 6d0e6b4..d590f56 100644 --- a/flake.nix +++ b/flake.nix @@ -3,7 +3,7 @@ inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; - nixpkgs-unstable.url = "github:NixOS/nixpkgs/nixos-unstable"; + nixpkgs-unstable.url = "github:NixOS/nixpkgs/master"; nix-cachyos-kernel.url = "github:xddxdd/nix-cachyos-kernel"; @@ -33,16 +33,16 @@ }; niri = { - url = "github:sckova/niri-flake"; + url = "github:sodiboo/niri-flake"; inputs.nixpkgs.follows = "nixpkgs"; - inputs.niri-stable.follows = "niri-blur"; - inputs.niri-unstable.follows = "niri-blur"; + # inputs.niri-stable.follows = "niri-blur"; + # inputs.niri-unstable.follows = "niri-blur"; }; - niri-blur = { - url = "github:visualglitch91/niri/feat/blur"; - flake = false; - }; + # niri-blur = { + # url = "github:visualglitch91/niri/feat/blur"; + # flake = false; + # }; noctalia = { url = "github:noctalia-dev/noctalia-shell"; @@ -65,7 +65,7 @@ }; apple-silicon = { - url = "github:nix-community/nixos-apple-silicon"; + url = "github:sckova/nixos-apple-silicon"; inputs.nixpkgs.follows = "nixpkgs"; }; diff --git a/home/tiling/niri.nix b/home/tiling/niri.nix index a5c826a..038c451 100644 --- a/home/tiling/niri.nix +++ b/home/tiling/niri.nix @@ -122,12 +122,12 @@ softness = 30; color = base00 + "77"; }; - blur = { - enable = true; - passes = 4; - radius = 4; - noise = 0.1; - }; + # blur = { + # enable = true; + # passes = 4; + # radius = 4; + # noise = 0.1; + # }; }; window-rules = [ { @@ -138,7 +138,7 @@ bottom-right = 16.0; }; clip-to-geometry = true; - opacity = 0.975; + opacity = 1.0; } { matches = [ diff --git a/system/default.nix b/system/default.nix index d7361c9..4ea308f 100755 --- a/system/default.nix +++ b/system/default.nix @@ -99,6 +99,8 @@ }; udisks2.enable = true; gvfs.enable = true; + + upower.enable = true; }; environment = { diff --git a/system/hosts/peach/default.nix b/system/hosts/peach/default.nix index 70c24ae..219ae68 100644 --- a/system/hosts/peach/default.nix +++ b/system/hosts/peach/default.nix @@ -20,6 +20,16 @@ ''; hardware.i2c.enable = true; + virtualisation.docker = { + enable = true; + # Use the rootless mode - run Docker daemon as non-root user + rootless = { + enable = true; + setSocketVariable = true; + }; + }; + users.users.sckova.extraGroups = [ "docker" ]; + hardware.asahi = { enable = true; setupAsahiSound = true; From 4071f0e14179dc8156b86158f2095dc9a36a9867 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Wed, 28 Jan 2026 00:04:13 -0500 Subject: [PATCH 228/282] updates for peach reinstall --- hardware/peach/default.nix | 46 ++++++++++++++++++++++++++++++---- home/tiling/noctalia.nix | 2 +- system/hosts/peach/default.nix | 14 ++++------- 3 files changed, 47 insertions(+), 15 deletions(-) diff --git a/hardware/peach/default.nix b/hardware/peach/default.nix index 5b49211..549cdc3 100644 --- a/hardware/peach/default.nix +++ b/hardware/peach/default.nix @@ -2,24 +2,56 @@ # and may be overwritten by future invocations. Please make changes # to /etc/nixos/configuration.nix instead. { + config, lib, + pkgs, modulesPath, ... }: + { imports = [ (modulesPath + "/installer/scan/not-detected.nix") ]; - boot.initrd.availableKernelModules = [ "sdhci_pci" ]; + boot.initrd.availableKernelModules = [ + "usb_storage" + "sdhci_pci" + ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ ]; + boot.extraModulePackages = [ ]; fileSystems."/" = { - device = "/dev/disk/by-label/NixOS"; - fsType = "ext4"; + device = "/dev/disk/by-uuid/1fd2c838-5fc7-4d52-ab92-9d9de545021b"; + fsType = "btrfs"; + options = [ + "subvol=root" + "compress=zstd" + ]; + }; + + fileSystems."/home" = { + device = "/dev/disk/by-uuid/1fd2c838-5fc7-4d52-ab92-9d9de545021b"; + fsType = "btrfs"; + options = [ + "subvol=home" + "compress=zstd" + ]; + }; + + fileSystems."/nix" = { + device = "/dev/disk/by-uuid/1fd2c838-5fc7-4d52-ab92-9d9de545021b"; + fsType = "btrfs"; + options = [ + "subvol=nix" + "compress=zstd" + "noatime" + ]; }; fileSystems."/boot" = { - device = "/dev/disk/by-label/EFI"; + device = "/dev/disk/by-uuid/4039-19F6"; fsType = "vfat"; options = [ "fmask=0022" @@ -27,7 +59,11 @@ ]; }; - swapDevices = [ ]; + swapDevices = [ + { + device = "/dev/disk/by-uuid/7abc3359-f379-4f7f-9da1-77a81ba748e4"; + } + ]; nixpkgs.hostPlatform = lib.mkDefault "aarch64-linux"; } diff --git a/home/tiling/noctalia.nix b/home/tiling/noctalia.nix index e68fdc6..6bd281d 100644 --- a/home/tiling/noctalia.nix +++ b/home/tiling/noctalia.nix @@ -32,7 +32,7 @@ mError = base12; mOnError = base00; mSurface = base00; - mOnSurface = base06; + mOnSurface = base05; mSurfaceVariant = base01; mOnSurfaceVariant = base05; mOutline = base02; diff --git a/system/hosts/peach/default.nix b/system/hosts/peach/default.nix index 219ae68..e355c70 100644 --- a/system/hosts/peach/default.nix +++ b/system/hosts/peach/default.nix @@ -37,19 +37,15 @@ peripheralFirmwareDirectory = pkgs.requireFile { name = "firmware"; hashMode = "recursive"; - hash = "sha256-lw8tJHRUSBwqu82ys4rZIYH0sEb+dDjQkXg1wt1afZI="; + hash = "sha256-ooBrgsZ+B6Fmoy6Ze5ppP9oKQzMIk1orvx+ldxY6bQs="; message = '' - nix-store --add-fixed sha256 --recursive ./firmware + you need to add the firmware to the store: + mkdir system/hosts/peach/firmware + sudo cp -r /mnt/boot/asahi/{all_firmware.tar.gz,kernelcache*} system/hosts/peach/firmware + nix-store --add-fixed sha256 --recursive ./system/hosts/peach/firmware ''; }; }; - swapDevices = [ - { - device = "/swapfile"; - size = 8000; # 8GB - } - ]; - security.sudo.wheelNeedsPassword = false; } From 36a20f5a6ff1f8d28c74d17407624bd5a50d97d0 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Wed, 28 Jan 2026 08:46:52 -0500 Subject: [PATCH 229/282] update flake --- flake.lock | 84 ++++++++++++++-------------------- flake.nix | 7 ++- home/terminal/kitty.nix | 2 +- home/tiling/noctalia.nix | 18 +------- system/hosts/alien/default.nix | 6 +-- 5 files changed, 45 insertions(+), 72 deletions(-) diff --git a/flake.lock b/flake.lock index f2fa1de..3e265e3 100644 --- a/flake.lock +++ b/flake.lock @@ -217,11 +217,11 @@ ] }, "locked": { - "lastModified": 1769450270, - "narHash": "sha256-pdVm/zJazDUAasTyHFX/Pbrlk9Upjxi0yzgn7GjGe4g=", + "lastModified": 1769579508, + "narHash": "sha256-EE2bs7xFrC64qrj0N2zP6E6e/nmhcdw6v/grdYi+BiY=", "owner": "nix-community", "repo": "home-manager", - "rev": "a10c1e8f5ad2589414407f4851c221cb66270257", + "rev": "eec72f127831326b042d1f35003767a4ab6a9516", "type": "github" }, "original": { @@ -242,11 +242,11 @@ "xwayland-satellite-unstable": "xwayland-satellite-unstable" }, "locked": { - "lastModified": 1769500166, - "narHash": "sha256-ycYlPMg7WIWAh+Ni9+g4ZGdWGIFmBjCz+hFUVQMmBS8=", + "lastModified": 1769582851, + "narHash": "sha256-T2a9J3iZ+p+dSmrd8mGgehvXrzwnFlMF22BmBqYHkVg=", "owner": "sodiboo", "repo": "niri-flake", - "rev": "f23ab93b35dbc90e666327310767edeed622e431", + "rev": "8942525e9d5c79f6b47cffef4992454c9b3f9b69", "type": "github" }, "original": { @@ -275,11 +275,11 @@ "niri-unstable": { "flake": false, "locked": { - "lastModified": 1769494881, - "narHash": "sha256-tWgA1QwSbabVaBAT7eU6qmiYH19jIn5D9pQb/uUFs0c=", + "lastModified": 1769577126, + "narHash": "sha256-v9vz9Rj4MGwPuhGELdvpRKl2HH+xvkgat6VwL0L86Fg=", "owner": "YaLTeR", "repo": "niri", - "rev": "e1015ac92f07dba4d030358642d1920a324a8629", + "rev": "f30db163b5748e8cf95c05aba77d0d3736f40543", "type": "github" }, "original": { @@ -294,14 +294,16 @@ "cachyos-kernel-patches": "cachyos-kernel-patches", "flake-compat": "flake-compat_2", "flake-parts": "flake-parts", - "nixpkgs": "nixpkgs" + "nixpkgs": [ + "nixpkgs" + ] }, "locked": { - "lastModified": 1769501793, - "narHash": "sha256-+2S8eESJcN8N/GhsPGJ3qirU0Wi4TcnnsddduIxncRs=", + "lastModified": 1769536613, + "narHash": "sha256-v1XqNPLHBb2rKiquxwDQU7lMmFbXVgYPDC8LMWcvVds=", "owner": "xddxdd", "repo": "nix-cachyos-kernel", - "rev": "0cce43fce4fc95cceb94ba1da9f1609022411cd1", + "rev": "9e9058ae652c374a26242bd034d82ed0c04ec53c", "type": "github" }, "original": { @@ -312,16 +314,16 @@ }, "nixpkgs": { "locked": { - "lastModified": 1769434638, - "narHash": "sha256-4NVXUmdbTTZa13qX1MFCVbPxiMT1nzF7OnuRbPMk0lI=", + "lastModified": 1769461804, + "narHash": "sha256-msG8SU5WsBUfVVa/9RPLaymvi5bI8edTavbIq3vRlhI=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "9c2822d7024c032e66000a8b8a47e91b4e63ffc8", + "rev": "bfc1b8a4574108ceef22f02bafcf6611380c100d", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixos-unstable-small", + "ref": "nixos-unstable", "repo": "nixpkgs", "type": "github" } @@ -359,11 +361,11 @@ }, "nixpkgs-unstable": { "locked": { - "lastModified": 1769529101, - "narHash": "sha256-D9kq6f/Pk8fBX3i/pf8LjgaK935XpBmr/5NZD0Hb7eQ=", + "lastModified": 1769606632, + "narHash": "sha256-MXgh/DAEtyEoHxSqbVm/jFHuB10xkUiHk059dqvHcgw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "c066ab53a57f471734a532c64b9f1259a6bb953c", + "rev": "9bf1446389d0132a7faf259929b4a8321337b9e8", "type": "github" }, "original": { @@ -373,22 +375,6 @@ "type": "github" } }, - "nixpkgs_2": { - "locked": { - "lastModified": 1769170682, - "narHash": "sha256-oMmN1lVQU0F0W2k6OI3bgdzp2YOHWYUAw79qzDSjenU=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "c5296fdd05cfa2c187990dd909864da9658df755", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, "nixvim": { "inputs": { "flake-parts": "flake-parts_2", @@ -398,11 +384,11 @@ "systems": "systems" }, "locked": { - "lastModified": 1769418848, - "narHash": "sha256-jLSg9IkglcIw64kU1utXxsxXhiVdD45dkh9ZJKaFQ7U=", + "lastModified": 1769537308, + "narHash": "sha256-N7famD4s2hiDIicr9mJWhUj8l9EULB60+1QN/S+UjeM=", "owner": "nix-community", "repo": "nixvim", - "rev": "c19a0517ddeed4c1548611e42e187048fc2e5dcf", + "rev": "7addac6d111837217c16762968a9042eac703f7e", "type": "github" }, "original": { @@ -418,11 +404,11 @@ ] }, "locked": { - "lastModified": 1769526114, - "narHash": "sha256-Snq5+73FxHeCtx78unS7g/921tDhRjiPkAIuiJgLe5s=", + "lastModified": 1769607092, + "narHash": "sha256-P0KGVjKtN+hkZWskpxr2iXWalPb0SKAgRVyMFZxdxf0=", "owner": "noctalia-dev", "repo": "noctalia-shell", - "rev": "0b983e2a94db2ef0cc3c0b6926ffde7742cfbdc4", + "rev": "b2b16ecdda1bc04001a7c714bf8124160a86ddfc", "type": "github" }, "original": { @@ -439,11 +425,11 @@ ] }, "locked": { - "lastModified": 1769527653, - "narHash": "sha256-d/i6dRAmrKex+i8dBcrWRcn2ca+vmmHyESDD40eOAQA=", + "lastModified": 1769604042, + "narHash": "sha256-KQGbmKSY3tA4S8qFN76xd+3cbM0mAtPgoUVbjWrprcs=", "owner": "nix-community", "repo": "NUR", - "rev": "a93fa977b8cecb4280b444d63d30abab82e61fa3", + "rev": "92f5f3f18a365341dd424314a80253f5ede071e4", "type": "github" }, "original": { @@ -455,11 +441,11 @@ "openmw": { "flake": false, "locked": { - "lastModified": 1769529403, - "narHash": "sha256-ZOQlIFEH2Qm8SanQj1ip4jUBijf6lkgBmCIA5vLLxbw=", + "lastModified": 1769557891, + "narHash": "sha256-uGst41jGvP3EMpDvCl7aTr3U23w/Q+jTP3ueZIDM50Q=", "owner": "OpenMW", "repo": "openmw", - "rev": "74ed52411439008723343ba8b090888965a074fb", + "rev": "fd91d03e487bf37bfe2d27cf8d8f2a5e68c9adad", "type": "gitlab" }, "original": { @@ -500,7 +486,7 @@ "home-manager": "home-manager", "niri": "niri", "nix-cachyos-kernel": "nix-cachyos-kernel", - "nixpkgs": "nixpkgs_2", + "nixpkgs": "nixpkgs", "nixpkgs-unstable": "nixpkgs-unstable", "nixvim": "nixvim", "noctalia": "noctalia", diff --git a/flake.nix b/flake.nix index d590f56..abc54bf 100644 --- a/flake.nix +++ b/flake.nix @@ -5,7 +5,10 @@ nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; nixpkgs-unstable.url = "github:NixOS/nixpkgs/master"; - nix-cachyos-kernel.url = "github:xddxdd/nix-cachyos-kernel"; + nix-cachyos-kernel = { + url = "github:xddxdd/nix-cachyos-kernel"; + inputs.nixpkgs.follows = "nixpkgs"; + }; base16 = { url = "github:SenchoPens/base16.nix"; @@ -296,7 +299,7 @@ hostname = "alien"; system = "x86_64-linux"; extraModules = [ - { nixpkgs.overlays = [ nix-cachyos-kernel.overlays.default ]; } + { nixpkgs.overlays = [ nix-cachyos-kernel.overlays.pinned ]; } ]; } // nixpkgs.lib.genAttrs supportedSystems ( diff --git a/home/terminal/kitty.nix b/home/terminal/kitty.nix index 22c8354..9d99eda 100644 --- a/home/terminal/kitty.nix +++ b/home/terminal/kitty.nix @@ -115,7 +115,7 @@ in scrollback_lines = 10000; enable_audio_bell = false; update_check_interval = 0; - wheel_scroll_multiplier = 5.0; + wheel_scroll_multiplier = 10.0; confirm_os_window_close = 0; window_padding_width = 4; tab_bar_min_tabs = 2; diff --git a/home/tiling/noctalia.nix b/home/tiling/noctalia.nix index 6bd281d..3ad65cf 100644 --- a/home/tiling/noctalia.nix +++ b/home/tiling/noctalia.nix @@ -7,22 +7,6 @@ programs.noctalia-shell = { enable = true; colors = with config.scheme.withHashtag; { - # mPrimary = base09; - # mOnPrimary = base11; - # mSecondary = base04; - # mOnSecondary = base09; - # mTertiary = base0C; - # mOnTertiary = base11; - # mError = base08; - # mOnError = base11; - # mSurface = base10; - # mOnSurface = base05; - # mSurfaceVariant = base04; - # mOnSurfaceVariant = base07; - # mOutline = base02; - # mShadow = base11; - # mHover = base04; - # mOnHover = base11; mPrimary = base09; mOnPrimary = base00; mSecondary = base13; @@ -97,7 +81,7 @@ hideMode = "hidden"; hideWhenIdle = false; id = "MediaMini"; - maxWidth = 300; + maxWidth = 380; scrollingMode = "hover"; showAlbumArt = false; showArtistFirst = false; diff --git a/system/hosts/alien/default.nix b/system/hosts/alien/default.nix index 49fa567..46ed96c 100644 --- a/system/hosts/alien/default.nix +++ b/system/hosts/alien/default.nix @@ -23,11 +23,11 @@ hardware.i2c.enable = true; boot.loader.systemd-boot.consoleMode = "max"; - boot.kernelPackages = pkgs.linuxPackages; + # boot.kernelPackages = pkgs.linuxPackages; # let's use the CachyOS kernel instead! - # boot.kernelPackages = pkgs.cachyosKernels.linuxPackages-cachyos-lts; - # hardware.nvidia.package = config.boot.kernelPackages.nvidiaPackages.stable; + boot.kernelPackages = pkgs.cachyosKernels.linuxPackages-cachyos-latest; + hardware.nvidia.package = config.boot.kernelPackages.nvidiaPackages.latest; programs = { gamescope = { From 127b4e5535e0cc488cdae5a0659dec001513b5f0 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Thu, 29 Jan 2026 08:52:21 -0500 Subject: [PATCH 230/282] changes --- flake.lock | 17 +++++++++------- flake.nix | 2 ++ home/apps/librewolf.nix | 22 ++++++++++++++++++++ home/apps/vencord.nix | 4 ++-- home/games/morrowind.nix | 7 ++++++- home/terminal/fish.nix | 9 +++------ home/terminal/kitty.nix | 3 ++- home/tiling/niri.nix | 14 +++++++++---- home/tiling/noctalia.nix | 6 +++--- system/default.nix | 37 +++++++++++++++++++--------------- system/hosts/alien/default.nix | 5 ++++- system/hosts/peach/default.nix | 32 +++++++++++++++++------------ 12 files changed, 104 insertions(+), 54 deletions(-) diff --git a/flake.lock b/flake.lock index 3e265e3..f63febd 100644 --- a/flake.lock +++ b/flake.lock @@ -237,16 +237,18 @@ "nixpkgs": [ "nixpkgs" ], - "nixpkgs-stable": "nixpkgs-stable", + "nixpkgs-stable": [ + "nixpkgs-stable" + ], "xwayland-satellite-stable": "xwayland-satellite-stable", "xwayland-satellite-unstable": "xwayland-satellite-unstable" }, "locked": { - "lastModified": 1769582851, - "narHash": "sha256-T2a9J3iZ+p+dSmrd8mGgehvXrzwnFlMF22BmBqYHkVg=", + "lastModified": 1769647464, + "narHash": "sha256-SDZms/fjrXRgL+QA+RfvTMClhPGfPn1TnIdNwoujEo4=", "owner": "sodiboo", "repo": "niri-flake", - "rev": "8942525e9d5c79f6b47cffef4992454c9b3f9b69", + "rev": "e3d4bf00f7d40fca03fecab5c7a46277a6eb9fed", "type": "github" }, "original": { @@ -345,11 +347,11 @@ }, "nixpkgs-stable": { "locked": { - "lastModified": 1769318308, - "narHash": "sha256-Mjx6p96Pkefks3+aA+72lu1xVehb6mv2yTUUqmSet6Q=", + "lastModified": 1769598131, + "narHash": "sha256-e7VO/kGLgRMbWtpBqdWl0uFg8Y2XWFMdz0uUJvlML8o=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "1cd347bf3355fce6c64ab37d3967b4a2cb4b878c", + "rev": "fa83fd837f3098e3e678e6cf017b2b36102c7211", "type": "github" }, "original": { @@ -487,6 +489,7 @@ "niri": "niri", "nix-cachyos-kernel": "nix-cachyos-kernel", "nixpkgs": "nixpkgs", + "nixpkgs-stable": "nixpkgs-stable", "nixpkgs-unstable": "nixpkgs-unstable", "nixvim": "nixvim", "noctalia": "noctalia", diff --git a/flake.nix b/flake.nix index abc54bf..7dc7eb7 100644 --- a/flake.nix +++ b/flake.nix @@ -3,6 +3,7 @@ inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; + nixpkgs-stable.url = "github:NixOS/nixpkgs/nixos-25.11"; nixpkgs-unstable.url = "github:NixOS/nixpkgs/master"; nix-cachyos-kernel = { @@ -38,6 +39,7 @@ niri = { url = "github:sodiboo/niri-flake"; inputs.nixpkgs.follows = "nixpkgs"; + inputs.nixpkgs-stable.follows = "nixpkgs-stable"; # inputs.niri-stable.follows = "niri-blur"; # inputs.niri-unstable.follows = "niri-blur"; }; diff --git a/home/apps/librewolf.nix b/home/apps/librewolf.nix index 19b8f89..096b627 100644 --- a/home/apps/librewolf.nix +++ b/home/apps/librewolf.nix @@ -288,6 +288,28 @@ definedAliases = [ "@np" ]; }; + nix-options = { + name = "Nix Options"; + urls = [ + { + template = "https://search.nixos.org/options"; + params = [ + { + name = "type"; + value = "packages"; + } + { + name = "query"; + value = "{searchTerms}"; + } + ]; + } + ]; + + icon = nixIcon; + definedAliases = [ "@no" ]; + }; + nixos-wiki = { name = "NixOS Wiki"; urls = [ { template = "https://wiki.nixos.org/w/index.php?search={searchTerms}"; } ]; diff --git a/home/apps/vencord.nix b/home/apps/vencord.nix index eb19434..39f7123 100644 --- a/home/apps/vencord.nix +++ b/home/apps/vencord.nix @@ -198,8 +198,8 @@ ShowAllMessageButtons.enabled = false; ShowConnections.enabled = false; ShowHiddenChannels = { - enabled = false; - showMode = 0; + enabled = true; + showMode = 1; hideUnreads = true; defaultAllowedUsersAndRolesDropdownState = true; }; diff --git a/home/games/morrowind.nix b/home/games/morrowind.nix index 663b43d..5a006dc 100644 --- a/home/games/morrowind.nix +++ b/home/games/morrowind.nix @@ -4,5 +4,10 @@ ... }: { - home.packages = with pkgs; [ openmw ]; + home = { + packages = with pkgs; [ openmw ]; + sessionVariables = { + SDL_VIDEO_DRIVER = "wayland"; + }; + }; } diff --git a/home/terminal/fish.nix b/home/terminal/fish.nix index 0639fa0..03f177e 100644 --- a/home/terminal/fish.nix +++ b/home/terminal/fish.nix @@ -1,13 +1,9 @@ -{ - config, - pkgs, - lib, - ... -}: +{ pkgs, ... }: { home.packages = with pkgs; [ kdePackages.qttools eza + pigz ]; programs.fish = { @@ -15,6 +11,7 @@ shellAliases = { ssh = "kitty-ssh"; cat = "bat"; + gzip = "pigz"; ls = "eza"; gl = "git log"; ga = "git add -v ."; diff --git a/home/terminal/kitty.nix b/home/terminal/kitty.nix index 9d99eda..cd36c36 100644 --- a/home/terminal/kitty.nix +++ b/home/terminal/kitty.nix @@ -113,9 +113,10 @@ in settings = { include = "/home/${config.userOptions.username}/.config/kitty/themes/kitty-colors.conf"; scrollback_lines = 10000; + wheel_scroll_multiplier = 5.0; + touch_scroll_multiplier = 5.0; enable_audio_bell = false; update_check_interval = 0; - wheel_scroll_multiplier = 10.0; confirm_os_window_close = 0; window_padding_width = 4; tab_bar_min_tabs = 2; diff --git a/home/tiling/niri.nix b/home/tiling/niri.nix index 038c451..842208b 100644 --- a/home/tiling/niri.nix +++ b/home/tiling/niri.nix @@ -132,10 +132,10 @@ window-rules = [ { geometry-corner-radius = { - top-left = 16.0; - top-right = 16.0; - bottom-left = 16.0; - bottom-right = 16.0; + top-left = 8.0; + top-right = 8.0; + bottom-left = 8.0; + bottom-right = 8.0; }; clip-to-geometry = true; opacity = 1.0; @@ -495,6 +495,12 @@ "Mod+Shift+Minus".action.set-window-height = "-10%"; "Mod+Shift+Equal".action.set-window-height = "+10%"; + "Mod+Ctrl+Minus".action.set-column-width = "-1%"; + "Mod+Ctrl+Equal".action.set-column-width = "+1%"; + + "Mod+Ctrl+Shift+Minus".action.set-window-height = "-1%"; + "Mod+Ctrl+Shift+Equal".action.set-window-height = "+1%"; + "Mod+V".action.toggle-window-floating = { }; "Mod+Shift+V".action.switch-focus-between-floating-and-tiling = { }; diff --git a/home/tiling/noctalia.nix b/home/tiling/noctalia.nix index 3ad65cf..58cdd25 100644 --- a/home/tiling/noctalia.nix +++ b/home/tiling/noctalia.nix @@ -15,7 +15,7 @@ mOnTertiary = base00; mError = base12; mOnError = base00; - mSurface = base00; + mSurface = "#000000"; mOnSurface = base05; mSurfaceVariant = base01; mOnSurfaceVariant = base05; @@ -35,7 +35,7 @@ backgroundOpacity = 1; monitors = [ ]; density = "spacious"; - showCapsule = true; + showCapsule = false; capsuleOpacity = 1; floating = false; marginVertical = 0.25; @@ -68,7 +68,7 @@ colorizeIcons = false; hideMode = "hidden"; id = "ActiveWindow"; - maxWidth = 500; + maxWidth = 600; scrollingMode = "always"; showIcon = true; useFixedWidth = false; diff --git a/system/default.nix b/system/default.nix index 4ea308f..998077b 100755 --- a/system/default.nix +++ b/system/default.nix @@ -17,28 +17,33 @@ boot = { plymouth = { enable = true; + logo = "${pkgs.nixos-icons}/share/icons/hicolor/64x64/apps/nix-snowflake-white.png"; }; loader = { timeout = 3; - limine = { + systemd-boot = { enable = true; - maxGenerations = 3; - extraConfig = '' - timeout: 3 - ''; - style = { - wallpapers = [ ]; - backdrop = "#1e1e2e"; - interface = { - branding = "kova's nixos!"; - brandingColor = 5; - }; - }; - }; - efi = { - canTouchEfiVariables = false; + consoleMode = lib.mkForce "auto"; + configurationLimit = 10; }; + # limine = { + # enable = true; + # maxGenerations = 10; + # extraConfig = '' + # timeout: 3 + # ''; + # style = { + # wallpapers = [ ]; + # wallpaperStyle = "centered"; + # backdrop = "#1e1e2e"; + # interface = { + # branding = "kova's nixos!"; + # brandingColor = 5; + # }; + # }; + # }; + # efi.canTouchEfiVariables = true; }; kernelParams = [ "quiet" diff --git a/system/hosts/alien/default.nix b/system/hosts/alien/default.nix index 46ed96c..b433590 100644 --- a/system/hosts/alien/default.nix +++ b/system/hosts/alien/default.nix @@ -8,6 +8,7 @@ ddcutil mangohud (bottles.override { removeWarningPopup = true; }) + openrgb ]; # enable ddcutil @@ -22,7 +23,9 @@ ''; hardware.i2c.enable = true; - boot.loader.systemd-boot.consoleMode = "max"; + # enable rgb support + services.hardware.openrgb.enable = true; + # boot.kernelPackages = pkgs.linuxPackages; # let's use the CachyOS kernel instead! diff --git a/system/hosts/peach/default.nix b/system/hosts/peach/default.nix index e355c70..76d8105 100644 --- a/system/hosts/peach/default.nix +++ b/system/hosts/peach/default.nix @@ -1,25 +1,31 @@ { pkgs, config, + lib, ... }: +let + asahi-artwork = pkgs.fetchFromGitHub { + owner = "AsahiLinux"; + repo = "artwork"; + rev = "80d14f8b6f485b310e305a84b4b806361518ddd1"; + hash = "sha256-1r7gPFsn3GmKO4YsixsK7eyQWfVjsWnuOEtSCQequn8="; + }; +in { - boot.kernelParams = [ "appledrm.show_notch=1" ]; + boot = { + kernelParams = [ "appledrm.show_notch=1" ]; + m1n1CustomLogo = "${asahi-artwork}/logos/png_256/AsahiLinux_logomark.png"; + plymouth.logo = lib.mkForce "${asahi-artwork}/logos/png_64/AsahiLinux_logomark.png"; + }; - environment.systemPackages = with pkgs; [ - ddcutil + programs.dconf.profiles.gdm.databases = [ + { + settings."org/gnome/login-screen".logo = + "${asahi-artwork}/logos/svg/AsahiLinux_logo_horizontal_darkbg.svg"; + } ]; - boot.extraModulePackages = [ config.boot.kernelPackages.ddcci-driver ]; - boot.kernelModules = [ - "i2c-dev" - "ddcci_backlight" - ]; - services.udev.extraRules = '' - KERNEL=="i2c-[0-9]*", GROUP="i2c", MODE="0660" - ''; - hardware.i2c.enable = true; - virtualisation.docker = { enable = true; # Use the rootless mode - run Docker daemon as non-root user From c246d7cc4539bf6bf85cedf45fe796fcaa47fa95 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Thu, 29 Jan 2026 13:09:39 -0500 Subject: [PATCH 231/282] alien: add hard drives in raid0 --- hardware/alien/default.nix | 19 ++++++++++++++++++- system/hosts/alien/default.nix | 5 ++++- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/hardware/alien/default.nix b/hardware/alien/default.nix index 42146eb..4275513 100755 --- a/hardware/alien/default.nix +++ b/hardware/alien/default.nix @@ -24,12 +24,19 @@ fileSystems."/" = { device = "/dev/disk/by-uuid/d83ec136-df01-4b9e-a523-6d75726fb904"; fsType = "btrfs"; - options = [ "subvol=@" ]; + options = [ + "subvol=@" + "compress=zstd" + ]; }; fileSystems."/nix" = { device = "/dev/disk/by-uuid/e369d905-a82b-45c5-838a-323169233583"; fsType = "btrfs"; + options = [ + "compress=zstd" + "noatime" + ]; }; fileSystems."/boot" = { @@ -44,6 +51,16 @@ fileSystems."/home" = { device = "/dev/disk/by-uuid/881bdf55-1e43-4bfc-a1bf-3b2f72dbc122"; fsType = "btrfs"; + options = [ "compress=zstd" ]; + }; + + fileSystems."/mnt/storage" = { + device = "/dev/disk/by-uuid/39a22912-3570-4842-bdcb-df52664745a6"; + fsType = "btrfs"; + options = [ + "compress=zstd" + "nofail" + ]; }; swapDevices = [ diff --git a/system/hosts/alien/default.nix b/system/hosts/alien/default.nix index b433590..724ebaa 100644 --- a/system/hosts/alien/default.nix +++ b/system/hosts/alien/default.nix @@ -99,5 +99,8 @@ ]; # i don't even remember what this does or why i added it - systemd.tmpfiles.rules = [ "L+ /var/lib/qemu/firmware - - - - ${pkgs.qemu}/share/qemu/firmware" ]; + systemd.tmpfiles.rules = [ + "L+ /var/lib/qemu/firmware - - - - ${pkgs.qemu}/share/qemu/firmware" + "d /mnt/storage 0775 sckova users - -" + ]; } From 6952c6138b41777c1368d411b0ed17ec70080b9f Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Thu, 29 Jan 2026 20:25:42 -0500 Subject: [PATCH 232/282] switch up nixpkgs decs --- flake.lock | 28 +++++++--------------------- flake.nix | 6 ++++-- 2 files changed, 11 insertions(+), 23 deletions(-) diff --git a/flake.lock b/flake.lock index f63febd..735ea38 100644 --- a/flake.lock +++ b/flake.lock @@ -314,22 +314,6 @@ "type": "github" } }, - "nixpkgs": { - "locked": { - "lastModified": 1769461804, - "narHash": "sha256-msG8SU5WsBUfVVa/9RPLaymvi5bI8edTavbIq3vRlhI=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "bfc1b8a4574108ceef22f02bafcf6611380c100d", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, "nixpkgs-lib": { "locked": { "lastModified": 1765674936, @@ -363,16 +347,16 @@ }, "nixpkgs-unstable": { "locked": { - "lastModified": 1769606632, - "narHash": "sha256-MXgh/DAEtyEoHxSqbVm/jFHuB10xkUiHk059dqvHcgw=", + "lastModified": 1769461804, + "narHash": "sha256-msG8SU5WsBUfVVa/9RPLaymvi5bI8edTavbIq3vRlhI=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "9bf1446389d0132a7faf259929b4a8321337b9e8", + "rev": "bfc1b8a4574108ceef22f02bafcf6611380c100d", "type": "github" }, "original": { "owner": "NixOS", - "ref": "master", + "ref": "nixos-unstable", "repo": "nixpkgs", "type": "github" } @@ -488,7 +472,9 @@ "home-manager": "home-manager", "niri": "niri", "nix-cachyos-kernel": "nix-cachyos-kernel", - "nixpkgs": "nixpkgs", + "nixpkgs": [ + "nixpkgs-unstable" + ], "nixpkgs-stable": "nixpkgs-stable", "nixpkgs-unstable": "nixpkgs-unstable", "nixvim": "nixvim", diff --git a/flake.nix b/flake.nix index 7dc7eb7..b6dad9c 100644 --- a/flake.nix +++ b/flake.nix @@ -2,9 +2,11 @@ description = "My NixOS Configuration"; inputs = { - nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; nixpkgs-stable.url = "github:NixOS/nixpkgs/nixos-25.11"; - nixpkgs-unstable.url = "github:NixOS/nixpkgs/master"; + nixpkgs-unstable.url = "github:NixOS/nixpkgs/nixos-unstable"; + + # edit this to switch between stable and unstable + nixpkgs.follows = "nixpkgs-unstable"; nix-cachyos-kernel = { url = "github:xddxdd/nix-cachyos-kernel"; From 7db93b9984f4fc04c3265dcff4617d6e50f87ddb Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Thu, 29 Jan 2026 20:19:50 -0500 Subject: [PATCH 233/282] alien: adjust hardware setup --- hardware/alien/default.nix | 93 +++++++++++++++++++++++--------------- 1 file changed, 56 insertions(+), 37 deletions(-) diff --git a/hardware/alien/default.nix b/hardware/alien/default.nix index 4275513..89f3648 100755 --- a/hardware/alien/default.nix +++ b/hardware/alien/default.nix @@ -21,50 +21,69 @@ "sd_mod" ]; - fileSystems."/" = { - device = "/dev/disk/by-uuid/d83ec136-df01-4b9e-a523-6d75726fb904"; - fsType = "btrfs"; - options = [ - "subvol=@" - "compress=zstd" - ]; - }; + fileSystems = { + "/" = { + label = "nixos"; + fsType = "btrfs"; + options = [ + "subvol=root" + "compress=zstd" + "relatime" + ]; + }; - fileSystems."/nix" = { - device = "/dev/disk/by-uuid/e369d905-a82b-45c5-838a-323169233583"; - fsType = "btrfs"; - options = [ - "compress=zstd" - "noatime" - ]; - }; + "/boot" = { + label = "EFI"; + fsType = "vfat"; + options = [ + "fmask=0022" + "dmask=0022" + ]; + }; - fileSystems."/boot" = { - device = "/dev/disk/by-uuid/6444-169A"; - fsType = "vfat"; - options = [ - "fmask=0077" - "dmask=0077" - ]; - }; + "/home" = { + label = "nixos"; + fsType = "btrfs"; + options = [ + "subvol=home" + "compress=zstd" + "relatime" + ]; + }; - fileSystems."/home" = { - device = "/dev/disk/by-uuid/881bdf55-1e43-4bfc-a1bf-3b2f72dbc122"; - fsType = "btrfs"; - options = [ "compress=zstd" ]; - }; + "/nix" = { + label = "nixos"; + fsType = "btrfs"; + options = [ + "subvol=nix" + "compress=zstd" + "noatime" + ]; + }; - fileSystems."/mnt/storage" = { - device = "/dev/disk/by-uuid/39a22912-3570-4842-bdcb-df52664745a6"; - fsType = "btrfs"; - options = [ - "compress=zstd" - "nofail" - ]; + "/snapshots" = { + label = "nixos"; + fsType = "btrfs"; + options = [ + "subvol=snapshots" + "compress=zstd" + "noatime" + ]; + }; + + "/mnt/storage" = { + label = "storage"; + fsType = "btrfs"; + options = [ + "compress=zstd" + "nofail" + "relatime" + ]; + }; }; swapDevices = [ - { device = "/dev/disk/by-uuid/056af100-9382-4cbd-b3d5-90df7da69585"; } + { label = "swap"; } ]; # Enables DHCP on each ethernet and wireless interface. In case of scripted networking From d266e3643588a8b87984cec988956614ecab8dbe Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Thu, 29 Jan 2026 20:20:07 -0500 Subject: [PATCH 234/282] set gpg pinentry to curses --- home/default.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/home/default.nix b/home/default.nix index 5c0e851..7009e4b 100755 --- a/home/default.nix +++ b/home/default.nix @@ -65,6 +65,8 @@ # }) ]; + services.gpg-agent.pinentry.package = pkgs.pinentry-curses; + services = { spotifyd = { enable = true; From 68a64a0002440c575c9978909e62e4513f5eef3b Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Thu, 29 Jan 2026 20:20:45 -0500 Subject: [PATCH 235/282] add html to files handled by prettier in neovim --- home/terminal/neovim.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/home/terminal/neovim.nix b/home/terminal/neovim.nix index aa88118..852cc13 100644 --- a/home/terminal/neovim.nix +++ b/home/terminal/neovim.nix @@ -174,6 +174,7 @@ lua = [ "stylua" ]; python = [ "black" ]; nix = [ "nixfmt" ]; + html = [ "prettier" ]; javascript = [ "prettier" ]; css = [ "prettier" ]; json = [ "prettier" ]; From 491632ba9b38863729434981cbeb10f386530de6 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Thu, 29 Jan 2026 20:49:07 -0500 Subject: [PATCH 236/282] peach: refactor hardwarre --- hardware/peach/default.nix | 70 ++++++++++++++++++++------------------ 1 file changed, 37 insertions(+), 33 deletions(-) diff --git a/hardware/peach/default.nix b/hardware/peach/default.nix index 549cdc3..54227e6 100644 --- a/hardware/peach/default.nix +++ b/hardware/peach/default.nix @@ -22,46 +22,50 @@ boot.kernelModules = [ ]; boot.extraModulePackages = [ ]; - fileSystems."/" = { - device = "/dev/disk/by-uuid/1fd2c838-5fc7-4d52-ab92-9d9de545021b"; - fsType = "btrfs"; - options = [ - "subvol=root" - "compress=zstd" - ]; - }; + fileSystems = { + "/" = { + label = "nixos"; + fsType = "btrfs"; + options = [ + "subvol=root" + "compress=zstd" + "relatime" + ]; + }; - fileSystems."/home" = { - device = "/dev/disk/by-uuid/1fd2c838-5fc7-4d52-ab92-9d9de545021b"; - fsType = "btrfs"; - options = [ - "subvol=home" - "compress=zstd" - ]; - }; + "/home" = { + label = "nixos"; + fsType = "btrfs"; + options = [ + "subvol=home" + "compress=zstd" + "relatime" + ]; + }; - fileSystems."/nix" = { - device = "/dev/disk/by-uuid/1fd2c838-5fc7-4d52-ab92-9d9de545021b"; - fsType = "btrfs"; - options = [ - "subvol=nix" - "compress=zstd" - "noatime" - ]; - }; + "/nix" = { + label = "nixos"; + fsType = "btrfs"; + options = [ + "subvol=nix" + "compress=zstd" + "noatime" + ]; + }; - fileSystems."/boot" = { - device = "/dev/disk/by-uuid/4039-19F6"; - fsType = "vfat"; - options = [ - "fmask=0022" - "dmask=0022" - ]; + "/boot" = { + label = "efi"; + fsType = "vfat"; + options = [ + "fmask=0022" + "dmask=0022" + ]; + }; }; swapDevices = [ { - device = "/dev/disk/by-uuid/7abc3359-f379-4f7f-9da1-77a81ba748e4"; + label = "swap"; } ]; From efae34ec37b5a42df0833b1d3a4c9b840657a004 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Fri, 30 Jan 2026 13:28:41 -0500 Subject: [PATCH 237/282] use home-manager mpv config --- home/apps/mpv.nix | 76 +++++++++++++++++++++++++---------------------- 1 file changed, 41 insertions(+), 35 deletions(-) diff --git a/home/apps/mpv.nix b/home/apps/mpv.nix index af437ef..adc3e82 100644 --- a/home/apps/mpv.nix +++ b/home/apps/mpv.nix @@ -1,43 +1,49 @@ { config, pkgs, + lib, ... }: { - home.packages = with pkgs; [ - (mpv.override { - scripts = with mpvScripts; [ - uosc - sponsorblock - mpris - ]; - }) - ]; - home.file.".config/mpv/mpv.conf" = { - text = with config.scheme; '' - # Credit to https://github.com/catppuccin/mpv - # Main mpv options - background-color='#000000' - osd-back-color='${config.scheme.withHashtag.base11}' - osd-border-color='${config.scheme.withHashtag.base11}' - osd-color='${config.scheme.withHashtag.base05}' - osd-shadow-color='${config.scheme.withHashtag.base00}' - - # Stats script options - # Options are on separate lines for clarity - # Colors are in #BBGGRR format - script-opts-append=stats-border_color=${base08} - script-opts-append=stats-font_color=${base06} - script-opts-append=stats-plot_bg_border_color=${base16} - script-opts-append=stats-plot_bg_color=${base08} - script-opts-append=stats-plot_color=${base16} - - # External script options - # It is fine to leave these here even if one does not use these scripts because they are just ignored unless a script uses them - - # UOSC options - script-opts-append=uosc-color=foreground=${base09},foreground_text=${base01},background=${base00},background_text=${base05},curtain=${base10},success=${base0B},error=${base08} - ''; - force = true; + programs.mpv = { + enable = true; + package = pkgs.mpv; + bindings = { }; + config = with config.scheme.withHashtag; { + background-color = "#000000"; + osd-back-color = base11; + osd-border-color = base11; + osd-color = base05; + osd-shadow-color = base00; + sub-font = config.userOptions.fontSans.name; + osd-font = config.userOptions.fontSans.name; + }; + scripts = with pkgs.mpvScripts; [ + uosc + mpv-subtitle-lines # requires uosc + sponsorblock + mpris + autosub + youtube-upnext + youtube-chat + mpv-notify-send + ]; + scriptOpts = { + uosc = { + color = + with config.scheme; + lib.concatStringsSep "," ( + lib.mapAttrsToList (key: value: "${key}=${value}") { + foreground = base09; + foreground_text = base01; + background = base00; + background_text = base05; + curtain = base10; + success = base0B; + error = base08; + } + ); + }; + }; }; } From f4edfd6fc12492f639c9d2fbcc47ab65647e31bf Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Fri, 30 Jan 2026 13:38:17 -0500 Subject: [PATCH 238/282] add lazy{git,sql} and neovim autocomplete --- home/terminal/kitty.nix | 5 +++++ home/terminal/neovim.nix | 11 +++++++++++ 2 files changed, 16 insertions(+) diff --git a/home/terminal/kitty.nix b/home/terminal/kitty.nix index cd36c36..423ae5c 100644 --- a/home/terminal/kitty.nix +++ b/home/terminal/kitty.nix @@ -132,5 +132,10 @@ in enable = true; # config.theme = "Catppuccin ${config.catppuccinUpper.flavor}"; }; + lazygit = { + enable = true; + enableFishIntegration = true; + }; + lazysql.enable = true; }; } diff --git a/home/terminal/neovim.nix b/home/terminal/neovim.nix index 852cc13..6fed2c7 100644 --- a/home/terminal/neovim.nix +++ b/home/terminal/neovim.nix @@ -133,6 +133,17 @@ fetchingTimeout = 200; maxViewEntries = 30; }; + mapping = { + __raw = '' + cmp.mapping.preset.insert({ + [''] = cmp.mapping.scroll_docs(-4), + [''] = cmp.mapping.scroll_docs(4), + [''] = cmp.mapping.complete(), + [''] = cmp.mapping.abort(), + [''] = cmp.mapping.confirm({ select = true }), + }) + ''; + }; snippet = { expand = "luasnip"; }; From 127afde3fd3e5dbf7416797392fc42b4e0425f2d Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Fri, 30 Jan 2026 13:38:46 -0500 Subject: [PATCH 239/282] make niri resizing more precise --- home/tiling/niri.nix | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/home/tiling/niri.nix b/home/tiling/niri.nix index 842208b..7aae9a0 100644 --- a/home/tiling/niri.nix +++ b/home/tiling/niri.nix @@ -495,11 +495,11 @@ "Mod+Shift+Minus".action.set-window-height = "-10%"; "Mod+Shift+Equal".action.set-window-height = "+10%"; - "Mod+Ctrl+Minus".action.set-column-width = "-1%"; - "Mod+Ctrl+Equal".action.set-column-width = "+1%"; + "Mod+Ctrl+Minus".action.set-column-width = "-0.25%"; + "Mod+Ctrl+Equal".action.set-column-width = "+0.25%"; - "Mod+Ctrl+Shift+Minus".action.set-window-height = "-1%"; - "Mod+Ctrl+Shift+Equal".action.set-window-height = "+1%"; + "Mod+Ctrl+Shift+Minus".action.set-window-height = "-0.25%"; + "Mod+Ctrl+Shift+Equal".action.set-window-height = "+0.25%"; "Mod+V".action.toggle-window-floating = { }; "Mod+Shift+V".action.switch-focus-between-floating-and-tiling = { }; From d1b545b93b78eabf3c0736ae77b6eb4b7cbd582d Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Fri, 30 Jan 2026 15:20:25 -0500 Subject: [PATCH 240/282] add umask=0077 to boot partitions --- hardware/alien/default.nix | 1 + hardware/peach/default.nix | 1 + 2 files changed, 2 insertions(+) diff --git a/hardware/alien/default.nix b/hardware/alien/default.nix index 89f3648..8e3eb20 100755 --- a/hardware/alien/default.nix +++ b/hardware/alien/default.nix @@ -38,6 +38,7 @@ options = [ "fmask=0022" "dmask=0022" + "umask=0077" ]; }; diff --git a/hardware/peach/default.nix b/hardware/peach/default.nix index 54227e6..b3b57a2 100644 --- a/hardware/peach/default.nix +++ b/hardware/peach/default.nix @@ -59,6 +59,7 @@ options = [ "fmask=0022" "dmask=0022" + "umask=0077" ]; }; }; From 07c8710be3cc75a600d4ed97c61f0ff80000b077 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Fri, 30 Jan 2026 15:20:39 -0500 Subject: [PATCH 241/282] move pinentry package to system-declaration --- home/default.nix | 2 -- system/default.nix | 1 + 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/home/default.nix b/home/default.nix index 7009e4b..5c0e851 100755 --- a/home/default.nix +++ b/home/default.nix @@ -65,8 +65,6 @@ # }) ]; - services.gpg-agent.pinentry.package = pkgs.pinentry-curses; - services = { spotifyd = { enable = true; diff --git a/system/default.nix b/system/default.nix index 998077b..eb4c196 100755 --- a/system/default.nix +++ b/system/default.nix @@ -119,6 +119,7 @@ programs.gnupg.agent = { enable = true; enableSSHSupport = true; + pinentryPackage = pkgs.pinentry-curses; }; networking.firewall.enable = false; From 312c990b58c2b5cf8992abe4257dfa94e4b246c8 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Sun, 1 Feb 2026 10:56:22 -0500 Subject: [PATCH 242/282] changes --- home/apps/vencord.nix | 2 +- home/default.nix | 1 + home/games/morrowind.nix | 10 ++++++++++ home/terminal/neovim.nix | 2 +- home/tiling/niri.nix | 28 ++++++++++++++-------------- home/tiling/noctalia.nix | 8 ++++---- options.nix | 4 ++-- 7 files changed, 33 insertions(+), 22 deletions(-) diff --git a/home/apps/vencord.nix b/home/apps/vencord.nix index 39f7123..80f5984 100644 --- a/home/apps/vencord.nix +++ b/home/apps/vencord.nix @@ -4,7 +4,7 @@ useQuickCss = true; themeLinks = [ ]; eagerPatches = false; - enabledThemes = [ "base16.css" ]; + enabledThemes = [ "catppuccin-mocha-peach.theme.css" ]; enableReactDevtools = false; frameless = false; transparent = true; diff --git a/home/default.nix b/home/default.nix index 5c0e851..81477c6 100755 --- a/home/default.nix +++ b/home/default.nix @@ -35,6 +35,7 @@ radarr sonarr flaresolverr + nerd-fonts.fira-mono # kde and kde theming kde-rounded-corners diff --git a/home/games/morrowind.nix b/home/games/morrowind.nix index 5a006dc..576325c 100644 --- a/home/games/morrowind.nix +++ b/home/games/morrowind.nix @@ -10,4 +10,14 @@ SDL_VIDEO_DRIVER = "wayland"; }; }; + + programs.librewolf.profiles.default.search.engines.uesp = { + name = "Unofficial Elder Scrolls Pages"; + urls = [ + { + template = "https://en.uesp.net/w/index.php?title=Special%3ASearch&search={searchTerms}&button="; + } + ]; + definedAliases = [ "uesp" ]; + }; } diff --git a/home/terminal/neovim.nix b/home/terminal/neovim.nix index 6fed2c7..252ca2a 100644 --- a/home/terminal/neovim.nix +++ b/home/terminal/neovim.nix @@ -140,7 +140,7 @@ [''] = cmp.mapping.scroll_docs(4), [''] = cmp.mapping.complete(), [''] = cmp.mapping.abort(), - [''] = cmp.mapping.confirm({ select = true }), + [''] = cmp.mapping.confirm({ select = true }), }) ''; }; diff --git a/home/tiling/niri.nix b/home/tiling/niri.nix index 7aae9a0..0dcfa0a 100644 --- a/home/tiling/niri.nix +++ b/home/tiling/niri.nix @@ -10,6 +10,13 @@ package = null; settings = { + environment = { + QT_QPA_PLATFORM = "wayland"; + QT_QPA_PLATFORMTHEME = "qt6ct"; + DISPLAY = null; + XCURSOR_THEME = config.userOptions.cursor.name; + XCURSOR_SIZE = toString config.userOptions.cursor.size; + }; screenshot-path = "~/Pictures/Screenshots/Screenshot from %Y-%m-%d %H-%M-%S.png"; hotkey-overlay.skip-at-startup = true; prefer-no-csd = true; @@ -20,10 +27,10 @@ workspace-shadow.enable = false; }; input = { - focus-follows-mouse = { - enable = true; - max-scroll-amount = "0%"; - }; + focus-follows-mouse.enable = true; + focus-follows-mouse.max-scroll-amount = "0%"; + warp-mouse-to-focus.enable = true; + mod-key = "Super"; keyboard = { numlock = false; repeat-delay = 600; @@ -42,13 +49,6 @@ drag = false; }; }; - environment = { - QT_QPA_PLATFORM = "wayland"; - QT_QPA_PLATFORMTHEME = "qt6ct"; - DISPLAY = null; - XCURSOR_THEME = config.userOptions.cursor.name; - XCURSOR_SIZE = toString config.userOptions.cursor.size; - }; outputs = { "eDP-1" = { scale = 1.5; @@ -83,8 +83,8 @@ }; }; cursor = { - hide-when-typing = true; - hide-after-inactive-ms = 5000; + hide-when-typing = false; + hide-after-inactive-ms = 10000; size = config.userOptions.cursor.size; theme = config.userOptions.cursor.name; }; @@ -115,7 +115,7 @@ urgent.color = base12; }; shadow = { - enable = true; + enable = false; spread = 5; offset.x = 0; offset.y = 5; diff --git a/home/tiling/noctalia.nix b/home/tiling/noctalia.nix index 58cdd25..5f1fb65 100644 --- a/home/tiling/noctalia.nix +++ b/home/tiling/noctalia.nix @@ -15,7 +15,7 @@ mOnTertiary = base00; mError = base12; mOnError = base00; - mSurface = "#000000"; + mSurface = base00; mOnSurface = base05; mSurfaceVariant = base01; mOnSurfaceVariant = base05; @@ -35,8 +35,8 @@ backgroundOpacity = 1; monitors = [ ]; density = "spacious"; - showCapsule = false; - capsuleOpacity = 1; + showCapsule = true; + capsuleOpacity = 0.5; floating = false; marginVertical = 0.25; marginHorizontal = 0.25; @@ -147,7 +147,7 @@ fontDefaultScale = 1; fontFixedScale = 1; tooltipsEnabled = true; - panelBackgroundOpacity = 1; + panelBackgroundOpacity = 0.5; panelsAttachedToBar = true; settingsPanelMode = "attached"; }; diff --git a/options.nix b/options.nix index bad751d..910e25f 100644 --- a/options.nix +++ b/options.nix @@ -86,7 +86,7 @@ name = lib.mkOption { type = lib.types.str; readOnly = true; - default = "NotoSansM Nerd Font Mono"; + default = "FiraMono Nerd Font Mono"; }; size = lib.mkOption { type = lib.types.int; @@ -96,7 +96,7 @@ package = lib.mkOption { type = lib.types.package; readOnly = true; - default = pkgs.nerd-fonts.noto; + default = pkgs.nerd-fonts.fira-mono; }; }; fontEmoji = { From 3369fb54f1d6556bd11b29d1697d4f1d6bbf7585 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Sun, 1 Feb 2026 19:37:59 -0500 Subject: [PATCH 243/282] alien: fix gamescope in steam --- system/hosts/alien/default.nix | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/system/hosts/alien/default.nix b/system/hosts/alien/default.nix index 724ebaa..d16d2fc 100644 --- a/system/hosts/alien/default.nix +++ b/system/hosts/alien/default.nix @@ -35,7 +35,7 @@ programs = { gamescope = { enable = true; - capSysNice = true; + capSysNice = false; }; steam = { enable = true; @@ -44,6 +44,18 @@ }; }; + services.ananicy = { + enable = true; + package = pkgs.ananicy-cpp; + rulesProvider = pkgs.ananicy-cpp; + extraRules = [ + { + "name" = "gamescope"; + "nice" = -20; + } + ]; + }; + services.xserver.videoDrivers = [ "modesetting" "nvidia" From 1b4dd489c9efc73a6845007c117661dcc3597ccb Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Sun, 1 Feb 2026 19:38:21 -0500 Subject: [PATCH 244/282] alien: re-enable ddc --- home/hosts/alien/default.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/home/hosts/alien/default.nix b/home/hosts/alien/default.nix index 991ea4e..4299e67 100644 --- a/home/hosts/alien/default.nix +++ b/home/hosts/alien/default.nix @@ -19,6 +19,8 @@ pkgs.daggerfall-unity ]; + programs.noctalia-shell.settings.brightness.enableDdcSupport = true; + programs.spicetify = let spicePkgs = spicetify-nix.legacyPackages.${pkgs.stdenv.hostPlatform.system}; From 8611114de4ae08fbdcf973882d1015b0e708313d Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Mon, 2 Feb 2026 10:33:36 -0500 Subject: [PATCH 245/282] disable forced flag in noctalia night light --- home/tiling/noctalia.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/home/tiling/noctalia.nix b/home/tiling/noctalia.nix index 5f1fb65..76969a8 100644 --- a/home/tiling/noctalia.nix +++ b/home/tiling/noctalia.nix @@ -418,7 +418,7 @@ }; nightLight = { enabled = true; - forced = true; + forced = false; autoSchedule = true; nightTemp = "4000"; dayTemp = "6500"; From 70878439c87b7ba3d8fa88e0fac05bde8c810b4c Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Thu, 5 Feb 2026 14:01:03 -0500 Subject: [PATCH 246/282] changes --- home/apps/mpv.nix | 1 - home/default.nix | 1 + home/tiling/niri.nix | 5 +++-- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/home/apps/mpv.nix b/home/apps/mpv.nix index adc3e82..2151e03 100644 --- a/home/apps/mpv.nix +++ b/home/apps/mpv.nix @@ -21,7 +21,6 @@ scripts = with pkgs.mpvScripts; [ uosc mpv-subtitle-lines # requires uosc - sponsorblock mpris autosub youtube-upnext diff --git a/home/default.nix b/home/default.nix index 81477c6..0d9aa01 100755 --- a/home/default.nix +++ b/home/default.nix @@ -36,6 +36,7 @@ sonarr flaresolverr nerd-fonts.fira-mono + ffmpeg-full # kde and kde theming kde-rounded-corners diff --git a/home/tiling/niri.nix b/home/tiling/niri.nix index 0dcfa0a..0495b1d 100644 --- a/home/tiling/niri.nix +++ b/home/tiling/niri.nix @@ -75,7 +75,7 @@ height = 2160; refresh = 143.999; }; - scale = 1.5; + scale = 1.33; position = { x = 0; y = 0; @@ -84,7 +84,7 @@ }; cursor = { hide-when-typing = false; - hide-after-inactive-ms = 10000; + # hide-after-inactive-ms = 10000; size = config.userOptions.cursor.size; theme = config.userOptions.cursor.name; }; @@ -96,6 +96,7 @@ proportion = 0.5; }; preset-column-widths = [ + { proportion = 3.0 / 12.0; } { proportion = 4.0 / 12.0; } { proportion = 6.0 / 12.0; } { proportion = 8.0 / 12.0; } From fd219e07ef8e34a5c49dcf4b43e5e887e2da3fce Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Thu, 5 Feb 2026 14:06:51 -0500 Subject: [PATCH 247/282] update apple-silicon flake --- flake.lock | 10 +++++----- flake.nix | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/flake.lock b/flake.lock index 735ea38..0e8db7a 100644 --- a/flake.lock +++ b/flake.lock @@ -8,15 +8,15 @@ ] }, "locked": { - "lastModified": 1769531604, - "narHash": "sha256-/3Hk9YEI+9vA2+4AFErByc1V3LcCDNThmXYhFWlkQiU=", - "owner": "sckova", + "lastModified": 1770381988, + "narHash": "sha256-L/sRQY6zC3mtXIYZIlE+MeIazqYhy3ATj4Mcv4FosB4=", + "owner": "nix-community", "repo": "nixos-apple-silicon", - "rev": "acb98b0ef8b622079f2a5e4f8de9344fa7da516b", + "rev": "e2d8f7d9ea492277add97705f2beca2f20079178", "type": "github" }, "original": { - "owner": "sckova", + "owner": "nix-community", "repo": "nixos-apple-silicon", "type": "github" } diff --git a/flake.nix b/flake.nix index b6dad9c..0e480f6 100644 --- a/flake.nix +++ b/flake.nix @@ -72,7 +72,7 @@ }; apple-silicon = { - url = "github:sckova/nixos-apple-silicon"; + url = "github:nix-community/nixos-apple-silicon"; inputs.nixpkgs.follows = "nixpkgs"; }; From 26b980982485f756db0b73d8c92ad8ca15fc88be Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Fri, 6 Feb 2026 13:40:51 -0500 Subject: [PATCH 248/282] add vintagestory 1.21.4 --- home/hosts/alien/default.nix | 2 ++ packages/overlay.nix | 8 ++++++++ 2 files changed, 10 insertions(+) diff --git a/home/hosts/alien/default.nix b/home/hosts/alien/default.nix index 4299e67..a29bbaf 100644 --- a/home/hosts/alien/default.nix +++ b/home/hosts/alien/default.nix @@ -17,6 +17,8 @@ pkgs-unstable.ckan pkgs.daggerfall-unity + + pkgs.vintagestory ]; programs.noctalia-shell.settings.brightness.enableDdcSupport = true; diff --git a/packages/overlay.nix b/packages/overlay.nix index c1fad61..213edab 100644 --- a/packages/overlay.nix +++ b/packages/overlay.nix @@ -11,6 +11,14 @@ final: prev: { version = "${final.openmw-git.rev}"; }); + vintagestory = prev.vintagestory.overrideAttrs (oldAttrs: { + version = "1.21.4"; + src = prev.fetchurl { + url = "https://cdn.vintagestory.at/gamefiles/stable/vs_client_linux-x64_1.21.4.tar.gz"; + hash = "sha256-npffJgxgUMefX9OiveNk1r4kVqsMaVCC1jcWaibz9l8="; + }; + }); + riff = final.callPackage ./riff { }; linuxPackages_asahi = prev.linuxPackages_asahi.override { From edbc6b2f233d85c1c88225c3b89cbf4d7765b005 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Fri, 6 Feb 2026 13:59:51 -0500 Subject: [PATCH 249/282] alien: switch to stable kernel+nvidia, everywhere: add chromium --- home/default.nix | 1 + system/hosts/alien/default.nix | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/home/default.nix b/home/default.nix index 0d9aa01..2af4489 100755 --- a/home/default.nix +++ b/home/default.nix @@ -47,6 +47,7 @@ input-leap libreoffice-qt-fresh # nur.repos.forkprince.helium-nightly + chromium qbittorrent nautilus fractal diff --git a/system/hosts/alien/default.nix b/system/hosts/alien/default.nix index d16d2fc..11a8054 100644 --- a/system/hosts/alien/default.nix +++ b/system/hosts/alien/default.nix @@ -29,8 +29,8 @@ # boot.kernelPackages = pkgs.linuxPackages; # let's use the CachyOS kernel instead! - boot.kernelPackages = pkgs.cachyosKernels.linuxPackages-cachyos-latest; - hardware.nvidia.package = config.boot.kernelPackages.nvidiaPackages.latest; + boot.kernelPackages = pkgs.cachyosKernels.linuxPackages-cachyos-lts; + hardware.nvidia.package = config.boot.kernelPackages.nvidiaPackages.stable; programs = { gamescope = { From 61c62e9ca48d8081272d61e9cd72cc1761933419 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Fri, 6 Feb 2026 14:05:07 -0500 Subject: [PATCH 250/282] handle default apps with xdg --- home/tiling/default.nix | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/home/tiling/default.nix b/home/tiling/default.nix index ae1fc3b..53a2556 100644 --- a/home/tiling/default.nix +++ b/home/tiling/default.nix @@ -20,4 +20,18 @@ enable = true; windowManager.command = "niri"; }; + + xdg.mimeApps = { + enable = true; + associations.added = { + "x-scheme-handler/http" = [ "librewolf.desktop" ]; + "x-scheme-handler/https" = [ "librewolf.desktop" ]; + "x-scheme-handler/discord" = [ "vesktop.desktop" ]; + }; + defaultApplications = { + "x-scheme-handler/http" = [ "librewolf.desktop" ]; + "x-scheme-handler/https" = [ "librewolf.desktop" ]; + "x-scheme-handler/discord" = [ "vesktop.desktop" ]; + }; + }; } From 478ed8e6385c954c32c05d67b796e9a8fc37936e Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Fri, 6 Feb 2026 21:49:13 -0500 Subject: [PATCH 251/282] changes to niri/noctalia, add fuzzel --- home/hosts/alien/default.nix | 4 ++++ home/hosts/peach/default.nix | 5 +++++ home/tiling/default.nix | 31 ++++++++++++++++++++++++++++++- home/tiling/niri.nix | 6 ++---- home/tiling/noctalia.nix | 15 +++++---------- 5 files changed, 46 insertions(+), 15 deletions(-) diff --git a/home/hosts/alien/default.nix b/home/hosts/alien/default.nix index a29bbaf..bc90d17 100644 --- a/home/hosts/alien/default.nix +++ b/home/hosts/alien/default.nix @@ -22,6 +22,10 @@ ]; programs.noctalia-shell.settings.brightness.enableDdcSupport = true; + programs.noctalia-shell.settings.bar = { + position = "top"; + density = "default"; + }; programs.spicetify = let diff --git a/home/hosts/peach/default.nix b/home/hosts/peach/default.nix index 7e1ee13..029415a 100644 --- a/home/hosts/peach/default.nix +++ b/home/hosts/peach/default.nix @@ -19,6 +19,11 @@ render-drm-device = "/dev/dri/card2"; }; + programs.noctalia-shell.settings.bar = { + position = "top"; + density = "spacious"; + }; + programs.plasma = { input.touchpads = [ { diff --git a/home/tiling/default.nix b/home/tiling/default.nix index 53a2556..24914c1 100644 --- a/home/tiling/default.nix +++ b/home/tiling/default.nix @@ -1,4 +1,4 @@ -{ pkgs, ... }: +{ pkgs, config, ... }: { imports = [ ./niri.nix @@ -16,6 +16,35 @@ playerctl ]; + programs.fuzzel = { + enable = true; + package = pkgs.fuzzel; + settings = { + main = { + terminal = "${pkgs.kitty}/bin/kitty"; + layer = "overlay"; + font = with config.userOptions.fontMono; name + ":size=" + toString (size + 2); + launch-prefix = "${pkgs.niri}/bin/niri msg action spawn --"; + }; + border = { + width = 2; + radius = 8; + }; + colors = with config.scheme; { + background = base00 + "ff"; + text = base05 + "ff"; + prompt = base04 + "ff"; + placeholder = base04 + "ff"; + input = base05 + "ff"; + match = base09 + "ff"; + selection = base04 + "ff"; + selection-text = base05 + "ff"; + counter = base04 + "ff"; + border = base09 + "ff"; + }; + }; + }; + xsession = { enable = true; windowManager.command = "niri"; diff --git a/home/tiling/niri.nix b/home/tiling/niri.nix index 0495b1d..177daf2 100644 --- a/home/tiling/niri.nix +++ b/home/tiling/niri.nix @@ -75,7 +75,7 @@ height = 2160; refresh = 143.999; }; - scale = 1.33; + scale = 1.5; position = { x = 0; y = 0; @@ -188,9 +188,7 @@ hotkey-overlay.title = "Open a Terminal: kitty"; }; "Mod+Space" = { - action.spawn-sh = [ - "noctalia-shell ipc call launcher toggle" - ]; + action.spawn = [ "fuzzel" ]; hotkey-overlay.title = "Run an Application: Noctalia app launcher"; }; diff --git a/home/tiling/noctalia.nix b/home/tiling/noctalia.nix index 76969a8..cc00a0b 100644 --- a/home/tiling/noctalia.nix +++ b/home/tiling/noctalia.nix @@ -31,12 +31,12 @@ enforceMinimum = false; }; bar = { - position = "top"; + # position = "top"; + # density = "spacious"; backgroundOpacity = 1; monitors = [ ]; - density = "spacious"; showCapsule = true; - capsuleOpacity = 0.5; + capsuleOpacity = 1; floating = false; marginVertical = 0.25; marginHorizontal = 0.25; @@ -44,11 +44,6 @@ exclusive = true; widgets = { left = [ - { - icon = "rocket"; - id = "CustomButton"; - leftClickExec = "noctalia-shell ipc call launcher toggle"; - } { id = "Workspace"; } @@ -120,7 +115,7 @@ }; general = { avatarImage = "/home/${config.userOptions.username}/.face"; - dimmerOpacity = 0.6; + dimmerOpacity = 0.5; showScreenCorners = false; forceBlackScreenCorners = false; scaleRatio = 1; @@ -147,7 +142,7 @@ fontDefaultScale = 1; fontFixedScale = 1; tooltipsEnabled = true; - panelBackgroundOpacity = 0.5; + panelBackgroundOpacity = 1; panelsAttachedToBar = true; settingsPanelMode = "attached"; }; From d891874b39ab3c972516d9738f00d3b2a3de7a18 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Fri, 6 Feb 2026 22:00:45 -0500 Subject: [PATCH 252/282] update openmw --- flake.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/flake.lock b/flake.lock index 0e8db7a..8b0b344 100644 --- a/flake.lock +++ b/flake.lock @@ -427,11 +427,11 @@ "openmw": { "flake": false, "locked": { - "lastModified": 1769557891, - "narHash": "sha256-uGst41jGvP3EMpDvCl7aTr3U23w/Q+jTP3ueZIDM50Q=", + "lastModified": 1770305265, + "narHash": "sha256-AyrU0qXeMIj51Kbs+anjttA1ZjSADlhjySZc2loimXM=", "owner": "OpenMW", "repo": "openmw", - "rev": "fd91d03e487bf37bfe2d27cf8d8f2a5e68c9adad", + "rev": "a086ff3fb6c33dddb33e3552194aa91cb417a19e", "type": "gitlab" }, "original": { From ce2d3e3cf52a2dd49c59384901c0508a9274ae6c Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Sat, 7 Feb 2026 13:21:53 -0500 Subject: [PATCH 253/282] fix xwayland in niri --- home/tiling/niri.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/home/tiling/niri.nix b/home/tiling/niri.nix index 177daf2..0f45d88 100644 --- a/home/tiling/niri.nix +++ b/home/tiling/niri.nix @@ -13,7 +13,7 @@ environment = { QT_QPA_PLATFORM = "wayland"; QT_QPA_PLATFORMTHEME = "qt6ct"; - DISPLAY = null; + DISPLAY = ":0"; XCURSOR_THEME = config.userOptions.cursor.name; XCURSOR_SIZE = toString config.userOptions.cursor.size; }; From cb62cd8b0d8cd10e266820817431692baeaa3ca7 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Sat, 7 Feb 2026 13:22:06 -0500 Subject: [PATCH 254/282] alien: add gamemode and proton-ge --- home/hosts/alien/default.nix | 1 + system/hosts/alien/default.nix | 1 + 2 files changed, 2 insertions(+) diff --git a/home/hosts/alien/default.nix b/home/hosts/alien/default.nix index bc90d17..a6985d1 100644 --- a/home/hosts/alien/default.nix +++ b/home/hosts/alien/default.nix @@ -19,6 +19,7 @@ pkgs.daggerfall-unity pkgs.vintagestory + pkgs.gamemode ]; programs.noctalia-shell.settings.brightness.enableDdcSupport = true; diff --git a/system/hosts/alien/default.nix b/system/hosts/alien/default.nix index 11a8054..d255e6e 100644 --- a/system/hosts/alien/default.nix +++ b/system/hosts/alien/default.nix @@ -41,6 +41,7 @@ enable = true; gamescopeSession.enable = true; localNetworkGameTransfers.openFirewall = true; + extraCompatPackages = with pkgs; [ proton-ge-bin ]; }; }; From 12e09757871169290813ef4533377fcfd1a6c0b6 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Sat, 7 Feb 2026 15:46:08 -0500 Subject: [PATCH 255/282] add more default apps --- home/default.nix | 1 + home/tiling/default.nix | 54 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 55 insertions(+) diff --git a/home/default.nix b/home/default.nix index 2af4489..17b412f 100755 --- a/home/default.nix +++ b/home/default.nix @@ -61,6 +61,7 @@ calibre riff dissent + loupe # overrides # (chromium.override { diff --git a/home/tiling/default.nix b/home/tiling/default.nix index 24914c1..20f40c4 100644 --- a/home/tiling/default.nix +++ b/home/tiling/default.nix @@ -56,11 +56,65 @@ "x-scheme-handler/http" = [ "librewolf.desktop" ]; "x-scheme-handler/https" = [ "librewolf.desktop" ]; "x-scheme-handler/discord" = [ "vesktop.desktop" ]; + "x-scheme-handler/spotify" = [ "riff.desktop" ]; + "inode/directory" = [ "org.gnome.Nautilus.desktop" ]; + "image/png" = [ "loupe.desktop" ]; + "image/jpeg" = [ "loupe.desktop" ]; }; defaultApplications = { + # Web "x-scheme-handler/http" = [ "librewolf.desktop" ]; "x-scheme-handler/https" = [ "librewolf.desktop" ]; + "text/html" = [ "librewolf.desktop" ]; + + # Communication & Social "x-scheme-handler/discord" = [ "vesktop.desktop" ]; + "x-scheme-handler/spotify" = [ "riff.desktop" ]; + + # File Management + "inode/directory" = [ "org.gnome.Nautilus.desktop" ]; + + # Torrents + "application/x-bittorrent" = [ "org.qbittorrent.qBittorrent.desktop" ]; + "x-scheme-handler/magnet" = [ "org.qbittorrent.qBittorrent.desktop" ]; + + # Documents + "application/pdf" = [ "librewolf.desktop" ]; # Or libreoffice-draw.desktop + "application/vnd.openxmlformats-officedocument.wordprocessingml.document" = [ + "libreoffice-writer.desktop" + ]; # docx + "application/msword" = [ "libreoffice-writer.desktop" ]; # doc + "application/vnd.oasis.opendocument.text" = [ "libreoffice-writer.desktop" ]; # odt + "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" = [ + "libreoffice-calc.desktop" + ]; # xlsx + "application/vnd.ms-excel" = [ "libreoffice-calc.desktop" ]; # xls + "application/vnd.oasis.opendocument.spreadsheet" = [ "libreoffice-calc.desktop" ]; # ods + + # Text & Code + "text/plain" = [ "nvim.desktop" ]; + "text/markdown" = [ "nvim.desktop" ]; + "application/x-shellscript" = [ "nvim.desktop" ]; + "application/json" = [ "nvim.desktop" ]; + "text/x-c" = [ "nvim.desktop" ]; + "text/x-c++" = [ "nvim.desktop" ]; + "text/x-python" = [ "nvim.desktop" ]; + "text/x-makefile" = [ "nvim.desktop" ]; + + # Media + "video/mp4" = [ "mpv.desktop" ]; + "video/mkv" = [ "mpv.desktop" ]; + "video/webm" = [ "mpv.desktop" ]; + "audio/mpeg" = [ "mpv.desktop" ]; + "audio/flac" = [ "mpv.desktop" ]; + "audio/wav" = [ "mpv.desktop" ]; + + # Images + "image/png" = [ "loupe.desktop" ]; + "image/jpeg" = [ "loupe.desktop" ]; + "image/webp" = [ "loupe.desktop" ]; + "image/gif" = [ "loupe.desktop" ]; }; }; + } From 661973185a61fc202ed6499e8661f7f13496eb68 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Sat, 7 Feb 2026 17:05:34 -0500 Subject: [PATCH 256/282] add niri shadow --- home/tiling/niri.nix | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/home/tiling/niri.nix b/home/tiling/niri.nix index 0f45d88..abd4a2a 100644 --- a/home/tiling/niri.nix +++ b/home/tiling/niri.nix @@ -116,12 +116,12 @@ urgent.color = base12; }; shadow = { - enable = false; - spread = 5; + enable = true; + spread = 10; offset.x = 0; - offset.y = 5; + offset.y = 0; softness = 30; - color = base00 + "77"; + color = base11 + "BF"; }; # blur = { # enable = true; From fa644090ceca99a42293f71bb3e1a39135b8e591 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Sat, 7 Feb 2026 17:49:17 -0500 Subject: [PATCH 257/282] configure dconf --- home/default.nix | 1 + home/terminal/neovim.nix | 2 +- home/tiling/niri.nix | 1 - system/default.nix | 33 +++++++++++++++++++++++++++++++++ 4 files changed, 35 insertions(+), 2 deletions(-) diff --git a/home/default.nix b/home/default.nix index 17b412f..d49376d 100755 --- a/home/default.nix +++ b/home/default.nix @@ -62,6 +62,7 @@ riff dissent loupe + spotify-player # overrides # (chromium.override { diff --git a/home/terminal/neovim.nix b/home/terminal/neovim.nix index 252ca2a..ecb8a02 100644 --- a/home/terminal/neovim.nix +++ b/home/terminal/neovim.nix @@ -140,7 +140,7 @@ [''] = cmp.mapping.scroll_docs(4), [''] = cmp.mapping.complete(), [''] = cmp.mapping.abort(), - [''] = cmp.mapping.confirm({ select = true }), + [''] = cmp.mapping.confirm({ select = true }), }) ''; }; diff --git a/home/tiling/niri.nix b/home/tiling/niri.nix index abd4a2a..1f3bd1f 100644 --- a/home/tiling/niri.nix +++ b/home/tiling/niri.nix @@ -96,7 +96,6 @@ proportion = 0.5; }; preset-column-widths = [ - { proportion = 3.0 / 12.0; } { proportion = 4.0 / 12.0; } { proportion = 6.0 / 12.0; } { proportion = 8.0 / 12.0; } diff --git a/system/default.nix b/system/default.nix index eb4c196..18938a6 100755 --- a/system/default.nix +++ b/system/default.nix @@ -88,6 +88,39 @@ security.pam.services.niri.enableGnomeKeyring = true; programs.dconf.enable = true; + programs.dconf.profiles.user = { + databases = [ + { + # breaks user-level indirect config of dconf + # lockAll = true; + settings = { + "org/gnome/desktop/interface" = { + color-scheme = "prefer-dark"; + clock-format = "12h"; + clock-show-weekday = true; + }; + "org/gnome/desktop/wm/preferences" = { + button-layout = ":"; + action-double-click-titlebar = "'none'"; + }; + "org/gnome/desktop/media-handling" = { + automount = false; + automount-open = false; + autorun-never = true; + }; + "org/gnome/settings-daemon/plugins/power" = { + sleep-inactive-ac-type = "nothing"; + }; + "org/gnome/mutter" = { + edge-tiling = true; + dynamic-workspaces = true; + experimental-features = [ "variable-refresh-rate" ]; + }; + }; + } + ]; + }; + services = { displayManager = { gdm.enable = true; From 91a1210e1f8f2c552cb66bd9b62ac16895e8757c Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Sun, 8 Feb 2026 18:15:27 -0500 Subject: [PATCH 258/282] changes --- flake.nix | 6 +++--- home/tiling/niri.nix | 8 +++++++ system/default.nix | 38 +++++++++++++++++----------------- system/hosts/alien/default.nix | 3 +++ 4 files changed, 33 insertions(+), 22 deletions(-) diff --git a/flake.nix b/flake.nix index 0e480f6..65d8c54 100644 --- a/flake.nix +++ b/flake.nix @@ -179,9 +179,9 @@ ]; # Increase file descriptor limit for builds - sandbox = "relaxed"; - extra-sandbox-paths = [ ]; - build-users-group = "nixbld"; + # sandbox = "relaxed"; + # extra-sandbox-paths = [ ]; + # build-users-group = "nixbld"; }; gc = { diff --git a/home/tiling/niri.nix b/home/tiling/niri.nix index 1f3bd1f..6db8d1d 100644 --- a/home/tiling/niri.nix +++ b/home/tiling/niri.nix @@ -154,6 +154,14 @@ relative-to = "bottom-left"; }; } + { + matches = [ + { + app-id = "vesktop$"; + } + ]; + block-out-from = "screen-capture"; + } { matches = [ { diff --git a/system/default.nix b/system/default.nix index 18938a6..17874ce 100755 --- a/system/default.nix +++ b/system/default.nix @@ -22,27 +22,27 @@ loader = { timeout = 3; - systemd-boot = { - enable = true; - consoleMode = lib.mkForce "auto"; - configurationLimit = 10; - }; - # limine = { + # systemd-boot = { # enable = true; - # maxGenerations = 10; - # extraConfig = '' - # timeout: 3 - # ''; - # style = { - # wallpapers = [ ]; - # wallpaperStyle = "centered"; - # backdrop = "#1e1e2e"; - # interface = { - # branding = "kova's nixos!"; - # brandingColor = 5; - # }; - # }; + # consoleMode = lib.mkForce "auto"; + # configurationLimit = 10; # }; + limine = { + enable = true; + maxGenerations = 10; + extraConfig = '' + timeout: 3 + ''; + style = { + wallpapers = [ ]; + wallpaperStyle = "stretched"; + backdrop = "#1e1e2e"; + interface = { + branding = "kova's nixos!"; + brandingColor = 5; + }; + }; + }; # efi.canTouchEfiVariables = true; }; kernelParams = [ diff --git a/system/hosts/alien/default.nix b/system/hosts/alien/default.nix index d255e6e..21bcf9f 100644 --- a/system/hosts/alien/default.nix +++ b/system/hosts/alien/default.nix @@ -1,6 +1,7 @@ { config, pkgs, + lib, ... }: { @@ -32,6 +33,8 @@ boot.kernelPackages = pkgs.cachyosKernels.linuxPackages-cachyos-lts; hardware.nvidia.package = config.boot.kernelPackages.nvidiaPackages.stable; + boot.loader.limine.maxGenerations = lib.mkForce 100; + programs = { gamescope = { enable = true; From a68c68b7353f27338b4fe7848f6e5c93799325fb Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Sun, 8 Feb 2026 21:32:44 -0500 Subject: [PATCH 259/282] fix accents --- home/apps/librewolf.nix | 2 +- home/apps/mpv.nix | 2 +- home/apps/vencord.nix | 2 +- home/services/gtk.nix | 2 +- home/services/qt.nix | 2 +- home/terminal/neovim.nix | 2 +- home/tiling/default.nix | 6 +++--- home/tiling/niri.nix | 4 ++-- home/tiling/noctalia.nix | 2 +- 9 files changed, 12 insertions(+), 12 deletions(-) diff --git a/home/apps/librewolf.nix b/home/apps/librewolf.nix index 096b627..7f549ff 100644 --- a/home/apps/librewolf.nix +++ b/home/apps/librewolf.nix @@ -15,7 +15,7 @@ home.file.".librewolf/default/chrome/colors.css" = with config.scheme.withHashtag; { text = '' * { - --accent: ${base09}; + --accent: ${config.scheme.withHashtag.${config.colors.accent}}; --rosewater: ${base06}; --flamingo: ${base0F}; --pink: ${base17}; diff --git a/home/apps/mpv.nix b/home/apps/mpv.nix index 2151e03..a881441 100644 --- a/home/apps/mpv.nix +++ b/home/apps/mpv.nix @@ -33,7 +33,7 @@ with config.scheme; lib.concatStringsSep "," ( lib.mapAttrsToList (key: value: "${key}=${value}") { - foreground = base09; + foreground = config.scheme.withHashtag.${config.colors.accent}; foreground_text = base01; background = base00; background_text = base05; diff --git a/home/apps/vencord.nix b/home/apps/vencord.nix index 80f5984..39f7123 100644 --- a/home/apps/vencord.nix +++ b/home/apps/vencord.nix @@ -4,7 +4,7 @@ useQuickCss = true; themeLinks = [ ]; eagerPatches = false; - enabledThemes = [ "catppuccin-mocha-peach.theme.css" ]; + enabledThemes = [ "base16.css" ]; enableReactDevtools = false; frameless = false; transparent = true; diff --git a/home/services/gtk.nix b/home/services/gtk.nix index f851508..d0b6422 100644 --- a/home/services/gtk.nix +++ b/home/services/gtk.nix @@ -110,7 +110,7 @@ let } /* Accent */ - ${mkColorSection "accent_bg_color" base09} + ${mkColorSection "accent_bg_color" config.scheme.withHashtag.${config.colors.accent}} @define-color accent_fg_color @window_bg_color; ''; in diff --git a/home/services/qt.nix b/home/services/qt.nix index 0740046..8671894 100644 --- a/home/services/qt.nix +++ b/home/services/qt.nix @@ -36,7 +36,7 @@ ColorScheme = with config.scheme; let - accent = base09; + accent = config.scheme.withHashtag.${config.colors.accent}; mkColors = roles: builtins.concatStringsSep ", " (map (r: "#ff${r}") roles); in { diff --git a/home/terminal/neovim.nix b/home/terminal/neovim.nix index ecb8a02..e1fb124 100644 --- a/home/terminal/neovim.nix +++ b/home/terminal/neovim.nix @@ -59,7 +59,7 @@ }; accent.base16_custom = { - accent0 = base09; # integers/constants + accent0 = config.scheme.withHashtag.${config.colors.accent}; # integers/constants accent1 = base0A; # classes/search accent2 = base0B; # strings/inherited accent3 = base0C; # support/regex diff --git a/home/tiling/default.nix b/home/tiling/default.nix index 20f40c4..52ff645 100644 --- a/home/tiling/default.nix +++ b/home/tiling/default.nix @@ -36,11 +36,11 @@ prompt = base04 + "ff"; placeholder = base04 + "ff"; input = base05 + "ff"; - match = base09 + "ff"; + match = config.scheme.withHashtag.${config.colors.accent} + "ff"; selection = base04 + "ff"; - selection-text = base05 + "ff"; + selection-text = base00 + "ff"; counter = base04 + "ff"; - border = base09 + "ff"; + border = config.scheme.withHashtag.${config.colors.accent} + "ff"; }; }; }; diff --git a/home/tiling/niri.nix b/home/tiling/niri.nix index 6db8d1d..c8e196d 100644 --- a/home/tiling/niri.nix +++ b/home/tiling/niri.nix @@ -103,14 +103,14 @@ border = { enable = true; width = 2; - active.color = base09; + active.color = config.scheme.withHashtag.${config.colors.accent}; inactive.color = base01; urgent.color = base12; }; focus-ring = { enable = false; width = 2; - active.color = base09; + active.color = config.scheme.withHashtag.${config.colors.accent}; inactive.color = base01; urgent.color = base12; }; diff --git a/home/tiling/noctalia.nix b/home/tiling/noctalia.nix index cc00a0b..3dd0c1f 100644 --- a/home/tiling/noctalia.nix +++ b/home/tiling/noctalia.nix @@ -7,7 +7,7 @@ programs.noctalia-shell = { enable = true; colors = with config.scheme.withHashtag; { - mPrimary = base09; + mPrimary = config.scheme.withHashtag.${config.colors.accent}; mOnPrimary = base00; mSecondary = base13; mOnSecondary = base00; From 0e67721fff8c390eb9825a2b5392798e2f91a1c5 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Mon, 9 Feb 2026 00:01:42 -0500 Subject: [PATCH 260/282] add power profiles daemon --- system/default.nix | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/system/default.nix b/system/default.nix index 17874ce..66c9a43 100755 --- a/system/default.nix +++ b/system/default.nix @@ -2,10 +2,7 @@ # your system. Help is available in the configuration.nix(5) man page # and in the NixOS manual (accessible by running ‘nixos-help’). { - config, - lib, pkgs, - inputs, ... }: { @@ -139,6 +136,7 @@ gvfs.enable = true; upower.enable = true; + power-profiles-daemon.enable = true; }; environment = { From c5c2d2c982f741df7e98f504be13250fda6d5476 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Mon, 9 Feb 2026 09:03:55 -0500 Subject: [PATCH 261/282] refactor noctalia --- home/tiling/noctalia.nix | 651 ++++++++++++++++++++++++--------------- 1 file changed, 408 insertions(+), 243 deletions(-) diff --git a/home/tiling/noctalia.nix b/home/tiling/noctalia.nix index 3dd0c1f..5997504 100644 --- a/home/tiling/noctalia.nix +++ b/home/tiling/noctalia.nix @@ -25,39 +25,134 @@ mOnHover = base00; }; settings = { - settingsVersion = 0; - brightness = { - brightnessStep = 5; - enforceMinimum = false; + appLauncher = { + autoPasteClipboard = false; + clipboardWatchImageCommand = "wl-paste --type image --watch cliphist store"; + clipboardWatchTextCommand = "wl-paste --type text --watch cliphist store"; + clipboardWrapText = true; + customLaunchPrefix = ""; + customLaunchPrefixEnabled = false; + enableClipPreview = true; + enableClipboardHistory = true; + enableSettingsSearch = true; + enableWindowsSearch = true; + iconMode = "tabler"; + ignoreMouseInput = false; + overviewLayer = false; + pinnedApps = [ ]; + position = "top_left"; + screenshotAnnotationTool = ""; + showCategories = true; + showIconBackground = false; + sortByMostUsed = true; + terminalCommand = "kitty -e"; + useApp2Unit = false; + viewMode = "list"; }; + + audio = { + cavaFrameRate = 30; + mprisBlacklist = [ ]; + preferredPlayer = ""; + visualizerType = "linear"; + volumeFeedback = false; + volumeOverdrive = false; + volumeStep = 5; + }; + bar = { - # position = "top"; - # density = "spacious"; + autoHideDelay = 500; + autoShowDelay = 150; backgroundOpacity = 1; monitors = [ ]; showCapsule = true; + barType = "simple"; + capsuleColorKey = "none"; capsuleOpacity = 1; + displayMode = "always_visible"; floating = false; - marginVertical = 0.25; - marginHorizontal = 0.25; + marginHorizontal = 5; + marginVertical = 5; + frameRadius = 12; + frameThickness = 8; + hideOnOverview = false; outerCorners = false; - exclusive = true; + screenOverrides = [ ]; + showOutline = false; + useSeparateOpacity = false; widgets = { + center = [ ]; left = [ { - id = "Workspace"; + colorizeSystemIcon = "none"; + enableColorization = true; + hideMode = "alwaysExpanded"; + icon = "rocket"; + id = "CustomButton"; + ipcIdentifier = ""; + leftClickExec = "niri msg action spawn -- fuzzel"; + leftClickUpdateText = false; + maxTextLength = { + horizontal = 10; + vertical = 10; + }; + middleClickExec = ""; + middleClickUpdateText = false; + parseJson = false; + rightClickExec = ""; + rightClickUpdateText = false; + showIcon = true; + textCollapse = ""; + textCommand = ""; + textIntervalMs = 3000; + textStream = false; + wheelDownExec = ""; + wheelDownUpdateText = false; + wheelExec = ""; + wheelMode = "unified"; + wheelUpExec = ""; + wheelUpUpdateText = false; + wheelUpdateText = false; } { + characterCount = 2; + colorizeIcons = false; + emptyColor = "secondary"; + enableScrollWheel = true; + focusedColor = "primary"; + followFocusedScreen = false; + groupedBorderOpacity = 1; + hideUnoccupied = true; + iconScale = 0.6; + id = "Workspace"; + labelMode = "index"; + occupiedColor = "secondary"; + pillSize = 0.6; + reverseScroll = false; + showApplications = true; + showBadge = true; + showLabelsOnlyWhenOccupied = true; + unfocusedIconsOpacity = 1; + } + { + compactMode = true; diskPath = "/"; + iconColor = "none"; id = "SystemMonitor"; + showCpuFreq = false; showCpuTemp = false; showCpuUsage = true; + showDiskAvailable = false; showDiskUsage = true; + showDiskUsageAsPercent = false; showGpuTemp = false; + showLoadAverage = false; showMemoryAsPercent = true; showMemoryUsage = true; showNetworkStats = false; - usePrimaryColor = false; + showSwapUsage = false; + textColor = "none"; + useMonospaceFont = true; } { colorizeIcons = false; @@ -66,98 +161,96 @@ maxWidth = 600; scrollingMode = "always"; showIcon = true; + textColor = "none"; useFixedWidth = false; } ]; - center = [ - ]; right = [ { + compactMode = false; + compactShowAlbumArt = true; + compactShowVisualizer = false; hideMode = "hidden"; hideWhenIdle = false; id = "MediaMini"; maxWidth = 380; + panelShowAlbumArt = true; + panelShowVisualizer = true; scrollingMode = "hover"; showAlbumArt = false; showArtistFirst = false; showProgressRing = true; showVisualizer = false; + textColor = "none"; useFixedWidth = false; visualizerType = "linear"; } { + blacklist = [ ]; + chevronColor = "none"; + colorizeIcons = true; + drawerEnabled = false; + hidePassive = false; id = "Tray"; + pinned = [ ]; } { + hideWhenZero = false; + hideWhenZeroUnread = true; + iconColor = "none"; id = "NotificationHistory"; + showUnreadBadge = true; + unreadBadgeColor = "primary"; } { + deviceNativePath = "__default__"; + displayMode = "icon-hover"; + hideIfIdle = false; + hideIfNotDetected = true; id = "Battery"; + showNoctaliaPerformance = false; + showPowerProfiles = true; } { + displayMode = "onhover"; + iconColor = "none"; id = "Volume"; + middleClickCommand = "pwvucontrol || pavucontrol"; + textColor = "none"; } { + displayMode = "onhover"; + iconColor = "none"; id = "Brightness"; + textColor = "none"; } { + colorizeDistroLogo = false; + colorizeSystemIcon = "none"; + customIconPath = ""; + enableColorization = false; + icon = "noctalia"; id = "ControlCenter"; + useDistroLogo = false; } { + clockColor = "none"; + customFont = ""; formatHorizontal = "ddd MMM dd yyyy @ h:mm AP"; formatVertical = "HH mm - dd MM"; id = "Clock"; + tooltipFormat = "HH:mm ddd, MMM dd"; useCustomFont = false; - usePrimaryColor = false; } ]; }; }; - general = { - avatarImage = "/home/${config.userOptions.username}/.face"; - dimmerOpacity = 0.5; - showScreenCorners = false; - forceBlackScreenCorners = false; - scaleRatio = 1; - radiusRatio = 1; - iRadiusRatio = 1; - boxRadiusRatio = 1; - screenRadiusRatio = 1; - animationSpeed = 1; - animationDisabled = false; - compactLockScreen = false; - lockOnSuspend = true; - showSessionButtonsOnLockScreen = true; - showHibernateOnLockScreen = false; - enableShadows = false; - shadowDirection = "bottom_right"; - shadowOffsetX = 2; - shadowOffsetY = 3; - language = ""; - allowPanelsOnScreenWithoutBar = true; - }; - ui = { - fontDefault = config.userOptions.fontSans.name; - fontFixed = config.userOptions.fontMono.name; - fontDefaultScale = 1; - fontFixedScale = 1; - tooltipsEnabled = true; - panelBackgroundOpacity = 1; - panelsAttachedToBar = true; - settingsPanelMode = "attached"; - }; - location = { - name = "Atlanta, US"; - weatherEnabled = true; - weatherShowEffects = true; - useFahrenheit = true; - use12hourFormat = true; - showWeekNumberInCalendar = true; - showCalendarEvents = true; - showCalendarWeather = true; - analogClockInCalendar = false; - firstDayOfWeek = -1; + + brightness = { + brightnessStep = 5; + enforceMinimum = false; }; + calendar = { cards = [ { @@ -178,81 +271,19 @@ } ]; }; - screenRecorder = { - directory = ""; - frameRate = 60; - audioCodec = "opus"; - videoCodec = "h264"; - quality = "very_high"; - colorRange = "limited"; - showCursor = true; - audioSource = "default_output"; - videoSource = "portal"; - }; - wallpaper = { - enabled = false; - overviewEnabled = false; - directory = "/home/sckova/.local/share/wallpaper"; - monitorDirectories = [ ]; - enableMultiMonitorDirectories = false; - recursiveSearch = false; - setWallpaperOnAllMonitors = true; - fillColor = config.scheme.withHashtag.base00; - fillMode = "crop"; - hideWallpaperFilenames = true; - panelPosition = "follow_bar"; - randomEnabled = false; - randomIntervalSec = 300; - transitionDuration = 1500; - transitionEdgeSmoothness = 0.05; - transitionType = "random"; - useWallhaven = false; - }; - appLauncher = { - enableClipboardHistory = true; - enableClipPreview = true; - position = "top_left"; - pinnedExecs = [ ]; - useApp2Unit = false; - sortByMostUsed = true; - terminalCommand = "kitty -e"; - customLaunchPrefixEnabled = false; - customLaunchPrefix = ""; - viewMode = "list"; - showCategories = true; + + colorSchemes = { + darkMode = true; + generationMethod = "tonal-spot"; + manualSunrise = "06:30"; + manualSunset = "18:30"; + monitorForColors = ""; + predefinedScheme = "Noctalia (default)"; + schedulingMode = "off"; + useWallpaperColors = false; }; + controlCenter = { - position = "close_to_bar_button"; - shortcuts = { - left = [ - { - id = "Network"; - } - { - id = "Bluetooth"; - } - { - id = "ScreenRecorder"; - } - { - id = "WallpaperSelector"; - } - ]; - right = [ - { - id = "Notifications"; - } - { - id = "PowerProfile"; - } - { - id = "KeepAwake"; - } - { - id = "NightLight"; - } - ]; - }; cards = [ { enabled = true; @@ -271,47 +302,177 @@ id = "media-sysmon-card"; } ]; + diskPath = "/"; + position = "close_to_bar_button"; + shortcuts = { + left = [ + { id = "Network"; } + { id = "Bluetooth"; } + { id = "WallpaperSelector"; } + ]; + right = [ + { id = "Notifications"; } + { id = "PowerProfile"; } + { id = "KeepAwake"; } + { id = "NightLight"; } + ]; + }; }; - systemMonitor = { - cpuWarningThreshold = 80; - cpuCriticalThreshold = 90; - tempWarningThreshold = 80; - tempCriticalThreshold = 90; - memWarningThreshold = 80; - memCriticalThreshold = 90; - diskWarningThreshold = 80; - diskCriticalThreshold = 90; - cpuPollingInterval = 3000; - tempPollingInterval = 3000; - memPollingInterval = 3000; - diskPollingInterval = 3000; - networkPollingInterval = 3000; - useCustomColors = false; - warningColor = ""; - criticalColor = ""; - }; - dock = { + + desktopWidgets = { enabled = false; - displayMode = "auto_hide"; - backgroundOpacity = 1; - floatingRatio = 1; - size = 1; - onlySameOutput = true; - monitors = [ ]; - pinnedApps = [ ]; - colorizeIcons = false; - pinnedStatic = false; - inactiveIndicators = false; - deadOpacity = 0.6; + gridSnap = false; + monitorWidgets = [ ]; }; + + dock = { + animationSpeed = 1; + backgroundOpacity = 1; + colorizeIcons = false; + deadOpacity = 0.6; + displayMode = "auto_hide"; + enabled = false; + floatingRatio = 1; + inactiveIndicators = false; + monitors = [ ]; + onlySameOutput = true; + pinnedApps = [ ]; + pinnedStatic = false; + position = "bottom"; + size = 1; + }; + + general = { + allowPanelsOnScreenWithoutBar = true; + allowPasswordWithFprintd = false; + animationDisabled = false; + animationSpeed = 1; + autoStartAuth = false; + avatarImage = "/home/sckova/.face"; + boxRadiusRatio = 1; + clockFormat = "hh\\nmm"; + clockStyle = "custom"; + compactLockScreen = false; + dimmerOpacity = 0.5; + enableLockScreenCountdown = true; + enableShadows = false; + forceBlackScreenCorners = false; + iRadiusRatio = 1; + language = ""; + lockOnSuspend = true; + lockScreenAnimations = false; + lockScreenCountdownDuration = 10000; + lockScreenMonitors = [ ]; + radiusRatio = 1; + scaleRatio = 1; + screenRadiusRatio = 1; + shadowDirection = "bottom_right"; + shadowOffsetX = 2; + shadowOffsetY = 3; + showChangelogOnStartup = true; + showHibernateOnLockScreen = false; + showScreenCorners = false; + showSessionButtonsOnLockScreen = true; + telemetryEnabled = false; + }; + + hooks = { + darkModeChange = ""; + enabled = false; + performanceModeDisabled = ""; + performanceModeEnabled = ""; + screenLock = ""; + screenUnlock = ""; + session = ""; + startup = ""; + wallpaperChange = ""; + }; + + location = { + analogClockInCalendar = false; + firstDayOfWeek = -1; + hideWeatherCityName = false; + hideWeatherTimezone = false; + name = "Atlanta, US"; + showCalendarEvents = true; + showCalendarWeather = true; + showWeekNumberInCalendar = true; + use12hourFormat = true; + useFahrenheit = true; + weatherEnabled = true; + weatherShowEffects = true; + }; + network = { + bluetoothDetailsViewMode = "grid"; + bluetoothHideUnnamedDevices = false; + bluetoothRssiPollIntervalMs = 10000; + bluetoothRssiPollingEnabled = false; + wifiDetailsViewMode = "grid"; wifiEnabled = true; }; + + nightLight = { + autoSchedule = true; + dayTemp = "6500"; + enabled = true; + forced = false; + manualSunrise = "06:30"; + manualSunset = "18:30"; + nightTemp = "4000"; + }; + + notifications = { + backgroundOpacity = 1; + criticalUrgencyDuration = 15; + enableBatteryToast = true; + enableKeyboardLayoutToast = true; + enableMediaToast = false; + enabled = true; + location = "top_right"; + lowUrgencyDuration = 3; + monitors = [ ]; + normalUrgencyDuration = 8; + overlayLayer = true; + respectExpireTimeout = false; + saveToHistory = { + critical = true; + low = true; + normal = true; + }; + sounds = { + criticalSoundFile = ""; + enabled = true; + excludedApps = "discord,firefox,chrome,chromium,edge"; + lowSoundFile = ""; + normalSoundFile = ""; + separateSounds = false; + volume = 0.5; + }; + }; + + osd = { + autoHideMs = 2000; + backgroundOpacity = 1; + enabled = true; + enabledTypes = [ + 0 + 1 + 2 + ]; + location = "top_right"; + monitors = [ ]; + overlayLayer = true; + }; + + plugins.autoUpdate = false; + sessionMenu = { - enableCountdown = true; countdownDuration = 5000; + enableCountdown = true; + largeButtonsLayout = "single-row"; + largeButtonsStyle = true; position = "center"; - showHeader = true; powerOptions = [ { action = "lock"; @@ -338,92 +499,96 @@ enabled = true; } ]; + showHeader = true; + showNumberLabels = true; }; - notifications = { - enabled = true; - monitors = [ ]; - location = "top_right"; - overlayLayer = true; - backgroundOpacity = 1; - respectExpireTimeout = false; - lowUrgencyDuration = 3; - normalUrgencyDuration = 8; - criticalUrgencyDuration = 15; - enableKeyboardLayoutToast = true; - sounds = { - enabled = true; - volume = 0.5; - separateSounds = false; - }; - }; - osd = { - enabled = true; - location = "top_right"; - autoHideMs = 2000; - overlayLayer = true; - backgroundOpacity = 1; - enabledTypes = [ - 0 - 1 - 2 - ]; - monitors = [ ]; - }; - audio = { - volumeStep = 5; - volumeOverdrive = false; - cavaFrameRate = 30; - visualizerType = "linear"; - visualizerQuality = "high"; - mprisBlacklist = [ ]; - preferredPlayer = ""; - externalMixer = "pwvucontrol || pavucontrol"; - }; - colorSchemes = { - useWallpaperColors = false; - darkMode = true; - schedulingMode = "off"; - manualSunrise = "06:30"; - manualSunset = "18:30"; - matugenSchemeType = "scheme-fruit-salad"; - generateTemplatesForPredefined = true; + + settingsVersion = 49; + + systemMonitor = { + batteryCriticalThreshold = 5; + batteryWarningThreshold = 20; + cpuCriticalThreshold = 90; + cpuPollingInterval = 1000; + cpuWarningThreshold = 80; + criticalColor = ""; + diskAvailCriticalThreshold = 10; + diskAvailWarningThreshold = 20; + diskCriticalThreshold = 90; + diskPollingInterval = 3000; + diskWarningThreshold = 80; + enableDgpuMonitoring = false; + externalMonitor = "resources || missioncenter || jdsystemmonitor || corestats || system-monitoring-center || gnome-system-monitor || plasma-systemmonitor || mate-system-monitor || ukui-system-monitor || deepin-system-monitor || pantheon-system-monitor"; + gpuCriticalThreshold = 90; + gpuPollingInterval = 3000; + gpuWarningThreshold = 80; + loadAvgPollingInterval = 3000; + memCriticalThreshold = 90; + memPollingInterval = 1000; + memWarningThreshold = 80; + networkPollingInterval = 1000; + swapCriticalThreshold = 90; + swapWarningThreshold = 80; + tempCriticalThreshold = 90; + tempWarningThreshold = 80; + useCustomColors = false; + warningColor = ""; }; + templates = { - gtk = false; - qt = false; - kcolorscheme = false; - alacritty = false; - kitty = false; - ghostty = false; - foot = false; - wezterm = false; - fuzzel = false; - discord = false; - pywalfox = false; - vicinae = false; - walker = false; - code = false; - spicetify = false; - telegram = false; - cava = false; - yazi = false; - emacs = false; - niri = false; - enableUserTemplates = false; + activeTemplates = [ ]; + enableUserTheming = false; }; - nightLight = { - enabled = true; - forced = false; - autoSchedule = true; - nightTemp = "4000"; - dayTemp = "6500"; - manualSunrise = "06:30"; - manualSunset = "18:30"; + + ui = { + bluetoothDetailsViewMode = "grid"; + bluetoothHideUnnamedDevices = false; + boxBorderEnabled = false; + fontDefault = "Noto Sans"; + fontDefaultScale = 1; + fontFixed = "FiraMono Nerd Font Mono"; + fontFixedScale = 1; + networkPanelView = "wifi"; + panelBackgroundOpacity = 1; + panelsAttachedToBar = true; + settingsPanelMode = "attached"; + tooltipsEnabled = true; + wifiDetailsViewMode = "grid"; }; - hooks = { + + wallpaper = { + automationEnabled = false; + directory = "/home/sckova/.local/share/wallpaper"; + enableMultiMonitorDirectories = false; enabled = false; - wallpaperChange = ""; - darkModeChange = ""; + fillColor = "#1e1e2e"; + fillMode = "crop"; + hideWallpaperFilenames = true; + monitorDirectories = [ ]; + overviewEnabled = false; + panelPosition = "follow_bar"; + randomIntervalSec = 300; + setWallpaperOnAllMonitors = true; + showHiddenFiles = false; + solidColor = "#1a1a2e"; + sortOrder = "name"; + transitionDuration = 1500; + transitionEdgeSmoothness = 0.05; + transitionType = "random"; + useSolidColor = false; + useWallhaven = false; + viewMode = "single"; + wallhavenApiKey = ""; + wallhavenCategories = "111"; + wallhavenOrder = "desc"; + wallhavenPurity = "100"; + wallhavenQuery = ""; + wallhavenRatios = ""; + wallhavenResolutionHeight = ""; + wallhavenResolutionMode = "atleast"; + wallhavenResolutionWidth = ""; + wallhavenSorting = "relevance"; + wallpaperChangeMode = "random"; }; }; }; From 8ab6aa7419c6af70dd45ebef45cc85a5fce782b2 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Mon, 9 Feb 2026 09:47:30 -0500 Subject: [PATCH 262/282] set fuzzel icons to colloid --- home/tiling/default.nix | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/home/tiling/default.nix b/home/tiling/default.nix index 52ff645..985b5fa 100644 --- a/home/tiling/default.nix +++ b/home/tiling/default.nix @@ -25,6 +25,7 @@ layer = "overlay"; font = with config.userOptions.fontMono; name + ":size=" + toString (size + 2); launch-prefix = "${pkgs.niri}/bin/niri msg action spawn --"; + icon-theme = "Colloid-Dark"; }; border = { width = 2; @@ -53,8 +54,8 @@ xdg.mimeApps = { enable = true; associations.added = { - "x-scheme-handler/http" = [ "librewolf.desktop" ]; - "x-scheme-handler/https" = [ "librewolf.desktop" ]; + "x-scheme-handler/http" = [ "firefox.desktop" ]; + "x-scheme-handler/https" = [ "firefox.desktop" ]; "x-scheme-handler/discord" = [ "vesktop.desktop" ]; "x-scheme-handler/spotify" = [ "riff.desktop" ]; "inode/directory" = [ "org.gnome.Nautilus.desktop" ]; @@ -63,9 +64,9 @@ }; defaultApplications = { # Web - "x-scheme-handler/http" = [ "librewolf.desktop" ]; - "x-scheme-handler/https" = [ "librewolf.desktop" ]; - "text/html" = [ "librewolf.desktop" ]; + "x-scheme-handler/http" = [ "firefox.desktop" ]; + "x-scheme-handler/https" = [ "firefox.desktop" ]; + "text/html" = [ "firefox.desktop" ]; # Communication & Social "x-scheme-handler/discord" = [ "vesktop.desktop" ]; @@ -79,7 +80,7 @@ "x-scheme-handler/magnet" = [ "org.qbittorrent.qBittorrent.desktop" ]; # Documents - "application/pdf" = [ "librewolf.desktop" ]; # Or libreoffice-draw.desktop + "application/pdf" = [ "firefox.desktop" ]; # Or libreoffice-draw.desktop "application/vnd.openxmlformats-officedocument.wordprocessingml.document" = [ "libreoffice-writer.desktop" ]; # docx From 0992508b4179bc3dd7449f497cae5a0a79672c76 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Mon, 9 Feb 2026 09:47:58 -0500 Subject: [PATCH 263/282] switch back to firefox and use searxng --- flake.nix | 1 + home/apps/default.nix | 2 +- home/apps/{librewolf.nix => firefox.nix} | 100 +++-- home/apps/firefox_css/theme/hide.css | 37 ++ home/apps/firefox_css/theme/theme.css | 392 ++++++++++++++++++ .../userChrome.css | 0 home/apps/librewolf_css/theme/hide.css | 15 - home/apps/librewolf_css/theme/theme.css | 56 --- home/games/morrowind.nix | 2 +- home/kde/default.nix | 2 +- home/tiling/niri.nix | 2 +- system/searxng/default.nix | 134 ++++++ system/widevine/default.nix | 4 +- 13 files changed, 643 insertions(+), 104 deletions(-) rename home/apps/{librewolf.nix => firefox.nix} (76%) create mode 100644 home/apps/firefox_css/theme/hide.css create mode 100644 home/apps/firefox_css/theme/theme.css rename home/apps/{librewolf_css => firefox_css}/userChrome.css (100%) delete mode 100644 home/apps/librewolf_css/theme/hide.css delete mode 100644 home/apps/librewolf_css/theme/theme.css create mode 100644 system/searxng/default.nix diff --git a/flake.nix b/flake.nix index 65d8c54..1137c1f 100644 --- a/flake.nix +++ b/flake.nix @@ -208,6 +208,7 @@ }; } ./system + ./system/searxng ./system/widevine ./system/shell/fish.nix ./system/tailscale diff --git a/home/apps/default.nix b/home/apps/default.nix index 280bc95..69a251c 100644 --- a/home/apps/default.nix +++ b/home/apps/default.nix @@ -1,7 +1,7 @@ { imports = [ ./discord.nix - ./librewolf.nix + ./firefox.nix ./mpv.nix # ./vscode.nix ]; diff --git a/home/apps/librewolf.nix b/home/apps/firefox.nix similarity index 76% rename from home/apps/librewolf.nix rename to home/apps/firefox.nix index 7f549ff..8ed3f36 100644 --- a/home/apps/librewolf.nix +++ b/home/apps/firefox.nix @@ -6,13 +6,13 @@ ... }: { - home.file.".librewolf/default/chrome/" = { - source = ./librewolf_css; + home.file.".mozilla/firefox/default/chrome/" = { + source = ./firefox_css; force = true; recursive = true; }; - home.file.".librewolf/default/chrome/colors.css" = with config.scheme.withHashtag; { + home.file.".mozilla/firefox/default/chrome/colors.css" = with config.scheme.withHashtag; { text = '' * { --accent: ${config.scheme.withHashtag.${config.colors.accent}}; @@ -86,9 +86,9 @@ }; }; }; - librewolf = { + firefox = { enable = true; - package = pkgs.librewolf.override { + package = pkgs.firefox.override { nativeMessagingHosts = with pkgs; [ firefoxpwa ]; @@ -113,7 +113,6 @@ "{446900e4-71c2-419f-a6a7-df9c091e268b}".installation_mode = "allowed"; "CanvasBlocker@kkapsner.de".installation_mode = "allowed"; "shinigamieyes@shinigamieyes".installation_mode = "allowed"; - # "".installation_mode = "allowed"; }; DisableTelemetry = true; DisableFirefoxStudies = true; @@ -124,8 +123,8 @@ Fingerprinting = true; }; DisablePocket = true; - DisableFirefoxAccounts = false; - DisableAccounts = false; + DisableFirefoxAccounts = true; + DisableAccounts = true; DisableFirefoxScreenshots = true; OverrideFirstRunPage = ""; OverridePostUpdatePage = ""; @@ -169,8 +168,8 @@ "xpinstall.signatures.required" = false; "extensions.update.autoUpdateDefault" = false; "extensions.update.enabled" = false; - "browser.search.defaultenginename" = "google"; - "browser.search.order.1" = "google"; + "browser.search.defaultenginename" = "searxng"; + "browser.search.order.1" = "searxng"; "browser.toolbars.bookmarks.visibility" = "newtab"; "signon.rememberSignons" = false; @@ -207,6 +206,8 @@ "browser.newtabpage.activity-stream.system.showSponsored" = false; "browser.newtabpage.activity-stream.showSponsoredTopSites" = false; "browser.newtabpage.activity-stream.showWeather" = false; + "browser.download.autoHideButton" = false; + "browser.startup.homepage" = "http://localhost:8080/"; # Disable Firefox's machine learning (AI) features "browser.ml.enable" = false; @@ -218,16 +219,61 @@ # Vertical tabs "sidebar.verticalTabs" = true; "sidebar.verticalTabs.dragToPinPromo.dismissed" = true; - "browser.uiCustomization.navBarWhenVerticalTabs" = [ - "back-button" - "forward-button" - "stop-reload-button" - "reload-button" - "urlbar-container" - "downloads-button" - "unified-extensions-button" - "fxa-toolbar-menu-button" - ]; + "browser.uiCustomization.state" = { + placements = { + widget-overflow-fixed-list = [ ]; + unified-extensions-area = [ + "sponsorblocker_ajay_app-browser-action" + "ublock0_raymondhill_net-browser-action" + "jid1-mnnxcxisbpnsxq_jetpack-browser-action" + "gdpr_cavi_au_dk-browser-action" + "firefoxpwa_filips_si-browser-action" + "plasma-browser-integration_kde_org-browser-action" + "canvasblocker_kkapsner_de-browser-action" + "_5cce4ab5-3d47-41b9-af5e-8203eea05245_-browser-action" + "_446900e4-71c2-419f-a6a7-df9c091e268b_-browser-action" + "_aecec67f-0d10-4fa7-b7c7-609a2db280cf_-browser-action" + "_7a7a4a92-a2a0-41d1-9fd7-1e92480d612d_-browser-action" + ]; + nav-bar = [ + # "sidebar-button" + "back-button" + "forward-button" + "stop-reload-button" + "urlbar-container" + "unified-extensions-button" + "downloads-button" + ]; + toolbar-menubar = [ "menubar-items" ]; + TabsToolbar = [ ]; + vertical-tabs = [ "tabbrowser-tabs" ]; + PersonalToolbar = [ "personal-bookmarks" ]; + }; + seen = [ + "gdpr_cavi_au_dk-browser-action" + "firefoxpwa_filips_si-browser-action" + "plasma-browser-integration_kde_org-browser-action" + "jid1-mnnxcxisbpnsxq_jetpack-browser-action" + "canvasblocker_kkapsner_de-browser-action" + "_5cce4ab5-3d47-41b9-af5e-8203eea05245_-browser-action" + "ublock0_raymondhill_net-browser-action" + "_446900e4-71c2-419f-a6a7-df9c091e268b_-browser-action" + "_aecec67f-0d10-4fa7-b7c7-609a2db280cf_-browser-action" + "_7a7a4a92-a2a0-41d1-9fd7-1e92480d612d_-browser-action" + "sponsorblocker_ajay_app-browser-action" + "developer-button" + ]; + dirtyAreaCache = [ + "unified-extensions-area" + "nav-bar" + "TabsToolbar" + "vertical-tabs" + "PersonalToolbar" + "toolbar-menubar" + ]; + currentVersion = 23; + newElementCount = 1; + }; "privacy.resistFingerprinting" = false; "privacy.clearOnShutdown.history" = false; @@ -257,13 +303,13 @@ search = let nixIcon = "${pkgs.colloid-icon-theme}/share/icons/Colloid/apps/scalable/nix-snowflake.svg"; - googleIcon = "${pkgs.colloid-icon-theme}/share/icons/Colloid/apps/scalable/google.svg"; + searchIcon = "${pkgs.colloid-icon-theme}/share/icons/Colloid-Dark/places/symbolic/folder-saved-search-symbolic.svg"; in { force = true; - default = "google"; + default = "searxng"; order = [ - "google" + "searxng" ]; engines = { nix-packages = { @@ -317,10 +363,10 @@ definedAliases = [ "@nw" ]; }; - google = { - name = "Google"; - urls = [ { template = "https://google.com/search?q={searchTerms}"; } ]; - icon = googleIcon; + searxng = { + name = "SearXNG"; + urls = [ { template = "http://localhost:8080/search?q={searchTerms}"; } ]; + icon = searchIcon; definedAliases = [ "@go" ]; }; diff --git a/home/apps/firefox_css/theme/hide.css b/home/apps/firefox_css/theme/hide.css new file mode 100644 index 0000000..b959fa3 --- /dev/null +++ b/home/apps/firefox_css/theme/hide.css @@ -0,0 +1,37 @@ +#tracking-protection-icon-container { + display: none; +} + +.bookmark-item[container] { + list-style-image: url("chrome://global/skin/dirListing/folder.png") !important; +} + +#toolbar-menubar { + display: none !important; +} + +#menubar-items { + visibility: hidden !important; +} + +.browserSidebarContainer { + border: 0px solid var(--surface0) !important; + border-radius: 4px !important; + background-color: var(--mantle) !important; + overflow: hidden !important; +} + +.browserContainer { + border: 0px !important; + margin-top: 8px !important; + margin-left: 8px !important; + margin-right: 8px !important; + margin-bottom: 8px !important; + background-color: var(--mantle) !important; + border-radius: 2px !important; +} + +.browserStack { + border-radius: 2px !important; + background-color: var(--base) !important; +} diff --git a/home/apps/firefox_css/theme/theme.css b/home/apps/firefox_css/theme/theme.css new file mode 100644 index 0000000..6ee9279 --- /dev/null +++ b/home/apps/firefox_css/theme/theme.css @@ -0,0 +1,392 @@ +@import "../colors.css"; + +/* ======================================================================== + global variables + ======================================================================== */ +:root { + /* arrow panels */ + --arrowpanel-background: var(--surface0) !important; + --arrowpanel-border-color: var(--surface1) !important; + --arrowpanel-color: var(--text) !important; + --arrowpanel-dimmed-even-further: var(--overlay0) !important; + --arrowpanel-dimmed-further: var(--subtext1) !important; + --arrowpanel-dimmed: var(--subtext0) !important; + --default-arrowpanel-background: var(--surface0) !important; + --default-arrowpanel-border-color: var(--surface1) !important; + --default-arrowpanel-color: var(--text) !important; + + /* autocomplete & popups */ + --autocomplete-popup-background: var(--mantle) !important; + --autocomplete-popup-color: var(--text) !important; + --autocomplete-popup-highlight-background: var(--surface1) !important; + --autocomplete-popup-highlight-color: var(--text) !important; + --urlbar-popup-action-color: var(--accent) !important; + --urlbar-popup-url-color: var(--blue) !important; + --urlbar-separator-color: var(--surface0) !important; + + /* buttons (global) */ + --backbutton-active-background: var(--surface1) !important; + --backbutton-background: transparent !important; + --backbutton-border-color: transparent !important; + --backbutton-hover-background: var(--surface0) !important; + --cfr-active-color: var(--accent) !important; + --cfr-button-addons-icon: var(--text) !important; + --cfr-button-features-icon: var(--text) !important; + + /* color palette (blue) */ + --blue-40-a10: color-mix(in srgb, var(--blue), transparent 90%) !important; + --blue-40: var(--blue) !important; + --blue-50-a30: color-mix(in srgb, var(--blue), transparent 70%) !important; + --blue-50: var(--blue) !important; + --blue-60: var(--sapphire) !important; + --blue-70: var(--sky) !important; + --blue-80: var(--teal) !important; + + /* color palette (green) */ + --green-50: var(--green) !important; + --green-60: var(--green) !important; + --green-70: var(--teal) !important; + --green-80: var(--teal) !important; + --green-90: var(--teal) !important; + + /* color palette (grey/overlay) */ + --grey-20: var(--subtext1) !important; + --grey-30: var(--subtext0) !important; + --grey-40: var(--overlay2) !important; + --grey-60: var(--overlay0) !important; + --grey-70: var(--overlay2) !important; + --grey-80: var(--overlay2) !important; + --grey-90-a10: color-mix( + in srgb, + var(--surface1), + transparent 90% + ) !important; + --grey-90-a20: color-mix( + in srgb, + var(--surface1), + transparent 80% + ) !important; + --grey-90-a30: color-mix( + in srgb, + var(--surface1), + transparent 70% + ) !important; + --grey-90-a50: color-mix( + in srgb, + var(--surface1), + transparent 50% + ) !important; + --grey-90-a60: color-mix( + in srgb, + var(--surface1), + transparent 40% + ) !important; + --grey-90: var(--surface1) !important; + + /* color palette (misc) */ + --orange-50: var(--peach) !important; + --purple-70: var(--mauve) !important; + + /* color palette (red) */ + --red-50-a30: color-mix(in srgb, var(--red), transparent 70%) !important; + --red-50: var(--red) !important; + --red-60: var(--maroon) !important; + --red-70: var(--maroon) !important; + --red-80: var(--maroon) !important; + --red-90: var(--maroon) !important; + + /* color palette (yellow) */ + --yellow-10: var(--yellow) !important; + --yellow-50: var(--yellow) !important; + --yellow-60-a30: color-mix( + in srgb, + var(--yellow), + transparent 70% + ) !important; + --yellow-60: var(--yellow) !important; + --yellow-70: var(--peach) !important; + --yellow-80: var(--peach) !important; + --yellow-90: var(--peach) !important; + + /* context menus */ + --menu-background-color: var(--base) !important; + --menu-border-color: var(--surface1) !important; + --menu-color: var(--text) !important; + --menu-disabled-color: var(--overlay0) !important; + --menu-icon-opacity: 1 !important; + --menuitem-disabled-hover-background-color: transparent !important; + --menuitem-hover-background-color: var(--surface1) !important; + --panel-disabled-color: var(--overlay0) !important; + --panel-separator-color: var(--surface0) !important; + + /* in-content ui (cards & boxes) */ + --card-outline-color: var(--surface1) !important; + --card-shadow-focus: 0 0 0 2px var(--accent) !important; + --card-shadow-hover: 0 4px 8px + color-mix(in srgb, var(--crust), transparent 80%) !important; + --card-shadow: 0 1px 4px color-mix(in srgb, var(--crust), transparent 90%) !important; + --in-content-box-background-active: var(--surface1) !important; + --in-content-box-background-hover: var(--surface1) !important; + --in-content-box-background-odd: var(--mantle) !important; + --in-content-box-background: var(--surface0) !important; + --in-content-box-border-color: var(--surface1) !important; + --in-content-box-info-background: var(--surface0) !important; + + /* in-content ui (colors & text) */ + --in-content-deemphasized-text: var(--subtext0) !important; + --in-content-link-color-active: var(--sky) !important; + --in-content-link-color-hover: var(--sapphire) !important; + --in-content-link-color-visited: var(--lavender) !important; + --in-content-link-color: var(--blue) !important; + --in-content-page-background: var(--base) !important; + --in-content-page-color: var(--text) !important; + --in-content-selected-text: var(--surface2) !important; + --in-content-text-color: var(--text) !important; + + /* in-content ui (forms & buttons) */ + --in-content-border-active-shadow: 0 0 0 2px var(--accent) !important; + --in-content-border-active: var(--accent) !important; + --in-content-border-color: var(--surface1) !important; + --in-content-border-focus: var(--accent) !important; + --in-content-border-highlight: var(--blue) !important; + --in-content-border-hover: var(--surface2) !important; + --in-content-border-invalid-shadow: 0 0 0 2px var(--red) !important; + --in-content-border-invalid: var(--red) !important; + --in-content-button-background-active: var(--surface1) !important; + --in-content-button-background-hover: var(--surface2) !important; + --in-content-button-background: var(--surface0) !important; + --in-content-category-background-active: var(--surface1) !important; + --in-content-category-background-hover: var(--surface0) !important; + --in-content-category-background-selected-active: var(--surface2) !important; + --in-content-category-background-selected-hover: var(--surface1) !important; + --in-content-category-outline-focus: var(--accent) !important; + --in-content-category-text-selected-active: var(--accent) !important; + --in-content-category-text-selected: var(--accent) !important; + --in-content-item-hover: var(--surface0) !important; + --in-content-item-selected: var(--surface1) !important; + --in-content-primary-button-background-active: var(--maroon) !important; + --in-content-primary-button-background-hover: var(--peach) !important; + --in-content-primary-button-background: var(--accent) !important; + + /* in-content ui (misc) */ + --chrome-content-separator-color: var(--surface0) !important; + --in-content-dialog-header-background: var(--mantle) !important; + --in-content-tab-color: var(--subtext0) !important; + --in-content-table-background: var(--mantle) !important; + --in-content-table-border-dark-color: var(--surface1) !important; + --in-content-table-header-background: var(--surface0) !important; + --in-content-warning-container: var(--red) !important; + --shadow-10: 0 1px 2px color-mix(in srgb, var(--crust), transparent 90%) !important; + --shadow-30: 0 4px 8px color-mix(in srgb, var(--crust), transparent 80%) !important; + + /* lightweight theme (lwt) */ + --lwt-accent-color: var(--accent) !important; + --lwt-sidebar-background-color: var(--mantle) !important; + --lwt-sidebar-text-color: var(--text) !important; + --lwt-text-color: var(--text) !important; + --lwt-toolbar-field-background-color: var(--crust) !important; + --lwt-toolbar-field-border-color: var(--surface0) !important; + --lwt-toolbar-field-color: var(--text) !important; + --lwt-toolbar-field-focus-color: var(--text) !important; + --lwt-toolbar-field-focus: var(--accent) !important; + --lwt-toolbarbutton-icon-fill: var(--text) !important; + + /* navigator tabs */ + --tab-line-color: var(--accent) !important; + --tab-loading-fill: var(--accent) !important; + --tabs-border-color: var(--surface0) !important; + + /* new tab page */ + --newtab-background-color: var(--base) !important; + --newtab-border-primary-color: var(--surface1) !important; + --newtab-border-secondary-color: var(--surface0) !important; + --newtab-button-primary-color: var(--accent) !important; + --newtab-button-secondary-color: var(--surface0) !important; + --newtab-card-active-outline-color: var(--accent) !important; + --newtab-card-background-color: var(--surface0) !important; + --newtab-card-hairline-color: var(--surface1) !important; + --newtab-card-placeholder-color: var(--surface1) !important; + --newtab-card-shadow: 0 1px 4px + color-mix(in srgb, var(--crust), transparent 80%) !important; + --newtab-contextmenu-background-color: var(--surface0) !important; + --newtab-contextmenu-button-color: var(--text) !important; + --newtab-element-active-color: var(--surface1) !important; + --newtab-element-hover-color: var(--surface0) !important; + --newtab-feed-button-background-faded: var(--surface1) !important; + --newtab-feed-button-background: var(--surface0) !important; + --newtab-feed-button-spinner: var(--text) !important; + --newtab-feed-button-text-faded: var(--subtext0) !important; + --newtab-feed-button-text: var(--text) !important; + --newtab-icon-primary-color: var(--text) !important; + --newtab-icon-secondary-color: var(--subtext0) !important; + --newtab-icon-tertiary-color: var(--overlay0) !important; + --newtab-inner-box-shadow-color: color-mix( + in srgb, + var(--crust), + transparent 80% + ) !important; + --newtab-link-primary-color: var(--blue) !important; + --newtab-link-secondary-color: var(--sapphire) !important; + --newtab-modal-color: var(--base) !important; + --newtab-overlay-color: color-mix( + in srgb, + var(--crust), + transparent 40% + ) !important; + --newtab-search-border-color: var(--surface0) !important; + --newtab-search-dropdown-color: var(--mantle) !important; + --newtab-search-dropdown-header-color: var(--subtext1) !important; + --newtab-search-header-background-color: var(--base) !important; + --newtab-search-icon-color: var(--text) !important; + --newtab-search-icon: var(--text) !important; + --newtab-search-wordmark-color: var(--text) !important; + --newtab-section-active-contextmenu-color: var(--text) !important; + --newtab-section-header-text-color: var(--text) !important; + --newtab-section-navigation-text-color: var(--subtext0) !important; + --newtab-snippets-background-color: var(--surface0) !important; + --newtab-snippets-hairline-color: var(--surface1) !important; + --newtab-text-conditional-color: var(--red) !important; + --newtab-text-primary-color: var(--text) !important; + --newtab-text-secondary-color: var(--subtext0) !important; + --newtab-textbox-background-color: var(--crust) !important; + --newtab-textbox-border: var(--surface0) !important; + --newtab-textbox-focus-boxshadow: 0 0 0 2px var(--accent) !important; + --newtab-textbox-focus-color: var(--accent) !important; + --newtab-topsites-background-color: var(--base) !important; + --newtab-topsites-icon-shadow: none !important; + --newtab-topsites-label-color: var(--text) !important; + --trailhead-card-button-background-active-color: var(--accent) !important; + --trailhead-card-button-background-color: var(--surface1) !important; + --trailhead-card-button-background-hover-color: var(--surface2) !important; + --trailhead-cards-background-color: var(--surface0) !important; + --trailhead-header-text-color: var(--text) !important; + + /* notifications */ + --short-notification-background: var(--surface0) !important; + --short-notification-gradient: linear-gradient( + var(--surface0), + var(--surface0) + ) !important; + + /* sidebar */ + --sidebar-background-color: var(--mantle) !important; + --sidebar-border-color: var(--surface0) !important; + --sidebar-text-color: var(--text) !important; + + /* toolbar & urlbar */ + --toolbar-bgcolor: var(--mantle) !important; + --toolbar-color: var(--text) !important; + --toolbar-field-focus-border-color: var(--accent) !important; + --toolbar-non-lwt-bgcolor: var(--mantle) !important; + --toolbar-non-lwt-textcolor: var(--text) !important; + --toolbarbutton-active-background: var(--surface1) !important; + --toolbarbutton-focus-outline: var(--accent) !important; + --toolbarbutton-hover-background: var(--surface0) !important; + --toolbarbutton-icon-fill-attention: var(--blue) !important; +} + +/* ======================================================================== + global component styles + ======================================================================== */ + +#sidebar-main > *[expanded] { + background-color: var(--mantle) !important; +} + +*, +:root { + accent-color: var(--accent) !important; +} + +#TabsToolbar { + background-color: var(--mantle) !important; +} + +#sidebar-launcher-splitter:hover { + background-color: var(--accent) !important; +} + +[_moz-menuactive="true"] { + background-color: var(--accent) !important; + color: var(--mantle) !important; +} + +menupopup { + --panel-background: var(--base) !important; + --panel-border-color: var(--surface1) !important; + --panel-text: var(--text) !important; +} + +menuseparator { + border-color: var(--surface1) !important; +} + +/* ======================================================================== + overrides & media queries + ======================================================================== */ +@media { + #PersonalToolbar, + #nav-bar { + background-color: var(--mantle) !important; + } + + :root { + /* browser tabs */ + .tab-background[multiselected] { + --focus-outline-color: var(--surface0); + } + + .tab-background[selected]:not([multiselected]) { + outline: 1px solid var(--surface0); + outline-offset: -1px; + } + + .tabbrowser-tab[selected="true"] .tab-background { + border: 1px solid var(--surface0) !important; + } + + #tabbrowser-tabs { + --tab-loading-fill: var(--text) !important; + } + + /* general variable overrides */ + --arrowpanel-background: var(--surface0) !important; + --arrowpanel-border-color: var(--surface0) !important; + --arrowpanel-color: var(--text) !important; + --chrome-content-separator-color: var(--surface0) !important; + --input-bgcolor: var(--crust) !important; + --input-border-color: var(--mantle) !important; + --input-color: var(--text) !important; + --tab-selected-bgcolor: var(--base) !important; + --tab-selected-textcolor: var(--text) !important; + --toolbar-bgcolor: var(--mantle) !important; + --toolbar-field-background-color: var(--input-bgcolor) !important; + --toolbar-field-border-color: var(--input-border-color) !important; + --toolbar-field-color: var(--input-color) !important; + --toolbar-field-focus-background-color: var(--base) !important; + --toolbar-field-focus-border-color: var(--surface0) !important; + --toolbarseparator-color: var(--text) !important; + --toolbox-non-lwt-bgcolor: var(--crust) !important; + --toolbox-non-lwt-textcolor: var(--text) !important; + + /* inputs & selection */ + #urlbar-input:focus::selection, + .searchbar-textbox:focus::selection { + background-color: var(--text); + color: var(--surface0); + } + + /* toolbar buttons */ + --toolbarbutton-active-background: var(--overlay0) !important; + --toolbarbutton-icon-fill: var(--text) !important; + --toolbarbutton-icon-fill-attention: var(--text) !important; + + /* urlbar */ + --urlbarView-highlight-background: var(--overlay0) !important; + --urlbarView-highlight-color: var(--text) !important; + + &:where([tabsintitlebar]) { + --toolbox-non-lwt-bgcolor-inactive: var(--crust) !important; + } + } +} diff --git a/home/apps/librewolf_css/userChrome.css b/home/apps/firefox_css/userChrome.css similarity index 100% rename from home/apps/librewolf_css/userChrome.css rename to home/apps/firefox_css/userChrome.css diff --git a/home/apps/librewolf_css/theme/hide.css b/home/apps/librewolf_css/theme/hide.css deleted file mode 100644 index ba7e3ca..0000000 --- a/home/apps/librewolf_css/theme/hide.css +++ /dev/null @@ -1,15 +0,0 @@ -#tracking-protection-icon-container { - display: none; -} - -.bookmark-item[container] { - list-style-image: url("chrome://global/skin/dirListing/folder.png") !important; -} - -#toolbar-menubar { - display: none !important; -} - -#menubar-items { - visibility: hidden !important; -} diff --git a/home/apps/librewolf_css/theme/theme.css b/home/apps/librewolf_css/theme/theme.css deleted file mode 100644 index 488676e..0000000 --- a/home/apps/librewolf_css/theme/theme.css +++ /dev/null @@ -1,56 +0,0 @@ -@import "../colors.css"; -@media { - #nav-bar, - #PersonalToolbar { - background-color: var(--mantle) !important; - } - :root { - .tabbrowser-tab[selected="true"] .tab-background { - border: 1px solid var(--surface0) !important; - } - --toolbar-bgcolor: var(--mantle) !important; - --toolbox-non-lwt-bgcolor: var(--crust) !important; - --toolbox-non-lwt-textcolor: var(--text) !important; - --input-bgcolor: var(--crust) !important; - --toolbar-field-background-color: var(--input-bgcolor) !important; - --input-color: var(--text) !important; - --toolbar-field-color: var(--input-color) !important; - .tab-background[selected]:not([multiselected]) { - outline: 1px solid var(--surface0); - outline-offset: -1px; - } - .tab-background[multiselected] { - --focus-outline-color: var(--surface0); - } - --arrowpanel-background: var(--surface0) !important; - --arrowpanel-color: var(--text) !important; - --toolbarbutton-active-background: var(--overlay0) !important; - &:where([tabsintitlebar]) { - --toolbox-non-lwt-bgcolor-inactive: var(--crust) !important; - } - --toolbarbutton-icon-fill-attention: var(--text) !important; - --toolbarbutton-icon-fill: var(--text) !important; - --arrowpanel-border-color: var(--surface0) !important; - --urlbarView-highlight-color: var(--text) !important; - --urlbarView-highlight-background: var(--overlay0) !important; - #tabbrowser-tabs { - --tab-loading-fill: var(--text) !important; - } - --tab-selected-bgcolor: var(--base) !important; - --tab-selected-textcolor: var(--text) !important; - --chrome-content-separator-color: var(--surface0) !important; - --toolbar-field-focus-border-color: var(--surface0) !important; - --input-border-color: var(--mantle) !important; - --toolbar-field-border-color: var(--input-border-color) !important; - --toolbar-field-focus-background-color: var(--base) !important; - #urlbar-input:focus::selection, - .searchbar-textbox:focus::selection { - color: var(--surface0); - } - #urlbar-input:focus::selection, - .searchbar-textbox:focus::selection { - background-color: var(--text); - } - --toolbarseparator-color: var(--text) !important; - } -} diff --git a/home/games/morrowind.nix b/home/games/morrowind.nix index 576325c..be92688 100644 --- a/home/games/morrowind.nix +++ b/home/games/morrowind.nix @@ -11,7 +11,7 @@ }; }; - programs.librewolf.profiles.default.search.engines.uesp = { + programs.firefox.profiles.default.search.engines.uesp = { name = "Unofficial Elder Scrolls Pages"; urls = [ { diff --git a/home/kde/default.nix b/home/kde/default.nix index 5adabe3..ce1437e 100644 --- a/home/kde/default.nix +++ b/home/kde/default.nix @@ -270,7 +270,7 @@ { iconTasks = { launchers = [ - "applications:librewolf.desktop" + "applications:firefox.desktop" "applications:org.kde.dolphin.desktop" "applications:vesktop.desktop" "applications:kitty.desktop" diff --git a/home/tiling/niri.nix b/home/tiling/niri.nix index c8e196d..431ba5a 100644 --- a/home/tiling/niri.nix +++ b/home/tiling/niri.nix @@ -143,7 +143,7 @@ { matches = [ { - app-id = "librewolf$"; + app-id = "firefox$"; title = "^Picture-in-Picture$"; } ]; diff --git a/system/searxng/default.nix b/system/searxng/default.nix new file mode 100644 index 0000000..09337d8 --- /dev/null +++ b/system/searxng/default.nix @@ -0,0 +1,134 @@ +{ + lib, + pkgs, + config, + ... +}: +{ + + services.searx = { + enable = true; + redisCreateLocally = true; + settings = { + server = { + secret_key = lib.removeSuffix "\n" ( + builtins.readFile ( + pkgs.runCommand "gen-key" { buildInputs = [ pkgs.openssl ]; } "openssl rand -hex 32 > $out" + ) + ); + port = 8080; + bind_address = "127.0.0.1"; + }; + + general = { + debug = false; + instance_name = "searxng: ${config.system.name}"; + donation_url = false; + contact_url = false; + privacypolicy_url = false; + enable_metrics = false; + }; + + ui = { + static_use_hash = true; + default_locale = "en"; + query_in_title = true; + infinite_scroll = false; + center_alignment = true; + default_theme = "simple"; + theme_args.simple_style = "auto"; + search_on_category_select = false; + hotkeys = "vim"; + }; + + search = { + safe_search = 2; + autocomplete_min = 2; + autocomplete = "duckduckgo"; + ban_time_on_fail = 5; + max_ban_time_on_fail = 120; + formats = [ + "html" + "json" + "rss" + ]; + }; + + engines = lib.mapAttrsToList (name: value: { inherit name; } // value) { + "duckduckgo".disabled = true; + "brave".disabled = true; + "bing".disabled = false; + "google".disabled = false; + "mojeek".disabled = true; + "mwmbl".disabled = false; + "mwmbl".weight = 0.4; + "qwant".disabled = true; + "crowdview".disabled = false; + "crowdview".weight = 0.5; + "curlie".disabled = true; + "ddg definitions".disabled = false; + "ddg definitions".weight = 2; + "wikibooks".disabled = false; + "wikidata".disabled = true; + "wikiquote".disabled = true; + "wikisource".disabled = true; + "wikispecies".disabled = false; + "wikispecies".weight = 0.5; + "wikiversity".disabled = false; + "wikiversity".weight = 0.5; + "wikivoyage".disabled = false; + "wikivoyage".weight = 0.5; + "currency".disabled = true; + "dictzone".disabled = true; + "lingva".disabled = true; + "bing images".disabled = false; + "brave.images".disabled = true; + "duckduckgo images".disabled = true; + "google images".disabled = false; + "qwant images".disabled = true; + "1x".disabled = true; + "artic".disabled = false; + "deviantart".disabled = false; + "flickr".disabled = true; + "imgur".disabled = false; + "library of congress".disabled = false; + "material icons".disabled = true; + "material icons".weight = 0.2; + "openverse".disabled = false; + "pinterest".disabled = true; + "svgrepo".disabled = false; + "unsplash".disabled = false; + "wallhaven".disabled = false; + "wikicommons.images".disabled = false; + "yacy images".disabled = true; + "bing videos".disabled = false; + "brave.videos".disabled = true; + "duckduckgo videos".disabled = true; + "google videos".disabled = false; + "qwant videos".disabled = false; + "dailymotion".disabled = true; + "google play movies".disabled = true; + "invidious".disabled = true; + "odysee".disabled = true; + "peertube".disabled = false; + "piped".disabled = true; + "rumble".disabled = false; + "sepiasearch".disabled = false; + "vimeo".disabled = true; + "youtube".disabled = false; + "brave.news".disabled = true; + "google news".disabled = true; + }; + + enabled_plugins = [ + "Basic Calculator" + "Hash plugin" + "Tor check plugin" + "Open Access DOI rewrite" + "Hostnames plugin" + "Unit converter plugin" + "Tracker URL remover" + ]; + }; + }; +} diff --git a/system/widevine/default.nix b/system/widevine/default.nix index 44ac343..df1aa78 100644 --- a/system/widevine/default.nix +++ b/system/widevine/default.nix @@ -8,7 +8,7 @@ { nixpkgs.overlays = lib.mkIf (config.nixpkgs.hostPlatform.isLinux) [ (final: prev: { - wrapLibrewolf = + wrapFirefox = browser: opts: let extraPrefs = (opts.extraPrefs or "") + '' @@ -22,7 +22,7 @@ widevineCdmDir = "${final.widevine-cdm}/share/google/chrome/WidevineCdm"; widevineOutDir = "$out/gmp-widevinecdm/system-installed"; in - (prev.wrapLibrewolf browser (opts // { inherit extraPrefs; })).overrideAttrs (previousAttrs: { + (prev.wrapFirefox browser (opts // { inherit extraPrefs; })).overrideAttrs (previousAttrs: { buildCommand = previousAttrs.buildCommand + '' mkdir -p "${widevineOutDir}" ln -s "${widevineCdmDir}/_platform_specific/linux_arm64/libwidevinecdm.so" "${widevineOutDir}/libwidevinecdm.so" From 236a668391dcb229c2050ceeb7bfc806daeacee0 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Mon, 9 Feb 2026 20:44:02 -0500 Subject: [PATCH 264/282] fix mpv accent color --- home/apps/mpv.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/home/apps/mpv.nix b/home/apps/mpv.nix index a881441..84717cf 100644 --- a/home/apps/mpv.nix +++ b/home/apps/mpv.nix @@ -33,7 +33,7 @@ with config.scheme; lib.concatStringsSep "," ( lib.mapAttrsToList (key: value: "${key}=${value}") { - foreground = config.scheme.withHashtag.${config.colors.accent}; + foreground = config.scheme.${config.colors.accent}; foreground_text = base01; background = base00; background_text = base05; From 4a3c0c96533a7b36e622ff09d109b45eee190151 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Mon, 9 Feb 2026 09:09:46 -0500 Subject: [PATCH 265/282] fix apple-silicon not building --- flake.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/flake.lock b/flake.lock index 8b0b344..2317739 100644 --- a/flake.lock +++ b/flake.lock @@ -8,11 +8,11 @@ ] }, "locked": { - "lastModified": 1770381988, - "narHash": "sha256-L/sRQY6zC3mtXIYZIlE+MeIazqYhy3ATj4Mcv4FosB4=", + "lastModified": 1770630652, + "narHash": "sha256-/fhL3g+Rp16vvsNPijhLgBuZeYCv7VJr6OTJpA0ZRnw=", "owner": "nix-community", "repo": "nixos-apple-silicon", - "rev": "e2d8f7d9ea492277add97705f2beca2f20079178", + "rev": "f2936008b132717d7cc4616bbac56f7478bb0a58", "type": "github" }, "original": { From cbe0d835d815d2bb8b031773afcf25684ca7a695 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Wed, 11 Feb 2026 21:12:00 -0500 Subject: [PATCH 266/282] aaa --- home/apps/firefox_css/theme/hide.css | 4 ++-- home/hosts/alien/default.nix | 13 ++++++------- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/home/apps/firefox_css/theme/hide.css b/home/apps/firefox_css/theme/hide.css index b959fa3..f8ccdaa 100644 --- a/home/apps/firefox_css/theme/hide.css +++ b/home/apps/firefox_css/theme/hide.css @@ -14,7 +14,7 @@ visibility: hidden !important; } -.browserSidebarContainer { +/*.browserSidebarContainer { border: 0px solid var(--surface0) !important; border-radius: 4px !important; background-color: var(--mantle) !important; @@ -34,4 +34,4 @@ .browserStack { border-radius: 2px !important; background-color: var(--base) !important; -} +}*/ diff --git a/home/hosts/alien/default.nix b/home/hosts/alien/default.nix index a6985d1..ca2572a 100644 --- a/home/hosts/alien/default.nix +++ b/home/hosts/alien/default.nix @@ -11,15 +11,14 @@ accent = "base0D"; }; - home.packages = [ - # steam gtk theming - pkgs.adwsteamgtk - + home.packages = with pkgs; [ pkgs-unstable.ckan - pkgs.daggerfall-unity - pkgs.vintagestory - pkgs.gamemode + # steam gtk theming + adwsteamgtk + daggerfall-unity + vintagestory + gamemode ]; programs.noctalia-shell.settings.brightness.enableDdcSupport = true; From 858b3e1916a293000962859c56fb7d6135373ac1 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Thu, 12 Feb 2026 22:04:21 -0500 Subject: [PATCH 267/282] add git repo to bookmarks --- home/apps/firefox.nix | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/home/apps/firefox.nix b/home/apps/firefox.nix index 8ed3f36..402c099 100644 --- a/home/apps/firefox.nix +++ b/home/apps/firefox.nix @@ -296,6 +296,10 @@ name = "Home Manager Appendix A"; url = "https://nix-community.github.io/home-manager/options.xhtml"; } + { + name = "NixOS config"; + url = "https://ovips.us.to/git/sckova/nix"; + } ]; } ]; From 121fd6ae76eb043012f4455aeeae8d0afc25512d Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Thu, 12 Feb 2026 22:27:08 -0500 Subject: [PATCH 268/282] improve firefox theme --- home/apps/firefox_css/theme/hide.css | 24 ++++++------------------ home/apps/firefox_css/theme/theme.css | 4 ++++ 2 files changed, 10 insertions(+), 18 deletions(-) diff --git a/home/apps/firefox_css/theme/hide.css b/home/apps/firefox_css/theme/hide.css index f8ccdaa..ba0975a 100644 --- a/home/apps/firefox_css/theme/hide.css +++ b/home/apps/firefox_css/theme/hide.css @@ -14,24 +14,12 @@ visibility: hidden !important; } -/*.browserSidebarContainer { - border: 0px solid var(--surface0) !important; - border-radius: 4px !important; - background-color: var(--mantle) !important; - overflow: hidden !important; -} - .browserContainer { - border: 0px !important; - margin-top: 8px !important; - margin-left: 8px !important; - margin-right: 8px !important; - margin-bottom: 8px !important; - background-color: var(--mantle) !important; - border-radius: 2px !important; + border-radius: 8px !important; + margin: 6px !important; + background-color: transparent !important; } -.browserStack { - border-radius: 2px !important; - background-color: var(--base) !important; -}*/ +browser { + border-radius: 8px !important; +} diff --git a/home/apps/firefox_css/theme/theme.css b/home/apps/firefox_css/theme/theme.css index 6ee9279..cd48c8b 100644 --- a/home/apps/firefox_css/theme/theme.css +++ b/home/apps/firefox_css/theme/theme.css @@ -4,6 +4,10 @@ global variables ======================================================================== */ :root { + --border-color-card: 1px solid var(--surface0) !important; + --urlbar-container-border-width: 1px !important; + --urlbar-container-border-color: var(--surface0) !important; + /* arrow panels */ --arrowpanel-background: var(--surface0) !important; --arrowpanel-border-color: var(--surface1) !important; From 71e717d7a13cea1997d181d8022198bbadc671db Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Thu, 12 Feb 2026 22:51:21 -0500 Subject: [PATCH 269/282] add readme --- README.md | 152 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 152 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..554d992 --- /dev/null +++ b/README.md @@ -0,0 +1,152 @@ +# NixOS Configuration + +This repository contains the personal **NixOS** and **Home Manager** configuration for **Sean Kovacs** (`sckova`). It utilizes **Nix Flakes** to manage reproducible system states across disparate hardware architectures, specifically targeting high-performance x86_64 gaming desktops and Apple Silicon laptops. + +## 🖥️ Hosts + +The configuration defines three distinct system profiles via `flake.nix`: + +### 👽 `alien` (x86_64-linux) + +The primary high-performance desktop and gaming workstation. + +* **Kernel:** Uses the **CachyOS** kernel (`linux-cachyos-lts`) via `nix-cachyos-kernel` overlay for scheduler and performance optimizations. +* **Graphics:** Nvidia proprietary drivers (Stable) with Open kernel modules disabled. +#### Gaming Stack: +* **Steam**: Enabled with Gamescope session and Proton-GE. +* **Optimization**: `ananicy-cpp` enabled with specific rules for Gamescope (nice -20). +* **Streaming**: Sunshine game streaming service enabled and auto-started. +* **RGB**: OpenRGB and `ddcutil` for hardware lighting and display control. + +* **Virtualization:** Podman (Docker compatible) and Hyper-V guest support enabled. +* **Hardware:** Specific monitor configuration defined in Niri settings (Dual 4K @ 144Hz + Portrait 1440p). + +### 🍑 `peach` (aarch64-linux) + +A configuration tailored for Apple Silicon hardware using **Asahi Linux**. + +#### **System-specific setup**: +* GPU-accelerated desktop via Apple Silicon drivers. +* Touchpad configuration with natural scrolling. +* Specific notch handling and boot logo customization with plymouth & m1n1. +* Configures docker in a rootless setup. + +* **Kernel**: Patched `linuxPackages_asahi` with Apple Mailbox and RTKit support. + +### 💻 `vm-generic` + +A generic template for virtual machines, supported on both `x86_64-linux` and `aarch64-linux`. + +## 🎨 Desktop Environment + +The system uses a highly customized Wayland environment centered around **Niri**. + +### Window Manager: **Niri** + +#### Type: +* Scrollable-tiling Wayland compositor. +#### Style: +* Tightly separated windows with 2px borders and 4px gaps. +* Animations and window rounding (8px radius). +#### **Input**: +* Focus follows mouse +* Adaptive acceleration +* Natural scrolling enabled +#### **Keybinds**: +* Super+Shift+? preserved for showing the custom keybinds. + +### Shell & Widgets: **Noctalia** + +* **Bar**: Custom top bar with workspaces, system monitor, media controls, and tray. +* **Notifications**: Integrated notification daemon with "Do Not Disturb" capabilities. +* **Control Center**: Quick access to network, bluetooth, and power profiles. +* **Launcher**: Fuzzel app launcher with clipboard history support. + +### Theming: **Base16/24** + +A centralized theme configuration module propagates and builds colors across the system's applications and toolkits. + +#### Scheme: +* Can use any scheme declared in the [tinted-gallery](https://tinted-theming.github.io/tinted-gallery/). +#### Accent: +* Orange for peach +* Blue for alien +* Green for the VM +#### Cursor: +* Catppuccin Mocha Peach (Size 24). +#### Fonts: +* Sans: Noto Sans +* Serif: Noto Serif +* Mono: FiraMono Nerd Font + +## 📦 Software Stack + +### Terminal & Editors + +#### **Terminal**: **Kitty** +* Fish shell integration +* Scrollback buffering +* Custom theme +* Wayland-specific integrations +#### **Shell**: **Fish** +* Customized prompt +* Modern alternatives to ls `eza`, cat `bat`, and gzip `pigz`. +* `btop` is used as a system monitor. +#### **Editor**: **Neovim** (via `nixvim`) configured with: +* LSP support (`nixd`, `qmlls`). +* `conform-nvim` for formatting (Prettier, Stylua, Black). +* `cmp` for autocompletion. +* `fzf-lua` for fuzzy finding. + +### Applications + +#### Browser: **Firefox** with extensive hardening +* Telemetry, Pocket, and AI features disabled. +* Custom userChrome theme. +* Vertical tabs enabled. +* Extensions managed via Nix (uBlock Origin, SponsorBlock, Bitwarden, etc.). +* PWA support via `firefoxpwa`. +* SearXNG metasearch engine set up and enabled as the default search engine and homepage. + +#### Social +* **Vesktop**: Discord client. +* Dynamically generated base16 theme. +* Numerous plugins (MessageLogger, FakeNitro, etc.) enabled. +* **Fractal**: Matrix client. +* **Tuba**: Mastodon client. + +#### Media +* **MPV** with `uosc` UI and `mpris` support. +* **Spotify**: Custom `riff` package (Rust-based client) and `spotify-webapp`. +* **Spicetify**: CLI Spotify client theming. +* **Strawberry**: Music client. +* **Audacity**, **Musescore**: Musical workstations. + +### Services + +* **Wallpaper**: Automated daily **Bing Wallpaper** downloader service. +* **Storage**: **Synology NAS** mounting via Rclone systemd service. +* **Network**: **Tailscale** mesh networking. + +## 🛠️ Usage + +### Rebuilding the System + +To apply the configuration for a specific host: + +```bash +# Rebuild NixOS configuration and switch +sudo nixos-rebuild switch --flake .#systemName + +# Rebuild NixOS configuration for next boot +sudo nixos-rebuild boot --flake .#systemName --install-bootloader +``` + +### VM Testing + +To build and run the generic VM: + +```bash +nixos-rebuild build-vm --flake .#vm-generic +./result/bin/run-vm-generic-vm +``` From 2ebb128a7ee3f9442ac6b20839cc0d9f92ae0700 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Fri, 13 Feb 2026 13:23:52 -0500 Subject: [PATCH 270/282] update openmw --- flake.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/flake.lock b/flake.lock index 2317739..d2439b6 100644 --- a/flake.lock +++ b/flake.lock @@ -427,11 +427,11 @@ "openmw": { "flake": false, "locked": { - "lastModified": 1770305265, - "narHash": "sha256-AyrU0qXeMIj51Kbs+anjttA1ZjSADlhjySZc2loimXM=", + "lastModified": 1770694146, + "narHash": "sha256-zTN+f21TF0Y53J+BAPDo3pvcI1+f3cc/7xG4AAK/+gs=", "owner": "OpenMW", "repo": "openmw", - "rev": "a086ff3fb6c33dddb33e3552194aa91cb417a19e", + "rev": "01bcd6a6369fe461caaf900354967b4751aede7a", "type": "gitlab" }, "original": { From 44c97b0dc0951de9b73bfe2e230e2d31e395198c Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Mon, 16 Feb 2026 11:19:04 -0500 Subject: [PATCH 271/282] aaa --- flake.lock | 29 +- flake.nix | 4 +- home/apps/firefox_css/theme/theme-new.css | 459 ++++++++++++++++++++++ home/tiling/niri.nix | 16 +- home/tiling/noctalia.nix | 2 +- packages/overlay.nix | 30 +- 6 files changed, 511 insertions(+), 29 deletions(-) create mode 100644 home/apps/firefox_css/theme/theme-new.css diff --git a/flake.lock b/flake.lock index d2439b6..c89e0f5 100644 --- a/flake.lock +++ b/flake.lock @@ -3,16 +3,14 @@ "apple-silicon": { "inputs": { "flake-compat": "flake-compat", - "nixpkgs": [ - "nixpkgs" - ] + "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1770630652, - "narHash": "sha256-/fhL3g+Rp16vvsNPijhLgBuZeYCv7VJr6OTJpA0ZRnw=", + "lastModified": 1771054135, + "narHash": "sha256-0RYmnOk40U4ZGbW/+3rHlNndrsuHCz9h+xequKWgwHQ=", "owner": "nix-community", "repo": "nixos-apple-silicon", - "rev": "f2936008b132717d7cc4616bbac56f7478bb0a58", + "rev": "357186cca0f4c7801ff16970e4b6a05e74fd88e0", "type": "github" }, "original": { @@ -314,6 +312,22 @@ "type": "github" } }, + "nixpkgs": { + "locked": { + "lastModified": 1768305791, + "narHash": "sha256-AIdl6WAn9aymeaH/NvBj0H9qM+XuAuYbGMZaP0zcXAQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1412caf7bf9e660f2f962917c14b1ea1c3bc695e", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, "nixpkgs-lib": { "locked": { "lastModified": 1765674936, @@ -473,7 +487,8 @@ "niri": "niri", "nix-cachyos-kernel": "nix-cachyos-kernel", "nixpkgs": [ - "nixpkgs-unstable" + "apple-silicon", + "nixpkgs" ], "nixpkgs-stable": "nixpkgs-stable", "nixpkgs-unstable": "nixpkgs-unstable", diff --git a/flake.nix b/flake.nix index 1137c1f..feffaa3 100644 --- a/flake.nix +++ b/flake.nix @@ -6,7 +6,7 @@ nixpkgs-unstable.url = "github:NixOS/nixpkgs/nixos-unstable"; # edit this to switch between stable and unstable - nixpkgs.follows = "nixpkgs-unstable"; + nixpkgs.follows = "apple-silicon/nixpkgs"; nix-cachyos-kernel = { url = "github:xddxdd/nix-cachyos-kernel"; @@ -73,7 +73,7 @@ apple-silicon = { url = "github:nix-community/nixos-apple-silicon"; - inputs.nixpkgs.follows = "nixpkgs"; + # inputs.nixpkgs.follows = "nixpkgs"; }; openmw = { diff --git a/home/apps/firefox_css/theme/theme-new.css b/home/apps/firefox_css/theme/theme-new.css new file mode 100644 index 0000000..204e3df --- /dev/null +++ b/home/apps/firefox_css/theme/theme-new.css @@ -0,0 +1,459 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +/* DO NOT EDIT this file directly, instead modify design-tokens.json + * and run `npm run build` to see your changes. */ + +@import "../colors.css"; + +@layer tokens-foundation, tokens-prefers-contrast, tokens-forced-colors; + +@layer tokens-foundation { + :root, + :host(.anonymous-content-host) { + /** Background Color **/ + --background-color-box: var(--base) !important; + --background-color-critical: var(--maroon) !important; + --background-color-information: var(--sapphire) !important; + --background-color-success: var(--teal) !important; + --background-color-warning: var(--peach) !important; + --promo-background-color: var(--background-color-information) !important; + --table-row-background-color: var(--mantle) !important; + + /** Border **/ + --border-color-card: color-mix( + in srgb, + currentColor 10%, + transparent + ) !important; + --border-color-interactive-hover: var( + --border-color-interactive + ) !important; + --border-color-interactive-active: var( + --border-color-interactive + ) !important; + --border-color-interactive-disabled: var( + --border-color-interactive + ) !important; + --border-color-selected: var(--accent) !important; + --border-color-transparent: transparent !important; + --border-radius-circle: 9999px !important; + --border-radius-xsmall: 2px !important; + --border-radius-small: 4px !important; + --border-radius-medium: 8px !important; + --border-radius-large: 16px !important; + --border-width: 0px !important; + + /** Box Shadow **/ + --box-shadow-card: var(--box-shadow-level-2) !important; + --box-shadow-card-hover: var(--box-shadow-level-4) !important; + --box-shadow-color-darker-layer-1: rgba(0, 0, 0, 0.15) !important; + --box-shadow-color-darker-layer-2: rgba(0, 0, 0, 0.2) !important; + --box-shadow-color-lighter-layer-1: rgba(0, 0, 0, 0.05) !important; + --box-shadow-color-lighter-layer-2: rgba(0, 0, 0, 0.1) !important; + --box-shadow-level-1: + 0 0 1px var(--box-shadow-color-darker-layer-1), + 0 1px 2px var(--box-shadow-color-darker-layer-2) !important; + --box-shadow-level-2: + 0 0.25px 0.75px var(--box-shadow-color-lighter-layer-1), + 0 2px 6px var(--box-shadow-color-lighter-layer-2) !important; + --box-shadow-level-3: + 0 0.375px 1.5px var(--box-shadow-color-lighter-layer-1), + 0 3px 12px var(--box-shadow-color-lighter-layer-2) !important; + --box-shadow-level-4: + 0 0.5px 2px var(--box-shadow-color-lighter-layer-1), + 0 4px 16px var(--box-shadow-color-lighter-layer-2) !important; + --box-shadow-popup: var(--box-shadow-level-3) !important; + --box-shadow-tab: var(--box-shadow-level-1) !important; + + /** Button **/ + --button-background-color-disabled: var( + --button-background-color + ) !important; + --button-background-color-destructive: var(--red) !important; + --button-background-color-destructive-hover: color-mix( + in srgb, + var(--red), + var(--text) 10% + ) !important; + --button-background-color-destructive-active: color-mix( + in srgb, + var(--red), + var(--text) 20% + ) !important; + --button-background-color-destructive-disabled: var( + --button-background-color-destructive + ) !important; + --button-background-color-destructive-selected: var( + --button-background-color-destructive-active + ) !important; + --button-background-color-ghost: transparent !important; + --button-background-color-ghost-hover: var( + --button-background-color-hover + ) !important; + --button-background-color-ghost-active: var( + --button-background-color-active + ) !important; + --button-background-color-ghost-disabled: var( + --button-background-color-ghost + ) !important; + --button-background-color-ghost-selected: var( + --button-background-color-ghost-active + ) !important; + --button-background-color-primary: var(--accent) !important; + --button-background-color-primary-hover: color-mix( + in srgb, + var(--accent), + var(--text) 10% + ) !important; + --button-background-color-primary-active: color-mix( + in srgb, + var(--accent), + var(--text) 20% + ) !important; + --button-background-color-primary-disabled: var( + --button-background-color-primary + ) !important; + --button-background-color-primary-selected: var( + --button-background-color-primary-active + ) !important; + --button-background-color-selected: var( + --button-background-color-active + ) !important; + --button-border: var(--border-width) solid var(--button-border-color) !important; + --button-border-color: transparent !important; + --button-border-color-hover: var(--button-border-color) !important; + --button-border-color-active: var(--button-border-color) !important; + --button-border-color-disabled: var(--button-border-color) !important; + --button-border-color-destructive: transparent !important; + --button-border-color-destructive-hover: var( + --button-border-color-destructive + ) !important; + --button-border-color-destructive-active: var( + --button-border-color-destructive + ) !important; + --button-border-color-destructive-disabled: var( + --button-border-color-destructive + ) !important; + --button-border-color-destructive-selected: var( + --button-border-color-destructive-active + ) !important; + --button-border-color-ghost: var(--button-border-color) !important; + --button-border-color-ghost-hover: var( + --button-border-color-hover + ) !important; + --button-border-color-ghost-active: var( + --button-border-color-active + ) !important; + --button-border-color-ghost-disabled: var( + --button-border-color-disabled + ) !important; + --button-border-color-ghost-selected: var( + --button-border-color-ghost-active + ) !important; + --button-border-color-primary: transparent !important; + --button-border-color-primary-hover: var( + --button-border-color-primary + ) !important; + --button-border-color-primary-active: var( + --button-border-color-primary + ) !important; + --button-border-color-primary-disabled: var( + --button-border-color-primary + ) !important; + --button-border-color-primary-selected: var( + --button-border-color-primary-active + ) !important; + --button-border-color-selected: var( + --button-border-color-active + ) !important; + --button-border-radius: var(--border-radius-medium) !important; + --button-font-size: var(--font-size-root) !important; + --button-font-size-small: var(--font-size-small) !important; + --button-font-weight: var(--font-weight-semibold) !important; + --button-icon-fill: currentColor !important; + --button-icon-stroke: var(--button-icon-fill) !important; + --button-min-height: var(--size-item-large) !important; + --button-min-height-small: var(--size-item-medium) !important; + --button-opacity-disabled: 0.5 !important; + --button-padding: var(--space-xsmall) var(--space-large) !important; + --button-padding-icon: 0 !important; + --button-size-icon: var(--button-min-height) !important; + --button-size-icon-small: var(--button-min-height-small) !important; + --button-text-color-hover: var(--button-text-color) !important; + --button-text-color-active: var(--button-text-color) !important; + --button-text-color-disabled: var(--button-text-color) !important; + --button-text-color-destructive: var(--crust) !important; + --button-text-color-destructive-hover: var( + --button-text-color-destructive + ) !important; + --button-text-color-destructive-active: var( + --button-text-color-destructive + ) !important; + --button-text-color-destructive-disabled: var( + --button-text-color-destructive + ) !important; + --button-text-color-destructive-selected: var( + --button-text-color-destructive-active + ) !important; + --button-text-color-ghost: inherit !important; + --button-text-color-ghost-hover: inherit !important; + --button-text-color-ghost-active: inherit !important; + --button-text-color-ghost-disabled: inherit !important; + --button-text-color-ghost-selected: var( + --button-text-color-ghost-active + ) !important; + --button-text-color-primary-hover: var( + --button-text-color-primary + ) !important; + --button-text-color-primary-active: var( + --button-text-color-primary-hover + ) !important; + --button-text-color-primary-disabled: var( + --button-text-color-primary + ) !important; + --button-text-color-primary-selected: var( + --button-text-color-primary-active + ) !important; + --button-text-color-selected: var(--button-text-color-active) !important; + + /** Checkbox **/ + --checkbox-margin-inline: var(--space-small) !important; + --checkbox-size: var(--size-item-small) !important; + + /** Focus Outline **/ + --focus-outline: var(--focus-outline-width) solid var(--focus-outline-color) !important; + --focus-outline-color: var(--accent) !important; + --focus-outline-inset: calc(-1 * var(--focus-outline-width)) !important; + --focus-outline-offset: 2px !important; + --focus-outline-width: 2px !important; + + /** Font Weight **/ + --font-weight: normal !important; + --font-weight-bold: 700 !important; + --font-weight-semibold: 600 !important; + + /** Heading **/ + --heading-font-size-medium: var(--font-size-large) !important; + --heading-font-size-large: var(--font-size-xlarge) !important; + --heading-font-size-xlarge: var(--font-size-xxlarge) !important; + --heading-font-weight: var(--font-weight-semibold) !important; + + /** Icon **/ + --icon-color: var(--subtext1) !important; + --icon-color-critical: var(--red) !important; + --icon-color-information: var(--sky) !important; + --icon-color-success: var(--green) !important; + --icon-color-warning: var(--yellow) !important; + --icon-size: var(--icon-size-small) !important; + --icon-size-xsmall: var(--size-item-xsmall) !important; + --icon-size-small: var(--size-item-small) !important; + --icon-size-medium: 20px !important; + --icon-size-large: var(--size-item-medium) !important; + --icon-size-xlarge: var(--size-item-large) !important; + + /** Input - Text **/ + --input-text-min-height: var(--button-min-height) !important; + + /** Link **/ + --link-focus-outline-offset: 1px !important; + + /** Outline Color **/ + --outline-color-error: var(--red) !important; + + /** Size **/ + --size-item-xsmall: 12px !important; + --size-item-small: 16px !important; + --size-item-medium: 24px !important; + --size-item-large: 32px !important; + --size-item-xlarge: 48px !important; + + /** Space **/ + --space-xxsmall: calc(0.5 * var(--space-xsmall)) !important; + --space-xsmall: 0.267rem !important; + --space-small: calc(2 * var(--space-xsmall)) !important; + --space-medium: calc(3 * var(--space-xsmall)) !important; + --space-large: calc(4 * var(--space-xsmall)) !important; + --space-xlarge: calc(6 * var(--space-xsmall)) !important; + --space-xxlarge: calc(8 * var(--space-xsmall)) !important; + + /** Text **/ + --text-color-disabled: color-mix( + in srgb, + currentColor 40%, + transparent + ) !important; + --text-color-deemphasized: color-mix( + in srgb, + currentColor 69%, + transparent + ) !important; + --text-color-error: var(--red) !important; + } +} + +@layer tokens-prefers-contrast { + @media (prefers-contrast) { + :root, + :host(.anonymous-content-host) { + /** Attention Dot **/ + --attention-dot-color: var(--accent) !important; + + /** Background Color **/ + --background-color-box: var(--base) !important; + --background-color-box-info: var(--base) !important; + --background-color-canvas: var(--base) !important; + --background-color-critical: var(--base) !important; + --background-color-information: var(--base) !important; + --background-color-success: var(--base) !important; + --background-color-warning: var(--base) !important; + + /** Border **/ + --border-color: var(--text) !important; + --border-color-card: color-mix( + in srgb, + currentColor 41%, + transparent + ) !important; + --border-color-deemphasized: currentColor !important; + --border-color-interactive: var(--text) !important; + --border-color-transparent: var(--text) !important; + + /** Button **/ + --button-border-color: var(--button-text-color) !important; + --button-text-color-ghost-hover: var( + --button-text-color-hover + ) !important; + --button-text-color-ghost-active: var( + --button-text-color-active + ) !important; + + /** Icon **/ + --icon-color: var(--text) !important; + --icon-color-critical: var(--icon-color) !important; + --icon-color-information: var(--icon-color) !important; + --icon-color-success: var(--icon-color) !important; + --icon-color-warning: var(--icon-color) !important; + + /** Outline Color **/ + --outline-color-error: var(--border-color) !important; + + /** Text **/ + --text-color: var(--text) !important; + --text-color-deemphasized: inherit !important; + --text-color-error: inherit !important; + } + } +} + +@layer tokens-forced-colors { + @media (forced-colors) { + :root, + :host(.anonymous-content-host) { + /** Background Color **/ + --table-row-background-color-alternate: var(--base) !important; + + /** Border **/ + --border-color-card: var(--text) !important; + --border-color-deemphasized: var(--text) !important; + --border-color-interactive: var(--text) !important; + --border-color-interactive-hover: var(--accent) !important; + --border-color-interactive-active: var(--text) !important; + --border-color-interactive-disabled: var(--subtext0) !important; + --border-color-selected: var(--accent) !important; + + /** Button **/ + --button-background-color: var(--surface0) !important; + --button-background-color-hover: var(--crust) !important; + --button-background-color-active: var(--crust) !important; + --button-background-color-disabled: var(--surface0) !important; + --button-background-color-destructive: var( + --button-background-color-primary + ) !important; + --button-background-color-destructive-hover: var( + --button-background-color-primary-hover + ) !important; + --button-background-color-destructive-active: var( + --button-background-color-primary-active + ) !important; + --button-background-color-destructive-disabled: var( + --button-background-color-primary-disabled + ) !important; + --button-background-color-primary-disabled: var( + --button-text-color-disabled + ) !important; + --button-border-color: var(--border-color-interactive) !important; + --button-border-color-hover: var( + --border-color-interactive-hover + ) !important; + --button-border-color-active: var( + --border-color-interactive-active + ) !important; + --button-border-color-disabled: var( + --border-color-interactive-disabled + ) !important; + --button-border-color-destructive: var( + --button-border-color-primary + ) !important; + --button-border-color-destructive-hover: var( + --button-border-color-primary-hover + ) !important; + --button-border-color-destructive-active: var( + --button-border-color-primary-active + ) !important; + --button-border-color-destructive-disabled: var( + --button-border-color-primary-disabled + ) !important; + --button-border-color-primary: var(--surface0) !important; + --button-border-color-primary-hover: var(--crust) !important; + --button-border-color-primary-active: var(--text) !important; + --button-opacity-disabled: 1 !important; + --button-text-color: var(--text) !important; + --button-text-color-hover: var(--accent) !important; + --button-text-color-active: var(--accent) !important; + --button-text-color-disabled: var(--subtext0) !important; + --button-text-color-destructive: var( + --button-text-color-primary + ) !important; + --button-text-color-destructive-hover: var( + --button-text-color-primary-hover + ) !important; + --button-text-color-destructive-active: var( + --button-text-color-primary-active + ) !important; + --button-text-color-destructive-disabled: var( + --button-text-color-primary-disabled + ) !important; + --button-text-color-ghost-hover: var( + --button-text-color-hover + ) !important; + --button-text-color-ghost-active: var( + --button-text-color-active + ) !important; + --button-text-color-primary: var(--surface0) !important; + --button-text-color-primary-hover: var(--crust) !important; + + /** Color **/ + --color-accent-primary: var(--text) !important; + --color-accent-primary-hover: var(--accent) !important; + --color-accent-primary-active: var( + --color-accent-primary-hover + ) !important; + --color-accent-primary-selected: var(--accent) !important; + + /** Focus Outline **/ + --focus-outline-color: var(--text) !important; + + /** Link **/ + --link-color: var(--blue) !important; + --link-color-hover: var(--blue) !important; + --link-color-active: var(--red) !important; + --link-color-visited: var(--link-color) !important; + + /** Text **/ + --text-color-disabled: var(--subtext0) !important; + --text-color-accent-primary-selected: var(--crust) !important; + } + } +} diff --git a/home/tiling/niri.nix b/home/tiling/niri.nix index 431ba5a..470b1a2 100644 --- a/home/tiling/niri.nix +++ b/home/tiling/niri.nix @@ -512,10 +512,18 @@ "Mod+W".action.toggle-column-tabbed-display = { }; - "Print".action.screenshot = { }; - "Mod+Shift+S".action.screenshot = { }; - "Ctrl+Print".action.screenshot-screen = { }; - "Alt+Print".action.screenshot-window = { }; + "Print".action.screenshot = { + show-pointer = false; + }; + "Mod+Shift+S".action.screenshot = { + show-pointer = false; + }; + "Ctrl+Print".action.screenshot-screen = { + show-pointer = false; + }; + "Alt+Print".action.screenshot-window = { + show-pointer = false; + }; "Mod+Escape" = { action.toggle-keyboard-shortcuts-inhibit = { }; diff --git a/home/tiling/noctalia.nix b/home/tiling/noctalia.nix index 5997504..719dda0 100644 --- a/home/tiling/noctalia.nix +++ b/home/tiling/noctalia.nix @@ -206,7 +206,7 @@ deviceNativePath = "__default__"; displayMode = "icon-hover"; hideIfIdle = false; - hideIfNotDetected = true; + hideIfNotDetected = false; id = "Battery"; showNoctaliaPerformance = false; showPowerProfiles = true; diff --git a/packages/overlay.nix b/packages/overlay.nix index 213edab..9d542aa 100644 --- a/packages/overlay.nix +++ b/packages/overlay.nix @@ -21,19 +21,19 @@ final: prev: { riff = final.callPackage ./riff { }; - linuxPackages_asahi = prev.linuxPackages_asahi.override { - _kernelPatches = [ - { - name = "Mailbox and RTKIT support"; - patch = null; - structuredExtraConfig = with prev.lib.kernel; { - APPLE_MAILBOX = yes; - APPLE_RTKIT = yes; - APPLE_RTKIT_HELPER = yes; - RUST_APPLE_RTKIT = yes; - RUST_FW_LOADER_ABSTRACTIONS = yes; - }; - } - ]; - }; + # linuxPackages_asahi = prev.linuxPackages_asahi.override { + # _kernelPatches = [ + # { + # name = "Mailbox and RTKIT support"; + # patch = null; + # structuredExtraConfig = with prev.lib.kernel; { + # APPLE_MAILBOX = yes; + # APPLE_RTKIT = yes; + # APPLE_RTKIT_HELPER = yes; + # RUST_APPLE_RTKIT = yes; + # RUST_FW_LOADER_ABSTRACTIONS = yes; + # }; + # } + # ]; + # }; } From 5ce578bf37b323a4a2d6cb01dae0200d73f3e0f3 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Tue, 17 Feb 2026 19:44:10 -0500 Subject: [PATCH 272/282] add aerothemeplasma --- flake.lock | 63 +++++++++++++++++++-- flake.nix | 8 +++ home/default.nix | 15 ----- home/hosts/alien/default.nix | 69 +---------------------- home/hosts/peach/default.nix | 103 +++-------------------------------- home/kde/default.nix | 78 ++++---------------------- system/default.nix | 17 +++++- 7 files changed, 102 insertions(+), 251 deletions(-) diff --git a/flake.lock b/flake.lock index c89e0f5..3897e8c 100644 --- a/flake.lock +++ b/flake.lock @@ -1,5 +1,26 @@ { "nodes": { + "aerothemeplasma-nix": { + "inputs": { + "flake-parts": "flake-parts", + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1771215876, + "narHash": "sha256-aei7McII5+y4tROXfmOVyLbPO62sWttNkOKUlCSEIcg=", + "owner": "nyakase", + "repo": "aerothemeplasma-nix", + "rev": "b922785202501754c4503232aa5f172aeaef8b00", + "type": "github" + }, + "original": { + "owner": "nyakase", + "repo": "aerothemeplasma-nix", + "type": "github" + } + }, "apple-silicon": { "inputs": { "flake-compat": "flake-compat", @@ -151,6 +172,24 @@ } }, "flake-parts_2": { + "inputs": { + "nixpkgs-lib": "nixpkgs-lib_2" + }, + "locked": { + "lastModified": 1768135262, + "narHash": "sha256-PVvu7OqHBGWN16zSi6tEmPwwHQ4rLPU9Plvs8/1TUBY=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "80daad04eddbbf5a4d883996a73f3f542fa437ac", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_3": { "inputs": { "nixpkgs-lib": [ "nixvim", @@ -171,7 +210,7 @@ "type": "github" } }, - "flake-parts_3": { + "flake-parts_4": { "inputs": { "nixpkgs-lib": [ "nur", @@ -293,7 +332,7 @@ "cachyos-kernel": "cachyos-kernel", "cachyos-kernel-patches": "cachyos-kernel-patches", "flake-compat": "flake-compat_2", - "flake-parts": "flake-parts", + "flake-parts": "flake-parts_2", "nixpkgs": [ "nixpkgs" ] @@ -343,6 +382,21 @@ "type": "github" } }, + "nixpkgs-lib_2": { + "locked": { + "lastModified": 1765674936, + "narHash": "sha256-k00uTP4JNfmejrCLJOwdObYC9jHRrr/5M/a/8L2EIdo=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "2075416fcb47225d9b68ac469a5c4801a9c4dd85", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixpkgs.lib", + "type": "github" + } + }, "nixpkgs-stable": { "locked": { "lastModified": 1769598131, @@ -377,7 +431,7 @@ }, "nixvim": { "inputs": { - "flake-parts": "flake-parts_2", + "flake-parts": "flake-parts_3", "nixpkgs": [ "nixpkgs" ], @@ -419,7 +473,7 @@ }, "nur": { "inputs": { - "flake-parts": "flake-parts_3", + "flake-parts": "flake-parts_4", "nixpkgs": [ "nixpkgs" ] @@ -479,6 +533,7 @@ }, "root": { "inputs": { + "aerothemeplasma-nix": "aerothemeplasma-nix", "apple-silicon": "apple-silicon", "base16": "base16", "base16-discord": "base16-discord", diff --git a/flake.nix b/flake.nix index feffaa3..4aba175 100644 --- a/flake.nix +++ b/flake.nix @@ -38,6 +38,11 @@ inputs.home-manager.follows = "home-manager"; }; + aerothemeplasma-nix = { + url = "github:nyakase/aerothemeplasma-nix"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + niri = { url = "github:sodiboo/niri-flake"; inputs.nixpkgs.follows = "nixpkgs"; @@ -97,6 +102,7 @@ base16-discord, home-manager, plasma-manager, + aerothemeplasma-nix, niri, noctalia, spicetify-nix, @@ -214,6 +220,7 @@ ./system/tailscale ./system/hosts/${hostname} ./hardware/${hostname} + aerothemeplasma-nix.nixosModules.aerothemeplasma-nix niri.nixosModules.niri home-manager.nixosModules.home-manager noctalia.nixosModules.default @@ -242,6 +249,7 @@ scheme = "${tt-schemes}/base24/${config.colors.scheme}.yaml"; } ) + aerothemeplasma-nix.homeModules.aerothemeplasma-nix plasma-manager.homeModules.plasma-manager noctalia.homeModules.default spicetify-nix.homeManagerModules.default diff --git a/home/default.nix b/home/default.nix index d49376d..7bc7bd8 100755 --- a/home/default.nix +++ b/home/default.nix @@ -89,21 +89,6 @@ }; }; - # programs.plasma = { - # workspace = { - # colorScheme = "Catppuccin${config.catppuccinUpper.flavor}${config.catppuccinUpper.accent}"; - # cursor.theme = "catppuccin-${config.catppuccin.flavor}-${config.catppuccin.accent}-cursors"; - # splashScreen.theme = "Catpppuccin-${config.catppuccinUpper.flavor}-${config.catppuccinUpper.accent}"; - # }; - - # configFile = { - # kdeglobals.KDE = { - # DefaultDarkLookAndFeel = "Catpppuccin-${config.catppuccinUpper.flavor}-${config.catppuccinUpper.accent}"; - # DefaultLightLookAndFeel = "Catpppuccin-Latte-${config.catppuccinUpper.accent}"; - # }; - # }; - # }; - # This value determines the Home Manager release that your # configuration is compatible with. This helps avoid breakage # when a new Home Manager release introduces backwards diff --git a/home/hosts/alien/default.nix b/home/hosts/alien/default.nix index ca2572a..513501e 100644 --- a/home/hosts/alien/default.nix +++ b/home/hosts/alien/default.nix @@ -1,6 +1,7 @@ { config, pkgs, + lib, pkgs-unstable, spicetify-nix, ... @@ -51,72 +52,4 @@ theme = spicePkgs.themes.catppuccin; colorScheme = "mocha"; }; - - programs.plasma = { - panels = [ - # Alternative global menu to fit the modified taskbar - { - location = "bottom"; - height = 40; - hiding = "dodgewindows"; - lengthMode = "fit"; - floating = true; - alignment = "right"; - widgets = [ - "org.kde.plasma.appmenu" - { - plasmusicToolbar = { - panelIcon = { - albumCover = { - useAsIcon = false; - radius = 8; - }; - icon = "view-media-track"; - }; - playbackSource = "auto"; - musicControls.showPlaybackControls = true; - songText = { - displayInSeparateLines = true; - maximumWidth = 640; - scrolling = { - behavior = "alwaysScroll"; - speed = 3; - }; - }; - }; - } - "org.kde.plasma.marginsseparator" - { - systemTray.items = { - shown = [ - "org.kde.plasma.battery" - "org.kde.plasma.bluetooth" - "org.kde.plasma.networkmanagement" - "org.kde.plasma.brightness" - "org.kde.plasma.volume" - ]; - hidden = [ - "org.kde.plasma.clipboard" - "org.kde.plasma.manage-inputmethod" - "org.kde.plasma.cameraindicator" - "org.kde.plasma.keyboardlayout" - "org.kde.plasma.devicenotifier" - "org.kde.plasma.notifications" - "org.kde.plasma.weather" - "org.kde.plasma.printmanager" - "org.kde.plasma.keyboardindicator" - "org.kde.plasma.mediacontroller" - ]; - }; - } - { - digitalClock = { - calendar.firstDayOfWeek = "sunday"; - time.format = "12h"; - }; - } - ]; - } - ]; - }; } diff --git a/home/hosts/peach/default.nix b/home/hosts/peach/default.nix index 029415a..1415982 100644 --- a/home/hosts/peach/default.nix +++ b/home/hosts/peach/default.nix @@ -1,7 +1,12 @@ -{ pkgs, config, ... }: +{ + pkgs, + config, + lib, + ... +}: { colors = { - scheme = "catppuccin-mocha"; + scheme = "catppuccin-latte"; accent = "base09"; }; @@ -24,7 +29,7 @@ density = "spacious"; }; - programs.plasma = { + programs.plasma = lib.mkDefault { input.touchpads = [ { name = "Apple MTP multi-touch"; @@ -42,97 +47,5 @@ # this is really annoying on apple laptops org_kde_powerdevil.Sleep = [ ]; }; - - panels = [ - # Application name, Global menu and Song information and playback controls at the top - { - location = "top"; - height = 42; # 37 for 200%, 42 for 175% - floating = false; - widgets = [ - { - applicationTitleBar = { - behavior = { - activeTaskSource = "activeTask"; - }; - layout = { - elements = [ "windowTitle" ]; - horizontalAlignment = "right"; - showDisabledElements = "deactivated"; - verticalAlignment = "center"; - }; - overrideForMaximized.enable = false; - windowTitle = { - font = { - bold = false; - fit = "fixedSize"; - size = 10; - }; - hideEmptyTitle = true; - margins = { - bottom = 5; - left = 10; - right = 0; - top = 5; - }; - source = "appName"; - }; - }; - } - "org.kde.plasma.appmenu" - "org.kde.plasma.panelspacer" - { - plasmusicToolbar = { - panelIcon = { - albumCover = { - useAsIcon = true; - radius = 2; - }; - }; - playbackSource = "auto"; - musicControls.showPlaybackControls = false; - songText = { - displayInSeparateLines = true; - maximumWidth = 250; - scrolling = { - behavior = "alwaysScroll"; - speed = 3; - }; - }; - }; - } - "org.kde.plasma.marginsseparator" - { - systemTray.items = { - shown = [ - "org.kde.plasma.battery" - "org.kde.plasma.bluetooth" - "org.kde.plasma.networkmanagement" - "org.kde.plasma.brightness" - "org.kde.plasma.volume" - ]; - hidden = [ - "org.kde.plasma.clipboard" - "org.kde.plasma.manage-inputmethod" - "org.kde.plasma.cameraindicator" - "org.kde.plasma.keyboardlayout" - "org.kde.plasma.devicenotifier" - "org.kde.plasma.notifications" - "org.kde.plasma.weather" - "org.kde.plasma.printmanager" - "org.kde.plasma.keyboardindicator" - "org.kde.plasma.mediacontroller" - ]; - }; - } - { - digitalClock = { - calendar.firstDayOfWeek = "sunday"; - time.format = "12h"; - }; - } - ]; - } - ]; }; } diff --git a/home/kde/default.nix b/home/kde/default.nix index ce1437e..e383cf5 100644 --- a/home/kde/default.nix +++ b/home/kde/default.nix @@ -1,6 +1,7 @@ { config, pkgs, + lib, ... }: { @@ -22,21 +23,19 @@ }; }; - programs.plasma = { + aerothemeplasma = { enable = true; - overrideConfig = true; + plasma.enable = true; + fonts.enable = true; + }; + programs.plasma = lib.mkDefault { + enable = true; session = { sessionRestore.restoreOpenApplicationsOnLogin = "startWithEmptySession"; }; workspace = { - iconTheme = config.gtk.iconTheme.name; - windowDecorations = { - library = "org.kde.breeze"; - theme = "Breeze"; - }; - cursor.size = 24; wallpaperPictureOfTheDay.provider = "bing"; wallpaperFillMode = "preserveAspectCrop"; }; @@ -164,19 +163,6 @@ ]; kwin = { - titlebarButtons = { - left = [ - "on-all-desktops" - "keep-below-windows" - "keep-above-windows" - ]; - right = [ - "minimize" - "maximize" - "close" - ]; - }; - nightLight = { enable = true; mode = "location"; @@ -197,25 +183,16 @@ rows = 1; }; effects = { - desktopSwitching = { - animation = "slide"; - navigationWrapping = true; - }; - dimAdminMode.enable = true; - # dimInactive.enable = true; + # desktopSwitching = { + # animation = "slide"; + # navigationWrapping = true; + # }; minimization = { animation = "magiclamp"; duration = 500; }; shakeCursor.enable = true; snapHelper.enable = true; - # translucency.enable = true; - # windowOpenClose.animation = "fade"; - blur = { - enable = true; - noiseStrength = 8; - strength = 5; - }; }; }; @@ -250,38 +227,5 @@ kwinrc.Effect-blurplus.RefractionStrength = 10; ksplashrc.KSplash.Engine = "KSplashQML"; }; - - panels = [ - # Small dock at the bottom right - { - location = "bottom"; - height = 40; - hiding = "dodgewindows"; - lengthMode = "fit"; - floating = true; - alignment = "left"; - widgets = [ - { - kickoff = { - sortAlphabetically = true; - # icon = "nix-snowflake-white"; - }; - } - { - iconTasks = { - launchers = [ - "applications:firefox.desktop" - "applications:org.kde.dolphin.desktop" - "applications:vesktop.desktop" - "applications:kitty.desktop" - "applications:org.strawberrymusicplayer.strawberry.desktop" - "applications:writer.desktop" - ]; - }; - } - "org.kde.plasma.pager" - ]; - } - ]; }; } diff --git a/system/default.nix b/system/default.nix index 66c9a43..5f86afb 100755 --- a/system/default.nix +++ b/system/default.nix @@ -118,10 +118,23 @@ ]; }; + aerothemeplasma = { + enable = true; + plasma.enable = true; + fonts.enable = false; + plymouth.enable = false; + sddm.enable = true; + }; + services = { + # displayManager = { + # gdm.enable = true; + # defaultSession = "niri"; + # }; + desktopManager.plasma6.enable = true; displayManager = { - gdm.enable = true; - defaultSession = "niri"; + sddm.enable = true; + defaultSession = "aerothemeplasma"; }; libinput.enable = true; From b515a40804af92eed2051b8a6651ed1802ccd587 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Wed, 18 Feb 2026 13:49:50 -0500 Subject: [PATCH 273/282] fix cachyos kernel cache --- flake.lock | 51 +++++++++++++++++++++++++++++++++------------------ flake.nix | 4 ++-- 2 files changed, 35 insertions(+), 20 deletions(-) diff --git a/flake.lock b/flake.lock index 3897e8c..5efa795 100644 --- a/flake.lock +++ b/flake.lock @@ -77,11 +77,11 @@ "cachyos-kernel": { "flake": false, "locked": { - "lastModified": 1769435645, - "narHash": "sha256-xxIqw5x8U+13ya2BUcwmAW6BdpCpMhrMTn6Pd0bzocE=", + "lastModified": 1771263855, + "narHash": "sha256-akyds1g8cb742d2OrnQ4YciscpynsQ0+0YD2a8aZdvo=", "owner": "CachyOS", "repo": "linux-cachyos", - "rev": "e8675eeb9b48a23167b3e43f84e3be76e321935e", + "rev": "5ece16c7b4a7d1261da68153cafc318a60b78ce8", "type": "github" }, "original": { @@ -93,11 +93,11 @@ "cachyos-kernel-patches": { "flake": false, "locked": { - "lastModified": 1769420040, - "narHash": "sha256-OsO2Pi2oDE2hZoxCJ40mx9/wag9XXQ5FkcwIUcJN4Go=", + "lastModified": 1771246613, + "narHash": "sha256-GftqKiyIgMcSgVkbNqXQq7oNnoL1+EB9V71XG4lPBRs=", "owner": "CachyOS", "repo": "kernel-patches", - "rev": "d2f1d070c0303b3b2bcb71df73c623a274258e22", + "rev": "cb320a13e3c92f32ada27acb1fba8a828a22ae60", "type": "github" }, "original": { @@ -176,11 +176,11 @@ "nixpkgs-lib": "nixpkgs-lib_2" }, "locked": { - "lastModified": 1768135262, - "narHash": "sha256-PVvu7OqHBGWN16zSi6tEmPwwHQ4rLPU9Plvs8/1TUBY=", + "lastModified": 1769996383, + "narHash": "sha256-AnYjnFWgS49RlqX7LrC4uA+sCCDBj0Ry/WOJ5XWAsa0=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "80daad04eddbbf5a4d883996a73f3f542fa437ac", + "rev": "57928607ea566b5db3ad13af0e57e921e6b12381", "type": "github" }, "original": { @@ -333,20 +333,19 @@ "cachyos-kernel-patches": "cachyos-kernel-patches", "flake-compat": "flake-compat_2", "flake-parts": "flake-parts_2", - "nixpkgs": [ - "nixpkgs" - ] + "nixpkgs": "nixpkgs_2" }, "locked": { - "lastModified": 1769536613, - "narHash": "sha256-v1XqNPLHBb2rKiquxwDQU7lMmFbXVgYPDC8LMWcvVds=", + "lastModified": 1771353108, + "narHash": "sha256-5Xtei4UKrqRC6IYLgI1KEBaPN9Xfef5JeOexdqDWVeg=", "owner": "xddxdd", "repo": "nix-cachyos-kernel", - "rev": "9e9058ae652c374a26242bd034d82ed0c04ec53c", + "rev": "98e777cdcc39e6bd0312a9d756507ef9cbd284cb", "type": "github" }, "original": { "owner": "xddxdd", + "ref": "release", "repo": "nix-cachyos-kernel", "type": "github" } @@ -384,11 +383,11 @@ }, "nixpkgs-lib_2": { "locked": { - "lastModified": 1765674936, - "narHash": "sha256-k00uTP4JNfmejrCLJOwdObYC9jHRrr/5M/a/8L2EIdo=", + "lastModified": 1769909678, + "narHash": "sha256-cBEymOf4/o3FD5AZnzC3J9hLbiZ+QDT/KDuyHXVJOpM=", "owner": "nix-community", "repo": "nixpkgs.lib", - "rev": "2075416fcb47225d9b68ac469a5c4801a9c4dd85", + "rev": "72716169fe93074c333e8d0173151350670b824c", "type": "github" }, "original": { @@ -429,6 +428,22 @@ "type": "github" } }, + "nixpkgs_2": { + "locked": { + "lastModified": 1771353015, + "narHash": "sha256-gvMwFEdFCM2zFxLVDaAbhV2N9zK0IW/RceBundHUdZs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "931ef4db402cdab9dfe66fe4a2b01d50f6fe435d", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable-small", + "repo": "nixpkgs", + "type": "github" + } + }, "nixvim": { "inputs": { "flake-parts": "flake-parts_3", diff --git a/flake.nix b/flake.nix index 4aba175..66bcadf 100644 --- a/flake.nix +++ b/flake.nix @@ -9,8 +9,8 @@ nixpkgs.follows = "apple-silicon/nixpkgs"; nix-cachyos-kernel = { - url = "github:xddxdd/nix-cachyos-kernel"; - inputs.nixpkgs.follows = "nixpkgs"; + url = "github:xddxdd/nix-cachyos-kernel/release"; + # inputs.nixpkgs.follows = "nixpkgs"; }; base16 = { From ac0ff3bf2f4e9f581080df16f39b0ed225354a53 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Thu, 19 Feb 2026 11:08:42 -0500 Subject: [PATCH 274/282] redo neovim theme --- home/terminal/neovim.nix | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/home/terminal/neovim.nix b/home/terminal/neovim.nix index e1fb124..65ace66 100644 --- a/home/terminal/neovim.nix +++ b/home/terminal/neovim.nix @@ -45,27 +45,29 @@ state = "base16_custom"; }; + # this is helpful for figuring out what color is what: + # https://github.com/tinted-theming/schemes/blob/spec-0.11/base24/catppuccin-frappe.yaml custom_palettes = with config.scheme.withHashtag; { main.base16_custom = { color0 = base00; # background color1 = base01; # lighter background color2 = base02; # selection background - color3 = base03; # comments + color3 = base03; # color inside ${} color4 = base04; # dark foreground - color5 = base05; # default foreground - color6 = base06; # light foreground + color5 = config.scheme.withHashtag.${config.colors.accent}; # default foreground, left side of assignments + color6 = base03; # comments color7 = base07; # lightest foreground color8 = base05; # variables/tags }; accent.base16_custom = { - accent0 = config.scheme.withHashtag.${config.colors.accent}; # integers/constants - accent1 = base0A; # classes/search - accent2 = base0B; # strings/inherited - accent3 = base0C; # support/regex - accent4 = base0D; # functions/headings - accent5 = base0E; # keywords/bold - accent6 = base0F; # deprecated/embedded + accent0 = base08; # red, integers/constants + accent1 = base0A; # orange, classes/search + accent2 = base0A; # yellow, strings/inherited + accent3 = base0B; # green, support/regex + accent4 = base0D; # blue, functions/headings + accent5 = base0E; # purple, keywords/bold + accent6 = base07; # lavender, deprecated/embedded }; state.base16_custom = { From 879d391e1a34c193a8110ccc04abe17378a82d5f Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Thu, 19 Feb 2026 11:30:42 -0500 Subject: [PATCH 275/282] use base16 for fish --- home/terminal/fish.nix | 21 ++++++++++++++++++- home/terminal/fish_functions/fish-prompt.fish | 10 ++++----- 2 files changed, 25 insertions(+), 6 deletions(-) diff --git a/home/terminal/fish.nix b/home/terminal/fish.nix index 03f177e..ca784f0 100644 --- a/home/terminal/fish.nix +++ b/home/terminal/fish.nix @@ -1,4 +1,9 @@ -{ pkgs, ... }: +{ + pkgs, + config, + lib, + ... +}: { home.packages = with pkgs; [ kdePackages.qttools @@ -14,6 +19,7 @@ gzip = "pigz"; ls = "eza"; gl = "git log"; + gd = "git diff"; ga = "git add -v ."; gac = "git add -v . && git commit"; gaca = "git add -v . && git commit --amend --no-edit"; @@ -39,5 +45,18 @@ }; }; }; + + home.file.".config/fish/colors.fish" = { + text = lib.concatStringsSep "\n" ( + lib.mapAttrsToList (name: value: "set -g color_${name} ${value}") ( + lib.filterAttrs ( + n: v: builtins.isString v && builtins.match "^base[0-9A-Fa-f]{2}$" n != null + ) config.scheme + ) + ++ [ "set -g color_accent ${config.scheme.${config.colors.accent}}" ] + ); + force = true; + }; + programs.man.generateCaches = false; } diff --git a/home/terminal/fish_functions/fish-prompt.fish b/home/terminal/fish_functions/fish-prompt.fish index e13d31d..2f4fca7 100644 --- a/home/terminal/fish_functions/fish-prompt.fish +++ b/home/terminal/fish_functions/fish-prompt.fish @@ -1,4 +1,4 @@ -# source ~/.config/fish/colors.fish +source ~/.config/fish/colors.fish set -l last_status $status set -l nix_shell_info ( if test -n "$IN_NIX_SHELL" @@ -11,14 +11,14 @@ set -g color_cwd green # Set host color based on hostname if test (hostname) = peach - set -g color_host yellow + set -g color_host $color_accent else if test (hostname) = alien - set -g color_host yellow + set -g color_host $color_accent else if test (hostname) = vm - set -g color_host yellow + set -g color_host $color_accent set -g color_cwd normal else if test (uname) = Darwin - set -g color_host yellow + set -g color_host $color_base0A end set -l user_host (set_color $color_user)"$USER"(set_color normal)"@"(set_color $color_host)(prompt_hostname)(set_color normal) From c031852e71d99300fc0a41b13536ea2db8537ff5 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Thu, 19 Feb 2026 11:34:00 -0500 Subject: [PATCH 276/282] update kitty theme --- home/terminal/kitty.nix | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/home/terminal/kitty.nix b/home/terminal/kitty.nix index 423ae5c..b6525dc 100644 --- a/home/terminal/kitty.nix +++ b/home/terminal/kitty.nix @@ -27,13 +27,13 @@ let url_color ${base06} # Kitty window border colors - active_border_color ${base09} - inactive_border_color ${base03} - bell_border_color ${base0A} + active_border_color ${config.scheme.withHashtag.${config.colors.accent}} + inactive_border_color ${base01} + bell_border_color ${base12} # Tab bar colors active_tab_foreground ${base11} - active_tab_background ${base09} + active_tab_background ${config.scheme.withHashtag.${config.colors.accent}} inactive_tab_foreground ${base05} inactive_tab_background ${base10} tab_bar_background ${base11} From 01c867c33813b4a29bdad275810757dfc46d3f07 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Thu, 19 Feb 2026 11:34:13 -0500 Subject: [PATCH 277/282] change searxng weights --- system/searxng/default.nix | 3 +++ 1 file changed, 3 insertions(+) diff --git a/system/searxng/default.nix b/system/searxng/default.nix index 09337d8..75161b5 100644 --- a/system/searxng/default.nix +++ b/system/searxng/default.nix @@ -58,6 +58,9 @@ "duckduckgo".disabled = true; "brave".disabled = true; "bing".disabled = false; + "bing".weight = 0.4; + "startpage".disabled = false; + "startpage".weight = 1.4; "google".disabled = false; "mojeek".disabled = true; "mwmbl".disabled = false; From ac32db64b2913e94415d797505ecb88687b1d223 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Thu, 19 Feb 2026 11:43:12 -0500 Subject: [PATCH 278/282] remove riff for now --- home/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/home/default.nix b/home/default.nix index 7bc7bd8..dafbbba 100755 --- a/home/default.nix +++ b/home/default.nix @@ -59,7 +59,7 @@ musescore gimp calibre - riff + # riff dissent loupe spotify-player From bc22718e444d7fea43ae7e2bcbdb6aec68c9f6ca Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Thu, 19 Feb 2026 11:44:48 -0500 Subject: [PATCH 279/282] lock tt-schemes to good catppuccin version --- flake.lock | 7 ++++--- flake.nix | 2 +- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/flake.lock b/flake.lock index 5efa795..ea561aa 100644 --- a/flake.lock +++ b/flake.lock @@ -625,16 +625,17 @@ "tt-schemes": { "flake": false, "locked": { - "lastModified": 1768516483, - "narHash": "sha256-AWTIYZ1tZab0YwAQwgt5yO4ucqZoc4iXX002Byy7pRY=", + "lastModified": 1770951657, + "narHash": "sha256-A9KDJ0/yL3iek7mN6p0BF+1+dVGi4l/YCquRmTGFO7I=", "owner": "tinted-theming", "repo": "schemes", - "rev": "43dd14f6466a782bd57419fdfb5f398c74d6ac53", + "rev": "b9f335ad6a0b7d85b9c2eb932c3215f7429f7d11", "type": "github" }, "original": { "owner": "tinted-theming", "repo": "schemes", + "rev": "b9f335ad6a0b7d85b9c2eb932c3215f7429f7d11", "type": "github" } }, diff --git a/flake.nix b/flake.nix index 66bcadf..f309847 100644 --- a/flake.nix +++ b/flake.nix @@ -18,7 +18,7 @@ }; tt-schemes = { - url = "github:tinted-theming/schemes"; + url = "github:tinted-theming/schemes/b9f335ad6a0b7d85b9c2eb932c3215f7429f7d11"; flake = false; }; From 3af156e3e8b28d0d8e34081bd9ae435392509588 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Thu, 19 Feb 2026 13:12:38 -0500 Subject: [PATCH 280/282] use nixpkgs-unstable again --- flake.lock | 21 ++++++++++----------- flake.nix | 2 +- 2 files changed, 11 insertions(+), 12 deletions(-) diff --git a/flake.lock b/flake.lock index ea561aa..d7f64b0 100644 --- a/flake.lock +++ b/flake.lock @@ -281,11 +281,11 @@ "xwayland-satellite-unstable": "xwayland-satellite-unstable" }, "locked": { - "lastModified": 1769647464, - "narHash": "sha256-SDZms/fjrXRgL+QA+RfvTMClhPGfPn1TnIdNwoujEo4=", + "lastModified": 1771514840, + "narHash": "sha256-t3WbZvwoDj/75YDX/nwkZuxanZLZaWr9meSfKswaN6g=", "owner": "sodiboo", "repo": "niri-flake", - "rev": "e3d4bf00f7d40fca03fecab5c7a46277a6eb9fed", + "rev": "4f69ab280e9bb34e2c0b67fdfa6f0978a170ef56", "type": "github" }, "original": { @@ -314,11 +314,11 @@ "niri-unstable": { "flake": false, "locked": { - "lastModified": 1769577126, - "narHash": "sha256-v9vz9Rj4MGwPuhGELdvpRKl2HH+xvkgat6VwL0L86Fg=", + "lastModified": 1771305475, + "narHash": "sha256-lqweVTwHhYc+9T33cysp38gVwxaibGJHriOPZXWyhCY=", "owner": "YaLTeR", "repo": "niri", - "rev": "f30db163b5748e8cf95c05aba77d0d3736f40543", + "rev": "a2a52911757cb3b497db9407592f9b4c439571ea", "type": "github" }, "original": { @@ -557,8 +557,7 @@ "niri": "niri", "nix-cachyos-kernel": "nix-cachyos-kernel", "nixpkgs": [ - "apple-silicon", - "nixpkgs" + "nixpkgs-unstable" ], "nixpkgs-stable": "nixpkgs-stable", "nixpkgs-unstable": "nixpkgs-unstable", @@ -659,11 +658,11 @@ "xwayland-satellite-unstable": { "flake": false, "locked": { - "lastModified": 1769356222, - "narHash": "sha256-Q0BVubV9ZnmLs506EhBSPglM+YJK56wsQNbeecvWPUo=", + "lastModified": 1771195969, + "narHash": "sha256-BUE41HjLIGPjq3U8VXPjf8asH8GaMI7FYdgrIHKFMXA=", "owner": "Supreeeme", "repo": "xwayland-satellite", - "rev": "cf14278b92b0a91d01587f09b4b00ea655ae24e6", + "rev": "536bd32efc935bf876d6de385ec18a1b715c9358", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index f309847..c0ea05a 100644 --- a/flake.nix +++ b/flake.nix @@ -6,7 +6,7 @@ nixpkgs-unstable.url = "github:NixOS/nixpkgs/nixos-unstable"; # edit this to switch between stable and unstable - nixpkgs.follows = "apple-silicon/nixpkgs"; + nixpkgs.follows = "nixpkgs-unstable"; nix-cachyos-kernel = { url = "github:xddxdd/nix-cachyos-kernel/release"; From bda3095a15fa895474faf9be6ad89987828339f9 Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Thu, 19 Feb 2026 13:12:57 -0500 Subject: [PATCH 281/282] update flake --- flake.lock | 91 ++++++++++++++++++++++--------------------- flake.nix | 2 +- home/apps/discord.nix | 3 -- home/default.nix | 2 +- home/kde/default.nix | 10 ++--- system/default.nix | 16 ++++---- 6 files changed, 61 insertions(+), 63 deletions(-) diff --git a/flake.lock b/flake.lock index d7f64b0..02f797e 100644 --- a/flake.lock +++ b/flake.lock @@ -8,11 +8,11 @@ ] }, "locked": { - "lastModified": 1771215876, - "narHash": "sha256-aei7McII5+y4tROXfmOVyLbPO62sWttNkOKUlCSEIcg=", + "lastModified": 1771513958, + "narHash": "sha256-KoDcVuYgmP/kX6pd9uCW5Wo5Xn3y0SumrMaCLu5ojdY=", "owner": "nyakase", "repo": "aerothemeplasma-nix", - "rev": "b922785202501754c4503232aa5f172aeaef8b00", + "rev": "348cbf661738840d0ae02d5eda7f4c076e59b733", "type": "github" }, "original": { @@ -27,11 +27,11 @@ "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1771054135, - "narHash": "sha256-0RYmnOk40U4ZGbW/+3rHlNndrsuHCz9h+xequKWgwHQ=", + "lastModified": 1771511514, + "narHash": "sha256-qhtonMK07BCVC/wZ+pZ9/MKhcTric7YUaCpW6pOg8IM=", "owner": "nix-community", "repo": "nixos-apple-silicon", - "rev": "357186cca0f4c7801ff16970e4b6a05e74fd88e0", + "rev": "2b92d495204be0b10845c66361444dbc8441c68d", "type": "github" }, "original": { @@ -61,11 +61,11 @@ "base16-discord": { "flake": false, "locked": { - "lastModified": 1768273180, - "narHash": "sha256-uw7lz53YHxvPEyXZiS+NJFhKMb6AMUvVpCLH81NjM7U=", + "lastModified": 1771164756, + "narHash": "sha256-6NU5HQZVZ1mSNaIyZxE+U35nF46uXH/768y3auhQdiI=", "owner": "imbypass", "repo": "base16-discord", - "rev": "d4df17db31276d94cc1a8988f34e813aae1f3fb4", + "rev": "8b005607e5783f751fe369f0442965a86eed8051", "type": "github" }, "original": { @@ -93,11 +93,11 @@ "cachyos-kernel-patches": { "flake": false, "locked": { - "lastModified": 1771246613, - "narHash": "sha256-GftqKiyIgMcSgVkbNqXQq7oNnoL1+EB9V71XG4lPBRs=", + "lastModified": 1771399550, + "narHash": "sha256-Q2rMJcwZiI1rn8H27gLleKA3ATW/EykukyGR6S1tBPk=", "owner": "CachyOS", "repo": "kernel-patches", - "rev": "cb320a13e3c92f32ada27acb1fba8a828a22ae60", + "rev": "021aae790c8555a4bb6e2135c6b777bf6fdcba02", "type": "github" }, "original": { @@ -109,11 +109,11 @@ "catppuccin-discord": { "flake": false, "locked": { - "lastModified": 1769446491, - "narHash": "sha256-7v1Hu6QofOyFOGnHeqHFK0JsxUxdJ9uTjI7nM7mdTsg=", + "lastModified": 1770426312, + "narHash": "sha256-rxvHIifq5CYIBPwFA2SpOrWT+sG/z0ItXT3sx2wbEqg=", "owner": "catppuccin", "repo": "discord", - "rev": "f235754322320211a8646d963466fac402e5c297", + "rev": "b9b5547f0b32296d2389716ef606de87b3c1e7c7", "type": "github" }, "original": { @@ -197,11 +197,11 @@ ] }, "locked": { - "lastModified": 1768135262, - "narHash": "sha256-PVvu7OqHBGWN16zSi6tEmPwwHQ4rLPU9Plvs8/1TUBY=", + "lastModified": 1769996383, + "narHash": "sha256-AnYjnFWgS49RlqX7LrC4uA+sCCDBj0Ry/WOJ5XWAsa0=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "80daad04eddbbf5a4d883996a73f3f542fa437ac", + "rev": "57928607ea566b5db3ad13af0e57e921e6b12381", "type": "github" }, "original": { @@ -254,11 +254,11 @@ ] }, "locked": { - "lastModified": 1769579508, - "narHash": "sha256-EE2bs7xFrC64qrj0N2zP6E6e/nmhcdw6v/grdYi+BiY=", + "lastModified": 1771519029, + "narHash": "sha256-H59Qf82wv5kBXVoyXsmUKW+9J3o8FqgY4uKaLdsLdLg=", "owner": "nix-community", "repo": "home-manager", - "rev": "eec72f127831326b042d1f35003767a4ab6a9516", + "rev": "167e0b6837115e672ec5f58e2b0ea39093abe807", "type": "github" }, "original": { @@ -336,11 +336,11 @@ "nixpkgs": "nixpkgs_2" }, "locked": { - "lastModified": 1771353108, - "narHash": "sha256-5Xtei4UKrqRC6IYLgI1KEBaPN9Xfef5JeOexdqDWVeg=", + "lastModified": 1771438239, + "narHash": "sha256-/d5FnrQ1nvZ9n1I7o/hMTzjd8tTBvV5rT24Nh7h59RQ=", "owner": "xddxdd", "repo": "nix-cachyos-kernel", - "rev": "98e777cdcc39e6bd0312a9d756507ef9cbd284cb", + "rev": "58f338b00bc5619144a6f3082eed5c83e79b279b", "type": "github" }, "original": { @@ -398,11 +398,11 @@ }, "nixpkgs-stable": { "locked": { - "lastModified": 1769598131, - "narHash": "sha256-e7VO/kGLgRMbWtpBqdWl0uFg8Y2XWFMdz0uUJvlML8o=", + "lastModified": 1771419570, + "narHash": "sha256-bxAlQgre3pcQcaRUm/8A0v/X8d2nhfraWSFqVmMcBcU=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "fa83fd837f3098e3e678e6cf017b2b36102c7211", + "rev": "6d41bc27aaf7b6a3ba6b169db3bd5d6159cfaa47", "type": "github" }, "original": { @@ -414,11 +414,11 @@ }, "nixpkgs-unstable": { "locked": { - "lastModified": 1769461804, - "narHash": "sha256-msG8SU5WsBUfVVa/9RPLaymvi5bI8edTavbIq3vRlhI=", + "lastModified": 1771369470, + "narHash": "sha256-0NBlEBKkN3lufyvFegY4TYv5mCNHbi5OmBDrzihbBMQ=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "bfc1b8a4574108ceef22f02bafcf6611380c100d", + "rev": "0182a361324364ae3f436a63005877674cf45efb", "type": "github" }, "original": { @@ -453,11 +453,11 @@ "systems": "systems" }, "locked": { - "lastModified": 1769537308, - "narHash": "sha256-N7famD4s2hiDIicr9mJWhUj8l9EULB60+1QN/S+UjeM=", + "lastModified": 1771135771, + "narHash": "sha256-wyvBIhDuyCRyjB3yPg77qoyxrlgQtBR1rVW3c9knV3E=", "owner": "nix-community", "repo": "nixvim", - "rev": "7addac6d111837217c16762968a9042eac703f7e", + "rev": "ed0424f0b08d303a7348f52f7850ad1b2704f9ba", "type": "github" }, "original": { @@ -473,11 +473,11 @@ ] }, "locked": { - "lastModified": 1769607092, - "narHash": "sha256-P0KGVjKtN+hkZWskpxr2iXWalPb0SKAgRVyMFZxdxf0=", + "lastModified": 1771513929, + "narHash": "sha256-dPeHevAT1Cb2w/Wrfz/d5i6RfO8bvbGl/KrTPxU2l3w=", "owner": "noctalia-dev", "repo": "noctalia-shell", - "rev": "b2b16ecdda1bc04001a7c714bf8124160a86ddfc", + "rev": "9c47ce03f200e0b8fc515d973440d5bc3e359785", "type": "github" }, "original": { @@ -494,11 +494,11 @@ ] }, "locked": { - "lastModified": 1769604042, - "narHash": "sha256-KQGbmKSY3tA4S8qFN76xd+3cbM0mAtPgoUVbjWrprcs=", + "lastModified": 1771516225, + "narHash": "sha256-G2cPs4Ic8Z1Aq8QfMa1VwJoBwIhVpwzcQ036ZhI4oXc=", "owner": "nix-community", "repo": "NUR", - "rev": "92f5f3f18a365341dd424314a80253f5ede071e4", + "rev": "d4694f0614419034910767b5a036384ab358b138", "type": "github" }, "original": { @@ -520,6 +520,7 @@ "original": { "owner": "OpenMW", "repo": "openmw", + "rev": "01bcd6a6369fe461caaf900354967b4751aede7a", "type": "gitlab" } }, @@ -533,11 +534,11 @@ ] }, "locked": { - "lastModified": 1767662275, - "narHash": "sha256-d5Q1GmQ+sW1Bt8cgDE0vOihzLaswsm8cSdg8124EqXE=", + "lastModified": 1770766818, + "narHash": "sha256-12RCFLyAedyMOdenUi7cN3ioJPEGjA/ZG1BLjugfUVs=", "owner": "nix-community", "repo": "plasma-manager", - "rev": "51816be33a1ff0d4b22427de83222d5bfa96d30e", + "rev": "44b928068359b7d2310a34de39555c63c93a2c90", "type": "github" }, "original": { @@ -578,11 +579,11 @@ "systems": "systems_2" }, "locked": { - "lastModified": 1769316930, - "narHash": "sha256-4EOGHYLpIscwr+6drHE28Qj7NDjjowp2Vd8QkXjdBBE=", + "lastModified": 1771268051, + "narHash": "sha256-nGqPcngnezoT+/xAvw3UDjwdKP2MC4fO315A/Otb9eE=", "owner": "Gerg-L", "repo": "spicetify-nix", - "rev": "b2ce438f386943ef611e196a178af2d79042903b", + "rev": "b930de84c561f62a0c39a6a57c2ab553a97e8495", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index c0ea05a..cfaa1e2 100644 --- a/flake.nix +++ b/flake.nix @@ -82,7 +82,7 @@ }; openmw = { - url = "gitlab:OpenMW/openmw"; + url = "gitlab:OpenMW/openmw/01bcd6a6369fe461caaf900354967b4751aede7a"; flake = false; }; diff --git a/home/apps/discord.nix b/home/apps/discord.nix index c0c6683..e488076 100644 --- a/home/apps/discord.nix +++ b/home/apps/discord.nix @@ -4,12 +4,9 @@ ... }: let - catppuccin-discord = "${pkgs.catppuccin-discord}/share/catppuccin-discord/catppuccin-mocha-*.theme.css"; - mergedThemes = pkgs.runCommand "mergedConfig" { } '' mkdir -p $out cp -rvf ${pkgs.base16-discord-git}/base16.css $out/base16.css - cp -rvf ${catppuccin-discord} $out ''; vesktopSettings = { diff --git a/home/default.nix b/home/default.nix index dafbbba..53fa623 100755 --- a/home/default.nix +++ b/home/default.nix @@ -39,7 +39,7 @@ ffmpeg-full # kde and kde theming - kde-rounded-corners + # kde-rounded-corners kdePackages.partitionmanager pkgs.catppuccin-cursors.mochaPeach diff --git a/home/kde/default.nix b/home/kde/default.nix index e383cf5..17814d4 100644 --- a/home/kde/default.nix +++ b/home/kde/default.nix @@ -23,11 +23,11 @@ }; }; - aerothemeplasma = { - enable = true; - plasma.enable = true; - fonts.enable = true; - }; + # aerothemeplasma = { + # enable = true; + # plasma.enable = true; + # fonts.enable = true; + # }; programs.plasma = lib.mkDefault { enable = true; diff --git a/system/default.nix b/system/default.nix index 5f86afb..332e25f 100755 --- a/system/default.nix +++ b/system/default.nix @@ -118,13 +118,13 @@ ]; }; - aerothemeplasma = { - enable = true; - plasma.enable = true; - fonts.enable = false; - plymouth.enable = false; - sddm.enable = true; - }; + # aerothemeplasma = { + # enable = true; + # plasma.enable = true; + # fonts.enable = false; + # plymouth.enable = false; + # sddm.enable = true; + # }; services = { # displayManager = { @@ -134,7 +134,7 @@ desktopManager.plasma6.enable = true; displayManager = { sddm.enable = true; - defaultSession = "aerothemeplasma"; + # defaultSession = "aerothemeplasma"; }; libinput.enable = true; From 9fbd1a5d990c489fab0e48c8c4a7673c99e93d3a Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Thu, 19 Feb 2026 17:02:50 -0500 Subject: [PATCH 282/282] wip: kvantum theme --- flake.lock | 17 +++++++++++ flake.nix | 7 +++++ home/services/qt.nix | 36 ++++++++++++++++++---- packages/kvlibadwaita/default.nix | 51 +++++++++++++++++++++++++++++++ packages/overlay.nix | 4 +++ 5 files changed, 109 insertions(+), 6 deletions(-) create mode 100644 packages/kvlibadwaita/default.nix diff --git a/flake.lock b/flake.lock index 02f797e..c059b64 100644 --- a/flake.lock +++ b/flake.lock @@ -267,6 +267,22 @@ "type": "github" } }, + "kvlibadwaita": { + "flake": false, + "locked": { + "lastModified": 1757782301, + "narHash": "sha256-jCXME6mpqqWd7gWReT04a//2O83VQcOaqIIXa+Frntc=", + "owner": "GabePoel", + "repo": "KvLibadwaita", + "rev": "1f4e0bec44b13dabfa1fe4047aa8eeaccf2f3557", + "type": "github" + }, + "original": { + "owner": "GabePoel", + "repo": "KvLibadwaita", + "type": "github" + } + }, "niri": { "inputs": { "niri-stable": "niri-stable", @@ -555,6 +571,7 @@ "base16-discord": "base16-discord", "catppuccin-discord": "catppuccin-discord", "home-manager": "home-manager", + "kvlibadwaita": "kvlibadwaita", "niri": "niri", "nix-cachyos-kernel": "nix-cachyos-kernel", "nixpkgs": [ diff --git a/flake.nix b/flake.nix index cfaa1e2..1585a9e 100644 --- a/flake.nix +++ b/flake.nix @@ -90,6 +90,11 @@ url = "github:catppuccin/discord"; flake = false; }; + + kvlibadwaita = { + url = "github:GabePoel/KvLibadwaita"; + flake = false; + }; }; outputs = @@ -111,6 +116,7 @@ apple-silicon, openmw, catppuccin-discord, + kvlibadwaita, ... }: let @@ -155,6 +161,7 @@ (final: prev: { openmw-git = openmw; catppuccin-discord-git = catppuccin-discord; + kvlibadwaita-git = kvlibadwaita; base16-discord-git = base16-discord; }) (import ./packages/overlay.nix) diff --git a/home/services/qt.nix b/home/services/qt.nix index 8671894..6f322fc 100644 --- a/home/services/qt.nix +++ b/home/services/qt.nix @@ -4,15 +4,39 @@ ... }: { + home.packages = with pkgs; [ + kdePackages.qtstyleplugin-kvantum + themix-gui + kvmarwaita + ]; + + # home.file.".config/Kvantum" = { + # source = ./kvantum; + # recursive = true; + # force = true; + # }; + + # home.file.".config/Kvantum/kvantum.kvconfig" = { + # text = '' + # [General] + # theme= + # ''; + # force = true; + # }; + qt = { enable = true; + style = { + name = "kvantum"; + package = pkgs.qt6Packages.qtstyleplugin-kvantum; + }; qt5ctSettings = { Appearance = { - style = "Breeze"; + style = "kvantum"; icon_theme = config.gtk.iconTheme.name; - color_scheme_path = "/home/${config.userOptions.username}/.config/qt5ct/qt5ct.conf"; - custom_palette = true; + # color_scheme_path = "/home/${config.userOptions.username}/.config/qt5ct/qt5ct.conf"; + # custom_palette = true; standard_dialogs = "xdgdesktopportal"; }; Fonts = config.qt.qt6ctSettings.Fonts; @@ -21,10 +45,10 @@ qt6ctSettings = { Appearance = { - style = "Breeze"; + style = "kvantum"; icon_theme = config.gtk.iconTheme.name; - color_scheme_path = "/home/${config.userOptions.username}/.config/qt6ct/qt6ct.conf"; - custom_palette = true; + # color_scheme_path = "/home/${config.userOptions.username}/.config/qt6ct/qt6ct.conf"; + # custom_palette = true; standard_dialogs = "xdgdesktopportal"; }; diff --git a/packages/kvlibadwaita/default.nix b/packages/kvlibadwaita/default.nix new file mode 100644 index 0000000..3d729dd --- /dev/null +++ b/packages/kvlibadwaita/default.nix @@ -0,0 +1,51 @@ +{ + lib, + stdenvNoCC, + kvlibadwaita-git, + colorScheme ? null, +}: + +stdenvNoCC.mkDerivation { + pname = "kvlibadwaita"; + version = "git"; + + # Pulls from the flake-provided git variable + src = kvlibadwaita-git; + + # We take the colors as an input but do nothing with them yet per your instructions. + # They are passed into the derivation environment just in case, but unused for now. + passthru = { + inherit colorScheme; + }; + + # Standard phases are skipped for pure file-copying derivations to save time + dontConfigure = true; + dontBuild = true; + + installPhase = '' + runHook preInstall + + # Recreate the exact requested directory structure in the output + mkdir -p $out/src/Colors + mkdir -p $out/src/KvLibadwaita + + # Export Colors + cp "src/Colors/Libadwaita Dark.colors" "$out/src/Colors/" + cp "src/Colors/Libadwaita Light.colors" "$out/src/Colors/" + + # Export KvLibadwaita files + cp "src/KvLibadwaita/KvLibadwaita.kvconfig" "$out/src/KvLibadwaita/" + cp "src/KvLibadwaita/KvLibadwaita.svg" "$out/src/KvLibadwaita/" + cp "src/KvLibadwaita/KvLibadwaitaDark.kvconfig" "$out/src/KvLibadwaita/" + cp "src/KvLibadwaita/KvLibadwaitaDark.svg" "$out/src/KvLibadwaita/" + + runHook postInstall + ''; + + meta = with lib; { + description = "Libadwaita theme for Kvantum"; + homepage = "https://github.com/GabePoel/kvlibadwaita"; # Update if pointing to a specific fork + license = licenses.gpl3Only; + platforms = platforms.linux; + }; +} diff --git a/packages/overlay.nix b/packages/overlay.nix index 9d542aa..9850c55 100644 --- a/packages/overlay.nix +++ b/packages/overlay.nix @@ -5,6 +5,10 @@ final: prev: { inherit (final) catppuccin-discord-git; }; + kvlibadwaita = final.callPackage ./kvlibadwaita { + inherit (final) kvlibadwaita-git; + }; + openmw = prev.openmw.overrideAttrs (oldAttrs: { pname = "openmw"; src = final.openmw-git;