This commit is contained in:
Daniel Flanagan 2023-10-05 01:02:31 -05:00
parent 408ae8df77
commit d702e2cb24
Signed by: lytedev
GPG key ID: 5B2020A0F9921EF4
5 changed files with 2066 additions and 1403 deletions

View file

@ -19,22 +19,6 @@
"url": "ssh://gitea@git.lyte.dev/lytedev/api.lyte.dev.git" "url": "ssh://gitea@git.lyte.dev/lytedev/api.lyte.dev.git"
} }
}, },
"base16-schemes": {
"flake": false,
"locked": {
"lastModified": 1689473676,
"narHash": "sha256-L0RhUr9+W5EPWBpLcmkKpUeCEWRs/kLzVMF3Vao2ZU0=",
"owner": "tinted-theming",
"repo": "base16-schemes",
"rev": "d95123ca6377cd849cfdce92c0a24406b0c6a789",
"type": "github"
},
"original": {
"owner": "tinted-theming",
"repo": "base16-schemes",
"type": "github"
}
},
"crane": { "crane": {
"inputs": { "inputs": {
"flake-compat": "flake-compat", "flake-compat": "flake-compat",
@ -239,25 +223,6 @@
"type": "github" "type": "github"
} }
}, },
"nix-colors": {
"inputs": {
"base16-schemes": "base16-schemes",
"nixpkgs-lib": "nixpkgs-lib"
},
"locked": {
"lastModified": 1695388192,
"narHash": "sha256-2jelpE7xK+4M7jZNyWL7QYOYegQLYBDQS5bvdo8XRUQ=",
"owner": "misterio77",
"repo": "nix-colors",
"rev": "37227f274b34a3b51649166deb94ce7fec2c6a4c",
"type": "github"
},
"original": {
"owner": "misterio77",
"repo": "nix-colors",
"type": "github"
}
},
"nixpkgs": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 1690026219, "lastModified": 1690026219,
@ -274,21 +239,6 @@
"type": "github" "type": "github"
} }
}, },
"nixpkgs-lib": {
"locked": {
"lastModified": 1694911725,
"narHash": "sha256-8YqI+YU1DGclEjHsnrrGfqsQg3Wyga1DfTbJrN3Ud0c=",
"owner": "nix-community",
"repo": "nixpkgs.lib",
"rev": "819180647f428a3826bfc917a54449da1e532ce0",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "nixpkgs.lib",
"type": "github"
}
},
"nixpkgs-stable": { "nixpkgs-stable": {
"locked": { "locked": {
"lastModified": 1696039360, "lastModified": 1696039360,
@ -425,7 +375,6 @@
"helix": "helix", "helix": "helix",
"home-manager": "home-manager", "home-manager": "home-manager",
"hyprland": "hyprland", "hyprland": "hyprland",
"nix-colors": "nix-colors",
"nixpkgs-stable": "nixpkgs-stable", "nixpkgs-stable": "nixpkgs-stable",
"nixpkgs-unstable": "nixpkgs-unstable", "nixpkgs-unstable": "nixpkgs-unstable",
"sops-nix": "sops-nix" "sops-nix": "sops-nix"

126
flake.nix
View file

@ -8,7 +8,6 @@
sops-nix.url = "github:Mic92/sops-nix"; sops-nix.url = "github:Mic92/sops-nix";
hardware.url = "github:nixos/nixos-hardware"; hardware.url = "github:nixos/nixos-hardware";
hyprland.url = "github:hyprwm/Hyprland"; hyprland.url = "github:hyprwm/Hyprland";
nix-colors.url = "github:misterio77/nix-colors";
api-lyte-dev.url = "git+ssh://gitea@git.lyte.dev/lytedev/api.lyte.dev.git"; api-lyte-dev.url = "git+ssh://gitea@git.lyte.dev/lytedev/api.lyte.dev.git";
@ -25,7 +24,6 @@
nixpkgs-stable, nixpkgs-stable,
nixpkgs-unstable, nixpkgs-unstable,
home-manager, home-manager,
nix-colors,
... ...
} @ inputs: let } @ inputs: let
inherit (self) outputs; inherit (self) outputs;
@ -38,8 +36,120 @@
"x86_64-darwin" "x86_64-darwin"
]; ];
color-schemes = let
mkColorScheme = scheme @ {
scheme-name,
bg,
bg2,
bg3,
bg4,
bg5,
fg,
fg2,
fg3,
fgdim,
# pink,
purple,
red,
# orange,
yellow,
green,
teal,
blue,
...
}: let
base =
{
# aliases?
text = fg;
primary = blue;
urgent = red;
# blacks
"0" = bg4;
"8" = bg5;
"1" = red;
"9" = red;
"2" = green;
"10" = green;
"3" = yellow;
"11" = yellow;
"4" = blue;
"12" = blue;
"5" = purple;
"13" = purple;
"6" = teal;
"14" = teal;
# whites
"7" = fg2;
"15" = fg3;
}
// scheme;
in
{
withHashPrefix = inputs.nixpkgs-unstable.lib.mapAttrs (_: value: "#${value}") base;
}
// base;
in {
donokai = mkColorScheme {
scheme-name = "donokai";
bg = "111111";
bg2 = "181818";
bg3 = "222222";
bg4 = "292929";
bg5 = "333333";
fg = "f8f8f8";
fg2 = "d8d8d8";
fg3 = "c8c8c8";
fgdim = "666666";
red = "f92672";
green = "a6e22e";
yellow = "f4bf75";
blue = "66d9ef";
purple = "ae81ff";
teal = "a1efe4";
# orange = "fab387";
};
catppuccin-mocha-sapphire = mkColorScheme {
scheme-name = "catppuccin-mocha-sapphire";
bg = "1e1e2e";
bg2 = "181825";
bg3 = "313244";
bg4 = "45475a";
bg5 = "585b70";
fg = "cdd6f4";
fg2 = "bac2de";
fg3 = "a6adc8";
fgdim = "6c7086";
# pink = "f5e0dc";
purple = "cba6f7";
red = "f38ba8";
# orange = "fab387";
# yellow = "f9e2af";
yellow = "fab387";
green = "a6e3a1";
teal = "94e2d5";
blue = "74c7ec";
};
};
colors = color-schemes.catppuccin-mocha-sapphire;
font = {
name = "IosevkaLyteTerm";
size = 12;
};
linuxHomeManagerModules = [./home ./home/linux.nix];
forAllSystems = nixpkgs-stable.lib.genAttrs systems; forAllSystems = nixpkgs-stable.lib.genAttrs systems;
in { in {
# TODO: nix-color integration?
# Your custom packages # Your custom packages
# Acessible through 'nix build', 'nix shell', etc # Acessible through 'nix build', 'nix shell', etc
packages = forAllSystems (system: import ./pkgs nixpkgs-stable.legacyPackages.${system}); packages = forAllSystems (system: import ./pkgs nixpkgs-stable.legacyPackages.${system});
@ -66,7 +176,7 @@
cb { cb {
system = system; system = system;
specialArgs = { specialArgs = {
inherit inputs outputs system nix-colors; inherit inputs outputs system colors font;
flake = self; flake = self;
}; };
modules = modules =
@ -76,14 +186,12 @@
] ]
++ modules ++ modules
++ [ ++ [
# all nixos hosts should use our home manager config
# TODO: unify with the module list in outputs.homeConfigurations.daniel
inputs.home-manager.nixosModules.home-manager inputs.home-manager.nixosModules.home-manager
{ {
home-manager = { home-manager = {
extraSpecialArgs = {inherit inputs outputs system nix-colors;}; extraSpecialArgs = {inherit inputs outputs system colors font;};
users.daniel = { users.daniel = {
imports = [./home ./home/linux.nix]; imports = linuxHomeManagerModules;
}; };
}; };
} }
@ -108,11 +216,11 @@
mkHome = system: modules: mkHome = system: modules:
home-manager.lib.homeManagerConfiguration { home-manager.lib.homeManagerConfiguration {
pkgs = nixpkgs-unstable.legacyPackages.${system}; pkgs = nixpkgs-unstable.legacyPackages.${system};
extraSpecialArgs = {inherit inputs outputs system nix-colors;}; extraSpecialArgs = {inherit inputs outputs system colors font;};
modules = modules; modules = modules;
}; };
in { in {
"daniel" = mkHome "x86_64-linux" [./home ./home/linux.nix]; "daniel" = mkHome "x86_64-linux" linuxHomeManagerModules;
"daniel.flanagan" = mkHome "aarch64-darwin" [./home]; "daniel.flanagan" = mkHome "aarch64-darwin" [./home];
}; };

View file

@ -1,48 +1,52 @@
{ {
font,
pkgs, pkgs,
lib, lib,
system, system,
inputs, inputs,
nix-colors, colors,
... ...
}: let }: let
email = "daniel@lyte.dev"; email = "daniel@lyte.dev";
name = "Daniel Flanagan"; name = "Daniel Flanagan";
in { in {
# TODO: email access? # TODO: email access?
# accounts.email.accounts = { /*
# google = { accounts.email.accounts = {
# address = "wraithx2@gmail.com"; google = {
# }; address = "wraithx2@gmail.com";
# }; };
};
*/
# TODO: fonts? right now they are only handled at the nixos-level (desktop-usage module) # TODO: fonts? right now they are only handled at the nixos-level (desktop-usage module)
# TODO: wallpaper? # TODO: wallpaper?
imports = [ imports = [
nix-colors.homeManagerModules.default # nix-colors.homeManagerModules.default
]; ];
colorScheme = nix-colors.colorSchemes.catppuccin-mocha;
# copied here for easy lookups: # copied here for easy lookups:
# https://github.com/tinted-theming/base16-schemes/blob/main/catppuccin-mocha.yaml # https://github.com/tinted-theming/base16-schemes/blob/main/catppuccin-mocha.yaml
# base00: "1e1e2e" # base /*
# base01: "181825" # mantle base00: "1e1e2e" # base
# base02: "313244" # surface0 base01: "181825" # mantle
# base03: "45475a" # surface1 base02: "313244" # surface0
# base04: "585b70" # surface2 base03: "45475a" # surface1
# base05: "cdd6f4" # text base04: "585b70" # surface2
# base06: "f5e0dc" # rosewater base05: "cdd6f4" # text
# base07: "b4befe" # lavender base06: "f5e0dc" # rosewater
# base08: "f38ba8" # red base07: "b4befe" # lavender
# base09: "fab387" # peach base08: "f38ba8" # red
# base0A: "f9e2af" # yellow base09: "fab387" # peach
# base0B: "a6e3a1" # green base0A: "f9e2af" # yellow
# base0C: "94e2d5" # teal base0B: "a6e3a1" # green
# base0D: "89b4fa" # blue base0C: "94e2d5" # teal
# base0E: "cba6f7" # mauve base0D: "89b4fa" # blue
# base0F: "f2cdcd" # flamingo base0E: "cba6f7" # mauve
base0F: "f2cdcd" # flamingo
*/
home = { home = {
username = lib.mkDefault "daniel"; username = lib.mkDefault "daniel";
@ -64,9 +68,9 @@ in {
paths = [./scripts/common]; paths = [./scripts/common];
}) })
]; ];
};
file = { home.file.".iex.exs" = {
".iex.exs" = {
enable = true; enable = true;
text = '' text = ''
Application.put_env(:elixir, :ansi_enabled, true) Application.put_env(:elixir, :ansi_enabled, true)
@ -99,16 +103,13 @@ in {
) )
''; '';
}; };
};
};
programs = { programs.password-store = {
password-store = {
enable = true; enable = true;
package = pkgs.pass.withExtensions (exts: [exts.pass-otp]); package = pkgs.pass.withExtensions (exts: [exts.pass-otp]);
}; };
git = { programs.git = {
enable = true; enable = true;
userEmail = email; userEmail = email;
@ -176,11 +177,11 @@ in {
}; };
}; };
gitui = { programs.gitui = {
enable = true; enable = true;
}; };
helix = { programs.helix = {
enable = true; enable = true;
package = inputs.helix.packages.${system}.helix; package = inputs.helix.packages.${system}.helix;
languages = { languages = {
@ -293,43 +294,45 @@ in {
auto-format = true; auto-format = true;
} }
# [[language]] /*
# name = "jsx" [[language]]
# scope = "source.jsx" name = "jsx"
# injection-regex = "jsx" scope = "source.jsx"
# file-types = ["jsx"] injection-regex = "jsx"
# shebangs = ["deno", "node"] file-types = ["jsx"]
# roots = ["deno.jsonc", "deno.json", "package.json", "tsconfig.json"] shebangs = ["deno", "node"]
# comment-token = "//" roots = ["deno.jsonc", "deno.json", "package.json", "tsconfig.json"]
# config = { enable = true, lint = true, unstable = true } comment-token = "//"
# language-server = { command = "deno", args = ["lsp"], language-id = "javascriptreact" } config = { enable = true, lint = true, unstable = true }
# indent = { tab-width = 2, unit = " " } language-server = { command = "deno", args = ["lsp"], language-id = "javascriptreact" }
# grammar = "javascript" indent = { tab-width = 2, unit = " " }
# auto-format = true grammar = "javascript"
auto-format = true
# [[language]] [[language]]
# name = "tsx" name = "tsx"
# scope = "source.tsx" scope = "source.tsx"
# injection-regex = "^(tsx)$" # |typescript injection-regex = "^(tsx)$" # |typescript
# file-types = ["tsx"] file-types = ["tsx"]
# shebangs = ["deno", "node"] shebangs = ["deno", "node"]
# roots = ["deno.jsonc", "deno.json", "package.json", "tsconfig.json"] roots = ["deno.jsonc", "deno.json", "package.json", "tsconfig.json"]
# config = { enable = true, lint = true, unstable = true } config = { enable = true, lint = true, unstable = true }
# language-server = { command = "deno", args = ["lsp"], language-id = "typescriptreact" } language-server = { command = "deno", args = ["lsp"], language-id = "typescriptreact" }
# indent = { tab-width = 2, unit = " " } indent = { tab-width = 2, unit = " " }
# auto-format = true auto-format = true
# [[language]] [[language]]
# name = "jsonc" name = "jsonc"
# scope = "source.jsonc" scope = "source.jsonc"
# injection-regex = "^(jsonc)$" injection-regex = "^(jsonc)$"
# file-types = ["jsonc"] file-types = ["jsonc"]
# shebangs = ["deno", "node"] shebangs = ["deno", "node"]
# roots = ["deno.jsonc", "deno.json", "package.json", "tsconfig.json"] roots = ["deno.jsonc", "deno.json", "package.json", "tsconfig.json"]
# config = { enable = true, lint = true, unstable = true } config = { enable = true, lint = true, unstable = true }
# language-server = { command = "deno", args = ["lsp"], language-id = "jsonc" } language-server = { command = "deno", args = ["lsp"], language-id = "jsonc" }
# indent = { tab-width = 2, unit = " " } indent = { tab-width = 2, unit = " " }
# auto-format = true auto-format = true
*/
]; ];
}; };
@ -408,11 +411,233 @@ in {
}; };
}; };
themes = { themes = with colors.withHashPrefix; {
custom = { custom = {
"inherits" = "catppuccin_mocha"; "type" = yellow;
"ui.background" = "default"; "constructor" = blue;
"constant" = yellow;
"constant.builtin" = yellow;
"constant.character" = teal;
"constant.character.escape" = yellow;
"string" = green;
"string.regexp" = yellow;
"string.special" = blue;
"comment" = {
fg = fgdim;
modifiers = ["italic"];
};
"variable" = text;
"variable.parameter" = {
fg = red;
modifiers = ["italic"];
};
"variable.builtin" = red;
"variable.other.member" = text;
"label" = blue;
"punctuation" = fgdim;
"punctuation.special" = blue;
"keyword" = purple;
"keyword.storage.modifier.ref" = teal;
"keyword.control.conditional" = {
fg = purple;
modifiers = ["italic"];
};
"operator" = blue;
"function" = blue;
"function.macro" = purple;
"tag" = purple;
"attribute" = blue;
"namespace" = {
fg = blue;
modifiers = ["italic"];
};
"special" = blue;
"markup.heading.marker" = {
fg = yellow;
modifiers = ["bold"];
};
"markup.heading.1" = blue;
"markup.heading.2" = teal;
"markup.heading.3" = green;
"markup.heading.4" = yellow;
"markup.heading.5" = red;
"markup.heading.6" = fg3;
"markup.list" = purple;
"markup.bold" = {modifiers = ["bold"];};
"markup.italic" = {modifiers = ["italic"];};
"markup.strikethrough" = {modifiers = ["crossed_out"];};
"markup.link.url" = {
fg = red;
modifiers = ["underlined"];
};
"markup.link.text" = blue;
"markup.raw" = red;
"diff.plus" = green;
"diff.minus" = red;
"diff.delta" = blue;
"ui.linenr" = {fg = fgdim;};
"ui.linenr.selected" = {fg = fg2;};
"ui.statusline" = {
fg = fg2;
bg = bg2;
};
"ui.statusline.inactive" = {
fg = fg3;
bg = bg;
};
"ui.statusline.normal" = {
fg = bg;
bg = purple;
modifiers = ["bold"];
};
"ui.statusline.insert" = {
fg = bg;
bg = green;
modifiers = ["bold"];
};
"ui.statusline.select" = {
fg = bg;
bg = red;
modifiers = ["bold"];
};
"ui.popup" = {
fg = text;
bg = bg2;
};
"ui.window" = {fg = fg3;};
"ui.help" = {
fg = fg2;
bg = bg2;
};
"ui.bufferline" = {
fg = fgdim;
bg = bg2;
};
"ui.bufferline.background" = {bg = bg2;};
"ui.text" = text;
"ui.text.focus" = {
fg = "text";
bg = "surface0";
modifiers = ["bold"];
};
"ui.text.inactive" = {fg = fg2;};
"ui.virtual" = fg2;
"ui.virtual.ruler" = {bg = bg2;};
"ui.virtual.indent-guide" = bg3;
"ui.virtual.inlay-hint" = {
fg = bg3;
bg = bg;
};
"ui.selection" = {bg = bg5;};
"ui.cursor" = {
fg = bg;
bg = text;
};
"ui.cursor.primary" = {
fg = bg;
bg = red;
};
"ui.cursor.match" = {
fg = yellow;
modifiers = ["bold"];
};
"ui.cursor.primary.normal" = {
fg = bg;
bg = text;
};
"ui.cursor.primary.insert" = {
fg = bg;
bg = text;
};
"ui.cursor.primary.select" = {
fg = bg;
bg = text;
};
"ui.cursor.normal" = {
fg = bg;
bg = fg;
};
"ui.cursor.insert" = {
fg = bg;
bg = fg;
};
"ui.cursor.select" = {
fg = bg;
bg = fg;
};
"ui.cursorline.primary" = {bg = bg3;};
"ui.highlight" = {
bg = fg2;
modifiers = ["bold"];
};
"ui.menu" = {
fg = fg3;
bg = bg2;
};
"ui.menu.selected" = {
fg = text;
bg = bg4;
modifiers = ["bold"];
};
"diagnostic.error" = {
underline = {
color = red;
style = "curl";
};
};
"diagnostic.warning" = {
underline = {
color = yellow;
style = "curl";
};
};
"diagnostic.info" = {
underline = {
color = blue;
style = "curl";
};
};
"diagnostic.hint" = {
underline = {
color = blue;
style = "curl";
};
};
error = red;
warning = yellow;
info = blue;
hint = teal;
"ui.background" = bg;
# "ui.cursorline.primary" = { bg = "default" } # "ui.cursorline.primary" = { bg = "default" }
# "ui.cursorline.secondary" = { bg = "default" } # "ui.cursorline.secondary" = { bg = "default" }
@ -421,10 +646,10 @@ in {
# "ui.virtual.ruler" = { bg = "default" } # "ui.virtual.ruler" = { bg = "default" }
"ui.bufferline.active" = { "ui.bufferline.active" = {
fg = "sapphire"; fg = primary;
bg = "base"; bg = bg3;
underline = { underline = {
color = "sapphire"; color = primary;
style = ""; style = "";
}; };
}; };
@ -432,7 +657,7 @@ in {
}; };
}; };
bat = { programs.bat = {
enable = true; enable = true;
config = { config = {
theme = "Catppuccin-mocha"; theme = "Catppuccin-mocha";
@ -449,18 +674,148 @@ in {
}; };
}; };
kitty = { programs.wezterm = {
enable = true;
extraConfig = ''
local wezterm = require'wezterm'
local config = {}
-- TODO: integrate nix colors
if wezterm.config_builder then
config = wezterm.config_builder()
end
local hostname = io.popen("/bin/hostname"):read("*a"):gsub("%s", "")
local font_spec = { family = '${font.name}', weight = 'Medium', italic = false }
local font_size = ${toString font.size}.0
if hostname == "laptop" then
font_size = 13
end
local font = wezterm.font_with_fallback{
font_spec,
{ family = 'Symbols Nerd Font Mono', weight = 'Regular', italic = false },
'Noto Color Emoji',
}
if hostname == "laptop" then
config.font_rules = {
-- no italics
{
font = font
},
}
end
config.default_cursor_style = 'BlinkingBar'
config.font = font
config.font_size = font_size
config.hide_tab_bar_if_only_one_tab = true
config.use_fancy_tab_bar = false
config.tab_bar_at_bottom = false
config.window_background_opacity = 1.0
config.color_scheme = "Catppuccin Mocha"
config.window_frame.font = config.font
config.window_frame.font_size = font_size
config.inactive_pane_hsb = {
saturation = 0.8,
brightness = 0.7,
}
config.keys = {
{
key = 'j',
mods = 'CTRL',
action = wezterm.action.ActivatePaneDirection'Down'
},
{
key = 'Insert',
mods = 'SHIFT',
action = wezterm.action.PasteFrom'Clipboard'
},
{
key = 'v',
mods = 'CTRL|SHIFT',
action = wezterm.action.PasteFrom'PrimarySelection'
},
{
key = 'h',
mods = 'CTRL',
action = wezterm.action.ActivatePaneDirection'Left'
},
{
key = 'l',
mods = 'CTRL',
action = wezterm.action.ActivatePaneDirection'Right'
},
{
key = 'k',
mods = 'CTRL',
action = wezterm.action.ActivatePaneDirection'Up'
},
{
key = 'j',
mods = 'CTRL|SHIFT',
action = wezterm.action.SplitVertical{domain='CurrentPaneDomain'}
},
{
key = 'l',
mods = 'CTRL|SHIFT',
action = wezterm.action.SplitHorizontal{domain='CurrentPaneDomain'}
},
{
key = 'l',
mods = 'CTRL|SHIFT|ALT',
action = wezterm.action.ShowDebugOverlay
},
{
key = 'r',
mods = 'CTRL|SHIFT|ALT',
action = wezterm.action.RotatePanes'Clockwise'
},
}
config.unix_domains = {
{
name = 'unix',
local_echo_threshold_ms = 10,
},
}
-- config.default_gui_startup_args = { 'connect', 'unix' }
-- config.default_domain = 'unix'
config.window_padding = {
top = '0.5cell',
bottom = '0.5cell',
left = '1cell',
right = '1cell',
}
return config
'';
};
programs.kitty = {
enable = true; enable = true;
darwinLaunchOptions = ["--single-instance"]; darwinLaunchOptions = ["--single-instance"];
shellIntegration = { shellIntegration = {
enableFishIntegration = true; enableFishIntegration = true;
}; };
settings = { settings = with colors.withHashPrefix; {
"font_family" = "IosevkaLyteTerm"; "font_family" = font.name;
"bold_font" = "IosevkaLyteTerm Heavy"; "bold_font" = "${font.name} Heavy";
"italic_font" = "IosevkaLyteTerm Italic"; "italic_font" = "${font.name} Italic";
"bold_italic_font" = "IosevkaLyteTerm Heavy Italic"; "bold_italic_font" = "${font.name} Heavy Italic";
"font_size" = "12.5"; "font_size" = toString font.size;
"inactive_text_alpha" = "0.5"; "inactive_text_alpha" = "0.5";
"copy_on_select" = true; "copy_on_select" = true;
@ -488,7 +843,7 @@ in {
"enable_audio_bell" = true; "enable_audio_bell" = true;
"visual_bell_duration" = "0.25"; "visual_bell_duration" = "0.25";
"visual_bell_color" = "#333033"; "visual_bell_color" = yellow;
"url_style" = "single"; "url_style" = "single";
@ -510,75 +865,75 @@ in {
## blurb: Soothing pastel theme for the high-spirited! ## blurb: Soothing pastel theme for the high-spirited!
# The basic colors # The basic colors
"foreground" = "#CDD6F4"; "foreground" = text;
"background" = "#1E1E2E"; "background" = bg;
"selection_foreground" = "#1E1E2E"; "selection_foreground" = bg;
"selection_background" = "#F5E0DC"; "selection_background" = text;
# Cursor colors # Cursor colors
"cursor" = "#F5E0DC"; "cursor" = text;
"cursor_text_color" = "#1E1E2E"; "cursor_text_color" = bg;
# URL underline color when hovering with mouse # URL underline color when hovering with mouse
"url_color" = "#F5E0DC"; "url_color" = primary;
# Kitty window border colors # Kitty window border colors
"active_border_color" = "#74c7ec"; "active_border_color" = primary;
"inactive_border_color" = "#313244"; "inactive_border_color" = bg3;
"bell_border_color" = "#F9E2AF"; "bell_border_color" = urgent;
# OS Window titlebar colors # OS Window titlebar colors
"wayland_titlebar_color" = "system"; "wayland_titlebar_color" = "system";
"macos_titlebar_color" = "system"; "macos_titlebar_color" = "system";
# Tab bar colors # Tab bar colors
"active_tab_foreground" = "#11111B"; "active_tab_foreground" = bg;
"active_tab_background" = "#74c7ec"; "active_tab_background" = primary;
"inactive_tab_foreground" = "#CDD6F4"; "inactive_tab_foreground" = fgdim;
"inactive_tab_background" = "#181825"; "inactive_tab_background" = bg2;
"tab_bar_background" = "#11111B"; "tab_bar_background" = bg;
# Colors for marks (marked text in the terminal) # Colors for marks (marked text in the terminal)
"mark1_foreground" = "#1E1E2E"; "mark1_foreground" = bg;
"mark1_background" = "#B4BEFE"; "mark1_background" = blue;
"mark2_foreground" = "#1E1E2E"; "mark2_foreground" = bg;
"mark2_background" = "#74c7ec"; "mark2_background" = purple;
"mark3_foreground" = "#1E1E2E"; "mark3_foreground" = bg;
"mark3_background" = "#74C7EC"; "mark3_background" = blue;
# The 16 terminal colors # The 16 terminal colors
# black # black
"color0" = "#45475A"; "color0" = colors.withHashPrefix."0";
"color8" = "#585B70"; "color8" = colors.withHashPrefix."8";
# red # red
"color1" = "#F38BA8"; "color1" = colors.withHashPrefix."1";
"color9" = "#F38BA8"; "color9" = colors.withHashPrefix."9";
# green # green
"color2" = "#A6E3A1"; "color2" = colors.withHashPrefix."2";
"color10" = "#A6E3A1"; "color10" = colors.withHashPrefix."10";
# yellow # yellow
"color3" = "#F9E2AF"; "color3" = colors.withHashPrefix."3";
"color11" = "#F9E2AF"; "color11" = colors.withHashPrefix."11";
# blue # blue
"color4" = "#89B4FA"; "color4" = colors.withHashPrefix."4";
"color12" = "#89B4FA"; "color12" = colors.withHashPrefix."12";
# magenta # magenta
"color5" = "#F5C2E7"; "color5" = colors.withHashPrefix."5";
"color13" = "#F5C2E7"; "color13" = colors.withHashPrefix."13";
# cyan # cyan
"color6" = "#94E2D5"; "color6" = colors.withHashPrefix."6";
"color14" = "#94E2D5"; "color14" = colors.withHashPrefix."14";
# white # white
"color7" = "#BAC2DE"; "color7" = colors.withHashPrefix."7";
"color15" = "#A6ADC8"; "color15" = colors.withHashPrefix."15";
}; };
keybindings = { keybindings = {
"ctrl+shift+1" = "change_font_size all 12.5"; "ctrl+shift+1" = "change_font_size all 12.5";
@ -620,7 +975,7 @@ in {
}; };
}; };
zellij = { programs.zellij = {
# TODO: enable after port config # TODO: enable after port config
enable = false; enable = false;
enableFishIntegration = true; enableFishIntegration = true;
@ -629,7 +984,7 @@ in {
}; };
}; };
broot = { programs.broot = {
enable = true; enable = true;
enableFishIntegration = true; enableFishIntegration = true;
settings = { settings = {
@ -737,12 +1092,12 @@ in {
}; };
}; };
direnv = { programs.direnv = {
enable = true; enable = true;
nix-direnv.enable = true; nix-direnv.enable = true;
}; };
fish = { programs.fish = {
enable = true; enable = true;
# I load long scripts from files for a better editing experience # I load long scripts from files for a better editing experience
shellInit = builtins.readFile ./fish/shellInit.fish; shellInit = builtins.readFile ./fish/shellInit.fish;
@ -819,6 +1174,7 @@ in {
cat = "bat"; cat = "bat";
p = "ping"; p = "ping";
dc = "docker compose"; dc = "docker compose";
pc = "podman-compose";
k = "kubectl"; k = "kubectl";
kg = "kubectl get"; kg = "kubectl get";
v = "$EDITOR"; v = "$EDITOR";
@ -827,21 +1183,20 @@ in {
}; };
}; };
eza = { programs.eza = {
enable = true; enable = true;
package = inputs.nixpkgs-unstable.legacyPackages.${system}.eza; package = inputs.nixpkgs-unstable.legacyPackages.${system}.eza;
}; };
skim = { programs.skim = {
enable = true; enable = true;
enableFishIntegration = true; enableFishIntegration = true;
}; };
nix-index = { programs.nix-index = {
enable = true; enable = true;
enableFishIntegration = true; enableFishIntegration = true;
}; };
};
# maybe we can share somehow so things for nix-y systems and non-nix-y systems alike # maybe we can share somehow so things for nix-y systems and non-nix-y systems alike
# am I going to _have_ non-nix systems anymore? # am I going to _have_ non-nix systems anymore?

View file

@ -2,6 +2,8 @@
config, config,
pkgs, pkgs,
lib, lib,
colors,
font,
... ...
}: { }: {
home.pointerCursor = { home.pointerCursor = {
@ -11,101 +13,415 @@
# some icons are also missing (hand2?) # some icons are also missing (hand2?)
}; };
services = { programs.foot = {
mako = with config.colorScheme.colors; { enable = true;
};
# programs.eww = {
# enable = true;
# };
/*
home.file.".config/eww/eww.yuck" = {
enable = true;
text = ''
(defwidget bar []
(centerbox :orientation "h"
(sidestuff)
(box)
(music)))
(defwindow bar
:monitor 0
:stacking "fg"
:exclusive true
:geometry
(geometry
:x "0%"
:y "0%"
:width "100%"
:height "31px"
:anchor "bottom center")
(bar))
(defwidget sidestuff []
(box :class "sidestuff" :orientation "h" :space-evenly false :halign "start" :spacing 20
time
; TODO: idle inhibitor?
; TODO: get these to align properly?
(box :class "mic" (
box :class {micMuted == "false" ? "live" : "muted"} {micMuted == "false" ? " " : " "}
) {micVolume + "%"}
)
(box :class "vol" (
box :class {muted == "false" ? "live" : "muted"} {muted == "false" ? "󰕾 " : "󰖁 "}
) {volume + "%"}
)
{" " + round(EWW_CPU["avg"], 0) + "%"}
{" " + round(EWW_RAM["used_mem_perc"], 0) + "%"}
{isDesktop == "true" ? "" : " " + brightness + "%"}
{isDesktop == "true" ? "" : "󱊣 " + EWW_BATTERY["BAT0"]["capacity"] + "%/" + EWW_BATTERY["BAT1"]["capacity"] + "%"}
))
(defwidget music []
(box :class "music"
:orientation "h"
:halign "end"
:space-evenly false
{music != "" ? "''${music}" : ""}))
(deflisten music :initial ""
"playerctl --follow metadata --format '{{ title }} by {{ artist }}' || true")
(deflisten volume :initial "0"
"pamixer --get-volume; pactl subscribe | grep sink --line-buffered | while read i; do pamixer --get-volume; done")
(deflisten muted :initial "false"
"pamixer --get-mute; pactl subscribe | grep sink --line-buffered | while read i; do pamixer --get-mute; done")
(deflisten micVolume :initial "0"
"pamixer --default-source --get-volume; pactl subscribe | grep source --line-buffered | while read i; do pamixer --default-source --get-volume; done")
(deflisten micMuted :initial "false"
"pamixer --default-source --get-mute; pactl subscribe | grep source --line-buffered | while read i; do pamixer --default-source --get-mute; done")
(defpoll time :interval "1s"
"date '+%a %b %d %H:%M:%S'")
(defpoll isDesktop :interval "24h"
"if [ -d \"$HOME/.config/lytedev-env/host-desktop\" ]; then echo true; else echo false; fi")
(defpoll brightness :interval "10s"
"echo $(((100 * $(brightnessctl get)) / $(brightnessctl max)))")
'';
};
*/
programs.fish = {
shellAliases = {
sctl = "sudo systemctl";
sctlu = "systemctl --user";
};
};
services.mako = with colors.withHashPrefix; {
enable = true; enable = true;
borderSize = 1; borderSize = 1;
maxVisible = 5; maxVisible = 5;
defaultTimeout = 15000; defaultTimeout = 15000;
font = "Symbols Nerd Font 12,IosevkaLyteTerm 12"; font = "Symbols Nerd Font ${toString font.size},${font.name} ${toString font.size}";
# TODO: config # TODO: config
backgroundColor = "#${base01}"; backgroundColor = bg;
textColor = "#${base05}"; textColor = text;
borderColor = "#${base0C}"; borderColor = primary;
progressColor = "#${base0A}"; progressColor = primary;
extraConfig = '' extraConfig = ''
[urgency=high] [urgency=high]
border-color=#${base0F} border-color=${urgent}
[urgency=high] [urgency=high]
background-color=#${base03} background-color=${urgent}
''; '';
}; };
# this doesn't work due to weird quoting bugs AFAICT # this doesn't work due to weird quoting bugs AFAICT
# swayidle = let /*
# bins = rec { services.swayidle = let
# swaylock = builtins.trace "${pkgs.swaylock}/bin/swaylock" "${pkgs.swaylock}/bin/swaylock"; bins = rec {
# swaymsg = "${pkgs.sway}/bin/swaymsg"; swaylock = builtins.trace "${pkgs.swaylock}/bin/swaylock" "${pkgs.swaylock}/bin/swaylock";
# notify-send = "${swaymsg} exec -- ${pkgs.libnotify}/bin/notify-send"; swaymsg = "${pkgs.sway}/bin/swaymsg";
# }; notify-send = "${swaymsg} exec -- ${pkgs.libnotify}/bin/notify-send";
# in (with bins; { };
# enable = true; in (with bins; {
enable = true;
# events = [ events = [
# { {
# event = "before-sleep"; event = "before-sleep";
# command = swaylock; command = swaylock;
# } }
# ]; ];
# timeouts = [ timeouts = [
# { {
# timeout = 5; timeout = 5;
# command = "${notify-send} \\\"Idling in 300 seconds\\\""; command = "${notify-send} \\\"Idling in 300 seconds\\\"";
# resumeCommand = "${notify-send} \\\"Idling cancelled.\\\""; resumeCommand = "${notify-send} \\\"Idling cancelled.\\\"";
}
{
# timeout = 540;
timeout = 6;
command = "${notify-send} 'Idling in 90 seconds'";
}
{
# timeout = 570;
timeout = 7;
command = "${notify-send} 'Idling in 60 seconds'";
}
{
# timeout = 600;
timeout = 8;
command = "${notify-send} 'Idling in 30 seconds...'";
}
{
# timeout = 630;
timeout = 9;
command = "${swaylock} -f";
}
{
# timeout = 660;
timeout = 10;
command = "${swaymsg} 'output * dpms off'";
resumeCommand = "${swaymsg} 'output * dpms on' & ${swaymsg} exec -- maybe-good-morning &";
}
];
});
*/
wayland.windowManager.hyprland = {
enable = true;
extraConfig = ''
# See https://wiki.hyprland.org/Configuring/Monitors/
monitor=,preferred,auto,auto
monitor=desc:LG Display 0x0521,preferred,auto,1
# See https://wiki.hyprland.org/Configuring/Keywords/ for more
# Execute your favorite apps at launch
exec-once = firefox & kitty --single-instance & hyprpaper & mako & /usr/lib/polkit-kde-authentication-agent-1
exec-once = swayidle -w timeout 600 'notify-send "Locking in 30 seconds..."' timeout 630 'swaylock -f' timeout 660 'hyprctl dispatch dpms off' resume 'hyprctl dispatch dpms on && maybe-good-morning' before-sleep 'swaylock -f'
exec-once = dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP
env = XCURSOR_SIZE,24
input {
kb_layout = us
kb_options = ctrl:nocaps
touchpad {
natural_scroll = yes
}
# kb_variant =
# kb_model =
# kb_rules =
follow_mouse = 2
repeat_delay = 200
repeat_rate = 60
touchpad {
natural_scroll = yes
tap-to-click = true
middle_button_emulation = true
}
force_no_accel = true
sensitivity = 1 # -1.0 - 1.0, 0 means no modification.
}
misc {
disable_hyprland_logo = true
disable_splash_rendering = true
}
binds {
allow_workspace_cycles = true
}
general {
# See https://wiki.hyprland.org/Configuring/Variables/ for more
gaps_in = 3
gaps_out = 6
border_size = 1
no_cursor_warps = true
resize_on_border = true
col.active_border = rgba(74c7ecff) 45deg
col.inactive_border = rgba(59595988)
layout = dwindle
}
decoration {
# See https://wiki.hyprland.org/Configuring/Variables/ for more
rounding = 3
# blur = yes
# blur_size = 3
# blur_passes = 1
# blur_new_optimizations = on
drop_shadow = yes
shadow_range = 4
shadow_render_power = 3
col.shadow = rgba(1a1a1aee)
dim_inactive = 0.5
}
animations {
enabled = yes
# Some default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more
bezier = myBezier, 0.05, 0.9, 0.1, 1.05
bezier=overshot,0.05,0.9,0.1,1.1
animation = windows, 1, 2, default
animation = windowsOut, 1, 2, default, popin 80%
animation = border, 1, 2, default
animation = borderangle, 1, 2, default
animation = fade, 1, 2, default
animation = workspaces, 1, 2, default
}
dwindle {
# See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more
# master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
pseudotile = yes
preserve_split = 1
no_gaps_when_only = true
}
master {
# See https://wiki.hyprland.org/Configuring/Master-Layout/ for more
new_is_master = true
}
gestures {
# See https://wiki.hyprland.org/Configuring/Variables/ for more
workspace_swipe = on
}
# Example per-device config
# See https://wiki.hyprland.org/Configuring/Keywords/#executing for more
# device:epic-mouse-v1 {
# sensitivity = -0.5
# } # }
# {
# # timeout = 540; # Example windowrule v1
# timeout = 6; # windowrule = float, ^(kitty)$
# command = "${notify-send} 'Idling in 90 seconds'"; # Example windowrule v2
# } # windowrulev2 = float,class:^(kitty)$,title:^(kitty)$
# { # See https://wiki.hyprland.org/Configuring/Window-Rules/ for more
# # timeout = 570;
# timeout = 7; # See https://wiki.hyprland.org/Configuring/Keywords/ for more
# command = "${notify-send} 'Idling in 60 seconds'"; $mainMod = SUPER
# }
# { # Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more
# # timeout = 600; bind = $mainMod, return, exec, kitty --single-instance
# timeout = 8; bind = $mainMod SHIFT, return, exec, kitty
# command = "${notify-send} 'Idling in 30 seconds...'"; bind = $mainMod, U, exec, firefox
# } bind = $mainMod, space, exec, wofi --show drun
# { bind = $mainMod, C, killactive,
# # timeout = 630; bind = $mainMod, M, exit,
# timeout = 9; bind = $mainMod, E, exec, dolphin
# command = "${swaylock} -f"; bind = $mainMod, F, togglefloating,
# } bind = $mainMod SHIFT, F, fullscreen,
# { bind = $mainMod, R, exec, anyrun
# # timeout = 660; bind = $mainMod, S, pseudo, # dwindle
# timeout = 10; bind = $mainMod, P, togglesplit, # dwindle
# command = "${swaymsg} 'output * dpms off'";
# resumeCommand = "${swaymsg} 'output * dpms on' & ${swaymsg} exec -- maybe-good-morning &"; # Move focus with mainMod + arrow keys
# } bind = $mainMod, left, movefocus, l
# ]; bind = $mainMod, right, movefocus, r
# }); bind = $mainMod, up, movefocus, u
bind = $mainMod, down, movefocus, d
bind = $mainMod, h, movefocus, l
bind = $mainMod, l, movefocus, r
bind = $mainMod, k, movefocus, u
bind = $mainMod, j, movefocus, d
bind = $mainMod SHIFT, H, swapwindow, l
bind = $mainMod SHIFT, L, swapwindow, r
bind = $mainMod SHIFT, K, swapwindow, u
bind = $mainMod SHIFT, J, swapwindow, d
bind = $mainMod SHIFT, V, exec, pamixer --default-source --toggle-mute
bind = , XF86AudioMicMute, exec, pamixer --default-source --toggle-mute
bind = , XF86AudioMute, exec, pamixer --toggle-mute
bind = , XF86AudioRaiseVolume, exec, pamixer --increase 5
bind = , XF86AudioLowerVolume, exec, pamixer --decrease 5
bind = CTRL, XF86AudioRaiseVolume, exec, pamixer --increase 1
bind = CTRL, XF86AudioLowerVolume, exec, pamixer --decrease 1
bind = , XF86AudioPlay, exec, playerctl play-pause
bind = , XF86AudioNext, exec, playerctl next
bind = , XF86AudioPrev, exec, playerctl previous
bind = $mainMod, tab, workspace, previous
# Switch workspaces with mainMod + [0-9]
bind = $mainMod, 1, workspace, 1
bind = $mainMod, 2, workspace, 2
bind = $mainMod, 3, workspace, 3
bind = $mainMod, 4, workspace, 4
bind = $mainMod, 5, workspace, 5
bind = $mainMod, 6, workspace, 6
bind = $mainMod, 7, workspace, 7
bind = $mainMod, 8, workspace, 8
bind = $mainMod, 9, workspace, 9
bind = $mainMod, 0, workspace, 10
# Move active window to a workspace with mainMod + SHIFT + [0-9]
bind = $mainMod SHIFT, 1, movetoworkspace, 1
bind = $mainMod SHIFT, 2, movetoworkspace, 2
bind = $mainMod SHIFT, 3, movetoworkspace, 3
bind = $mainMod SHIFT, 4, movetoworkspace, 4
bind = $mainMod SHIFT, 5, movetoworkspace, 5
bind = $mainMod SHIFT, 6, movetoworkspace, 6
bind = $mainMod SHIFT, 7, movetoworkspace, 7
bind = $mainMod SHIFT, 8, movetoworkspace, 8
bind = $mainMod SHIFT, 9, movetoworkspace, 9
bind = $mainMod SHIFT, 0, movetoworkspace, 10
bind = , XF86MonBrightnessDown, exec, brightnessctl set 10%-
bind = , XF86MonBrightnessUp, exec, brightnessctl set +10%
bind = SHIFT, XF86MonBrightnessDown, exec, brightnessctl set 1%
bind = SHIFT, XF86MonBrightnessUp, exec, brightnessctl set 100%
bind = CTRL, XF86MonBrightnessDown, exec, brightnessctl set 1%-
bind = CTRL, XF86MonBrightnessUp, exec, brightnessctl set +1%
bind = $mainMod SHIFT, S, exec, clipshot
# Scroll through existing workspaces with mainMod + scroll
bind = $mainMod, mouse_down, workspace, e+1
bind = $mainMod, mouse_up, workspace, e-1
bind = CTRL SHIFT $mainMod, L, exec, swaylock
# Move/resize windows with mainMod + LMB/RMB and dragging
bindm = $mainMod, mouse:272, movewindow
bindm = $mainMod, mouse:273, resizewindow
bind = $mainMod CTRL, space, exec, makoctl dismiss
bind = $mainMod SHIFT CTRL, space, exec, makoctl restore
bind = $mainMod SHIFT, space, exec, makoctl invoke
bind = $mainMod, E, exec, thunar
'';
}; };
wayland.windowManager.sway = { wayland.windowManager.sway = {
# TODO: /*
# + Super+r should rotate the selected group of windows. TODO:
# + Super+Control+{1-9} should control the size of the preselect space. + Super+r should rotate the selected group of windows.
# + Super+Shift+b should balance the size of all selected nodes. + Super+Control+{1-9} should control the size of the preselect space.
# set $tilers "(wezterm.*|kitty.*|firefox.*|slack.*|Slack.*|thunar.*|Alacritty.*|alacritty.*|Discord.*|discord.*)" + Super+Shift+b should balance the size of all selected nodes.
# for_window [title=".*"] floating enable set $tilers "(wezterm.*|kitty.*|firefox.*|slack.*|Slack.*|thunar.*|Alacritty.*|alacritty.*|Discord.*|discord.*)"
# for_window [app_id=$tilers] floating disable for_window [title=".*"] floating enable
# for_window [app_id=$tilers] floating disable
# # for_window [title=".*"] opacity $opacity
# # for_window [title=".*"] opacity $opacity
# client.focused #74c7ec #74c7ec #74c7ec #74c7ec #74c7ec
# client.focused_inactive #100814 #100814 #9b9ebf #100814 #100814 # TODO: I forget why I needed this - could google it I expect?
# client.unfocused #100814 #100814 #9b9ebf #100814 #100814 exec /usr/lib/polkit-kde-authentication-agent-1
#
# # TODO: I forget why I needed this - could google it I expect? # prevent all windows from stealing focus
# exec /usr/lib/polkit-kde-authentication-agent-1 no_focus [class=".*"]
# */
# # prevent all windows from stealing focus
# no_focus [class=".*"]
enable = true; enable = true;
@ -323,42 +639,42 @@
}; };
assigns = {}; assigns = {};
bars = []; bars = [];
colors = with config.colorScheme.colors; { colors = with colors; {
background = "#1e1e2e"; background = bg;
focused = { focused = {
background = base03; background = bg;
border = base0C; border = primary;
childBorder = base0C; childBorder = primary;
indicator = base0C; indicator = primary;
text = base05; text = bg;
}; };
focusedInactive = { focusedInactive = {
background = base03; background = bg;
border = base0D; border = primary;
childBorder = base0D; childBorder = primary;
indicator = base0D; indicator = primary;
text = base05; text = bg;
}; };
placeholder = { placeholder = {
background = base03; background = bg;
border = base0D; border = primary;
childBorder = base0D; childBorder = primary;
indicator = base0D; indicator = primary;
text = base05; text = text;
}; };
unfocused = { unfocused = {
background = base03; background = bg;
border = base03; border = bg;
childBorder = base03; childBorder = bg;
indicator = base03; indicator = bg;
text = base05; text = text;
}; };
urgent = { urgent = {
background = base03; background = urgent;
border = base0F; border = urgent;
childBorder = base0F; childBorder = urgent;
indicator = base0F; indicator = urgent;
text = base05; text = bg;
}; };
}; };
}; };
@ -384,12 +700,7 @@
}) })
]; ];
programs = { programs.waybar = {
# TODO: hyprland = {
# enable = true;
# };
waybar = {
enable = true; enable = true;
settings = { settings = {
mainBar = { mainBar = {
@ -529,49 +840,18 @@
}; };
}; };
}; };
style = '' style = with colors.withHashPrefix; ''
@define-color base #1e1e2e;
@define-color mantle #181825;
@define-color crust #11111b;
@define-color text #cdd6f4;
@define-color subtext0 #a6adc8;
@define-color subtext1 #bac2de;
@define-color surface0 #313244;
@define-color surface1 #45475a;
@define-color surface2 #585b70;
@define-color overlay0 #6c7086;
@define-color overlay1 #7f849c;
@define-color overlay2 #9399b2;
@define-color blue #89b4fa;
@define-color lavender #b4befe;
@define-color sapphire #74c7ec;
@define-color sky #89dceb;
@define-color teal #94e2d5;
@define-color green #a6e3a1;
@define-color yellow #f9e2af;
@define-color peach #fab387;
@define-color maroon #eba0ac;
@define-color red #f38ba8;
@define-color mauve #cba6f7;
@define-color pink #f5c2e7;
@define-color flamingo #f2cdcd;
@define-color rosewater #f5e0dc;
* { * {
border-radius: 0; border-radius: 0;
font-family: "IosevkaLyteTerm", "Symbols Nerd Font Mono", sans-serif; font-family: "${font.name}", "Symbols Nerd Font Mono", sans-serif;
font-size: 16px; font-size: 16px;
} }
window#waybar { window#waybar {
min-height: 32px; min-height: 32px;
background-color: @base; background-color: ${bg};
color: @crust; color: ${text};
border-top: solid @sapphire 1px; border-top: solid ${blue} 1px;
transition: none; transition: none;
} }
@ -586,7 +866,7 @@
#workspaces button { #workspaces button {
padding: 0 0.75em; padding: 0 0.75em;
background-color: transparent; background-color: transparent;
border-top: solid @sapphire 1px; border-top: solid ${primary} 1px;
transition: none; transition: none;
} }
@ -598,22 +878,22 @@
} }
#workspaces button.visible { #workspaces button.visible {
background-color: @base; background-color: ${bg};
} }
#workspaces button.focused { #workspaces button.focused {
color: @base; color: ${bg};
background-color: @sapphire; background-color: ${blue};
} }
#workspaces button.persistent { #workspaces button.persistent {
color: @surface2; color: ${text};
} }
#workspaces button.urgent { #workspaces button.urgent {
color: @base; background-color: ${urgent};
background-color: @red; color: ${bg};
border-top: solid @red 1px; border-top: solid ${urgent} 1px;
} }
#mode { #mode {
@ -638,7 +918,7 @@
margin-top: 1px; margin-top: 1px;
padding: 0 0.75em; padding: 0 0.75em;
background-color: inherit; background-color: inherit;
color: @text; color: ${text};
} }
#clock {} #clock {}
@ -661,7 +941,7 @@
} }
#battery.critical:not(.charging) { #battery.critical:not(.charging) {
background-color: @red; background-color: ${red};
animation-name: blink; animation-name: blink;
animation-duration: 0.5s; animation-duration: 0.5s;
animation-timing-function: linear; animation-timing-function: linear;
@ -673,7 +953,7 @@
#bluetooth.connected-battery, #bluetooth.connected-battery,
#bluetooth.connected.battery, #bluetooth.connected.battery,
#bluetooth.connected { #bluetooth.connected {
color: @text; color: ${text};
} }
label:focus { label:focus {
@ -702,14 +982,14 @@
} }
#pulseaudio { #pulseaudio {
color: @red; color: ${red};
/* background-color: #f1c40f; */ /* background-color: #f1c40f; */
/* color: #000000; */ /* color: #000000; */
} }
#pulseaudio.source-muted { #pulseaudio.source-muted {
/* background-color: #90b1b1; */ /* background-color: #90b1b1; */
color: @text; color: ${text};
} }
#custom-media { #custom-media {
@ -769,7 +1049,7 @@
}; };
}; };
firefox = { programs.firefox = {
# TODO: this should be able to work on macos, no? # TODO: this should be able to work on macos, no?
# TODO: enable dark theme by default # TODO: enable dark theme by default
enable = true; enable = true;
@ -823,12 +1103,12 @@
}; };
}; };
swaylock = { programs.swaylock = {
enable = true; enable = true;
settings = { settings = {
color = "ffffffff"; color = "ffffffff";
image = "~/.wallpaper"; image = "~/.wallpaper";
font = "IosevkaLyteTerm"; font = font.name;
show-failed-attempts = true; show-failed-attempts = true;
ignore-empty-password = true; ignore-empty-password = true;
@ -852,5 +1132,4 @@
ring-wrong-color = "f92672"; ring-wrong-color = "f92672";
}; };
}; };
};
} }

View file

@ -1,32 +1,4 @@
{pkgs, ...}: let {pkgs, ...}: {
# this is unused because it's referenced by my sway config
dbus-sway-environment = pkgs.writeTextFile {
name = "dbus-sway-environment";
destination = "/bin/dbus-sway-environment";
executable = true;
text = ''
dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP=sway
systemctl --user stop wireplumber xdg-desktop-portal xdg-desktop-portal-wlr
systemctl --user start wireplumber xdg-desktop-portal xdg-desktop-portal-wlr
'';
};
# this is unused because it's referenced by my sway config
configure-gtk = pkgs.writeTextFile {
name = "configure-gtk";
destination = "/bin/configure-gtk";
executable = true;
text = let
schema = pkgs.gsettings-desktop-schemas;
datadir = "${schema}/share/gsettings-schemas/${schema.name}";
in ''
export XDG_DATA_DIRS="${datadir}:$XDG_DATA_DIRS
gnome_schema = org.gnome.desktop.interface
gsettings set $gnome_schema gtk-theme 'Catppuccin-Mocha'
'';
};
in {
imports = [./pipewire.nix]; imports = [./pipewire.nix];
# services.xserver.libinput.enable = true; # services.xserver.libinput.enable = true;