Switch to KDE Plasma
This commit is contained in:
parent
1ef0868c37
commit
416ef19d90
38 changed files with 375 additions and 1606 deletions
5
Justfile
5
Justfile
|
|
@ -10,7 +10,7 @@ default:
|
||||||
[group('nix')]
|
[group('nix')]
|
||||||
deploy:
|
deploy:
|
||||||
{{if os() == "linux" { \
|
{{if os() == "linux" { \
|
||||||
"nixos-rebuild switch --flake . --sudo" \
|
"sudo nixos-rebuild switch --flake ." \
|
||||||
} else { \
|
} else { \
|
||||||
"sudo darwin-rebuild switch --flake ." \
|
"sudo darwin-rebuild switch --flake ." \
|
||||||
} \
|
} \
|
||||||
|
|
@ -68,6 +68,5 @@ edit-secret file:
|
||||||
|
|
||||||
# Exits the current user session
|
# Exits the current user session
|
||||||
[group('desktop')]
|
[group('desktop')]
|
||||||
[confirm]
|
|
||||||
logout:
|
logout:
|
||||||
hyprctl dispatch exit
|
# niri msg action quit
|
||||||
|
|
|
||||||
|
|
@ -78,8 +78,8 @@ Since this is pretty much always a work-in-progress I do not expect it to be in
|
||||||
most presentable state at all times. Whenever I have time I try to streamline some of
|
most presentable state at all times. Whenever I have time I try to streamline some of
|
||||||
the config, but especially when trying out new tools the code could be a bit wild.
|
the config, but especially when trying out new tools the code could be a bit wild.
|
||||||
|
|
||||||
There's a couple of ideas I have for this:
|
Additionally, there's a couple of ideas I have for this:
|
||||||
- [ ] Deploy base tooling to all hosts. This mainly includes `nushell` and `helix` configs. They should still be configurable per-host. Potential issue here could be hosts where I don't use home manager
|
- [ ] Deploy base tooling to all hosts. This mainly includes shell and `helix` configs. They should still be configurable per-host. Potential issue here could be hosts where I don't use home manager
|
||||||
- [ ] Make everything more composable. Can make use of the `elements` config some more, like how it's done for `quirks`
|
- [ ] Make everything more composable. Can make use of the `elements` config some more, like how it's done for `quirks`
|
||||||
|
|
||||||
[just]: https://github.com/casey/just
|
[just]: https://github.com/casey/just
|
||||||
|
|
|
||||||
876
flake.lock
generated
876
flake.lock
generated
File diff suppressed because it is too large
Load diff
33
flake.nix
33
flake.nix
|
|
@ -65,8 +65,8 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
inputs = {
|
inputs = {
|
||||||
# nixpkgs.url = "git+file:///home/christopher/code/opensource/nixpkgs";
|
nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.05";
|
||||||
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
unstable.url = "github:NixOS/nixpkgs/nixos-unstable";
|
||||||
|
|
||||||
# Opinionated flake library for better organization without much boilerplate
|
# Opinionated flake library for better organization without much boilerplate
|
||||||
snowfall = {
|
snowfall = {
|
||||||
|
|
@ -74,46 +74,29 @@
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
|
|
||||||
# For using home-manager on Darwin (macOS) devices
|
|
||||||
darwin.url = "github:lnl7/nix-darwin";
|
|
||||||
darwin.inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
|
|
||||||
home-manager = {
|
home-manager = {
|
||||||
# url = "git+file:///home/christopher/code/opensource/home-manager";
|
# url = "git+file:///home/christopher/code/opensource/home-manager";
|
||||||
url = "github:nix-community/home-manager";
|
url = "github:nix-community/home-manager";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
# For using home-manager on Darwin (macOS) devices
|
||||||
|
darwin.url = "github:lnl7/nix-darwin";
|
||||||
|
darwin.inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
|
||||||
# Disk management via Nix
|
# Disk management via Nix
|
||||||
disko.url = "github:nix-community/disko";
|
disko.url = "github:nix-community/disko";
|
||||||
disko.inputs.nixpkgs.follows = "nixpkgs";
|
disko.inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
|
||||||
|
# Secrets management
|
||||||
agenix.url = "github:ryantm/agenix";
|
agenix.url = "github:ryantm/agenix";
|
||||||
agenix.inputs.nixpkgs.follows = "nixpkgs";
|
agenix.inputs.nixpkgs.follows = "nixpkgs";
|
||||||
agenix-rekey.url = "github:oddlama/agenix-rekey";
|
agenix-rekey.url = "github:oddlama/agenix-rekey";
|
||||||
agenix-rekey.inputs.nixpkgs.follows = "nixpkgs";
|
agenix-rekey.inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
|
||||||
hyprland.url = "github:hyprwm/hyprland";
|
affinity-nix.url = "github:mrshmllow/affinity-nix";
|
||||||
|
|
||||||
hypridle = {
|
|
||||||
url = "github:hyprwm/hypridle";
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
};
|
|
||||||
|
|
||||||
rose-pine-hyprcursor = {
|
|
||||||
url = "github:ndom91/rose-pine-hyprcursor";
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
inputs.hyprlang.follows = "hyprland/hyprlang";
|
|
||||||
};
|
|
||||||
|
|
||||||
split-monitor-workspaces = {
|
|
||||||
url = "github:Duckonaut/split-monitor-workspaces";
|
|
||||||
inputs.hyprland.follows = "hyprland";
|
|
||||||
};
|
|
||||||
|
|
||||||
quadlet.url = "github:SEIAROTg/quadlet-nix";
|
quadlet.url = "github:SEIAROTg/quadlet-nix";
|
||||||
musnix.url = "github:musnix/musnix";
|
musnix.url = "github:musnix/musnix";
|
||||||
|
|
||||||
docker-compose-1.url = github:nixos/nixpkgs/b0f0b5c6c021ebafbd322899aa9a54b87d75a313;
|
docker-compose-1.url = github:nixos/nixpkgs/b0f0b5c6c021ebafbd322899aa9a54b87d75a313;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,21 +1,12 @@
|
||||||
{pkgs, ...}: {
|
{pkgs, ...}: {
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
|
rose-pine-cursor
|
||||||
lxappearance
|
lxappearance
|
||||||
];
|
];
|
||||||
|
|
||||||
gtk = {
|
gtk = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
||||||
iconTheme = {
|
|
||||||
name = "oomox-rose-pine";
|
|
||||||
package = pkgs.rose-pine-icon-theme;
|
|
||||||
};
|
|
||||||
|
|
||||||
theme = {
|
|
||||||
name = "rose-pine";
|
|
||||||
package = pkgs.rose-pine-gtk-theme;
|
|
||||||
};
|
|
||||||
|
|
||||||
cursorTheme = {
|
cursorTheme = {
|
||||||
name = "BreezeX-RoséPine";
|
name = "BreezeX-RoséPine";
|
||||||
package = pkgs.rose-pine-cursor;
|
package = pkgs.rose-pine-cursor;
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,18 @@
|
||||||
{pkgs, ...}: {
|
{pkgs, ...}: {
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
|
# Editors
|
||||||
|
jetbrains-toolbox # Installer for JetBrains IDEs
|
||||||
|
zed-editor
|
||||||
|
code-cursor
|
||||||
|
vscode
|
||||||
|
|
||||||
|
# Language Servers
|
||||||
|
lua-language-server
|
||||||
|
rust-analyzer
|
||||||
|
nodePackages.typescript
|
||||||
|
nodePackages.typescript-language-server
|
||||||
|
nil # nix lsp
|
||||||
|
|
||||||
zx # Tool for writing better scripts
|
zx # Tool for writing better scripts
|
||||||
# trurl # Parsing and manipulating URLs via CLI
|
# trurl # Parsing and manipulating URLs via CLI
|
||||||
dig # DNS
|
dig # DNS
|
||||||
|
|
@ -7,12 +20,10 @@
|
||||||
tokei # Like cloc
|
tokei # Like cloc
|
||||||
zeal # Offline documentation browser
|
zeal # Offline documentation browser
|
||||||
just # Just a command runner
|
just # Just a command runner
|
||||||
jetbrains-toolbox # Installer for JetBrains IDEs
|
|
||||||
claude-code
|
claude-code
|
||||||
devenv
|
devenv
|
||||||
|
|
||||||
# Build tools
|
# Build tools
|
||||||
platformio
|
|
||||||
cargo
|
cargo
|
||||||
glibc
|
glibc
|
||||||
gcc
|
gcc
|
||||||
|
|
|
||||||
|
|
@ -1,47 +0,0 @@
|
||||||
# Dunst is used for displaying system notifications.
|
|
||||||
# It is configured here, so that its styling looks better.
|
|
||||||
{...}: {
|
|
||||||
services.dunst = {
|
|
||||||
enable = true;
|
|
||||||
|
|
||||||
settings = {
|
|
||||||
global = {
|
|
||||||
font = "Roboto 11";
|
|
||||||
format = "<b>%s</b>\\n%b";
|
|
||||||
width = 300;
|
|
||||||
height = 100;
|
|
||||||
offset = "7x7";
|
|
||||||
|
|
||||||
frame_color = "#8AADF4";
|
|
||||||
frame_width = 2;
|
|
||||||
gap_size = 8;
|
|
||||||
line_height = 2;
|
|
||||||
|
|
||||||
sort = true;
|
|
||||||
|
|
||||||
# Not really relevant for single-monitor setup, but doesn't hurt either
|
|
||||||
monitor = 0;
|
|
||||||
follow = "mouse";
|
|
||||||
};
|
|
||||||
|
|
||||||
urgency_low = {
|
|
||||||
background = "#24273A";
|
|
||||||
foreground = "#CAD3F5";
|
|
||||||
timeout = 10;
|
|
||||||
};
|
|
||||||
|
|
||||||
urgency_normal = {
|
|
||||||
background = "#24273A";
|
|
||||||
foreground = "#CAD3F5";
|
|
||||||
timeout = 10;
|
|
||||||
};
|
|
||||||
|
|
||||||
urgency_critical = {
|
|
||||||
background = "#24273A";
|
|
||||||
foreground = "#CAD3F5";
|
|
||||||
frame_color = "#F5A97F";
|
|
||||||
timeout = 0;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,13 +0,0 @@
|
||||||
{pkgs, ...}: {
|
|
||||||
# Install common editors
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
zed-editor
|
|
||||||
|
|
||||||
# Language Servers
|
|
||||||
lua-language-server
|
|
||||||
rust-analyzer
|
|
||||||
nodePackages.typescript
|
|
||||||
nodePackages.typescript-language-server
|
|
||||||
nil # nix lsp
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
@ -1,15 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
eww
|
|
||||||
lm_sensors
|
|
||||||
];
|
|
||||||
|
|
||||||
home.file."${config.xdg.configHome}/eww" = {
|
|
||||||
source = ./eww;
|
|
||||||
recursive = true;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,5 +0,0 @@
|
||||||
In order to develop these widgets (with live reloading) do the following:
|
|
||||||
|
|
||||||
1. Kill the original eww daemon using `eww kill`
|
|
||||||
2. Start the new daemon using `eww open spraggins --config ~/.dotfiles/homes/x86_64-linux/christopher@cobalt/config/eww `
|
|
||||||
3. Now all changes to the original dotfiles defining the config will be hot-reloaded
|
|
||||||
|
|
@ -1,121 +0,0 @@
|
||||||
// Installed via `npm install @catppuccin/palette`.
|
|
||||||
// File copied from `node_modules/@catppuccin/palette/scss`.
|
|
||||||
|
|
||||||
// Copied here so that we don't need to run npm install for
|
|
||||||
// eww configuration. Also this file shouldn't really change
|
|
||||||
// ever, so it's fine to include it statically.
|
|
||||||
|
|
||||||
$palette: (
|
|
||||||
"latte": (
|
|
||||||
"rosewater": #dc8a78,
|
|
||||||
"flamingo": #dd7878,
|
|
||||||
"pink": #ea76cb,
|
|
||||||
"mauve": #8839ef,
|
|
||||||
"red": #d20f39,
|
|
||||||
"maroon": #e64553,
|
|
||||||
"peach": #fe640b,
|
|
||||||
"yellow": #df8e1d,
|
|
||||||
"green": #40a02b,
|
|
||||||
"teal": #179299,
|
|
||||||
"sky": #04a5e5,
|
|
||||||
"sapphire": #209fb5,
|
|
||||||
"blue": #1e66f5,
|
|
||||||
"lavender": #7287fd,
|
|
||||||
"text": #4c4f69,
|
|
||||||
"subtext1": #5c5f77,
|
|
||||||
"subtext0": #6c6f85,
|
|
||||||
"overlay2": #7c7f93,
|
|
||||||
"overlay1": #8c8fa1,
|
|
||||||
"overlay0": #9ca0b0,
|
|
||||||
"surface2": #acb0be,
|
|
||||||
"surface1": #bcc0cc,
|
|
||||||
"surface0": #ccd0da,
|
|
||||||
"base": #eff1f5,
|
|
||||||
"mantle": #e6e9ef,
|
|
||||||
"crust": #dce0e8,
|
|
||||||
),
|
|
||||||
"frappe": (
|
|
||||||
"rosewater": #f2d5cf,
|
|
||||||
"flamingo": #eebebe,
|
|
||||||
"pink": #f4b8e4,
|
|
||||||
"mauve": #ca9ee6,
|
|
||||||
"red": #e78284,
|
|
||||||
"maroon": #ea999c,
|
|
||||||
"peach": #ef9f76,
|
|
||||||
"yellow": #e5c890,
|
|
||||||
"green": #a6d189,
|
|
||||||
"teal": #81c8be,
|
|
||||||
"sky": #99d1db,
|
|
||||||
"sapphire": #85c1dc,
|
|
||||||
"blue": #8caaee,
|
|
||||||
"lavender": #babbf1,
|
|
||||||
"text": #c6d0f5,
|
|
||||||
"subtext1": #b5bfe2,
|
|
||||||
"subtext0": #a5adce,
|
|
||||||
"overlay2": #949cbb,
|
|
||||||
"overlay1": #838ba7,
|
|
||||||
"overlay0": #737994,
|
|
||||||
"surface2": #626880,
|
|
||||||
"surface1": #51576d,
|
|
||||||
"surface0": #414559,
|
|
||||||
"base": #303446,
|
|
||||||
"mantle": #292c3c,
|
|
||||||
"crust": #232634,
|
|
||||||
),
|
|
||||||
"macchiato": (
|
|
||||||
"rosewater": #f4dbd6,
|
|
||||||
"flamingo": #f0c6c6,
|
|
||||||
"pink": #f5bde6,
|
|
||||||
"mauve": #c6a0f6,
|
|
||||||
"red": #ed8796,
|
|
||||||
"maroon": #ee99a0,
|
|
||||||
"peach": #f5a97f,
|
|
||||||
"yellow": #eed49f,
|
|
||||||
"green": #a6da95,
|
|
||||||
"teal": #8bd5ca,
|
|
||||||
"sky": #91d7e3,
|
|
||||||
"sapphire": #7dc4e4,
|
|
||||||
"blue": #8aadf4,
|
|
||||||
"lavender": #b7bdf8,
|
|
||||||
"text": #cad3f5,
|
|
||||||
"subtext1": #b8c0e0,
|
|
||||||
"subtext0": #a5adcb,
|
|
||||||
"overlay2": #939ab7,
|
|
||||||
"overlay1": #8087a2,
|
|
||||||
"overlay0": #6e738d,
|
|
||||||
"surface2": #5b6078,
|
|
||||||
"surface1": #494d64,
|
|
||||||
"surface0": #363a4f,
|
|
||||||
"base": #24273a,
|
|
||||||
"mantle": #1e2030,
|
|
||||||
"crust": #181926,
|
|
||||||
),
|
|
||||||
"mocha": (
|
|
||||||
"rosewater": #f5e0dc,
|
|
||||||
"flamingo": #f2cdcd,
|
|
||||||
"pink": #f5c2e7,
|
|
||||||
"mauve": #cba6f7,
|
|
||||||
"red": #f38ba8,
|
|
||||||
"maroon": #eba0ac,
|
|
||||||
"peach": #fab387,
|
|
||||||
"yellow": #f9e2af,
|
|
||||||
"green": #a6e3a1,
|
|
||||||
"teal": #94e2d5,
|
|
||||||
"sky": #89dceb,
|
|
||||||
"sapphire": #74c7ec,
|
|
||||||
"blue": #89b4fa,
|
|
||||||
"lavender": #b4befe,
|
|
||||||
"text": #cdd6f4,
|
|
||||||
"subtext1": #bac2de,
|
|
||||||
"subtext0": #a6adc8,
|
|
||||||
"overlay2": #9399b2,
|
|
||||||
"overlay1": #7f849c,
|
|
||||||
"overlay0": #6c7086,
|
|
||||||
"surface2": #585b70,
|
|
||||||
"surface1": #45475a,
|
|
||||||
"surface0": #313244,
|
|
||||||
"base": #1e1e2e,
|
|
||||||
"mantle": #181825,
|
|
||||||
"crust": #11111b,
|
|
||||||
),
|
|
||||||
);
|
|
||||||
|
|
@ -1,102 +0,0 @@
|
||||||
@use "sass:map";
|
|
||||||
@import "catppuccin";
|
|
||||||
|
|
||||||
@mixin icon {
|
|
||||||
font-family: "Font Awesome 6 Pro Dutone";
|
|
||||||
font-weight: 900;
|
|
||||||
font-size: 22px;
|
|
||||||
}
|
|
||||||
|
|
||||||
$font-family: "";
|
|
||||||
$used-palette: "frappe";
|
|
||||||
$colors: map.get($palette, $used-palette);
|
|
||||||
|
|
||||||
$gradient:
|
|
||||||
"rosewater", "flamingo", "pink", "mauve", "red", "maroon", "peach",
|
|
||||||
"yellow", "green", "teal", "sky";
|
|
||||||
|
|
||||||
@each $name, $color in $colors {
|
|
||||||
.color-#{$name} {
|
|
||||||
color: $color;
|
|
||||||
}
|
|
||||||
|
|
||||||
.bg-#{$name} {
|
|
||||||
background: $color;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@for $i from 1 through length($gradient) {
|
|
||||||
$color: map.get($colors, nth($gradient, $i));
|
|
||||||
|
|
||||||
.gradient-#{$i} {
|
|
||||||
color: $color;
|
|
||||||
}
|
|
||||||
|
|
||||||
.gradient-#{$i}:hover {
|
|
||||||
color: desaturate($color: $color, $amount: 20);
|
|
||||||
}
|
|
||||||
|
|
||||||
.bg-gradient-#{$i} {
|
|
||||||
background: $color;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
* {
|
|
||||||
all: unset;
|
|
||||||
}
|
|
||||||
|
|
||||||
.spraggins {
|
|
||||||
padding: 5px 15px 0;
|
|
||||||
font-family: $font-family;
|
|
||||||
color: map.get($colors, "text");
|
|
||||||
}
|
|
||||||
|
|
||||||
.box {
|
|
||||||
background: map.get($colors, "base");
|
|
||||||
border-radius: 4px;
|
|
||||||
// border: 2px solid $blue;
|
|
||||||
padding: 0 12px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.icon {
|
|
||||||
@include icon;
|
|
||||||
|
|
||||||
&.smol {
|
|
||||||
font-size: 14px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.time {
|
|
||||||
font-size: 18px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.date {
|
|
||||||
font-size: 12px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.workspaceButton {
|
|
||||||
&.active {
|
|
||||||
color: white;
|
|
||||||
}
|
|
||||||
|
|
||||||
&.empty {
|
|
||||||
font-weight: 300;
|
|
||||||
opacity: 0.3;
|
|
||||||
}
|
|
||||||
|
|
||||||
&.empty.active {
|
|
||||||
opacity: 0.6;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.sys {
|
|
||||||
padding: 8px 0;
|
|
||||||
|
|
||||||
label {
|
|
||||||
padding: 0 8px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.icon {
|
|
||||||
font-size: 19px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,96 +0,0 @@
|
||||||
(include './variables.yuck')
|
|
||||||
|
|
||||||
(defwidget workspaceButton [workspace]
|
|
||||||
(box
|
|
||||||
(eventbox
|
|
||||||
:class "workspaceButton icon gradient-${workspace.id} ${workspace.id == activeWorkspace ? 'active' : ''} ${workspace.windows == 0 ? 'empty' : ''}"
|
|
||||||
:cursor "pointer"
|
|
||||||
; :visible {workspace.windows != 0 || workspace.id == activeWorkspace}
|
|
||||||
"${workspace.name}")))
|
|
||||||
|
|
||||||
(defwidget applauncher []
|
|
||||||
(box
|
|
||||||
(eventbox
|
|
||||||
:class "icon gradient-10 applauncher"
|
|
||||||
:cursor "pointer"
|
|
||||||
:onclick "tofi-drun | xargs hyprctl dispatch exec --"
|
|
||||||
"\\ue196")))
|
|
||||||
|
|
||||||
(defwidget left []
|
|
||||||
(box :class "box" :space-evenly false
|
|
||||||
(applauncher)
|
|
||||||
(box :style "padding-left: 25px;" :spacing 8
|
|
||||||
(for space in workspaces
|
|
||||||
(workspaceButton :workspace space)))))
|
|
||||||
|
|
||||||
(defwidget sysinfo []
|
|
||||||
(box :space-evenly false :class "sys"
|
|
||||||
(children)))
|
|
||||||
|
|
||||||
(defwidget system []
|
|
||||||
(box :space-evenly false :spacing 8
|
|
||||||
(sysinfo
|
|
||||||
(label
|
|
||||||
:class "icon intern bg-teal color-crust"
|
|
||||||
:text "\\uf2db")
|
|
||||||
(box :class "bg-crust color-text" :space-evenly false
|
|
||||||
"${round(EWW_CPU.avg, 2)} %"
|
|
||||||
(label
|
|
||||||
:class "color-overlay0"
|
|
||||||
:style "padding: 0;"
|
|
||||||
:text " |")
|
|
||||||
"${temps.cpu}"))
|
|
||||||
(sysinfo
|
|
||||||
(label
|
|
||||||
:class "icon intern bg-maroon color-base"
|
|
||||||
:text "\\uf538")
|
|
||||||
(label
|
|
||||||
:class "bg-surface0 color-text"
|
|
||||||
:text "${memory.used}"))
|
|
||||||
(sysinfo
|
|
||||||
(label
|
|
||||||
:class "icon intern bg-surface1 color-blue"
|
|
||||||
:text "\\uf0a0")
|
|
||||||
(label
|
|
||||||
:class "bg-surface2 color-text"
|
|
||||||
:text "${round(EWW_DISK["/"].used_perc, 2)} %"))
|
|
||||||
(sysinfo
|
|
||||||
(label :class "icon color-overlay2" :text "\\uf1b2")
|
|
||||||
(label
|
|
||||||
:class "color-overlay2"
|
|
||||||
:style "padding-left: 0;"
|
|
||||||
:text "${pkgCount}"))))
|
|
||||||
|
|
||||||
(defwidget right []
|
|
||||||
(box :spacing 20 :halign "end" :hexpand true :space-evenly false
|
|
||||||
(box :class "box"
|
|
||||||
(system))
|
|
||||||
(box :class "box time" :space-evenly false :spacing 10
|
|
||||||
(label
|
|
||||||
:valign "center"
|
|
||||||
:class "icon gradient-5"
|
|
||||||
:text "\\uf017")
|
|
||||||
(label
|
|
||||||
:valign "center"
|
|
||||||
:text "${time.hour}:${time.min}")
|
|
||||||
(label
|
|
||||||
:valign "center"
|
|
||||||
:class "date"
|
|
||||||
:text "${date}"))))
|
|
||||||
|
|
||||||
(defwidget layout []
|
|
||||||
(box
|
|
||||||
:class "layout"
|
|
||||||
:orientation "horizontal"
|
|
||||||
:space-evenly false
|
|
||||||
(left)
|
|
||||||
(right)))
|
|
||||||
|
|
||||||
(defwindow spraggins
|
|
||||||
:monitor 1
|
|
||||||
:stacking "bg"
|
|
||||||
:windowtype "normal"
|
|
||||||
:wm-ignore true
|
|
||||||
:exclusive true
|
|
||||||
:geometry (geometry :width "100%" :height "45")
|
|
||||||
(layout))
|
|
||||||
|
|
@ -1,23 +0,0 @@
|
||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
MONITOR=$1
|
|
||||||
|
|
||||||
if [ -z "$MONITOR" ]; then
|
|
||||||
echo "Usage: $0 <monitor>"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
PREFIX="$MONITOR"
|
|
||||||
if [ "$MONITOR" == 0 ]; then
|
|
||||||
PREFIX=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Output the currently selected workspace
|
|
||||||
workspace () {
|
|
||||||
hyprctl monitors -j | jq ".[] | select(.id == $MONITOR) | .activeWorkspace.id"
|
|
||||||
}
|
|
||||||
workspace
|
|
||||||
|
|
||||||
socat -u UNIX-CONNECT:$XDG_RUNTIME_DIR/hypr/$HYPRLAND_INSTANCE_SIGNATURE/.socket2.sock - | while read -r line; do
|
|
||||||
workspace
|
|
||||||
done
|
|
||||||
|
|
@ -1,21 +0,0 @@
|
||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
MONITOR=$1
|
|
||||||
|
|
||||||
if [ -z "$MONITOR" ]; then
|
|
||||||
echo "Usage: $0 <monitor>"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
KANJI='["一","二","三","四","五","六","七","八","九"]'
|
|
||||||
ICONS='["\\ue0ee","\\ue0ef","\\ue0f0","\\ue0f1","\\ue0f2","\\ue0f3","\\ue0f4","\\ue0f5","\\ue0f6"]'
|
|
||||||
|
|
||||||
spaces () {
|
|
||||||
WORKSPACE_WINDOWS=$(hyprctl workspaces -j | jq "[.[] | select(.monitorID == $MONITOR)] | map({ key: (.id | tostring), value: .windows }) | from_entries")
|
|
||||||
seq 1 9 | jq --argjson windows "${WORKSPACE_WINDOWS}" --argjson kanji "${ICONS}" --slurp -Mc 'map({id: ., name: ($kanji[. - 1]), windows: ($windows[. | tostring]//0)})'
|
|
||||||
}
|
|
||||||
spaces
|
|
||||||
|
|
||||||
socat -u UNIX-CONNECT:$XDG_RUNTIME_DIR/hypr/$HYPRLAND_INSTANCE_SIGNATURE/.socket2.sock - | while read -r line; do
|
|
||||||
spaces
|
|
||||||
done
|
|
||||||
|
|
@ -1,19 +0,0 @@
|
||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
total="$(free -m | grep Mem | awk '{ print $2 }')"
|
|
||||||
used="$(free -m | grep Mem | awk '{ print $3 }')"
|
|
||||||
free=$(expr $total - $used)
|
|
||||||
|
|
||||||
total_human=$(numfmt --to=iec --format="%.1f" $(( $total * 1000 * 1000 )))
|
|
||||||
used_human=$(numfmt --to=iec --format="%.1f" $(( $used * 1000 * 1000 )))
|
|
||||||
free_human=$(numfmt --to=iec --format="%.1f" $(( $free * 1000 * 1000 )))
|
|
||||||
|
|
||||||
if [ "$1" = "total" ]; then
|
|
||||||
echo $total_human
|
|
||||||
elif [ "$1" = "used" ]; then
|
|
||||||
echo $used_human
|
|
||||||
elif [ "$1" = "free" ]; then
|
|
||||||
echo $free_human
|
|
||||||
elif [ "$1" = "json" ]; then
|
|
||||||
jo total=$total_human used=$used_human free=$free_human
|
|
||||||
fi
|
|
||||||
|
|
@ -1,6 +0,0 @@
|
||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
global_pkgs=$(cat /etc/current-system-packages | wc -l)
|
|
||||||
hm_pkgs=$(cat /home/christopher/.cache/current-home-manager-packages | wc -l)
|
|
||||||
|
|
||||||
echo $(( $global_pkgs + $hm_pkgs ))
|
|
||||||
|
|
@ -1,5 +0,0 @@
|
||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
cpu=$(sensors | grep 'Tctl' | head -n 1 | awk '{ print $2 }' | sed 's/\+\([0-9]\+\.\?[0-9]*\)/\1 /')
|
|
||||||
|
|
||||||
jo cpu="$cpu"
|
|
||||||
|
|
@ -1,20 +0,0 @@
|
||||||
(defpoll time :interval "5s" :initial `{"hour":"00","min":"00"}`
|
|
||||||
`date +'{"hour":"%H","min":"%M"}'`)
|
|
||||||
|
|
||||||
(defpoll date :interval "5s" :initial ``
|
|
||||||
`date +'%a, %b %d'`)
|
|
||||||
|
|
||||||
(defpoll pkgCount :interval "1m" :initial `0`
|
|
||||||
`./scripts/pkgs`)
|
|
||||||
|
|
||||||
(defpoll temps :interval "2s" :initial "{}"
|
|
||||||
`./scripts/temps`)
|
|
||||||
|
|
||||||
(defpoll memory :interval "2s" :initial "{}"
|
|
||||||
`./scripts/memory json`)
|
|
||||||
|
|
||||||
(deflisten workspaces :initial "[{}]"
|
|
||||||
`./scripts/get-workspaces 0`)
|
|
||||||
|
|
||||||
(deflisten activeWorkspace
|
|
||||||
`./scripts/get-active-workspace 0`)
|
|
||||||
|
|
@ -1,249 +0,0 @@
|
||||||
{
|
|
||||||
pkgs,
|
|
||||||
inputs,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
inputPkg = inputName: pluginName: inputs.${inputName}.packages.${pkgs.system}.${pluginName};
|
|
||||||
in {
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
wl-clipboard
|
|
||||||
cliphist # Wayland clipboard
|
|
||||||
hyprpicker # Color picker
|
|
||||||
hyprpaper # Wallpaper utility
|
|
||||||
hyprlandPlugins.borders-plus-plus
|
|
||||||
];
|
|
||||||
|
|
||||||
services.hyprpaper = {
|
|
||||||
enable = true;
|
|
||||||
settings.splash = false;
|
|
||||||
};
|
|
||||||
|
|
||||||
wayland.windowManager.hyprland = {
|
|
||||||
enable = true;
|
|
||||||
# systemd.variables = ["--all"];
|
|
||||||
package = inputPkg "hyprland" "hyprland";
|
|
||||||
|
|
||||||
plugins = [
|
|
||||||
(inputPkg "split-monitor-workspaces" "split-monitor-workspaces")
|
|
||||||
# (inputPkg "hypridle" "hypridle")
|
|
||||||
];
|
|
||||||
|
|
||||||
extraConfig = ''
|
|
||||||
# See https://wiki.hyprland.org/Configuring/Monitors
|
|
||||||
monitor=desc:Samsung Electric Company C49HG9x HTRJ901269, 3840x1080, 0x0, 1 # Left
|
|
||||||
monitor=desc:Ancor Communications Inc ASUS VE278 C5LMTF047320, 1920x1080, 3840x-610, 1, transform, 1 # Right
|
|
||||||
|
|
||||||
# Any other random monitor
|
|
||||||
monitor=,preferred,auto,1
|
|
||||||
|
|
||||||
# Gaps for eww
|
|
||||||
monitor=DP-3,addreserved,40,0,0,0
|
|
||||||
# monitor=,addreserved,40,0,0,0
|
|
||||||
|
|
||||||
# Single tiled windows in a workspace on my main monitor
|
|
||||||
# should be displayed with a padding on both sides
|
|
||||||
workspace=w[t1] m[1],gapsout:15 840 15 840
|
|
||||||
|
|
||||||
# See https://wiki.hyprland.org/Configuring/Keywords/ for more
|
|
||||||
|
|
||||||
exec-once = ibus-daemon -drxR
|
|
||||||
# exec-once = hyprpaper & # Wallpaper util
|
|
||||||
exec-once = swaync & # Notification center
|
|
||||||
exec-once = udiskie # Automatic mounting of USBs
|
|
||||||
# exec-once = eval $(gnome-keyring-daemon --start --components=pkcs11,secrets,ssh) &
|
|
||||||
exec-once = sleep 1; ${pkgs._elements.select-wallpapers}/bin/select-wallpapers
|
|
||||||
exec-once = eww daemon
|
|
||||||
exec-once = eww open spraggins
|
|
||||||
exec-once = sleep 10; eww open spraggins # Open again after a while because the wallpaper will display on top once that is done
|
|
||||||
exec-once = wl-paste --type text --watch cliphist store
|
|
||||||
exec-once = wl-paste --type image --watch cliphist store
|
|
||||||
|
|
||||||
# Source a file (multi-file configs)
|
|
||||||
# source = ~/.config/hypr/myColors.conf
|
|
||||||
|
|
||||||
# Some default env vars.
|
|
||||||
env = XCURSOR_SIZE,28
|
|
||||||
env = HYPRCURSOR_THEME,rose-pine-hyprcursor
|
|
||||||
env = HYPRCURSOR_SIZE,28
|
|
||||||
# env = WLR_NO_HARDWARE_CURSORS,1
|
|
||||||
env = NIXOS_OZONE_WL,1
|
|
||||||
env = LIBVA_DRIVER_NAME,radeonsi
|
|
||||||
env = __GLX_VENDOR_LIBRARY_NAME,radeonsi
|
|
||||||
env = NVD_BACKEND,direct
|
|
||||||
|
|
||||||
debug {
|
|
||||||
disable_logs = false
|
|
||||||
}
|
|
||||||
|
|
||||||
# For all categories, see https://wiki.hyprland.org/Configuring/Variables/
|
|
||||||
input {
|
|
||||||
kb_layout = us
|
|
||||||
kb_variant = intl
|
|
||||||
kb_model =
|
|
||||||
kb_options =
|
|
||||||
kb_rules =
|
|
||||||
|
|
||||||
follow_mouse = 2
|
|
||||||
|
|
||||||
touchpad {
|
|
||||||
natural_scroll = no
|
|
||||||
}
|
|
||||||
|
|
||||||
sensitivity = 0 # -1.0 - 1.0, 0 means no modification.
|
|
||||||
}
|
|
||||||
|
|
||||||
cursor {
|
|
||||||
no_hardware_cursors = true
|
|
||||||
}
|
|
||||||
|
|
||||||
general {
|
|
||||||
# See https://wiki.hyprland.org/Configuring/Variables/ for more
|
|
||||||
|
|
||||||
gaps_in = 8
|
|
||||||
gaps_out = 15
|
|
||||||
border_size = 3
|
|
||||||
col.active_border = rgba(bf616aee) rgba(ebcb8bee) 45deg
|
|
||||||
col.inactive_border = rgba(5e81acaa)
|
|
||||||
|
|
||||||
layout = dwindle
|
|
||||||
}
|
|
||||||
|
|
||||||
decoration {
|
|
||||||
# See https://wiki.hyprland.org/Configuring/Variables/ for more
|
|
||||||
|
|
||||||
rounding = 5
|
|
||||||
blur {
|
|
||||||
enabled = true
|
|
||||||
xray = true
|
|
||||||
size = 4
|
|
||||||
noise = 0.3
|
|
||||||
passes = 2
|
|
||||||
}
|
|
||||||
|
|
||||||
shadow {
|
|
||||||
enabled = true
|
|
||||||
range = 4
|
|
||||||
render_power = 3
|
|
||||||
color = 0xee1a1a1a
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
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
|
|
||||||
|
|
||||||
animation = windows, 1, 7, myBezier
|
|
||||||
animation = windowsOut, 1, 7, default, popin 80%
|
|
||||||
animation = border, 1, 10, default
|
|
||||||
animation = borderangle, 1, 8, default
|
|
||||||
animation = fade, 1, 7, default
|
|
||||||
animation = workspaces, 1, 6, default
|
|
||||||
}
|
|
||||||
|
|
||||||
plugin {
|
|
||||||
split-monitor-workspaces {
|
|
||||||
count = 10
|
|
||||||
}
|
|
||||||
|
|
||||||
borders-plus-plus {
|
|
||||||
add_borders = 3
|
|
||||||
|
|
||||||
col.border_1 = rgb(000000)
|
|
||||||
col.border_2 = rgba(5e81acaa)
|
|
||||||
col.border_3 = rgb(000000)
|
|
||||||
|
|
||||||
border_size_1 = 1
|
|
||||||
border_size_2 = 3
|
|
||||||
border_size_3 = 1
|
|
||||||
|
|
||||||
natural_rounding = yes
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
dwindle {
|
|
||||||
# See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more
|
|
||||||
pseudotile = yes # master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
|
|
||||||
preserve_split = yes # you probably want this
|
|
||||||
}
|
|
||||||
|
|
||||||
master {
|
|
||||||
# See https://wiki.hyprland.org/Configuring/Master-Layout/ for more
|
|
||||||
# new_is_master = true
|
|
||||||
slave_count_for_center_master = 2
|
|
||||||
orientation = center
|
|
||||||
}
|
|
||||||
|
|
||||||
misc {
|
|
||||||
disable_hyprland_logo = true
|
|
||||||
disable_splash_rendering = true
|
|
||||||
}
|
|
||||||
|
|
||||||
windowrule = float, class:(.*zeal.*)
|
|
||||||
windowrule = center 1, class:(.*zeal.*)
|
|
||||||
windowrule = size 50% 80%, class:(.*zeal.*)
|
|
||||||
windowrule = minsize 1400 500, class:(.*zeal.*)
|
|
||||||
windowrule = opacity 0.9, class:(.*zeal.*)
|
|
||||||
|
|
||||||
windowrule = float, class:(.*speedcrunch.*)
|
|
||||||
windowrule = center 1, class:(.*speedcrunch.*)
|
|
||||||
windowrule = size 30% 60%, class:(.*speedcrunch.*)
|
|
||||||
windowrule = opacity 0.9, class:(.*speedcrunch.*)
|
|
||||||
|
|
||||||
windowrule = float, title:DevTools
|
|
||||||
windowrule = opacity 0.9, class:(.*kitty.*)
|
|
||||||
|
|
||||||
windowrule=nofocus,class:^jetbrains-(?!toolbox),floating:1,title:^win\d+$
|
|
||||||
|
|
||||||
# See https://wiki.hyprland.org/Configuring/Keywords/ for more
|
|
||||||
$mainMod = SUPER
|
|
||||||
|
|
||||||
# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more
|
|
||||||
bind = $mainMod, C, exec, ${pkgs._elements.spawn-term}/bin/spawn-term
|
|
||||||
bind = $mainMod, W, killactive,
|
|
||||||
# bind = $mainMod, M, exit,
|
|
||||||
bind = $mainMod, M, fullscreen, 1
|
|
||||||
bind = $mainMod, E, exec, thunar
|
|
||||||
bind = $mainMod, V, togglefloating,
|
|
||||||
bind = $mainMod, G, exec, ${pkgs._elements.tofi-hg}/bin/tofi-hg
|
|
||||||
bind = $mainMod, D, exec, ${pkgs._elements.quick-zeal}/bin/quick-zeal
|
|
||||||
bind = $mainMod, space, exec, tofi-drun | xargs hyprctl dispatch exec --
|
|
||||||
bind = $mainMod, P, pseudo, # dwindle
|
|
||||||
bind = $mainMod, J, 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
|
|
||||||
|
|
||||||
# Switch workspaces with mainMod + [0-9]
|
|
||||||
bind = $mainMod, 1, split-workspace, 1
|
|
||||||
bind = $mainMod, 2, split-workspace, 2
|
|
||||||
bind = $mainMod, 3, split-workspace, 3
|
|
||||||
bind = $mainMod, 4, split-workspace, 4
|
|
||||||
bind = $mainMod, 5, split-workspace, 5
|
|
||||||
bind = $mainMod, 6, split-workspace, 6
|
|
||||||
bind = $mainMod, 7, split-workspace, 7
|
|
||||||
bind = $mainMod, 8, split-workspace, 8
|
|
||||||
bind = $mainMod, 9, split-workspace, 9
|
|
||||||
|
|
||||||
# Move active window to a workspace with mainMod + SHIFT + [0-9]
|
|
||||||
bind = $mainMod SHIFT, 1, split-movetoworkspacesilent, 1
|
|
||||||
bind = $mainMod SHIFT, 2, split-movetoworkspacesilent, 2
|
|
||||||
bind = $mainMod SHIFT, 3, split-movetoworkspacesilent, 3
|
|
||||||
bind = $mainMod SHIFT, 4, split-movetoworkspacesilent, 4
|
|
||||||
bind = $mainMod SHIFT, 5, split-movetoworkspacesilent, 5
|
|
||||||
bind = $mainMod SHIFT, 6, split-movetoworkspacesilent, 6
|
|
||||||
bind = $mainMod SHIFT, 7, split-movetoworkspacesilent, 7
|
|
||||||
bind = $mainMod SHIFT, 8, split-movetoworkspacesilent, 8
|
|
||||||
bind = $mainMod SHIFT, 9, split-movetoworkspacesilent, 9
|
|
||||||
|
|
||||||
# Move/resize windows with mainMod + LMB/RMB and dragging
|
|
||||||
bindm = $mainMod, mouse:272, movewindow
|
|
||||||
bindm = $mainMod, mouse:273, resizewindow
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -41,7 +41,6 @@
|
||||||
tofi-hg
|
tofi-hg
|
||||||
open-url
|
open-url
|
||||||
generate-wallpaper
|
generate-wallpaper
|
||||||
select-wallpapers
|
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
{pkgs, ...}: {
|
{pkgs, ...}: {
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
firefox
|
firefox
|
||||||
vivaldi
|
|
||||||
];
|
];
|
||||||
|
|
||||||
xdg.mimeApps = {
|
xdg.mimeApps = {
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,8 @@
|
||||||
{pkgs, ...}: {
|
{
|
||||||
|
pkgs,
|
||||||
|
inputs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
gnupg
|
gnupg
|
||||||
unzip
|
unzip
|
||||||
|
|
@ -9,6 +13,8 @@
|
||||||
solaar # Logitech mouse driver
|
solaar # Logitech mouse driver
|
||||||
btop # Better resource monitor
|
btop # Better resource monitor
|
||||||
bottom # System resource monitor
|
bottom # System resource monitor
|
||||||
|
grim # Screenshots
|
||||||
|
slurp # Region selection
|
||||||
|
|
||||||
# GUI
|
# GUI
|
||||||
vesktop # Discord client
|
vesktop # Discord client
|
||||||
|
|
@ -19,12 +25,14 @@
|
||||||
filezilla # FTP Client
|
filezilla # FTP Client
|
||||||
orca-slicer # Bambu Lab Slicer + Control
|
orca-slicer # Bambu Lab Slicer + Control
|
||||||
krita # Drawing software
|
krita # Drawing software
|
||||||
|
inputs.affinity-nix.packages.${pkgs.system}.v3 # Affinity
|
||||||
mochi # SRS flashcards
|
mochi # SRS flashcards
|
||||||
thunderbird # Email client
|
thunderbird # Email client
|
||||||
speedcrunch # GUI calculator app
|
speedcrunch # GUI calculator app
|
||||||
naps2 # Scanning
|
naps2 # Scanning
|
||||||
vcv-rack # Eurorack simulator
|
vcv-rack # Eurorack simulator
|
||||||
davinci-resolve # Video editor
|
davinci-resolve # Video editor
|
||||||
|
cider-2 # Apple music player
|
||||||
|
|
||||||
feh # Image viewer
|
feh # Image viewer
|
||||||
xarchiver # Archive viewer/extractor
|
xarchiver # Archive viewer/extractor
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,7 @@
|
||||||
];
|
];
|
||||||
})
|
})
|
||||||
|
|
||||||
|
gamescope
|
||||||
gamemode # performance mode
|
gamemode # performance mode
|
||||||
mangohud # performance overlays
|
mangohud # performance overlays
|
||||||
alvr
|
alvr
|
||||||
|
|
|
||||||
|
|
@ -14,6 +14,10 @@
|
||||||
keep-outputs = true;
|
keep-outputs = true;
|
||||||
|
|
||||||
trusted-users = ["root" "@wheel"];
|
trusted-users = ["root" "@wheel"];
|
||||||
|
|
||||||
|
substituters = [
|
||||||
|
"https://cache.nixos.org/"
|
||||||
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
nixpkgs = {
|
nixpkgs = {
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,8 @@ in {
|
||||||
./programs
|
./programs
|
||||||
./shell/aliases.nix
|
./shell/aliases.nix
|
||||||
./shell/prompt.nix
|
./shell/prompt.nix
|
||||||
# ./shell/nu
|
./shell/nu
|
||||||
|
./shell/fish
|
||||||
];
|
];
|
||||||
|
|
||||||
# add environment variables
|
# add environment variables
|
||||||
|
|
|
||||||
35
modules/home/common/terminal/shell/fish/default.nix
Normal file
35
modules/home/common/terminal/shell/fish/default.nix
Normal file
|
|
@ -0,0 +1,35 @@
|
||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
programs.fish = {
|
||||||
|
enable = true;
|
||||||
|
shellAliases = config.home.shellAliases;
|
||||||
|
};
|
||||||
|
|
||||||
|
# config = ''
|
||||||
|
# export PATH="$HOME/code/hausgold/snippets/bin:$PATH"
|
||||||
|
# export PATH="$HOME/.bun/bin:$HOME/.npm/bin:$PATH"
|
||||||
|
|
||||||
|
# art()
|
||||||
|
# {
|
||||||
|
# if [ -f "./vendor/bin/sail" ];
|
||||||
|
# then
|
||||||
|
# ./vendor/bin/sail artisan "$@"
|
||||||
|
# else
|
||||||
|
# php artisan "$@"
|
||||||
|
# fi
|
||||||
|
# }
|
||||||
|
|
||||||
|
# sail()
|
||||||
|
# {
|
||||||
|
# if [ -f "./vendor/bin/sail" ];
|
||||||
|
# then
|
||||||
|
# ./vendor/bin/sail "$@"
|
||||||
|
# else
|
||||||
|
# echo "Sail is not installed. Run 'composer require laravel/sail' to install it."
|
||||||
|
# fi
|
||||||
|
# }
|
||||||
|
# '';
|
||||||
|
}
|
||||||
|
|
@ -38,7 +38,7 @@
|
||||||
## alias fixer start https://www.nushell.sh/cookbook/external_completers.html#alias-completions
|
## alias fixer start https://www.nushell.sh/cookbook/external_completers.html#alias-completions
|
||||||
let expanded_alias = scope aliases
|
let expanded_alias = scope aliases
|
||||||
| where name == $spans.0
|
| where name == $spans.0
|
||||||
| get -o 0.expansion
|
| get -i 0.expansion
|
||||||
|
|
||||||
let spans = if $expanded_alias != null {
|
let spans = if $expanded_alias != null {
|
||||||
$spans
|
$spans
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@ in {
|
||||||
programs.oh-my-posh = {
|
programs.oh-my-posh = {
|
||||||
enable = true;
|
enable = true;
|
||||||
enableNushellIntegration = true;
|
enableNushellIntegration = true;
|
||||||
enableZshIntegration = true;
|
enableFishIntegration = true;
|
||||||
|
|
||||||
# Original settings taken from `catppuccin_frappe`, and adjusted to my
|
# Original settings taken from `catppuccin_frappe`, and adjusted to my
|
||||||
# likings and usage.
|
# likings and usage.
|
||||||
|
|
|
||||||
|
|
@ -1,39 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
home.packages = [pkgs.antigen];
|
|
||||||
|
|
||||||
# Antigen (Zsh Plugin Manager)
|
|
||||||
home.file.".antigenrc".text = ''
|
|
||||||
# Load oh-my-zsh
|
|
||||||
antigen use oh-my-zsh
|
|
||||||
|
|
||||||
# Load bundles from the default oh-my-zsh repo
|
|
||||||
antigen bundle git
|
|
||||||
antigen bundle docker
|
|
||||||
antigen bundle command-not-found
|
|
||||||
# antigen bundle vi-mode
|
|
||||||
# antigen bundle gh # gh autocompletion
|
|
||||||
# antigen bundle 1password
|
|
||||||
# antigen bundle marlonrichert/zsh-autocomplete@main
|
|
||||||
# antigen bundle supercrabtree/k
|
|
||||||
antigen bundle fzf
|
|
||||||
antigen bundle zoxide
|
|
||||||
antigen bundle safe-paste
|
|
||||||
antigen bundle colored-man-pages
|
|
||||||
antigen bundle zsh-users/zsh-syntax-highlighting
|
|
||||||
antigen bundle zsh-users/zsh-autosuggestions
|
|
||||||
|
|
||||||
# Configure a default theme
|
|
||||||
THEME="https://github.com/caiogondim/bullet-train-oh-my-zsh-theme bullet-train"
|
|
||||||
|
|
||||||
# Enable the configured theme
|
|
||||||
# eval "antigen theme $THEME"
|
|
||||||
# eval "$(starship init zsh)"
|
|
||||||
|
|
||||||
# And we're done
|
|
||||||
antigen apply
|
|
||||||
'';
|
|
||||||
}
|
|
||||||
|
|
@ -1,49 +0,0 @@
|
||||||
{
|
|
||||||
pkgs,
|
|
||||||
config,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
imports = [
|
|
||||||
./antigen.nix
|
|
||||||
];
|
|
||||||
|
|
||||||
programs.zoxide.enableZshIntegration = true;
|
|
||||||
|
|
||||||
programs.zsh = {
|
|
||||||
enable = true;
|
|
||||||
oh-my-zsh.enable = true;
|
|
||||||
|
|
||||||
shellAliases = config.home.shellAliases;
|
|
||||||
|
|
||||||
# Add our own binaries to the PATH variable
|
|
||||||
initContent = ''
|
|
||||||
# Load Antigen as our package manager.
|
|
||||||
# The .antigenrc file is copied via the fixtures.nix
|
|
||||||
source ${pkgs.antigen.outPath}/share/antigen/antigen.zsh
|
|
||||||
antigen init ~/.antigenrc
|
|
||||||
|
|
||||||
export PATH="$HOME/code/hausgold/snippets/bin:$PATH"
|
|
||||||
export PATH="$HOME/.bun/bin:$HOME/.npm/bin:$PATH"
|
|
||||||
|
|
||||||
art()
|
|
||||||
{
|
|
||||||
if [ -f "./vendor/bin/sail" ];
|
|
||||||
then
|
|
||||||
./vendor/bin/sail artisan "$@"
|
|
||||||
else
|
|
||||||
php artisan "$@"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
sail()
|
|
||||||
{
|
|
||||||
if [ -f "./vendor/bin/sail" ];
|
|
||||||
then
|
|
||||||
./vendor/bin/sail "$@"
|
|
||||||
else
|
|
||||||
echo "Sail is not installed. Run 'composer require laravel/sail' to install it."
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -2,15 +2,10 @@
|
||||||
pkgs,
|
pkgs,
|
||||||
config,
|
config,
|
||||||
lib,
|
lib,
|
||||||
inputs,
|
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
with lib; let
|
with lib; let
|
||||||
cfg = config.elements.wm;
|
cfg = config.elements.wm;
|
||||||
tuigreet = "${pkgs.tuigreet}/bin/tuigreet";
|
|
||||||
hyprland-pkg = inputs.hyprland.packages.${pkgs.system}.hyprland;
|
|
||||||
hyprland-portal-pkg = inputs.hyprland.packages.${pkgs.system}.xdg-desktop-portal-hyprland;
|
|
||||||
hyprland-session = "${hyprland-pkg}/share/wayland-sessions";
|
|
||||||
in {
|
in {
|
||||||
options.elements = {
|
options.elements = {
|
||||||
wm = {
|
wm = {
|
||||||
|
|
@ -20,50 +15,38 @@ in {
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
swaynotificationcenter
|
kdePackages.discover
|
||||||
inputs.rose-pine-hyprcursor.packages.${pkgs.system}.default
|
kdePackages.kclock
|
||||||
xwayland-satellite
|
kdePackages.kcharselect
|
||||||
hyprshot
|
kdePackages.kolourpaint
|
||||||
|
kdePackages.ksystemlog
|
||||||
|
wayland-utils
|
||||||
|
wl-clipboard
|
||||||
|
libsForQt5.qtstyleplugin-kvantum
|
||||||
|
# xwayland-satellite
|
||||||
];
|
];
|
||||||
|
|
||||||
programs.hyprland = {
|
services.xserver = {
|
||||||
enable = true;
|
enable = true;
|
||||||
package = hyprland-pkg;
|
|
||||||
portalPackage = hyprland-portal-pkg;
|
# SDDM is broken
|
||||||
|
displayManager.gdm = {
|
||||||
|
enable = true;
|
||||||
|
wayland = true;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
services.desktopManager.plasma6.enable = true;
|
||||||
|
services.displayManager.defaultSession = "plasma";
|
||||||
|
# services.displayManager.sddm.enable = true;
|
||||||
|
# services.displayManager.sddm.wayland.enable = true;
|
||||||
|
# services.displayManager.sddm.wayland.compositor = "kwin";
|
||||||
|
|
||||||
|
# xdg.portal.extraPortals = [pkgs.xdg-desktop-portal-gtk];
|
||||||
|
|
||||||
security = {
|
security = {
|
||||||
polkit.enable = true;
|
polkit.enable = true;
|
||||||
pam.services.swaylock = {};
|
pam.services.swaylock = {};
|
||||||
};
|
};
|
||||||
|
|
||||||
xdg.portal = {
|
|
||||||
config.common.default = ["hyprland"];
|
|
||||||
config.hyprland.default = ["wlr" "gtk"];
|
|
||||||
extraPortals = [
|
|
||||||
pkgs.xdg-desktop-portal-gtk
|
|
||||||
];
|
|
||||||
wlr.enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
services.greetd = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
default_session = {
|
|
||||||
command = "${tuigreet} --asterisks --time --remember --remember-session --sessions ${hyprland-session}";
|
|
||||||
user = "greeter";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
systemd.services.greetd.serviceConfig = {
|
|
||||||
Type = "idle";
|
|
||||||
StandardInput = "tty";
|
|
||||||
StandardOutput = "tty";
|
|
||||||
StandardError = "journal";
|
|
||||||
TTYReset = true;
|
|
||||||
TTYVHangup = true;
|
|
||||||
TTYVTDisallocate = true;
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
4
overlays/unstable/default.nix
Normal file
4
overlays/unstable/default.nix
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
{channels, ...}: final: prev: {
|
||||||
|
# Pull the following packages from unstable instead
|
||||||
|
inherit (channels.unstable) kitty nu fish cider-2;
|
||||||
|
}
|
||||||
|
|
@ -1,5 +1,3 @@
|
||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
# Function to open the default browser with a specified profile
|
# Function to open the default browser with a specified profile
|
||||||
open_browser() {
|
open_browser() {
|
||||||
local profile="$1"
|
local profile="$1"
|
||||||
|
|
@ -24,5 +22,5 @@ if [[ $1 == "https://github.com/hausgold"* ]]; then
|
||||||
open_browser "Work" "$@"
|
open_browser "Work" "$@"
|
||||||
else
|
else
|
||||||
# Otherwise just use the default profile
|
# Otherwise just use the default profile
|
||||||
open_browser "Default" "$@"
|
open_browser "default" "$@"
|
||||||
fi
|
fi
|
||||||
|
|
|
||||||
|
|
@ -1,18 +0,0 @@
|
||||||
{pkgs, ...}:
|
|
||||||
pkgs.writeTextFile rec {
|
|
||||||
name = "select-wallpapers";
|
|
||||||
destination = "/bin/${name}";
|
|
||||||
executable = true;
|
|
||||||
|
|
||||||
text = ''
|
|
||||||
#!/usr/bin/env nu
|
|
||||||
|
|
||||||
let wallpaper_dir = "/home/christopher/Wallpapers"
|
|
||||||
|
|
||||||
let landscape = (ls $"($wallpaper_dir)/Landscape" | shuffle | get name | first)
|
|
||||||
let portrait = (ls $"($wallpaper_dir)/Portrait" | shuffle | get name | first)
|
|
||||||
|
|
||||||
hyprctl hyprpaper reload $"DP-3,($landscape)"
|
|
||||||
hyprctl hyprpaper reload $"DP-1,($portrait)"
|
|
||||||
'';
|
|
||||||
}
|
|
||||||
|
|
@ -1,5 +1,25 @@
|
||||||
{pkgs, ...}:
|
{pkgs, ...}:
|
||||||
pkgs.writeShellApplication {
|
pkgs.writeTextFile rec {
|
||||||
name = "spawn-term";
|
name = "spawn-term";
|
||||||
text = builtins.readFile ./spawn-term;
|
destination = "/bin/${name}";
|
||||||
|
executable = true;
|
||||||
|
|
||||||
|
text = ''
|
||||||
|
#!/usr/bin/env nu
|
||||||
|
|
||||||
|
let focused_window = (niri msg --json windows | from json | where { $in.is_focused == true } | first)
|
||||||
|
|
||||||
|
if ($focused_window | get app_id) == "kitty" {
|
||||||
|
let child_pid = (pgrep -P $"($focused_window | get pid)" | tail -1)
|
||||||
|
if ($child_pid | is-empty) {
|
||||||
|
kitty
|
||||||
|
exit 0
|
||||||
|
}
|
||||||
|
|
||||||
|
let path = ($"/proc/($child_pid)/cwd" | path expand)
|
||||||
|
kitty --directory $path
|
||||||
|
} else {
|
||||||
|
kitty
|
||||||
|
}
|
||||||
|
'';
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,27 +0,0 @@
|
||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
ACTIVE_WINDOW=$(hyprctl activewindow -j )
|
|
||||||
ACTIVE_CLASS=$(echo "$ACTIVE_WINDOW" | jq -r .initialClass)
|
|
||||||
|
|
||||||
if [[ $ACTIVE_CLASS == *"kitty"* ]]
|
|
||||||
then
|
|
||||||
PID=$(echo "$ACTIVE_WINDOW" | jq -r .pid)
|
|
||||||
if [[ "$PID" == "" ]]
|
|
||||||
then
|
|
||||||
kitty
|
|
||||||
fi
|
|
||||||
|
|
||||||
CHILD_PID=$(pgrep -P "$PID" | tail -1)
|
|
||||||
if [[ "$PID" == "" ]]
|
|
||||||
then
|
|
||||||
kitty
|
|
||||||
fi
|
|
||||||
|
|
||||||
pushd "/proc/${CHILD_PID}/cwd"
|
|
||||||
SHELL_CWD=$(pwd -P)
|
|
||||||
popd
|
|
||||||
|
|
||||||
kitty --directory "$SHELL_CWD"
|
|
||||||
else
|
|
||||||
kitty
|
|
||||||
fi
|
|
||||||
|
|
@ -34,8 +34,8 @@ with lib._elements; {
|
||||||
|
|
||||||
qt = {
|
qt = {
|
||||||
enable = true;
|
enable = true;
|
||||||
platformTheme = "gnome";
|
platformTheme = "qt5ct";
|
||||||
style = "adwaita-dark";
|
style = "kvantum";
|
||||||
};
|
};
|
||||||
|
|
||||||
networking = {
|
networking = {
|
||||||
|
|
@ -125,8 +125,6 @@ with lib._elements; {
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
logind.settings.Login.RuntimeDirectorySize = "6G";
|
|
||||||
|
|
||||||
# Smartcard support, necessary for Yubikey logins
|
# Smartcard support, necessary for Yubikey logins
|
||||||
pcscd.enable = true;
|
pcscd.enable = true;
|
||||||
};
|
};
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue