switch back to nixfmt

This commit is contained in:
Sean Kovacs 2026-01-19 22:27:28 -05:00
commit 62032eab6d
Signed by: sckova
GPG key ID: 00F325187C68651A
37 changed files with 797 additions and 689 deletions

203
flake.nix
View file

@ -78,46 +78,51 @@
}; };
}; };
outputs = { outputs =
nixpkgs, {
nixpkgs-unstable, nixpkgs,
nix-cachyos-kernel, nixpkgs-unstable,
catppuccin, nix-cachyos-kernel,
catppuccin-palette, catppuccin,
home-manager, catppuccin-palette,
plasma-manager, home-manager,
niri, plasma-manager,
noctalia, niri,
spicetify-nix, noctalia,
nur, spicetify-nix,
nixvim, nur,
apple-silicon, nixvim,
openmw, apple-silicon,
catppuccin-discord, openmw,
catppuccin-btop, catppuccin-discord,
catppuccin-mpv, 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 ? {},
}: }:
nixpkgs.lib.nixosSystem { let
inherit system; # All systems we want to support for the generic VM
specialArgs = # 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; inherit catppuccin system;
pkgs-unstable = import nixpkgs-unstable { pkgs-unstable = import nixpkgs-unstable {
inherit system; inherit system;
@ -125,8 +130,7 @@
}; };
} }
// extraSpecialArgs; // extraSpecialArgs;
modules = modules = [
[
{ {
nixpkgs = { nixpkgs = {
config = pkgConfig; config = pkgConfig;
@ -170,7 +174,7 @@
# 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";
}; };
@ -241,65 +245,66 @@
} }
] ]
++ extraModules; ++ 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 = mkHomeConfig =
mkNixosSystem { {
hostname = "alien"; user,
system = "x86_64-linux"; hostname,
extraModules = [ system,
{nixpkgs.overlays = [nix-cachyos-kernel.overlays.default];} }:
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 ( in
system: {
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 { mkNixosSystem {
hostname = "vm-generic"; hostname = "vm-generic";
inherit system; inherit system;
} }
); );
}; };
homeConfigurations = homeConfigurations = {
{
peach = mkHomeConfig { peach = mkHomeConfig {
user = "sckova"; user = "sckova";
hostname = "peach"; hostname = "peach";
@ -313,11 +318,11 @@
} }
// nixpkgs.lib.genAttrs supportedSystems ( // nixpkgs.lib.genAttrs supportedSystems (
system: system:
mkHomeConfig { mkHomeConfig {
user = "sckova"; user = "sckova";
hostname = "vm-generic"; hostname = "vm-generic";
inherit system; inherit system;
} }
); );
}; };
} }

View file

@ -7,7 +7,8 @@
pkgs, pkgs,
modulesPath, modulesPath,
... ...
}: { }:
{
imports = [ imports = [
(modulesPath + "/installer/scan/not-detected.nix") (modulesPath + "/installer/scan/not-detected.nix")
]; ];
@ -23,7 +24,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" = {
@ -46,7 +47,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

@ -5,12 +5,13 @@
lib, lib,
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" ];
fileSystems."/" = { fileSystems."/" = {
device = "/dev/disk/by-label/NixOS"; device = "/dev/disk/by-label/NixOS";
@ -26,7 +27,7 @@
]; ];
}; };
swapDevices = []; swapDevices = [ ];
nixpkgs.hostPlatform = lib.mkDefault "aarch64-linux"; nixpkgs.hostPlatform = lib.mkDefault "aarch64-linux";
} }

View file

@ -5,10 +5,16 @@
lib, lib,
system, system,
... ...
}: { }:
imports = []; {
imports = [ ];
boot.initrd.availableKernelModules = ["ehci_pci" "xhci_pci" "usbhid" "sr_mod"]; boot.initrd.availableKernelModules = [
"ehci_pci"
"xhci_pci"
"usbhid"
"sr_mod"
];
fileSystems."/" = { fileSystems."/" = {
device = "/dev/disk/by-label/nixos"; device = "/dev/disk/by-label/nixos";
@ -18,11 +24,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"; }
]; ];
# Set platform from the system argument passed by the flake # Set platform from the system argument passed by the flake
@ -30,7 +39,7 @@
# Enable Parallels tools only on aarch64 # Enable Parallels tools only on aarch64
hardware.parallels.enable = lib.mkIf (system == "aarch64-linux") true; hardware.parallels.enable = lib.mkIf (system == "aarch64-linux") true;
nixpkgs.config.allowUnfreePredicate = nixpkgs.config.allowUnfreePredicate = lib.mkIf (system == "aarch64-linux") (
lib.mkIf (system == "aarch64-linux") pkg: builtins.elem (lib.getName pkg) [ "prl-tools" ]
(pkg: builtins.elem (lib.getName pkg) ["prl-tools"]); );
} }

View file

@ -2,10 +2,11 @@
config, config,
pkgs, pkgs,
... ...
}: let }:
let
catppuccin-discord = "${pkgs.catppuccin-discord}/share/catppuccin-discord/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" {} '' mergedThemes = pkgs.runCommand "mergedConfig" { } ''
mkdir -p $out mkdir -p $out
cp ${catppuccin-discord} $out/catppuccin.css cp ${catppuccin-discord} $out/catppuccin.css
''; '';
@ -32,8 +33,9 @@
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

@ -4,50 +4,53 @@
pkgs, pkgs,
config, config,
... ...
}: { }:
{
home.file.".librewolf/default/chrome/" = { home.file.".librewolf/default/chrome/" = {
source = ./librewolf_css; source = ./librewolf_css;
force = true; force = true;
recursive = true; recursive = true;
}; };
home.file.".librewolf/default/chrome/colors.css" = let home.file.".librewolf/default/chrome/colors.css" =
color = pkgs.catppuccin.rgb.${config.catppuccin.flavor}; let
accent = color.${config.catppuccin.accent}; color = pkgs.catppuccin.rgb.${config.catppuccin.flavor};
in { accent = color.${config.catppuccin.accent};
text = '' in
* { {
--accent: ${accent}; text = ''
--rosewater: ${color.rosewater}; * {
--flamingo: ${color.flamingo}; --accent: ${accent};
--pink: ${color.pink}; --rosewater: ${color.rosewater};
--mauve: ${color.mauve}; --flamingo: ${color.flamingo};
--red: ${color.red}; --pink: ${color.pink};
--maroon: ${color.maroon}; --mauve: ${color.mauve};
--peach: ${color.peach}; --red: ${color.red};
--yellow: ${color.yellow}; --maroon: ${color.maroon};
--green: ${color.green}; --peach: ${color.peach};
--teal: ${color.teal}; --yellow: ${color.yellow};
--sky: ${color.sky}; --green: ${color.green};
--sapphire: ${color.sapphire}; --teal: ${color.teal};
--blue: ${color.blue}; --sky: ${color.sky};
--lavender: ${color.lavender}; --sapphire: ${color.sapphire};
--text: ${color.text}; --blue: ${color.blue};
--subtext1: ${color.subtext1}; --lavender: ${color.lavender};
--subtext0: ${color.subtext0}; --text: ${color.text};
--overlay2: ${color.overlay2}; --subtext1: ${color.subtext1};
--overlay1: ${color.overlay1}; --subtext0: ${color.subtext0};
--overlay0: ${color.overlay0}; --overlay2: ${color.overlay2};
--surface2: ${color.surface2}; --overlay1: ${color.overlay1};
--surface1: ${color.surface1}; --overlay0: ${color.overlay0};
--surface0: ${color.surface0}; --surface2: ${color.surface2};
--base: ${color.base}; --surface1: ${color.surface1};
--mantle: ${color.mantle}; --surface0: ${color.surface0};
--crust: ${color.crust}; --base: ${color.base};
} --mantle: ${color.mantle};
''; --crust: ${color.crust};
force = true; }
}; '';
force = true;
};
home.file.".local/share/firefoxpwa/profiles/01KEYXH9TC4B54J5CTPNE75JP0/prefs.js" = { home.file.".local/share/firefoxpwa/profiles/01KEYXH9TC4B54J5CTPNE75JP0/prefs.js" = {
text = '' text = ''
@ -256,59 +259,61 @@
} }
]; ];
}; };
search = let search =
nixIcon = "${pkgs.colloid-icon-theme}/share/icons/Colloid/apps/scalable/nix-snowflake.svg"; let
googleIcon = "${pkgs.colloid-icon-theme}/share/icons/Colloid/apps/scalable/google.svg"; nixIcon = "${pkgs.colloid-icon-theme}/share/icons/Colloid/apps/scalable/nix-snowflake.svg";
in { googleIcon = "${pkgs.colloid-icon-theme}/share/icons/Colloid/apps/scalable/google.svg";
force = true; in
default = "google"; {
order = [ force = true;
"google" default = "google";
]; order = [
engines = { "google"
nix-packages = { ];
name = "Nix Packages"; engines = {
urls = [ nix-packages = {
{ name = "Nix Packages";
template = "https://search.nixos.org/packages"; urls = [
params = [ {
{ template = "https://search.nixos.org/packages";
name = "type"; params = [
value = "packages"; {
} name = "type";
{ value = "packages";
name = "query"; }
value = "{searchTerms}"; {
} name = "query";
]; value = "{searchTerms}";
} }
]; ];
}
];
icon = nixIcon; icon = nixIcon;
definedAliases = ["@np"]; definedAliases = [ "@np" ];
}; };
nixos-wiki = { nixos-wiki = {
name = "NixOS Wiki"; name = "NixOS Wiki";
urls = [{template = "https://wiki.nixos.org/w/index.php?search={searchTerms}";}]; urls = [ { template = "https://wiki.nixos.org/w/index.php?search={searchTerms}"; } ];
icon = nixIcon; icon = nixIcon;
definedAliases = ["@nw"]; definedAliases = [ "@nw" ];
}; };
google = { google = {
name = "Google"; name = "Google";
urls = [{template = "https://google.com/search?q={searchTerms}";}]; urls = [ { template = "https://google.com/search?q={searchTerms}"; } ];
icon = googleIcon; icon = googleIcon;
definedAliases = ["@go"]; definedAliases = [ "@go" ];
}; };
wikipedia = { wikipedia = {
name = "Wikipedia"; name = "Wikipedia";
urls = [{template = "https://en.wikipedia.org/w/index.php?search={searchTerms}";}]; urls = [ { template = "https://en.wikipedia.org/w/index.php?search={searchTerms}"; } ];
definedAliases = ["@wi"]; definedAliases = [ "@wi" ];
};
}; };
}; };
};
}; };
}; };
}; };

View file

@ -2,14 +2,16 @@
config, config,
pkgs, pkgs,
... ...
}: let }:
mergedConfig = pkgs.runCommand "mergedConfig" {} '' let
mergedConfig = pkgs.runCommand "mergedConfig" { } ''
mkdir -p $out mkdir -p $out
${pkgs.gnused}/bin/sed 's/${pkgs.catppuccin.${config.catppuccin.flavor}.base}/#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 \ ${pkgs.catppuccin-mpv-git}/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

@ -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

@ -3,10 +3,13 @@
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

@ -4,7 +4,8 @@
pkgs-unstable, pkgs-unstable,
lib, lib,
... ...
}: { }:
{
options = { options = {
catppuccinUpper = { catppuccinUpper = {
accent = lib.mkOption { accent = lib.mkOption {
@ -106,30 +107,32 @@
default = pkgs.noto-fonts-color-emoji; default = pkgs.noto-fonts-color-emoji;
}; };
}; };
cursor = let cursor =
attrName = config.catppuccin.flavor + config.catppuccinUpper.accent; let
in { attrName = config.catppuccin.flavor + config.catppuccinUpper.accent;
name = lib.mkOption { in
type = lib.types.str; {
readOnly = true; name = lib.mkOption {
default = "catppuccin-${config.catppuccin.flavor}-${config.catppuccin.accent}-cursors"; 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 { isDark = lib.mkOption {
type = lib.types.bool; type = lib.types.bool;
readOnly = true; readOnly = true;
@ -190,8 +193,8 @@
# enableWideVine = true; # enableWideVine = true;
# }) # })
(catppuccin-kde.override { (catppuccin-kde.override {
flavour = [config.catppuccin.flavor]; flavour = [ config.catppuccin.flavor ];
accents = [config.catppuccin.accent]; accents = [ config.catppuccin.accent ];
}) })
]) ])
++ [ ++ [

View file

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

View file

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

View file

@ -4,7 +4,8 @@
pkgs-unstable, pkgs-unstable,
spicetify-nix, spicetify-nix,
... ...
}: { }:
{
catppuccin = { catppuccin = {
accent = "blue"; accent = "blue";
flavor = "mocha"; flavor = "mocha";
@ -18,28 +19,30 @@
pkgs.daggerfall-unity pkgs.daggerfall-unity
]; ];
programs.spicetify = let programs.spicetify =
spicePkgs = spicetify-nix.legacyPackages.${pkgs.stdenv.hostPlatform.system}; let
in { spicePkgs = spicetify-nix.legacyPackages.${pkgs.stdenv.hostPlatform.system};
enable = true; in
{
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,4 +1,5 @@
{pkgs, ...}: { { pkgs, ... }:
{
catppuccin = { catppuccin = {
accent = "lavender"; accent = "lavender";
flavor = "macchiato"; flavor = "macchiato";
@ -34,7 +35,7 @@
shortcuts = { shortcuts = {
# this is really annoying on apple laptops # this is really annoying on apple laptops
org_kde_powerdevil.Sleep = []; org_kde_powerdevil.Sleep = [ ];
}; };
panels = [ panels = [
@ -50,7 +51,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

@ -2,13 +2,14 @@
config, config,
pkgs, 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 = [
@ -24,7 +25,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

@ -2,7 +2,8 @@
config, config,
pkgs, pkgs,
... ...
}: { }:
{
programs.ghostwriter = { programs.ghostwriter = {
enable = true; enable = true;
font = { font = {
@ -52,7 +53,7 @@
value = ""; value = "";
type = "substring"; type = "substring";
}; };
window-types = ["normal"]; window-types = [ "normal" ];
}; };
apply = { apply = {
opacityactive = { opacityactive = {
@ -72,7 +73,7 @@
value = "openmw"; value = "openmw";
type = "substring"; type = "substring";
}; };
window-types = ["normal"]; window-types = [ "normal" ];
}; };
apply = { apply = {
noborder = { noborder = {
@ -100,7 +101,7 @@
value = "Minecraft*"; value = "Minecraft*";
type = "substring"; type = "substring";
}; };
window-types = ["normal"]; window-types = [ "normal" ];
}; };
apply = { apply = {
noborder = { noborder = {
@ -151,7 +152,7 @@
value = "steamwebhelper"; value = "steamwebhelper";
type = "substring"; type = "substring";
}; };
window-types = ["normal"]; window-types = [ "normal" ];
}; };
apply = { apply = {
desktopfile = { desktopfile = {

View file

@ -2,7 +2,8 @@
config, config,
pkgs, pkgs,
... ...
}: { }:
{
imports = [ imports = [
./gtk.nix ./gtk.nix
./qt.nix ./qt.nix
@ -35,10 +36,7 @@
gtk = { gtk = {
enable = true; enable = true;
colorScheme = colorScheme = if config.userOptions.isDark then "dark" else "light";
if config.userOptions.isDark
then "dark"
else "light";
# theme = { # theme = {
# package = pkgs.kdePackages.breeze-gtk; # package = pkgs.kdePackages.breeze-gtk;
@ -49,10 +47,7 @@
# }; # };
iconTheme = { iconTheme = {
name = name = if config.userOptions.isDark then "Colloid-Dark" else "Colloid-Light";
if config.userOptions.isDark
then "Colloid-Dark"
else "Colloid-Light";
package = pkgs.colloid-icon-theme; package = pkgs.colloid-icon-theme;
}; };

View file

@ -3,13 +3,18 @@
pkgs, pkgs,
lib, lib,
... ...
}: let }:
let
colors = pkgs.catppuccin.hex.${config.catppuccin.flavor}; colors = pkgs.catppuccin.hex.${config.catppuccin.flavor};
mkColorSection = name: value: "@define-color ${name} ${value};"; mkColorSection = name: value: "@define-color ${name} ${value};";
generateCSS = '' 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 */ /* Base colors */
${mkColorSection "window_bg_color" colors.base} ${mkColorSection "window_bg_color" colors.base}
@ -116,7 +121,8 @@
${mkColorSection "accent_bg_color" colors.${config.catppuccin.accent}} ${mkColorSection "accent_bg_color" colors.${config.catppuccin.accent}}
@define-color accent_fg_color @window_bg_color; @define-color accent_fg_color @window_bg_color;
''; '';
in { in
{
home.file = { home.file = {
".config/gtk-4.0/gtk.css" = { ".config/gtk-4.0/gtk.css" = {
text = generateCSS; text = generateCSS;

View file

@ -2,7 +2,8 @@
config, config,
pkgs, pkgs,
... ...
}: { }:
{
qt = { qt = {
enable = true; enable = true;
@ -32,84 +33,86 @@
general = "\"${config.userOptions.fontSans.name},${toString config.userOptions.fontSans.size}\""; general = "\"${config.userOptions.fontSans.name},${toString config.userOptions.fontSans.size}\"";
}; };
ColorScheme = let ColorScheme =
c = pkgs.catppuccin.bare.${config.catppuccin.flavor}; let
accent = c.${config.catppuccin.accent}; c = pkgs.catppuccin.bare.${config.catppuccin.flavor};
mkColors = roles: builtins.concatStringsSep ", " (map (r: "#ff${r}") roles); accent = c.${config.catppuccin.accent};
in { mkColors = roles: builtins.concatStringsSep ", " (map (r: "#ff${r}") roles);
active_colors = mkColors [ in
c.text {
c.surface0 active_colors = mkColors [
c.surface1 c.text
c.surface0 c.surface0
c.base c.surface1
c.mantle c.surface0
c.text c.base
c.text c.mantle
c.text c.text
c.base c.text
c.mantle c.text
c.crust c.base
accent c.mantle
c.base c.crust
accent accent
c.mauve c.base
c.mantle accent
"000000" c.mauve
c.base c.mantle
c.text "000000"
c.overlay0 c.base
accent c.text
]; c.overlay0
disabled_colors = mkColors [ accent
c.overlay0 ];
c.surface0 disabled_colors = mkColors [
c.surface1 c.overlay0
c.surface0 c.surface0
c.overlay0 c.surface1
c.mantle c.surface0
c.overlay0 c.overlay0
c.text c.mantle
c.overlay0 c.overlay0
c.surface0 c.text
c.surface0 c.overlay0
c.mantle c.surface0
c.overlay1 c.surface0
c.text c.mantle
"0000ff" c.overlay1
"ff00ff" c.text
c.surface0 "0000ff"
"000000" "ff00ff"
c.surface0 c.surface0
c.base "000000"
"80000000" c.surface0
c.overlay1 c.base
]; "80000000"
inactive_colors = mkColors [ c.overlay1
c.text ];
c.surface0 inactive_colors = mkColors [
c.surface1 c.text
c.surface0 c.surface0
c.base c.surface1
c.mantle c.surface0
c.text c.base
c.text c.mantle
c.text c.text
c.base c.text
c.mantle c.text
c.crust c.base
accent c.mantle
c.base c.crust
accent accent
c.mauve c.base
c.mantle accent
"000000" c.mauve
c.base c.mantle
c.text "000000"
c.overlay0 c.base
accent c.text
]; c.overlay0
}; accent
];
};
}; };
}; };
} }

View file

@ -3,7 +3,8 @@
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;
@ -25,8 +26,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 = {
@ -61,7 +62,7 @@
}; };
Install = { Install = {
WantedBy = ["default.target"]; WantedBy = [ "default.target" ];
}; };
}; };

View file

@ -2,15 +2,17 @@
config, config,
pkgs, pkgs,
... ...
}: let }:
mergedConfig = pkgs.runCommand "mergedConfig" {} '' let
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 ${pkgs.catppuccin-btop-git}/themes/catppuccin_latte.theme $out/themes/ 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 ${pkgs.catppuccin-btop-git}/themes/catppuccin_${config.catppuccin.flavor}.theme $out/themes/nixos.theme
''; '';
in { in
{
home.file.".config/btop" = { home.file.".config/btop" = {
source = mergedConfig; source = mergedConfig;
recursive = true; recursive = true;

View file

@ -3,7 +3,8 @@
pkgs, pkgs,
lib, lib,
... ...
}: { }:
{
home.packages = with pkgs; [ home.packages = with pkgs; [
kdePackages.qttools kdePackages.qttools
eza eza
@ -44,14 +45,15 @@
programs.man.generateCaches = false; programs.man.generateCaches = false;
home.file.".config/fish/colors.fish" = { home.file.".config/fish/colors.fish" = {
text = let text =
flavor = config.catppuccin.flavor; let
palette = pkgs.catppuccin.bare.${flavor}; flavor = config.catppuccin.flavor;
accent = config.catppuccin.accent; palette = pkgs.catppuccin.bare.${flavor};
in accent = config.catppuccin.accent;
in
lib.concatStringsSep "\n" ( 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}}"] ++ [ "set -g color_accent ${palette.${accent}}" ]
); );
force = true; force = true;
}; };

View file

@ -2,7 +2,8 @@
config, config,
pkgs, pkgs,
... ...
}: let }:
let
colors = pkgs.catppuccin.hex.${config.catppuccin.flavor}; colors = pkgs.catppuccin.hex.${config.catppuccin.flavor};
accent = colors.${config.catppuccin.accent}; accent = colors.${config.catppuccin.accent};
@ -87,7 +88,8 @@
text = kitty-colors; text = kitty-colors;
destination = "/kitty-colors.conf"; destination = "/kitty-colors.conf";
}; };
in { in
{
home.file.".config/kitty/themes" = { home.file.".config/kitty/themes" = {
source = kitty-colors-file; source = kitty-colors-file;
recursive = true; recursive = true;
@ -109,7 +111,7 @@ in {
}; };
shellIntegration.enableFishIntegration = true; shellIntegration.enableFishIntegration = true;
keybindings = { keybindings = {
"ctrl+k" = ''combine : clear_terminal scroll active : clear_terminal scrollback active''; "ctrl+k" = "combine : clear_terminal scroll active : clear_terminal scrollback active";
}; };
settings = { settings = {
include = "/home/${config.userOptions.username}/.config/kitty/themes/kitty-colors.conf"; include = "/home/${config.userOptions.username}/.config/kitty/themes/kitty-colors.conf";

View file

@ -2,7 +2,8 @@
pkgs, pkgs,
config, config,
... ...
}: { }:
{
home.sessionVariables = { home.sessionVariables = {
EDITOR = "nvim"; EDITOR = "nvim";
}; };
@ -11,7 +12,7 @@
kdePackages.qtdeclarative kdePackages.qtdeclarative
prettier prettier
prettierd prettierd
alejandra nixfmt
stylua stylua
black black
clang-tools clang-tools
@ -106,18 +107,18 @@
]; ];
}; };
sources = [ sources = [
{name = "git";} { name = "git"; }
{name = "nvim_lsp";} { name = "nvim_lsp"; }
{name = "path";} { name = "path"; }
{name = "buffer";} { name = "buffer"; }
{name = "fish";} { name = "fish"; }
{name = "emoji";} { name = "emoji"; }
{ {
name = "buffer"; # text within current buffer name = "buffer"; # text within current buffer
option.get_bufnrs.__raw = "vim.api.nvim_list_bufs"; option.get_bufnrs.__raw = "vim.api.nvim_list_bufs";
keywordLength = 3; keywordLength = 3;
} }
{name = "copilot";} { name = "copilot"; }
{ {
name = "path"; # file system paths name = "path"; # file system paths
keywordLength = 3; keywordLength = 3;
@ -133,16 +134,16 @@
enable = true; enable = true;
settings = { settings = {
formatters_by_ft = { formatters_by_ft = {
lua = ["stylua"]; lua = [ "stylua" ];
python = ["black"]; python = [ "black" ];
nix = ["alejandra"]; nix = [ "nixfmt" ];
javascript = ["prettier"]; javascript = [ "prettier" ];
css = ["prettier"]; css = [ "prettier" ];
json = ["prettier"]; json = [ "prettier" ];
jsonc = ["prettier"]; jsonc = [ "prettier" ];
fish = ["fish_indent"]; fish = [ "fish_indent" ];
c = ["clang-format"]; c = [ "clang-format" ];
cpp = ["clang-format"]; cpp = [ "clang-format" ];
}; };
# Default formatting options # Default formatting options
@ -185,108 +186,110 @@
nixd.enable = true; nixd.enable = true;
}; };
}; };
lualine = let lualine =
palette = pkgs.catppuccin.${config.catppuccin.flavor}; let
in { palette = pkgs.catppuccin.${config.catppuccin.flavor};
enable = true; in
settings = { {
options = { enable = true;
theme = { settings = {
normal = { options = {
a = { theme = {
fg = palette.base; normal = {
bg = palette.mauve; a = {
fg = palette.base;
bg = palette.mauve;
};
b = {
fg = palette.text;
bg = palette.surface0;
};
c = {
fg = palette.text;
};
}; };
b = { insert = {
fg = palette.text; a = {
bg = palette.surface0; fg = palette.base;
bg = palette.blue;
};
}; };
c = { visual = {
fg = palette.text; 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 = { component_separators = "";
a = { section_separators = {
fg = palette.base; left = "";
bg = palette.blue; right = "";
};
};
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 = { sections = {
left = ""; lualine_a = [
right = ""; {
__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 = { inactive_sections = {
lualine_a = [ lualine_a = [ "filename" ];
{ lualine_b = [ ];
__unkeyed-1 = "mode"; lualine_c = [ ];
separator = { lualine_x = [ ];
left = " "; lualine_y = [ ];
}; lualine_z = [ "location" ];
right_padding = 2; };
} tabline = { };
]; extensions = [ ];
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 = [];
}; };
};
}; };
}; };
} }

View file

@ -1,4 +1,5 @@
{pkgs, ...}: { { pkgs, ... }:
{
imports = [ imports = [
./niri.nix ./niri.nix
./noctalia.nix ./noctalia.nix

View file

@ -2,7 +2,8 @@
config, config,
pkgs, pkgs,
... ...
}: { }:
{
# https://github.com/sodiboo/niri-flake/blob/main/docs.md # https://github.com/sodiboo/niri-flake/blob/main/docs.md
programs.niri = { programs.niri = {
# handle package systemwide # handle package systemwide
@ -13,7 +14,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;
@ -88,14 +89,15 @@
theme = config.userOptions.cursor.name; theme = config.userOptions.cursor.name;
}; };
layout = { layout = {
gaps = 2; gaps = 4;
background-color = pkgs.catppuccin.${config.catppuccin.flavor}.mantle; background-color = pkgs.catppuccin.${config.catppuccin.flavor}.mantle;
default-column-width = { default-column-width = {
proportion = 0.5; proportion = 0.5;
}; };
preset-column-widths = [ preset-column-widths = [
{proportion = 1.0 / 3.0;} { proportion = 4.0 / 12.0; }
{proportion = 2.0 / 3.0;} { proportion = 6.0 / 12.0; }
{ proportion = 8.0 / 12.0; }
]; ];
border = { border = {
enable = true; enable = true;
@ -137,10 +139,10 @@
} }
{ {
geometry-corner-radius = { geometry-corner-radius = {
top-left = 0.0; top-left = 16.0;
top-right = 0.0; top-right = 16.0;
bottom-left = 0.0; bottom-left = 16.0;
bottom-right = 0.0; bottom-right = 16.0;
}; };
clip-to-geometry = true; clip-to-geometry = true;
} }
@ -160,10 +162,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" = {
@ -217,145 +219,187 @@
}; };
"XF86MonBrightnessUp" = { "XF86MonBrightnessUp" = {
action.spawn = ["noctalia-shell" "ipc" "call" "brightness" "increase"]; action.spawn = [
"noctalia-shell"
"ipc"
"call"
"brightness"
"increase"
];
allow-when-locked = true; allow-when-locked = true;
}; };
"XF86MonBrightnessDown" = { "XF86MonBrightnessDown" = {
action.spawn = ["noctalia-shell" "ipc" "call" "brightness" "decrease"]; action.spawn = [
"noctalia-shell"
"ipc"
"call"
"brightness"
"decrease"
];
allow-when-locked = true; allow-when-locked = true;
}; };
"Shift+XF86MonBrightnessUp" = { "Shift+XF86MonBrightnessUp" = {
action.spawn = ["brightnessctl" "--class=backlight" "set" "+1%"]; action.spawn = [
"brightnessctl"
"--class=backlight"
"set"
"+1%"
];
allow-when-locked = true; allow-when-locked = true;
}; };
"Shift+XF86MonBrightnessDown" = { "Shift+XF86MonBrightnessDown" = {
action.spawn = ["brightnessctl" "--class=backlight" "set" "1%-"]; action.spawn = [
"brightnessctl"
"--class=backlight"
"set"
"1%-"
];
allow-when-locked = true; allow-when-locked = true;
}; };
"XF86AudioPrev" = { "XF86AudioPrev" = {
action.spawn = ["playerctl" "previous"]; action.spawn = [
"playerctl"
"previous"
];
allow-when-locked = true; allow-when-locked = true;
}; };
"XF86AudioPlay" = { "XF86AudioPlay" = {
action.spawn = ["playerctl" "play-pause"]; action.spawn = [
"playerctl"
"play-pause"
];
allow-when-locked = true; allow-when-locked = true;
}; };
"XF86AudioNext" = { "XF86AudioNext" = {
action.spawn = ["playerctl" "next"]; action.spawn = [
"playerctl"
"next"
];
allow-when-locked = true; allow-when-locked = true;
}; };
"XF86Sleep" = { "XF86Sleep" = {
action.power-off-monitors = {}; action.power-off-monitors = { };
}; };
"XF86Search" = { "XF86Search" = {
action.spawn = ["noctalia-shell" "ipc" "call" "launcher" "toggle"]; action.spawn = [
"noctalia-shell"
"ipc"
"call"
"launcher"
"toggle"
];
allow-when-locked = true; allow-when-locked = true;
}; };
"XF86LaunchA" = { "XF86LaunchA" = {
action.spawn = ["niri" "msg" "action" "toggle-overview"]; action.spawn = [
"niri"
"msg"
"action"
"toggle-overview"
];
allow-when-locked = true; allow-when-locked = true;
}; };
"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;
@ -376,22 +420,22 @@
"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.maximize-window-to-edges = {}; "Mod+Shift+F".action.maximize-window-to-edges = { };
"Mod+Ctrl+Shift+F".action.fullscreen-window = {}; "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+Minus".action.set-column-width = "-10%";
"Mod+Equal".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+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

@ -2,7 +2,8 @@
pkgs, pkgs,
config, config,
... ...
}: { }:
{
programs.noctalia-shell = { programs.noctalia-shell = {
enable = true; enable = true;
colors = { colors = {
@ -33,7 +34,7 @@
bar = { bar = {
position = "top"; position = "top";
backgroundOpacity = 1; backgroundOpacity = 1;
monitors = []; monitors = [ ];
density = "spacious"; density = "spacious";
showCapsule = true; showCapsule = true;
capsuleOpacity = 1; capsuleOpacity = 1;
@ -198,7 +199,7 @@
enabled = false; enabled = false;
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;
@ -217,7 +218,7 @@
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";
@ -302,8 +303,8 @@
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;
@ -346,7 +347,7 @@
}; };
notifications = { notifications = {
enabled = true; enabled = true;
monitors = []; monitors = [ ];
location = "top_right"; location = "top_right";
overlayLayer = true; overlayLayer = true;
backgroundOpacity = 1; backgroundOpacity = 1;
@ -372,7 +373,7 @@
1 1
2 2
]; ];
monitors = []; monitors = [ ];
}; };
audio = { audio = {
volumeStep = 5; volumeStep = 5;
@ -380,7 +381,7 @@
cavaFrameRate = 30; cavaFrameRate = 30;
visualizerType = "linear"; visualizerType = "linear";
visualizerQuality = "high"; visualizerQuality = "high";
mprisBlacklist = []; mprisBlacklist = [ ];
preferredPlayer = ""; preferredPlayer = "";
externalMixer = "pwvucontrol || pavucontrol"; externalMixer = "pwvucontrol || pavucontrol";
}; };
@ -435,8 +436,8 @@
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";
}; };
@ -454,7 +455,7 @@
}; };
Install = { Install = {
WantedBy = ["niri.service"]; WantedBy = [ "niri.service" ];
}; };
}; };
} }

View file

@ -2,7 +2,8 @@
pkgs, pkgs,
config, config,
... ...
}: let }:
let
script = pkgs.writeShellScript "bing-wallpaper" '' script = pkgs.writeShellScript "bing-wallpaper" ''
set -euo pipefail set -euo pipefail
@ -62,7 +63,8 @@
echo "Wallpaper downloaded and applied successfully." echo "Wallpaper downloaded and applied successfully."
''; '';
in { in
{
home.packages = with pkgs; [ home.packages = with pkgs; [
wpaperd wpaperd
]; ];
@ -81,9 +83,9 @@ in {
systemd.user.services.wpaperd = { systemd.user.services.wpaperd = {
Unit = { Unit = {
Description = "Modern wallpaper daemon for Wayland"; Description = "Modern wallpaper daemon for Wayland";
PartOf = ["niri.service"]; PartOf = [ "niri.service" ];
Requires = ["niri.service"]; Requires = [ "niri.service" ];
After = ["niri.service"]; After = [ "niri.service" ];
}; };
Service = { Service = {
ExecStart = "${pkgs.wpaperd}/bin/wpaperd"; ExecStart = "${pkgs.wpaperd}/bin/wpaperd";
@ -128,7 +130,7 @@ in {
Persistent = true; Persistent = true;
}; };
Install = { Install = {
WantedBy = ["timers.target"]; WantedBy = [ "timers.target" ];
}; };
}; };
} }

View file

@ -1,5 +1,5 @@
final: prev: { final: prev: {
spotify-webapp = final.callPackage ./spotify-webapp {}; spotify-webapp = final.callPackage ./spotify-webapp { };
catppuccin-discord = final.callPackage ./catppuccin-discord { catppuccin-discord = final.callPackage ./catppuccin-discord {
inherit (final) catppuccin-discord-git; inherit (final) catppuccin-discord-git;

View file

@ -5,7 +5,8 @@
copyDesktopItems, copyDesktopItems,
chromium, chromium,
writeShellScriptBin, writeShellScriptBin,
}: let }:
let
pname = "spotify-webapp"; pname = "spotify-webapp";
version = "1.0.0"; version = "1.0.0";
@ -24,48 +25,48 @@
"$@" "$@"
''; '';
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

@ -7,7 +7,8 @@
pkgs, pkgs,
inputs, inputs,
... ...
}: { }:
{
environment.sessionVariables = { environment.sessionVariables = {
# this makes electron apps work per the wiki # this makes electron apps work per the wiki
NIXOS_OZONE_WL = "1"; NIXOS_OZONE_WL = "1";

View file

@ -2,16 +2,17 @@
config, config,
pkgs, pkgs,
... ...
}: { }:
{
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
ddcutil ddcutil
mangohud mangohud
(bottles.override {removeWarningPopup = true;}) (bottles.override { removeWarningPopup = true; })
]; ];
# 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"
@ -92,7 +93,7 @@
# enable hyper-v for guests # enable hyper-v for guests
virtualisation.hypervGuest.enable = true; virtualisation.hypervGuest.enable = true;
boot.blacklistedKernelModules = ["hyperv_fb"]; boot.blacklistedKernelModules = [ "hyperv_fb" ];
boot.binfmt.emulatedSystems = [ boot.binfmt.emulatedSystems = [
"aarch64-linux" "aarch64-linux"
@ -100,5 +101,5 @@
]; ];
# i don't even remember what this does or why i added it # 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" ];
} }

View file

@ -2,8 +2,9 @@
pkgs, pkgs,
config, config,
... ...
}: { }:
boot.kernelParams = ["appledrm.show_notch=1"]; {
boot.kernelParams = [ "appledrm.show_notch=1" ];
catppuccin = { catppuccin = {
accent = "lavender"; accent = "lavender";
@ -14,7 +15,7 @@
ddcutil ddcutil
]; ];
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"

View file

@ -1,11 +1,12 @@
{catppuccin, ...}: { { catppuccin, ... }:
{
catppuccin = { catppuccin = {
accent = "green"; accent = "green";
flavor = "mocha"; flavor = "mocha";
}; };
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,4 +1,5 @@
{pkgs, ...}: { { pkgs, ... }:
{
# This following block taken from the wiki: # This following block taken from the wiki:
# https://nixos.wiki/wiki/Fish#Setting_fish_as_your_shell # https://nixos.wiki/wiki/Fish#Setting_fish_as_your_shell
programs.bash = { programs.bash = {

View file

@ -6,7 +6,8 @@
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,7 +21,8 @@
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

@ -4,13 +4,14 @@
config, config,
lib, lib,
... ...
}: { }:
{
nixpkgs.overlays = lib.mkIf (config.nixpkgs.hostPlatform.isLinux) [ nixpkgs.overlays = lib.mkIf (config.nixpkgs.hostPlatform.isLinux) [
(final: prev: { (final: prev: {
wrapLibrewolf = browser: opts: let wrapLibrewolf =
extraPrefs = browser: opts:
(opts.extraPrefs or "") let
+ '' 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);
@ -18,18 +19,16 @@
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.wrapLibrewolf browser (opts // {inherit extraPrefs;})).overrideAttrs (previousAttrs: { (prev.wrapLibrewolf browser (opts // { inherit extraPrefs; })).overrideAttrs (previousAttrs: {
buildCommand = buildCommand = previousAttrs.buildCommand + ''
previousAttrs.buildCommand mkdir -p "${widevineOutDir}"
+ '' ln -s "${widevineCdmDir}/_platform_specific/linux_arm64/libwidevinecdm.so" "${widevineOutDir}/libwidevinecdm.so"
mkdir -p "${widevineOutDir}" ln -s "${widevineCdmDir}/manifest.json" "${widevineOutDir}/manifest.json"
ln -s "${widevineCdmDir}/_platform_specific/linux_arm64/libwidevinecdm.so" "${widevineOutDir}/libwidevinecdm.so" wrapProgram "$oldExe" --set MOZ_GMP_PATH "${widevineOutDir}"
ln -s "${widevineCdmDir}/manifest.json" "${widevineOutDir}/manifest.json" '';
wrapProgram "$oldExe" --set MOZ_GMP_PATH "${widevineOutDir}"
'';
}); });
}) })
]; ];