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/"; };