Modularized
This commit is contained in:
parent
69713dfa48
commit
479a2283a2
104 changed files with 2575 additions and 2452 deletions
154
flake.nix
154
flake.nix
|
@ -28,7 +28,7 @@
|
||||||
} @ inputs: let
|
} @ inputs: let
|
||||||
inherit (self) outputs;
|
inherit (self) outputs;
|
||||||
|
|
||||||
systems = [
|
forAllSystems = nixpkgs-stable.lib.genAttrs [
|
||||||
"aarch64-linux"
|
"aarch64-linux"
|
||||||
# "i686-linux"
|
# "i686-linux"
|
||||||
"x86_64-linux"
|
"x86_64-linux"
|
||||||
|
@ -36,121 +36,18 @@
|
||||||
"x86_64-darwin"
|
"x86_64-darwin"
|
||||||
];
|
];
|
||||||
|
|
||||||
color-schemes = let
|
color-schemes = (import ./lib/colors.nix inputs).schemes;
|
||||||
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" = orange;
|
|
||||||
"11" = orange;
|
|
||||||
"4" = blue;
|
|
||||||
"12" = blue;
|
|
||||||
"5" = purple;
|
|
||||||
"13" = purple;
|
|
||||||
"6" = yellow;
|
|
||||||
"14" = yellow;
|
|
||||||
|
|
||||||
# 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";
|
|
||||||
green = "a6e3a1";
|
|
||||||
# teal = "94e2d5";
|
|
||||||
blue = "74c7ec";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
colors = color-schemes.catppuccin-mocha-sapphire;
|
colors = color-schemes.catppuccin-mocha-sapphire;
|
||||||
|
# colors = (import ./lib/colors.nix inputs).color-schemes.donokai;
|
||||||
font = {
|
font = {
|
||||||
name = "IosevkaLyteTerm";
|
name = "IosevkaLyteTerm";
|
||||||
size = 12;
|
size = 12;
|
||||||
};
|
};
|
||||||
|
|
||||||
linuxHomeManagerModules = [./home ./home/linux.nix];
|
|
||||||
|
|
||||||
forAllSystems = nixpkgs-stable.lib.genAttrs systems;
|
|
||||||
in {
|
in {
|
||||||
# TODO: nix-color integration?
|
# 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-unstable.legacyPackages.${system});
|
||||||
|
|
||||||
# Formatter for your nix files, available through 'nix fmt'
|
# Formatter for your nix files, available through 'nix fmt'
|
||||||
# Other options beside 'alejandra' include 'nixpkgs-fmt'
|
# Other options beside 'alejandra' include 'nixpkgs-fmt'
|
||||||
|
@ -170,7 +67,7 @@
|
||||||
# NixOS configuration entrypoint
|
# NixOS configuration entrypoint
|
||||||
# Available through 'nixos-rebuild --flake .#your-hostname'
|
# Available through 'nixos-rebuild --flake .#your-hostname'
|
||||||
nixosConfigurations = let
|
nixosConfigurations = let
|
||||||
mkNixosSystem = cb: system: modules:
|
mkNixosSystem = cb: system: modules: homeManagerModules:
|
||||||
cb {
|
cb {
|
||||||
system = system;
|
system = system;
|
||||||
specialArgs = {
|
specialArgs = {
|
||||||
|
@ -189,7 +86,7 @@
|
||||||
home-manager = {
|
home-manager = {
|
||||||
extraSpecialArgs = {inherit inputs outputs system colors font;};
|
extraSpecialArgs = {inherit inputs outputs system colors font;};
|
||||||
users.daniel = {
|
users.daniel = {
|
||||||
imports = linuxHomeManagerModules;
|
imports = homeManagerModules;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -198,31 +95,42 @@
|
||||||
# mkNixosStableSystem = mkNixosSystem nixpkgs-stable.lib.nixosSystem;
|
# mkNixosStableSystem = mkNixosSystem nixpkgs-stable.lib.nixosSystem;
|
||||||
mkNixosUnstableSystem = mkNixosSystem nixpkgs-unstable.lib.nixosSystem;
|
mkNixosUnstableSystem = mkNixosSystem nixpkgs-unstable.lib.nixosSystem;
|
||||||
in {
|
in {
|
||||||
dragon = mkNixosUnstableSystem "x86_64-linux" [./nixos/dragon];
|
dragon = mkNixosUnstableSystem "x86_64-linux" [./nixos/dragon] (with outputs.homeManagerModules; [
|
||||||
thinker = mkNixosUnstableSystem "x86_64-linux" [./nixos/thinker];
|
sway
|
||||||
beefcake = mkNixosUnstableSystem "x86_64-linux" [
|
]);
|
||||||
|
thinker = mkNixosUnstableSystem "x86_64-linux" [./nixos/thinker] (with outputs.homeManagerModules; [
|
||||||
|
sway
|
||||||
|
]);
|
||||||
|
beefcake =
|
||||||
|
mkNixosUnstableSystem "x86_64-linux" [
|
||||||
inputs.api-lyte-dev.nixosModules.x86_64-linux.api-lyte-dev
|
inputs.api-lyte-dev.nixosModules.x86_64-linux.api-lyte-dev
|
||||||
./nixos/beefcake
|
./nixos/beefcake
|
||||||
];
|
] (with outputs.homeManagerModules; [
|
||||||
rascal = mkNixosUnstableSystem "x86_64-linux" [./nixos/rascal];
|
linux
|
||||||
musicbox = mkNixosUnstableSystem "x86_64-linux" [./nixos/musicbox];
|
]);
|
||||||
|
rascal = mkNixosUnstableSystem "x86_64-linux" [./nixos/rascal] (with outputs.homeManagerModules; [
|
||||||
|
linux
|
||||||
|
]);
|
||||||
|
musicbox = mkNixosUnstableSystem "x86_64-linux" [./nixos/musicbox] (with outputs.homeManagerModules; [
|
||||||
|
sway
|
||||||
|
]);
|
||||||
};
|
};
|
||||||
|
|
||||||
# Standalone home-manager configuration entrypoint
|
# Standalone home-manager configuration entrypoint
|
||||||
# Available through 'home-manager --flake .#your-username@your-hostname'
|
# Available through 'home-manager --flake .#your-username@your-hostname'
|
||||||
homeConfigurations = let
|
homeConfigurations = {
|
||||||
mkHome = system: modules:
|
/*
|
||||||
home-manager.lib.homeManagerConfiguration {
|
daniel = home-manager.lib.homeManagerConfiguration rec {
|
||||||
|
system = "x86_64-linux";
|
||||||
pkgs = nixpkgs-unstable.legacyPackages.${system};
|
pkgs = nixpkgs-unstable.legacyPackages.${system};
|
||||||
extraSpecialArgs = {inherit inputs outputs system colors font;};
|
extraSpecialArgs = {inherit inputs outputs system colors font;};
|
||||||
modules = modules;
|
modules = with outputs.homeManagerModules; [linux];
|
||||||
};
|
};
|
||||||
in {
|
*/
|
||||||
"daniel" = mkHome "x86_64-linux" linuxHomeManagerModules;
|
|
||||||
"daniel.flanagan" = mkHome "aarch64-darwin" [./home];
|
|
||||||
};
|
};
|
||||||
|
|
||||||
# TODO: darwin for work?
|
# TODO: nix-on-droid for phone terminal usage?
|
||||||
|
# TODO: nix-darwin for work?
|
||||||
# TODO: nixos ISO?
|
# TODO: nixos ISO?
|
||||||
|
|
||||||
# Disk partition schemes and functions
|
# Disk partition schemes and functions
|
||||||
|
|
1177
home/default.nix
1177
home/default.nix
File diff suppressed because it is too large
Load diff
1140
home/linux.nix
1140
home/linux.nix
File diff suppressed because it is too large
Load diff
|
@ -1,6 +0,0 @@
|
||||||
{...}: let
|
|
||||||
username = "daniel.flanagan@hq.bill.com";
|
|
||||||
in {
|
|
||||||
home.username = username;
|
|
||||||
home.homeDirectory = "/Users/${username}";
|
|
||||||
}
|
|
102
lib/colors.nix
Normal file
102
lib/colors.nix
Normal file
|
@ -0,0 +1,102 @@
|
||||||
|
{nixpkgs-unstable, ...}: {
|
||||||
|
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" = orange;
|
||||||
|
"11" = orange;
|
||||||
|
"4" = blue;
|
||||||
|
"12" = blue;
|
||||||
|
"5" = purple;
|
||||||
|
"13" = purple;
|
||||||
|
"6" = yellow;
|
||||||
|
"14" = yellow;
|
||||||
|
|
||||||
|
# whites
|
||||||
|
"7" = fg2;
|
||||||
|
"15" = fg3;
|
||||||
|
}
|
||||||
|
// scheme;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
withHashPrefix = 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";
|
||||||
|
green = "a6e3a1";
|
||||||
|
# teal = "94e2d5";
|
||||||
|
blue = "74c7ec";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
26
modules/home-manager/bat.nix
Normal file
26
modules/home-manager/bat.nix
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
# colors,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
programs.bat = {
|
||||||
|
enable = true;
|
||||||
|
config = {
|
||||||
|
theme = "Catppuccin-mocha";
|
||||||
|
};
|
||||||
|
themes = {
|
||||||
|
"Catppuccin-mocha" = builtins.readFile (pkgs.fetchFromGitHub
|
||||||
|
{
|
||||||
|
owner = "catppuccin";
|
||||||
|
repo = "bat";
|
||||||
|
rev = "477622171ec0529505b0ca3cada68fc9433648c6";
|
||||||
|
sha256 = "6WVKQErGdaqb++oaXnY3i6/GuH2FhTgK0v4TN4Y0Wbw=";
|
||||||
|
}
|
||||||
|
+ "/Catppuccin-mocha.tmTheme");
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
home.shellAliases = {
|
||||||
|
cat = "bat";
|
||||||
|
};
|
||||||
|
}
|
112
modules/home-manager/broot.nix
Normal file
112
modules/home-manager/broot.nix
Normal file
|
@ -0,0 +1,112 @@
|
||||||
|
{
|
||||||
|
# colors,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
programs.broot = {
|
||||||
|
enable = true;
|
||||||
|
enableFishIntegration = true;
|
||||||
|
settings = {
|
||||||
|
modal = true;
|
||||||
|
skin = {
|
||||||
|
# this is a crappy copy of broot's catppuccin mocha theme
|
||||||
|
input = "rgb(205, 214, 244) none";
|
||||||
|
selected_line = "none rgb(88, 91, 112)";
|
||||||
|
default = "rgb(205, 214, 244) none";
|
||||||
|
tree = "rgb(108, 112, 134) none";
|
||||||
|
parent = "rgb(116, 199, 236) none";
|
||||||
|
file = "none none";
|
||||||
|
|
||||||
|
perm__ = "rgb(186, 194, 222) none";
|
||||||
|
perm_r = "rgb(250, 179, 135) none";
|
||||||
|
perm_w = "rgb(235, 160, 172) none";
|
||||||
|
perm_x = "rgb(166, 227, 161) none";
|
||||||
|
owner = "rgb(148, 226, 213) none";
|
||||||
|
group = "rgb(137, 220, 235) none";
|
||||||
|
|
||||||
|
dates = "rgb(186, 194, 222) none";
|
||||||
|
|
||||||
|
directory = "rgb(180, 190, 254) none Bold";
|
||||||
|
exe = "rgb(166, 227, 161) none";
|
||||||
|
link = "rgb(249, 226, 175) none";
|
||||||
|
pruning = "rgb(166, 173, 200) none Italic";
|
||||||
|
|
||||||
|
preview_title = "rgb(205, 214, 244) rgb(24, 24, 37)";
|
||||||
|
preview = "rgb(205, 214, 244) rgb(24, 24, 37)";
|
||||||
|
preview_line_number = "rgb(108, 112, 134) none";
|
||||||
|
|
||||||
|
char_match = "rgb(249, 226, 175) rgb(69, 71, 90) Bold Italic";
|
||||||
|
content_match = "rgb(249, 226, 175) rgb(69, 71, 90) Bold Italic";
|
||||||
|
preview_match = "rgb(249, 226, 175) rgb(69, 71, 90) Bold Italic";
|
||||||
|
|
||||||
|
count = "rgb(249, 226, 175) none";
|
||||||
|
sparse = "rgb(243, 139, 168) none";
|
||||||
|
content_extract = "rgb(243, 139, 168) none Italic";
|
||||||
|
|
||||||
|
git_branch = "rgb(250, 179, 135) none";
|
||||||
|
git_insertions = "rgb(250, 179, 135) none";
|
||||||
|
git_deletions = "rgb(250, 179, 135) none";
|
||||||
|
git_status_current = "rgb(250, 179, 135) none";
|
||||||
|
git_status_modified = "rgb(250, 179, 135) none";
|
||||||
|
git_status_new = "rgb(250, 179, 135) none Bold";
|
||||||
|
git_status_ignored = "rgb(250, 179, 135) none";
|
||||||
|
git_status_conflicted = "rgb(250, 179, 135) none";
|
||||||
|
git_status_other = "rgb(250, 179, 135) none";
|
||||||
|
staging_area_title = "rgb(250, 179, 135) none";
|
||||||
|
|
||||||
|
flag_label = "rgb(243, 139, 168) none";
|
||||||
|
flag_value = "rgb(243, 139, 168) none Bold";
|
||||||
|
|
||||||
|
status_normal = "none rgb(24, 24, 37)";
|
||||||
|
status_italic = "rgb(243, 139, 168) rgb(24, 24, 37) Italic";
|
||||||
|
status_bold = "rgb(235, 160, 172) rgb(24, 24, 37) Bold";
|
||||||
|
status_ellipsis = "rgb(235, 160, 172) rgb(24, 24, 37) Bold";
|
||||||
|
status_error = "rgb(205, 214, 244) rgb(243, 139, 168)";
|
||||||
|
status_job = "rgb(235, 160, 172) rgb(40, 38, 37)";
|
||||||
|
status_code = "rgb(235, 160, 172) rgb(24, 24, 37) Italic";
|
||||||
|
mode_command_mark = "rgb(235, 160, 172) rgb(24, 24, 37) Bold";
|
||||||
|
|
||||||
|
help_paragraph = "rgb(205, 214, 244) none";
|
||||||
|
help_headers = "rgb(243, 139, 168) none Bold";
|
||||||
|
help_bold = "rgb(250, 179, 135) none Bold";
|
||||||
|
help_italic = "rgb(249, 226, 175) none Italic";
|
||||||
|
help_code = "rgb(166, 227, 161) rgb(49, 50, 68)";
|
||||||
|
help_table_border = "rgb(108, 112, 134) none";
|
||||||
|
|
||||||
|
hex_null = "rgb(205, 214, 244) none";
|
||||||
|
hex_ascii_graphic = "rgb(250, 179, 135) none";
|
||||||
|
hex_ascii_whitespace = "rgb(166, 227, 161) none";
|
||||||
|
hex_ascii_other = "rgb(148, 226, 213) none";
|
||||||
|
hex_non_ascii = "rgb(243, 139, 168) none";
|
||||||
|
|
||||||
|
file_error = "rgb(251, 73, 52) none";
|
||||||
|
|
||||||
|
purpose_normal = "none none";
|
||||||
|
purpose_italic = "rgb(177, 98, 134) none Italic";
|
||||||
|
purpose_bold = "rgb(177, 98, 134) none Bold";
|
||||||
|
purpose_ellipsis = "none none";
|
||||||
|
|
||||||
|
scrollbar_track = "rgb(49, 50, 68) none";
|
||||||
|
scrollbar_thumb = "rgb(88, 91, 112) none";
|
||||||
|
|
||||||
|
good_to_bad_0 = "rgb(166, 227, 161) none";
|
||||||
|
good_to_bad_1 = "rgb(148, 226, 213) none";
|
||||||
|
good_to_bad_2 = "rgb(137, 220, 235) none";
|
||||||
|
good_to_bad_3 = "rgb(116, 199, 236) none";
|
||||||
|
good_to_bad_4 = "rgb(137, 180, 250) none";
|
||||||
|
good_to_bad_5 = "rgb(180, 190, 254) none";
|
||||||
|
good_to_bad_6 = "rgb(203, 166, 247) none";
|
||||||
|
good_to_bad_7 = "rgb(250, 179, 135) none";
|
||||||
|
good_to_bad_8 = "rgb(235, 160, 172) none";
|
||||||
|
good_to_bad_9 = "rgb(243, 139, 168) none";
|
||||||
|
};
|
||||||
|
|
||||||
|
verbs = [
|
||||||
|
{
|
||||||
|
invocation = "edit";
|
||||||
|
shortcut = "e";
|
||||||
|
execution = "$EDITOR {file}";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
82
modules/home-manager/common.nix
Normal file
82
modules/home-manager/common.nix
Normal file
|
@ -0,0 +1,82 @@
|
||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
system,
|
||||||
|
inputs,
|
||||||
|
outputs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
# TODO: fonts? right now they are only handled at the nixos-level (desktop-usage module)
|
||||||
|
# TODO: wallpaper?
|
||||||
|
|
||||||
|
imports = [
|
||||||
|
# nix-colors.homeManagerModules.default
|
||||||
|
outputs.homeManagerModules.fish
|
||||||
|
outputs.homeManagerModules.helix
|
||||||
|
outputs.homeManagerModules.git
|
||||||
|
outputs.homeManagerModules.iex
|
||||||
|
];
|
||||||
|
|
||||||
|
# TODO: specify an email?
|
||||||
|
# accounts.email.accounts = {
|
||||||
|
# primary = {
|
||||||
|
# address = "daniel@lyte.dev";
|
||||||
|
# };
|
||||||
|
# };
|
||||||
|
|
||||||
|
home = {
|
||||||
|
username = lib.mkDefault "daniel";
|
||||||
|
homeDirectory = lib.mkDefault "/home/daniel/.home";
|
||||||
|
stateVersion = lib.mkDefault "23.11";
|
||||||
|
|
||||||
|
packages = [
|
||||||
|
# I use gawk for my fish prompt
|
||||||
|
pkgs.gawk
|
||||||
|
|
||||||
|
# text editor
|
||||||
|
inputs.helix.packages.${system}.helix
|
||||||
|
|
||||||
|
# tools I use when editing nix code
|
||||||
|
pkgs.nil
|
||||||
|
pkgs.alejandra
|
||||||
|
|
||||||
|
(pkgs.buildEnv {
|
||||||
|
name = "my-scripts-common";
|
||||||
|
paths = [./scripts/common];
|
||||||
|
})
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.password-store = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.pass.withExtensions (exts: [exts.pass-otp]);
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.gitui = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.direnv = {
|
||||||
|
enable = true;
|
||||||
|
nix-direnv.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.eza = {
|
||||||
|
enable = true;
|
||||||
|
package = inputs.nixpkgs-unstable.legacyPackages.${system}.eza;
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.skim = {
|
||||||
|
enable = true;
|
||||||
|
enableFishIntegration = true;
|
||||||
|
defaultOptions = ["--color=16"];
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.nix-index = {
|
||||||
|
enable = true;
|
||||||
|
enableFishIntegration = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
# 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?
|
||||||
|
}
|
|
@ -3,4 +3,22 @@
|
||||||
{
|
{
|
||||||
# List your module files here
|
# List your module files here
|
||||||
# my-module = import ./my-module.nix;
|
# my-module = import ./my-module.nix;
|
||||||
|
common = import ./common.nix;
|
||||||
|
linux = import ./linux.nix;
|
||||||
|
macos = import ./macos.nix;
|
||||||
|
iex = import ./iex.nix;
|
||||||
|
mako = import ./mako.nix;
|
||||||
|
git = import ./git.nix;
|
||||||
|
helix = import ./helix.nix;
|
||||||
|
bat = import ./bat.nix;
|
||||||
|
fish = import ./fish.nix;
|
||||||
|
kitty = import ./kitty.nix;
|
||||||
|
wezterm = import ./wezterm.nix;
|
||||||
|
zellij = import ./zellij.nix;
|
||||||
|
firefox = import ./firefox.nix;
|
||||||
|
broot = import ./broot.nix;
|
||||||
|
waybar = import ./waybar.nix;
|
||||||
|
swaylock = import ./swaylock.nix;
|
||||||
|
desktop = import ./desktop.nix;
|
||||||
|
sway = import ./sway.nix;
|
||||||
}
|
}
|
||||||
|
|
27
modules/home-manager/desktop.nix
Normal file
27
modules/home-manager/desktop.nix
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
{
|
||||||
|
outputs,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
imports = with outputs.homeManagerModules; [
|
||||||
|
kitty
|
||||||
|
firefox
|
||||||
|
];
|
||||||
|
|
||||||
|
programs.foot = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
gtk = {
|
||||||
|
enable = true;
|
||||||
|
theme = {
|
||||||
|
name = "Catppuccin-Mocha-Compact-Sapphire-dark";
|
||||||
|
package = pkgs.catppuccin-gtk.override {
|
||||||
|
accents = ["sapphire"];
|
||||||
|
size = "compact";
|
||||||
|
tweaks = ["rimless" "black"];
|
||||||
|
variant = "mocha";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
79
modules/home-manager/eww.nix
Normal file
79
modules/home-manager/eww.nix
Normal file
|
@ -0,0 +1,79 @@
|
||||||
|
{
|
||||||
|
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)))")
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
55
modules/home-manager/firefox.nix
Normal file
55
modules/home-manager/firefox.nix
Normal file
|
@ -0,0 +1,55 @@
|
||||||
|
{pkgs, ...}: {
|
||||||
|
programs.firefox = {
|
||||||
|
# TODO: this should be able to work on macos, no?
|
||||||
|
# TODO: enable dark theme by default
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
# TODO: uses nixpkgs.pass so pass otp doesn't work
|
||||||
|
package = pkgs.firefox.override {extraNativeMessagingHosts = [pkgs.passff-host];};
|
||||||
|
|
||||||
|
# extensions = with pkgs.nur.repos.rycee.firefox-addons; [
|
||||||
|
# ublock-origin
|
||||||
|
# ]; # TODO: would be nice to have _all_ my firefox stuff managed here instead of Firefox Sync maybe?
|
||||||
|
|
||||||
|
profiles = {
|
||||||
|
daniel = {
|
||||||
|
id = 0;
|
||||||
|
settings = {
|
||||||
|
"general.smoothScroll" = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
extraConfig = ''
|
||||||
|
user_pref("toolkit.legacyUserProfileCustomizations.stylesheets", true);
|
||||||
|
// user_pref("full-screen-api.ignore-widgets", true);
|
||||||
|
user_pref("media.ffmpeg.vaapi.enabled", true);
|
||||||
|
user_pref("media.rdd-vpx.enabled", true);
|
||||||
|
'';
|
||||||
|
|
||||||
|
userChrome = ''
|
||||||
|
#TabsToolbar {
|
||||||
|
visibility: collapse;
|
||||||
|
}
|
||||||
|
|
||||||
|
#webrtcIndicator {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#main-window[tabsintitlebar="
|
||||||
|
true "]:not([extradragspace="
|
||||||
|
true "]) #TabsToolbar>.toolbar-items {
|
||||||
|
opacity: 0;
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#main-window:not([tabsintitlebar="
|
||||||
|
true "]) #TabsToolbar {
|
||||||
|
visibility: collapse !important;
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
|
||||||
|
# userContent = ''
|
||||||
|
# '';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
86
modules/home-manager/fish.nix
Normal file
86
modules/home-manager/fish.nix
Normal file
|
@ -0,0 +1,86 @@
|
||||||
|
{
|
||||||
|
programs.fish = {
|
||||||
|
enable = true;
|
||||||
|
# I load long scripts from files for a better editing experience
|
||||||
|
shellInit = builtins.readFile ./fish/shellInit.fish;
|
||||||
|
interactiveShellInit = builtins.readFile ./fish/interactiveShellInit.fish;
|
||||||
|
loginShellInit = "";
|
||||||
|
functions = {
|
||||||
|
# TODO: I think these should be loaded from fish files too for better editor experience?
|
||||||
|
d = ''
|
||||||
|
# --wraps=cd --description "Quickly jump to NICE_HOME (or given relative or absolute path) and list files."
|
||||||
|
if count $argv > /dev/null
|
||||||
|
cd $argv
|
||||||
|
else
|
||||||
|
cd $NICE_HOME
|
||||||
|
end
|
||||||
|
la
|
||||||
|
'';
|
||||||
|
|
||||||
|
c = ''
|
||||||
|
if count $argv > /dev/null
|
||||||
|
cd $NICE_HOME && d $argv
|
||||||
|
else
|
||||||
|
d $NICE_HOME
|
||||||
|
end
|
||||||
|
'';
|
||||||
|
|
||||||
|
g = ''
|
||||||
|
if test (count $argv) -gt 0
|
||||||
|
git $argv
|
||||||
|
else
|
||||||
|
git status
|
||||||
|
end
|
||||||
|
'';
|
||||||
|
|
||||||
|
ltl = ''
|
||||||
|
set d $argv[1] .
|
||||||
|
set -l l ""
|
||||||
|
for f in $d[1]/*
|
||||||
|
if test -z $l; set l $f; continue; end
|
||||||
|
if command test $f -nt $l; and test ! -d $f
|
||||||
|
set l $f
|
||||||
|
end
|
||||||
|
end
|
||||||
|
echo $l
|
||||||
|
'';
|
||||||
|
|
||||||
|
has_command = "command --quiet --search $argv[1]";
|
||||||
|
};
|
||||||
|
shellAbbrs = {};
|
||||||
|
shellAliases = {
|
||||||
|
l = "br";
|
||||||
|
ls = "eza --group-directories-first --classify";
|
||||||
|
la = "eza -la --group-directories-first --classify";
|
||||||
|
lA = "eza -la --all --group-directories-first --classify";
|
||||||
|
tree = "eza --tree --level=3";
|
||||||
|
lt = "eza -l --sort=modified";
|
||||||
|
lat = "eza -la --sort=modified";
|
||||||
|
lc = "lt --sort=accessed";
|
||||||
|
lT = "lt --reverse";
|
||||||
|
lC = "lc --reverse";
|
||||||
|
lD = "la --only-dirs";
|
||||||
|
"cd.." = "d ..";
|
||||||
|
"cdc" = "d $XDG_CONFIG_HOME";
|
||||||
|
"cdn" = "d $NOTES_PATH";
|
||||||
|
"cdl" = "d $XDG_DOWNLOAD_DIR";
|
||||||
|
"cdg" = "d $XDG_GAMES_DIR";
|
||||||
|
".." = "d ..";
|
||||||
|
"..." = "d ../..";
|
||||||
|
"...." = "d ../../..";
|
||||||
|
"....." = "d ../../../..";
|
||||||
|
"......" = "d ../../../../..";
|
||||||
|
"......." = "d ../../../../../..";
|
||||||
|
"........" = "d ../../../../../../..";
|
||||||
|
"........." = "d ../../../../../../../..";
|
||||||
|
p = "ping";
|
||||||
|
dc = "docker compose";
|
||||||
|
pc = "podman-compose";
|
||||||
|
k = "kubectl";
|
||||||
|
kg = "kubectl get";
|
||||||
|
v = "$EDITOR";
|
||||||
|
sv = "sudo $EDITOR";
|
||||||
|
kssh = "kitty +kitten ssh";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
81
modules/home-manager/git.nix
Normal file
81
modules/home-manager/git.nix
Normal file
|
@ -0,0 +1,81 @@
|
||||||
|
{lib, ...}: let
|
||||||
|
email = lib.mkDefault "daniel@lyte.dev";
|
||||||
|
in {
|
||||||
|
programs.git = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
userEmail = email;
|
||||||
|
userName = lib.mkDefault "Daniel Flanagan";
|
||||||
|
|
||||||
|
delta = {
|
||||||
|
enable = true;
|
||||||
|
options = {};
|
||||||
|
};
|
||||||
|
|
||||||
|
lfs = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
signing = {
|
||||||
|
signByDefault = true;
|
||||||
|
key = email;
|
||||||
|
};
|
||||||
|
|
||||||
|
aliases = {
|
||||||
|
a = "add -A";
|
||||||
|
ac = "commit -a";
|
||||||
|
b = "rev-parse --symbolic-full-name HEAD";
|
||||||
|
c = "commit";
|
||||||
|
cm = "commit -m";
|
||||||
|
cnv = "commit --no-verify";
|
||||||
|
co = "checkout";
|
||||||
|
d = "diff";
|
||||||
|
ds = "diff --staged";
|
||||||
|
dt = "difftool";
|
||||||
|
f = "fetch";
|
||||||
|
l = "log --graph --abbrev-commit --decorate --oneline --all";
|
||||||
|
plainlog = " log --pretty=format:'%h %ad%x09%an%x09%s' --date=short --decorate";
|
||||||
|
ls = "ls-files";
|
||||||
|
mm = "merge master";
|
||||||
|
p = "push";
|
||||||
|
pf = "push --force-with-lease";
|
||||||
|
pl = "pull";
|
||||||
|
rim = "rebase -i master";
|
||||||
|
s = "status";
|
||||||
|
};
|
||||||
|
|
||||||
|
extraConfig = {
|
||||||
|
push = {
|
||||||
|
autoSetupRemote = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
branch = {
|
||||||
|
autoSetupMerge = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
sendemail = {
|
||||||
|
smtpserver = "smtp.mailgun.org";
|
||||||
|
smtpuser = email;
|
||||||
|
smtrpencryption = "tls";
|
||||||
|
smtpserverport = 587;
|
||||||
|
};
|
||||||
|
|
||||||
|
url = {
|
||||||
|
# TODO: how to have per-machine not-in-git configuration?
|
||||||
|
"git@git.hq.bill.com:" = {
|
||||||
|
insteadOf = "https://git.hq.bill.com";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.fish.functions = {
|
||||||
|
g = ''
|
||||||
|
if test (count $argv) -gt 0
|
||||||
|
git $argv
|
||||||
|
else
|
||||||
|
git status
|
||||||
|
end
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
485
modules/home-manager/helix.nix
Normal file
485
modules/home-manager/helix.nix
Normal file
|
@ -0,0 +1,485 @@
|
||||||
|
{
|
||||||
|
inputs,
|
||||||
|
colors,
|
||||||
|
system,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
programs.helix = {
|
||||||
|
enable = true;
|
||||||
|
package = inputs.helix.packages.${system}.helix;
|
||||||
|
languages = {
|
||||||
|
language-server = {
|
||||||
|
lexical = {
|
||||||
|
command = "lexical";
|
||||||
|
args = ["start"];
|
||||||
|
};
|
||||||
|
|
||||||
|
next-ls = {
|
||||||
|
command = "next-ls";
|
||||||
|
args = ["--stdout"];
|
||||||
|
};
|
||||||
|
|
||||||
|
deno = {
|
||||||
|
command = "deno";
|
||||||
|
args = ["lsp"];
|
||||||
|
config = {
|
||||||
|
enable = true;
|
||||||
|
lint = true;
|
||||||
|
unstable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
language = [
|
||||||
|
{
|
||||||
|
name = "elixir";
|
||||||
|
language-servers = ["elixir-ls"]; # "lexical" "next-ls"
|
||||||
|
auto-format = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "html";
|
||||||
|
auto-format = false;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "nix";
|
||||||
|
auto-format = true;
|
||||||
|
formatter = {
|
||||||
|
command = "alejandra";
|
||||||
|
args = ["-"];
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "fish";
|
||||||
|
auto-format = true;
|
||||||
|
indent = {
|
||||||
|
tab-width = 2;
|
||||||
|
unit = "\t";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
name = "javascript";
|
||||||
|
language-id = "javascript";
|
||||||
|
grammar = "javascript";
|
||||||
|
scope = "source.js";
|
||||||
|
injection-regex = "^(js|javascript)$";
|
||||||
|
file-types = ["js" "mjs"];
|
||||||
|
shebangs = ["deno"];
|
||||||
|
language-servers = ["deno"];
|
||||||
|
roots = ["deno.jsonc" "deno.json"];
|
||||||
|
formatter = {
|
||||||
|
command = "deno";
|
||||||
|
args = ["fmt"];
|
||||||
|
};
|
||||||
|
auto-format = true;
|
||||||
|
comment-token = "//";
|
||||||
|
indent = {
|
||||||
|
tab-width = 2;
|
||||||
|
unit = "\t";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
name = "typescript";
|
||||||
|
language-id = "typescript";
|
||||||
|
grammar = "typescript";
|
||||||
|
scope = "source.ts";
|
||||||
|
injection-regex = "^(ts|typescript)$";
|
||||||
|
file-types = ["ts"];
|
||||||
|
shebangs = ["deno"];
|
||||||
|
language-servers = ["deno"];
|
||||||
|
roots = ["deno.jsonc" "deno.json"];
|
||||||
|
formatter = {
|
||||||
|
command = "deno";
|
||||||
|
args = ["fmt"];
|
||||||
|
};
|
||||||
|
auto-format = true;
|
||||||
|
comment-token = "//";
|
||||||
|
indent = {
|
||||||
|
tab-width = 2;
|
||||||
|
unit = "\t";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
name = "jsonc";
|
||||||
|
language-id = "json";
|
||||||
|
grammar = "jsonc";
|
||||||
|
scope = "source.jsonc";
|
||||||
|
injection-regex = "^(jsonc)$";
|
||||||
|
roots = ["deno.jsonc" "deno.json"];
|
||||||
|
file-types = ["jsonc"];
|
||||||
|
language-servers = ["deno"];
|
||||||
|
indent = {
|
||||||
|
tab-width = 2;
|
||||||
|
unit = " ";
|
||||||
|
};
|
||||||
|
auto-format = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
[[language]]
|
||||||
|
name = "jsx"
|
||||||
|
scope = "source.jsx"
|
||||||
|
injection-regex = "jsx"
|
||||||
|
file-types = ["jsx"]
|
||||||
|
shebangs = ["deno", "node"]
|
||||||
|
roots = ["deno.jsonc", "deno.json", "package.json", "tsconfig.json"]
|
||||||
|
comment-token = "//"
|
||||||
|
config = { enable = true, lint = true, unstable = true }
|
||||||
|
language-server = { command = "deno", args = ["lsp"], language-id = "javascriptreact" }
|
||||||
|
indent = { tab-width = 2, unit = " " }
|
||||||
|
grammar = "javascript"
|
||||||
|
auto-format = true
|
||||||
|
|
||||||
|
[[language]]
|
||||||
|
name = "tsx"
|
||||||
|
scope = "source.tsx"
|
||||||
|
injection-regex = "^(tsx)$" # |typescript
|
||||||
|
file-types = ["tsx"]
|
||||||
|
shebangs = ["deno", "node"]
|
||||||
|
roots = ["deno.jsonc", "deno.json", "package.json", "tsconfig.json"]
|
||||||
|
config = { enable = true, lint = true, unstable = true }
|
||||||
|
language-server = { command = "deno", args = ["lsp"], language-id = "typescriptreact" }
|
||||||
|
indent = { tab-width = 2, unit = " " }
|
||||||
|
auto-format = true
|
||||||
|
|
||||||
|
[[language]]
|
||||||
|
name = "jsonc"
|
||||||
|
scope = "source.jsonc"
|
||||||
|
injection-regex = "^(jsonc)$"
|
||||||
|
file-types = ["jsonc"]
|
||||||
|
shebangs = ["deno", "node"]
|
||||||
|
roots = ["deno.jsonc", "deno.json", "package.json", "tsconfig.json"]
|
||||||
|
config = { enable = true, lint = true, unstable = true }
|
||||||
|
language-server = { command = "deno", args = ["lsp"], language-id = "jsonc" }
|
||||||
|
indent = { tab-width = 2, unit = " " }
|
||||||
|
auto-format = true
|
||||||
|
*/
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
settings = {
|
||||||
|
theme = "custom";
|
||||||
|
|
||||||
|
editor = {
|
||||||
|
soft-wrap.enable = true;
|
||||||
|
auto-pairs = false;
|
||||||
|
auto-save = false;
|
||||||
|
completion-trigger-len = 1;
|
||||||
|
color-modes = false;
|
||||||
|
bufferline = "multiple";
|
||||||
|
scrolloff = 8;
|
||||||
|
rulers = [80 120];
|
||||||
|
cursorline = true;
|
||||||
|
|
||||||
|
cursor-shape = {
|
||||||
|
normal = "block";
|
||||||
|
insert = "bar";
|
||||||
|
select = "underline";
|
||||||
|
};
|
||||||
|
|
||||||
|
file-picker.hidden = false;
|
||||||
|
indent-guides = {
|
||||||
|
render = true;
|
||||||
|
character = "▏";
|
||||||
|
};
|
||||||
|
|
||||||
|
lsp = {
|
||||||
|
display-messages = true;
|
||||||
|
display-inlay-hints = true;
|
||||||
|
};
|
||||||
|
statusline = {
|
||||||
|
left = ["mode" "spinner" "selections" "primary-selection-length" "position" "position-percentage" "diagnostics" "workspace-diagnostics"];
|
||||||
|
center = ["file-name"];
|
||||||
|
right = ["version-control" "total-line-numbers" "file-encoding"];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
keys = {
|
||||||
|
insert = {
|
||||||
|
j = {
|
||||||
|
k = "normal_mode";
|
||||||
|
j = "normal_mode";
|
||||||
|
K = "normal_mode";
|
||||||
|
J = "normal_mode";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
normal = {
|
||||||
|
D = "kill_to_line_end";
|
||||||
|
"^" = "goto_line_start";
|
||||||
|
"C-k" = "jump_view_up";
|
||||||
|
"C-j" = "jump_view_down";
|
||||||
|
"C-h" = "jump_view_left";
|
||||||
|
"C-l" = "jump_view_right";
|
||||||
|
"C-q" = ":quit-all!";
|
||||||
|
"L" = "repeat_last_motion";
|
||||||
|
space = {
|
||||||
|
q = ":reflow 80";
|
||||||
|
Q = ":reflow 120";
|
||||||
|
v = ":run-shell-command fish -c 'env > /tmp/env'";
|
||||||
|
C = ":bc!";
|
||||||
|
h = ":toggle lsp.display-inlay-hints";
|
||||||
|
# O = ["select_textobject_inner WORD", ":pipe-to xargs xdg-open"];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
select = {
|
||||||
|
space = {
|
||||||
|
q = ":reflow 80";
|
||||||
|
Q = ":reflow 120";
|
||||||
|
};
|
||||||
|
"L" = "repeat_last_motion";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
themes = with colors.withHashPrefix; {
|
||||||
|
custom = {
|
||||||
|
"type" = orange;
|
||||||
|
|
||||||
|
"constructor" = blue;
|
||||||
|
|
||||||
|
"constant" = orange;
|
||||||
|
"constant.builtin" = orange;
|
||||||
|
"constant.character" = yellow;
|
||||||
|
"constant.character.escape" = orange;
|
||||||
|
|
||||||
|
"string" = green;
|
||||||
|
"string.regexp" = orange;
|
||||||
|
"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" = yellow;
|
||||||
|
"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 = orange;
|
||||||
|
modifiers = ["bold"];
|
||||||
|
};
|
||||||
|
"markup.heading.1" = blue;
|
||||||
|
"markup.heading.2" = yellow;
|
||||||
|
"markup.heading.3" = green;
|
||||||
|
"markup.heading.4" = orange;
|
||||||
|
"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 = fgdim;
|
||||||
|
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 = fgdim;};
|
||||||
|
"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 = bg3;
|
||||||
|
modifiers = ["bold"];
|
||||||
|
};
|
||||||
|
"ui.text.inactive" = {fg = fg2;};
|
||||||
|
|
||||||
|
"ui.virtual" = fg2;
|
||||||
|
"ui.virtual.ruler" = {bg = bg3;};
|
||||||
|
"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 = orange;
|
||||||
|
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 = primary;
|
||||||
|
fg = bg;
|
||||||
|
modifiers = ["bold"];
|
||||||
|
};
|
||||||
|
|
||||||
|
"ui.menu" = {
|
||||||
|
fg = fg3;
|
||||||
|
bg = bg2;
|
||||||
|
};
|
||||||
|
"ui.menu.selected" = {
|
||||||
|
fg = text;
|
||||||
|
bg = bg3;
|
||||||
|
modifiers = ["bold"];
|
||||||
|
};
|
||||||
|
|
||||||
|
"diagnostic.error" = {
|
||||||
|
underline = {
|
||||||
|
color = red;
|
||||||
|
style = "curl";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
"diagnostic.warning" = {
|
||||||
|
underline = {
|
||||||
|
color = orange;
|
||||||
|
style = "curl";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
"diagnostic.info" = {
|
||||||
|
underline = {
|
||||||
|
color = blue;
|
||||||
|
style = "curl";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
"diagnostic.hint" = {
|
||||||
|
underline = {
|
||||||
|
color = blue;
|
||||||
|
style = "curl";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
error = red;
|
||||||
|
warning = orange;
|
||||||
|
info = blue;
|
||||||
|
hint = yellow;
|
||||||
|
"ui.background" = {
|
||||||
|
bg = bg;
|
||||||
|
fg = fgdim;
|
||||||
|
};
|
||||||
|
|
||||||
|
# "ui.cursorline.primary" = { bg = "default" }
|
||||||
|
# "ui.cursorline.secondary" = { bg = "default" }
|
||||||
|
"ui.cursorcolumn.primary" = {bg = bg3;};
|
||||||
|
"ui.cursorcolumn.secondary" = {bg = bg3;};
|
||||||
|
|
||||||
|
"ui.bufferline.active" = {
|
||||||
|
fg = primary;
|
||||||
|
bg = bg3;
|
||||||
|
underline = {
|
||||||
|
color = primary;
|
||||||
|
style = "";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
230
modules/home-manager/hyprland.nix
Normal file
230
modules/home-manager/hyprland.nix
Normal file
|
@ -0,0 +1,230 @@
|
||||||
|
{
|
||||||
|
# colors,
|
||||||
|
# font,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
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
|
||||||
|
# }
|
||||||
|
|
||||||
|
# Example windowrule v1
|
||||||
|
# windowrule = float, ^(kitty)$
|
||||||
|
# Example windowrule v2
|
||||||
|
# windowrulev2 = float,class:^(kitty)$,title:^(kitty)$
|
||||||
|
# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more
|
||||||
|
|
||||||
|
# See https://wiki.hyprland.org/Configuring/Keywords/ for more
|
||||||
|
$mainMod = SUPER
|
||||||
|
|
||||||
|
# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more
|
||||||
|
bind = $mainMod, return, exec, kitty --single-instance
|
||||||
|
bind = $mainMod SHIFT, return, exec, kitty
|
||||||
|
bind = $mainMod, U, exec, firefox
|
||||||
|
bind = $mainMod, space, exec, wofi --show drun
|
||||||
|
bind = $mainMod, C, killactive,
|
||||||
|
bind = $mainMod, M, exit,
|
||||||
|
bind = $mainMod, E, exec, dolphin
|
||||||
|
bind = $mainMod, F, togglefloating,
|
||||||
|
bind = $mainMod SHIFT, F, fullscreen,
|
||||||
|
bind = $mainMod, R, exec, anyrun
|
||||||
|
bind = $mainMod, S, pseudo, # dwindle
|
||||||
|
bind = $mainMod, P, togglesplit, # dwindle
|
||||||
|
|
||||||
|
# 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
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
35
modules/home-manager/iex.nix
Normal file
35
modules/home-manager/iex.nix
Normal file
|
@ -0,0 +1,35 @@
|
||||||
|
{
|
||||||
|
home.file.".iex.exs" = {
|
||||||
|
enable = true;
|
||||||
|
text = ''
|
||||||
|
Application.put_env(:elixir, :ansi_enabled, true)
|
||||||
|
|
||||||
|
# PROTIP: to break, `#iex:break`
|
||||||
|
|
||||||
|
IEx.configure(
|
||||||
|
colors: [enabled: true],
|
||||||
|
inspect: [
|
||||||
|
pretty: true,
|
||||||
|
printable_limit: :infinity,
|
||||||
|
limit: :infinity
|
||||||
|
],
|
||||||
|
default_prompt:
|
||||||
|
[
|
||||||
|
# ANSI CHA, move cursor to column 1
|
||||||
|
"\e[G",
|
||||||
|
:magenta,
|
||||||
|
# IEx prompt variable
|
||||||
|
"%prefix",
|
||||||
|
"#",
|
||||||
|
# IEx prompt variable
|
||||||
|
"%counter",
|
||||||
|
# plain string
|
||||||
|
">",
|
||||||
|
:reset
|
||||||
|
]
|
||||||
|
|> IO.ANSI.format()
|
||||||
|
|> IO.chardata_to_string()
|
||||||
|
)
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
176
modules/home-manager/kitty.nix
Normal file
176
modules/home-manager/kitty.nix
Normal file
|
@ -0,0 +1,176 @@
|
||||||
|
{
|
||||||
|
colors,
|
||||||
|
font,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
programs.kitty = {
|
||||||
|
enable = true;
|
||||||
|
darwinLaunchOptions = ["--single-instance"];
|
||||||
|
shellIntegration = {
|
||||||
|
enableFishIntegration = true;
|
||||||
|
};
|
||||||
|
settings = with colors.withHashPrefix; {
|
||||||
|
"font_family" = font.name;
|
||||||
|
"bold_font" = "${font.name} Heavy";
|
||||||
|
"italic_font" = "${font.name} Italic";
|
||||||
|
"bold_italic_font" = "${font.name} Heavy Italic";
|
||||||
|
"font_size" = toString font.size;
|
||||||
|
"inactive_text_alpha" = "0.5";
|
||||||
|
"copy_on_select" = true;
|
||||||
|
|
||||||
|
"scrollback_lines" = 500000;
|
||||||
|
|
||||||
|
"symbol_map" = "U+23FB-U+23FE,U+2665,U+26A1,U+2B58,U+E000-U+E00A,U+E0A0-U+E0A3,U+E0B0-U+E0D4,U+E200-U+E2A9,U+E300-U+E3E3,U+E5FA-U+E6AA,U+E700-U+E7C5,U+EA60-U+EBEB,U+F000-U+F2E0,U+F300-U+F32F,U+F400-U+F4A9,U+F500-U+F8FF,U+F0001-U+F1AF0 Symbols Nerd Font Mono";
|
||||||
|
|
||||||
|
# use `kitty + list-fonts --psnames` to get the font's PostScript name
|
||||||
|
|
||||||
|
"allow_remote_control" = true;
|
||||||
|
"listen_on" = "unix:/tmp/kitty";
|
||||||
|
"repaint_delay" = 3;
|
||||||
|
"input_delay" = 3;
|
||||||
|
"sync_to_monitor" = true;
|
||||||
|
|
||||||
|
"adjust_line_height" = 0;
|
||||||
|
"window_padding_width" = "10.0";
|
||||||
|
"window_margin_width" = "0.0";
|
||||||
|
|
||||||
|
"confirm_os_window_close" = 0;
|
||||||
|
|
||||||
|
"enabled_layouts" = "splits:split_axis=vertical,stack";
|
||||||
|
|
||||||
|
"shell_integration" = "disabled";
|
||||||
|
|
||||||
|
"enable_audio_bell" = true;
|
||||||
|
"visual_bell_duration" = "0.25";
|
||||||
|
"visual_bell_color" = yellow;
|
||||||
|
|
||||||
|
"url_style" = "single";
|
||||||
|
|
||||||
|
"strip_trailing_spaces" = "smart";
|
||||||
|
|
||||||
|
# open_url_modifiers ctrl
|
||||||
|
|
||||||
|
"tab_bar_align" = "left";
|
||||||
|
"tab_bar_style" = "separator";
|
||||||
|
"tab_separator" = ''""'';
|
||||||
|
"tab_bar_edge" = "top";
|
||||||
|
"tab_title_template" = ''"{fmt.fg.tab}{fmt.bg.tab} {activity_symbol}{title} "'';
|
||||||
|
"active_tab_font_style" = "normal";
|
||||||
|
|
||||||
|
## name: Catppuccin Kitty Mocha
|
||||||
|
## author: Catppuccin Org
|
||||||
|
## license: MIT
|
||||||
|
## upstream: https://github.com/catppuccin/kitty/blob/main/mocha.conf
|
||||||
|
## blurb: Soothing pastel theme for the high-spirited!
|
||||||
|
|
||||||
|
# The basic colors
|
||||||
|
"foreground" = text;
|
||||||
|
"background" = bg;
|
||||||
|
"selection_foreground" = bg;
|
||||||
|
"selection_background" = text;
|
||||||
|
|
||||||
|
# Cursor colors
|
||||||
|
"cursor" = text;
|
||||||
|
"cursor_text_color" = bg;
|
||||||
|
|
||||||
|
# URL underline color when hovering with mouse
|
||||||
|
"url_color" = primary;
|
||||||
|
|
||||||
|
# Kitty window border colors
|
||||||
|
"active_border_color" = primary;
|
||||||
|
"inactive_border_color" = bg3;
|
||||||
|
"bell_border_color" = urgent;
|
||||||
|
|
||||||
|
# OS Window titlebar colors
|
||||||
|
"wayland_titlebar_color" = "system";
|
||||||
|
"macos_titlebar_color" = "system";
|
||||||
|
|
||||||
|
# Tab bar colors
|
||||||
|
"active_tab_foreground" = bg;
|
||||||
|
"active_tab_background" = primary;
|
||||||
|
"inactive_tab_foreground" = fgdim;
|
||||||
|
"inactive_tab_background" = bg2;
|
||||||
|
"tab_bar_background" = bg;
|
||||||
|
|
||||||
|
# Colors for marks (marked text in the terminal)
|
||||||
|
"mark1_foreground" = bg;
|
||||||
|
"mark1_background" = blue;
|
||||||
|
"mark2_foreground" = bg;
|
||||||
|
"mark2_background" = purple;
|
||||||
|
"mark3_foreground" = bg;
|
||||||
|
"mark3_background" = blue;
|
||||||
|
|
||||||
|
# The 16 terminal colors
|
||||||
|
|
||||||
|
# black
|
||||||
|
"color0" = colors.withHashPrefix."0";
|
||||||
|
"color8" = colors.withHashPrefix."8";
|
||||||
|
|
||||||
|
# red
|
||||||
|
"color1" = colors.withHashPrefix."1";
|
||||||
|
"color9" = colors.withHashPrefix."9";
|
||||||
|
|
||||||
|
# green
|
||||||
|
"color2" = colors.withHashPrefix."2";
|
||||||
|
"color10" = colors.withHashPrefix."10";
|
||||||
|
|
||||||
|
# yellow
|
||||||
|
"color3" = colors.withHashPrefix."3";
|
||||||
|
"color11" = colors.withHashPrefix."11";
|
||||||
|
|
||||||
|
# blue
|
||||||
|
"color4" = colors.withHashPrefix."4";
|
||||||
|
"color12" = colors.withHashPrefix."12";
|
||||||
|
|
||||||
|
# magenta
|
||||||
|
"color5" = colors.withHashPrefix."5";
|
||||||
|
"color13" = colors.withHashPrefix."13";
|
||||||
|
|
||||||
|
# cyan
|
||||||
|
"color6" = colors.withHashPrefix."6";
|
||||||
|
"color14" = colors.withHashPrefix."14";
|
||||||
|
|
||||||
|
# white
|
||||||
|
"color7" = colors.withHashPrefix."7";
|
||||||
|
"color15" = colors.withHashPrefix."15";
|
||||||
|
};
|
||||||
|
keybindings = {
|
||||||
|
"ctrl+shift+1" = "change_font_size all 12.5";
|
||||||
|
"ctrl+shift+2" = "change_font_size all 18.5";
|
||||||
|
"ctrl+shift+3" = "change_font_size all 26";
|
||||||
|
"ctrl+shift+4" = "change_font_size all 32";
|
||||||
|
"ctrl+shift+5" = "change_font_size all 48";
|
||||||
|
"ctrl+shift+o" = "launch --type=tab --stdin-source=@screen_scrollback $EDITOR";
|
||||||
|
|
||||||
|
"ctrl+shift+equal" = "change_font_size all +0.5";
|
||||||
|
"ctrl+shift+minus" = "change_font_size all -0.5";
|
||||||
|
|
||||||
|
"shift+insert" = "paste_from_clipboard";
|
||||||
|
"ctrl+shift+v" = "paste_from_selection";
|
||||||
|
"ctrl+shift+c" = "copy_to_clipboard";
|
||||||
|
|
||||||
|
# kill pane
|
||||||
|
"ctrl+shift+q" = "close_window";
|
||||||
|
|
||||||
|
# kill tab
|
||||||
|
"ctrl+alt+shift+q" = "close_tab";
|
||||||
|
|
||||||
|
"ctrl+shift+j" = "launch --location=hsplit --cwd=current";
|
||||||
|
"ctrl+shift+l" = "launch --location=vsplit --cwd=current";
|
||||||
|
|
||||||
|
"ctrl+alt+shift+k" = "move_window up";
|
||||||
|
"ctrl+alt+shift+h" = "move_window left";
|
||||||
|
"ctrl+alt+shift+l" = "move_window right";
|
||||||
|
"ctrl+alt+shift+j" = "move_window down";
|
||||||
|
|
||||||
|
"ctrl+h" = "neighboring_window left";
|
||||||
|
"ctrl+l" = "neighboring_window right";
|
||||||
|
"ctrl+k" = "neighboring_window up";
|
||||||
|
"ctrl+j" = "neighboring_window down";
|
||||||
|
"ctrl+shift+n" = "nth_window -1";
|
||||||
|
"ctrl+shift+space>u" = "kitten hints --type=url --program @";
|
||||||
|
|
||||||
|
"ctrl+shift+z" = "toggle_layout stack";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
23
modules/home-manager/linux.nix
Normal file
23
modules/home-manager/linux.nix
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
{
|
||||||
|
outputs,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
imports = with outputs.homeManagerModules; [
|
||||||
|
common
|
||||||
|
];
|
||||||
|
|
||||||
|
programs.fish = {
|
||||||
|
shellAliases = {
|
||||||
|
sctl = "sudo systemctl";
|
||||||
|
sctlu = "systemctl --user";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
home.packages = [
|
||||||
|
(pkgs.buildEnv {
|
||||||
|
name = "my-linux-scripts";
|
||||||
|
paths = [./scripts/linux];
|
||||||
|
})
|
||||||
|
];
|
||||||
|
}
|
1
modules/home-manager/macos.nix
Normal file
1
modules/home-manager/macos.nix
Normal file
|
@ -0,0 +1 @@
|
||||||
|
{...}: {}
|
26
modules/home-manager/mako.nix
Normal file
26
modules/home-manager/mako.nix
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
{
|
||||||
|
colors,
|
||||||
|
font,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
services.mako = with colors.withHashPrefix; {
|
||||||
|
enable = true;
|
||||||
|
borderSize = 1;
|
||||||
|
maxVisible = 5;
|
||||||
|
defaultTimeout = 15000;
|
||||||
|
font = "Symbols Nerd Font ${toString font.size},${font.name} ${toString font.size}";
|
||||||
|
# TODO: config
|
||||||
|
|
||||||
|
backgroundColor = bg;
|
||||||
|
textColor = text;
|
||||||
|
borderColor = primary;
|
||||||
|
progressColor = primary;
|
||||||
|
|
||||||
|
extraConfig = ''
|
||||||
|
[urgency=high]
|
||||||
|
border-color=${urgent}
|
||||||
|
[urgency=high]
|
||||||
|
background-color=${urgent}
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
360
modules/home-manager/sway.nix
Normal file
360
modules/home-manager/sway.nix
Normal file
|
@ -0,0 +1,360 @@
|
||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
colors,
|
||||||
|
outputs,
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
# font,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
imports = with outputs.homeManagerModules; [
|
||||||
|
linux
|
||||||
|
waybar
|
||||||
|
mako
|
||||||
|
swaylock
|
||||||
|
desktop
|
||||||
|
];
|
||||||
|
|
||||||
|
home.pointerCursor = {
|
||||||
|
name = "Bibata-Modern-Classic";
|
||||||
|
package = pkgs.bibata-cursors;
|
||||||
|
size = 64; # TODO: this doesn't seem to work -- at least in Sway
|
||||||
|
# some icons are also missing (hand2?)
|
||||||
|
};
|
||||||
|
|
||||||
|
wayland.windowManager.sway = {
|
||||||
|
/*
|
||||||
|
TODO:
|
||||||
|
+ Super+r should rotate the selected group of windows.
|
||||||
|
+ Super+Control+{1-9} should control the size of the preselect space.
|
||||||
|
+ Super+Shift+b should balance the size of all selected nodes.
|
||||||
|
set $tilers "(wezterm.*|kitty.*|firefox.*|slack.*|Slack.*|thunar.*|Alacritty.*|alacritty.*|Discord.*|discord.*)"
|
||||||
|
for_window [title=".*"] floating enable
|
||||||
|
for_window [app_id=$tilers] floating disable
|
||||||
|
|
||||||
|
# for_window [title=".*"] opacity $opacity
|
||||||
|
|
||||||
|
# TODO: I forget why I needed this - could google it I expect?
|
||||||
|
exec /usr/lib/polkit-kde-authentication-agent-1
|
||||||
|
|
||||||
|
# prevent all windows from stealing focus
|
||||||
|
no_focus [class=".*"]
|
||||||
|
*/
|
||||||
|
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
systemd = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
config = {
|
||||||
|
output = {
|
||||||
|
"*" = {
|
||||||
|
background = "$HOME/.wallpaper fill";
|
||||||
|
};
|
||||||
|
|
||||||
|
"Dell Inc. DELL U2720Q D3TM623" = {
|
||||||
|
# desktop left vertical monitor
|
||||||
|
transform = "90";
|
||||||
|
scale = "1.5";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# TODO: popup_during_fullscreen smart
|
||||||
|
focus = {
|
||||||
|
wrapping = "no";
|
||||||
|
followMouse = "no";
|
||||||
|
mouseWarping = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
modifier = "Mod4";
|
||||||
|
|
||||||
|
gaps = {
|
||||||
|
smartBorders = "on";
|
||||||
|
};
|
||||||
|
|
||||||
|
window = {
|
||||||
|
border = 2;
|
||||||
|
titlebar = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
floating = {
|
||||||
|
modifier = config.wayland.windowManager.sway.config.modifier;
|
||||||
|
titlebar = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
startup = [
|
||||||
|
{
|
||||||
|
command = "systemctl --user restart waybar";
|
||||||
|
always = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
command = lib.concatStringsSep " " [
|
||||||
|
"swayidle -w"
|
||||||
|
"timeout 300 'notify-send \"Idling in 300 seconds\"'"
|
||||||
|
"resume 'notify-send \"Idling cancelled.\"'"
|
||||||
|
"timeout 480 'notify-send \"Idling in 120 seconds\"'"
|
||||||
|
"timeout 510 'notify-send \"Idling in 90 seconds\"'"
|
||||||
|
"timeout 540 'notify-send \"Idling in 60 seconds!\"'"
|
||||||
|
"timeout 570 'notify-send \"Idling in 30 seconds!\"'"
|
||||||
|
"timeout 590 'notify-send \"Idling in 10 seconds!\"'"
|
||||||
|
"timeout 591 'notify-send \"Idling in 9 seconds!\"'"
|
||||||
|
"timeout 592 'notify-send \"Idling in 8 seconds!\"'"
|
||||||
|
"timeout 593 'notify-send \"Idling in 7 seconds!\"'"
|
||||||
|
"timeout 594 'notify-send \"Idling in 6 seconds!\"'"
|
||||||
|
"timeout 595 'notify-send \"Idling in 5 seconds!\"'"
|
||||||
|
"timeout 596 'notify-send \"Idling in 4 seconds!\"'"
|
||||||
|
"timeout 597 'notify-send \"Idling in 3 seconds!\"'"
|
||||||
|
"timeout 598 'notify-send \"Idling in 2 seconds!\"'"
|
||||||
|
"timeout 599 'notify-send \"Idling in 1 second!\"'"
|
||||||
|
"timeout 600 'swaylock -f'"
|
||||||
|
"timeout 600 'swaymsg \"output * dpms off\"'"
|
||||||
|
"resume 'swaymsg \"output * dpms on\" & maybe-good-morning &'"
|
||||||
|
"before-sleep 'swaylock'"
|
||||||
|
];
|
||||||
|
}
|
||||||
|
{command = "firefox";}
|
||||||
|
{command = "kitty --single-instance";}
|
||||||
|
];
|
||||||
|
|
||||||
|
modes = {
|
||||||
|
resize = {
|
||||||
|
"h" = "resize shrink width 10 px or 10 ppt";
|
||||||
|
"j" = "resize grow height 10 px or 10 ppt";
|
||||||
|
"k" = "resize shrink height 10 px or 10 ppt";
|
||||||
|
"l" = "resize grow width 10 px or 10 ppt";
|
||||||
|
|
||||||
|
"left" = "resize shrink width 10 px or 10 ppt";
|
||||||
|
"down" = "resize grow height 10 px or 10 ppt";
|
||||||
|
"up" = "resize shrink height 10 px or 10 ppt";
|
||||||
|
"right" = "resize grow width 10 px or 10 ppt";
|
||||||
|
|
||||||
|
"return" = ''mode "default"'';
|
||||||
|
"escape" = ''mode "default"'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
input = {
|
||||||
|
"type:keyboard" = {
|
||||||
|
xkb_options = "ctrl:nocaps";
|
||||||
|
repeat_delay = "200";
|
||||||
|
repeat_rate = "60";
|
||||||
|
};
|
||||||
|
|
||||||
|
"type:pointer" = {
|
||||||
|
accel_profile = "flat";
|
||||||
|
pointer_accel = "0";
|
||||||
|
};
|
||||||
|
|
||||||
|
"type:touchpad" = {
|
||||||
|
dwt = "disabled";
|
||||||
|
tap = "enabled";
|
||||||
|
natural_scroll = "enabled";
|
||||||
|
middle_emulation = "enabled";
|
||||||
|
# pointer_accel
|
||||||
|
};
|
||||||
|
};
|
||||||
|
keybindings = let
|
||||||
|
mod = config.wayland.windowManager.sway.config.modifier;
|
||||||
|
in {
|
||||||
|
# bindsym $mod+shift+space exec wofi --show drun
|
||||||
|
"${mod}+control+space" = "exec makoctl dismiss";
|
||||||
|
"${mod}+shift+space" = "exec makoctl invoke";
|
||||||
|
"${mod}+return" = "exec kitty --single-instance";
|
||||||
|
"${mod}+shift+return" = "exec floating-term";
|
||||||
|
"${mod}+shift+alt+return" = "exec kitty";
|
||||||
|
"${mod}+c" = "kill";
|
||||||
|
"${mod}+shift+c" = "kill # TODO: kill -9?";
|
||||||
|
"${mod}+space" = "exec wofi --show drun";
|
||||||
|
"${mod}+shift+s" = "exec clipshot";
|
||||||
|
"${mod}+e" = "exec thunar";
|
||||||
|
"${mod}+shift+r" = "reload";
|
||||||
|
"${mod}+control+Escape" = "exit";
|
||||||
|
"${mod}+shift+e" = "exit";
|
||||||
|
"${mod}+shift+p" = "exec pass-chooser";
|
||||||
|
"${mod}+control+j" = "split v";
|
||||||
|
"${mod}+control+l" = "split h";
|
||||||
|
"${mod}+control+f" = "focus mode_toggle";
|
||||||
|
|
||||||
|
"${mod}+h" = "focus left";
|
||||||
|
"${mod}+j" = "focus down";
|
||||||
|
"${mod}+k" = "focus up";
|
||||||
|
"${mod}+l" = "focus right";
|
||||||
|
|
||||||
|
"${mod}+left" = "focus left";
|
||||||
|
"${mod}+down" = "focus down";
|
||||||
|
"${mod}+up" = "focus up";
|
||||||
|
"${mod}+right" = "focus right";
|
||||||
|
|
||||||
|
"${mod}+shift+h" = "move left";
|
||||||
|
"${mod}+shift+j" = "move down";
|
||||||
|
"${mod}+shift+k" = "move up";
|
||||||
|
"${mod}+shift+l" = "move right";
|
||||||
|
|
||||||
|
"${mod}+shift+left" = "move left";
|
||||||
|
"${mod}+shift+down" = "move down";
|
||||||
|
"${mod}+shift+up" = "move up";
|
||||||
|
"${mod}+shift+right" = "move right";
|
||||||
|
|
||||||
|
"${mod}+1" = "workspace 1";
|
||||||
|
"${mod}+2" = "workspace 2";
|
||||||
|
"${mod}+3" = "workspace 3";
|
||||||
|
"${mod}+4" = "workspace 4";
|
||||||
|
"${mod}+5" = "workspace 5";
|
||||||
|
"${mod}+6" = "workspace 6";
|
||||||
|
"${mod}+7" = "workspace 7";
|
||||||
|
"${mod}+8" = "workspace 8";
|
||||||
|
"${mod}+9" = "workspace 9";
|
||||||
|
"${mod}+0" = "workspace 10";
|
||||||
|
|
||||||
|
"${mod}+shift+1" = "move container to workspace 1";
|
||||||
|
"${mod}+shift+2" = "move container to workspace 2";
|
||||||
|
"${mod}+shift+3" = "move container to workspace 3";
|
||||||
|
"${mod}+shift+4" = "move container to workspace 4";
|
||||||
|
"${mod}+shift+5" = "move container to workspace 5";
|
||||||
|
"${mod}+shift+6" = "move container to workspace 6";
|
||||||
|
"${mod}+shift+7" = "move container to workspace 7";
|
||||||
|
"${mod}+shift+8" = "move container to workspace 8";
|
||||||
|
"${mod}+shift+9" = "move container to workspace 9";
|
||||||
|
"${mod}+shift+0" = "move container to workspace 10";
|
||||||
|
|
||||||
|
"${mod}+b" = "splith";
|
||||||
|
"${mod}+v" = "splitv";
|
||||||
|
|
||||||
|
"${mod}+shift+f" = "fullscreen toggle";
|
||||||
|
"${mod}+f" = "floating toggle";
|
||||||
|
"${mod}+s" = "floating disable";
|
||||||
|
"${mod}+alt+f" = "focus mode_toggle";
|
||||||
|
"${mod}+p" = "focus parent";
|
||||||
|
"${mod}+period" = "focus child";
|
||||||
|
"${mod}+comma" = "focus child";
|
||||||
|
"${mod}+tab" = "workspace back_and_forth";
|
||||||
|
|
||||||
|
"${mod}+minus" = "gaps inner current minus 5";
|
||||||
|
"${mod}+plus" = "gaps inner current plus 5";
|
||||||
|
"${mod}+control+alt+h" = "gaps horizontal current minus 5";
|
||||||
|
"${mod}+control+alt+l" = "gaps horizontal current plus 5";
|
||||||
|
"${mod}+control+alt+j" = "gaps vertical current minus 5";
|
||||||
|
"${mod}+control+alt+k" = "gaps vertical current plus 5";
|
||||||
|
|
||||||
|
# TODO: this should also reset the horizontal and vertical gaps?
|
||||||
|
"${mod}+control+equal" = "gaps inner current set 0";
|
||||||
|
|
||||||
|
"XF86AudioRaiseVolume" = "exec pactl set-sink-volume @DEFAULT_SINK@ +5%";
|
||||||
|
"XF86AudioLowerVolume" = "exec pactl set-sink-volume @DEFAULT_SINK@ -5%";
|
||||||
|
"control+XF86AudioRaiseVolume" = "exec pactl set-sink-volume @DEFAULT_SINK@ +1%";
|
||||||
|
"control+XF86AudioLowerVolume" = "exec pactl set-sink-volume @DEFAULT_SINK@ -1%";
|
||||||
|
"XF86AudioMute" = "exec pactl set-sink-mute @DEFAULT_SINK@ toggle";
|
||||||
|
"XF86AudioMicMute" = "exec pactl set-source-mute @DEFAULT_SOURCE@ toggle";
|
||||||
|
"XF86MonBrightnessDown" = "exec brightnessctl set 10%-";
|
||||||
|
"XF86MonBrightnessUp" = "exec brightnessctl set +10%";
|
||||||
|
"shift+XF86MonBrightnessDown" = "exec brightnessctl set 1%";
|
||||||
|
"shift+XF86MonBrightnessUp" = "exec brightnessctl set 100%";
|
||||||
|
"control+XF86MonBrightnessDown" = "exec brightnessctl set 1%-";
|
||||||
|
"control+XF86MonBrightnessUp" = "exec brightnessctl set +1%";
|
||||||
|
"XF86AudioPlay" = "exec playerctl play-pause";
|
||||||
|
"XF86AudioNext" = "exec playerctl next";
|
||||||
|
"XF86AudioPrev" = "exec playerctl previous";
|
||||||
|
"${mod}+shift+v" = "exec pactl set-source-mute @DEFAULT_SOURCE@ toggle";
|
||||||
|
|
||||||
|
"${mod}+control+shift+l" = "exec swaylock";
|
||||||
|
|
||||||
|
"${mod}+shift+alt+f" = "for_window [class=$tilers] floating toggle";
|
||||||
|
};
|
||||||
|
assigns = {};
|
||||||
|
bars = [];
|
||||||
|
colors = with colors; {
|
||||||
|
background = bg;
|
||||||
|
focused = {
|
||||||
|
background = bg;
|
||||||
|
border = primary;
|
||||||
|
childBorder = primary;
|
||||||
|
indicator = primary;
|
||||||
|
text = bg;
|
||||||
|
};
|
||||||
|
focusedInactive = {
|
||||||
|
background = bg;
|
||||||
|
border = primary;
|
||||||
|
childBorder = primary;
|
||||||
|
indicator = primary;
|
||||||
|
text = bg;
|
||||||
|
};
|
||||||
|
placeholder = {
|
||||||
|
background = bg;
|
||||||
|
border = primary;
|
||||||
|
childBorder = primary;
|
||||||
|
indicator = primary;
|
||||||
|
text = text;
|
||||||
|
};
|
||||||
|
unfocused = {
|
||||||
|
background = bg;
|
||||||
|
border = bg;
|
||||||
|
childBorder = bg;
|
||||||
|
indicator = bg;
|
||||||
|
text = text;
|
||||||
|
};
|
||||||
|
urgent = {
|
||||||
|
background = urgent;
|
||||||
|
border = urgent;
|
||||||
|
childBorder = urgent;
|
||||||
|
indicator = urgent;
|
||||||
|
text = bg;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# this doesn't work due to weird quoting bugs AFAICT
|
||||||
|
/*
|
||||||
|
services.swayidle = let
|
||||||
|
bins = rec {
|
||||||
|
swaylock = builtins.trace "${pkgs.swaylock}/bin/swaylock" "${pkgs.swaylock}/bin/swaylock";
|
||||||
|
swaymsg = "${pkgs.sway}/bin/swaymsg";
|
||||||
|
notify-send = "${swaymsg} exec -- ${pkgs.libnotify}/bin/notify-send";
|
||||||
|
};
|
||||||
|
in (with bins; {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
events = [
|
||||||
|
{
|
||||||
|
event = "before-sleep";
|
||||||
|
command = swaylock;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
timeouts = [
|
||||||
|
{
|
||||||
|
timeout = 5;
|
||||||
|
command = "${notify-send} \\\"Idling in 300 seconds\\\"";
|
||||||
|
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 &";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
});
|
||||||
|
*/
|
||||||
|
}
|
35
modules/home-manager/swaylock.nix
Normal file
35
modules/home-manager/swaylock.nix
Normal file
|
@ -0,0 +1,35 @@
|
||||||
|
{
|
||||||
|
font,
|
||||||
|
# colors,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
programs.swaylock = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
color = "ffffffff";
|
||||||
|
image = "~/.wallpaper";
|
||||||
|
font = font.name;
|
||||||
|
show-failed-attempts = true;
|
||||||
|
ignore-empty-password = true;
|
||||||
|
|
||||||
|
indicator-radius = "150";
|
||||||
|
indicator-thickness = "30";
|
||||||
|
|
||||||
|
inside-color = "11111100";
|
||||||
|
inside-clear-color = "11111100";
|
||||||
|
inside-ver-color = "11111100";
|
||||||
|
inside-wrong-color = "11111100";
|
||||||
|
|
||||||
|
key-hl-color = "a1efe4";
|
||||||
|
separator-color = "11111100";
|
||||||
|
|
||||||
|
line-color = "111111cc";
|
||||||
|
line-uses-ring = true;
|
||||||
|
|
||||||
|
ring-color = "111111cc";
|
||||||
|
ring-clear-color = "f4bf75";
|
||||||
|
ring-ver-color = "66d9ef";
|
||||||
|
ring-wrong-color = "f92672";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue