From 5eb832fcf7d8657188294e7967f510f82cc0f66f Mon Sep 17 00:00:00 2001 From: pagedMov Date: Sat, 12 Oct 2024 02:34:23 -0400 Subject: [PATCH] Gen 402: created system config for my laptop --- flake.lock | 144 +--- flake.nix | 21 +- glasshouse-desktop/home/hyprland/config.nix | 2 + .../home/scripts/scripts/nixswitch.sh | 2 +- glasshouse-laptop/home/bat.nix | 11 + glasshouse-laptop/home/btop.nix | 21 + glasshouse-laptop/home/cava.nix | 12 + glasshouse-laptop/home/default.nix | 21 + glasshouse-laptop/home/eza.nix | 11 + glasshouse-laptop/home/fuzzel.nix | 35 + glasshouse-laptop/home/gtk.nix | 30 + glasshouse-laptop/home/hyprland/config.nix | 196 +++++ glasshouse-laptop/home/hyprland/default.nix | 8 + glasshouse-laptop/home/hyprland/hyprland.nix | 24 + glasshouse-laptop/home/hyprland/hyprpaper.nix | 18 + glasshouse-laptop/home/kitty.nix | 47 ++ .../home/nixvim/config/autocmd.nix | 24 + .../home/nixvim/config/default.nix | 18 + .../home/nixvim/config/keymaps.nix | 29 + .../home/nixvim/config/options.nix | 41 ++ .../home/nixvim/config/plugins/alpha.nix | 6 + .../home/nixvim/config/plugins/barbar.nix | 8 + .../home/nixvim/config/plugins/cmp.nix | 10 + .../home/nixvim/config/plugins/coq.nix | 8 + .../nixvim/config/plugins/extra_plugins.nix | 51 ++ .../home/nixvim/config/plugins/lsp.nix | 17 + .../home/nixvim/config/plugins/lualine.nix | 36 + .../home/nixvim/config/plugins/nvim-tree.nix | 84 +++ .../home/nixvim/config/plugins/plugins.nix | 22 + .../home/nixvim/config/plugins/telescope.nix | 12 + glasshouse-laptop/home/nixvim/flake.lock | 390 ++++++++++ glasshouse-laptop/home/nixvim/flake.nix | 72 ++ glasshouse-laptop/home/scripts/default.nix | 84 +++ .../home/scripts/scripts/ascii.sh | 45 ++ .../home/scripts/scripts/compress.sh | 10 + glasshouse-laptop/home/scripts/scripts/crs.sh | 4 + .../home/scripts/scripts/extract.sh | 6 + .../home/scripts/scripts/garbage-collect.sh | 26 + .../home/scripts/scripts/homep.sh | 30 + .../home/scripts/scripts/homer.sh | 24 + .../home/scripts/scripts/invoke.sh | 3 + .../home/scripts/scripts/keybinds.sh | 6 + .../home/scripts/scripts/lofi.sh | 7 + .../home/scripts/scripts/maxfetch.sh | 53 ++ glasshouse-laptop/home/scripts/scripts/mcd.sh | 5 + .../home/scripts/scripts/music.sh | 10 + .../home/scripts/scripts/nixcommit.sh | 24 + .../home/scripts/scripts/nixp.sh | 30 + .../home/scripts/scripts/nixr.sh | 24 + .../home/scripts/scripts/nixswitch.sh | 13 + glasshouse-laptop/home/scripts/scripts/nsp.sh | 3 + .../home/scripts/scripts/power-menu.sh | 3 + .../home/scripts/scripts/record.sh | 125 ++++ .../home/scripts/scripts/rofi-power-menu.sh | 281 ++++++++ .../home/scripts/scripts/runbg.sh | 16 + .../home/scripts/scripts/s_check.sh | 3 + .../home/scripts/scripts/screenshot.sh | 34 + .../home/scripts/scripts/shutdown-script.sh | 15 + .../home/scripts/scripts/splash.sh | 6 + .../home/scripts/scripts/switchmon.sh | 3 + .../home/scripts/scripts/toggle_blur.sh | 7 + .../home/scripts/scripts/toggle_float.sh | 5 + .../home/scripts/scripts/toggle_oppacity.sh | 9 + .../home/scripts/scripts/toggle_waybar.sh | 10 + .../home/scripts/scripts/vm-start.sh | 11 + .../home/scripts/scripts/wall-change.sh | 9 + .../home/scripts/scripts/wallpaper-picker.sh | 12 + glasshouse-laptop/home/spicetify.nix | 24 + glasshouse-laptop/home/starship.nix | 61 ++ glasshouse-laptop/home/swaync/config.json | 136 ++++ glasshouse-laptop/home/swaync/style.css | 601 ++++++++++++++++ glasshouse-laptop/home/swaync/swaync.nix | 7 + glasshouse-laptop/home/toilet/flake.lock | 27 + glasshouse-laptop/home/toilet/flake.nix | 47 ++ glasshouse-laptop/home/toilet/result | 1 + glasshouse-laptop/home/userpkgs.nix | 42 ++ glasshouse-laptop/home/waybar/default.nix | 7 + glasshouse-laptop/home/waybar/settings.nix | 149 ++++ glasshouse-laptop/home/waybar/style.nix | 100 +++ glasshouse-laptop/home/waybar/waybar.nix | 10 + glasshouse-laptop/home/yazi.nix | 677 ++++++++++++++++++ glasshouse-laptop/home/zshell.nix | 127 ++++ glasshouse-laptop/sys/bootloader.nix | 10 + glasshouse-laptop/sys/default.nix | 69 ++ glasshouse-laptop/sys/fonts.nix | 9 + glasshouse-laptop/sys/hardware.nix | 55 ++ glasshouse-laptop/sys/network.nix | 15 + glasshouse-laptop/sys/packages.nix | 72 ++ glasshouse-laptop/sys/programs.nix | 20 + glasshouse-laptop/sys/services.nix | 18 + glasshouse-laptop/sys/system.nix | 34 + glasshouse-laptop/sys/users.nix | 34 + 92 files changed, 4609 insertions(+), 130 deletions(-) create mode 100644 glasshouse-laptop/home/bat.nix create mode 100644 glasshouse-laptop/home/btop.nix create mode 100644 glasshouse-laptop/home/cava.nix create mode 100644 glasshouse-laptop/home/default.nix create mode 100644 glasshouse-laptop/home/eza.nix create mode 100644 glasshouse-laptop/home/fuzzel.nix create mode 100644 glasshouse-laptop/home/gtk.nix create mode 100644 glasshouse-laptop/home/hyprland/config.nix create mode 100644 glasshouse-laptop/home/hyprland/default.nix create mode 100644 glasshouse-laptop/home/hyprland/hyprland.nix create mode 100644 glasshouse-laptop/home/hyprland/hyprpaper.nix create mode 100644 glasshouse-laptop/home/kitty.nix create mode 100644 glasshouse-laptop/home/nixvim/config/autocmd.nix create mode 100644 glasshouse-laptop/home/nixvim/config/default.nix create mode 100644 glasshouse-laptop/home/nixvim/config/keymaps.nix create mode 100644 glasshouse-laptop/home/nixvim/config/options.nix create mode 100644 glasshouse-laptop/home/nixvim/config/plugins/alpha.nix create mode 100644 glasshouse-laptop/home/nixvim/config/plugins/barbar.nix create mode 100644 glasshouse-laptop/home/nixvim/config/plugins/cmp.nix create mode 100644 glasshouse-laptop/home/nixvim/config/plugins/coq.nix create mode 100644 glasshouse-laptop/home/nixvim/config/plugins/extra_plugins.nix create mode 100644 glasshouse-laptop/home/nixvim/config/plugins/lsp.nix create mode 100644 glasshouse-laptop/home/nixvim/config/plugins/lualine.nix create mode 100644 glasshouse-laptop/home/nixvim/config/plugins/nvim-tree.nix create mode 100644 glasshouse-laptop/home/nixvim/config/plugins/plugins.nix create mode 100644 glasshouse-laptop/home/nixvim/config/plugins/telescope.nix create mode 100644 glasshouse-laptop/home/nixvim/flake.lock create mode 100644 glasshouse-laptop/home/nixvim/flake.nix create mode 100644 glasshouse-laptop/home/scripts/default.nix create mode 100755 glasshouse-laptop/home/scripts/scripts/ascii.sh create mode 100755 glasshouse-laptop/home/scripts/scripts/compress.sh create mode 100755 glasshouse-laptop/home/scripts/scripts/crs.sh create mode 100755 glasshouse-laptop/home/scripts/scripts/extract.sh create mode 100755 glasshouse-laptop/home/scripts/scripts/garbage-collect.sh create mode 100755 glasshouse-laptop/home/scripts/scripts/homep.sh create mode 100755 glasshouse-laptop/home/scripts/scripts/homer.sh create mode 100755 glasshouse-laptop/home/scripts/scripts/invoke.sh create mode 100755 glasshouse-laptop/home/scripts/scripts/keybinds.sh create mode 100755 glasshouse-laptop/home/scripts/scripts/lofi.sh create mode 100755 glasshouse-laptop/home/scripts/scripts/maxfetch.sh create mode 100755 glasshouse-laptop/home/scripts/scripts/mcd.sh create mode 100755 glasshouse-laptop/home/scripts/scripts/music.sh create mode 100755 glasshouse-laptop/home/scripts/scripts/nixcommit.sh create mode 100755 glasshouse-laptop/home/scripts/scripts/nixp.sh create mode 100755 glasshouse-laptop/home/scripts/scripts/nixr.sh create mode 100755 glasshouse-laptop/home/scripts/scripts/nixswitch.sh create mode 100755 glasshouse-laptop/home/scripts/scripts/nsp.sh create mode 100755 glasshouse-laptop/home/scripts/scripts/power-menu.sh create mode 100755 glasshouse-laptop/home/scripts/scripts/record.sh create mode 100755 glasshouse-laptop/home/scripts/scripts/rofi-power-menu.sh create mode 100755 glasshouse-laptop/home/scripts/scripts/runbg.sh create mode 100755 glasshouse-laptop/home/scripts/scripts/s_check.sh create mode 100755 glasshouse-laptop/home/scripts/scripts/screenshot.sh create mode 100755 glasshouse-laptop/home/scripts/scripts/shutdown-script.sh create mode 100755 glasshouse-laptop/home/scripts/scripts/splash.sh create mode 100755 glasshouse-laptop/home/scripts/scripts/switchmon.sh create mode 100755 glasshouse-laptop/home/scripts/scripts/toggle_blur.sh create mode 100755 glasshouse-laptop/home/scripts/scripts/toggle_float.sh create mode 100755 glasshouse-laptop/home/scripts/scripts/toggle_oppacity.sh create mode 100755 glasshouse-laptop/home/scripts/scripts/toggle_waybar.sh create mode 100755 glasshouse-laptop/home/scripts/scripts/vm-start.sh create mode 100755 glasshouse-laptop/home/scripts/scripts/wall-change.sh create mode 100755 glasshouse-laptop/home/scripts/scripts/wallpaper-picker.sh create mode 100644 glasshouse-laptop/home/spicetify.nix create mode 100644 glasshouse-laptop/home/starship.nix create mode 100644 glasshouse-laptop/home/swaync/config.json create mode 100644 glasshouse-laptop/home/swaync/style.css create mode 100644 glasshouse-laptop/home/swaync/swaync.nix create mode 100644 glasshouse-laptop/home/toilet/flake.lock create mode 100644 glasshouse-laptop/home/toilet/flake.nix create mode 120000 glasshouse-laptop/home/toilet/result create mode 100644 glasshouse-laptop/home/userpkgs.nix create mode 100644 glasshouse-laptop/home/waybar/default.nix create mode 100644 glasshouse-laptop/home/waybar/settings.nix create mode 100644 glasshouse-laptop/home/waybar/style.nix create mode 100644 glasshouse-laptop/home/waybar/waybar.nix create mode 100644 glasshouse-laptop/home/yazi.nix create mode 100644 glasshouse-laptop/home/zshell.nix create mode 100644 glasshouse-laptop/sys/bootloader.nix create mode 100644 glasshouse-laptop/sys/default.nix create mode 100644 glasshouse-laptop/sys/fonts.nix create mode 100644 glasshouse-laptop/sys/hardware.nix create mode 100644 glasshouse-laptop/sys/network.nix create mode 100644 glasshouse-laptop/sys/packages.nix create mode 100644 glasshouse-laptop/sys/programs.nix create mode 100644 glasshouse-laptop/sys/services.nix create mode 100644 glasshouse-laptop/sys/system.nix create mode 100644 glasshouse-laptop/sys/users.nix diff --git a/flake.lock b/flake.lock index ec1bbd8..f7d4e4c 100644 --- a/flake.lock +++ b/flake.lock @@ -1,26 +1,5 @@ { "nodes": { - "agenix": { - "inputs": { - "darwin": "darwin", - "home-manager": "home-manager", - "nixpkgs": "nixpkgs", - "systems": "systems" - }, - "locked": { - "lastModified": 1723293904, - "narHash": "sha256-b+uqzj+Wa6xgMS9aNbX4I+sXeb5biPDi39VgvSFqFvU=", - "owner": "ryantm", - "repo": "agenix", - "rev": "f6291c5935fdc4e0bef208cfc0dcab7e3f7a1c41", - "type": "github" - }, - "original": { - "owner": "ryantm", - "repo": "agenix", - "type": "github" - } - }, "aquamarine": { "inputs": { "hyprutils": [ @@ -118,28 +97,6 @@ "type": "github" } }, - "darwin": { - "inputs": { - "nixpkgs": [ - "agenix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1700795494, - "narHash": "sha256-gzGLZSiOhf155FW7262kdHo2YDeugp3VuIFb4/GGng0=", - "owner": "lnl7", - "repo": "nix-darwin", - "rev": "4b9b83d5a92e8c1fbfd8eb27eda375908c11ec4d", - "type": "github" - }, - "original": { - "owner": "lnl7", - "ref": "master", - "repo": "nix-darwin", - "type": "github" - } - }, "devshell": { "inputs": { "nixpkgs": [ @@ -266,7 +223,7 @@ }, "flake-utils": { "inputs": { - "systems": "systems_4" + "systems": "systems_3" }, "locked": { "lastModified": 1726560853, @@ -383,27 +340,6 @@ } }, "home-manager": { - "inputs": { - "nixpkgs": [ - "agenix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1703113217, - "narHash": "sha256-7ulcXOk63TIT2lVDSExj7XzFx09LpdSAPtvgtM7yQPE=", - "owner": "nix-community", - "repo": "home-manager", - "rev": "3bfaacf46133c037bb356193bd2f1765d9dc82c1", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "home-manager", - "type": "github" - } - }, - "home-manager_2": { "inputs": { "nixpkgs": [ "nixpkgs" @@ -423,7 +359,7 @@ "type": "github" } }, - "home-manager_3": { + "home-manager_2": { "inputs": { "nixpkgs": [ "nvim", @@ -447,7 +383,7 @@ }, "hypr-contrib": { "inputs": { - "nixpkgs": "nixpkgs_2" + "nixpkgs": "nixpkgs" }, "locked": { "lastModified": 1725551787, @@ -500,9 +436,9 @@ "hyprlang": "hyprlang", "hyprutils": "hyprutils", "hyprwayland-scanner": "hyprwayland-scanner", - "nixpkgs": "nixpkgs_3", + "nixpkgs": "nixpkgs_2", "pre-commit-hooks": "pre-commit-hooks", - "systems": "systems_2", + "systems": "systems", "xdph": "xdph" }, "locked": { @@ -579,8 +515,8 @@ "inputs": { "hyprutils": "hyprutils_2", "hyprwayland-scanner": "hyprwayland-scanner_2", - "nixpkgs": "nixpkgs_4", - "systems": "systems_3" + "nixpkgs": "nixpkgs_3", + "systems": "systems_2" }, "locked": { "lastModified": 1727732210, @@ -720,11 +656,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1703013332, - "narHash": "sha256-+tFNwMvlXLbJZXiMHqYq77z/RfmpfpiI3yjL6o/Zo9M=", + "lastModified": 1712163089, + "narHash": "sha256-Um+8kTIrC19vD4/lUCN9/cU9kcOsD1O1m+axJqQPyMM=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "54aac082a4d9bb5bbc5c4e899603abfb76a3f6d6", + "rev": "fd281bd6b7d3e32ddfa399853946f782553163b5", "type": "github" }, "original": { @@ -779,22 +715,6 @@ } }, "nixpkgs_2": { - "locked": { - "lastModified": 1712163089, - "narHash": "sha256-Um+8kTIrC19vD4/lUCN9/cU9kcOsD1O1m+axJqQPyMM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "fd281bd6b7d3e32ddfa399853946f782553163b5", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_3": { "locked": { "lastModified": 1728018373, "narHash": "sha256-NOiTvBbRLIOe5F6RbHaAh6++BNjsb149fGZd1T4+KBg=", @@ -810,7 +730,7 @@ "type": "github" } }, - "nixpkgs_4": { + "nixpkgs_3": { "locked": { "lastModified": 1727122398, "narHash": "sha256-o8VBeCWHBxGd4kVMceIayf5GApqTavJbTa44Xcg5Rrk=", @@ -826,7 +746,7 @@ "type": "github" } }, - "nixpkgs_5": { + "nixpkgs_4": { "locked": { "lastModified": 1728492678, "narHash": "sha256-9UTxR8eukdg+XZeHgxW5hQA9fIKHsKCdOIUycTryeVw=", @@ -842,7 +762,7 @@ "type": "github" } }, - "nixpkgs_6": { + "nixpkgs_5": { "locked": { "lastModified": 1727348695, "narHash": "sha256-J+PeFKSDV+pHL7ukkfpVzCOO7mBSrrpJ3svwBFABbhI=", @@ -858,7 +778,7 @@ "type": "github" } }, - "nixpkgs_7": { + "nixpkgs_6": { "locked": { "lastModified": 1726937504, "narHash": "sha256-bvGoiQBvponpZh8ClUcmJ6QnsNKw0EMrCQJARK3bI1c=", @@ -880,7 +800,7 @@ "flake-compat": "flake-compat_2", "flake-parts": "flake-parts_2", "git-hooks": "git-hooks", - "home-manager": "home-manager_3", + "home-manager": "home-manager_2", "nix-darwin": "nix-darwin", "nixpkgs": [ "nvim", @@ -929,7 +849,7 @@ "nvim": { "inputs": { "flake-parts": "flake-parts", - "nixpkgs": "nixpkgs_6", + "nixpkgs": "nixpkgs_5", "nixvim": "nixvim", "pre-commit-hooks": "pre-commit-hooks_2" }, @@ -994,16 +914,15 @@ }, "root": { "inputs": { - "agenix": "agenix", "catppuccin-bat": "catppuccin-bat", "catppuccin-cava": "catppuccin-cava", "catppuccin-starship": "catppuccin-starship", "catppuccin-yazi": "catppuccin-yazi", - "home-manager": "home-manager_2", + "home-manager": "home-manager", "hypr-contrib": "hypr-contrib", "hyprland": "hyprland", "hyprpicker": "hyprpicker", - "nixpkgs": "nixpkgs_5", + "nixpkgs": "nixpkgs_4", "nvim": "nvim", "spicetify-nix": "spicetify-nix", "toilet": "toilet" @@ -1032,16 +951,16 @@ }, "systems": { "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" } }, @@ -1061,21 +980,6 @@ } }, "systems_3": { - "locked": { - "lastModified": 1689347949, - "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=", - "owner": "nix-systems", - "repo": "default-linux", - "rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default-linux", - "type": "github" - } - }, - "systems_4": { "locked": { "lastModified": 1681028828, "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", @@ -1092,7 +996,7 @@ }, "toilet": { "inputs": { - "nixpkgs": "nixpkgs_7" + "nixpkgs": "nixpkgs_6" }, "locked": { "lastModified": 1728587838, diff --git a/flake.nix b/flake.nix index a32dc78..d4c7757 100644 --- a/flake.nix +++ b/flake.nix @@ -38,31 +38,34 @@ inputs.nixpkgs.follows = "nixpkgs"; }; - agenix.url = "github:ryantm/agenix"; - #glasshouse-desktop dots nvim.url = "path:/home/pagedmov/sysflakes/glasshouse-desktop/home/nixvim"; toilet.url = "path:/home/pagedmov/sysflakes/glasshouse-desktop/home/toilet"; }; - outputs = { nixpkgs, home-manager, self, agenix, nvim, toilet, ... }@inputs: + outputs = { nixpkgs, home-manager, self, nvim, toilet, ... }@inputs: let system = "x86_64-linux"; username = "pagedmov"; - allowed-unfree-packages = [ - "foundryvtt" - ]; in { nixosConfigurations = { - glasshouse = nixpkgs.lib.nixosSystem { + glasshouse-desktop = nixpkgs.lib.nixosSystem { specialArgs = { - inherit self inputs allowed-unfree-packages username; + inherit self inputs username; }; inherit system; modules = [ ./glasshouse-desktop/sys - agenix.nixosModules.default + ]; + }; + + glasshouse-laptop = nixpkgs.lib.nixosSystem { + specialArgs = { + inherit self inputs username; + }; + modules = [ + ./glasshouse-laptop/sys ]; }; }; diff --git a/glasshouse-desktop/home/hyprland/config.nix b/glasshouse-desktop/home/hyprland/config.nix index bcd140c..eb74ec5 100644 --- a/glasshouse-desktop/home/hyprland/config.nix +++ b/glasshouse-desktop/home/hyprland/config.nix @@ -134,11 +134,13 @@ "super, up, exec, pactl set-sink-volume @default_sink@ +10%" "super, down, exec, pactl set-sink-volume @default_sink@ -10%" "super, print, exec, grimblast copy area" + "super, t, exec, swaync-client -t -sw" "super, a, exec, firefox" "super, q, exec, kitty --title Kitty" "super, d, exec, switchmon" "super, c, killactive," "super, e, exec, [float;size 45% 70%;move 10 50] kitty btop" + "super, n, exec, [float;size 50% 35%;move 10 50] pavucontrol" "super shift, q, exit," "super, m, exec, fuzzel" "super, r, exec, neovide" diff --git a/glasshouse-desktop/home/scripts/scripts/nixswitch.sh b/glasshouse-desktop/home/scripts/scripts/nixswitch.sh index 3f273a6..2cadca8 100755 --- a/glasshouse-desktop/home/scripts/scripts/nixswitch.sh +++ b/glasshouse-desktop/home/scripts/scripts/nixswitch.sh @@ -4,7 +4,7 @@ scheck && runbg aplay ~/media/sound/sys/nixswitch-start.wav builtin cd "$HOME/sysflakes" || exit nix flake update -sudo nixos-rebuild switch --flake "$HOME/sysflakes#glasshouse" +sudo nixos-rebuild switch --flake "$HOME/sysflakes#glasshouse-desktop" if [ $? -eq 0 ]; then scheck && runbg aplay ~/media/sound/sys/update.wav else diff --git a/glasshouse-laptop/home/bat.nix b/glasshouse-laptop/home/bat.nix new file mode 100644 index 0000000..3c30256 --- /dev/null +++ b/glasshouse-laptop/home/bat.nix @@ -0,0 +1,11 @@ +{ inputs, ... }: + +{ + programs.bat = { + enable = true; + config = { + pager = "less -FR"; + theme = "Dracula"; + }; + }; +} diff --git a/glasshouse-laptop/home/btop.nix b/glasshouse-laptop/home/btop.nix new file mode 100644 index 0000000..469f116 --- /dev/null +++ b/glasshouse-laptop/home/btop.nix @@ -0,0 +1,21 @@ +{ pkgs, ... }: + +{ + programs.btop = { + enable = true; + + settings = { + color_theme = "tokyo-night"; + theme_background = false; + update_ms = 500; + vim_keys = true; + proc_tree = true; + temp_scale = "fahrenheit"; + disks_filter = "exclude=/boot"; + show_swap = false; + swap_disk = false; + }; + }; + + home.packages = (with pkgs; [ nvtopPackages.intel ]); +} diff --git a/glasshouse-laptop/home/cava.nix b/glasshouse-laptop/home/cava.nix new file mode 100644 index 0000000..450dc75 --- /dev/null +++ b/glasshouse-laptop/home/cava.nix @@ -0,0 +1,12 @@ +{ inputs, pkgs, ... }: + +{ + programs.cava = { + enable = true; + }; + + # https://github.com/catppuccin/cava + home.file.".config/cava/config".text = '' + # custom cava config + '' + builtins.readFile "${inputs.catppuccin-cava}/themes/mocha.cava"; +} diff --git a/glasshouse-laptop/home/default.nix b/glasshouse-laptop/home/default.nix new file mode 100644 index 0000000..fd22530 --- /dev/null +++ b/glasshouse-laptop/home/default.nix @@ -0,0 +1,21 @@ +{ inputs, username, system, ... }: + +{ + imports = + [ (import ./btop.nix) ] + ++ [ (import ./bat.nix) ] + ++ [ (import ./cava.nix) ] + ++ [ (import ./fuzzel.nix) ] + ++ [ (import ./gtk.nix) ] + ++ [ (import ./hyprland) ] + ++ [ (import ./kitty.nix) ] + ++ [ (import ./spicetify.nix) ] + ++ [ (import ./starship.nix) ] + ++ [ (import ./scripts) ] + ++ [ (import ./yazi.nix) ] + ++ [ (import ./swaync/swaync.nix)] + ++ [ (import ./userpkgs.nix) ] + ++ [ (import ./waybar) ] + ++ [ (import ./eza.nix) ] + ++ [ (import ./zshell.nix) ]; +} diff --git a/glasshouse-laptop/home/eza.nix b/glasshouse-laptop/home/eza.nix new file mode 100644 index 0000000..42b5479 --- /dev/null +++ b/glasshouse-laptop/home/eza.nix @@ -0,0 +1,11 @@ +{ ... }: + +{ + programs.eza = { + enable = true; + enableZshIntegration = false; + extraOptions = [ "-1" "-h" "--group-directories-first" ]; + icons = true; + git = true; + }; +} diff --git a/glasshouse-laptop/home/fuzzel.nix b/glasshouse-laptop/home/fuzzel.nix new file mode 100644 index 0000000..7ddf7ab --- /dev/null +++ b/glasshouse-laptop/home/fuzzel.nix @@ -0,0 +1,35 @@ +{ ... }: + +{ + programs.fuzzel = { + enable = true; + settings = { + main = { + font = "JetBrainsMono Nerd Font:weight=bold:size=14"; + line-height = 25; + fields = "name,generic,comment,categories,filename,keywords"; + terminal = "kitty"; + prompt = "' ➜ '" ; + icon-theme = "Papirus-Dark"; + layer = "top"; + lines = 10; + width = 35; + horizontal-pad = 25; + inner-pad = 5; + }; + colors = { + background = "1e1e2ecc"; + text = "cdd6f4ff"; + match = "f38ba8ff"; + selection = "b4befeaa"; + selection-match = "f38ba8ff"; + selection-text = "cdd6f4ff"; + border = "b4befeff"; + }; + border = { + radius = 15; + width = 3; + }; + }; + }; +} diff --git a/glasshouse-laptop/home/gtk.nix b/glasshouse-laptop/home/gtk.nix new file mode 100644 index 0000000..972e72f --- /dev/null +++ b/glasshouse-laptop/home/gtk.nix @@ -0,0 +1,30 @@ +{ pkgs, config, ... }: + +{ + fonts.fontconfig.enable = true; + home.packages = [ + pkgs.nerdfonts + (pkgs.nerdfonts.override { fonts = [ "JetBrainsMono" "Noto" ]; }) + pkgs.twemoji-color-font + pkgs.noto-fonts-emoji + ]; + + gtk = { + enable = true; + font = { + name = "JetBrainsMono Nerd Font"; + size = 11; + }; + iconTheme = { + name = "Papirus-Dark"; + package = pkgs.catppuccin-papirus-folders.override { + flavor = "mocha"; + accent = "lavender"; + }; + }; + theme = { + name = "Dracula"; + package = pkgs.dracula-theme; + }; + }; +} diff --git a/glasshouse-laptop/home/hyprland/config.nix b/glasshouse-laptop/home/hyprland/config.nix new file mode 100644 index 0000000..eb74ec5 --- /dev/null +++ b/glasshouse-laptop/home/hyprland/config.nix @@ -0,0 +1,196 @@ +{ username, ... }: + +{ + wayland.windowManager.hyprland = { + settings = { + + monitor = [ + "DP-1, 1920x1080@144, 1920x0, 1" + "HDMI-A-1, 1920x1080, 0x0, 1" + ]; + + exec-once = [ + "waybar &" + "swaync &" + "wl-paste --watch cliphist store &" + "wl-clip-persist --clipboard both" + "systemctl --user import-environment &" + "hash dbus-update-activation-environment 2>/dev/null &" + "dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP &" + "aplay /home/${username}/sound/sys/login.wav &" + ]; + + workspace = [ + "1,persistent=true,monitor:HDMI-A-1" + "2,persistent=true,monitor:HDMI-A-1" + "3,persistent=true,monitor:HDMI-A-1" + "4,persistent=true,monitor:DP-1" + "5,persistent=true,monitor:DP-1" + "6,persistent=true,monitor:DP-1" + ]; + + input = { + kb_layout = "us"; + follow_mouse = 1; + accel_profile = "flat"; + force_no_accel = 1; + sensitivity = 0; + }; + + general = { + "$mainMod" = "super"; + layout = "dwindle"; + gaps_in = 4; + gaps_out = 8; + border_size = 2; + "col.active_border" = "rgb(cba6f7) rgb(94e2d5) 45deg"; + "col.inactive_border" = "0x00000000"; + border_part_of_window = false; + no_border_on_floating = false; + }; + misc = { + disable_autoreload = true; + disable_hyprland_logo = true; + always_follow_on_dnd = true; + layers_hog_keyboard_focus = true; + animate_manual_resizes = false; + enable_swallow = true; + focus_on_activate = true; + }; + + dwindle = { + no_gaps_when_only = false; + force_split = 0; + special_scale_factor = 1.0; + split_width_multiplier = 1.0; + use_active_for_splits = true; + pseudotile = "yes"; + preserve_split = "yes"; + }; + + master = { + new_status = "master"; + special_scale_factor = 1; + no_gaps_when_only = false; + }; + + decoration = { + rounding = 7; + # active_opacity = 0.90; + # inactive_opacity = 0.90; + # fullscreen_opacity = 1.0; + + blur = { + enabled = true; + size = 1; + passes = 1; + # size = 4; + # passes = 2; + brightness = 1; + contrast = 1.400; + ignore_opacity = true; + noise = 0; + new_optimizations = true; + xray = true; + }; + + drop_shadow = true; + + shadow_ignore_window = true; + shadow_offset = "0 2"; + shadow_range = 20; + shadow_render_power = 3; + "col.shadow" = "rgba(00000055)"; + }; + + animations = { + enabled = true; + + bezier = [ + "fluent_decel, 0, 0.2, 0.4, 1" + "easeOutCirc, 0, 0.55, 0.45, 1" + "easeOutCubic, 0.33, 1, 0.68, 1" + "easeinoutsine, 0.37, 0, 0.63, 1" + ]; + + animation = [ + # Windows + "windowsIn, 1, 3, easeOutCubic, popin 30%" # window open + "windowsOut, 1, 3, fluent_decel, popin 70%" # window close. + "windowsMove, 1, 2, easeinoutsine, slide" # everything in between, moving, dragging, resizing. + + # Fade + "fadeIn, 1, 3, easeOutCubic" # fade in (open) -> layers and windows + "fadeOut, 1, 2, easeOutCubic" # fade out (close) -> layers and windows + "fadeSwitch, 0, 1, easeOutCirc" # fade on changing activewindow and its opacity + "fadeShadow, 1, 10, easeOutCirc" # fade on changing activewindow for shadows + "fadeDim, 1, 4, fluent_decel" # the easing of the dimming of inactive windows + "border, 1, 2.7, easeOutCirc" # for animating the border's color switch speed + "borderangle, 1, 30, fluent_decel, once" # for animating the border's gradient angle - styles: once (default), loop + "workspaces, 1, 4, easeOutCubic, fade" # styles: slide, slidevert, fade, slidefade, slidefadevert + ]; + + bind = [ + "super, up, exec, pactl set-sink-volume @default_sink@ +10%" + "super, down, exec, pactl set-sink-volume @default_sink@ -10%" + "super, print, exec, grimblast copy area" + "super, t, exec, swaync-client -t -sw" + "super, a, exec, firefox" + "super, q, exec, kitty --title Kitty" + "super, d, exec, switchmon" + "super, c, killactive," + "super, e, exec, [float;size 45% 70%;move 10 50] kitty btop" + "super, n, exec, [float;size 50% 35%;move 10 50] pavucontrol" + "super shift, q, exit," + "super, m, exec, fuzzel" + "super, r, exec, neovide" + "super, p, pseudo, # dwindle" + "super, b, togglesplit, # dwindle" + "super, f, togglefloating" + "super, g, fullscreen" + "super, home, exec, /home/${username}/scripts/home.sh" + "super, h, movefocus, l" + "super, l, movefocus, r" + "super, k, movefocus, u" + "super, j, movefocus, d" + "super, 1, exec, hyprctl 'dispatch workspace 1'" + "super, 2, exec, hyprctl 'dispatch workspace 2'" + "super, 3, exec, hyprctl 'dispatch workspace 3'" + "super, 4, exec, hyprctl 'dispatch workspace 4'" + "super, 5, exec, hyprctl 'dispatch workspace 5'" + "super, 6, exec, hyprctl 'dispatch workspace 6'" + "super, 7, exec, hyprctl 'dispatch workspace 7'" + "super, 8, exec, hyprctl 'dispatch workspace 8'" + "super, 9, exec, hyprctl 'dispatch workspace 9'" + "super, 0, exec, hyprctl 'dispatch workspace 10'" + "super alt, g, togglegroup" + "super alt, h, changegroupactive, b" + "super alt, l, changegroupactive, f" + "super shift, h, movewindoworgroup, l" + "super shift, l, movewindoworgroup, r" + "super shift, k, movewindoworgroup, u" + "super shift, j, movewindoworgroup, d" + "super shift, 1, movetoworkspace, 1" + "super shift, 2, movetoworkspace, 2" + "super shift, 3, movetoworkspace, 3" + "super shift, 4, movetoworkspace, 4" + "super shift, 5, movetoworkspace, 5" + "super shift, 6, movetoworkspace, 6" + "super shift, 7, movetoworkspace, 7" + "super shift, 8, movetoworkspace, 8" + "super shift, 9, movetoworkspace, 9" + "super shift, 0, movetoworkspace, 10" + "super, s, togglespecialworkspace, magic" + "super shift, s, movetoworkspace, special:magic" + "alt, grave, togglespecialworkspace, console" + "super, mouse_down, workspace, e+1" + "super, mouse_up, workspace, e-1" + ]; + bindm = [ + "super, mouse:272, movewindow" + "super, mouse:273, resizewindow" + ]; + }; + }; + }; +} diff --git a/glasshouse-laptop/home/hyprland/default.nix b/glasshouse-laptop/home/hyprland/default.nix new file mode 100644 index 0000000..27b67c6 --- /dev/null +++ b/glasshouse-laptop/home/hyprland/default.nix @@ -0,0 +1,8 @@ +{ inputs, ... }: + +{ + imports = + [ (import ./hyprland.nix) ] + ++ [ (import ./config.nix) ] + ++ [ (import ./hyprpaper.nix) ]; +} diff --git a/glasshouse-laptop/home/hyprland/hyprland.nix b/glasshouse-laptop/home/hyprland/hyprland.nix new file mode 100644 index 0000000..730a923 --- /dev/null +++ b/glasshouse-laptop/home/hyprland/hyprland.nix @@ -0,0 +1,24 @@ +{ inputs, pkgs, ... }: + +{ + home.packages = with pkgs; [ + swaybg + inputs.hypr-contrib.packages.${pkgs.system}.grimblast + hyprpicker + grim + slurp + wl-clip-persist + wf-recorder + glib + wayland + direnv + ]; + systemd.user.targets.hyprland-session.Unit.Wants = [ "xdg-desktop-autostart.target" ]; + wayland.windowManager.hyprland = { + enable = true; + xwayland = { + enable = true; + }; + systemd.enable = true; + }; +} diff --git a/glasshouse-laptop/home/hyprland/hyprpaper.nix b/glasshouse-laptop/home/hyprland/hyprpaper.nix new file mode 100644 index 0000000..6df7733 --- /dev/null +++ b/glasshouse-laptop/home/hyprland/hyprpaper.nix @@ -0,0 +1,18 @@ +{ username, ... }: + +{ + services.hyprpaper = { + enable = true; + settings = { + ipc = "on"; + splash = false; + splash_offset = 2.0; + preload = [ "/home/${username}/Pictures/Wallpapers/cat-leaves.png" ]; + + wallpaper = [ + "DP-1,/home/${username}/Pictures/Wallpapers/cat-leaves.png" + "HDMI-A-1,/home/${username}/Pictures/Wallpapers/cat-leaves.png" + ]; + }; + }; +} diff --git a/glasshouse-laptop/home/kitty.nix b/glasshouse-laptop/home/kitty.nix new file mode 100644 index 0000000..a50c0c3 --- /dev/null +++ b/glasshouse-laptop/home/kitty.nix @@ -0,0 +1,47 @@ +{ pkgs, ... }: + +{ + programs.kitty = { + enable = true; + + themeFile = "Catppuccin-Mocha"; + + font = { + name = "JetBrainsMono Nerd Font"; + size = 13; + }; + + settings = { + confirm_os_window_close = 0; + background_opacity = "0.60"; + window_padding_width = 10; + scrollback_lines = 10000; + enable_audio_bell = false; + allow_remote_control = true; + mouse_hide_wait = 60; + + ## Tabs + tab_title_template = "{index}"; + active_tab_font_style = "normal"; + inactive_tab_font_style = "normal"; + tab_bar_style = "powerline"; + tab_powerline_style = "round"; + active_tab_foreground = "#1e1e2e"; + active_tab_background = "#cba6f7"; + inactive_tab_foreground = "#bac2de"; + inactive_tab_background = "#313244"; + }; + + keybindings = { + ## Tabs + "alt+1" = "goto_tab 1"; + "alt+2" = "goto_tab 2"; + "alt+3" = "goto_tab 3"; + "alt+4" = "goto_tab 4"; + + ## Unbind + "ctrl+shift+left" = "no_op"; + "ctrl+shift+right" = "no_op"; + }; + }; +} diff --git a/glasshouse-laptop/home/nixvim/config/autocmd.nix b/glasshouse-laptop/home/nixvim/config/autocmd.nix new file mode 100644 index 0000000..f44c6d1 --- /dev/null +++ b/glasshouse-laptop/home/nixvim/config/autocmd.nix @@ -0,0 +1,24 @@ +{ + autoCmd = [ + { + command = "FloatermNew --wintype=float --name=shadeterm --position=topright --autoclose=0 --silent --cwd= --titleposition=left zsh"; + event = [ "VimEnter" ]; + pattern = [ "*" ]; + } + { + command = "silent! mkview"; + event = [ "BufWinLeave" ]; + pattern = [ "*" ]; + } + { + command = "silent! !aplay ~/sound/sys/cd.wav > /dev/null 2>&1 &"; + event = [ "BufWinLeave" ]; + pattern = [ "*" ]; + } + { + command = "silent! loadview"; + event = [ "BufWinEnter" ]; + pattern = [ "*" ]; + } + ]; +} diff --git a/glasshouse-laptop/home/nixvim/config/default.nix b/glasshouse-laptop/home/nixvim/config/default.nix new file mode 100644 index 0000000..d387b6a --- /dev/null +++ b/glasshouse-laptop/home/nixvim/config/default.nix @@ -0,0 +1,18 @@ +{ + imports = [ + ./plugins/alpha.nix + ./plugins/coq.nix + ./plugins/barbar.nix + ./plugins/cmp.nix + ./plugins/lsp.nix + ./plugins/lualine.nix + ./plugins/plugins.nix + ./plugins/nvim-tree.nix + ./plugins/telescope.nix + ./plugins/extra_plugins.nix + ./options.nix + ./keymaps.nix + ./autocmd.nix + ]; +} + diff --git a/glasshouse-laptop/home/nixvim/config/keymaps.nix b/glasshouse-laptop/home/nixvim/config/keymaps.nix new file mode 100644 index 0000000..ad26586 --- /dev/null +++ b/glasshouse-laptop/home/nixvim/config/keymaps.nix @@ -0,0 +1,29 @@ +{ + keymaps = [ + { + action = "W"; + key = ""; + mode = "n"; + } + { + action = "w"; + key = ""; + mode = "n"; + } + { + action = "FloatermToggle shadeterm"; + key = ""; + mode = "n"; + } + { + action = "NvimTreeToggle"; + key = ""; + mode = "n"; + } + { + action = "FloatermToggle shadeterm"; + key = ""; + mode = "t"; + } + ]; +} diff --git a/glasshouse-laptop/home/nixvim/config/options.nix b/glasshouse-laptop/home/nixvim/config/options.nix new file mode 100644 index 0000000..19b85a7 --- /dev/null +++ b/glasshouse-laptop/home/nixvim/config/options.nix @@ -0,0 +1,41 @@ +{ + colorschemes = { + catppuccin = { + enable = true; + settings.flavour = "mocha"; + }; + kanagawa = { + enable = false; + }; + }; + + diagnostics.signs = false; + extraConfigLua = '' + if vim.g.started_by_firenvim == true then + vim.o.laststatus = 0 + end + if vim.g.neovide then + vim.g.neovide_refresh_rate = 144 + vim.g.neovide_cursor_vfx_mode = "sonicboom" + vim.g.neovide_cursor_animate_in_insert_mode = false + end + + vim.opt.number = true + vim.opt.relativenumber = true + vim.opt.hlsearch = true + vim.opt.incsearch = true + vim.opt.shiftwidth = 4 + vim.opt.tabstop = 4 + vim.opt.termguicolors = true + vim.opt.ruler = true + vim.opt.scrolloff = 6 + vim.opt.undofile = true + vim.opt.foldmethod = "manual" + vim.opt.wrap = true + vim.opt.linebreak = true + vim.opt.textwidth = 135 + vim.opt.breakat = " \t!@*-+;:,./?" + + vim.g.mapleader = "!" + ''; +} diff --git a/glasshouse-laptop/home/nixvim/config/plugins/alpha.nix b/glasshouse-laptop/home/nixvim/config/plugins/alpha.nix new file mode 100644 index 0000000..c4296cb --- /dev/null +++ b/glasshouse-laptop/home/nixvim/config/plugins/alpha.nix @@ -0,0 +1,6 @@ +{ + plugins.alpha = { + enable = true; + theme = "dashboard"; + }; +} diff --git a/glasshouse-laptop/home/nixvim/config/plugins/barbar.nix b/glasshouse-laptop/home/nixvim/config/plugins/barbar.nix new file mode 100644 index 0000000..21da2f1 --- /dev/null +++ b/glasshouse-laptop/home/nixvim/config/plugins/barbar.nix @@ -0,0 +1,8 @@ +{ + plugins.barbar = { + enable = true; + settings = { + auto_hide = 1; + }; + }; +} diff --git a/glasshouse-laptop/home/nixvim/config/plugins/cmp.nix b/glasshouse-laptop/home/nixvim/config/plugins/cmp.nix new file mode 100644 index 0000000..dadf763 --- /dev/null +++ b/glasshouse-laptop/home/nixvim/config/plugins/cmp.nix @@ -0,0 +1,10 @@ +{ + plugins.cmp = { + autoEnableSources = true; + settings.sources = [ + { name = "nvim_lsp"; } + { name = "path"; } + { name = "buffer"; } + ]; + }; +} diff --git a/glasshouse-laptop/home/nixvim/config/plugins/coq.nix b/glasshouse-laptop/home/nixvim/config/plugins/coq.nix new file mode 100644 index 0000000..39bc606 --- /dev/null +++ b/glasshouse-laptop/home/nixvim/config/plugins/coq.nix @@ -0,0 +1,8 @@ +{ + plugins.coq-nvim = { + enable = true; + settings = { + auto_start = true; + }; + }; +} diff --git a/glasshouse-laptop/home/nixvim/config/plugins/extra_plugins.nix b/glasshouse-laptop/home/nixvim/config/plugins/extra_plugins.nix new file mode 100644 index 0000000..f474d0d --- /dev/null +++ b/glasshouse-laptop/home/nixvim/config/plugins/extra_plugins.nix @@ -0,0 +1,51 @@ +{ pkgs, ... }: + +{ + extraPlugins = [ + (pkgs.vimUtils.buildVimPlugin { # vimwiki + name = "vimwiki"; + src = pkgs.fetchFromGitHub { + owner = "vimwiki"; + repo = "vimwiki"; + rev = "705ad1e0dded0e3b7ff5fac78547ab67c9d39bdf"; + hash = "sha256-Upx29rIPwW/e7Lkmf0PNOpIACnAXIzlkfa6V1p2nYHM="; + }; + }) + (pkgs.vimUtils.buildVimPlugin { + name = "vim-markdown"; + src = pkgs.fetchFromGitHub { + owner = "preservim"; + repo = "vim-markdown"; + rev = "8f6cb3a6ca4e3b6bcda0730145a0b700f3481b51"; + hash = "sha256-ZCCSjZ5Xok4rnIwfa4VUEaz6d3oW9066l0EkoqiTppM="; + }; + }) + (pkgs.vimUtils.buildVimPlugin { + name = "vim-sneak"; + src = pkgs.fetchFromGitHub { + owner = "justinmk"; + repo = "vim-sneak"; + rev = "c13d0497139b8796ff9c44ddb9bc0dc9770ad2dd"; + hash = "sha256-ndWhnV0fgCcqCGwVyM07GfmUB3CitBZbOWvZtsB1tBk="; + }; + }) + (pkgs.vimUtils.buildVimPlugin { + name = "vim-slash"; + src = pkgs.fetchFromGitHub { + owner = "junegunn"; + repo = "vim-slash"; + rev = "31aee09b7ea8893a18fa34f65e63e364fc998444"; + hash = "sha256-hC590lmKBssLCSKPF9O2cnt6TCJkklzbbhDNhf1ozUU="; + }; + }) + (pkgs.vimUtils.buildVimPlugin { + name = "automkdir.nvim"; + src = pkgs.fetchFromGitHub { + owner = "mateuszwieloch"; + repo = "automkdir.nvim"; + rev = "beeb2dd76f1c3ac776d901c43217a774f1f045de"; + hash = "sha256-lKSCZ80b/+OV56858FDK7x/zhcuU/AWuCDe+8NdhziU="; + }; + }) + ]; +} diff --git a/glasshouse-laptop/home/nixvim/config/plugins/lsp.nix b/glasshouse-laptop/home/nixvim/config/plugins/lsp.nix new file mode 100644 index 0000000..923503c --- /dev/null +++ b/glasshouse-laptop/home/nixvim/config/plugins/lsp.nix @@ -0,0 +1,17 @@ +{ + plugins.lsp = { + enable = true; + servers = { + bashls.enable = true; + ccls.enable = true; + clangd.enable = true; + cmake.enable = true; + html.enable = true; + jsonls.enable = true; + lua-ls.enable = true; + nil-ls.enable = true; + pyright.enable = true; + sqls.enable = true; + }; + }; +} diff --git a/glasshouse-laptop/home/nixvim/config/plugins/lualine.nix b/glasshouse-laptop/home/nixvim/config/plugins/lualine.nix new file mode 100644 index 0000000..8ed1050 --- /dev/null +++ b/glasshouse-laptop/home/nixvim/config/plugins/lualine.nix @@ -0,0 +1,36 @@ +{ + plugins.lualine = { + enable = true; + settings = { + options = { + icons_enabled = true; + theme = "auto"; + component_separators = {left = ""; right = "";}; + section_separators = {left = ""; right = "";}; + always_divide_middle = true; + globalstatus = false; + refresh = { + statusline = 1000; + tabline = 1000; + winbar = 1000; + }; + }; + sections = { + lualine_a = ["mode"]; + lualine_b = ["buffers"]; + lualine_c = [""]; + lualine_x = ["searchcount" "fileformat" "filetype"]; + lualine_y = ["branch" "diff" "diagnostics"]; + lualine_z = ["location"]; + }; + inactive_sections = { + lualine_a = []; + lualine_b = []; + lualine_c = ["filename"]; + lualine_x = ["location"]; + lualine_y = []; + lualine_z = []; + }; + }; +}; +} diff --git a/glasshouse-laptop/home/nixvim/config/plugins/nvim-tree.nix b/glasshouse-laptop/home/nixvim/config/plugins/nvim-tree.nix new file mode 100644 index 0000000..dcf5d49 --- /dev/null +++ b/glasshouse-laptop/home/nixvim/config/plugins/nvim-tree.nix @@ -0,0 +1,84 @@ +{ + plugins.nvim-tree = { + enable = true; + hijackUnnamedBufferWhenOpening = false; + openOnSetup = false; + onAttach = { __raw = '' + function(bufnr) +local api = require('nvim-tree.api') + + local function opts(desc) + return { desc = 'nvim-tree: ' .. desc, buffer = bufnr, noremap = true, silent = true, nowait = true } + end + + -- BEGIN_DEFAULT_ON_ATTACH + vim.keymap.set('n', '', api.tree.change_root_to_node, opts('CD')) + vim.keymap.set('n', '', api.node.open.replace_tree_buffer, opts('Open: In Place')) + vim.keymap.set('n', '', api.node.show_info_popup, opts('Info')) + vim.keymap.set('n', '', api.fs.rename_sub, opts('Rename: Omit Filename')) + vim.keymap.set('n', '', api.node.open.tab, opts('Open: New Tab')) + vim.keymap.set('n', '', api.node.open.vertical, opts('Open: Vertical Split')) + vim.keymap.set('n', '', api.node.open.horizontal, opts('Open: Horizontal Split')) + vim.keymap.set('n', '', api.node.navigate.parent_close, opts('Close Directory')) + vim.keymap.set('n', '', api.node.open.edit, opts('Open')) + vim.keymap.set('n', 'b', api.node.open.preview, opts('Open Preview')) + vim.keymap.set('n', '>', api.node.navigate.sibling.next, opts('Next Sibling')) + vim.keymap.set('n', '<', api.node.navigate.sibling.prev, opts('Previous Sibling')) + vim.keymap.set('n', '.', api.node.run.cmd, opts('Run Command')) + vim.keymap.set('n', '-', api.tree.change_root_to_parent, opts('Up')) + vim.keymap.set('n', 'a', api.fs.create, opts('Create File Or Directory')) + vim.keymap.set('n', 'bd', api.marks.bulk.delete, opts('Delete Bookmarked')) + vim.keymap.set('n', 'bt', api.marks.bulk.trash, opts('Trash Bookmarked')) + vim.keymap.set('n', 'bmv', api.marks.bulk.move, opts('Move Bookmarked')) + vim.keymap.set('n', 'B', api.tree.toggle_no_buffer_filter, opts('Toggle Filter: No Buffer')) + vim.keymap.set('n', 'c', api.fs.copy.node, opts('Copy')) + vim.keymap.set('n', 'C', api.tree.toggle_git_clean_filter, opts('Toggle Filter: Git Clean')) + vim.keymap.set('n', '[c', api.node.navigate.git.prev, opts('Prev Git')) + vim.keymap.set('n', ']c', api.node.navigate.git.next, opts('Next Git')) + vim.keymap.set('n', 'd', api.fs.remove, opts('Delete')) + vim.keymap.set('n', 'D', api.fs.trash, opts('Trash')) + vim.keymap.set('n', 'E', api.tree.expand_all, opts('Expand All')) + vim.keymap.set('n', 'e', api.fs.rename_basename, opts('Rename: Basename')) + vim.keymap.set('n', ']e', api.node.navigate.diagnostics.next, opts('Next Diagnostic')) + vim.keymap.set('n', '[e', api.node.navigate.diagnostics.prev, opts('Prev Diagnostic')) + vim.keymap.set('n', 'F', api.live_filter.clear, opts('Live Filter: Clear')) + vim.keymap.set('n', 'f', api.live_filter.start, opts('Live Filter: Start')) + vim.keymap.set('n', 'g?', api.tree.toggle_help, opts('Help')) + vim.keymap.set('n', 'gy', api.fs.copy.absolute_path, opts('Copy Absolute Path')) + vim.keymap.set('n', 'ge', api.fs.copy.basename, opts('Copy Basename')) + vim.keymap.set('n', 'H', api.tree.toggle_hidden_filter, opts('Toggle Filter: Dotfiles')) + vim.keymap.set('n', 'I', api.tree.toggle_gitignore_filter, opts('Toggle Filter: Git Ignore')) + vim.keymap.set('n', 'J', api.node.navigate.sibling.last, opts('Last Sibling')) + vim.keymap.set('n', 'K', api.node.navigate.sibling.first, opts('First Sibling')) + vim.keymap.set('n', 'L', api.node.open.toggle_group_empty, opts('Toggle Group Empty')) + vim.keymap.set('n', 'M', api.tree.toggle_no_bookmark_filter, opts('Toggle Filter: No Bookmark')) + vim.keymap.set('n', 'm', api.marks.toggle, opts('Toggle Bookmark')) + vim.keymap.set('n', 'o', api.node.open.edit, opts('Open')) + vim.keymap.set('n', 'O', api.node.open.no_window_picker, opts('Open: No Window Picker')) + vim.keymap.set('n', 'p', api.fs.paste, opts('Paste')) + vim.keymap.set('n', 'P', api.node.navigate.parent, opts('Parent Directory')) + vim.keymap.set('n', 'q', api.tree.close, opts('Close')) + vim.keymap.set('n', 'r', api.fs.rename, opts('Rename')) + vim.keymap.set('n', 'R', api.tree.reload, opts('Refresh')) + vim.keymap.set('n', 's', api.node.run.system, opts('Run System')) + vim.keymap.set('n', 'S', api.tree.search_node, opts('Search')) + vim.keymap.set('n', 'u', api.fs.rename_full, opts('Rename: Full Path')) + vim.keymap.set('n', 'U', api.tree.toggle_custom_filter, opts('Toggle Filter: Hidden')) + vim.keymap.set('n', 'W', api.tree.collapse_all, opts('Collapse')) + vim.keymap.set('n', 'x', api.fs.cut, opts('Cut')) + vim.keymap.set('n', 'y', api.fs.copy.filename, opts('Copy Name')) + vim.keymap.set('n', 'Y', api.fs.copy.relative_path, opts('Copy Relative Path')) + vim.keymap.set('n', '<2-LeftMouse>', api.node.open.edit, opts('Open')) + vim.keymap.set('n', '<2-RightMouse>', api.tree.change_root_to_node, opts('CD')) + -- END_DEFAULT_ON_ATTACH + end + ''; }; + view = { + side = "right"; + centralizeSelection = true; + number = true; + relativenumber = true; + width = 40; + }; + }; +} diff --git a/glasshouse-laptop/home/nixvim/config/plugins/plugins.nix b/glasshouse-laptop/home/nixvim/config/plugins/plugins.nix new file mode 100644 index 0000000..332602d --- /dev/null +++ b/glasshouse-laptop/home/nixvim/config/plugins/plugins.nix @@ -0,0 +1,22 @@ +{ + plugins = { + nvim-surround.enable = true; + indent-blankline.enable = true; + treesitter.enable = true; + lastplace.enable = true; + markdown-preview.enable = true; + gitsigns.enable = true; + web-devicons.enable = true; + endwise.enable = true; + marks.enable = true; + trouble.enable = true; + floaterm.enable = true; + fugitive.enable = true; + rustaceanvim.enable = true; + firenvim.enable = true; + dap = { + enable = true; + extensions.dap-ui.enable = true; + }; + }; +} diff --git a/glasshouse-laptop/home/nixvim/config/plugins/telescope.nix b/glasshouse-laptop/home/nixvim/config/plugins/telescope.nix new file mode 100644 index 0000000..db784f5 --- /dev/null +++ b/glasshouse-laptop/home/nixvim/config/plugins/telescope.nix @@ -0,0 +1,12 @@ +{ + plugins.telescope = { + enable = true; + settings = { + pickers = { + find_files = { + hidden = true; + }; + }; + }; + }; +} diff --git a/glasshouse-laptop/home/nixvim/flake.lock b/glasshouse-laptop/home/nixvim/flake.lock new file mode 100644 index 0000000..1d0c318 --- /dev/null +++ b/glasshouse-laptop/home/nixvim/flake.lock @@ -0,0 +1,390 @@ +{ + "nodes": { + "devshell": { + "inputs": { + "nixpkgs": [ + "nixvim", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1722113426, + "narHash": "sha256-Yo/3loq572A8Su6aY5GP56knpuKYRvM2a1meP9oJZCw=", + "owner": "numtide", + "repo": "devshell", + "rev": "67cce7359e4cd3c45296fb4aaf6a19e2a9c757ae", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "devshell", + "type": "github" + } + }, + "flake-compat": { + "locked": { + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "revCount": 57, + "type": "tarball", + "url": "https://api.flakehub.com/f/pinned/edolstra/flake-compat/1.0.1/018afb31-abd1-7bff-a5e4-cff7e18efb7a/source.tar.gz" + }, + "original": { + "type": "tarball", + "url": "https://flakehub.com/f/edolstra/flake-compat/1.tar.gz" + } + }, + "flake-compat_2": { + "flake": false, + "locked": { + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-parts": { + "inputs": { + "nixpkgs-lib": "nixpkgs-lib" + }, + "locked": { + "lastModified": 1726153070, + "narHash": "sha256-HO4zgY0ekfwO5bX0QH/3kJ/h4KvUDFZg8YpkNwIbg1U=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "bcef6817a8b2aa20a5a6dbb19b43e63c5bf8619a", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_2": { + "inputs": { + "nixpkgs-lib": [ + "nixvim", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1726153070, + "narHash": "sha256-HO4zgY0ekfwO5bX0QH/3kJ/h4KvUDFZg8YpkNwIbg1U=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "bcef6817a8b2aa20a5a6dbb19b43e63c5bf8619a", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-utils": { + "inputs": { + "systems": "systems" + }, + "locked": { + "lastModified": 1726560853, + "narHash": "sha256-X6rJYSESBVr3hBoH0WbKE5KvhPU5bloyZ2L4K60/fPQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "c1dfcf08411b08f6b8615f7d8971a2bfa81d5e8a", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "git-hooks": { + "inputs": { + "flake-compat": [ + "nixvim", + "flake-compat" + ], + "gitignore": "gitignore", + "nixpkgs": [ + "nixvim", + "nixpkgs" + ], + "nixpkgs-stable": [ + "nixvim", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1727514110, + "narHash": "sha256-0YRcOxJG12VGDFH8iS8pJ0aYQQUAgo/r3ZAL+cSh9nk=", + "owner": "cachix", + "repo": "git-hooks.nix", + "rev": "85f7a7177c678de68224af3402ab8ee1bcee25c8", + "type": "github" + }, + "original": { + "owner": "cachix", + "repo": "git-hooks.nix", + "type": "github" + } + }, + "gitignore": { + "inputs": { + "nixpkgs": [ + "nixvim", + "git-hooks", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1709087332, + "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "gitignore.nix", + "type": "github" + } + }, + "gitignore_2": { + "inputs": { + "nixpkgs": [ + "pre-commit-hooks", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1709087332, + "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "gitignore.nix", + "type": "github" + } + }, + "home-manager": { + "inputs": { + "nixpkgs": [ + "nixvim", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1727383923, + "narHash": "sha256-4/vacp3CwdGoPf8U4e/N8OsGYtO09WTcQK5FqYfJbKs=", + "owner": "nix-community", + "repo": "home-manager", + "rev": "ffe2d07e771580a005e675108212597e5b367d2d", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "home-manager", + "type": "github" + } + }, + "nix-darwin": { + "inputs": { + "nixpkgs": [ + "nixvim", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1727507295, + "narHash": "sha256-I/FrX1peu4URoj5T5odfuKR2rm4GjYJJpCGF9c0/lDA=", + "owner": "lnl7", + "repo": "nix-darwin", + "rev": "f2e1c4aa29fc211947c3a7113cba1dd707433b70", + "type": "github" + }, + "original": { + "owner": "lnl7", + "repo": "nix-darwin", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1727348695, + "narHash": "sha256-J+PeFKSDV+pHL7ukkfpVzCOO7mBSrrpJ3svwBFABbhI=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "1925c603f17fc89f4c8f6bf6f631a802ad85d784", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-lib": { + "locked": { + "lastModified": 1725233747, + "narHash": "sha256-Ss8QWLXdr2JCBPcYChJhz4xJm+h/xjl4G0c0XlP6a74=", + "type": "tarball", + "url": "https://github.com/NixOS/nixpkgs/archive/356624c12086a18f2ea2825fed34523d60ccc4e3.tar.gz" + }, + "original": { + "type": "tarball", + "url": "https://github.com/NixOS/nixpkgs/archive/356624c12086a18f2ea2825fed34523d60ccc4e3.tar.gz" + } + }, + "nixpkgs-stable": { + "locked": { + "lastModified": 1720386169, + "narHash": "sha256-NGKVY4PjzwAa4upkGtAMz1npHGoRzWotlSnVlqI40mo=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "194846768975b7ad2c4988bdb82572c00222c0d7", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-24.05", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixvim": { + "inputs": { + "devshell": "devshell", + "flake-compat": "flake-compat", + "flake-parts": "flake-parts_2", + "git-hooks": "git-hooks", + "home-manager": "home-manager", + "nix-darwin": "nix-darwin", + "nixpkgs": [ + "nixpkgs" + ], + "nuschtosSearch": "nuschtosSearch", + "treefmt-nix": "treefmt-nix" + }, + "locked": { + "lastModified": 1727557953, + "narHash": "sha256-xe8JQaNOPTyzWsSlLu2yC6qw4SjOMHrXk4Iq+pIgLhM=", + "owner": "nix-community", + "repo": "nixvim", + "rev": "2c4e4681db658deeceb2f781136d7ba1d0009521", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixvim", + "type": "github" + } + }, + "nuschtosSearch": { + "inputs": { + "flake-utils": "flake-utils", + "nixpkgs": [ + "nixvim", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1727452028, + "narHash": "sha256-ehl/A4HQFRyqj1Fk7cl+dgSf/2Fb1jLwWJtZaMU6RfU=", + "owner": "NuschtOS", + "repo": "search", + "rev": "9f7426e532ef8dfc839c4a3fcc567b13a20a70d3", + "type": "github" + }, + "original": { + "owner": "NuschtOS", + "repo": "search", + "type": "github" + } + }, + "pre-commit-hooks": { + "inputs": { + "flake-compat": "flake-compat_2", + "gitignore": "gitignore_2", + "nixpkgs": [ + "nixpkgs" + ], + "nixpkgs-stable": "nixpkgs-stable" + }, + "locked": { + "lastModified": 1727514110, + "narHash": "sha256-0YRcOxJG12VGDFH8iS8pJ0aYQQUAgo/r3ZAL+cSh9nk=", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "rev": "85f7a7177c678de68224af3402ab8ee1bcee25c8", + "type": "github" + }, + "original": { + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "type": "github" + } + }, + "root": { + "inputs": { + "flake-parts": "flake-parts", + "nixpkgs": "nixpkgs", + "nixvim": "nixvim", + "pre-commit-hooks": "pre-commit-hooks" + } + }, + "systems": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "treefmt-nix": { + "inputs": { + "nixpkgs": [ + "nixvim", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1727431250, + "narHash": "sha256-uGRlRT47ecicF9iLD1G3g43jn2e+b5KaMptb59LHnvM=", + "owner": "numtide", + "repo": "treefmt-nix", + "rev": "879b29ae9a0378904fbbefe0dadaed43c8905754", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "treefmt-nix", + "type": "github" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/glasshouse-laptop/home/nixvim/flake.nix b/glasshouse-laptop/home/nixvim/flake.nix new file mode 100644 index 0000000..3800e71 --- /dev/null +++ b/glasshouse-laptop/home/nixvim/flake.nix @@ -0,0 +1,72 @@ +{ + description = "pagedMov's NeoVim configuration"; + + inputs = { + nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; + flake-parts.url = "github:hercules-ci/flake-parts"; + nixvim = { + url = "github:nix-community/nixvim"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + pre-commit-hooks = { + url = "github:cachix/pre-commit-hooks.nix"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + }; + + outputs = + { + nixvim, + flake-parts, + pre-commit-hooks, + ... + }@inputs: + flake-parts.lib.mkFlake { inherit inputs; } { + systems = [ + "aarch64-linux" + "x86_64-linux" + "aarch64-darwin" + "x86_64-darwin" + ]; + + perSystem = + { + system, + pkgs, + self', + ... + }: + let + nixvim' = nixvim.legacyPackages.${system}; + nvim = nixvim'.makeNixvimWithModule { + inherit pkgs; + module = ./config; + }; + in + { + checks = { + pre-commit-check = pre-commit-hooks.lib.${system}.run { + src = ./.; + hooks = { + statix.enable = true; + nixfmt-rfc-style.enable = true; + deadnix = { + enable = true; + settings = { + edit = true; + }; + }; + }; + }; + }; + + formatter = pkgs.nixfmt-rfc-style; + + packages.default = nvim; + + devShells = { + default = with pkgs; mkShell { inherit (self'.checks.pre-commit-check) shellHook; }; + }; + }; + }; +} diff --git a/glasshouse-laptop/home/scripts/default.nix b/glasshouse-laptop/home/scripts/default.nix new file mode 100644 index 0000000..d9ce0ac --- /dev/null +++ b/glasshouse-laptop/home/scripts/default.nix @@ -0,0 +1,84 @@ +{pkgs, ...}: let + wall-change = pkgs.writeShellScriptBin "wall-change" (builtins.readFile ./scripts/wall-change.sh); + wallpaper-picker = pkgs.writeShellScriptBin "wallpaper-picker" (builtins.readFile ./scripts/wallpaper-picker.sh); + + runbg = pkgs.writeShellScriptBin "runbg" (builtins.readFile ./scripts/runbg.sh); + music = pkgs.writeShellScriptBin "music" (builtins.readFile ./scripts/music.sh); + lofi = pkgs.writeScriptBin "lofi" (builtins.readFile ./scripts/lofi.sh); + + splash = pkgs.writeShellScriptBin "splash" (builtins.readFile ./scripts/splash.sh); + switchmon = pkgs.writeShellScriptBin "switchmon" (builtins.readFile ./scripts/switchmon.sh); + nixswitch = pkgs.writeShellScriptBin "nixswitch" (builtins.readFile ./scripts/nixswitch.sh); + garbage-collect = pkgs.writeShellScriptBin "garbage-collect" (builtins.readFile ./scripts/garbage-collect.sh); + scheck = pkgs.writeShellScriptBin "scheck" (builtins.readFile ./scripts/s_check.sh); + mcd = pkgs.writeShellScriptBin "mcd" (builtins.readFile ./scripts/mcd.sh); + crs = pkgs.writeShellScriptBin "crs" (builtins.readFile ./scripts/crs.sh); + nixcommit = pkgs.writeShellScriptBin "nixcommit" (builtins.readFile ./scripts/nixcommit.sh); + invoke = pkgs.writeShellScriptBin "invoke" (builtins.readFile ./scripts/invoke.sh); + nsp = pkgs.writeShellScriptBin "nsp" (builtins.readFile ./scripts/nsp.sh); + nixp = pkgs.writeShellScriptBin "nixp" (builtins.readFile ./scripts/nixp.sh); + nixr = pkgs.writeShellScriptBin "nixr" (builtins.readFile ./scripts/nixr.sh); + homep = pkgs.writeShellScriptBin "homep" (builtins.readFile ./scripts/homep.sh); + homer = pkgs.writeShellScriptBin "homer" (builtins.readFile ./scripts/homer.sh); + + + toggle_blur = pkgs.writeScriptBin "toggle_blur" (builtins.readFile ./scripts/toggle_blur.sh); + toggle_oppacity = pkgs.writeScriptBin "toggle_oppacity" (builtins.readFile ./scripts/toggle_oppacity.sh); + + maxfetch = pkgs.writeScriptBin "maxfetch" (builtins.readFile ./scripts/maxfetch.sh); + + compress = pkgs.writeScriptBin "compress" (builtins.readFile ./scripts/compress.sh); + extract = pkgs.writeScriptBin "extract" (builtins.readFile ./scripts/extract.sh); + + shutdown-script = pkgs.writeScriptBin "shutdown-script" (builtins.readFile ./scripts/shutdown-script.sh); + + show-keybinds = pkgs.writeScriptBin "show-keybinds" (builtins.readFile ./scripts/keybinds.sh); + + vm-start = pkgs.writeScriptBin "vm-start" (builtins.readFile ./scripts/vm-start.sh); + + ascii = pkgs.writeScriptBin "ascii" (builtins.readFile ./scripts/ascii.sh); + + record = pkgs.writeScriptBin "record" (builtins.readFile ./scripts/record.sh); +in { + home.packages = [ + nixswitch + garbage-collect + scheck + mcd + crs + nixcommit + invoke + nsp + wall-change + wallpaper-picker + nixp + nixr + homep + homer + + runbg + music + lofi + + splash + switchmon + + toggle_blur + toggle_oppacity + + maxfetch + + compress + extract + + shutdown-script + + show-keybinds + + vm-start + + ascii + + record + ]; +} diff --git a/glasshouse-laptop/home/scripts/scripts/ascii.sh b/glasshouse-laptop/home/scripts/scripts/ascii.sh new file mode 100755 index 0000000..0ff7489 --- /dev/null +++ b/glasshouse-laptop/home/scripts/scripts/ascii.sh @@ -0,0 +1,45 @@ +#!/usr/bin/env zsh + +RED=$(tput setaf 1) +GREEN=$(tput setaf 2) +BLUE=$(tput setaf 4) +MAGENTA=$(tput setaf 5) +CYAN=$(tput setaf 6) +NORMAL=$(tput sgr0) + +echo -e "┌─────────────┬─────────────┬─────────────┬─────────────┐" +echo -e "│ ${BLUE}Dec${NORMAL} ${GREEN}Hex${NORMAL} Chr │ ${BLUE}Dec${NORMAL} ${GREEN}Hex${NORMAL} Chr │ ${BLUE}Dec${NORMAL} ${GREEN}Hex${NORMAL} Chr │ ${BLUE}Dec${NORMAL} ${GREEN}Hex${NORMAL} Chr │" +echo -e "├─────────────┼─────────────┼─────────────┼─────────────┤" +echo -e "│ 0 0 \033[2mNUL\033[0m\033[0m │ 32 20 │ 64 40 ${CYAN}@${NORMAL} │ 96 60 ${CYAN}\`${NORMAL} │" +echo -e "│ 1 1 \033[2mSOH\033[0m │ 33 21 ${CYAN}!${NORMAL} │ 65 41 ${GREEN}A${NORMAL} │ 97 61 ${GREEN}a${NORMAL} │" +echo -e "│ 2 2 \033[2mSTX\033[0m │ 34 22 ${CYAN}\"${NORMAL} │ 66 42 ${GREEN}B${NORMAL} │ 98 62 ${GREEN}b${NORMAL} │" +echo -e "│ 3 3 \033[2mETX\033[0m │ 35 23 ${CYAN}#${NORMAL} │ 67 43 ${GREEN}C${NORMAL} │ 99 63 ${GREEN}c${NORMAL} │" +echo -e "│ 4 4 \033[2mEOT\033[0m │ 36 24 ${CYAN}\$${NORMAL} │ 68 44 ${GREEN}D${NORMAL} │ 100 64 ${GREEN}d${NORMAL} │" +echo -e "│ 5 5 \033[2mENQ\033[0m │ 37 25 ${CYAN}%${NORMAL} │ 69 45 ${GREEN}E${NORMAL} │ 101 65 ${GREEN}e${NORMAL} │" +echo -e "│ 6 6 \033[2mACK\033[0m │ 38 26 ${CYAN}&${NORMAL} │ 70 46 ${GREEN}F${NORMAL} │ 102 66 ${GREEN}f${NORMAL} │" +echo -e "│ 7 7 \033[2mBEL\033[0m │ 39 27 ${CYAN}'${NORMAL} │ 71 47 ${GREEN}G${NORMAL} │ 103 67 ${GREEN}g${NORMAL} │" +echo -e "│ 8 8 \033[2mBS\033[0m │ 40 28 ${CYAN}(${NORMAL} │ 72 48 ${GREEN}H${NORMAL} │ 104 68 ${GREEN}h${NORMAL} │" +echo -e "│ 9 9 \033[2mHT\033[0m │ 41 29 ${CYAN})${NORMAL} │ 73 49 ${GREEN}I${NORMAL} │ 105 69 ${GREEN}i${NORMAL} │" +echo -e "│ 10 A \033[2mLF\033[0m │ 42 2A ${CYAN}*${NORMAL} │ 74 4A ${GREEN}J${NORMAL} │ 106 6A ${GREEN}j${NORMAL} │" +echo -e "│ 11 B \033[2mVT\033[0m │ 43 2B ${CYAN}+${NORMAL} │ 75 4B ${GREEN}K${NORMAL} │ 107 6B ${GREEN}k${NORMAL} │" +echo -e "│ 12 C \033[2mFF\033[0m │ 44 2C ${CYAN},${NORMAL} │ 76 4C ${GREEN}L${NORMAL} │ 108 6C ${GREEN}l${NORMAL} │" +echo -e "│ 13 D \033[2mCR\033[0m │ 45 2D ${CYAN}-${NORMAL} │ 77 4D ${GREEN}M${NORMAL} │ 109 6D ${GREEN}m${NORMAL} │" +echo -e "│ 14 E \033[2mSO\033[0m │ 46 2E ${CYAN}.${NORMAL} │ 78 4E ${GREEN}N${NORMAL} │ 110 6E ${GREEN}n${NORMAL} │" +echo -e "│ 15 F \033[2mSI\033[0m │ 47 2F ${CYAN}/${NORMAL} │ 79 4F ${GREEN}O${NORMAL} │ 111 6F ${GREEN}o${NORMAL} │" +echo -e "│ 16 10 \033[2mDLE\033[0m │ 48 30 ${RED}0${NORMAL} │ 80 50 ${GREEN}P${NORMAL} │ 112 70 ${GREEN}p${NORMAL} │" +echo -e "│ 17 11 \033[2mDC1\033[0m │ 49 31 ${RED}1${NORMAL} │ 81 51 ${GREEN}Q${NORMAL} │ 113 71 ${GREEN}q${NORMAL} │" +echo -e "│ 18 12 \033[2mDC2\033[0m │ 50 32 ${RED}2${NORMAL} │ 82 52 ${GREEN}R${NORMAL} │ 114 72 ${GREEN}r${NORMAL} │" +echo -e "│ 19 13 \033[2mDC3\033[0m │ 51 33 ${RED}3${NORMAL} │ 83 53 ${GREEN}S${NORMAL} │ 115 73 ${GREEN}s${NORMAL} │" +echo -e "│ 20 14 \033[2mDC4\033[0m │ 52 34 ${RED}4${NORMAL} │ 84 54 ${GREEN}T${NORMAL} │ 116 74 ${GREEN}t${NORMAL} │" +echo -e "│ 21 15 \033[2mNAK\033[0m │ 53 35 ${RED}5${NORMAL} │ 85 55 ${GREEN}U${NORMAL} │ 117 75 ${GREEN}u${NORMAL} │" +echo -e "│ 22 16 \033[2mSYN\033[0m │ 54 36 ${RED}6${NORMAL} │ 86 56 ${GREEN}V${NORMAL} │ 118 76 ${GREEN}v${NORMAL} │" +echo -e "│ 23 17 \033[2mETB\033[0m │ 55 37 ${RED}7${NORMAL} │ 87 57 ${GREEN}W${NORMAL} │ 119 77 ${GREEN}w${NORMAL} │" +echo -e "│ 24 18 \033[2mCAN\033[0m │ 56 38 ${RED}8${NORMAL} │ 88 58 ${GREEN}X${NORMAL} │ 120 78 ${GREEN}x${NORMAL} │" +echo -e "│ 25 19 \033[2mEM\033[0m │ 57 39 ${RED}9${NORMAL} │ 89 59 ${GREEN}Y${NORMAL} │ 121 79 ${GREEN}y${NORMAL} │" +echo -e "│ 26 1A \033[2mSUB\033[0m │ 58 3A ${CYAN}:${NORMAL} │ 90 5A ${GREEN}Z${NORMAL} │ 122 7A ${GREEN}z${NORMAL} │" +echo -e "│ 27 1B \033[2mESC\033[0m │ 59 3B ${CYAN};${NORMAL} │ 91 5B ${CYAN}[${NORMAL} │ 123 7B ${CYAN}{${NORMAL} │" +echo -e "│ 28 1C \033[2mFS\033[0m │ 60 3C ${CYAN}<${NORMAL} │ 92 5C ${CYAN}\\${NORMAL} │ 124 7C ${CYAN}|${NORMAL} │" +echo -e "│ 29 1D \033[2mGS\033[0m │ 61 3D ${CYAN}=${NORMAL} │ 93 5D ${CYAN}]${NORMAL} │ 125 7D ${CYAN}}${NORMAL} │" +echo -e "│ 30 1E \033[2mRS\033[0m │ 62 3E ${CYAN}>${NORMAL} │ 94 5E ${CYAN}^${NORMAL} │ 126 7E ${CYAN}~${NORMAL} │" +echo -e "│ 31 1F \033[2mUS\033[0m │ 63 3F ${CYAN}?${NORMAL} │ 95 5F ${CYAN}_${NORMAL} │ 127 7F \033[2mDEL\033[0m │" +echo -e "└─────────────┴─────────────┴─────────────┴─────────────┘" diff --git a/glasshouse-laptop/home/scripts/scripts/compress.sh b/glasshouse-laptop/home/scripts/scripts/compress.sh new file mode 100755 index 0000000..5c31e62 --- /dev/null +++ b/glasshouse-laptop/home/scripts/scripts/compress.sh @@ -0,0 +1,10 @@ +#!/usr/bin/env bash + +if (( $# == 1 )) then + # echo -ne "Archive name: " + # read name + # tar -cvzf "$name.tar.gz" $1 + tar -cvzf "$1.tar.gz" $1 +else + echo "Wrong number of arguments..." +fi \ No newline at end of file diff --git a/glasshouse-laptop/home/scripts/scripts/crs.sh b/glasshouse-laptop/home/scripts/scripts/crs.sh new file mode 100755 index 0000000..0b54512 --- /dev/null +++ b/glasshouse-laptop/home/scripts/scripts/crs.sh @@ -0,0 +1,4 @@ +#!/run/current-system/sw/bin/bash + +cargo test && \ +cargo run diff --git a/glasshouse-laptop/home/scripts/scripts/extract.sh b/glasshouse-laptop/home/scripts/scripts/extract.sh new file mode 100755 index 0000000..ecc25dd --- /dev/null +++ b/glasshouse-laptop/home/scripts/scripts/extract.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash + +for i in "$@" ; do + tar -xvzf $i + break +done diff --git a/glasshouse-laptop/home/scripts/scripts/garbage-collect.sh b/glasshouse-laptop/home/scripts/scripts/garbage-collect.sh new file mode 100755 index 0000000..10e0337 --- /dev/null +++ b/glasshouse-laptop/home/scripts/scripts/garbage-collect.sh @@ -0,0 +1,26 @@ +#!/run/current-system/sw/bin/bash + + +echo "This will delete all unused paths in the nix store and delete any files in the gtrash folder." +echo -e "\033[1;4;38;2;243;139;168mThis process is irreversible.\033[0m Are you sure?" +select yn in "Yes" "No"; do + case $yn in + Yes ) echo "Sweeping system...";scheck && runbg aplay "$HOME/media/sound/sys/collectgarbage.wav";break;; + No ) echo "Canceling garbage collection."; return;; + esac +done +output=$(nix-collect-garbage | tee /dev/tty) + +nix_freed=$(echo "$output" | grep -oP '\d+(\.\d+)? MiB freed' | cut -d' ' -f1) + +if [ "$(ls -A ~/.local/share/Trash/files/ 2>/dev/null)" ]; then + rm_freed=$(du ~/.local/share/Trash/files 2> /dev/null | awk '{print $1}') + rm_freed=$(echo "scale=2; $rm_freed / 1000" | bc) + /run/current-system/sw/bin/rm -rfv ~/.local/share/Trash/files + mkdir ~/.local/share/Trash/files +else + rm_freed="0" +fi +total_freed=$(echo "$nix_freed + $rm_freed" | bc) +echo -e "System cleaning complete, freed \033[1;4;38;2;166;227;161m$total_freed MiB\033[0m in total" +scheck && runbg aplay "$HOME/media/sound/sys/rm.wav" diff --git a/glasshouse-laptop/home/scripts/scripts/homep.sh b/glasshouse-laptop/home/scripts/scripts/homep.sh new file mode 100755 index 0000000..c36b0d8 --- /dev/null +++ b/glasshouse-laptop/home/scripts/scripts/homep.sh @@ -0,0 +1,30 @@ +#!/run/current-system/sw/bin/bash + +# Ensure the package manifest is generated or updated +if [ ! -f "/tmp/nixpkgs_manifest.txt" ]; then + echo "Generating Nixpkgs manifest..." + nix-env -qaP 2>/dev/null | awk '{print $1}' | sed 's/nixos\.//' > /tmp/nixpkgs_manifest.txt +fi + +# Select packages using fzf with multi-select enabled +selected_packages=$(cat /tmp/nixpkgs_manifest.txt | fzf -m) + +# Check if any packages were selected +if [ -n "$selected_packages" ]; then + echo "$selected_packages" | while read -r package; do + # Append each selected package to the Nix config file + sed -i "/^\t]/i \ \t\t$package" "$HOME/sysflakes/glasshouse-desktop/home/userpkgs.nix" + echo "Added $package to the Home Manager configuration." + done + + echo "Packages added successfully. Rebuild system config?" + select yn in "Yes" "No"; do + case $yn in + "Yes" ) nixswitch;break;; + "No" ) exit;; + esac + done + +else + echo "No packages selected." +fi diff --git a/glasshouse-laptop/home/scripts/scripts/homer.sh b/glasshouse-laptop/home/scripts/scripts/homer.sh new file mode 100755 index 0000000..86133ba --- /dev/null +++ b/glasshouse-laptop/home/scripts/scripts/homer.sh @@ -0,0 +1,24 @@ +#!/run/current-system/sw/bin/bash + +selected_packages=$(sed -n '/\[/,/\]/p' "$HOME/sysflakes/glasshouse-desktop/home/userpkgs.nix" | sed '1d;$d' | fzf -m) + +if [ -n "$selected_packages" ]; then + echo "$selected_packages" | while read -r package; do + sed -i "/\b$package\b/d" "$HOME/sysflakes/glasshouse-desktop/home/userpkgs.nix" + echo "Removed $package from the Home Manager configuration." + done + + echo "Removed packages. Rebuild system config?" + select yn in "Yes" "No"; do + case $yn in + "Yes" ) nixswitch;break;; + "No" ) exit;; + esac + done + +else + echo "No packages removed." +fi + + + diff --git a/glasshouse-laptop/home/scripts/scripts/invoke.sh b/glasshouse-laptop/home/scripts/scripts/invoke.sh new file mode 100755 index 0000000..6fe752d --- /dev/null +++ b/glasshouse-laptop/home/scripts/scripts/invoke.sh @@ -0,0 +1,3 @@ +#!/run/current-system/sw/bin/bash + +nix run nixpkgs#$"@" diff --git a/glasshouse-laptop/home/scripts/scripts/keybinds.sh b/glasshouse-laptop/home/scripts/scripts/keybinds.sh new file mode 100755 index 0000000..13c8da9 --- /dev/null +++ b/glasshouse-laptop/home/scripts/scripts/keybinds.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash + +config_file=~/.config/hypr/hyprland.conf +keybinds=$(grep -oP '(?<=bind=).*' $config_file) +keybinds=$(echo "$keybinds" | sed 's/,\([^,]*\)$/ = \1/' | sed 's/, exec//g' | sed 's/^,//g') +rofi -dmenu -theme-str 'window {width: 50%;}' <<< "$keybinds" diff --git a/glasshouse-laptop/home/scripts/scripts/lofi.sh b/glasshouse-laptop/home/scripts/scripts/lofi.sh new file mode 100755 index 0000000..76cdc8f --- /dev/null +++ b/glasshouse-laptop/home/scripts/scripts/lofi.sh @@ -0,0 +1,7 @@ +#!/usr/bin/env bash + +if (ps aux | grep mpv | grep -v grep > /dev/null) then + pkill mpv +else + runbg mpv --no-video https://www.youtube.com/live/jfKfPfyJRdk?si=OF0HKrYFFj33BzMo +fi \ No newline at end of file diff --git a/glasshouse-laptop/home/scripts/scripts/maxfetch.sh b/glasshouse-laptop/home/scripts/scripts/maxfetch.sh new file mode 100755 index 0000000..486f411 --- /dev/null +++ b/glasshouse-laptop/home/scripts/scripts/maxfetch.sh @@ -0,0 +1,53 @@ +#!/usr/bin/env bash + +unicode=" " +version="1.2.0" + +_black=$(tput setaf 0) +red=$(tput setaf 1) +green=$(tput setaf 2) +yellow=$(tput setaf 3) +blue=$(tput setaf 4) +magenta=$(tput setaf 5) +cyan=$(tput setaf 6) +_white=$(tput setaf 7) +_bright=$(tput bold) +normal=$(tput sgr0) +_underline=$(tput smul) + +up=$(uptime | awk -F'( |,|:)+' '{ + d=h=m=0; + if ($7=="min") + m=$6; + else { + if ($7~/^day/) { d=$6; h=$8; m=$9} + else {h=$6;m=$7} + } + } + { print h+0,"h",m+0,"m" } +') +up=$(sed -e "s/ h/h/g" <<< ${up}) +up=$(sed -e "s/ m/m/g" <<< ${up}) + +pkgs=$(nix-store --query --requisites /run/current-system | wc -l) + +fetch() { + echo "${cyan}$(tput bold) _ ___ ____ ____ ${normal}$(tput sgr0)" + echo "${cyan}$(tput bold) / |/ (_)_ __/ __ \/ __/ ${normal}$(tput sgr0)" + echo "${cyan}$(tput bold) / / /\ \ / /_/ /\ \ ${normal}$(tput sgr0)" + echo "${cyan}$(tput bold) /_/|_/_//_\_"'\\'"____/___/ ${normal}$(tput sgr0)" + echo "" + echo " ╭─────────────╮ " + echo " │ ${red} ${normal} user │ ${red}$(whoami)${normal}" + echo " │ ${yellow} ${normal} distro │ ${yellow}$(sed -nE "s@PRETTY_NAME=\"([^\"]*)\"@\1@p" /etc/os-release)${normal} " + echo " │ ${green} ${normal} kernel │ ${green}$(uname -r)${normal} " + echo " │ ${cyan}󱂬 ${normal} de/wm │ ${cyan}$XDG_CURRENT_DESKTOP${normal} " + echo " │ ${blue} ${normal} uptime │ ${blue}${up}${normal} " + echo " │ ${magenta} ${normal} shell │ ${magenta}$(echo ${SHELL##*/})${normal} " + echo " │ ${red}󰏖 ${normal} pkgs │ ${red}${pkgs}${normal} " + echo " ├─────────────┤ " + echo " │ ${_white} ${normal}colors │${_white}$unicode${normal}${red}$unicode${normal}${yellow}$unicode${normal}${green}$unicode${normal}${cyan}$unicode${normal}${blue}$unicode${normal}${magenta}$unicode${normal}${_black}$unicode${normal}" + echo " ╰─────────────╯ " +} + +fetch && exit 0 \ No newline at end of file diff --git a/glasshouse-laptop/home/scripts/scripts/mcd.sh b/glasshouse-laptop/home/scripts/scripts/mcd.sh new file mode 100755 index 0000000..c566d9d --- /dev/null +++ b/glasshouse-laptop/home/scripts/scripts/mcd.sh @@ -0,0 +1,5 @@ +#!/run/current-system/sw/bin/bash + + +mkdir -p "$1" +cd "$1" || exit diff --git a/glasshouse-laptop/home/scripts/scripts/music.sh b/glasshouse-laptop/home/scripts/scripts/music.sh new file mode 100755 index 0000000..03094d2 --- /dev/null +++ b/glasshouse-laptop/home/scripts/scripts/music.sh @@ -0,0 +1,10 @@ +#!/usr/bin/env bash + +if (ps aux | grep audacious | grep -v grep > /dev/null) then + pkill audacious +else + hyprctl dispatch exec "[workspace 5 silent] audacious -t ~/Music/playlist" + sleep 0.5 + audtool playlist-repeat-status |grep "on" || audtool playlist-repeat-toggle + audtool playlist-shuffle-status|grep "on" || audtool playlist-shuffle-toggle +fi diff --git a/glasshouse-laptop/home/scripts/scripts/nixcommit.sh b/glasshouse-laptop/home/scripts/scripts/nixcommit.sh new file mode 100755 index 0000000..c6691c2 --- /dev/null +++ b/glasshouse-laptop/home/scripts/scripts/nixcommit.sh @@ -0,0 +1,24 @@ +#!/run/current-system/sw/bin/bash + +scheck && runbg aplay ~/media/sound/sys/nixswitch-start.wav +builtin cd "$HOME/sysflakes" || exit +nix flake update +if [ -n "$2" ]; then + echo "too many arguments" + exit +fi + +gen=$(readlink /nix/var/nix/profiles/system | sed 's/.*system-\([0-9]*\)-link/\1/') +gen=$((gen + 1)) + +diffcheck=$(git status | grep "working tree clean") +if [ -n "$diffcheck" ]; then + scheck && runbg aplay ~/media/sound/sys/warning.wav + echo "Nothing to commit" + exit +fi +git add . +git commit -m "Gen $gen: $1" +git push +scheck && runbg aplay ~/media/sound/sys/gitpush.wav +builtin cd - || exit diff --git a/glasshouse-laptop/home/scripts/scripts/nixp.sh b/glasshouse-laptop/home/scripts/scripts/nixp.sh new file mode 100755 index 0000000..a29d74b --- /dev/null +++ b/glasshouse-laptop/home/scripts/scripts/nixp.sh @@ -0,0 +1,30 @@ +#!/run/current-system/sw/bin/bash + +# Ensure the package manifest is generated or updated +if [ ! -f "/tmp/nixpkgs_manifest.txt" ]; then + echo "Generating Nixpkgs manifest..." + nix-env -qaP 2>/dev/null | awk '{print $1}' | sed 's/nixos\.//' > /tmp/nixpkgs_manifest.txt +fi + +# Select packages using fzf with multi-select enabled +selected_packages=$(cat /tmp/nixpkgs_manifest.txt | fzf -m) + +# Check if any packages were selected +if [ -n "$selected_packages" ]; then + echo "$selected_packages" | while read -r package; do + # Append each selected package to the Nix config file + sed -i "/^\t]/i \ \t\t$package" "$HOME/sysflakes/glasshouse-desktop/sys/packages.nix" + echo "Added $package to the Nix configuration." + done + + echo "Packages added successfully. Rebuild system config?" + select yn in "Yes" "No"; do + case $yn in + "Yes" ) nixswitch;break;; + "No" ) exit;; + esac + done + +else + echo "No packages selected." +fi diff --git a/glasshouse-laptop/home/scripts/scripts/nixr.sh b/glasshouse-laptop/home/scripts/scripts/nixr.sh new file mode 100755 index 0000000..021fe8d --- /dev/null +++ b/glasshouse-laptop/home/scripts/scripts/nixr.sh @@ -0,0 +1,24 @@ +#!/run/current-system/sw/bin/bash + +selected_packages=$(sed -n '/\[/,/\]/p' "$HOME/sysflakes/glasshouse-desktop/sys/packages.nix" | sed '1d;$d' | fzf -m) + +if [ -n "$selected_packages" ]; then + echo "$selected_packages" | while read -r package; do + sed -i "/\b$package\b/d" "$HOME/sysflakes/glasshouse-desktop/sys/packages.nix" + echo "Removed $package from the Nix configuration." + done + + echo "Removed packages. Rebuild system config?" + select yn in "Yes" "No"; do + case $yn in + "Yes" ) nixswitch;break;; + "No" ) exit;; + esac + done + +else + echo "No packages removed." +fi + + + diff --git a/glasshouse-laptop/home/scripts/scripts/nixswitch.sh b/glasshouse-laptop/home/scripts/scripts/nixswitch.sh new file mode 100755 index 0000000..a54831f --- /dev/null +++ b/glasshouse-laptop/home/scripts/scripts/nixswitch.sh @@ -0,0 +1,13 @@ +#!/run/current-system/sw/bin/bash + +scheck && runbg aplay ~/media/sound/sys/nixswitch-start.wav +builtin cd "$HOME/sysflakes" || exit + +nix flake update +sudo nixos-rebuild switch --flake "$HOME/sysflakes#glasshouse-laptop" +if [ $? -eq 0 ]; then + scheck && runbg aplay ~/media/sound/sys/update.wav +else + scheck && runbg aplay ~/media/sound/sys/error.wav +fi +builtin cd "$OLDPWD" || exit diff --git a/glasshouse-laptop/home/scripts/scripts/nsp.sh b/glasshouse-laptop/home/scripts/scripts/nsp.sh new file mode 100755 index 0000000..e08e109 --- /dev/null +++ b/glasshouse-laptop/home/scripts/scripts/nsp.sh @@ -0,0 +1,3 @@ +#!/run/current-system/sw/bin/bash + +nix-shell -p "$@" --run zsh diff --git a/glasshouse-laptop/home/scripts/scripts/power-menu.sh b/glasshouse-laptop/home/scripts/scripts/power-menu.sh new file mode 100755 index 0000000..0821353 --- /dev/null +++ b/glasshouse-laptop/home/scripts/scripts/power-menu.sh @@ -0,0 +1,3 @@ +#!/usr/bin/env bash + +rofi -show p -modi p:'rofi-power-menu' -theme-str 'window {width: 10em; height: 15em;} listview {lines: 5;}' diff --git a/glasshouse-laptop/home/scripts/scripts/record.sh b/glasshouse-laptop/home/scripts/scripts/record.sh new file mode 100755 index 0000000..904ae6b --- /dev/null +++ b/glasshouse-laptop/home/scripts/scripts/record.sh @@ -0,0 +1,125 @@ +#!/usr/bin/env bash + +TMP_FILE_UNOPTIMIZED="/tmp/recording_unoptimized.gif" +TMP_PALETTE_FILE="/tmp/palette.png" +TMP_MP4_FILE="/tmp/recording.mp4" +TMP_GIF_RESULT="/tmp/gif_result" +APP_NAME="Recorder" + +OUT_DIR="$HOME/Videos" +filename=$(date +"%Y-%m-%d_%H-%M-%S") +FILENAME="$OUT_DIR/$filename." + +if [ ! -d "$OUT_DIR" ]; then + mkdir -p "$OUT_DIR" +fi + +is_recorder_running() { + pgrep -x wf-recorder >/dev/null +} + +convert_to_gif() { + ffmpeg -i "$TMP_MP4_FILE" -filter_complex "[0:v] palettegen" "$TMP_PALETTE_FILE" + ffmpeg -i "$TMP_MP4_FILE" -i "$TMP_PALETTE_FILE" -filter_complex "[0:v] fps=10,scale=1400:-1,setpts=0.5*PTS [new];[new][1:v] paletteuse" "$TMP_FILE_UNOPTIMIZED" + if [ -f "$TMP_PALETTE_FILE" ]; then + rm "$TMP_PALETTE_FILE" + fi + if [ -f "$TMP_MP4_FILE" ]; then + rm "$TMP_MP4_FILE" + fi + gifsicle -O3 --lossy=100 -i "$TMP_FILE_UNOPTIMIZED" -o "$TMP_GIF_RESULT" + if [ -f "$TMP_FILE_UNOPTIMIZED" ]; then + rm "$TMP_FILE_UNOPTIMIZED" + fi +} + +notify() { + notify-send -a "$APP_NAME" "$1" "$2" -t 5000 +} + +screen() { + notify "Starting Recording" "Your screen is being recorded" + timeout 600 wf-recorder -F format=rgb24 -x rgb24 -p qp=0 -p crf=0 -p preset=slow -c libx264rgb -f "$TMP_MP4_FILE" +} + +area() { + GEOMETRY=$(slurp) + if [[ ! -z "$GEOMETRY" ]]; then + notify "Starting Recording" "Your screen is being recorded" + timeout 600 wf-recorder -F format=rgb24 -x rgb24 -p qp=0 -p crf=0 -p preset=slow -c libx264rgb -g "$GEOMETRY" -f "$TMP_MP4_FILE" + fi +} + +gif() { + touch /tmp/recording_gif + area +} + +stop() { + if is_recorder_running; then + kill $(pgrep -x wf-recorder) + + if [[ -f /tmp/recording_gif ]] then + notify "Stopped Recording" "Starting GIF conversion phase..." + FILENAME+="gif" + convert_to_gif + SavePath=$( zenity --file-selection --save --file-filter=*.gif --filename="$OUT_DIR"'/.gif' ) + if [ "$SavePath" == "" ]; then + SavePath="$FILENAME" + fi + [[ $SavePath =~ \.gif$ ]] || SavePath+='.gif' + mv $TMP_GIF_RESULT $SavePath + wl-copy -t image/png < $SavePath + notify "GIF conversion completed" "GIF saved to $SavePath" + else + FILENAME+="mp4" + SavePath=$( zenity --file-selection --save --file-filter=*.mp4 --filename="$OUT_DIR"'/.mp4' ) + if [ "$SavePath" == "" ]; then + SavePath="$FILENAME" + fi + [[ $SavePath =~ \.mp4$ ]] || SavePath+='.mp4' + mv $TMP_MP4_FILE $SavePath + wl-copy -t video/mp4 < $SavePath + notify "Stopped Recording" "Video saved to $SavePath" + fi + + [[ -f $TMP_FILE_UNOPTIMIZED ]] && rm -f "$TMP_FILE_UNOPTIMIZED" + [[ -f $TMP_PALETTE_FILE ]] && rm -f "$TMP_PALETTE_FILE" + [[ -f $TMP_GIF_RESULT ]] && rm -f "$TMP_GIF_RESULT" + [[ -f $TMP_MP4_FILE ]] && rm -f "$TMP_MP4_FILE" + [[ -f /tmp/recording_gif ]] && rm -f /tmp/recording_gif + + exit 0 + fi +} + +if is_recorder_running; then + stop +fi + +if [ "$1" != "stop" ]; then + [[ -f $TMP_FILE_UNOPTIMIZED ]] && rm -f "$TMP_FILE_UNOPTIMIZED" + [[ -f $TMP_PALETTE_FILE ]] && rm -f "$TMP_PALETTE_FILE" + [[ -f $TMP_GIF_RESULT ]] && rm -f "$TMP_GIF_RESULT" + [[ -f $TMP_MP4_FILE ]] && rm -f "$TMP_MP4_FILE" + [[ -f /tmp/recording_gif ]] && rm -f /tmp/recording_gif +fi + +case "$1" in + screen) + screen + ;; + area) + area + ;; + gif) + gif + ;; + stop) + stop + ;; + *) + echo "Usage: $0 {screen|area|gif|stop}" + exit 1 + ;; +esac diff --git a/glasshouse-laptop/home/scripts/scripts/rofi-power-menu.sh b/glasshouse-laptop/home/scripts/scripts/rofi-power-menu.sh new file mode 100755 index 0000000..5ecfb73 --- /dev/null +++ b/glasshouse-laptop/home/scripts/scripts/rofi-power-menu.sh @@ -0,0 +1,281 @@ +#!/usr/bin/env bash + +# This script defines just a mode for rofi instead of being a self-contained +# executable that launches rofi by itself. This makes it more flexible than +# running rofi inside this script as now the user can call rofi as one pleases. +# For instance: +# +# rofi -show powermenu -modi powermenu:./rofi-power-menu +# +# See README.md for more information. + +set -e +set -u + +# All supported choices +all=(shutdown reboot suspend hibernate lockscreen) + +# By default, show all (i.e., just copy the array) +show=("${all[@]}") + +declare -A texts +texts[lockscreen]="lock screen" +texts[switchuser]="switch user" +texts[logout]="log out" +texts[suspend]="suspend" +texts[hibernate]="hibernate" +texts[reboot]="reboot" +texts[shutdown]="shut down" + +declare -A icons +icons[lockscreen]="\Uf033e" +icons[switchuser]="\Uf0019" +icons[logout]="\Uf0343" +icons[suspend]="\Uf04b2" +icons[hibernate]="\Uf02ca" +icons[reboot]="\Uf0709" +icons[shutdown]="\Uf0425" +icons[cancel]="\Uf0156" + +declare -A actions +actions[lockscreen]="hyprlock" +#actions[switchuser]="???" +actions[logout]="sway exit" +actions[suspend]="systemctl suspend" +actions[hibernate]="systemctl hibernate" +actions[reboot]="systemctl reboot" +actions[shutdown]="systemctl poweroff" + +# By default, ask for confirmation for actions that are irreversible +confirmations=(reboot shutdown hibernate) + +# By default, no dry run +dryrun=false +showsymbols=true +showtext=true + +function check_valid { + option="$1" + shift 1 + for entry in "${@}" + do + if [ -z "${actions[$entry]+x}" ] + then + echo "Invalid choice in $1: $entry" >&2 + exit 1 + fi + done +} + +# Parse command-line options +parsed=$(getopt --options=h --longoptions=help,dry-run,confirm:,choices:,choose:,symbols,no-symbols,text,no-text,symbols-font: --name "$0" -- "$@") +if [ $? -ne 0 ]; then + echo 'Terminating...' >&2 + exit 1 +fi +eval set -- "$parsed" +unset parsed +while true; do + case "$1" in + "-h"|"--help") + echo "rofi-power-menu - a power menu mode for Rofi" + echo + echo "Usage: rofi-power-menu [--choices CHOICES] [--confirm CHOICES]" + echo " [--choose CHOICE] [--dry-run] [--symbols|--no-symbols]" + echo + echo "Use with Rofi in script mode. For instance, to ask for shutdown or reboot:" + echo + echo " rofi -show menu -modi \"menu:rofi-power-menu --choices=shutdown/reboot\"" + echo + echo "Available options:" + echo " --dry-run Don't perform the selected action but print it to stderr." + echo " --choices CHOICES Show only the selected choices in the given order. Use /" + echo " as the separator. Available choices are lockscreen," + echo " logout,suspend, hibernate, reboot and shutdown. By" + echo " default, all available choices are shown." + echo " --confirm CHOICES Require confirmation for the gives choices only. Use / as" + echo " the separator. Available choices are lockscreen, logout," + echo " suspend, hibernate, reboot and shutdown. By default, only" + echo " irreversible actions logout, reboot and shutdown require" + echo " confirmation." + echo " --choose CHOICE Preselect the given choice and only ask for a" + echo " confirmation (if confirmation is set to be requested). It" + echo " is strongly recommended to combine this option with" + echo " --confirm=CHOICE if the choice wouldn't require" + echo " confirmation by default. Available choices are" + echo " lockscreen, logout, suspend, hibernate, reboot and" + echo " shutdown." + echo " --[no-]symbols Show Unicode symbols or not. Requires a font with support" + echo " for the symbols. Use, for instance, fonts from the" + echo " Nerdfonts collection. By default, they are shown" + echo " --[no-]text Show text description or not." + echo " --symbols-font FONT Use the given font for symbols. By default, the symbols" + echo " use the same font as the text. That font is configured" + echo " with rofi." + echo " -h,--help Show this help text." + exit 0 + ;; + "--dry-run") + dryrun=true + shift 1 + ;; + "--confirm") + IFS='/' read -ra confirmations <<< "$2" + check_valid "$1" "${confirmations[@]}" + shift 2 + ;; + "--choices") + IFS='/' read -ra show <<< "$2" + check_valid "$1" "${show[@]}" + shift 2 + ;; + "--choose") + # Check that the choice is valid + check_valid "$1" "$2" + selectionID="$2" + shift 2 + ;; + "--symbols") + showsymbols=true + shift 1 + ;; + "--no-symbols") + showsymbols=false + shift 1 + ;; + "--text") + showtext=true + shift 1 + ;; + "--no-text") + showtext=false + shift 1 + ;; + "--symbols-font") + symbols_font="$2" + shift 2 + ;; + "--") + shift + break + ;; + *) + echo "Internal error" >&2 + exit 1 + ;; + esac +done + +if [ "$showsymbols" = "false" -a "$showtext" = "false" ] +then + echo "Invalid options: cannot have --no-symbols and --no-text enabled at the same time." >&2 + exit 1 +fi + +# Define the messages after parsing the CLI options so that it is possible to +# configure them in the future. + +function write_message { + if [ -z ${symbols_font+x} ]; + then + icon="$1" + else + icon="$1" + fi + text="$2" + if [ "$showsymbols" = "true" ] + then + if [ "$showtext" = "true" ] + then + echo -n "\u200e$icon \u2068$text\u2069" + else + echo -n "\u200e$icon" + fi + else + echo -n "$text" + fi +} + +function print_selection { + echo -e "$1" | $(read -r -d '' entry; echo "echo $entry") +} + +declare -A messages +declare -A confirmationMessages +for entry in "${all[@]}" +do + messages[$entry]=$(write_message "${icons[$entry]}" "${texts[$entry]^}") +done +for entry in "${all[@]}" +do + confirmationMessages[$entry]=$(write_message "${icons[$entry]}" "Yes, ${texts[$entry]}") +done +confirmationMessages[cancel]=$(write_message "${icons[cancel]}" "No, cancel") + +if [ $# -gt 0 ] +then + # If arguments given, use those as the selection + selection="${@}" +else + # Otherwise, use the CLI passed choice if given + if [ -n "${selectionID+x}" ] + then + selection="${messages[$selectionID]}" + fi +fi + +# Don't allow custom entries +echo -e "\0no-custom\x1ftrue" +# Use markup +echo -e "\0markup-rows\x1ftrue" + +if [ -z "${selection+x}" ] +then + echo -e "\0prompt\x1fPower menu" + for entry in "${show[@]}" + do + echo -e "${messages[$entry]}\0icon\x1f${icons[$entry]}" + done +else + for entry in "${show[@]}" + do + if [ "$selection" = "$(print_selection "${messages[$entry]}")" ] + then + # Check if the selected entry is listed in confirmation requirements + for confirmation in "${confirmations[@]}" + do + if [ "$entry" = "$confirmation" ] + then + # Ask for confirmation + echo -e "\0prompt\x1fAre you sure" + echo -e "${confirmationMessages[$entry]}\0icon\x1f${icons[$entry]}" + echo -e "${confirmationMessages[cancel]}\0icon\x1f${icons[cancel]}" + exit 0 + fi + done + # If not, then no confirmation is required, so mark confirmed + selection=$(print_selection "${confirmationMessages[$entry]}") + fi + if [ "$selection" = "$(print_selection "${confirmationMessages[$entry]}")" ] + then + if [ $dryrun = true ] + then + # Tell what would have been done + echo "Selected: $entry" >&2 + else + # Perform the action + pkill -9 rofi + ${actions[$entry]} + fi + exit 0 + fi + if [ "$selection" = "$(print_selection "${confirmationMessages[cancel]}")" ] + then + # Do nothing + exit 0 + fi + done + # The selection didn't match anything, so raise an error + echo "Invalid selection: $selection" >&2 + exit 1 +fi diff --git a/glasshouse-laptop/home/scripts/scripts/runbg.sh b/glasshouse-laptop/home/scripts/scripts/runbg.sh new file mode 100755 index 0000000..dc5088d --- /dev/null +++ b/glasshouse-laptop/home/scripts/scripts/runbg.sh @@ -0,0 +1,16 @@ +#!/usr/bin/env bash + +[ $# -eq 0 ] && { # $# is number of args + echo "$(basename $0): missing command" >&2 + exit 1 +} +prog="$(which "$1")" # see below +[ -z "$prog" ] && { + echo "$(basename $0): unknown command: $1" >&2 + exit 1 +} +shift # remove $1, now $prog, from args +tty -s && exec /dev/null # if stdout is a terminal, redirect to null +tty -s <&2 && exec 2>&1 # stderr to stdout (which might not be null) +"$prog" "$@" & # $@ is all args \ No newline at end of file diff --git a/glasshouse-laptop/home/scripts/scripts/s_check.sh b/glasshouse-laptop/home/scripts/scripts/s_check.sh new file mode 100755 index 0000000..c2a2fcd --- /dev/null +++ b/glasshouse-laptop/home/scripts/scripts/s_check.sh @@ -0,0 +1,3 @@ +#!/run/current-system/sw/bin/bash + +[ "$SOUNDS_ENABLED" -eq 1 ] diff --git a/glasshouse-laptop/home/scripts/scripts/screenshot.sh b/glasshouse-laptop/home/scripts/scripts/screenshot.sh new file mode 100755 index 0000000..04df199 --- /dev/null +++ b/glasshouse-laptop/home/scripts/scripts/screenshot.sh @@ -0,0 +1,34 @@ +#!/usr/bin/env bash + +dir="$HOME/Pictures/Screenshots" +time=$(date +'%Y_%m_%d_at_%Hh%Mm%Ss') +file="${dir}/Screenshot_${time}.png" + +copy() { + grimblast --notify --freeze copy area +} + +save() { + grimblast --notify --freeze save area "$file" +} + +swappy_() { + grimblast --notify --freeze save area "$file" + swappy -f "$file" +} + +if [[ ! -d "$dir" ]]; then + mkdir -p "$dir" +fi + +if [[ "$1" == "--copy" ]]; then + copy +elif [[ "$1" == "--save" ]]; then + save +elif [[ "$1" == "--swappy" ]]; then + swappy_ +else + echo -e "Available Options: --copy --save --swappy" +fi + +exit 0 diff --git a/glasshouse-laptop/home/scripts/scripts/shutdown-script.sh b/glasshouse-laptop/home/scripts/scripts/shutdown-script.sh new file mode 100755 index 0000000..9b5c99c --- /dev/null +++ b/glasshouse-laptop/home/scripts/scripts/shutdown-script.sh @@ -0,0 +1,15 @@ +#!/usr/bin/env zsh + +respond="$(echo " Shutdown\n Restart\n Cancel" | rofi -dmenu)" + +if [ $respond = ' Shutdown' ] +then + echo "shutdown" + shutdown now +elif [ $respond = ' Restart' ] +then + echo "restart" + reboot +else + notify-send "cancel shutdown" +fi diff --git a/glasshouse-laptop/home/scripts/scripts/splash.sh b/glasshouse-laptop/home/scripts/scripts/splash.sh new file mode 100755 index 0000000..4cc0508 --- /dev/null +++ b/glasshouse-laptop/home/scripts/scripts/splash.sh @@ -0,0 +1,6 @@ +#!/bin/bash + +echo "NixOS kernel ver. $(uname -a | awk '{print $3}') x86_64 GNU/Linux" +date +"%A %B %-d %Y" +echo -e "\033[38;2;0;180;205m$(toilet -t -f Slant.flf glasshouse)\033[0m" +echo diff --git a/glasshouse-laptop/home/scripts/scripts/switchmon.sh b/glasshouse-laptop/home/scripts/scripts/switchmon.sh new file mode 100755 index 0000000..c7be2ab --- /dev/null +++ b/glasshouse-laptop/home/scripts/scripts/switchmon.sh @@ -0,0 +1,3 @@ +#!/bin/zsh + +hyprctl dispatch focusmonitor $(echo "$(hyprctl -j monitors)" | jq -r '.[] | select(.focused == false) | .name') diff --git a/glasshouse-laptop/home/scripts/scripts/toggle_blur.sh b/glasshouse-laptop/home/scripts/scripts/toggle_blur.sh new file mode 100755 index 0000000..9e970a4 --- /dev/null +++ b/glasshouse-laptop/home/scripts/scripts/toggle_blur.sh @@ -0,0 +1,7 @@ +#!/usr/bin/env bash + +if hyprctl getoption decoration:blur:enabled | grep "int: 1" >/dev/null ; then + hyprctl keyword decoration:blur:enabled false >/dev/null +else + hyprctl keyword decoration:blur:enabled true >/dev/null +fi diff --git a/glasshouse-laptop/home/scripts/scripts/toggle_float.sh b/glasshouse-laptop/home/scripts/scripts/toggle_float.sh new file mode 100755 index 0000000..dadb982 --- /dev/null +++ b/glasshouse-laptop/home/scripts/scripts/toggle_float.sh @@ -0,0 +1,5 @@ +#!/usr/bin/env bash + +hyprctl dispatch togglefloating +hyprctl dispatch resizeactive exact 950 600 +hyprctl dispatch centerwindow diff --git a/glasshouse-laptop/home/scripts/scripts/toggle_oppacity.sh b/glasshouse-laptop/home/scripts/scripts/toggle_oppacity.sh new file mode 100755 index 0000000..9f1062e --- /dev/null +++ b/glasshouse-laptop/home/scripts/scripts/toggle_oppacity.sh @@ -0,0 +1,9 @@ +#!/usr/bin/env bash + +if hyprctl getoption decoration:active_opacity | grep "float: 1" >/dev/null ; then + hyprctl keyword decoration:active_opacity 0.90 >/dev/null + hyprctl keyword decoration:inactive_opacity 0.90 >/dev/null +else + hyprctl keyword decoration:active_opacity 1 >/dev/null + hyprctl keyword decoration:inactive_opacity 1 >/dev/null +fi diff --git a/glasshouse-laptop/home/scripts/scripts/toggle_waybar.sh b/glasshouse-laptop/home/scripts/scripts/toggle_waybar.sh new file mode 100755 index 0000000..b1de075 --- /dev/null +++ b/glasshouse-laptop/home/scripts/scripts/toggle_waybar.sh @@ -0,0 +1,10 @@ +#!/usr/bin/env bash + +SERVICE=".waybar-wrapped" + +if pgrep -x "$SERVICE" >/dev/null +then + pkill -9 waybar +else + runbg waybar +fi diff --git a/glasshouse-laptop/home/scripts/scripts/vm-start.sh b/glasshouse-laptop/home/scripts/scripts/vm-start.sh new file mode 100755 index 0000000..ba2fd15 --- /dev/null +++ b/glasshouse-laptop/home/scripts/scripts/vm-start.sh @@ -0,0 +1,11 @@ +#!/usr/bin/env zsh + +# VM name +vm_name="win10" +export LIBVIRT_DEFAULT_URI="qemu:///system" + +# change workspace +hyprctl dispatch workspace 6 + +virsh start ${vm_name} +virt-viewer -f -w -a ${vm_name} \ No newline at end of file diff --git a/glasshouse-laptop/home/scripts/scripts/wall-change.sh b/glasshouse-laptop/home/scripts/scripts/wall-change.sh new file mode 100755 index 0000000..8ec034c --- /dev/null +++ b/glasshouse-laptop/home/scripts/scripts/wall-change.sh @@ -0,0 +1,9 @@ +#!/usr/bin/env bash + +PIDS=$(pgrep -f "swaybg") + +swaybg -m fill -i $1 & + +if [ -n "$PIDS" ]; then + echo "$PIDS" | xargs kill +fi diff --git a/glasshouse-laptop/home/scripts/scripts/wallpaper-picker.sh b/glasshouse-laptop/home/scripts/scripts/wallpaper-picker.sh new file mode 100755 index 0000000..6208123 --- /dev/null +++ b/glasshouse-laptop/home/scripts/scripts/wallpaper-picker.sh @@ -0,0 +1,12 @@ +#!/usr/bin/env bash + +wallpaper_path=$HOME/Pictures/wallpapers +wallpapers_folder=$HOME/Pictures/Wallpapers +wallpaper_name="$(ls $wallpapers_folder | rofi -dmenu || pkill rofi)" +if [[ -f $wallpapers_folder/$wallpaper_name ]]; then + find ~/Pictures/Wallpapers -maxdepth 1 -type f -delete + cp $wallpapers_folder/$wallpaper_name $wallpaper_path/$wallpaper_name + wall-change $wallpaper_path/$wallpaper_name +else + exit 1 +fi diff --git a/glasshouse-laptop/home/spicetify.nix b/glasshouse-laptop/home/spicetify.nix new file mode 100644 index 0000000..8a503dd --- /dev/null +++ b/glasshouse-laptop/home/spicetify.nix @@ -0,0 +1,24 @@ +{ pkgs, lib, inputs, ...}: + +let + spicePkgs = inputs.spicetify-nix.legacyPackages.${pkgs.system}; +in +{ + nixpkgs.config.allowUnfreePredicate = pkg: + builtins.elem (lib.getName pkg) [ + "spotify" + ]; + + imports = [inputs.spicetify-nix.homeManagerModules.default]; + + programs.spicetify = { + enable = true; + enabledExtensions = with spicePkgs.extensions; [ + adblock + hidePodcasts + shuffle # shuffle+ (special characters are sanitized out of extension names) + ]; + theme = spicePkgs.themes.catppuccin; + colorScheme = "mocha"; + }; +} diff --git a/glasshouse-laptop/home/starship.nix b/glasshouse-laptop/home/starship.nix new file mode 100644 index 0000000..8c6895d --- /dev/null +++ b/glasshouse-laptop/home/starship.nix @@ -0,0 +1,61 @@ +{ lib, inputs, ... }: + +{ + programs.starship = { + enable = true; + enableZshIntegration = false; + settings = { + add_newline = true; + right_format = "($custom)"; + + format = lib.concatStrings [ + "($username)(bold white)($cmd_duration)($character)" + "($git_branch)($git_status)($rust)($nix-shell)" + "($directory)" + "$line_break[ > ](bold #89b4fa)" + ]; + + + username = { + show_always = true; + style_user = "bold white"; + format = "[$user]($style)"; + }; + directory = { + format = "\n[$path](bold cyan)[/](bold green) "; + style = "bold #b4befe"; + }; + + character = { + success_symbol = "[ -> ](bold green)"; + error_symbol = "[ -> ✗](bold red)"; +# error_symbol = "[ ](bold #89dceb)[ ✗](bold red)"; + }; + + cmd_duration = { + format = "[ 󰔛 $duration]($style)"; + disabled = false; + style = "bg:none fg:#f9e2af"; + show_notifications = false; + min_time_to_notify = 60000; + }; + + git_branch = { + format = "\non [$symbol$branch](bold purple)"; + symbol = " "; + truncation_length = 15; + style = "bold purple"; + }; + + custom.shellver = { + command = "zsh --version"; + when = ''test $SHELL = "/run/current-system/sw/bin/zsh"''; + symbol = ""; + style = "bold magenta"; + }; + + palette = "catppuccin_mocha"; + } // builtins.fromTOML (builtins.readFile "${inputs.catppuccin-starship}/themes/mocha.toml"); + }; +} + diff --git a/glasshouse-laptop/home/swaync/config.json b/glasshouse-laptop/home/swaync/config.json new file mode 100644 index 0000000..88450c9 --- /dev/null +++ b/glasshouse-laptop/home/swaync/config.json @@ -0,0 +1,136 @@ +{ + "positionX": "right", + "positionY": "top", + "layer": "overlay", + "layer-shell": "true", + "cssPriority": "application", + "control-center-margin-top": 10, + "control-center-margin-bottom": 10, + "control-center-margin-right": 10, + "control-center-margin-left": 10, + "notification-icon-size": 64, + "notification-body-image-height": 128, + "notification-body-image-width": 200, + "timeout": 10, + "timeout-low": 5, + "timeout-critical": 0, + "fit-to-screen": true, + "control-center-width": 400, + "control-center-height": 650, + "notification-window-width": 350, + "keyboard-shortcuts": true, + "image-visibility": "when-available", + "transition-time": 200, + "hide-on-clear": false, + "hide-on-action": true, + "script-fail-notify": true, + "widgets": [ + "title", + "menubar#desktop", + "volume", + "backlight#mobile", + "mpris", + "dnd", + "notifications" + ], + "widget-config": { + "title": { + "text": "Notifications", + "clear-all-button": true, + "button-text": " Clear All " + }, + "menubar#desktop": { + "menu#powermode-buttons": { + "label": " 󰌪 ", + "position": "left", + "actions": [ + { + "label": "Performance", + "command": "powerprofilesctl set performance" + }, + { + "label": "Balanced", + "command": "powerprofilesctl set balanced" + }, + { + "label": "Power-saver", + "command": "powerprofilesctl set power-saver" + } + ] + }, + "menu#screenshot": { + "label": "  ", + "position": "left", + "actions": [ + { + "label": "󰹑 Whole screen", + "command": "grimblast --notify --cursor --freeze copy output" + }, + { + "label": "󰩭 Window / Region", + "command": "grimblast --notify --cursor --freeze copy area" + } + ] + }, + "menu#record": { + "label": " 󰕧 ", + "position": "left", + "actions": [ + { + "label": " Record screen", + "command": "record screen & ; swaync-client -t" + }, + { + "label": " Record selection", + "command": "record area & ; swaync-client -t" + }, + { + "label": " Record GIF", + "command": "record gif & ; swaync-client -t" + }, + { + "label": "󰻃 Stop", + "command": "record stop" + } + ] + }, + "menu#power-buttons": { + "label": "  ", + "position": "left", + "actions": [ + { + "label": " Lock", + "command": "swaylock" + }, + { + "label": " Reboot", + "command": "systemctl reboot" + }, + { + "label": " Shut down", + "command": "systemctl poweroff" + } + ] + } + }, + "backlight#mobile": { + "label": " 󰃠 ", + "device": "panel" + }, + "volume": { + "label": "", + "expand-button-label": "", + "collapse-button-label": "", + "show-per-app": true, + "show-per-app-icon": true, + "show-per-app-label": false + }, + "dnd": { + "text": " Do Not Disturb" + }, + "mpris": { + "image-size": 85, + "image-radius": 5 + } + } +} diff --git a/glasshouse-laptop/home/swaync/style.css b/glasshouse-laptop/home/swaync/style.css new file mode 100644 index 0000000..a31f30c --- /dev/null +++ b/glasshouse-laptop/home/swaync/style.css @@ -0,0 +1,601 @@ + +@define-color shadow rgba(0, 0, 0, 0.25); +/* +* +* Catppuccin Mocha palette +* Maintainer: rubyowo +* +*/ + +@define-color base #1E1D2E; +@define-color mantle #181825; +@define-color crust #11111b; + +@define-color text #cdd6f4; +@define-color subtext0 #a6adc8; +@define-color subtext1 #bac2de; + +@define-color surface0 #313244; +@define-color surface1 #45475a; +@define-color surface2 #585b70; + +@define-color overlay0 #6c7086; +@define-color overlay1 #7f849c; +@define-color overlay2 #9399b2; + +@define-color blue #89b4fa; +@define-color lavender #b4befe; +@define-color sapphire #74c7ec; +@define-color sky #89dceb; +@define-color teal #94e2d5; +@define-color green #a6e3a1; +@define-color yellow #f9e2af; +@define-color peach #fab387; +@define-color maroon #eba0ac; +@define-color red #f38ba8; +@define-color mauve #cba6f7; +@define-color pink #f5c2e7; +@define-color flamingo #f2cdcd; +@define-color rosewater #f5e0dc; + +* { + font-family: "NotoSansMono Nerd Font"; + background-clip: border-box; +} + +/* #notifications_box { */ +/* border: solid 4px red; */ +/* } */ + +label { + color: @text; +} + +.notification { + border: @lavender; + box-shadow: none; + /* margin: 0px; */ + /* margin: -15px -10px -15px -10px; */ + border-radius: 4px; + background: inherit; + /* background: @theme_bg_color; */ + /* background: shade(alpha(@borders, 2.55), 0.25); */ +} + +.notification button { + background: transparent; + border-radius: 0px; + border: none; + margin: 0px; + padding: 0px; +} + +.notification button:hover { + background: @surface0; + /* background: @insensitive_bg_color; */ +} + + +.notification-content { + min-height: 64px; + margin: 10px; + padding: 0px; + border-radius: 0px; +} + +.close-button { + background: @crust; + color: @surface2; +} + +.notification-default-action, +.notification-action { + background: transparent; + border: none; +} + + +.notification-default-action { + border-radius: 4px; +} + +/* When alternative actions are visible */ +.notification-default-action:not(:only-child) { + border-bottom-left-radius: 0px; + border-bottom-right-radius: 0px; +} + +.notification-action { + border-radius: 0px; + padding: 2px; + color: @text; + /* color: @theme_text_color; */ +} + +/* add bottom border radius to eliminate clipping */ +.notification-action:first-child { + border-bottom-left-radius: 4px; +} + +.notification-action:last-child { + border-bottom-right-radius: 4px; +} + +/*** Notification ***/ +/* Notification header */ +.summary { + color: @text; + /* color: @theme_text_color; */ + font-size: 16px; + padding: 0px; +} + +.time { + color: @subtext0; + /* color: alpha(@theme_text_color, 0.9); */ + font-size: 12px; + text-shadow: none; + margin: 0px 0px 0px 0px; + padding: 2px 0px; +} + +.body { + font-size: 14px; + font-weight: 500; + color: @subtext1; + /* color: alpha(@text, 0.9); */ + /* color: alpha(@theme_text_color, 0.9); */ + text-shadow: none; + margin: 0px 0px 0px 0px; +} + +.body-image { + border-radius: 4px; +} + +/* The "Notifications" and "Do Not Disturb" text widget */ +.top-action-title { + color: @text; + /* color: @theme_text_color; */ + text-shadow: none; +} + +/* Control center */ + +.control-center { + /* background: transparent; */ + background: @crust; + /* background: @theme_bg_color; */ + /* border: 1px solid @surface0; */ + border-radius: 5px; + /* box-shadow: 0px 0px 2px black; */ +} + +/* .right.overlay-indicator { */ +/* border: solid 5px red; */ +/* } */ + +.control-center-list { + /* background: @base; */ + background: @crust; + min-height: 5px; + /* border: 1px solid @surface1; */ + border-top: none; + border-radius: 0px 0px 4px 4px; +} + +.control-center-list-placeholder, +.notification-group-icon, +.notification-group { + /* opacity: 1.0; */ + /* opacity: 0; */ + color: alpha(@theme_text_color, 0.50); +} + +.notification-group { + /* unset the annoying focus thingie */ + all: unset; + border: none; + opacity: 0; + padding: 0px; + box-shadow: none; + /* selectable: no; */ +} +.notification-group > box { + all: unset; + background: @mantle; + /* background: alpha(currentColor, 0.072); */ + padding: 8px; + margin: 0px; + /* margin: 0px -5px; */ + border: none; + border-radius: 4px; + box-shadow: none; +} + + +.notification-row { + outline: none; + transition: all 1s ease; + background: @base; + /* background: @theme_bg_color; */ + border: 1px solid @crust; + margin: 10px 5px 0px 5px; + border-radius: 4px; + /* box-shadow: 0px 0px 4px black; */ + /* background: alpha(currentColor, 0.05); */ +} + +.notification-row:focus, +.notification-row:hover { + box-shadow: none; +} + +.control-center-list > row, +.control-center-list > row:focus, +.control-center-list > row:hover { + background: transparent; + border: none; + margin: 0px; + padding: 5px 10px 5px 10px; + box-shadow: none; +} + +.control-center-list > row:last-child { + padding: 5px 10px 10px 10px; +} + + +/* Window behind control center and on all other monitors */ +.blank-window { + background: transparent; +} + +/*** Widgets ***/ + +/* Title widget */ +.widget-title { + margin: 0px; + background: inherit; + /* background: @theme_bg_color; */ + border-radius: 4px 4px 0px 0px; + /* border: 1px solid @surface1; */ + border-bottom: none; + padding-bottom: 20px; +} + +.widget-title > label { + margin: 18px 10px; + font-size: 20px; + font-weight: 500; +} + +.widget-title > button { + font-weight: 700; + padding: 7px 3px; + margin-right: 10px; + background: @mantle; + color: @text; + /* color: @theme_text_color; */ + /* border: none; */ + border-radius: 4px; +} +.widget-title > button:hover { + background: @base; + /* background: alpha(currentColor, 0.1); */ +} + +/* Label widget */ +.widget-label { + margin: 0px; + padding: 0px; + min-height: 5px; + background: @mantle; + /* background: @theme_bg_color; */ + border-radius: 0px 0px 4px 4px; + /* border: 1px solid @surface1; */ + border-top: none; +} +.widget-label > label { + font-size: 0px; + font-weight: 400; +} + +/* Menubar */ +.widget-menubar { + background: inherit; + /* background: @theme_bg_color; */ + /* border: 1px solid @surface1; */ + border-top: none; + border-bottom: none; +} +.widget-menubar > box > box { + margin: 5px 10px 5px 10px; + min-height: 40px; + border-radius: 4px; + background: transparent; +} +.widget-menubar > box > box > button { + background: @mantle; + /* background: alpha(currentColor, 0.05); */ + min-width: 85px; + min-height: 50px; + margin-right: 13px; + font-size: 17px; + padding: 0px; +} +.widget-menubar > box > box > button:nth-child(4) { + margin-right: 0px; +} +.widget-menubar button:focus { + box-shadow: none; +} +.widget-menubar button:focus:hover { + background: @base; + /* background: alpha(currentColor,0.1); */ + box-shadow: none; +} + +.widget-menubar > box > revealer > box { + margin: 5px 10px 5px 10px; + background: @mantle; + /* background: alpha(currentColor, 0.05); */ + border-radius: 4px; +} +.widget-menubar > box > revealer > box > button { + background: transparent; + min-height: 50px; + padding: 0px; + margin: 5px; +} + +/* Buttons grid */ +.widget-buttons-grid { + /* background-color: @theme_bg_color; */ + background-color: @mantle; + /* border: 1px solid @surface1; */ + border-top: none; + border-bottom: none; + font-size: 14px; + font-weight: 500; + margin: 0px; + padding: 5px; + border-radius: 0px; +} + +.widget-buttons-grid > flowbox > flowboxchild { + background: @mantle; + /* background: alpha(currentColor, 0.05); */ + border-radius: 4px; + min-height: 50px; + min-width: 85px; + margin: 5px; + padding: 0px; +} + +.widget-buttons-grid > flowbox > flowboxchild > button { + background: transparent; + border-radius: 4px; + margin: 0px; + border: none; + box-shadow: none; +} + + +.widget-buttons-grid > flowbox > flowboxchild > button:hover { + background: @mantle; + /* background: alpha(currentColor, 0.1); */ +} + +/* Mpris widget */ +.widget-mpris { + padding: 10px; + padding-bottom: 35px; + padding-top: 35px; + margin-bottom: -33px; +} +.widget-mpris > box { + padding: 0px; + margin: -5px 0px -10px 0px; + padding: 0px; + border-radius: 4px; + /* background: alpha(currentColor, 0.05); */ + background: @mantle; +} +.widget-mpris > box > button:nth-child(1), +.widget-mpris > box > button:nth-child(3) { + margin-bottom: 0px; +} +.widget-mpris > box > button:nth-child(1) { + margin-left: -25px; + margin-right: -25px; + opacity: 0; +} +.widget-mpris > box > button:nth-child(3) { + margin-left: -25px; + margin-right: -25px; + opacity: 0; +} + +.widget-mpris-album-art { + all: unset; +} + +/* Player button box */ +.widget-mpris > box > carousel > widget > box > box:nth-child(2) { + margin: 5px 0px -5px 90px; +} + +/* Player buttons */ +.widget-mpris > box > carousel > widget > box > box:nth-child(2) > button { + border-radius: 4px; +} +.widget-mpris > box > carousel > widget > box > box:nth-child(2) > button:hover { + background: alpha(currentColor, 0.1); +} +carouselindicatordots { + opacity: 0; +} + +.widget-mpris-title { + color: #eeeeee; + font-weight: bold; + font-size: 1.25rem; + text-shadow: 0px 0px 5px rgba(0, 0, 0, 0.5); +} +.widget-mpris-subtitle { + color: #eeeeee; + font-size: 1rem; + text-shadow: 0px 0px 3px rgba(0, 0, 0, 1); +} + +.widget-mpris-player { + border-radius: 0px; + margin: 0px; +} +.widget-mpris-player > box > image { + margin: 0px 0px -48px 0px; +} + +.notification-group > box.vertical { + /* border: solid 5px red; */ + margin-top: 3px +} + +/* Backlight and volume widgets */ +.widget-backlight, +.widget-volume { + background-color: @crust; + /* background-color: @theme_bg_color; */ + /* border: 1px solid @surface1; */ + border-top: none; + border-bottom: none; font-size: 13px; + font-weight: 600; + border-radius: 0px; + margin: 0px; + padding: 0px; +} +.widget-volume > box { + background: @mantle; + /* background: alpha(currentColor, 0.05); */ + border-radius: 4px; + margin: 5px 10px 5px 10px; + min-height: 50px; +} +.widget-volume > box > label { + min-width: 50px; + padding: 0px; +} +.widget-volume > box > button { + min-width: 50px; + box-shadow: none; + padding: 0px; +} +.widget-volume > box > button:hover { + /* background: alpha(currentColor, 0.05); */ + background: @surface0; +} +.widget-volume > revealer > list { + background: @mantle; + /* background: alpha(currentColor, 0.05); */ + border-radius: 4px; + margin-top: 5px; + padding: 0px; +} +.widget-volume > revealer > list > row { + padding-left: 10px; + min-height: 40px; + background: transparent; +} +.widget-volume > revealer > list > row:hover { + background: transparent; + box-shadow: none; + border-radius: 4px; +} +.widget-backlight > scale { + background: @mantle; + /* background: alpha(currentColor, 0.05); */ + border-radius: 0px 4px 4px 0px; + margin: 5px 10px 5px 0px; + padding: 0px 10px 0px 0px; + min-height: 50px; +} +.widget-backlight > label { + background: @surface0; + /* background: alpha(currentColor, 0.05); */ + margin: 5px 0px 5px 10px; + border-radius: 4px 0px 0px 4px; + padding: 0px; + min-height: 50px; + min-width: 50px; +} + +/* DND widget */ +.widget-dnd { + margin: 8px; + font-size: 1.1rem; + padding-top: 20px; +} + +.widget-dnd>switch { + font-size: initial; + border-radius: 12px; + background: @surface0; + border: 1px solid @lavender; + box-shadow: none; +} + +.widget-dnd>switch:checked { + background: @surface2; +} + +.widget-dnd>switch slider { + background: @lavender; + border-radius: 12px; +} + +/* Toggles */ +.toggle:checked { + background: @surface1; + /* background: @theme_selected_bg_color; */ +} +/*.toggle:not(:checked) { + color: rgba(128, 128, 128, 0.5); +}*/ +.toggle:checked:hover { + background: @surface2; + /* background: alpha(@theme_selected_bg_color, 0.75); */ +} + +/* Sliders */ +scale { + padding: 0px; + margin: 0px 10px 0px 10px; +} + +scale trough { + border-radius: 4px; + background: @surface0; + /* background: alpha(currentColor, 0.1); */ +} + +scale highlight { + border-radius: 5px; + min-height: 10px; + margin-right: -5px; +} + +scale slider { + margin: -10px; + min-width: 10px; + min-height: 10px; + background: transparent; + box-shadow: none; + padding: 0px; +} +scale slider:hover { +} + +.right.overlay-indicator { + all: unset; +} diff --git a/glasshouse-laptop/home/swaync/swaync.nix b/glasshouse-laptop/home/swaync/swaync.nix new file mode 100644 index 0000000..eecb7b2 --- /dev/null +++ b/glasshouse-laptop/home/swaync/swaync.nix @@ -0,0 +1,7 @@ +{ pkgs, ... }: + +{ + home.packages = (with pkgs; [ swaynotificationcenter ]); + xdg.configFile."swaync/style.css".source = ./style.css; + xdg.configFile."swaync/config.json".source = ./config.json; +} diff --git a/glasshouse-laptop/home/toilet/flake.lock b/glasshouse-laptop/home/toilet/flake.lock new file mode 100644 index 0000000..c36c036 --- /dev/null +++ b/glasshouse-laptop/home/toilet/flake.lock @@ -0,0 +1,27 @@ +{ + "nodes": { + "nixpkgs": { + "locked": { + "lastModified": 1726937504, + "narHash": "sha256-bvGoiQBvponpZh8ClUcmJ6QnsNKw0EMrCQJARK3bI1c=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "9357f4f23713673f310988025d9dc261c20e70c6", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "nixpkgs": "nixpkgs" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/glasshouse-laptop/home/toilet/flake.nix b/glasshouse-laptop/home/toilet/flake.nix new file mode 100644 index 0000000..5268dca --- /dev/null +++ b/glasshouse-laptop/home/toilet/flake.nix @@ -0,0 +1,47 @@ +{ + description = "Toilet Configuration with Extra Fonts"; + + inputs = { + nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; + }; + + outputs = { self, nixpkgs, ... }@inputs: + let + system = "x86_64-linux"; + pkgs = nixpkgs.legacyPackages.${system}; + + # Fetch extra fonts from GitHub + extraFonts = pkgs.fetchFromGitHub { + owner = "xero"; + repo = "figlet-fonts"; + rev = "master"; # Or specify a particular commit/tag + sha256 = "sha256-dAs7N66D2Fpy4/UB5Za1r2qb1iSAJR6TMmau1asxgtY="; # Replace with actual hash + }; + in { + packages.${system} = { + default = pkgs.toilet.overrideAttrs (oldAttrs: rec { + buildInputs = oldAttrs.buildInputs or [] ++ [ extraFonts ]; + + installPhase = '' + make install PREFIX=$out + + # Copy the extra fonts into the correct directory + mkdir -p $out/share/figlet + cp -r ${extraFonts}/* $out/share/figlet + ''; + }); + }; + + # Define a development shell for testing + devShells.${system} = pkgs.mkShell { + buildInputs = [ + pkgs.toilet + extraFonts + ]; + + shellHook = '' + echo "Toilet dev shell with extra fonts" + ''; + }; + }; +} diff --git a/glasshouse-laptop/home/toilet/result b/glasshouse-laptop/home/toilet/result new file mode 120000 index 0000000..33ede88 --- /dev/null +++ b/glasshouse-laptop/home/toilet/result @@ -0,0 +1 @@ +/nix/store/i2ibv054n0ll5p78qabrkb5sxcjzbr2n-toilet-0.3 \ No newline at end of file diff --git a/glasshouse-laptop/home/userpkgs.nix b/glasshouse-laptop/home/userpkgs.nix new file mode 100644 index 0000000..5c3c458 --- /dev/null +++ b/glasshouse-laptop/home/userpkgs.nix @@ -0,0 +1,42 @@ +{ pkgs, inputs, ... }: +let + nvim = inputs.nvim.packages."x86_64-linux".default; + toilet = inputs.toilet.packages."x86_64-linux".default; +in +{ + home.packages = with pkgs; [ + hello + gtk3 + adwaita-icon-theme + uhk-agent + dunst + rofi + sqlite + starship + zathura + inkscape + imagemagick + firefox + yt-dlp + vlc + speedtest-cli + vesktop + qbittorrent + obs-studio + neovide + chromium + zsh + zsh-syntax-highlighting + zsh-history-substring-search + zsh-autosuggestions + audacity + snes9x-gtk + rustup + libreoffice + handbrake + gtrash + ripgrep + nvim + toilet + ]; +} diff --git a/glasshouse-laptop/home/waybar/default.nix b/glasshouse-laptop/home/waybar/default.nix new file mode 100644 index 0000000..c232efe --- /dev/null +++ b/glasshouse-laptop/home/waybar/default.nix @@ -0,0 +1,7 @@ +{ ... }: + +{ + imports = [ (import ./waybar.nix) ] + ++ [ (import ./settings.nix) ] + ++ [ (import ./style.nix) ]; +} diff --git a/glasshouse-laptop/home/waybar/settings.nix b/glasshouse-laptop/home/waybar/settings.nix new file mode 100644 index 0000000..602769a --- /dev/null +++ b/glasshouse-laptop/home/waybar/settings.nix @@ -0,0 +1,149 @@ +{ ... }: + +{ + programs.waybar.settings.mainBar = { + position= "top"; + layer= "top"; + height= 5; + margin-top= 0; + margin-bottom= 0; + margin-left= 0; + margin-right= 0; + modules-left= [ + "custom/launcher" + "custom/separator" + "hyprland/workspaces" + ]; + modules-center= [ + "clock" + ]; + modules-right= [ + "tray" + "custom/separator" + "cpu" + "memory" + "disk" + "custom/separator" + "pulseaudio" + "battery" + "network" + "custom/separator" + "custom/notification" + ]; + clock= { + calendar = { + format = { today = "{}"; }; + }; + format = " {:%H:%M}"; + tooltip= "true"; + tooltip-format= "{:%Y %B}\n{calendar}"; + format-alt= " {:%d/%m}"; + }; + "hyprland/workspaces"= { + active-only= false; + disable-scroll= true; + format = "{icon}"; + on-click= "activate"; + format-icons= { + "1"= "一"; + "2"= "二"; + "3"= "三"; + "4"= "四"; + "5"= "五"; + "6"= "六"; + urgent= ""; + default = ""; + sort-by-number= true; + }; + persistent-workspaces = { + "1"= []; + "2"= []; + "3"= []; + "4"= []; + "5"= []; + "6"= []; + }; + }; + memory= { + format= "󰟜 {}%"; + format-alt= "󰟜 {used} GiB"; #  + interval= 2; + }; + cpu= { + format= " {usage}%"; + format-alt= " {avg_frequency} GHz"; + interval= 2; + }; + disk = { + # path = "/"; + format = "󰋊 {percentage_used}%"; + interval= 60; + }; + network = { + format-wifi = " {signalStrength}%"; + format-ethernet = "󰀂 "; + tooltip-format = "Connected to {essid} {ifname} via {gwaddr}"; + format-linked = "{ifname} (No IP)"; + format-disconnected = "󰖪 "; + }; + tray= { + icon-size= 20; + spacing= 8; + }; + pulseaudio= { + format= "{icon} {volume}%"; + format-muted= " {volume}%"; + format-icons= { + default= [" "]; + }; + scroll-step= 5; + on-click= "pamixer -t"; + on-click-right= "pavucontrol"; + }; + battery = { + format = "{icon} {capacity}%"; + format-icons = [" " " " " " " " " "]; + format-charging = " {capacity}%"; + format-full = " {capacity}%"; + format-warning = " {capacity}%"; + interval = 5; + states = { + warning = 20; + }; + format-time = "{H}h{M}m"; + tooltip = true; + tooltip-format = "{time}"; + }; + "custom/launcher"= { + format= ""; + on-click= "fuzzel"; + on-click-right= "wallpaper-picker"; + tooltip= "false"; + }; + "custom/notification" = { + tooltip = false; + format = "{icon} "; + format-icons = { + notification = "  "; + none = "  "; + dnd-notification = "  "; + dnd-none = "  "; + inhibited-notification = "  "; + inhibited-none = "  "; + dnd-inhibited-notification = "  "; + dnd-inhibited-none = "  "; + }; + return-type = "json"; + exec-if = "which swaync-client"; + exec = "swaync-client -swb"; + on-click = "swaync-client -t -sw"; + on-click-right = "swaync-client -d -sw"; + escape = true; + }; + "custom/separator" = { + exec = "echo ' | '"; + interval = 600; + tooltip = false; + }; + }; +} diff --git a/glasshouse-laptop/home/waybar/style.nix b/glasshouse-laptop/home/waybar/style.nix new file mode 100644 index 0000000..9254a62 --- /dev/null +++ b/glasshouse-laptop/home/waybar/style.nix @@ -0,0 +1,100 @@ +{ ... }: + +let custom = { + font = "JetBrainsMono Nerd Font"; + font_size = "22px"; + font_weight = "bold"; + text_color = "#cdd6f4"; + secondary_accent = "#89b4fa"; + tertiary_accent = "#f5f5f5"; + background = "#11111B"; +}; +in +{ + programs.waybar.style = '' + + * { + border: none; + border-radius: 0px; + padding: 0; + margin: 0; + min-height: 0px; + font-family: ${custom.font}; + font-weight: ${custom.font_weight}; + } + + window#waybar { + background: ${custom.background}; + } + + #workspaces { + font-size: ${custom.font_size}; + + } + #workspaces button { + color: ${custom.text_color}; + padding-left: 6px; + padding-right: 6px; + } + #workspaces button.empty { + color: #6c7086; + } + #workspaces button.active { + color: #b4befe; + } + + #tray, #pulseaudio, #network, #cpu, #memory, #disk, #clock, #battery, #custom-notification { + font-size: ${custom.font_size}; + color: ${custom.text_color}; + } + + #cpu { + padding-left: 5px; + padding-right: 9px; + } + #memory { + padding-left: 9px; + padding-right: 9px; + } + #disk { + padding-left: 9px; + padding-right: 5px; + } + + #tray { + margin-left: 7px; + padding-right: 5px; + } + + #pulseaudio { + padding-left: 5px; + padding-right: 9px; + } + #battery { + padding-left: 9px; + padding-right: 9px; + } + #network { + padding-left: 9px; + padding-right: 5px; + } + + custom-notification { + padding-left: 15px; + padding-right: 20px; + } + + #clock { + padding-left: 9px; + padding-right: 15px; + } + + #custom-launcher { + font-size: ${custom.font_size}; + color: #b4befe; + font-weight: ${custom.font_weight}; + padding-left: 10px; + padding-right: 15px; + } + ''; +} diff --git a/glasshouse-laptop/home/waybar/waybar.nix b/glasshouse-laptop/home/waybar/waybar.nix new file mode 100644 index 0000000..112aa13 --- /dev/null +++ b/glasshouse-laptop/home/waybar/waybar.nix @@ -0,0 +1,10 @@ +{ pkgs, ... }: + +{ + programs.waybar = { + enable = true; + }; + programs.waybar.package = pkgs.waybar.overrideAttrs (oa: { + mesonFlags = (oa.mesonFlags or [ ]) ++ [ "-Dexperimental=true" ]; + }); +} diff --git a/glasshouse-laptop/home/yazi.nix b/glasshouse-laptop/home/yazi.nix new file mode 100644 index 0000000..f4df8fa --- /dev/null +++ b/glasshouse-laptop/home/yazi.nix @@ -0,0 +1,677 @@ +{ ... }: + +{ + programs.yazi = { + enable = true; + enableZshIntegration = true; + theme = { + manager = { + cwd = { fg = "#94e2d5"; }; + border_style = { fg = "#7f849c"; }; + preview_hovered = { underline = true; }; + find_keyword = { fg = "#f9e2af"; italic = true; }; + find_position = { fg = "#f5c2e7"; bg = "reset"; italic = true; }; + hovered = { fg = "#1e1e2e"; bg = "#89b4fa"; }; + marker_copied = { fg = "#a6e3a1"; bg = "#a6e3a1"; }; + marker_cut = { fg = "#f38ba8"; bg = "#f38ba8"; }; + marker_selected = { fg = "#89b4fa"; bg = "#89b4fa"; }; + tab_active = { fg = "#1e1e2e"; bg = "#cdd6f4"; }; + tab_inactive = { fg = "#cdd6f4"; bg = "#45475a"; }; + tab_width = 1; + count_copied = { fg = "#1e1e2e"; bg = "#a6e3a1"; }; + count_cut = { fg = "#1e1e2e"; bg = "#f38ba8"; }; + count_selected = { fg = "#1e1e2e"; bg = "#89b4fa"; }; + border_symbol = "│"; + }; + status = { + separator_open = ""; + separator_close = ""; + separator_style = { fg = "#45475a"; bg = "#45475a"; }; + mode_normal = { fg = "#1e1e2e"; bg = "#89b4fa"; bold = true; }; + mode_select = { fg = "#1e1e2e"; bg = "#a6e3a1"; bold = true; }; + mode_unset = { fg = "#1e1e2e"; bg = "#f2cdcd"; bold = true; }; + progress_label = { fg = "#ffffff"; bold = true; }; + progress_normal = { fg = "#89b4fa"; bg = "#45475a"; }; + progress_error = { fg = "#f38ba8"; bg = "#45475a"; }; + permissions_t = { fg = "#89b4fa"; }; + permissions_r = { fg = "#f9e2af"; }; + permissions_w = { fg = "#f38ba8"; }; + permissions_x = { fg = "#a6e3a1"; }; + permissions_s = { fg = "#7f849c"; }; + }; + input = { + border = { fg = "#89b4fa"; }; + selected = { reversed = true; }; + }; + select = { + border = { fg = "#89b4fa"; }; + active = { fg = "#f5c2e7"; }; + }; + tasks = { + border = { fg = "#89b4fa"; }; + hovered = { underline = true; }; + }; + which = { + mask = { bg = "#313244"; }; + cand = { fg = "#94e2d5"; }; + rest = { fg = "#9399b2"; }; + desc = { fg = "#f5c2e7"; }; + separator = "  "; + separator_style = { fg = "#585b70"; }; + }; + help = { + on = { fg = "#f5c2e7"; }; + exec = { fg = "#94e2d5"; }; + desc = { fg = "#9399b2"; }; + hovered = { bg = "#585b70"; bold = true; }; + footer = { fg = "#45475a"; bg = "#cdd6f4"; }; + }; + filetype = { + rules = [ + { mime = "image/*"; fg = "#94e2d5"; } + { mime = "{audio;video}/*"; fg = "#f9e2af"; } + { mime = "application/{;g}zip"; fg = "#f5c2e7"; } + { mime = "application/x-{tar;bzip*;7z-compressed;xz;rar}"; fg = "#f5c2e7"; } + { name = "*"; fg = "#cdd6f4"; } + { name = "*/"; fg = "#89b4fa"; } + ]; + }; + icon = { + files = [ + { name = "gulpfile.js"; text = ""; fg_dark = "#f38ba8"; fg_light = "#f38ba8"; } + { name = ".babelrc"; text = ""; fg_dark = "#f9e2af"; fg_light = "#f9e2af"; } + { name = "copying.lesser"; text = ""; fg_dark = "#f9e2af"; fg_light = "#f9e2af"; } + { name = ".npmrc"; text = ""; fg_dark = "#f38ba8"; fg_light = "#f38ba8"; } + { name = "docker-compose.yml"; text = "󰡨"; fg_dark = "#89b4fa"; fg_light = "#89b4fa"; } + { name = "svelte.config.js"; text = ""; fg_dark = "#fab387"; fg_light = "#fab387"; } + { name = "copying"; text = ""; fg_dark = "#f9e2af"; fg_light = "#f9e2af"; } + { name = "prettier.config.ts"; text = ""; fg_dark = "#89b4fa"; fg_light = "#89b4fa"; } + { name = "gruntfile.babel.js"; text = ""; fg_dark = "#fab387"; fg_light = "#fab387"; } + { name = ".SRCINFO"; text = "󰣇"; fg_dark = "#89b4fa"; fg_light = "#89b4fa"; } + { name = ".xinitrc"; text = ""; fg_dark = "#fab387"; fg_light = "#fab387"; } + { name = "docker-compose.yaml"; text = "󰡨"; fg_dark = "#89b4fa"; fg_light = "#89b4fa"; } + { name = "nuxt.config.ts"; text = "󱄆"; fg_dark = "#a6e3a1"; fg_light = "#a6e3a1"; } + { name = "build"; text = ""; fg_dark = "#a6e3a1"; fg_light = "#a6e3a1"; } + { name = ".editorconfig"; text = ""; fg_dark = "#f5e0dc"; fg_light = "#f5e0dc"; } + { name = "nuxt.config.mjs"; text = "󱄆"; fg_dark = "#a6e3a1"; fg_light = "#a6e3a1"; } + { name = ".gitlab-ci.yml"; text = ""; fg_dark = "#fab387"; fg_light = "#fab387"; } + { name = "PKGBUILD"; text = ""; fg_dark = "#89b4fa"; fg_light = "#89b4fa"; } + { name = ".bash_profile"; text = ""; fg_dark = "#a6e3a1"; fg_light = "#a6e3a1"; } + { name = ".bashrc"; text = ""; fg_dark = "#a6e3a1"; fg_light = "#a6e3a1"; } + { name = "compose.yml"; text = "󰡨"; fg_dark = "#89b4fa"; fg_light = "#89b4fa"; } + { name = "eslint.config.cjs"; text = ""; fg_dark = "#585b70"; fg_light = "#585b70"; } + { name = "go.mod"; text = ""; fg_dark = "#74c7ec"; fg_light = "#74c7ec"; } + { name = ".mailmap"; text = "󰊢"; fg_dark = "#fab387"; fg_light = "#fab387"; } + { name = "gtkrc"; text = ""; fg_dark = "#f5e0dc"; fg_light = "#f5e0dc"; } + { name = "go.work"; text = ""; fg_dark = "#74c7ec"; fg_light = "#74c7ec"; } + { name = "justfile"; text = ""; fg_dark = "#7f849c"; fg_light = "#7f849c"; } + { name = "kritadisplayrc"; text = ""; fg_dark = "#cba6f7"; fg_light = "#cba6f7"; } + { name = "commitlint.config.js"; text = "󰜘"; fg_dark = "#94e2d5"; fg_light = "#94e2d5"; } + { name = ".env"; text = ""; fg_dark = "#f9e2af"; fg_light = "#f9e2af"; } + { name = "PrusaSlicerGcodeViewer.ini"; text = ""; fg_dark = "#fab387"; fg_light = "#fab387"; } + { name = "r"; text = "󰟔"; fg_dark = "#6c7086"; fg_light = "#6c7086"; } + { name = "license"; text = ""; fg_dark = "#f9e2af"; fg_light = "#f9e2af"; } + { name = ".gitignore"; text = ""; fg_dark = "#fab387"; fg_light = "#fab387"; } + { name = "tailwind.config.js"; text = "󱏿"; fg_dark = "#74c7ec"; fg_light = "#74c7ec"; } + { name = ".prettierrc.yml"; text = ""; fg_dark = "#89b4fa"; fg_light = "#89b4fa"; } + { name = ".zprofile"; text = ""; fg_dark = "#a6e3a1"; fg_light = "#a6e3a1"; } + { name = ".zshenv"; text = ""; fg_dark = "#a6e3a1"; fg_light = "#a6e3a1"; } + { name = "xmonad.hs"; text = ""; fg_dark = "#f38ba8"; fg_light = "#f38ba8"; } + { name = ".eslintignore"; text = ""; fg_dark = "#585b70"; fg_light = "#585b70"; } + { name = "tsconfig.json"; text = ""; fg_dark = "#74c7ec"; fg_light = "#74c7ec"; } + { name = ".prettierrc.json5"; text = ""; fg_dark = "#89b4fa"; fg_light = "#89b4fa"; } + { name = ".ds_store"; text = ""; fg_dark = "#45475a"; fg_light = "#45475a"; } + { name = "gulpfile.coffee"; text = ""; fg_dark = "#f38ba8"; fg_light = "#f38ba8"; } + { name = "R"; text = "󰟔"; fg_dark = "#6c7086"; fg_light = "#6c7086"; } + { name = ".zshrc"; text = ""; fg_dark = "#a6e3a1"; fg_light = "#a6e3a1"; } + { name = ".prettierrc.toml"; text = ""; fg_dark = "#89b4fa"; fg_light = "#89b4fa"; } + { name = ".gvimrc"; text = ""; fg_dark = "#a6e3a1"; fg_light = "#a6e3a1"; } + { name = ".xsession"; text = ""; fg_dark = "#fab387"; fg_light = "#fab387"; } + { name = ".justfile"; text = ""; fg_dark = "#7f849c"; fg_light = "#7f849c"; } + { name = ".gitconfig"; text = ""; fg_dark = "#fab387"; fg_light = "#fab387"; } + { name = "gradle-wrapper.properties"; text = ""; fg_dark = "#585b70"; fg_light = "#585b70"; } + { name = "ionic.config.json"; text = ""; fg_dark = "#89b4fa"; fg_light = "#89b4fa"; } + { name = "cantorrc"; text = ""; fg_dark = "#89b4fa"; fg_light = "#89b4fa"; } + { name = ".gleam"; text = ""; fg_dark = "#f5c2e7"; fg_light = "#f5c2e7"; } + { name = "package-lock.json"; text = ""; fg_dark = "#313244"; fg_light = "#313244"; } + { name = "package.json"; text = ""; fg_dark = "#f38ba8"; fg_light = "#f38ba8"; } + { name = "hyprland.conf"; text = ""; fg_dark = "#74c7ec"; fg_light = "#74c7ec"; } + { name = "gulpfile.babel.js"; text = ""; fg_dark = "#f38ba8"; fg_light = "#f38ba8"; } + { name = ".nvmrc"; text = ""; fg_dark = "#a6e3a1"; fg_light = "#a6e3a1"; } + { name = ".prettierignore"; text = ""; fg_dark = "#89b4fa"; fg_light = "#89b4fa"; } + { name = "ext_typoscript_setup.txt"; text = ""; fg_dark = "#fab387"; fg_light = "#fab387"; } + { name = "QtProject.conf"; text = ""; fg_dark = "#a6e3a1"; fg_light = "#a6e3a1"; } + { name = "avif"; text = ""; fg_dark = "#7f849c"; fg_light = "#7f849c"; } + { name = "mix.lock"; text = ""; fg_dark = "#7f849c"; fg_light = "#7f849c"; } + { name = "build.gradle"; text = ""; fg_dark = "#585b70"; fg_light = "#585b70"; } + { name = "gemfile$"; text = ""; fg_dark = "#313244"; fg_light = "#313244"; } + { name = ".vimrc"; text = ""; fg_dark = "#a6e3a1"; fg_light = "#a6e3a1"; } + { name = "i18n.config.ts"; text = "󰗊"; fg_dark = "#7f849c"; fg_light = "#7f849c"; } + { name = "gulpfile.ts"; text = ""; fg_dark = "#f38ba8"; fg_light = "#f38ba8"; } + { name = "build.zig.zon"; text = ""; fg_dark = "#fab387"; fg_light = "#fab387"; } + { name = "checkhealth"; text = "󰓙"; fg_dark = "#89b4fa"; fg_light = "#89b4fa"; } + { name = "xmobarrc"; text = ""; fg_dark = "#f38ba8"; fg_light = "#f38ba8"; } + { name = "_vimrc"; text = ""; fg_dark = "#a6e3a1"; fg_light = "#a6e3a1"; } + { name = ".luaurc"; text = ""; fg_dark = "#89b4fa"; fg_light = "#89b4fa"; } + { name = "kdenlive-layoutsrc"; text = ""; fg_dark = "#89b4fa"; fg_light = "#89b4fa"; } + { name = "gradlew"; text = ""; fg_dark = "#585b70"; fg_light = "#585b70"; } + { name = "xsettingsd.conf"; text = ""; fg_dark = "#fab387"; fg_light = "#fab387"; } + { name = "vlcrc"; text = "󰕼"; fg_dark = "#fab387"; fg_light = "#fab387"; } + { name = "xorg.conf"; text = ""; fg_dark = "#fab387"; fg_light = "#fab387"; } + { name = "xmobarrc.hs"; text = ""; fg_dark = "#f38ba8"; fg_light = "#f38ba8"; } + { name = "workspace"; text = ""; fg_dark = "#a6e3a1"; fg_light = "#a6e3a1"; } + { name = ".gitattributes"; text = ""; fg_dark = "#fab387"; fg_light = "#fab387"; } + { name = "favicon.ico"; text = ""; fg_dark = "#f9e2af"; fg_light = "#f9e2af"; } + { name = "go.sum"; text = ""; fg_dark = "#74c7ec"; fg_light = "#74c7ec"; } + { name = "pom.xml"; text = ""; fg_dark = "#313244"; fg_light = "#313244"; } + { name = "webpack"; text = "󰜫"; fg_dark = "#74c7ec"; fg_light = "#74c7ec"; } + { name = "vagrantfile$"; text = ""; fg_dark = "#6c7086"; fg_light = "#6c7086"; } + { name = "unlicense"; text = ""; fg_dark = "#f9e2af"; fg_light = "#f9e2af"; } + { name = "tmux.conf.local"; text = ""; fg_dark = "#a6e3a1"; fg_light = "#a6e3a1"; } + { name = "settings.gradle"; text = ""; fg_dark = "#585b70"; fg_light = "#585b70"; } + { name = ".dockerignore"; text = "󰡨"; fg_dark = "#89b4fa"; fg_light = "#89b4fa"; } + { name = "sym-lib-table"; text = ""; fg_dark = "#f5e0dc"; fg_light = "#f5e0dc"; } + { name = "_gvimrc"; text = ""; fg_dark = "#a6e3a1"; fg_light = "#a6e3a1"; } + { name = "kdenliverc"; text = ""; fg_dark = "#89b4fa"; fg_light = "#89b4fa"; } + { name = "kdeglobals"; text = ""; fg_dark = "#89b4fa"; fg_light = "#89b4fa"; } + { name = ".prettierrc.yaml"; text = ""; fg_dark = "#89b4fa"; fg_light = "#89b4fa"; } + { name = "rmd"; text = ""; fg_dark = "#74c7ec"; fg_light = "#74c7ec"; } + { name = "tailwind.config.mjs"; text = "󱏿"; fg_dark = "#74c7ec"; fg_light = "#74c7ec"; } + { name = "sxhkdrc"; text = ""; fg_dark = "#313244"; fg_light = "#313244"; } + { name = "robots.txt"; text = "󰚩"; fg_dark = "#6c7086"; fg_light = "#6c7086"; } + { name = "tailwind.config.ts"; text = "󱏿"; fg_dark = "#74c7ec"; fg_light = "#74c7ec"; } + { name = "prettier.config.mjs"; text = ""; fg_dark = "#89b4fa"; fg_light = "#89b4fa"; } + { name = "mpv.conf"; text = ""; fg_dark = "#1e1e2e"; fg_light = "#1e1e2e"; } + { name = "py.typed"; text = ""; fg_dark = "#f9e2af"; fg_light = "#f9e2af"; } + { name = "PrusaSlicer.ini"; text = ""; fg_dark = "#fab387"; fg_light = "#fab387"; } + { name = "procfile"; text = ""; fg_dark = "#7f849c"; fg_light = "#7f849c"; } + { name = "rakefile"; text = ""; fg_dark = "#313244"; fg_light = "#313244"; } + { name = "kritarc"; text = ""; fg_dark = "#cba6f7"; fg_light = "#cba6f7"; } + { name = ".Xresources"; text = ""; fg_dark = "#fab387"; fg_light = "#fab387"; } + { name = "prettier.config.js"; text = ""; fg_dark = "#89b4fa"; fg_light = "#89b4fa"; } + { name = "commitlint.config.ts"; text = "󰜘"; fg_dark = "#94e2d5"; fg_light = "#94e2d5"; } + { name = "weston.ini"; text = ""; fg_dark = "#f9e2af"; fg_light = "#f9e2af"; } + { name = "eslint.config.js"; text = ""; fg_dark = "#585b70"; fg_light = "#585b70"; } + { name = "cmakelists.txt"; text = ""; fg_dark = "#7f849c"; fg_light = "#7f849c"; } + { name = ".git-blame-ignore-revs"; text = ""; fg_dark = "#fab387"; fg_light = "#fab387"; } + { name = "config"; text = ""; fg_dark = "#7f849c"; fg_light = "#7f849c"; } + { name = "nuxt.config.cjs"; text = "󱄆"; fg_dark = "#a6e3a1"; fg_light = "#a6e3a1"; } + { name = "node_modules"; text = ""; fg_dark = "#f38ba8"; fg_light = "#f38ba8"; } + { name = "makefile"; text = ""; fg_dark = "#7f849c"; fg_light = "#7f849c"; } + { name = "lxqt.conf"; text = ""; fg_dark = "#89b4fa"; fg_light = "#89b4fa"; } + { name = "i18n.config.js"; text = "󰗊"; fg_dark = "#7f849c"; fg_light = "#7f849c"; } + { name = "FreeCAD.conf"; text = ""; fg_dark = "#f38ba8"; fg_light = "#f38ba8"; } + { name = "prettier.config.cjs"; text = ""; fg_dark = "#89b4fa"; fg_light = "#89b4fa"; } + { name = "tmux.conf"; text = ""; fg_dark = "#a6e3a1"; fg_light = "#a6e3a1"; } + { name = "kalgebrarc"; text = ""; fg_dark = "#89b4fa"; fg_light = "#89b4fa"; } + { name = "i3status.conf"; text = ""; fg_dark = "#f5e0dc"; fg_light = "#f5e0dc"; } + { name = ".settings.json"; text = ""; fg_dark = "#6c7086"; fg_light = "#6c7086"; } + { name = "containerfile"; text = "󰡨"; fg_dark = "#89b4fa"; fg_light = "#89b4fa"; } + { name = "i3blocks.conf"; text = ""; fg_dark = "#f5e0dc"; fg_light = "#f5e0dc"; } + { name = "lxde-rc.xml"; text = ""; fg_dark = "#9399b2"; fg_light = "#9399b2"; } + { name = "gradle.properties"; text = ""; fg_dark = "#585b70"; fg_light = "#585b70"; } + { name = "hypridle.conf"; text = ""; fg_dark = "#74c7ec"; fg_light = "#74c7ec"; } + { name = "gruntfile.ts"; text = ""; fg_dark = "#fab387"; fg_light = "#fab387"; } + { name = "gruntfile.js"; text = ""; fg_dark = "#fab387"; fg_light = "#fab387"; } + { name = "dockerfile"; text = "󰡨"; fg_dark = "#89b4fa"; fg_light = "#89b4fa"; } + { name = "groovy"; text = ""; fg_dark = "#585b70"; fg_light = "#585b70"; } + { name = "hyprlock.conf"; text = ""; fg_dark = "#74c7ec"; fg_light = "#74c7ec"; } + { name = ".prettierrc"; text = ""; fg_dark = "#89b4fa"; fg_light = "#89b4fa"; } + { name = "gnumakefile"; text = ""; fg_dark = "#7f849c"; fg_light = "#7f849c"; } + { name = "commit_editmsg"; text = ""; fg_dark = "#fab387"; fg_light = "#fab387"; } + { name = "fp-lib-table"; text = ""; fg_dark = "#f5e0dc"; fg_light = "#f5e0dc"; } + { name = "fp-info-cache"; text = ""; fg_dark = "#f5e0dc"; fg_light = "#f5e0dc"; } + { name = "eslint.config.ts"; text = ""; fg_dark = "#585b70"; fg_light = "#585b70"; } + { name = "nuxt.config.js"; text = "󱄆"; fg_dark = "#a6e3a1"; fg_light = "#a6e3a1"; } + { name = "platformio.ini"; text = ""; fg_dark = "#fab387"; fg_light = "#fab387"; } + { name = ".nuxtrc"; text = "󱄆"; fg_dark = "#a6e3a1"; fg_light = "#a6e3a1"; } + { name = "gruntfile.coffee"; text = ""; fg_dark = "#fab387"; fg_light = "#fab387"; } + { name = "eslint.config.mjs"; text = ""; fg_dark = "#585b70"; fg_light = "#585b70"; } + { name = "compose.yaml"; text = "󰡨"; fg_dark = "#89b4fa"; fg_light = "#89b4fa"; } + { name = "bspwmrc"; text = ""; fg_dark = "#313244"; fg_light = "#313244"; } + { name = "brewfile"; text = ""; fg_dark = "#313244"; fg_light = "#313244"; } + { name = ".eslintrc"; text = ""; fg_dark = "#585b70"; fg_light = "#585b70"; } + { name = ".gtkrc-2.0"; text = ""; fg_dark = "#f5e0dc"; fg_light = "#f5e0dc"; } + { name = ".Xauthority"; text = ""; fg_dark = "#fab387"; fg_light = "#fab387"; } + { name = ".prettierrc.json"; text = ""; fg_dark = "#89b4fa"; fg_light = "#89b4fa"; } + { name = ".npmignore"; text = ""; fg_dark = "#f38ba8"; fg_light = "#f38ba8"; } + { name = ".gitmodules"; text = ""; fg_dark = "#fab387"; fg_light = "#fab387"; } + ]; + exts = [ + { name = "rake"; text = ""; fg_dark = "#313244"; fg_light = "#313244"; } + { name = "skp"; text = "󰻫"; fg_dark = "#a6e3a1"; fg_light = "#a6e3a1"; } + { name = "eln"; text = ""; fg_dark = "#7f849c"; fg_light = "#7f849c"; } + { name = "razor"; text = "󱦘"; fg_dark = "#585b70"; fg_light = "#585b70"; } + { name = "vue"; text = ""; fg_dark = "#a6e3a1"; fg_light = "#a6e3a1"; } + { name = "sln"; text = ""; fg_dark = "#6c7086"; fg_light = "#6c7086"; } + { name = "el"; text = ""; fg_dark = "#7f849c"; fg_light = "#7f849c"; } + { name = "blp"; text = "󰺾"; fg_dark = "#89b4fa"; fg_light = "#89b4fa"; } + { name = "jl"; text = ""; fg_dark = "#7f849c"; fg_light = "#7f849c"; } + { name = "mdx"; text = ""; fg_dark = "#74c7ec"; fg_light = "#74c7ec"; } + { name = "jsx"; text = ""; fg_dark = "#74c7ec"; fg_light = "#74c7ec"; } + { name = "ml"; text = ""; fg_dark = "#fab387"; fg_light = "#fab387"; } + { name = "less"; text = ""; fg_dark = "#45475a"; fg_light = "#45475a"; } + { name = "pot"; text = ""; fg_dark = "#74c7ec"; fg_light = "#74c7ec"; } + { name = "pl"; text = ""; fg_dark = "#74c7ec"; fg_light = "#74c7ec"; } + { name = "mli"; text = ""; fg_dark = "#fab387"; fg_light = "#fab387"; } + { name = "gif"; text = ""; fg_dark = "#7f849c"; fg_light = "#7f849c"; } + { name = "aif"; text = ""; fg_dark = "#74c7ec"; fg_light = "#74c7ec"; } + { name = "cxxm"; text = ""; fg_dark = "#74c7ec"; fg_light = "#74c7ec"; } + { name = "fcbak"; text = ""; fg_dark = "#f38ba8"; fg_light = "#f38ba8"; } + { name = "aac"; text = ""; fg_dark = "#74c7ec"; fg_light = "#74c7ec"; } + { name = "query"; text = ""; fg_dark = "#a6e3a1"; fg_light = "#a6e3a1"; } + { name = "android"; text = ""; fg_dark = "#a6e3a1"; fg_light = "#a6e3a1"; } + { name = "m3u8"; text = "󰲹"; fg_dark = "#f38ba8"; fg_light = "#f38ba8"; } + { name = "leex"; text = ""; fg_dark = "#7f849c"; fg_light = "#7f849c"; } + { name = "liquid"; text = ""; fg_dark = "#a6e3a1"; fg_light = "#a6e3a1"; } + { name = "cue"; text = "󰲹"; fg_dark = "#f38ba8"; fg_light = "#f38ba8"; } + { name = "fcmacro"; text = ""; fg_dark = "#f38ba8"; fg_light = "#f38ba8"; } + { name = "log"; text = "󰌱"; fg_dark = "#cdd6f4"; fg_light = "#cdd6f4"; } + { name = "pm"; text = ""; fg_dark = "#74c7ec"; fg_light = "#74c7ec"; } + { name = "brep"; text = "󰻫"; fg_dark = "#a6e3a1"; fg_light = "#a6e3a1"; } + { name = "blend"; text = "󰂫"; fg_dark = "#fab387"; fg_light = "#fab387"; } + { name = "md5"; text = "󰕥"; fg_dark = "#7f849c"; fg_light = "#7f849c"; } + { name = "sql"; text = ""; fg_dark = "#f5e0dc"; fg_light = "#f5e0dc"; } + { name = "xcplayground"; text = ""; fg_dark = "#fab387"; fg_light = "#fab387"; } + { name = "erb"; text = ""; fg_dark = "#313244"; fg_light = "#313244"; } + { name = "t"; text = ""; fg_dark = "#74c7ec"; fg_light = "#74c7ec"; } + { name = "cache"; text = ""; fg_dark = "#f5e0dc"; fg_light = "#f5e0dc"; } + { name = "r"; text = "󰟔"; fg_dark = "#6c7086"; fg_light = "#6c7086"; } + { name = "x"; text = ""; fg_dark = "#89b4fa"; fg_light = "#89b4fa"; } + { name = "import"; text = ""; fg_dark = "#f5e0dc"; fg_light = "#f5e0dc"; } + { name = "m"; text = ""; fg_dark = "#89b4fa"; fg_light = "#89b4fa"; } + { name = "lrc"; text = "󰨖"; fg_dark = "#f9e2af"; fg_light = "#f9e2af"; } + { name = "o"; text = ""; fg_dark = "#45475a"; fg_light = "#45475a"; } + { name = "d"; text = ""; fg_dark = "#a6e3a1"; fg_light = "#a6e3a1"; } + { name = "c"; text = ""; fg_dark = "#89b4fa"; fg_light = "#89b4fa"; } + { name = "h"; text = ""; fg_dark = "#7f849c"; fg_light = "#7f849c"; } + { name = "rss"; text = ""; fg_dark = "#fab387"; fg_light = "#fab387"; } + { name = "hbs"; text = ""; fg_dark = "#fab387"; fg_light = "#fab387"; } + { name = "godot"; text = ""; fg_dark = "#7f849c"; fg_light = "#7f849c"; } + { name = "eot"; text = ""; fg_dark = "#f5e0dc"; fg_light = "#f5e0dc"; } + { name = "awk"; text = ""; fg_dark = "#585b70"; fg_light = "#585b70"; } + { name = "fsx"; text = ""; fg_dark = "#74c7ec"; fg_light = "#74c7ec"; } + { name = "a"; text = ""; fg_dark = "#f5e0dc"; fg_light = "#f5e0dc"; } + { name = "pyi"; text = ""; fg_dark = "#f9e2af"; fg_light = "#f9e2af"; } + { name = "asc"; text = "󰦝"; fg_dark = "#6c7086"; fg_light = "#6c7086"; } + { name = "ass"; text = "󰨖"; fg_dark = "#f9e2af"; fg_light = "#f9e2af"; } + { name = "css"; text = ""; fg_dark = "#89b4fa"; fg_light = "#89b4fa"; } + { name = "psb"; text = ""; fg_dark = "#74c7ec"; fg_light = "#74c7ec"; } + { name = "csproj"; text = "󰪮"; fg_dark = "#585b70"; fg_light = "#585b70"; } + { name = "csv"; text = ""; fg_dark = "#a6e3a1"; fg_light = "#a6e3a1"; } + { name = "gcode"; text = "󰐫"; fg_dark = "#6c7086"; fg_light = "#6c7086"; } + { name = "ics"; text = ""; fg_dark = "#313244"; fg_light = "#313244"; } + { name = "mk"; text = ""; fg_dark = "#7f849c"; fg_light = "#7f849c"; } + { name = "bz"; text = ""; fg_dark = "#fab387"; fg_light = "#fab387"; } + { name = "fctb"; text = ""; fg_dark = "#f38ba8"; fg_light = "#f38ba8"; } + { name = "gz"; text = ""; fg_dark = "#fab387"; fg_light = "#fab387"; } + { name = "wasm"; text = ""; fg_dark = "#585b70"; fg_light = "#585b70"; } + { name = "glb"; text = ""; fg_dark = "#fab387"; fg_light = "#fab387"; } + { name = "elc"; text = ""; fg_dark = "#7f849c"; fg_light = "#7f849c"; } + { name = "flf"; text = ""; fg_dark = "#f5e0dc"; fg_light = "#f5e0dc"; } + { name = "elf"; text = ""; fg_dark = "#45475a"; fg_light = "#45475a"; } + { name = "dropbox"; text = ""; fg_dark = "#6c7086"; fg_light = "#6c7086"; } + { name = "tres"; text = ""; fg_dark = "#7f849c"; fg_light = "#7f849c"; } + { name = "apk"; text = ""; fg_dark = "#a6e3a1"; fg_light = "#a6e3a1"; } + { name = "ape"; text = ""; fg_dark = "#74c7ec"; fg_light = "#74c7ec"; } + { name = "slvs"; text = "󰻫"; fg_dark = "#a6e3a1"; fg_light = "#a6e3a1"; } + { name = "apl"; text = "⍝"; fg_dark = "#fab387"; fg_light = "#fab387"; } + { name = "cs"; text = "󰌛"; fg_dark = "#585b70"; fg_light = "#585b70"; } + { name = "azcli"; text = ""; fg_dark = "#6c7086"; fg_light = "#6c7086"; } + { name = "pp"; text = ""; fg_dark = "#fab387"; fg_light = "#fab387"; } + { name = "flc"; text = ""; fg_dark = "#f5e0dc"; fg_light = "#f5e0dc"; } + { name = "gemspec"; text = ""; fg_dark = "#313244"; fg_light = "#313244"; } + { name = "pls"; text = "󰲹"; fg_dark = "#f38ba8"; fg_light = "#f38ba8"; } + { name = "cfg"; text = ""; fg_dark = "#7f849c"; fg_light = "#7f849c"; } + { name = "fcscript"; text = ""; fg_dark = "#f38ba8"; fg_light = "#f38ba8"; } + { name = "gnumakefile"; text = ""; fg_dark = "#7f849c"; fg_light = "#7f849c"; } + { name = "zst"; text = ""; fg_dark = "#fab387"; fg_light = "#fab387"; } + { name = "pxi"; text = ""; fg_dark = "#89b4fa"; fg_light = "#89b4fa"; } + { name = "woff2"; text = ""; fg_dark = "#f5e0dc"; fg_light = "#f5e0dc"; } + { name = "kicad_pcb"; text = ""; fg_dark = "#f5e0dc"; fg_light = "#f5e0dc"; } + { name = "zsh"; text = ""; fg_dark = "#a6e3a1"; fg_light = "#a6e3a1"; } + { name = "kicad_wks"; text = ""; fg_dark = "#f5e0dc"; fg_light = "#f5e0dc"; } + { name = "info"; text = ""; fg_dark = "#f9e2af"; fg_light = "#f9e2af"; } + { name = "cppm"; text = ""; fg_dark = "#74c7ec"; fg_light = "#74c7ec"; } + { name = "svg"; text = "󰜡"; fg_dark = "#fab387"; fg_light = "#fab387"; } + { name = "flac"; text = ""; fg_dark = "#6c7086"; fg_light = "#6c7086"; } + { name = "cuh"; text = ""; fg_dark = "#7f849c"; fg_light = "#7f849c"; } + { name = "bin"; text = ""; fg_dark = "#45475a"; fg_light = "#45475a"; } + { name = "zig"; text = ""; fg_dark = "#fab387"; fg_light = "#fab387"; } + { name = "yml"; text = ""; fg_dark = "#7f849c"; fg_light = "#7f849c"; } + { name = "yaml"; text = ""; fg_dark = "#7f849c"; fg_light = "#7f849c"; } + { name = "fsscript"; text = ""; fg_dark = "#74c7ec"; fg_light = "#74c7ec"; } + { name = "xz"; text = ""; fg_dark = "#fab387"; fg_light = "#fab387"; } + { name = "diff"; text = ""; fg_dark = "#45475a"; fg_light = "#45475a"; } + { name = "mojo"; text = ""; fg_dark = "#fab387"; fg_light = "#fab387"; } + { name = "cshtml"; text = "󱦗"; fg_dark = "#585b70"; fg_light = "#585b70"; } + { name = "bak"; text = "󰁯"; fg_dark = "#7f849c"; fg_light = "#7f849c"; } + { name = "nfo"; text = ""; fg_dark = "#f9e2af"; fg_light = "#f9e2af"; } + { name = "bat"; text = ""; fg_dark = "#a6e3a1"; fg_light = "#a6e3a1"; } + { name = "cpy"; text = "⚙"; fg_dark = "#585b70"; fg_light = "#585b70"; } + { name = "gql"; text = ""; fg_dark = "#f38ba8"; fg_light = "#f38ba8"; } + { name = "c++"; text = ""; fg_dark = "#f38ba8"; fg_light = "#f38ba8"; } + { name = "lff"; text = ""; fg_dark = "#f5e0dc"; fg_light = "#f5e0dc"; } + { name = "obj"; text = "󰆧"; fg_dark = "#7f849c"; fg_light = "#7f849c"; } + { name = "sha512"; text = "󰕥"; fg_dark = "#7f849c"; fg_light = "#7f849c"; } + { name = "scm"; text = "󰘧"; fg_dark = "#f5e0dc"; fg_light = "#f5e0dc"; } + { name = "aiff"; text = ""; fg_dark = "#74c7ec"; fg_light = "#74c7ec"; } + { name = "sig"; text = "λ"; fg_dark = "#fab387"; fg_light = "#fab387"; } + { name = "webm"; text = ""; fg_dark = "#fab387"; fg_light = "#fab387"; } + { name = "zip"; text = ""; fg_dark = "#fab387"; fg_light = "#fab387"; } + { name = "wrz"; text = "󰆧"; fg_dark = "#7f849c"; fg_light = "#7f849c"; } + { name = "jwmrc"; text = ""; fg_dark = "#6c7086"; fg_light = "#6c7086"; } + { name = "xml"; text = "󰗀"; fg_dark = "#fab387"; fg_light = "#fab387"; } + { name = "cbl"; text = "⚙"; fg_dark = "#585b70"; fg_light = "#585b70"; } + { name = "rmd"; text = ""; fg_dark = "#74c7ec"; fg_light = "#74c7ec"; } + { name = "xaml"; text = "󰙳"; fg_dark = "#585b70"; fg_light = "#585b70"; } + { name = "xm"; text = ""; fg_dark = "#74c7ec"; fg_light = "#74c7ec"; } + { name = "wvc"; text = ""; fg_dark = "#74c7ec"; fg_light = "#74c7ec"; } + { name = "drl"; text = ""; fg_dark = "#eba0ac"; fg_light = "#eba0ac"; } + { name = "erl"; text = ""; fg_dark = "#f38ba8"; fg_light = "#f38ba8"; } + { name = "3gp"; text = ""; fg_dark = "#fab387"; fg_light = "#fab387"; } + { name = "ccm"; text = ""; fg_dark = "#f38ba8"; fg_light = "#f38ba8"; } + { name = "ino"; text = ""; fg_dark = "#74c7ec"; fg_light = "#74c7ec"; } + { name = "kbx"; text = "󰯄"; fg_dark = "#6c7086"; fg_light = "#6c7086"; } + { name = "test.js"; text = ""; fg_dark = "#f9e2af"; fg_light = "#f9e2af"; } + { name = "wrl"; text = "󰆧"; fg_dark = "#7f849c"; fg_light = "#7f849c"; } + { name = "pcm"; text = ""; fg_dark = "#6c7086"; fg_light = "#6c7086"; } + { name = "woff"; text = ""; fg_dark = "#f5e0dc"; fg_light = "#f5e0dc"; } + { name = "scala"; text = ""; fg_dark = "#f38ba8"; fg_light = "#f38ba8"; } + { name = "webpack"; text = "󰜫"; fg_dark = "#74c7ec"; fg_light = "#74c7ec"; } + { name = "hrl"; text = ""; fg_dark = "#f38ba8"; fg_light = "#f38ba8"; } + { name = "kra"; text = ""; fg_dark = "#cba6f7"; fg_light = "#cba6f7"; } + { name = "kicad_pro"; text = ""; fg_dark = "#f5e0dc"; fg_light = "#f5e0dc"; } + { name = "bazel"; text = ""; fg_dark = "#a6e3a1"; fg_light = "#a6e3a1"; } + { name = "toml"; text = ""; fg_dark = "#585b70"; fg_light = "#585b70"; } + { name = "iges"; text = "󰻫"; fg_dark = "#a6e3a1"; fg_light = "#a6e3a1"; } + { name = "crdownload"; text = ""; fg_dark = "#94e2d5"; fg_light = "#94e2d5"; } + { name = "so"; text = ""; fg_dark = "#f5e0dc"; fg_light = "#f5e0dc"; } + { name = "strings"; text = ""; fg_dark = "#74c7ec"; fg_light = "#74c7ec"; } + { name = "xls"; text = "󰈛"; fg_dark = "#585b70"; fg_light = "#585b70"; } + { name = "wav"; text = ""; fg_dark = "#74c7ec"; fg_light = "#74c7ec"; } + { name = "vsix"; text = ""; fg_dark = "#6c7086"; fg_light = "#6c7086"; } + { name = "kicad_prl"; text = ""; fg_dark = "#f5e0dc"; fg_light = "#f5e0dc"; } + { name = "mov"; text = ""; fg_dark = "#fab387"; fg_light = "#fab387"; } + { name = "bash"; text = ""; fg_dark = "#a6e3a1"; fg_light = "#a6e3a1"; } + { name = "sqlite3"; text = ""; fg_dark = "#f5e0dc"; fg_light = "#f5e0dc"; } + { name = "vsh"; text = ""; fg_dark = "#7f849c"; fg_light = "#7f849c"; } + { name = "vim"; text = ""; fg_dark = "#a6e3a1"; fg_light = "#a6e3a1"; } + { name = "lck"; text = ""; fg_dark = "#bac2de"; fg_light = "#bac2de"; } + { name = "go"; text = ""; fg_dark = "#74c7ec"; fg_light = "#74c7ec"; } + { name = "pyo"; text = ""; fg_dark = "#f9e2af"; fg_light = "#f9e2af"; } + { name = "vhdl"; text = "󰍛"; fg_dark = "#a6e3a1"; fg_light = "#a6e3a1"; } + { name = "vhd"; text = "󰍛"; fg_dark = "#a6e3a1"; fg_light = "#a6e3a1"; } + { name = "rar"; text = ""; fg_dark = "#fab387"; fg_light = "#fab387"; } + { name = "magnet"; text = ""; fg_dark = "#45475a"; fg_light = "#45475a"; } + { name = "vala"; text = ""; fg_dark = "#585b70"; fg_light = "#585b70"; } + { name = "coffee"; text = ""; fg_dark = "#f9e2af"; fg_light = "#f9e2af"; } + { name = "kdbx"; text = ""; fg_dark = "#a6e3a1"; fg_light = "#a6e3a1"; } + { name = "po"; text = ""; fg_dark = "#74c7ec"; fg_light = "#74c7ec"; } + { name = "v"; text = "󰍛"; fg_dark = "#a6e3a1"; fg_light = "#a6e3a1"; } + { name = "prisma"; text = ""; fg_dark = "#6c7086"; fg_light = "#6c7086"; } + { name = "f90"; text = "󱈚"; fg_dark = "#585b70"; fg_light = "#585b70"; } + { name = "txt"; text = "󰈙"; fg_dark = "#a6e3a1"; fg_light = "#a6e3a1"; } + { name = "mo"; text = "∞"; fg_dark = "#7f849c"; fg_light = "#7f849c"; } + { name = "mp4"; text = ""; fg_dark = "#fab387"; fg_light = "#fab387"; } + { name = "cljc"; text = ""; fg_dark = "#a6e3a1"; fg_light = "#a6e3a1"; } + { name = "heex"; text = ""; fg_dark = "#7f849c"; fg_light = "#7f849c"; } + { name = "exs"; text = ""; fg_dark = "#7f849c"; fg_light = "#7f849c"; } + { name = "clj"; text = ""; fg_dark = "#a6e3a1"; fg_light = "#a6e3a1"; } + { name = "luau"; text = ""; fg_dark = "#89b4fa"; fg_light = "#89b4fa"; } + { name = "fcparam"; text = ""; fg_dark = "#f38ba8"; fg_light = "#f38ba8"; } + { name = "markdown"; text = ""; fg_dark = "#cdd6f4"; fg_light = "#cdd6f4"; } + { name = "dxf"; text = "󰻫"; fg_dark = "#a6e3a1"; fg_light = "#a6e3a1"; } + { name = "luac"; text = ""; fg_dark = "#74c7ec"; fg_light = "#74c7ec"; } + { name = "desktop"; text = ""; fg_dark = "#45475a"; fg_light = "#45475a"; } + { name = "docx"; text = "󰈬"; fg_dark = "#585b70"; fg_light = "#585b70"; } + { name = "cljd"; text = ""; fg_dark = "#74c7ec"; fg_light = "#74c7ec"; } + { name = "txz"; text = ""; fg_dark = "#fab387"; fg_light = "#fab387"; } + { name = "bicepparam"; text = ""; fg_dark = "#7f849c"; fg_light = "#7f849c"; } + { name = "kt"; text = ""; fg_dark = "#6c7086"; fg_light = "#6c7086"; } + { name = "fcstd"; text = ""; fg_dark = "#f38ba8"; fg_light = "#f38ba8"; } + { name = "md"; text = ""; fg_dark = "#cdd6f4"; fg_light = "#cdd6f4"; } + { name = "edn"; text = ""; fg_dark = "#74c7ec"; fg_light = "#74c7ec"; } + { name = "sub"; text = "󰨖"; fg_dark = "#f9e2af"; fg_light = "#f9e2af"; } + { name = "ttf"; text = ""; fg_dark = "#f5e0dc"; fg_light = "#f5e0dc"; } + { name = "tsx"; text = ""; fg_dark = "#585b70"; fg_light = "#585b70"; } + { name = "hurl"; text = ""; fg_dark = "#f38ba8"; fg_light = "#f38ba8"; } + { name = "dll"; text = ""; fg_dark = "#11111b"; fg_light = "#11111b"; } + { name = "lhs"; text = ""; fg_dark = "#7f849c"; fg_light = "#7f849c"; } + { name = "tsconfig"; text = ""; fg_dark = "#fab387"; fg_light = "#fab387"; } + { name = "msf"; text = ""; fg_dark = "#89b4fa"; fg_light = "#89b4fa"; } + { name = "ts"; text = ""; fg_dark = "#74c7ec"; fg_light = "#74c7ec"; } + { name = "rproj"; text = "󰗆"; fg_dark = "#a6e3a1"; fg_light = "#a6e3a1"; } + { name = "org"; text = ""; fg_dark = "#94e2d5"; fg_light = "#94e2d5"; } + { name = "signature"; text = "λ"; fg_dark = "#fab387"; fg_light = "#fab387"; } + { name = "elm"; text = ""; fg_dark = "#74c7ec"; fg_light = "#74c7ec"; } + { name = "pyc"; text = ""; fg_dark = "#f9e2af"; fg_light = "#f9e2af"; } + { name = "tmux"; text = ""; fg_dark = "#a6e3a1"; fg_light = "#a6e3a1"; } + { name = "tgz"; text = ""; fg_dark = "#fab387"; fg_light = "#fab387"; } + { name = "nu"; text = ">"; fg_dark = "#a6e3a1"; fg_light = "#a6e3a1"; } + { name = "tfvars"; text = ""; fg_dark = "#585b70"; fg_light = "#585b70"; } + { name = "lua"; text = ""; fg_dark = "#74c7ec"; fg_light = "#74c7ec"; } + { name = "astro"; text = ""; fg_dark = "#f38ba8"; fg_light = "#f38ba8"; } + { name = "lib"; text = ""; fg_dark = "#11111b"; fg_light = "#11111b"; } + { name = "tex"; text = ""; fg_dark = "#45475a"; fg_light = "#45475a"; } + { name = "ogg"; text = ""; fg_dark = "#6c7086"; fg_light = "#6c7086"; } + { name = "stp"; text = "󰻫"; fg_dark = "#a6e3a1"; fg_light = "#a6e3a1"; } + { name = "sublime"; text = ""; fg_dark = "#fab387"; fg_light = "#fab387"; } + { name = "test.tsx"; text = ""; fg_dark = "#585b70"; fg_light = "#585b70"; } + { name = "nswag"; text = ""; fg_dark = "#a6e3a1"; fg_light = "#a6e3a1"; } + { name = "test.ts"; text = ""; fg_dark = "#74c7ec"; fg_light = "#74c7ec"; } + { name = "test.jsx"; text = ""; fg_dark = "#74c7ec"; fg_light = "#74c7ec"; } + { name = "dwg"; text = "󰻫"; fg_dark = "#a6e3a1"; fg_light = "#a6e3a1"; } + { name = "bib"; text = "󱉟"; fg_dark = "#f9e2af"; fg_light = "#f9e2af"; } + { name = "sass"; text = ""; fg_dark = "#f38ba8"; fg_light = "#f38ba8"; } + { name = "templ"; text = ""; fg_dark = "#f9e2af"; fg_light = "#f9e2af"; } + { name = "tcl"; text = "󰛓"; fg_dark = "#585b70"; fg_light = "#585b70"; } + { name = "pck"; text = ""; fg_dark = "#7f849c"; fg_light = "#7f849c"; } + { name = "swift"; text = ""; fg_dark = "#fab387"; fg_light = "#fab387"; } + { name = "makefile"; text = ""; fg_dark = "#7f849c"; fg_light = "#7f849c"; } + { name = "xcstrings"; text = ""; fg_dark = "#74c7ec"; fg_light = "#74c7ec"; } + { name = "slim"; text = ""; fg_dark = "#fab387"; fg_light = "#fab387"; } + { name = "iso"; text = ""; fg_dark = "#f2cdcd"; fg_light = "#f2cdcd"; } + { name = "fsi"; text = ""; fg_dark = "#74c7ec"; fg_light = "#74c7ec"; } + { name = "dart"; text = ""; fg_dark = "#585b70"; fg_light = "#585b70"; } + { name = "nix"; text = ""; fg_dark = "#74c7ec"; fg_light = "#74c7ec"; } + { name = "svelte"; text = ""; fg_dark = "#fab387"; fg_light = "#fab387"; } + { name = "sv"; text = "󰍛"; fg_dark = "#a6e3a1"; fg_light = "#a6e3a1"; } + { name = "bz2"; text = ""; fg_dark = "#fab387"; fg_light = "#fab387"; } + { name = "sha256"; text = "󰕥"; fg_dark = "#7f849c"; fg_light = "#7f849c"; } + { name = "twig"; text = ""; fg_dark = "#a6e3a1"; fg_light = "#a6e3a1"; } + { name = "material"; text = "󰔉"; fg_dark = "#f38ba8"; fg_light = "#f38ba8"; } + { name = "ppt"; text = "󰈧"; fg_dark = "#f38ba8"; fg_light = "#f38ba8"; } + { name = "pyd"; text = ""; fg_dark = "#f9e2af"; fg_light = "#f9e2af"; } + { name = "step"; text = "󰻫"; fg_dark = "#a6e3a1"; fg_light = "#a6e3a1"; } + { name = "hx"; text = ""; fg_dark = "#fab387"; fg_light = "#fab387"; } + { name = "webmanifest"; text = ""; fg_dark = "#f9e2af"; fg_light = "#f9e2af"; } + { name = "kicad_sch"; text = ""; fg_dark = "#f5e0dc"; fg_light = "#f5e0dc"; } + { name = "cjs"; text = ""; fg_dark = "#f9e2af"; fg_light = "#f9e2af"; } + { name = "stl"; text = "󰆧"; fg_dark = "#7f849c"; fg_light = "#7f849c"; } + { name = "ejs"; text = ""; fg_dark = "#f9e2af"; fg_light = "#f9e2af"; } + { name = "ssa"; text = "󰨖"; fg_dark = "#f9e2af"; fg_light = "#f9e2af"; } + { name = "license"; text = ""; fg_dark = "#f9e2af"; fg_light = "#f9e2af"; } + { name = "jsonc"; text = ""; fg_dark = "#f9e2af"; fg_light = "#f9e2af"; } + { name = "download"; text = ""; fg_dark = "#94e2d5"; fg_light = "#94e2d5"; } + { name = "ige"; text = "󰻫"; fg_dark = "#a6e3a1"; fg_light = "#a6e3a1"; } + { name = "sqlite"; text = ""; fg_dark = "#f5e0dc"; fg_light = "#f5e0dc"; } + { name = "psd1"; text = "󰨊"; fg_dark = "#7f849c"; fg_light = "#7f849c"; } + { name = "dump"; text = ""; fg_dark = "#f5e0dc"; fg_light = "#f5e0dc"; } + { name = "resi"; text = ""; fg_dark = "#f38ba8"; fg_light = "#f38ba8"; } + { name = "spec.ts"; text = ""; fg_dark = "#74c7ec"; fg_light = "#74c7ec"; } + { name = "fnl"; text = ""; fg_dark = "#f9e2af"; fg_light = "#f9e2af"; } + { name = "cu"; text = ""; fg_dark = "#a6e3a1"; fg_light = "#a6e3a1"; } + { name = "scss"; text = ""; fg_dark = "#f38ba8"; fg_light = "#f38ba8"; } + { name = "config.ru"; text = ""; fg_dark = "#313244"; fg_light = "#313244"; } + { name = "psd"; text = ""; fg_dark = "#74c7ec"; fg_light = "#74c7ec"; } + { name = "db"; text = ""; fg_dark = "#f5e0dc"; fg_light = "#f5e0dc"; } + { name = "epub"; text = ""; fg_dark = "#fab387"; fg_light = "#fab387"; } + { name = "haml"; text = ""; fg_dark = "#f5e0dc"; fg_light = "#f5e0dc"; } + { name = "sol"; text = ""; fg_dark = "#74c7ec"; fg_light = "#74c7ec"; } + { name = "sml"; text = "λ"; fg_dark = "#fab387"; fg_light = "#fab387"; } + { name = "svh"; text = "󰍛"; fg_dark = "#a6e3a1"; fg_light = "#a6e3a1"; } + { name = "sldprt"; text = "󰻫"; fg_dark = "#a6e3a1"; fg_light = "#a6e3a1"; } + { name = "ico"; text = ""; fg_dark = "#f9e2af"; fg_light = "#f9e2af"; } + { name = "xlsx"; text = "󰈛"; fg_dark = "#585b70"; fg_light = "#585b70"; } + { name = "rs"; text = ""; fg_dark = "#fab387"; fg_light = "#fab387"; } + { name = "dconf"; text = ""; fg_dark = "#f5e0dc"; fg_light = "#f5e0dc"; } + { name = "bz3"; text = ""; fg_dark = "#fab387"; fg_light = "#fab387"; } + { name = "fdmdownload"; text = ""; fg_dark = "#94e2d5"; fg_light = "#94e2d5"; } + { name = "fs"; text = ""; fg_dark = "#74c7ec"; fg_light = "#74c7ec"; } + { name = "patch"; text = ""; fg_dark = "#45475a"; fg_light = "#45475a"; } + { name = "hs"; text = ""; fg_dark = "#7f849c"; fg_light = "#7f849c"; } + { name = "xcf"; text = ""; fg_dark = "#585b70"; fg_light = "#585b70"; } + { name = "js"; text = ""; fg_dark = "#f9e2af"; fg_light = "#f9e2af"; } + { name = "pyw"; text = ""; fg_dark = "#89b4fa"; fg_light = "#89b4fa"; } + { name = "sha384"; text = "󰕥"; fg_dark = "#7f849c"; fg_light = "#7f849c"; } + { name = "fcmat"; text = ""; fg_dark = "#f38ba8"; fg_light = "#f38ba8"; } + { name = "csh"; text = ""; fg_dark = "#585b70"; fg_light = "#585b70"; } + { name = "suo"; text = ""; fg_dark = "#6c7086"; fg_light = "#6c7086"; } + { name = "sha224"; text = "󰕥"; fg_dark = "#7f849c"; fg_light = "#7f849c"; } + { name = "sha1"; text = "󰕥"; fg_dark = "#7f849c"; fg_light = "#7f849c"; } + { name = "cr"; text = ""; fg_dark = "#f5e0dc"; fg_light = "#f5e0dc"; } + { name = "huff"; text = "󰡘"; fg_dark = "#585b70"; fg_light = "#585b70"; } + { name = "sh"; text = ""; fg_dark = "#585b70"; fg_light = "#585b70"; } + { name = "sc"; text = ""; fg_dark = "#f38ba8"; fg_light = "#f38ba8"; } + { name = "ksh"; text = ""; fg_dark = "#585b70"; fg_light = "#585b70"; } + { name = "cc"; text = ""; fg_dark = "#f38ba8"; fg_light = "#f38ba8"; } + { name = "wma"; text = ""; fg_dark = "#74c7ec"; fg_light = "#74c7ec"; } + { name = "mp3"; text = ""; fg_dark = "#74c7ec"; fg_light = "#74c7ec"; } + { name = "conf"; text = ""; fg_dark = "#7f849c"; fg_light = "#7f849c"; } + { name = "3mf"; text = "󰆧"; fg_dark = "#7f849c"; fg_light = "#7f849c"; } + { name = "sbt"; text = ""; fg_dark = "#f38ba8"; fg_light = "#f38ba8"; } + { name = "kicad_mod"; text = ""; fg_dark = "#f5e0dc"; fg_light = "#f5e0dc"; } + { name = "terminal"; text = ""; fg_dark = "#a6e3a1"; fg_light = "#a6e3a1"; } + { name = "rlib"; text = ""; fg_dark = "#fab387"; fg_light = "#fab387"; } + { name = "pdf"; text = ""; fg_dark = "#585b70"; fg_light = "#585b70"; } + { name = "mts"; text = ""; fg_dark = "#74c7ec"; fg_light = "#74c7ec"; } + { name = "kdenlive"; text = ""; fg_dark = "#89b4fa"; fg_light = "#89b4fa"; } + { name = "kts"; text = ""; fg_dark = "#6c7086"; fg_light = "#6c7086"; } + { name = "spec.tsx"; text = ""; fg_dark = "#585b70"; fg_light = "#585b70"; } + { name = "res"; text = ""; fg_dark = "#f38ba8"; fg_light = "#f38ba8"; } + { name = "hxx"; text = ""; fg_dark = "#7f849c"; fg_light = "#7f849c"; } + { name = "rb"; text = ""; fg_dark = "#313244"; fg_light = "#313244"; } + { name = "vh"; text = "󰍛"; fg_dark = "#a6e3a1"; fg_light = "#a6e3a1"; } + { name = "ixx"; text = ""; fg_dark = "#74c7ec"; fg_light = "#74c7ec"; } + { name = "cson"; text = ""; fg_dark = "#f9e2af"; fg_light = "#f9e2af"; } + { name = "cts"; text = ""; fg_dark = "#74c7ec"; fg_light = "#74c7ec"; } + { name = "7z"; text = ""; fg_dark = "#fab387"; fg_light = "#fab387"; } + { name = "ex"; text = ""; fg_dark = "#7f849c"; fg_light = "#7f849c"; } + { name = "cpp"; text = ""; fg_dark = "#74c7ec"; fg_light = "#74c7ec"; } + { name = "qss"; text = ""; fg_dark = "#a6e3a1"; fg_light = "#a6e3a1"; } + { name = "app"; text = ""; fg_dark = "#45475a"; fg_light = "#45475a"; } + { name = "jxl"; text = ""; fg_dark = "#7f849c"; fg_light = "#7f849c"; } + { name = "qrc"; text = ""; fg_dark = "#a6e3a1"; fg_light = "#a6e3a1"; } + { name = "qml"; text = ""; fg_dark = "#a6e3a1"; fg_light = "#a6e3a1"; } + { name = "epp"; text = ""; fg_dark = "#fab387"; fg_light = "#fab387"; } + { name = "otf"; text = ""; fg_dark = "#f5e0dc"; fg_light = "#f5e0dc"; } + { name = "hh"; text = ""; fg_dark = "#7f849c"; fg_light = "#7f849c"; } + { name = "qm"; text = ""; fg_dark = "#74c7ec"; fg_light = "#74c7ec"; } + { name = "pro"; text = ""; fg_dark = "#f9e2af"; fg_light = "#f9e2af"; } + { name = "exe"; text = ""; fg_dark = "#45475a"; fg_light = "#45475a"; } + { name = "kdenlivetitle"; text = ""; fg_dark = "#89b4fa"; fg_light = "#89b4fa"; } + { name = "kdb"; text = ""; fg_dark = "#a6e3a1"; fg_light = "#a6e3a1"; } + { name = "mpp"; text = ""; fg_dark = "#74c7ec"; fg_light = "#74c7ec"; } + { name = "Dockerfile"; text = "󰡨"; fg_dark = "#89b4fa"; fg_light = "#89b4fa"; } + { name = "bqn"; text = "⎉"; fg_dark = "#6c7086"; fg_light = "#6c7086"; } + { name = "torrent"; text = ""; fg_dark = "#94e2d5"; fg_light = "#94e2d5"; } + { name = "m3u"; text = "󰲹"; fg_dark = "#f38ba8"; fg_light = "#f38ba8"; } + { name = "py"; text = ""; fg_dark = "#f9e2af"; fg_light = "#f9e2af"; } + { name = "pxd"; text = ""; fg_dark = "#89b4fa"; fg_light = "#89b4fa"; } + { name = "f3d"; text = "󰻫"; fg_dark = "#a6e3a1"; fg_light = "#a6e3a1"; } + { name = "out"; text = ""; fg_dark = "#45475a"; fg_light = "#45475a"; } + { name = "spec.jsx"; text = ""; fg_dark = "#74c7ec"; fg_light = "#74c7ec"; } + { name = "kicad_dru"; text = ""; fg_dark = "#f5e0dc"; fg_light = "#f5e0dc"; } + { name = "ps1"; text = "󰨊"; fg_dark = "#6c7086"; fg_light = "#6c7086"; } + { name = "ui"; text = ""; fg_dark = "#313244"; fg_light = "#313244"; } + { name = "styl"; text = ""; fg_dark = "#a6e3a1"; fg_light = "#a6e3a1"; } + { name = "f#"; text = ""; fg_dark = "#74c7ec"; fg_light = "#74c7ec"; } + { name = "png"; text = ""; fg_dark = "#7f849c"; fg_light = "#7f849c"; } + { name = "ply"; text = "󰆧"; fg_dark = "#7f849c"; fg_light = "#7f849c"; } + { name = "php"; text = ""; fg_dark = "#7f849c"; fg_light = "#7f849c"; } + { name = "eex"; text = ""; fg_dark = "#7f849c"; fg_light = "#7f849c"; } + { name = "tbc"; text = "󰛓"; fg_dark = "#585b70"; fg_light = "#585b70"; } + { name = "part"; text = ""; fg_dark = "#94e2d5"; fg_light = "#94e2d5"; } + { name = "pub"; text = "󰷖"; fg_dark = "#f9e2af"; fg_light = "#f9e2af"; } + { name = "ipynb"; text = ""; fg_dark = "#74c7ec"; fg_light = "#74c7ec"; } + { name = "opus"; text = ""; fg_dark = "#6c7086"; fg_light = "#6c7086"; } + { name = "git"; text = ""; fg_dark = "#fab387"; fg_light = "#fab387"; } + { name = "bmp"; text = ""; fg_dark = "#7f849c"; fg_light = "#7f849c"; } + { name = "blade.php"; text = ""; fg_dark = "#f38ba8"; fg_light = "#f38ba8"; } + { name = "nim"; text = ""; fg_dark = "#f9e2af"; fg_light = "#f9e2af"; } + { name = "xpi"; text = ""; fg_dark = "#fab387"; fg_light = "#fab387"; } + { name = "mustache"; text = ""; fg_dark = "#fab387"; fg_light = "#fab387"; } + { name = "tscn"; text = ""; fg_dark = "#7f849c"; fg_light = "#7f849c"; } + { name = "scad"; text = ""; fg_dark = "#f9e2af"; fg_light = "#f9e2af"; } + { name = "ai"; text = ""; fg_dark = "#f9e2af"; fg_light = "#f9e2af"; } + { name = "hex"; text = ""; fg_dark = "#6c7086"; fg_light = "#6c7086"; } + { name = "hpp"; text = ""; fg_dark = "#7f849c"; fg_light = "#7f849c"; } + { name = "xul"; text = ""; fg_dark = "#fab387"; fg_light = "#fab387"; } + { name = "mobi"; text = ""; fg_dark = "#fab387"; fg_light = "#fab387"; } + { name = "fcstd1"; text = ""; fg_dark = "#f38ba8"; fg_light = "#f38ba8"; } + { name = "ical"; text = ""; fg_dark = "#313244"; fg_light = "#313244"; } + { name = "icalendar"; text = ""; fg_dark = "#313244"; fg_light = "#313244"; } + { name = "bicep"; text = ""; fg_dark = "#74c7ec"; fg_light = "#74c7ec"; } + { name = "mm"; text = ""; fg_dark = "#74c7ec"; fg_light = "#74c7ec"; } + { name = "mkv"; text = ""; fg_dark = "#fab387"; fg_light = "#fab387"; } + { name = "graphql"; text = ""; fg_dark = "#f38ba8"; fg_light = "#f38ba8"; } + { name = "mjs"; text = ""; fg_dark = "#f9e2af"; fg_light = "#f9e2af"; } + { name = "mint"; text = "󰌪"; fg_dark = "#a6e3a1"; fg_light = "#a6e3a1"; } + { name = "m4v"; text = ""; fg_dark = "#fab387"; fg_light = "#fab387"; } + { name = "m4a"; text = ""; fg_dark = "#74c7ec"; fg_light = "#74c7ec"; } + { name = "tf"; text = ""; fg_dark = "#585b70"; fg_light = "#585b70"; } + { name = "gv"; text = "󱁉"; fg_dark = "#585b70"; fg_light = "#585b70"; } + { name = "lock"; text = ""; fg_dark = "#bac2de"; fg_light = "#bac2de"; } + { name = "krz"; text = ""; fg_dark = "#cba6f7"; fg_light = "#cba6f7"; } + { name = "kpp"; text = ""; fg_dark = "#cba6f7"; fg_light = "#cba6f7"; } + { name = "ko"; text = ""; fg_dark = "#f5e0dc"; fg_light = "#f5e0dc"; } + { name = "kicad_sym"; text = ""; fg_dark = "#f5e0dc"; fg_light = "#f5e0dc"; } + { name = "psm1"; text = "󰨊"; fg_dark = "#7f849c"; fg_light = "#7f849c"; } + { name = "pyx"; text = ""; fg_dark = "#89b4fa"; fg_light = "#89b4fa"; } + { name = "json5"; text = ""; fg_dark = "#f9e2af"; fg_light = "#f9e2af"; } + { name = "json"; text = ""; fg_dark = "#f9e2af"; fg_light = "#f9e2af"; } + { name = "bzl"; text = ""; fg_dark = "#a6e3a1"; fg_light = "#a6e3a1"; } + { name = "ifb"; text = ""; fg_dark = "#313244"; fg_light = "#313244"; } + { name = "image"; text = ""; fg_dark = "#f2cdcd"; fg_light = "#f2cdcd"; } + { name = "jpg"; text = ""; fg_dark = "#7f849c"; fg_light = "#7f849c"; } + { name = "jpeg"; text = ""; fg_dark = "#7f849c"; fg_light = "#7f849c"; } + { name = "java"; text = ""; fg_dark = "#f38ba8"; fg_light = "#f38ba8"; } + { name = "wv"; text = ""; fg_dark = "#74c7ec"; fg_light = "#74c7ec"; } + { name = "ini"; text = ""; fg_dark = "#7f849c"; fg_light = "#7f849c"; } + { name = "cast"; text = ""; fg_dark = "#fab387"; fg_light = "#fab387"; } + { name = "cp"; text = ""; fg_dark = "#74c7ec"; fg_light = "#74c7ec"; } + { name = "fctl"; text = ""; fg_dark = "#f38ba8"; fg_light = "#f38ba8"; } + { name = "ifc"; text = "󰻫"; fg_dark = "#a6e3a1"; fg_light = "#a6e3a1"; } + { name = "sldasm"; text = "󰻫"; fg_dark = "#a6e3a1"; fg_light = "#a6e3a1"; } + { name = "html"; text = ""; fg_dark = "#fab387"; fg_light = "#fab387"; } + { name = "typoscript"; text = ""; fg_dark = "#fab387"; fg_light = "#fab387"; } + { name = "🔥"; text = ""; fg_dark = "#fab387"; fg_light = "#fab387"; } + { name = "htm"; text = ""; fg_dark = "#fab387"; fg_light = "#fab387"; } + { name = "ste"; text = "󰻫"; fg_dark = "#a6e3a1"; fg_light = "#a6e3a1"; } + { name = "spec.js"; text = ""; fg_dark = "#f9e2af"; fg_light = "#f9e2af"; } + { name = "gresource"; text = ""; fg_dark = "#f5e0dc"; fg_light = "#f5e0dc"; } + { name = "ebook"; text = ""; fg_dark = "#fab387"; fg_light = "#fab387"; } + { name = "gradle"; text = ""; fg_dark = "#585b70"; fg_light = "#585b70"; } + { name = "gd"; text = ""; fg_dark = "#7f849c"; fg_light = "#7f849c"; } + { name = "fish"; text = ""; fg_dark = "#585b70"; fg_light = "#585b70"; } + { name = "igs"; text = "󰻫"; fg_dark = "#a6e3a1"; fg_light = "#a6e3a1"; } + { name = "fbx"; text = "󰆧"; fg_dark = "#7f849c"; fg_light = "#7f849c"; } + { name = "env"; text = ""; fg_dark = "#f9e2af"; fg_light = "#f9e2af"; } + { name = "srt"; text = "󰨖"; fg_dark = "#f9e2af"; fg_light = "#f9e2af"; } + { name = "dot"; text = "󱁉"; fg_dark = "#585b70"; fg_light = "#585b70"; } + { name = "doc"; text = "󰈬"; fg_dark = "#585b70"; fg_light = "#585b70"; } + { name = "d.ts"; text = ""; fg_dark = "#fab387"; fg_light = "#fab387"; } + { name = "applescript"; text = ""; fg_dark = "#7f849c"; fg_light = "#7f849c"; } + { name = "cxx"; text = ""; fg_dark = "#74c7ec"; fg_light = "#74c7ec"; } + { name = "img"; text = ""; fg_dark = "#f2cdcd"; fg_light = "#f2cdcd"; } + { name = "cljs"; text = ""; fg_dark = "#74c7ec"; fg_light = "#74c7ec"; } + { name = "cobol"; text = "⚙"; fg_dark = "#585b70"; fg_light = "#585b70"; } + { name = "cob"; text = "⚙"; fg_dark = "#585b70"; fg_light = "#585b70"; } + { name = "cmake"; text = ""; fg_dark = "#7f849c"; fg_light = "#7f849c"; } + { name = "webp"; text = ""; fg_dark = "#7f849c"; fg_light = "#7f849c"; } + ]; + }; + }; + }; +} diff --git a/glasshouse-laptop/home/zshell.nix b/glasshouse-laptop/home/zshell.nix new file mode 100644 index 0000000..ddc91d8 --- /dev/null +++ b/glasshouse-laptop/home/zshell.nix @@ -0,0 +1,127 @@ +{ ... }: + +{ + programs.zoxide = { + enable = true; + enableZshIntegration = true; + }; + programs.zsh = { + enable = true; + + sessionVariables = { + SOUNDS_ENABLED = "1"; + EDITOR = "/nixbin/nvim"; + SUDO_EDITOR = "/nixbin/nvim"; + VISUAL = "/nixbin/nvim"; + LANG = "en_US.UTF-8"; + BROWSER = "/nixbin/firefox"; + NVIM = "~/dots/nixvim/config/"; + HYPRCONF = "~/dots/hyprland/"; + SYSCONF = "~/sysflakes/glasshouse-desktop/sys"; + }; + + oh-my-zsh = { + enable = true; + plugins = [ "git" "fzf" ]; + }; + + enableCompletion = true; + history = { + path = "$HOME/.zsh_history"; + save = 10000; + size = 10000; + share = true; + }; + + autosuggestion = { + enable = true; + highlight = "fg=#4C566A,underline"; + }; + + shellAliases = { + grep = "grep --color=auto"; + mv = "mv -v"; + cp = "cp -vr"; + gt = "gtrash"; + gtp = "gtrash put"; + grub-update = "sudo grub-mkconfig -o /boot/grub/grub.cfg"; + sr = "source ~/.zshrc"; + ".." = "cd .."; + rm = "echo 'use \"gtp\" instead'"; + psg = "ps aux | grep -v grep | grep -i -e VSZ -e" ; + mkdir = "mkdir -p"; + pk = "pkill -9 -f"; + zrc = "nvim $HOME/dots/zshell.nix"; + svcu = "systemctl --user"; + svc = "sudo systemctl"; + hyprconf = "nvim $HOME/dots/hyprland/config.nix"; + nixconf = "nvim $HOME/sysflakes/glasshouse-desktop/sys"; + hmconf = "nvim $HOME/sysflakes/glasshouse-desktop/home"; + viflake = "nvim flake.nix"; + nvimcfg = "nvim $HOME/dots/nixvim/config"; + }; + initExtra = '' + + unalias ls + ls() { + eza -1 --group-directories-first --icons "$@" + scheck && runbg aplay ~/media/sound/sys/ls.wav + } + + cd() { + export SOUNDS_ENABLED=0 + eza -1 --group-directories-first --icons "$@" + builtin cd "$@" || exit + export SOUNDS_ENABLED=1 + scheck && (aplay ~/media/sound/sys/cd.wav > /dev/null 2>&1 &) + } + if [ ! -e $HOME/.zsh_history ]; then + touch $HOME/.zsh_history + chmod 600 $HOME/.zsh_history + fi + setopt APPEND_HISTORY # Append history to the history file (don't overwrite) + setopt INC_APPEND_HISTORY # Append to the history file incrementally + setopt SHARE_HISTORY # Share history between all zsh sessions + + sessionVariables = { + setopt CORRECT + setopt NO_NOMATCH + setopt LIST_PACKED + setopt ALWAYS_TO_END + setopt GLOB_COMPLETE + setopt COMPLETE_ALIASES + setopt COMPLETE_IN_WORD + setopt AUTO_CD + setopt AUTO_CONTINUE + setopt LONG_LIST_JOBS + setopt HIST_VERIFY + setopt SHARE_HISTORY + setopt HIST_IGNORE_SPACE + setopt HIST_SAVE_NO_DUPS + setopt HIST_IGNORE_ALL_DUPS + setopt EXTENDED_GLOB + setopt TRANSIENT_RPROMPT + setopt INTERACTIVE_COMMENTS + + autoload -U compinit # completion + autoload -U terminfo # terminfo keys + zmodload -i zsh/complist # menu completion + autoload -U promptinit # prompt + + autoload -U up-line-or-beginning-search; zle -N up-line-or-beginning-search + autoload -U down-line-or-beginning-search; zle -N down-line-or-beginning-search + + bindkey -v + type starship_zle-keymap-select >/dev/null || \ + { + eval "$(starship init zsh)" + } + unalias ls + clear + splash + scheck && runbg aplay ~/media/sound/sys/sh-source.wav + ''; + }; + +} + diff --git a/glasshouse-laptop/sys/bootloader.nix b/glasshouse-laptop/sys/bootloader.nix new file mode 100644 index 0000000..6b8160d --- /dev/null +++ b/glasshouse-laptop/sys/bootloader.nix @@ -0,0 +1,10 @@ +{ pkgs, ... }: + +{ + boot = { + loader.systemd-boot.enable = true; + loader.efi.canTouchEfiVariables = true; + loader.systemd-boot.configurationLimit = 10; + kernelPackages = pkgs.linuxPackages_latest; + }; +} diff --git a/glasshouse-laptop/sys/default.nix b/glasshouse-laptop/sys/default.nix new file mode 100644 index 0000000..03d565d --- /dev/null +++ b/glasshouse-laptop/sys/default.nix @@ -0,0 +1,69 @@ +{ inputs, pkgs, config, self, username, ... }: + +{ + imports = + [ (import ./bootloader.nix) ] + ++ [ (import ./fonts.nix) ] + ++ [ (import ./hardware.nix) ] + ++ [ (import ./network.nix) ] + ++ [ (import ./packages.nix) ] + ++ [ (import ./programs.nix) ] + ++ [ (import ./services.nix) ] + ++ [ (import ./system.nix) ] + ++ [ (import ./users.nix) ]; + + environment.systemPackages = with pkgs; [ + acpi + brightnessctl + cpupower-gui + powertop + ]; + + services = { + power-profiles-daemon.enable = true; + + upower = { + enable = true; + percentageLow = 20; + percentageCritical = 5; + percentageAction = 3; + criticalPowerAction = "PowerOff"; + }; + + tlp.settings = { + CPU_ENERGY_PERF_POLICY_ON_AC = "power"; + CPU_ENERGY_PERF_POLICY_ON_BAT = "power"; + + CPU_BOOST_ON_AC = 1; + CPU_BOOST_ON_BAT = 1; + + CPU_HWP_DYN_BOOST_ON_AC = 1; + CPU_HWP_DYN_BOOST_ON_BAT = 1; + + PLATFORM_PROFILE_ON_AC = "performance"; + PLATFORM_PROFILE_ON_BAT = "performance"; + + INTEL_GPU_MIN_FREQ_ON_AC=500; + INTEL_GPU_MIN_FREQ_ON_BAT=500; +# INTEL_GPU_MAX_FREQ_ON_AC=0; +# INTEL_GPU_MAX_FREQ_ON_BAT=0; +# INTEL_GPU_BOOST_FREQ_ON_AC=0; +# INTEL_GPU_BOOST_FREQ_ON_BAT=0; + + PCIE_ASPM_ON_AC = "default"; + PCIE_ASPM_ON_BAT = "powersupersave"; + }; + }; + + powerManagement.cpuFreqGovernor = "performance"; + + boot = { + kernelModules = ["acpi_call"]; + extraModulePackages = with config.boot.kernelPackages; + [ + acpi_call + cpupower + ] + ++ [pkgs.cpupower-gui]; + }; +} diff --git a/glasshouse-laptop/sys/fonts.nix b/glasshouse-laptop/sys/fonts.nix new file mode 100644 index 0000000..78f76a8 --- /dev/null +++ b/glasshouse-laptop/sys/fonts.nix @@ -0,0 +1,9 @@ +{ pkgs, ... }: + +{ + fonts.packages = with pkgs; [ + times-newer-roman + nerdfonts + jetbrains-mono + ]; +} diff --git a/glasshouse-laptop/sys/hardware.nix b/glasshouse-laptop/sys/hardware.nix new file mode 100644 index 0000000..1335aa0 --- /dev/null +++ b/glasshouse-laptop/sys/hardware.nix @@ -0,0 +1,55 @@ +# Do not modify this file! It was generated by ‘nixos-generate-config’ +# and may be overwritten by future invocations. Please make changes +# to /etc/nixos/configuration.nix instead. +{ config, lib, modulesPath, username, ... }: + +{ + imports = [ (modulesPath + "/installer/scan/not-detected.nix") ]; + + boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "ahci" "usbhid" "usb_storage" "uas" "sd_mod" ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ "kvm-amd" ]; + boot.extraModulePackages = [ ]; + + fileSystems."/" = + { device = "/dev/disk/by-uuid/a687e4e2-8665-43f1-9d62-3e3f21423579"; + fsType = "ext4"; + }; + + fileSystems."/boot" = + { device = "/dev/disk/by-uuid/6EAD-2C48"; + fsType = "vfat"; + options = [ "fmask=0022" "dmask=0022" ]; + }; + + fileSystems."/home" = + { device = "/dev/nvme0n1p5"; + fsType = "ext4"; + }; + + fileSystems."/home/${username}/steamlib" = + { device = "/dev/nvme0n1p1"; + fsType = "ext4"; + }; + + swapDevices = [ ]; + +# Enables DHCP on each ethernet and wireless interface. In case of scripted networking +# (the default) this is the recommended approach. When using systemd-networkd it's +# still possible to use this option, but it's recommended to use it in conjunction +# with explicit per-interface declarations with `networking.interfaces..useDHCP`. + networking.useDHCP = lib.mkDefault true; +# networking.interfaces.enp14s0.useDHCP = lib.mkDefault true; +# networking.interfaces.wlp15s0.useDHCP = lib.mkDefault true; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + hardware = { + cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; + keyboard.uhk.enable = true; + amdgpu.amdvlk.enable = true; + bluetooth = { + enable = true; + powerOnBoot = true; + }; + }; +} diff --git a/glasshouse-laptop/sys/network.nix b/glasshouse-laptop/sys/network.nix new file mode 100644 index 0000000..8516fa9 --- /dev/null +++ b/glasshouse-laptop/sys/network.nix @@ -0,0 +1,15 @@ +{ pkgs, ... }: + +{ + networking = { + networkmanager.enable = true; + hostName = "glasshaus"; + hosts = { + "192.168.1.163" = [ "glasshaus.info" ]; + }; + firewall = { + enable = true; + allowedTCPPorts = [ 30000 ]; + }; + }; +} diff --git a/glasshouse-laptop/sys/packages.nix b/glasshouse-laptop/sys/packages.nix new file mode 100644 index 0000000..aecbf92 --- /dev/null +++ b/glasshouse-laptop/sys/packages.nix @@ -0,0 +1,72 @@ +{ pkgs, inputs, ... }: + +{ + environment.systemPackages = with pkgs; [ + alsa-lib + alsa-utils + bc + cava + clang + clang-tools + cmake + fail2ban + feh + ffmpeg-full + fuse + fzf + git + gnumake + gst_all_1.gstreamer + htop + hyprland + hyprland-workspaces + hyprpaper + hyprpicker + imagemagick + inetutils + kitty + libclang + libcxx + lolcat + lsof + lua-language-server + luarocks + mesa + mpd + mullvad + neofetch + nix-index + nix-prefetch-scripts + nixos-option + nix-search-cli + openssl + p7zip + jq + pamixer + parted + pass + pavucontrol + pkg-config + playerctl + protonmail-bridge + protontricks + pyright + quintom-cursor-theme + socat + sox + stress + tor + tree + unrar + unzip + usbutils + vim + vscode-langservers-extracted + vulkan-loader + wget + wine + wl-clipboard + xpad + libnotify + ]; +} diff --git a/glasshouse-laptop/sys/programs.nix b/glasshouse-laptop/sys/programs.nix new file mode 100644 index 0000000..fe62d65 --- /dev/null +++ b/glasshouse-laptop/sys/programs.nix @@ -0,0 +1,20 @@ +{ pkgs, ... }: + +{ + programs = { + steam.enable = true; + hyprland.enable = true; + zsh.enable = true; + nix-ld = { + enable = true; + libraries = with pkgs; [ + stdenv.cc.cc + ffmpeg-full + ]; + }; + gnupg.agent = { + enable = true; + enableSSHSupport = true; + }; + }; +} diff --git a/glasshouse-laptop/sys/services.nix b/glasshouse-laptop/sys/services.nix new file mode 100644 index 0000000..d1da4a2 --- /dev/null +++ b/glasshouse-laptop/sys/services.nix @@ -0,0 +1,18 @@ +{ pkgs, ...}: + +{ + services = { + pipewire = { + enable = true; + pulse.enable = true; + wireplumber.enable = true; + alsa.enable = true; + alsa.support32Bit = true; + }; + udev.enable = true; + dbus.enable = true; + mullvad-vpn.enable = true; + blueman.enable = true; + openssh.enable = true; + }; +} diff --git a/glasshouse-laptop/sys/system.nix b/glasshouse-laptop/sys/system.nix new file mode 100644 index 0000000..ea40b4f --- /dev/null +++ b/glasshouse-laptop/sys/system.nix @@ -0,0 +1,34 @@ + +{ pkgs, ... }: + +{ + system.stateVersion = "24.05"; + nixpkgs.config.allowUnfree = true; + nix = { + settings = { + auto-optimise-store = true; + experimental-features = [ "nix-command" "flakes" ]; + substituters = [ "https://nix-gaming.cachix.org" ]; + }; + gc = { + automatic = true; + dates = "weekly"; + options = "--delete-older-than 7d"; + }; + }; + + environment = { + variables = { + XCURSOR_SIZE = "24"; + PATH = "${pkgs.clang-tools}/bin:$PATH"; + }; + shells = with pkgs; [ + zsh + bash + ]; + }; + + time.timeZone = "America/New_York"; + i18n.defaultLocale = "en_US.UTF-8"; +} + diff --git a/glasshouse-laptop/sys/users.nix b/glasshouse-laptop/sys/users.nix new file mode 100644 index 0000000..60c27e1 --- /dev/null +++ b/glasshouse-laptop/sys/users.nix @@ -0,0 +1,34 @@ +{ config, inputs, pkgs, username, ... }: + +{ + imports = [ inputs.home-manager.nixosModules.home-manager ]; + home-manager = { + useUserPackages = true; + useGlobalPkgs = true; + backupFileExtension = "backup"; + extraSpecialArgs = { inherit inputs username; }; + users.${username} = { + programs.home-manager.enable = true; + imports = [ ./../home ]; + home = { + username = "${username}"; + homeDirectory = "/home/${username}"; + stateVersion = "24.05"; + pointerCursor = { + name = "Quintom_Ink"; + size = 36; + package = pkgs.quintom-cursor-theme; + }; + }; + }; + }; + users.users.${username} = { + isNormalUser = true; + shell = pkgs.zsh; + extraGroups = [ "wheel" ]; + }; + security.sudo.extraConfig = '' + ${username} ALL=(ALL) NOPASSWD: /run/current-system/sw/bin/nixos-rebuild + ''; + nix.settings.allowed-users = [ "${username}" ]; +}