diff --git a/flake.lock b/flake.lock
index f3f151f..1d696c4 100644
--- a/flake.lock
+++ b/flake.lock
@@ -116,6 +116,7 @@
"original": {
"owner": "ymatsiuk",
"repo": "awsvpnclient",
+ "rev": "56ca114e3f7fe4db9d745a0ab8ed70c6bd803a8f",
"type": "github"
}
},
@@ -562,7 +563,7 @@
},
"flake-utils-plus": {
"inputs": {
- "flake-utils": "flake-utils_6"
+ "flake-utils": "flake-utils_7"
},
"locked": {
"lastModified": 1715533576,
@@ -581,7 +582,7 @@
},
"flake-utils-plus_2": {
"inputs": {
- "flake-utils": "flake-utils_7"
+ "flake-utils": "flake-utils_8"
},
"locked": {
"lastModified": 1715533576,
@@ -618,7 +619,25 @@
},
"flake-utils_3": {
"inputs": {
- "systems": "systems_11"
+ "systems": "systems_8"
+ },
+ "locked": {
+ "lastModified": 1705309234,
+ "narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_4": {
+ "inputs": {
+ "systems": "systems_12"
},
"locked": {
"lastModified": 1710146030,
@@ -634,9 +653,9 @@
"type": "github"
}
},
- "flake-utils_4": {
+ "flake-utils_5": {
"inputs": {
- "systems": "systems_12"
+ "systems": "systems_13"
},
"locked": {
"lastModified": 1726560853,
@@ -652,9 +671,9 @@
"type": "github"
}
},
- "flake-utils_5": {
+ "flake-utils_6": {
"inputs": {
- "systems": "systems_13"
+ "systems": "systems_14"
},
"locked": {
"lastModified": 1701680307,
@@ -670,9 +689,9 @@
"type": "github"
}
},
- "flake-utils_6": {
+ "flake-utils_7": {
"inputs": {
- "systems": "systems_16"
+ "systems": "systems_17"
},
"locked": {
"lastModified": 1694529238,
@@ -688,9 +707,9 @@
"type": "github"
}
},
- "flake-utils_7": {
+ "flake-utils_8": {
"inputs": {
- "systems": "systems_17"
+ "systems": "systems_18"
},
"locked": {
"lastModified": 1694529238,
@@ -744,6 +763,23 @@
"url": "https://git.zoeys.cloud/zoey/g2claude.git"
}
},
+ "ghostty": {
+ "inputs": {
+ "nixpkgs-stable": "nixpkgs-stable_2",
+ "nixpkgs-unstable": "nixpkgs-unstable",
+ "zig": "zig"
+ },
+ "locked": {
+ "lastModified": 1734381839,
+ "narHash": "sha256-s3IrXBkJQ8oM+CSzmh3k1lO2EPZ0CqkIgin6LZ07edc=",
+ "path": "/home/zoey/dev/ghostty",
+ "type": "path"
+ },
+ "original": {
+ "path": "/home/zoey/dev/ghostty",
+ "type": "path"
+ }
+ },
"git-hooks": {
"inputs": {
"flake-compat": "flake-compat_4",
@@ -966,7 +1002,7 @@
"nixpkgs": [
"nixpkgs"
],
- "systems": "systems_8"
+ "systems": "systems_9"
},
"locked": {
"lastModified": 1731958956,
@@ -994,7 +1030,7 @@
"hyprwayland-scanner": "hyprwayland-scanner",
"nixpkgs": "nixpkgs_8",
"pre-commit-hooks": "pre-commit-hooks",
- "systems": "systems_9",
+ "systems": "systems_10",
"xdph": "xdph"
},
"locked": {
@@ -1208,7 +1244,7 @@
"nixpkgs"
],
"rust-overlay": "rust-overlay_2",
- "systems": "systems_10",
+ "systems": "systems_11",
"treefmt-nix": "treefmt-nix_2"
},
"locked": {
@@ -1230,7 +1266,7 @@
"crane": "crane_3",
"flake-compat": "flake-compat_2",
"flake-parts": "flake-parts_4",
- "flake-utils": "flake-utils_3",
+ "flake-utils": "flake-utils_4",
"nixpkgs": [
"nixpkgs"
],
@@ -1256,7 +1292,7 @@
"inputs": {
"flake-parts": "flake-parts_9",
"nixpkgs": "nixpkgs_17",
- "systems": "systems_19"
+ "systems": "systems_20"
},
"locked": {
"lastModified": 1727126932,
@@ -1288,7 +1324,7 @@
},
"lix-module": {
"inputs": {
- "flake-utils": "flake-utils_4",
+ "flake-utils": "flake-utils_5",
"flakey-profile": "flakey-profile",
"lix": "lix",
"nixpkgs": [
@@ -1385,11 +1421,12 @@
},
"nixpkgs": {
"locked": {
- "lastModified": 1702830618,
- "narHash": "sha256-lvhwIvRwhOLgzbRuYkqHy4M5cQHYs4ktL6/hyuBS6II=",
- "path": "/nix/store/fn4i255gjsbqhza45ih8mgxgx47zan8i-source",
- "rev": "91a00709aebb3602f172a0bf47ba1ef013e34835",
- "type": "path"
+ "lastModified": 1734424634,
+ "narHash": "sha256-cHar1vqHOOyC7f1+tVycPoWTfKIaqkoe1Q6TnKzuti4=",
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "d3c42f187194c26d9f0309a8ecc469d6c878ce33",
+ "type": "github"
},
"original": {
"id": "nixpkgs",
@@ -1473,6 +1510,22 @@
}
},
"nixpkgs-stable_2": {
+ "locked": {
+ "lastModified": 1733423277,
+ "narHash": "sha256-TxabjxEgkNbCGFRHgM/b9yZWlBj60gUOUnRT/wbVQR8=",
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "e36963a147267afc055f7cf65225958633e536bf",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nixos",
+ "ref": "release-24.11",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs-stable_3": {
"locked": {
"lastModified": 1730741070,
"narHash": "sha256-edm8WG19kWozJ/GqyYx2VjW99EdhjKwbY3ZwdlPAAlo=",
@@ -1488,7 +1541,7 @@
"type": "github"
}
},
- "nixpkgs-stable_3": {
+ "nixpkgs-stable_4": {
"locked": {
"lastModified": 1710695816,
"narHash": "sha256-3Eh7fhEID17pv9ZxrPwCLfqXnYP006RKzSs0JptsN84=",
@@ -1504,13 +1557,29 @@
"type": "github"
}
},
- "nixpkgs-unstable": {
+ "nixpkgs-stable_5": {
"locked": {
- "lastModified": 1734126203,
- "narHash": "sha256-0XovF7BYP50rTD2v4r55tR5MuBLet7q4xIz6Rgh3BBU=",
+ "lastModified": 1734390051,
+ "narHash": "sha256-FKUVv1OuPHgQaBj7X9syCok12itCaLxk3KLhWmK7iAs=",
"owner": "nixos",
"repo": "nixpkgs",
- "rev": "71a6392e367b08525ee710a93af2e80083b5b3e2",
+ "rev": "03b200fa3d4c37475456bacce29e29ed698c247a",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nixos",
+ "ref": "release-24.11",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs-unstable": {
+ "locked": {
+ "lastModified": 1733229606,
+ "narHash": "sha256-FLYY5M0rpa5C2QAE3CKLYAM6TwbKicdRK6qNrSHlNrE=",
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "566e53c2ad750c84f6d31f9ccb9d00f823165550",
"type": "github"
},
"original": {
@@ -1807,7 +1876,7 @@
},
"pnpm2nix_2": {
"inputs": {
- "flake-utils": "flake-utils_5",
+ "flake-utils": "flake-utils_6",
"nixpkgs": "nixpkgs_13"
},
"locked": {
@@ -1832,7 +1901,7 @@
"hyprland",
"nixpkgs"
],
- "nixpkgs-stable": "nixpkgs-stable_2"
+ "nixpkgs-stable": "nixpkgs-stable_3"
},
"locked": {
"lastModified": 1734279981,
@@ -1859,7 +1928,7 @@
"lanzaboote",
"nixpkgs"
],
- "nixpkgs-stable": "nixpkgs-stable_3"
+ "nixpkgs-stable": "nixpkgs-stable_4"
},
"locked": {
"lastModified": 1717664902,
@@ -1893,7 +1962,7 @@
"resume": {
"inputs": {
"nixpkgs": "nixpkgs_14",
- "systems": "systems_14"
+ "systems": "systems_15"
},
"locked": {
"lastModified": 1732423120,
@@ -1916,7 +1985,7 @@
"nixpkgs"
],
"rust-overlay": "rust-overlay_4",
- "systems": "systems_15"
+ "systems": "systems_16"
},
"locked": {
"lastModified": 1734366706,
@@ -1942,6 +2011,7 @@
"catppuccin": "catppuccin",
"emacs-overlay": "emacs-overlay",
"g2claude": "g2claude",
+ "ghostty": "ghostty",
"home-manager": "home-manager_2",
"hypridle": "hypridle",
"hyprland": "hyprland",
@@ -1951,7 +2021,7 @@
"neovim-nightly-overlay": "neovim-nightly-overlay",
"nixos-generators": "nixos-generators",
"nixpkgs": "nixpkgs_12",
- "nixpkgs-unstable": "nixpkgs-unstable",
+ "nixpkgs-stable": "nixpkgs-stable_5",
"pnpm2nix": "pnpm2nix_2",
"resume": "resume",
"rio-term": "rio-term",
@@ -1959,7 +2029,7 @@
"snowfall-lib": "snowfall-lib",
"solaar": "solaar",
"spicetify-nix": "spicetify-nix",
- "systems": "systems_18",
+ "systems": "systems_19",
"waybar": "waybar",
"zen-browser": "zen-browser",
"zoeycomputer": "zoeycomputer"
@@ -2171,16 +2241,16 @@
},
"systems_10": {
"locked": {
- "lastModified": 1681028828,
- "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
+ "lastModified": 1689347949,
+ "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=",
"owner": "nix-systems",
- "repo": "default",
- "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
+ "repo": "default-linux",
+ "rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68",
"type": "github"
},
"original": {
"owner": "nix-systems",
- "repo": "default",
+ "repo": "default-linux",
"type": "github"
}
},
@@ -2245,7 +2315,6 @@
}
},
"systems_15": {
- "flake": false,
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
@@ -2261,6 +2330,7 @@
}
},
"systems_16": {
+ "flake": false,
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
@@ -2350,6 +2420,21 @@
"type": "github"
}
},
+ "systems_21": {
+ "locked": {
+ "lastModified": 1681028828,
+ "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
+ "owner": "nix-systems",
+ "repo": "default",
+ "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nix-systems",
+ "repo": "default",
+ "type": "github"
+ }
+ },
"systems_3": {
"locked": {
"lastModified": 1689347949,
@@ -2427,16 +2512,16 @@
},
"systems_8": {
"locked": {
- "lastModified": 1689347949,
- "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=",
+ "lastModified": 1681028828,
+ "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
- "repo": "default-linux",
- "rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68",
+ "repo": "default",
+ "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
- "repo": "default-linux",
+ "repo": "default",
"type": "github"
}
},
@@ -2592,13 +2677,38 @@
"type": "github"
}
},
+ "zig": {
+ "inputs": {
+ "flake-compat": [
+ "ghostty"
+ ],
+ "flake-utils": "flake-utils_3",
+ "nixpkgs": [
+ "ghostty",
+ "nixpkgs-stable"
+ ]
+ },
+ "locked": {
+ "lastModified": 1717848532,
+ "narHash": "sha256-d+xIUvSTreHl8pAmU1fnmkfDTGQYCn2Rb/zOwByxS2M=",
+ "owner": "mitchellh",
+ "repo": "zig-overlay",
+ "rev": "02fc5cc555fc14fda40c42d7c3250efa43812b43",
+ "type": "github"
+ },
+ "original": {
+ "owner": "mitchellh",
+ "repo": "zig-overlay",
+ "type": "github"
+ }
+ },
"zoeycomputer": {
"inputs": {
"flake-parts": "flake-parts_8",
"lexical": "lexical",
"nixpkgs": "nixpkgs_18",
"process-compose-flake": "process-compose-flake",
- "systems": "systems_20"
+ "systems": "systems_21"
},
"locked": {
"lastModified": 1731607548,
diff --git a/flake.nix b/flake.nix
index 4922844..831fcb9 100644
--- a/flake.nix
+++ b/flake.nix
@@ -12,16 +12,21 @@
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
- nixpkgs-unstable.url = "github:nixos/nixpkgs/nixpkgs-unstable";
+ nixpkgs-stable.url = "github:nixos/nixpkgs/release-24.11";
home-manager = {
url = "github:nix-community/home-manager/master";
inputs.nixpkgs.follows = "nixpkgs";
};
+ ghostty.url = "path:/home/zoey/dev/ghostty";
+
emacs-overlay.url = "github:nix-community/emacs-overlay";
- awsvpnclient.url = "github:ymatsiuk/awsvpnclient";
+ awsvpnclient = {
+ url = "github:ymatsiuk/awsvpnclient/56ca114e3f7fe4db9d745a0ab8ed70c6bd803a8f";
+ inputs.nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
+ };
resume.url = "git+https://git.zoeys.cloud/zoey/resume";
anyrun.url = "github:anyrun-org/anyrun";
@@ -35,8 +40,6 @@
pnpm2nix.url = "github:nzbr/pnpm2nix-nzbr";
solaar = {
- #url = "https://flakehub.com/f/Svenum/Solaar-Flake/*.tar.gz" # For latest stable version
- #url = "https://flakehub.com/f/Svenum/Solaar-Flake/0.1.1.tar.gz" # uncomment line for solaar version 1.1.13
url = "github:Svenum/Solaar-Flake/main"; # Uncomment line for latest unstable version
inputs.nixpkgs.follows = "nixpkgs";
};
@@ -92,16 +95,6 @@
inputs.nixpkgs.follows = "nixpkgs";
};
- # lix = {
- # url = "git+https://git.lix.systems/lix-project/lix?ref=refs/tags/2.90-beta.1";
- # flake = false;
- # };
- # lix-module = {
- # url = "git+https://git.lix.systems/lix-project/nixos-module";
- # inputs.lix.follows = "lix";
- # inputs.nixpkgs.follows = "nixpkgs";
- # };
-
zen-browser.url = "github:MarceColl/zen-browser-flake";
zoeycomputer = {
@@ -128,11 +121,7 @@
};
};
- outputs = inputs @ {
- self,
- nixpkgs-unstable,
- ...
- }: let
+ outputs = inputs @ {self, ...}: let
snowfallConfig = inputs.snowfall-lib.mkFlake {
inherit inputs;
src = ./.;
@@ -140,12 +129,7 @@
overlays = [
inputs.rust-overlay.overlays.default
(final: prev: {
- awsvpnclient =
- inputs
- .awsvpnclient
- .packages
- ."x86_64-linux"
- .awsvpnclient;
+ ghostty = inputs.ghostty.packages."x86_64-linux".default;
})
];
diff --git a/homes/x86_64-linux/zoey@earth/default.nix b/homes/x86_64-linux/zoey@earth/default.nix
index ece70cd..7d1a4c6 100644
--- a/homes/x86_64-linux/zoey@earth/default.nix
+++ b/homes/x86_64-linux/zoey@earth/default.nix
@@ -29,12 +29,12 @@
music.spotify.enable = true;
helpers = {
- anyrun.enable = true;
- ags.enable = true;
+ rofi.enable = true;
+ waybar.enable = true;
};
};
- shells.zsh.enable = true;
+ shells.fish.enable = true;
rice.gtk.enable = true;
@@ -86,6 +86,8 @@
pkgs.uutils-coreutils-noprefix
pkgs.yazi
+ pkgs.ghostty
+
pkgs.thunderbird
pkgs.custom.enc
@@ -127,8 +129,8 @@
pkgs.parsec-bin
pkgs.filezilla
- lib.custom.pkgs-unstable.zed-editor
- lib.custom.pkgs-unstable.rmpc
+ pkgs.zed-editor
+ pkgs.rmpc
pkgs.custom.zen-browser
pkgs.mpc-cli
@@ -142,7 +144,6 @@
programs.zoxide = {
enable = true;
- enableZshIntegration = true;
options = ["--cmd cd"];
};
diff --git a/lib/module/default.nix b/lib/module/default.nix
index 6597836..b2604d3 100644
--- a/lib/module/default.nix
+++ b/lib/module/default.nix
@@ -15,7 +15,7 @@ with lib; rec {
mkBoolOpt' = mkOpt' types.bool;
- pkgs-unstable = import inputs.nixpkgs-unstable {
+ pkgs-stable = import inputs.nixpkgs-stable {
system = "x86_64-linux";
config.allowUnfree = true;
};
diff --git a/lib/theme/default.nix b/lib/theme/default.nix
index 5f643f1..85fd92c 100644
--- a/lib/theme/default.nix
+++ b/lib/theme/default.nix
@@ -28,5 +28,5 @@
};
};
- wallpaper = ./wallpaper.png;
+ wallpaper = ./wall4.jpg;
}
diff --git a/lib/theme/wall4.jpg b/lib/theme/wall4.jpg
new file mode 100644
index 0000000..f51a1e3
Binary files /dev/null and b/lib/theme/wall4.jpg differ
diff --git a/modules/home/apps/helpers/notifications/default.nix b/modules/home/apps/helpers/notifications/default.nix
new file mode 100644
index 0000000..0727c94
--- /dev/null
+++ b/modules/home/apps/helpers/notifications/default.nix
@@ -0,0 +1,80 @@
+{
+ options,
+ config,
+ lib,
+ inputs,
+ pkgs,
+ ...
+}:
+with lib;
+with lib.custom; let
+ cfg = config.apps.helpers.snc;
+in {
+ options.apps.helpers.snc = with types; {
+ enable = mkBoolOpt false "Enable Sway Notification Center";
+ };
+
+ config = mkIf cfg.enable {
+ home = {
+ packages = with pkgs; [swaynotificationcenter];
+
+ # Copy the theme file to the correct location
+ file.".config/swaync/style.css".source = ./theme/ctp.css;
+
+ # Create default config file
+ file.".config/swaync/config.json".text = builtins.toJSON {
+ "$schema" = "/etc/xdg/swaync/configSchema.json";
+ "positionX" = "right";
+ "positionY" = "top";
+ "layer" = "overlay";
+ "control-center-margin-top" = 0;
+ "control-center-margin-bottom" = 0;
+ "control-center-margin-right" = 0;
+ "control-center-margin-left" = 0;
+ "notification-icon-size" = 64;
+ "notification-body-image-height" = 100;
+ "notification-body-image-width" = 200;
+ "timeout" = 10;
+ "timeout-low" = 5;
+ "timeout-critical" = 0;
+ "fit-to-screen" = true;
+ "control-center-width" = 500;
+ "notification-window-width" = 500;
+ "keyboard-shortcuts" = true;
+ "image-visibility" = "when-available";
+ "transition-time" = 200;
+ "hide-on-clear" = false;
+ "hide-on-action" = true;
+ "script-fail-notify" = true;
+ "scripts" = {};
+ "notification-visibility" = {};
+ "widgets" = [
+ "title"
+ "dnd"
+ "notifications"
+ ];
+ };
+ };
+
+ # Add systemd user service
+ systemd.user.services.swaync = {
+ Unit = {
+ Description = "Sway Notification Center";
+ PartOf = ["graphical-session.target"];
+ After = ["graphical-session.target"];
+ };
+
+ Service = {
+ Type = "simple";
+ ExecStart = "${pkgs.swaynotificationcenter}/bin/swaync";
+ ExecReload = "${pkgs.swaynotificationcenter}/bin/swaync-client --reload-config";
+ Restart = "always";
+ RestartSec = 3;
+ };
+
+ Install = {
+ WantedBy = ["graphical-session.target"];
+ };
+ };
+ };
+}
diff --git a/modules/home/apps/helpers/notifications/theme/ctp.css b/modules/home/apps/helpers/notifications/theme/ctp.css
new file mode 100644
index 0000000..4a21929
--- /dev/null
+++ b/modules/home/apps/helpers/notifications/theme/ctp.css
@@ -0,0 +1,451 @@
+* {
+ all: unset;
+ font-size: 14px;
+ font-family: "Iosevka";
+ transition: 200ms;
+}
+
+trough highlight {
+ background: #cdd6f4;
+}
+
+scale trough {
+ margin: 0rem 1rem;
+ background-color: #313244;
+ min-height: 8px;
+ min-width: 70px;
+}
+
+slider {
+ background-color: #89b4fa;
+}
+
+.floating-notifications.background .notification-row .notification-background {
+ box-shadow:
+ 0 0 8px 0 rgba(0, 0, 0, 0.8),
+ inset 0 0 0 1px #313244;
+ border-radius: 12.6px;
+ margin: 18px;
+ background-color: #1e1e2e;
+ color: #cdd6f4;
+ padding: 0;
+}
+
+.floating-notifications.background
+ .notification-row
+ .notification-background
+ .notification {
+ padding: 7px;
+ border-radius: 12.6px;
+}
+
+.floating-notifications.background
+ .notification-row
+ .notification-background
+ .notification.critical {
+ box-shadow: inset 0 0 7px 0 #f38ba8;
+}
+
+.floating-notifications.background
+ .notification-row
+ .notification-background
+ .notification
+ .notification-content {
+ margin: 7px;
+}
+
+.floating-notifications.background
+ .notification-row
+ .notification-background
+ .notification
+ .notification-content
+ .summary {
+ color: #cdd6f4;
+}
+
+.floating-notifications.background
+ .notification-row
+ .notification-background
+ .notification
+ .notification-content
+ .time {
+ color: #a6adc8;
+}
+
+.floating-notifications.background
+ .notification-row
+ .notification-background
+ .notification
+ .notification-content
+ .body {
+ color: #cdd6f4;
+}
+
+.floating-notifications.background
+ .notification-row
+ .notification-background
+ .notification
+ > *:last-child
+ > * {
+ min-height: 3.4em;
+}
+
+.floating-notifications.background
+ .notification-row
+ .notification-background
+ .notification
+ > *:last-child
+ > *
+ .notification-action {
+ border-radius: 7px;
+ color: #cdd6f4;
+ background-color: #313244;
+ box-shadow: inset 0 0 0 1px #45475a;
+ margin: 7px;
+}
+
+.floating-notifications.background
+ .notification-row
+ .notification-background
+ .notification
+ > *:last-child
+ > *
+ .notification-action:hover {
+ box-shadow: inset 0 0 0 1px #45475a;
+ background-color: #313244;
+ color: #cdd6f4;
+}
+
+.floating-notifications.background
+ .notification-row
+ .notification-background
+ .notification
+ > *:last-child
+ > *
+ .notification-action:active {
+ box-shadow: inset 0 0 0 1px #45475a;
+ background-color: #74c7ec;
+ color: #cdd6f4;
+}
+
+.floating-notifications.background
+ .notification-row
+ .notification-background
+ .close-button {
+ margin: 7px;
+ padding: 2px;
+ border-radius: 6.3px;
+ color: #1e1e2e;
+ background-color: #f38ba8;
+}
+
+.floating-notifications.background
+ .notification-row
+ .notification-background
+ .close-button:hover {
+ background-color: #eba0ac;
+ color: #1e1e2e;
+}
+
+.floating-notifications.background
+ .notification-row
+ .notification-background
+ .close-button:active {
+ background-color: #f38ba8;
+ color: #1e1e2e;
+}
+
+.control-center {
+ box-shadow:
+ 0 0 8px 0 rgba(0, 0, 0, 0.8),
+ inset 0 0 0 1px #313244;
+ border-radius: 12.6px;
+ margin: 18px;
+ background-color: #1e1e2e;
+ color: #cdd6f4;
+ padding: 14px;
+}
+
+.control-center .widget-title > label {
+ color: #cdd6f4;
+ font-size: 1.3em;
+}
+
+.control-center .widget-title button {
+ border-radius: 7px;
+ color: #cdd6f4;
+ background-color: #313244;
+ box-shadow: inset 0 0 0 1px #45475a;
+ padding: 8px;
+}
+
+.control-center .widget-title button:hover {
+ box-shadow: inset 0 0 0 1px #45475a;
+ background-color: #585b70;
+ color: #cdd6f4;
+}
+
+.control-center .widget-title button:active {
+ box-shadow: inset 0 0 0 1px #45475a;
+ background-color: #74c7ec;
+ color: #1e1e2e;
+}
+
+.control-center .notification-row .notification-background {
+ border-radius: 7px;
+ color: #cdd6f4;
+ background-color: #313244;
+ box-shadow: inset 0 0 0 1px #45475a;
+ margin-top: 14px;
+}
+
+.control-center .notification-row .notification-background .notification {
+ padding: 7px;
+ border-radius: 7px;
+}
+
+.control-center
+ .notification-row
+ .notification-background
+ .notification.critical {
+ box-shadow: inset 0 0 7px 0 #f38ba8;
+}
+
+.control-center
+ .notification-row
+ .notification-background
+ .notification
+ .notification-content {
+ margin: 7px;
+}
+
+.control-center
+ .notification-row
+ .notification-background
+ .notification
+ .notification-content
+ .summary {
+ color: #cdd6f4;
+}
+
+.control-center
+ .notification-row
+ .notification-background
+ .notification
+ .notification-content
+ .time {
+ color: #a6adc8;
+}
+
+.control-center
+ .notification-row
+ .notification-background
+ .notification
+ .notification-content
+ .body {
+ color: #cdd6f4;
+}
+
+.control-center
+ .notification-row
+ .notification-background
+ .notification
+ > *:last-child
+ > * {
+ min-height: 3.4em;
+}
+
+.control-center
+ .notification-row
+ .notification-background
+ .notification
+ > *:last-child
+ > *
+ .notification-action {
+ border-radius: 7px;
+ color: #cdd6f4;
+ background-color: #11111b;
+ box-shadow: inset 0 0 0 1px #45475a;
+ margin: 7px;
+}
+
+.control-center
+ .notification-row
+ .notification-background
+ .notification
+ > *:last-child
+ > *
+ .notification-action:hover {
+ box-shadow: inset 0 0 0 1px #45475a;
+ background-color: #313244;
+ color: #cdd6f4;
+}
+
+.control-center
+ .notification-row
+ .notification-background
+ .notification
+ > *:last-child
+ > *
+ .notification-action:active {
+ box-shadow: inset 0 0 0 1px #45475a;
+ background-color: #74c7ec;
+ color: #cdd6f4;
+}
+
+.control-center .notification-row .notification-background .close-button {
+ margin: 7px;
+ padding: 2px;
+ border-radius: 6.3px;
+ color: #1e1e2e;
+ background-color: #eba0ac;
+}
+
+.close-button {
+ border-radius: 6.3px;
+}
+
+.control-center .notification-row .notification-background .close-button:hover {
+ background-color: #f38ba8;
+ color: #1e1e2e;
+}
+
+.control-center
+ .notification-row
+ .notification-background
+ .close-button:active {
+ background-color: #f38ba8;
+ color: #1e1e2e;
+}
+
+.control-center .notification-row .notification-background:hover {
+ box-shadow: inset 0 0 0 1px #45475a;
+ background-color: #7f849c;
+ color: #cdd6f4;
+}
+
+.control-center .notification-row .notification-background:active {
+ box-shadow: inset 0 0 0 1px #45475a;
+ background-color: #74c7ec;
+ color: #cdd6f4;
+}
+
+.notification.critical progress {
+ background-color: #f38ba8;
+}
+
+.notification.low progress,
+.notification.normal progress {
+ background-color: #89b4fa;
+}
+
+.control-center-dnd {
+ margin-top: 5px;
+ border-radius: 8px;
+ background: #313244;
+ border: 1px solid #45475a;
+ box-shadow: none;
+}
+
+.control-center-dnd:checked {
+ background: #313244;
+}
+
+.control-center-dnd slider {
+ background: #45475a;
+ border-radius: 8px;
+}
+
+.widget-dnd {
+ margin: 0px;
+ font-size: 1.1rem;
+}
+
+.widget-dnd > switch {
+ font-size: initial;
+ border-radius: 8px;
+ background: #313244;
+ border: 1px solid #45475a;
+ box-shadow: none;
+}
+
+.widget-dnd > switch:checked {
+ background: #313244;
+}
+
+.widget-dnd > switch slider {
+ background: #45475a;
+ border-radius: 8px;
+ border: 1px solid #6c7086;
+}
+
+.widget-mpris .widget-mpris-player {
+ background: #313244;
+ padding: 7px;
+}
+
+.widget-mpris .widget-mpris-title {
+ font-size: 1.2rem;
+}
+
+.widget-mpris .widget-mpris-subtitle {
+ font-size: 0.8rem;
+}
+
+.widget-menubar > box > .menu-button-bar > button > label {
+ font-size: 3rem;
+ padding: 0.5rem 2rem;
+}
+
+.widget-menubar > box > .menu-button-bar > :last-child {
+ color: #f38ba8;
+}
+
+.power-buttons button:hover,
+.powermode-buttons button:hover,
+.screenshot-buttons button:hover {
+ background: #313244;
+}
+
+.control-center .widget-label > label {
+ color: #cdd6f4;
+ font-size: 2rem;
+}
+
+.widget-buttons-grid {
+ padding-top: 1rem;
+}
+
+.widget-buttons-grid > flowbox > flowboxchild > button label {
+ font-size: 2.5rem;
+}
+
+.widget-volume {
+ padding-top: 1rem;
+}
+
+.widget-volume label {
+ font-size: 1.5rem;
+ color: #74c7ec;
+}
+
+.widget-volume trough highlight {
+ background: #74c7ec;
+}
+
+.widget-backlight trough highlight {
+ background: #f9e2af;
+}
+
+.widget-backlight label {
+ font-size: 1.5rem;
+ color: #f9e2af;
+}
+
+.widget-backlight .KB {
+ padding-bottom: 1rem;
+}
+
+.image {
+ padding-right: 0.5rem;
+}
diff --git a/modules/home/apps/helpers/rofi/default.nix b/modules/home/apps/helpers/rofi/default.nix
new file mode 100644
index 0000000..005fafa
--- /dev/null
+++ b/modules/home/apps/helpers/rofi/default.nix
@@ -0,0 +1,173 @@
+{
+ config,
+ lib,
+ pkgs,
+ ...
+}:
+with lib;
+with lib.custom; let
+ cfg = config.apps.helpers.rofi;
+in {
+ options.apps.helpers.rofi = with types; {
+ enable = mkBoolOpt false "Enable Rofi";
+ };
+
+ config = mkIf cfg.enable {
+ programs.rofi = {
+ enable = true;
+ package = pkgs.rofi;
+
+ # Basic configuration
+ terminal = "ghostty";
+ font = "Lexend Medium 16px";
+
+ extraConfig = {
+ modi = "drun";
+ show-icons = true;
+ drun-display-format = "{icon} {name}";
+ location = 0;
+ hide-scrollbar = true;
+ disable-history = false;
+ display-drun = " Applications";
+ display-run = " Run";
+ display-calc = " Calculator";
+ display-emoji = " Emojis";
+ sidebar-mode = false;
+
+ # # Timeout settings
+ # timeout = {
+ # action = "kb-cancel";
+ # delay = 0;
+ # };
+ #
+ # filebrowser = {
+ # "directories-first" = true;
+ # "sorting-method" = "name";
+ # };
+ };
+
+ # Theme configuration
+ theme = let
+ inherit (config.lib.formats.rasi) mkLiteral;
+ in {
+ "*" = {
+ background = "#181825";
+ prompt = "#1e1e2e";
+ border = "#313244";
+ text = "#cdd6f4";
+ stext = "#45475a";
+ select = "#1e1e2e";
+ "background-color" = mkLiteral "transparent";
+ "text-color" = mkLiteral "@text";
+ margin = 0;
+ padding = 0;
+ };
+
+ "window" = {
+ transparency = "real";
+ location = mkLiteral "center";
+ anchor = mkLiteral "center";
+ width = mkLiteral "32em";
+ "x-offset" = mkLiteral "0px";
+ "y-offset" = mkLiteral "0px";
+ enabled = true;
+ border = mkLiteral "2px solid";
+ "border-color" = mkLiteral "@border";
+ "border-radius" = mkLiteral "4px";
+ "background-color" = mkLiteral "@background";
+ cursor = mkLiteral "default";
+ };
+
+ "inputbar" = {
+ enabled = true;
+ "background-color" = mkLiteral "@prompt";
+ orientation = mkLiteral "horizontal";
+ children = mkLiteral "[ \"entry\" ]";
+ };
+
+ "entry" = {
+ enabled = true;
+ padding = mkLiteral "0.75em 1.25em";
+ cursor = mkLiteral "text";
+ placeholder = " Search application...";
+ "background-color" = mkLiteral "@background";
+ "placeholder-color" = mkLiteral "@stext";
+ };
+
+ "listview" = {
+ enabled = true;
+ columns = 1;
+ lines = 5;
+ cycle = true;
+ dynamic = true;
+ scrollbar = false;
+ layout = mkLiteral "vertical";
+ reverse = false;
+ "fixed-height" = true;
+ "fixed-columns" = true;
+ margin = mkLiteral "0.5em 0 0.75em";
+ cursor = mkLiteral "default";
+ };
+
+ "element" = {
+ enabled = true;
+ margin = mkLiteral "0 0.75em";
+ padding = mkLiteral "0.5em 1em";
+ cursor = mkLiteral "pointer";
+ orientation = mkLiteral "horizontal";
+ };
+
+ "element-icon" = {
+ size = mkLiteral "24px";
+ };
+
+ "element normal.normal" = {
+ "background-color" = mkLiteral "inherit";
+ "text-color" = mkLiteral "inherit";
+ };
+
+ "element selected.normal" = {
+ border = mkLiteral "2px solid";
+ "border-color" = mkLiteral "@border";
+ "border-radius" = mkLiteral "8px";
+ "background-color" = mkLiteral "@select";
+ };
+
+ "element-text" = {
+ highlight = mkLiteral "bold";
+ cursor = mkLiteral "inherit";
+ "vertical-align" = mkLiteral "0.5";
+ "horizontal-align" = mkLiteral "0.0";
+ font = mkLiteral ''"Lexend Medium 16px"'';
+ };
+ };
+ };
+
+ # Create the colors.rasi file
+ xdg.configFile."rofi/colors.rasi".text = ''
+ * {
+ background: #181825;
+ prompt: #1e1e2e;
+ border: #313244;
+ text: #cdd6f4;
+ stext: #45475a;
+ select: #1e1e2e;
+ }
+ '';
+
+ # Create the clip theme
+ xdg.configFile."rofi/clip.rasi".text = ''
+ @theme "cat-mocha"
+ @import "./colors.rasi"
+
+ entry {
+ placeholder: " Search clipboard...";
+ }
+
+ element-icon {
+ enabled: false;
+ size: 0;
+ }
+ '';
+ };
+}
diff --git a/modules/home/apps/helpers/waybar/default.nix b/modules/home/apps/helpers/waybar/default.nix
index a2a40b6..f738c56 100644
--- a/modules/home/apps/helpers/waybar/default.nix
+++ b/modules/home/apps/helpers/waybar/default.nix
@@ -19,153 +19,250 @@ in {
enable = true;
style = ''
* {
- color: @text;
- font-family: Iosevka Nerd Font;
- font-weight: bold;
- font-size: 14px;
+ min-height: 0;
+ min-width: 0;
+ font-family: Lexend, "JetBrainsMono NFP";
+ font-size: 16px;
+ font-weight: 600;
}
window#waybar {
- background-color: rgba(0, 0, 0, 0);
+ transition-property: background-color;
+ transition-duration: 0.5s;
+ /* background-color: #1e1e2e; */
+ /* background-color: #181825; */
+ background-color: #11111b;
+ /* background-color: rgba(24, 24, 37, 0.6); */
}
- #waybar > box {
- margin: 10px 15px 0px;
- background-color: @base;
- border: 2px solid @mauve;
+ #workspaces button {
+ padding: 0.3rem 0.6rem;
+ margin: 0.4rem 0.25rem;
+ border-radius: 6px;
+ /* background-color: #181825; */
+ background-color: #1e1e2e;
+ color: #cdd6f4;
+ }
+
+ #workspaces button:hover {
+ color: #1e1e2e;
+ background-color: #cdd6f4;
+ }
+
+ #workspaces button.active {
+ background-color: #1e1e2e;
+ color: #89b4fa;
+ }
+
+ #workspaces button.urgent {
+ background-color: #1e1e2e;
+ color: #f38ba8;
}
- #workspaces,
- #window,
- #idle_inhibitor,
- #wireplumber,
- #network,
- #cpu,
- #memory,
- #battery,
#clock,
- #power-profiles-daemon,
+ #pulseaudio,
+ #custom-logo,
+ #custom-power,
+ #custom-spotify,
+ #custom-notification,
+ #cpu,
#tray,
- #waybar > box {
- border-radius: 12px;
+ #memory,
+ #window,
+ #mpris {
+ padding: 0.3rem 0.6rem;
+ margin: 0.4rem 0.25rem;
+ border-radius: 6px;
+ /* background-color: #181825; */
+ background-color: #1e1e2e;
}
- #workspaces * {
- color: @red;
+ #mpris.playing {
+ color: #a6e3a1;
}
- #idle_inhibitor {
- color: @peach;
+ #mpris.paused {
+ color: #9399b2;
}
- #window * {
- color: @mauve;
+ #custom-sep {
+ padding: 0px;
+ color: #585b70;
}
- #wireplumber {
- color: @yellow;
+ window#waybar.empty #window {
+ background-color: transparent;
}
- #network {
- color: @green;
+ #cpu {
+ color: #94e2d5;
}
- #power-profiles-daemon {
- color: @teal;
- }
-
- #battery {
- color: @blue;
+ #memory {
+ color: #cba6f7;
}
#clock {
- color: @lavender;
+ color: #74c7ec;
}
- #tray {
- color: @text;
+ #clock.simpleclock {
+ color: #89b4fa;
}
- #idle_inhibitor,
- #wireplumber,
- #network,
- #cpu,
- #memory,
- #battery,
- #clock,
- #power-profiles-daemon,
- #tray {
- padding: 0 5px;
+ #window {
+ color: #cdd6f4;
+ }
+
+ #pulseaudio {
+ color: #b4befe;
+ }
+
+ #pulseaudio.muted {
+ color: #a6adc8;
+ }
+
+ #custom-logo {
+ color: #89b4fa;
+ }
+
+ #custom-power {
+ color: #f38ba8;
+ }
+
+ tooltip {
+ background-color: #181825;
+ border: 2px solid #89b4fa;
}
'';
settings = {
mainBar = {
- layer = "top";
+ layer = "bottom";
position = "top";
- spacing = 4;
- modules-left = [
- "hyprland/workspaces"
- "hyprland/window"
- ];
- modules-center = [
- ];
- modules-right = [
- "idle_inhibitor"
- "wireplumber"
- "network"
- "power-profiles-daemon"
- "battery"
+ height = 40;
+ spacing = 2;
+ exclusive = true;
+ "gtk-layer-shell" = true;
+ passthrough = false;
+ "fixed-center" = true;
+ "modules-left" = ["hyprland/workspaces" "hyprland/window"];
+ "modules-center" = ["mpris"];
+ "modules-right" = [
+ "cpu"
+ "memory"
+ "pulseaudio"
"clock"
+ "clock#simpleclock"
"tray"
+ "custom/notification"
+ "custom/power"
];
+ "custom/spotify" = {
+ format = " {}";
+ "return-type" = "json";
+ "on-click" = "playerctl -p spotify play-pause";
+ "on-click-right" = "spotifatius toggle-liked";
+ "on-click-middle" = "playerctl -p spotify next";
+ exec = "spotifatius monitor";
+ };
+
+ mpris = {
+ player = "spotify";
+ "dynamic-order" = ["artist" "title"];
+ format = "{player_icon} {dynamic}";
+ "format-paused" = "{status_icon} {dynamic}";
+ "status-icons" = {
+ paused = "";
+ };
+ "player-icons" = {
+ default = "";
+ };
+ };
+
"hyprland/workspaces" = {
- disable-scroll = true;
- all-outputs = true;
- warp-on-scroll = false;
- format = "{name}: {icon}";
- format-icons = {
- "urgent" = "";
- "active" = "";
- "default" = "";
- };
+ "on-click" = "activate";
+ format = "{id}";
+ "all-outputs" = true;
+ "disable-scroll" = false;
+ "active-only" = false;
};
- #cava = {
- # cava_config = "$HOME/.config/cava/config";
- # framerate = 60;
- # bars = 16;
- # method = "pipewire";
- # format-icons = ["▁" "▂" "▃" "▄" "▅" "▆" "▇" "█" ];
- # bar_delimiter = 0;
- #};
-
- idle_inhibitor = {
- format = "Idle: {icon} ";
- format-icons = {
- "deactivated" = "";
- "activated" = "";
- };
+ "hyprland/window" = {
+ format = "{title}";
};
- wireplumber = {
- format = "Volume: {icon} {volume}% ";
- format-icons = ["" "" ""];
- format-muted = "Muted ";
+ tray = {
+ "show-passive-items" = true;
+ spacing = 10;
+ };
+
+ "clock#simpleclock" = {
+ tooltip = false;
+ format = " {:%H:%M}";
};
clock = {
- format = " {:%H:%M}";
+ format = " {:L%a %d %b}";
+ calendar = {
+ format = {
+ days = "{}";
+ months = "{}";
+ today = "{}";
+ weekdays = "{}";
+ weeks = "W{}";
+ };
+ mode = "month";
+ "mode-mon-col" = 1;
+ "on-scroll" = 1;
+ };
+ "tooltip-format" = "{calendar}";
};
- network = {
- format = " {essid} {signalStrength}";
+ cpu = {
+ format = " {usage}%";
+ tooltip = true;
+ interval = 1;
};
- battery = {
- format-icons = ["" "" "" "" ""];
- format = "{icon} {capacity}%";
+ memory = {
+ format = " {used:0.1f}Gi";
+ };
+
+ pulseaudio = {
+ format = "{icon} {volume}%";
+ "format-muted" = " muted";
+ "format-icons" = {
+ headphone = "";
+ default = [" " " " " "];
+ };
+ "on-click" = "pavucontrol";
+ };
+
+ "custom/sep" = {
+ format = "|";
+ tooltip = false;
+ };
+
+ "custom/power" = {
+ tooltip = false;
+ "on-click" = "wlogout -p layer-shell &";
+ format = "⏻";
+ };
+
+ "custom/notification" = {
+ escape = true;
+ exec = "swaync-client -swb";
+ "exec-if" = "which swaync-client";
+ format = "{icon}";
+ "format-icons" = {
+ none = "";
+ notification = "";
+ };
+ "on-click" = "sleep 0.1 && swaync-client -t -sw";
+ "return-type" = "json";
+ tooltip = false;
};
};
};
diff --git a/modules/home/apps/tools/neovim/config/lua/plugins/core.lua b/modules/home/apps/tools/neovim/config/lua/plugins/core.lua
index dc5cb23..05b8c4d 100644
--- a/modules/home/apps/tools/neovim/config/lua/plugins/core.lua
+++ b/modules/home/apps/tools/neovim/config/lua/plugins/core.lua
@@ -6,6 +6,24 @@ return {
news = { lazyvim = false },
},
},
+ {
+ "snacks.nvim",
+ opts = {
+ scroll = {
+ enabled = false,
+ },
+ dashboard = {
+ preset = {
+ header = [[
+ /l、
+ (゚、 。 7
+ l ~ヽ
+ じしf_,)ノ
+ ]],
+ },
+ },
+ },
+ },
{
"catppuccin",
opts = { transparent_background = true, integrations = {
@@ -34,16 +52,6 @@ return {
nerd_font_variant = "mono",
},
},
- {
- "karb94/neoscroll.nvim",
- config = function()
- require("neoscroll").setup({})
- end,
- },
- {
- "sphamba/smear-cursor.nvim",
- opts = {},
- },
{
"folke/snacks.nvim",
priority = 1000,
diff --git a/modules/home/rice/gtk/default.nix b/modules/home/rice/gtk/default.nix
index cd4316e..b77cfdc 100644
--- a/modules/home/rice/gtk/default.nix
+++ b/modules/home/rice/gtk/default.nix
@@ -17,6 +17,11 @@ in {
config = mkIf cfg.enable {
catppuccin.pointerCursor.enable = true;
+ home.pointerCursor = {
+ gtk.enable = true;
+ x11.enable = true;
+ };
+
gtk = {
enable = true;
@@ -27,12 +32,12 @@ in {
theme = {
name = "Tokyonight-Dark";
- package = pkgs-unstable.tokyonight-gtk-theme;
+ package = pkgs.tokyonight-gtk-theme;
};
iconTheme = {
name = "Papirus-Dark";
- package = pkgs-unstable.catppuccin-papirus-folders.override {
+ package = pkgs.catppuccin-papirus-folders.override {
accent = ctp.accent;
flavor = ctp.flavor;
};
diff --git a/modules/home/shells/fish/aliases.nix b/modules/home/shells/fish/aliases.nix
new file mode 100644
index 0000000..f245343
--- /dev/null
+++ b/modules/home/shells/fish/aliases.nix
@@ -0,0 +1,49 @@
+{
+ pkgs,
+ lib,
+ config,
+ ...
+}:
+with lib;
+with pkgs; {
+ ytmp3 = ''
+ ${getExe yt-dlp} -x --continue --add-metadata --embed-thumbnail --audio-format mp3 --audio-quality 0 --metadata-from-title="%(artist)s - %(title)s" --prefer-ffmpeg -o "%(title)s.%(ext)s"'';
+ cat = "${getExe bat} --style=plain";
+ vpn = "mullvad";
+ uuid = "cat /proc/sys/kernel/random/uuid";
+ grep = getExe ripgrep;
+ fzf = getExe skim;
+ untar = "tar -xvf";
+ untargz = "tar -xzf";
+ du = getExe du-dust;
+ ps = getExe procs;
+ lb = "pw-loopback -C \"alsa_input.pci-0000_0d_00.4.analog-stereo\" -P \"Scarlett Solo (3rd Gen.) Headphones / Line 1-2\"";
+ deploy = "nixos-rebuild switch --flake ~/nixos#pluto --target-host zoeys.computer --use-remote-sudo";
+ m = "mkdir -p";
+ fcd = "cd $(find -type d | fzf)";
+ l = "ls -lF --time-style=long-iso --icons";
+ sc = "sudo systemctl";
+ scu = "systemctl --user ";
+ la = "${getExe eza} -lah --tree";
+ ls = "${getExe eza} -h --git --icons --color=auto --group-directories-first -s extension";
+ tree = "${getExe eza} --tree --icons --tree";
+ kys = "shutdown now";
+ gpl = "curl https://www.gnu.org/licenses/gpl-3.0.txt -o LICENSE";
+ agpl = "curl https://www.gnu.org/licenses/agpl-3.0.txt -o LICENSE";
+ tsm = "transmission-remote";
+ g = "git";
+ n = "nix";
+ r = "rebuild";
+ vm = "nixos-rebuild build-vm --flake ~/nixos#earth";
+ mnt = "udisksctl mount -b";
+ umnt = "udisksctl unmount -b";
+ burn = "pkill -9";
+ diff = "diff --color=auto";
+ wu = "vpn disconnect -w && awsvpnclient start --config ~/Downloads/cvpn-endpoint-085400ccc19bb4a17.ovpn";
+ "v" = "nvim";
+ ".." = "cd ..";
+ "..." = "cd ../../";
+ "...." = "cd ../../../";
+ "....." = "cd ../../../../";
+ "......" = "cd ../../../../../";
+}
diff --git a/modules/home/shells/fish/default.nix b/modules/home/shells/fish/default.nix
new file mode 100644
index 0000000..a14b78c
--- /dev/null
+++ b/modules/home/shells/fish/default.nix
@@ -0,0 +1,144 @@
+{
+ options,
+ config,
+ lib,
+ pkgs,
+ ...
+}:
+with lib;
+with lib.custom; let
+ cfg = config.shells.fish;
+in {
+ options.shells.fish = with types; {
+ enable = mkBoolOpt false "Enable Fish Configuration";
+ };
+
+ config = mkIf cfg.enable {
+ programs.fish = {
+ enable = true;
+ generateCompletions = true;
+ interactiveShellInit = ''
+ set -gx LC_ALL en_US.UTF-8
+ set -gx SSH_AUTH_SOCK /run/user/1000/keyring/ssh
+ set -gx FLAKE /home/zoey/nixos/
+ set -g FZF_PREVIEW_FILE_CMD "head -n 10"
+ set -g FZF_PREVIEW_DIR_CMD "ls"
+ '';
+
+ plugins = [
+ {
+ name = "foreign-env";
+ src = pkgs.fishPlugins.foreign-env.src;
+ }
+ {
+ name = "fzf.fish";
+ src = pkgs.fishPlugins.fzf-fish.src;
+ }
+ {
+ name = "z";
+ src = pkgs.fishPlugins.z.src;
+ }
+ {
+ name = "done";
+ src = pkgs.fishPlugins.done.src;
+ }
+ {
+ name = "colored-man-pages";
+ src = pkgs.fishPlugins.colored-man-pages.src;
+ }
+ ];
+
+ functions = {
+ pf = ''
+ fzf --bind ctrl-y:preview-up,ctrl-e:preview-down \
+ --bind ctrl-b:preview-page-up,ctrl-f:preview-page-down \
+ --bind ctrl-u:preview-half-page-up,ctrl-d:preview-half-page-down \
+ --bind ctrl-k:up,ctrl-j:down \
+ --preview='bat --style=numbers --color=always --line-range :100 {}'
+ '';
+
+ ff = ''
+ for file in (pf)
+ set cmd "v $file"
+ echo $cmd
+ eval $cmd
+ end
+ '';
+ };
+
+ shellAliases = import ./aliases.nix {inherit pkgs lib config;};
+ };
+
+ home.packages = with pkgs; [
+ gnumake
+ # Runs programs without installing them
+ comma
+
+ # grep replacement
+ ripgrep
+
+ # ping, but with cool graph
+ gping
+
+ fzf
+
+ # dns client
+ dogdns
+
+ # neofetch but for git repos
+ onefetch
+
+ # neofetch but for cpu's
+ cpufetch
+
+ # download from yt and other websites
+ yt-dlp
+
+ zsh-history
+
+ # man pages for tiktok attention span mfs
+ tealdeer
+
+ # markdown previewer
+ glow
+
+ # profiling tool
+ hyperfine
+
+ imagemagick
+ ffmpeg-full
+
+ # preview images in terminal
+ catimg
+
+ # networking stuff
+ nmap
+ wget
+
+ # faster find
+ fd
+
+ # http request thingy
+ xh
+
+ # generate regex
+ grex
+
+ # json thingy
+ jq
+
+ # syncthnig for acoustic people
+ rsync
+
+ figlet
+ # Generate qr codes
+ qrencode
+
+ # script kidde stuff
+ hcxdumptool
+ hashcat
+
+ unzip
+ ];
+ };
+}
diff --git a/modules/home/shells/nu/aliases.nix b/modules/home/shells/nu/aliases.nix
new file mode 100644
index 0000000..9066270
--- /dev/null
+++ b/modules/home/shells/nu/aliases.nix
@@ -0,0 +1,51 @@
+{
+ pkgs,
+ lib,
+ config,
+ ...
+}:
+with lib;
+with pkgs; {
+ ytmp3 = ''
+ ${getExe yt-dlp} -x --continue --add-metadata --embed-thumbnail --audio-format mp3 --audio-quality 0 --metadata-from-title="%(artist)s - %(title)s" --prefer-ffmpeg -o "%(title)s.%(ext)s"'';
+ cat = "${getExe bat} --style=plain";
+ vpn = "mullvad";
+ uuid = "cat /proc/sys/kernel/random/uuid";
+ grep = getExe ripgrep;
+ fzf = getExe skim;
+ untar = "tar -xvf";
+ untargz = "tar -xzf";
+ MANPAGER = "sh -c 'col -bx | bat -l man -p'";
+ du = getExe du-dust;
+ ps = getExe procs;
+ lb = "pw-loopback -C \"alsa_input.pci-0000_0d_00.4.analog-stereo\" -P \"Scarlett Solo (3rd Gen.) Headphones / Line 1-2\"";
+ deploy = "nixos-rebuild switch --flake ~/nixos#pluto --target-host zoeys.computer --use-remote-sudo";
+ m = "mkdir -p";
+ fcd = "cd $(find -type d | fzf)";
+ l = "ls -lF --time-style=long-iso --icons";
+ sc = "sudo systemctl";
+ scu = "systemctl --user ";
+ la = "${getExe eza} -lah --tree";
+ ls = "${getExe eza} -h --git --icons --color=auto --group-directories-first -s extension";
+ tree = "${getExe eza} --tree --icons --tree";
+ kys = "shutdown now";
+ lv = "nvim -c \"normal '\''0\"";
+ gpl = "curl https://www.gnu.org/licenses/gpl-3.0.txt -o LICENSE";
+ agpl = "curl https://www.gnu.org/licenses/agpl-3.0.txt -o LICENSE";
+ tsm = "transmission-remote";
+ g = "git";
+ n = "nix";
+ r = "rebuild";
+ vm = "nixos-rebuild build-vm --flake ~/nixos#earth";
+ mnt = "udisksctl mount -b";
+ umnt = "udisksctl unmount -b";
+ burn = "pkill -9";
+ diff = "diff --color=auto";
+ wu = "vpn disconnect -w && awsvpnclient start --config ~/Downloads/cvpn-endpoint-085400ccc19bb4a17.ovpn";
+ "v" = "nvim";
+ ".." = "cd ..";
+ "..." = "cd ../../";
+ "...." = "cd ../../../";
+ "....." = "cd ../../../../";
+ "......" = "cd ../../../../../";
+}
diff --git a/modules/home/shells/nu/default.nix b/modules/home/shells/nu/default.nix
new file mode 100644
index 0000000..30dcc29
--- /dev/null
+++ b/modules/home/shells/nu/default.nix
@@ -0,0 +1,92 @@
+{
+ options,
+ config,
+ lib,
+ pkgs,
+ ...
+}:
+with lib;
+with lib.custom; let
+ cfg = config.shells.nu;
+in {
+ options.shells.nu = with types; {
+ enable = mkBoolOpt false "Enable Nushell Configuration";
+ };
+
+ config = mkIf cfg.enable {
+ programs.nushell = {
+ enable = true;
+
+ # Nushell doesn't need generateCompletions like fish
+
+ extraConfig = ''
+ # Environment variables
+ let-env LC_ALL = "en_US.UTF-8"
+ let-env SSH_AUTH_SOCK = "/run/user/1000/keyring/ssh"
+ let-env FLAKE = "/home/zoey/nixos/"
+
+ # FZF settings
+ let-env FZF_PREVIEW_FILE_CMD = "head -n 10"
+ let-env FZF_PREVIEW_DIR_CMD = "ls"
+
+ def pf [] {
+ fzf --bind ctrl-y:preview-up,ctrl-e:preview-down \
+ --bind ctrl-b:preview-page-up,ctrl-f:preview-page-down \
+ --bind ctrl-u:preview-half-page-up,ctrl-d:preview-half-page-down \
+ --bind ctrl-k:up,ctrl-j:down \
+ --preview='bat --style=numbers --color=always --line-range :100 {}'
+ }
+
+ def ff [] {
+ let files = (pf)
+ for file in $files {
+ let cmd = $"v ($file)"
+ echo $cmd
+ nu -c $cmd
+ }
+ }
+ '';
+
+ # Nushell handles plugins differently, you might want to use modules instead
+ # or configure external tools directly
+
+ extraEnv = ''
+ # Add any environment-specific configuration here
+ '';
+
+ # Import aliases (you'll need to convert fish aliases to Nushell format)
+ shellAliases = import ./aliases.nix {inherit pkgs lib config;};
+ };
+
+ home.packages = with pkgs; [
+ gnumake
+ comma
+ ripgrep
+ gping
+ fzf
+ dogdns
+ onefetch
+ cpufetch
+ yt-dlp
+ zsh-history
+ tealdeer
+ glow
+ hyperfine
+ imagemagick
+ ffmpeg-full
+ catimg
+ nmap
+ wget
+ fd
+ xh
+ grex
+ jq
+ rsync
+ figlet
+ qrencode
+ hcxdumptool
+ hashcat
+ unzip
+ ];
+ };
+}
diff --git a/modules/home/wms/hyprland/default.nix b/modules/home/wms/hyprland/default.nix
index d9d5c15..eb44483 100644
--- a/modules/home/wms/hyprland/default.nix
+++ b/modules/home/wms/hyprland/default.nix
@@ -48,22 +48,21 @@ in {
xwayland.enable = true;
package = inputs.hyprland.packages.${pkgs.system}.hyprland;
- # systemd = {
- # enable = true;
- # enableXdgAutostart = true;
- # variables = ["-all"];
- # };
+ systemd = {
+ enable = true;
+ # enableXdgAutostart = true;
+ variables = ["-all"];
+ };
};
wayland.windowManager.hyprland.settings = with colors; {
exec-once = [
"pw-loopback -C \"alsa_input.pci-0000_0d_00.4.analog-stereo\" -P \"Scarlett Solo (3rd Gen.) Headphones / Line 1-2\""
- # "systemctl --user import-environment DISPLAY WAYLAND_DISPLAY XDG_CURRENT_DESKTOP"
- "dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP"
- "systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP"
+ # "dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP"
+ # "systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP"
"zen"
- "sleep 6;telegram-desktop"
- "sleep 10;thunderbird"
+ "telegram-desktop"
+ "thunderbird"
"vesktop"
"spotify"
"slack"
@@ -77,9 +76,9 @@ in {
bind =
[
- ''${mod},RETURN,exec,${pkgs.kitty}/bin/kitty''
+ ''${mod},RETURN,exec,${pkgs.ghostty}/bin/ghostty''
- "${mod},D,exec,killall anyrun || anyrun"
+ "${mod},D,exec,rofi -show drun"
"${mod},Q,killactive"
"${mod},M,exit"
"${mod},P,pseudo"
@@ -139,13 +138,12 @@ in {
decoration = {
# fancy corners
- rounding = 10;
+ rounding = 4;
# blur
blur = {
enabled = true;
- size = 2;
- passes = 5;
- ignore_opacity = false;
+ size = 6;
+ passes = 2;
new_optimizations = 1;
contrast = 1;
brightness = 1;
@@ -153,10 +151,10 @@ in {
shadow = {
# shadow config
- enabled = true;
- range = 60;
- render_power = 5;
- color = "rgba(07061f29)";
+ enabled = false;
+ # range = 60;
+ # render_power = 5;
+ # color = "rgba(07061f29)";
};
};
@@ -166,11 +164,11 @@ in {
force_default_wallpaper = 0;
disable_hyprland_logo = true;
- vfr = false;
+ vfr = true;
# dpms
- mouse_move_enables_dpms = true; # enable dpms on mouse/touchpad action
- key_press_enables_dpms = true; # enable dpms on keyboard action
+ # mouse_move_enables_dpms = true; # enable dpms on mouse/touchpad action
+ # key_press_enables_dpms = true; # enable dpms on keyboard action
disable_autoreload = true; # autoreload is unnecessary on nixos, because the config is readonly anyway
};
@@ -218,6 +216,7 @@ in {
"workspace special silent, title:^(Firefox — Sharing Indicator)$"
"workspace special silent, title:^(.*is sharing (your screen|a window)\.)$"
+ "opacity 0.9 override,class:^(zen)"
"workspace 5, class:^(thunderbird)$"
"workspace 4, title:^(.*(Disc|WebC)ord.*)$"
"workspace 4, class:^(.*Slack.*)$"
@@ -233,12 +232,12 @@ in {
# # fake a tray to let apps start
# # https://github.com/nix-community/home-manager/issues/2064
- # systemd.user.targets.tray = {
- # Unit = {
- # Description = "Home Manager System Tray";
- # Requires = ["graphical-session-pre.target"];
- # };
- # };
+ systemd.user.targets.tray = {
+ Unit = {
+ Description = "Home Manager System Tray";
+ Requires = ["graphical-session-pre.target"];
+ };
+ };
systemd.user.services = {
swaybg = mkService {
diff --git a/modules/home/wms/river/default.nix b/modules/home/wms/river/default.nix
index 24b01e2..04a14bb 100644
--- a/modules/home/wms/river/default.nix
+++ b/modules/home/wms/river/default.nix
@@ -19,13 +19,13 @@ in {
enable = true;
settings = {
spawn = [
- "firefox"
- "kitty"
+ "zen"
+ "ghostty"
];
map = {
normal = {
- "${super} Return" = "spawn kitty";
+ "${super} Return" = "spawn ghostty";
"${super} Q" = "close";
"${super} M" = "exit";
"${super} D" = "spawn anyrun";
diff --git a/modules/nixos/sites/hydra/default.nix b/modules/nixos/sites/hydra/default.nix
index f766e45..89f8a90 100644
--- a/modules/nixos/sites/hydra/default.nix
+++ b/modules/nixos/sites/hydra/default.nix
@@ -38,8 +38,8 @@ in {
"https://github.com"
"git+https://github.com/"
"git+ssh://github.com/"
- "git+https://git.zoeys.computer/"
- "git+ssh://git.zoeys.computer/"
+ "git+https://git.zoeys.cloud/"
+ "git+ssh://git.zoeys.cloud/"
"path:"
];
trustedUsers = ["hydra"]; # Ensure hydra user is trusted for nix
diff --git a/modules/nixos/ui/fonts/default.nix b/modules/nixos/ui/fonts/default.nix
index 76b15f7..bcb0bd3 100644
--- a/modules/nixos/ui/fonts/default.nix
+++ b/modules/nixos/ui/fonts/default.nix
@@ -29,27 +29,26 @@ in {
lexend
jost
dejavu_fonts
- iosevka
- # (pkgs-unstable.iosevka.override {
- # set = "Custom";
- # privateBuildPlan = ''
- # [buildPlans.IosevkaCustom]
- # family = "Iosevka"
- # spacing = "normal"
- # serifs = "sans"
- # noCvSs = true
- # exportGlyphNames = true
- #
- # [buildPlans.IosevkaCustom.variants]
- # inherits = "ss14"
- # '';
- # })
+ # iosevka
+ (iosevka.override {
+ set = "Custom";
+ privateBuildPlan = ''
+ [buildPlans.IosevkaCustom]
+ family = "Iosevka"
+ spacing = "normal"
+ serifs = "sans"
+ noCvSs = true
+ exportGlyphNames = true
+
+ [buildPlans.IosevkaCustom.variants]
+ inherits = "ss03"
+ '';
+ })
noto-fonts
noto-fonts-cjk-sans
noto-fonts-emoji
jetbrains-mono
nerd-fonts.iosevka
- nerd-fonts.zed-mono
# (nerdfonts.override {fonts = ["ZedMono" "Iosevka"];})
];
diff --git a/shells/default/default.nix b/shells/default/default.nix
index 805411f..2fa4fc9 100644
--- a/shells/default/default.nix
+++ b/shells/default/default.nix
@@ -6,6 +6,7 @@
mkShell {
packages = with pkgs; [
nil
+ nixd
alejandra
stylua
lua-language-server
diff --git a/systems/x86_64-linux/earth/default.nix b/systems/x86_64-linux/earth/default.nix
index 4bd083f..04d766a 100644
--- a/systems/x86_64-linux/earth/default.nix
+++ b/systems/x86_64-linux/earth/default.nix
@@ -21,8 +21,8 @@
nix.gc = {
automatic = true;
- dates = "weekly";
- options = "--delete-older-than 14d";
+ dates = "daily";
+ options = "--delete-older-than 1d";
};
hardware.audio.enable = true;
@@ -38,6 +38,8 @@
protocols.wayland.enable = true;
+ programs.openvpn3.enable = true;
+
services.udev.extraRules = ''
KERNEL=="hidraw*", SUBSYSTEM=="hidraw", MODE="0664", GROUP="plugdev"
'';
@@ -81,7 +83,7 @@
# insertNameservers = ["1.1.1.1" "1.0.0.1"];
};
- boot.kernelPackages = lib.custom.pkgs-unstable.linuxPackages_zen;
+ boot.kernelPackages = pkgs.linuxPackages_zen;
boot.supportedFilesystems = ["ntfs"];
services.dlna.enable = false;
@@ -98,14 +100,15 @@
pkgs.mangohud
pkgs.transmission_4
inputs.agenix.packages.${system}.agenix
+ inputs.awsvpnclient.packages."${pkgs.system}".awsvpnclient
];
- programs.zsh.enable = true;
+ programs.fish.enable = true;
users.users.zoey = {
isNormalUser = true;
description = "zoey";
extraGroups = ["networkmanager" "wheel" "docker" "libvirtd" "plugdev"];
- shell = pkgs.zsh;
+ shell = pkgs.fish;
initialHashedPassword = "$6$rounds=2000000$rFBJH7LwdEHvv.0i$HdHorWqp8REPdWPk5fEgZXX1TujRJkMxumGK0f0elFN0KRPlBjJMW2.35A.ID/o3eC/hGTwbSJAcJcwVN2zyV/";
};