format with alejandra

This commit is contained in:
Sean Kovacs 2025-12-24 11:29:41 -05:00
commit 28043aded9
Signed by: sckova
GPG key ID: 00F325187C68651A
35 changed files with 578 additions and 589 deletions

173
flake.nix
View file

@ -57,37 +57,36 @@
}; };
}; };
outputs = outputs = {
{ nixpkgs,
nixpkgs, nix-cachyos-kernel,
nix-cachyos-kernel, catppuccin,
catppuccin, catppuccin-palette,
catppuccin-palette, home-manager,
home-manager, plasma-manager,
plasma-manager, niri,
niri, noctalia,
noctalia, spicetify-nix,
spicetify-nix, nur,
nur, nixvim,
nixvim, apple-silicon,
apple-silicon, ...
... }: let
mkNixosSystem = {
hostname,
system,
extraModules ? [],
extraSpecialArgs ? {},
}: }:
let nixpkgs.lib.nixosSystem {
mkNixosSystem = inherit system;
{ specialArgs =
hostname, {
system,
extraModules ? [ ],
extraSpecialArgs ? { },
}:
nixpkgs.lib.nixosSystem {
inherit system;
specialArgs = {
inherit catppuccin; inherit catppuccin;
} }
// extraSpecialArgs; // extraSpecialArgs;
modules = [ modules =
[
{ {
nixpkgs.overlays = [ nixpkgs.overlays = [
catppuccin-palette.overlays.default catppuccin-palette.overlays.default
@ -120,73 +119,71 @@
} }
] ]
++ extraModules; ++ extraModules;
}; };
mkHomeConfig = mkHomeConfig = {
{ user,
user, hostname,
hostname, system,
system, }:
}: home-manager.lib.homeManagerConfiguration {
home-manager.lib.homeManagerConfiguration { pkgs = import nixpkgs {
pkgs = import nixpkgs { inherit system;
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 ]; }
];
}; };
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 { alien = mkNixosSystem {
hostname = "alien"; hostname = "alien";
system = "x86_64-linux"; system = "x86_64-linux";
extraSpecialArgs = { extraSpecialArgs = {
inherit nix-cachyos-kernel; inherit nix-cachyos-kernel;
};
};
vm-aarch64 = mkNixosSystem {
hostname = "vm-aarch64";
system = "aarch64-linux";
}; };
}; };
homeConfigurations = { vm-aarch64 = mkNixosSystem {
peach = mkHomeConfig { hostname = "vm-aarch64";
user = "sckova"; system = "aarch64-linux";
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";
};
}; };
}; };
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";
};
};
};
} }

View file

@ -7,9 +7,7 @@
pkgs, pkgs,
modulesPath, modulesPath,
... ...
}: }: {
{
imports = [ imports = [
(modulesPath + "/installer/scan/not-detected.nix") (modulesPath + "/installer/scan/not-detected.nix")
]; ];
@ -21,13 +19,13 @@
"usbhid" "usbhid"
"sd_mod" "sd_mod"
]; ];
boot.initrd.kernelModules = [ ]; boot.initrd.kernelModules = [];
boot.kernelModules = [ boot.kernelModules = [
"v4l2loopback" "v4l2loopback"
"snd-aloop" "snd-aloop"
"kvm-intel" "kvm-intel"
]; ];
boot.extraModulePackages = with config.boot.kernelPackages; [ v4l2loopback.out ]; boot.extraModulePackages = with config.boot.kernelPackages; [v4l2loopback.out];
boot.extraModprobeConfig = '' boot.extraModprobeConfig = ''
# exclusive_caps: Skype, Zoom, Teams etc. will only show device when actually streaming # 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 # card_label: Name of virtual camera, how it'll show up in Skype, Zoom, Teams
@ -38,7 +36,7 @@
fileSystems."/" = { fileSystems."/" = {
device = "/dev/disk/by-uuid/d83ec136-df01-4b9e-a523-6d75726fb904"; device = "/dev/disk/by-uuid/d83ec136-df01-4b9e-a523-6d75726fb904";
fsType = "btrfs"; fsType = "btrfs";
options = [ "subvol=@" ]; options = ["subvol=@"];
}; };
fileSystems."/nix" = { fileSystems."/nix" = {
@ -61,7 +59,7 @@
}; };
swapDevices = [ 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 # Enables DHCP on each ethernet and wireless interface. In case of scripted networking

View file

@ -7,20 +7,18 @@
pkgs, pkgs,
modulesPath, modulesPath,
... ...
}: }: {
{
imports = [ imports = [
(modulesPath + "/installer/scan/not-detected.nix") (modulesPath + "/installer/scan/not-detected.nix")
]; ];
boot.initrd.availableKernelModules = [ "sdhci_pci" ]; boot.initrd.availableKernelModules = ["sdhci_pci"];
boot.initrd.kernelModules = [ ]; boot.initrd.kernelModules = [];
boot.kernelModules = [ boot.kernelModules = [
"v4l2loopback" "v4l2loopback"
"snd-aloop" "snd-aloop"
]; ];
boot.extraModulePackages = with config.boot.kernelPackages; [ v4l2loopback.out ]; boot.extraModulePackages = with config.boot.kernelPackages; [v4l2loopback.out];
boot.extraModprobeConfig = '' boot.extraModprobeConfig = ''
# exclusive_caps: Skype, Zoom, Teams etc. will only show device when actually streaming # 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 # 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"; nixpkgs.hostPlatform = lib.mkDefault "aarch64-linux";
} }

View file

@ -1,15 +1,19 @@
# Do not modify this file! It was generated by nixos-generate-config # Do not modify this file! It was generated by nixos-generate-config
# and may be overwritten by future invocations. Please make changes # and may be overwritten by future invocations. Please make changes
# to /etc/nixos/configuration.nix instead. # 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.availableKernelModules = ["ehci_pci" "xhci_pci" "usbhid" "sr_mod"];
boot.initrd.kernelModules = [ ]; boot.initrd.kernelModules = [];
boot.kernelModules = [ ]; boot.kernelModules = [];
boot.extraModulePackages = [ ]; boot.extraModulePackages = [];
fileSystems."/" = { fileSystems."/" = {
device = "/dev/disk/by-label/nixos"; device = "/dev/disk/by-label/nixos";
@ -19,14 +23,14 @@
fileSystems."/boot" = { fileSystems."/boot" = {
device = "/dev/disk/by-label/boot"; device = "/dev/disk/by-label/boot";
fsType = "vfat"; fsType = "vfat";
options = [ "fmask=0077" "dmask=0077" ]; options = ["fmask=0077" "dmask=0077"];
}; };
swapDevices = [ swapDevices = [
{ device = "/dev/disk/by-label/swap"; } {device = "/dev/disk/by-label/swap";}
]; ];
nixpkgs.hostPlatform = lib.mkDefault "aarch64-linux"; nixpkgs.hostPlatform = lib.mkDefault "aarch64-linux";
hardware.parallels.enable = true; 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"];
} }

View file

@ -4,9 +4,7 @@
lib, lib,
types, types,
... ...
}: }: {
{
options = { options = {
catppuccinUpper = { catppuccinUpper = {
accent = lib.mkOption { accent = lib.mkOption {
@ -108,32 +106,30 @@
default = pkgs.noto-fonts-color-emoji; default = pkgs.noto-fonts-color-emoji;
}; };
}; };
cursor = cursor = let
let attrName = config.catppuccin.flavor + config.catppuccinUpper.accent;
attrName = config.catppuccin.flavor + config.catppuccinUpper.accent; in {
in name = lib.mkOption {
{ type = lib.types.str;
name = lib.mkOption { readOnly = true;
type = lib.types.str; default = "catppuccin-${config.catppuccin.flavor}-${config.catppuccin.accent}-cursors";
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 { isDark = lib.mkOption {
type = lib.types.bool; type = lib.types.bool;
readOnly = true; readOnly = true;
@ -173,7 +169,7 @@
# gui applications # gui applications
input-leap input-leap
libreoffice-qt-fresh libreoffice-qt-fresh
nur.repos.forkprince.helium-nightly # nur.repos.forkprince.helium-nightly
bitwarden-desktop bitwarden-desktop
qbittorrent qbittorrent
@ -234,15 +230,24 @@
gtk = { gtk = {
enable = true; enable = true;
colorScheme = if config.userOptions.isDark then "dark" else "light"; colorScheme =
if config.userOptions.isDark
then "dark"
else "light";
theme = { theme = {
package = pkgs.kdePackages.breeze-gtk; 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 = { 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; package = pkgs.colloid-icon-theme;
}; };
@ -286,86 +291,84 @@
fixed = "\"${config.userOptions.fontMono.name},${toString config.userOptions.fontMono.size}\""; fixed = "\"${config.userOptions.fontMono.name},${toString config.userOptions.fontMono.size}\"";
general = "\"${config.userOptions.fontSans.name},${toString config.userOptions.fontSans.size}\""; general = "\"${config.userOptions.fontSans.name},${toString config.userOptions.fontSans.size}\"";
}; };
ColorScheme = ColorScheme = let
let c = pkgs.catppuccin.bare.${config.catppuccin.flavor};
c = pkgs.catppuccin.bare.${config.catppuccin.flavor}; accent = c.${config.catppuccin.accent};
accent = c.${config.catppuccin.accent}; mkColors = roles: builtins.concatStringsSep ", " (map (r: "#ff${r}") roles);
mkColors = roles: builtins.concatStringsSep ", " (map (r: "#ff${r}") roles); in {
in active_colors = mkColors [
{ c.text
active_colors = mkColors [ c.surface0
c.text c.surface1
c.surface0 c.surface0
c.surface1 c.base
c.surface0 c.mantle
c.base c.text
c.mantle c.text
c.text c.text
c.text c.base
c.text c.mantle
c.base c.crust
c.mantle accent
c.crust c.base
accent accent
c.base c.mauve
accent c.mantle
c.mauve "000000"
c.mantle c.base
"000000" c.text
c.base c.overlay0
c.text accent
c.overlay0 ];
accent disabled_colors = mkColors [
]; c.overlay0
disabled_colors = mkColors [ c.surface0
c.overlay0 c.surface1
c.surface0 c.surface0
c.surface1 c.overlay0
c.surface0 c.mantle
c.overlay0 c.overlay0
c.mantle c.text
c.overlay0 c.overlay0
c.text c.surface0
c.overlay0 c.surface0
c.surface0 c.mantle
c.surface0 c.overlay1
c.mantle c.text
c.overlay1 "0000ff"
c.text "ff00ff"
"0000ff" c.surface0
"ff00ff" "000000"
c.surface0 c.surface0
"000000" c.base
c.surface0 "80000000"
c.base c.overlay1
"80000000" ];
c.overlay1 inactive_colors = mkColors [
]; c.text
inactive_colors = mkColors [ c.surface0
c.text c.surface1
c.surface0 c.surface0
c.surface1 c.base
c.surface0 c.mantle
c.base c.text
c.mantle c.text
c.text c.text
c.text c.base
c.text c.mantle
c.base c.crust
c.mantle accent
c.crust c.base
accent accent
c.base c.mauve
accent c.mantle
c.mauve "000000"
c.mantle c.base
"000000" c.text
c.base c.overlay0
c.text accent
c.overlay0 ];
accent };
];
};
}; };
}; };

View file

@ -1,6 +1,8 @@
{ config, pkgs, ... }:
{ {
config,
pkgs,
...
}: {
home.packages = with pkgs; [ home.packages = with pkgs; [
(prismlauncher.override { (prismlauncher.override {
jdks = [ jdks = [

View file

@ -1,5 +1,7 @@
{ config, pkgs, ... }:
{ {
home.packages = with pkgs; [ openmw ]; config,
pkgs,
...
}: {
home.packages = with pkgs; [openmw];
} }

View file

@ -1,6 +1,8 @@
{ config, pkgs, ... }: {
config,
let pkgs,
...
}: let
catppuccin-discord-src = pkgs.fetchFromGitHub { catppuccin-discord-src = pkgs.fetchFromGitHub {
owner = "catppuccin"; owner = "catppuccin";
repo = "discord"; repo = "discord";
@ -52,7 +54,7 @@ let
catppuccin-discord = "${catppuccin-discord-pkg}/dist/catppuccin-${config.catppuccin.flavor}-${config.catppuccin.accent}.theme.css"; 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 mkdir -p $out
cp ${catppuccin-discord} $out/catppuccin.css cp ${catppuccin-discord} $out/catppuccin.css
''; '';
@ -79,9 +81,8 @@ let
height = 1071; height = 1071;
}; };
}; };
in in {
{ home.packages = with pkgs; [vesktop];
home.packages = with pkgs; [ vesktop ];
home.file.".config/vesktop/settings.json" = { home.file.".config/vesktop/settings.json" = {
text = builtins.toJSON vesktopSettings; text = builtins.toJSON vesktopSettings;

View file

@ -2,9 +2,9 @@
autoUpdate = true; autoUpdate = true;
autoUpdateNotification = true; autoUpdateNotification = true;
useQuickCss = true; useQuickCss = true;
themeLinks = [ ]; themeLinks = [];
eagerPatches = false; eagerPatches = false;
enabledThemes = [ "catppuccin.css" ]; enabledThemes = ["catppuccin.css"];
enableReactDevtools = false; enableReactDevtools = false;
frameless = false; frameless = false;
transparent = true; transparent = true;
@ -330,8 +330,8 @@
ImageFilename.enabled = false; ImageFilename.enabled = false;
}; };
uiElements = { uiElements = {
chatBarButtons = { }; chatBarButtons = {};
messagePopoverButtons = { }; messagePopoverButtons = {};
}; };
notifications = { notifications = {
timeout = 5000; timeout = 5000;

View file

@ -5,9 +5,7 @@
config, config,
lib, lib,
... ...
}: }: {
{
home.file.".mozilla/firefox/default/chrome/theme" = { home.file.".mozilla/firefox/default/chrome/theme" = {
source = ./chrome/theme; source = ./chrome/theme;
force = true; force = true;

View file

@ -1,6 +1,8 @@
{ config, pkgs, ... }: {
config,
let pkgs,
...
}: let
catppuccin-mpv = pkgs.fetchFromGitHub { catppuccin-mpv = pkgs.fetchFromGitHub {
owner = "catppuccin"; owner = "catppuccin";
repo = "mpv"; repo = "mpv";
@ -8,14 +10,13 @@ let
sha256 = "sha256-oUheJNWk2R6gNEmkK8H6PWX0iofx2KMGDoFWtnr420A="; sha256 = "sha256-oUheJNWk2R6gNEmkK8H6PWX0iofx2KMGDoFWtnr420A=";
}; };
mergedConfig = pkgs.runCommand "mergedConfig" { } '' mergedConfig = pkgs.runCommand "mergedConfig" {} ''
mkdir -p $out mkdir -p $out
${pkgs.gnused}/bin/sed 's/#1e1e2e/#000000/g' \ ${pkgs.gnused}/bin/sed 's/#1e1e2e/#000000/g' \
${catppuccin-mpv}/themes/${config.catppuccin.flavor}/${config.catppuccin.accent}.conf \ ${catppuccin-mpv}/themes/${config.catppuccin.flavor}/${config.catppuccin.accent}.conf \
> $out/mpv.conf > $out/mpv.conf
''; '';
in in {
{
home.packages = with pkgs; [ home.packages = with pkgs; [
(mpv.override { (mpv.override {
scripts = with mpvScripts; [ scripts = with mpvScripts; [

View file

@ -3,16 +3,13 @@
pkgs, pkgs,
spicetify-nix, spicetify-nix,
... ...
}: }: {
{
catppuccin = { catppuccin = {
accent = "blue"; accent = "blue";
flavor = "mocha"; flavor = "mocha";
}; };
home.packages = with pkgs; [ home.packages = with pkgs; [
# steam gtk theming # steam gtk theming
adwsteamgtk adwsteamgtk
@ -36,30 +33,28 @@
scale = 1.75; scale = 1.75;
}; };
programs.spicetify = programs.spicetify = let
let spicePkgs = spicetify-nix.legacyPackages.${pkgs.stdenv.hostPlatform.system};
spicePkgs = spicetify-nix.legacyPackages.${pkgs.stdenv.hostPlatform.system}; in {
in enable = true;
{
enable = true;
enabledExtensions = with spicePkgs.extensions; [ enabledExtensions = with spicePkgs.extensions; [
adblock adblock
hidePodcasts hidePodcasts
shuffle # shuffle+ (special characters are sanitized out of extension names) shuffle # shuffle+ (special characters are sanitized out of extension names)
]; ];
enabledCustomApps = with spicePkgs.apps; [ enabledCustomApps = with spicePkgs.apps; [
newReleases newReleases
ncsVisualizer ncsVisualizer
]; ];
enabledSnippets = with spicePkgs.snippets; [ enabledSnippets = with spicePkgs.snippets; [
rotatingCoverart rotatingCoverart
pointer pointer
]; ];
theme = spicePkgs.themes.catppuccin; theme = spicePkgs.themes.catppuccin;
colorScheme = config.catppuccin.flavor; colorScheme = config.catppuccin.flavor;
}; };
programs.plasma = { programs.plasma = {
panels = [ panels = [

View file

@ -1,13 +1,14 @@
{ config, pkgs, ... }:
{ {
config,
pkgs,
...
}: {
catppuccin = { catppuccin = {
accent = "peach"; accent = "peach";
flavor = "mocha"; flavor = "mocha";
}; };
home.packages = with pkgs; [ home.packages = with pkgs; [
asahi-nvram asahi-nvram
asahi-bless asahi-bless
asahi-btsync asahi-btsync
@ -44,7 +45,7 @@
shortcuts = { shortcuts = {
# this is really annoying on asahi laptops # this is really annoying on asahi laptops
org_kde_powerdevil.Sleep = [ ]; org_kde_powerdevil.Sleep = [];
}; };
panels = [ panels = [
@ -60,7 +61,7 @@
activeTaskSource = "activeTask"; activeTaskSource = "activeTask";
}; };
layout = { layout = {
elements = [ "windowTitle" ]; elements = ["windowTitle"];
horizontalAlignment = "right"; horizontalAlignment = "right";
showDisabledElements = "deactivated"; showDisabledElements = "deactivated";
verticalAlignment = "center"; verticalAlignment = "center";

View file

@ -1,12 +1,14 @@
{ config, pkgs, ... }:
{ {
config,
pkgs,
...
}: {
catppuccin = { catppuccin = {
accent = "green"; accent = "green";
flavor = "mocha"; flavor = "mocha";
}; };
home.packages = with pkgs; [ ]; home.packages = with pkgs; [];
programs.plasma = { programs.plasma = {
panels = [ panels = [
@ -22,7 +24,7 @@
activeTaskSource = "activeTask"; activeTaskSource = "activeTask";
}; };
layout = { layout = {
elements = [ "windowTitle" ]; elements = ["windowTitle"];
horizontalAlignment = "right"; horizontalAlignment = "right";
showDisabledElements = "deactivated"; showDisabledElements = "deactivated";
verticalAlignment = "center"; verticalAlignment = "center";

View file

@ -1,6 +1,8 @@
{ config, pkgs, ... }:
{ {
config,
pkgs,
...
}: {
programs.ghostwriter = { programs.ghostwriter = {
enable = true; enable = true;
font = { font = {
@ -50,7 +52,7 @@
value = ""; value = "";
type = "substring"; type = "substring";
}; };
window-types = [ "normal" ]; window-types = ["normal"];
}; };
apply = { apply = {
opacityactive = { opacityactive = {
@ -70,7 +72,7 @@
value = "openmw"; value = "openmw";
type = "substring"; type = "substring";
}; };
window-types = [ "normal" ]; window-types = ["normal"];
}; };
apply = { apply = {
noborder = { noborder = {
@ -98,7 +100,7 @@
value = "Minecraft*"; value = "Minecraft*";
type = "substring"; type = "substring";
}; };
window-types = [ "normal" ]; window-types = ["normal"];
}; };
apply = { apply = {
noborder = { noborder = {
@ -149,7 +151,7 @@
value = "steamwebhelper"; value = "steamwebhelper";
type = "substring"; type = "substring";
}; };
window-types = [ "normal" ]; window-types = ["normal"];
}; };
apply = { apply = {
desktopfile = { desktopfile = {

View file

@ -3,9 +3,7 @@
pkgs, pkgs,
lib, lib,
... ...
}: }: {
{
systemd.user.sessionVariables = { systemd.user.sessionVariables = {
XCURSOR_THEME = config.userOptions.cursor.name; XCURSOR_THEME = config.userOptions.cursor.name;
XCURSOR_SIZE = toString config.userOptions.cursor.size; XCURSOR_SIZE = toString config.userOptions.cursor.size;
@ -27,8 +25,8 @@
systemd.user.services.synology-mount = { systemd.user.services.synology-mount = {
Unit = { Unit = {
Description = "Mount Synology NAS with Rclone and Home Manager."; Description = "Mount Synology NAS with Rclone and Home Manager.";
After = [ "tailscaled.service" ]; After = ["tailscaled.service"];
Wants = [ "tailscaled.service" ]; Wants = ["tailscaled.service"];
}; };
Service = { Service = {
@ -63,7 +61,7 @@
}; };
Install = { Install = {
WantedBy = [ "default.target" ]; WantedBy = ["default.target"];
}; };
}; };

View file

@ -1,6 +1,8 @@
{ config, pkgs, ... }: {
config,
let pkgs,
...
}: let
catppuccin-btop = pkgs.fetchFromGitHub { catppuccin-btop = pkgs.fetchFromGitHub {
owner = "catppuccin"; owner = "catppuccin";
repo = "btop"; repo = "btop";
@ -8,15 +10,14 @@ let
sha256 = "sha256-mEGZwScVPWGu+Vbtddc/sJ+mNdD2kKienGZVUcTSl+c="; sha256 = "sha256-mEGZwScVPWGu+Vbtddc/sJ+mNdD2kKienGZVUcTSl+c=";
}; };
mergedConfig = pkgs.runCommand "mergedConfig" { } '' mergedConfig = pkgs.runCommand "mergedConfig" {} ''
mkdir -p $out/themes mkdir -p $out/themes
${pkgs.gnused}/bin/sed 's/blankFlavor/${config.catppuccin.flavor}/g' \ ${pkgs.gnused}/bin/sed 's/blankFlavor/${config.catppuccin.flavor}/g' \
${./btop.conf} > $out/btop.conf ${./btop.conf} > $out/btop.conf
cp ${catppuccin-btop}/themes/catppuccin_latte.theme $out/themes/ 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/
''; '';
in in {
{
home.file.".config/btop" = { home.file.".config/btop" = {
source = mergedConfig; source = mergedConfig;
recursive = true; recursive = true;

View file

@ -1,6 +1,9 @@
{ config, pkgs, ... }:
{ {
home.packages = with pkgs; [ kdePackages.qttools ]; config,
pkgs,
...
}: {
home.packages = with pkgs; [kdePackages.qttools];
programs.fish = { programs.fish = {
enable = true; enable = true;

View file

@ -3,9 +3,7 @@
lib, lib,
pkgs, pkgs,
... ...
}: }: let
let
catppuccin-kitty = pkgs.fetchFromGitHub { catppuccin-kitty = pkgs.fetchFromGitHub {
owner = "catppuccin"; owner = "catppuccin";
repo = "kitty"; repo = "kitty";
@ -13,15 +11,14 @@ let
sha256 = "sha256-59ON7CzVgfZUo7F81qQZQ1r6kpcjR3OPvTl99gzDP8E="; sha256 = "sha256-59ON7CzVgfZUo7F81qQZQ1r6kpcjR3OPvTl99gzDP8E=";
}; };
mergedConfig = pkgs.runCommand "mergedConfig" { } '' mergedConfig = pkgs.runCommand "mergedConfig" {} ''
mkdir -p $out mkdir -p $out
${pkgs.gnused}/bin/sed 's/#cba6f7/${ ${pkgs.gnused}/bin/sed 's/#cba6f7/${
pkgs.catppuccin.${config.catppuccin.flavor}.${config.catppuccin.accent} pkgs.catppuccin.${config.catppuccin.flavor}.${config.catppuccin.accent}
}/g' ${catppuccin-kitty}/themes/${config.catppuccin.flavor}.conf > \ }/g' ${catppuccin-kitty}/themes/${config.catppuccin.flavor}.conf > \
$out/${config.catppuccinUpper.flavor}${config.catppuccinUpper.accent}.conf $out/${config.catppuccinUpper.flavor}${config.catppuccinUpper.accent}.conf
''; '';
in in {
{
home.file.".config/kitty/themes" = { home.file.".config/kitty/themes" = {
source = mergedConfig; source = mergedConfig;
recursive = true; recursive = true;

View file

@ -1,6 +1,8 @@
{ pkgs, config, ... }:
{ {
pkgs,
config,
...
}: {
home.sessionVariables = { home.sessionVariables = {
EDITOR = "nvim"; EDITOR = "nvim";
}; };
@ -9,7 +11,7 @@
kdePackages.qtdeclarative kdePackages.qtdeclarative
prettier prettier
prettierd prettierd
nixfmt-rfc-style alejandra
stylua stylua
black black
]; ];
@ -94,13 +96,13 @@
autoLoad = true; autoLoad = true;
settings = { settings = {
formatters_by_ft = { formatters_by_ft = {
lua = [ "stylua" ]; lua = ["stylua"];
python = [ "black" ]; python = ["black"];
nix = [ "nixfmt" ]; nix = ["alejandra"];
javascript = [ "prettier" ]; javascript = ["prettier"];
css = [ "prettier" ]; css = ["prettier"];
json = [ "prettier" ]; json = ["prettier"];
jsonc = [ "prettier" ]; jsonc = ["prettier"];
}; };
# Default formatting options # Default formatting options
@ -216,8 +218,8 @@
"filename" "filename"
"branch" "branch"
]; ];
lualine_c = [ "%=" ]; lualine_c = ["%="];
lualine_x = [ ]; lualine_x = [];
lualine_y = [ lualine_y = [
"filetype" "filetype"
"progress" "progress"
@ -234,15 +236,15 @@
}; };
inactive_sections = { inactive_sections = {
lualine_a = [ "filename" ]; lualine_a = ["filename"];
lualine_b = [ ]; lualine_b = [];
lualine_c = [ ]; lualine_c = [];
lualine_x = [ ]; lualine_x = [];
lualine_y = [ ]; lualine_y = [];
lualine_z = [ "location" ]; lualine_z = ["location"];
}; };
tabline = { }; tabline = {};
extensions = [ ]; extensions = [];
}; };
autoLoad = true; autoLoad = true;
}; };

View file

@ -1,14 +1,15 @@
{ config, pkgs, ... }: {
config,
let pkgs,
...
}: let
catppuccin-fuzzel = pkgs.fetchFromGitHub { catppuccin-fuzzel = pkgs.fetchFromGitHub {
owner = "catppuccin"; owner = "catppuccin";
repo = "fuzzel"; repo = "fuzzel";
rev = "0af0e26901b60ada4b20522df739f032797b07c3"; rev = "0af0e26901b60ada4b20522df739f032797b07c3";
sha256 = "sha256-XpItMGsYq4XvLT+7OJ9YRILfd/9RG1GMuO6J4hSGepg="; sha256 = "sha256-XpItMGsYq4XvLT+7OJ9YRILfd/9RG1GMuO6J4hSGepg=";
}; };
in in {
{
imports = [ imports = [
./niri.nix ./niri.nix
./noctalia.nix ./noctalia.nix

View file

@ -1,6 +1,8 @@
{ config, pkgs, ... }:
{ {
config,
pkgs,
...
}: {
programs.niri.package = pkgs.niri-unstable.overrideAttrs (old: { programs.niri.package = pkgs.niri-unstable.overrideAttrs (old: {
doCheck = false; doCheck = false;
}); });
@ -10,7 +12,7 @@
hotkey-overlay.skip-at-startup = true; hotkey-overlay.skip-at-startup = true;
prefer-no-csd = true; prefer-no-csd = true;
gestures.hot-corners.enable = false; gestures.hot-corners.enable = false;
spawn-at-startup = [ ]; # systemd is based sorry spawn-at-startup = []; # systemd is based sorry
overview = { overview = {
backdrop-color = pkgs.catppuccin.${config.catppuccin.flavor}.crust; backdrop-color = pkgs.catppuccin.${config.catppuccin.flavor}.crust;
workspace-shadow.enable = false; workspace-shadow.enable = false;
@ -66,9 +68,9 @@
proportion = 0.5; proportion = 0.5;
}; };
preset-column-widths = [ preset-column-widths = [
{ proportion = 1.0 / 3.0; } {proportion = 1.0 / 3.0;}
{ proportion = 1.0 / 2.0; } {proportion = 1.0 / 2.0;}
{ proportion = 2.0 / 3.0; } {proportion = 2.0 / 3.0;}
]; ];
border = { border = {
enable = true; enable = true;
@ -135,10 +137,10 @@
} }
]; ];
binds = { binds = {
"Mod+Shift+Slash".action.show-hotkey-overlay = { }; "Mod+Shift+Slash".action.show-hotkey-overlay = {};
"Mod+T" = { "Mod+T" = {
action.spawn = [ "kitty" ]; action.spawn = ["kitty"];
hotkey-overlay.title = "Open a Terminal: kitty"; hotkey-overlay.title = "Open a Terminal: kitty";
}; };
"Mod+Space" = { "Mod+Space" = {
@ -229,96 +231,96 @@
}; };
"Mod+O" = { "Mod+O" = {
action.toggle-overview = { }; action.toggle-overview = {};
repeat = false; repeat = false;
}; };
"Mod+Q" = { "Mod+Q" = {
action.close-window = { }; action.close-window = {};
repeat = false; repeat = false;
}; };
"Mod+Left".action.focus-column-left = { }; "Mod+Left".action.focus-column-left = {};
"Mod+Down".action.focus-window-down = { }; "Mod+Down".action.focus-window-down = {};
"Mod+Up".action.focus-window-up = { }; "Mod+Up".action.focus-window-up = {};
"Mod+Right".action.focus-column-right = { }; "Mod+Right".action.focus-column-right = {};
"Mod+H".action.focus-column-left = { }; "Mod+H".action.focus-column-left = {};
"Mod+J".action.focus-window-down = { }; "Mod+J".action.focus-window-down = {};
"Mod+K".action.focus-window-up = { }; "Mod+K".action.focus-window-up = {};
"Mod+L".action.focus-column-right = { }; "Mod+L".action.focus-column-right = {};
"Mod+Ctrl+Left".action.move-column-left = { }; "Mod+Ctrl+Left".action.move-column-left = {};
"Mod+Ctrl+Down".action.move-window-down = { }; "Mod+Ctrl+Down".action.move-window-down = {};
"Mod+Ctrl+Up".action.move-window-up = { }; "Mod+Ctrl+Up".action.move-window-up = {};
"Mod+Ctrl+Right".action.move-column-right = { }; "Mod+Ctrl+Right".action.move-column-right = {};
"Mod+Ctrl+H".action.move-column-left = { }; "Mod+Ctrl+H".action.move-column-left = {};
"Mod+Ctrl+J".action.move-window-down = { }; "Mod+Ctrl+J".action.move-window-down = {};
"Mod+Ctrl+K".action.move-window-up = { }; "Mod+Ctrl+K".action.move-window-up = {};
"Mod+Ctrl+L".action.move-column-right = { }; "Mod+Ctrl+L".action.move-column-right = {};
"Mod+Home".action.focus-column-first = { }; "Mod+Home".action.focus-column-first = {};
"Mod+End".action.focus-column-last = { }; "Mod+End".action.focus-column-last = {};
"Mod+Ctrl+Home".action.move-column-to-first = { }; "Mod+Ctrl+Home".action.move-column-to-first = {};
"Mod+Ctrl+End".action.move-column-to-last = { }; "Mod+Ctrl+End".action.move-column-to-last = {};
"Mod+Shift+Left".action.focus-monitor-left = { }; "Mod+Shift+Left".action.focus-monitor-left = {};
"Mod+Shift+Down".action.focus-monitor-down = { }; "Mod+Shift+Down".action.focus-monitor-down = {};
"Mod+Shift+Up".action.focus-monitor-up = { }; "Mod+Shift+Up".action.focus-monitor-up = {};
"Mod+Shift+Right".action.focus-monitor-right = { }; "Mod+Shift+Right".action.focus-monitor-right = {};
"Mod+Shift+H".action.focus-monitor-left = { }; "Mod+Shift+H".action.focus-monitor-left = {};
"Mod+Shift+J".action.focus-monitor-down = { }; "Mod+Shift+J".action.focus-monitor-down = {};
"Mod+Shift+K".action.focus-monitor-up = { }; "Mod+Shift+K".action.focus-monitor-up = {};
"Mod+Shift+L".action.focus-monitor-right = { }; "Mod+Shift+L".action.focus-monitor-right = {};
"Mod+Shift+Ctrl+Left".action.move-column-to-monitor-left = { }; "Mod+Shift+Ctrl+Left".action.move-column-to-monitor-left = {};
"Mod+Shift+Ctrl+Down".action.move-column-to-monitor-down = { }; "Mod+Shift+Ctrl+Down".action.move-column-to-monitor-down = {};
"Mod+Shift+Ctrl+Up".action.move-column-to-monitor-up = { }; "Mod+Shift+Ctrl+Up".action.move-column-to-monitor-up = {};
"Mod+Shift+Ctrl+Right".action.move-column-to-monitor-right = { }; "Mod+Shift+Ctrl+Right".action.move-column-to-monitor-right = {};
"Mod+Shift+Ctrl+H".action.move-column-to-monitor-left = { }; "Mod+Shift+Ctrl+H".action.move-column-to-monitor-left = {};
"Mod+Shift+Ctrl+J".action.move-column-to-monitor-down = { }; "Mod+Shift+Ctrl+J".action.move-column-to-monitor-down = {};
"Mod+Shift+Ctrl+K".action.move-column-to-monitor-up = { }; "Mod+Shift+Ctrl+K".action.move-column-to-monitor-up = {};
"Mod+Shift+Ctrl+L".action.move-column-to-monitor-right = { }; "Mod+Shift+Ctrl+L".action.move-column-to-monitor-right = {};
"Mod+Page_Down".action.focus-workspace-down = { }; "Mod+Page_Down".action.focus-workspace-down = {};
"Mod+Page_Up".action.focus-workspace-up = { }; "Mod+Page_Up".action.focus-workspace-up = {};
"Mod+U".action.focus-workspace-down = { }; "Mod+U".action.focus-workspace-down = {};
"Mod+I".action.focus-workspace-up = { }; "Mod+I".action.focus-workspace-up = {};
"Mod+Ctrl+Page_Down".action.move-column-to-workspace-down = { }; "Mod+Ctrl+Page_Down".action.move-column-to-workspace-down = {};
"Mod+Ctrl+Page_Up".action.move-column-to-workspace-up = { }; "Mod+Ctrl+Page_Up".action.move-column-to-workspace-up = {};
"Mod+Ctrl+U".action.move-column-to-workspace-down = { }; "Mod+Ctrl+U".action.move-column-to-workspace-down = {};
"Mod+Ctrl+I".action.move-column-to-workspace-up = { }; "Mod+Ctrl+I".action.move-column-to-workspace-up = {};
"Mod+Shift+Page_Down".action.move-workspace-down = { }; "Mod+Shift+Page_Down".action.move-workspace-down = {};
"Mod+Shift+Page_Up".action.move-workspace-up = { }; "Mod+Shift+Page_Up".action.move-workspace-up = {};
"Mod+Shift+U".action.move-workspace-down = { }; "Mod+Shift+U".action.move-workspace-down = {};
"Mod+Shift+I".action.move-workspace-up = { }; "Mod+Shift+I".action.move-workspace-up = {};
"Mod+WheelScrollDown" = { "Mod+WheelScrollDown" = {
action.focus-workspace-down = { }; action.focus-workspace-down = {};
cooldown-ms = 150; cooldown-ms = 150;
}; };
"Mod+WheelScrollUp" = { "Mod+WheelScrollUp" = {
action.focus-workspace-up = { }; action.focus-workspace-up = {};
cooldown-ms = 150; cooldown-ms = 150;
}; };
"Mod+Ctrl+WheelScrollDown" = { "Mod+Ctrl+WheelScrollDown" = {
action.move-column-to-workspace-down = { }; action.move-column-to-workspace-down = {};
cooldown-ms = 150; cooldown-ms = 150;
}; };
"Mod+Ctrl+WheelScrollUp" = { "Mod+Ctrl+WheelScrollUp" = {
action.move-column-to-workspace-up = { }; action.move-column-to-workspace-up = {};
cooldown-ms = 150; cooldown-ms = 150;
}; };
"Mod+WheelScrollRight".action.focus-column-right = { }; "Mod+WheelScrollRight".action.focus-column-right = {};
"Mod+WheelScrollLeft".action.focus-column-left = { }; "Mod+WheelScrollLeft".action.focus-column-left = {};
"Mod+Ctrl+WheelScrollRight".action.move-column-right = { }; "Mod+Ctrl+WheelScrollRight".action.move-column-right = {};
"Mod+Ctrl+WheelScrollLeft".action.move-column-left = { }; "Mod+Ctrl+WheelScrollLeft".action.move-column-left = {};
"Mod+Shift+WheelScrollDown".action.focus-column-right = { }; "Mod+Shift+WheelScrollDown".action.focus-column-right = {};
"Mod+Shift+WheelScrollUp".action.focus-column-left = { }; "Mod+Shift+WheelScrollUp".action.focus-column-left = {};
"Mod+Ctrl+Shift+WheelScrollDown".action.move-column-right = { }; "Mod+Ctrl+Shift+WheelScrollDown".action.move-column-right = {};
"Mod+Ctrl+Shift+WheelScrollUp".action.move-column-left = { }; "Mod+Ctrl+Shift+WheelScrollUp".action.move-column-left = {};
"Mod+1".action.focus-workspace = 1; "Mod+1".action.focus-workspace = 1;
"Mod+2".action.focus-workspace = 2; "Mod+2".action.focus-workspace = 2;
@ -339,23 +341,23 @@
"Mod+Ctrl+8".action.move-column-to-workspace = 8; "Mod+Ctrl+8".action.move-column-to-workspace = 8;
"Mod+Ctrl+9".action.move-column-to-workspace = 9; "Mod+Ctrl+9".action.move-column-to-workspace = 9;
"Mod+BracketLeft".action.consume-or-expel-window-left = { }; "Mod+BracketLeft".action.consume-or-expel-window-left = {};
"Mod+BracketRight".action.consume-or-expel-window-right = { }; "Mod+BracketRight".action.consume-or-expel-window-right = {};
"Mod+Comma".action.consume-window-into-column = { }; "Mod+Comma".action.consume-window-into-column = {};
"Mod+Period".action.expel-window-from-column = { }; "Mod+Period".action.expel-window-from-column = {};
"Mod+R".action.switch-preset-column-width = { }; "Mod+R".action.switch-preset-column-width = {};
"Mod+Shift+R".action.switch-preset-window-height = { }; "Mod+Shift+R".action.switch-preset-window-height = {};
"Mod+Ctrl+R".action.reset-window-height = { }; "Mod+Ctrl+R".action.reset-window-height = {};
"Mod+F".action.maximize-column = { }; "Mod+F".action.maximize-column = {};
"Mod+Shift+F".action.fullscreen-window = { }; "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+Minus".action.set-column-width = "-10%";
"Mod+Equal".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+Minus".action.set-window-height = "-10%";
"Mod+Shift+Equal".action.set-window-height = "+10%"; "Mod+Shift+Equal".action.set-window-height = "+10%";
"Mod+V".action.toggle-window-floating = { }; "Mod+V".action.toggle-window-floating = {};
"Mod+Shift+V".action.switch-focus-between-floating-and-tiling = { }; "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 = { }; "Print".action.screenshot = {};
"Mod+Shift+S".action.screenshot = { }; "Mod+Shift+S".action.screenshot = {};
"Ctrl+Print".action.screenshot-screen = { }; "Ctrl+Print".action.screenshot-screen = {};
"Alt+Print".action.screenshot-window = { }; "Alt+Print".action.screenshot-window = {};
"Mod+Escape" = { "Mod+Escape" = {
action.toggle-keyboard-shortcuts-inhibit = { }; action.toggle-keyboard-shortcuts-inhibit = {};
allow-inhibiting = false; allow-inhibiting = false;
}; };
"Mod+Shift+E".action.quit = { }; "Mod+Shift+E".action.quit = {};
"Ctrl+Alt+Delete".action.quit = { }; "Ctrl+Alt+Delete".action.quit = {};
"Mod+Shift+P" = { "Mod+Shift+P" = {
action.power-off-monitors = { }; action.power-off-monitors = {};
hotkey-overlay.title = "Turn off the display"; hotkey-overlay.title = "Turn off the display";
}; };
}; };

View file

@ -3,9 +3,7 @@
config, config,
lib, lib,
... ...
}: }: let
let
# Get the actual color palettes # Get the actual color palettes
darkPalette = pkgs.catppuccin.${config.catppuccin.flavor}; darkPalette = pkgs.catppuccin.${config.catppuccin.flavor};
lightPalette = pkgs.catppuccin.latte; lightPalette = pkgs.catppuccin.latte;
@ -44,45 +42,48 @@ let
customPackage = pkgs.noctalia-shell.overrideAttrs (oldAttrs: { customPackage = pkgs.noctalia-shell.overrideAttrs (oldAttrs: {
pname = "noctalia-shell-custom"; pname = "noctalia-shell-custom";
nativeBuildInputs = (oldAttrs.nativeBuildInputs or [ ]) ++ [ pkgs.jq ]; nativeBuildInputs = (oldAttrs.nativeBuildInputs or []) ++ [pkgs.jq];
postPatch = (oldAttrs.postPatch or "") + '' postPatch =
echo "Patching noctalia-shell with Cat-Custom theme..." (oldAttrs.postPatch or "")
echo " Dark: ${config.catppuccin.flavor} / Light: latte" + ''
echo " Accent: ${config.catppuccin.accent}" 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 if [ -d Assets/ColorScheme/Catppuccin ]; then
mkdir -p Assets/ColorScheme/Cat-Custom mkdir -p Assets/ColorScheme/Cat-Custom
# Write the JSON directly # Write the JSON directly
cat > Assets/ColorScheme/Cat-Custom/Cat-Custom.json << 'COLORSCHEME_EOF' cat > Assets/ColorScheme/Cat-Custom/Cat-Custom.json << 'COLORSCHEME_EOF'
${schemeJson} ${schemeJson}
COLORSCHEME_EOF COLORSCHEME_EOF
echo "Created Cat-Custom color scheme:" echo "Created Cat-Custom color scheme:"
${pkgs.jq}/bin/jq -C '.' Assets/ColorScheme/Cat-Custom/Cat-Custom.json || true ${pkgs.jq}/bin/jq -C '.' Assets/ColorScheme/Cat-Custom/Cat-Custom.json || true
# Add translation entries # Add translation entries
for lang in en fr de es pt zh-CN; do for lang in en fr de es pt zh-CN; do
if [ -f "Assets/Translations/$lang.json" ]; then if [ -f "Assets/Translations/$lang.json" ]; then
${pkgs.jq}/bin/jq \ ${pkgs.jq}/bin/jq \
'.["color-scheme"].predefined.schemes["Cat-Custom"] = "Cat-Custom"' \ '.["color-scheme"].predefined.schemes["Cat-Custom"] = "Cat-Custom"' \
"Assets/Translations/$lang.json" > "Assets/Translations/$lang.json.tmp" \ "Assets/Translations/$lang.json" > "Assets/Translations/$lang.json.tmp" \
&& mv "Assets/Translations/$lang.json.tmp" "Assets/Translations/$lang.json" && mv "Assets/Translations/$lang.json.tmp" "Assets/Translations/$lang.json"
fi fi
done done
else else
echo "ERROR: ColorScheme directory not found" echo "ERROR: ColorScheme directory not found"
exit 1 exit 1
fi fi
''; '';
meta = oldAttrs.meta // { meta =
description = "${oldAttrs.meta.description} (Cat-Custom: ${config.catppuccin.flavor}/${config.catppuccin.accent})"; oldAttrs.meta
}; // {
description = "${oldAttrs.meta.description} (Cat-Custom: ${config.catppuccin.flavor}/${config.catppuccin.accent})";
};
}); });
in in {
{
programs.noctalia-shell = { programs.noctalia-shell = {
enable = true; enable = true;
package = customPackage; package = customPackage;
@ -91,7 +92,7 @@ in
bar = { bar = {
position = "top"; position = "top";
backgroundOpacity = 1; backgroundOpacity = 1;
monitors = [ ]; monitors = [];
density = "comfortable"; density = "comfortable";
showCapsule = true; showCapsule = true;
capsuleOpacity = 1; capsuleOpacity = 1;
@ -256,7 +257,7 @@ in
enabled = true; enabled = true;
overviewEnabled = false; overviewEnabled = false;
directory = "/home/sckova/.local/share/wallpaper"; directory = "/home/sckova/.local/share/wallpaper";
monitorDirectories = [ ]; monitorDirectories = [];
enableMultiMonitorDirectories = false; enableMultiMonitorDirectories = false;
recursiveSearch = false; recursiveSearch = false;
setWallpaperOnAllMonitors = true; setWallpaperOnAllMonitors = true;
@ -275,7 +276,7 @@ in
enableClipboardHistory = true; enableClipboardHistory = true;
enableClipPreview = true; enableClipPreview = true;
position = "top_left"; position = "top_left";
pinnedExecs = [ ]; pinnedExecs = [];
useApp2Unit = false; useApp2Unit = false;
sortByMostUsed = true; sortByMostUsed = true;
terminalCommand = "kitty -e"; terminalCommand = "kitty -e";
@ -360,8 +361,8 @@ in
floatingRatio = 1; floatingRatio = 1;
size = 1; size = 1;
onlySameOutput = true; onlySameOutput = true;
monitors = [ ]; monitors = [];
pinnedApps = [ ]; pinnedApps = [];
colorizeIcons = false; colorizeIcons = false;
pinnedStatic = false; pinnedStatic = false;
inactiveIndicators = false; inactiveIndicators = false;
@ -404,7 +405,7 @@ in
}; };
notifications = { notifications = {
enabled = true; enabled = true;
monitors = [ ]; monitors = [];
location = "top_right"; location = "top_right";
overlayLayer = true; overlayLayer = true;
backgroundOpacity = 1; backgroundOpacity = 1;
@ -434,7 +435,7 @@ in
1 1
2 2
]; ];
monitors = [ ]; monitors = [];
}; };
audio = { audio = {
volumeStep = 5; volumeStep = 5;
@ -442,7 +443,7 @@ in
cavaFrameRate = 30; cavaFrameRate = 30;
visualizerType = "linear"; visualizerType = "linear";
visualizerQuality = "high"; visualizerQuality = "high";
mprisBlacklist = [ ]; mprisBlacklist = [];
preferredPlayer = ""; preferredPlayer = "";
externalMixer = "pwvucontrol || pavucontrol"; externalMixer = "pwvucontrol || pavucontrol";
}; };
@ -498,8 +499,8 @@ in
systemd.user.services.noctalia-shell = { systemd.user.services.noctalia-shell = {
Unit = { Unit = {
After = [ "niri.service" ]; After = ["niri.service"];
PartOf = [ "niri.service" ]; PartOf = ["niri.service"];
Description = "Noctalia Shell - Wayland desktop shell"; Description = "Noctalia Shell - Wayland desktop shell";
Documentation = "https://docs.noctalia.dev/docs"; Documentation = "https://docs.noctalia.dev/docs";
}; };
@ -517,7 +518,7 @@ in
}; };
Install = { Install = {
WantedBy = [ "niri.service" ]; WantedBy = ["niri.service"];
}; };
}; };
} }

View file

@ -1,5 +1,8 @@
{ pkgs, config, ... }: {
let pkgs,
config,
...
}: let
bingWallpaperScript = pkgs.writeShellScript "bing-wallpaper" '' bingWallpaperScript = pkgs.writeShellScript "bing-wallpaper" ''
set -euo pipefail set -euo pipefail
@ -59,8 +62,7 @@ let
echo "Wallpaper downloaded and applied successfully." echo "Wallpaper downloaded and applied successfully."
''; '';
in in {
{
systemd.user.services.bing-wallpaper = { systemd.user.services.bing-wallpaper = {
Unit = { Unit = {
Description = "Download and set Bing wallpaper of the day"; Description = "Download and set Bing wallpaper of the day";
@ -81,7 +83,7 @@ in
}; };
Install = { Install = {
WantedBy = [ "niri.service" ]; WantedBy = ["niri.service"];
}; };
}; };
} }

View file

@ -3,14 +3,10 @@
pkgs, pkgs,
lib, lib,
... ...
}: }: let
capitalize = str:
let
capitalize =
str:
(lib.toUpper (builtins.substring 0 1 str)) + (builtins.substring 1 (builtins.stringLength str) str); (lib.toUpper (builtins.substring 0 1 str)) + (builtins.substring 1 (builtins.stringLength str) str);
in in {
{
# home.sessionVariables = { # home.sessionVariables = {
# EDITOR = "code"; # EDITOR = "code";
# }; # };

View file

@ -1,9 +1,8 @@
final: prev: { final: prev: {
widevine-helium = widevine-helium =
if prev.stdenv.hostPlatform.system == "aarch64-linux" then if prev.stdenv.hostPlatform.system == "aarch64-linux"
prev.callPackage ./helium-browser/widevine-aarch64-linux.nix { } then prev.callPackage ./helium-browser/widevine-aarch64-linux.nix {}
else else null;
null;
# helium-browser = # helium-browser =
# prev.callPackage # 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;}) {};
} }

View file

@ -5,9 +5,7 @@
copyDesktopItems, copyDesktopItems,
chromium, chromium,
writeShellScriptBin, writeShellScriptBin,
}: }: let
let
pname = "spotify-webapp"; pname = "spotify-webapp";
version = "1.0.0"; version = "1.0.0";
@ -25,50 +23,49 @@ let
--ozone-platform=wayland \ --ozone-platform=wayland \
"$@" "$@"
''; '';
in in
stdenv.mkDerivation { stdenv.mkDerivation {
inherit pname version; inherit pname version;
dontUnpack = true; dontUnpack = true;
dontBuild = true; dontBuild = true;
nativeBuildInputs = [ copyDesktopItems ]; nativeBuildInputs = [copyDesktopItems];
desktopItems = [ desktopItems = [
(makeDesktopItem { (makeDesktopItem {
name = "spotify-webapp"; name = "spotify-webapp";
exec = "spotify-webapp %U"; exec = "spotify-webapp %U";
icon = "spotify"; icon = "spotify";
desktopName = "Spotify"; desktopName = "Spotify";
genericName = "Music Streaming"; genericName = "Music Streaming";
comment = "Listen to music on Spotify"; comment = "Listen to music on Spotify";
categories = [ categories = [
"Audio" "Audio"
"Music" "Music"
"AudioVideo" "AudioVideo"
]; ];
mimeTypes = [ "x-scheme-handler/spotify" ]; mimeTypes = ["x-scheme-handler/spotify"];
startupWMClass = "spotify-webapp"; startupWMClass = "spotify-webapp";
startupNotify = true; startupNotify = true;
}) })
]; ];
installPhase = '' installPhase = ''
runHook preInstall runHook preInstall
mkdir -p $out/bin mkdir -p $out/bin
ln -s ${launchScript}/bin/spotify-webapp $out/bin/spotify-webapp ln -s ${launchScript}/bin/spotify-webapp $out/bin/spotify-webapp
runHook postInstall runHook postInstall
''; '';
meta = with lib; { meta = with lib; {
description = "Spotify web app running in Chromium"; description = "Spotify web app running in Chromium";
homepage = "https://open.spotify.com"; homepage = "https://open.spotify.com";
license = licenses.free; license = licenses.free;
maintainers = [ ]; maintainers = [];
platforms = platforms.linux; platforms = platforms.linux;
mainProgram = "spotify-webapp"; mainProgram = "spotify-webapp";
}; };
} }

View file

@ -20,7 +20,6 @@
withPortAudio ? stdenv.hostPlatform.isDarwin, withPortAudio ? stdenv.hostPlatform.isDarwin,
withPulseAudio ? config.pulseaudio or stdenv.hostPlatform.isLinux, withPulseAudio ? config.pulseaudio or stdenv.hostPlatform.isLinux,
}: }:
rustPlatform.buildRustPackage (finalAttrs: { rustPlatform.buildRustPackage (finalAttrs: {
pname = "spotifyd"; pname = "spotifyd";
version = "0.4.2"; version = "0.4.2";
@ -41,7 +40,7 @@ rustPlatform.buildRustPackage (finalAttrs: {
]; ];
buildInputs = 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 # The `dbus_mpris` feature works on other platforms, but only requires `dbus` on Linux
++ lib.optional (withMpris && stdenv.hostPlatform.isLinux) dbus ++ lib.optional (withMpris && stdenv.hostPlatform.isLinux) dbus
++ lib.optional (withALSA || withJack) alsa-lib ++ lib.optional (withALSA || withJack) alsa-lib
@ -50,7 +49,7 @@ rustPlatform.buildRustPackage (finalAttrs: {
++ lib.optional withPortAudio portaudio; ++ lib.optional withPortAudio portaudio;
# `aws-lc-sys` fails with this enabled # `aws-lc-sys` fails with this enabled
hardeningDisable = [ "strictoverflow" ]; hardeningDisable = ["strictoverflow"];
buildNoDefaultFeatures = true; buildNoDefaultFeatures = true;
buildFeatures = buildFeatures =
@ -68,8 +67,8 @@ rustPlatform.buildRustPackage (finalAttrs: {
]; ];
passthru = { passthru = {
tests.version = testers.testVersion { package = finalAttrs.finalPackage; }; tests.version = testers.testVersion {package = finalAttrs.finalPackage;};
updateScript = nix-update-script { }; updateScript = nix-update-script {};
}; };
meta = { meta = {

View file

@ -1,16 +1,13 @@
# Edit this configuration file to define what should be installed on # 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). # and in the NixOS manual (accessible by running nixos-help).
{ {
config, config,
lib, lib,
pkgs, pkgs,
inputs, inputs,
... ...
}: }: {
{
nix.settings.experimental-features = [ nix.settings.experimental-features = [
"nix-command" "nix-command"
"flakes" "flakes"
@ -24,7 +21,7 @@
nix.settings = { nix.settings = {
# Increase file descriptor limit for builds # Increase file descriptor limit for builds
sandbox = "relaxed"; sandbox = "relaxed";
extra-sandbox-paths = [ ]; extra-sandbox-paths = [];
build-users-group = "nixbld"; build-users-group = "nixbld";
}; };
@ -79,7 +76,6 @@
}; };
boot = { boot = {
plymouth = { plymouth = {
enable = true; enable = true;
}; };
@ -184,7 +180,7 @@
"networkmanager" "networkmanager"
"podman" "podman"
]; ];
packages = with pkgs; [ ]; packages = with pkgs; [];
hashedPassword = "$6$bvwRUFaJNMpH8rm3$FGDWFN6tBScJ/2DynAjnlZE8JRfyADN78d6c4GawxpAjyNLNE/AjQzMA09tLRqpKX7WnN5PIUZLAm2bT9/RbG0"; hashedPassword = "$6$bvwRUFaJNMpH8rm3$FGDWFN6tBScJ/2DynAjnlZE8JRfyADN78d6c4GawxpAjyNLNE/AjQzMA09tLRqpKX7WnN5PIUZLAm2bT9/RbG0";
}; };
@ -227,5 +223,4 @@
# Before changing this value read the documentation for this option # Before changing this value read the documentation for this option
# (e.g. man configuration.nix or on https://nixos.org/nixos/options.html). # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
system.stateVersion = "25.05"; # Did you read the comment? system.stateVersion = "25.05"; # Did you read the comment?
} }

View file

@ -6,8 +6,7 @@
catppuccin, catppuccin,
nix-cachyos-kernel, nix-cachyos-kernel,
... ...
}: }: {
{
networking.hostName = "alien"; networking.hostName = "alien";
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
@ -16,8 +15,8 @@
]; ];
# enable ddcutil # enable ddcutil
users.users.sckova.extraGroups = [ "i2c" ]; users.users.sckova.extraGroups = ["i2c"];
boot.extraModulePackages = [ config.boot.kernelPackages.ddcci-driver ]; boot.extraModulePackages = [config.boot.kernelPackages.ddcci-driver];
boot.kernelModules = [ boot.kernelModules = [
"i2c-dev" "i2c-dev"
"ddcci_backlight" "ddcci_backlight"
@ -35,14 +34,14 @@
catppuccin.accent = "blue"; catppuccin.accent = "blue";
home-manager.users.sckova = { home-manager.users.sckova = {
imports = [ catppuccin.homeModules.catppuccin ]; imports = [catppuccin.homeModules.catppuccin];
}; };
boot.loader.systemd-boot.consoleMode = "max"; boot.loader.systemd-boot.consoleMode = "max";
# boot.kernelPackages = pkgs.linuxPackages; # boot.kernelPackages = pkgs.linuxPackages;
# let's use the CachyOS kernel instead! # let's use the CachyOS kernel instead!
nixpkgs.overlays = [ nix-cachyos-kernel.overlays.default ]; nixpkgs.overlays = [nix-cachyos-kernel.overlays.default];
nix.settings.substituters = [ nix.settings.substituters = [
"https://attic.xuyh0120.win/lantian" "https://attic.xuyh0120.win/lantian"
"https://cache.garnix.io" "https://cache.garnix.io"

View file

@ -4,8 +4,7 @@
lib, lib,
catppuccin, catppuccin,
... ...
}: }: {
{
networking.hostName = "peach"; networking.hostName = "peach";
boot.binfmt.emulatedSystems = [ boot.binfmt.emulatedSystems = [
@ -13,12 +12,12 @@
"riscv64-linux" "riscv64-linux"
]; ];
boot.kernelParams = [ "apple_dcp.show_notch=1" ]; boot.kernelParams = ["apple_dcp.show_notch=1"];
catppuccin.accent = "peach"; catppuccin.accent = "peach";
home-manager.users.sckova = { home-manager.users.sckova = {
imports = [ catppuccin.homeModules.catppuccin ]; imports = [catppuccin.homeModules.catppuccin];
}; };
hardware.asahi = { hardware.asahi = {

View file

@ -4,8 +4,7 @@
lib, lib,
catppuccin, catppuccin,
... ...
}: }: {
{
networking.hostName = "vm-aarch64"; networking.hostName = "vm-aarch64";
boot.binfmt.emulatedSystems = [ boot.binfmt.emulatedSystems = [
@ -16,7 +15,7 @@
catppuccin.accent = "green"; catppuccin.accent = "green";
home-manager.users.sckova = { home-manager.users.sckova = {
imports = [ catppuccin.homeModules.catppuccin ]; imports = [catppuccin.homeModules.catppuccin];
}; };
services.spice-vdagentd.enable = true; services.spice-vdagentd.enable = true;

View file

@ -1,6 +1,4 @@
{ pkgs, ... }: {pkgs, ...}: {
{
programs.bash = { programs.bash = {
interactiveShellInit = '' interactiveShellInit = ''
if [[ $(${pkgs.procps}/bin/ps --no-header --pid=$PPID --format=comm) != "fish" && -z ''${BASH_EXECUTION_STRING} ]] if [[ $(${pkgs.procps}/bin/ps --no-header --pid=$PPID --format=comm) != "fish" && -z ''${BASH_EXECUTION_STRING} ]]

View file

@ -4,9 +4,7 @@
pkgs, pkgs,
lib, lib,
... ...
}: }: let
let
tailscaleWaitScript = pkgs.writeShellScript "tailscale-wait-for-ip" '' tailscaleWaitScript = pkgs.writeShellScript "tailscale-wait-for-ip" ''
echo "Waiting for tailscale0 to get an IP address..." echo "Waiting for tailscale0 to get an IP address..."
for i in {1..15}; do for i in {1..15}; do
@ -20,8 +18,7 @@ let
echo "Warning: tailscale0 did not get IP address within 15 seconds" echo "Warning: tailscale0 did not get IP address within 15 seconds"
exit 0 exit 0
''; '';
in in {
{
systemd.services.tailscaled = { systemd.services.tailscaled = {
serviceConfig = { serviceConfig = {
ExecStartPost = tailscaleWaitScript; ExecStartPost = tailscaleWaitScript;

View file

@ -3,15 +3,13 @@
lib, lib,
pkgs, pkgs,
... ...
}: }: {
{
nixpkgs.overlays = lib.mkIf (config.nixpkgs.hostPlatform.isLinux) [ nixpkgs.overlays = lib.mkIf (config.nixpkgs.hostPlatform.isLinux) [
(final: prev: { (final: prev: {
wrapFirefox = wrapFirefox = browser: opts: let
browser: opts: extraPrefs =
let (opts.extraPrefs or "")
extraPrefs = (opts.extraPrefs or "") + '' + ''
lockPref("media.gmp-widevinecdm.version", "system-installed"); lockPref("media.gmp-widevinecdm.version", "system-installed");
lockPref("media.gmp-widevinecdm.visible", true); lockPref("media.gmp-widevinecdm.visible", true);
lockPref("media.gmp-widevinecdm.enabled", true); lockPref("media.gmp-widevinecdm.enabled", true);
@ -19,16 +17,18 @@
lockPref("media.eme.enabled", true); lockPref("media.eme.enabled", true);
lockPref("media.eme.encrypted-media-encryption-scheme.enabled", true); lockPref("media.eme.encrypted-media-encryption-scheme.enabled", true);
''; '';
widevineCdmDir = "${final.widevine-cdm}/share/google/chrome/WidevineCdm"; widevineCdmDir = "${final.widevine-cdm}/share/google/chrome/WidevineCdm";
widevineOutDir = "$out/gmp-widevinecdm/system-installed"; widevineOutDir = "$out/gmp-widevinecdm/system-installed";
in in
(prev.wrapFirefox browser (opts // { inherit extraPrefs; })).overrideAttrs (previousAttrs: { (prev.wrapFirefox browser (opts // {inherit extraPrefs;})).overrideAttrs (previousAttrs: {
buildCommand = previousAttrs.buildCommand + '' buildCommand =
mkdir -p "${widevineOutDir}" previousAttrs.buildCommand
ln -s "${widevineCdmDir}/_platform_specific/linux_arm64/libwidevinecdm.so" "${widevineOutDir}/libwidevinecdm.so" + ''
ln -s "${widevineCdmDir}/manifest.json" "${widevineOutDir}/manifest.json" mkdir -p "${widevineOutDir}"
wrapProgram "$oldExe" --set MOZ_GMP_PATH "${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}"
'';
}); });
}) })
]; ];